From 2d99874a00097d0fb7b60baa16ad2df8af6a5640 Mon Sep 17 00:00:00 2001 From: huangruiteng <14976749+huangruiteng@users.noreply.github.com> Date: Thu, 17 Sep 2026 15:40:33 +0800 Subject: [PATCH 1/9] fix(work-items): commit team assignments and recovery as one transaction Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com> --- loopx/chat_action_normalization.py | 4 +- loopx/chat_actions.py | 92 ++-- .../control_plane/coordination/todo_create.ts | 7 +- .../control_plane/effect_runtime_handlers.ts | 6 + .../governed_transition_proposal.py | 414 ++---------------- loopx/control_plane/work_items/team_plan.ts | 185 ++++++++ .../work_items/team_plan_adapter.py | 153 +++++++ .../work_items/team_plan_authority.ts | 61 +++ .../control_plane/test_team_plan_authority.py | 71 +++ tests/control_plane_ts/team_plan.test.ts | 118 +++++ tests/test_chat_team_plan_action.py | 124 +++--- tests/test_steward_team_plan_apply.py | 60 +-- 12 files changed, 733 insertions(+), 562 deletions(-) create mode 100644 loopx/control_plane/work_items/team_plan.ts create mode 100644 loopx/control_plane/work_items/team_plan_adapter.py create mode 100644 loopx/control_plane/work_items/team_plan_authority.ts create mode 100644 tests/control_plane/test_team_plan_authority.py create mode 100644 tests/control_plane_ts/team_plan.test.ts diff --git a/loopx/chat_action_normalization.py b/loopx/chat_action_normalization.py index 42c55ce8a..3ca0cbcd7 100644 --- a/loopx/chat_action_normalization.py +++ b/loopx/chat_action_normalization.py @@ -530,14 +530,14 @@ def _normalize( # and the host's shipped action kinds, and the apply re-validates the # same payload with the host's own facts before it creates anything, # so the stored parameters are never the thing that authorizes work. - validate_steward_team_plan_preview( + admitted = validate_steward_team_plan_preview( plan, registered_agent_ids=registered_agent_ids_for_goal(goal), supported_action_kinds=sorted(TODO_ACTION_KIND_ADVANCEMENT_VALUES), ) return { "goal_id": goal_id, - "plan": dict(plan), + "plan": admitted, "requested_by": _opaque( values.get("requested_by") or "owner", field="requested_by" ), diff --git a/loopx/chat_actions.py b/loopx/chat_actions.py index f128dda6f..5dafc16b6 100644 --- a/loopx/chat_actions.py +++ b/loopx/chat_actions.py @@ -293,9 +293,14 @@ def _team_plan_state_fingerprint( ).hexdigest() except OSError: state_digest = None + from .control_plane.coordination.local_authority import read_canonical_todos_if_promoted + from .control_plane.coordination.local_authority_shadow_adapter import effective_runtime_root + canonical = read_canonical_todos_if_promoted( + runtime_root=effective_runtime_root(self.registry_path, None), goal_id=goal_id) return _digest( { "registry": self._registry_fingerprint(), + "provider_revision": canonical.get("provider_revision") if canonical else None, "goal_id": goal_id, "active_state": state_digest, "intent_basis": steward_team_plan_intent_basis( @@ -1019,41 +1024,34 @@ def _apply_team_plan( ) -> dict[str, Any]: """Create each ready lane's first bounded Todo through the Todo owner.""" - from .control_plane.work_items.governed_transition_proposal import ( - GovernedTransitionSettlementPhase, - settle_governed_transition_proposals, - ) + from .control_plane.work_items.team_plan_adapter import apply_team_plan goal_id = str(parameters["goal_id"]) plan = parameters.get("plan") if not isinstance(plan, Mapping): raise ValueError("team plan proposal is malformed") - # The preview bound this Goal's registration facts, its active-state - # intent and the canonical basis its lanes would advance; re-read them - # here so a plan confirmed against one objective cannot become work - # under another, and so a registry change still asks for confirmation. - current_fingerprint = self._team_plan_state_fingerprint(goal_id, plan) - if current_fingerprint != proposal.get("expected_state_fingerprint"): - stale = self.store.apply( - proposal_id, - current_state_fingerprint=current_fingerprint, - receipt={}, + expected = str(proposal.get("expected_state_fingerprint") or "") + try: + settlement = apply_team_plan( + registry_path=self.registry_path, goal_id=goal_id, + agent_id=None, proposal={**dict(plan), "proposal_id": proposal_id}, + expected_state_fingerprint=expected, + read_fingerprint=lambda: self._team_plan_state_fingerprint(goal_id, plan), ) - return {"proposal": stale, "turn": None} - # The governed transition owner re-validates the plan with the host's own - # facts and owns the settlement phase, so this action never becomes a - # second writer of lanes. - settlements = settle_governed_transition_proposals( - registry_path=self.registry_path, - goal_id=goal_id, - agent_id=str(parameters.get("requested_by") or "owner"), - effect_id=proposal_id, - proposals=[{**dict(plan), "proposal_id": proposal_id}], - existing_receipts=[], - checkpoint=lambda _receipts: None, - phase=GovernedTransitionSettlementPhase.PRE_SETTLEMENT, - ) - settlement = settlements[0] + except (OSError, ValueError, RuntimeError) as error: + error_code = getattr(error, "diagnostic_code", None) or getattr(error, "code", None) + observed = getattr(error, "current_fingerprint", None) + if error_code == "team_plan_preview_stale" and observed and observed != expected: + stale = self.store.apply(proposal_id, + current_state_fingerprint=observed, receipt={}) + return {"proposal": stale, "turn": None} + return {"proposal": self.store.mark_failed(proposal_id, + error_code=("team_plan_projection_pending" if error_code == "team_plan_projection_pending" else "team_plan_commit_failed"), + message=("Tasks committed; display readback is pending. Retry this same plan to recover the result." + if error_code == "team_plan_projection_pending" else + "The batch could not be confirmed. Retry this same plan to recover its commit result.")), + "turn": None} + current_fingerprint = expected lane_todo_ids = [str(item) for item in (settlement.get("lane_todo_ids") or [])] intent_basis = str(settlement.get("intent_basis") or "") gap_count = int(settlement.get("gap_count") or 0) @@ -1080,39 +1078,10 @@ def _apply_team_plan( # from "the action was not a creation": a plan that created lanes beside # a gap is a partial application, and reporting it as a full success # told the owner the commitment was kept when part of it was not. - lane_failure = settlement.get("lane_failure") - if lane_failure: - # A lane failed after earlier lanes were written. The plan did not - # apply, so it is not reported as applied; the identities that do - # exist are recorded with the failure so the retry reconciles - # against them instead of creating a second copy of the same lane. - return { - "proposal": self.store.mark_failed( - proposal_id, - error_code="team_plan_lane_write_failed", - message=( - f"lane {lane_failure['lane_id']} could not be created; " - f"{len(lane_todo_ids)} lane Todo(s) from this plan already exist" - ), - details={ - "goal_id": goal_id, - "lane_todo_ids": lane_todo_ids, - "lane_settlements": [ - dict(item) - for item in (settlement.get("lane_settlements") or []) - ], - "failed_lane_id": str(lane_failure["lane_id"]), - "failed_lane_reason_code": str( - lane_failure["reason_code"] - ), - }, - ), - "turn": None, - } - if str(settlement.get("action") or "") == "reused": - outcome = "team_plan_lanes_already_present" - elif gap_count: + if gap_count: outcome = "team_plan_partially_applied" + elif str(settlement.get("action") or "") == "reused": + outcome = "team_plan_commit_recovered" else: outcome = "team_plan_applied" receipt = { @@ -1139,6 +1108,7 @@ def _apply_team_plan( receipt["lanes"] = [dict(item) for item in lane_settlements] if gap_count: receipt["gap_count"] = gap_count + receipt["gap_lanes"] = settlement.get("gap_lanes", []) if intent_basis: # The canonical revision these lanes were created against, so the # owner's readback can name what the work advances. diff --git a/loopx/control_plane/coordination/todo_create.ts b/loopx/control_plane/coordination/todo_create.ts index 2663bfe8c..1c41444d7 100644 --- a/loopx/control_plane/coordination/todo_create.ts +++ b/loopx/control_plane/coordination/todo_create.ts @@ -146,12 +146,13 @@ export function planCoordinationTodoCreate( rawInput: CoordinationTodoCreateInput, todos: ReadonlyMap, readModelSchema: unknown, + identity: "role_text" | "operation_lane" = "role_text", ): CoordinationTodoCreateResult { const input = normalizeCreateInput(rawInput); - const duplicate = [...todos.values()].find((todo) => + const duplicate = identity === "role_text" ? [...todos.values()].find((todo) => todo.role === input.todo.role && todo.archive_state === "active" && - todo.status !== "done" && todo.status !== "deferred" && todo.text === input.todo.text); - if (duplicate !== undefined) return semanticDuplicateResult(input.todo, duplicate, null, null); + todo.status !== "done" && todo.status !== "deferred" && todo.text === input.todo.text) : undefined; + if (identity === "role_text" && duplicate !== undefined) return semanticDuplicateResult(input.todo, duplicate, null, null); if (todos.has(String(input.todo.todo_id))) { return failure("todo_already_exists", "Todo id already exists in canonical authority", {todo_id: input.todo.todo_id}); } diff --git a/loopx/control_plane/effect_runtime_handlers.ts b/loopx/control_plane/effect_runtime_handlers.ts index e926acbc4..bf94e3139 100644 --- a/loopx/control_plane/effect_runtime_handlers.ts +++ b/loopx/control_plane/effect_runtime_handlers.ts @@ -1,3 +1,5 @@ +import {previewTeamPlan, planTeamTransaction, teamTransactionIdentity} from "./work_items/team_plan.ts"; +import {commitLocalTeamPlan} from "./work_items/team_plan_authority.ts"; import {planHandoffMode} from "./coordination/handoff_mode_policy.ts"; import {setLocalHandoffMode} from "./coordination/handoff_mode_runtime.ts"; import {projectOwnershipObservation} from "./coordination/ownership_observation.ts"; @@ -494,6 +496,10 @@ export function createEffectRuntimeHandlers( ["coordination.local_authority.todo_continuation", continueLocalTodo], ["coordination.local_authority.todo_claim", claimLocalCoordinationTodo], ["coordination.local_authority.todo_create", createLocalCoordinationTodo], + ["work_items.team_plan.preview", previewTeamPlan], + ["work_items.team_plan.plan", planTeamTransaction], + ["work_items.team_plan.identity", value => teamTransactionIdentity(requiredObject(value, "team plan request"))], + ["work_items.team_plan.commit", commitLocalTeamPlan], ["coordination.local_authority.todo_update", updateLocalCoordinationTodo], ["coordination.local_authority.monitor_poll", pollLocalCoordinationMonitor], ["coordination.handoff_mode.plan", planHandoffMode], diff --git a/loopx/control_plane/work_items/governed_transition_proposal.py b/loopx/control_plane/work_items/governed_transition_proposal.py index d7c026f08..a790f6b9e 100644 --- a/loopx/control_plane/work_items/governed_transition_proposal.py +++ b/loopx/control_plane/work_items/governed_transition_proposal.py @@ -21,7 +21,6 @@ from ..todos.contract import ( TODO_STATUS_DONE, TODO_STATUS_OPEN, - TODO_TASK_CLASS_ADVANCEMENT, TODO_TASK_CLASS_MONITOR, normalize_todo_capability_binding_ref, ) @@ -53,6 +52,7 @@ "lane_settlements", "gap_count", "lane_failure", + "gap_lanes", } _LANE_TODO_ID_LIMIT = 8 _LANE_TODO_ID = re.compile(r"^todo_[A-Za-z0-9]{1,40}$") @@ -192,6 +192,19 @@ def validate_governed_transition_receipts( or not 1 <= gap_count <= STEWARD_TEAM_PLAN_LANE_LIMIT ): raise ValueError("governed transition proposal receipt gap_count is invalid") + gap_lanes = receipt.get("gap_lanes") + if gap_lanes is not None: + if not isinstance(gap_lanes, list) or len(gap_lanes) != gap_count: + raise ValueError("governed transition gap_lanes count is invalid") + seen_gaps: set[str] = set() + for gap in gap_lanes: + if (not isinstance(gap, dict) + or set(gap) != {"lane_id", "agent_id", "reason_code"} + or not all(isinstance(value, str) and value for value in gap.values()) + or gap["lane_id"] in seen_gaps + or gap["reason_code"] not in STEWARD_TEAM_PLAN_GAP_REASONS + STEWARD_TEAM_PLAN_HOST_GAP_REASONS): + raise ValueError("governed transition gap_lanes is invalid") + seen_gaps.add(gap["lane_id"]) lane_failure = receipt.get("lane_failure") if lane_failure is not None: failure = _mapping(lane_failure, "governed transition lane failure") @@ -423,150 +436,18 @@ def steward_team_plan_intent_basis( ) -def _lane_todo_text(text: str, priority: str) -> str: - """Give a lane's first Todo the priority the owner confirmed. - - LoopX expresses a Todo's priority through the label the canonical Todo - readers parse, so a confirmed lane carries it in its own text rather than in - a second field no reader owns. A lane whose text already declares a - priority keeps it: the plan the owner reviewed wins, and re-reading a - preview cannot stack two labels on one row. - """ - - from ..todos.text import normalize_new_todo, todo_priority_prefix - - normalized = normalize_new_todo(text) - if todo_priority_prefix(normalized): - return normalized - return f"[{priority}] {normalized}" - - def _apply_team_plan( - *, - registry_path: Path, - goal_id: str, - agent_id: str, + *, registry_path: Path, goal_id: str, agent_id: str, proposal: Mapping[str, Any], ) -> dict[str, Any]: - """Create the confirmed lanes' first bounded Todos through the Todo owner. - - The plan is re-validated here against this Goal's registered Agents and the - shipped advancement action kinds, so a proposal cannot become work by - bypassing admission. Only lanes the preview already marked ready are - materialized; a lane the preview reported as a gap stays a gap and creates - nothing, and the canonical Todo owner decides whether a row is added or - reused, which makes a replayed settlement idempotent. - """ - - from ...agent_registry import registered_agent_ids_for_goal - from ...history import load_registry - from ...registry import registry_goals - from ..todos.contract import TODO_ACTION_KIND_ADVANCEMENT_VALUES - - # The plan names the Goal it staffs, and it may not be retargeted by the - # settlement it arrives in: admitting a plan against one Goal's agents and - # then creating its lanes under another would be a silent widening. - if str(proposal.get("goal_id") or "") != goal_id: - raise ValueError( - "steward team plan proposal names a different Goal than its settlement" - ) - registry = load_registry(registry_path) - goal = next( - ( - item - for item in registry_goals(registry) - if str(item.get("id") or "") == goal_id - ), - None, - ) - if goal is None: - raise ValueError("steward team plan proposal names an unknown Goal") - preview = validate_steward_team_plan_preview( - proposal, - registered_agent_ids=registered_agent_ids_for_goal(goal), - supported_action_kinds=sorted(TODO_ACTION_KIND_ADVANCEMENT_VALUES), - ) - # Traceability is read before the edit: the receipt names the canonical - # basis this work-graph edit was applied against, so the lanes could not - # make the basis describe their own creation. A Goal whose basis cannot be - # read omits the field instead of inventing one. - intent_basis = _intent_basis_for(goal_id=goal_id, goal=goal, registry_path=registry_path, preview=preview) - created: list[str] = [] - reused: list[str] = [] - lane_settlements: list[dict[str, str]] = [] - lane_failure: dict[str, str] | None = None - for lane in preview["lanes"]: - if lane.get("staffing") != "ready": - continue - first_todo = lane["first_todo"] - priority = str(first_todo["priority"]) - try: - result = add_goal_todo( - registry_path=Path(registry_path).expanduser(), - goal_id=goal_id, - role="agent", - text=_lane_todo_text(str(first_todo["text"]), priority), - status=TODO_STATUS_OPEN, - task_class=TODO_TASK_CLASS_ADVANCEMENT, - action_kind=str(first_todo["action_kind"]), - claimed_by=str(lane["agent_id"]), - agent_id=str(lane["agent_id"]), - ) - except (OSError, ValueError, TypeError, KeyError, RuntimeError): - # Each lane is written by the canonical Todo owner under its own - # lock, so a multi-lane plan is a recoverable workflow rather than - # one atomic transaction: by the time a later lane fails, the - # earlier lanes are real work that must not be reported as a plan - # that applied, and must not be created twice by the retry. The - # failure is therefore returned with the identities that exist, and - # a plan that committed nothing at all is still an error. - if not lane_settlements: - raise - lane_failure = { - "lane_id": str(lane["lane_id"]), - "reason_code": "lane_write_failed", - } - break - todo_id = str(result["todo_id"]) - if result.get("added"): - created.append(todo_id) - else: - reused.append(todo_id) - # The acceptance a lane was confirmed to end on is retained beside the - # Todo identity it became, so the commitment survives the answer. - lane_settlements.append( - { - "lane_id": str(lane["lane_id"]), - "agent_id": str(lane["agent_id"]), - "priority": priority, - "disposition": "created" if result.get("added") else "reused", - "todo_id": todo_id, - "acceptance": str(lane["acceptance"]), - } - ) - # The receipt names every lane Todo this settlement ensured, whether the - # canonical owner added it or found it already present, so a replayed - # settlement still reports the same identities instead of an empty one. - lane_todo_ids = [*created, *reused] - return { - # A plan that staffed no lane is neither a creation nor a reuse, and - # saying "reused" for it is what let an empty confirmation read as - # success. The three outcomes stay distinct. - "action": ( - "partially_created" - if lane_failure - else "created" if created else ("reused" if reused else "unstaffed") - ), - "todo_id": lane_todo_ids[0] if lane_todo_ids else "", - "target_key": None, - "created_todo_ids": created, - "lane_todo_ids": lane_todo_ids, - "lane_settlements": lane_settlements, - "lane_failure": lane_failure, - "intent_basis": intent_basis, - "reused_lane_count": len(reused), - "gap_count": len(preview["gaps"]), - } + from .team_plan_adapter import apply_team_plan + from ..effect_runtime import EffectRuntimeRejected + + try: + return apply_team_plan(registry_path=registry_path, goal_id=goal_id, + agent_id=agent_id, proposal=proposal) + except EffectRuntimeRejected as error: + raise ValueError(str(error)) from None def _complete_monitor( @@ -706,6 +587,8 @@ def settle_governed_transition_proposals( # partial application, and the reader has to be able to tell # without re-deriving the plan. receipt["gap_count"] = int(gap_count) + if result.get("gap_lanes"): + receipt["gap_lanes"] = result["gap_lanes"] lane_failure = result.get("lane_failure") if lane_failure: # The lanes that exist are named beside the lane that could not be @@ -755,241 +638,20 @@ def _plan_text(value: object, label: str) -> str: return text -def _unstaffed_lane( - *, - lane_id: str, - agent_id: str, - acceptance: str, - reason_code: str, - first_todo: Mapping[str, Any] | None = None, - note: str | None = None, -) -> dict[str, Any]: - """One lane this host cannot staff, keeping the work it declined. - - A gap lane names the lane, the Agent it was asked to run on, the acceptance - signal it was meant to end on, and the typed reason it is not staffed. It - carries no ``first_todo``: the work it did not staff is evidence, not a lane - that exists, and it is kept either as the declined first Todo or as the note - the plan gave for the lane. One of the two is always present, so a reader can - always see why the lane is a gap instead of finding an unexplained one. - """ - - lane = { - "lane_id": lane_id, - "agent_id": agent_id, - "acceptance": acceptance, - "staffing": "gap", - "gap_reason_code": reason_code, - } - if first_todo is not None: - lane["declined_first_todo"] = dict(first_todo) - if note is not None: - lane["gap_note"] = note - return lane - - -def _declined_todo(value: object) -> dict[str, Any]: - """Read the work a gap lane kept, without judging whether it can run. - - The work a lane declined is evidence of what the owner asked for, so it is - bounded for public safety but not held to the staffability rules a lane that - will actually run must pass: the whole reason it is kept is that this host - could not staff it, and re-reading it must not turn an admitted gap back - into work. - """ - - declined = _mapping(value, "declined_first_todo") - priority = str(declined.get("priority") or "") - if priority not in STEWARD_TEAM_PLAN_PRIORITIES: - raise ValueError("declined_first_todo priority is invalid") - task_class = str(declined.get("task_class") or "") - if task_class != "advancement_task": - raise ValueError( - "a lane's declined first bounded Todo must be an advancement_task" - ) - return { - "text": _plan_text(declined.get("text"), "declined_first_todo text"), - "priority": priority, - "task_class": task_class, - "action_kind": _plan_text( - declined.get("action_kind"), "declined_first_todo action_kind" - ), - } - - def validate_steward_team_plan_preview( - payload: object, - *, - registered_agent_ids: Sequence[str], + payload: object, *, registered_agent_ids: Sequence[str], supported_action_kinds: Sequence[str], ) -> dict[str, Any]: - """Validate one steward team preview, and refuse to invent its staffing. - - Validation is the same contract at both ends: the Chat admission uses it to - decide whether a preview may be surfaced for confirmation, and the - ``PRE_SETTLEMENT`` apply of that kind calls it again with the host's own - facts before it creates anything, so a proposal cannot become work by - bypassing admission. A lane whose Agent this Goal does not register becomes - a typed gap that keeps the work it did *not* staff under - ``declined_first_todo``, so the owner sees what was asked for and what is - missing instead of a lane that was quietly filled in or dropped. - - The same holds for an action kind this host does not ship: it is a fact - about one lane's staffability, not a malformed plan, so that lane becomes a - typed gap and the plan is still admitted with its other lanes ready. Only a - payload the host cannot read at all -- a wrong schema, an unstaffable - plan-level field, or a lane that omits the Todo shape -- is refused whole. - """ + """Public-safety adapter; the typed work-items owner admits the preview.""" + from ..effect_runtime import EffectRuntimeRejected, effect_runtime_result - plan = _mapping(payload, "steward_team_plan_preview") - if plan.get("schema_version") != STEWARD_TEAM_PLAN_PREVIEW_SCHEMA_VERSION: - raise ValueError("steward team plan preview schema_version is invalid") - if plan.get("kind") != STEWARD_TEAM_PLAN_PREVIEW_KIND: - raise ValueError("steward team plan preview kind is invalid") - # The plan names the Goal it staffs. Without that, the admission that - # validates its lanes and the settlement that materializes them would each - # have to guess which Goal's agents the host should describe, and a plan - # could be admitted against one Goal's facts and applied under another's. - goal_id = _plan_text(plan.get("goal_id"), "goal_id") - if not _GOAL_ID.fullmatch(goal_id): - raise ValueError("steward team plan preview requires an exact Goal id") - registered = {str(value) for value in registered_agent_ids} - action_kinds = {str(value) for value in supported_action_kinds} - lanes_value = plan.get("lanes") - if not isinstance(lanes_value, Sequence) or isinstance(lanes_value, (str, bytes)): - raise ValueError("steward team plan preview requires a lane list") - if not 1 <= len(lanes_value) <= STEWARD_TEAM_PLAN_LANE_LIMIT: - raise ValueError( - f"steward team plan preview requires 1..{STEWARD_TEAM_PLAN_LANE_LIMIT} lanes" - ) - lanes: list[dict[str, Any]] = [] - gaps: list[dict[str, str]] = [] - seen_lanes: set[str] = set() - for raw_lane in lanes_value: - lane = _mapping(raw_lane, "steward_team_plan_lane") - lane_id = _plan_text(lane.get("lane_id"), "lane_id") - if lane_id in seen_lanes: - raise ValueError("steward team plan preview repeats a lane_id") - seen_lanes.add(lane_id) - agent_id = _plan_text(lane.get("agent_id"), "agent_id") - acceptance = _plan_text(lane.get("acceptance"), "lane acceptance") - declared_gap = lane.get("staffing_gap") - requested_todo = lane.get("first_todo") - if declared_gap is not None: - gap = _mapping(declared_gap, "staffing_gap") - reason_code = str(gap.get("reason_code") or "") - if reason_code not in STEWARD_TEAM_PLAN_GAP_REASONS: - raise ValueError("staffing_gap reason_code is invalid") - if requested_todo is not None: - raise ValueError("a lane that declares a gap may not declare work") - lanes.append( - _unstaffed_lane( - lane_id=lane_id, - agent_id=agent_id, - acceptance=acceptance, - reason_code=reason_code, - note=_plan_text(gap.get("note"), "staffing_gap note"), - ) - ) - gaps.append({"lane_id": lane_id, "reason_code": reason_code}) - continue - if requested_todo is None: - # A lane that arrives without work is a verdict somebody already - # made: this host's own, when an admitted preview is re-read by the - # apply, or the plan's, handled above. It is preserved rather than - # re-derived, so validation is idempotent and an apply cannot staff a - # lane the owner was shown as unstaffed. - reason_code = str(lane.get("gap_reason_code") or "") - if reason_code not in ( - STEWARD_TEAM_PLAN_GAP_REASONS + STEWARD_TEAM_PLAN_HOST_GAP_REASONS - ): - raise ValueError("lane gap_reason_code is invalid") - declined = lane.get("declined_first_todo") - note = lane.get("gap_note") - if declined is None and note is None: - raise ValueError("a lane without work must keep why it is a gap") - lanes.append( - _unstaffed_lane( - lane_id=lane_id, - agent_id=agent_id, - acceptance=acceptance, - reason_code=reason_code, - first_todo=( - _declined_todo(declined) if declined is not None else None - ), - note=( - _plan_text(note, "gap_note") if note is not None else None - ), - ) - ) - gaps.append({"lane_id": lane_id, "reason_code": reason_code}) - continue - first_todo = _mapping(requested_todo, "first_todo") - text = _plan_text(first_todo.get("text"), "first_todo text") - priority = str(first_todo.get("priority") or "") - if priority not in STEWARD_TEAM_PLAN_PRIORITIES: - raise ValueError("first_todo priority is invalid") - task_class = str(first_todo.get("task_class") or "") - if task_class != "advancement_task": - raise ValueError("a lane's first bounded Todo must be an advancement_task") - action_kind = str(first_todo.get("action_kind") or "") - normalized_todo = { - "text": text, - "priority": priority, - "task_class": task_class, - "action_kind": action_kind, - } - # Two different host facts make one lane unstaffable: this Goal does not - # register its Agent, or this host does not ship the action kind it asked - # for. Both are staffability facts about *one* lane, so both become the - # same typed gap and keep the declined work. Neither may refuse the plan: - # a plan whose first lane cannot be staffed is still the owner's request, - # and its staffable lanes are exactly what the owner asked to review. - # Before this, an unsupported kind raised, so Chat admission dropped the - # whole plan and the owner saw correct prose with nothing to confirm. - if agent_id not in registered: - lane_gap_reason = "agent_not_registered" - elif action_kind not in action_kinds: - lane_gap_reason = STEWARD_TEAM_PLAN_UNSUPPORTED_ACTION_KIND - else: - lane_gap_reason = "" - if lane_gap_reason: - lanes.append( - _unstaffed_lane( - lane_id=lane_id, - agent_id=agent_id, - acceptance=acceptance, - reason_code=lane_gap_reason, - first_todo=normalized_todo, - ) - ) - gaps.append({"lane_id": lane_id, "reason_code": lane_gap_reason}) - continue - lanes.append( - { - "lane_id": lane_id, - "agent_id": agent_id, - "acceptance": acceptance, - "staffing": "ready", - "first_todo": normalized_todo, - } - ) - envelope = _mapping(plan.get("quota_envelope"), "quota_envelope") - if not envelope: - raise ValueError("steward team plan preview requires a quota envelope") - validate_public_safe_value(envelope, path="quota_envelope") - preview = { - "schema_version": STEWARD_TEAM_PLAN_PREVIEW_SCHEMA_VERSION, - "kind": STEWARD_TEAM_PLAN_PREVIEW_KIND, - "goal_id": goal_id, - "objective": _plan_text(plan.get("objective"), "objective"), - "lanes": lanes, - "gaps": gaps, - "quota_envelope": dict(envelope), - "stop_condition": _plan_text(plan.get("stop_condition"), "stop_condition"), - # A preview is never an effect: the contract states it, so a reader does - # not have to know which materializers happen to be registered. - "applies": False, - } - validate_public_safe_value(preview, path="steward_team_plan_preview") - return preview + validate_public_safe_value(payload, path="steward_team_plan_preview") + try: + result = effect_runtime_result("work_items.team_plan.preview", { + "plan": payload, "registered_agents": list(registered_agent_ids), + "supported_action_kinds": list(supported_action_kinds), + }) + except EffectRuntimeRejected as error: + raise ValueError(str(error)) from None + validate_public_safe_value(result, path="steward_team_plan_preview") + return dict(result) diff --git a/loopx/control_plane/work_items/team_plan.ts b/loopx/control_plane/work_items/team_plan.ts new file mode 100644 index 000000000..8a37bc238 --- /dev/null +++ b/loopx/control_plane/work_items/team_plan.ts @@ -0,0 +1,185 @@ +/** Team-plan admission and assignment transaction. A committed assignment is + * neither receiver adoption nor a lease, quota grant, or execution receipt. */ +import {EffectRuntimeRequestError} from "../effect_runtime_errors.ts"; +import type {JsonObject} from "../effect_program.ts"; +import {requireJsonObject, requireStringArray} from "../runtime_decode.ts"; +import {canonicalAuthoritySha256, requireAuthorityStoreId} from "../coordination/authority_store_codec.ts"; +import {planCoordinationTodoCreate} from "../coordination/todo_create.ts"; +import {TODO_DOMAIN_ITEM_SCHEMA, TODO_DOMAIN_READ_RECORD_SCHEMA} from "../coordination/coordination_state_contract.ts"; + +export const TEAM_PLAN_SCHEMA = "steward_team_plan_preview_v0"; +export const TEAM_PLAN_KIND = "steward_team_plan_preview"; +export const TEAM_TRANSACTION_SCHEMA = "steward_team_plan_transaction_v0"; +const priorities = new Set(["P0", "P1", "P2", "P3"]); +const declaredGaps = new Set(["agent_not_registered", "capability_not_granted", "audience_not_authorized"]); +const hostGaps = new Set([...declaredGaps, "action_kind_not_supported"]); +function text(value: unknown, label: string): string { + if (typeof value !== "string" || !value.trim() || value.trim().length > 600) throw new EffectRuntimeRequestError(`${label} must be a non-empty string`); + return value.trim().replace(/\s+/gu, " "); +} +function todo(value: unknown): JsonObject { + const item = requireJsonObject(value, "first_todo"); + if (!priorities.has(String(item.priority))) throw new EffectRuntimeRequestError("first_todo priority is invalid"); + if (item.task_class !== "advancement_task") throw new EffectRuntimeRequestError("a lane's first bounded Todo must be an advancement_task"); + return {text: text(item.text, "first_todo text"), priority: item.priority, + task_class: item.task_class, action_kind: text(item.action_kind, "first_todo action_kind")}; +} + +export function previewTeamPlan(value: unknown): JsonObject { + const request = requireJsonObject(value, "team plan preview request"); + const plan = requireJsonObject(request.plan, "team plan"); + const registered = new Set(requireStringArray(request.registered_agents, "registered_agents")); + const actions = new Set(requireStringArray(request.supported_action_kinds, "supported_action_kinds")); + if (plan.schema_version !== TEAM_PLAN_SCHEMA) throw new EffectRuntimeRequestError("steward team plan preview schema_version is invalid"); + if (plan.kind !== TEAM_PLAN_KIND) throw new EffectRuntimeRequestError("steward team plan preview kind is invalid"); + const goal = text(plan.goal_id, "goal_id"); + if (!/^[A-Za-z0-9][A-Za-z0-9_.-]{0,159}$/u.test(goal)) throw new EffectRuntimeRequestError("steward team plan preview requires an exact Goal id"); + if (!Array.isArray(plan.lanes) || plan.lanes.length < 1 || plan.lanes.length > 8) throw new EffectRuntimeRequestError("steward team plan preview requires 1..8 lanes"); + const seen = new Set(); + const gaps: JsonObject[] = []; + const lanes = plan.lanes.map(raw => { + const lane = requireJsonObject(raw, "lane"); + const id = text(lane.lane_id, "lane_id"); + if (seen.has(id)) throw new EffectRuntimeRequestError("steward team plan preview repeats a lane_id"); + seen.add(id); + const agent = text(lane.agent_id, "agent_id"); + const base = {lane_id: id, agent_id: agent, acceptance: text(lane.acceptance, "lane acceptance")}; + let reason: string | null = null; + let declined: JsonObject | null = null; + let note: string | null = null; + if (lane.staffing_gap != null) { + const gap = requireJsonObject(lane.staffing_gap, "staffing_gap"); + reason = String(gap.reason_code); + if (!declaredGaps.has(reason)) throw new EffectRuntimeRequestError("staffing_gap reason_code is invalid"); + if (lane.first_todo != null) throw new EffectRuntimeRequestError("a lane that declares a gap may not declare work"); + note = text(gap.note, "staffing_gap note"); + } else if (lane.first_todo == null) { + reason = String(lane.gap_reason_code); + if (!hostGaps.has(reason)) throw new EffectRuntimeRequestError("lane gap_reason_code is invalid"); + if (lane.declined_first_todo != null) declined = todo(lane.declined_first_todo); + if (lane.gap_note != null) note = text(lane.gap_note, "gap_note"); + if (!declined && !note) throw new EffectRuntimeRequestError("a lane without work must keep why it is a gap"); + } else { + const first = todo(lane.first_todo); + reason = !registered.has(agent) ? "agent_not_registered" : !actions.has(String(first.action_kind)) ? "action_kind_not_supported" : null; + if (!reason) return {...base, staffing: "ready", first_todo: first}; + declined = first; + } + gaps.push({lane_id: id, reason_code: reason}); + return {...base, staffing: "gap", gap_reason_code: reason, + ...(declined ? {declined_first_todo: declined} : {}), ...(note ? {gap_note: note} : {})}; + }); + const envelope = requireJsonObject(plan.quota_envelope, "quota_envelope"); + if (!Object.keys(envelope).length) throw new EffectRuntimeRequestError("steward team plan preview requires a quota envelope"); + // These values are planning context. There is no quota/stop-policy writer in + // this operation, so explicit enforcement intent must never be ignored. + if (plan.enforcement != null) { + for (const [field, claim] of Object.entries(requireJsonObject(plan.enforcement, "enforcement"))) { + if (!["quota_envelope", "stop_condition"].includes(field) || claim !== "advisory") { + throw new EffectRuntimeRequestError(`team plan cannot enforce ${field}; only advisory planning values are supported`); + } + } + } + return {schema_version: TEAM_PLAN_SCHEMA, kind: TEAM_PLAN_KIND, goal_id: goal, + objective: text(plan.objective, "objective"), lanes, gaps, quota_envelope: envelope, + stop_condition: text(plan.stop_condition, "stop_condition"), applies: false}; +} + +export function teamTransactionIdentity(request: JsonObject) { + const plan = requireJsonObject(request.plan, "plan"); + const goal = requireAuthorityStoreId(request.goal_id, "goal id"); + if (plan.goal_id !== goal) throw new EffectRuntimeRequestError("steward team plan proposal names a different Goal than its settlement"); + const operation = `team-plan:${canonicalAuthoritySha256({goal, proposal: requireAuthorityStoreId(plan.proposal_id, "proposal id")})}`; + return {schema_version: TEAM_TRANSACTION_SCHEMA, goal_id: goal, operation_id: operation, + request_sha256: canonicalAuthoritySha256({plan, actor_agent_id: request.actor_agent_id ?? null, + expected_state_fingerprint: request.expected_state_fingerprint ?? null})}; +} + +function laneTodoId(operation: string, lane: unknown): string { + return `todo_${canonicalAuthoritySha256({operation, lane}).slice(0, 24)}`; +} + +/** Replay is historical readback; current Todo edits/completion/deletion are + * never an invitation to recreate or overwrite work from the original plan. */ +export function replayTeamTransaction(request: JsonObject, previous: JsonObject): JsonObject { + const identity = teamTransactionIdentity(request); + for (const [key, value] of Object.entries(identity)) { + if (previous[key] !== value) throw new EffectRuntimeRequestError("team plan operation identity mismatch"); + } + const result = requireJsonObject(previous.result, "team transaction result"); + const lanes = requireJsonObject(request.plan, "plan").lanes; + if (!Array.isArray(lanes) || !Array.isArray(result.lane_settlements) || + !Array.isArray(result.lane_todo_ids) || !Array.isArray(result.gap_lanes) || + result.lane_settlements.length === 0 || + result.lane_settlements.length + result.gap_lanes.length !== lanes.length || + result.gap_count !== result.gap_lanes.length) throw new EffectRuntimeRequestError("invalid team plan receipt"); + const ids = result.lane_settlements.map(raw => { + const settled = requireJsonObject(raw, "lane settlement"); + const lane = lanes.map(rawLane => requireJsonObject(rawLane, "lane")).find(item => item.lane_id === settled.lane_id); + if (!lane || settled.todo_id !== laneTodoId(identity.operation_id, lane.lane_id) || + settled.agent_id !== lane.agent_id || settled.acceptance !== lane.acceptance) { + throw new EffectRuntimeRequestError("team plan receipt lane identity mismatch"); + } + return settled.todo_id; + }); + if (new Set(ids).size !== ids.length || canonicalAuthoritySha256(ids) !== canonicalAuthoritySha256(result.lane_todo_ids)) { + throw new EffectRuntimeRequestError("team plan receipt Todo identities mismatch"); + } + return {...result, action: "reused", created_todo_ids: [], + reused_lane_count: (result.lane_todo_ids as unknown[]).length, + lane_settlements: (result.lane_settlements as JsonObject[]).map(lane => ({...lane, disposition: "reused"}))}; +} + +/** Pure whole-batch planner shared by legacy Markdown and AuthorityStore. */ +export function planTeamTransaction(value: unknown): JsonObject { + const request = requireJsonObject(value, "team transaction"); + const identity = teamTransactionIdentity(request); + if (request.previous_receipt != null) return {replayed: true, + result: replayTeamTransaction(request, requireJsonObject(request.previous_receipt, "previous receipt")), todos: []}; + if (request.expected_state_fingerprint != null && request.expected_state_fingerprint !== request.current_state_fingerprint) throw new EffectRuntimeRequestError("team plan state changed after preview", "team_plan_preview_stale"); + const preview = previewTeamPlan(request); + const records = request.todos == null ? [] : request.todos; + if (!Array.isArray(records)) throw new EffectRuntimeRequestError("todos must be an array"); + const current = new Map(records.map(raw => {const row = requireJsonObject(raw, "Todo"); return [String(row.todo_id), row];})); + const now = new Date(text(request.observed_at, "observed_at")); + const registered = requireStringArray(request.registered_agents, "registered_agents"); + const actor = request.actor_agent_id == null ? null : text(request.actor_agent_id, "actor_agent_id"); + if (actor && !registered.includes(actor)) throw new EffectRuntimeRequestError("team plan author is not registered"); + const todos: JsonObject[] = []; + const settlements: JsonObject[] = []; + for (const lane of preview.lanes as JsonObject[]) { + if (lane.staffing !== "ready") continue; + const first = requireJsonObject(lane.first_todo, "first Todo"); + const id = laneTodoId(identity.operation_id, lane.lane_id); + const rawText = String(first.text).replace(/^\s*[-*]\s+\[[ xX-]\]\s*/u, ""); + const record: JsonObject = {schema_version: TODO_DOMAIN_ITEM_SCHEMA, todo_id: id, role: "agent", + status: "open", done: false, archive_state: "active", task_class: "advancement_task", + action_kind: first.action_kind, text: /^\[P[0-4]\]\s+/iu.test(rawText) ? rawText : `[${first.priority}] ${rawText}`}; + // An initial assignment reserves a lane; it does not impersonate the + // receiver as author and does not create an adoption or execution lease. + // Only an owner-originated confirmation can assign another registered peer. + if (actor && actor !== lane.agent_id) throw new EffectRuntimeRequestError("assigning another Agent requires owner confirmation"); + record.claimed_by = lane.agent_id; + // Native records retain the same priority/title facts as the Markdown + // reader; projection validates these rather than manufacturing authority. + const label = /^\[(P[0-4])\]\s+(.+)$/iu.exec(String(record.text))!; + record.priority = label[1]!.toUpperCase(); + record.title = label[2]!; + const planned = planCoordinationTodoCreate({goal_id: String(identity.goal_id), operation_id: String(identity.operation_id), + actor_agent_id: actor, registered_agents: registered, dry_run: false, now, todo: record}, + current, request.read_model_schema ?? TODO_DOMAIN_READ_RECORD_SCHEMA, "operation_lane"); + if (planned.status !== "planned") throw new EffectRuntimeRequestError(String(planned.reason)); + const created = requireJsonObject(planned.todo, "created Todo"); + todos.push(created); current.set(id, created); + settlements.push({lane_id: lane.lane_id, agent_id: lane.agent_id, priority: first.priority, + acceptance: lane.acceptance, disposition: "created", todo_id: id}); + } + const ids = todos.map(row => row.todo_id); + const gaps = preview.gaps as JsonObject[]; + const result: JsonObject = {action: ids.length ? "created" : "unstaffed", todo_id: ids[0] ?? "", + target_key: null, created_todo_ids: ids, lane_todo_ids: ids, lane_settlements: settlements, + gap_count: gaps.length, gap_lanes: gaps.map(gap => ({...gap, + agent_id: (preview.lanes as JsonObject[]).find(lane => lane.lane_id === gap.lane_id)!.agent_id})), reused_lane_count: 0, + intent_basis: request.intent_basis ?? null, lane_failure: null}; + return {replayed: false, todos, result, receipt: {...identity, result}}; +} diff --git a/loopx/control_plane/work_items/team_plan_adapter.py b/loopx/control_plane/work_items/team_plan_adapter.py new file mode 100644 index 000000000..0f88f097b --- /dev/null +++ b/loopx/control_plane/work_items/team_plan_adapter.py @@ -0,0 +1,153 @@ +"""Storage adapters for the typed team-plan transaction. + +Legacy records and their operation receipt share one atomic Markdown write. +Promoted goals use the existing AuthorityStore transaction and projection outbox. +Neither adapter grants receiver adoption or execution authority. +""" +from __future__ import annotations + +import base64 +import json +import re +from collections.abc import Callable, Mapping +from pathlib import Path +from typing import Any + +from ...agent_registry import registered_agent_ids_for_goal +from ...history import load_registry +from ...registry import find_registry_goal +from ...state_refresh import now_local +from ..effect_runtime import EffectRuntimeRejected, effect_runtime_result +from ..runtime.public_safety import validate_public_safe_value +from ..coordination.local_authority import read_canonical_todos_if_promoted +from ..coordination.local_authority_shadow_adapter import effective_runtime_root +from ..coordination.legacy_writer_fence import legacy_todo_write_transaction +from ..coordination.runtime_shadow_writer_adapter import ( + begin_todo_runtime_shadow_capture, write_captured_todo_state, + settle_todo_runtime_shadow_capture, +) +from ..todos.path_resolution import resolve_todo_state_path +from ..todos.active_state_editing import ( + insert_into_existing_section, insert_new_section, section_bounds, + verify_state_text_durable, replace_updated_at, +) +from ..todos.contract import ( + TODO_ACTION_KIND_ADVANCEMENT_VALUES, format_todo_metadata_line, + parse_todo_metadata_line, +) +from ..todos.provider_projection import settle_canonical_todo_projection + + +class TeamPlanCommitError(ValueError): + def __init__(self, code: str, message: str, current_fingerprint: str | None = None): + super().__init__(message) + self.code = code + self.current_fingerprint = current_fingerprint + + +def apply_team_plan( + *, registry_path: Path, goal_id: str, agent_id: str | None, + proposal: Mapping[str, Any], expected_state_fingerprint: str | None = None, + read_fingerprint: Callable[[], str] | None = None, +) -> dict[str, Any]: + from .governed_transition_proposal import steward_team_plan_intent_basis + + validate_public_safe_value(dict(proposal), path="team_plan") + registry_path = Path(registry_path).expanduser() + runtime = effective_runtime_root(registry_path, None) + goal = find_registry_goal(load_registry(registry_path), goal_id) + if goal is None: + raise ValueError("steward team plan proposal names an unknown Goal") + project, state = resolve_todo_state_path(registry_path=registry_path, goal_id=goal_id) + request = { + "goal_id": goal_id, "plan": dict(proposal), + "actor_agent_id": agent_id, + "registered_agents": registered_agent_ids_for_goal(goal), + "supported_action_kinds": sorted(TODO_ACTION_KIND_ADVANCEMENT_VALUES), + "observed_at": now_local(), + "expected_state_fingerprint": expected_state_fingerprint, + "intent_basis": steward_team_plan_intent_basis( + goal_id=goal_id, goal=goal, registry_path=registry_path, plan=proposal), + } + identity = effect_runtime_result("work_items.team_plan.identity", request) + marker = f"", original) + if marker in original and not matches: + raise ValueError("team plan operation receipt is malformed") + if len(matches) > 1: + raise ValueError("duplicate team plan operation receipts") + return json.loads(base64.b64decode(matches[0], validate=True)) if matches else None + + canonical = read_canonical_todos_if_promoted(runtime_root=runtime, goal_id=goal_id) + if canonical is not None: + # Receipts created before promotion remain immutable historical facts. + # Read only; never fall back to a legacy writer for a promoted goal. + previous = previous_receipt(state.read_text(encoding="utf-8")) + if previous is not None: + return dict(effect_runtime_result("work_items.team_plan.plan", { + **request, "previous_receipt": previous})["result"]) + response = effect_runtime_result("work_items.team_plan.commit", { + **request, "runtime_root": str(runtime.resolve()), + "expected_provider_revision": canonical["provider_revision"], + "current_state_fingerprint": read_fingerprint() if read_fingerprint else None, + }) + if response.get("status") not in {"applied", "recovered", "replayed", "no_change"}: + raise TeamPlanCommitError(str(response.get("reason_code") or "team_plan_commit_failed"), + str(response.get("reason") or "team plan commit could not be verified"), + read_fingerprint() if read_fingerprint else None) + projected = settle_canonical_todo_projection(dict(response), registry_path=registry_path, + runtime_root=runtime, goal_id=goal_id, project=project, state_file=state) + if projected.get("projection_delivery") == "pending": + raise TeamPlanCommitError("team_plan_projection_pending", "Tasks committed; display readback is pending") + result = dict(response["result"]) + result["projection_delivery"] = projected.get("projection_delivery") + return result + + with legacy_todo_write_transaction(registry_path, goal_id, state, agent_id, + "todo_add", False, runtime_root=runtime): + original = state.read_text(encoding="utf-8") + previous = previous_receipt(original) + existing = [metadata for line in original.splitlines() + if (metadata := parse_todo_metadata_line(line)) is not None] + current_fingerprint = read_fingerprint() if read_fingerprint else None + try: + planned = effect_runtime_result("work_items.team_plan.plan", { + **request, "previous_receipt": previous, "todos": existing, + "current_state_fingerprint": current_fingerprint, + }) + except EffectRuntimeRejected as error: + raise TeamPlanCommitError(error.diagnostic_code, str(error), current_fingerprint) from None + result = dict(planned["result"]) + if planned["replayed"]: + verify_state_text_durable(state, original) + return result + if not planned["todos"]: + return result + capture = begin_todo_runtime_shadow_capture(registry_path=registry_path, + runtime_root=runtime, goal_id=goal_id, state_path=state, + write_class="todo_add", original_text=original) + lines = original.splitlines() + for todo in planned["todos"]: + metadata = format_todo_metadata_line(**{key: todo[key] for key in ( + "todo_id", "status", "task_class", "action_kind", "claimed_by", + "updated_at") if key in todo}) + block = f"- [ ] {todo['text']}\n{metadata}" + bounds = section_bounds(lines, "agent") + if bounds: + insert_into_existing_section(lines, bounds[0], bounds[1], block) + else: + insert_new_section(lines, "agent", block) + # Store outside Todo sections so archival and canonical projections do + # not remove operation history. Encoded JSON cannot terminate a comment. + encoded = base64.b64encode(json.dumps(planned["receipt"], ensure_ascii=False, + separators=(",", ":")).encode()).decode() + first_heading = next((i for i, line in enumerate(lines) if line.startswith("#")), len(lines)) + lines[first_heading:first_heading] = [marker + encoded + " -->", ""] + text = replace_updated_at("\n".join(lines) + "\n", str(request["observed_at"])) + write_captured_todo_state(capture, runtime_root=runtime, goal_id=goal_id, + state_path=state, text=text) + verify_state_text_durable(state, text) + return settle_todo_runtime_shadow_capture(result, registry_path=registry_path, + runtime_root=runtime, goal_id=goal_id, write_class="todo_add", capture=capture) diff --git a/loopx/control_plane/work_items/team_plan_authority.ts b/loopx/control_plane/work_items/team_plan_authority.ts new file mode 100644 index 000000000..93cde7a74 --- /dev/null +++ b/loopx/control_plane/work_items/team_plan_authority.ts @@ -0,0 +1,61 @@ +/** AuthorityStore interpreter for the work-items batch. Provider commit and + * operation receipt share one CAS; display projection is a recoverable effect. */ +import {EffectRuntimeRequestError} from "../effect_runtime_errors.ts"; +import type {JsonObject} from "../effect_program.ts"; +import type {AuthorityStore} from "../coordination/authority_store.ts"; +import {authorityStoreSourceAuthority} from "../coordination/authority_store.ts"; +import {requireJsonObject} from "../runtime_decode.ts"; +import {canonicalAuthorityObject} from "../coordination/authority_store_codec.ts"; +import {CoordinationCommandReceipt} from "../coordination/command_receipt.ts"; +import {indexCoordinationProjection, prepareCoordinationProjectionCommit, validateCoordinationTodoReadModel} from "../coordination/coordination_projection.ts"; +import {withCanonicalWriter} from "../coordination/local_authority_write.ts"; +import {openLocalAuthorityStore, localAuthorityOpenFailure} from "../coordination/local_authority_provider.ts"; +import {planTeamTransaction, replayTeamTransaction, teamTransactionIdentity, TEAM_TRANSACTION_SCHEMA} from "./team_plan.ts"; +import {isAbsolute} from "node:path"; + +export async function commitTeamPlan(store: AuthorityStore, request: JsonObject): Promise { + const identity = teamTransactionIdentity(request); + const receipt = new CoordinationCommandReceipt({result_schema: TEAM_TRANSACTION_SCHEMA, identity, + failure: (reason_code, reason) => ({schema_version: TEAM_TRANSACTION_SCHEMA, status: "failed", reason_code, reason}), + decode: (original, phase) => { + const recovered = replayTeamTransaction(request, original); + return {fields: {result: phase === "applied" ? original.result : recovered}, changed: true}; + }}); + const previous = await receipt.read(store); + if (previous) return previous; + const head = await store.loadAuthority(); + if (head.status !== "loaded") return {...head}; + // The canonical revision is included at preview. Stale work cannot be + // admitted merely because its Markdown projection has not caught up yet. + if (request.expected_provider_revision != null && request.expected_provider_revision !== head.provider_revision) { + return {status: "failed", reason_code: "team_plan_preview_stale", reason: "canonical Todo state changed after preview"}; + } + const projection = indexCoordinationProjection(head.head, String(identity.goal_id)); + validateCoordinationTodoReadModel(head.head, String(identity.goal_id)); + const plan = planTeamTransaction({...request, todos: [...projection.todos.values()], + read_model_schema: canonicalAuthorityObject(head.head.todo_read_model, "Todo read model").schema_version}); + const todos = plan.todos as JsonObject[]; + if (!todos.length) return {status: "no_change", result: plan.result}; + const commit = prepareCoordinationProjectionCommit({goal_id: String(identity.goal_id), operation_id: String(identity.operation_id), + expected_provider_revision: head.provider_revision, projection: head.head, + mutations: todos.map(todo => ({kind: "todo_upsert" as const, todo}))}); + commit.receipts = [canonicalAuthorityObject(plan.receipt, "team plan receipt")]; + return receipt.commit(store, commit); +} + +export async function commitLocalTeamPlan(value: unknown): Promise { + const request = requireJsonObject(value, "team plan commit"); + const root = String(request.runtime_root); + if (!isAbsolute(root)) throw new Error("runtime_root must be absolute"); + const identity = teamTransactionIdentity(request); + try { + return await withCanonicalWriter(root, String(identity.goal_id), false, async () => { + const store = await openLocalAuthorityStore(root, String(identity.goal_id)); + return {...await commitTeamPlan(store, request), source_authority: authorityStoreSourceAuthority(store), + decision_read_from_provider: true, legacy_fallback_used: false}; + }); + } catch (error) { + return {status: "failed", reason_code: error instanceof EffectRuntimeRequestError ? error.code : "team_plan_commit_failed", + reason: error instanceof Error ? error.message : String(error), ...localAuthorityOpenFailure(error)}; + } +} diff --git a/tests/control_plane/test_team_plan_authority.py b/tests/control_plane/test_team_plan_authority.py new file mode 100644 index 000000000..f5cd4a669 --- /dev/null +++ b/tests/control_plane/test_team_plan_authority.py @@ -0,0 +1,71 @@ +"""Actual Chat entrypoint against a fenced FileAuthorityStore and projection IO.""" +import hashlib +import json + +import pytest + +from canonical_authority_fixture import initialize_canonical_authority +from loopx.chat_actions import ChatActionService +from loopx.chat_action_store import ChatActionStore +from loopx.control_plane.coordination.coordination_state_contract import ( + TODO_DOMAIN_READ_RECORD_SCHEMA_VERSION, TODO_DOMAIN_RECORD_FIELDS, +) +from loopx.control_plane.coordination.local_authority import read_canonical_todos_if_promoted +from loopx.control_plane.coordination.local_authority_shadow_projection import canonical_bytes +from loopx.control_plane.todos import provider_projection + + +@pytest.fixture +def canonical_team(tmp_path): + runtime = tmp_path / "runtime" + state = tmp_path / "state.md" + state.write_text('# Goal\n\n## Agent Todo\n\n') + registry = tmp_path / "registry.json" + registry.write_text(json.dumps({"common_runtime_root": str(runtime), "goals": [{ + "id": "goal-a", "repo": str(tmp_path), "state_file": "state.md", + "coordination": {"registered_agents": ["alpha", "beta"], "agent_model": "peer_v1"}}]})) + initialize_canonical_authority(runtime, "goal-a", {"goal_id": "goal-a", "todos": [], "leases": [], + "todo_read_model": {"schema_version": TODO_DOMAIN_READ_RECORD_SCHEMA_VERSION, + "contract_fields": list(TODO_DOMAIN_RECORD_FIELDS), "todo_count": 0, + "records_sha256": hashlib.sha256(canonical_bytes([])).hexdigest()}}, state_path=state) + service = ChatActionService(store=ChatActionStore(runtime / "chat/actions"), registry_path=registry) + plan = {"schema_version": "steward_team_plan_preview_v0", "kind": "steward_team_plan_preview", + "goal_id": "goal-a", "objective": "Independent lane outcomes", "quota_envelope": {"slots": 2}, + "stop_condition": "Owner ends request", "lanes": [{"lane_id": f"lane-{agent}", "agent_id": agent, + "acceptance": "Return independent evidence", "first_todo": {"text": "Same work", "priority": "P1", + "task_class": "advancement_task", "action_kind": "implement"}} for agent in ("alpha", "beta")]} + preview = service.preview({"action_kind": "team.plan", "summary": "Assign work", "context": {}, + "normalized_parameters": {"goal_id": "goal-a", "plan": plan}, "idempotency_key": "team-confirm"}) + return runtime, state, service, preview + + +def test_canonical_chat_commit_replays_after_projection_failure(canonical_team, monkeypatch): + runtime, state, service, preview = canonical_team + def fail(*args, **kwargs): + raise OSError("display unavailable") + monkeypatch.setattr(provider_projection, "atomic_write_state_text", fail) + failed = service.apply(preview["proposal_id"])["proposal"] + assert failed["status"] == "failed" + read = read_canonical_todos_if_promoted(runtime_root=runtime, goal_id="goal-a") + assert len(read["todos"]) == 2 + assert len({row["todo_id"] for row in read["todos"]}) == 2 + assert "Same work" not in state.read_text() + monkeypatch.undo() + applied = service.apply(preview["proposal_id"])["proposal"] + assert applied["status"] == "applied", applied + assert state.read_text().count("Same work") == 2 + assert read_canonical_todos_if_promoted(runtime_root=runtime, goal_id="goal-a")["provider_revision"] == read["provider_revision"] + + +def test_canonical_change_without_markdown_refresh_invalidates_preview(canonical_team): + runtime, state, service, preview = canonical_team + from loopx.todos import add_goal_todo + before = state.read_bytes() + # The public owner commits and projects new work; restoring only the display + # simulates delayed projection, not a rollback of canonical authority. + add_goal_todo(registry_path=service.registry_path, goal_id="goal-a", role="agent", text="Concurrent work", + task_class="advancement_task", action_kind="implement", agent_id="alpha") + state.write_bytes(before) + result = service.apply(preview["proposal_id"])["proposal"] + assert result["status"] == "stale", result + assert len(read_canonical_todos_if_promoted(runtime_root=runtime, goal_id="goal-a")["todos"]) == 1 diff --git a/tests/control_plane_ts/team_plan.test.ts b/tests/control_plane_ts/team_plan.test.ts new file mode 100644 index 000000000..47246cf76 --- /dev/null +++ b/tests/control_plane_ts/team_plan.test.ts @@ -0,0 +1,118 @@ +import assert from "node:assert/strict"; +import {randomUUID} from "node:crypto"; +import {mkdtemp, rm} from "node:fs/promises"; +import {tmpdir} from "node:os"; +import {join} from "node:path"; +import test, {type TestContext} from "node:test"; +import {Pool} from "pg"; +import type {JsonObject} from "../../loopx/control_plane/effect_program.ts"; +import type {AuthorityStore} from "../../loopx/control_plane/coordination/authority_store.ts"; +import {FileAuthorityStore} from "../../loopx/control_plane/coordination/file_authority_store.ts"; +import {PostgreSqlAuthorityStore, installPostgreSqlAuthorityStoreSchema} from "../../loopx/control_plane/coordination/postgresql_authority_store.ts"; +import {canonicalAuthoritySha256} from "../../loopx/control_plane/coordination/authority_store_codec.ts"; +import {TODO_DOMAIN_READ_RECORD_SCHEMA, TODO_DOMAIN_RECORD_CONTRACT} from "../../loopx/control_plane/coordination/coordination_state_contract.ts"; +import {prepareCoordinationProjectionCommit} from "../../loopx/control_plane/coordination/coordination_projection.ts"; +import {commitTeamPlan} from "../../loopx/control_plane/work_items/team_plan_authority.ts"; +import {previewTeamPlan, teamTransactionIdentity} from "../../loopx/control_plane/work_items/team_plan.ts"; + +const goal = "team-plan-test"; +function request(): JsonObject { + return {goal_id: goal, actor_agent_id: null, registered_agents: ["alpha", "beta"], + supported_action_kinds: ["implement"], observed_at: "2026-09-17T00:00:00Z", + expected_state_fingerprint: "confirmed", current_state_fingerprint: "confirmed", + plan: {schema_version: "steward_team_plan_preview_v0", kind: "steward_team_plan_preview", + goal_id: goal, proposal_id: "same-operation", objective: "Independent acceptance of each lane", + quota_envelope: {slots: 2}, stop_condition: "Owner closes the request", + lanes: ["alpha", "beta"].map(agent => ({lane_id: `lane-${agent}`, agent_id: agent, + acceptance: `Evidence returned by ${agent}`, first_todo: {text: "Same bounded work", priority: "P1", + task_class: "advancement_task", action_kind: "implement"}}))}}; +} +async function seed(store: AuthorityStore) { + assert.equal((await store.commitAuthority({operation_id: "seed", expected_provider_revision: null, + events: [], receipts: [], next_projection: {goal_id: goal, todos: [], leases: [], + todo_read_model: {schema_version: TODO_DOMAIN_READ_RECORD_SCHEMA, todo_count: 0, + records_sha256: canonicalAuthoritySha256([]), contract_fields: [...TODO_DOMAIN_RECORD_CONTRACT.fields]}}})).status, "applied"); +} +const providers = ["file", "postgresql"] as const; +async function fixture(t: TestContext, provider: typeof providers[number]): Promise { + if (provider === "file") { + const dir = await mkdtemp(join(tmpdir(), "team-plan-store-")); + t.after(() => rm(dir, {recursive: true, force: true})); + return new FileAuthorityStore(dir, goal); + } + const pool = new Pool({connectionString: process.env.LOOPX_TEST_POSTGRES_URL, max: 4}); + t.after(() => pool.end()); + const db = {connect: async () => { + const client = await pool.connect(); + return {query: async (sql: string, values?: readonly unknown[]) => client.query(sql, values ? [...values] : undefined), + release: () => client.release()}; + }}; + await installPostgreSqlAuthorityStoreSchema(db, `postgresql:${"b".repeat(32)}`); + return new PostgreSqlAuthorityStore(db, {tenant_id: `team-${randomUUID()}`, goal_id: goal}); +} +for (const provider of providers) { + const options = {skip: provider === "postgresql" && !process.env.LOOPX_TEST_POSTGRES_URL}; + test(`${provider}: equal-text lane assignments commit once; concurrent replay preserves receiver identity`, options, async t => { + const store = await fixture(t, provider); await seed(store); + const input = request(); + const results = await Promise.all([commitTeamPlan(store, input), commitTeamPlan(store, input)]); + for (const result of results) assert.ok(["applied", "recovered", "replayed"].includes(String(result.status)), JSON.stringify(result)); + const after = await store.loadAuthority(); assert.equal(after.status, "loaded"); + if (after.status !== "loaded") return; + const todos = after.head.todos as JsonObject[]; + assert.equal(todos.length, 2); + assert.equal(new Set(todos.map(todo => todo.todo_id)).size, 2); + assert.deepEqual(todos.map(todo => todo.claimed_by).sort(), ["alpha", "beta"]); + assert.ok(todos.every(todo => todo.created_by == null && todo.last_actor_agent_id == null)); + assert.deepEqual(after.head.leases, []); + const changed = structuredClone(input); (changed.plan as JsonObject).objective = "Different commitment"; + assert.equal((await commitTeamPlan(store, changed)).reason_code, "coordination_operation_identity_mismatch"); + assert.deepEqual(await store.loadAuthority(), after); + }); + test(`${provider}: invalid last lane, changed state and unauthorized sender write no prefix`, options, async t => { + const store = await fixture(t, provider); await seed(store); + const before = await store.loadAuthority(); + const invalid = request(); ((invalid.plan as JsonObject).lanes as JsonObject[])[1]!.first_todo = {text: "Invalid"}; + for (const input of [invalid, {...request(), current_state_fingerprint: "changed"}, {...request(), actor_agent_id: "alpha"}]) { + await assert.rejects(() => commitTeamPlan(store, input)); + assert.deepEqual(await store.loadAuthority(), before); + assert.equal((await store.readReceipt(String(teamTransactionIdentity(input).operation_id))).status, "missing"); + } + assert.equal((await commitTeamPlan(store, {...request(), expected_provider_revision: "stale"})).reason_code, "team_plan_preview_stale"); + assert.deepEqual(await store.loadAuthority(), before); + }); + test(`${provider}: lost response and later completion/deletion recover historical result without replacement`, options, async t => { + const store = await fixture(t, provider); await seed(store); + const original = store.commitAuthority.bind(store); + store.commitAuthority = async commit => {await original(commit); throw new Error("response lost");}; + assert.equal((await commitTeamPlan(store, request())).status, "recovered"); + store.commitAuthority = original; + const head = await store.loadAuthority(); assert.equal(head.status, "loaded"); + if (head.status !== "loaded") return; + const todos = head.head.todos as JsonObject[]; + const commit = prepareCoordinationProjectionCommit({goal_id: goal, operation_id: "receiver-progress", + expected_provider_revision: head.provider_revision, projection: head.head, + mutations: [{kind: "todo_upsert", todo: {...todos[0]!, text: "Revised by receiver", status: "done", done: true}}, + {kind: "todo_remove", todo_id: String(todos[1]!.todo_id)}]}); + assert.equal((await original(commit)).status, "applied"); + const progressed = await store.loadAuthority(); + assert.equal((await commitTeamPlan(store, {...request(), current_state_fingerprint: "now changed"})).status, "replayed"); + assert.deepEqual(await store.loadAuthority(), progressed); + }); + test(`${provider}: commit outage cannot publish a successful partial batch`, options, async t => { + const store = await fixture(t, provider); await seed(store); + const before = await store.loadAuthority(); + store.commitAuthority = async () => {throw new Error("storage unavailable");}; + const result = await commitTeamPlan(store, request()); + assert.equal(result.status, "ambiguous"); + assert.deepEqual(await store.loadAuthority(), before); + }); +} + +test("preview stays inert and rejects unenforced policy claims", () => { + const input = request(); + assert.equal(previewTeamPlan(input).applies, false); + for (const enforcement of [{quota_envelope: "enforced"}, {stop_condition: "enforced"}, {other: "advisory"}]) { + assert.throws(() => previewTeamPlan({...input, plan: {...input.plan as JsonObject, enforcement}}), /cannot enforce/u); + } +}); diff --git a/tests/test_chat_team_plan_action.py b/tests/test_chat_team_plan_action.py index c8e414709..779e7a3d4 100644 --- a/tests/test_chat_team_plan_action.py +++ b/tests/test_chat_team_plan_action.py @@ -40,6 +40,7 @@ def _fixture(tmp_path: Path, *, agents: tuple[str, ...] = (AGENT_ID,)): json.dumps( { "schema_version": "0.1", + "common_runtime_root": str(tmp_path / "runtime"), "updated_at": "2026-01-01T00:00:00+00:00", "goals": [ { @@ -138,21 +139,6 @@ def _two_lane_plan() -> dict: return plan -def _fail_lane_write(monkeypatch: pytest.MonkeyPatch, *, text: str) -> None: - """Make one lane's write fail, leaving the other lanes real.""" - - from loopx.control_plane.work_items import governed_transition_proposal - - real = governed_transition_proposal.add_goal_todo - - def guarded(**kwargs: object) -> dict: - if kwargs.get("text") == text: - raise OSError("simulated lane write failure") - return real(**kwargs) # type: ignore[arg-type] - - monkeypatch.setattr(governed_transition_proposal, "add_goal_todo", guarded) - - def test_a_confirmed_plan_creates_each_ready_lane_first_todo(tmp_path: Path) -> None: project, _registry_path, service = _fixture(tmp_path) @@ -263,66 +249,62 @@ def test_an_unchanged_objective_still_confirms_and_records_its_basis( assert _todos(project).count("loopx:todo ") == 1 -def test_a_lane_that_fails_after_earlier_lanes_stays_recoverable( - tmp_path: Path, monkeypatch: pytest.MonkeyPatch -) -> None: - """A partial materialization is neither reported as applied nor re-created. - - Each lane is written by the canonical Todo owner under its own lock, so a - multi-lane plan is a recoverable workflow, not one atomic transaction. When a - later lane fails, the lanes that already exist are real work: the plan must - not report success, and the retry must reconcile against those identities - instead of creating a second copy of the same lane. - """ - - project, _registry_path, service = _fixture(tmp_path) - _fail_lane_write(monkeypatch, text="[P2] Advance the second intake contract") - - applied = service.apply(_preview(service, _two_lane_plan())["proposal_id"]) - - proposal = applied["proposal"] - assert proposal["status"] == "failed" - failure = proposal["failure"] - assert failure["error_code"] == "team_plan_lane_write_failed" - assert failure["retry_safe"] is True - # The failure names the lane that could not be written and the identities - # that do exist, so the retry does not have to reconstruct them. - assert failure["details"]["failed_lane_id"] == "lane-beta" - assert failure["details"]["lane_settlements"][0]["lane_id"] == "lane-alpha" - existing = failure["details"]["lane_todo_ids"] - assert len(existing) == 1 - state = _todos(project) - assert "Advance the intake contract" in state - assert "Advance the second intake contract" not in state - assert state.count("loopx:todo ") == 1 - - # Retry once the cause is gone: the lane that already exists is reused, so - # recovery neither duplicates the work nor loses it. +def test_failed_batch_retries_same_card_without_partial_work(tmp_path: Path, monkeypatch) -> None: + from loopx.control_plane.work_items import team_plan_adapter + project, _, service = _fixture(tmp_path) + before = _todos(project) + preview = _preview(service, _two_lane_plan()) + def fail(*args, **kwargs): + raise OSError("batch unavailable") + monkeypatch.setattr(team_plan_adapter, "write_captured_todo_state", fail) + failed = service.apply(preview["proposal_id"])["proposal"] + assert failed["status"] == "failed" + assert failed["failure"]["error_code"] == "team_plan_commit_failed" + assert _todos(project) == before monkeypatch.undo() - retry = service.apply(_preview(service, _two_lane_plan())["proposal_id"]) - - assert retry["proposal"]["status"] == "applied" - receipt = retry["proposal"]["receipt"] - assert receipt["outcome"] == "team_plan_applied" - assert len(receipt["resource_ids"]["lane_todo_ids"]) == 2 - assert receipt["lanes"][0]["todo_id"] == existing[0] - assert receipt["lanes"][0]["disposition"] == "reused" - assert receipt["lanes"][1]["disposition"] == "created" + applied = service.apply(preview["proposal_id"])["proposal"] + assert applied["status"] == "applied" + assert len(set(applied["receipt"]["resource_ids"]["lane_todo_ids"])) == 2 assert _todos(project).count("loopx:todo ") == 2 -def test_a_lane_that_fails_before_any_work_is_an_error_not_a_partial( - tmp_path: Path, monkeypatch: pytest.MonkeyPatch -) -> None: - """With nothing committed there is no partial state to reconcile.""" - - project, _registry_path, service = _fixture(tmp_path) - _fail_lane_write(monkeypatch, text="[P1] Advance the intake contract") - - with pytest.raises(OSError, match="simulated lane write failure"): - service.apply(_preview(service, _two_lane_plan())["proposal_id"]) - - assert "loopx:todo " not in _todos(project) +def test_lost_response_recovers_original_commit_after_work_changes(tmp_path: Path, monkeypatch) -> None: + from loopx.control_plane.work_items import team_plan_adapter + project, _, service = _fixture(tmp_path) + preview = _preview(service, _two_lane_plan()) + real = team_plan_adapter.write_captured_todo_state + def lose_response(*args, **kwargs): + real(*args, **kwargs) + raise OSError("response lost after commit") + monkeypatch.setattr(team_plan_adapter, "write_captured_todo_state", lose_response) + assert service.apply(preview["proposal_id"])["proposal"]["status"] == "failed" + assert _todos(project).count("loopx:todo ") == 2 + monkeypatch.undo() + state = project / f".codex/goals/{GOAL_ID}/ACTIVE_GOAL_STATE.md" + # A receiver's later edit must survive historical commit recovery. + state.write_text(state.read_text().replace("Advance the intake contract", "Receiver revised the work")) + before = state.read_bytes() + recovered = service.apply(preview["proposal_id"])["proposal"] + assert recovered["status"] == "applied" + assert recovered["receipt"]["outcome"] == "team_plan_commit_recovered" + assert state.read_bytes() == before + + +def test_equal_text_lanes_keep_distinct_identity_and_owner(tmp_path: Path) -> None: + from loopx.todos import list_goal_todos + project, registry, service = _fixture(tmp_path, agents=(AGENT_ID, "agent-beta")) + plan = _two_lane_plan() + plan["lanes"][1]["agent_id"] = "agent-beta" + plan["lanes"][1]["first_todo"] = dict(plan["lanes"][0]["first_todo"]) + preview = _preview(service, plan) + result = service.apply(preview["proposal_id"])["proposal"] + assert result["status"] == "applied" + assert len(set(result["receipt"]["resource_ids"]["lane_todo_ids"])) == 2 + rows = list_goal_todos(registry_path=registry, goal_id=GOAL_ID)["todos"] + assert len(rows) == 2 + assert {row["claimed_by"] for row in rows} == {AGENT_ID, "agent-beta"} + assert service.apply(preview["proposal_id"])["proposal"]["receipt"] == result["receipt"] + assert _todos(project).count("loopx:todo ") == 2 def _validated(preview_plan: dict) -> dict: diff --git a/tests/test_steward_team_plan_apply.py b/tests/test_steward_team_plan_apply.py index f584f2944..9c8a3b01d 100644 --- a/tests/test_steward_team_plan_apply.py +++ b/tests/test_steward_team_plan_apply.py @@ -242,7 +242,7 @@ def test_a_plan_cannot_be_retargeted_to_another_goal(tmp_path: Path) -> None: def _second_lane() -> dict: return { "lane_id": "lane-beta", - "agent_id": "agent-beta", + "agent_id": AGENT_ID, "acceptance": "The second lane's first Todo is delivered with evidence", "first_todo": { "text": "Read back the second lane's bounded first turn", @@ -475,54 +475,16 @@ def test_a_plan_that_can_staff_no_lane_reports_that_instead_of_reuse( assert "loopx:todo " not in _todos(project) -def test_a_lane_failure_after_earlier_lanes_returns_a_typed_partial( - tmp_path: Path, monkeypatch: pytest.MonkeyPatch -) -> None: - """The settlement reports the lanes that exist beside the one that failed. - - A plan is a recoverable workflow: the lanes already written are real work, - so the settlement neither raises away their identities nor claims the plan - applied, and the receipt validates with the failure recorded. - """ - - from loopx.control_plane.work_items import governed_transition_proposal - - project, registry_path = _fixture(tmp_path) - real = governed_transition_proposal.add_goal_todo - - def guarded(**kwargs: object) -> dict: - if kwargs.get("text") == "[P1] Work that cannot be written": - raise OSError("simulated lane write failure") - return real(**kwargs) # type: ignore[arg-type] - - monkeypatch.setattr(governed_transition_proposal, "add_goal_todo", guarded) - plan = _proposal( - extra_lane={ - "lane_id": "lane-beta", - "agent_id": AGENT_ID, - "acceptance": "Never reached", - "first_todo": { - "text": "Work that cannot be written", - "priority": "P1", - "task_class": "advancement_task", - "action_kind": "implement", - }, - } - ) - - receipts = _settle(registry_path, plan) - - assert receipts[0]["action"] == "partially_created" - assert receipts[0]["lane_failure"] == { - "lane_id": "lane-beta", - "reason_code": "lane_write_failed", - } - assert [item["lane_id"] for item in receipts[0]["lane_settlements"]] == [ - "lane-alpha" - ] - assert receipts[0]["todo_id"] == receipts[0]["lane_todo_ids"][0] - assert validate_governed_transition_receipts(receipts) == receipts - assert _todos(project).count("loopx:todo ") == 1 +def test_batch_write_failure_leaves_every_lane_unwritten(tmp_path: Path, monkeypatch) -> None: + from loopx.control_plane.work_items import team_plan_adapter + project, registry_path = _fixture(tmp_path, agents=(AGENT_ID, "agent-beta")) + before = _todos(project) + def fail(*args, **kwargs): + raise OSError("batch write unavailable") + monkeypatch.setattr(team_plan_adapter, "write_captured_todo_state", fail) + with pytest.raises(OSError, match="batch write unavailable"): + _settle(registry_path, _proposal(extra_lane=_second_lane())) + assert _todos(project) == before def test_a_lane_failure_receipt_must_use_the_typed_vocabulary() -> None: From 59b438548171161106ed7b384d647987ed3bf5e8 Mon Sep 17 00:00:00 2001 From: huangruiteng <14976749+huangruiteng@users.noreply.github.com> Date: Thu, 17 Sep 2026 15:40:33 +0800 Subject: [PATCH 2/9] fix(dashboard): report team assignments, recovery and staffing gaps Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com> --- .../smoke/team-plan-proposal-smoke.ts | 42 ++++++- .../personal-workspace/context-drawer.tsx | 4 +- .../src/features/personal-workspace/i18n.tsx | 20 +++- .../personal-workspace-model.ts | 6 + .../personal-workspace-page.tsx | 6 +- .../personal-workspace/team-plan-preview.ts | 113 +++++++++++++++++- .../personal-workspace-browser/fixture.mjs | 54 ++++++++- .../personal-workspace-browser/team-plan.mjs | 17 ++- loopx/web/chat/asset-retention.json | 8 +- .../{index-CFOC0-T9.js => index-CCaRy5Qh.js} | 34 +++--- loopx/web/chat/index.html | 2 +- 11 files changed, 275 insertions(+), 31 deletions(-) rename loopx/web/chat/assets/{index-CFOC0-T9.js => index-CCaRy5Qh.js} (74%) diff --git a/apps/presentation/dashboard/smoke/team-plan-proposal-smoke.ts b/apps/presentation/dashboard/smoke/team-plan-proposal-smoke.ts index d167c9ebc..cf713489d 100644 --- a/apps/presentation/dashboard/smoke/team-plan-proposal-smoke.ts +++ b/apps/presentation/dashboard/smoke/team-plan-proposal-smoke.ts @@ -13,7 +13,7 @@ import { typedActionKindSchema, typedActionProposalSchema, } from "../src/data/chat.js"; -import { teamPlanFields, teamPlanGoalId, teamPlanLaneCount } from "../src/features/personal-workspace/team-plan-preview.js"; +import { teamPlanFields, teamPlanGapLaneLine, teamPlanGoalId, teamPlanLaneCount, teamPlanReceiptGapLanes } from "../src/features/personal-workspace/team-plan-preview.js"; const GOAL_ID = "team-plan-smoke-goal"; @@ -132,6 +132,10 @@ const translate = (key: string, values?: Record) => { "proposal.teamPlan.acceptanceShort": "acceptance", "proposal.teamPlan.gapLane": "unstaffed", "proposal.teamPlan.laneUnstaffed": "staffing gap, no first Todo", + "proposal.teamPlan.appliedGapLane": "{lane} ({agent}) stayed unstaffed: {reason}", + "proposal.teamPlan.advisory": "planning context", + "proposal.teamPlan.gapReason.agentNotRegistered": "the Agent is not registered for this Goal", + "proposal.teamPlan.gapReason.actionKindNotSupported": "this host does not ship that action kind", }; const template = table[key] ?? key; return Object.entries(values ?? {}).reduce( @@ -158,9 +162,9 @@ check( "a gap lane says it is unstaffed, names the reason and keeps the work it did not staff", ); check(byKey.get("lane_gaps")?.value === "lane_review: agent_not_registered", "the gap summary joins lane and reason"); -check(byKey.get("quota_envelope")?.value === "slots: 4 · window: 1d", "the quota envelope is shown as data"); +check(byKey.get("quota_envelope")?.value === "slots: 4 · window: 1d · planning context", "quota is labeled as planning context"); check( - byKey.get("stop_condition")?.value === "every lane reports a typed outcome or a stated gap", + byKey.get("stop_condition")?.value === "every lane reports a typed outcome or a stated gap · planning context", "the stop condition is shown", ); check( @@ -168,4 +172,36 @@ check( "the card never renders a lane as already created", ); +// Confirming the plan replaces the preview facts with the apply receipt, so +// the readback has to carry the same lane identity: a partial application that +// reported only a count left the owner unable to name what was missing. +const partialReceipt = { + outcome: "team_plan_partially_applied", + gap_count: 1, + gap_lanes: [ + { lane_id: "lane_review", agent_id: "agent-reviewer", reason_code: "agent_not_registered" }, + ], +}; +const appliedGaps = teamPlanReceiptGapLanes(partialReceipt); +check(appliedGaps.length === 1 && appliedGaps[0].laneId === "lane_review", "the apply receipt names the lane that stayed unstaffed"); +check( + teamPlanGapLaneLine(appliedGaps[0], translate as never) + === "lane_review (agent-reviewer) stayed unstaffed: the Agent is not registered for this Goal", + "the applied card says which lane is missing and what would let it run", +); +check( + teamPlanGapLaneLine({ laneId: "lane_x", agentId: "", reasonCode: "future_reason" }, translate as never) + .endsWith("future_reason"), + "an unrecognized host reason is shown verbatim instead of being invented", +); +check( + teamPlanReceiptGapLanes({ outcome: "team_plan_applied" }).length === 0, + "a plan that staffed every lane reports no gap lanes", +); +check( + teamPlanReceiptGapLanes(null).length === 0 + && teamPlanReceiptGapLanes({ gap_lanes: [{ agent_id: "agent-reviewer" }] }).length === 0, + "a receipt without the field, or without a lane, reports no gap lanes", +); + if (process.exitCode !== 1) console.log("team plan proposal smoke ok"); diff --git a/apps/presentation/dashboard/src/features/personal-workspace/context-drawer.tsx b/apps/presentation/dashboard/src/features/personal-workspace/context-drawer.tsx index 8d3f25057..1c5c71729 100644 --- a/apps/presentation/dashboard/src/features/personal-workspace/context-drawer.tsx +++ b/apps/presentation/dashboard/src/features/personal-workspace/context-drawer.tsx @@ -40,6 +40,7 @@ import type { import type { LarkGoalConnection } from "../../data/chat"; import { localizedAttentionAge, localizedGoalState, localizedSessionStatus, useWorkspaceI18n } from "./i18n"; import { formatCostUsd, formatDurationMs, formatTokenCount, formatUsageValue } from "./personal-workspace-model"; +import { teamPlanAppliedLine, teamPlanGapLaneLine } from "./team-plan-preview"; import { todoResumeWhenFromMessage } from "./personal-workspace-router"; function subagentModelRequest(include: boolean, model: string, effort: string) { @@ -971,7 +972,8 @@ export function ContextDrawer({ agents, attentionHistory = [], onSelectAttention {selection.item.status === "ready" ?

{t("drawer.proposalExplainer")}

: null}
{selection.item.fields.map((field) =>
{field.label}
{field.value}
)}
- {selection.item.status === "applied" ?

{selection.item.actionKind === "operation.execute" ? selection.item.primaryLabel : t("drawer.proposalApplied")}

: null} + {selection.item.status === "applied" ?

{selection.item.actionKind === "operation.execute" ? selection.item.primaryLabel : selection.item.actionKind === "team.plan" ? teamPlanAppliedLine(selection.item.teamPlanOutcome ?? null, t) : t("drawer.proposalApplied")}

: null} + {selection.item.status === "applied" && selection.item.actionKind === "team.plan" && (selection.item.teamPlanGapLanes?.length ?? 0) > 0 ?
{t("drawer.proposalAppliedUnstaffed", { count: selection.item.teamPlanGapLanes!.length })}
    {selection.item.teamPlanGapLanes!.map((gap) =>
  • {teamPlanGapLaneLine(gap, t)}
  • )}
: null} {selection.item.status === "applied" && selection.item.actionKind !== "operation.execute" && selection.item.goalId ? : null} {selection.item.status === "stale" ?

{t("drawer.proposalStale")}

: null} {selection.item.status === "error" ?
{selection.item.reviewPlan?.reason === "readback_unverified" ? t("actionReview.readback_unverified") : t("drawer.proposalApplyFailed")}{selection.item.errorMessage ? {selection.item.errorMessage} : null}{t("drawer.proposalApplyFailedHint")}
: null} diff --git a/apps/presentation/dashboard/src/features/personal-workspace/i18n.tsx b/apps/presentation/dashboard/src/features/personal-workspace/i18n.tsx index de520f847..0a3270b7a 100644 --- a/apps/presentation/dashboard/src/features/personal-workspace/i18n.tsx +++ b/apps/presentation/dashboard/src/features/personal-workspace/i18n.tsx @@ -237,6 +237,7 @@ const en = { "drawer.priority": "Priority", "drawer.progress": "Progress", "drawer.proposalApplied": "Applied. LoopX state will refresh.", + "drawer.proposalAppliedUnstaffed": "Applied, with {count} lane(s) still unstaffed:", "drawer.proposalApplyFailed": "Apply failed. No changes were written.", "drawer.proposalApplyFailedHint": "Refresh the Goal state and regenerate. If it still fails, keep this page open and inspect advanced diagnostics.", "drawer.proposalClose": "Close", @@ -698,9 +699,16 @@ const en = { "proposal.primary.teamPlan": "Confirm and staff the lanes", "proposal.field.laneGaps": "Unstaffed lanes", "proposal.field.quotaEnvelope": "Quota envelope", - "proposal.teamPlan.acceptanceShort": "acceptance", + "proposal.teamPlan.acceptanceShort": "acceptance reference", + "proposal.teamPlan.advisory": "planning context; not enforced by this confirmation", + "proposal.teamPlan.appliedPartially": "Assigned {created} lane task(s); {gaps} lane(s) remain unstaffed. Receiver adoption and execution are still unverified.", + "proposal.teamPlan.appliedAlreadyPresent": "Original assignment recovered; no new tasks created. This does not attest current execution.", + "proposal.teamPlan.applied": "Lane tasks assigned. Receiver adoption and execution are still unverified.", "proposal.teamPlan.gapLane": "unstaffed", "proposal.teamPlan.laneUnstaffed": "staffing gap, no first Todo", + "proposal.teamPlan.appliedGapLane": "{lane} ({agent}) stayed unstaffed: {reason}", + "proposal.teamPlan.gapReason.agentNotRegistered": "the Agent is not registered for this Goal", + "proposal.teamPlan.gapReason.actionKindNotSupported": "this host does not ship that action kind", "proposal.workspace.current": "Current local workspace (no Repository bound)", "proposal.workspace.named": "{workspace} (execution environment only; does not bind a repository)", "proposal.workspaceGate.agentImpact": "Bind an Agent identity, then recheck the original action. No Goal has been written.", @@ -1274,6 +1282,7 @@ const zhCN: Record = { "drawer.priority": "优先级", "drawer.progress": "进度", "drawer.proposalApplied": "已应用,LoopX 状态将刷新。", + "drawer.proposalAppliedUnstaffed": "已应用,但有 {count} 条 lane 仍未组建:", "drawer.proposalApplyFailed": "应用失败,没有写入任何变更。", "drawer.proposalApplyFailedHint": "请刷新 Goal 状态后重新生成;若仍失败,可保留此页并查看高级诊断。", "drawer.proposalClose": "关闭", @@ -1735,9 +1744,16 @@ const zhCN: Record = { "proposal.primary.teamPlan": "确认并组建各 lane", "proposal.field.laneGaps": "未配齐的 lane", "proposal.field.quotaEnvelope": "配额包络", - "proposal.teamPlan.acceptanceShort": "验收", + "proposal.teamPlan.acceptanceShort": "验收参考", + "proposal.teamPlan.advisory": "计划参考;本次确认不执行该约束", + "proposal.teamPlan.appliedPartially": "已分配 {created} 条 lane 的任务,{gaps} 条仍有缺口。接收者采纳与执行尚未验证。", + "proposal.teamPlan.appliedAlreadyPresent": "已恢复原分配结果,未新增任务;这不证明当前执行状态。", + "proposal.teamPlan.applied": "lane 任务已分配;接收者采纳与执行尚未验证。", "proposal.teamPlan.gapLane": "未配齐", "proposal.teamPlan.laneUnstaffed": "编制缺口,无首个 Todo", + "proposal.teamPlan.appliedGapLane": "{lane}({agent})仍未组建:{reason}", + "proposal.teamPlan.gapReason.agentNotRegistered": "该 Agent 未在该 Goal 注册", + "proposal.teamPlan.gapReason.actionKindNotSupported": "本机不支持该动作类型", "proposal.workspace.current": "当前本地工作区(未绑定 Repository)", "proposal.workspace.named": "{workspace}(仅提供执行环境,不会自动关联仓库)", "proposal.workspaceGate.agentImpact": "先完成 Agent 身份绑定,再重新检查原操作;当前没有写入 Goal。", diff --git a/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-model.ts b/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-model.ts index 53bb9fbc1..9a8a652dc 100644 --- a/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-model.ts +++ b/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-model.ts @@ -1,3 +1,4 @@ +import type { TeamPlanAppliedOutcome } from "./team-plan-preview"; import type { ActionReviewPlan } from "../../../../../../loopx/control_plane/presentation/action_review_plan.js"; import type { GoalAcceptanceObservation } from "../../data/goal-acceptance-observation"; import type { AttentionDetails } from "./attention-details"; @@ -232,6 +233,11 @@ export type WorkspaceActionPreview = { primaryLabel?: string; errorMessage?: string; status: "draft" | "ready" | "applying" | "applied" | "gated" | "stale" | "error" | "rejected" | "deferred"; + // The lanes a confirmed team plan left unstaffed, read from the apply + // receipt so the card can name them after the confirmation, not only in the + // preview that the confirmation replaced. + teamPlanOutcome?: TeamPlanAppliedOutcome; + teamPlanGapLanes?: Array<{ laneId: string; agentId: string; reasonCode: string }>; title: string; sourceRequest?: WorkspaceActionPreviewRequest; workspaceCandidates?: Array<{ label: string; workspaceRef: string }>; diff --git a/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-page.tsx b/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-page.tsx index a824aaed1..ed7aaf021 100644 --- a/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-page.tsx +++ b/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-page.tsx @@ -3,7 +3,7 @@ import { isStaleActionFailure, } from "../../../../../../loopx/control_plane/presentation/action_review_plan.js"; import { refreshAttention } from "./attention-details"; -import { teamPlanFields, teamPlanGoalId, teamPlanLaneCount } from "./team-plan-preview"; +import { teamPlanAppliedOutcome, teamPlanFields, teamPlanGoalId, teamPlanLaneCount, teamPlanReceiptGapLanes } from "./team-plan-preview"; import { useEffect, useMemo, useRef, useState, type ClipboardEvent as ReactClipboardEvent } from "react"; import { AlertCircle, Bot, CalendarClock, FileText, ListPlus, MessageCircleQuestion, Paperclip, Plus, RefreshCw, Send, X } from "lucide-react"; @@ -634,6 +634,10 @@ function workspaceProposal(proposal: TypedActionProposal, t: WorkspaceTranslate) && reviewPlan.interaction !== "completed" ? "error" : proposalStatus(proposal.status), + teamPlanOutcome: proposal.action_kind === "team.plan" ? teamPlanAppliedOutcome(proposal.receipt) ?? undefined : undefined, + teamPlanGapLanes: proposal.action_kind === "team.plan" + ? teamPlanReceiptGapLanes(proposal.receipt) + : undefined, title: localizedSummary, }; } diff --git a/apps/presentation/dashboard/src/features/personal-workspace/team-plan-preview.ts b/apps/presentation/dashboard/src/features/personal-workspace/team-plan-preview.ts index 94297dc69..fc5376544 100644 --- a/apps/presentation/dashboard/src/features/personal-workspace/team-plan-preview.ts +++ b/apps/presentation/dashboard/src/features/personal-workspace/team-plan-preview.ts @@ -90,7 +90,7 @@ export function teamPlanFields( fields.push({ key: "quota_envelope", label: t("proposal.field.quotaEnvelope"), - value: envelopeEntries.map(([key, value]) => `${key}: ${String(value ?? "")}`).join(" · "), + value: envelopeEntries.map(([key, value]) => `${key}: ${String(value ?? "")}`).join(" · ") + ` · ${t("proposal.teamPlan.advisory")}`, }); } const stopCondition = asText(plan.stop_condition); @@ -98,7 +98,7 @@ export function teamPlanFields( fields.push({ key: "stop_condition", label: t("proposal.field.stopCondition"), - value: stopCondition, + value: `${stopCondition} · ${t("proposal.teamPlan.advisory")}`, }); } return fields; @@ -113,3 +113,112 @@ export function teamPlanGoalId(parameters: Record): string { const plan = asRecord(parameters.plan); return asText(parameters.goal_id) || asText(plan.goal_id); } + +export type TeamPlanGapLane = { laneId: string; agentId: string; reasonCode: string }; + +/** + * Read the lanes a confirmed plan left unstaffed out of the apply receipt. + * + * The applied state reported only how many lanes were missing, which an owner + * cannot act on: a count does not say which lane is still waiting or what would + * let it run. The receipt names each missing lane with the host fact behind it, + * so the card that confirmed the plan can say both. A receipt without the field + * (an older runtime, or a plan that staffed every lane) reports no gap lanes. + */ +export function teamPlanReceiptGapLanes(receipt: unknown): TeamPlanGapLane[] { + const record = asRecord(receipt); + const raw = Array.isArray(record.gap_lanes) ? record.gap_lanes : []; + return raw + .map((entry) => { + const gap = asRecord(entry); + return { + laneId: asText(gap.lane_id), + agentId: asText(gap.agent_id), + reasonCode: asText(gap.reason_code), + }; + }) + .filter((gap) => gap.laneId.length > 0); +} + +/** The host fact that kept one lane unstaffed, in the reader's language. */ +export function teamPlanGapReason( + reasonCode: string, + t: WorkspaceTranslate, +): string { + if (reasonCode === "agent_not_registered") { + return t("proposal.teamPlan.gapReason.agentNotRegistered"); + } + if (reasonCode === "action_kind_not_supported") { + return t("proposal.teamPlan.gapReason.actionKindNotSupported"); + } + // An unrecognized code is a host fact this card has no words for. Naming it + // verbatim is honest; inventing a reason for it would not be. + return reasonCode; +} + +export function teamPlanGapLaneLine( + gap: TeamPlanGapLane, + t: WorkspaceTranslate, +): string { + return t("proposal.teamPlan.appliedGapLane", { + lane: gap.laneId, + agent: gap.agentId || gap.laneId, + reason: teamPlanGapReason(gap.reasonCode, t), + }); +} + +/** + * What confirming a plan actually did, read from the receipt the apply wrote. + * + * A confirmation the owner was shown as one commitment can create every lane, + * some of them, or find them already present. The receipt is the only surface + * that knows which happened, so the card reads it instead of reporting every + * applied plan as the same success. + */ +export type TeamPlanAppliedOutcome = { + kind: "applied" | "partially_applied" | "already_present"; + created: number; + gaps: number; +}; + +export function teamPlanAppliedOutcome(receipt: unknown): TeamPlanAppliedOutcome | null { + const record = asRecord(receipt); + const outcome = asText(record.outcome); + const lanes = Array.isArray(record.lanes) ? record.lanes.length : 0; + const gaps = typeof record.gap_count === "number" ? record.gap_count : 0; + if (outcome === "team_plan_partially_applied") { + return { kind: "partially_applied", created: lanes, gaps }; + } + if (outcome === "team_plan_lanes_already_present" || outcome === "team_plan_commit_recovered") { + return { kind: "already_present", created: lanes, gaps }; + } + if (outcome === "team_plan_applied") { + return { kind: "applied", created: lanes, gaps }; + } + // A plan whose receipt the apply recorded as a typed failure is not an applied + // outcome, so the card keeps the failure it already renders. + return null; +} + +/** + * The line an applied plan shows, or the surface's own applied sentence. + * + * A partial application names how many lanes exist and how many were left + * unstaffed, because "applied" alone told the owner that a commitment was kept + * when part of it was not. + */ +export function teamPlanAppliedLine( + outcome: TeamPlanAppliedOutcome | null, + t: WorkspaceTranslate, +): string { + if (outcome?.kind === "partially_applied") { + return t("proposal.teamPlan.appliedPartially", { + created: String(outcome.created), + gaps: String(outcome.gaps), + }); + } + if (outcome?.kind === "already_present") { + return t("proposal.teamPlan.appliedAlreadyPresent"); + } + return t(outcome?.kind === "applied" ? "proposal.teamPlan.applied" : "drawer.proposalApplied"); +} diff --git a/examples/personal-workspace-browser/fixture.mjs b/examples/personal-workspace-browser/fixture.mjs index 189ec61de..4650c6102 100644 --- a/examples/personal-workspace-browser/fixture.mjs +++ b/examples/personal-workspace-browser/fixture.mjs @@ -220,6 +220,55 @@ function withMachineConfiguration(capability, { configuration, description }) { }; } +/** + * The receipt a confirmed team plan writes, for the plan the fixture stored. + * + * The product answers an apply with the plan's own outcome, so a scenario that + * confirms a plan carrying a staffing gap has to observe the same readback the + * card renders: which lanes became work and which ones stayed unstaffed, with + * the host fact behind each gap. The lanes are derived from the stored plan + * because that is the plan the apply was confirmed against. + */ +function teamPlanApplyReceipt(proposal) { + const plan = proposal?.normalized_parameters?.plan; + if (!plan || typeof plan !== "object" || !Array.isArray(plan.lanes)) return null; + const ready = plan.lanes.filter((lane) => lane.staffing !== "gap"); + const gaps = plan.lanes.filter((lane) => lane.staffing === "gap"); + const receipt = { + projection_verified: true, + receipt_id: "fixture-team-plan-receipt", + }; + if (ready.length > 0) { + receipt.outcome = gaps.length > 0 ? "team_plan_partially_applied" : "team_plan_applied"; + } + if (ready.length > 0) { + receipt.resource_ids = { + goal_id: proposal?.normalized_parameters?.goal_id ?? null, + todo_id: `todo_${ready[0].lane_id}`, + lane_todo_ids: ready.map((lane) => `todo_${lane.lane_id}`), + }; + receipt.lanes = ready.map((lane) => ({ + lane_id: lane.lane_id, + agent_id: lane.agent_id, + priority: lane.first_todo?.priority ?? "P1", + disposition: "created", + todo_id: `todo_${lane.lane_id}`, + acceptance: lane.acceptance, + })); + } + if (gaps.length > 0) { + // The count and the lanes it counts stay together, and a lane that stayed + // unstaffed names the Agent it was meant to run on. + receipt.gap_count = gaps.length; + receipt.gap_lanes = gaps.map((lane) => ({ + lane_id: lane.lane_id, + agent_id: lane.agent_id, + reason_code: lane.gap_reason_code, + })); + } + return receipt; +} + export function startServer() { if (packaged) { return spawn(process.env.LOOPX_PYTHON_BIN || "python3", [ @@ -1565,11 +1614,14 @@ export async function installApi(page, { goalSubagentConfigurationEnabled = true state.durableResources.add(resourceKey); state.durableWriteCount += 1; } + // Injected proposals live in the action store, not in the session + // previews, so the plan a confirmed card carries has to be read there. + const teamPlanReceipt = teamPlanApplyReceipt(actionProposals.get(apply[1])); const proposal = { schema_version: "loopx_chat_action_proposal_v1", proposal_id: apply[1], action_kind: actionKind, summary: "已应用", normalized_parameters: preview?.normalized_parameters ?? {}, context: preview?.context ?? {}, expected_state_fingerprint: "fixture-r1", permission_classification: "durable_write", validation_evidence: [], available_transitions: ["apply", "cancel"], - status: "applied", receipt: { projection_verified: true, receipt_id: "fixture-receipt" }, stale: null, created_at: "2026-08-13T01:00:00Z", updated_at: "2026-08-13T01:00:01Z", + status: "applied", receipt: teamPlanReceipt ?? { projection_verified: true, receipt_id: "fixture-receipt" }, stale: null, created_at: "2026-08-13T01:00:00Z", updated_at: "2026-08-13T01:00:01Z", }; actionProposals.set(apply[1], proposal); await route.fulfill({ contentType: "application/json", json: { ok: true, proposal, turn: acceptedTurn }, status: acceptedTurn ? 202 : 200 }); diff --git a/examples/personal-workspace-browser/team-plan.mjs b/examples/personal-workspace-browser/team-plan.mjs index dc7158cca..09a293bfa 100644 --- a/examples/personal-workspace-browser/team-plan.mjs +++ b/examples/personal-workspace-browser/team-plan.mjs @@ -167,7 +167,7 @@ export const teamPlanScenario = { "a ready lane shows its first bounded Todo with its priority and action kind", ); check( - previewText.includes("验收: the bounded Todo is created through the canonical owner"), + previewText.includes("验收参考: the bounded Todo is created through the canonical owner"), "a ready lane shows its acceptance signal", ); check( @@ -205,8 +205,21 @@ export const teamPlanScenario = { "confirming sends exactly one apply for the confirmed proposal", ); check(api.durableWriteCount === 1, "the confirmed apply performed exactly one durable write"); - await drawer.getByText("已应用,LoopX 状态将刷新。", { exact: true }) + await drawer.getByText("已分配 1 条 lane 的任务,1 条仍有缺口。接收者采纳与执行尚未验证。", { exact: true }) .waitFor({ state: "visible", timeout: 15_000 }); + // The confirmation replaced the preview with the apply receipt, so the + // card has to keep naming the lane that stayed unstaffed and the host + // fact behind it; a bare count would leave the owner with a number and + // nothing to act on. + const appliedText = await drawer.innerText(); + check( + appliedText.includes("已应用,但有 1 条 lane 仍未组建:"), + "the applied card says how many lanes stayed unstaffed", + ); + check( + appliedText.includes("lane_review(agent-reviewer)仍未组建:该 Agent 未在该 Goal 注册"), + "the applied card names the unstaffed lane, its Agent and the host reason", + ); await page.screenshot({ path: resolve(outputDir, "team-plan-applied.png"), fullPage: false, diff --git a/loopx/web/chat/asset-retention.json b/loopx/web/chat/asset-retention.json index b159fe9bf..60ce15f1f 100644 --- a/loopx/web/chat/asset-retention.json +++ b/loopx/web/chat/asset-retention.json @@ -13,8 +13,8 @@ "assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2", "assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2", "assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2", - "assets/index-ByNCYQIY.js", - "assets/index-C58Y-FU6.css" + "assets/index-C58Y-FU6.css", + "assets/index-CCaRy5Qh.js" ], [ "assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2", @@ -28,8 +28,8 @@ "assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2", "assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2", "assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2", - "assets/index-C58Y-FU6.css", - "assets/index-CFOC0-T9.js" + "assets/index-ByNCYQIY.js", + "assets/index-C58Y-FU6.css" ] ] } diff --git a/loopx/web/chat/assets/index-CFOC0-T9.js b/loopx/web/chat/assets/index-CCaRy5Qh.js similarity index 74% rename from loopx/web/chat/assets/index-CFOC0-T9.js rename to loopx/web/chat/assets/index-CCaRy5Qh.js index 8b0ed6071..37505ed59 100644 --- a/loopx/web/chat/assets/index-CFOC0-T9.js +++ b/loopx/web/chat/assets/index-CCaRy5Qh.js @@ -14,18 +14,21 @@ Related repository (optional): Notification method (optional):`,"composer.createGoalHint":`Insert a Goal template to review before creation`,"composer.evidence":`Check what is proven`,"composer.globalProgress":`Summarize all Goal progress`,"composer.globalProgressPrompt":`Summarize the latest progress and blockers for all active Goals.`,"composer.globalTasks":`Ask about global priorities`,"composer.globalTasksPrompt":`Which Goals need me, and what should I handle first?`,"composer.goalMessageHint":`Your message is delivered to {agent} in this Goal session.`,"composer.goalRunningHint":`{agent} is running {count} tasks · your message enters this session as guidance without interrupting it`,"composer.goalPlaceholder":`Ask or guide {goal}…`,"composer.imageAnalysisPrompt":`Analyze these images in the context of the current Goal and tell me the next step.`,"composer.imageCountError":`You can add up to {count} images.`,"composer.imagePicker":`Image file picker`,"composer.imageReadError":`Could not read image {name}.`,"composer.imageReadGenericError":`Could not read the image.`,"composer.imageSizeError":`Each image must be {size} MB or smaller.`,"composer.imageTypeError":`PNG, JPEG, WebP, and GIF images are supported.`,"composer.imagesPending":`Images to send`,"composer.managerMessageHint":`Your message goes to the LoopX Manager across Goals for global questions or Goal creation.`,"composer.managerPlaceholder":`Ask the LoopX Manager, or describe a new Goal…`,"composer.monitor":`Configure scheduled check`,"composer.monitorGoalQuestion":`Which Goal should receive the scheduled check?`,"composer.monitorTemplate":`Add a scheduled check for the current Goal: Check target: Frequency (supports 30 minutes / 2 hours / daily): Every 2 hours +Stop condition: Goal completes`,"composer.monitorShortcutTemplate":`Add a scheduled check for the current Goal: +Check target: {target} +Frequency: Every 2 hours Stop condition: Goal completes`,"composer.monitorTemplateWithoutGoal":`Configure a scheduled check: Goal: Check target: Frequency: Every 2 hours -Stop condition: Goal completes`,"composer.monitorHint":`Fill in what to check, frequency, and stop condition before creation`,"composer.heartbeatGoalQuestion":`Which Goal should receive the Heartbeat?`,"composer.heartbeatTemplate":`Set a Heartbeat for the current Goal: +Stop condition: Goal completes`,"composer.heartbeatGoalQuestion":`Which Goal should receive the Heartbeat?`,"composer.heartbeatTemplate":`Set a Heartbeat for the current Goal: Frequency: Daily Stop condition: Goal completes Notification: Only notify me when needed`,"composer.heartbeatTemplateWithoutGoal":`Set up a Heartbeat: Goal: Frequency: Daily Stop condition: Goal completes -Notification: Only notify me when needed`,"composer.nextAction":`Ask what’s next`,"composer.nextActionPrompt":`What should I do next?`,"composer.send":`Send`,"composer.sendMessage":`Send a message to LoopX`,"composer.sendMessageHint":`Send message`,"composer.sentImageAlt":`Remove image {name}`,"conversation.agentPending":`Working…`,"conversation.close":`Close conversation receipt`,"conversation.convertHint":`Turn the Agent’s latest reply into a Task draft`,"conversation.full":`View full conversation`,"conversation.receipt":`Conversation receipt`,"conversation.replying":`Replying`,"conversation.title":`Manager conversation`,"conversation.toTask":`Convert to Task`,"digest.away":`Runs since your previous visit`,"digest.completed":`new completions`,"digest.failed":`new failed/interrupted runs`,"digest.needsYou":`currently need confirmation`,"feedback.applying":`Running: {title}`,"feedback.cancelFailed":`Cancel failed: {error}`,"feedback.completed":`Completed: {title}`,"feedback.executionFailed":`Execution failed: {error}`,"feedback.gateRequired":`Your confirmation is required: {summary}`,"feedback.notCompleted":`Not completed: {status}`,"feedback.goalRefreshFailed":`The Goal opened, but its latest state could not be refreshed. Use Refresh to try again.`,"feedback.preparingPreview":`Preparing confirmation preview: {title}`,"feedback.previewFailed":`Could not prepare the confirmation preview: {error}`,"feedback.sendFailed":`Send failed: {error}`,"feedback.sendGenericError":`Could not send the message. Try again later.`,"feedback.stale":`State changed, so nothing was applied. Generate a new confirmation preview.`,"feedback.taskDraftCreated":`Created a Task draft from the reply. Edit and send it to review the confirmation preview.`,"goal.defaultTitle":`New personal Goal`,"goal.initialTodo":`Work toward the completion criteria: {criteria}`,"goal.objectiveBoundary":`Execution boundary: {boundary}`,"goal.objectiveCompletion":`Completion criteria: {criteria}`,"drawer.advancedDiagnostics":`Advanced diagnostics`,"drawer.agentWorking":`Agent is continuing; the record updates automatically.`,"drawer.analysis":`Analyzing`,"drawer.apply":`Confirm and apply`,"drawer.applying":`Applying…`,"drawer.attentionBlocking":`Blocking an Agent`,"drawer.attentionWaiting":`Waiting for your decision`,"drawer.autoNotify":`Human-gate auto notifications`,"drawer.branch":`Branch`,"drawer.closeDetail":`Close details and return to {context}`,"drawer.connected":`Connected`,"drawer.correctionDescription":`The message keeps the current Goal, Todo, and Agent Session context.`,"drawer.correctionLabel":`Guide {agent}`,"drawer.correctionPlaceholder":`For example: focus on permission risks first and do not commit yet…`,"drawer.correctionSend":`Send guidance`,"drawer.correctionTextarea":`Enter guidance for Goal {goal}, Agent {agent}, Run {run}`,"drawer.copyRepository":`Copy repository identity`,"drawer.copyRepositoryDone":`Repository identity copied`,"drawer.copyRepositoryError":`Copy failed. Check browser clipboard permission.`,"drawer.copyRepositorySuccess":`Copied. You can paste it into another tool.`,"drawer.cost":`Cost 24h / 7d`,"drawer.costShort":`Cost`,"drawer.durationShort":`Duration`,"drawer.period24h":`24h`,"drawer.period7d":`7d`,"drawer.tokens":`Tokens 24h / 7d`,"drawer.tokensShort":`tokens`,"drawer.usageNotMeasured":`Not measured`,"drawer.currentGoal":`Current Goal`,"attentionDetail.title":`Request details`,"attentionDetail.request":`What is requested`,"attentionDetail.decision":`Decision requested`,"attentionDetail.unknownRequest":`Not specified; review the source before deciding`,"attentionDetail.open":`Open in current projection`,"attentionDetail.closed":`Closed`,"attentionDetail.deferred":`Deferred`,"attentionDetail.superseded":`Replaced`,"attentionDetail.unknown":`Status not provided`,"attentionDetail.unavailable":`The source has not confirmed this item; refresh before acting`,"attentionDetail.unknownReason":`The source has not provided a reason.`,"attentionDetail.targetTodo":`Linked Todo to unblock`,"attentionDetail.targetAgent":`Agent named by the request`,"attentionDetail.scope":`Declared decision scope`,"attentionDetail.notProvided":`Not provided`,"attentionDetail.replacement":`Replacement Todo`,"attentionDetail.openReplacement":`Open replacement`,"attentionDetail.boundary":`Reading this detail does not resolve a gate or grant authority. Available decisions require a fresh preview.`,"drawer.decisionDefaultEvidence":`No additional public-safe evidence is attached. The next step will still show a Preview first.`,"drawer.decisionDefaultReason":`This decision affects the next step of the current Todo.`,"drawer.decisionDefer":`Decide later`,"drawer.decisionMore":`More decisions`,"drawer.decisionReject":`Reject`,"drawer.decisionReview":`Review impact and decide`,"drawer.dependencies":`Dependencies`,"drawer.detailsAndActions":`Details & actions`,"drawer.duration":`Duration 24h / 7d`,"drawer.evidence":`Evidence`,"drawer.executionHistory":`Execution history`,"drawer.executionRecord":`Run record`,"drawer.executionRecordAndResult":`Execution & result`,"drawer.explainDecision":`Explain this decision`,"drawer.gateApproveHint":`Run one command in the terminal to complete approval:`,"drawer.gateRejectHint":`Replace approve with reject at the end to decline. This notice disappears after the command runs.`,"drawer.gateRequiresHost":`Host confirmation required`,"drawer.gateRequiresHostDescription":`This page cannot approve this protected permission change. Nothing was written by your click.`,"drawer.goalAutoRun":`Automatic runs for this Goal`,"drawer.goalChanges":`Pending changes for this Goal`,"drawer.goalDetails":`Goal details`,"drawer.group":`Group`,"drawer.inspectorFull":`Switch to full screen`,"drawer.inspectorFullView":`Full-screen view`,"drawer.inspectorHalf":`Switch to half screen`,"drawer.inspectorHalfView":`Half-screen view`,"drawer.lastNotification":`Latest notification`,"drawer.larkConfigure":`Configure Lark connection`,"drawer.larkConnect":`Connect Lark App`,"drawer.larkConnection":`Lark connection`,"drawer.larkNotConfigured":`Not configured`,"drawer.larkNotConfiguredDescription":`After setup, LoopX sends a Feishu notification when this Goal needs your confirmation.`,"drawer.managerChanges":`Pending Manager changes`,"drawer.moreActions":`More actions`,"drawer.moreRunActions":`More run actions`,"drawer.nextTransition":`Next transition`,"drawer.noExecutionHistory":`No execution history yet.`,"drawer.noRun":`Execution Session has not started`,"drawer.noRunDescription":`Run records will appear here after an Agent starts execution.`,"drawer.notAssigned":`Unassigned`,"drawer.notLinked":`Not linked`,"drawer.notSet":`Not set`,"drawer.outputDetails":`Output details`,"drawer.outputRecorded":`This output is recorded on the current Goal.`,"drawer.outputSafePreview":`Public-safe output preview`,"drawer.outputRun":`Run`,"drawer.outputTodo":`Todo`,"drawer.outputs":`Outputs from this run`,"drawer.previewUnavailable":`No public-safe inline preview is available for this output.`,"drawer.priority":`Priority`,"drawer.progress":`Progress`,"drawer.proposalApplied":`Applied. LoopX state will refresh.`,"drawer.proposalApplyFailed":`Apply failed. No changes were written.`,"drawer.proposalApplyFailedHint":`Refresh the Goal state and regenerate. If it still fails, keep this page open and inspect advanced diagnostics.`,"drawer.proposalClose":`Close`,"drawer.proposalDefer":`Later`,"drawer.proposalDeferred":`Deferred. You can apply it later or regenerate it.`,"drawer.proposalEnterGoal":`Open new Goal`,"drawer.proposalExplainer":`After confirmation, LoopX applies this change and shows the write result. Closing or canceling changes nothing.`,"drawer.proposalRecheck":`Recheck against latest state`,"drawer.proposalRegenerate":`Retry with latest state`,"drawer.proposalRejected":`Rejected. This change will not be written.`,"drawer.proposalStale":`Source state changed. Recheck against the latest state.`,"drawer.proposalViewGoal":`View updated Goal`,"drawer.reassign":`Reassign to`,"drawer.reassignSummary":`Reassign: {task}`,"drawer.reason":`Reason`,"drawer.recoveryDescription":`Local history is preserved. Choose a recovery path.`,"drawer.recoveryFailed":`Upstream Session recovery failed`,"drawer.recoveryNewSession":`Start a new Session with context`,"drawer.recoveryRetry":`Retry recovery`,"drawer.repositoryRole":`Execution workspace`,"drawer.repository":`Repository`,"drawer.replyMode":`Reply mode`,"drawer.subagentApplied":`Applied and verified against the shared Goal state.`,"drawer.subagentAppliedRefreshFailed":`Applied and verified. The status view could not refresh; retry the page refresh later.`,"drawer.subagentApplying":`Applying and verifying shared-state readback…`,"drawer.subagentApplyFailed":`Could not apply the sub-agent setting.`,"drawer.subagentChildLimit":`Current limit`,"drawer.subagentConfirmDisable":`Confirm turning off sub-agent execution`,"drawer.subagentConfirmEnable":`Confirm turning on sub-agent execution`,"drawer.subagentCurrentBoundary":`Current task-domain restriction`,"drawer.subagentDescription":`Allows the runtime to create temporary child agents for independent tasks only after Todo, quota, capability, and write-scope gates pass. It does not force parallel work or grant durable authority.`,"drawer.subagentDisable":`Preview turning off sub-agent execution`,"drawer.subagentDisableSummary":`New child-agent execution will be disabled for this Goal. Existing Todo ownership and execution records stay unchanged.`,"drawer.subagentDomainInvalid":`The selected task-domain restriction is invalid.`,"drawer.subagentDomainTodoCount":`{count} matching open Todos`,"drawer.subagentDomains":`Task-domain restriction (optional)`,"drawer.subagentDomainsEmpty":`No open advancement Todo declares task_domain. Leave this empty to keep child execution unrestricted by task domain.`,"drawer.subagentDomainsHint":`Leave every option clear to apply no task-domain filter. Selecting domains admits only matching typed Todos; all other execution gates still apply.`,"drawer.subagentDomainsUnrestricted":`No task-domain restriction`,"drawer.subagentEnable":`Preview turning on sub-agent execution`,"drawer.subagentLabel":`Per-Goal execution boundary`,"drawer.subagentModel":`Child model`,"drawer.subagentEffort":`Child reasoning effort`,"drawer.subagentModelDefault":`Host default`,"drawer.subagentLunaPreset":`Use Luna / max`,"drawer.subagentClearModel":`Clear model preference`,"drawer.subagentModelHint":`Use Preview configuration update to save this preference. It can be saved while execution is off; host support is checked at launch.`,"drawer.subagentModelRequired":`Choose a child model before setting reasoning effort.`,"drawer.subagentMaxChildren":`Maximum child agents`,"drawer.subagentNoChange":`The current Goal already matches this setting; nothing was written.`,"drawer.subagentPending":`Pending confirmation`,"drawer.subagentPreviewBoundary":`Preview configuration update`,"drawer.subagentPreviewFailed":`Could not create the sub-agent setting preview.`,"drawer.subagentPreviewing":`Checking the latest Goal state…`,"drawer.subagentPreviewReady":`Preview locked. Confirm to apply this Goal setting.`,"drawer.subagentPreviewSummary":`Allow up to {count} child agents. Task-domain restriction: {domains}.`,"drawer.subagentRemoteReadOnly":`This source is read only. Open the Goal on its host to change the setting.`,"drawer.subagentTitle":`Adaptive sub-agent execution`,"drawer.remoteDetailsDescription":`SSH sources expose public-safe status only and do not read connection settings from the source host.`,"drawer.remoteDetailsUnavailable":`Remote details are not projected`,"drawer.resumeNo":`No`,"drawer.resumeYes":`Yes`,"drawer.runDetails":`Execution Session`,"drawer.runInterrupt":`Interrupt this run`,"drawer.runLatest":`View latest execution`,"drawer.runNewSession":`Start new Session`,"drawer.runCloseSession":`Close Session`,"drawer.runRecordEmpty":`No run record yet. The Agent has not started this execution. Check waiting conditions or resume the Session under Details & actions.`,"drawer.runRecordProjected":`No step-by-step record is available. LoopX read {completed}/{total} projected steps{outputs}; inspect the Session under Details & actions.`,"drawer.runRecordProjectedOutputs":` and {count} outputs`,"drawer.runRoleAssistant":`Completed`,"drawer.runRoleSystem":`Needs review`,"drawer.runRoleUser":`Task received`,"drawer.runView":`Session views`,"drawer.scheduleAdd":`Add scheduled check`,"drawer.scheduleDefaultNotification":`Notify only when you are needed`,"drawer.scheduleDefaultStop":`Goal completes or owner stops it`,"drawer.scheduleDefaultTarget":`Wake according to this Goal’s LoopX schedule.`,"drawer.scheduleEdit":`Change to every 2 hours`,"drawer.scheduleLast":`Last run`,"drawer.scheduleLocalTimezone":`Local timezone`,"drawer.scheduleNext":`Next run`,"drawer.scheduleNeverRun":`Not run yet`,"drawer.scheduleNotification":`Notification`,"drawer.schedulePause":`Pause`,"drawer.schedulePending":`Waiting for schedule`,"drawer.scheduleResume":`Resume`,"drawer.scheduleRunNow":`Run now`,"drawer.scheduleStop":`Stop {kind}`,"drawer.scheduleStopCondition":`Stop condition`,"drawer.scheduleTimezone":`Timezone`,"drawer.sessionRecoverable":`Resumable`,"drawer.sessionStatus":`Session status`,"drawer.setupHeartbeat":`Set up Heartbeat`,"drawer.taskActions":`Pending Todo actions`,"drawer.taskAdvancement":`Advancement task`,"drawer.taskBlock":`Mark blocked`,"drawer.taskComplete":`Mark complete`,"drawer.taskCompletedNote":`This task is retained as a read-only record.`,"drawer.taskCompletedTitle":`Task completed`,"drawer.taskDefer":`Defer`,"drawer.taskDeferCondition":`Todo defer resume condition`,"drawer.taskDeferInvalid":`Unsupported condition format; use one of the deterministic conditions below.`,"drawer.taskDeferPlaceholder":`For example, resume_at:2026-09-14T09:00:00+08:00`,"drawer.taskDeferReview":`Review defer`,"drawer.taskDeferSupported":`Supports todo_done, pr_merged, capacity_available, and timezone-aware resume_at conditions.`,"drawer.taskDeferUntil":`Defer until`,"drawer.taskDetails":`Todo details`,"drawer.taskInfo":`Task information`,"drawer.taskManage":`Manage task`,"drawer.taskNextCompleted":`Create a follow-up task`,"drawer.taskNextOpen":`Advance or update status`,"drawer.taskOrdinary":`Task`,"drawer.taskStatusBlocked":`Blocked`,"drawer.taskStatusDeferred":`Deferred`,"drawer.resumeWhen":`Resume condition`,"drawer.resumeState":`Resume state`,"drawer.resumePending":`Waiting for condition`,"drawer.resumeReady":`Ready to resume`,"drawer.resumeReceipt":`Resume receipt`,"drawer.taskNextDeferred":`Wait for the resume condition, then reassess`,"drawer.taskNextResumeReady":`Resume condition met; awaiting lifecycle replan`,"drawer.taskStatusCompleted":`Completed`,"drawer.taskStatusOpen":`Ready`,"drawer.taskSuccessor":`Create follow-up Todo`,"drawer.taskSuccessorNote":`Owner marked this blocked while waiting for more context.`,"drawer.taskSuccessorSummary":`Create follow-up Todo: {task}`,"drawer.taskSuccessorText":`Follow-up work for {task}`,"drawer.taskType":`Task type`,"drawer.topic":`Topic`,"drawer.trigger":`Trigger`,"drawer.titleAttention":`Needs you`,"drawer.titleOutput":`Output details`,"drawer.titleProposalApplied":`Execution result`,"drawer.titleProposalConfirm":`Confirm execution`,"drawer.titleSchedule":`Scheduled check`,"drawer.unconfigured":`Not configured`,"drawer.workspaceCandidates":`Available workspaces`,"files.emptySummary":`Public-safe output`,"files.empty":`No files, outputs, or verified reports yet.`,"files.loadingReports":`Loading verified milestone reports…`,"files.reportDelta":`+{added} added · {changed} changed`,"files.reportAdded":`added`,"files.reportChanged":`changed`,"files.reportGeneration":`Generation`,"files.reportLoadFailed":`Could not load verified reports`,"files.reportPublication":`Publication`,"files.title":`Files & Outputs`,"files.verifiedReport":`Verified milestone report`,"header.agentUnavailable":`Unavailable`,"header.chatRuntime":`Chat`,"header.workAgentCount":`{count} work Agents`,"header.chat":`Chat`,"header.files":`Files`,"header.goalCapabilities":`Capability settings`,"header.goalCapabilitiesDescription":`Manage overrides and inherited machine defaults.`,"header.goalDetails":`Goal details`,"header.goalDetailsDescription":`Review status, usage, repository, notifications, and sessions.`,"header.goalSettings":`Goal settings`,"header.goalSettingsDescription":`Open Goal details or capability settings`,"header.goalNavigation":`Goal navigation`,"header.goalView":`Goal view`,"header.live":`Live`,"header.manager":`LoopX Manager`,"header.managerDescription":`Your personal workspace across Goals`,"header.managerRuntime":`{profile} · {sandbox}`,"header.managerRuntimeFallback":`Configuration invalid; fell back to {profile} · {sandbox}. Repair it in Machine capabilities.`,"header.managerExecutorKindIndividual":`individual CLI login`,"header.managerExecutorKindManaged":`operator credential`,"header.managerExecutorKindRegistered":`registered endpoint`,"header.managerExecutionUnavailable":`Selected {executor} cannot start here; this channel does not fall back to an individual CLI login.`,"header.managerExecutionUnavailableCredential":`Selected {executor} needs the operator credential {credential} before this channel can start it.`,"header.managerExecutionUnavailableRuntime":`Selected {executor} cannot start here because its runtime is not installed on this machine.`,"header.managerExecutionUnavailableEffort":`Selected {executor} rejected the configured reasoning effort; set a supported effort and reload.`,"header.managerEndpointStewardDefault":`Runs {executor}, the steward channel's shipped default. Select an executor explicitly to move it.`,"header.managerOverview":`Overview`,"header.managerView":`Manager view`,"header.openGoalNavigation":`Open Goal navigation`,"header.readOnlySourceDescription":`{source} is displayed read-only through an SSH tunnel`,"header.refresh":`Refresh status`,"header.refreshDone":`Updated just now`,"header.refreshFailed":`Refresh failed`,"header.refreshing":`Refreshing`,"header.selectAgent":`Select Agent`,"header.selectChatRuntime":`Select chat runtime`,"header.tasks":`Tasks`,"header.themeBrutal":`Switch to brutal theme`,"header.themePaper":`Switch to default theme`,"home.blockingSummary":`{count} are blocking an Agent.`,"home.completedGoals":`Completed Goals`,"home.empty":`Nothing here`,"startup.goalLoading":`Loading status…`,"startup.goalError":`Could not load status`,"startup.progress":`{loaded} of {total} active Goals loaded`,"startup.partial":`Goal states are updating. Counts are incomplete.`,"startup.independent":`Other Goals remain available while this Goal loads.`,"startup.error.timeout":`The request timed out. Retry when the local service is ready.`,"startup.error.network":`The connection was interrupted. Retry to reconnect.`,"startup.error.service":`The Goal status could not be read. Retry later; if the problem continues, check the status source.`,"startup.error.access":`The status source cannot access files or runtime directories required for this Goal. Check the permissions of the account running that source, then retry.`,"startup.error.revision":`The Goal directory changed during loading. Refresh to synchronize.`,"startup.error.scope":`This Goal is no longer available in the selected source. Refresh the directory.`,"startup.error.invalid":`The status response could not be read. Refresh or check for a LoopX update.`,"startup.retry":`Retry`,"startup.retryFailed":`Retry failed Goals`,"startup.failedCount":`{count} Goals could not be loaded. Ready Goals remain available.`,"home.greeting":`Hi, I’m your LoopX Manager`,"home.history":`History`,"home.lane.needsYou":`Needs you`,"home.lane.needsYouDescription":`Waiting for your decision, authorization, or context`,"home.lane.observing":`Observing`,"home.lane.observingDescription":`Monitoring continuously and notifying you when something changes`,"home.lane.running":`Running`,"home.lane.runningDescription":`Agents are making progress and reporting back`,"home.lane.scheduled":`Scheduled`,"home.lane.scheduledDescription":`Queued until its time or prerequisite arrives`,"home.noActivity":`No activity yet`,"home.noFirstActivity":`Waiting for first activity`,"home.noCompletedGoals":`No completed Goals yet`,"home.preservedState":`State is preserved and can be resumed`,"home.stopped":`Stopped`,"home.systemHealth":`System health: {summary}`,"home.taskCount":`{count} Tasks`,"home.todayAt":`Today {time}`,"home.waitingCount":`You have {count} items to handle.`,"home.workspace":`Goal workspace`,"lark.allMessages":`All messages in this topic`,"lark.allTopicMessages":`All topic messages`,"lark.agentIngress":`Agent ingress`,"lark.agentAppPermissions":`Every selected Agent needs a Lark App that is ready for group mentions and replies.`,"lark.agentApps":`Lark App per Agent`,"lark.agentAppsDescription":`The default App is preselected. Assign a different compatible App when an Agent needs its own bot identity.`,"lark.agentAppSelection":`Lark App for {agent}`,"lark.appCreated":`App created`,"lark.appCreateFailed":`Creation failed`,"lark.appLoading":`Loading available Lark Apps…`,"lark.appPermissions":`This App can send connection messages, but lacks the bot permissions required to receive group mentions or reply automatically. Enable im:message.group_at_msg:readonly, im:message.send_as_bot, and the im.message.receive_v1 event, publish a new version, then refresh.`,"lark.appProfile":`Lark App`,"lark.apps":`Lark Apps`,"lark.autoReplyUnavailable":`Auto reply unavailable`,"lark.autoReplyReady":`Auto reply ready`,"lark.bindGoal":`Bind to Goal`,"lark.cancel":`Cancel`,"lark.cardinality":`One Lark App · many Goals · one isolated route per Agent`,"lark.capture":`Capture`,"lark.captureAddressed":`Only messages that mention or reply to the App`,"lark.captureAll":`All messages in this Goal topic`,"lark.captureScope":`Capture scope`,"lark.captureScopeDescription":`Controls which Topic messages enter LoopX without expanding Agent permissions.`,"lark.closeConnection":`Close connection dialog`,"lark.closeCreate":`Close create dialog`,"lark.closeSettings":`Close Lark settings`,"lark.connect":`Connect`,"lark.connectAllAgents":`Connect every registered Agent`,"lark.connectAllAgentsAction":`Connect {count} Agents`,"lark.connectAllAgentsDescription":`Create {count} isolated Agent Topics in one guided action. Send requests inside the matching Topic; each Agent keeps its own route and inbox.`,"lark.connectApp":`Connect Lark App`,"lark.connection":`Connection`,"lark.connections":`Connections`,"lark.configuration":`Lark configuration`,"lark.continueFeishu":`Continue in Feishu`,"lark.createAutomatically":`Create Goal topic automatically`,"lark.createAutomaticallyDescription":`A dedicated, Agent-labelled Topic will be created for every selected Agent.`,"lark.defaultAgentAppDescription":`Used to find the target group and as the default for every selected Agent. Per-Agent choices below override it.`,"lark.description":`Manage reusable Lark Apps and connect group chats to Goals through dedicated topics.`,"lark.editConnection":`Edit Lark Connection`,"lark.goalConnections":`{count} Goal connections`,"lark.goalTopicConnections":`Lark Goal Topic connections`,"lark.groupChat":`Group chat`,"lark.groupEmpty":`This bot has not joined a group that can be connected. Add it to a Feishu group first, then return to refresh or search.`,"lark.groupLoading":`Reading groups joined by this bot…`,"lark.groupSearch":`Search groups joined by this bot`,"lark.historyPermission":`Group-history permission (separate capability)`,"lark.health.contextCaptured":`Group context captured`,"lark.health.contextCapturedDetail":`The message is retained as non-authoritative context. It did not start or steer a Manager turn; send a direct @ mention or verified reply when action is required.`,"lark.health.eventProcessed":`{events} events processed, {replies} replies sent.`,"lark.health.eventUnverified":`Event subscription needs verification`,"lark.health.eventUnverifiedDetail":`The provider listener is ready, but no event has arrived. Enable im.message.receive_v1 and group mention permissions, publish a new version, then send a new @ mention inside this Agent Topic. Group-level messages fail closed when multiple Agent routes exist.`,"lark.health.ignoredSelf":`The bot’s own message was ignored to prevent duplicate replies.`,"lark.health.invalidRouting":`Invalid routing configuration`,"lark.health.invalidRoutingDetail":`The connection was safely disabled. Select a processing mode again and save.`,"lark.health.lastStatus":`Latest event status: {status}`,"lark.health.listening":`Listening`,"lark.health.messageContextPermission":`Message permission required`,"lark.health.messageContextPermissionDetail":`A message event arrived, but group context could not be read. Publish and authorize group message read access for this App.`,"lark.health.notAddressed":`Latest message did not directly @ the bot`,"lark.health.notAddressedDetail":`Listening is healthy. This connection only responds to direct @ mentions or replies to the bot.`,"lark.health.notStarted":`Listener not started`,"lark.health.notStartedDetail":`Refresh the connection or restart LoopX, then try again.`,"lark.health.processingFailed":`Message processing failed`,"lark.health.processingFailedDetail":`The message event arrived, but Agent processing failed. Review local diagnostics and retry.`,"lark.health.queued":`Queued in the Agent inbox`,"lark.health.queuedDetail":`The message will be processed asynchronously by {agent} without starting a general Chat Session.`,"lark.health.sourceDisconnected":`Event connection disconnected`,"lark.health.sourceDisconnectedDetail":`The event consumer exited unexpectedly. Check that the app profile uses Feishu for Feishu apps or Lark for international Lark, then inspect connection and subscription errors. LoopX is retrying; successful history queries do not prove live delivery.`,"lark.health.retrying":`Retrying listener`,"lark.health.retryingDetail":`Event listening was interrupted and LoopX is retrying automatically.`,"lark.health.routeAmbiguous":`Message matches multiple Goals`,"lark.health.routeAmbiguousDetail":`The same bot and group have multiple full-group capture connections. Use a separate bot for each Agent or keep only one full-group connection.`,"lark.health.routeMismatch":`Message did not match this Goal Topic`,"lark.health.routeMismatchDetail":`The event came from another group or Topic. Reconnect this Goal to the correct group, then send a new @ mention.`,"lark.health.routeUnavailable":`Message cannot be routed to the Goal`,"lark.health.routeUnavailableDetail":`Connection data is incomplete. Reconnect this Goal, then send a new @ mention.`,"lark.health.starting":`Starting`,"lark.health.startingDetail":`LoopX is starting message event listening for this App.`,"lark.health.unavailable":`Auto reply unavailable`,"lark.health.waiting":`Waiting`,"lark.incomingMessages":`Incoming messages`,"lark.ingressAsync":`Async inbox`,"lark.ingressAsyncDescription":`Write to the Agent private inbox for a later explicit drain.`,"lark.editPreservesIdentity":`Saving preserves this App, group and Topic. Old connections upgrade to the Agent inbox by default.`,"lark.conversationKind":`Connection purpose`,"lark.managerConversation":`Manager · live conversation`,"lark.workerConversation":`Worker Agent · background tasks`,"lark.managerConversationDescription":`The built-in manager responds as you chat and delegates long-running work to background Agents. Group and private conversations keep separate histories.`,"lark.ingressLegacy":`Upgrade available`,"lark.ingressLegacyDescription":`Save this connection to upgrade to the Agent inbox. Existing messages remain in the same Topic.`,"lark.ingressQueue":`Queuing`,"lark.ingressQueueDescription":`Enter the same Agent Session's bounded FIFO queue and run after the current Turn.`,"lark.ingressSteering":`Steering`,"lark.ingressSteeringDescription":`Deliver to the active Turn and reject safely when no exact active Turn exists.`,"lark.loading":`Loading Lark configuration…`,"lark.management":`Lark management`,"lark.openEventSettings":`Open Feishu event settings`,"lark.mentions":`Mentions`,"lark.mentionsOnly":`Mentions only`,"lark.needsMessagePermissions":`Needs message permissions`,"lark.needsSetup":`Needs setup`,"lark.newApp":`New Lark App`,"lark.noAgentConfigured":`No Agent configured`,"lark.noConnections":`No matching connections.`,"lark.noProfiles":`No lark-cli App profiles are available yet.`,"lark.profileName":`Profile name`,"lark.profileValidation":`Profile can contain only letters, numbers, periods, underscores, and hyphens.`,"lark.processing":`Processing`,"lark.region":`Region`,"lark.registerAnother":`+ Register another Lark App — Create through Feishu`,"lark.reopenFeishu":`Reopen Feishu`,"lark.settingsConfigure":`Configure {goal}`,"lark.settingsDisconnect":`Disconnect {goal}`,"lark.replyMode":`Reply mode`,"lark.replyModeDescription":`Replies are limited to the source Topic to prevent cross-group or cross-Goal delivery.`,"lark.reusableApps":`{count} reusable Apps`,"lark.reusableWorkspaceApp":`Reusable workspace App`,"lark.routesUnverified":`{count} Lark routes pending verification`,"lark.saveConnection":`Save connection`,"lark.searchConnections":`Search Lark connections`,"lark.searchPlaceholder":`Search Apps, groups, Goals, or topics`,"lark.setupCopy":`LoopX opens the official Feishu creation page through lark-cli. App credentials stay in the system Keychain; LoopX stores only the profile reference.`,"lark.someoneMentions":`Someone mentions the Agent`,"lark.targetAgent":`Target Agent`,"lark.targetAgentDescription":`Choose a registered Agent in this Goal. This connection delivers to one Agent; it does not broadcast or grant permissions. Steering and Queuing require that Agent's exact active Session.`,"lark.agentUnavailable":`{agent} · no longer available`,"lark.selectRegisteredAgent":`Select an available registered Agent before connecting. The previous Agent will not be replaced automatically.`,"lark.topicPreview":`Topic preview`,"lark.topicReply":`Topic reply`,"lark.trigger":`Trigger`,"lark.waitingFeishu":`Waiting for Feishu`,"lark.waitingFeishuDescription":`Complete Feishu authorization in the new window. This page updates automatically when it is ready.`,"lark.waitingLink":`Generating the official Feishu creation link…`,"lark.error.appCreate":`Lark App creation failed`,"lark.error.appRequired":`Select a Lark App profile.`,"lark.error.bind":`Connection failed`,"lark.error.bindPreview":`Connection preview failed`,"lark.error.configuration":`Could not load Lark configuration`,"lark.error.groupLookup":`Could not read groups joined by this bot. Check the bot status and try again.`,"lark.error.groupLoad":`Could not load group chats`,"lark.error.invalidApp":`The Lark App profile is unavailable or has not completed authorization.`,"lark.error.messagePermissions":`This App lacks the bot permissions required for automatic replies. Enable im:message.group_at_msg:readonly and im:message:send_as_bot, publish a new version, then refresh.`,"lark.error.provider":`The Feishu API call failed without a verified receipt. Try again later.`,"lark.error.setupPoll":`Could not read creation status`,"lark.error.setupStart":`Could not start Lark App creation`,"lark.error.cliExecutable":`The configured lark-cli was found but cannot run. Check the installation or launch arguments.`,"lark.error.cliMissing":`lark-cli was not found. Install lark-cli and restart LoopX.`,"lark.error.cliStart":`lark-cli failed to start. Check the installation and restart LoopX.`,"lark.error.disconnect":`Disconnect failed`,"notifications.autoNotify":`Send automatically when your confirmation is required`,"notifications.bind":`Bind notification group`,"notifications.bindConfirm":`Bind “{goal}” to “{target}”. LoopX will verify that the bot is in the group and send a confirmation message.`,"notifications.bindFailed":`Binding failed`,"notifications.bound":`Bound`,"notifications.confirmBind":`Confirm binding`,"notifications.description":`Send Goal changes that need your confirmation to a Feishu group. Bindings and automatic delivery use the existing channel.`,"notifications.disabled":`Disabled`,"notifications.group":`Notification group: {target}`,"notifications.loadFailed":`Could not load notification groups`,"notifications.noTargets":`No notification groups are available. Group delivery uses a private bot identity; configure one from the terminal first:`,"notifications.notBound":`Not bound`,"notifications.recent":`Latest {time}`,"notifications.sentCount":`{count} sent`,"notifications.settings":`Goal notification bindings`,"notifications.setupFailed":`Could not update settings`,"notifications.title":`Feishu group notifications`,"proposal.field.agentId":`Agent`,"proposal.field.cadence":`Frequency`,"proposal.field.completionCriteria":`Completion criteria`,"proposal.field.executionBoundary":`Execution boundary`,"proposal.field.goalId":`Goal ID`,"proposal.field.heartbeat":`Heartbeat`,"proposal.field.initialTodos":`Initial tasks`,"proposal.field.objective":`Objective`,"proposal.field.operation":`Operation`,"proposal.field.operationState":`Operation state`,"proposal.field.resultDelivery":`Result delivery`,"proposal.field.confirmationBoundary":`Confirmation boundary`,"proposal.field.expiresAt":`Expires at`,"proposal.field.permission":`Permission`,"proposal.field.reason":`Reason`,"proposal.field.stopCondition":`Stop condition`,"proposal.field.target":`Check target`,"proposal.field.timezone":`Timezone`,"proposal.field.title":`Title`,"proposal.field.workspace":`Execution workspace`,"actionReview.targetChanged":`The preview target does not match the requested Goal and operation. Generate a new preview.`,"actionReview.ready_stop":`Pausing is reversible. This validated preview can apply directly; completion still requires verified readback.`,"actionReview.resume_review":`Review before restoring automatic scheduling. Quota, gates and Todo constraints still apply.`,"actionReview.delete_review":`Review removal of this stopped Goal from the registries. Project files and history are preserved.`,"actionReview.action_review":`Review the target and impact before applying this proposal.`,"actionReview.protected_action":`This action needs explicit review. Confirmation cannot replace required authority.`,"actionReview.unknown_permission":`The permission classification is not recognized. Recheck the proposal before continuing.`,"actionReview.unknown_action":`This lifecycle operation is not recognized. Recheck the proposal before continuing.`,"actionReview.incomplete_proposal":`The preview is missing validation or an available apply transition. Generate a new preview.`,"actionReview.authority_gate":`A gate prevents execution. Resolve its requirements, then recheck the proposal.`,"actionReview.stale_proposal":`The source state changed. Generate a new preview; the previous decision no longer applies.`,"actionReview.apply_pending":`Execution is in progress. Wait for its result before retrying.`,"actionReview.readback_verified":`The action completed and its resulting state was verified.`,"actionReview.readback_unverified":`The action returned without verified readback. Completion is not confirmed; recheck the state.`,"actionReview.operation_group_confirmation":`This exact request can only be confirmed on its original card in the bound Feishu group. The Dashboard does not expose a local execution control.`,"actionReview.operation_result_delivery_pending":`The operation outcome was recorded, but the original group result card has not passed readback verification yet.`,"actionReview.apply_failed":`Execution did not complete. Check the failure and regenerate the preview before retrying.`,"actionReview.inactive_proposal":`This proposal is no longer ready to execute. Recheck it before continuing.`,"proposal.gate.default":`Host confirmation required`,"proposal.impact.default":`After confirmation, the canonical LoopX service will write the state change.`,"proposal.impact.goalCreate":`After confirmation, LoopX will create the Goal and its initial Todo, then let the selected Agent start the first run.`,"proposal.impact.lifecycleDelete":`After confirmation, this stopped Goal is removed from the source and global registries. Project files, history state, and backups are preserved.`,"proposal.impact.lifecycleResume":`After confirmation, the Goal becomes eligible for automatic scheduling and returns to Active Goals. Actual execution still follows quota, Gate, and Todo constraints.`,"proposal.impact.lifecycleStop":`After confirmation, automatic progress stops and the Goal moves to the collapsed Stopped list. History, Todos, and evidence remain available for resuming.`,"proposal.impact.protected":`This action must be completed through the protected LoopX write service.`,"proposal.impact.operation":`The exact terms are read-only here. Confirm or reject the same immutable request in the bound Feishu group; confirmation consumes one canonical claim.`,"proposal.primary.apply":`Confirm and apply`,"proposal.primary.goalCreate":`Create Goal and start first run`,"proposal.primary.lifecycleDelete":`Delete Goal`,"proposal.primary.lifecycleResume":`Resume Goal`,"proposal.primary.lifecycleStop":`Stop Goal`,"proposal.primary.todoStart":`Create task and start execution`,"proposal.primary.operationGroup":`Confirm in Feishu group`,"proposal.primary.operationResultPending":`Result card delivery pending`,"proposal.primary.operationResultVerified":`Verified result`,"proposal.resultDelivery.verified":`Verified in the original group card`,"proposal.resultDelivery.pending":`Pending verified return to the original group card`,"proposal.summary.goalCreate":`Create Goal: {title}`,"proposal.summary.heartbeat":`Set a Heartbeat for the current Goal`,"proposal.summary.lifecycleDelete":`Delete Goal: {title}`,"proposal.summary.lifecycleResume":`Resume Goal: {title}`,"proposal.summary.lifecycleStop":`Stop Goal: {title}`,"proposal.summary.monitor":`Create a scheduled check for the current Goal: {target}`,"proposal.summary.teamPlan":`Staff a {count}-lane team for {goal}`,"proposal.impact.teamPlan":`Confirming creates each ready lane's first bounded Todo through the canonical owner; a lane with a staffing gap creates nothing, no lane exists before the apply receipt returns, and a Goal or Agent change between preview and apply makes this proposal stale instead of applying drifted staffing.`,"proposal.primary.teamPlan":`Confirm and staff the lanes`,"proposal.field.laneGaps":`Unstaffed lanes`,"proposal.field.quotaEnvelope":`Quota envelope`,"proposal.teamPlan.acceptanceShort":`acceptance`,"proposal.teamPlan.gapLane":`unstaffed`,"proposal.teamPlan.laneUnstaffed":`staffing gap, no first Todo`,"proposal.workspace.current":`Current local workspace (no Repository bound)`,"proposal.workspace.named":`{workspace} (execution environment only; does not bind a repository)`,"proposal.workspaceGate.agentImpact":`Bind an Agent identity, then recheck the original action. No Goal has been written.`,"proposal.workspaceGate.agentTitle":`Bind an Agent first`,"proposal.workspaceGate.defaultSummary":`Select the Goal workspace.`,"proposal.workspaceGate.selectionImpact":`After selecting a workspace, LoopX will show the confirmation preview again. The selection itself does not write state.`,"proposal.workspaceGate.selectionTitle":`Select Goal workspace`,"projection.agentAdvancingGoal":`Agent is advancing the current Goal`,"projection.agentIdle":`Nothing needs your attention`,"projection.agentNeedsDecision":`Agent is waiting for your decision`,"projection.agentPreparingNextStep":`Agent is preparing the next step`,"projection.agentStopped":`Stopped by you; history, Todos, and evidence are preserved`,"projection.agentWaitingExternal":`Waiting for an external condition`,"projection.confirmAgentDecision":`Confirm the permission or decision the Agent needs next`,"projection.events24h":`{count} events in the last 24 hours`,"projection.firstReadOnlyAdapterCheck":`Run the first read-only adapter check and save progress`,"projection.goalVerified":`Goal state, Todos, and registration information verified`,"projection.latestRun":`Latest run`,"projection.latestValidation":`Latest validation`,"projection.nextUpdatePending":`Waiting for LoopX to update the next step`,"projection.publicSafeProjection":`Public-safe status projection`,"projection.refreshState":`Refresh LoopX status and confirm the current progress is still valid`,"projection.runEvidenceAvailable":`Run evidence is available`,"projection.runRecorded":`The latest LoopX run is recorded`,"projection.statusRefreshNeeded":`LoopX status needs to be refreshed`,"projection.todoStatusUpdated":`Todo status updated; confirming the next step`,"projection.validationRecorded":`The latest validation is recorded`,"runs.completed":`Completed`,"runs.failed":`Needs review`,"runs.interrupted":`Interrupted`,"runs.queued":`Scheduled`,"runs.ready":`Ready`,"runs.resumeFailed":`Recovery failed`,"runs.running":`Running`,"runs.unknown":`Unknown`,"runs.waiting":`Waiting`,"schedule.active":`Running`,"schedule.heartbeat":`Goal Heartbeat`,"schedule.monitor":`Scheduled & continuous task`,"schedule.paused":`Paused`,"schedule.summary":`Continuously checked under LoopX scheduling constraints`,"schedule.defaultTarget":`Check the current Goal for blockers, progress, and new outputs`,"schedule.unsupportedCalendar":`Scheduled checks do not currently support an exact weekday or time. Use a fixed interval such as “Every 30 minutes,” “Every 2 hours,” or “Daily.” The draft was preserved and no confirmation preview was created.`,"source.add":`Add source`,"source.addConfigured":`Add read-only source`,"source.addMethod":`Source setup method`,"source.addSsh":`Add SSH source`,"source.closeForm":`Close source form`,"source.configured":`Configured SSH`,"source.configuredCount":`Local SSH Hosts · {count}`,"source.configuredGroup":`Configured SSH Hosts · {count} (select to add)`,"source.connected":`Connected`,"source.connecting":`Connecting`,"source.controlPlane":`Control plane source`,"source.copy":`Copy`,"source.copyCommand":`Copy SSH tunnel command`,"source.copyError":`Could not copy the command. Copy it manually below.`,"source.copied":`Copied`,"source.description":`All explicit Hosts are loaded, including Include files. Wildcards are not listed. Run the command first; LoopX never reads SSH keys or configuration details.`,"source.host":`Local SSH Host`,"source.hostEmpty":`No explicit SSH Hosts are available in ~/.ssh/config.`,"source.hostLoadError":`Could not read local SSH Hosts.`,"source.hostPlaceholder":`Enter or search for a Host`,"source.invalid":`The SSH source settings are invalid.`,"source.loadingHosts":`Loading…`,"source.localInteractive":`Local interactive`,"source.localPort":`Local port`,"source.manual":`Manual URL`,"source.manualDescription":`Remote sources always remain read-only projections and never inherit local write permissions.`,"source.name":`Name`,"source.namePlaceholder":`Remote development machine`,"source.notAvailable":`Unavailable`,"source.readOnly":`SSH tunnel · read only`,"source.readOnlyNoticeDescription":`You can view Goals, Tasks, evidence, and run status. Writes, guidance, and Agent sessions remain on the source host.`,"source.readOnlyNoticeTitle":`Remote read-only projection`,"source.readOnlyWriteError":`Remote SSH tunnel sources are read-only projections and cannot perform control-plane writes.`,"source.refreshHosts":`Reload SSH Hosts`,"source.remove":`Remove source {source}`,"source.removeCurrent":`Remove current source`,"source.select":`Select control plane source`,"source.selectHost":`Select a configured SSH Host.`,"source.statusUrl":`Local forwarded URL`,"source.tunnelCommandPending":`Select a Host to generate the tunnel command`,"machine.absent":`Not configured`,"machine.action.create":`Create machine policy`,"machine.action.delete":`Remove machine policy`,"machine.action.unchanged":`No write required`,"machine.action.update":`Update machine policy`,"machine.applied":`Machine policy applied and read back successfully.`,"machine.applyError":`Machine policy could not be applied.`,"machine.applyPreview":`Apply reviewed preview`,"machine.changedNamespaces":`Changed namespaces`,"machine.capabilityCatalog":`Machine capability catalog`,"machine.capabilityEmpty":`No machine-configurable capabilities are registered.`,"machine.configured":`Configured`,"machine.confirmRollback":`Confirm rollback`,"machine.currentRevision":`Current revision`,"machine.currentValue":`Current machine value`,"machine.description":`Browse the same capability catalog as Goal settings. Configure supported machine defaults here; Goal-only capabilities are labeled explicitly.`,"capabilities.rawJson":`Advanced: raw JSON`,"machine.goalOnly":`This capability currently supports Goal configuration only. Open a Goal’s capability settings to configure it; no machine-wide default is applied.`,"machine.desiredRevision":`Desired revision`,"machine.editorUnavailable":`No editor is installed for this namespace`,"machine.editorUnavailableDescription":`The namespace remains visible in the registry. Install or upgrade its Dashboard editor before changing it.`,"machine.editorMode":`Editor mode`,"machine.liveDefault":`Live default; Goal override wins`,"machine.liveDefaultDescription":`Goals without an explicit override read the current machine policy at the capability’s next decision point. Changes and removal affect those existing Goals immediately; an explicit Goal override stays pinned.`,"machine.credentialTitle":`Operator model credential`,"machine.credentialDescription":`The key and endpoint the steward channel and the managed host authenticate with on this machine. The key is stored in its own owner-only file, never in the machine configuration that is projected here, and it is never read back — only its fingerprint is.`,"machine.credentialApiKey":`API key`,"machine.credentialApiKeyPlaceholder":`Paste a key to store it; leave blank to keep the stored one`,"machine.credentialBaseUrl":`Endpoint base URL`,"machine.credentialBaseUrlPlaceholder":`https://endpoint.example/v1 (blank keeps the endpoint default)`,"machine.credentialStore":`Store credential`,"machine.credentialClearKey":`Clear stored key`,"machine.credentialClearUrl":`Clear stored endpoint`,"machine.credentialConfigured":`configured`,"machine.credentialAbsent":`not configured`,"machine.credentialInvalid":`unreadable — repair required`,"machine.credentialSourceMachine":`this machine's stored credential`,"machine.credentialSourceEnvironment":`the service environment`,"machine.credentialSourceUnset":`no source`,"machine.credentialFingerprint":`fingerprint`,"machine.credentialStored":`Credential stored. The next turn uses it; no restart is needed.`,"machine.credentialCleared":`Stored credential cleared.`,"machine.credentialError":`The credential could not be stored.`,"machine.credentialBoundary":`Storing a credential grants no authority: it does not select an executor, model, or reasoning effort.`,"machine.genericNamespaceDescription":`Edit this registered namespace as JSON. LoopX validates it with the capability-owned schema before previewing any write.`,"machine.jsonConfiguration":`Namespace configuration (JSON)`,"machine.jsonConfigurationHelp":`Only this namespace is updated. Other machine configuration is preserved, and Apply remains locked to the reviewed preview revision.`,"machine.jsonEditor":`JSON`,"machine.editJson":`Edit JSON`,"capabilities.jsonConfiguration":`Goal configuration (JSON)`,"capabilities.jsonHelp":`Edit registered fields for this Goal. Changes require a new preview before applying.`,"capabilities.jsonInvalid":`Enter a valid JSON object using only registered editable fields.`,"machine.backToForm":`Back to form`,"machine.jsonInvalid":`Enter one valid JSON object before previewing changes.`,"machine.loadError":`Machine configuration could not be loaded.`,"machine.invalidStoredConfiguration":`Stored machine configuration needs repair`,"machine.invalidStoredConfigurationDescription":`Stored values are hidden because they no longer match the installed contract. Review the affected capability, then Preview and Apply its replacement; unrelated namespaces remain unchanged.`,"machine.machinePolicy":`Machine policy`,"machine.namespaceCount":`Registered namespaces`,"machine.namespaces":`Configuration namespaces`,"machine.periodicReport":`Periodic reports`,"machine.periodicReportDescription":`Default report policy for every Goal without an explicit override. Goal scheduling and delivery consume the effective configuration.`,"machine.periodicReportActivation":`Enabled means automatic delivery at validated stage boundaries`,"machine.periodicReportActivationDescription":`This is not a weekly timer. When LoopX validates a Goal stage completion, an Agent prepares and freezes the report, then automatically delivers it through the configured Goal Channel. The enabled subscription is standing delivery authority; failures and route drift stop closed for repair.`,"machine.changeQualityActivation":`Qualification is a quality gate, not new authority`,"machine.changeQualityActivationDescription":`Goals that inherit this policy qualify their exact final diff. safe_fix allows at most one bounded fix pass inside existing write authority; this setting never grants file, permission, or merge authority.`,"machine.replanCadenceActivation":`Review cadence changes timing, not execution authority`,"machine.replanCadenceActivationDescription":`Goals without an explicit override read this threshold before the next review decision. It does not create Turns, spend quota, or grant authority.`,"machine.preview":`Review exact machine change`,"machine.previewChanges":`Preview changes`,"machine.previewError":`A machine-policy preview could not be created.`,"machine.previewLocked":`Apply is locked to this exact revision. If machine state changes, LoopX requires a new preview.`,"machine.previewRollback":`Preview rollback`,"machine.previewRemoval":`Preview removal`,"machine.profilePreset":`Profile preset`,"machine.profilePresetHelp":`A capability-owned preset, such as weekly-progress.`,"machine.registry":`Typed registry`,"machine.requiredFields":`Enable requires a profile preset, Goal Channel route, and valid timezone.`,"machine.revision":`Machine revision`,"machine.revisionLockedReady":`All changes require a preview and apply only while that exact machine revision remains current.`,"machine.rollbackAvailable":`Rollback is available for the last apply`,"machine.rollbackDescription":`Preview the stored prior revision before restoring it.`,"machine.rollbackError":`The rollback could not be completed.`,"machine.rollbackPreviewDescription":`The prior revision is ready to restore. Confirm to apply this rollback.`,"machine.rolledBack":`The prior machine policy was restored and verified.`,"machine.removed":`Machine policy removed and the resulting configuration read back successfully.`,"machine.routeRef":`Goal Channel route`,"machine.routeRefHelp":`Use a public route alias; credentials and provider identifiers never enter this form.`,"machine.timezone":`Timezone`,"machine.timezoneHelp":`Use an IANA timezone, for example Asia/Shanghai.`,"machine.title":`Machine configuration`,"machine.unchanged":`Machine policy already matches this preview; nothing was written.`,"machine.visualEditor":`Guided`,"capabilities.atomicOverride":`Goal override is atomic`,"capabilities.atomicOverrideDescription":`A complete Goal value wins over the machine default. LoopX never mixes individual fields across scopes.`,"capabilities.applyFailed":`Goal capability changes were not applied.`,"capabilities.applyPreview":`Apply preview`,"capabilities.catalog":`Goal capability catalog`,"capabilities.chooseGoal":`Choose a Goal before inspecting its capabilities.`,"capabilities.defaultValue":`Declared default`,"capabilities.description":`Inspect the capabilities available to this Goal and the exact scope of each setting.`,"capabilities.editorPrepared":`Typed editor contract available`,"capabilities.effectiveSource":`Effective source`,"capabilities.empty":`No capability descriptors are available for this Goal.`,"capabilities.fields":`Registered fields`,"capabilities.goalPolicy":`Goal capability policy`,"capabilities.goalScope":`Goal`,"capabilities.goalValue":`Current Goal value`,"capabilities.loadFailed":`Could not load Goal capabilities`,"capabilities.larkInboxNotificationDescription":`This switch controls automatic group messages for human gates. Incoming Lark events remain available when it is off.`,"capabilities.larkInboxNotificationSetting":`Human-gate group notifications`,"capabilities.loading":`Loading Goal capabilities…`,"capabilities.machineOnly":`This capability is configured only at machine scope.`,"capabilities.machineValue":`Live machine default`,"capabilities.machineScope":`Machine`,"capabilities.previewOnly":`Inspection is live. Goal writes remain unavailable until the revision-locked preview and apply path is connected.`,"capabilities.preview":`Revision-locked preview`,"capabilities.previewChanges":`Preview changes`,"capabilities.restoreInheritance":`Restore machine-default inheritance`,"capabilities.previewFailed":`Could not preview Goal capability changes.`,"capabilities.previewLocked":`Apply will re-check this exact plan revision and reject stale changes.`,"capabilities.partialWrite":`Goal value saved; shared projection needs reconciliation`,"capabilities.partialWriteDescription":`The source Goal configuration was written and read back. Its shared runtime projection did not synchronize, so do not submit the change again.`,"capabilities.refreshSource":`Refresh source value`,"capabilities.readOnly":`Read-only capability`,"capabilities.revisionLockedReady":`Changes require a preview and are applied only when its exact revision is still current.`,"capabilities.retry":`Retry`,"capabilities.source.capability_default":`Capability default`,"capabilities.source.goal_override":`Goal override`,"capabilities.source.machine_default":`Live machine default`,"capabilities.source.not_configured":`Not configured`,"capabilities.title":`Goal capabilities`,"settings.close":`Close settings`,"settings.appearance":`Appearance`,"settings.appearanceDescription":`Manage workspace display preferences in this browser.`,"settings.appearanceTabDescription":`Theme and display preferences`,"settings.capabilitiesTabDescription":`Capability overrides for this Goal`,"settings.back":`Back to workspace`,"settings.categories":`Settings categories`,"settings.description":`Manage workspace preferences and integrations.`,"settings.eyebrow":`Workspace preferences`,"settings.general":`General`,"settings.goalConnections":`Goal connections`,"settings.language":`Language`,"settings.modelProvider":`Model provider`,"settings.globalCapabilities":`Global capabilities`,"settings.languageDescription":`Choose the language used by the LoopX desktop workspace.`,"settings.languageEnglishDescription":`Use English for navigation, settings, and workspace controls.`,"settings.languageEnglish":`English`,"settings.languageSimplifiedChineseDescription":`Use Simplified Chinese for navigation, settings, and workspace controls.`,"settings.languageSimplifiedChinese":`Simplified Chinese`,"settings.languageStoredLocally":`This preference is stored only on this device.`,"settings.languageTabDescription":`Interface language for this device`,"settings.larkTabDescription":`Apps, group chats, and Goal Topic connections`,"settings.machineTabDescription":`Typed defaults shared by capabilities on this machine`,"settings.notifications":`Notifications`,"settings.open":`Settings`,"settings.themeDefault":`Paper`,"settings.themeDefaultDescription":`Calm and lightweight for long-running work.`,"settings.themeDescription":`Choose the workspace visual style. This preference is stored in the current browser.`,"settings.themeHighContrast":`High contrast`,"settings.themeHighContrastDescription":`Stronger borders and more prominent state blocks.`,"settings.themeLoopx":`LoopX standard`,"settings.themeLoopxDescription":`Precise monochrome surfaces, Geist type, and quiet hairline structure.`,"settings.title":`Settings`,"settings.workspaceDisplay":`Workspace display`,"settings.workspaceTheme":`Workspace theme`,"session.closeRecord":`Exit run record`,"session.details":`Session details`,"session.record":`Execution Session · Run record`,"session.recordDescription":`The timeline now shows messages and Turn records from this Session.`,"sidebar.createGoal":`Create Goal`,"sidebar.delete":`Delete`,"sidebar.deleteGoal":`Delete Goal`,"sidebar.manager":`LoopX Manager`,"sidebar.notifications":`Settings`,"sidebar.owner":`Personal workspace`,"sidebar.product":`Personal Agent workspace`,"sidebar.resume":`Resume`,"sidebar.resumeGoal":`Resume Goal`,"sidebar.stop":`Stop`,"tasks.historyLoading":`Loading history…`,"tasks.historyError":`History could not be loaded.`,"tasks.historyExpired":`History snapshot expired. Reload to continue.`,"tasks.historyRetry":`Reload`,"tasks.historyEnd":`End of completed history`,"tasks.historyMore":`Load more`,"tasks.historyLocalOnly":`Open this machine’s Dashboard to browse full history.`,"sidebar.sortGoals":`Reorder Goals`,"sidebar.dragGoal":`Drag to reorder, or use Reorder Goals`,"sidebar.moveUp":`Move {goal} up`,"sidebar.moveDown":`Move {goal} down`,"sidebar.goalMoved":`{goal} moved to position {position}`,"sidebar.orderNotSaved":`Order changed for this visit; browser storage is unavailable.`,"sidebar.stopGoal":`Stop Goal`,"sidebar.stopped":`Stopped`,"sidebar.stoppedLoading":`Loading stopped Goals`,"sidebar.stoppedLoadFailed":`Stopped Goals could not be loaded. Active Goals remain available.`,"sidebar.retryStopped":`Retry`,"state.completed":`Completed`,"state.needsRepair":`Needs repair`,"state.needsYou":`Needs you`,"state.quiet":`Quiet`,"state.running":`Running`,"state.stopped":`Stopped`,"state.waiting":`Waiting`,"tasks.blocked":`Blocked`,"tasks.agentLane":`Work Agent`,"tasks.agentLaneDescription":`Filter this Goal's projected work lanes`,"tasks.agentLaneFilter":`Filter by work Agent`,"tasks.allAgentLanes":`All Agents ({count})`,"tasks.chatAgentReplied":`Agent replied`,"tasks.chatPending":`Sent to Agent`,"tasks.chatPendingDescription":`Processing. Tasks update only after a task operation is confirmed.`,"tasks.chatRecent":`Recent conversation`,"tasks.chatUnchangedDescription":`This conversation did not directly change Tasks. Convert the reply to a Task draft and confirm it when execution is needed.`,"tasks.chatViewReply":`View reply`,"tasks.convertToTask":`Convert to Task`,"tasks.completed":`Completed`,"runs.discoveryPartial":`Some execution details are unavailable. Reconnecting; task summaries are not live execution status.`,"runs.discoveryOffline":`Execution service unavailable. Reconnecting; retained task summaries may be stale.`,"files.openConversation":`Go to conversation`,"files.exportSummary":`Export summary`,"tasks.viewDescription":`Decisions first, then work and recent completions`,"tasks.viewLabel":`Task view`,"tasks.listView":`List`,"tasks.boardView":`Board`,"tasks.completedSummary":`{count} tasks completed. Recent details are projected by the control plane when needed.`,"tasks.emptyCompleted":`No completed tasks yet.`,"tasks.emptyConfirm":`No tasks waiting for confirmation.`,"tasks.emptyRunning":`No queued or running tasks.`,"tasks.emptySchedules":`No scheduled tasks.`,"tasks.emptyGoal":`This Goal has no tasks yet. Describe the next step below and LoopX will show a confirmation preview first.`,"tasks.markComplete":`Mark complete: {name}`,"tasks.moreActions":`More actions: {name}`,"tasks.openExecution":`View execution: {name}`,"tasks.pending":`Pending`,"tasks.pendingAndRunning":`Queued / Running`,"tasks.scheduled":`Scheduled & continuous`,"tasks.sessionError":`Session issue`,"tasks.waiting":`Queued`,"tasks.waitingAge":`Waiting {age}`,"tasks.viewExecution":`View execution`,"tasks.viewResult":`View result`,"time.days":`{count} days`,"time.hours":`{count} hours`,"timeline.emptyGoal":`This Goal has no new activity`,"timeline.emptyGoalDescription":`Ask for progress or send new guidance.`,"timeline.emptyWorkspace":`Your workspace is quiet today`,"timeline.emptyWorkspaceDescription":`Describe a Goal to the LoopX Manager, or ask what deserves attention today.`,"timeline.gateHistory":`{count} historical Gates`,"timeline.pending":`Working…`,"returnDelivery.queued":`Return queued`,"returnDelivery.verifying":`Verifying delivery without resending`,"returnDelivery.delivered":`Delivered to the original audience`,"returnDelivery.reconciled":`Delivery verified after recovery`,"returnDelivery.unverified":`Delivery remains explicitly unverified`,"timeline.runCompleted":`{run}: completed`,"timeline.review":`Review`,"timeline.reviewAndConfirm":`Review and confirm`,"timeline.waitingConfirmation":`Needs your confirmation`},"zh-CN":{"acceptance.connected":`已连接`,"acceptance.mapped":`已建立项目映射`,"acceptance.refreshed":`已刷新状态`,"acceptance.inspected":`已检查适配器`,"acceptance.recorded":`已记录执行`,"acceptance.judged":`已记录反馈`,"acceptance.approved":`已记录批准`,"acceptance.ready":`已记录控制器就绪`,"acceptance.attentionSource":`当前状态`,"acceptance.visionSource":`Agent 验收条件`,"acceptance.todoSource":`任务状态`,"acceptance.runSource":`最新执行证据`,"acceptance.title":`验收观察`,"acceptance.unavailable":`验收观测不可用,Goal 是否达成仍未知。`,"acceptance.partial":`当前仅有部分观测。任务完成或缺口列表为空,都不能证明 Goal 已通过验收。`,"acceptance.gaps":`仍需补充的证据`,"acceptance.reasonUnknown":`来源未提供原因`,"acceptance.unknown":`未知`,"acceptance.required":`所需证据或条件`,"acceptance.observed":`观测时间`,"acceptance.noGaps":`现有观测中没有缺口,尚未评估完整验收条件。`,"acceptance.guards":`待处理的门禁决策`,"acceptance.noGuards":`现有观测中没有待处理的门禁决策。`,"acceptance.scope":`决策范围`,"acceptance.next":`当前状态给出的下一步`,"acceptance.historical_progress":`已记录的历史进展`,"acceptance.historical":`历史生命周期记录不授予权限,也不代表通过验收。`,"acceptance.missing":`未获取的来源:`,"acceptance.truncated":`仅展示前 12 条观测。`,"common.actions":`操作`,"common.agent":`Agent`,"common.allMessages":`所有消息`,"common.cancel":`取消`,"common.close":`关闭`,"common.closeActionReceipt":`关闭操作回执`,"common.confirm":`确认`,"common.export":`导出`,"common.failed":`失败`,"common.goal":`Goal`,"common.loading":`加载中…`,"common.none":`无`,"common.off":`关闭`,"common.on":`开启`,"common.open":`打开`,"common.owner":`Owner`,"common.readOnly":`只读`,"common.recently":`刚刚`,"common.status":`状态`,"common.task":`Task`,"common.you":`你`,"common.waiting":`等待中`,"composer.addImage":`添加图片`,"composer.agentProgress":`向 Agent 获取进度报告`,"composer.agentProgressPrompt":`请给我一份当前 Goal 的进度报告:已完成、执行中、阻塞和下一步。`,"composer.blockers":`看阻塞`,"composer.attachImageHint":`选择、粘贴或拖入图片`,"composer.clarifyDefer":`暂缓 Todo 需要可自动判断的恢复条件。请补充 todo_done:、pr_merged:[owner/repo]#、capacity_available: 或 resume_at:<带时区 RFC3339 时间>。`,"composer.clarifySingleAction":`这句话包含多个可能修改状态的操作。请一次描述一项操作,我会逐项展示确认预览。`,"composer.evidence":`查证据`,"composer.createGoal":`创建新 Goal`,"composer.createGoalDraft":`Goal 草稿`,"composer.createGoalDraftDescription":`补充内容后发送,LoopX 会先展示待确认操作。`,"composer.createGoalDraftLead":`我想创建一个长期 Goal:`,"composer.createGoalTemplate":`我想创建一个长期 Goal: +Notification: Only notify me when needed`,"composer.nextAction":`Ask what’s next`,"composer.nextActionPrompt":`What should I do next?`,"composer.send":`Send`,"composer.sendMessage":`Send a message to LoopX`,"composer.sendMessageHint":`Send message`,"composer.sentImageAlt":`Remove image {name}`,"conversation.agentPending":`Working…`,"conversation.close":`Close conversation receipt`,"conversation.convertHint":`Turn the Agent’s latest reply into a Task draft`,"conversation.full":`View full conversation`,"conversation.receipt":`Conversation receipt`,"conversation.replying":`Replying`,"conversation.title":`Manager conversation`,"conversation.toTask":`Convert to Task`,"digest.away":`Runs since your previous visit`,"digest.completed":`new completions`,"digest.failed":`new failed/interrupted runs`,"digest.needsYou":`currently need confirmation`,"feedback.applying":`Running: {title}`,"feedback.cancelFailed":`Cancel failed: {error}`,"feedback.completed":`Completed: {title}`,"feedback.executionFailed":`Execution failed: {error}`,"feedback.gateRequired":`Your confirmation is required: {summary}`,"feedback.notCompleted":`Not completed: {status}`,"feedback.goalRefreshFailed":`The Goal opened, but its latest state could not be refreshed. Use Refresh to try again.`,"feedback.preparingPreview":`Preparing confirmation preview: {title}`,"feedback.previewFailed":`Could not prepare the confirmation preview: {error}`,"feedback.sendFailed":`Send failed: {error}`,"feedback.sendGenericError":`Could not send the message. Try again later.`,"feedback.stale":`State changed, so nothing was applied. Generate a new confirmation preview.`,"feedback.taskDraftCreated":`Created a Task draft from the reply. Edit and send it to review the confirmation preview.`,"goal.defaultTitle":`New personal Goal`,"goal.initialTodo":`Work toward the completion criteria: {criteria}`,"goal.objectiveBoundary":`Execution boundary: {boundary}`,"goal.objectiveCompletion":`Completion criteria: {criteria}`,"drawer.advancedDiagnostics":`Advanced diagnostics`,"drawer.agentWorking":`Agent is continuing; the record updates automatically.`,"drawer.analysis":`Analyzing`,"drawer.apply":`Confirm and apply`,"drawer.applying":`Applying…`,"drawer.attentionBlocking":`Blocking an Agent`,"drawer.attentionWaiting":`Waiting for your decision`,"drawer.autoNotify":`Human-gate auto notifications`,"drawer.branch":`Branch`,"drawer.closeDetail":`Close details and return to {context}`,"drawer.connected":`Connected`,"drawer.correctionDescription":`The message keeps the current Goal, Todo, and Agent Session context.`,"drawer.correctionLabel":`Guide {agent}`,"drawer.correctionPlaceholder":`For example: focus on permission risks first and do not commit yet…`,"drawer.correctionSend":`Send guidance`,"drawer.correctionTextarea":`Enter guidance for Goal {goal}, Agent {agent}, Run {run}`,"drawer.copyRepository":`Copy repository identity`,"drawer.copyRepositoryDone":`Repository identity copied`,"drawer.copyRepositoryError":`Copy failed. Check browser clipboard permission.`,"drawer.copyRepositorySuccess":`Copied. You can paste it into another tool.`,"drawer.cost":`Cost 24h / 7d`,"drawer.costShort":`Cost`,"drawer.durationShort":`Duration`,"drawer.period24h":`24h`,"drawer.period7d":`7d`,"drawer.tokens":`Tokens 24h / 7d`,"drawer.tokensShort":`tokens`,"drawer.usageNotMeasured":`Not measured`,"drawer.currentGoal":`Current Goal`,"attentionDetail.title":`Request details`,"attentionDetail.request":`What is requested`,"attentionDetail.decision":`Decision requested`,"attentionDetail.unknownRequest":`Not specified; review the source before deciding`,"attentionDetail.open":`Open in current projection`,"attentionDetail.closed":`Closed`,"attentionDetail.deferred":`Deferred`,"attentionDetail.superseded":`Replaced`,"attentionDetail.unknown":`Status not provided`,"attentionDetail.unavailable":`The source has not confirmed this item; refresh before acting`,"attentionDetail.unknownReason":`The source has not provided a reason.`,"attentionDetail.targetTodo":`Linked Todo to unblock`,"attentionDetail.targetAgent":`Agent named by the request`,"attentionDetail.scope":`Declared decision scope`,"attentionDetail.notProvided":`Not provided`,"attentionDetail.replacement":`Replacement Todo`,"attentionDetail.openReplacement":`Open replacement`,"attentionDetail.boundary":`Reading this detail does not resolve a gate or grant authority. Available decisions require a fresh preview.`,"drawer.decisionDefaultEvidence":`No additional public-safe evidence is attached. The next step will still show a Preview first.`,"drawer.decisionDefaultReason":`This decision affects the next step of the current Todo.`,"drawer.decisionDefer":`Decide later`,"drawer.decisionMore":`More decisions`,"drawer.decisionReject":`Reject`,"drawer.decisionReview":`Review impact and decide`,"drawer.dependencies":`Dependencies`,"drawer.detailsAndActions":`Details & actions`,"drawer.duration":`Duration 24h / 7d`,"drawer.evidence":`Evidence`,"drawer.executionHistory":`Execution history`,"drawer.executionRecord":`Run record`,"drawer.executionRecordAndResult":`Execution & result`,"drawer.explainDecision":`Explain this decision`,"drawer.gateApproveHint":`Run one command in the terminal to complete approval:`,"drawer.gateRejectHint":`Replace approve with reject at the end to decline. This notice disappears after the command runs.`,"drawer.gateRequiresHost":`Host confirmation required`,"drawer.gateRequiresHostDescription":`This page cannot approve this protected permission change. Nothing was written by your click.`,"drawer.goalAutoRun":`Automatic runs for this Goal`,"drawer.goalChanges":`Pending changes for this Goal`,"drawer.goalDetails":`Goal details`,"drawer.group":`Group`,"drawer.inspectorFull":`Switch to full screen`,"drawer.inspectorFullView":`Full-screen view`,"drawer.inspectorHalf":`Switch to half screen`,"drawer.inspectorHalfView":`Half-screen view`,"drawer.lastNotification":`Latest notification`,"drawer.larkConfigure":`Configure Lark connection`,"drawer.larkConnect":`Connect Lark App`,"drawer.larkConnection":`Lark connection`,"drawer.larkNotConfigured":`Not configured`,"drawer.larkNotConfiguredDescription":`After setup, LoopX sends a Feishu notification when this Goal needs your confirmation.`,"drawer.managerChanges":`Pending Manager changes`,"drawer.moreActions":`More actions`,"drawer.moreRunActions":`More run actions`,"drawer.nextTransition":`Next transition`,"drawer.noExecutionHistory":`No execution history yet.`,"drawer.noRun":`Execution Session has not started`,"drawer.noRunDescription":`Run records will appear here after an Agent starts execution.`,"drawer.notAssigned":`Unassigned`,"drawer.notLinked":`Not linked`,"drawer.notSet":`Not set`,"drawer.outputDetails":`Output details`,"drawer.outputRecorded":`This output is recorded on the current Goal.`,"drawer.outputSafePreview":`Public-safe output preview`,"drawer.outputRun":`Run`,"drawer.outputTodo":`Todo`,"drawer.outputs":`Outputs from this run`,"drawer.previewUnavailable":`No public-safe inline preview is available for this output.`,"drawer.priority":`Priority`,"drawer.progress":`Progress`,"drawer.proposalApplied":`Applied. LoopX state will refresh.`,"drawer.proposalAppliedUnstaffed":`Applied, with {count} lane(s) still unstaffed:`,"drawer.proposalApplyFailed":`Apply failed. No changes were written.`,"drawer.proposalApplyFailedHint":`Refresh the Goal state and regenerate. If it still fails, keep this page open and inspect advanced diagnostics.`,"drawer.proposalClose":`Close`,"drawer.proposalDefer":`Later`,"drawer.proposalDeferred":`Deferred. You can apply it later or regenerate it.`,"drawer.proposalEnterGoal":`Open new Goal`,"drawer.proposalExplainer":`After confirmation, LoopX applies this change and shows the write result. Closing or canceling changes nothing.`,"drawer.proposalRecheck":`Recheck against latest state`,"drawer.proposalRegenerate":`Retry with latest state`,"drawer.proposalRejected":`Rejected. This change will not be written.`,"drawer.proposalStale":`Source state changed. Recheck against the latest state.`,"drawer.proposalViewGoal":`View updated Goal`,"drawer.reassign":`Reassign to`,"drawer.reassignSummary":`Reassign: {task}`,"drawer.reason":`Reason`,"drawer.recoveryDescription":`Local history is preserved. Choose a recovery path.`,"drawer.recoveryFailed":`Upstream Session recovery failed`,"drawer.recoveryNewSession":`Start a new Session with context`,"drawer.recoveryRetry":`Retry recovery`,"drawer.repositoryRole":`Execution workspace`,"drawer.repository":`Repository`,"drawer.replyMode":`Reply mode`,"drawer.subagentApplied":`Applied and verified against the shared Goal state.`,"drawer.subagentAppliedRefreshFailed":`Applied and verified. The status view could not refresh; retry the page refresh later.`,"drawer.subagentApplying":`Applying and verifying shared-state readback…`,"drawer.subagentApplyFailed":`Could not apply the sub-agent setting.`,"drawer.subagentChildLimit":`Current limit`,"drawer.subagentConfirmDisable":`Confirm turning off sub-agent execution`,"drawer.subagentConfirmEnable":`Confirm turning on sub-agent execution`,"drawer.subagentCurrentBoundary":`Current task-domain restriction`,"drawer.subagentDescription":`Allows the runtime to create temporary child agents for independent tasks only after Todo, quota, capability, and write-scope gates pass. It does not force parallel work or grant durable authority.`,"drawer.subagentDisable":`Preview turning off sub-agent execution`,"drawer.subagentDisableSummary":`New child-agent execution will be disabled for this Goal. Existing Todo ownership and execution records stay unchanged.`,"drawer.subagentDomainInvalid":`The selected task-domain restriction is invalid.`,"drawer.subagentDomainTodoCount":`{count} matching open Todos`,"drawer.subagentDomains":`Task-domain restriction (optional)`,"drawer.subagentDomainsEmpty":`No open advancement Todo declares task_domain. Leave this empty to keep child execution unrestricted by task domain.`,"drawer.subagentDomainsHint":`Leave every option clear to apply no task-domain filter. Selecting domains admits only matching typed Todos; all other execution gates still apply.`,"drawer.subagentDomainsUnrestricted":`No task-domain restriction`,"drawer.subagentEnable":`Preview turning on sub-agent execution`,"drawer.subagentLabel":`Per-Goal execution boundary`,"drawer.subagentModel":`Child model`,"drawer.subagentEffort":`Child reasoning effort`,"drawer.subagentModelDefault":`Host default`,"drawer.subagentLunaPreset":`Use Luna / max`,"drawer.subagentClearModel":`Clear model preference`,"drawer.subagentModelHint":`Use Preview configuration update to save this preference. It can be saved while execution is off; host support is checked at launch.`,"drawer.subagentModelRequired":`Choose a child model before setting reasoning effort.`,"drawer.subagentMaxChildren":`Maximum child agents`,"drawer.subagentNoChange":`The current Goal already matches this setting; nothing was written.`,"drawer.subagentPending":`Pending confirmation`,"drawer.subagentPreviewBoundary":`Preview configuration update`,"drawer.subagentPreviewFailed":`Could not create the sub-agent setting preview.`,"drawer.subagentPreviewing":`Checking the latest Goal state…`,"drawer.subagentPreviewReady":`Preview locked. Confirm to apply this Goal setting.`,"drawer.subagentPreviewSummary":`Allow up to {count} child agents. Task-domain restriction: {domains}.`,"drawer.subagentRemoteReadOnly":`This source is read only. Open the Goal on its host to change the setting.`,"drawer.subagentTitle":`Adaptive sub-agent execution`,"drawer.remoteDetailsDescription":`SSH sources expose public-safe status only and do not read connection settings from the source host.`,"drawer.remoteDetailsUnavailable":`Remote details are not projected`,"drawer.resumeNo":`No`,"drawer.resumeYes":`Yes`,"drawer.runDetails":`Execution Session`,"drawer.runInterrupt":`Interrupt this run`,"drawer.runLatest":`View latest execution`,"drawer.runNewSession":`Start new Session`,"drawer.runCloseSession":`Close Session`,"drawer.runRecordEmpty":`No run record yet. The Agent has not started this execution. Check waiting conditions or resume the Session under Details & actions.`,"drawer.runRecordProjected":`No step-by-step record is available. LoopX read {completed}/{total} projected steps{outputs}; inspect the Session under Details & actions.`,"drawer.runRecordProjectedOutputs":` and {count} outputs`,"drawer.runRoleAssistant":`Completed`,"drawer.runRoleSystem":`Needs review`,"drawer.runRoleUser":`Task received`,"drawer.runView":`Session views`,"drawer.scheduleAdd":`Add scheduled check`,"drawer.scheduleDefaultNotification":`Notify only when you are needed`,"drawer.scheduleDefaultStop":`Goal completes or owner stops it`,"drawer.scheduleDefaultTarget":`Wake according to this Goal’s LoopX schedule.`,"drawer.scheduleEdit":`Change to every 2 hours`,"drawer.scheduleLast":`Last run`,"drawer.scheduleLocalTimezone":`Local timezone`,"drawer.scheduleNext":`Next run`,"drawer.scheduleNeverRun":`Not run yet`,"drawer.scheduleNotification":`Notification`,"drawer.schedulePause":`Pause`,"drawer.schedulePending":`Waiting for schedule`,"drawer.scheduleResume":`Resume`,"drawer.scheduleRunNow":`Run now`,"drawer.scheduleStop":`Stop {kind}`,"drawer.scheduleStopCondition":`Stop condition`,"drawer.scheduleTimezone":`Timezone`,"drawer.sessionRecoverable":`Resumable`,"drawer.sessionStatus":`Session status`,"drawer.setupHeartbeat":`Set up Heartbeat`,"drawer.taskActions":`Pending Todo actions`,"drawer.taskAdvancement":`Advancement task`,"drawer.taskBlock":`Mark blocked`,"drawer.taskComplete":`Mark complete`,"drawer.taskCompletedNote":`This task is retained as a read-only record.`,"drawer.taskCompletedTitle":`Task completed`,"drawer.taskDefer":`Defer`,"drawer.taskDeferCondition":`Todo defer resume condition`,"drawer.taskDeferInvalid":`Unsupported condition format; use one of the deterministic conditions below.`,"drawer.taskDeferPlaceholder":`For example, resume_at:2026-09-14T09:00:00+08:00`,"drawer.taskDeferReview":`Review defer`,"drawer.taskDeferSupported":`Supports todo_done, pr_merged, capacity_available, and timezone-aware resume_at conditions.`,"drawer.taskDeferUntil":`Defer until`,"drawer.taskDetails":`Todo details`,"drawer.taskInfo":`Task information`,"drawer.taskManage":`Manage task`,"drawer.taskNextCompleted":`Create a follow-up task`,"drawer.taskNextOpen":`Advance or update status`,"drawer.taskOrdinary":`Task`,"drawer.taskStatusBlocked":`Blocked`,"drawer.taskStatusDeferred":`Deferred`,"drawer.resumeWhen":`Resume condition`,"drawer.resumeState":`Resume state`,"drawer.resumePending":`Waiting for condition`,"drawer.resumeReady":`Ready to resume`,"drawer.resumeReceipt":`Resume receipt`,"drawer.taskNextDeferred":`Wait for the resume condition, then reassess`,"drawer.taskNextResumeReady":`Resume condition met; awaiting lifecycle replan`,"drawer.taskStatusCompleted":`Completed`,"drawer.taskStatusOpen":`Ready`,"drawer.taskSuccessor":`Create follow-up Todo`,"drawer.taskSuccessorNote":`Owner marked this blocked while waiting for more context.`,"drawer.taskSuccessorSummary":`Create follow-up Todo: {task}`,"drawer.taskSuccessorText":`Follow-up work for {task}`,"drawer.taskType":`Task type`,"drawer.topic":`Topic`,"drawer.trigger":`Trigger`,"drawer.titleAttention":`Needs you`,"drawer.titleOutput":`Output details`,"drawer.titleProposalApplied":`Execution result`,"drawer.titleProposalConfirm":`Confirm execution`,"drawer.titleSchedule":`Scheduled check`,"drawer.unconfigured":`Not configured`,"drawer.workspaceCandidates":`Available workspaces`,"files.emptySummary":`Public-safe output`,"files.empty":`No files, outputs, or verified reports yet.`,"files.loadingReports":`Loading verified milestone reports…`,"files.reportDelta":`+{added} added · {changed} changed`,"files.reportAdded":`added`,"files.reportChanged":`changed`,"files.reportGeneration":`Generation`,"files.reportLoadFailed":`Could not load verified reports`,"files.reportPublication":`Publication`,"files.title":`Files & Outputs`,"files.verifiedReport":`Verified milestone report`,"header.agentUnavailable":`Unavailable`,"header.chatRuntime":`Chat`,"header.workAgentCount":`{count} work Agents`,"header.chat":`Chat`,"header.files":`Files`,"header.goalCapabilities":`Capability settings`,"header.goalCapabilitiesDescription":`Manage overrides and inherited machine defaults.`,"header.goalDetails":`Goal details`,"header.goalDetailsDescription":`Review status, usage, repository, notifications, and sessions.`,"header.goalSettings":`Goal settings`,"header.goalSettingsDescription":`Open Goal details or capability settings`,"header.goalNavigation":`Goal navigation`,"header.goalView":`Goal view`,"header.live":`Live`,"header.manager":`LoopX Manager`,"header.managerDescription":`Your personal workspace across Goals`,"header.managerRuntime":`{profile} · {sandbox}`,"header.managerRuntimeFallback":`Configuration invalid; fell back to {profile} · {sandbox}. Repair it in Machine capabilities.`,"header.managerExecutorKindIndividual":`individual CLI login`,"header.managerExecutorKindManaged":`operator credential`,"header.managerExecutorKindRegistered":`registered endpoint`,"header.managerExecutionUnavailable":`Selected {executor} cannot start here; this channel does not fall back to an individual CLI login.`,"header.managerExecutionUnavailableCredential":`Selected {executor} needs the operator credential {credential} before this channel can start it.`,"header.managerExecutionUnavailableRuntime":`Selected {executor} cannot start here because its runtime is not installed on this machine.`,"header.managerExecutionUnavailableEffort":`Selected {executor} rejected the configured reasoning effort; set a supported effort and reload.`,"header.managerEndpointStewardDefault":`Runs {executor}, the steward channel's shipped default. Select an executor explicitly to move it.`,"header.managerOverview":`Overview`,"header.managerView":`Manager view`,"header.openGoalNavigation":`Open Goal navigation`,"header.readOnlySourceDescription":`{source} is displayed read-only through an SSH tunnel`,"header.refresh":`Refresh status`,"header.refreshDone":`Updated just now`,"header.refreshFailed":`Refresh failed`,"header.refreshing":`Refreshing`,"header.selectAgent":`Select Agent`,"header.selectChatRuntime":`Select chat runtime`,"header.tasks":`Tasks`,"header.themeBrutal":`Switch to brutal theme`,"header.themePaper":`Switch to default theme`,"home.blockingSummary":`{count} are blocking an Agent.`,"home.completedGoals":`Completed Goals`,"home.empty":`Nothing here`,"startup.goalLoading":`Loading status…`,"startup.goalError":`Could not load status`,"startup.progress":`{loaded} of {total} active Goals loaded`,"startup.partial":`Goal states are updating. Counts are incomplete.`,"startup.independent":`Other Goals remain available while this Goal loads.`,"startup.error.timeout":`The request timed out. Retry when the local service is ready.`,"startup.error.network":`The connection was interrupted. Retry to reconnect.`,"startup.error.service":`The Goal status could not be read. Retry later; if the problem continues, check the status source.`,"startup.error.access":`The status source cannot access files or runtime directories required for this Goal. Check the permissions of the account running that source, then retry.`,"startup.error.revision":`The Goal directory changed during loading. Refresh to synchronize.`,"startup.error.scope":`This Goal is no longer available in the selected source. Refresh the directory.`,"startup.error.invalid":`The status response could not be read. Refresh or check for a LoopX update.`,"startup.retry":`Retry`,"startup.retryFailed":`Retry failed Goals`,"startup.failedCount":`{count} Goals could not be loaded. Ready Goals remain available.`,"home.greeting":`Hi, I’m your LoopX Manager`,"home.history":`History`,"home.lane.needsYou":`Needs you`,"home.lane.needsYouDescription":`Waiting for your decision, authorization, or context`,"home.lane.observing":`Observing`,"home.lane.observingDescription":`Monitoring continuously and notifying you when something changes`,"home.lane.running":`Running`,"home.lane.runningDescription":`Agents are making progress and reporting back`,"home.lane.scheduled":`Scheduled`,"home.lane.scheduledDescription":`Queued until its time or prerequisite arrives`,"home.noActivity":`No activity yet`,"home.noFirstActivity":`Waiting for first activity`,"home.noCompletedGoals":`No completed Goals yet`,"home.preservedState":`State is preserved and can be resumed`,"home.stopped":`Stopped`,"home.systemHealth":`System health: {summary}`,"home.taskCount":`{count} Tasks`,"home.todayAt":`Today {time}`,"home.waitingCount":`You have {count} items to handle.`,"home.workspace":`Goal workspace`,"lark.allMessages":`All messages in this topic`,"lark.allTopicMessages":`All topic messages`,"lark.agentIngress":`Agent ingress`,"lark.agentAppPermissions":`Every selected Agent needs a Lark App that is ready for group mentions and replies.`,"lark.agentApps":`Lark App per Agent`,"lark.agentAppsDescription":`The default App is preselected. Assign a different compatible App when an Agent needs its own bot identity.`,"lark.agentAppSelection":`Lark App for {agent}`,"lark.appCreated":`App created`,"lark.appCreateFailed":`Creation failed`,"lark.appLoading":`Loading available Lark Apps…`,"lark.appPermissions":`This App can send connection messages, but lacks the bot permissions required to receive group mentions or reply automatically. Enable im:message.group_at_msg:readonly, im:message.send_as_bot, and the im.message.receive_v1 event, publish a new version, then refresh.`,"lark.appProfile":`Lark App`,"lark.apps":`Lark Apps`,"lark.autoReplyUnavailable":`Auto reply unavailable`,"lark.autoReplyReady":`Auto reply ready`,"lark.bindGoal":`Bind to Goal`,"lark.cancel":`Cancel`,"lark.cardinality":`One Lark App · many Goals · one isolated route per Agent`,"lark.capture":`Capture`,"lark.captureAddressed":`Only messages that mention or reply to the App`,"lark.captureAll":`All messages in this Goal topic`,"lark.captureScope":`Capture scope`,"lark.captureScopeDescription":`Controls which Topic messages enter LoopX without expanding Agent permissions.`,"lark.closeConnection":`Close connection dialog`,"lark.closeCreate":`Close create dialog`,"lark.closeSettings":`Close Lark settings`,"lark.connect":`Connect`,"lark.connectAllAgents":`Connect every registered Agent`,"lark.connectAllAgentsAction":`Connect {count} Agents`,"lark.connectAllAgentsDescription":`Create {count} isolated Agent Topics in one guided action. Send requests inside the matching Topic; each Agent keeps its own route and inbox.`,"lark.connectApp":`Connect Lark App`,"lark.connection":`Connection`,"lark.connections":`Connections`,"lark.configuration":`Lark configuration`,"lark.continueFeishu":`Continue in Feishu`,"lark.createAutomatically":`Create Goal topic automatically`,"lark.createAutomaticallyDescription":`A dedicated, Agent-labelled Topic will be created for every selected Agent.`,"lark.defaultAgentAppDescription":`Used to find the target group and as the default for every selected Agent. Per-Agent choices below override it.`,"lark.description":`Manage reusable Lark Apps and connect group chats to Goals through dedicated topics.`,"lark.editConnection":`Edit Lark Connection`,"lark.goalConnections":`{count} Goal connections`,"lark.goalTopicConnections":`Lark Goal Topic connections`,"lark.groupChat":`Group chat`,"lark.groupEmpty":`This bot has not joined a group that can be connected. Add it to a Feishu group first, then return to refresh or search.`,"lark.groupLoading":`Reading groups joined by this bot…`,"lark.groupSearch":`Search groups joined by this bot`,"lark.historyPermission":`Group-history permission (separate capability)`,"lark.health.contextCaptured":`Group context captured`,"lark.health.contextCapturedDetail":`The message is retained as non-authoritative context. It did not start or steer a Manager turn; send a direct @ mention or verified reply when action is required.`,"lark.health.eventProcessed":`{events} events processed, {replies} replies sent.`,"lark.health.eventUnverified":`Event subscription needs verification`,"lark.health.eventUnverifiedDetail":`The provider listener is ready, but no event has arrived. Enable im.message.receive_v1 and group mention permissions, publish a new version, then send a new @ mention inside this Agent Topic. Group-level messages fail closed when multiple Agent routes exist.`,"lark.health.ignoredSelf":`The bot’s own message was ignored to prevent duplicate replies.`,"lark.health.invalidRouting":`Invalid routing configuration`,"lark.health.invalidRoutingDetail":`The connection was safely disabled. Select a processing mode again and save.`,"lark.health.lastStatus":`Latest event status: {status}`,"lark.health.listening":`Listening`,"lark.health.messageContextPermission":`Message permission required`,"lark.health.messageContextPermissionDetail":`A message event arrived, but group context could not be read. Publish and authorize group message read access for this App.`,"lark.health.notAddressed":`Latest message did not directly @ the bot`,"lark.health.notAddressedDetail":`Listening is healthy. This connection only responds to direct @ mentions or replies to the bot.`,"lark.health.notStarted":`Listener not started`,"lark.health.notStartedDetail":`Refresh the connection or restart LoopX, then try again.`,"lark.health.processingFailed":`Message processing failed`,"lark.health.processingFailedDetail":`The message event arrived, but Agent processing failed. Review local diagnostics and retry.`,"lark.health.queued":`Queued in the Agent inbox`,"lark.health.queuedDetail":`The message will be processed asynchronously by {agent} without starting a general Chat Session.`,"lark.health.sourceDisconnected":`Event connection disconnected`,"lark.health.sourceDisconnectedDetail":`The event consumer exited unexpectedly. Check that the app profile uses Feishu for Feishu apps or Lark for international Lark, then inspect connection and subscription errors. LoopX is retrying; successful history queries do not prove live delivery.`,"lark.health.retrying":`Retrying listener`,"lark.health.retryingDetail":`Event listening was interrupted and LoopX is retrying automatically.`,"lark.health.routeAmbiguous":`Message matches multiple Goals`,"lark.health.routeAmbiguousDetail":`The same bot and group have multiple full-group capture connections. Use a separate bot for each Agent or keep only one full-group connection.`,"lark.health.routeMismatch":`Message did not match this Goal Topic`,"lark.health.routeMismatchDetail":`The event came from another group or Topic. Reconnect this Goal to the correct group, then send a new @ mention.`,"lark.health.routeUnavailable":`Message cannot be routed to the Goal`,"lark.health.routeUnavailableDetail":`Connection data is incomplete. Reconnect this Goal, then send a new @ mention.`,"lark.health.starting":`Starting`,"lark.health.startingDetail":`LoopX is starting message event listening for this App.`,"lark.health.unavailable":`Auto reply unavailable`,"lark.health.waiting":`Waiting`,"lark.incomingMessages":`Incoming messages`,"lark.ingressAsync":`Async inbox`,"lark.ingressAsyncDescription":`Write to the Agent private inbox for a later explicit drain.`,"lark.editPreservesIdentity":`Saving preserves this App, group and Topic. Old connections upgrade to the Agent inbox by default.`,"lark.conversationKind":`Connection purpose`,"lark.managerConversation":`Manager · live conversation`,"lark.workerConversation":`Worker Agent · background tasks`,"lark.managerConversationDescription":`The built-in manager responds as you chat and delegates long-running work to background Agents. Group and private conversations keep separate histories.`,"lark.ingressLegacy":`Upgrade available`,"lark.ingressLegacyDescription":`Save this connection to upgrade to the Agent inbox. Existing messages remain in the same Topic.`,"lark.ingressQueue":`Queuing`,"lark.ingressQueueDescription":`Enter the same Agent Session's bounded FIFO queue and run after the current Turn.`,"lark.ingressSteering":`Steering`,"lark.ingressSteeringDescription":`Deliver to the active Turn and reject safely when no exact active Turn exists.`,"lark.loading":`Loading Lark configuration…`,"lark.management":`Lark management`,"lark.openEventSettings":`Open Feishu event settings`,"lark.mentions":`Mentions`,"lark.mentionsOnly":`Mentions only`,"lark.needsMessagePermissions":`Needs message permissions`,"lark.needsSetup":`Needs setup`,"lark.newApp":`New Lark App`,"lark.noAgentConfigured":`No Agent configured`,"lark.noConnections":`No matching connections.`,"lark.noProfiles":`No lark-cli App profiles are available yet.`,"lark.profileName":`Profile name`,"lark.profileValidation":`Profile can contain only letters, numbers, periods, underscores, and hyphens.`,"lark.processing":`Processing`,"lark.region":`Region`,"lark.registerAnother":`+ Register another Lark App — Create through Feishu`,"lark.reopenFeishu":`Reopen Feishu`,"lark.settingsConfigure":`Configure {goal}`,"lark.settingsDisconnect":`Disconnect {goal}`,"lark.replyMode":`Reply mode`,"lark.replyModeDescription":`Replies are limited to the source Topic to prevent cross-group or cross-Goal delivery.`,"lark.reusableApps":`{count} reusable Apps`,"lark.reusableWorkspaceApp":`Reusable workspace App`,"lark.routesUnverified":`{count} Lark routes pending verification`,"lark.saveConnection":`Save connection`,"lark.searchConnections":`Search Lark connections`,"lark.searchPlaceholder":`Search Apps, groups, Goals, or topics`,"lark.setupCopy":`LoopX opens the official Feishu creation page through lark-cli. App credentials stay in the system Keychain; LoopX stores only the profile reference.`,"lark.someoneMentions":`Someone mentions the Agent`,"lark.targetAgent":`Target Agent`,"lark.targetAgentDescription":`Choose a registered Agent in this Goal. This connection delivers to one Agent; it does not broadcast or grant permissions. Steering and Queuing require that Agent's exact active Session.`,"lark.agentUnavailable":`{agent} · no longer available`,"lark.selectRegisteredAgent":`Select an available registered Agent before connecting. The previous Agent will not be replaced automatically.`,"lark.topicPreview":`Topic preview`,"lark.topicReply":`Topic reply`,"lark.trigger":`Trigger`,"lark.waitingFeishu":`Waiting for Feishu`,"lark.waitingFeishuDescription":`Complete Feishu authorization in the new window. This page updates automatically when it is ready.`,"lark.waitingLink":`Generating the official Feishu creation link…`,"lark.error.appCreate":`Lark App creation failed`,"lark.error.appRequired":`Select a Lark App profile.`,"lark.error.bind":`Connection failed`,"lark.error.bindPreview":`Connection preview failed`,"lark.error.configuration":`Could not load Lark configuration`,"lark.error.groupLookup":`Could not read groups joined by this bot. Check the bot status and try again.`,"lark.error.groupLoad":`Could not load group chats`,"lark.error.invalidApp":`The Lark App profile is unavailable or has not completed authorization.`,"lark.error.messagePermissions":`This App lacks the bot permissions required for automatic replies. Enable im:message.group_at_msg:readonly and im:message:send_as_bot, publish a new version, then refresh.`,"lark.error.provider":`The Feishu API call failed without a verified receipt. Try again later.`,"lark.error.setupPoll":`Could not read creation status`,"lark.error.setupStart":`Could not start Lark App creation`,"lark.error.cliExecutable":`The configured lark-cli was found but cannot run. Check the installation or launch arguments.`,"lark.error.cliMissing":`lark-cli was not found. Install lark-cli and restart LoopX.`,"lark.error.cliStart":`lark-cli failed to start. Check the installation and restart LoopX.`,"lark.error.disconnect":`Disconnect failed`,"notifications.autoNotify":`Send automatically when your confirmation is required`,"notifications.bind":`Bind notification group`,"notifications.bindConfirm":`Bind “{goal}” to “{target}”. LoopX will verify that the bot is in the group and send a confirmation message.`,"notifications.bindFailed":`Binding failed`,"notifications.bound":`Bound`,"notifications.confirmBind":`Confirm binding`,"notifications.description":`Send Goal changes that need your confirmation to a Feishu group. Bindings and automatic delivery use the existing channel.`,"notifications.disabled":`Disabled`,"notifications.group":`Notification group: {target}`,"notifications.loadFailed":`Could not load notification groups`,"notifications.noTargets":`No notification groups are available. Group delivery uses a private bot identity; configure one from the terminal first:`,"notifications.notBound":`Not bound`,"notifications.recent":`Latest {time}`,"notifications.sentCount":`{count} sent`,"notifications.settings":`Goal notification bindings`,"notifications.setupFailed":`Could not update settings`,"notifications.title":`Feishu group notifications`,"proposal.field.agentId":`Agent`,"proposal.field.cadence":`Frequency`,"proposal.field.completionCriteria":`Completion criteria`,"proposal.field.executionBoundary":`Execution boundary`,"proposal.field.goalId":`Goal ID`,"proposal.field.heartbeat":`Heartbeat`,"proposal.field.initialTodos":`Initial tasks`,"proposal.field.objective":`Objective`,"proposal.field.operation":`Operation`,"proposal.field.operationState":`Operation state`,"proposal.field.resultDelivery":`Result delivery`,"proposal.field.confirmationBoundary":`Confirmation boundary`,"proposal.field.expiresAt":`Expires at`,"proposal.field.permission":`Permission`,"proposal.field.reason":`Reason`,"proposal.field.stopCondition":`Stop condition`,"proposal.field.target":`Check target`,"proposal.field.timezone":`Timezone`,"proposal.field.title":`Title`,"proposal.field.workspace":`Execution workspace`,"actionReview.targetChanged":`The preview target does not match the requested Goal and operation. Generate a new preview.`,"actionReview.ready_stop":`Pausing is reversible. This validated preview can apply directly; completion still requires verified readback.`,"actionReview.resume_review":`Review before restoring automatic scheduling. Quota, gates and Todo constraints still apply.`,"actionReview.delete_review":`Review removal of this stopped Goal from the registries. Project files and history are preserved.`,"actionReview.action_review":`Review the target and impact before applying this proposal.`,"actionReview.protected_action":`This action needs explicit review. Confirmation cannot replace required authority.`,"actionReview.unknown_permission":`The permission classification is not recognized. Recheck the proposal before continuing.`,"actionReview.unknown_action":`This lifecycle operation is not recognized. Recheck the proposal before continuing.`,"actionReview.incomplete_proposal":`The preview is missing validation or an available apply transition. Generate a new preview.`,"actionReview.authority_gate":`A gate prevents execution. Resolve its requirements, then recheck the proposal.`,"actionReview.stale_proposal":`The source state changed. Generate a new preview; the previous decision no longer applies.`,"actionReview.apply_pending":`Execution is in progress. Wait for its result before retrying.`,"actionReview.readback_verified":`The action completed and its resulting state was verified.`,"actionReview.readback_unverified":`The action returned without verified readback. Completion is not confirmed; recheck the state.`,"actionReview.operation_group_confirmation":`This exact request can only be confirmed on its original card in the bound Feishu group. The Dashboard does not expose a local execution control.`,"actionReview.operation_result_delivery_pending":`The operation outcome was recorded, but the original group result card has not passed readback verification yet.`,"actionReview.apply_failed":`Execution did not complete. Check the failure and regenerate the preview before retrying.`,"actionReview.inactive_proposal":`This proposal is no longer ready to execute. Recheck it before continuing.`,"proposal.gate.default":`Host confirmation required`,"proposal.impact.default":`After confirmation, the canonical LoopX service will write the state change.`,"proposal.impact.goalCreate":`After confirmation, LoopX will create the Goal and its initial Todo, then let the selected Agent start the first run.`,"proposal.impact.lifecycleDelete":`After confirmation, this stopped Goal is removed from the source and global registries. Project files, history state, and backups are preserved.`,"proposal.impact.lifecycleResume":`After confirmation, the Goal becomes eligible for automatic scheduling and returns to Active Goals. Actual execution still follows quota, Gate, and Todo constraints.`,"proposal.impact.lifecycleStop":`After confirmation, automatic progress stops and the Goal moves to the collapsed Stopped list. History, Todos, and evidence remain available for resuming.`,"proposal.impact.protected":`This action must be completed through the protected LoopX write service.`,"proposal.impact.operation":`The exact terms are read-only here. Confirm or reject the same immutable request in the bound Feishu group; confirmation consumes one canonical claim.`,"proposal.primary.apply":`Confirm and apply`,"proposal.primary.goalCreate":`Create Goal and start first run`,"proposal.primary.lifecycleDelete":`Delete Goal`,"proposal.primary.lifecycleResume":`Resume Goal`,"proposal.primary.lifecycleStop":`Stop Goal`,"proposal.primary.todoStart":`Create task and start execution`,"proposal.primary.operationGroup":`Confirm in Feishu group`,"proposal.primary.operationResultPending":`Result card delivery pending`,"proposal.primary.operationResultVerified":`Verified result`,"proposal.resultDelivery.verified":`Verified in the original group card`,"proposal.resultDelivery.pending":`Pending verified return to the original group card`,"proposal.summary.goalCreate":`Create Goal: {title}`,"proposal.summary.heartbeat":`Set a Heartbeat for the current Goal`,"proposal.summary.lifecycleDelete":`Delete Goal: {title}`,"proposal.summary.lifecycleResume":`Resume Goal: {title}`,"proposal.summary.lifecycleStop":`Stop Goal: {title}`,"proposal.summary.monitor":`Create a scheduled check for the current Goal: {target}`,"proposal.summary.teamPlan":`Staff a {count}-lane team for {goal}`,"proposal.impact.teamPlan":`Confirming creates each ready lane's first bounded Todo through the canonical owner; a lane with a staffing gap creates nothing, no lane exists before the apply receipt returns, and a Goal or Agent change between preview and apply makes this proposal stale instead of applying drifted staffing.`,"proposal.primary.teamPlan":`Confirm and staff the lanes`,"proposal.field.laneGaps":`Unstaffed lanes`,"proposal.field.quotaEnvelope":`Quota envelope`,"proposal.teamPlan.acceptanceShort":`acceptance reference`,"proposal.teamPlan.advisory":`planning context; not enforced by this confirmation`,"proposal.teamPlan.appliedPartially":`Assigned {created} lane task(s); {gaps} lane(s) remain unstaffed. Receiver adoption and execution are still unverified.`,"proposal.teamPlan.appliedAlreadyPresent":`Original assignment recovered; no new tasks created. This does not attest current execution.`,"proposal.teamPlan.applied":`Lane tasks assigned. Receiver adoption and execution are still unverified.`,"proposal.teamPlan.gapLane":`unstaffed`,"proposal.teamPlan.laneUnstaffed":`staffing gap, no first Todo`,"proposal.teamPlan.appliedGapLane":`{lane} ({agent}) stayed unstaffed: {reason}`,"proposal.teamPlan.gapReason.agentNotRegistered":`the Agent is not registered for this Goal`,"proposal.teamPlan.gapReason.actionKindNotSupported":`this host does not ship that action kind`,"proposal.workspace.current":`Current local workspace (no Repository bound)`,"proposal.workspace.named":`{workspace} (execution environment only; does not bind a repository)`,"proposal.workspaceGate.agentImpact":`Bind an Agent identity, then recheck the original action. No Goal has been written.`,"proposal.workspaceGate.agentTitle":`Bind an Agent first`,"proposal.workspaceGate.defaultSummary":`Select the Goal workspace.`,"proposal.workspaceGate.selectionImpact":`After selecting a workspace, LoopX will show the confirmation preview again. The selection itself does not write state.`,"proposal.workspaceGate.selectionTitle":`Select Goal workspace`,"projection.agentAdvancingGoal":`Agent is advancing the current Goal`,"projection.agentIdle":`Nothing needs your attention`,"projection.agentNeedsDecision":`Agent is waiting for your decision`,"projection.agentPreparingNextStep":`Agent is preparing the next step`,"projection.agentStopped":`Stopped by you; history, Todos, and evidence are preserved`,"projection.agentWaitingExternal":`Waiting for an external condition`,"projection.confirmAgentDecision":`Confirm the permission or decision the Agent needs next`,"projection.events24h":`{count} events in the last 24 hours`,"projection.firstReadOnlyAdapterCheck":`Run the first read-only adapter check and save progress`,"projection.goalVerified":`Goal state, Todos, and registration information verified`,"projection.latestRun":`Latest run`,"projection.latestValidation":`Latest validation`,"projection.nextUpdatePending":`Waiting for LoopX to update the next step`,"projection.publicSafeProjection":`Public-safe status projection`,"projection.refreshState":`Refresh LoopX status and confirm the current progress is still valid`,"projection.runEvidenceAvailable":`Run evidence is available`,"projection.runRecorded":`The latest LoopX run is recorded`,"projection.statusRefreshNeeded":`LoopX status needs to be refreshed`,"projection.todoStatusUpdated":`Todo status updated; confirming the next step`,"projection.validationRecorded":`The latest validation is recorded`,"runs.completed":`Completed`,"runs.failed":`Needs review`,"runs.interrupted":`Interrupted`,"runs.queued":`Scheduled`,"runs.ready":`Ready`,"runs.resumeFailed":`Recovery failed`,"runs.running":`Running`,"runs.unknown":`Unknown`,"runs.waiting":`Waiting`,"schedule.active":`Running`,"schedule.heartbeat":`Goal Heartbeat`,"schedule.monitor":`Scheduled & continuous task`,"schedule.paused":`Paused`,"schedule.summary":`Continuously checked under LoopX scheduling constraints`,"schedule.defaultTarget":`Check the current Goal for blockers, progress, and new outputs`,"schedule.unsupportedCalendar":`Scheduled checks do not currently support an exact weekday or time. Use a fixed interval such as “Every 30 minutes,” “Every 2 hours,” or “Daily.” The draft was preserved and no confirmation preview was created.`,"source.add":`Add source`,"source.addConfigured":`Add read-only source`,"source.addMethod":`Source setup method`,"source.addSsh":`Add SSH source`,"source.closeForm":`Close source form`,"source.configured":`Configured SSH`,"source.configuredCount":`Local SSH Hosts · {count}`,"source.configuredGroup":`Configured SSH Hosts · {count} (select to add)`,"source.connected":`Connected`,"source.connecting":`Connecting`,"source.controlPlane":`Control plane source`,"source.copy":`Copy`,"source.copyCommand":`Copy SSH tunnel command`,"source.copyError":`Could not copy the command. Copy it manually below.`,"source.copied":`Copied`,"source.description":`All explicit Hosts are loaded, including Include files. Wildcards are not listed. Run the command first; LoopX never reads SSH keys or configuration details.`,"source.host":`Local SSH Host`,"source.hostEmpty":`No explicit SSH Hosts are available in ~/.ssh/config.`,"source.hostLoadError":`Could not read local SSH Hosts.`,"source.hostPlaceholder":`Enter or search for a Host`,"source.invalid":`The SSH source settings are invalid.`,"source.loadingHosts":`Loading…`,"source.localInteractive":`Local interactive`,"source.localPort":`Local port`,"source.manual":`Manual URL`,"source.manualDescription":`Remote sources always remain read-only projections and never inherit local write permissions.`,"source.name":`Name`,"source.namePlaceholder":`Remote development machine`,"source.notAvailable":`Unavailable`,"source.readOnly":`SSH tunnel · read only`,"source.readOnlyNoticeDescription":`You can view Goals, Tasks, evidence, and run status. Writes, guidance, and Agent sessions remain on the source host.`,"source.readOnlyNoticeTitle":`Remote read-only projection`,"source.readOnlyWriteError":`Remote SSH tunnel sources are read-only projections and cannot perform control-plane writes.`,"source.refreshHosts":`Reload SSH Hosts`,"source.remove":`Remove source {source}`,"source.removeCurrent":`Remove current source`,"source.select":`Select control plane source`,"source.selectHost":`Select a configured SSH Host.`,"source.statusUrl":`Local forwarded URL`,"source.tunnelCommandPending":`Select a Host to generate the tunnel command`,"machine.absent":`Not configured`,"machine.action.create":`Create machine policy`,"machine.action.delete":`Remove machine policy`,"machine.action.unchanged":`No write required`,"machine.action.update":`Update machine policy`,"machine.applied":`Machine policy applied and read back successfully.`,"machine.applyError":`Machine policy could not be applied.`,"machine.applyPreview":`Apply reviewed preview`,"machine.changedNamespaces":`Changed namespaces`,"machine.capabilityCatalog":`Machine capability catalog`,"machine.capabilityEmpty":`No machine-configurable capabilities are registered.`,"machine.configured":`Configured`,"machine.confirmRollback":`Confirm rollback`,"machine.currentRevision":`Current revision`,"machine.currentValue":`Current machine value`,"machine.description":`Browse the same capability catalog as Goal settings. Configure supported machine defaults here; Goal-only capabilities are labeled explicitly.`,"capabilities.rawJson":`Advanced: raw JSON`,"machine.goalOnly":`This capability currently supports Goal configuration only. Open a Goal’s capability settings to configure it; no machine-wide default is applied.`,"machine.desiredRevision":`Desired revision`,"machine.editorUnavailable":`No editor is installed for this namespace`,"machine.editorUnavailableDescription":`The namespace remains visible in the registry. Install or upgrade its Dashboard editor before changing it.`,"machine.editorMode":`Editor mode`,"machine.liveDefault":`Live default; Goal override wins`,"machine.liveDefaultDescription":`Goals without an explicit override read the current machine policy at the capability’s next decision point. Changes and removal affect those existing Goals immediately; an explicit Goal override stays pinned.`,"machine.credentialTitle":`Operator model credential`,"machine.credentialDescription":`The key and endpoint the steward channel and the managed host authenticate with on this machine. The key is stored in its own owner-only file, never in the machine configuration that is projected here, and it is never read back — only its fingerprint is.`,"machine.credentialApiKey":`API key`,"machine.credentialApiKeyPlaceholder":`Paste a key to store it; leave blank to keep the stored one`,"machine.credentialBaseUrl":`Endpoint base URL`,"machine.credentialBaseUrlPlaceholder":`https://endpoint.example/v1 (blank keeps the endpoint default)`,"machine.credentialStore":`Store credential`,"machine.credentialClearKey":`Clear stored key`,"machine.credentialClearUrl":`Clear stored endpoint`,"machine.credentialConfigured":`configured`,"machine.credentialAbsent":`not configured`,"machine.credentialInvalid":`unreadable — repair required`,"machine.credentialSourceMachine":`this machine's stored credential`,"machine.credentialSourceEnvironment":`the service environment`,"machine.credentialSourceUnset":`no source`,"machine.credentialFingerprint":`fingerprint`,"machine.credentialStored":`Credential stored. The next turn uses it; no restart is needed.`,"machine.credentialCleared":`Stored credential cleared.`,"machine.credentialError":`The credential could not be stored.`,"machine.credentialBoundary":`Storing a credential grants no authority: it does not select an executor, model, or reasoning effort.`,"machine.genericNamespaceDescription":`Edit this registered namespace as JSON. LoopX validates it with the capability-owned schema before previewing any write.`,"machine.jsonConfiguration":`Namespace configuration (JSON)`,"machine.jsonConfigurationHelp":`Only this namespace is updated. Other machine configuration is preserved, and Apply remains locked to the reviewed preview revision.`,"machine.jsonEditor":`JSON`,"machine.editJson":`Edit JSON`,"capabilities.jsonConfiguration":`Goal configuration (JSON)`,"capabilities.jsonHelp":`Edit registered fields for this Goal. Changes require a new preview before applying.`,"capabilities.jsonInvalid":`Enter a valid JSON object using only registered editable fields.`,"machine.backToForm":`Back to form`,"machine.jsonInvalid":`Enter one valid JSON object before previewing changes.`,"machine.loadError":`Machine configuration could not be loaded.`,"machine.invalidStoredConfiguration":`Stored machine configuration needs repair`,"machine.invalidStoredConfigurationDescription":`Stored values are hidden because they no longer match the installed contract. Review the affected capability, then Preview and Apply its replacement; unrelated namespaces remain unchanged.`,"machine.machinePolicy":`Machine policy`,"machine.namespaceCount":`Registered namespaces`,"machine.namespaces":`Configuration namespaces`,"machine.periodicReport":`Periodic reports`,"machine.periodicReportDescription":`Default report policy for every Goal without an explicit override. Goal scheduling and delivery consume the effective configuration.`,"machine.periodicReportActivation":`Enabled means automatic delivery at validated stage boundaries`,"machine.periodicReportActivationDescription":`This is not a weekly timer. When LoopX validates a Goal stage completion, an Agent prepares and freezes the report, then automatically delivers it through the configured Goal Channel. The enabled subscription is standing delivery authority; failures and route drift stop closed for repair.`,"machine.changeQualityActivation":`Qualification is a quality gate, not new authority`,"machine.changeQualityActivationDescription":`Goals that inherit this policy qualify their exact final diff. safe_fix allows at most one bounded fix pass inside existing write authority; this setting never grants file, permission, or merge authority.`,"machine.replanCadenceActivation":`Review cadence changes timing, not execution authority`,"machine.replanCadenceActivationDescription":`Goals without an explicit override read this threshold before the next review decision. It does not create Turns, spend quota, or grant authority.`,"machine.preview":`Review exact machine change`,"machine.previewChanges":`Preview changes`,"machine.previewError":`A machine-policy preview could not be created.`,"machine.previewLocked":`Apply is locked to this exact revision. If machine state changes, LoopX requires a new preview.`,"machine.previewRollback":`Preview rollback`,"machine.previewRemoval":`Preview removal`,"machine.profilePreset":`Profile preset`,"machine.profilePresetHelp":`A capability-owned preset, such as weekly-progress.`,"machine.registry":`Typed registry`,"machine.requiredFields":`Enable requires a profile preset, Goal Channel route, and valid timezone.`,"machine.revision":`Machine revision`,"machine.revisionLockedReady":`All changes require a preview and apply only while that exact machine revision remains current.`,"machine.rollbackAvailable":`Rollback is available for the last apply`,"machine.rollbackDescription":`Preview the stored prior revision before restoring it.`,"machine.rollbackError":`The rollback could not be completed.`,"machine.rollbackPreviewDescription":`The prior revision is ready to restore. Confirm to apply this rollback.`,"machine.rolledBack":`The prior machine policy was restored and verified.`,"machine.removed":`Machine policy removed and the resulting configuration read back successfully.`,"machine.routeRef":`Goal Channel route`,"machine.routeRefHelp":`Use a public route alias; credentials and provider identifiers never enter this form.`,"machine.timezone":`Timezone`,"machine.timezoneHelp":`Use an IANA timezone, for example Asia/Shanghai.`,"machine.title":`Machine configuration`,"machine.unchanged":`Machine policy already matches this preview; nothing was written.`,"machine.visualEditor":`Guided`,"capabilities.atomicOverride":`Goal override is atomic`,"capabilities.atomicOverrideDescription":`A complete Goal value wins over the machine default. LoopX never mixes individual fields across scopes.`,"capabilities.applyFailed":`Goal capability changes were not applied.`,"capabilities.applyPreview":`Apply preview`,"capabilities.catalog":`Goal capability catalog`,"capabilities.chooseGoal":`Choose a Goal before inspecting its capabilities.`,"capabilities.defaultValue":`Declared default`,"capabilities.description":`Inspect the capabilities available to this Goal and the exact scope of each setting.`,"capabilities.editorPrepared":`Typed editor contract available`,"capabilities.effectiveSource":`Effective source`,"capabilities.empty":`No capability descriptors are available for this Goal.`,"capabilities.fields":`Registered fields`,"capabilities.goalPolicy":`Goal capability policy`,"capabilities.goalScope":`Goal`,"capabilities.goalValue":`Current Goal value`,"capabilities.loadFailed":`Could not load Goal capabilities`,"capabilities.larkInboxNotificationDescription":`This switch controls automatic group messages for human gates. Incoming Lark events remain available when it is off.`,"capabilities.larkInboxNotificationSetting":`Human-gate group notifications`,"capabilities.loading":`Loading Goal capabilities…`,"capabilities.machineOnly":`This capability is configured only at machine scope.`,"capabilities.machineValue":`Live machine default`,"capabilities.machineScope":`Machine`,"capabilities.previewOnly":`Inspection is live. Goal writes remain unavailable until the revision-locked preview and apply path is connected.`,"capabilities.preview":`Revision-locked preview`,"capabilities.previewChanges":`Preview changes`,"capabilities.restoreInheritance":`Restore machine-default inheritance`,"capabilities.previewFailed":`Could not preview Goal capability changes.`,"capabilities.previewLocked":`Apply will re-check this exact plan revision and reject stale changes.`,"capabilities.partialWrite":`Goal value saved; shared projection needs reconciliation`,"capabilities.partialWriteDescription":`The source Goal configuration was written and read back. Its shared runtime projection did not synchronize, so do not submit the change again.`,"capabilities.refreshSource":`Refresh source value`,"capabilities.readOnly":`Read-only capability`,"capabilities.revisionLockedReady":`Changes require a preview and are applied only when its exact revision is still current.`,"capabilities.retry":`Retry`,"capabilities.source.capability_default":`Capability default`,"capabilities.source.goal_override":`Goal override`,"capabilities.source.machine_default":`Live machine default`,"capabilities.source.not_configured":`Not configured`,"capabilities.title":`Goal capabilities`,"settings.close":`Close settings`,"settings.appearance":`Appearance`,"settings.appearanceDescription":`Manage workspace display preferences in this browser.`,"settings.appearanceTabDescription":`Theme and display preferences`,"settings.capabilitiesTabDescription":`Capability overrides for this Goal`,"settings.back":`Back to workspace`,"settings.categories":`Settings categories`,"settings.description":`Manage workspace preferences and integrations.`,"settings.eyebrow":`Workspace preferences`,"settings.general":`General`,"settings.goalConnections":`Goal connections`,"settings.language":`Language`,"settings.modelProvider":`Model provider`,"settings.globalCapabilities":`Global capabilities`,"settings.languageDescription":`Choose the language used by the LoopX desktop workspace.`,"settings.languageEnglishDescription":`Use English for navigation, settings, and workspace controls.`,"settings.languageEnglish":`English`,"settings.languageSimplifiedChineseDescription":`Use Simplified Chinese for navigation, settings, and workspace controls.`,"settings.languageSimplifiedChinese":`Simplified Chinese`,"settings.languageStoredLocally":`This preference is stored only on this device.`,"settings.languageTabDescription":`Interface language for this device`,"settings.larkTabDescription":`Apps, group chats, and Goal Topic connections`,"settings.machineTabDescription":`Typed defaults shared by capabilities on this machine`,"settings.notifications":`Notifications`,"settings.open":`Settings`,"settings.themeDefault":`Paper`,"settings.themeDefaultDescription":`Calm and lightweight for long-running work.`,"settings.themeDescription":`Choose the workspace visual style. This preference is stored in the current browser.`,"settings.themeHighContrast":`High contrast`,"settings.themeHighContrastDescription":`Stronger borders and more prominent state blocks.`,"settings.themeLoopx":`LoopX standard`,"settings.themeLoopxDescription":`Precise monochrome surfaces, Geist type, and quiet hairline structure.`,"settings.title":`Settings`,"settings.workspaceDisplay":`Workspace display`,"settings.workspaceTheme":`Workspace theme`,"session.closeRecord":`Exit run record`,"session.details":`Session details`,"session.record":`Execution Session · Run record`,"session.recordDescription":`The timeline now shows messages and Turn records from this Session.`,"sidebar.createGoal":`Create Goal`,"sidebar.delete":`Delete`,"sidebar.deleteGoal":`Delete Goal`,"sidebar.manager":`LoopX Manager`,"sidebar.notifications":`Settings`,"sidebar.owner":`Personal workspace`,"sidebar.product":`Personal Agent workspace`,"sidebar.resume":`Resume`,"sidebar.resumeGoal":`Resume Goal`,"sidebar.stop":`Stop`,"tasks.historyLoading":`Loading history…`,"tasks.historyError":`History could not be loaded.`,"tasks.historyExpired":`History snapshot expired. Reload to continue.`,"tasks.historyRetry":`Reload`,"tasks.historyEnd":`End of completed history`,"tasks.historyMore":`Load more`,"tasks.historyLocalOnly":`Open this machine’s Dashboard to browse full history.`,"sidebar.sortGoals":`Reorder Goals`,"sidebar.dragGoal":`Drag to reorder, or use Reorder Goals`,"sidebar.moveUp":`Move {goal} up`,"sidebar.moveDown":`Move {goal} down`,"sidebar.goalMoved":`{goal} moved to position {position}`,"sidebar.orderNotSaved":`Order changed for this visit; browser storage is unavailable.`,"sidebar.stopGoal":`Stop Goal`,"sidebar.stopped":`Stopped`,"sidebar.stoppedLoading":`Loading stopped Goals`,"sidebar.stoppedLoadFailed":`Stopped Goals could not be loaded. Active Goals remain available.`,"sidebar.retryStopped":`Retry`,"state.completed":`Completed`,"state.needsRepair":`Needs repair`,"state.needsYou":`Needs you`,"state.quiet":`Quiet`,"state.running":`Running`,"state.stopped":`Stopped`,"state.waiting":`Waiting`,"tasks.blocked":`Blocked`,"tasks.agentLane":`Work Agent`,"tasks.agentLaneDescription":`Filter this Goal's projected work lanes`,"tasks.agentLaneFilter":`Filter by work Agent`,"tasks.allAgentLanes":`All Agents ({count})`,"tasks.chatAgentReplied":`Agent replied`,"tasks.chatPending":`Sent to Agent`,"tasks.chatPendingDescription":`Processing. Tasks update only after a task operation is confirmed.`,"tasks.chatRecent":`Recent conversation`,"tasks.chatUnchangedDescription":`This conversation did not directly change Tasks. Convert the reply to a Task draft and confirm it when execution is needed.`,"tasks.chatViewReply":`View reply`,"tasks.convertToTask":`Convert to Task`,"tasks.completed":`Completed`,"runs.discoveryPartial":`Some execution details are unavailable. Reconnecting; task summaries are not live execution status.`,"runs.discoveryOffline":`Execution service unavailable. Reconnecting; retained task summaries may be stale.`,"files.openConversation":`Go to conversation`,"files.exportSummary":`Export summary`,"tasks.viewDescription":`Decisions first, then work and recent completions`,"tasks.viewLabel":`Task view`,"tasks.listView":`List`,"tasks.boardView":`Board`,"tasks.completedSummary":`{count} tasks completed. Recent details are projected by the control plane when needed.`,"tasks.emptyCompleted":`No completed tasks yet.`,"tasks.emptyConfirm":`No tasks waiting for confirmation.`,"tasks.emptyRunning":`No queued or running tasks.`,"tasks.emptySchedules":`No scheduled tasks.`,"tasks.emptyGoal":`This Goal has no tasks yet. Describe the next step below and LoopX will show a confirmation preview first.`,"tasks.markComplete":`Mark complete: {name}`,"tasks.moreActions":`More actions: {name}`,"tasks.openExecution":`View execution: {name}`,"tasks.pending":`Pending`,"tasks.pendingAndRunning":`Queued / Running`,"tasks.scheduled":`Scheduled & continuous`,"tasks.sessionError":`Session issue`,"tasks.waiting":`Queued`,"tasks.waitingAge":`Waiting {age}`,"tasks.viewExecution":`View execution`,"tasks.viewResult":`View result`,"time.days":`{count} days`,"time.hours":`{count} hours`,"timeline.emptyGoal":`This Goal has no new activity`,"timeline.emptyGoalDescription":`Ask for progress or send new guidance.`,"timeline.emptyWorkspace":`Your workspace is quiet today`,"timeline.emptyWorkspaceDescription":`Describe a Goal to the LoopX Manager, or ask what deserves attention today.`,"timeline.gateHistory":`{count} historical Gates`,"timeline.pending":`Working…`,"returnDelivery.queued":`Return queued`,"returnDelivery.verifying":`Verifying delivery without resending`,"returnDelivery.delivered":`Delivered to the original audience`,"returnDelivery.reconciled":`Delivery verified after recovery`,"returnDelivery.unverified":`Delivery remains explicitly unverified`,"timeline.runCompleted":`{run}: completed`,"timeline.review":`Review`,"timeline.reviewAndConfirm":`Review and confirm`,"timeline.waitingConfirmation":`Needs your confirmation`},"zh-CN":{"acceptance.connected":`已连接`,"acceptance.mapped":`已建立项目映射`,"acceptance.refreshed":`已刷新状态`,"acceptance.inspected":`已检查适配器`,"acceptance.recorded":`已记录执行`,"acceptance.judged":`已记录反馈`,"acceptance.approved":`已记录批准`,"acceptance.ready":`已记录控制器就绪`,"acceptance.attentionSource":`当前状态`,"acceptance.visionSource":`Agent 验收条件`,"acceptance.todoSource":`任务状态`,"acceptance.runSource":`最新执行证据`,"acceptance.title":`验收观察`,"acceptance.unavailable":`验收观测不可用,Goal 是否达成仍未知。`,"acceptance.partial":`当前仅有部分观测。任务完成或缺口列表为空,都不能证明 Goal 已通过验收。`,"acceptance.gaps":`仍需补充的证据`,"acceptance.reasonUnknown":`来源未提供原因`,"acceptance.unknown":`未知`,"acceptance.required":`所需证据或条件`,"acceptance.observed":`观测时间`,"acceptance.noGaps":`现有观测中没有缺口,尚未评估完整验收条件。`,"acceptance.guards":`待处理的门禁决策`,"acceptance.noGuards":`现有观测中没有待处理的门禁决策。`,"acceptance.scope":`决策范围`,"acceptance.next":`当前状态给出的下一步`,"acceptance.historical_progress":`已记录的历史进展`,"acceptance.historical":`历史生命周期记录不授予权限,也不代表通过验收。`,"acceptance.missing":`未获取的来源:`,"acceptance.truncated":`仅展示前 12 条观测。`,"common.actions":`操作`,"common.agent":`Agent`,"common.allMessages":`所有消息`,"common.cancel":`取消`,"common.close":`关闭`,"common.closeActionReceipt":`关闭操作回执`,"common.confirm":`确认`,"common.export":`导出`,"common.failed":`失败`,"common.goal":`Goal`,"common.loading":`加载中…`,"common.none":`无`,"common.off":`关闭`,"common.on":`开启`,"common.open":`打开`,"common.owner":`Owner`,"common.readOnly":`只读`,"common.recently":`刚刚`,"common.status":`状态`,"common.task":`Task`,"common.you":`你`,"common.waiting":`等待中`,"composer.addImage":`添加图片`,"composer.agentProgress":`向 Agent 获取进度报告`,"composer.agentProgressPrompt":`请给我一份当前 Goal 的进度报告:已完成、执行中、阻塞和下一步。`,"composer.blockers":`看阻塞`,"composer.attachImageHint":`选择、粘贴或拖入图片`,"composer.clarifyDefer":`暂缓 Todo 需要可自动判断的恢复条件。请补充 todo_done:、pr_merged:[owner/repo]#、capacity_available: 或 resume_at:<带时区 RFC3339 时间>。`,"composer.clarifySingleAction":`这句话包含多个可能修改状态的操作。请一次描述一项操作,我会逐项展示确认预览。`,"composer.evidence":`查证据`,"composer.createGoal":`创建新 Goal`,"composer.createGoalDraft":`Goal 草稿`,"composer.createGoalDraftDescription":`补充内容后发送,LoopX 会先展示待确认操作。`,"composer.createGoalDraftLead":`我想创建一个长期 Goal:`,"composer.createGoalTemplate":`我想创建一个长期 Goal: 目标: 完成标准: 执行边界(可选): @@ -33,18 +36,21 @@ Notification: Only notify me when needed`,"composer.nextAction":`Ask what’s ne 通知方式(可选):`,"composer.createGoalHint":`填入 Goal 模板草稿,检查后再创建`,"composer.globalProgress":`汇总所有 Goal 进展`,"composer.globalProgressPrompt":`请帮我汇总所有活跃 Goal 的最新进展与阻塞。`,"composer.globalTasks":`询问全局待办`,"composer.globalTasksPrompt":`有哪些 Goal 正在等我?我现在该优先处理什么?`,"composer.goalMessageHint":`你的消息由 {agent} 在本 Goal 的会话中接收`,"composer.goalRunningHint":`{agent} 正在执行 {count} 个任务 · 你的消息作为纠偏进入本会话,不会打断执行`,"composer.goalPlaceholder":`询问或纠偏 {goal}…`,"composer.imageAnalysisPrompt":`请结合这些图片分析当前 Goal,并告诉我下一步。`,"composer.imageCountError":`最多添加 {count} 张图片。`,"composer.imagePicker":`图片文件选择器`,"composer.imageReadError":`无法读取图片 {name}`,"composer.imageReadGenericError":`图片读取失败。`,"composer.imageSizeError":`单张图片不能超过 {size}MB。`,"composer.imageTypeError":`支持 PNG、JPEG、WebP 和 GIF 图片。`,"composer.imagesPending":`待发送图片`,"composer.managerMessageHint":`你的消息由 LoopX 管家跨 Goal 接收,支持全局询问与创建 Goal`,"composer.managerPlaceholder":`问问 LoopX 管家,或描述一个新 Goal…`,"composer.monitor":`配置定时检查`,"composer.monitorGoalQuestion":`为哪个 Goal 添加定时检查?`,"composer.monitorTemplate":`为当前 Goal 添加定时检查: 检查内容: 频率(支持 30 分钟 / 2 小时 / 每天):每 2 小时 +停止条件:Goal 完成`,"composer.monitorShortcutTemplate":`为当前 Goal 添加定时检查: +检查内容:{target} +频率:每 2 小时 停止条件:Goal 完成`,"composer.monitorTemplateWithoutGoal":`配置定时检查: Goal: 检查内容: 频率:每 2 小时 -停止条件:Goal 完成`,"composer.monitorHint":`先填写检查内容、频率和停止条件,不会立即创建`,"composer.heartbeatGoalQuestion":`为哪个 Goal 设置 Heartbeat?`,"composer.heartbeatTemplate":`为当前 Goal 设置 Heartbeat: +停止条件:Goal 完成`,"composer.heartbeatGoalQuestion":`为哪个 Goal 设置 Heartbeat?`,"composer.heartbeatTemplate":`为当前 Goal 设置 Heartbeat: 频率:每天 停止条件:Goal 完成 通知:仅在需要我时`,"composer.heartbeatTemplateWithoutGoal":`设置 Heartbeat: Goal: 频率:每天 停止条件:Goal 完成 -通知:仅在需要我时`,"composer.nextAction":`询问下一步`,"composer.nextActionPrompt":`我现在该做什么?`,"composer.send":`发送`,"composer.sendMessage":`向 LoopX 发送消息`,"composer.sendMessageHint":`发送消息`,"composer.sentImageAlt":`移除图片 {name}`,"conversation.agentPending":`正在整理…`,"conversation.close":`关闭对话回执`,"conversation.convertHint":`将 Agent 最新回复转为 Task 草稿`,"conversation.full":`查看完整对话`,"conversation.receipt":`对话回执`,"conversation.replying":`正在回复`,"conversation.title":`管家对话`,"conversation.toTask":`转为 Task`,"digest.away":`自上次访问以来的运行记录`,"digest.completed":`新增完成运行`,"digest.failed":`新增失败或中断`,"digest.needsYou":`当前待确认`,"feedback.applying":`正在执行:{title}`,"feedback.cancelFailed":`取消失败:{error}`,"feedback.completed":`已完成:{title}`,"feedback.executionFailed":`执行失败:{error}`,"feedback.gateRequired":`需要你确认:{summary}`,"feedback.notCompleted":`操作未完成:{status}`,"feedback.goalRefreshFailed":`已打开 Goal,但暂时无法刷新最新状态。请点击刷新重试。`,"feedback.preparingPreview":`正在准备确认预览:{title}`,"feedback.previewFailed":`无法准备确认预览:{error}`,"feedback.sendFailed":`发送失败:{error}`,"feedback.sendGenericError":`消息发送失败,请稍后重试。`,"feedback.stale":`状态已变化,操作未执行,请重新生成确认预览。`,"feedback.taskDraftCreated":`已根据回复生成 Task 草稿。编辑后发送,LoopX 会先展示确认预览。`,"goal.defaultTitle":`新的个人 Goal`,"goal.initialTodo":`按完成标准推进:{criteria}`,"goal.objectiveBoundary":`执行边界:{boundary}`,"goal.objectiveCompletion":`完成标准:{criteria}`,"drawer.advancedDiagnostics":`高级诊断`,"drawer.agentWorking":`Agent 正在继续执行,记录会自动更新。`,"drawer.analysis":`正在分析`,"drawer.apply":`确认并应用`,"drawer.applying":`正在应用…`,"drawer.attentionBlocking":`正在阻塞 Agent`,"drawer.attentionWaiting":`等待你的决定`,"drawer.autoNotify":`Human-gate 自动通知`,"drawer.branch":`分支`,"drawer.closeDetail":`关闭详情:返回{context}`,"drawer.connected":`已连接`,"drawer.correctionDescription":`消息会沿用当前 Goal、Todo 与 Agent Session 上下文。`,"drawer.correctionLabel":`与 {agent} 纠偏`,"drawer.correctionPlaceholder":`例如:先关注权限风险,暂时不要提交…`,"drawer.correctionSend":`发送纠偏`,"drawer.correctionTextarea":`输入纠偏信息:Goal {goal},Agent {agent},Run {run}`,"drawer.copyRepository":`复制仓库标识`,"drawer.copyRepositoryDone":`已复制仓库标识`,"drawer.copyRepositoryError":`复制失败,请检查浏览器剪贴板权限。`,"drawer.copyRepositorySuccess":`已复制,可粘贴到其他工具。`,"drawer.cost":`成本 24h / 7d`,"drawer.costShort":`成本`,"drawer.durationShort":`时长`,"drawer.period24h":`24 小时`,"drawer.period7d":`7 天`,"drawer.tokens":`Token 24 小时 / 7 天`,"drawer.tokensShort":`Token`,"drawer.usageNotMeasured":`未采集`,"drawer.currentGoal":`当前 Goal`,"attentionDetail.title":`事项说明`,"attentionDetail.request":`需要你做什么`,"attentionDetail.decision":`需要作出决定`,"attentionDetail.unknownRequest":`来源未明确,请先查看来源再判断`,"attentionDetail.open":`当前投影中待处理`,"attentionDetail.closed":`已关闭`,"attentionDetail.deferred":`已推迟`,"attentionDetail.superseded":`已被替代`,"attentionDetail.unknown":`来源未提供状态`,"attentionDetail.unavailable":`来源尚未确认当前事项,请刷新后再操作`,"attentionDetail.unknownReason":`来源尚未提供原因。`,"attentionDetail.targetTodo":`关联的待解锁 Todo`,"attentionDetail.targetAgent":`事项指定的 Agent`,"attentionDetail.scope":`声明的决策范围`,"attentionDetail.notProvided":`来源未提供`,"attentionDetail.replacement":`替代 Todo`,"attentionDetail.openReplacement":`打开替代事项`,"attentionDetail.boundary":`阅读详情不会关闭 gate 或授予权限;作出决定前仍需新的操作预览。`,"drawer.decisionDefaultEvidence":`当前状态没有附加公开安全证据;下一步仍会先展示 Preview。`,"drawer.decisionDefaultReason":`该决定会影响当前 Todo 的下一步执行。`,"drawer.decisionDefer":`稍后决定`,"drawer.decisionMore":`更多决定`,"drawer.decisionReject":`拒绝`,"drawer.decisionReview":`查看影响并决定`,"drawer.dependencies":`依赖`,"drawer.detailsAndActions":`详情与操作`,"drawer.duration":`运行时长 24h / 7d`,"drawer.evidence":`证据`,"drawer.executionHistory":`执行历史`,"drawer.executionRecord":`运行记录`,"drawer.executionRecordAndResult":`执行过程与结果`,"drawer.explainDecision":`解释此决定`,"drawer.gateApproveHint":`在终端执行一条命令即可完成审批:`,"drawer.gateRejectHint":`不同意就把末尾的 approve 换成 reject。执行后这条提醒会自动消失。`,"drawer.gateRequiresHost":`需要宿主确认`,"drawer.gateRequiresHostDescription":`页面无权直接批准这类权限变更,你的点击没有写入任何内容。`,"drawer.goalAutoRun":`当前 Goal 的自动运行`,"drawer.goalChanges":`当前 Goal 的待确认变更`,"drawer.goalDetails":`Goal 详情`,"drawer.group":`群聊`,"drawer.inspectorFull":`切换到全屏`,"drawer.inspectorFullView":`全屏查看`,"drawer.inspectorHalf":`切换到半屏`,"drawer.inspectorHalfView":`半屏查看`,"drawer.lastNotification":`最近通知`,"drawer.larkConfigure":`管理 Lark connection`,"drawer.larkConnect":`连接 Lark App`,"drawer.larkConnection":`Lark connection`,"drawer.larkNotConfigured":`未配置`,"drawer.larkNotConfiguredDescription":`配置后,当这个 Goal 出现需要你确认的变更时,会自动发飞书通知。`,"drawer.managerChanges":`管家待确认变更`,"drawer.moreActions":`更多操作`,"drawer.moreRunActions":`更多运行操作`,"drawer.nextTransition":`下一转换`,"drawer.noExecutionHistory":`暂无执行记录。`,"drawer.noRun":`尚未启动执行 Session`,"drawer.noRunDescription":`Agent 开始执行后,运行记录会稳定显示在这里。`,"drawer.notAssigned":`未分配`,"drawer.notLinked":`未关联`,"drawer.notSet":`未设置`,"drawer.outputDetails":`产出详情`,"drawer.outputRecorded":`该产出已记录到当前 Goal。`,"drawer.outputSafePreview":`公开安全产出预览`,"drawer.outputRun":`Run`,"drawer.outputTodo":`Todo`,"drawer.outputs":`本次运行产出`,"drawer.previewUnavailable":`此产出没有可用的公开安全内联预览。`,"drawer.priority":`优先级`,"drawer.progress":`进度`,"drawer.proposalApplied":`已应用,LoopX 状态将刷新。`,"drawer.proposalApplyFailed":`应用失败,没有写入任何变更。`,"drawer.proposalApplyFailedHint":`请刷新 Goal 状态后重新生成;若仍失败,可保留此页并查看高级诊断。`,"drawer.proposalClose":`关闭`,"drawer.proposalDefer":`稍后`,"drawer.proposalDeferred":`已暂缓,可稍后继续应用或重新生成。`,"drawer.proposalEnterGoal":`进入新 Goal`,"drawer.proposalExplainer":`确认后,LoopX 会执行这项变更并显示写入结果。关闭或取消不会修改任何状态。`,"drawer.proposalRecheck":`按最新状态重新检查`,"drawer.proposalRegenerate":`基于最新状态重试`,"drawer.proposalRejected":`已拒绝,这项变更不会写入。`,"drawer.proposalStale":`来源状态已变化,请按最新状态重新检查。`,"drawer.proposalViewGoal":`查看更新后的 Goal`,"drawer.reassign":`改派给`,"drawer.reassignSummary":`重新分配:{task}`,"drawer.reason":`原因`,"drawer.recoveryDescription":`本地历史已经保留,请选择恢复路径。`,"drawer.recoveryFailed":`上游 Session 恢复失败`,"drawer.recoveryNewSession":`携带上下文开始新 Session`,"drawer.recoveryRetry":`重试恢复`,"drawer.repositoryRole":`执行工作区`,"drawer.repository":`仓库`,"drawer.replyMode":`回复方式`,"drawer.subagentApplied":`已写入,并通过共享 Goal 状态读回校验。`,"drawer.subagentAppliedRefreshFailed":`已写入并通过共享 Goal 状态读回;状态投影刷新失败,可稍后手动刷新。`,"drawer.subagentApplying":`正在写入并校验共享状态读回…`,"drawer.subagentApplyFailed":`子代理设置写入失败。`,"drawer.subagentChildLimit":`当前上限`,"drawer.subagentConfirmDisable":`确认关闭子代理执行`,"drawer.subagentConfirmEnable":`确认开启子代理执行`,"drawer.subagentCurrentBoundary":`当前任务领域限制`,"drawer.subagentDescription":`仅在 Todo、配额、能力和写入范围门禁全部通过后,允许运行时为相互独立的任务临时创建子代理;不会强制并行,也不会授予持久权限。`,"drawer.subagentDisable":`预览关闭子代理执行`,"drawer.subagentDisableSummary":`这个 Goal 将不再创建新的子代理;现有 Todo 归属和执行记录不受影响。`,"drawer.subagentDomainInvalid":`所选任务领域限制无效。`,"drawer.subagentDomainTodoCount":`匹配 {count} 个开放 Todo`,"drawer.subagentDomains":`任务领域限制(可选)`,"drawer.subagentDomainsEmpty":`当前没有开放的 advancement Todo 声明 task_domain;保持为空即可不按任务领域限制子代理执行。`,"drawer.subagentDomainsHint":`全部不选表示不按任务领域过滤;选择后只放行匹配且已声明领域的 Todo,其他执行门禁始终生效。`,"drawer.subagentDomainsUnrestricted":`不限制任务领域`,"drawer.subagentEnable":`预览开启子代理执行`,"drawer.subagentLabel":`Per-Goal 执行边界`,"drawer.subagentModel":`子 Agent 模型`,"drawer.subagentEffort":`子 Agent 推理档位`,"drawer.subagentModelDefault":`宿主默认`,"drawer.subagentLunaPreset":`使用 Luna / max`,"drawer.subagentClearModel":`清除模型偏好`,"drawer.subagentModelHint":`填写后通过“预览配置调整”保存,执行关闭时也可保存偏好;启动时须核验宿主支持情况。`,"drawer.subagentModelRequired":`设置推理档位前请先指定子 Agent 模型。`,"drawer.subagentMaxChildren":`最多子代理数`,"drawer.subagentNoChange":`当前 Goal 已是这个设置,没有写入任何内容。`,"drawer.subagentPending":`待确认`,"drawer.subagentPreviewBoundary":`预览配置调整`,"drawer.subagentPreviewFailed":`无法生成子代理设置预览。`,"drawer.subagentPreviewing":`正在核对最新 Goal 状态…`,"drawer.subagentPreviewReady":`预览已锁定,确认后才会写入这个 Goal。`,"drawer.subagentPreviewSummary":`最多允许创建 {count} 个子代理;任务领域限制:{domains}。`,"drawer.subagentRemoteReadOnly":`当前来源只读,请在 Goal 所在主机上修改。`,"drawer.subagentTitle":`自适应子代理执行`,"drawer.remoteDetailsDescription":`SSH 来源只展示公开安全状态,不读取来源主机上的连接配置。`,"drawer.remoteDetailsUnavailable":`远端详情未投影`,"drawer.resumeNo":`否`,"drawer.resumeYes":`是`,"drawer.runDetails":`执行 Session`,"drawer.runInterrupt":`中断本次运行`,"drawer.runLatest":`查看最近执行过程`,"drawer.runNewSession":`开始新 Session`,"drawer.runCloseSession":`关闭 Session`,"drawer.runRecordEmpty":`还没有运行记录。Agent 尚未开始这次执行;请在“详情与操作”查看等待条件或恢复 Session。`,"drawer.runRecordProjected":`当前没有可展示的逐步运行记录。LoopX 已读取到 {completed}/{total} 的投影进度{outputs};请在“详情与操作”检查 Session 状态。`,"drawer.runRecordProjectedOutputs":`和 {count} 项产出`,"drawer.runRoleAssistant":`已完成`,"drawer.runRoleSystem":`需检查`,"drawer.runRoleUser":`收到任务`,"drawer.runView":`Session 视图`,"drawer.scheduleAdd":`添加定时检查`,"drawer.scheduleDefaultNotification":`仅在需要你时通知`,"drawer.scheduleDefaultStop":`Goal 完成或 owner 停止`,"drawer.scheduleDefaultTarget":`由 LoopX 调度器按 Goal 配置唤醒。`,"drawer.scheduleEdit":`改为每 2 小时`,"drawer.scheduleLast":`上次执行`,"drawer.scheduleLocalTimezone":`本地时区`,"drawer.scheduleNext":`下次执行`,"drawer.scheduleNeverRun":`尚未执行`,"drawer.scheduleNotification":`通知`,"drawer.schedulePause":`暂停`,"drawer.schedulePending":`等待调度`,"drawer.scheduleResume":`恢复`,"drawer.scheduleRunNow":`立即运行`,"drawer.scheduleStop":`停止{kind}`,"drawer.scheduleStopCondition":`停止条件`,"drawer.scheduleTimezone":`时区`,"drawer.sessionRecoverable":`可恢复`,"drawer.sessionStatus":`会话状态`,"drawer.setupHeartbeat":`设置 Heartbeat`,"drawer.taskActions":`Todo 待确认操作`,"drawer.taskAdvancement":`推进任务`,"drawer.taskBlock":`标记阻塞`,"drawer.taskComplete":`标记完成`,"drawer.taskCompletedNote":`该任务保留为只读记录。`,"drawer.taskCompletedTitle":`任务已完成`,"drawer.taskDefer":`暂缓`,"drawer.taskDeferCondition":`Todo 暂缓恢复条件`,"drawer.taskDeferInvalid":`条件格式不受支持;请使用下列可判定条件。`,"drawer.taskDeferPlaceholder":`例如 resume_at:2026-09-14T09:00:00+08:00`,"drawer.taskDeferReview":`检查暂缓`,"drawer.taskDeferSupported":`支持 todo_done、pr_merged、capacity_available 与带时区的 resume_at 条件。`,"drawer.taskDeferUntil":`暂缓至`,"drawer.taskDetails":`Todo 详情`,"drawer.taskInfo":`任务信息`,"drawer.taskManage":`管理任务`,"drawer.taskNextCompleted":`可创建后续任务`,"drawer.taskNextOpen":`推进或更新状态`,"drawer.taskOrdinary":`普通任务`,"drawer.taskStatusBlocked":`受阻`,"drawer.taskStatusDeferred":`已延期`,"drawer.resumeWhen":`恢复条件`,"drawer.resumeState":`恢复状态`,"drawer.resumePending":`等待条件满足`,"drawer.resumeReady":`可恢复`,"drawer.resumeReceipt":`恢复回执`,"drawer.taskNextDeferred":`等待恢复条件满足后重新评估`,"drawer.taskNextResumeReady":`恢复条件已满足,等待生命周期重新规划`,"drawer.taskStatusCompleted":`已完成`,"drawer.taskStatusOpen":`待执行`,"drawer.taskSuccessor":`创建后续 Todo`,"drawer.taskSuccessorNote":`Owner 标记为阻塞,等待补充上下文。`,"drawer.taskSuccessorSummary":`创建后续 Todo:{task}`,"drawer.taskSuccessorText":`{task} 的后续工作`,"drawer.taskType":`任务类型`,"drawer.topic":`Topic`,"drawer.trigger":`触发方式`,"drawer.titleAttention":`需要你`,"drawer.titleOutput":`产出详情`,"drawer.titleProposalApplied":`执行结果`,"drawer.titleProposalConfirm":`确认执行`,"drawer.titleSchedule":`定时检查`,"drawer.unconfigured":`未配置`,"drawer.workspaceCandidates":`可选择的工作区`,"files.emptySummary":`公开安全产出`,"files.empty":`还没有文件、产出或已验证的阶段周报。`,"files.loadingReports":`正在加载已验证的阶段周报…`,"files.reportDelta":`+{added} 新增 · {changed} 变化`,"files.reportAdded":`新增`,"files.reportChanged":`变化`,"files.reportGeneration":`生成批次`,"files.reportLoadFailed":`无法加载已验证周报`,"files.reportPublication":`发布批次`,"files.title":`Files & Outputs`,"files.verifiedReport":`已验证阶段周报`,"header.agentUnavailable":`不可用`,"header.chatRuntime":`Chat`,"header.workAgentCount":`{count} 个工作 Agent`,"header.chat":`Chat`,"header.files":`Files`,"header.goalCapabilities":`能力配置`,"header.goalCapabilitiesDescription":`管理 Goal override 与继承的本机默认值。`,"header.goalDetails":`Goal 详情`,"header.goalDetailsDescription":`查看状态、用量、仓库、通知与 Session。`,"header.goalSettings":`Goal 设置`,"header.goalSettingsDescription":`打开 Goal 详情或能力配置`,"header.goalNavigation":`Goal 导航`,"header.goalView":`Goal 视图`,"header.live":`实时`,"header.manager":`LoopX 管家`,"header.managerDescription":`跨 Goal 的个人工作入口`,"header.managerRuntime":`{profile} · {sandbox}`,"header.managerRuntimeFallback":`配置无效,已回退到 {profile} · {sandbox};请在机器能力设置中修复。`,"header.managerExecutorKindIndividual":`个人 CLI 登录`,"header.managerExecutorKindManaged":`operator 凭据`,"header.managerExecutorKindRegistered":`注册端点`,"header.managerExecutionUnavailable":`所选执行器 {executor} 无法在本机启动;该通道不会回落到个人 CLI 登录。`,"header.managerExecutionUnavailableCredential":`所选执行器 {executor} 需要 operator 凭据 {credential},配置后该通道才能启动它。`,"header.managerExecutionUnavailableRuntime":`所选执行器 {executor} 无法在本机启动:本机未安装其 runtime。`,"header.managerExecutionUnavailableEffort":`所选执行器 {executor} 拒绝了当前配置的推理档位;请改为受支持的档位后刷新。`,"header.managerEndpointStewardDefault":`当前运行 {executor},管家通道的出货默认值;如需改指请显式选择执行器。`,"header.managerOverview":`总览`,"header.managerView":`管家视图`,"header.openGoalNavigation":`打开 Goal 导航`,"header.readOnlySourceDescription":`{source} 通过 SSH 隧道只读展示`,"header.refresh":`刷新状态`,"header.refreshDone":`刚刚更新`,"header.refreshFailed":`刷新失败`,"header.refreshing":`刷新中`,"header.selectAgent":`选择 Agent`,"header.selectChatRuntime":`选择聊天 Runtime`,"header.tasks":`Tasks`,"header.themeBrutal":`切换到野兽主题`,"header.themePaper":`切换到默认主题`,"home.blockingSummary":`其中 {count} 项正在阻塞 Agent。`,"home.completedGoals":`已完成的 Goal`,"home.empty":`当前没有`,"startup.goalLoading":`正在加载状态…`,"startup.goalError":`状态加载失败`,"startup.progress":`已加载 {loaded} / {total} 个活跃 Goal`,"startup.partial":`Goal 状态正在逐个更新,当前统计尚不完整。`,"startup.independent":`此 Goal 的加载不会阻塞其他 Goal,你可以先查看已加载的内容。`,"startup.error.timeout":`读取超时,可在本地服务就绪后重试。`,"startup.error.network":`连接中断,请重试以重新连接。`,"startup.error.service":`Goal 状态读取失败。请稍后重试;若问题持续,请检查状态来源。`,"startup.error.access":`状态来源无法访问此 Goal 所需的文件或运行时目录。请检查该来源运行账户的访问权限,修复后重试。`,"startup.error.revision":`加载期间 Goal 目录发生变化,请刷新以同步。`,"startup.error.scope":`该 Goal 已不在当前来源中,请刷新目录。`,"startup.error.invalid":`无法解析状态响应,请刷新或检查 LoopX 更新。`,"startup.retry":`重试`,"startup.retryFailed":`重试失败的 Goal`,"startup.failedCount":`{count} 个 Goal 加载失败,已加载的 Goal 可继续使用。`,"home.greeting":`你好,我是 LoopX 管家`,"home.history":`历史`,"home.lane.needsYou":`需要你`,"home.lane.needsYouDescription":`等待你的决定、授权或补充信息`,"home.lane.observing":`观察中`,"home.lane.observingDescription":`持续监控,出现变化时再提醒你`,"home.lane.running":`执行中`,"home.lane.runningDescription":`Agent 正在推进并持续回传进展`,"home.lane.scheduled":`已安排`,"home.lane.scheduledDescription":`已经安排,等待时间或前置条件`,"home.noActivity":`尚无活动`,"home.noFirstActivity":`等待首次活动`,"home.noCompletedGoals":`还没有已完成的 Goal`,"home.preservedState":`保留状态,可随时恢复`,"home.stopped":`已停止`,"home.systemHealth":`系统健康:{summary}`,"home.taskCount":`{count} 个 Task`,"home.todayAt":`今天 {time}`,"home.waitingCount":`你有 {count} 项需要处理。`,"home.workspace":`Goal 工作区`,"lark.allMessages":`此 Topic 中的所有消息`,"lark.allTopicMessages":`所有 Topic 消息`,"lark.agentIngress":`Agent 入站方式`,"lark.agentAppPermissions":`每个选中的 Agent 都需要一个已具备群聊提及和回复能力的 Lark App。`,"lark.agentApps":`每个 Agent 的 Lark App`,"lark.agentAppsDescription":`默认使用上方 App;需要独立机器人身份时,可为 Agent 选择另一个兼容 App。`,"lark.agentAppSelection":`{agent} 的 Lark App`,"lark.appCreated":`App 已创建`,"lark.appCreateFailed":`创建失败`,"lark.appLoading":`正在加载可用的 Lark Apps…`,"lark.appPermissions":`该 App 能发送建联消息,但缺少接收群聊 @ 消息或自动回复所需的机器人权限。请开启 im:message.group_at_msg:readonly、im:message.send_as_bot 和事件 im.message.receive_v1,发布新版后刷新。`,"lark.appProfile":`Lark App`,"lark.apps":`Lark Apps`,"lark.autoReplyUnavailable":`自动回复暂不可用`,"lark.autoReplyReady":`自动回复可用`,"lark.bindGoal":`绑定到 Goal`,"lark.cancel":`取消`,"lark.cardinality":`一个 Lark App · 多个 Goal · 每个 Agent 一条隔离路由`,"lark.capture":`接收范围`,"lark.captureAddressed":`仅接收提及 App 或回复 App 的消息`,"lark.captureAll":`接收此 Goal Topic 中的所有消息`,"lark.captureScope":`接收范围`,"lark.captureScopeDescription":`决定哪些 Topic 消息会进入 LoopX;不会扩大 Agent 权限。`,"lark.closeConnection":`关闭连接弹窗`,"lark.closeCreate":`关闭创建弹窗`,"lark.closeSettings":`关闭 Lark 设置`,"lark.connect":`连接`,"lark.connectAllAgents":`连接全部已注册 Agent`,"lark.connectAllAgentsAction":`一键连接 {count} 个 Agent`,"lark.connectAllAgentsDescription":`一次引导创建 {count} 个隔离的 Agent Topic;请在对应 Topic 内发送请求,每个 Agent 保留独立路由和收件箱。`,"lark.connectApp":`连接 Lark App`,"lark.connection":`连接`,"lark.connections":`连接`,"lark.configuration":`Lark 配置`,"lark.continueFeishu":`在飞书中继续`,"lark.createAutomatically":`自动创建 Goal Topic`,"lark.createAutomaticallyDescription":`将为每个选中的 Agent 创建带 Agent 标识的专属 Topic。`,"lark.defaultAgentAppDescription":`用于查找目标群聊,并作为所有选中 Agent 的默认 App;下方的逐 Agent 选择可覆盖它。`,"lark.description":`管理可复用的 Lark App,并用独立 Topic 将群聊连接到 Goal。`,"lark.editConnection":`编辑 Lark 连接`,"lark.goalConnections":`{count} 个 Goal 连接`,"lark.goalTopicConnections":`Lark Goal Topic 连接`,"lark.groupChat":`群聊`,"lark.groupEmpty":`该机器人尚未加入可连接的群。请先在飞书群设置中添加这个机器人,再回来刷新或搜索。`,"lark.groupLoading":`正在读取该机器人已加入的群…`,"lark.groupSearch":`搜索该机器人已加入的群`,"lark.historyPermission":`历史补读权限(独立能力)`,"lark.health.contextCaptured":`已捕获群聊上下文`,"lark.health.contextCapturedDetail":`该消息仅作为非权威上下文保留,不会启动或引导管家 Turn;需要执行时请直接 @ 机器人或回复机器人的消息。`,"lark.health.eventProcessed":`已处理 {events} 条事件,成功回复 {replies} 条。`,"lark.health.eventUnverified":`事件订阅待验证`,"lark.health.eventUnverifiedDetail":`Provider listener 已就绪,但尚未收到消息事件。请启用 im.message.receive_v1、开通群聊 @ 消息权限并发布新版,然后在这个 Agent Topic 内发送新的 @ 消息;存在多条 Agent 路由时,群顶层消息会 fail closed。`,"lark.health.ignoredSelf":`已忽略机器人自身发送的消息,避免重复回复。`,"lark.health.invalidRouting":`路由配置无效`,"lark.health.invalidRoutingDetail":`连接已安全停用,请重新选择处理方式并保存。`,"lark.health.lastStatus":`最近事件状态:{status}`,"lark.health.listening":`监听中`,"lark.health.messageContextPermission":`消息权限不足`,"lark.health.messageContextPermissionDetail":`已收到消息事件,但无法读取群消息上下文。请发布并授权该 App 的群消息读取权限。`,"lark.health.notAddressed":`最近消息未直接 @ 机器人`,"lark.health.notAddressedDetail":`监听正常;当前连接只响应直接 @ 机器人或对机器人的回复。`,"lark.health.notStarted":`监听未启动`,"lark.health.notStartedDetail":`请刷新连接或重新启动 LoopX 后再试。`,"lark.health.processingFailed":`消息处理失败`,"lark.health.processingFailedDetail":`已收到消息事件,但 Agent 处理失败。请查看本地诊断后重试。`,"lark.health.queued":`已进入 Agent 收件箱`,"lark.health.queuedDetail":`消息由 {agent} 异步处理,不会启动通用 Chat Session。`,"lark.health.sourceDisconnected":`实时消息连接断开`,"lark.health.sourceDisconnectedDetail":`消息监听进程意外退出。请核对应用档案的平台:飞书应用选飞书,国际版 Lark 应用选 Lark,再检查连接及订阅错误。LoopX 正在重试;历史消息能读取,不代表能实时收消息。`,"lark.health.retrying":`监听重试中`,"lark.health.retryingDetail":`事件监听暂时中断,LoopX 正在自动重试。`,"lark.health.routeAmbiguous":`消息匹配多个 Goal`,"lark.health.routeAmbiguousDetail":`同一 Bot 和群聊存在多个完整群捕获连接。请让每个 Agent 使用独立 Bot,或只保留一个完整群连接。`,"lark.health.routeMismatch":`消息未匹配当前 Goal Topic`,"lark.health.routeMismatchDetail":`事件来自其他群聊或 Topic。请重新选择群聊并连接该 Goal,然后发送一条新的 @ 消息。`,"lark.health.routeUnavailable":`消息无法路由到 Goal`,"lark.health.routeUnavailableDetail":`当前连接信息不完整。请重新连接该 Goal 后再发送一条新的 @ 消息。`,"lark.health.starting":`正在启动`,"lark.health.startingDetail":`LoopX 正在启动该 App 的消息事件监听。`,"lark.health.unavailable":`自动回复不可用`,"lark.health.waiting":`等待处理`,"lark.incomingMessages":`接收消息`,"lark.ingressAsync":`异步收件箱`,"lark.ingressAsyncDescription":`写入 Agent 私有收件箱,等待后续显式处理。`,"lark.editPreservesIdentity":`保存会保留此 App、群和 Topic;旧连接默认升级为 Agent 异步收件箱。`,"lark.conversationKind":`连接用途`,"lark.managerConversation":`管家 · 同步对话`,"lark.workerConversation":`工作 Agent · 后台任务`,"lark.managerConversationDescription":`内置管家即时回应对话,长任务交给后台 Agent。群聊与私聊分别保存上下文。`,"lark.ingressLegacy":`待升级`,"lark.ingressLegacyDescription":`保存连接即可升级为 Agent 异步收件箱,已有消息保留在原 Topic 中。`,"lark.ingressQueue":`排队`,"lark.ingressQueueDescription":`进入同一 Agent Session 的有界 FIFO 队列,当前 Turn 完成后处理。`,"lark.ingressSteering":`实时引导`,"lark.ingressSteeringDescription":`投到当前活跃 Turn;没有精确活跃 Turn 时安全拒绝。`,"lark.loading":`加载 Lark 配置…`,"lark.management":`Lark 管理`,"lark.openEventSettings":`查看飞书事件配置`,"lark.mentions":`提及机器人`,"lark.mentionsOnly":`仅提及消息`,"lark.needsMessagePermissions":`需要消息权限`,"lark.needsSetup":`需要设置`,"lark.newApp":`新建 Lark App`,"lark.noAgentConfigured":`未配置 Agent`,"lark.noConnections":`暂无匹配的连接。`,"lark.noProfiles":`还没有可用的 lark-cli App profile。`,"lark.profileName":`Profile 名称`,"lark.profileValidation":`Profile 只能包含字母、数字、点、下划线和连字符。`,"lark.processing":`处理方式`,"lark.region":`区域`,"lark.registerAnother":`+ 注册另一个 Lark App — 通过飞书创建`,"lark.reopenFeishu":`重新打开飞书`,"lark.settingsConfigure":`配置 {goal}`,"lark.settingsDisconnect":`解绑 {goal}`,"lark.replyMode":`回复方式`,"lark.replyModeDescription":`当前只支持在来源 Topic 内回复,避免跨群或跨 Goal 投递。`,"lark.reusableApps":`{count} 个可复用 App`,"lark.reusableWorkspaceApp":`可复用工作区 App`,"lark.routesUnverified":`{count} 条 Lark 路由尚未验证`,"lark.saveConnection":`保存连接`,"lark.searchConnections":`搜索 Lark 连接`,"lark.searchPlaceholder":`搜索 App、群、Goal 或 Topic`,"lark.setupCopy":`LoopX 将通过 lark-cli 打开飞书官方创建页面。应用凭证保存在系统 Keychain,LoopX 只保留 profile 引用。`,"lark.someoneMentions":`有人提及 Agent`,"lark.targetAgent":`目标 Agent`,"lark.targetAgentDescription":`选择该 Goal 内已注册的 Agent。此连接只投递给一个 Agent,不广播、不授予新权限。实时引导与排队需要该 Agent 的精确活跃 Session。`,"lark.agentUnavailable":`{agent} · 已不可用`,"lark.selectRegisteredAgent":`请先选择可用的已注册 Agent;不会自动替换原先的接收者。`,"lark.topicPreview":`Topic 预览`,"lark.topicReply":`Topic 回复`,"lark.trigger":`触发方式`,"lark.waitingFeishu":`等待飞书完成创建`,"lark.waitingFeishuDescription":`请在新窗口中完成飞书授权,完成后会自动回到这里。`,"lark.waitingLink":`正在生成飞书官方创建链接…`,"lark.error.appCreate":`Lark App 创建失败`,"lark.error.appRequired":`请选择一个 Lark App profile。`,"lark.error.bind":`绑定失败`,"lark.error.bindPreview":`绑定预览失败`,"lark.error.configuration":`Lark 配置加载失败`,"lark.error.groupLookup":`无法读取该机器人已加入的群。请检查机器人状态后重试。`,"lark.error.groupLoad":`群聊加载失败`,"lark.error.invalidApp":`Lark App profile 不可用或尚未完成授权。`,"lark.error.messagePermissions":`该 App 缺少自动回复所需的机器人权限。请开启 im:message.group_at_msg:readonly 和 im:message:send_as_bot,发布新版后回来刷新重试。`,"lark.error.provider":`飞书 API 调用失败,且没有生成已验证回执。请稍后重试。`,"lark.error.setupPoll":`创建状态查询失败`,"lark.error.setupStart":`无法启动 Lark App 创建流程`,"lark.error.cliExecutable":`已找到配置的 lark-cli,但当前无法执行。请检查安装或启动参数。`,"lark.error.cliMissing":`未发现 lark-cli。请先安装 lark-cli,然后重新启动 LoopX。`,"lark.error.cliStart":`lark-cli 启动失败。请检查安装状态,然后重新启动 LoopX。`,"lark.error.disconnect":`解绑失败`,"notifications.autoNotify":`需要你确认时自动推送到群里`,"notifications.bind":`绑定到通知群`,"notifications.bindConfirm":`将把「{goal}」绑定到通知群「{target}」,绑定时会验证机器人在群内并发送一条确认消息。`,"notifications.bindFailed":`绑定失败`,"notifications.bound":`已绑定`,"notifications.confirmBind":`确认绑定`,"notifications.description":`把 Goal 里需要你确认的变更推送到飞书群。绑定和开关在这里完成,推送逻辑沿用现有通道。`,"notifications.disabled":`已停用`,"notifications.group":`通知群:{target}`,"notifications.loadFailed":`通知群列表加载失败`,"notifications.noTargets":`还没有可用的通知群。通知群涉及机器人私有身份,请先在终端配置一次:`,"notifications.notBound":`未绑定`,"notifications.recent":`最近 {time}`,"notifications.sentCount":`已发送 {count} 条`,"notifications.settings":`Goal 通知绑定`,"notifications.setupFailed":`设置失败`,"notifications.title":`飞书群通知`,"proposal.field.agentId":`Agent`,"proposal.field.cadence":`频率`,"proposal.field.completionCriteria":`完成标准`,"proposal.field.executionBoundary":`执行边界`,"proposal.field.goalId":`Goal ID`,"proposal.field.heartbeat":`Heartbeat`,"proposal.field.initialTodos":`首个任务`,"proposal.field.objective":`目标`,"proposal.field.operation":`操作`,"proposal.field.operationState":`操作状态`,"proposal.field.resultDelivery":`结果回传`,"proposal.field.confirmationBoundary":`确认边界`,"proposal.field.expiresAt":`过期时间`,"proposal.field.permission":`权限`,"proposal.field.reason":`原因`,"proposal.field.stopCondition":`停止条件`,"proposal.field.target":`检查内容`,"proposal.field.timezone":`时区`,"proposal.field.title":`标题`,"proposal.field.workspace":`执行工作区`,"actionReview.targetChanged":`预览目标与请求的 Goal 或操作不一致,请重新生成预览。`,"actionReview.ready_stop":`暂停可恢复。此预览已通过检查,可直接执行;完成仍需要读回验证。`,"actionReview.resume_review":`恢复自动调度前需要确认。实际执行仍受额度、Gate 和 Todo 约束。`,"actionReview.delete_review":`请确认从注册表移除这个已停止 Goal。项目文件与历史记录会保留。`,"actionReview.action_review":`执行前请检查此提案的目标与影响。`,"actionReview.protected_action":`此操作需要明确审阅。确认不能替代所需授权。`,"actionReview.unknown_permission":`无法识别权限分类。请重新检查提案后再继续。`,"actionReview.unknown_action":`无法识别此生命周期操作。请重新检查提案后再继续。`,"actionReview.incomplete_proposal":`预览缺少验证信息或可执行转换。请重新生成预览。`,"actionReview.authority_gate":`Gate 阻止执行。请满足其要求后重新检查提案。`,"actionReview.stale_proposal":`来源状态已变化。请重新生成预览,原决定不再适用。`,"actionReview.apply_pending":`正在执行,请等待读回结果后再重试。`,"actionReview.readback_verified":`操作已完成,结果状态已通过读回验证。`,"actionReview.readback_unverified":`操作返回但未通过读回验证。尚不能确认完成,请重新检查状态。`,"actionReview.operation_group_confirmation":`这份精确请求只能在已绑定飞书群的原始卡片确认;Dashboard 不提供本地执行入口。`,"actionReview.operation_result_delivery_pending":`操作结果已经记录,但原群结果卡尚未通过回读核验。`,"actionReview.apply_failed":`执行未完成。请检查失败原因并重新生成预览后再试。`,"actionReview.inactive_proposal":`此提案当前不可执行。请重新检查后再继续。`,"proposal.gate.default":`需要宿主确认`,"proposal.impact.default":`确认后会调用规范 LoopX 服务写入状态。`,"proposal.impact.goalCreate":`确认后会创建 Goal 和首个 Todo,并让选定 Agent 开始首轮推进。`,"proposal.impact.lifecycleDelete":`确认后会从 source registry 和 global registry 移除这个已停止 Goal;项目文件、历史状态文件和备份不会被删除。`,"proposal.impact.lifecycleResume":`确认后会恢复 Goal 的自动调度资格并移回 Active Goals;实际执行仍受 quota、Gate 和 Todo 约束。`,"proposal.impact.lifecycleStop":`确认后会停止自动推进,并将 Goal 移入折叠的「已停止」列表;历史、Todo 和证据都会保留,可随时恢复。`,"proposal.impact.protected":`该操作需要通过受保护的 LoopX 写入服务完成。`,"proposal.impact.operation":`这里仅展示同一份不可变条款。请在已绑定的飞书群确认或拒绝;确认只会消费一个规范 claim。`,"proposal.primary.apply":`确认并应用`,"proposal.primary.goalCreate":`创建 Goal 并开始首轮`,"proposal.primary.lifecycleDelete":`删除 Goal`,"proposal.primary.lifecycleResume":`恢复 Goal`,"proposal.primary.lifecycleStop":`停止 Goal`,"proposal.primary.todoStart":`创建任务并开始执行`,"proposal.primary.operationGroup":`前往飞书群确认`,"proposal.primary.operationResultPending":`结果卡回传待恢复`,"proposal.primary.operationResultVerified":`结果已核验`,"proposal.resultDelivery.verified":`已在原群卡片完成回读核验`,"proposal.resultDelivery.pending":`等待回传并核验原群卡片`,"proposal.summary.goalCreate":`创建 Goal:{title}`,"proposal.summary.heartbeat":`为当前 Goal 设置 Heartbeat`,"proposal.summary.lifecycleDelete":`删除 Goal:{title}`,"proposal.summary.lifecycleResume":`恢复 Goal:{title}`,"proposal.summary.lifecycleStop":`停止 Goal:{title}`,"proposal.summary.monitor":`为当前 Goal 创建定时检查:{target}`,"proposal.summary.teamPlan":`为 {goal} 配出 {count} 条 lane 的团队`,"proposal.impact.teamPlan":`确认后会通过既有 owner 为每条就绪 lane 创建它的首个有界 Todo;声明了编制缺口的 lane 不创建任何东西;apply 回执返回前不存在任何 lane;预览与 apply 之间 Goal 或 Agent 发生变化会让这条提案变为 stale,而不是按漂移后的编制执行。`,"proposal.primary.teamPlan":`确认并组建各 lane`,"proposal.field.laneGaps":`未配齐的 lane`,"proposal.field.quotaEnvelope":`配额包络`,"proposal.teamPlan.acceptanceShort":`验收`,"proposal.teamPlan.gapLane":`未配齐`,"proposal.teamPlan.laneUnstaffed":`编制缺口,无首个 Todo`,"proposal.workspace.current":`当前本地工作区(未绑定 Repository)`,"proposal.workspace.named":`{workspace}(仅提供执行环境,不会自动关联仓库)`,"proposal.workspaceGate.agentImpact":`先完成 Agent 身份绑定,再重新检查原操作;当前没有写入 Goal。`,"proposal.workspaceGate.agentTitle":`先绑定 Agent`,"proposal.workspaceGate.defaultSummary":`请选择 Goal 所属工作区。`,"proposal.workspaceGate.selectionImpact":`选择工作区后会重新展示待确认操作,选择本身不会写入状态。`,"proposal.workspaceGate.selectionTitle":`选择 Goal 工作区`,"projection.agentAdvancingGoal":`Agent 正在推进当前 Goal`,"projection.agentIdle":`暂无需要你处理`,"projection.agentNeedsDecision":`Agent 等待你的决定`,"projection.agentPreparingNextStep":`Agent 正在整理下一步`,"projection.agentStopped":`已由你停止;历史、Todo 和证据仍保留`,"projection.agentWaitingExternal":`正在等待外部条件`,"projection.confirmAgentDecision":`请确认 Agent 下一步需要的权限或决策`,"projection.events24h":`24 小时内 {count} 个事件`,"projection.firstReadOnlyAdapterCheck":`执行首次只读适配检查并保存进度`,"projection.goalVerified":`Goal 状态、Todo 与注册信息已验证`,"projection.latestRun":`最近运行`,"projection.latestValidation":`最近验证`,"projection.nextUpdatePending":`等待 LoopX 更新下一步`,"projection.publicSafeProjection":`公开安全状态投影`,"projection.refreshState":`刷新 LoopX 状态,确认当前进度仍然有效`,"projection.runEvidenceAvailable":`存在可查看的运行证据`,"projection.runRecorded":`最近一次 LoopX 运行已经记录`,"projection.statusRefreshNeeded":`LoopX 状态需要刷新`,"projection.todoStatusUpdated":`Todo 状态已经更新,正在确认下一步`,"projection.validationRecorded":`最近验证已经记录`,"runs.completed":`已完成`,"runs.failed":`需检查`,"runs.interrupted":`已中断`,"runs.queued":`已安排`,"runs.ready":`可继续`,"runs.resumeFailed":`恢复失败`,"runs.running":`执行中`,"runs.unknown":`状态未知`,"runs.waiting":`等待条件`,"schedule.active":`执行中`,"schedule.heartbeat":`Goal Heartbeat`,"schedule.monitor":`定时与持续任务`,"schedule.paused":`已暂停`,"schedule.summary":`按 LoopX 调度约束持续检查`,"schedule.defaultTarget":`检查当前 Goal 的阻塞、进度与新产出`,"schedule.unsupportedCalendar":`当前定时检查不支持精确到星期或时刻的日历计划。请改用固定间隔,例如“每 30 分钟”“每 2 小时”或“每天”;草稿已保留,没有生成待确认操作。`,"source.add":`添加来源`,"source.addConfigured":`添加只读来源`,"source.addMethod":`来源添加方式`,"source.addSsh":`添加 SSH 隧道来源`,"source.closeForm":`关闭来源表单`,"source.configured":`已配置 SSH`,"source.configuredCount":`本机 SSH Host · {count} 个`,"source.configuredGroup":`已配置 SSH Host · {count}(点击快速添加)`,"source.connected":`已连接`,"source.connecting":`连接中`,"source.controlPlane":`控制面来源`,"source.copy":`复制`,"source.copyCommand":`复制 SSH 隧道命令`,"source.copyError":`无法复制命令,请手动复制下方命令。`,"source.copied":`已复制`,"source.description":`已读取全部显式 Host(含 Include);通配规则不会作为具体来源。先运行命令,LoopX 不读取密钥或配置细节。`,"source.host":`本机 SSH Host`,"source.hostEmpty":`~/.ssh/config 中没有可直接选择的显式 Host。`,"source.hostLoadError":`无法读取本机 SSH Host。`,"source.hostPlaceholder":`输入或搜索 Host`,"source.invalid":`SSH 来源参数无效。`,"source.loadingHosts":`正在读取…`,"source.localInteractive":`本机交互`,"source.localPort":`本地端口`,"source.manual":`手动 URL`,"source.manualDescription":`远端来源始终按只读投影处理,不继承本机写权限。`,"source.name":`名称`,"source.namePlaceholder":`远程开发机`,"source.notAvailable":`不可用`,"source.readOnly":`SSH 隧道 · 只读`,"source.readOnlyNoticeDescription":`你可以查看 Goal、Task、证据与运行状态;写入、纠偏和 Agent 会话仍留在来源主机。`,"source.readOnlyNoticeTitle":`远端只读投影`,"source.readOnlyWriteError":`远端 SSH 隧道来源是只读投影,不能执行控制面写入。`,"source.refreshHosts":`重新读取 SSH Host`,"source.remove":`移除来源 {source}`,"source.removeCurrent":`移除当前来源`,"source.select":`选择控制面来源`,"source.selectHost":`请选择已配置的 SSH Host。`,"source.statusUrl":`本地转发 URL`,"source.tunnelCommandPending":`选择 Host 后生成隧道命令`,"machine.absent":`尚未配置`,"machine.action.create":`创建机器策略`,"machine.action.delete":`移除机器策略`,"machine.action.unchanged":`无需写入`,"machine.action.update":`更新机器策略`,"machine.applied":`机器策略已应用,并通过回读校验。`,"machine.applyError":`无法应用机器策略。`,"machine.applyPreview":`应用已审阅预览`,"machine.changedNamespaces":`变更的 Namespace`,"machine.capabilityCatalog":`机器能力目录`,"machine.capabilityEmpty":`当前没有注册可在机器作用域配置的能力。`,"machine.configured":`已配置`,"machine.confirmRollback":`确认回滚`,"machine.currentRevision":`当前 Revision`,"machine.currentValue":`当前机器值`,"machine.description":`与 Goal 设置共用能力目录。在这里管理受支持的机器默认值;仅支持 Goal 配置的能力会明确标注。`,"capabilities.rawJson":`高级:原始 JSON`,"machine.goalOnly":`此能力目前仅支持 Goal 级配置。请打开具体 Goal 的能力设置进行配置;这里不会设置机器级默认值。`,"machine.desiredRevision":`目标 Revision`,"machine.editorUnavailable":`当前版本未安装此 Namespace 的编辑器`,"machine.editorUnavailableDescription":`它仍会显示在 Registry 中;安装或升级对应的 Dashboard 编辑器后才能修改。`,"machine.editorMode":`编辑模式`,"machine.liveDefault":`实时默认值;Goal 显式覆盖优先`,"machine.liveDefaultDescription":`没有显式覆盖的 Goal 会在该能力下一次决策时读取当前机器策略。修改或移除策略会立即影响这些已有 Goal;显式 Goal 覆盖保持固定。`,"machine.credentialTitle":`操作者模型凭据`,"machine.credentialDescription":`管家通道与托管宿主在本机认证用的 key 与 endpoint。key 单独存放于仅属主可读的文件,不会进入这里展示的机器配置,也不会被回读——回读的是它的指纹。`,"machine.credentialApiKey":`API key`,"machine.credentialApiKeyPlaceholder":`粘贴 key 以保存;留空则保留已存的 key`,"machine.credentialBaseUrl":`Endpoint base URL`,"machine.credentialBaseUrlPlaceholder":`https://endpoint.example/v1(留空则使用 endpoint 默认值)`,"machine.credentialStore":`保存凭据`,"machine.credentialClearKey":`清除已存 key`,"machine.credentialClearUrl":`清除已存 endpoint`,"machine.credentialConfigured":`已配置`,"machine.credentialAbsent":`未配置`,"machine.credentialInvalid":`无法读取——需要修复`,"machine.credentialSourceMachine":`本机已存凭据`,"machine.credentialSourceEnvironment":`服务环境变量`,"machine.credentialSourceUnset":`无来源`,"machine.credentialFingerprint":`指纹`,"machine.credentialStored":`凭据已保存。下一轮即生效,无需重启。`,"machine.credentialCleared":`已清除本机存储的凭据。`,"machine.credentialError":`凭据保存失败。`,"machine.credentialBoundary":`保存凭据不授予任何权限:它不会选择执行器、模型或推理强度。`,"machine.genericNamespaceDescription":`使用 JSON 编辑这个已注册 Namespace。LoopX 会先按 capability 自己拥有的 schema 校验,再允许预览写入。`,"machine.jsonConfiguration":`Namespace 配置(JSON)`,"machine.jsonConfigurationHelp":`只更新当前 Namespace;其他机器配置会保留,Apply 仍锁定到已审阅的 Preview Revision。`,"machine.jsonEditor":`JSON`,"machine.editJson":`编辑 JSON`,"capabilities.jsonConfiguration":`Goal 配置(JSON)`,"capabilities.jsonHelp":`仅编辑当前 Goal 的已注册字段。修改后需重新预览才能应用。`,"capabilities.jsonInvalid":`请输入合法的 JSON 对象,且仅包含已注册的可编辑字段。`,"machine.backToForm":`返回表单`,"machine.jsonInvalid":`请先填写一个合法的 JSON object,再预览变更。`,"machine.loadError":`无法读取机器配置。`,"machine.invalidStoredConfiguration":`已保存的机器配置需要修复`,"machine.invalidStoredConfigurationDescription":`已保存值不再符合当前契约,因此不会在这里显示。请检查已定位的能力,并通过“预览”和“应用”替换它;无关 namespace 保持不变。`,"machine.machinePolicy":`机器策略`,"machine.namespaceCount":`已注册 Namespace`,"machine.namespaces":`配置 Namespace`,"machine.periodicReport":`周期报告`,"machine.periodicReportDescription":`为所有未显式覆盖的 Goal 提供默认报告策略;Goal 调度与发送消费解析后的有效配置。`,"machine.periodicReportActivation":`开启后将在已验证的阶段节点自动投递`,"machine.periodicReportActivationDescription":`这不是每周定时器。当 LoopX 验证 Goal 已完成一个阶段时,Agent 会生成并冻结报告,随后通过配置的 Goal Channel 自动发送。启用此订阅即授予持续投递权;发送失败或路由漂移会 fail closed 并进入修复。`,"machine.changeQualityActivation":`质量验证是质量门禁,不是新增授权`,"machine.changeQualityActivationDescription":`继承该策略的 Goal 会验证最终精确 diff。safe_fix 只允许在既有写入权限内执行至多一次有界修复;此设置不会授予文件、权限或合并权。`,"machine.replanCadenceActivation":`复核周期只改变时机,不改变执行权限`,"machine.replanCadenceActivationDescription":`没有显式覆盖的 Goal 会在下一次复核决策前读取此阈值;它不会创建 Turn、消耗配额或授予权限。`,"machine.preview":`审阅机器配置变更`,"machine.previewChanges":`预览变更`,"machine.previewError":`无法生成机器策略预览。`,"machine.previewLocked":`应用操作锁定到当前 Revision;若机器状态变化,LoopX 会要求重新预览。`,"machine.previewRollback":`预览回滚`,"machine.previewRemoval":`预览移除`,"machine.profilePreset":`Profile preset`,"machine.profilePresetHelp":`由 capability 管理的 preset,例如 weekly-progress。`,"machine.registry":`Typed Registry`,"machine.requiredFields":`开启后必须填写 profile preset、Goal Channel route 与有效时区。`,"machine.revision":`机器 Revision`,"machine.revisionLockedReady":`所有变更必须先预览;只有对应的机器 Revision 仍然有效时才会应用。`,"machine.rollbackAvailable":`可回滚上一次应用`,"machine.rollbackDescription":`先预览已保存的前一 Revision,再决定是否恢复。`,"machine.rollbackError":`无法完成回滚。`,"machine.rollbackPreviewDescription":`前一 Revision 已准备恢复,请确认执行本次回滚。`,"machine.rolledBack":`已恢复前一版机器策略,并通过校验。`,"machine.removed":`机器策略已移除,并通过回读校验。`,"machine.routeRef":`Goal Channel route`,"machine.routeRefHelp":`只填写公开 route alias;凭据与 provider identifier 不会进入此表单。`,"machine.timezone":`时区`,"machine.timezoneHelp":`填写 IANA 时区,例如 Asia/Shanghai。`,"machine.title":`机器配置`,"machine.unchanged":`机器策略已与预览一致,本次没有写入。`,"machine.visualEditor":`引导式`,"capabilities.atomicOverride":`Goal override 按完整配置生效`,"capabilities.atomicOverrideDescription":`Goal 的完整配置优先于机器默认值;LoopX 不会在两个作用域之间逐字段拼接。`,"capabilities.applyFailed":`Goal 能力变更未写入。`,"capabilities.applyPreview":`应用此预览`,"capabilities.catalog":`Goal 能力目录`,"capabilities.chooseGoal":`请先选择一个 Goal,再查看它的能力配置。`,"capabilities.defaultValue":`声明的默认值`,"capabilities.description":`查看当前 Goal 可用的能力,以及每项配置的准确作用域。`,"capabilities.editorPrepared":`已注册 typed editor contract`,"capabilities.effectiveSource":`当前生效来源`,"capabilities.empty":`当前 Goal 没有可用的能力描述。`,"capabilities.fields":`已注册字段`,"capabilities.goalPolicy":`Goal 能力策略`,"capabilities.goalScope":`Goal`,"capabilities.goalValue":`当前 Goal 值`,"capabilities.loadFailed":`无法加载 Goal 能力`,"capabilities.larkInboxNotificationDescription":`此开关只控制遇到人工 Gate 时是否自动发群消息;关闭后仍会保留飞书事件收件箱能力。`,"capabilities.larkInboxNotificationSetting":`Gate 群通知`,"capabilities.loading":`正在加载 Goal 能力…`,"capabilities.machineOnly":`此能力只能在机器作用域配置。`,"capabilities.machineValue":`实时机器默认值`,"capabilities.machineScope":`机器`,"capabilities.previewOnly":`当前读取结果来自真实配置;在 revision-locked preview/apply 路径接通前,Dashboard 不会提供 Goal 写入控件。`,"capabilities.preview":`锁定 revision 的变更预览`,"capabilities.previewChanges":`预览变更`,"capabilities.restoreInheritance":`恢复继承机器默认值`,"capabilities.previewFailed":`无法预览 Goal 能力变更。`,"capabilities.previewLocked":`应用时会重新校验这一个 plan revision;过期变更将被拒绝。`,"capabilities.partialWrite":`Goal 值已保存;共享投影仍需修复`,"capabilities.partialWriteDescription":`源 Goal 配置已经写入并回读,但共享 runtime 投影尚未同步;请勿重复提交本次变更。`,"capabilities.refreshSource":`刷新源配置`,"capabilities.readOnly":`只读能力`,"capabilities.revisionLockedReady":`所有变更必须先预览;只有对应的精确 revision 仍然有效时才会写入。`,"capabilities.retry":`重试`,"capabilities.source.capability_default":`能力默认值`,"capabilities.source.goal_override":`Goal override`,"capabilities.source.machine_default":`实时机器默认值`,"capabilities.source.not_configured":`未配置`,"capabilities.title":`Goal 能力`,"settings.close":`关闭设置`,"settings.appearance":`外观`,"settings.appearanceDescription":`管理当前浏览器里的工作区显示偏好。`,"settings.appearanceTabDescription":`主题和显示偏好`,"settings.capabilitiesTabDescription":`当前 Goal 的能力覆盖配置`,"settings.back":`返回工作区`,"settings.categories":`设置分类`,"settings.description":`管理工作区偏好与集成。`,"settings.eyebrow":`工作区偏好`,"settings.general":`通用`,"settings.goalConnections":`Goal 连接`,"settings.language":`语言`,"settings.modelProvider":`模型 Provider 配置`,"settings.globalCapabilities":`全局能力配置`,"settings.languageDescription":`选择 LoopX Desktop 工作区使用的界面语言。`,"settings.languageEnglishDescription":`使用英文显示导航、设置和工作区控件。`,"settings.languageEnglish":`English`,"settings.languageSimplifiedChineseDescription":`使用简体中文显示导航、设置和工作区控件。`,"settings.languageSimplifiedChinese":`简体中文`,"settings.languageStoredLocally":`此偏好仅保存在当前设备。`,"settings.languageTabDescription":`当前设备的界面语言`,"settings.larkTabDescription":`App、群聊和 Goal Topic 连接`,"settings.machineTabDescription":`本机各 Capability 共享的 typed defaults`,"settings.notifications":`通知`,"settings.open":`设置`,"settings.themeDefault":`纸张`,"settings.themeDefaultDescription":`安静、轻量,适合长期查看。`,"settings.themeDescription":`选择工作区的视觉风格。设置会保存在当前浏览器本地。`,"settings.themeHighContrast":`高对比`,"settings.themeHighContrastDescription":`更强边框和更醒目的状态块。`,"settings.themeLoopx":`LoopX 标准`,"settings.themeLoopxDescription":`精确的黑白界面、Geist 字体与安静的细线结构。`,"settings.title":`设置`,"settings.workspaceDisplay":`工作区显示`,"settings.workspaceTheme":`工作区主题`,"session.closeRecord":`退出运行记录`,"session.details":`Session 详情`,"session.record":`执行 Session · 运行记录`,"session.recordDescription":`当前时间线已切换到这次 Session 的消息与 Turn 记录。`,"sidebar.createGoal":`创建 Goal`,"sidebar.delete":`删除`,"sidebar.deleteGoal":`删除 Goal`,"sidebar.manager":`LoopX 管家`,"sidebar.notifications":`设置`,"sidebar.owner":`个人工作区`,"sidebar.product":`个人 Agent 工作区`,"sidebar.resume":`恢复`,"sidebar.resumeGoal":`恢复 Goal`,"sidebar.stop":`停止`,"tasks.historyLoading":`正在加载历史…`,"tasks.historyError":`历史加载失败,已显示的内容仍可查看。`,"tasks.historyExpired":`历史快照已过期,重新加载后可继续查看。`,"tasks.historyRetry":`重新加载`,"tasks.historyEnd":`已显示全部完成记录`,"tasks.historyMore":`加载更多`,"tasks.historyLocalOnly":`请打开这台机器的 Dashboard 查看完整历史。`,"sidebar.sortGoals":`调整 Goal 顺序`,"sidebar.dragGoal":`拖拽调整顺序,或使用列表排序按钮`,"sidebar.moveUp":`上移 {goal}`,"sidebar.moveDown":`下移 {goal}`,"sidebar.goalMoved":`{goal} 已移至第 {position} 位`,"sidebar.orderNotSaved":`顺序已在本次页面生效;浏览器存储不可用,无法保存。`,"sidebar.stopGoal":`停止 Goal`,"sidebar.stopped":`已停止`,"sidebar.stoppedLoading":`正在加载已停止 Goal`,"sidebar.stoppedLoadFailed":`已停止 Goal 加载失败,其他 Goal 仍可使用。`,"sidebar.retryStopped":`重试`,"state.completed":`已完成`,"state.needsRepair":`需修复`,"state.needsYou":`等你`,"state.quiet":`安静运行`,"state.running":`推进中`,"state.stopped":`已停止`,"state.waiting":`等待条件`,"tasks.blocked":`受阻`,"tasks.agentLane":`工作 Agent`,"tasks.agentLaneDescription":`筛选这个 Goal 下的工作泳道`,"tasks.agentLaneFilter":`按工作 Agent 筛选`,"tasks.allAgentLanes":`全部 Agent({count})`,"tasks.chatAgentReplied":`Agent 已回复`,"tasks.chatPending":`已发送给 Agent`,"tasks.chatPendingDescription":`正在处理;只有经过确认的任务操作才会更新 Tasks。`,"tasks.chatRecent":`最近对话`,"tasks.chatUnchangedDescription":`本次对话没有直接修改 Tasks。需要执行时,可先转成 Task 草稿并确认。`,"tasks.chatViewReply":`查看回复`,"tasks.convertToTask":`转为 Task`,"tasks.completed":`已完成`,"runs.discoveryPartial":`部分执行详情暂不可用,正在重连;任务摘要不代表实时执行状态。`,"runs.discoveryOffline":`执行服务暂不可用,正在重连;保留的任务摘要可能已过时。`,"files.openConversation":`前往会话`,"files.exportSummary":`导出摘要`,"tasks.viewDescription":`先处理待确认,再查看工作与完成记录`,"tasks.viewLabel":`任务视图`,"tasks.listView":`列表`,"tasks.boardView":`看板`,"tasks.completedSummary":`已完成 {count} 项,近期完成明细由控制面按需投影。`,"tasks.emptyCompleted":`还没有完成的任务。`,"tasks.emptyConfirm":`没有待确认的任务。`,"tasks.emptyRunning":`没有待执行或进行中的任务。`,"tasks.emptySchedules":`没有定时任务。`,"tasks.emptyGoal":`这个 Goal 还没有任务。用下面的输入框描述下一步,LoopX 会先展示待确认操作。`,"tasks.markComplete":`标记完成:{name}`,"tasks.moreActions":`更多操作:{name}`,"tasks.openExecution":`查看执行过程:{name}`,"tasks.pending":`待处理`,"tasks.pendingAndRunning":`待执行 / 进行中`,"tasks.scheduled":`定时与持续`,"tasks.sessionError":`Session 异常`,"tasks.waiting":`待执行`,"tasks.waitingAge":`已等待 {age}`,"tasks.viewExecution":`查看执行过程`,"tasks.viewResult":`查看结果`,"time.days":`{count} 天`,"time.hours":`{count} 小时`,"timeline.emptyGoal":`这个 Goal 还没有新动态`,"timeline.emptyGoalDescription":`你可以直接询问进度或下发新的纠偏信息。`,"timeline.emptyWorkspace":`今天的工作区很安静`,"timeline.emptyWorkspaceDescription":`向 LoopX 管家描述一个 Goal,或询问今天最值得关注的事情。`,"timeline.gateHistory":`{count} 项历史 Gate`,"timeline.pending":`正在整理…`,"returnDelivery.queued":`结论等待回传`,"returnDelivery.verifying":`正在核验送达,不会重复发送`,"returnDelivery.delivered":`已送达原受众`,"returnDelivery.reconciled":`恢复后已核验送达`,"returnDelivery.unverified":`送达仍明确未核验`,"timeline.runCompleted":`{run}:已完成`,"timeline.review":`查看处理方式`,"timeline.reviewAndConfirm":`查看并确认`,"timeline.waitingConfirmation":`待你确认`}};function Gi(e,t){return t?Object.entries(t).reduce((e,[t,n])=>e.replaceAll(`{${t}}`,String(n)),e):e}function Ki(){try{return window.localStorage.getItem(`loopx-pw-locale`)===`en`?`en`:`zh-CN`}catch{return`zh-CN`}}function qi({children:e}){let[t,n]=(0,z.useState)(Ki);function r(e){n(e);try{window.localStorage.setItem(Ui,e)}catch{}}(0,z.useEffect)(()=>{document.documentElement.lang=t},[t]);let i=(0,z.useMemo)(()=>({locale:t,setLocale:r,t:(e,n)=>Gi(Wi[t][e],n)}),[t]);return(0,B.jsx)(Hi.Provider,{value:i,children:e})}function Ji(){let e=(0,z.useContext)(Hi);if(!e)throw Error(`useWorkspaceI18n must be used within WorkspaceI18nProvider`);return e}function Yi(e,t){let n={安静运行:`state.quiet`,等你:`state.needsYou`,等待条件:`state.waiting`,推进中:`state.running`,需修复:`state.needsRepair`,已完成:`state.completed`,已停止:`state.stopped`}[e];return n?Wi[t][n]:e}function Xi(e,t){let n={busy:`runs.running`,completed:`runs.completed`,failed:`runs.failed`,queued:`runs.queued`,ready:`runs.ready`,resume_failed:`runs.resumeFailed`,running:`runs.running`,waiting:`runs.waiting`};return e?n[e]?t(n[e]):e:t(`runs.unknown`)}function Zi(e,t){if(!e)return null;let n=new Date(e).getTime();if(Number.isNaN(n))return null;let r=Date.now()-n;if(r<36e5)return null;let i=Math.floor(r/864e5);return i>=1?t(`time.days`,{count:i}):t(`time.hours`,{count:Math.floor(r/36e5)})}var Qi;function H(e,t,n){function r(n,r){if(n._zod||Object.defineProperty(n,"_zod",{value:{def:r,constr:o,traits:new Set},enumerable:!1}),n._zod.traits.has(e))return;n._zod.traits.add(e),t(n,r);let i=o.prototype,a=Object.keys(i);for(let e=0;en?.Parent&&t instanceof n.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(o,"name",{value:e}),o}var $i=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},ea=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(Qi=globalThis).__zod_globalConfig??(Qi.__zod_globalConfig={});var ta=globalThis.__zod_globalConfig;function na(e){return e&&Object.assign(ta,e),ta}function ra(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function ia(e,t){return typeof t==`bigint`?t.toString():t}function aa(e){return{get value(){{let t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function oa(e){return e==null}function sa(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function ca(e,t){let n=e/t,r=Math.round(n),i=2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r){};function ga(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var _a=aa(()=>{if(ta.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function va(e){if(ga(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return ga(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}function ya(e){return va(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var ba=new Set([`string`,`number`,`symbol`]);function xa(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Sa(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function U(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function Ca(e){return Object.keys(e).filter(t=>e[t]._zod.optin===`optional`&&e[t]._zod.optout===`optional`)}var wa={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function Ta(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);return Sa(e,fa(e._zod.def,{get shape(){let e={};for(let r in t){if(!(r in n.shape))throw Error(`Unrecognized key: "${r}"`);t[r]&&(e[r]=n.shape[r])}return da(this,`shape`,e),e},checks:[]}))}function Ea(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);return Sa(e,fa(e._zod.def,{get shape(){let r={...e._zod.def.shape};for(let e in t){if(!(e in n.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&delete r[e]}return da(this,`shape`,r),r},checks:[]}))}function Da(e,t){if(!va(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=e._zod.def.shape;for(let e in t)if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return Sa(e,fa(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return da(this,`shape`,n),n}}))}function Oa(e,t){if(!va(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return Sa(e,fa(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return da(this,`shape`,n),n}}))}function ka(e,t){if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);return Sa(e,fa(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return da(this,`shape`,n),n},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function Aa(e,t,n){let r=t._zod.def.checks;if(r&&r.length>0)throw Error(`.partial() cannot be used on object schemas containing refinements`);return Sa(t,fa(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in r))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t])}else for(let t in r)i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t];return da(this,`shape`,i),i},checks:[]}))}function ja(e,t,n){return Sa(t,fa(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in i))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=new e({type:`nonoptional`,innerType:r[t]}))}else for(let t in r)i[t]=new e({type:`nonoptional`,innerType:r[t]});return da(this,`shape`,i),i}}))}function Ma(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function Fa(e){return typeof e==`string`?e:e?.message}function Ia(e,t,n){let r=e.message?e.message:Fa(e.inst?._zod.def?.error?.(e))??Fa(t?.error?.(e))??Fa(n.customError?.(e))??Fa(n.localeError?.(e))??`Invalid input`,{inst:i,continue:a,input:o,...s}=e;return s.path??=[],s.message=r,t?.reportInput&&(s.input=o),s}function La(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function Ra(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}var za=(e,t)=>{e.name=`$ZodError`,Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,ia,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},Ba=H(`$ZodError`,za),Va=H(`$ZodError`,za,{Parent:Error});function Ha(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?(n[i.path[0]]=n[i.path[0]]||[],n[i.path[0]].push(t(i))):r.push(t(i));return{formErrors:r,fieldErrors:n}}function Ua(e,t=e=>e.message){let n={_errors:[]},r=(e,i=[])=>{for(let a of e.issues)if(a.code===`invalid_union`&&a.errors.length)a.errors.map(e=>r({issues:e},[...i,...a.path]));else if(a.code===`invalid_key`)r({issues:a.issues},[...i,...a.path]);else if(a.code===`invalid_element`)r({issues:a.issues},[...i,...a.path]);else{let e=[...i,...a.path];if(e.length===0)n._errors.push(t(a));else{let r=n,i=0;for(;i(t,n,r,i)=>{let a=r?{...r,async:!1}:{async:!1},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise)throw new $i;if(o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>Ia(e,a,na())));throw ha(t,i?.callee),t}return o.value},Ga=e=>async(t,n,r,i)=>{let a=r?{...r,async:!0}:{async:!0},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise&&(o=await o),o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>Ia(e,a,na())));throw ha(t,i?.callee),t}return o.value},Ka=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new $i;return a.issues.length?{success:!1,error:new(e??Ba)(a.issues.map(e=>Ia(e,i,na())))}:{success:!0,data:a.value}},qa=Ka(Va),Ja=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new e(a.issues.map(e=>Ia(e,i,na())))}:{success:!0,data:a.value}},Ya=Ja(Va),Xa=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Wa(e)(t,n,i)},Za=e=>(t,n,r)=>Wa(e)(t,n,r),Qa=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Ga(e)(t,n,i)},$a=e=>async(t,n,r)=>Ga(e)(t,n,r),eo=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Ka(e)(t,n,i)},to=e=>(t,n,r)=>Ka(e)(t,n,r),no=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Ja(e)(t,n,i)},ro=e=>async(t,n,r)=>Ja(e)(t,n,r),io=/^[cC][0-9a-z]{6,}$/,ao=/^[0-9a-z]+$/,oo=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,so=/^[0-9a-vA-V]{20}$/,co=/^[A-Za-z0-9]{27}$/,lo=/^[a-zA-Z0-9_-]{21}$/,uo=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,fo=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,po=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,mo=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,ho=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;function go(){return new RegExp(ho,`u`)}var _o=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,vo=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,yo=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,bo=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,xo=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,So=/^[A-Za-z0-9_-]*$/,Co=/^https?$/,wo=/^\+[1-9]\d{6,14}$/,To=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`,Eo=RegExp(`^${To}$`);function Do(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Oo(e){return RegExp(`^${Do(e)}$`)}function ko(e){let t=Do({precision:e.precision}),n=[`Z`];e.local&&n.push(``),e.offset&&n.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let r=`${t}(?:${n.join(`|`)})`;return RegExp(`^${To}T(?:${r})$`)}var Ao=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},jo=/^-?\d+$/,Mo=/^-?\d+(?:\.\d+)?$/,No=/^(?:true|false)$/i,Po=/^null$/i,Fo=/^[^A-Z]*$/,Io=/^[^a-z]*$/,Lo=H(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),Ro={number:`number`,bigint:`bigint`,object:`date`},zo=H(`$ZodCheckLessThan`,(e,t)=>{Lo.init(e,t);let n=Ro[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.maximum:n.exclusiveMaximum)??1/0;t.value{(t.inclusive?r.value<=t.value:r.value{Lo.init(e,t);let n=Ro[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.minimum:n.exclusiveMinimum)??-1/0;t.value>r&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Vo=H(`$ZodCheckMultipleOf`,(e,t)=>{Lo.init(e,t),e._zod.onattach.push(e=>{var n;(n=e._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?n.value%t.value===BigInt(0):ca(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),Ho=H(`$ZodCheckNumberFormat`,(e,t)=>{Lo.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=wa[t.format];e._zod.onattach.push(e=>{let r=e._zod.bag;r.format=t.format,r.minimum=i,r.maximum=a,n&&(r.pattern=jo)}),e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}sa&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),Uo=H(`$ZodCheckMaxLength`,(e,t)=>{var n;Lo.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!oa(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.maximum??1/0;t.maximum{let r=n.value;if(r.length<=t.maximum)return;let i=La(r);n.issues.push({origin:i,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Wo=H(`$ZodCheckMinLength`,(e,t)=>{var n;Lo.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!oa(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.minimum??-1/0;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let r=n.value;if(r.length>=t.minimum)return;let i=La(r);n.issues.push({origin:i,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Go=H(`$ZodCheckLengthEquals`,(e,t)=>{var n;Lo.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!oa(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=n=>{let r=n.value,i=r.length;if(i===t.length)return;let a=La(r),o=i>t.length;n.issues.push({origin:a,...o?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),Ko=H(`$ZodCheckStringFormat`,(e,t)=>{var n,r;Lo.init(e,t),e._zod.onattach.push(e=>{let n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??=new Set,n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),qo=H(`$ZodCheckRegex`,(e,t)=>{Ko.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Jo=H(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=Fo,Ko.init(e,t)}),Yo=H(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=Io,Ko.init(e,t)}),Xo=H(`$ZodCheckIncludes`,(e,t)=>{Lo.init(e,t);let n=xa(t.includes),r=new RegExp(typeof t.position==`number`?`^.{${t.position}}${n}`:n);t.pattern=r,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(r)}),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),Zo=H(`$ZodCheckStartsWith`,(e,t)=>{Lo.init(e,t);let n=RegExp(`^${xa(t.prefix)}.*`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),Qo=H(`$ZodCheckEndsWith`,(e,t)=>{Lo.init(e,t);let n=RegExp(`.*${xa(t.suffix)}$`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),$o=H(`$ZodCheckOverwrite`,(e,t)=>{Lo.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),es=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),--this.indent}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(` +通知:仅在需要我时`,"composer.nextAction":`询问下一步`,"composer.nextActionPrompt":`我现在该做什么?`,"composer.send":`发送`,"composer.sendMessage":`向 LoopX 发送消息`,"composer.sendMessageHint":`发送消息`,"composer.sentImageAlt":`移除图片 {name}`,"conversation.agentPending":`正在整理…`,"conversation.close":`关闭对话回执`,"conversation.convertHint":`将 Agent 最新回复转为 Task 草稿`,"conversation.full":`查看完整对话`,"conversation.receipt":`对话回执`,"conversation.replying":`正在回复`,"conversation.title":`管家对话`,"conversation.toTask":`转为 Task`,"digest.away":`自上次访问以来的运行记录`,"digest.completed":`新增完成运行`,"digest.failed":`新增失败或中断`,"digest.needsYou":`当前待确认`,"feedback.applying":`正在执行:{title}`,"feedback.cancelFailed":`取消失败:{error}`,"feedback.completed":`已完成:{title}`,"feedback.executionFailed":`执行失败:{error}`,"feedback.gateRequired":`需要你确认:{summary}`,"feedback.notCompleted":`操作未完成:{status}`,"feedback.goalRefreshFailed":`已打开 Goal,但暂时无法刷新最新状态。请点击刷新重试。`,"feedback.preparingPreview":`正在准备确认预览:{title}`,"feedback.previewFailed":`无法准备确认预览:{error}`,"feedback.sendFailed":`发送失败:{error}`,"feedback.sendGenericError":`消息发送失败,请稍后重试。`,"feedback.stale":`状态已变化,操作未执行,请重新生成确认预览。`,"feedback.taskDraftCreated":`已根据回复生成 Task 草稿。编辑后发送,LoopX 会先展示确认预览。`,"goal.defaultTitle":`新的个人 Goal`,"goal.initialTodo":`按完成标准推进:{criteria}`,"goal.objectiveBoundary":`执行边界:{boundary}`,"goal.objectiveCompletion":`完成标准:{criteria}`,"drawer.advancedDiagnostics":`高级诊断`,"drawer.agentWorking":`Agent 正在继续执行,记录会自动更新。`,"drawer.analysis":`正在分析`,"drawer.apply":`确认并应用`,"drawer.applying":`正在应用…`,"drawer.attentionBlocking":`正在阻塞 Agent`,"drawer.attentionWaiting":`等待你的决定`,"drawer.autoNotify":`Human-gate 自动通知`,"drawer.branch":`分支`,"drawer.closeDetail":`关闭详情:返回{context}`,"drawer.connected":`已连接`,"drawer.correctionDescription":`消息会沿用当前 Goal、Todo 与 Agent Session 上下文。`,"drawer.correctionLabel":`与 {agent} 纠偏`,"drawer.correctionPlaceholder":`例如:先关注权限风险,暂时不要提交…`,"drawer.correctionSend":`发送纠偏`,"drawer.correctionTextarea":`输入纠偏信息:Goal {goal},Agent {agent},Run {run}`,"drawer.copyRepository":`复制仓库标识`,"drawer.copyRepositoryDone":`已复制仓库标识`,"drawer.copyRepositoryError":`复制失败,请检查浏览器剪贴板权限。`,"drawer.copyRepositorySuccess":`已复制,可粘贴到其他工具。`,"drawer.cost":`成本 24h / 7d`,"drawer.costShort":`成本`,"drawer.durationShort":`时长`,"drawer.period24h":`24 小时`,"drawer.period7d":`7 天`,"drawer.tokens":`Token 24 小时 / 7 天`,"drawer.tokensShort":`Token`,"drawer.usageNotMeasured":`未采集`,"drawer.currentGoal":`当前 Goal`,"attentionDetail.title":`事项说明`,"attentionDetail.request":`需要你做什么`,"attentionDetail.decision":`需要作出决定`,"attentionDetail.unknownRequest":`来源未明确,请先查看来源再判断`,"attentionDetail.open":`当前投影中待处理`,"attentionDetail.closed":`已关闭`,"attentionDetail.deferred":`已推迟`,"attentionDetail.superseded":`已被替代`,"attentionDetail.unknown":`来源未提供状态`,"attentionDetail.unavailable":`来源尚未确认当前事项,请刷新后再操作`,"attentionDetail.unknownReason":`来源尚未提供原因。`,"attentionDetail.targetTodo":`关联的待解锁 Todo`,"attentionDetail.targetAgent":`事项指定的 Agent`,"attentionDetail.scope":`声明的决策范围`,"attentionDetail.notProvided":`来源未提供`,"attentionDetail.replacement":`替代 Todo`,"attentionDetail.openReplacement":`打开替代事项`,"attentionDetail.boundary":`阅读详情不会关闭 gate 或授予权限;作出决定前仍需新的操作预览。`,"drawer.decisionDefaultEvidence":`当前状态没有附加公开安全证据;下一步仍会先展示 Preview。`,"drawer.decisionDefaultReason":`该决定会影响当前 Todo 的下一步执行。`,"drawer.decisionDefer":`稍后决定`,"drawer.decisionMore":`更多决定`,"drawer.decisionReject":`拒绝`,"drawer.decisionReview":`查看影响并决定`,"drawer.dependencies":`依赖`,"drawer.detailsAndActions":`详情与操作`,"drawer.duration":`运行时长 24h / 7d`,"drawer.evidence":`证据`,"drawer.executionHistory":`执行历史`,"drawer.executionRecord":`运行记录`,"drawer.executionRecordAndResult":`执行过程与结果`,"drawer.explainDecision":`解释此决定`,"drawer.gateApproveHint":`在终端执行一条命令即可完成审批:`,"drawer.gateRejectHint":`不同意就把末尾的 approve 换成 reject。执行后这条提醒会自动消失。`,"drawer.gateRequiresHost":`需要宿主确认`,"drawer.gateRequiresHostDescription":`页面无权直接批准这类权限变更,你的点击没有写入任何内容。`,"drawer.goalAutoRun":`当前 Goal 的自动运行`,"drawer.goalChanges":`当前 Goal 的待确认变更`,"drawer.goalDetails":`Goal 详情`,"drawer.group":`群聊`,"drawer.inspectorFull":`切换到全屏`,"drawer.inspectorFullView":`全屏查看`,"drawer.inspectorHalf":`切换到半屏`,"drawer.inspectorHalfView":`半屏查看`,"drawer.lastNotification":`最近通知`,"drawer.larkConfigure":`管理 Lark connection`,"drawer.larkConnect":`连接 Lark App`,"drawer.larkConnection":`Lark connection`,"drawer.larkNotConfigured":`未配置`,"drawer.larkNotConfiguredDescription":`配置后,当这个 Goal 出现需要你确认的变更时,会自动发飞书通知。`,"drawer.managerChanges":`管家待确认变更`,"drawer.moreActions":`更多操作`,"drawer.moreRunActions":`更多运行操作`,"drawer.nextTransition":`下一转换`,"drawer.noExecutionHistory":`暂无执行记录。`,"drawer.noRun":`尚未启动执行 Session`,"drawer.noRunDescription":`Agent 开始执行后,运行记录会稳定显示在这里。`,"drawer.notAssigned":`未分配`,"drawer.notLinked":`未关联`,"drawer.notSet":`未设置`,"drawer.outputDetails":`产出详情`,"drawer.outputRecorded":`该产出已记录到当前 Goal。`,"drawer.outputSafePreview":`公开安全产出预览`,"drawer.outputRun":`Run`,"drawer.outputTodo":`Todo`,"drawer.outputs":`本次运行产出`,"drawer.previewUnavailable":`此产出没有可用的公开安全内联预览。`,"drawer.priority":`优先级`,"drawer.progress":`进度`,"drawer.proposalApplied":`已应用,LoopX 状态将刷新。`,"drawer.proposalAppliedUnstaffed":`已应用,但有 {count} 条 lane 仍未组建:`,"drawer.proposalApplyFailed":`应用失败,没有写入任何变更。`,"drawer.proposalApplyFailedHint":`请刷新 Goal 状态后重新生成;若仍失败,可保留此页并查看高级诊断。`,"drawer.proposalClose":`关闭`,"drawer.proposalDefer":`稍后`,"drawer.proposalDeferred":`已暂缓,可稍后继续应用或重新生成。`,"drawer.proposalEnterGoal":`进入新 Goal`,"drawer.proposalExplainer":`确认后,LoopX 会执行这项变更并显示写入结果。关闭或取消不会修改任何状态。`,"drawer.proposalRecheck":`按最新状态重新检查`,"drawer.proposalRegenerate":`基于最新状态重试`,"drawer.proposalRejected":`已拒绝,这项变更不会写入。`,"drawer.proposalStale":`来源状态已变化,请按最新状态重新检查。`,"drawer.proposalViewGoal":`查看更新后的 Goal`,"drawer.reassign":`改派给`,"drawer.reassignSummary":`重新分配:{task}`,"drawer.reason":`原因`,"drawer.recoveryDescription":`本地历史已经保留,请选择恢复路径。`,"drawer.recoveryFailed":`上游 Session 恢复失败`,"drawer.recoveryNewSession":`携带上下文开始新 Session`,"drawer.recoveryRetry":`重试恢复`,"drawer.repositoryRole":`执行工作区`,"drawer.repository":`仓库`,"drawer.replyMode":`回复方式`,"drawer.subagentApplied":`已写入,并通过共享 Goal 状态读回校验。`,"drawer.subagentAppliedRefreshFailed":`已写入并通过共享 Goal 状态读回;状态投影刷新失败,可稍后手动刷新。`,"drawer.subagentApplying":`正在写入并校验共享状态读回…`,"drawer.subagentApplyFailed":`子代理设置写入失败。`,"drawer.subagentChildLimit":`当前上限`,"drawer.subagentConfirmDisable":`确认关闭子代理执行`,"drawer.subagentConfirmEnable":`确认开启子代理执行`,"drawer.subagentCurrentBoundary":`当前任务领域限制`,"drawer.subagentDescription":`仅在 Todo、配额、能力和写入范围门禁全部通过后,允许运行时为相互独立的任务临时创建子代理;不会强制并行,也不会授予持久权限。`,"drawer.subagentDisable":`预览关闭子代理执行`,"drawer.subagentDisableSummary":`这个 Goal 将不再创建新的子代理;现有 Todo 归属和执行记录不受影响。`,"drawer.subagentDomainInvalid":`所选任务领域限制无效。`,"drawer.subagentDomainTodoCount":`匹配 {count} 个开放 Todo`,"drawer.subagentDomains":`任务领域限制(可选)`,"drawer.subagentDomainsEmpty":`当前没有开放的 advancement Todo 声明 task_domain;保持为空即可不按任务领域限制子代理执行。`,"drawer.subagentDomainsHint":`全部不选表示不按任务领域过滤;选择后只放行匹配且已声明领域的 Todo,其他执行门禁始终生效。`,"drawer.subagentDomainsUnrestricted":`不限制任务领域`,"drawer.subagentEnable":`预览开启子代理执行`,"drawer.subagentLabel":`Per-Goal 执行边界`,"drawer.subagentModel":`子 Agent 模型`,"drawer.subagentEffort":`子 Agent 推理档位`,"drawer.subagentModelDefault":`宿主默认`,"drawer.subagentLunaPreset":`使用 Luna / max`,"drawer.subagentClearModel":`清除模型偏好`,"drawer.subagentModelHint":`填写后通过“预览配置调整”保存,执行关闭时也可保存偏好;启动时须核验宿主支持情况。`,"drawer.subagentModelRequired":`设置推理档位前请先指定子 Agent 模型。`,"drawer.subagentMaxChildren":`最多子代理数`,"drawer.subagentNoChange":`当前 Goal 已是这个设置,没有写入任何内容。`,"drawer.subagentPending":`待确认`,"drawer.subagentPreviewBoundary":`预览配置调整`,"drawer.subagentPreviewFailed":`无法生成子代理设置预览。`,"drawer.subagentPreviewing":`正在核对最新 Goal 状态…`,"drawer.subagentPreviewReady":`预览已锁定,确认后才会写入这个 Goal。`,"drawer.subagentPreviewSummary":`最多允许创建 {count} 个子代理;任务领域限制:{domains}。`,"drawer.subagentRemoteReadOnly":`当前来源只读,请在 Goal 所在主机上修改。`,"drawer.subagentTitle":`自适应子代理执行`,"drawer.remoteDetailsDescription":`SSH 来源只展示公开安全状态,不读取来源主机上的连接配置。`,"drawer.remoteDetailsUnavailable":`远端详情未投影`,"drawer.resumeNo":`否`,"drawer.resumeYes":`是`,"drawer.runDetails":`执行 Session`,"drawer.runInterrupt":`中断本次运行`,"drawer.runLatest":`查看最近执行过程`,"drawer.runNewSession":`开始新 Session`,"drawer.runCloseSession":`关闭 Session`,"drawer.runRecordEmpty":`还没有运行记录。Agent 尚未开始这次执行;请在“详情与操作”查看等待条件或恢复 Session。`,"drawer.runRecordProjected":`当前没有可展示的逐步运行记录。LoopX 已读取到 {completed}/{total} 的投影进度{outputs};请在“详情与操作”检查 Session 状态。`,"drawer.runRecordProjectedOutputs":`和 {count} 项产出`,"drawer.runRoleAssistant":`已完成`,"drawer.runRoleSystem":`需检查`,"drawer.runRoleUser":`收到任务`,"drawer.runView":`Session 视图`,"drawer.scheduleAdd":`添加定时检查`,"drawer.scheduleDefaultNotification":`仅在需要你时通知`,"drawer.scheduleDefaultStop":`Goal 完成或 owner 停止`,"drawer.scheduleDefaultTarget":`由 LoopX 调度器按 Goal 配置唤醒。`,"drawer.scheduleEdit":`改为每 2 小时`,"drawer.scheduleLast":`上次执行`,"drawer.scheduleLocalTimezone":`本地时区`,"drawer.scheduleNext":`下次执行`,"drawer.scheduleNeverRun":`尚未执行`,"drawer.scheduleNotification":`通知`,"drawer.schedulePause":`暂停`,"drawer.schedulePending":`等待调度`,"drawer.scheduleResume":`恢复`,"drawer.scheduleRunNow":`立即运行`,"drawer.scheduleStop":`停止{kind}`,"drawer.scheduleStopCondition":`停止条件`,"drawer.scheduleTimezone":`时区`,"drawer.sessionRecoverable":`可恢复`,"drawer.sessionStatus":`会话状态`,"drawer.setupHeartbeat":`设置 Heartbeat`,"drawer.taskActions":`Todo 待确认操作`,"drawer.taskAdvancement":`推进任务`,"drawer.taskBlock":`标记阻塞`,"drawer.taskComplete":`标记完成`,"drawer.taskCompletedNote":`该任务保留为只读记录。`,"drawer.taskCompletedTitle":`任务已完成`,"drawer.taskDefer":`暂缓`,"drawer.taskDeferCondition":`Todo 暂缓恢复条件`,"drawer.taskDeferInvalid":`条件格式不受支持;请使用下列可判定条件。`,"drawer.taskDeferPlaceholder":`例如 resume_at:2026-09-14T09:00:00+08:00`,"drawer.taskDeferReview":`检查暂缓`,"drawer.taskDeferSupported":`支持 todo_done、pr_merged、capacity_available 与带时区的 resume_at 条件。`,"drawer.taskDeferUntil":`暂缓至`,"drawer.taskDetails":`Todo 详情`,"drawer.taskInfo":`任务信息`,"drawer.taskManage":`管理任务`,"drawer.taskNextCompleted":`可创建后续任务`,"drawer.taskNextOpen":`推进或更新状态`,"drawer.taskOrdinary":`普通任务`,"drawer.taskStatusBlocked":`受阻`,"drawer.taskStatusDeferred":`已延期`,"drawer.resumeWhen":`恢复条件`,"drawer.resumeState":`恢复状态`,"drawer.resumePending":`等待条件满足`,"drawer.resumeReady":`可恢复`,"drawer.resumeReceipt":`恢复回执`,"drawer.taskNextDeferred":`等待恢复条件满足后重新评估`,"drawer.taskNextResumeReady":`恢复条件已满足,等待生命周期重新规划`,"drawer.taskStatusCompleted":`已完成`,"drawer.taskStatusOpen":`待执行`,"drawer.taskSuccessor":`创建后续 Todo`,"drawer.taskSuccessorNote":`Owner 标记为阻塞,等待补充上下文。`,"drawer.taskSuccessorSummary":`创建后续 Todo:{task}`,"drawer.taskSuccessorText":`{task} 的后续工作`,"drawer.taskType":`任务类型`,"drawer.topic":`Topic`,"drawer.trigger":`触发方式`,"drawer.titleAttention":`需要你`,"drawer.titleOutput":`产出详情`,"drawer.titleProposalApplied":`执行结果`,"drawer.titleProposalConfirm":`确认执行`,"drawer.titleSchedule":`定时检查`,"drawer.unconfigured":`未配置`,"drawer.workspaceCandidates":`可选择的工作区`,"files.emptySummary":`公开安全产出`,"files.empty":`还没有文件、产出或已验证的阶段周报。`,"files.loadingReports":`正在加载已验证的阶段周报…`,"files.reportDelta":`+{added} 新增 · {changed} 变化`,"files.reportAdded":`新增`,"files.reportChanged":`变化`,"files.reportGeneration":`生成批次`,"files.reportLoadFailed":`无法加载已验证周报`,"files.reportPublication":`发布批次`,"files.title":`Files & Outputs`,"files.verifiedReport":`已验证阶段周报`,"header.agentUnavailable":`不可用`,"header.chatRuntime":`Chat`,"header.workAgentCount":`{count} 个工作 Agent`,"header.chat":`Chat`,"header.files":`Files`,"header.goalCapabilities":`能力配置`,"header.goalCapabilitiesDescription":`管理 Goal override 与继承的本机默认值。`,"header.goalDetails":`Goal 详情`,"header.goalDetailsDescription":`查看状态、用量、仓库、通知与 Session。`,"header.goalSettings":`Goal 设置`,"header.goalSettingsDescription":`打开 Goal 详情或能力配置`,"header.goalNavigation":`Goal 导航`,"header.goalView":`Goal 视图`,"header.live":`实时`,"header.manager":`LoopX 管家`,"header.managerDescription":`跨 Goal 的个人工作入口`,"header.managerRuntime":`{profile} · {sandbox}`,"header.managerRuntimeFallback":`配置无效,已回退到 {profile} · {sandbox};请在机器能力设置中修复。`,"header.managerExecutorKindIndividual":`个人 CLI 登录`,"header.managerExecutorKindManaged":`operator 凭据`,"header.managerExecutorKindRegistered":`注册端点`,"header.managerExecutionUnavailable":`所选执行器 {executor} 无法在本机启动;该通道不会回落到个人 CLI 登录。`,"header.managerExecutionUnavailableCredential":`所选执行器 {executor} 需要 operator 凭据 {credential},配置后该通道才能启动它。`,"header.managerExecutionUnavailableRuntime":`所选执行器 {executor} 无法在本机启动:本机未安装其 runtime。`,"header.managerExecutionUnavailableEffort":`所选执行器 {executor} 拒绝了当前配置的推理档位;请改为受支持的档位后刷新。`,"header.managerEndpointStewardDefault":`当前运行 {executor},管家通道的出货默认值;如需改指请显式选择执行器。`,"header.managerOverview":`总览`,"header.managerView":`管家视图`,"header.openGoalNavigation":`打开 Goal 导航`,"header.readOnlySourceDescription":`{source} 通过 SSH 隧道只读展示`,"header.refresh":`刷新状态`,"header.refreshDone":`刚刚更新`,"header.refreshFailed":`刷新失败`,"header.refreshing":`刷新中`,"header.selectAgent":`选择 Agent`,"header.selectChatRuntime":`选择聊天 Runtime`,"header.tasks":`Tasks`,"header.themeBrutal":`切换到野兽主题`,"header.themePaper":`切换到默认主题`,"home.blockingSummary":`其中 {count} 项正在阻塞 Agent。`,"home.completedGoals":`已完成的 Goal`,"home.empty":`当前没有`,"startup.goalLoading":`正在加载状态…`,"startup.goalError":`状态加载失败`,"startup.progress":`已加载 {loaded} / {total} 个活跃 Goal`,"startup.partial":`Goal 状态正在逐个更新,当前统计尚不完整。`,"startup.independent":`此 Goal 的加载不会阻塞其他 Goal,你可以先查看已加载的内容。`,"startup.error.timeout":`读取超时,可在本地服务就绪后重试。`,"startup.error.network":`连接中断,请重试以重新连接。`,"startup.error.service":`Goal 状态读取失败。请稍后重试;若问题持续,请检查状态来源。`,"startup.error.access":`状态来源无法访问此 Goal 所需的文件或运行时目录。请检查该来源运行账户的访问权限,修复后重试。`,"startup.error.revision":`加载期间 Goal 目录发生变化,请刷新以同步。`,"startup.error.scope":`该 Goal 已不在当前来源中,请刷新目录。`,"startup.error.invalid":`无法解析状态响应,请刷新或检查 LoopX 更新。`,"startup.retry":`重试`,"startup.retryFailed":`重试失败的 Goal`,"startup.failedCount":`{count} 个 Goal 加载失败,已加载的 Goal 可继续使用。`,"home.greeting":`你好,我是 LoopX 管家`,"home.history":`历史`,"home.lane.needsYou":`需要你`,"home.lane.needsYouDescription":`等待你的决定、授权或补充信息`,"home.lane.observing":`观察中`,"home.lane.observingDescription":`持续监控,出现变化时再提醒你`,"home.lane.running":`执行中`,"home.lane.runningDescription":`Agent 正在推进并持续回传进展`,"home.lane.scheduled":`已安排`,"home.lane.scheduledDescription":`已经安排,等待时间或前置条件`,"home.noActivity":`尚无活动`,"home.noFirstActivity":`等待首次活动`,"home.noCompletedGoals":`还没有已完成的 Goal`,"home.preservedState":`保留状态,可随时恢复`,"home.stopped":`已停止`,"home.systemHealth":`系统健康:{summary}`,"home.taskCount":`{count} 个 Task`,"home.todayAt":`今天 {time}`,"home.waitingCount":`你有 {count} 项需要处理。`,"home.workspace":`Goal 工作区`,"lark.allMessages":`此 Topic 中的所有消息`,"lark.allTopicMessages":`所有 Topic 消息`,"lark.agentIngress":`Agent 入站方式`,"lark.agentAppPermissions":`每个选中的 Agent 都需要一个已具备群聊提及和回复能力的 Lark App。`,"lark.agentApps":`每个 Agent 的 Lark App`,"lark.agentAppsDescription":`默认使用上方 App;需要独立机器人身份时,可为 Agent 选择另一个兼容 App。`,"lark.agentAppSelection":`{agent} 的 Lark App`,"lark.appCreated":`App 已创建`,"lark.appCreateFailed":`创建失败`,"lark.appLoading":`正在加载可用的 Lark Apps…`,"lark.appPermissions":`该 App 能发送建联消息,但缺少接收群聊 @ 消息或自动回复所需的机器人权限。请开启 im:message.group_at_msg:readonly、im:message.send_as_bot 和事件 im.message.receive_v1,发布新版后刷新。`,"lark.appProfile":`Lark App`,"lark.apps":`Lark Apps`,"lark.autoReplyUnavailable":`自动回复暂不可用`,"lark.autoReplyReady":`自动回复可用`,"lark.bindGoal":`绑定到 Goal`,"lark.cancel":`取消`,"lark.cardinality":`一个 Lark App · 多个 Goal · 每个 Agent 一条隔离路由`,"lark.capture":`接收范围`,"lark.captureAddressed":`仅接收提及 App 或回复 App 的消息`,"lark.captureAll":`接收此 Goal Topic 中的所有消息`,"lark.captureScope":`接收范围`,"lark.captureScopeDescription":`决定哪些 Topic 消息会进入 LoopX;不会扩大 Agent 权限。`,"lark.closeConnection":`关闭连接弹窗`,"lark.closeCreate":`关闭创建弹窗`,"lark.closeSettings":`关闭 Lark 设置`,"lark.connect":`连接`,"lark.connectAllAgents":`连接全部已注册 Agent`,"lark.connectAllAgentsAction":`一键连接 {count} 个 Agent`,"lark.connectAllAgentsDescription":`一次引导创建 {count} 个隔离的 Agent Topic;请在对应 Topic 内发送请求,每个 Agent 保留独立路由和收件箱。`,"lark.connectApp":`连接 Lark App`,"lark.connection":`连接`,"lark.connections":`连接`,"lark.configuration":`Lark 配置`,"lark.continueFeishu":`在飞书中继续`,"lark.createAutomatically":`自动创建 Goal Topic`,"lark.createAutomaticallyDescription":`将为每个选中的 Agent 创建带 Agent 标识的专属 Topic。`,"lark.defaultAgentAppDescription":`用于查找目标群聊,并作为所有选中 Agent 的默认 App;下方的逐 Agent 选择可覆盖它。`,"lark.description":`管理可复用的 Lark App,并用独立 Topic 将群聊连接到 Goal。`,"lark.editConnection":`编辑 Lark 连接`,"lark.goalConnections":`{count} 个 Goal 连接`,"lark.goalTopicConnections":`Lark Goal Topic 连接`,"lark.groupChat":`群聊`,"lark.groupEmpty":`该机器人尚未加入可连接的群。请先在飞书群设置中添加这个机器人,再回来刷新或搜索。`,"lark.groupLoading":`正在读取该机器人已加入的群…`,"lark.groupSearch":`搜索该机器人已加入的群`,"lark.historyPermission":`历史补读权限(独立能力)`,"lark.health.contextCaptured":`已捕获群聊上下文`,"lark.health.contextCapturedDetail":`该消息仅作为非权威上下文保留,不会启动或引导管家 Turn;需要执行时请直接 @ 机器人或回复机器人的消息。`,"lark.health.eventProcessed":`已处理 {events} 条事件,成功回复 {replies} 条。`,"lark.health.eventUnverified":`事件订阅待验证`,"lark.health.eventUnverifiedDetail":`Provider listener 已就绪,但尚未收到消息事件。请启用 im.message.receive_v1、开通群聊 @ 消息权限并发布新版,然后在这个 Agent Topic 内发送新的 @ 消息;存在多条 Agent 路由时,群顶层消息会 fail closed。`,"lark.health.ignoredSelf":`已忽略机器人自身发送的消息,避免重复回复。`,"lark.health.invalidRouting":`路由配置无效`,"lark.health.invalidRoutingDetail":`连接已安全停用,请重新选择处理方式并保存。`,"lark.health.lastStatus":`最近事件状态:{status}`,"lark.health.listening":`监听中`,"lark.health.messageContextPermission":`消息权限不足`,"lark.health.messageContextPermissionDetail":`已收到消息事件,但无法读取群消息上下文。请发布并授权该 App 的群消息读取权限。`,"lark.health.notAddressed":`最近消息未直接 @ 机器人`,"lark.health.notAddressedDetail":`监听正常;当前连接只响应直接 @ 机器人或对机器人的回复。`,"lark.health.notStarted":`监听未启动`,"lark.health.notStartedDetail":`请刷新连接或重新启动 LoopX 后再试。`,"lark.health.processingFailed":`消息处理失败`,"lark.health.processingFailedDetail":`已收到消息事件,但 Agent 处理失败。请查看本地诊断后重试。`,"lark.health.queued":`已进入 Agent 收件箱`,"lark.health.queuedDetail":`消息由 {agent} 异步处理,不会启动通用 Chat Session。`,"lark.health.sourceDisconnected":`实时消息连接断开`,"lark.health.sourceDisconnectedDetail":`消息监听进程意外退出。请核对应用档案的平台:飞书应用选飞书,国际版 Lark 应用选 Lark,再检查连接及订阅错误。LoopX 正在重试;历史消息能读取,不代表能实时收消息。`,"lark.health.retrying":`监听重试中`,"lark.health.retryingDetail":`事件监听暂时中断,LoopX 正在自动重试。`,"lark.health.routeAmbiguous":`消息匹配多个 Goal`,"lark.health.routeAmbiguousDetail":`同一 Bot 和群聊存在多个完整群捕获连接。请让每个 Agent 使用独立 Bot,或只保留一个完整群连接。`,"lark.health.routeMismatch":`消息未匹配当前 Goal Topic`,"lark.health.routeMismatchDetail":`事件来自其他群聊或 Topic。请重新选择群聊并连接该 Goal,然后发送一条新的 @ 消息。`,"lark.health.routeUnavailable":`消息无法路由到 Goal`,"lark.health.routeUnavailableDetail":`当前连接信息不完整。请重新连接该 Goal 后再发送一条新的 @ 消息。`,"lark.health.starting":`正在启动`,"lark.health.startingDetail":`LoopX 正在启动该 App 的消息事件监听。`,"lark.health.unavailable":`自动回复不可用`,"lark.health.waiting":`等待处理`,"lark.incomingMessages":`接收消息`,"lark.ingressAsync":`异步收件箱`,"lark.ingressAsyncDescription":`写入 Agent 私有收件箱,等待后续显式处理。`,"lark.editPreservesIdentity":`保存会保留此 App、群和 Topic;旧连接默认升级为 Agent 异步收件箱。`,"lark.conversationKind":`连接用途`,"lark.managerConversation":`管家 · 同步对话`,"lark.workerConversation":`工作 Agent · 后台任务`,"lark.managerConversationDescription":`内置管家即时回应对话,长任务交给后台 Agent。群聊与私聊分别保存上下文。`,"lark.ingressLegacy":`待升级`,"lark.ingressLegacyDescription":`保存连接即可升级为 Agent 异步收件箱,已有消息保留在原 Topic 中。`,"lark.ingressQueue":`排队`,"lark.ingressQueueDescription":`进入同一 Agent Session 的有界 FIFO 队列,当前 Turn 完成后处理。`,"lark.ingressSteering":`实时引导`,"lark.ingressSteeringDescription":`投到当前活跃 Turn;没有精确活跃 Turn 时安全拒绝。`,"lark.loading":`加载 Lark 配置…`,"lark.management":`Lark 管理`,"lark.openEventSettings":`查看飞书事件配置`,"lark.mentions":`提及机器人`,"lark.mentionsOnly":`仅提及消息`,"lark.needsMessagePermissions":`需要消息权限`,"lark.needsSetup":`需要设置`,"lark.newApp":`新建 Lark App`,"lark.noAgentConfigured":`未配置 Agent`,"lark.noConnections":`暂无匹配的连接。`,"lark.noProfiles":`还没有可用的 lark-cli App profile。`,"lark.profileName":`Profile 名称`,"lark.profileValidation":`Profile 只能包含字母、数字、点、下划线和连字符。`,"lark.processing":`处理方式`,"lark.region":`区域`,"lark.registerAnother":`+ 注册另一个 Lark App — 通过飞书创建`,"lark.reopenFeishu":`重新打开飞书`,"lark.settingsConfigure":`配置 {goal}`,"lark.settingsDisconnect":`解绑 {goal}`,"lark.replyMode":`回复方式`,"lark.replyModeDescription":`当前只支持在来源 Topic 内回复,避免跨群或跨 Goal 投递。`,"lark.reusableApps":`{count} 个可复用 App`,"lark.reusableWorkspaceApp":`可复用工作区 App`,"lark.routesUnverified":`{count} 条 Lark 路由尚未验证`,"lark.saveConnection":`保存连接`,"lark.searchConnections":`搜索 Lark 连接`,"lark.searchPlaceholder":`搜索 App、群、Goal 或 Topic`,"lark.setupCopy":`LoopX 将通过 lark-cli 打开飞书官方创建页面。应用凭证保存在系统 Keychain,LoopX 只保留 profile 引用。`,"lark.someoneMentions":`有人提及 Agent`,"lark.targetAgent":`目标 Agent`,"lark.targetAgentDescription":`选择该 Goal 内已注册的 Agent。此连接只投递给一个 Agent,不广播、不授予新权限。实时引导与排队需要该 Agent 的精确活跃 Session。`,"lark.agentUnavailable":`{agent} · 已不可用`,"lark.selectRegisteredAgent":`请先选择可用的已注册 Agent;不会自动替换原先的接收者。`,"lark.topicPreview":`Topic 预览`,"lark.topicReply":`Topic 回复`,"lark.trigger":`触发方式`,"lark.waitingFeishu":`等待飞书完成创建`,"lark.waitingFeishuDescription":`请在新窗口中完成飞书授权,完成后会自动回到这里。`,"lark.waitingLink":`正在生成飞书官方创建链接…`,"lark.error.appCreate":`Lark App 创建失败`,"lark.error.appRequired":`请选择一个 Lark App profile。`,"lark.error.bind":`绑定失败`,"lark.error.bindPreview":`绑定预览失败`,"lark.error.configuration":`Lark 配置加载失败`,"lark.error.groupLookup":`无法读取该机器人已加入的群。请检查机器人状态后重试。`,"lark.error.groupLoad":`群聊加载失败`,"lark.error.invalidApp":`Lark App profile 不可用或尚未完成授权。`,"lark.error.messagePermissions":`该 App 缺少自动回复所需的机器人权限。请开启 im:message.group_at_msg:readonly 和 im:message:send_as_bot,发布新版后回来刷新重试。`,"lark.error.provider":`飞书 API 调用失败,且没有生成已验证回执。请稍后重试。`,"lark.error.setupPoll":`创建状态查询失败`,"lark.error.setupStart":`无法启动 Lark App 创建流程`,"lark.error.cliExecutable":`已找到配置的 lark-cli,但当前无法执行。请检查安装或启动参数。`,"lark.error.cliMissing":`未发现 lark-cli。请先安装 lark-cli,然后重新启动 LoopX。`,"lark.error.cliStart":`lark-cli 启动失败。请检查安装状态,然后重新启动 LoopX。`,"lark.error.disconnect":`解绑失败`,"notifications.autoNotify":`需要你确认时自动推送到群里`,"notifications.bind":`绑定到通知群`,"notifications.bindConfirm":`将把「{goal}」绑定到通知群「{target}」,绑定时会验证机器人在群内并发送一条确认消息。`,"notifications.bindFailed":`绑定失败`,"notifications.bound":`已绑定`,"notifications.confirmBind":`确认绑定`,"notifications.description":`把 Goal 里需要你确认的变更推送到飞书群。绑定和开关在这里完成,推送逻辑沿用现有通道。`,"notifications.disabled":`已停用`,"notifications.group":`通知群:{target}`,"notifications.loadFailed":`通知群列表加载失败`,"notifications.noTargets":`还没有可用的通知群。通知群涉及机器人私有身份,请先在终端配置一次:`,"notifications.notBound":`未绑定`,"notifications.recent":`最近 {time}`,"notifications.sentCount":`已发送 {count} 条`,"notifications.settings":`Goal 通知绑定`,"notifications.setupFailed":`设置失败`,"notifications.title":`飞书群通知`,"proposal.field.agentId":`Agent`,"proposal.field.cadence":`频率`,"proposal.field.completionCriteria":`完成标准`,"proposal.field.executionBoundary":`执行边界`,"proposal.field.goalId":`Goal ID`,"proposal.field.heartbeat":`Heartbeat`,"proposal.field.initialTodos":`首个任务`,"proposal.field.objective":`目标`,"proposal.field.operation":`操作`,"proposal.field.operationState":`操作状态`,"proposal.field.resultDelivery":`结果回传`,"proposal.field.confirmationBoundary":`确认边界`,"proposal.field.expiresAt":`过期时间`,"proposal.field.permission":`权限`,"proposal.field.reason":`原因`,"proposal.field.stopCondition":`停止条件`,"proposal.field.target":`检查内容`,"proposal.field.timezone":`时区`,"proposal.field.title":`标题`,"proposal.field.workspace":`执行工作区`,"actionReview.targetChanged":`预览目标与请求的 Goal 或操作不一致,请重新生成预览。`,"actionReview.ready_stop":`暂停可恢复。此预览已通过检查,可直接执行;完成仍需要读回验证。`,"actionReview.resume_review":`恢复自动调度前需要确认。实际执行仍受额度、Gate 和 Todo 约束。`,"actionReview.delete_review":`请确认从注册表移除这个已停止 Goal。项目文件与历史记录会保留。`,"actionReview.action_review":`执行前请检查此提案的目标与影响。`,"actionReview.protected_action":`此操作需要明确审阅。确认不能替代所需授权。`,"actionReview.unknown_permission":`无法识别权限分类。请重新检查提案后再继续。`,"actionReview.unknown_action":`无法识别此生命周期操作。请重新检查提案后再继续。`,"actionReview.incomplete_proposal":`预览缺少验证信息或可执行转换。请重新生成预览。`,"actionReview.authority_gate":`Gate 阻止执行。请满足其要求后重新检查提案。`,"actionReview.stale_proposal":`来源状态已变化。请重新生成预览,原决定不再适用。`,"actionReview.apply_pending":`正在执行,请等待读回结果后再重试。`,"actionReview.readback_verified":`操作已完成,结果状态已通过读回验证。`,"actionReview.readback_unverified":`操作返回但未通过读回验证。尚不能确认完成,请重新检查状态。`,"actionReview.operation_group_confirmation":`这份精确请求只能在已绑定飞书群的原始卡片确认;Dashboard 不提供本地执行入口。`,"actionReview.operation_result_delivery_pending":`操作结果已经记录,但原群结果卡尚未通过回读核验。`,"actionReview.apply_failed":`执行未完成。请检查失败原因并重新生成预览后再试。`,"actionReview.inactive_proposal":`此提案当前不可执行。请重新检查后再继续。`,"proposal.gate.default":`需要宿主确认`,"proposal.impact.default":`确认后会调用规范 LoopX 服务写入状态。`,"proposal.impact.goalCreate":`确认后会创建 Goal 和首个 Todo,并让选定 Agent 开始首轮推进。`,"proposal.impact.lifecycleDelete":`确认后会从 source registry 和 global registry 移除这个已停止 Goal;项目文件、历史状态文件和备份不会被删除。`,"proposal.impact.lifecycleResume":`确认后会恢复 Goal 的自动调度资格并移回 Active Goals;实际执行仍受 quota、Gate 和 Todo 约束。`,"proposal.impact.lifecycleStop":`确认后会停止自动推进,并将 Goal 移入折叠的「已停止」列表;历史、Todo 和证据都会保留,可随时恢复。`,"proposal.impact.protected":`该操作需要通过受保护的 LoopX 写入服务完成。`,"proposal.impact.operation":`这里仅展示同一份不可变条款。请在已绑定的飞书群确认或拒绝;确认只会消费一个规范 claim。`,"proposal.primary.apply":`确认并应用`,"proposal.primary.goalCreate":`创建 Goal 并开始首轮`,"proposal.primary.lifecycleDelete":`删除 Goal`,"proposal.primary.lifecycleResume":`恢复 Goal`,"proposal.primary.lifecycleStop":`停止 Goal`,"proposal.primary.todoStart":`创建任务并开始执行`,"proposal.primary.operationGroup":`前往飞书群确认`,"proposal.primary.operationResultPending":`结果卡回传待恢复`,"proposal.primary.operationResultVerified":`结果已核验`,"proposal.resultDelivery.verified":`已在原群卡片完成回读核验`,"proposal.resultDelivery.pending":`等待回传并核验原群卡片`,"proposal.summary.goalCreate":`创建 Goal:{title}`,"proposal.summary.heartbeat":`为当前 Goal 设置 Heartbeat`,"proposal.summary.lifecycleDelete":`删除 Goal:{title}`,"proposal.summary.lifecycleResume":`恢复 Goal:{title}`,"proposal.summary.lifecycleStop":`停止 Goal:{title}`,"proposal.summary.monitor":`为当前 Goal 创建定时检查:{target}`,"proposal.summary.teamPlan":`为 {goal} 配出 {count} 条 lane 的团队`,"proposal.impact.teamPlan":`确认后会通过既有 owner 为每条就绪 lane 创建它的首个有界 Todo;声明了编制缺口的 lane 不创建任何东西;apply 回执返回前不存在任何 lane;预览与 apply 之间 Goal 或 Agent 发生变化会让这条提案变为 stale,而不是按漂移后的编制执行。`,"proposal.primary.teamPlan":`确认并组建各 lane`,"proposal.field.laneGaps":`未配齐的 lane`,"proposal.field.quotaEnvelope":`配额包络`,"proposal.teamPlan.acceptanceShort":`验收参考`,"proposal.teamPlan.advisory":`计划参考;本次确认不执行该约束`,"proposal.teamPlan.appliedPartially":`已分配 {created} 条 lane 的任务,{gaps} 条仍有缺口。接收者采纳与执行尚未验证。`,"proposal.teamPlan.appliedAlreadyPresent":`已恢复原分配结果,未新增任务;这不证明当前执行状态。`,"proposal.teamPlan.applied":`lane 任务已分配;接收者采纳与执行尚未验证。`,"proposal.teamPlan.gapLane":`未配齐`,"proposal.teamPlan.laneUnstaffed":`编制缺口,无首个 Todo`,"proposal.teamPlan.appliedGapLane":`{lane}({agent})仍未组建:{reason}`,"proposal.teamPlan.gapReason.agentNotRegistered":`该 Agent 未在该 Goal 注册`,"proposal.teamPlan.gapReason.actionKindNotSupported":`本机不支持该动作类型`,"proposal.workspace.current":`当前本地工作区(未绑定 Repository)`,"proposal.workspace.named":`{workspace}(仅提供执行环境,不会自动关联仓库)`,"proposal.workspaceGate.agentImpact":`先完成 Agent 身份绑定,再重新检查原操作;当前没有写入 Goal。`,"proposal.workspaceGate.agentTitle":`先绑定 Agent`,"proposal.workspaceGate.defaultSummary":`请选择 Goal 所属工作区。`,"proposal.workspaceGate.selectionImpact":`选择工作区后会重新展示待确认操作,选择本身不会写入状态。`,"proposal.workspaceGate.selectionTitle":`选择 Goal 工作区`,"projection.agentAdvancingGoal":`Agent 正在推进当前 Goal`,"projection.agentIdle":`暂无需要你处理`,"projection.agentNeedsDecision":`Agent 等待你的决定`,"projection.agentPreparingNextStep":`Agent 正在整理下一步`,"projection.agentStopped":`已由你停止;历史、Todo 和证据仍保留`,"projection.agentWaitingExternal":`正在等待外部条件`,"projection.confirmAgentDecision":`请确认 Agent 下一步需要的权限或决策`,"projection.events24h":`24 小时内 {count} 个事件`,"projection.firstReadOnlyAdapterCheck":`执行首次只读适配检查并保存进度`,"projection.goalVerified":`Goal 状态、Todo 与注册信息已验证`,"projection.latestRun":`最近运行`,"projection.latestValidation":`最近验证`,"projection.nextUpdatePending":`等待 LoopX 更新下一步`,"projection.publicSafeProjection":`公开安全状态投影`,"projection.refreshState":`刷新 LoopX 状态,确认当前进度仍然有效`,"projection.runEvidenceAvailable":`存在可查看的运行证据`,"projection.runRecorded":`最近一次 LoopX 运行已经记录`,"projection.statusRefreshNeeded":`LoopX 状态需要刷新`,"projection.todoStatusUpdated":`Todo 状态已经更新,正在确认下一步`,"projection.validationRecorded":`最近验证已经记录`,"runs.completed":`已完成`,"runs.failed":`需检查`,"runs.interrupted":`已中断`,"runs.queued":`已安排`,"runs.ready":`可继续`,"runs.resumeFailed":`恢复失败`,"runs.running":`执行中`,"runs.unknown":`状态未知`,"runs.waiting":`等待条件`,"schedule.active":`执行中`,"schedule.heartbeat":`Goal Heartbeat`,"schedule.monitor":`定时与持续任务`,"schedule.paused":`已暂停`,"schedule.summary":`按 LoopX 调度约束持续检查`,"schedule.defaultTarget":`检查当前 Goal 的阻塞、进度与新产出`,"schedule.unsupportedCalendar":`当前定时检查不支持精确到星期或时刻的日历计划。请改用固定间隔,例如“每 30 分钟”“每 2 小时”或“每天”;草稿已保留,没有生成待确认操作。`,"source.add":`添加来源`,"source.addConfigured":`添加只读来源`,"source.addMethod":`来源添加方式`,"source.addSsh":`添加 SSH 隧道来源`,"source.closeForm":`关闭来源表单`,"source.configured":`已配置 SSH`,"source.configuredCount":`本机 SSH Host · {count} 个`,"source.configuredGroup":`已配置 SSH Host · {count}(点击快速添加)`,"source.connected":`已连接`,"source.connecting":`连接中`,"source.controlPlane":`控制面来源`,"source.copy":`复制`,"source.copyCommand":`复制 SSH 隧道命令`,"source.copyError":`无法复制命令,请手动复制下方命令。`,"source.copied":`已复制`,"source.description":`已读取全部显式 Host(含 Include);通配规则不会作为具体来源。先运行命令,LoopX 不读取密钥或配置细节。`,"source.host":`本机 SSH Host`,"source.hostEmpty":`~/.ssh/config 中没有可直接选择的显式 Host。`,"source.hostLoadError":`无法读取本机 SSH Host。`,"source.hostPlaceholder":`输入或搜索 Host`,"source.invalid":`SSH 来源参数无效。`,"source.loadingHosts":`正在读取…`,"source.localInteractive":`本机交互`,"source.localPort":`本地端口`,"source.manual":`手动 URL`,"source.manualDescription":`远端来源始终按只读投影处理,不继承本机写权限。`,"source.name":`名称`,"source.namePlaceholder":`远程开发机`,"source.notAvailable":`不可用`,"source.readOnly":`SSH 隧道 · 只读`,"source.readOnlyNoticeDescription":`你可以查看 Goal、Task、证据与运行状态;写入、纠偏和 Agent 会话仍留在来源主机。`,"source.readOnlyNoticeTitle":`远端只读投影`,"source.readOnlyWriteError":`远端 SSH 隧道来源是只读投影,不能执行控制面写入。`,"source.refreshHosts":`重新读取 SSH Host`,"source.remove":`移除来源 {source}`,"source.removeCurrent":`移除当前来源`,"source.select":`选择控制面来源`,"source.selectHost":`请选择已配置的 SSH Host。`,"source.statusUrl":`本地转发 URL`,"source.tunnelCommandPending":`选择 Host 后生成隧道命令`,"machine.absent":`尚未配置`,"machine.action.create":`创建机器策略`,"machine.action.delete":`移除机器策略`,"machine.action.unchanged":`无需写入`,"machine.action.update":`更新机器策略`,"machine.applied":`机器策略已应用,并通过回读校验。`,"machine.applyError":`无法应用机器策略。`,"machine.applyPreview":`应用已审阅预览`,"machine.changedNamespaces":`变更的 Namespace`,"machine.capabilityCatalog":`机器能力目录`,"machine.capabilityEmpty":`当前没有注册可在机器作用域配置的能力。`,"machine.configured":`已配置`,"machine.confirmRollback":`确认回滚`,"machine.currentRevision":`当前 Revision`,"machine.currentValue":`当前机器值`,"machine.description":`与 Goal 设置共用能力目录。在这里管理受支持的机器默认值;仅支持 Goal 配置的能力会明确标注。`,"capabilities.rawJson":`高级:原始 JSON`,"machine.goalOnly":`此能力目前仅支持 Goal 级配置。请打开具体 Goal 的能力设置进行配置;这里不会设置机器级默认值。`,"machine.desiredRevision":`目标 Revision`,"machine.editorUnavailable":`当前版本未安装此 Namespace 的编辑器`,"machine.editorUnavailableDescription":`它仍会显示在 Registry 中;安装或升级对应的 Dashboard 编辑器后才能修改。`,"machine.editorMode":`编辑模式`,"machine.liveDefault":`实时默认值;Goal 显式覆盖优先`,"machine.liveDefaultDescription":`没有显式覆盖的 Goal 会在该能力下一次决策时读取当前机器策略。修改或移除策略会立即影响这些已有 Goal;显式 Goal 覆盖保持固定。`,"machine.credentialTitle":`操作者模型凭据`,"machine.credentialDescription":`管家通道与托管宿主在本机认证用的 key 与 endpoint。key 单独存放于仅属主可读的文件,不会进入这里展示的机器配置,也不会被回读——回读的是它的指纹。`,"machine.credentialApiKey":`API key`,"machine.credentialApiKeyPlaceholder":`粘贴 key 以保存;留空则保留已存的 key`,"machine.credentialBaseUrl":`Endpoint base URL`,"machine.credentialBaseUrlPlaceholder":`https://endpoint.example/v1(留空则使用 endpoint 默认值)`,"machine.credentialStore":`保存凭据`,"machine.credentialClearKey":`清除已存 key`,"machine.credentialClearUrl":`清除已存 endpoint`,"machine.credentialConfigured":`已配置`,"machine.credentialAbsent":`未配置`,"machine.credentialInvalid":`无法读取——需要修复`,"machine.credentialSourceMachine":`本机已存凭据`,"machine.credentialSourceEnvironment":`服务环境变量`,"machine.credentialSourceUnset":`无来源`,"machine.credentialFingerprint":`指纹`,"machine.credentialStored":`凭据已保存。下一轮即生效,无需重启。`,"machine.credentialCleared":`已清除本机存储的凭据。`,"machine.credentialError":`凭据保存失败。`,"machine.credentialBoundary":`保存凭据不授予任何权限:它不会选择执行器、模型或推理强度。`,"machine.genericNamespaceDescription":`使用 JSON 编辑这个已注册 Namespace。LoopX 会先按 capability 自己拥有的 schema 校验,再允许预览写入。`,"machine.jsonConfiguration":`Namespace 配置(JSON)`,"machine.jsonConfigurationHelp":`只更新当前 Namespace;其他机器配置会保留,Apply 仍锁定到已审阅的 Preview Revision。`,"machine.jsonEditor":`JSON`,"machine.editJson":`编辑 JSON`,"capabilities.jsonConfiguration":`Goal 配置(JSON)`,"capabilities.jsonHelp":`仅编辑当前 Goal 的已注册字段。修改后需重新预览才能应用。`,"capabilities.jsonInvalid":`请输入合法的 JSON 对象,且仅包含已注册的可编辑字段。`,"machine.backToForm":`返回表单`,"machine.jsonInvalid":`请先填写一个合法的 JSON object,再预览变更。`,"machine.loadError":`无法读取机器配置。`,"machine.invalidStoredConfiguration":`已保存的机器配置需要修复`,"machine.invalidStoredConfigurationDescription":`已保存值不再符合当前契约,因此不会在这里显示。请检查已定位的能力,并通过“预览”和“应用”替换它;无关 namespace 保持不变。`,"machine.machinePolicy":`机器策略`,"machine.namespaceCount":`已注册 Namespace`,"machine.namespaces":`配置 Namespace`,"machine.periodicReport":`周期报告`,"machine.periodicReportDescription":`为所有未显式覆盖的 Goal 提供默认报告策略;Goal 调度与发送消费解析后的有效配置。`,"machine.periodicReportActivation":`开启后将在已验证的阶段节点自动投递`,"machine.periodicReportActivationDescription":`这不是每周定时器。当 LoopX 验证 Goal 已完成一个阶段时,Agent 会生成并冻结报告,随后通过配置的 Goal Channel 自动发送。启用此订阅即授予持续投递权;发送失败或路由漂移会 fail closed 并进入修复。`,"machine.changeQualityActivation":`质量验证是质量门禁,不是新增授权`,"machine.changeQualityActivationDescription":`继承该策略的 Goal 会验证最终精确 diff。safe_fix 只允许在既有写入权限内执行至多一次有界修复;此设置不会授予文件、权限或合并权。`,"machine.replanCadenceActivation":`复核周期只改变时机,不改变执行权限`,"machine.replanCadenceActivationDescription":`没有显式覆盖的 Goal 会在下一次复核决策前读取此阈值;它不会创建 Turn、消耗配额或授予权限。`,"machine.preview":`审阅机器配置变更`,"machine.previewChanges":`预览变更`,"machine.previewError":`无法生成机器策略预览。`,"machine.previewLocked":`应用操作锁定到当前 Revision;若机器状态变化,LoopX 会要求重新预览。`,"machine.previewRollback":`预览回滚`,"machine.previewRemoval":`预览移除`,"machine.profilePreset":`Profile preset`,"machine.profilePresetHelp":`由 capability 管理的 preset,例如 weekly-progress。`,"machine.registry":`Typed Registry`,"machine.requiredFields":`开启后必须填写 profile preset、Goal Channel route 与有效时区。`,"machine.revision":`机器 Revision`,"machine.revisionLockedReady":`所有变更必须先预览;只有对应的机器 Revision 仍然有效时才会应用。`,"machine.rollbackAvailable":`可回滚上一次应用`,"machine.rollbackDescription":`先预览已保存的前一 Revision,再决定是否恢复。`,"machine.rollbackError":`无法完成回滚。`,"machine.rollbackPreviewDescription":`前一 Revision 已准备恢复,请确认执行本次回滚。`,"machine.rolledBack":`已恢复前一版机器策略,并通过校验。`,"machine.removed":`机器策略已移除,并通过回读校验。`,"machine.routeRef":`Goal Channel route`,"machine.routeRefHelp":`只填写公开 route alias;凭据与 provider identifier 不会进入此表单。`,"machine.timezone":`时区`,"machine.timezoneHelp":`填写 IANA 时区,例如 Asia/Shanghai。`,"machine.title":`机器配置`,"machine.unchanged":`机器策略已与预览一致,本次没有写入。`,"machine.visualEditor":`引导式`,"capabilities.atomicOverride":`Goal override 按完整配置生效`,"capabilities.atomicOverrideDescription":`Goal 的完整配置优先于机器默认值;LoopX 不会在两个作用域之间逐字段拼接。`,"capabilities.applyFailed":`Goal 能力变更未写入。`,"capabilities.applyPreview":`应用此预览`,"capabilities.catalog":`Goal 能力目录`,"capabilities.chooseGoal":`请先选择一个 Goal,再查看它的能力配置。`,"capabilities.defaultValue":`声明的默认值`,"capabilities.description":`查看当前 Goal 可用的能力,以及每项配置的准确作用域。`,"capabilities.editorPrepared":`已注册 typed editor contract`,"capabilities.effectiveSource":`当前生效来源`,"capabilities.empty":`当前 Goal 没有可用的能力描述。`,"capabilities.fields":`已注册字段`,"capabilities.goalPolicy":`Goal 能力策略`,"capabilities.goalScope":`Goal`,"capabilities.goalValue":`当前 Goal 值`,"capabilities.loadFailed":`无法加载 Goal 能力`,"capabilities.larkInboxNotificationDescription":`此开关只控制遇到人工 Gate 时是否自动发群消息;关闭后仍会保留飞书事件收件箱能力。`,"capabilities.larkInboxNotificationSetting":`Gate 群通知`,"capabilities.loading":`正在加载 Goal 能力…`,"capabilities.machineOnly":`此能力只能在机器作用域配置。`,"capabilities.machineValue":`实时机器默认值`,"capabilities.machineScope":`机器`,"capabilities.previewOnly":`当前读取结果来自真实配置;在 revision-locked preview/apply 路径接通前,Dashboard 不会提供 Goal 写入控件。`,"capabilities.preview":`锁定 revision 的变更预览`,"capabilities.previewChanges":`预览变更`,"capabilities.restoreInheritance":`恢复继承机器默认值`,"capabilities.previewFailed":`无法预览 Goal 能力变更。`,"capabilities.previewLocked":`应用时会重新校验这一个 plan revision;过期变更将被拒绝。`,"capabilities.partialWrite":`Goal 值已保存;共享投影仍需修复`,"capabilities.partialWriteDescription":`源 Goal 配置已经写入并回读,但共享 runtime 投影尚未同步;请勿重复提交本次变更。`,"capabilities.refreshSource":`刷新源配置`,"capabilities.readOnly":`只读能力`,"capabilities.revisionLockedReady":`所有变更必须先预览;只有对应的精确 revision 仍然有效时才会写入。`,"capabilities.retry":`重试`,"capabilities.source.capability_default":`能力默认值`,"capabilities.source.goal_override":`Goal override`,"capabilities.source.machine_default":`实时机器默认值`,"capabilities.source.not_configured":`未配置`,"capabilities.title":`Goal 能力`,"settings.close":`关闭设置`,"settings.appearance":`外观`,"settings.appearanceDescription":`管理当前浏览器里的工作区显示偏好。`,"settings.appearanceTabDescription":`主题和显示偏好`,"settings.capabilitiesTabDescription":`当前 Goal 的能力覆盖配置`,"settings.back":`返回工作区`,"settings.categories":`设置分类`,"settings.description":`管理工作区偏好与集成。`,"settings.eyebrow":`工作区偏好`,"settings.general":`通用`,"settings.goalConnections":`Goal 连接`,"settings.language":`语言`,"settings.modelProvider":`模型 Provider 配置`,"settings.globalCapabilities":`全局能力配置`,"settings.languageDescription":`选择 LoopX Desktop 工作区使用的界面语言。`,"settings.languageEnglishDescription":`使用英文显示导航、设置和工作区控件。`,"settings.languageEnglish":`English`,"settings.languageSimplifiedChineseDescription":`使用简体中文显示导航、设置和工作区控件。`,"settings.languageSimplifiedChinese":`简体中文`,"settings.languageStoredLocally":`此偏好仅保存在当前设备。`,"settings.languageTabDescription":`当前设备的界面语言`,"settings.larkTabDescription":`App、群聊和 Goal Topic 连接`,"settings.machineTabDescription":`本机各 Capability 共享的 typed defaults`,"settings.notifications":`通知`,"settings.open":`设置`,"settings.themeDefault":`纸张`,"settings.themeDefaultDescription":`安静、轻量,适合长期查看。`,"settings.themeDescription":`选择工作区的视觉风格。设置会保存在当前浏览器本地。`,"settings.themeHighContrast":`高对比`,"settings.themeHighContrastDescription":`更强边框和更醒目的状态块。`,"settings.themeLoopx":`LoopX 标准`,"settings.themeLoopxDescription":`精确的黑白界面、Geist 字体与安静的细线结构。`,"settings.title":`设置`,"settings.workspaceDisplay":`工作区显示`,"settings.workspaceTheme":`工作区主题`,"session.closeRecord":`退出运行记录`,"session.details":`Session 详情`,"session.record":`执行 Session · 运行记录`,"session.recordDescription":`当前时间线已切换到这次 Session 的消息与 Turn 记录。`,"sidebar.createGoal":`创建 Goal`,"sidebar.delete":`删除`,"sidebar.deleteGoal":`删除 Goal`,"sidebar.manager":`LoopX 管家`,"sidebar.notifications":`设置`,"sidebar.owner":`个人工作区`,"sidebar.product":`个人 Agent 工作区`,"sidebar.resume":`恢复`,"sidebar.resumeGoal":`恢复 Goal`,"sidebar.stop":`停止`,"tasks.historyLoading":`正在加载历史…`,"tasks.historyError":`历史加载失败,已显示的内容仍可查看。`,"tasks.historyExpired":`历史快照已过期,重新加载后可继续查看。`,"tasks.historyRetry":`重新加载`,"tasks.historyEnd":`已显示全部完成记录`,"tasks.historyMore":`加载更多`,"tasks.historyLocalOnly":`请打开这台机器的 Dashboard 查看完整历史。`,"sidebar.sortGoals":`调整 Goal 顺序`,"sidebar.dragGoal":`拖拽调整顺序,或使用列表排序按钮`,"sidebar.moveUp":`上移 {goal}`,"sidebar.moveDown":`下移 {goal}`,"sidebar.goalMoved":`{goal} 已移至第 {position} 位`,"sidebar.orderNotSaved":`顺序已在本次页面生效;浏览器存储不可用,无法保存。`,"sidebar.stopGoal":`停止 Goal`,"sidebar.stopped":`已停止`,"sidebar.stoppedLoading":`正在加载已停止 Goal`,"sidebar.stoppedLoadFailed":`已停止 Goal 加载失败,其他 Goal 仍可使用。`,"sidebar.retryStopped":`重试`,"state.completed":`已完成`,"state.needsRepair":`需修复`,"state.needsYou":`等你`,"state.quiet":`安静运行`,"state.running":`推进中`,"state.stopped":`已停止`,"state.waiting":`等待条件`,"tasks.blocked":`受阻`,"tasks.agentLane":`工作 Agent`,"tasks.agentLaneDescription":`筛选这个 Goal 下的工作泳道`,"tasks.agentLaneFilter":`按工作 Agent 筛选`,"tasks.allAgentLanes":`全部 Agent({count})`,"tasks.chatAgentReplied":`Agent 已回复`,"tasks.chatPending":`已发送给 Agent`,"tasks.chatPendingDescription":`正在处理;只有经过确认的任务操作才会更新 Tasks。`,"tasks.chatRecent":`最近对话`,"tasks.chatUnchangedDescription":`本次对话没有直接修改 Tasks。需要执行时,可先转成 Task 草稿并确认。`,"tasks.chatViewReply":`查看回复`,"tasks.convertToTask":`转为 Task`,"tasks.completed":`已完成`,"runs.discoveryPartial":`部分执行详情暂不可用,正在重连;任务摘要不代表实时执行状态。`,"runs.discoveryOffline":`执行服务暂不可用,正在重连;保留的任务摘要可能已过时。`,"files.openConversation":`前往会话`,"files.exportSummary":`导出摘要`,"tasks.viewDescription":`先处理待确认,再查看工作与完成记录`,"tasks.viewLabel":`任务视图`,"tasks.listView":`列表`,"tasks.boardView":`看板`,"tasks.completedSummary":`已完成 {count} 项,近期完成明细由控制面按需投影。`,"tasks.emptyCompleted":`还没有完成的任务。`,"tasks.emptyConfirm":`没有待确认的任务。`,"tasks.emptyRunning":`没有待执行或进行中的任务。`,"tasks.emptySchedules":`没有定时任务。`,"tasks.emptyGoal":`这个 Goal 还没有任务。用下面的输入框描述下一步,LoopX 会先展示待确认操作。`,"tasks.markComplete":`标记完成:{name}`,"tasks.moreActions":`更多操作:{name}`,"tasks.openExecution":`查看执行过程:{name}`,"tasks.pending":`待处理`,"tasks.pendingAndRunning":`待执行 / 进行中`,"tasks.scheduled":`定时与持续`,"tasks.sessionError":`Session 异常`,"tasks.waiting":`待执行`,"tasks.waitingAge":`已等待 {age}`,"tasks.viewExecution":`查看执行过程`,"tasks.viewResult":`查看结果`,"time.days":`{count} 天`,"time.hours":`{count} 小时`,"timeline.emptyGoal":`这个 Goal 还没有新动态`,"timeline.emptyGoalDescription":`你可以直接询问进度或下发新的纠偏信息。`,"timeline.emptyWorkspace":`今天的工作区很安静`,"timeline.emptyWorkspaceDescription":`向 LoopX 管家描述一个 Goal,或询问今天最值得关注的事情。`,"timeline.gateHistory":`{count} 项历史 Gate`,"timeline.pending":`正在整理…`,"returnDelivery.queued":`结论等待回传`,"returnDelivery.verifying":`正在核验送达,不会重复发送`,"returnDelivery.delivered":`已送达原受众`,"returnDelivery.reconciled":`恢复后已核验送达`,"returnDelivery.unverified":`送达仍明确未核验`,"timeline.runCompleted":`{run}:已完成`,"timeline.review":`查看处理方式`,"timeline.reviewAndConfirm":`查看并确认`,"timeline.waitingConfirmation":`待你确认`}};function Gi(e,t){return t?Object.entries(t).reduce((e,[t,n])=>e.replaceAll(`{${t}}`,String(n)),e):e}function Ki(){try{return window.localStorage.getItem(`loopx-pw-locale`)===`en`?`en`:`zh-CN`}catch{return`zh-CN`}}function qi({children:e}){let[t,n]=(0,z.useState)(Ki);function r(e){n(e);try{window.localStorage.setItem(Ui,e)}catch{}}(0,z.useEffect)(()=>{document.documentElement.lang=t},[t]);let i=(0,z.useMemo)(()=>({locale:t,setLocale:r,t:(e,n)=>Gi(Wi[t][e],n)}),[t]);return(0,B.jsx)(Hi.Provider,{value:i,children:e})}function Ji(){let e=(0,z.useContext)(Hi);if(!e)throw Error(`useWorkspaceI18n must be used within WorkspaceI18nProvider`);return e}function Yi(e,t){let n={安静运行:`state.quiet`,等你:`state.needsYou`,等待条件:`state.waiting`,推进中:`state.running`,需修复:`state.needsRepair`,已完成:`state.completed`,已停止:`state.stopped`}[e];return n?Wi[t][n]:e}function Xi(e,t){let n={busy:`runs.running`,completed:`runs.completed`,failed:`runs.failed`,queued:`runs.queued`,ready:`runs.ready`,resume_failed:`runs.resumeFailed`,running:`runs.running`,waiting:`runs.waiting`};return e?n[e]?t(n[e]):e:t(`runs.unknown`)}function Zi(e,t){if(!e)return null;let n=new Date(e).getTime();if(Number.isNaN(n))return null;let r=Date.now()-n;if(r<36e5)return null;let i=Math.floor(r/864e5);return i>=1?t(`time.days`,{count:i}):t(`time.hours`,{count:Math.floor(r/36e5)})}var Qi;function H(e,t,n){function r(n,r){if(n._zod||Object.defineProperty(n,"_zod",{value:{def:r,constr:o,traits:new Set},enumerable:!1}),n._zod.traits.has(e))return;n._zod.traits.add(e),t(n,r);let i=o.prototype,a=Object.keys(i);for(let e=0;en?.Parent&&t instanceof n.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(o,"name",{value:e}),o}var $i=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},ea=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(Qi=globalThis).__zod_globalConfig??(Qi.__zod_globalConfig={});var ta=globalThis.__zod_globalConfig;function na(e){return e&&Object.assign(ta,e),ta}function ra(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function ia(e,t){return typeof t==`bigint`?t.toString():t}function aa(e){return{get value(){{let t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function oa(e){return e==null}function sa(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function ca(e,t){let n=e/t,r=Math.round(n),i=2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r){};function ga(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var _a=aa(()=>{if(ta.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function va(e){if(ga(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return ga(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}function ya(e){return va(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var ba=new Set([`string`,`number`,`symbol`]);function xa(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Sa(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function U(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function Ca(e){return Object.keys(e).filter(t=>e[t]._zod.optin===`optional`&&e[t]._zod.optout===`optional`)}var wa={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function Ta(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);return Sa(e,fa(e._zod.def,{get shape(){let e={};for(let r in t){if(!(r in n.shape))throw Error(`Unrecognized key: "${r}"`);t[r]&&(e[r]=n.shape[r])}return da(this,`shape`,e),e},checks:[]}))}function Ea(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);return Sa(e,fa(e._zod.def,{get shape(){let r={...e._zod.def.shape};for(let e in t){if(!(e in n.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&delete r[e]}return da(this,`shape`,r),r},checks:[]}))}function Da(e,t){if(!va(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=e._zod.def.shape;for(let e in t)if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return Sa(e,fa(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return da(this,`shape`,n),n}}))}function Oa(e,t){if(!va(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return Sa(e,fa(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return da(this,`shape`,n),n}}))}function ka(e,t){if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);return Sa(e,fa(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return da(this,`shape`,n),n},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function Aa(e,t,n){let r=t._zod.def.checks;if(r&&r.length>0)throw Error(`.partial() cannot be used on object schemas containing refinements`);return Sa(t,fa(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in r))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t])}else for(let t in r)i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t];return da(this,`shape`,i),i},checks:[]}))}function ja(e,t,n){return Sa(t,fa(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in i))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=new e({type:`nonoptional`,innerType:r[t]}))}else for(let t in r)i[t]=new e({type:`nonoptional`,innerType:r[t]});return da(this,`shape`,i),i}}))}function Ma(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function Fa(e){return typeof e==`string`?e:e?.message}function Ia(e,t,n){let r=e.message?e.message:Fa(e.inst?._zod.def?.error?.(e))??Fa(t?.error?.(e))??Fa(n.customError?.(e))??Fa(n.localeError?.(e))??`Invalid input`,{inst:i,continue:a,input:o,...s}=e;return s.path??=[],s.message=r,t?.reportInput&&(s.input=o),s}function La(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function Ra(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}var za=(e,t)=>{e.name=`$ZodError`,Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,ia,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},Ba=H(`$ZodError`,za),Va=H(`$ZodError`,za,{Parent:Error});function Ha(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?(n[i.path[0]]=n[i.path[0]]||[],n[i.path[0]].push(t(i))):r.push(t(i));return{formErrors:r,fieldErrors:n}}function Ua(e,t=e=>e.message){let n={_errors:[]},r=(e,i=[])=>{for(let a of e.issues)if(a.code===`invalid_union`&&a.errors.length)a.errors.map(e=>r({issues:e},[...i,...a.path]));else if(a.code===`invalid_key`)r({issues:a.issues},[...i,...a.path]);else if(a.code===`invalid_element`)r({issues:a.issues},[...i,...a.path]);else{let e=[...i,...a.path];if(e.length===0)n._errors.push(t(a));else{let r=n,i=0;for(;i(t,n,r,i)=>{let a=r?{...r,async:!1}:{async:!1},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise)throw new $i;if(o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>Ia(e,a,na())));throw ha(t,i?.callee),t}return o.value},Ga=e=>async(t,n,r,i)=>{let a=r?{...r,async:!0}:{async:!0},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise&&(o=await o),o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>Ia(e,a,na())));throw ha(t,i?.callee),t}return o.value},Ka=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new $i;return a.issues.length?{success:!1,error:new(e??Ba)(a.issues.map(e=>Ia(e,i,na())))}:{success:!0,data:a.value}},qa=Ka(Va),Ja=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new e(a.issues.map(e=>Ia(e,i,na())))}:{success:!0,data:a.value}},Ya=Ja(Va),Xa=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Wa(e)(t,n,i)},Za=e=>(t,n,r)=>Wa(e)(t,n,r),Qa=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Ga(e)(t,n,i)},$a=e=>async(t,n,r)=>Ga(e)(t,n,r),eo=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Ka(e)(t,n,i)},to=e=>(t,n,r)=>Ka(e)(t,n,r),no=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Ja(e)(t,n,i)},ro=e=>async(t,n,r)=>Ja(e)(t,n,r),io=/^[cC][0-9a-z]{6,}$/,ao=/^[0-9a-z]+$/,oo=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,so=/^[0-9a-vA-V]{20}$/,co=/^[A-Za-z0-9]{27}$/,lo=/^[a-zA-Z0-9_-]{21}$/,uo=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,fo=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,po=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,mo=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,ho=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;function go(){return new RegExp(ho,`u`)}var _o=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,vo=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,yo=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,bo=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,xo=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,So=/^[A-Za-z0-9_-]*$/,Co=/^https?$/,wo=/^\+[1-9]\d{6,14}$/,To=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`,Eo=RegExp(`^${To}$`);function Do(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Oo(e){return RegExp(`^${Do(e)}$`)}function ko(e){let t=Do({precision:e.precision}),n=[`Z`];e.local&&n.push(``),e.offset&&n.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let r=`${t}(?:${n.join(`|`)})`;return RegExp(`^${To}T(?:${r})$`)}var Ao=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},jo=/^-?\d+$/,Mo=/^-?\d+(?:\.\d+)?$/,No=/^(?:true|false)$/i,Po=/^null$/i,Fo=/^[^A-Z]*$/,Io=/^[^a-z]*$/,Lo=H(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),Ro={number:`number`,bigint:`bigint`,object:`date`},zo=H(`$ZodCheckLessThan`,(e,t)=>{Lo.init(e,t);let n=Ro[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.maximum:n.exclusiveMaximum)??1/0;t.value{(t.inclusive?r.value<=t.value:r.value{Lo.init(e,t);let n=Ro[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.minimum:n.exclusiveMinimum)??-1/0;t.value>r&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Vo=H(`$ZodCheckMultipleOf`,(e,t)=>{Lo.init(e,t),e._zod.onattach.push(e=>{var n;(n=e._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?n.value%t.value===BigInt(0):ca(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),Ho=H(`$ZodCheckNumberFormat`,(e,t)=>{Lo.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=wa[t.format];e._zod.onattach.push(e=>{let r=e._zod.bag;r.format=t.format,r.minimum=i,r.maximum=a,n&&(r.pattern=jo)}),e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}sa&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),Uo=H(`$ZodCheckMaxLength`,(e,t)=>{var n;Lo.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!oa(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.maximum??1/0;t.maximum{let r=n.value;if(r.length<=t.maximum)return;let i=La(r);n.issues.push({origin:i,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Wo=H(`$ZodCheckMinLength`,(e,t)=>{var n;Lo.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!oa(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.minimum??-1/0;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let r=n.value;if(r.length>=t.minimum)return;let i=La(r);n.issues.push({origin:i,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Go=H(`$ZodCheckLengthEquals`,(e,t)=>{var n;Lo.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!oa(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=n=>{let r=n.value,i=r.length;if(i===t.length)return;let a=La(r),o=i>t.length;n.issues.push({origin:a,...o?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),Ko=H(`$ZodCheckStringFormat`,(e,t)=>{var n,r;Lo.init(e,t),e._zod.onattach.push(e=>{let n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??=new Set,n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),qo=H(`$ZodCheckRegex`,(e,t)=>{Ko.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Jo=H(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=Fo,Ko.init(e,t)}),Yo=H(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=Io,Ko.init(e,t)}),Xo=H(`$ZodCheckIncludes`,(e,t)=>{Lo.init(e,t);let n=xa(t.includes),r=new RegExp(typeof t.position==`number`?`^.{${t.position}}${n}`:n);t.pattern=r,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(r)}),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),Zo=H(`$ZodCheckStartsWith`,(e,t)=>{Lo.init(e,t);let n=RegExp(`^${xa(t.prefix)}.*`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),Qo=H(`$ZodCheckEndsWith`,(e,t)=>{Lo.init(e,t);let n=RegExp(`.*${xa(t.suffix)}$`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),$o=H(`$ZodCheckOverwrite`,(e,t)=>{Lo.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),es=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),--this.indent}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(` `).filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),r=t.map(e=>e.slice(n)).map(e=>` `.repeat(this.indent*2)+e);for(let e of r)this.content.push(e)}compile(){let e=Function,t=this?.args,n=[...(this?.content??[``]).map(e=>` ${e}`)];return new e(...t,n.join(` `))}},ts={major:4,minor:4,patch:3},ns=H(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=ts;let r=[...e._zod.def.checks??[]];e._zod.traits.has(`$ZodCheck`)&&r.unshift(e);for(let t of r)for(let n of t._zod.onattach)n(e);if(r.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(e,t,n)=>{let r=Ma(e),i;for(let a of t){if(a._zod.def.when){if(Na(e)||!a._zod.def.when(e))continue}else if(r)continue;let t=e.issues.length,o=a._zod.check(e);if(o instanceof Promise&&n?.async===!1)throw new $i;if(i||o instanceof Promise)i=(i??Promise.resolve()).then(async()=>{await o,e.issues.length!==t&&(r||=Ma(e,t))});else{if(e.issues.length===t)continue;r||=Ma(e,t)}}return i?i.then(()=>e):e},n=(n,i,a)=>{if(Ma(n))return n.aborted=!0,n;let o=t(i,r,a);if(o instanceof Promise){if(a.async===!1)throw new $i;return o.then(t=>e._zod.parse(t,a))}return e._zod.parse(o,a)};e._zod.run=(i,a)=>{if(a.skipChecks)return e._zod.parse(i,a);if(a.direction===`backward`){let t=e._zod.parse({value:i.value,issues:[]},{...a,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,i,a)):n(t,i,a)}let o=e._zod.parse(i,a);if(o instanceof Promise){if(a.async===!1)throw new $i;return o.then(e=>t(e,r,a))}return t(o,r,a)}}ua(e,`~standard`,()=>({validate:t=>{try{let n=qa(e,t);return n.success?{value:n.data}:{issues:n.error?.issues}}catch{return Ya(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:`zod`,version:1}))}),rs=H(`$ZodString`,(e,t)=>{ns.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??Ao(e._zod.bag),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),is=H(`$ZodStringFormat`,(e,t)=>{Ko.init(e,t),rs.init(e,t)}),as=H(`$ZodGUID`,(e,t)=>{t.pattern??=fo,is.init(e,t)}),os=H(`$ZodUUID`,(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(e===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??=po(e)}else t.pattern??=po();is.init(e,t)}),ss=H(`$ZodEmail`,(e,t)=>{t.pattern??=mo,is.init(e,t)}),cs=H(`$ZodURL`,(e,t)=>{is.init(e,t),e._zod.check=n=>{try{let r=n.value.trim();if(!t.normalize&&t.protocol?.source===Co.source&&!/^https?:\/\//i.test(r)){n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid URL format`,input:n.value,inst:e,continue:!t.abort});return}let i=new URL(r);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(i.hostname)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid hostname`,pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(i.protocol.endsWith(`:`)?i.protocol.slice(0,-1):i.protocol)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid protocol`,pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort})),n.value=t.normalize?i.href:r;return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),ls=H(`$ZodEmoji`,(e,t)=>{t.pattern??=go(),is.init(e,t)}),us=H(`$ZodNanoID`,(e,t)=>{t.pattern??=lo,is.init(e,t)}),ds=H(`$ZodCUID`,(e,t)=>{t.pattern??=io,is.init(e,t)}),fs=H(`$ZodCUID2`,(e,t)=>{t.pattern??=ao,is.init(e,t)}),ps=H(`$ZodULID`,(e,t)=>{t.pattern??=oo,is.init(e,t)}),ms=H(`$ZodXID`,(e,t)=>{t.pattern??=so,is.init(e,t)}),hs=H(`$ZodKSUID`,(e,t)=>{t.pattern??=co,is.init(e,t)}),gs=H(`$ZodISODateTime`,(e,t)=>{t.pattern??=ko(t),is.init(e,t)}),_s=H(`$ZodISODate`,(e,t)=>{t.pattern??=Eo,is.init(e,t)}),vs=H(`$ZodISOTime`,(e,t)=>{t.pattern??=Oo(t),is.init(e,t)}),ys=H(`$ZodISODuration`,(e,t)=>{t.pattern??=uo,is.init(e,t)}),bs=H(`$ZodIPv4`,(e,t)=>{t.pattern??=_o,is.init(e,t),e._zod.bag.format=`ipv4`}),xs=H(`$ZodIPv6`,(e,t)=>{t.pattern??=vo,is.init(e,t),e._zod.bag.format=`ipv6`,e._zod.check=n=>{try{new URL(`http://[${n.value}]`)}catch{n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}}),Ss=H(`$ZodCIDRv4`,(e,t)=>{t.pattern??=yo,is.init(e,t)}),Cs=H(`$ZodCIDRv6`,(e,t)=>{t.pattern??=bo,is.init(e,t),e._zod.check=n=>{let r=n.value.split(`/`);try{if(r.length!==2)throw Error();let[e,t]=r;if(!t)throw Error();let n=Number(t);if(`${n}`!==t||n<0||n>128)throw Error();new URL(`http://[${e}]`)}catch{n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}}});function ws(e){if(e===``)return!0;if(/\s/.test(e)||e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}var Ts=H(`$ZodBase64`,(e,t)=>{t.pattern??=xo,is.init(e,t),e._zod.bag.contentEncoding=`base64`,e._zod.check=n=>{ws(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}});function Es(e){if(!So.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return ws(t.padEnd(Math.ceil(t.length/4)*4,`=`))}var Ds=H(`$ZodBase64URL`,(e,t)=>{t.pattern??=So,is.init(e,t),e._zod.bag.contentEncoding=`base64url`,e._zod.check=n=>{Es(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),Os=H(`$ZodE164`,(e,t)=>{t.pattern??=wo,is.init(e,t)});function ks(e,t=null){try{let n=e.split(`.`);if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let i=JSON.parse(atob(r));return!(`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&(!(`alg`in i)||i.alg!==t))}catch{return!1}}var As=H(`$ZodJWT`,(e,t)=>{is.init(e,t),e._zod.check=n=>{ks(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),js=H(`$ZodNumber`,(e,t)=>{ns.init(e,t),e._zod.pattern=e._zod.bag.pattern??Mo,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch{}let i=n.value;if(typeof i==`number`&&!Number.isNaN(i)&&Number.isFinite(i))return n;let a=typeof i==`number`?Number.isNaN(i)?`NaN`:Number.isFinite(i)?void 0:`Infinity`:void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),Ms=H(`$ZodNumberFormat`,(e,t)=>{Ho.init(e,t),js.init(e,t)}),Ns=H(`$ZodBoolean`,(e,t)=>{ns.init(e,t),e._zod.pattern=No,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),Ps=H(`$ZodNull`,(e,t)=>{ns.init(e,t),e._zod.pattern=Po,e._zod.values=new Set([null]),e._zod.parse=(t,n)=>{let r=t.value;return r===null||t.issues.push({expected:`null`,code:`invalid_type`,input:r,inst:e}),t}}),Fs=H(`$ZodUnknown`,(e,t)=>{ns.init(e,t),e._zod.parse=e=>e}),Is=H(`$ZodNever`,(e,t)=>{ns.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)});function Ls(e,t,n){e.issues.length&&t.issues.push(...Pa(n,e.issues)),t.value[n]=e.value}var Rs=H(`$ZodArray`,(e,t)=>{ns.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!Array.isArray(i))return n.issues.push({expected:`array`,code:`invalid_type`,input:i,inst:e}),n;n.value=Array(i.length);let a=[];for(let e=0;eLs(t,n,e))):Ls(s,n,e)}return a.length?Promise.all(a).then(()=>n):n}});function zs(e,t,n,r,i,a){let o=n in r;if(e.issues.length){if(i&&a&&!o)return;t.issues.push(...Pa(n,e.issues))}if(!o&&!i){e.issues.length||t.issues.push({code:`invalid_type`,expected:`nonoptional`,input:void 0,path:[n]});return}e.value===void 0?o&&(t.value[n]=void 0):t.value[n]=e.value}function Bs(e){let t=Object.keys(e.shape);for(let n of t)if(!e.shape?.[n]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${n}": expected a Zod schema`);let n=Ca(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(n)}}function Vs(e,t,n,r,i,a){let o=[],s=i.keySet,c=i.catchall._zod,l=c.def.type,u=c.optin===`optional`,d=c.optout===`optional`;for(let i in t){if(i===`__proto__`||s.has(i))continue;if(l===`never`){o.push(i);continue}let a=c.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>zs(e,n,i,t,u,d))):zs(a,n,i,t,u,d)}return o.length&&n.issues.push({code:`unrecognized_keys`,keys:o,input:t,inst:a}),e.length?Promise.all(e).then(()=>n):n}var Hs=H(`$ZodObject`,(e,t)=>{if(ns.init(e,t),!Object.getOwnPropertyDescriptor(t,`shape`)?.get){let e=t.shape;Object.defineProperty(t,"shape",{get:()=>{let n={...e};return Object.defineProperty(t,"shape",{value:n}),n}})}let n=aa(()=>Bs(t));ua(e._zod,`propValues`,()=>{let e=t.shape,n={};for(let t in e){let r=e[t]._zod;if(r.values){n[t]??(n[t]=new Set);for(let e of r.values)n[t].add(e)}}return n});let r=ga,i=t.catchall,a;e._zod.parse=(t,o)=>{a??=n.value;let s=t.value;if(!r(s))return t.issues.push({expected:`object`,code:`invalid_type`,input:s,inst:e}),t;t.value={};let c=[],l=a.shape;for(let e of a.keys){let n=l[e],r=n._zod.optin===`optional`,i=n._zod.optout===`optional`,a=n._zod.run({value:s[e],issues:[]},o);a instanceof Promise?c.push(a.then(n=>zs(n,t,e,s,r,i))):zs(a,t,e,s,r,i)}return i?Vs(c,s,t,o,n.value,e):c.length?Promise.all(c).then(()=>t):t}}),Us=H(`$ZodObjectJIT`,(e,t)=>{Hs.init(e,t);let n=e._zod.parse,r=aa(()=>Bs(t)),i=e=>{let t=new es([`shape`,`payload`,`ctx`]),n=r.value,i=e=>{let t=pa(e);return`shape[${t}]._zod.run({ value: input[${t}], issues: [] }, ctx)`};t.write(`const input = payload.value;`);let a=Object.create(null),o=0;for(let e of n.keys)a[e]=`key_${o++}`;t.write(`const newResult = {};`);for(let r of n.keys){let n=a[r],o=pa(r),s=e[r],c=s?._zod?.optin===`optional`,l=s?._zod?.optout===`optional`;t.write(`const ${n} = ${i(r)};`),c&&l?t.write(` if (${n}.issues.length) { @@ -115,15 +121,15 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs. `);for(;i>=0;){let e=l.slice(0,i);l=l.slice(i+2);let n=tg(e);n&&(n.event_id&&(r=n.event_id),t(n),a=[`turn.completed`,`turn.interrupted`,`turn.failed`].includes(n.kind)),i=l.indexOf(` -`)}if(e||a)break}i=a?i:i+1}catch(e){if(n?.aborted||(i+=1,i>=4))throw e;await new Promise(e=>globalThis.setTimeout(e,250*2**(i-1)))}}if(!a)throw new Fh(`Agent 事件流连接已断开。`,{reconnect_attempts:i})}async function rg(e,t){return Kh(`/api/chat/sessions/${e}/turns/${t}/interrupt`,{method:`POST`,body:`{}`})}async function ig(e,t,n={}){let r=await eg(e,t,n.clientTurnId??crypto.randomUUID(),n.attachments);return n.onPhase?.(`turn.accepted`,r.turn_id),ag(e,r.turn_id,r.events_url,n)}async function ag(e,t,n,r={}){let i=null,a={failure:null,interrupted:null};try{await ng(n,e=>{r.onPhase?.(e.kind,t),(e.kind===`answer.delta`||e.kind===`assistant.delta`)&&r.onDelta?.(String(e.payload.text??``)),e.kind===`agent.phase`&&r.onActivity?.(String(e.payload.label??`Agent 正在处理`)),e.kind===`turn.completed`&&(i=e.payload.response),e.kind===`turn.failed`&&(a.failure=e.payload),e.kind===`turn.interrupted`&&(a.interrupted=e.payload)},r.signal)}catch(i){throw i instanceof Fh&&!r.signal?.aborted?new Fh(i.message,{...i.payload,events_url:n,reconnectable:!0,session_id:e,turn_id:t}):i}if(a.failure)throw new Fh(String(a.failure.message||`Agent 回合失败。`),a.failure);if(a.interrupted)throw new Fh(`Agent 回合已中断。`,{...a.interrupted,error_code:`turn_interrupted`,session_id:e,turn_id:t});return{response:kh.parse(i),sessionId:e,turnId:t}}async function og(e,t,n={}){return ag(e,t,`/api/chat/sessions/${e}/turns/${t}/events`,n)}async function sg(e){let t=Ah.parse(await Kh(`/api/chat/sessions/${e}`,{keepalive:!0,method:`DELETE`}));if(t.session_id!==e)throw new Fh(`Agent 会话关闭回执与本次请求不一致。`,{session_id:t.session_id});return t}async function cg(e){return Kh(`/api/chat/sessions/${e}/resume`,{method:`POST`,body:`{}`})}function lg(e){return{goal_id:e.goalId,enabled:e.enabled,...e.modelConfig===void 0?{}:{model_config:e.modelConfig},...e.enabled?{max_children:e.maxChildren,allowed_domains:e.allowedDomains}:{}}}function ug(e,t){let n=e.after.orchestration,r=[...new Set(t.allowedDomains)],i=e.feature_summary.multi_subagent===`enabled`;if(!(e.goal_id===t.goalId&&i===t.enabled&&(t.modelConfig===void 0||JSON.stringify(n.model_config??null)===JSON.stringify(t.modelConfig))&&(t.enabled?n.max_children===t.maxChildren&&JSON.stringify(n.allowed_domains)===JSON.stringify(r):n.spawn_allowed===!1&&n.max_children===0)))throw new Fh(`Goal 子代理配置回执与本次请求不一致,界面已停止更新。`,{after:e.after,goal_id:e.goal_id});return e}async function dg(e){let t=Nh.parse(await Kh(`/api/chat/goal-subagents/dry-run`,{method:`POST`,body:JSON.stringify(lg(e))}));if(!t.dry_run||t.execute||t.written)throw new Fh(`Goal 子代理预览返回了非预览回执,已停止进入确认状态。`,{result:t});return ug(t,e)}async function fg(e,t){let n=Nh.parse(await Kh(`/api/chat/goal-subagents/apply`,{method:`POST`,body:JSON.stringify({...lg(e),preview_id:t})}));if(n.preview_id!==t||n.dry_run||!n.execute)throw new Fh(`Goal 子代理写入回执与本次确认不一致,界面已停止更新。`,{result:n});if(n.changed&&(!n.written||!n.global_sync.executed||!n.global_sync.readback.verified))throw new Fh(`Goal 子代理设置未通过共享状态读回验证。`,{result:n});return ug(n,e)}var pg=J({ok:X(!0),targets:q(J({enabled:K(),provider:W(),target_name:W()}))});async function mg(){return pg.parse(await Kh(`/api/chat/goal-channel/targets`)).targets}var hg=J({ok:K(),blocker:W().optional(),public_summary:W().optional(),status:W().optional()});async function gg(e){return hg.parse(await Kh(`/api/chat/goal-channel/setup`,{method:`POST`,body:JSON.stringify({execute:e.execute,goal_id:e.goalId,target:e.target})}))}async function _g(e){return hg.parse(await Kh(`/api/chat/goal-channel/configure`,{method:`POST`,body:JSON.stringify({auto_notify_human_gates:e.autoNotify,goal_id:e.goalId})}))}var vg=J({schema_version:X(`periodic_report_schedule_v0`),schedule_id:W(),rrule:W(),timezone:W()});J({schema_version:X(`periodic_report_machine_defaults_v0`),enabled:K(),inheritance:X(`live_machine_default`),profile_preset:W().optional(),route_ref:W().optional(),timezone:W(),schedule:vg.nullable().optional()});var yg=J({schema_version:X(`loopx_machine_configuration_v0`),namespaces:yd(W(),yd(W(),ad()))}),bg=J({namespace:W(),title:W(),description:W(),schema_versions:q(W()).min(1),configuration_template:yd(W(),ad()),template_status:Y([`ready`,`schema_only`])}),xg=J({schema_version:X(`machine_configuration_catalog_v0`),namespaces:q(bg)}),Sg=J({key:W(),label:W(),description:W(),input_kind:Y([`boolean`,`number`,`select`,`string_list`,`text`,`periodic_report_schedule`]),nullable:K().optional(),required:K(),minimum:G().int().optional(),maximum:G().int().optional(),options:q(W()).optional()}),Cg=J({schema_version:X(`capability_configuration_editor_v0`),editable:K(),supported_scopes:q(Y([`goal`,`machine`])),writable_scopes:q(Y([`goal`,`machine`])),fields:q(Sg),read_only_reason:W().optional()}),wg=J({schema_version:X(`capability_configuration_catalog_v0`),capabilities:q(J({capability_id:W(),display_name:W(),description:W(),available_scopes:q(Y([`goal`,`machine`])),machine_namespace:W().optional(),goal_feature_id:W().optional(),effective_value_policy:X(`goal_override_over_live_machine_default`).optional(),availability:W().optional(),default:yd(W(),ad()).optional(),current:yd(W(),ad()).optional(),machine_current:yd(W(),ad()).optional(),effective_configuration:J({schema_version:X(`capability_configuration_resolution_v0`),capability_id:W(),source:Y([`goal_override`,`machine_default`,`capability_default`,`not_configured`]),configuration:yd(W(),ad()).nullable(),inherited:K(),goal_override_present:K(),machine_default_present:K(),effective_revision:W()}).optional(),documentation:yd(W(),ad()).optional(),context_contribution:J({supported_phases:q(Y([`before_plan`,`before_delegate`,`after_delegate_result`])),target:X(`coordinator`),activation:X(`with_capability`),receipt_required:X(!0)}).optional(),configuration_editor:Cg}))}),Tg=J({ok:X(!0),schema_version:X(`goal_configuration_inspection_v0`),status:X(`configured`),goal_id:W(),revision:W(),available_capabilities:q(W()),capability_catalog:wg}),Eg=J({ok:X(!0),goal_id:W(),capability_id:W(),changed_fields:q(W()),goal_configuration:yd(W(),ad()).nullable(),capability_catalog:wg}),Dg=Eg.extend({schema_version:X(`goal_configuration_update_plan_v0`),status:X(`preview`),action:Y([`create`,`update`,`delete`,`unchanged`]),current_revision:W(),desired_revision:W(),base_revision:W(),plan_revision:W(),writes_required:G().int().nonnegative()}),Og=dd([Eg.extend({schema_version:X(`goal_configuration_transaction_v0`),status:Y([`applied`,`unchanged`]),plan_revision:W(),applied_revision:W(),readback_verified:X(!0)}),J({ok:X(!1),schema_version:X(`goal_configuration_transaction_v0`),status:X(`partial_write`),goal_id:W(),capability_id:W(),plan_revision:W(),applied_revision:W().nullable(),source_written:X(!0),shared_sync_pending:X(!0),readback_verified:K(),changed_fields:q(W()),goal_configuration:yd(W(),ad()).nullable(),capability_catalog:wg,error:W(),recommended_action:W()})]),kg=J({ok:X(!0),available_namespaces:q(W()),namespace_catalog:xg.optional().default({schema_version:`machine_configuration_catalog_v0`,namespaces:[]}),capability_catalog:wg,changed_namespaces:q(W()).optional().default([]),invalid_namespaces:q(W()).optional().default([]),machine_configuration:yg.nullable().optional()}),Ag=kg.extend({schema_version:X(`machine_configuration_inspection_v0`),status:Y([`configured`,`absent`,`invalid`]),revision:W()}),jg=kg.extend({schema_version:X(`machine_configuration_update_plan_v0`),status:X(`preview`),action:Y([`create`,`update`,`delete`,`unchanged`]),current_revision:W(),desired_revision:W(),plan_revision:W(),writes_required:G().int().nonnegative(),machine_configuration:yg.nullable()}),Mg=kg.extend({schema_version:X(`machine_configuration_transaction_v0`),status:Y([`applied`,`unchanged`]),plan_revision:W(),transaction_id:W().nullable(),readback_verified:X(!0),rollback_available:K(),applied_revision:W().optional(),prior_revision:W().optional()}),Ng=kg.extend({schema_version:X(`machine_configuration_rollback_plan_v0`),status:X(`preview`),action:Y([`delete`,`restore`,`unchanged`,`blocked`]),reason:W(),transaction_id:W(),plan_revision:W(),rollback_allowed:K(),writes_required:G().int().nonnegative()}),Pg=kg.extend({schema_version:X(`machine_configuration_rollback_receipt_v0`),status:Y([`rolled_back`,`unchanged`]),transaction_id:W(),plan_revision:W(),rollback_id:W().nullable(),readback_verified:X(!0)}),Fg=J({configured:K(),source:Y([`machine_store`,`service_environment`,`unset`]),env_var:W().optional(),fingerprint:W().nullable().optional(),value:W().nullable().optional(),blocked_by:W().optional()}),Ig=J({ok:X(!0),schema_version:X(`operator_provider_credential_projection_v0`),action:W().optional(),store_ref:W(),store_revision:W(),record_present:K(),status:Y([`configured`,`absent`,`invalid`]),repair:W(),provider_key:Fg,base_url:Fg});async function Lg(){return Ig.parse(await Kh(`/api/chat/operator-credential`))}async function Rg(e){return Ig.parse(await Kh(`/api/chat/operator-credential`,{method:`POST`,body:JSON.stringify(e)}))}async function zg(){return Ag.parse(await Kh(`/api/chat/machine-configuration`))}async function Bg(e){let t=new URLSearchParams({goal_id:e});return Tg.parse(await Kh(`/api/chat/goal-configuration?${t.toString()}`))}async function Vg(e,t,n){return Dg.parse(await Kh(`/api/chat/goal-configuration/preview`,{method:`POST`,body:JSON.stringify({goal_id:e,capability_id:t,configuration:n})}))}async function Hg(e,t,n,r){return Og.parse(await Kh(`/api/chat/goal-configuration/apply`,{method:`POST`,body:JSON.stringify({goal_id:e,capability_id:t,configuration:n,expected_plan_revision:r})}))}async function Ug(e,t){return jg.parse(await Kh(`/api/chat/machine-configuration/preview`,{method:`POST`,body:JSON.stringify({namespace:e,namespace_configuration:t})}))}async function Wg(e,t,n){return Mg.parse(await Kh(`/api/chat/machine-configuration/apply`,{method:`POST`,body:JSON.stringify({expected_plan_revision:n,namespace:e,namespace_configuration:t})}))}async function Gg(e){return jg.parse(await Kh(`/api/chat/machine-configuration/preview`,{method:`POST`,body:JSON.stringify({namespace:e,operation:`remove`})}))}async function Kg(e,t){return Mg.parse(await Kh(`/api/chat/machine-configuration/apply`,{method:`POST`,body:JSON.stringify({expected_plan_revision:t,namespace:e,operation:`remove`})}))}async function qg(e){return Ng.parse(await Kh(`/api/chat/machine-configuration/rollback`,{method:`POST`,body:JSON.stringify({execute:!1,transaction_id:e})}))}async function Jg(e,t){return Pg.parse(await Kh(`/api/chat/machine-configuration/rollback`,{method:`POST`,body:JSON.stringify({execute:!0,expected_plan_revision:t,transaction_id:e})}))}var Yg=J({ok:X(!0),goals:q(J({goal_id:W(),repository:J({branch:W(),identity:W(),label:W(),read_only:X(!0)})}))});async function Xg(){return Yg.parse(await Kh(`/api/chat/goals/contexts`)).goals}var Zg=J({ok:X(!0),apps:q(J({active:K(),app_ref:W(),brand:W(),health_error_code:W().nullable().default(null),label:W(),ready:K(),reply_ready:K().default(!1)}))});async function Qg(){return Zg.parse(await Kh(`/api/chat/lark/apps`)).apps}var $g=J({ok:X(!0),app_ref:W(),error:W().nullable(),setup_id:W(),status:Y([`starting`,`waiting_for_feishu`,`ready`,`failed`,`cancelled`]),verification_url:W().url().nullable()});async function e_(e){return $g.parse(await Kh(`/api/chat/lark/app-setups`,{method:`POST`,body:JSON.stringify({app_ref:e.appRef,brand:e.brand})}))}async function t_(e){return $g.parse(await Kh(`/api/chat/lark/app-setups/${encodeURIComponent(e)}`))}async function n_(e){return $g.parse(await Kh(`/api/chat/lark/app-setups/${encodeURIComponent(e)}`,{method:`DELETE`}))}var r_=[`invalid_event`,`binding_unavailable`,`chat_mismatch`,`topic_mismatch`,`route_ambiguous`,`self_message`,`invalid_routing_state`,`not_addressed`],i_=J({ok:X(!0),chats:q(J({chat_id:W(),chat_name:W()}))});async function a_(e,t){let n=new URLSearchParams({app_ref:e});return t&&n.set(`query`,t),i_.parse(await Kh(`/api/chat/lark/chats?${n.toString()}`)).chats}var o_=J({ok:X(!0),connections:q(J({conversation_kind:Y([`goal`,`manager`]).default(`goal`),agent_id:W().nullable().default(null),connection_id:W(),app_label:W(),app_ref:W(),capture_scope:Y([`addressed_only`,`configured_chat_all`]).default(`addressed_only`),chat_name:W(),enabled:K(),goal_id:W(),goal_title:W(),health_error_code:W().nullable().default(null),history_permission_guidance:J({action:X(`enable_application_scopes_and_publish`),api_document_url:W().url(),capability:X(`group_history_pagination`),identity:X(`bot`),required_scopes:_d([X(`im:message.group_msg`),X(`im:message.group_msg.include_bot:read`)]),schema_version:X(`lark_bot_group_history_permission_guidance_v0`)}).nullable().default(null),incoming_mode:Y([`mentions`,`all`]),ingress_mode:Y([`live_steering`,`session_queue`,`async_inbox`,`direct_session`]).default(`async_inbox`),event_count:G().int().nonnegative().default(0),last_event_reason:Y(r_).nullable().default(null).catch(null),last_event_status:W().nullable().default(null),listener_error_code:W().nullable().default(null),listener_status:Y([`starting`,`listening`,`retrying`,`stopped`]).nullable().default(null),replied_count:G().int().nonnegative().default(0),reply_ready:K().default(!1),reply_mode:X(`topic_reply`),session_bound:K().default(!1),target_ref:W(),topic_name:W(),topic_setup_required:K()}))});async function s_(){return o_.parse(await Kh(`/api/chat/lark/connections`)).connections}async function c_(e){return hg.parse(await Kh(`/api/chat/lark/connections`,{method:`POST`,body:JSON.stringify({...e.agentBindings?{agent_bindings:e.agentBindings.map(e=>({agent_id:e.agentId,app_ref:e.appRef}))}:{},...e.agentId?{agent_id:e.agentId}:{},...e.appRef?{app_ref:e.appRef}:{},...e.connectionId?{connection_id:e.connectionId}:{},conversation_kind:e.conversationKind??`goal`,capture_scope:e.captureScope,chat_id:e.chatId,chat_name:e.chatName,execute:e.execute,goal_id:e.goalId,incoming_mode:e.incomingMode,ingress_mode:e.ingressMode,reply_mode:e.replyMode})}))}async function l_(e,t){let n=new URLSearchParams({goal_id:e,connection_id:t});return hg.parse(await Kh(`/api/chat/lark/connections?${n.toString()}`,{method:`DELETE`}))}function u_(e){return{loadedUrl:null,projectionRevision:0,requestedUrl:e,selectionRevision:0,requestGeneration:0}}function d_(e,t){return e.selectionRevision+=1,e.requestedUrl=t,e.selectionRevision}function f_(e,t,n){if(n.background)return e.requestedUrl!==null||e.loadedUrl!==t?null:(e.requestGeneration+=1,{background:!0,projectionRevision:e.projectionRevision,selectionRevision:e.selectionRevision,url:t,generation:e.requestGeneration});let r=n.selectionRevision??e.selectionRevision+1;return n.selectionRevision!==void 0&&e.selectionRevision!==r?null:(e.selectionRevision=r,e.projectionRevision+=1,e.requestedUrl=t,e.requestGeneration+=1,{background:!1,projectionRevision:e.projectionRevision,selectionRevision:r,url:t,generation:e.requestGeneration})}function p_(e,t){return t.generation===e.requestGeneration&&e.projectionRevision===t.projectionRevision&&e.selectionRevision===t.selectionRevision}function m_(e,t){return p_(e,t)&&(!t.background||e.requestedUrl===null&&e.loadedUrl===t.url)}function h_(e,t,n){return t.get(e)===n}function g_(e,t,n,r){return e.filter(e=>h_(r(e),n,t))}function __(e,t,n){let r=new Set,i=[];for(let a of[...e,...t]){let e=n(a);e==null||r.has(e)||(r.add(e),i.push(a))}return i}var v_=[`runs_24h`,`runs_7d`,`quota_spend_slots_24h`,`quota_spend_slots_7d`,`automation_run_count_24h`,`automation_run_count_7d`,`progress_signal_run_count_24h`,`progress_signal_run_count_7d`],y_=[`input_tokens_24h`,`input_tokens_7d`,`output_tokens_24h`,`output_tokens_7d`,`cache_tokens_24h`,`cache_tokens_7d`,`cost_usd_24h`,`cost_usd_7d`,`duration_ms_24h`,`duration_ms_7d`],b_=[`accounting`,`decision`,`evidence`,`state`,`work`],x_={accounting:0,decision:0,evidence:0,state:0,work:0},S_={runs_24h:0,runs_7d:0,quota_spend_slots_24h:0,quota_spend_slots_7d:0,automation_run_count_24h:0,automation_run_count_7d:0,progress_signal_run_count_24h:0,progress_signal_run_count_7d:0};function C_(e,t){let n={...e};for(let r of v_)n[r]=(Number(e[r])||0)+(Number(t[r])||0);for(let r of y_)(e[r]!==void 0||t[r]!==void 0)&&(n[r]=(e[r]??0)+(t[r]??0));return n}function w_(e,t){return!e.length||t<=0?e:e.map(e=>({...e,project_share_24h:Math.round((Number(e.runs_24h)||0)/t*1e3)/1e3}))}function T_(e,t){let n={...e};for(let r of b_)n[r]=(e[r]??0)+(t[r]??0);return n}function E_(e){let t={events_24h:0,events_7d:0,by_class_24h:{...x_},by_class_7d:{...x_}};for(let n of e)t.events_24h+=n.events_24h,t.events_7d+=n.events_7d,t.by_class_24h=T_(t.by_class_24h,n.by_class_24h),t.by_class_7d=T_(t.by_class_7d,n.by_class_7d);return t}function D_(e,t,n){if(!e&&!t)return null;let r=g_(e?.goals??[],`active`,n,e=>e.goal_id),i=g_(t?.goals??[],`stopped`,n,e=>e.goal_id),a=__(r,i,e=>e.goal_id),o=E_(r),s=E_(i),c={events_24h:o.events_24h+s.events_24h,events_7d:o.events_7d+s.events_7d,by_class_24h:T_(o.by_class_24h,s.by_class_24h),by_class_7d:T_(o.by_class_7d,s.by_class_7d)};return{...e??t,goals:a,sample_run_count:(e?.sample_run_count??0)+(t?.sample_run_count??0),totals:c}}function O_(e,t,n){if(!e&&!t)return null;let r=__([...g_(e?.items??[],`active`,n,e=>e.goal_id),...g_(t?.items??[],`stopped`,n,e=>e.goal_id)],[],e=>`${e.goal_id}:${e.decision_kind??``}:${e.decision_at??``}`),i={decision_count:(e?.summary.decision_count??0)+(t?.summary.decision_count??0),stale_count:r.filter(e=>e.stale_by_age).length,rebase_required_count:(e?.summary.rebase_required_count??0)+(t?.summary.rebase_required_count??0),fresh_count:(e?.summary.fresh_count??0)+(t?.summary.fresh_count??0)};return{...e??t,items:r,sample_run_count:(e?.sample_run_count??0)+(t?.sample_run_count??0),summary:i}}function k_(e,t){return __([...e,...t].sort((e,t)=>t.generated_at.localeCompare(e.generated_at)),[],e=>`${e.goal_id}:${e.generated_at}:${e.classification??``}`)}function A_(e,t,n){let r=__(g_(e.items,`active`,n,e=>e.goal_id),g_(t.items,`stopped`,n,e=>e.goal_id),e=>e.goal_id);return{...e,item_count:r.length,items:r,needs_controller:r.filter(e=>e.waiting_on===`controller`).length,needs_codex:r.filter(e=>e.waiting_on===`codex`).length,needs_user_or_controller:r.filter(e=>[`user_or_controller`,`controller`].includes(e.waiting_on)).length,watching_external_evidence:r.filter(e=>e.waiting_on===`external_evidence`).length}}function j_(e){let t=e.todo_id?.trim()||``;return t?`${e.goal_id}:${t}`:`${e.goal_id}:synthetic:${e.role??``}:${e.index??``}:${e.text??``}`}function M_(e){let t={...S_};for(let n of e){for(let e of v_)t[e]+=Number(n[e])||0;for(let e of y_)n[e]!==void 0&&(t[e]=(t[e]??0)+n[e])}return t}function N_(e,t,n){if(!e&&!t)return null;let r=g_(e?.items??[],`active`,n,e=>e.goal_id),i=g_(t?.items??[],`stopped`,n,e=>e.goal_id),a=__(r,i,j_);return{...e??t,current_projected_count:r.length+i.length,items:a,rollout_event_count:a.reduce((e,t)=>e+(t.event_count??0),0),total_count:a.length}}function P_(e,t,n){if(!e&&!t)return null;let r=g_(e?.goals??[],`active`,n,e=>e.goal_id),i=g_(t?.goals??[],`stopped`,n,e=>e.goal_id),a=__(r,i,e=>e.goal_id),o=C_(M_(r),M_(i));return{...e??t,goals:w_(a,Number(o.runs_24h)||0),sample_run_count:(e?.sample_run_count??0)+(t?.sample_run_count??0),totals:o}}function F_(e,t,n){if(!e&&!t)return null;let r=(e?.agents??[]).filter(e=>e.goal_ids.some(e=>h_(e,n,`active`))||(e.current_todo?.goal_id?h_(e.current_todo.goal_id,n,`active`):!1)),i=(t?.agents??[]).filter(e=>e.goal_ids.some(e=>h_(e,n,`stopped`))||(e.current_todo?.goal_id?h_(e.current_todo.goal_id,n,`stopped`):!1)),a=__(r,i,e=>e.agent_id).map(e=>{let t=i.find(t=>t.agent_id===e.agent_id);return t?{...e,goal_ids:Array.from(new Set([...e.goal_ids??[],...t.goal_ids]))}:e});return{...e??t,agents:a,source_summary:(e??t)?.source_summary?{...(e??t).source_summary,projected_agent_count:a.length,registered_agent_count:new Set(a.map(e=>e.agent_id)).size}:(e??t)?.source_summary}}function I_(e,t,n){if(!e&&!t)return null;let r=__(g_(e?.goals??[],`active`,n,e=>e.goal_id),g_(t?.goals??[],`stopped`,n,e=>e.goal_id),e=>e.goal_id);return{...e??t,goals:r}}function L_(e,t){let n=t.goal_projection?.scope;if(n!==`active`&&n!==`stopped`)return t;let r=n,i=t.run_history.goals,a=e.run_history.goals,o=__(r===`active`?i:a.filter(e=>e.activation_state!==`stopped`),r===`stopped`?i:a.filter(e=>e.activation_state===`stopped`),e=>e.id),s=new Map(o.map(e=>[e.id,e.activation_state])),c=r===`active`?t:e,l=r===`stopped`?t:e,u=e.goal_projection?.registry_revision??null,d=t.goal_projection?.registry_revision??null,f=u===null||d===null||u===d;return{...e,agent_management_projection:F_(c.agent_management_projection,l.agent_management_projection,s),attention_queue:A_(c.attention_queue,l.attention_queue,s),decision_freshness_summary:O_(c.decision_freshness_summary,l.decision_freshness_summary,s),event_ledger_summary:D_(c.event_ledger_summary,l.event_ledger_summary,s),goal_channel_notification_projection:I_(c.goal_channel_notification_projection,l.goal_channel_notification_projection,s),goal_projection:{schema_version:`loopx_goal_projection_scope_v0`,...t.goal_projection,complete:f,projected_goal_count:o.length,registry_goal_count:t.goal_projection?.registry_goal_count??0,scope:`all`},run_history:{...e.run_history,goal_count:o.length,goals:o,recent_runs:k_(c.run_history.recent_runs,l.run_history.recent_runs),run_count:c.run_history.run_count+l.run_history.run_count},todo_index:N_(c.todo_index,l.todo_index,s),usage_summary:P_(c.usage_summary,l.usage_summary,s)}}function R_(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`){if(Array.isArray(e)){var i=e.length;for(t=0;ttypeof e==`boolean`?`${e}`:e===0?`0`:e,V_=z_,H_=(e,t)=>n=>{if(t?.variants==null)return V_(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=B_(t)||B_(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return V_(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},U_=(e,t)=>{let n=Array(e.length+t.length);for(let t=0;t({classGroupId:e,validator:t}),G_=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),K_=`-`,q_=[],J_=`arbitrary..`,Y_=e=>{let t=Q_(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{if(e.startsWith(`[`)&&e.endsWith(`]`))return Z_(e);let n=e.split(K_);return X_(n,+(n[0]===``&&n.length>1),t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=r[e],i=n[e];return t?i?U_(i,t):t:i||q_}return n[e]||q_}}},X_=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;let r=e[t],i=n.nextPart.get(r);if(i){let n=X_(e,t+1,i);if(n)return n}let a=n.validators;if(a===null)return;let o=t===0?e.join(K_):e.slice(t).join(K_),s=a.length;for(let e=0;ee.slice(1,-1).indexOf(`:`)===-1?void 0:(()=>{let t=e.slice(1,-1),n=t.indexOf(`:`),r=t.slice(0,n);return r?J_+r:void 0})(),Q_=e=>{let{theme:t,classGroups:n}=e;return $_(n,t)},$_=(e,t)=>{let n=G_();for(let r in e){let i=e[r];ev(i,n,r,t)}return n},ev=(e,t,n,r)=>{let i=e.length;for(let a=0;a{if(typeof e==`string`){nv(e,t,n);return}if(typeof e==`function`){rv(e,t,n,r);return}iv(e,t,n,r)},nv=(e,t,n)=>{let r=e===``?t:av(t,e);r.classGroupId=n},rv=(e,t,n,r)=>{if(ov(e)){ev(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(W_(n,e))},iv=(e,t,n,r)=>{let i=Object.entries(e),a=i.length;for(let e=0;e{let n=e,r=t.split(K_),i=r.length;for(let e=0;e`isThemeGetter`in e&&e.isThemeGetter===!0,sv=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null),i=(i,a)=>{n[i]=a,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(e){let t=n[e];if(t!==void 0)return t;if((t=r[e])!==void 0)return i(e,t),t},set(e,t){e in n?n[e]=t:i(e,t)}}},cv=`!`,lv=`:`,uv=[],dv=(e,t,n,r,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:i}),fv=e=>{let{prefix:t,experimentalParseClassName:n}=e,r=e=>{let t=[],n=0,r=0,i=0,a,o=e.length;for(let s=0;si?a-i:void 0;return dv(t,l,c,u)};if(t){let e=t+lv,n=r;r=t=>t.startsWith(e)?n(t.slice(e.length)):dv(uv,!1,t,void 0,!0)}if(n){let e=r;r=t=>n({className:t,parseClassName:e})}return r},pv=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((e,n)=>{t.set(e,1e6+n)}),e=>{let n=[],r=[];for(let i=0;i0&&(r.sort(),n.push(...r),r=[]),n.push(a)):r.push(a)}return r.length>0&&(r.sort(),n.push(...r)),n}},mv=e=>({cache:sv(e.cacheSize),parseClassName:fv(e),sortModifiers:pv(e),postfixLookupClassGroupIds:hv(e),...Y_(e)}),hv=e=>{let t=Object.create(null),n=e.postfixLookupClassGroups;if(n)for(let e=0;e{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i,sortModifiers:a,postfixLookupClassGroupIds:o}=t,s=[],c=e.trim().split(gv),l=``;for(let e=c.length-1;e>=0;--e){let t=c[e],{isExternal:u,modifiers:d,hasImportantModifier:f,baseClassName:p,maybePostfixModifierPosition:m}=n(t);if(u){l=t+(l.length>0?` `+l:l);continue}let h=!!m,g;if(h){g=r(p.substring(0,m));let e=g&&o[g]?r(p):void 0;e&&e!==g&&(g=e,h=!1)}else g=r(p);if(!g){if(!h){l=t+(l.length>0?` `+l:l);continue}if(g=r(p),!g){l=t+(l.length>0?` `+l:l);continue}h=!1}let _=d.length===0?``:d.length===1?d[0]:a(d).join(`:`),v=f?_+cv:_,y=v+g;if(s.indexOf(y)>-1)continue;s.push(y);let b=i(g,h);for(let e=0;e0?` `+l:l)}return l},vv=(...e)=>{let t=0,n,r,i=``;for(;t{if(typeof e==`string`)return e;let t,n=``;for(let r=0;r{let n,r,i,a,o=o=>(n=mv(t.reduce((e,t)=>t(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)),s=e=>{let t=r(e);if(t)return t;let a=_v(e,n);return i(e,a),a};return a=o,(...e)=>a(vv(...e))},xv=[],Sv=e=>{let t=t=>t[e]||xv;return t.isThemeGetter=!0,t},Cv=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,wv=/^\((?:(\w[\w-]*):)?(.+)\)$/i,Tv=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,Ev=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Dv=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Ov=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,kv=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Av=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,jv=e=>Tv.test(e),Mv=e=>!!e&&!Number.isNaN(Number(e)),Nv=e=>!!e&&Number.isInteger(Number(e)),Pv=e=>e.endsWith(`%`)&&Mv(e.slice(0,-1)),Fv=e=>Ev.test(e),Iv=()=>!0,Lv=e=>Dv.test(e)&&!Ov.test(e),Rv=()=>!1,zv=e=>kv.test(e),Bv=e=>Av.test(e),Vv=e=>!Q(e)&&!$(e),Hv=e=>e.startsWith(`@container`)&&(e[10]===`/`&&e[11]!==void 0||e[11]===`s`&&e[16]!==void 0&&e.startsWith(`-size/`,10)||e[11]===`n`&&e[18]!==void 0&&e.startsWith(`-normal/`,10)),Uv=e=>iy(e,cy,Rv),Q=e=>Cv.test(e),Wv=e=>iy(e,ly,Lv),Gv=e=>iy(e,uy,Mv),Kv=e=>iy(e,fy,Iv),qv=e=>iy(e,dy,Rv),Jv=e=>iy(e,oy,Rv),Yv=e=>iy(e,sy,Bv),Xv=e=>iy(e,py,zv),$=e=>wv.test(e),Zv=e=>ay(e,ly),Qv=e=>ay(e,dy),$v=e=>ay(e,oy),ey=e=>ay(e,cy),ty=e=>ay(e,sy),ny=e=>ay(e,py,!0),ry=e=>ay(e,fy,!0),iy=(e,t,n)=>{let r=Cv.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},ay=(e,t,n=!1)=>{let r=wv.exec(e);return r?r[1]?t(r[1]):n:!1},oy=e=>e===`position`||e===`percentage`,sy=e=>e===`image`||e===`url`,cy=e=>e===`length`||e===`size`||e===`bg-size`,ly=e=>e===`length`,uy=e=>e===`number`,dy=e=>e===`family-name`,fy=e=>e===`number`||e===`weight`,py=e=>e===`shadow`,my=bv(()=>{let e=Sv(`color`),t=Sv(`font`),n=Sv(`text`),r=Sv(`font-weight`),i=Sv(`tracking`),a=Sv(`leading`),o=Sv(`breakpoint`),s=Sv(`container`),c=Sv(`spacing`),l=Sv(`radius`),u=Sv(`shadow`),d=Sv(`inset-shadow`),f=Sv(`text-shadow`),p=Sv(`drop-shadow`),m=Sv(`blur`),h=Sv(`perspective`),g=Sv(`aspect`),_=Sv(`ease`),v=Sv(`animate`),y=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],b=()=>[`center`,`top`,`bottom`,`left`,`right`,`top-left`,`left-top`,`top-right`,`right-top`,`bottom-right`,`right-bottom`,`bottom-left`,`left-bottom`],x=()=>[...b(),$,Q],S=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],C=()=>[`auto`,`contain`,`none`],w=()=>[$,Q,c],T=()=>[jv,`full`,`auto`,...w()],E=()=>[Nv,`none`,`subgrid`,$,Q],D=()=>[`auto`,{span:[`full`,Nv,$,Q]},Nv,$,Q],O=()=>[Nv,`auto`,$,Q],k=()=>[`auto`,`min`,`max`,`fr`,$,Q],ee=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`,`baseline`,`center-safe`,`end-safe`],te=()=>[`start`,`end`,`center`,`stretch`,`center-safe`,`end-safe`],A=()=>[`auto`,...w()],j=()=>[jv,`auto`,`full`,`dvw`,`dvh`,`lvw`,`lvh`,`svw`,`svh`,`min`,`max`,`fit`,...w()],M=()=>[jv,`screen`,`full`,`dvw`,`lvw`,`svw`,`min`,`max`,`fit`,...w()],ne=()=>[jv,`screen`,`full`,`lh`,`dvh`,`lvh`,`svh`,`min`,`max`,`fit`,...w()],N=()=>[e,$,Q],P=()=>[...b(),$v,Jv,{position:[$,Q]}],re=()=>[`no-repeat`,{repeat:[``,`x`,`y`,`space`,`round`]}],ie=()=>[`auto`,`cover`,`contain`,ey,Uv,{size:[$,Q]}],ae=()=>[Pv,Zv,Wv],F=()=>[``,`none`,`full`,l,$,Q],oe=()=>[``,Mv,Zv,Wv],I=()=>[`solid`,`dashed`,`dotted`,`double`],se=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],L=()=>[Mv,Pv,$v,Jv],ce=()=>[``,`none`,m,$,Q],le=()=>[`none`,Mv,$,Q],ue=()=>[`none`,Mv,$,Q],de=()=>[Mv,$,Q],fe=()=>[jv,`full`,...w()];return{cacheSize:500,theme:{animate:[`spin`,`ping`,`pulse`,`bounce`],aspect:[`video`],blur:[Fv],breakpoint:[Fv],color:[Iv],container:[Fv],"drop-shadow":[Fv],ease:[`in`,`out`,`in-out`],font:[Vv],"font-weight":[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`],"inset-shadow":[Fv],leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`],perspective:[`dramatic`,`near`,`normal`,`midrange`,`distant`,`none`],radius:[Fv],shadow:[Fv],spacing:[`px`,Mv],text:[Fv],"text-shadow":[Fv],tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`]},classGroups:{aspect:[{aspect:[`auto`,`square`,jv,Q,$,g]}],container:[`container`],"container-type":[{"@container":[``,`normal`,`size`,$,Q]}],"container-named":[Hv],columns:[{columns:[Mv,Q,$,s]}],"break-after":[{"break-after":y()}],"break-before":[{"break-before":y()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],sr:[`sr-only`,`not-sr-only`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:x()}],overflow:[{overflow:S()}],"overflow-x":[{"overflow-x":S()}],"overflow-y":[{"overflow-y":S()}],overscroll:[{overscroll:C()}],"overscroll-x":[{"overscroll-x":C()}],"overscroll-y":[{"overscroll-y":C()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:T()}],"inset-x":[{"inset-x":T()}],"inset-y":[{"inset-y":T()}],start:[{"inset-s":T(),start:T()}],end:[{"inset-e":T(),end:T()}],"inset-bs":[{"inset-bs":T()}],"inset-be":[{"inset-be":T()}],top:[{top:T()}],right:[{right:T()}],bottom:[{bottom:T()}],left:[{left:T()}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[Nv,`auto`,$,Q]}],basis:[{basis:[jv,`full`,`auto`,s,...w()]}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`nowrap`,`wrap`,`wrap-reverse`]}],flex:[{flex:[Mv,jv,`auto`,`initial`,`none`,Q]}],grow:[{grow:[``,Mv,$,Q]}],shrink:[{shrink:[``,Mv,$,Q]}],order:[{order:[Nv,`first`,`last`,`none`,$,Q]}],"grid-cols":[{"grid-cols":E()}],"col-start-end":[{col:D()}],"col-start":[{"col-start":O()}],"col-end":[{"col-end":O()}],"grid-rows":[{"grid-rows":E()}],"row-start-end":[{row:D()}],"row-start":[{"row-start":O()}],"row-end":[{"row-end":O()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":k()}],"auto-rows":[{"auto-rows":k()}],gap:[{gap:w()}],"gap-x":[{"gap-x":w()}],"gap-y":[{"gap-y":w()}],"justify-content":[{justify:[...ee(),`normal`]}],"justify-items":[{"justify-items":[...te(),`normal`]}],"justify-self":[{"justify-self":[`auto`,...te()]}],"align-content":[{content:[`normal`,...ee()]}],"align-items":[{items:[...te(),{baseline:[``,`last`]}]}],"align-self":[{self:[`auto`,...te(),{baseline:[``,`last`]}]}],"place-content":[{"place-content":ee()}],"place-items":[{"place-items":[...te(),`baseline`]}],"place-self":[{"place-self":[`auto`,...te()]}],p:[{p:w()}],px:[{px:w()}],py:[{py:w()}],ps:[{ps:w()}],pe:[{pe:w()}],pbs:[{pbs:w()}],pbe:[{pbe:w()}],pt:[{pt:w()}],pr:[{pr:w()}],pb:[{pb:w()}],pl:[{pl:w()}],m:[{m:A()}],mx:[{mx:A()}],my:[{my:A()}],ms:[{ms:A()}],me:[{me:A()}],mbs:[{mbs:A()}],mbe:[{mbe:A()}],mt:[{mt:A()}],mr:[{mr:A()}],mb:[{mb:A()}],ml:[{ml:A()}],"space-x":[{"space-x":w()}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":w()}],"space-y-reverse":[`space-y-reverse`],size:[{size:j()}],"inline-size":[{inline:[`auto`,...M()]}],"min-inline-size":[{"min-inline":[`auto`,...M()]}],"max-inline-size":[{"max-inline":[`none`,...M()]}],"block-size":[{block:[`auto`,...ne()]}],"min-block-size":[{"min-block":[`auto`,...ne()]}],"max-block-size":[{"max-block":[`none`,...ne()]}],w:[{w:[s,`screen`,...j()]}],"min-w":[{"min-w":[s,`screen`,`none`,...j()]}],"max-w":[{"max-w":[s,`screen`,`none`,`prose`,{screen:[o]},...j()]}],h:[{h:[`screen`,`lh`,...j()]}],"min-h":[{"min-h":[`screen`,`lh`,`none`,...j()]}],"max-h":[{"max-h":[`screen`,`lh`,...j()]}],"font-size":[{text:[`base`,n,Zv,Wv]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[r,ry,Kv]}],"font-stretch":[{"font-stretch":[`ultra-condensed`,`extra-condensed`,`condensed`,`semi-condensed`,`normal`,`semi-expanded`,`expanded`,`extra-expanded`,`ultra-expanded`,Pv,Q]}],"font-family":[{font:[Qv,qv,t]}],"font-features":[{"font-features":[Q]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[i,$,Q]}],"line-clamp":[{"line-clamp":[Mv,`none`,$,Gv]}],leading:[{leading:[a,...w()]}],"list-image":[{"list-image":[`none`,$,Q]}],"list-style-position":[{list:[`inside`,`outside`]}],"list-style-type":[{list:[`disc`,`decimal`,`none`,$,Q]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"placeholder-color":[{placeholder:N()}],"text-color":[{text:N()}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...I(),`wavy`]}],"text-decoration-thickness":[{decoration:[Mv,`from-font`,`auto`,$,Wv]}],"text-decoration-color":[{decoration:N()}],"underline-offset":[{"underline-offset":[Mv,`auto`,$,Q]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:w()}],"tab-size":[{tab:[Nv,$,Q]}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,$,Q]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],wrap:[{wrap:[`break-word`,`anywhere`,`normal`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,$,Q]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:P()}],"bg-repeat":[{bg:re()}],"bg-size":[{bg:ie()}],"bg-image":[{bg:[`none`,{linear:[{to:[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},Nv,$,Q],radial:[``,$,Q],conic:[Nv,$,Q]},ty,Yv]}],"bg-color":[{bg:N()}],"gradient-from-pos":[{from:ae()}],"gradient-via-pos":[{via:ae()}],"gradient-to-pos":[{to:ae()}],"gradient-from":[{from:N()}],"gradient-via":[{via:N()}],"gradient-to":[{to:N()}],rounded:[{rounded:F()}],"rounded-s":[{"rounded-s":F()}],"rounded-e":[{"rounded-e":F()}],"rounded-t":[{"rounded-t":F()}],"rounded-r":[{"rounded-r":F()}],"rounded-b":[{"rounded-b":F()}],"rounded-l":[{"rounded-l":F()}],"rounded-ss":[{"rounded-ss":F()}],"rounded-se":[{"rounded-se":F()}],"rounded-ee":[{"rounded-ee":F()}],"rounded-es":[{"rounded-es":F()}],"rounded-tl":[{"rounded-tl":F()}],"rounded-tr":[{"rounded-tr":F()}],"rounded-br":[{"rounded-br":F()}],"rounded-bl":[{"rounded-bl":F()}],"border-w":[{border:oe()}],"border-w-x":[{"border-x":oe()}],"border-w-y":[{"border-y":oe()}],"border-w-s":[{"border-s":oe()}],"border-w-e":[{"border-e":oe()}],"border-w-bs":[{"border-bs":oe()}],"border-w-be":[{"border-be":oe()}],"border-w-t":[{"border-t":oe()}],"border-w-r":[{"border-r":oe()}],"border-w-b":[{"border-b":oe()}],"border-w-l":[{"border-l":oe()}],"divide-x":[{"divide-x":oe()}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":oe()}],"divide-y-reverse":[`divide-y-reverse`],"border-style":[{border:[...I(),`hidden`,`none`]}],"divide-style":[{divide:[...I(),`hidden`,`none`]}],"border-color":[{border:N()}],"border-color-x":[{"border-x":N()}],"border-color-y":[{"border-y":N()}],"border-color-s":[{"border-s":N()}],"border-color-e":[{"border-e":N()}],"border-color-bs":[{"border-bs":N()}],"border-color-be":[{"border-be":N()}],"border-color-t":[{"border-t":N()}],"border-color-r":[{"border-r":N()}],"border-color-b":[{"border-b":N()}],"border-color-l":[{"border-l":N()}],"divide-color":[{divide:N()}],"outline-style":[{outline:[...I(),`none`,`hidden`]}],"outline-offset":[{"outline-offset":[Mv,$,Q]}],"outline-w":[{outline:[``,Mv,Zv,Wv]}],"outline-color":[{outline:N()}],shadow:[{shadow:[``,`none`,u,ny,Xv]}],"shadow-color":[{shadow:N()}],"inset-shadow":[{"inset-shadow":[`none`,d,ny,Xv]}],"inset-shadow-color":[{"inset-shadow":N()}],"ring-w":[{ring:oe()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:N()}],"ring-offset-w":[{"ring-offset":[Mv,Wv]}],"ring-offset-color":[{"ring-offset":N()}],"inset-ring-w":[{"inset-ring":oe()}],"inset-ring-color":[{"inset-ring":N()}],"text-shadow":[{"text-shadow":[`none`,f,ny,Xv]}],"text-shadow-color":[{"text-shadow":N()}],opacity:[{opacity:[Mv,$,Q]}],"mix-blend":[{"mix-blend":[...se(),`plus-darker`,`plus-lighter`]}],"bg-blend":[{"bg-blend":se()}],"mask-clip":[{"mask-clip":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]},`mask-no-clip`],"mask-composite":[{mask:[`add`,`subtract`,`intersect`,`exclude`]}],"mask-image-linear-pos":[{"mask-linear":[Mv]}],"mask-image-linear-from-pos":[{"mask-linear-from":L()}],"mask-image-linear-to-pos":[{"mask-linear-to":L()}],"mask-image-linear-from-color":[{"mask-linear-from":N()}],"mask-image-linear-to-color":[{"mask-linear-to":N()}],"mask-image-t-from-pos":[{"mask-t-from":L()}],"mask-image-t-to-pos":[{"mask-t-to":L()}],"mask-image-t-from-color":[{"mask-t-from":N()}],"mask-image-t-to-color":[{"mask-t-to":N()}],"mask-image-r-from-pos":[{"mask-r-from":L()}],"mask-image-r-to-pos":[{"mask-r-to":L()}],"mask-image-r-from-color":[{"mask-r-from":N()}],"mask-image-r-to-color":[{"mask-r-to":N()}],"mask-image-b-from-pos":[{"mask-b-from":L()}],"mask-image-b-to-pos":[{"mask-b-to":L()}],"mask-image-b-from-color":[{"mask-b-from":N()}],"mask-image-b-to-color":[{"mask-b-to":N()}],"mask-image-l-from-pos":[{"mask-l-from":L()}],"mask-image-l-to-pos":[{"mask-l-to":L()}],"mask-image-l-from-color":[{"mask-l-from":N()}],"mask-image-l-to-color":[{"mask-l-to":N()}],"mask-image-x-from-pos":[{"mask-x-from":L()}],"mask-image-x-to-pos":[{"mask-x-to":L()}],"mask-image-x-from-color":[{"mask-x-from":N()}],"mask-image-x-to-color":[{"mask-x-to":N()}],"mask-image-y-from-pos":[{"mask-y-from":L()}],"mask-image-y-to-pos":[{"mask-y-to":L()}],"mask-image-y-from-color":[{"mask-y-from":N()}],"mask-image-y-to-color":[{"mask-y-to":N()}],"mask-image-radial":[{"mask-radial":[$,Q]}],"mask-image-radial-from-pos":[{"mask-radial-from":L()}],"mask-image-radial-to-pos":[{"mask-radial-to":L()}],"mask-image-radial-from-color":[{"mask-radial-from":N()}],"mask-image-radial-to-color":[{"mask-radial-to":N()}],"mask-image-radial-shape":[{"mask-radial":[`circle`,`ellipse`]}],"mask-image-radial-size":[{"mask-radial":[{closest:[`side`,`corner`],farthest:[`side`,`corner`]}]}],"mask-image-radial-pos":[{"mask-radial-at":b()}],"mask-image-conic-pos":[{"mask-conic":[Mv]}],"mask-image-conic-from-pos":[{"mask-conic-from":L()}],"mask-image-conic-to-pos":[{"mask-conic-to":L()}],"mask-image-conic-from-color":[{"mask-conic-from":N()}],"mask-image-conic-to-color":[{"mask-conic-to":N()}],"mask-mode":[{mask:[`alpha`,`luminance`,`match`]}],"mask-origin":[{"mask-origin":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]}],"mask-position":[{mask:P()}],"mask-repeat":[{mask:re()}],"mask-size":[{mask:ie()}],"mask-type":[{"mask-type":[`alpha`,`luminance`]}],"mask-image":[{mask:[`none`,$,Q]}],filter:[{filter:[``,`none`,$,Q]}],blur:[{blur:ce()}],brightness:[{brightness:[Mv,$,Q]}],contrast:[{contrast:[Mv,$,Q]}],"drop-shadow":[{"drop-shadow":[``,`none`,p,ny,Xv]}],"drop-shadow-color":[{"drop-shadow":N()}],grayscale:[{grayscale:[``,Mv,$,Q]}],"hue-rotate":[{"hue-rotate":[Mv,$,Q]}],invert:[{invert:[``,Mv,$,Q]}],saturate:[{saturate:[Mv,$,Q]}],sepia:[{sepia:[``,Mv,$,Q]}],"backdrop-filter":[{"backdrop-filter":[``,`none`,$,Q]}],"backdrop-blur":[{"backdrop-blur":ce()}],"backdrop-brightness":[{"backdrop-brightness":[Mv,$,Q]}],"backdrop-contrast":[{"backdrop-contrast":[Mv,$,Q]}],"backdrop-grayscale":[{"backdrop-grayscale":[``,Mv,$,Q]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Mv,$,Q]}],"backdrop-invert":[{"backdrop-invert":[``,Mv,$,Q]}],"backdrop-opacity":[{"backdrop-opacity":[Mv,$,Q]}],"backdrop-saturate":[{"backdrop-saturate":[Mv,$,Q]}],"backdrop-sepia":[{"backdrop-sepia":[``,Mv,$,Q]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":w()}],"border-spacing-x":[{"border-spacing-x":w()}],"border-spacing-y":[{"border-spacing-y":w()}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[``,`all`,`colors`,`opacity`,`shadow`,`transform`,`none`,$,Q]}],"transition-behavior":[{transition:[`normal`,`discrete`]}],duration:[{duration:[Mv,`initial`,$,Q]}],ease:[{ease:[`linear`,`initial`,_,$,Q]}],delay:[{delay:[Mv,$,Q]}],animate:[{animate:[`none`,v,$,Q]}],backface:[{backface:[`hidden`,`visible`]}],perspective:[{perspective:[h,$,Q]}],"perspective-origin":[{"perspective-origin":x()}],rotate:[{rotate:le()}],"rotate-x":[{"rotate-x":le()}],"rotate-y":[{"rotate-y":le()}],"rotate-z":[{"rotate-z":le()}],scale:[{scale:ue()}],"scale-x":[{"scale-x":ue()}],"scale-y":[{"scale-y":ue()}],"scale-z":[{"scale-z":ue()}],"scale-3d":[`scale-3d`],skew:[{skew:de()}],"skew-x":[{"skew-x":de()}],"skew-y":[{"skew-y":de()}],transform:[{transform:[$,Q,``,`none`,`gpu`,`cpu`]}],"transform-origin":[{origin:x()}],"transform-style":[{transform:[`3d`,`flat`]}],translate:[{translate:fe()}],"translate-x":[{"translate-x":fe()}],"translate-y":[{"translate-y":fe()}],"translate-z":[{"translate-z":fe()}],"translate-none":[`translate-none`],zoom:[{zoom:[Nv,$,Q]}],accent:[{accent:N()}],appearance:[{appearance:[`none`,`auto`]}],"caret-color":[{caret:N()}],"color-scheme":[{scheme:[`normal`,`dark`,`light`,`light-dark`,`only-dark`,`only-light`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,$,Q]}],"field-sizing":[{"field-sizing":[`fixed`,`content`]}],"pointer-events":[{"pointer-events":[`auto`,`none`]}],resize:[{resize:[`none`,``,`y`,`x`]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scrollbar-thumb-color":[{"scrollbar-thumb":N()}],"scrollbar-track-color":[{"scrollbar-track":N()}],"scrollbar-gutter":[{"scrollbar-gutter":[`auto`,`stable`,`both`]}],"scrollbar-w":[{scrollbar:[`auto`,`thin`,`none`]}],"scroll-m":[{"scroll-m":w()}],"scroll-mx":[{"scroll-mx":w()}],"scroll-my":[{"scroll-my":w()}],"scroll-ms":[{"scroll-ms":w()}],"scroll-me":[{"scroll-me":w()}],"scroll-mbs":[{"scroll-mbs":w()}],"scroll-mbe":[{"scroll-mbe":w()}],"scroll-mt":[{"scroll-mt":w()}],"scroll-mr":[{"scroll-mr":w()}],"scroll-mb":[{"scroll-mb":w()}],"scroll-ml":[{"scroll-ml":w()}],"scroll-p":[{"scroll-p":w()}],"scroll-px":[{"scroll-px":w()}],"scroll-py":[{"scroll-py":w()}],"scroll-ps":[{"scroll-ps":w()}],"scroll-pe":[{"scroll-pe":w()}],"scroll-pbs":[{"scroll-pbs":w()}],"scroll-pbe":[{"scroll-pbe":w()}],"scroll-pt":[{"scroll-pt":w()}],"scroll-pr":[{"scroll-pr":w()}],"scroll-pb":[{"scroll-pb":w()}],"scroll-pl":[{"scroll-pl":w()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,$,Q]}],fill:[{fill:[`none`,...N()]}],"stroke-w":[{stroke:[Mv,Zv,Wv,Gv]}],stroke:[{stroke:[`none`,...N()]}],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{"container-named":[`container-type`],overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`inset-bs`,`inset-be`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`right`,`left`],"inset-y":[`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pbs`,`pbe`,`pt`,`pr`,`pb`,`pl`],px:[`pr`,`pl`],py:[`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mbs`,`mbe`,`mt`,`mr`,`mb`,`ml`],mx:[`mr`,`ml`],my:[`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-x`,`border-w-y`,`border-w-s`,`border-w-e`,`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-r`,`border-w-l`],"border-w-y":[`border-w-t`,`border-w-b`],"border-color":[`border-color-x`,`border-color-y`,`border-color-s`,`border-color-e`,`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-r`,`border-color-l`],"border-color-y":[`border-color-t`,`border-color-b`],translate:[`translate-x`,`translate-y`,`translate-none`],"translate-none":[`translate`,`translate-x`,`translate-y`,`translate-z`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]},postfixLookupClassGroups:[`container-type`],orderSensitiveModifiers:[`*`,`**`,`after`,`backdrop`,`before`,`details-content`,`file`,`first-letter`,`first-line`,`marker`,`placeholder`,`selection`]}});function hy(...e){return my(z_(e))}var gy=H_(`inline-flex h-9 shrink-0 items-center justify-center gap-2 whitespace-nowrap rounded-md border px-3 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-400 disabled:pointer-events-none disabled:opacity-50 dark:focus-visible:ring-zinc-500`,{variants:{variant:{primary:`border-slate-900 bg-slate-950 text-white hover:bg-slate-800 dark:border-zinc-100 dark:bg-zinc-50 dark:text-zinc-950 dark:hover:bg-zinc-200`,secondary:`border-slate-200 bg-white text-slate-900 hover:bg-slate-50 dark:border-zinc-800 dark:bg-zinc-950 dark:text-zinc-100 dark:hover:bg-zinc-900`,ghost:`border-transparent bg-transparent text-slate-700 hover:bg-slate-100 dark:text-zinc-300 dark:hover:bg-zinc-900`},size:{sm:`h-8 px-2 text-xs`,md:`h-9 px-3 text-sm`,icon:`h-9 w-9 px-0`}},defaultVariants:{variant:`secondary`,size:`md`}});function _y({className:e,variant:t,size:n,...r}){return(0,B.jsx)(`button`,{className:hy(gy({variant:t,size:n}),e),type:`button`,...r})}function vy({className:e,...t}){return(0,B.jsx)(`section`,{className:hy(`rounded-lg border border-slate-200/80 bg-white/95 text-slate-950 shadow-[0_1px_2px_rgba(15,23,42,0.04)] dark:border-zinc-800 dark:bg-zinc-950 dark:text-zinc-50`,e),...t})}function yy({className:e,...t}){return(0,B.jsx)(`div`,{className:hy(`p-4 pt-0`,e),...t})}var by=[`codex`,`claude`,`kiro`,`trae`,`coco`,`openai`,`anthropic`],xy=new Set([`acp`,`status_projection`]);function Sy(e){let t=e.trim().toLowerCase().replace(/_/gu,`-`);for(let e of by)if(t===e||t.startsWith(`${e}-`))return e;return t}function Cy(e,t){let n=t?.trim().toLowerCase()??``;return n.length>0&&!xy.has(n)?Sy(n):Sy(e)}var wy={stop:`ready_stop`,resume:`resume_review`,delete:`delete_review`};function Ty(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function Ey(e){return typeof e==`string`&&e.trim().length>0?e:null}function Dy(e,t=240){let n=typeof e==`string`?e.replace(/\s+/g,` `).trim():``;return n.length>t?`${n.slice(0,t-1)}…`:n}function Oy(e){let t=Ty(e)??{},n=Dy(t.agent_id,80)||`unknown-agent`,r=Dy(t.acceptance,200);if(t.staffing===`gap`){let e=Ty(t.declined_first_todo)??{};return[`${n} · gap`,Dy(t.gap_reason_code,80),Dy(e.text,200)].filter(Boolean).join(` · `)}let i=Ty(t.first_todo)??{};return[`${n} · ready`,Dy(i.priority,8),Dy(i.action_kind,40),Dy(i.text,240),r?`acceptance: ${r}`:``].filter(Boolean).join(` · `)}function ky(e){let t=Ty(e)??{};return Object.entries(t).map(([e,t])=>`${e}: ${typeof t==`object`&&t?JSON.stringify(t):String(t)}`).join(` · `)}function Ay(e){let t=Ty(e);if(t?.action_kind!==`team.plan`||t.status!==`preview_ready`&&t.status!==`deferred`)return;let n=Ty(Ty(t.normalized_parameters)?.plan);if(!n||n.kind!==`steward_team_plan_preview`||n.applies!==!1)return;let r=Ey(t.proposal_id),i=Ey(t.expected_state_fingerprint),a=Ey(n.goal_id);if(!r||!i||!a)return;let o=Array.isArray(n.lanes)?n.lanes:[],s=Array.isArray(n.gaps)?n.gaps:[],c=[{key:`goal`,value:a},{key:`objective`,value:Dy(n.objective)},...o.map((e,t)=>({key:`lane_${t+1}`,value:Oy(e)})),...s.length>0?[{key:`lane_gaps`,value:s.map(e=>{let t=Ty(e)??{};return[Dy(t.lane_id,80),Dy(t.reason_code,80)].filter(Boolean).join(`: `)}).filter(Boolean).join(` · `)}]:[],{key:`quota_envelope`,value:ky(n.quota_envelope)},{key:`stop_condition`,value:Dy(n.stop_condition)}].filter(e=>e.value.length>0);return{schemaVersion:`review_card_frame_v0`,actionKind:`team.plan`,proposalId:r,stateFingerprint:i,kind:`confirmation`,attentionKind:`authority`,interactionMode:`confirm_reject`,decisions:[`confirm`,`reject`],titleKey:`team_plan_preview`,subtitleKey:`preview_only_no_lane_exists`,confirmLabelKey:`confirm_team_plan`,rejectLabelKey:`reject_team_plan`,warningKey:`confirming_creates_each_ready_lane_first_todo`,focus:`${a} · ${o.length} lane${o.length===1?``:`s`}`,fields:c}}function jy(e){let t=Ty(e.projection);if(t?.schema_version!==`loopx_operation_projection_v0`)return null;let n=Ey(t.title),r=Ey(t.subtitle),i=Ey(t.focus),a=Ey(t.warning);if(!n||!r||!i||!a||!Array.isArray(t.fields))return null;let o=[];for(let e of t.fields){let t=Ty(e),n=Ey(t?.label),r=Ey(t?.value);if(!n||!r)return null;o.push({label:n,value:r})}return{title:n,subtitle:r,focus:i,fields:o,warning:a}}function My(e){let t=Ty(e);if(t?.action_kind!==`operation.execute`)return;let n=Ty(t.normalized_parameters),r=Ty(t.operation);if(!n||r?.schema_version!==`loopx_operation_envelope_v0`)return;let i=Ey(r.operation_id),a=Ey(r.confirmation_digest),o=Ey(r.expires_at),s=jy(n);if(!i||!a||!o||!s||i!==t.proposal_id)return;let c=r.lifecycle_state;if(c!==`awaiting_confirmation`&&c!==`claimed`&&c!==`outcome_observed`)return;let l={schemaVersion:`operation_review_frame_v0`,operationId:i,confirmationDigest:a,lifecycleState:c,simulated:Ty(n.projection).simulated===!0,expiresAt:o,content:s};if(c===`awaiting_confirmation`)return{...l,kind:`confirmation`,attentionKind:`authority`,interactionMode:`confirm_reject`,decisions:[`confirm`,`reject`]};if(c===`claimed`)return{...l,kind:`pending`,attentionKind:`progress`,interactionMode:`inform`};let u=Ty(r.outcome);if(!u)return;let d=u.outcome===`rejected_by_operator`,f=u.simulation===!0||l.simulated;return{...l,kind:`result`,attentionKind:`progress`,interactionMode:`inform`,resultKind:d?`rejected`:f?`simulation_completed`:`completed`,resultDeliveryVerified:Ty(r.result_delivery)!==null,summary:Ey(u.summary)??``}}function Ny(e){let t=Ty(e)??{},n={schemaVersion:`action_review_plan_v0`,proposalId:typeof t.proposal_id==`string`?t.proposal_id:``,sourceFingerprint:typeof t.expected_state_fingerprint==`string`?t.expected_state_fingerprint:``},r=My(t),i=Ay(t),a=e=>({...n,...e,...r?{operationFrame:r}:{},...i?{reviewCardFrame:i}:{}}),o=(e,t)=>a({interaction:e,reason:t,canApply:!1}),s=t.action_kind===`goal.lifecycle`;if(s&&t.gate!=null||t.status===`gated`)return o(`gated`,`authority_gate`);if(s&&t.stale!=null||t.status===`stale`)return o(`refresh`,`stale_proposal`);if(t.status===`applied`)return Ty(t.receipt)?.projection_verified===!0&&(t.action_kind!==`operation.execute`||Ty(Ty(t.operation)?.result_delivery)!==null)?o(`completed`,`readback_verified`):o(`repair`,`readback_unverified`);if(t.status===`applying`)return o(`pending`,`apply_pending`);if(t.status===`failed`||t.error!=null)return o(`repair`,`apply_failed`);if(t.status!==`preview_ready`&&t.status!==`deferred`)return o(`inactive`,`inactive_proposal`);let c=(e,t=!0)=>a({interaction:`review`,reason:e,canApply:t});if(t.action_kind!==`goal.lifecycle`)return c(t.permission_classification===`protected`?`protected_action`:`action_review`);let l=t.validation_evidence,u=t.available_transitions;if(!(Ey(t.proposal_id)!==null&&Ey(t.expected_state_fingerprint)!==null&&Array.isArray(l)&&l.length>0&&l.every(e=>Ey(e)!==null)&&Array.isArray(u)&&u.includes(`apply`)))return o(`refresh`,`incomplete_proposal`);let d=Ty(t.normalized_parameters),f=Ty(t.context),p=d?.operation,m=Ey(d?.goal_id);if(!m||f?.goal_id!=null&&f.goal_id!==m)return o(`refresh`,`incomplete_proposal`);if(p!==`stop`&&p!==`resume`&&p!==`delete`)return c(`unknown_action`,!1);if(t.permission_classification===`protected`)return c(`protected_action`);if(t.permission_classification!==`durable_write`)return c(`unknown_permission`,!1);let h=wy[p];return h===`ready_stop`&&t.status===`preview_ready`?a({interaction:`direct`,reason:h,canApply:!0}):c(h===`ready_stop`?`action_review`:h)}function Py(e){return e.error_code===`action_stale`||e.error_code===`action_conflict`||Ty(e.proposal)?.status===`stale`}function Fy(e){return typeof e==`object`&&e?e:{}}function Iy(e){return typeof e==`string`?e:``}function Ly(e,t){let n=Fy(e.plan),r=[],i=Iy(e.goal_id)||Iy(n.goal_id);i&&r.push({key:`goal_id`,label:t(`proposal.field.goalId`),value:i});let a=Iy(n.objective);a&&r.push({key:`objective`,label:t(`proposal.field.objective`),value:a}),(Array.isArray(n.lanes)?n.lanes:[]).forEach((e,n)=>{let i=Fy(e),a=Iy(i.lane_id)||`lane-${n+1}`,o=Iy(i.agent_id),s=Iy(i.acceptance);if(Iy(i.staffing)===`gap`){let e=Fy(i.declined_first_todo);r.push({key:`lane_${a}`,label:o||a,value:[t(`proposal.teamPlan.gapLane`),Iy(i.gap_reason_code),Iy(e.text)].filter(Boolean).join(` · `)});return}let c=Fy(i.first_todo),l=[Iy(c.priority),Iy(c.action_kind),Iy(c.text)].filter(Boolean).join(` · `);r.push({key:`lane_${a}`,label:o||a,value:[l||t(`proposal.teamPlan.laneUnstaffed`),s?`${t(`proposal.teamPlan.acceptanceShort`)}: ${s}`:``].filter(Boolean).join(` · `)})});let o=Array.isArray(n.gaps)?n.gaps:[];o.length>0&&r.push({key:`lane_gaps`,label:t(`proposal.field.laneGaps`),value:o.map(e=>{let t=Fy(e);return[Iy(t.lane_id),Iy(t.reason_code)].filter(Boolean).join(`: `)}).filter(Boolean).join(` · `)});let s=Fy(n.quota_envelope),c=Object.entries(s);c.length>0&&r.push({key:`quota_envelope`,label:t(`proposal.field.quotaEnvelope`),value:c.map(([e,t])=>`${e}: ${String(t??``)}`).join(` · `)});let l=Iy(n.stop_condition);return l&&r.push({key:`stop_condition`,label:t(`proposal.field.stopCondition`),value:l}),r}function Ry(e){let t=Fy(e.plan);return Array.isArray(t.lanes)?t.lanes.length:0}function zy(e){let t=Fy(e.plan);return Iy(e.goal_id)||Iy(t.goal_id)}function By(e){return{blockingTodoCount:e.blockingTodoCount,goalNotifications:e.goalNotifications,goals:e.goals,openUserTodoCount:e.openUserTodoCount,systemHealth:e.systemHealth,attentionHistory:e.attentionHistory,userTodos:e.userTodos,workers:e.workers}}function Vy(e,t){return e.goals.find(e=>e.goalId===t)?.title??t}function Hy(e){return e.activationState===`stopped`||e.state===`已停止`?`stopped`:e.state===`已完成`?`history`:e.needsYou||e.state===`等你`?`needs_you`:e.state===`推进中`||e.state===`需修复`?`running`:e.state===`安静运行`?`observing`:`scheduled`}function Uy(e){let t=e;return t>=1e6?`${(t/1e6).toFixed(1)}M`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function Wy(e){return`$${e.toFixed(2)}`}function Gy(e){let t=e;return t>=36e5?`${(t/36e5).toFixed(1)}h`:t>=6e4?`${(t/6e4).toFixed(1)}m`:t>=1e3?`${Math.round(t/1e3)}s`:`${t}ms`}function Ky(e,t,n){return e==null?t:n(e)}function qy(e){return!!(e&&[e.tokens24h,e.tokens7d,e.costUsd24h,e.costUsd7d,e.durationMs24h,e.durationMs7d].some(e=>e!=null))}function Jy(e,t){if(!qy(e))return null;let n=(e,n,r,i)=>{let a=[n==null?null:`${Uy(n)} ${t.tokens}`,r==null?null:`${t.cost}: ${Wy(r)}`,i==null?null:`${t.duration}: ${Gy(i)}`].filter(e=>e!==null);return a.length?`${e} ${a.join(` · `)}`:null};return n(t.period7d,e.tokens7d,e.costUsd7d,e.durationMs7d)??n(t.period24h,e.tokens24h,e.costUsd24h,e.durationMs24h)}function Yy({ariaLabel:e,className:t,icon:n,onChange:r,options:i,prefixLabel:a,value:o}){let s=(0,z.useId)(),c=(0,z.useRef)(null),l=(0,z.useRef)(null),u=(0,z.useRef)(new Map),[d,f]=(0,z.useState)(!1),[p,m]=(0,z.useState)(o),h=i.find(e=>e.value===o)??i[0],g=i.filter(e=>!e.disabled);(0,z.useEffect)(()=>{if(!d)return;let e=e=>{c.current?.contains(e.target)||f(!1)};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[d]),(0,z.useEffect)(()=>{d&&u.current.get(p)?.focus()},[p,d]);function _(e){m(e)}function v(e=`selected`){let t=e===`last`?g.at(-1):g[0],n=e===`selected`&&h&&!h.disabled?h:t;n&&(f(!0),_(n.value))}function y({restoreFocus:e=!1}={}){f(!1),e&&l.current?.focus()}function b(e){e.disabled||(r(e.value),y({restoreFocus:!0}))}function x(e){if(!g.length)return;let t=g.findIndex(e=>e.value===p),n=t<0?0:(t+e+g.length)%g.length;_(g[n].value)}function S(e){e.key===`ArrowDown`||e.key===`Enter`||e.key===` `?(e.preventDefault(),v(`selected`)):e.key===`ArrowUp`&&(e.preventDefault(),v(`last`))}function C(e,t){if(e.key===`ArrowDown`)e.preventDefault(),x(1);else if(e.key===`ArrowUp`)e.preventDefault(),x(-1);else if(e.key===`Home`)e.preventDefault(),g[0]&&_(g[0].value);else if(e.key===`End`){e.preventDefault();let t=g.at(-1);t&&_(t.value)}else e.key===`Enter`||e.key===` `?(e.preventDefault(),b(t)):e.key===`Escape`?(e.preventDefault(),y({restoreFocus:!0})):e.key===`Tab`&&y()}let w;return(0,B.jsxs)(`div`,{className:`personal-select${t?` ${t}`:``}`,ref:c,children:[(0,B.jsxs)(`button`,{"aria-controls":s,"aria-expanded":d,"aria-haspopup":`listbox`,"aria-label":e,className:`personal-select-trigger`,"data-value":o,onClick:()=>d?y():v(),onKeyDown:S,ref:l,role:`combobox`,type:`button`,children:[n?(0,B.jsx)(`span`,{className:`personal-select-icon`,children:n}):null,(0,B.jsxs)(`span`,{className:`personal-select-value`,children:[a?(0,B.jsx)(`small`,{children:a}):null,(0,B.jsx)(`span`,{children:h?.label??o})]}),(0,B.jsx)(om,{"aria-hidden":!0,className:d?`is-open`:void 0,size:14})]}),d?(0,B.jsx)(`div`,{"aria-label":e,className:`personal-select-listbox`,id:s,role:`listbox`,children:i.map(e=>{let t=e.group&&e.group!==w;return w=e.group,(0,B.jsxs)(`div`,{className:`personal-select-option-wrap`,children:[t?(0,B.jsx)(`div`,{className:`personal-select-group-label`,children:e.group}):null,(0,B.jsxs)(`button`,{"aria-disabled":e.disabled||void 0,"aria-selected":e.value===o,className:`personal-select-option`,disabled:e.disabled,id:`${s}-${e.value.replace(/[^a-z0-9_-]/gi,`-`)}`,onClick:()=>b(e),onFocus:()=>m(e.value),onKeyDown:t=>C(t,e),ref:t=>{t?u.current.set(e.value,t):u.current.delete(e.value)},role:`option`,tabIndex:e.value===p?0:-1,type:`button`,children:[(0,B.jsx)(`span`,{children:e.label}),e.value===o?(0,B.jsx)(am,{"aria-hidden":!0,size:15}):null]})]},e.value)})}):null]})}function Xy({agents:e,managerChannelBinding:t,managerChatOpen:n,managerRuntime:r,mobileNavigationOpen:i,onOpenGoalCapabilities:a,onOpenGoalDetail:o,onOpenManagerChat:s,onRefresh:c,onOpenNavigation:l,onSelectGoalTab:u,onSelectAgent:d,onReturnManagerHome:f,refreshState:p,readOnlySourceLabel:m,selectedAgentId:h,selectedGoal:g,selectedGoalTab:_}){let{locale:v,t:y}=Ji(),[b,x]=(0,z.useState)(!1),S=(0,z.useRef)(null),C=(0,z.useRef)(null);(0,z.useEffect)(()=>{if(!b)return;function e(e){C.current?.contains(e.target)||x(!1)}function t(e){e.key===`Escape`&&(x(!1),S.current?.focus())}return document.addEventListener(`pointerdown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`pointerdown`,e),document.removeEventListener(`keydown`,t)}},[b]),(0,z.useEffect)(()=>x(!1),[g?.goalId]);function w(e){x(!1),e?.()}let T=g?Jy(g.usage,{cost:y(`drawer.costShort`),duration:y(`drawer.durationShort`),period24h:y(`drawer.period24h`),period7d:y(`drawer.period7d`),tokens:y(`drawer.tokensShort`)}):null,E=t?t.executor_kind===`individual`?y(`header.managerExecutorKindIndividual`):t.executor_kind===`managed`?y(`header.managerExecutorKindManaged`):y(`header.managerExecutorKindRegistered`):null,D=t?.available===!1,O=t?.available===!1?t.unavailable_reason:null,k=O===`operator_credential_unconfigured`?`header.managerExecutionUnavailableCredential`:O===`dsh_runtime_unavailable`?`header.managerExecutionUnavailableRuntime`:O===`invalid_reasoning_effort`?`header.managerExecutionUnavailableEffort`:`header.managerExecutionUnavailable`,ee=t&&t.executor_endpoint_source===`product_default`&&t.executor_endpoint_default_reason===`steward_channel_default`?`header.managerEndpointStewardDefault`:null;return(0,B.jsxs)(`header`,{className:`personal-channel-header`,children:[(0,B.jsx)(`button`,{"aria-expanded":i??!1,"aria-label":y(`header.openGoalNavigation`),className:`personal-icon-button personal-mobile-menu`,onClick:l,type:`button`,children:(0,B.jsx)(jm,{size:18})}),(0,B.jsxs)(`div`,{className:`personal-channel-title`,children:[(0,B.jsx)(`h1`,{children:g?.title??y(`header.manager`)}),!g&&r?(0,B.jsx)(`p`,{children:r.status===`ready`?y(`header.managerRuntime`,{profile:r.runtime_profile,sandbox:r.sandbox}):y(`header.managerRuntimeFallback`,{profile:r.runtime_profile,sandbox:r.sandbox})}):null,!g&&t?(0,B.jsxs)(`p`,{className:`personal-manager-execution`,children:[(0,B.jsxs)(`span`,{className:D?`personal-execution-chip is-unavailable`:`personal-execution-chip`,children:[(0,B.jsx)(`span`,{className:`personal-execution-chip-endpoint`,children:t.executor_endpoint}),E?(0,B.jsx)(`span`,{className:`personal-execution-chip-kind`,children:E}):null,(0,B.jsx)(`span`,{className:`personal-execution-chip-model`,children:t.model})]}),D?(0,B.jsx)(`span`,{className:`personal-execution-note`,children:y(k,{executor:t.executor_endpoint,credential:t.credential_env_var})}):null,ee?(0,B.jsx)(`span`,{className:`personal-execution-rule-note`,children:y(ee,{executor:t.executor_endpoint})}):null]}):null,g?(0,B.jsx)(`p`,{children:g.loadState?y(g.loadState===`error`?`startup.goalError`:`startup.goalLoading`):`${g.agentLaneCount&&g.agentLaneCount>1?y(`header.workAgentCount`,{count:g.agentLaneCount}):g.agentLabel??g.agentId} · ${g.loadState?y(g.loadState===`error`?`startup.goalError`:`startup.goalLoading`):Yi(g.state,v)}${T?` · ${T}`:``} · ${g.nextSentence}`}):null]}),g?(0,B.jsxs)(`nav`,{"aria-label":y(`header.goalView`),className:`personal-goal-tabs`,children:[(0,B.jsx)(`button`,{"aria-current":_===`chat`?`page`:void 0,onClick:()=>u(`chat`),type:`button`,children:y(`header.chat`)}),(0,B.jsx)(`button`,{"aria-current":_===`tasks`?`page`:void 0,onClick:()=>u(`tasks`),type:`button`,children:y(`header.tasks`)}),(0,B.jsx)(`button`,{"aria-current":_===`files`?`page`:void 0,onClick:()=>u(`files`),type:`button`,children:y(`header.files`)})]}):(0,B.jsxs)(`nav`,{"aria-label":y(`header.managerView`),className:`personal-goal-tabs`,children:[(0,B.jsx)(`button`,{"aria-current":n?void 0:`page`,onClick:f,type:`button`,children:y(`header.managerOverview`)}),(0,B.jsx)(`button`,{"aria-current":n?`page`:void 0,onClick:s,type:`button`,children:y(`header.chat`)})]}),(0,B.jsxs)(`div`,{className:`personal-channel-actions`,children:[g&&o&&a?(0,B.jsxs)(`div`,{className:`personal-goal-tools`,ref:C,children:[(0,B.jsxs)(`button`,{"aria-expanded":b,"aria-haspopup":`menu`,"aria-label":y(`header.goalSettingsDescription`),className:`personal-goal-tools-trigger`,onClick:()=>x(e=>!e),ref:S,title:y(`header.goalSettingsDescription`),type:`button`,children:[(0,B.jsx)(Zm,{"aria-hidden":!0,size:16}),(0,B.jsx)(`span`,{children:y(`header.goalSettings`)}),(0,B.jsx)(om,{"aria-hidden":!0,size:13})]}),b?(0,B.jsxs)(`fieldset`,{"aria-label":y(`header.goalSettings`),className:`personal-goal-tools-menu`,children:[(0,B.jsxs)(`button`,{onClick:()=>w(o),type:`button`,children:[(0,B.jsx)(wm,{"aria-hidden":!0,size:17}),(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:y(`header.goalDetails`)})})]}),(0,B.jsxs)(`button`,{onClick:()=>w(a),type:`button`,children:[(0,B.jsx)(Zm,{"aria-hidden":!0,size:17}),(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:y(`header.goalCapabilities`)})})]})]}):null]}):null,m?(0,B.jsxs)(`span`,{className:`personal-read-only-source`,title:y(`header.readOnlySourceDescription`,{source:m}),children:[(0,B.jsx)(vm,{size:15}),m,(0,B.jsx)(`small`,{children:y(`common.readOnly`)})]}):(0,B.jsx)(Yy,{ariaLabel:y(`header.selectChatRuntime`),className:`personal-agent-select`,icon:(0,B.jsx)(nm,{size:16}),onChange:d,options:e.map(e=>({disabled:!e.available,label:`${e.label}${e.available?``:` · ${y(`header.agentUnavailable`)}`}`,value:e.agentId})),prefixLabel:y(`header.chatRuntime`),value:h}),(0,B.jsxs)(`span`,{className:`personal-live-indicator`,children:[(0,B.jsx)(`i`,{}),y(`header.live`)]}),c?(0,B.jsxs)(`span`,{className:`personal-refresh-control is-${p??`idle`}`,children:[p===`loading`?(0,B.jsx)(`small`,{children:y(`header.refreshing`)}):p===`done`?(0,B.jsx)(`small`,{children:y(`header.refreshDone`)}):p===`error`?(0,B.jsx)(`small`,{children:y(`header.refreshFailed`)}):null,(0,B.jsx)(`button`,{"aria-label":y(p===`loading`?`header.refreshing`:`header.refresh`),className:`personal-icon-button`,disabled:p===`loading`,onClick:c,type:`button`,children:(0,B.jsx)(Hm,{className:p===`loading`?`is-spinning`:void 0,size:17})})]}):null]})]})}function Zy({attention:e,onSelect:t}){let{t:n}=Ji(),r=Zi(e.updatedAt,n);return(0,B.jsxs)(`button`,{className:`personal-timeline-row personal-attention-row`,"data-testid":`personal-browse-row`,onClick:t,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-row-icon is-attention`,children:(0,B.jsx)(lm,{size:18})}),(0,B.jsxs)(`span`,{className:`personal-row-copy`,children:[(0,B.jsxs)(`small`,{children:[e.goalTitle??e.goalId,` · `,n(`home.lane.needsYou`),r?` · ${n(`tasks.waitingAge`,{age:r})}`:``]}),(0,B.jsx)(`strong`,{children:e.text})]}),(0,B.jsx)(`span`,{className:`personal-priority-dot is-${e.priority??(e.blocking?`high`:`medium`)}`}),(0,B.jsx)(`span`,{className:`personal-row-status ${e.blocking?`is-blocking`:`is-pending`}`,children:e.blocking?n(`tasks.blocked`):n(`tasks.pending`)}),(0,B.jsx)(sm,{size:17})]})}var Qy=/(`[^`\n]+`)|(\*\*[^*\n]+(\*[^*\n]*)?\*\*)|(\[[^\]\n]{1,120}\]\(https?:\/\/[^)\s]+\))/g;function $y(e,t){let n=[],r=0,i=0;for(let a of e.matchAll(Qy)){let o=a.index??0;o>r&&n.push(e.slice(r,o));let s=a[0],c=`${t}-i${i++}`;if(s.startsWith("`"))n.push((0,B.jsx)(`code`,{className:`personal-md-code`,children:s.slice(1,-1)},c));else if(s.startsWith(`**`))n.push((0,B.jsx)(`strong`,{children:s.slice(2,-2)},c));else{let e=s.indexOf(`](`),t=s.slice(1,e),r=s.slice(e+2,-1);n.push((0,B.jsx)(`a`,{className:`personal-md-link`,href:r,rel:`noreferrer`,target:`_blank`,children:t},c))}r=o+s.length}return r=4))throw e;await new Promise(e=>globalThis.setTimeout(e,250*2**(i-1)))}}if(!a)throw new Fh(`Agent 事件流连接已断开。`,{reconnect_attempts:i})}async function rg(e,t){return Kh(`/api/chat/sessions/${e}/turns/${t}/interrupt`,{method:`POST`,body:`{}`})}async function ig(e,t,n={}){let r=await eg(e,t,n.clientTurnId??crypto.randomUUID(),n.attachments);return n.onPhase?.(`turn.accepted`,r.turn_id),ag(e,r.turn_id,r.events_url,n)}async function ag(e,t,n,r={}){let i=null,a={failure:null,interrupted:null};try{await ng(n,e=>{r.onPhase?.(e.kind,t),(e.kind===`answer.delta`||e.kind===`assistant.delta`)&&r.onDelta?.(String(e.payload.text??``)),e.kind===`agent.phase`&&r.onActivity?.(String(e.payload.label??`Agent 正在处理`)),e.kind===`turn.completed`&&(i=e.payload.response),e.kind===`turn.failed`&&(a.failure=e.payload),e.kind===`turn.interrupted`&&(a.interrupted=e.payload)},r.signal)}catch(i){throw i instanceof Fh&&!r.signal?.aborted?new Fh(i.message,{...i.payload,events_url:n,reconnectable:!0,session_id:e,turn_id:t}):i}if(a.failure)throw new Fh(String(a.failure.message||`Agent 回合失败。`),a.failure);if(a.interrupted)throw new Fh(`Agent 回合已中断。`,{...a.interrupted,error_code:`turn_interrupted`,session_id:e,turn_id:t});return{response:kh.parse(i),sessionId:e,turnId:t}}async function og(e,t,n={}){return ag(e,t,`/api/chat/sessions/${e}/turns/${t}/events`,n)}async function sg(e){let t=Ah.parse(await Kh(`/api/chat/sessions/${e}`,{keepalive:!0,method:`DELETE`}));if(t.session_id!==e)throw new Fh(`Agent 会话关闭回执与本次请求不一致。`,{session_id:t.session_id});return t}async function cg(e){return Kh(`/api/chat/sessions/${e}/resume`,{method:`POST`,body:`{}`})}function lg(e){return{goal_id:e.goalId,enabled:e.enabled,...e.modelConfig===void 0?{}:{model_config:e.modelConfig},...e.enabled?{max_children:e.maxChildren,allowed_domains:e.allowedDomains}:{}}}function ug(e,t){let n=e.after.orchestration,r=[...new Set(t.allowedDomains)],i=e.feature_summary.multi_subagent===`enabled`;if(!(e.goal_id===t.goalId&&i===t.enabled&&(t.modelConfig===void 0||JSON.stringify(n.model_config??null)===JSON.stringify(t.modelConfig))&&(t.enabled?n.max_children===t.maxChildren&&JSON.stringify(n.allowed_domains)===JSON.stringify(r):n.spawn_allowed===!1&&n.max_children===0)))throw new Fh(`Goal 子代理配置回执与本次请求不一致,界面已停止更新。`,{after:e.after,goal_id:e.goal_id});return e}async function dg(e){let t=Nh.parse(await Kh(`/api/chat/goal-subagents/dry-run`,{method:`POST`,body:JSON.stringify(lg(e))}));if(!t.dry_run||t.execute||t.written)throw new Fh(`Goal 子代理预览返回了非预览回执,已停止进入确认状态。`,{result:t});return ug(t,e)}async function fg(e,t){let n=Nh.parse(await Kh(`/api/chat/goal-subagents/apply`,{method:`POST`,body:JSON.stringify({...lg(e),preview_id:t})}));if(n.preview_id!==t||n.dry_run||!n.execute)throw new Fh(`Goal 子代理写入回执与本次确认不一致,界面已停止更新。`,{result:n});if(n.changed&&(!n.written||!n.global_sync.executed||!n.global_sync.readback.verified))throw new Fh(`Goal 子代理设置未通过共享状态读回验证。`,{result:n});return ug(n,e)}var pg=J({ok:X(!0),targets:q(J({enabled:K(),provider:W(),target_name:W()}))});async function mg(){return pg.parse(await Kh(`/api/chat/goal-channel/targets`)).targets}var hg=J({ok:K(),blocker:W().optional(),public_summary:W().optional(),status:W().optional()});async function gg(e){return hg.parse(await Kh(`/api/chat/goal-channel/setup`,{method:`POST`,body:JSON.stringify({execute:e.execute,goal_id:e.goalId,target:e.target})}))}async function _g(e){return hg.parse(await Kh(`/api/chat/goal-channel/configure`,{method:`POST`,body:JSON.stringify({auto_notify_human_gates:e.autoNotify,goal_id:e.goalId})}))}var vg=J({schema_version:X(`periodic_report_schedule_v0`),schedule_id:W(),rrule:W(),timezone:W()});J({schema_version:X(`periodic_report_machine_defaults_v0`),enabled:K(),inheritance:X(`live_machine_default`),profile_preset:W().optional(),route_ref:W().optional(),timezone:W(),schedule:vg.nullable().optional()});var yg=J({schema_version:X(`loopx_machine_configuration_v0`),namespaces:yd(W(),yd(W(),ad()))}),bg=J({namespace:W(),title:W(),description:W(),schema_versions:q(W()).min(1),configuration_template:yd(W(),ad()),template_status:Y([`ready`,`schema_only`])}),xg=J({schema_version:X(`machine_configuration_catalog_v0`),namespaces:q(bg)}),Sg=J({key:W(),label:W(),description:W(),input_kind:Y([`boolean`,`number`,`select`,`string_list`,`text`,`periodic_report_schedule`]),nullable:K().optional(),required:K(),minimum:G().int().optional(),maximum:G().int().optional(),options:q(W()).optional()}),Cg=J({schema_version:X(`capability_configuration_editor_v0`),editable:K(),supported_scopes:q(Y([`goal`,`machine`])),writable_scopes:q(Y([`goal`,`machine`])),fields:q(Sg),read_only_reason:W().optional()}),wg=J({schema_version:X(`capability_configuration_catalog_v0`),capabilities:q(J({capability_id:W(),display_name:W(),description:W(),available_scopes:q(Y([`goal`,`machine`])),machine_namespace:W().optional(),goal_feature_id:W().optional(),effective_value_policy:X(`goal_override_over_live_machine_default`).optional(),availability:W().optional(),default:yd(W(),ad()).optional(),current:yd(W(),ad()).optional(),machine_current:yd(W(),ad()).optional(),effective_configuration:J({schema_version:X(`capability_configuration_resolution_v0`),capability_id:W(),source:Y([`goal_override`,`machine_default`,`capability_default`,`not_configured`]),configuration:yd(W(),ad()).nullable(),inherited:K(),goal_override_present:K(),machine_default_present:K(),effective_revision:W()}).optional(),documentation:yd(W(),ad()).optional(),context_contribution:J({supported_phases:q(Y([`before_plan`,`before_delegate`,`after_delegate_result`])),target:X(`coordinator`),activation:X(`with_capability`),receipt_required:X(!0)}).optional(),configuration_editor:Cg}))}),Tg=J({ok:X(!0),schema_version:X(`goal_configuration_inspection_v0`),status:X(`configured`),goal_id:W(),revision:W(),available_capabilities:q(W()),capability_catalog:wg}),Eg=J({ok:X(!0),goal_id:W(),capability_id:W(),changed_fields:q(W()),goal_configuration:yd(W(),ad()).nullable(),capability_catalog:wg}),Dg=Eg.extend({schema_version:X(`goal_configuration_update_plan_v0`),status:X(`preview`),action:Y([`create`,`update`,`delete`,`unchanged`]),current_revision:W(),desired_revision:W(),base_revision:W(),plan_revision:W(),writes_required:G().int().nonnegative()}),Og=dd([Eg.extend({schema_version:X(`goal_configuration_transaction_v0`),status:Y([`applied`,`unchanged`]),plan_revision:W(),applied_revision:W(),readback_verified:X(!0)}),J({ok:X(!1),schema_version:X(`goal_configuration_transaction_v0`),status:X(`partial_write`),goal_id:W(),capability_id:W(),plan_revision:W(),applied_revision:W().nullable(),source_written:X(!0),shared_sync_pending:X(!0),readback_verified:K(),changed_fields:q(W()),goal_configuration:yd(W(),ad()).nullable(),capability_catalog:wg,error:W(),recommended_action:W()})]),kg=J({ok:X(!0),available_namespaces:q(W()),namespace_catalog:xg.optional().default({schema_version:`machine_configuration_catalog_v0`,namespaces:[]}),capability_catalog:wg,changed_namespaces:q(W()).optional().default([]),invalid_namespaces:q(W()).optional().default([]),machine_configuration:yg.nullable().optional()}),Ag=kg.extend({schema_version:X(`machine_configuration_inspection_v0`),status:Y([`configured`,`absent`,`invalid`]),revision:W()}),jg=kg.extend({schema_version:X(`machine_configuration_update_plan_v0`),status:X(`preview`),action:Y([`create`,`update`,`delete`,`unchanged`]),current_revision:W(),desired_revision:W(),plan_revision:W(),writes_required:G().int().nonnegative(),machine_configuration:yg.nullable()}),Mg=kg.extend({schema_version:X(`machine_configuration_transaction_v0`),status:Y([`applied`,`unchanged`]),plan_revision:W(),transaction_id:W().nullable(),readback_verified:X(!0),rollback_available:K(),applied_revision:W().optional(),prior_revision:W().optional()}),Ng=kg.extend({schema_version:X(`machine_configuration_rollback_plan_v0`),status:X(`preview`),action:Y([`delete`,`restore`,`unchanged`,`blocked`]),reason:W(),transaction_id:W(),plan_revision:W(),rollback_allowed:K(),writes_required:G().int().nonnegative()}),Pg=kg.extend({schema_version:X(`machine_configuration_rollback_receipt_v0`),status:Y([`rolled_back`,`unchanged`]),transaction_id:W(),plan_revision:W(),rollback_id:W().nullable(),readback_verified:X(!0)}),Fg=J({configured:K(),source:Y([`machine_store`,`service_environment`,`unset`]),env_var:W().optional(),fingerprint:W().nullable().optional(),value:W().nullable().optional(),blocked_by:W().optional()}),Ig=J({ok:X(!0),schema_version:X(`operator_provider_credential_projection_v0`),action:W().optional(),store_ref:W(),store_revision:W(),record_present:K(),status:Y([`configured`,`absent`,`invalid`]),repair:W(),provider_key:Fg,base_url:Fg});async function Lg(){return Ig.parse(await Kh(`/api/chat/operator-credential`))}async function Rg(e){return Ig.parse(await Kh(`/api/chat/operator-credential`,{method:`POST`,body:JSON.stringify(e)}))}async function zg(){return Ag.parse(await Kh(`/api/chat/machine-configuration`))}async function Bg(e){let t=new URLSearchParams({goal_id:e});return Tg.parse(await Kh(`/api/chat/goal-configuration?${t.toString()}`))}async function Vg(e,t,n){return Dg.parse(await Kh(`/api/chat/goal-configuration/preview`,{method:`POST`,body:JSON.stringify({goal_id:e,capability_id:t,configuration:n})}))}async function Hg(e,t,n,r){return Og.parse(await Kh(`/api/chat/goal-configuration/apply`,{method:`POST`,body:JSON.stringify({goal_id:e,capability_id:t,configuration:n,expected_plan_revision:r})}))}async function Ug(e,t){return jg.parse(await Kh(`/api/chat/machine-configuration/preview`,{method:`POST`,body:JSON.stringify({namespace:e,namespace_configuration:t})}))}async function Wg(e,t,n){return Mg.parse(await Kh(`/api/chat/machine-configuration/apply`,{method:`POST`,body:JSON.stringify({expected_plan_revision:n,namespace:e,namespace_configuration:t})}))}async function Gg(e){return jg.parse(await Kh(`/api/chat/machine-configuration/preview`,{method:`POST`,body:JSON.stringify({namespace:e,operation:`remove`})}))}async function Kg(e,t){return Mg.parse(await Kh(`/api/chat/machine-configuration/apply`,{method:`POST`,body:JSON.stringify({expected_plan_revision:t,namespace:e,operation:`remove`})}))}async function qg(e){return Ng.parse(await Kh(`/api/chat/machine-configuration/rollback`,{method:`POST`,body:JSON.stringify({execute:!1,transaction_id:e})}))}async function Jg(e,t){return Pg.parse(await Kh(`/api/chat/machine-configuration/rollback`,{method:`POST`,body:JSON.stringify({execute:!0,expected_plan_revision:t,transaction_id:e})}))}var Yg=J({ok:X(!0),goals:q(J({goal_id:W(),repository:J({branch:W(),identity:W(),label:W(),read_only:X(!0)})}))});async function Xg(){return Yg.parse(await Kh(`/api/chat/goals/contexts`)).goals}var Zg=J({ok:X(!0),apps:q(J({active:K(),app_ref:W(),brand:W(),health_error_code:W().nullable().default(null),label:W(),ready:K(),reply_ready:K().default(!1)}))});async function Qg(){return Zg.parse(await Kh(`/api/chat/lark/apps`)).apps}var $g=J({ok:X(!0),app_ref:W(),error:W().nullable(),setup_id:W(),status:Y([`starting`,`waiting_for_feishu`,`ready`,`failed`,`cancelled`]),verification_url:W().url().nullable()});async function e_(e){return $g.parse(await Kh(`/api/chat/lark/app-setups`,{method:`POST`,body:JSON.stringify({app_ref:e.appRef,brand:e.brand})}))}async function t_(e){return $g.parse(await Kh(`/api/chat/lark/app-setups/${encodeURIComponent(e)}`))}async function n_(e){return $g.parse(await Kh(`/api/chat/lark/app-setups/${encodeURIComponent(e)}`,{method:`DELETE`}))}var r_=[`invalid_event`,`binding_unavailable`,`chat_mismatch`,`topic_mismatch`,`route_ambiguous`,`self_message`,`invalid_routing_state`,`not_addressed`],i_=J({ok:X(!0),chats:q(J({chat_id:W(),chat_name:W()}))});async function a_(e,t){let n=new URLSearchParams({app_ref:e});return t&&n.set(`query`,t),i_.parse(await Kh(`/api/chat/lark/chats?${n.toString()}`)).chats}var o_=J({ok:X(!0),connections:q(J({conversation_kind:Y([`goal`,`manager`]).default(`goal`),agent_id:W().nullable().default(null),connection_id:W(),app_label:W(),app_ref:W(),capture_scope:Y([`addressed_only`,`configured_chat_all`]).default(`addressed_only`),chat_name:W(),enabled:K(),goal_id:W(),goal_title:W(),health_error_code:W().nullable().default(null),history_permission_guidance:J({action:X(`enable_application_scopes_and_publish`),api_document_url:W().url(),capability:X(`group_history_pagination`),identity:X(`bot`),required_scopes:_d([X(`im:message.group_msg`),X(`im:message.group_msg.include_bot:read`)]),schema_version:X(`lark_bot_group_history_permission_guidance_v0`)}).nullable().default(null),incoming_mode:Y([`mentions`,`all`]),ingress_mode:Y([`live_steering`,`session_queue`,`async_inbox`,`direct_session`]).default(`async_inbox`),event_count:G().int().nonnegative().default(0),last_event_reason:Y(r_).nullable().default(null).catch(null),last_event_status:W().nullable().default(null),listener_error_code:W().nullable().default(null),listener_status:Y([`starting`,`listening`,`retrying`,`stopped`]).nullable().default(null),replied_count:G().int().nonnegative().default(0),reply_ready:K().default(!1),reply_mode:X(`topic_reply`),session_bound:K().default(!1),target_ref:W(),topic_name:W(),topic_setup_required:K()}))});async function s_(){return o_.parse(await Kh(`/api/chat/lark/connections`)).connections}async function c_(e){return hg.parse(await Kh(`/api/chat/lark/connections`,{method:`POST`,body:JSON.stringify({...e.agentBindings?{agent_bindings:e.agentBindings.map(e=>({agent_id:e.agentId,app_ref:e.appRef}))}:{},...e.agentId?{agent_id:e.agentId}:{},...e.appRef?{app_ref:e.appRef}:{},...e.connectionId?{connection_id:e.connectionId}:{},conversation_kind:e.conversationKind??`goal`,capture_scope:e.captureScope,chat_id:e.chatId,chat_name:e.chatName,execute:e.execute,goal_id:e.goalId,incoming_mode:e.incomingMode,ingress_mode:e.ingressMode,reply_mode:e.replyMode})}))}async function l_(e,t){let n=new URLSearchParams({goal_id:e,connection_id:t});return hg.parse(await Kh(`/api/chat/lark/connections?${n.toString()}`,{method:`DELETE`}))}function u_(e){return{loadedUrl:null,projectionRevision:0,requestedUrl:e,selectionRevision:0,requestGeneration:0}}function d_(e,t){return e.selectionRevision+=1,e.requestedUrl=t,e.selectionRevision}function f_(e,t,n){if(n.background)return e.requestedUrl!==null||e.loadedUrl!==t?null:(e.requestGeneration+=1,{background:!0,projectionRevision:e.projectionRevision,selectionRevision:e.selectionRevision,url:t,generation:e.requestGeneration});let r=n.selectionRevision??e.selectionRevision+1;return n.selectionRevision!==void 0&&e.selectionRevision!==r?null:(e.selectionRevision=r,e.projectionRevision+=1,e.requestedUrl=t,e.requestGeneration+=1,{background:!1,projectionRevision:e.projectionRevision,selectionRevision:r,url:t,generation:e.requestGeneration})}function p_(e,t){return t.generation===e.requestGeneration&&e.projectionRevision===t.projectionRevision&&e.selectionRevision===t.selectionRevision}function m_(e,t){return p_(e,t)&&(!t.background||e.requestedUrl===null&&e.loadedUrl===t.url)}function h_(e,t,n){return t.get(e)===n}function g_(e,t,n,r){return e.filter(e=>h_(r(e),n,t))}function __(e,t,n){let r=new Set,i=[];for(let a of[...e,...t]){let e=n(a);e==null||r.has(e)||(r.add(e),i.push(a))}return i}var v_=[`runs_24h`,`runs_7d`,`quota_spend_slots_24h`,`quota_spend_slots_7d`,`automation_run_count_24h`,`automation_run_count_7d`,`progress_signal_run_count_24h`,`progress_signal_run_count_7d`],y_=[`input_tokens_24h`,`input_tokens_7d`,`output_tokens_24h`,`output_tokens_7d`,`cache_tokens_24h`,`cache_tokens_7d`,`cost_usd_24h`,`cost_usd_7d`,`duration_ms_24h`,`duration_ms_7d`],b_=[`accounting`,`decision`,`evidence`,`state`,`work`],x_={accounting:0,decision:0,evidence:0,state:0,work:0},S_={runs_24h:0,runs_7d:0,quota_spend_slots_24h:0,quota_spend_slots_7d:0,automation_run_count_24h:0,automation_run_count_7d:0,progress_signal_run_count_24h:0,progress_signal_run_count_7d:0};function C_(e,t){let n={...e};for(let r of v_)n[r]=(Number(e[r])||0)+(Number(t[r])||0);for(let r of y_)(e[r]!==void 0||t[r]!==void 0)&&(n[r]=(e[r]??0)+(t[r]??0));return n}function w_(e,t){return!e.length||t<=0?e:e.map(e=>({...e,project_share_24h:Math.round((Number(e.runs_24h)||0)/t*1e3)/1e3}))}function T_(e,t){let n={...e};for(let r of b_)n[r]=(e[r]??0)+(t[r]??0);return n}function E_(e){let t={events_24h:0,events_7d:0,by_class_24h:{...x_},by_class_7d:{...x_}};for(let n of e)t.events_24h+=n.events_24h,t.events_7d+=n.events_7d,t.by_class_24h=T_(t.by_class_24h,n.by_class_24h),t.by_class_7d=T_(t.by_class_7d,n.by_class_7d);return t}function D_(e,t,n){if(!e&&!t)return null;let r=g_(e?.goals??[],`active`,n,e=>e.goal_id),i=g_(t?.goals??[],`stopped`,n,e=>e.goal_id),a=__(r,i,e=>e.goal_id),o=E_(r),s=E_(i),c={events_24h:o.events_24h+s.events_24h,events_7d:o.events_7d+s.events_7d,by_class_24h:T_(o.by_class_24h,s.by_class_24h),by_class_7d:T_(o.by_class_7d,s.by_class_7d)};return{...e??t,goals:a,sample_run_count:(e?.sample_run_count??0)+(t?.sample_run_count??0),totals:c}}function O_(e,t,n){if(!e&&!t)return null;let r=__([...g_(e?.items??[],`active`,n,e=>e.goal_id),...g_(t?.items??[],`stopped`,n,e=>e.goal_id)],[],e=>`${e.goal_id}:${e.decision_kind??``}:${e.decision_at??``}`),i={decision_count:(e?.summary.decision_count??0)+(t?.summary.decision_count??0),stale_count:r.filter(e=>e.stale_by_age).length,rebase_required_count:(e?.summary.rebase_required_count??0)+(t?.summary.rebase_required_count??0),fresh_count:(e?.summary.fresh_count??0)+(t?.summary.fresh_count??0)};return{...e??t,items:r,sample_run_count:(e?.sample_run_count??0)+(t?.sample_run_count??0),summary:i}}function k_(e,t){return __([...e,...t].sort((e,t)=>t.generated_at.localeCompare(e.generated_at)),[],e=>`${e.goal_id}:${e.generated_at}:${e.classification??``}`)}function A_(e,t,n){let r=__(g_(e.items,`active`,n,e=>e.goal_id),g_(t.items,`stopped`,n,e=>e.goal_id),e=>e.goal_id);return{...e,item_count:r.length,items:r,needs_controller:r.filter(e=>e.waiting_on===`controller`).length,needs_codex:r.filter(e=>e.waiting_on===`codex`).length,needs_user_or_controller:r.filter(e=>[`user_or_controller`,`controller`].includes(e.waiting_on)).length,watching_external_evidence:r.filter(e=>e.waiting_on===`external_evidence`).length}}function j_(e){let t=e.todo_id?.trim()||``;return t?`${e.goal_id}:${t}`:`${e.goal_id}:synthetic:${e.role??``}:${e.index??``}:${e.text??``}`}function M_(e){let t={...S_};for(let n of e){for(let e of v_)t[e]+=Number(n[e])||0;for(let e of y_)n[e]!==void 0&&(t[e]=(t[e]??0)+n[e])}return t}function N_(e,t,n){if(!e&&!t)return null;let r=g_(e?.items??[],`active`,n,e=>e.goal_id),i=g_(t?.items??[],`stopped`,n,e=>e.goal_id),a=__(r,i,j_);return{...e??t,current_projected_count:r.length+i.length,items:a,rollout_event_count:a.reduce((e,t)=>e+(t.event_count??0),0),total_count:a.length}}function P_(e,t,n){if(!e&&!t)return null;let r=g_(e?.goals??[],`active`,n,e=>e.goal_id),i=g_(t?.goals??[],`stopped`,n,e=>e.goal_id),a=__(r,i,e=>e.goal_id),o=C_(M_(r),M_(i));return{...e??t,goals:w_(a,Number(o.runs_24h)||0),sample_run_count:(e?.sample_run_count??0)+(t?.sample_run_count??0),totals:o}}function F_(e,t,n){if(!e&&!t)return null;let r=(e?.agents??[]).filter(e=>e.goal_ids.some(e=>h_(e,n,`active`))||(e.current_todo?.goal_id?h_(e.current_todo.goal_id,n,`active`):!1)),i=(t?.agents??[]).filter(e=>e.goal_ids.some(e=>h_(e,n,`stopped`))||(e.current_todo?.goal_id?h_(e.current_todo.goal_id,n,`stopped`):!1)),a=__(r,i,e=>e.agent_id).map(e=>{let t=i.find(t=>t.agent_id===e.agent_id);return t?{...e,goal_ids:Array.from(new Set([...e.goal_ids??[],...t.goal_ids]))}:e});return{...e??t,agents:a,source_summary:(e??t)?.source_summary?{...(e??t).source_summary,projected_agent_count:a.length,registered_agent_count:new Set(a.map(e=>e.agent_id)).size}:(e??t)?.source_summary}}function I_(e,t,n){if(!e&&!t)return null;let r=__(g_(e?.goals??[],`active`,n,e=>e.goal_id),g_(t?.goals??[],`stopped`,n,e=>e.goal_id),e=>e.goal_id);return{...e??t,goals:r}}function L_(e,t){let n=t.goal_projection?.scope;if(n!==`active`&&n!==`stopped`)return t;let r=n,i=t.run_history.goals,a=e.run_history.goals,o=__(r===`active`?i:a.filter(e=>e.activation_state!==`stopped`),r===`stopped`?i:a.filter(e=>e.activation_state===`stopped`),e=>e.id),s=new Map(o.map(e=>[e.id,e.activation_state])),c=r===`active`?t:e,l=r===`stopped`?t:e,u=e.goal_projection?.registry_revision??null,d=t.goal_projection?.registry_revision??null,f=u===null||d===null||u===d;return{...e,agent_management_projection:F_(c.agent_management_projection,l.agent_management_projection,s),attention_queue:A_(c.attention_queue,l.attention_queue,s),decision_freshness_summary:O_(c.decision_freshness_summary,l.decision_freshness_summary,s),event_ledger_summary:D_(c.event_ledger_summary,l.event_ledger_summary,s),goal_channel_notification_projection:I_(c.goal_channel_notification_projection,l.goal_channel_notification_projection,s),goal_projection:{schema_version:`loopx_goal_projection_scope_v0`,...t.goal_projection,complete:f,projected_goal_count:o.length,registry_goal_count:t.goal_projection?.registry_goal_count??0,scope:`all`},run_history:{...e.run_history,goal_count:o.length,goals:o,recent_runs:k_(c.run_history.recent_runs,l.run_history.recent_runs),run_count:c.run_history.run_count+l.run_history.run_count},todo_index:N_(c.todo_index,l.todo_index,s),usage_summary:P_(c.usage_summary,l.usage_summary,s)}}function R_(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`){if(Array.isArray(e)){var i=e.length;for(t=0;ttypeof e==`boolean`?`${e}`:e===0?`0`:e,V_=z_,H_=(e,t)=>n=>{if(t?.variants==null)return V_(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=B_(t)||B_(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return V_(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},U_=(e,t)=>{let n=Array(e.length+t.length);for(let t=0;t({classGroupId:e,validator:t}),G_=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),K_=`-`,q_=[],J_=`arbitrary..`,Y_=e=>{let t=Q_(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{if(e.startsWith(`[`)&&e.endsWith(`]`))return Z_(e);let n=e.split(K_);return X_(n,+(n[0]===``&&n.length>1),t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=r[e],i=n[e];return t?i?U_(i,t):t:i||q_}return n[e]||q_}}},X_=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;let r=e[t],i=n.nextPart.get(r);if(i){let n=X_(e,t+1,i);if(n)return n}let a=n.validators;if(a===null)return;let o=t===0?e.join(K_):e.slice(t).join(K_),s=a.length;for(let e=0;ee.slice(1,-1).indexOf(`:`)===-1?void 0:(()=>{let t=e.slice(1,-1),n=t.indexOf(`:`),r=t.slice(0,n);return r?J_+r:void 0})(),Q_=e=>{let{theme:t,classGroups:n}=e;return $_(n,t)},$_=(e,t)=>{let n=G_();for(let r in e){let i=e[r];ev(i,n,r,t)}return n},ev=(e,t,n,r)=>{let i=e.length;for(let a=0;a{if(typeof e==`string`){nv(e,t,n);return}if(typeof e==`function`){rv(e,t,n,r);return}iv(e,t,n,r)},nv=(e,t,n)=>{let r=e===``?t:av(t,e);r.classGroupId=n},rv=(e,t,n,r)=>{if(ov(e)){ev(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(W_(n,e))},iv=(e,t,n,r)=>{let i=Object.entries(e),a=i.length;for(let e=0;e{let n=e,r=t.split(K_),i=r.length;for(let e=0;e`isThemeGetter`in e&&e.isThemeGetter===!0,sv=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null),i=(i,a)=>{n[i]=a,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(e){let t=n[e];if(t!==void 0)return t;if((t=r[e])!==void 0)return i(e,t),t},set(e,t){e in n?n[e]=t:i(e,t)}}},cv=`!`,lv=`:`,uv=[],dv=(e,t,n,r,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:i}),fv=e=>{let{prefix:t,experimentalParseClassName:n}=e,r=e=>{let t=[],n=0,r=0,i=0,a,o=e.length;for(let s=0;si?a-i:void 0;return dv(t,l,c,u)};if(t){let e=t+lv,n=r;r=t=>t.startsWith(e)?n(t.slice(e.length)):dv(uv,!1,t,void 0,!0)}if(n){let e=r;r=t=>n({className:t,parseClassName:e})}return r},pv=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((e,n)=>{t.set(e,1e6+n)}),e=>{let n=[],r=[];for(let i=0;i0&&(r.sort(),n.push(...r),r=[]),n.push(a)):r.push(a)}return r.length>0&&(r.sort(),n.push(...r)),n}},mv=e=>({cache:sv(e.cacheSize),parseClassName:fv(e),sortModifiers:pv(e),postfixLookupClassGroupIds:hv(e),...Y_(e)}),hv=e=>{let t=Object.create(null),n=e.postfixLookupClassGroups;if(n)for(let e=0;e{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i,sortModifiers:a,postfixLookupClassGroupIds:o}=t,s=[],c=e.trim().split(gv),l=``;for(let e=c.length-1;e>=0;--e){let t=c[e],{isExternal:u,modifiers:d,hasImportantModifier:f,baseClassName:p,maybePostfixModifierPosition:m}=n(t);if(u){l=t+(l.length>0?` `+l:l);continue}let h=!!m,g;if(h){g=r(p.substring(0,m));let e=g&&o[g]?r(p):void 0;e&&e!==g&&(g=e,h=!1)}else g=r(p);if(!g){if(!h){l=t+(l.length>0?` `+l:l);continue}if(g=r(p),!g){l=t+(l.length>0?` `+l:l);continue}h=!1}let _=d.length===0?``:d.length===1?d[0]:a(d).join(`:`),v=f?_+cv:_,y=v+g;if(s.indexOf(y)>-1)continue;s.push(y);let b=i(g,h);for(let e=0;e0?` `+l:l)}return l},vv=(...e)=>{let t=0,n,r,i=``;for(;t{if(typeof e==`string`)return e;let t,n=``;for(let r=0;r{let n,r,i,a,o=o=>(n=mv(t.reduce((e,t)=>t(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)),s=e=>{let t=r(e);if(t)return t;let a=_v(e,n);return i(e,a),a};return a=o,(...e)=>a(vv(...e))},xv=[],Sv=e=>{let t=t=>t[e]||xv;return t.isThemeGetter=!0,t},Cv=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,wv=/^\((?:(\w[\w-]*):)?(.+)\)$/i,Tv=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,Ev=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Dv=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Ov=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,kv=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Av=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,jv=e=>Tv.test(e),Mv=e=>!!e&&!Number.isNaN(Number(e)),Nv=e=>!!e&&Number.isInteger(Number(e)),Pv=e=>e.endsWith(`%`)&&Mv(e.slice(0,-1)),Fv=e=>Ev.test(e),Iv=()=>!0,Lv=e=>Dv.test(e)&&!Ov.test(e),Rv=()=>!1,zv=e=>kv.test(e),Bv=e=>Av.test(e),Vv=e=>!Q(e)&&!$(e),Hv=e=>e.startsWith(`@container`)&&(e[10]===`/`&&e[11]!==void 0||e[11]===`s`&&e[16]!==void 0&&e.startsWith(`-size/`,10)||e[11]===`n`&&e[18]!==void 0&&e.startsWith(`-normal/`,10)),Uv=e=>iy(e,cy,Rv),Q=e=>Cv.test(e),Wv=e=>iy(e,ly,Lv),Gv=e=>iy(e,uy,Mv),Kv=e=>iy(e,fy,Iv),qv=e=>iy(e,dy,Rv),Jv=e=>iy(e,oy,Rv),Yv=e=>iy(e,sy,Bv),Xv=e=>iy(e,py,zv),$=e=>wv.test(e),Zv=e=>ay(e,ly),Qv=e=>ay(e,dy),$v=e=>ay(e,oy),ey=e=>ay(e,cy),ty=e=>ay(e,sy),ny=e=>ay(e,py,!0),ry=e=>ay(e,fy,!0),iy=(e,t,n)=>{let r=Cv.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},ay=(e,t,n=!1)=>{let r=wv.exec(e);return r?r[1]?t(r[1]):n:!1},oy=e=>e===`position`||e===`percentage`,sy=e=>e===`image`||e===`url`,cy=e=>e===`length`||e===`size`||e===`bg-size`,ly=e=>e===`length`,uy=e=>e===`number`,dy=e=>e===`family-name`,fy=e=>e===`number`||e===`weight`,py=e=>e===`shadow`,my=bv(()=>{let e=Sv(`color`),t=Sv(`font`),n=Sv(`text`),r=Sv(`font-weight`),i=Sv(`tracking`),a=Sv(`leading`),o=Sv(`breakpoint`),s=Sv(`container`),c=Sv(`spacing`),l=Sv(`radius`),u=Sv(`shadow`),d=Sv(`inset-shadow`),f=Sv(`text-shadow`),p=Sv(`drop-shadow`),m=Sv(`blur`),h=Sv(`perspective`),g=Sv(`aspect`),_=Sv(`ease`),v=Sv(`animate`),y=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],b=()=>[`center`,`top`,`bottom`,`left`,`right`,`top-left`,`left-top`,`top-right`,`right-top`,`bottom-right`,`right-bottom`,`bottom-left`,`left-bottom`],x=()=>[...b(),$,Q],S=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],C=()=>[`auto`,`contain`,`none`],w=()=>[$,Q,c],T=()=>[jv,`full`,`auto`,...w()],E=()=>[Nv,`none`,`subgrid`,$,Q],D=()=>[`auto`,{span:[`full`,Nv,$,Q]},Nv,$,Q],O=()=>[Nv,`auto`,$,Q],k=()=>[`auto`,`min`,`max`,`fr`,$,Q],ee=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`,`baseline`,`center-safe`,`end-safe`],te=()=>[`start`,`end`,`center`,`stretch`,`center-safe`,`end-safe`],A=()=>[`auto`,...w()],j=()=>[jv,`auto`,`full`,`dvw`,`dvh`,`lvw`,`lvh`,`svw`,`svh`,`min`,`max`,`fit`,...w()],M=()=>[jv,`screen`,`full`,`dvw`,`lvw`,`svw`,`min`,`max`,`fit`,...w()],ne=()=>[jv,`screen`,`full`,`lh`,`dvh`,`lvh`,`svh`,`min`,`max`,`fit`,...w()],N=()=>[e,$,Q],P=()=>[...b(),$v,Jv,{position:[$,Q]}],re=()=>[`no-repeat`,{repeat:[``,`x`,`y`,`space`,`round`]}],ie=()=>[`auto`,`cover`,`contain`,ey,Uv,{size:[$,Q]}],ae=()=>[Pv,Zv,Wv],F=()=>[``,`none`,`full`,l,$,Q],oe=()=>[``,Mv,Zv,Wv],I=()=>[`solid`,`dashed`,`dotted`,`double`],se=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],L=()=>[Mv,Pv,$v,Jv],ce=()=>[``,`none`,m,$,Q],le=()=>[`none`,Mv,$,Q],ue=()=>[`none`,Mv,$,Q],de=()=>[Mv,$,Q],fe=()=>[jv,`full`,...w()];return{cacheSize:500,theme:{animate:[`spin`,`ping`,`pulse`,`bounce`],aspect:[`video`],blur:[Fv],breakpoint:[Fv],color:[Iv],container:[Fv],"drop-shadow":[Fv],ease:[`in`,`out`,`in-out`],font:[Vv],"font-weight":[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`],"inset-shadow":[Fv],leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`],perspective:[`dramatic`,`near`,`normal`,`midrange`,`distant`,`none`],radius:[Fv],shadow:[Fv],spacing:[`px`,Mv],text:[Fv],"text-shadow":[Fv],tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`]},classGroups:{aspect:[{aspect:[`auto`,`square`,jv,Q,$,g]}],container:[`container`],"container-type":[{"@container":[``,`normal`,`size`,$,Q]}],"container-named":[Hv],columns:[{columns:[Mv,Q,$,s]}],"break-after":[{"break-after":y()}],"break-before":[{"break-before":y()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],sr:[`sr-only`,`not-sr-only`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:x()}],overflow:[{overflow:S()}],"overflow-x":[{"overflow-x":S()}],"overflow-y":[{"overflow-y":S()}],overscroll:[{overscroll:C()}],"overscroll-x":[{"overscroll-x":C()}],"overscroll-y":[{"overscroll-y":C()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:T()}],"inset-x":[{"inset-x":T()}],"inset-y":[{"inset-y":T()}],start:[{"inset-s":T(),start:T()}],end:[{"inset-e":T(),end:T()}],"inset-bs":[{"inset-bs":T()}],"inset-be":[{"inset-be":T()}],top:[{top:T()}],right:[{right:T()}],bottom:[{bottom:T()}],left:[{left:T()}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[Nv,`auto`,$,Q]}],basis:[{basis:[jv,`full`,`auto`,s,...w()]}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`nowrap`,`wrap`,`wrap-reverse`]}],flex:[{flex:[Mv,jv,`auto`,`initial`,`none`,Q]}],grow:[{grow:[``,Mv,$,Q]}],shrink:[{shrink:[``,Mv,$,Q]}],order:[{order:[Nv,`first`,`last`,`none`,$,Q]}],"grid-cols":[{"grid-cols":E()}],"col-start-end":[{col:D()}],"col-start":[{"col-start":O()}],"col-end":[{"col-end":O()}],"grid-rows":[{"grid-rows":E()}],"row-start-end":[{row:D()}],"row-start":[{"row-start":O()}],"row-end":[{"row-end":O()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":k()}],"auto-rows":[{"auto-rows":k()}],gap:[{gap:w()}],"gap-x":[{"gap-x":w()}],"gap-y":[{"gap-y":w()}],"justify-content":[{justify:[...ee(),`normal`]}],"justify-items":[{"justify-items":[...te(),`normal`]}],"justify-self":[{"justify-self":[`auto`,...te()]}],"align-content":[{content:[`normal`,...ee()]}],"align-items":[{items:[...te(),{baseline:[``,`last`]}]}],"align-self":[{self:[`auto`,...te(),{baseline:[``,`last`]}]}],"place-content":[{"place-content":ee()}],"place-items":[{"place-items":[...te(),`baseline`]}],"place-self":[{"place-self":[`auto`,...te()]}],p:[{p:w()}],px:[{px:w()}],py:[{py:w()}],ps:[{ps:w()}],pe:[{pe:w()}],pbs:[{pbs:w()}],pbe:[{pbe:w()}],pt:[{pt:w()}],pr:[{pr:w()}],pb:[{pb:w()}],pl:[{pl:w()}],m:[{m:A()}],mx:[{mx:A()}],my:[{my:A()}],ms:[{ms:A()}],me:[{me:A()}],mbs:[{mbs:A()}],mbe:[{mbe:A()}],mt:[{mt:A()}],mr:[{mr:A()}],mb:[{mb:A()}],ml:[{ml:A()}],"space-x":[{"space-x":w()}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":w()}],"space-y-reverse":[`space-y-reverse`],size:[{size:j()}],"inline-size":[{inline:[`auto`,...M()]}],"min-inline-size":[{"min-inline":[`auto`,...M()]}],"max-inline-size":[{"max-inline":[`none`,...M()]}],"block-size":[{block:[`auto`,...ne()]}],"min-block-size":[{"min-block":[`auto`,...ne()]}],"max-block-size":[{"max-block":[`none`,...ne()]}],w:[{w:[s,`screen`,...j()]}],"min-w":[{"min-w":[s,`screen`,`none`,...j()]}],"max-w":[{"max-w":[s,`screen`,`none`,`prose`,{screen:[o]},...j()]}],h:[{h:[`screen`,`lh`,...j()]}],"min-h":[{"min-h":[`screen`,`lh`,`none`,...j()]}],"max-h":[{"max-h":[`screen`,`lh`,...j()]}],"font-size":[{text:[`base`,n,Zv,Wv]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[r,ry,Kv]}],"font-stretch":[{"font-stretch":[`ultra-condensed`,`extra-condensed`,`condensed`,`semi-condensed`,`normal`,`semi-expanded`,`expanded`,`extra-expanded`,`ultra-expanded`,Pv,Q]}],"font-family":[{font:[Qv,qv,t]}],"font-features":[{"font-features":[Q]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[i,$,Q]}],"line-clamp":[{"line-clamp":[Mv,`none`,$,Gv]}],leading:[{leading:[a,...w()]}],"list-image":[{"list-image":[`none`,$,Q]}],"list-style-position":[{list:[`inside`,`outside`]}],"list-style-type":[{list:[`disc`,`decimal`,`none`,$,Q]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"placeholder-color":[{placeholder:N()}],"text-color":[{text:N()}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...I(),`wavy`]}],"text-decoration-thickness":[{decoration:[Mv,`from-font`,`auto`,$,Wv]}],"text-decoration-color":[{decoration:N()}],"underline-offset":[{"underline-offset":[Mv,`auto`,$,Q]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:w()}],"tab-size":[{tab:[Nv,$,Q]}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,$,Q]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],wrap:[{wrap:[`break-word`,`anywhere`,`normal`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,$,Q]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:P()}],"bg-repeat":[{bg:re()}],"bg-size":[{bg:ie()}],"bg-image":[{bg:[`none`,{linear:[{to:[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},Nv,$,Q],radial:[``,$,Q],conic:[Nv,$,Q]},ty,Yv]}],"bg-color":[{bg:N()}],"gradient-from-pos":[{from:ae()}],"gradient-via-pos":[{via:ae()}],"gradient-to-pos":[{to:ae()}],"gradient-from":[{from:N()}],"gradient-via":[{via:N()}],"gradient-to":[{to:N()}],rounded:[{rounded:F()}],"rounded-s":[{"rounded-s":F()}],"rounded-e":[{"rounded-e":F()}],"rounded-t":[{"rounded-t":F()}],"rounded-r":[{"rounded-r":F()}],"rounded-b":[{"rounded-b":F()}],"rounded-l":[{"rounded-l":F()}],"rounded-ss":[{"rounded-ss":F()}],"rounded-se":[{"rounded-se":F()}],"rounded-ee":[{"rounded-ee":F()}],"rounded-es":[{"rounded-es":F()}],"rounded-tl":[{"rounded-tl":F()}],"rounded-tr":[{"rounded-tr":F()}],"rounded-br":[{"rounded-br":F()}],"rounded-bl":[{"rounded-bl":F()}],"border-w":[{border:oe()}],"border-w-x":[{"border-x":oe()}],"border-w-y":[{"border-y":oe()}],"border-w-s":[{"border-s":oe()}],"border-w-e":[{"border-e":oe()}],"border-w-bs":[{"border-bs":oe()}],"border-w-be":[{"border-be":oe()}],"border-w-t":[{"border-t":oe()}],"border-w-r":[{"border-r":oe()}],"border-w-b":[{"border-b":oe()}],"border-w-l":[{"border-l":oe()}],"divide-x":[{"divide-x":oe()}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":oe()}],"divide-y-reverse":[`divide-y-reverse`],"border-style":[{border:[...I(),`hidden`,`none`]}],"divide-style":[{divide:[...I(),`hidden`,`none`]}],"border-color":[{border:N()}],"border-color-x":[{"border-x":N()}],"border-color-y":[{"border-y":N()}],"border-color-s":[{"border-s":N()}],"border-color-e":[{"border-e":N()}],"border-color-bs":[{"border-bs":N()}],"border-color-be":[{"border-be":N()}],"border-color-t":[{"border-t":N()}],"border-color-r":[{"border-r":N()}],"border-color-b":[{"border-b":N()}],"border-color-l":[{"border-l":N()}],"divide-color":[{divide:N()}],"outline-style":[{outline:[...I(),`none`,`hidden`]}],"outline-offset":[{"outline-offset":[Mv,$,Q]}],"outline-w":[{outline:[``,Mv,Zv,Wv]}],"outline-color":[{outline:N()}],shadow:[{shadow:[``,`none`,u,ny,Xv]}],"shadow-color":[{shadow:N()}],"inset-shadow":[{"inset-shadow":[`none`,d,ny,Xv]}],"inset-shadow-color":[{"inset-shadow":N()}],"ring-w":[{ring:oe()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:N()}],"ring-offset-w":[{"ring-offset":[Mv,Wv]}],"ring-offset-color":[{"ring-offset":N()}],"inset-ring-w":[{"inset-ring":oe()}],"inset-ring-color":[{"inset-ring":N()}],"text-shadow":[{"text-shadow":[`none`,f,ny,Xv]}],"text-shadow-color":[{"text-shadow":N()}],opacity:[{opacity:[Mv,$,Q]}],"mix-blend":[{"mix-blend":[...se(),`plus-darker`,`plus-lighter`]}],"bg-blend":[{"bg-blend":se()}],"mask-clip":[{"mask-clip":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]},`mask-no-clip`],"mask-composite":[{mask:[`add`,`subtract`,`intersect`,`exclude`]}],"mask-image-linear-pos":[{"mask-linear":[Mv]}],"mask-image-linear-from-pos":[{"mask-linear-from":L()}],"mask-image-linear-to-pos":[{"mask-linear-to":L()}],"mask-image-linear-from-color":[{"mask-linear-from":N()}],"mask-image-linear-to-color":[{"mask-linear-to":N()}],"mask-image-t-from-pos":[{"mask-t-from":L()}],"mask-image-t-to-pos":[{"mask-t-to":L()}],"mask-image-t-from-color":[{"mask-t-from":N()}],"mask-image-t-to-color":[{"mask-t-to":N()}],"mask-image-r-from-pos":[{"mask-r-from":L()}],"mask-image-r-to-pos":[{"mask-r-to":L()}],"mask-image-r-from-color":[{"mask-r-from":N()}],"mask-image-r-to-color":[{"mask-r-to":N()}],"mask-image-b-from-pos":[{"mask-b-from":L()}],"mask-image-b-to-pos":[{"mask-b-to":L()}],"mask-image-b-from-color":[{"mask-b-from":N()}],"mask-image-b-to-color":[{"mask-b-to":N()}],"mask-image-l-from-pos":[{"mask-l-from":L()}],"mask-image-l-to-pos":[{"mask-l-to":L()}],"mask-image-l-from-color":[{"mask-l-from":N()}],"mask-image-l-to-color":[{"mask-l-to":N()}],"mask-image-x-from-pos":[{"mask-x-from":L()}],"mask-image-x-to-pos":[{"mask-x-to":L()}],"mask-image-x-from-color":[{"mask-x-from":N()}],"mask-image-x-to-color":[{"mask-x-to":N()}],"mask-image-y-from-pos":[{"mask-y-from":L()}],"mask-image-y-to-pos":[{"mask-y-to":L()}],"mask-image-y-from-color":[{"mask-y-from":N()}],"mask-image-y-to-color":[{"mask-y-to":N()}],"mask-image-radial":[{"mask-radial":[$,Q]}],"mask-image-radial-from-pos":[{"mask-radial-from":L()}],"mask-image-radial-to-pos":[{"mask-radial-to":L()}],"mask-image-radial-from-color":[{"mask-radial-from":N()}],"mask-image-radial-to-color":[{"mask-radial-to":N()}],"mask-image-radial-shape":[{"mask-radial":[`circle`,`ellipse`]}],"mask-image-radial-size":[{"mask-radial":[{closest:[`side`,`corner`],farthest:[`side`,`corner`]}]}],"mask-image-radial-pos":[{"mask-radial-at":b()}],"mask-image-conic-pos":[{"mask-conic":[Mv]}],"mask-image-conic-from-pos":[{"mask-conic-from":L()}],"mask-image-conic-to-pos":[{"mask-conic-to":L()}],"mask-image-conic-from-color":[{"mask-conic-from":N()}],"mask-image-conic-to-color":[{"mask-conic-to":N()}],"mask-mode":[{mask:[`alpha`,`luminance`,`match`]}],"mask-origin":[{"mask-origin":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]}],"mask-position":[{mask:P()}],"mask-repeat":[{mask:re()}],"mask-size":[{mask:ie()}],"mask-type":[{"mask-type":[`alpha`,`luminance`]}],"mask-image":[{mask:[`none`,$,Q]}],filter:[{filter:[``,`none`,$,Q]}],blur:[{blur:ce()}],brightness:[{brightness:[Mv,$,Q]}],contrast:[{contrast:[Mv,$,Q]}],"drop-shadow":[{"drop-shadow":[``,`none`,p,ny,Xv]}],"drop-shadow-color":[{"drop-shadow":N()}],grayscale:[{grayscale:[``,Mv,$,Q]}],"hue-rotate":[{"hue-rotate":[Mv,$,Q]}],invert:[{invert:[``,Mv,$,Q]}],saturate:[{saturate:[Mv,$,Q]}],sepia:[{sepia:[``,Mv,$,Q]}],"backdrop-filter":[{"backdrop-filter":[``,`none`,$,Q]}],"backdrop-blur":[{"backdrop-blur":ce()}],"backdrop-brightness":[{"backdrop-brightness":[Mv,$,Q]}],"backdrop-contrast":[{"backdrop-contrast":[Mv,$,Q]}],"backdrop-grayscale":[{"backdrop-grayscale":[``,Mv,$,Q]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Mv,$,Q]}],"backdrop-invert":[{"backdrop-invert":[``,Mv,$,Q]}],"backdrop-opacity":[{"backdrop-opacity":[Mv,$,Q]}],"backdrop-saturate":[{"backdrop-saturate":[Mv,$,Q]}],"backdrop-sepia":[{"backdrop-sepia":[``,Mv,$,Q]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":w()}],"border-spacing-x":[{"border-spacing-x":w()}],"border-spacing-y":[{"border-spacing-y":w()}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[``,`all`,`colors`,`opacity`,`shadow`,`transform`,`none`,$,Q]}],"transition-behavior":[{transition:[`normal`,`discrete`]}],duration:[{duration:[Mv,`initial`,$,Q]}],ease:[{ease:[`linear`,`initial`,_,$,Q]}],delay:[{delay:[Mv,$,Q]}],animate:[{animate:[`none`,v,$,Q]}],backface:[{backface:[`hidden`,`visible`]}],perspective:[{perspective:[h,$,Q]}],"perspective-origin":[{"perspective-origin":x()}],rotate:[{rotate:le()}],"rotate-x":[{"rotate-x":le()}],"rotate-y":[{"rotate-y":le()}],"rotate-z":[{"rotate-z":le()}],scale:[{scale:ue()}],"scale-x":[{"scale-x":ue()}],"scale-y":[{"scale-y":ue()}],"scale-z":[{"scale-z":ue()}],"scale-3d":[`scale-3d`],skew:[{skew:de()}],"skew-x":[{"skew-x":de()}],"skew-y":[{"skew-y":de()}],transform:[{transform:[$,Q,``,`none`,`gpu`,`cpu`]}],"transform-origin":[{origin:x()}],"transform-style":[{transform:[`3d`,`flat`]}],translate:[{translate:fe()}],"translate-x":[{"translate-x":fe()}],"translate-y":[{"translate-y":fe()}],"translate-z":[{"translate-z":fe()}],"translate-none":[`translate-none`],zoom:[{zoom:[Nv,$,Q]}],accent:[{accent:N()}],appearance:[{appearance:[`none`,`auto`]}],"caret-color":[{caret:N()}],"color-scheme":[{scheme:[`normal`,`dark`,`light`,`light-dark`,`only-dark`,`only-light`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,$,Q]}],"field-sizing":[{"field-sizing":[`fixed`,`content`]}],"pointer-events":[{"pointer-events":[`auto`,`none`]}],resize:[{resize:[`none`,``,`y`,`x`]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scrollbar-thumb-color":[{"scrollbar-thumb":N()}],"scrollbar-track-color":[{"scrollbar-track":N()}],"scrollbar-gutter":[{"scrollbar-gutter":[`auto`,`stable`,`both`]}],"scrollbar-w":[{scrollbar:[`auto`,`thin`,`none`]}],"scroll-m":[{"scroll-m":w()}],"scroll-mx":[{"scroll-mx":w()}],"scroll-my":[{"scroll-my":w()}],"scroll-ms":[{"scroll-ms":w()}],"scroll-me":[{"scroll-me":w()}],"scroll-mbs":[{"scroll-mbs":w()}],"scroll-mbe":[{"scroll-mbe":w()}],"scroll-mt":[{"scroll-mt":w()}],"scroll-mr":[{"scroll-mr":w()}],"scroll-mb":[{"scroll-mb":w()}],"scroll-ml":[{"scroll-ml":w()}],"scroll-p":[{"scroll-p":w()}],"scroll-px":[{"scroll-px":w()}],"scroll-py":[{"scroll-py":w()}],"scroll-ps":[{"scroll-ps":w()}],"scroll-pe":[{"scroll-pe":w()}],"scroll-pbs":[{"scroll-pbs":w()}],"scroll-pbe":[{"scroll-pbe":w()}],"scroll-pt":[{"scroll-pt":w()}],"scroll-pr":[{"scroll-pr":w()}],"scroll-pb":[{"scroll-pb":w()}],"scroll-pl":[{"scroll-pl":w()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,$,Q]}],fill:[{fill:[`none`,...N()]}],"stroke-w":[{stroke:[Mv,Zv,Wv,Gv]}],stroke:[{stroke:[`none`,...N()]}],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{"container-named":[`container-type`],overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`inset-bs`,`inset-be`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`right`,`left`],"inset-y":[`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pbs`,`pbe`,`pt`,`pr`,`pb`,`pl`],px:[`pr`,`pl`],py:[`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mbs`,`mbe`,`mt`,`mr`,`mb`,`ml`],mx:[`mr`,`ml`],my:[`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-x`,`border-w-y`,`border-w-s`,`border-w-e`,`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-r`,`border-w-l`],"border-w-y":[`border-w-t`,`border-w-b`],"border-color":[`border-color-x`,`border-color-y`,`border-color-s`,`border-color-e`,`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-r`,`border-color-l`],"border-color-y":[`border-color-t`,`border-color-b`],translate:[`translate-x`,`translate-y`,`translate-none`],"translate-none":[`translate`,`translate-x`,`translate-y`,`translate-z`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]},postfixLookupClassGroups:[`container-type`],orderSensitiveModifiers:[`*`,`**`,`after`,`backdrop`,`before`,`details-content`,`file`,`first-letter`,`first-line`,`marker`,`placeholder`,`selection`]}});function hy(...e){return my(z_(e))}var gy=H_(`inline-flex h-9 shrink-0 items-center justify-center gap-2 whitespace-nowrap rounded-md border px-3 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-400 disabled:pointer-events-none disabled:opacity-50 dark:focus-visible:ring-zinc-500`,{variants:{variant:{primary:`border-slate-900 bg-slate-950 text-white hover:bg-slate-800 dark:border-zinc-100 dark:bg-zinc-50 dark:text-zinc-950 dark:hover:bg-zinc-200`,secondary:`border-slate-200 bg-white text-slate-900 hover:bg-slate-50 dark:border-zinc-800 dark:bg-zinc-950 dark:text-zinc-100 dark:hover:bg-zinc-900`,ghost:`border-transparent bg-transparent text-slate-700 hover:bg-slate-100 dark:text-zinc-300 dark:hover:bg-zinc-900`},size:{sm:`h-8 px-2 text-xs`,md:`h-9 px-3 text-sm`,icon:`h-9 w-9 px-0`}},defaultVariants:{variant:`secondary`,size:`md`}});function _y({className:e,variant:t,size:n,...r}){return(0,B.jsx)(`button`,{className:hy(gy({variant:t,size:n}),e),type:`button`,...r})}function vy({className:e,...t}){return(0,B.jsx)(`section`,{className:hy(`rounded-lg border border-slate-200/80 bg-white/95 text-slate-950 shadow-[0_1px_2px_rgba(15,23,42,0.04)] dark:border-zinc-800 dark:bg-zinc-950 dark:text-zinc-50`,e),...t})}function yy({className:e,...t}){return(0,B.jsx)(`div`,{className:hy(`p-4 pt-0`,e),...t})}var by=[`codex`,`claude`,`kiro`,`trae`,`coco`,`openai`,`anthropic`],xy=new Set([`acp`,`status_projection`]);function Sy(e){let t=e.trim().toLowerCase().replace(/_/gu,`-`);for(let e of by)if(t===e||t.startsWith(`${e}-`))return e;return t}function Cy(e,t){let n=t?.trim().toLowerCase()??``;return n.length>0&&!xy.has(n)?Sy(n):Sy(e)}var wy={stop:`ready_stop`,resume:`resume_review`,delete:`delete_review`};function Ty(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function Ey(e){return typeof e==`string`&&e.trim().length>0?e:null}function Dy(e,t=240){let n=typeof e==`string`?e.replace(/\s+/g,` `).trim():``;return n.length>t?`${n.slice(0,t-1)}…`:n}function Oy(e){let t=Ty(e)??{},n=Dy(t.agent_id,80)||`unknown-agent`,r=Dy(t.acceptance,200);if(t.staffing===`gap`){let e=Ty(t.declined_first_todo)??{};return[`${n} · gap`,Dy(t.gap_reason_code,80),Dy(e.text,200)].filter(Boolean).join(` · `)}let i=Ty(t.first_todo)??{};return[`${n} · ready`,Dy(i.priority,8),Dy(i.action_kind,40),Dy(i.text,240),r?`acceptance: ${r}`:``].filter(Boolean).join(` · `)}function ky(e){let t=Ty(e)??{};return Object.entries(t).map(([e,t])=>`${e}: ${typeof t==`object`&&t?JSON.stringify(t):String(t)}`).join(` · `)}function Ay(e){let t=Ty(e);if(t?.action_kind!==`team.plan`||t.status!==`preview_ready`&&t.status!==`deferred`)return;let n=Ty(Ty(t.normalized_parameters)?.plan);if(!n||n.kind!==`steward_team_plan_preview`||n.applies!==!1)return;let r=Ey(t.proposal_id),i=Ey(t.expected_state_fingerprint),a=Ey(n.goal_id);if(!r||!i||!a)return;let o=Array.isArray(n.lanes)?n.lanes:[],s=Array.isArray(n.gaps)?n.gaps:[],c=[{key:`goal`,value:a},{key:`objective`,value:Dy(n.objective)},...o.map((e,t)=>({key:`lane_${t+1}`,value:Oy(e)})),...s.length>0?[{key:`lane_gaps`,value:s.map(e=>{let t=Ty(e)??{};return[Dy(t.lane_id,80),Dy(t.reason_code,80)].filter(Boolean).join(`: `)}).filter(Boolean).join(` · `)}]:[],{key:`quota_envelope`,value:ky(n.quota_envelope)},{key:`stop_condition`,value:Dy(n.stop_condition)}].filter(e=>e.value.length>0);return{schemaVersion:`review_card_frame_v0`,actionKind:`team.plan`,proposalId:r,stateFingerprint:i,kind:`confirmation`,attentionKind:`authority`,interactionMode:`confirm_reject`,decisions:[`confirm`,`reject`],titleKey:`team_plan_preview`,subtitleKey:`preview_only_no_lane_exists`,confirmLabelKey:`confirm_team_plan`,rejectLabelKey:`reject_team_plan`,warningKey:`confirming_creates_each_ready_lane_first_todo`,focus:`${a} · ${o.length} lane${o.length===1?``:`s`}`,fields:c}}function jy(e){let t=Ty(e.projection);if(t?.schema_version!==`loopx_operation_projection_v0`)return null;let n=Ey(t.title),r=Ey(t.subtitle),i=Ey(t.focus),a=Ey(t.warning);if(!n||!r||!i||!a||!Array.isArray(t.fields))return null;let o=[];for(let e of t.fields){let t=Ty(e),n=Ey(t?.label),r=Ey(t?.value);if(!n||!r)return null;o.push({label:n,value:r})}return{title:n,subtitle:r,focus:i,fields:o,warning:a}}function My(e){let t=Ty(e);if(t?.action_kind!==`operation.execute`)return;let n=Ty(t.normalized_parameters),r=Ty(t.operation);if(!n||r?.schema_version!==`loopx_operation_envelope_v0`)return;let i=Ey(r.operation_id),a=Ey(r.confirmation_digest),o=Ey(r.expires_at),s=jy(n);if(!i||!a||!o||!s||i!==t.proposal_id)return;let c=r.lifecycle_state;if(c!==`awaiting_confirmation`&&c!==`claimed`&&c!==`outcome_observed`)return;let l={schemaVersion:`operation_review_frame_v0`,operationId:i,confirmationDigest:a,lifecycleState:c,simulated:Ty(n.projection).simulated===!0,expiresAt:o,content:s};if(c===`awaiting_confirmation`)return{...l,kind:`confirmation`,attentionKind:`authority`,interactionMode:`confirm_reject`,decisions:[`confirm`,`reject`]};if(c===`claimed`)return{...l,kind:`pending`,attentionKind:`progress`,interactionMode:`inform`};let u=Ty(r.outcome);if(!u)return;let d=u.outcome===`rejected_by_operator`,f=u.simulation===!0||l.simulated;return{...l,kind:`result`,attentionKind:`progress`,interactionMode:`inform`,resultKind:d?`rejected`:f?`simulation_completed`:`completed`,resultDeliveryVerified:Ty(r.result_delivery)!==null,summary:Ey(u.summary)??``}}function Ny(e){let t=Ty(e)??{},n={schemaVersion:`action_review_plan_v0`,proposalId:typeof t.proposal_id==`string`?t.proposal_id:``,sourceFingerprint:typeof t.expected_state_fingerprint==`string`?t.expected_state_fingerprint:``},r=My(t),i=Ay(t),a=e=>({...n,...e,...r?{operationFrame:r}:{},...i?{reviewCardFrame:i}:{}}),o=(e,t)=>a({interaction:e,reason:t,canApply:!1}),s=t.action_kind===`goal.lifecycle`;if(s&&t.gate!=null||t.status===`gated`)return o(`gated`,`authority_gate`);if(s&&t.stale!=null||t.status===`stale`)return o(`refresh`,`stale_proposal`);if(t.status===`applied`)return Ty(t.receipt)?.projection_verified===!0&&(t.action_kind!==`operation.execute`||Ty(Ty(t.operation)?.result_delivery)!==null)?o(`completed`,`readback_verified`):o(`repair`,`readback_unverified`);if(t.status===`applying`)return o(`pending`,`apply_pending`);if(t.status===`failed`||t.error!=null)return o(`repair`,`apply_failed`);if(t.status!==`preview_ready`&&t.status!==`deferred`)return o(`inactive`,`inactive_proposal`);let c=(e,t=!0)=>a({interaction:`review`,reason:e,canApply:t});if(t.action_kind!==`goal.lifecycle`)return c(t.permission_classification===`protected`?`protected_action`:`action_review`);let l=t.validation_evidence,u=t.available_transitions;if(!(Ey(t.proposal_id)!==null&&Ey(t.expected_state_fingerprint)!==null&&Array.isArray(l)&&l.length>0&&l.every(e=>Ey(e)!==null)&&Array.isArray(u)&&u.includes(`apply`)))return o(`refresh`,`incomplete_proposal`);let d=Ty(t.normalized_parameters),f=Ty(t.context),p=d?.operation,m=Ey(d?.goal_id);if(!m||f?.goal_id!=null&&f.goal_id!==m)return o(`refresh`,`incomplete_proposal`);if(p!==`stop`&&p!==`resume`&&p!==`delete`)return c(`unknown_action`,!1);if(t.permission_classification===`protected`)return c(`protected_action`);if(t.permission_classification!==`durable_write`)return c(`unknown_permission`,!1);let h=wy[p];return h===`ready_stop`&&t.status===`preview_ready`?a({interaction:`direct`,reason:h,canApply:!0}):c(h===`ready_stop`?`action_review`:h)}function Py(e){return e.error_code===`action_stale`||e.error_code===`action_conflict`||Ty(e.proposal)?.status===`stale`}function Fy(e){return typeof e==`object`&&e?e:{}}function Iy(e){return typeof e==`string`?e:``}function Ly(e,t){let n=Fy(e.plan),r=[],i=Iy(e.goal_id)||Iy(n.goal_id);i&&r.push({key:`goal_id`,label:t(`proposal.field.goalId`),value:i});let a=Iy(n.objective);a&&r.push({key:`objective`,label:t(`proposal.field.objective`),value:a}),(Array.isArray(n.lanes)?n.lanes:[]).forEach((e,n)=>{let i=Fy(e),a=Iy(i.lane_id)||`lane-${n+1}`,o=Iy(i.agent_id),s=Iy(i.acceptance);if(Iy(i.staffing)===`gap`){let e=Fy(i.declined_first_todo);r.push({key:`lane_${a}`,label:o||a,value:[t(`proposal.teamPlan.gapLane`),Iy(i.gap_reason_code),Iy(e.text)].filter(Boolean).join(` · `)});return}let c=Fy(i.first_todo),l=[Iy(c.priority),Iy(c.action_kind),Iy(c.text)].filter(Boolean).join(` · `);r.push({key:`lane_${a}`,label:o||a,value:[l||t(`proposal.teamPlan.laneUnstaffed`),s?`${t(`proposal.teamPlan.acceptanceShort`)}: ${s}`:``].filter(Boolean).join(` · `)})});let o=Array.isArray(n.gaps)?n.gaps:[];o.length>0&&r.push({key:`lane_gaps`,label:t(`proposal.field.laneGaps`),value:o.map(e=>{let t=Fy(e);return[Iy(t.lane_id),Iy(t.reason_code)].filter(Boolean).join(`: `)}).filter(Boolean).join(` · `)});let s=Fy(n.quota_envelope),c=Object.entries(s);c.length>0&&r.push({key:`quota_envelope`,label:t(`proposal.field.quotaEnvelope`),value:c.map(([e,t])=>`${e}: ${String(t??``)}`).join(` · `)+` · ${t(`proposal.teamPlan.advisory`)}`});let l=Iy(n.stop_condition);return l&&r.push({key:`stop_condition`,label:t(`proposal.field.stopCondition`),value:`${l} · ${t(`proposal.teamPlan.advisory`)}`}),r}function Ry(e){let t=Fy(e.plan);return Array.isArray(t.lanes)?t.lanes.length:0}function zy(e){let t=Fy(e.plan);return Iy(e.goal_id)||Iy(t.goal_id)}function By(e){let t=Fy(e);return(Array.isArray(t.gap_lanes)?t.gap_lanes:[]).map(e=>{let t=Fy(e);return{laneId:Iy(t.lane_id),agentId:Iy(t.agent_id),reasonCode:Iy(t.reason_code)}}).filter(e=>e.laneId.length>0)}function Vy(e,t){return e===`agent_not_registered`?t(`proposal.teamPlan.gapReason.agentNotRegistered`):e===`action_kind_not_supported`?t(`proposal.teamPlan.gapReason.actionKindNotSupported`):e}function Hy(e,t){return t(`proposal.teamPlan.appliedGapLane`,{lane:e.laneId,agent:e.agentId||e.laneId,reason:Vy(e.reasonCode,t)})}function Uy(e){let t=Fy(e),n=Iy(t.outcome),r=Array.isArray(t.lanes)?t.lanes.length:0,i=typeof t.gap_count==`number`?t.gap_count:0;return n===`team_plan_partially_applied`?{kind:`partially_applied`,created:r,gaps:i}:n===`team_plan_lanes_already_present`||n===`team_plan_commit_recovered`?{kind:`already_present`,created:r,gaps:i}:n===`team_plan_applied`?{kind:`applied`,created:r,gaps:i}:null}function Wy(e,t){return e?.kind===`partially_applied`?t(`proposal.teamPlan.appliedPartially`,{created:String(e.created),gaps:String(e.gaps)}):e?.kind===`already_present`?t(`proposal.teamPlan.appliedAlreadyPresent`):t(e?.kind===`applied`?`proposal.teamPlan.applied`:`drawer.proposalApplied`)}function Gy(e){return{blockingTodoCount:e.blockingTodoCount,goalNotifications:e.goalNotifications,goals:e.goals,openUserTodoCount:e.openUserTodoCount,systemHealth:e.systemHealth,attentionHistory:e.attentionHistory,userTodos:e.userTodos,workers:e.workers}}function Ky(e,t){return e.goals.find(e=>e.goalId===t)?.title??t}function qy(e){return e.activationState===`stopped`||e.state===`已停止`?`stopped`:e.state===`已完成`?`history`:e.needsYou||e.state===`等你`?`needs_you`:e.state===`推进中`||e.state===`需修复`?`running`:e.state===`安静运行`?`observing`:`scheduled`}function Jy(e){let t=e;return t>=1e6?`${(t/1e6).toFixed(1)}M`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function Yy(e){return`$${e.toFixed(2)}`}function Xy(e){let t=e;return t>=36e5?`${(t/36e5).toFixed(1)}h`:t>=6e4?`${(t/6e4).toFixed(1)}m`:t>=1e3?`${Math.round(t/1e3)}s`:`${t}ms`}function Zy(e,t,n){return e==null?t:n(e)}function Qy(e){return!!(e&&[e.tokens24h,e.tokens7d,e.costUsd24h,e.costUsd7d,e.durationMs24h,e.durationMs7d].some(e=>e!=null))}function $y(e,t){if(!Qy(e))return null;let n=(e,n,r,i)=>{let a=[n==null?null:`${Jy(n)} ${t.tokens}`,r==null?null:`${t.cost}: ${Yy(r)}`,i==null?null:`${t.duration}: ${Xy(i)}`].filter(e=>e!==null);return a.length?`${e} ${a.join(` · `)}`:null};return n(t.period7d,e.tokens7d,e.costUsd7d,e.durationMs7d)??n(t.period24h,e.tokens24h,e.costUsd24h,e.durationMs24h)}function eb({ariaLabel:e,className:t,icon:n,onChange:r,options:i,prefixLabel:a,value:o}){let s=(0,z.useId)(),c=(0,z.useRef)(null),l=(0,z.useRef)(null),u=(0,z.useRef)(new Map),[d,f]=(0,z.useState)(!1),[p,m]=(0,z.useState)(o),h=i.find(e=>e.value===o)??i[0],g=i.filter(e=>!e.disabled);(0,z.useEffect)(()=>{if(!d)return;let e=e=>{c.current?.contains(e.target)||f(!1)};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[d]),(0,z.useEffect)(()=>{d&&u.current.get(p)?.focus()},[p,d]);function _(e){m(e)}function v(e=`selected`){let t=e===`last`?g.at(-1):g[0],n=e===`selected`&&h&&!h.disabled?h:t;n&&(f(!0),_(n.value))}function y({restoreFocus:e=!1}={}){f(!1),e&&l.current?.focus()}function b(e){e.disabled||(r(e.value),y({restoreFocus:!0}))}function x(e){if(!g.length)return;let t=g.findIndex(e=>e.value===p),n=t<0?0:(t+e+g.length)%g.length;_(g[n].value)}function S(e){e.key===`ArrowDown`||e.key===`Enter`||e.key===` `?(e.preventDefault(),v(`selected`)):e.key===`ArrowUp`&&(e.preventDefault(),v(`last`))}function C(e,t){if(e.key===`ArrowDown`)e.preventDefault(),x(1);else if(e.key===`ArrowUp`)e.preventDefault(),x(-1);else if(e.key===`Home`)e.preventDefault(),g[0]&&_(g[0].value);else if(e.key===`End`){e.preventDefault();let t=g.at(-1);t&&_(t.value)}else e.key===`Enter`||e.key===` `?(e.preventDefault(),b(t)):e.key===`Escape`?(e.preventDefault(),y({restoreFocus:!0})):e.key===`Tab`&&y()}let w;return(0,B.jsxs)(`div`,{className:`personal-select${t?` ${t}`:``}`,ref:c,children:[(0,B.jsxs)(`button`,{"aria-controls":s,"aria-expanded":d,"aria-haspopup":`listbox`,"aria-label":e,className:`personal-select-trigger`,"data-value":o,onClick:()=>d?y():v(),onKeyDown:S,ref:l,role:`combobox`,type:`button`,children:[n?(0,B.jsx)(`span`,{className:`personal-select-icon`,children:n}):null,(0,B.jsxs)(`span`,{className:`personal-select-value`,children:[a?(0,B.jsx)(`small`,{children:a}):null,(0,B.jsx)(`span`,{children:h?.label??o})]}),(0,B.jsx)(om,{"aria-hidden":!0,className:d?`is-open`:void 0,size:14})]}),d?(0,B.jsx)(`div`,{"aria-label":e,className:`personal-select-listbox`,id:s,role:`listbox`,children:i.map(e=>{let t=e.group&&e.group!==w;return w=e.group,(0,B.jsxs)(`div`,{className:`personal-select-option-wrap`,children:[t?(0,B.jsx)(`div`,{className:`personal-select-group-label`,children:e.group}):null,(0,B.jsxs)(`button`,{"aria-disabled":e.disabled||void 0,"aria-selected":e.value===o,className:`personal-select-option`,disabled:e.disabled,id:`${s}-${e.value.replace(/[^a-z0-9_-]/gi,`-`)}`,onClick:()=>b(e),onFocus:()=>m(e.value),onKeyDown:t=>C(t,e),ref:t=>{t?u.current.set(e.value,t):u.current.delete(e.value)},role:`option`,tabIndex:e.value===p?0:-1,type:`button`,children:[(0,B.jsx)(`span`,{children:e.label}),e.value===o?(0,B.jsx)(am,{"aria-hidden":!0,size:15}):null]})]},e.value)})}):null]})}function tb({agents:e,managerChannelBinding:t,managerChatOpen:n,managerRuntime:r,mobileNavigationOpen:i,onOpenGoalCapabilities:a,onOpenGoalDetail:o,onOpenManagerChat:s,onRefresh:c,onOpenNavigation:l,onSelectGoalTab:u,onSelectAgent:d,onReturnManagerHome:f,refreshState:p,readOnlySourceLabel:m,selectedAgentId:h,selectedGoal:g,selectedGoalTab:_}){let{locale:v,t:y}=Ji(),[b,x]=(0,z.useState)(!1),S=(0,z.useRef)(null),C=(0,z.useRef)(null);(0,z.useEffect)(()=>{if(!b)return;function e(e){C.current?.contains(e.target)||x(!1)}function t(e){e.key===`Escape`&&(x(!1),S.current?.focus())}return document.addEventListener(`pointerdown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`pointerdown`,e),document.removeEventListener(`keydown`,t)}},[b]),(0,z.useEffect)(()=>x(!1),[g?.goalId]);function w(e){x(!1),e?.()}let T=g?$y(g.usage,{cost:y(`drawer.costShort`),duration:y(`drawer.durationShort`),period24h:y(`drawer.period24h`),period7d:y(`drawer.period7d`),tokens:y(`drawer.tokensShort`)}):null,E=t?t.executor_kind===`individual`?y(`header.managerExecutorKindIndividual`):t.executor_kind===`managed`?y(`header.managerExecutorKindManaged`):y(`header.managerExecutorKindRegistered`):null,D=t?.available===!1,O=t?.available===!1?t.unavailable_reason:null,k=O===`operator_credential_unconfigured`?`header.managerExecutionUnavailableCredential`:O===`dsh_runtime_unavailable`?`header.managerExecutionUnavailableRuntime`:O===`invalid_reasoning_effort`?`header.managerExecutionUnavailableEffort`:`header.managerExecutionUnavailable`,ee=t&&t.executor_endpoint_source===`product_default`&&t.executor_endpoint_default_reason===`steward_channel_default`?`header.managerEndpointStewardDefault`:null;return(0,B.jsxs)(`header`,{className:`personal-channel-header`,children:[(0,B.jsx)(`button`,{"aria-expanded":i??!1,"aria-label":y(`header.openGoalNavigation`),className:`personal-icon-button personal-mobile-menu`,onClick:l,type:`button`,children:(0,B.jsx)(jm,{size:18})}),(0,B.jsxs)(`div`,{className:`personal-channel-title`,children:[(0,B.jsx)(`h1`,{children:g?.title??y(`header.manager`)}),!g&&r?(0,B.jsx)(`p`,{children:r.status===`ready`?y(`header.managerRuntime`,{profile:r.runtime_profile,sandbox:r.sandbox}):y(`header.managerRuntimeFallback`,{profile:r.runtime_profile,sandbox:r.sandbox})}):null,!g&&t?(0,B.jsxs)(`p`,{className:`personal-manager-execution`,children:[(0,B.jsxs)(`span`,{className:D?`personal-execution-chip is-unavailable`:`personal-execution-chip`,children:[(0,B.jsx)(`span`,{className:`personal-execution-chip-endpoint`,children:t.executor_endpoint}),E?(0,B.jsx)(`span`,{className:`personal-execution-chip-kind`,children:E}):null,(0,B.jsx)(`span`,{className:`personal-execution-chip-model`,children:t.model})]}),D?(0,B.jsx)(`span`,{className:`personal-execution-note`,children:y(k,{executor:t.executor_endpoint,credential:t.credential_env_var})}):null,ee?(0,B.jsx)(`span`,{className:`personal-execution-rule-note`,children:y(ee,{executor:t.executor_endpoint})}):null]}):null,g?(0,B.jsx)(`p`,{children:g.loadState?y(g.loadState===`error`?`startup.goalError`:`startup.goalLoading`):`${g.agentLaneCount&&g.agentLaneCount>1?y(`header.workAgentCount`,{count:g.agentLaneCount}):g.agentLabel??g.agentId} · ${g.loadState?y(g.loadState===`error`?`startup.goalError`:`startup.goalLoading`):Yi(g.state,v)}${T?` · ${T}`:``} · ${g.nextSentence}`}):null]}),g?(0,B.jsxs)(`nav`,{"aria-label":y(`header.goalView`),className:`personal-goal-tabs`,children:[(0,B.jsx)(`button`,{"aria-current":_===`chat`?`page`:void 0,onClick:()=>u(`chat`),type:`button`,children:y(`header.chat`)}),(0,B.jsx)(`button`,{"aria-current":_===`tasks`?`page`:void 0,onClick:()=>u(`tasks`),type:`button`,children:y(`header.tasks`)}),(0,B.jsx)(`button`,{"aria-current":_===`files`?`page`:void 0,onClick:()=>u(`files`),type:`button`,children:y(`header.files`)})]}):(0,B.jsxs)(`nav`,{"aria-label":y(`header.managerView`),className:`personal-goal-tabs`,children:[(0,B.jsx)(`button`,{"aria-current":n?void 0:`page`,onClick:f,type:`button`,children:y(`header.managerOverview`)}),(0,B.jsx)(`button`,{"aria-current":n?`page`:void 0,onClick:s,type:`button`,children:y(`header.chat`)})]}),(0,B.jsxs)(`div`,{className:`personal-channel-actions`,children:[g&&o&&a?(0,B.jsxs)(`div`,{className:`personal-goal-tools`,ref:C,children:[(0,B.jsxs)(`button`,{"aria-expanded":b,"aria-haspopup":`menu`,"aria-label":y(`header.goalSettingsDescription`),className:`personal-goal-tools-trigger`,onClick:()=>x(e=>!e),ref:S,title:y(`header.goalSettingsDescription`),type:`button`,children:[(0,B.jsx)(Zm,{"aria-hidden":!0,size:16}),(0,B.jsx)(`span`,{children:y(`header.goalSettings`)}),(0,B.jsx)(om,{"aria-hidden":!0,size:13})]}),b?(0,B.jsxs)(`fieldset`,{"aria-label":y(`header.goalSettings`),className:`personal-goal-tools-menu`,children:[(0,B.jsxs)(`button`,{onClick:()=>w(o),type:`button`,children:[(0,B.jsx)(wm,{"aria-hidden":!0,size:17}),(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:y(`header.goalDetails`)})})]}),(0,B.jsxs)(`button`,{onClick:()=>w(a),type:`button`,children:[(0,B.jsx)(Zm,{"aria-hidden":!0,size:17}),(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:y(`header.goalCapabilities`)})})]})]}):null]}):null,m?(0,B.jsxs)(`span`,{className:`personal-read-only-source`,title:y(`header.readOnlySourceDescription`,{source:m}),children:[(0,B.jsx)(vm,{size:15}),m,(0,B.jsx)(`small`,{children:y(`common.readOnly`)})]}):(0,B.jsx)(eb,{ariaLabel:y(`header.selectChatRuntime`),className:`personal-agent-select`,icon:(0,B.jsx)(nm,{size:16}),onChange:d,options:e.map(e=>({disabled:!e.available,label:`${e.label}${e.available?``:` · ${y(`header.agentUnavailable`)}`}`,value:e.agentId})),prefixLabel:y(`header.chatRuntime`),value:h}),(0,B.jsxs)(`span`,{className:`personal-live-indicator`,children:[(0,B.jsx)(`i`,{}),y(`header.live`)]}),c?(0,B.jsxs)(`span`,{className:`personal-refresh-control is-${p??`idle`}`,children:[p===`loading`?(0,B.jsx)(`small`,{children:y(`header.refreshing`)}):p===`done`?(0,B.jsx)(`small`,{children:y(`header.refreshDone`)}):p===`error`?(0,B.jsx)(`small`,{children:y(`header.refreshFailed`)}):null,(0,B.jsx)(`button`,{"aria-label":y(p===`loading`?`header.refreshing`:`header.refresh`),className:`personal-icon-button`,disabled:p===`loading`,onClick:c,type:`button`,children:(0,B.jsx)(Hm,{className:p===`loading`?`is-spinning`:void 0,size:17})})]}):null]})]})}function nb({attention:e,onSelect:t}){let{t:n}=Ji(),r=Zi(e.updatedAt,n);return(0,B.jsxs)(`button`,{className:`personal-timeline-row personal-attention-row`,"data-testid":`personal-browse-row`,onClick:t,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-row-icon is-attention`,children:(0,B.jsx)(lm,{size:18})}),(0,B.jsxs)(`span`,{className:`personal-row-copy`,children:[(0,B.jsxs)(`small`,{children:[e.goalTitle??e.goalId,` · `,n(`home.lane.needsYou`),r?` · ${n(`tasks.waitingAge`,{age:r})}`:``]}),(0,B.jsx)(`strong`,{children:e.text})]}),(0,B.jsx)(`span`,{className:`personal-priority-dot is-${e.priority??(e.blocking?`high`:`medium`)}`}),(0,B.jsx)(`span`,{className:`personal-row-status ${e.blocking?`is-blocking`:`is-pending`}`,children:e.blocking?n(`tasks.blocked`):n(`tasks.pending`)}),(0,B.jsx)(sm,{size:17})]})}var rb=/(`[^`\n]+`)|(\*\*[^*\n]+(\*[^*\n]*)?\*\*)|(\[[^\]\n]{1,120}\]\(https?:\/\/[^)\s]+\))/g;function ib(e,t){let n=[],r=0,i=0;for(let a of e.matchAll(rb)){let o=a.index??0;o>r&&n.push(e.slice(r,o));let s=a[0],c=`${t}-i${i++}`;if(s.startsWith("`"))n.push((0,B.jsx)(`code`,{className:`personal-md-code`,children:s.slice(1,-1)},c));else if(s.startsWith(`**`))n.push((0,B.jsx)(`strong`,{children:s.slice(2,-2)},c));else{let e=s.indexOf(`](`),t=s.slice(1,e),r=s.slice(e+2,-1);n.push((0,B.jsx)(`a`,{className:`personal-md-link`,href:r,rel:`noreferrer`,target:`_blank`,children:t},c))}r=o+s.length}return r{r.length>0&&(n.push({type:`paragraph`,lines:r}),r=[])},a=0;for(;a{let n=`b${t}`;if(e.type===`code`)return(0,B.jsx)(`pre`,{className:`personal-md-pre`,children:(0,B.jsx)(`code`,{children:e.text})},n);if(e.type===`heading`)return(0,B.jsx)(`p`,{className:`personal-md-heading is-h${e.level}`,children:$y(e.text,n)},n);if(e.type===`list`){let t=e.items.map((e,t)=>(0,B.jsx)(`li`,{children:$y(e,`${n}-${t}`)},`${n}-${t}`));return e.ordered?(0,B.jsx)(`ol`,{className:`personal-md-list`,children:t},n):(0,B.jsx)(`ul`,{className:`personal-md-list`,children:t},n)}return(0,B.jsx)(`p`,{children:e.lines.map((e,t)=>(0,B.jsxs)(z.Fragment,{children:[t>0?(0,B.jsx)(`br`,{}):null,$y(e,`${n}-${t}`)]},`${n}-${t}`))},n)})})}function ib({onSelect:e,output:t}){let{t:n}=Ji(),r=t.kind===`report`?xm:bm;return(0,B.jsxs)(`button`,{className:`personal-timeline-row personal-output-row`,"data-output-kind":t.kind,"data-testid":`personal-browse-row`,onClick:e,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-row-icon is-output`,children:(0,B.jsx)(r,{size:18})}),(0,B.jsxs)(`span`,{className:`personal-row-copy`,children:[(0,B.jsxs)(`small`,{children:[t.goalTitle??t.goalId,` · `,t.agentLabel??`LoopX`]}),(0,B.jsx)(`strong`,{children:t.title}),t.summary?(0,B.jsx)(`span`,{children:t.summary}):null,t.report?(0,B.jsxs)(`small`,{children:[n(`files.reportDelta`,{added:t.report.addedCount,changed:t.report.changedCount}),` · `,n(`files.verifiedReport`)]}):null]}),t.createdAt?(0,B.jsx)(`time`,{children:t.createdAt}):null,(0,B.jsx)(sm,{size:17})]})}var ab={completed:`runs.completed`,failed:`runs.failed`,interrupted:`runs.interrupted`,queued:`runs.queued`,running:`runs.running`,waiting:`runs.waiting`};function ob({onSelect:e,run:t}){let{t:n}=Ji(),r=t.totalSteps>0?Math.min(100,t.completedSteps/t.totalSteps*100):0;return(0,B.jsxs)(`button`,{"aria-label":`${n(`tasks.viewExecution`)}:${t.title}`,className:`personal-timeline-row personal-run-row`,"data-testid":`personal-browse-row`,onClick:e,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-row-icon is-run`,children:(0,B.jsx)(nm,{size:18})}),(0,B.jsxs)(`span`,{className:`personal-run-identity`,children:[(0,B.jsx)(`small`,{children:t.goalTitle}),(0,B.jsx)(`strong`,{children:t.agentLabel})]}),(0,B.jsxs)(`span`,{className:`personal-row-copy`,children:[(0,B.jsx)(`strong`,{children:t.title}),(0,B.jsx)(`small`,{children:t.latestActivity})]}),(0,B.jsxs)(`span`,{className:`personal-run-progress`,"aria-label":`${t.completedSteps}/${t.totalSteps}`,children:[(0,B.jsxs)(`small`,{children:[t.completedSteps,`/`,t.totalSteps]}),(0,B.jsx)(`i`,{children:(0,B.jsx)(`b`,{style:{width:`${r}%`}})})]}),(0,B.jsxs)(`span`,{className:`personal-row-status is-${t.status}`,children:[t.status===`running`?(0,B.jsx)(km,{className:`personal-spin`,size:14}):null,n(ab[t.status])]}),t.sessionId?(0,B.jsx)(`span`,{className:`personal-run-open-label`,children:n(`tasks.viewExecution`)}):null,(0,B.jsx)(sm,{size:17})]})}function sb({onSelect:e,schedule:t}){let{t:n}=Ji(),r=t.scheduleKind===`heartbeat`;return(0,B.jsxs)(`button`,{"aria-label":`${r?`Heartbeat`:n(`tasks.scheduled`)}:${t.label};${t.status??`active`}`,className:`personal-schedule-row`,onClick:e,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-schedule-icon`,children:r?(0,B.jsx)(Vm,{size:17}):(0,B.jsx)(im,{size:17})}),(0,B.jsxs)(`span`,{className:`personal-schedule-copy`,children:[(0,B.jsx)(`small`,{children:n(r?`schedule.heartbeat`:`schedule.monitor`)}),(0,B.jsx)(`strong`,{children:t.label}),(0,B.jsx)(`p`,{children:t.schedule??n(`schedule.summary`)})]}),(0,B.jsx)(`span`,{className:`personal-schedule-status is-${t.status??`active`}`,children:t.status===`paused`?n(`schedule.paused`):n(`schedule.active`)}),(0,B.jsx)(sm,{size:16})]})}function cb({delivery:e}){let{t}=Ji();if(!e)return null;let n=e.status===`delivered`?e.verification===`reconciled_after_restart`?t(`returnDelivery.reconciled`):t(`returnDelivery.delivered`):e.status===`verification_required`?t(`returnDelivery.verifying`):e.status===`explicit_unverified`?t(`returnDelivery.unverified`):t(`returnDelivery.queued`),r=e.status===`delivered`?`delivered`:e.status===`verification_required`?`verification_required`:e.status===`explicit_unverified`?`explicit_unverified`:`queued`;return(0,B.jsx)(`small`,{className:`personal-return-delivery is-${r}`,role:`status`,children:n})}function lb({items:e,onSelect:t,selectedGoal:n}){let{t:r}=Ji();if(e.length===0)return(0,B.jsxs)(`div`,{className:`personal-timeline-empty`,children:[(0,B.jsx)(`span`,{children:(0,B.jsx)(Qm,{size:20})}),(0,B.jsx)(`strong`,{children:r(n?`timeline.emptyGoal`:`timeline.emptyWorkspace`)}),(0,B.jsx)(`p`,{children:r(n?`timeline.emptyGoalDescription`:`timeline.emptyWorkspaceDescription`)})]});let i=[...e].reverse().find(e=>e.kind===`message`&&e.message.role!==`user`||e.kind===`proposal`&&[`applied`,`stale`,`error`,`gated`].includes(e.proposal.status)||e.kind===`run`&&e.run.status===`completed`),a=i?.kind===`message`?`${i.message.agentLabel??r(`header.manager`)}:${i.message.pending?r(`timeline.pending`):i.message.text}`:i?.kind===`proposal`?`${i.proposal.title}:${i.proposal.status}`:i?.kind===`run`?r(`timeline.runCompleted`,{run:i.run.title}):``,o=e.filter(e=>e.kind===`proposal`&&e.proposal.status===`gated`),s=e.filter(e=>e.kind!==`proposal`),c=e.filter(e=>e.kind===`proposal`&&e.proposal.status!==`gated`);function l(e){return e.kind===`attention`?(0,B.jsx)(Zy,{attention:e.attention,onSelect:()=>t({item:e.attention,kind:`attention`})},e.id):e.kind===`run`?(0,B.jsx)(ob,{onSelect:()=>t({item:e.run,kind:`run`}),run:e.run},e.id):e.kind===`output`?(0,B.jsx)(ib,{onSelect:()=>t({item:e.output,kind:`output`}),output:e.output},e.id):e.kind===`schedule`?(0,B.jsx)(sb,{onSelect:()=>t({item:e.schedule,kind:`schedule`}),schedule:e.schedule},e.id):e.kind===`proposal`?(0,B.jsxs)(`button`,{className:`personal-proposal-row is-${e.proposal.status}`,onClick:()=>t({item:e.proposal,kind:`proposal`}),type:`button`,children:[(0,B.jsx)(`span`,{children:(0,B.jsx)(Qm,{size:17})}),(0,B.jsxs)(`span`,{children:[(0,B.jsxs)(`small`,{children:[e.proposal.actionKind,` · `,e.proposal.status]}),(0,B.jsx)(`strong`,{children:e.proposal.title}),(0,B.jsx)(`p`,{children:e.proposal.impact})]}),(0,B.jsx)(`b`,{children:e.proposal.status===`gated`&&e.proposal.actionKind!==`operation.execute`?r(`timeline.review`):e.proposal.primaryLabel??r(`timeline.reviewAndConfirm`)})]},e.id):(0,B.jsxs)(`article`,{className:`personal-message is-${e.message.role}`,children:[e.message.role===`user`?null:(0,B.jsx)(`span`,{className:`personal-message-avatar`,children:(0,B.jsx)(nm,{size:17})}),(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:e.message.role===`user`?r(`common.you`):e.message.agentLabel??r(`header.manager`)}),e.message.time?(0,B.jsx)(`time`,{children:e.message.time}):null]}),e.message.attachments?.length?(0,B.jsx)(`div`,{className:`personal-message-images`,children:e.message.attachments.map(e=>(0,B.jsx)(`img`,{alt:e.name,src:e.dataUrl},e.id))}):null,e.message.role===`user`?(0,B.jsx)(`p`,{children:e.message.text}):(0,B.jsx)(rb,{text:e.message.text}),e.message.pending?(0,B.jsx)(`span`,{className:`personal-message-pending`,children:r(`timeline.pending`)}):null,(0,B.jsx)(cb,{delivery:e.message.returnDelivery})]})]},e.id)}return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{"aria-atomic":`true`,"aria-live":`polite`,className:`personal-live-region`,role:`status`,children:a}),(0,B.jsxs)(`div`,{className:`personal-channel-timeline`,children:[s.map(l),o.length?(0,B.jsxs)(`details`,{className:`personal-gated-summary`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(`span`,{children:(0,B.jsx)(Qm,{size:16})}),(0,B.jsx)(`strong`,{children:r(`timeline.waitingConfirmation`)}),(0,B.jsx)(`small`,{children:r(`timeline.gateHistory`,{count:o.length})})]}),(0,B.jsx)(`div`,{children:o.map(l)})]}):null,c.map(l)]})]})}function ub({goal:e}){let{t,locale:n}=Ji(),r=n===`zh-CN`?{checkpoint_satisfied:`检查点满足`,checkpoint_fresh:`检查点有效`,path_outcome_valid:`路径决策有效`,evidence_refs_present:`证据引用齐全`,final_outcome_claim_present:`最终成果声明齐全`,no_reported_outcome_gap:`无已报告成果缺口`}:{checkpoint_satisfied:`Checkpoint satisfied`,checkpoint_fresh:`Checkpoint current`,path_outcome_valid:`Valid path decision`,evidence_refs_present:`Evidence refs present`,final_outcome_claim_present:`Final outcome claim present`,no_reported_outcome_gap:`No reported outcome gap`},i={connected:t(`acceptance.connected`),mapped:t(`acceptance.mapped`),refreshed:t(`acceptance.refreshed`),adapter_inspected:t(`acceptance.inspected`),run_recorded:t(`acceptance.recorded`),reward_judged:t(`acceptance.judged`),operator_approved:t(`acceptance.approved`),controller_ready:t(`acceptance.ready`),attention_queue:t(`acceptance.attentionSource`),agent_vision:t(`acceptance.visionSource`),todo_projection:t(`acceptance.todoSource`),current_run:t(`acceptance.runSource`)},a=e=>i[e]??t(`acceptance.unknown`),o=e.acceptanceObservation,s=e.loadState||!o||o.goal_id!==e.goalId||o.coverage===`unavailable`;return(0,B.jsxs)(`section`,{className:`personal-detail-card personal-goal-acceptance`,"aria-label":t(`acceptance.title`),children:[(0,B.jsxs)(`div`,{className:`personal-detail-card-title`,children:[(0,B.jsx)(`h3`,{children:t(`acceptance.title`)}),(0,B.jsx)(`em`,{children:t(`common.readOnly`)})]}),(0,B.jsx)(`p`,{role:`status`,children:t(s?`acceptance.unavailable`:`acceptance.partial`)}),!s&&o?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`h4`,{children:t(`acceptance.gaps`)}),o.acceptance_gaps.length?o.acceptance_gaps.map((e,i)=>(0,B.jsxs)(`div`,{className:`personal-acceptance-observation`,children:[(0,B.jsx)(`p`,{children:e.reason??t(`acceptance.reasonUnknown`)}),e.resolution_hint?(0,B.jsx)(`p`,{children:e.resolution_hint}):null,e.component_checks?(0,B.jsx)(`div`,{children:Object.entries(e.component_checks).map(([e,t])=>(0,B.jsxs)(`p`,{children:[r[e],`: `,n===`zh-CN`?t?`通过`:`未通过`:t?`Passed`:`Failed`]},e))}):null,(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`common.owner`)}),(0,B.jsx)(`dd`,{children:e.owner??t(`acceptance.unknown`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`acceptance.required`)}),(0,B.jsx)(`dd`,{children:e.evidence_required??t(`acceptance.unknown`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`acceptance.observed`)}),(0,B.jsx)(`dd`,{children:e.observed_at??t(`acceptance.unknown`)})]})]})]},`${e.kind}:${e.owner}:${i}`)):(0,B.jsx)(`p`,{children:t(`acceptance.noGaps`)}),(0,B.jsx)(`h4`,{children:t(`acceptance.guards`)}),o.guards.length?o.guards.map((e,n)=>(0,B.jsxs)(`div`,{className:`personal-acceptance-observation`,children:[(0,B.jsx)(`p`,{children:e.reason??t(`acceptance.reasonUnknown`)}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`common.owner`)}),(0,B.jsx)(`dd`,{children:e.owner??t(`acceptance.unknown`)})]}),e.blocks_agent?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`common.agent`)}),(0,B.jsx)(`dd`,{children:e.blocks_agent})]}):null,e.todo_id?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`common.task`)}),(0,B.jsx)(`dd`,{children:e.todo_id})]}):null,(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`acceptance.required`)}),(0,B.jsx)(`dd`,{children:e.evidence_required??t(`acceptance.unknown`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`acceptance.scope`)}),(0,B.jsx)(`dd`,{children:e.decision_scope??t(`acceptance.unknown`)})]})]})]},`${e.todo_id}:${n}`)):(0,B.jsx)(`p`,{children:t(`acceptance.noGuards`)}),(0,B.jsx)(`h4`,{children:t(`acceptance.next`)}),(0,B.jsx)(`p`,{children:o.next_action??t(`acceptance.unknown`)}),(0,B.jsxs)(`details`,{children:[(0,B.jsxs)(`summary`,{children:[t(`acceptance.historical_progress`),` · `,o.historical_progress.length]}),(0,B.jsx)(`p`,{children:t(`acceptance.historical`)}),o.historical_progress.map(e=>(0,B.jsxs)(`p`,{children:[(0,B.jsx)(`strong`,{children:a(e.kind)}),` · `,e.observed_at??t(`acceptance.unknown`),` `,e.evidence_refs.join(`, `)]},e.kind))]}),o.missing_sources.length?(0,B.jsxs)(`p`,{children:[t(`acceptance.missing`),` `,o.missing_sources.map(a).join(`, `)]}):null,o.truncated?(0,B.jsx)(`p`,{children:t(`acceptance.truncated`)}):null]}):null]})}function db({item:e,successor:t,onSelect:n}){let{t:r}=Ji(),i=e.details;return(0,B.jsxs)(`section`,{className:`personal-detail-card`,"aria-label":r(`attentionDetail.title`),children:[(0,B.jsx)(`h3`,{children:r(`attentionDetail.title`)}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`attentionDetail.request`)}),(0,B.jsx)(`dd`,{children:r(i?.interaction===`decision`?`attentionDetail.decision`:`attentionDetail.unknownRequest`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`common.status`)}),(0,B.jsx)(`dd`,{children:r(`attentionDetail.${i?.lifecycle??`unknown`}`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`drawer.reason`)}),(0,B.jsx)(`dd`,{children:i?.reason??e.explanation??r(`attentionDetail.unknownReason`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Todo`}),(0,B.jsx)(`dd`,{children:e.todoId})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`attentionDetail.targetTodo`)}),(0,B.jsx)(`dd`,{children:i?.unblocksTodoId??r(`attentionDetail.notProvided`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`attentionDetail.targetAgent`)}),(0,B.jsx)(`dd`,{children:i?.blocksAgent??r(`attentionDetail.notProvided`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`attentionDetail.scope`)}),(0,B.jsx)(`dd`,{children:i?.decisionScope?`${i.decisionScope.kind} · ${i.decisionScope.granularity} · ${i.decisionScope.scopeKey}`:r(`attentionDetail.notProvided`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`drawer.evidence`)}),(0,B.jsx)(`dd`,{children:i?.evidence??e.evidence??r(`drawer.decisionDefaultEvidence`)})]})]}),i?.supersededBy?(0,B.jsxs)(`p`,{children:[r(`attentionDetail.replacement`),`: `,i.supersededBy]}):null,t&&n?(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:()=>n(t),type:`button`,children:r(`attentionDetail.openReplacement`)}):null,(0,B.jsx)(`p`,{children:r(`attentionDetail.boundary`)})]})}function fb(e){return e.replace(/\s+/gu,` `).trim()}function pb(e,t){let n=RegExp(`(?:不要|不需要|无需|禁止|别|暂不|do not\\b|don't\\b|without\\b).{0,10}(?:${t.source})`,`iu`),r=RegExp(`(?:${t.source}).{0,10}(?:不要|不需要|无需|禁止|关闭)`,`iu`),i=RegExp(`disable\\b.{0,10}(?:${t.source})|(?:turn|switch|set)\\b.{0,10}(?:${t.source}).{0,10}\\boff\\b|(?:${t.source})\\s+(?:is\\s+)?disabled\\b`,`iu`);return n.test(e)||r.test(e)||i.test(e)}function mb(e){return/(我现在该做什么|下一步|哪些\s*Goal\s*在等我|需要我|谁在等我|Agent\s*在做什么|当前进度|总结(?:今天)?进展)/iu.test(e)}function hb(e){let t=/(怎么|如何|为什么|给.*建议|分析一下|解释|只读)/u.test(e),n=/(解决一下|修复一下|处理一下|执行一下|改一下|跑(?:一下)?测试|rebase|push|提交|推送)/iu.test(e);return!t&&n&&/(帮我|请|给我|直接|现在|开始|bytedcli|codebase|git|rebase|push|提交|推送)/iu.test(e)}function gb(e){return fb(e).toLowerCase().match(/(?:^|[\s,,;;:((:]|到|至)(?todo_done:todo_[a-z0-9_-]{3,64}|pr_merged:(?:(?:[a-z0-9_.-]{1,80})\/(?:[a-z0-9_.-]{1,100}))?#[1-9][0-9]{0,8}|capacity_available:[a-z][a-z0-9_:-]{0,63}|resume_at:[1-9][0-9]{3}-[0-9]{2}-[0-9]{2}t[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\.[0-9]{1,3})?(?:z|[+-][0-9]{2}:[0-9]{2}))(?=$|[\s,,。;;))])/iu)?.groups?.condition??null}function _b(e,t){let n=fb(e),r=[],i=t.agents.find(e=>{let t=n.toLowerCase();return t.includes(e.agentId.toLowerCase())||t.includes(e.label.toLowerCase())}),a=t.todos.find(e=>n.includes(e.todoId)||n.includes(e.text)),o=/(刚刚|已经|已)(?:经)?\s*(新增|创建|添加)(?:的)?\s*(todo|待办|任务)/iu.test(n),s=!!t.goalId&&!pb(n,/heartbeat|心跳/iu)&&/(heartbeat|心跳|每天推进|持续推进|daily progress)/iu.test(n);if(!t.goalId&&!pb(n,/goal|目标/iu)&&/(创建|新建|设置|create|start|set up).{0,24}(goal|目标)/iu.test(n)&&r.push({actionKind:`goal.create`,confidence:.97,normalizedParameters:{heartbeat_enabled:!pb(n,/heartbeat|心跳/iu)&&/(heartbeat|心跳|每天推进|持续推进|daily progress)/iu.test(n)}}),t.goalId&&s&&r.push({actionKind:`heartbeat.bind`,confidence:.96,normalizedParameters:{goal_id:t.goalId}}),t.goalId&&!s&&!pb(n,/定时|监控|监测|持续观察|scheduled check|monitor/iu)&&/(定时|监控|监测|每.{0,8}(分钟|小时|天)|持续观察|scheduled check|monitor|every.{0,12}(minute|hour|day)|daily)/iu.test(n)&&r.push({actionKind:`monitor.create`,confidence:.94,normalizedParameters:{goal_id:t.goalId}}),t.goalId&&i&&!pb(n,/绑定|负责|接管|管理/iu)&&/((让|交给).{0,20}(管理|负责|接管).{0,8}(goal|目标)|(绑定).{0,12}(goal|目标)|(goal|目标).{0,12}(交给|绑定|负责|接管))/iu.test(n)&&r.push({actionKind:`agent.bind`,confidence:.96,normalizedParameters:{agent_id:i.agentId,goal_id:t.goalId}}),t.goalId&&!o&&!pb(n,RegExp(`todo|待办|任务`,`iu`))&&/(创建|新建|新增|添加|加一个|记一个).{0,16}(todo|待办|任务)|(todo|待办|任务).{0,12}(创建|新建|新增|添加)|(?:create|add)(?:\s+(?:a|an|new))?\s+(?:todo|task)|(?:todo|task).{0,12}(?:create|add)/iu.test(n)&&r.push({actionKind:`todo.create`,confidence:.94,normalizedParameters:{goal_id:t.goalId}}),t.goalId&&hb(n)&&r.push({actionKind:`todo.create`,confidence:.9,normalizedParameters:{goal_id:t.goalId,start_execution:!0}}),t.goalId&&a){let e=!pb(n,/完成|做完|关闭/u)&&/完成|做完|关闭/u.test(n)?`complete`:!pb(n,/阻塞|卡住/u)&&/阻塞|卡住/u.test(n)?`block`:!pb(n,/暂缓|稍后|推迟/u)&&/暂缓|稍后|推迟/u.test(n)?`defer`:i&&!pb(n,/交给|分配给|改派/u)&&/交给|分配给|改派/u.test(n)?`reassign`:null;if(e){let i=e===`defer`?gb(n):null;if(e===`defer`&&!i)return{actionKind:`todo.update`,confidence:.97,missingFields:[`resume_when`],normalizedParameters:{goal_id:t.goalId,operation:e,todo_id:a.todoId},route:`clarify`};r.push({actionKind:`todo.update`,confidence:.97,normalizedParameters:{goal_id:t.goalId,operation:e,...i?{resume_when:i}:{},todo_id:a.todoId}})}}let c=[...new Map(r.map(e=>[e.actionKind,e])).values()];return c.length>1?{actionKind:null,confidence:.4,missingFields:[`single_intent`],normalizedParameters:{},route:`clarify`}:c.length===1?{...c[0],missingFields:[],route:`typed_action`}:!t.goalId&&mb(n)?{actionKind:null,confidence:.98,missingFields:[],normalizedParameters:{},route:`projection`}:{actionKind:null,confidence:.75,missingFields:[],normalizedParameters:{},route:`agent_chat`}}function vb(e,t,n){if(!e)return{};if(!t.trim())return{modelConfig:null};let r={model:t.trim()};return n&&(r.reasoning_effort=n),{modelConfig:r}}var yb=[`a[href]`,`button:not([disabled])`,`textarea:not([disabled])`,`select:not([disabled])`,`input:not([disabled])`,`[tabindex]:not([tabindex='-1'])`].join(`,`),bb=[{key:`drawer.taskBlock`,operation:`block`},{key:`drawer.taskSuccessor`,operation:`successor_create`}],xb=[{key:`drawer.decisionReject`,resolution:`reject`},{key:`drawer.decisionDefer`,resolution:`defer`}],Sb=Array.from({length:32},(e,t)=>t+1),Cb=/^[a-z][a-z0-9_.-]{0,63}$/u;function wb(e){let t=String(e??``).trim().toLowerCase();return Cb.test(t)?t:null}function Tb(e,t){return e.enabled===t.enabled&&e.maxChildren===t.maxChildren&&JSON.stringify(e.modelConfig??null)===JSON.stringify(t.modelConfig??null)&&[...e.allowedDomains].sort((e,t)=>e.localeCompare(t)).join(`\0`)===[...t.allowedDomains].sort((e,t)=>e.localeCompare(t)).join(`\0`)}function Eb({agents:e,attentionHistory:t=[],onSelectAttention:n,callbacks:r,goalNotifications:i=[],goals:a=[],inspectorExpanded:o=!1,larkConnections:s=[],onClose:c,onToggleInspectorSize:l,readOnly:u=!1,runs:d=[],selection:f}){let{locale:p,t:m}=Ji(),[h,g]=(0,z.useState)(``),[_,v]=(0,z.useState)(!1),[y,b]=(0,z.useState)(`idle`),[x,S]=(0,z.useState)(`record`),[C,w]=(0,z.useState)([]),[T,E]=(0,z.useState)(null),[D,O]=(0,z.useState)(2),[k,ee]=(0,z.useState)(``),[te,A]=(0,z.useState)(``),[j,M]=(0,z.useState)(`idle`),[ne,N]=(0,z.useState)(null),[P,re]=(0,z.useState)(null),ie=(0,z.useRef)(null),ae=(0,z.useRef)(null),[F,oe]=(0,z.useState)(e.find(e=>e.available)?.agentId??`codex`),[I,se]=(0,z.useState)(``),L=(0,z.useRef)(null),ce=(0,z.useRef)(null),le=(0,z.useRef)(null),ue=(0,z.useRef)(null),de=f.kind===`run`?`run:${f.item.runId}`:f.kind===`proposal`?`proposal:${f.item.previewId}`:f.kind===`todo`?`todo:${f.item.todoId}`:f.kind===`attention`?`attention:${f.item.todoId}`:f.kind===`output`?`output:${f.item.outputId}`:f.kind===`schedule`?`schedule:${f.item.scheduleId}`:`goal:${f.item.goalId}`;(0,z.useEffect)(()=>{b(`idle`),v(!1),S(`record`),se(``);let e=f.kind===`goal`?f.item.subagentExecution:void 0;w(e?.allowedDomains??[]),ee(e?.modelConfig?.model??``),A(e?.modelConfig?.reasoning_effort??``),O(e?.maxChildren?Math.min(e.maxChildren,32):2),E(null),M(`idle`),N(null),re(null),ie.current=e??null,ae.current=null},[de]);let fe=f.kind===`goal`?f.item.subagentExecution:void 0;(0,z.useEffect)(()=>{let e=ie.current,t=fe?!e||!Tb(e,fe):e!==null;if(ie.current=fe??null,!P){t&&fe&&(w(fe.allowedDomains),ee(fe.modelConfig?.model??``),A(fe.modelConfig?.reasoning_effort??``),O(fe.maxChildren||2),E(null),M(`idle`),N(null));return}let n=ae.current;(!fe||Tb(P,fe)||n&&!Tb(n,fe))&&(fe&&(w(fe.allowedDomains),ee(fe.modelConfig?.model??``),A(fe.modelConfig?.reasoning_effort??``),O(fe.maxChildren||2)),ae.current=null,re(null))},[fe,P]),(0,z.useEffect)(()=>{let e=document.activeElement;e instanceof HTMLElement&&!ce.current?.contains(e)&&(le.current=e);let t=window.requestAnimationFrame(()=>ue.current?.focus());return()=>window.cancelAnimationFrame(t)},[de]);let pe=(0,z.useCallback)(()=>{let e=le.current;c(),window.requestAnimationFrame(()=>e?.focus())},[c]);(0,z.useEffect)(()=>{function e(e){if(e.key===`Escape`){e.preventDefault(),pe();return}if(e.key===`Tab`&&f.kind!==`todo`){let t=Array.from(ce.current?.querySelectorAll(yb)??[]).filter(e=>!e.hasAttribute(`disabled`)&&e.getAttribute(`aria-hidden`)!==`true`);if(t.length===0)return;let n=t[0],r=t[t.length-1];e.shiftKey&&document.activeElement===n?(e.preventDefault(),r.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n.focus())}}return document.addEventListener(`keydown`,e),()=>{document.removeEventListener(`keydown`,e)}},[pe,f.kind]);let me=f.kind===`attention`?m(`drawer.titleAttention`):f.kind===`todo`?m(`drawer.taskDetails`):f.kind===`run`?m(`drawer.runDetails`):f.kind===`output`?m(`drawer.titleOutput`):f.kind===`proposal`?m(f.item.status===`applied`?`drawer.titleProposalApplied`:`drawer.titleProposalConfirm`):f.kind===`schedule`?f.item.scheduleKind===`heartbeat`?`Heartbeat`:m(`drawer.titleSchedule`):m(`drawer.goalDetails`),he=f.kind===`proposal`?f.item.goalId??`manager`:f.item.goalId,ge=f.kind===`attention`?f.item.goalTitle??m(`drawer.currentGoal`):f.kind===`todo`||f.kind===`run`?f.item.goalTitle:f.kind===`output`?f.item.goalTitle??m(`drawer.currentGoal`):f.kind===`goal`?f.item.title:f.kind===`schedule`?m(`drawer.goalAutoRun`):f.item.goalId?m(`drawer.goalChanges`):m(`drawer.managerChanges`),_e=f.kind===`goal`?d.find(e=>e.goalId===f.item.goalId&&!!e.sessionId)??d.find(e=>e.goalId===f.item.goalId):null,ve=f.kind===`run`&&(f.item.completedSteps>0||!!f.item.latestActivity||!!f.item.outputs?.length),ye=f.kind===`attention`?Zi(f.item.updatedAt,m):null,be=gb(I);async function xe(){f.kind!==`run`||!h.trim()||(await r.onCorrectRun?.(f.item,h.trim()),g(``))}async function Se(e,t,n,i){if(t===`successor_create`){await r.onPreviewAction?.({actionKind:`todo.create`,context:{goal_id:e.goalId,kind:`todo`,todo_id:e.todoId},idempotencyKey:`workspace-todo-successor-${e.todoId}-${Date.now().toString(36)}`,normalizedParameters:{goal_id:e.goalId,text:m(`drawer.taskSuccessorText`,{task:e.text})},summary:m(`drawer.taskSuccessorSummary`,{task:e.text})});return}await r.onPreviewAction?.({actionKind:`todo.update`,context:{goal_id:e.goalId,kind:`todo`,todo_id:e.todoId},idempotencyKey:`workspace-todo-${e.todoId}-${t}-${Date.now().toString(36)}`,normalizedParameters:{agent_id:e.claimedBy??F,goal_id:e.goalId,operation:t,...t===`block`?{note:m(`drawer.taskSuccessorNote`)}:{},...t===`defer`&&i?{resume_when:i}:{},todo_id:e.todoId},summary:`${n}:${e.text}`})}async function Ce(e,t,n){u||!Xd(e)||await r.onPreviewAction?.({actionKind:`gate.resolve`,context:{goal_id:e.goalId,kind:`todo`,todo_id:e.todoId},idempotencyKey:`workspace-decision-${e.todoId}-${t}-${Date.now().toString(36)}`,normalizedParameters:{goal_id:e.goalId,decision:t,todo_id:e.todoId},summary:`${n}:${e.text}`})}let we=f.kind===`goal`?P??f.item.subagentExecution??{allowedDomains:[],domainCandidates:[],enabled:!1,maxChildren:0}:{allowedDomains:[],domainCandidates:[],enabled:!1,maxChildren:0},Te=j===`previewing`||j===`applying`,Ee=(()=>{if(f.kind!==`goal`)return[];let e=new Map;for(let t of we.allowedDomains){let n=wb(t);n&&e.set(n,{matchingTodoCount:0,value:n})}if(we.domainCandidates)for(let t of we.domainCandidates){let n=wb(t.domain);if(!n)continue;let r=e.get(n);e.set(n,{matchingTodoCount:(r?.matchingTodoCount??0)+t.matchingTodoCount,value:n})}else for(let t of f.item.agentTodos){if(t.done||t.taskClass!==`advancement_task`)continue;let n=wb(t.taskDomain);if(!n)continue;let r=e.get(n);e.set(n,{matchingTodoCount:(r?.matchingTodoCount??0)+1,value:n})}return[...e.values()]})();function De(){w(we.allowedDomains),ee(we.modelConfig?.model??``),A(we.modelConfig?.reasoning_effort??``),O(we.maxChildren||2),E(null),M(`idle`),N(null)}function Oe(){let e=[...new Set(C.map(e=>wb(e)))];return e.every(e=>!!e)?e:null}function ke(e,t){w(n=>t?[...n,e].filter((e,t,n)=>n.indexOf(e)===t):n.filter(t=>t!==e)),N(null),M(`idle`),E(null)}async function Ae(e,t=e){if(f.kind!==`goal`||!r.onPreviewGoalSubagentConfiguration)return;let n=e?Oe():[];if(t&&!k.trim()&&te){M(`error`),E(m(`drawer.subagentModelRequired`));return}if(e&&!n){M(`error`),E(m(`drawer.subagentDomainInvalid`)),N(null);return}let i={allowedDomains:n??[],enabled:e,goalId:f.item.goalId,maxChildren:e?D:0,...vb(t,k,te)};M(`previewing`),E(m(`drawer.subagentPreviewing`)),N(null);try{let e=await r.onPreviewGoalSubagentConfiguration(i);if(!e.changed){ae.current=fe??null,re({...e.configuration,domainCandidates:we.domainCandidates}),w(e.configuration.allowedDomains),ee(e.configuration.modelConfig?.model??``),A(e.configuration.modelConfig?.reasoning_effort??``),O(e.configuration.maxChildren||2),M(`success`),E(m(`drawer.subagentNoChange`));return}N({...i,changed:e.changed,previewId:e.previewId}),M(`ready`),E(m(`drawer.subagentPreviewReady`))}catch(e){M(`error`),E(e instanceof Error?e.message:m(`drawer.subagentPreviewFailed`))}}async function R(){if(!(!ne||!r.onApplyGoalSubagentConfiguration)){M(`applying`),E(m(`drawer.subagentApplying`));try{let e=await r.onApplyGoalSubagentConfiguration({allowedDomains:ne.allowedDomains,enabled:ne.enabled,goalId:ne.goalId,maxChildren:ne.maxChildren,modelConfig:ne.modelConfig,previewId:ne.previewId});ae.current=fe??null,re({...e,domainCandidates:we.domainCandidates}),w(e.allowedDomains),ee(e.modelConfig?.model??``),A(e.modelConfig?.reasoning_effort??``),O(e.maxChildren||2),M(`success`),E(m(`drawer.subagentApplied`)),N(null);try{await r.onRefresh?.()}catch{M(`warning`),E(m(`drawer.subagentAppliedRefreshFailed`))}}catch(e){M(`error`),E(e instanceof Error?e.message:m(`drawer.subagentApplyFailed`))}}}return(0,B.jsxs)(`div`,{"aria-labelledby":`personal-drawer-title`,"aria-modal":f.kind===`todo`?void 0:`true`,className:`personal-context-drawer`,"data-context-kind":f.kind,ref:ce,role:`dialog`,children:[(0,B.jsxs)(`header`,{className:`personal-drawer-header${f.kind===`todo`?` is-task-inspector`:``}`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`h2`,{id:`personal-drawer-title`,ref:ue,tabIndex:-1,children:me}),(0,B.jsx)(`p`,{children:ge})]}),(0,B.jsxs)(`div`,{className:`personal-drawer-header-actions`,children:[f.kind===`todo`&&l?(0,B.jsx)(`button`,{"aria-label":m(o?`drawer.inspectorHalf`:`drawer.inspectorFull`),className:`personal-icon-button personal-inspector-size`,onClick:l,title:m(o?`drawer.inspectorHalfView`:`drawer.inspectorFullView`),type:`button`,children:o?(0,B.jsx)(Pm,{size:17}):(0,B.jsx)(Am,{size:17})}):null,(0,B.jsxs)(`button`,{"aria-label":m(`drawer.closeDetail`,{context:ge}),className:`personal-icon-button personal-drawer-close`,onClick:pe,ref:L,type:`button`,children:[(0,B.jsx)(Xp,{className:`personal-mobile-back`,size:18}),(0,B.jsx)(ah,{className:`personal-desktop-close`,size:18})]})]})]}),(0,B.jsxs)(`div`,{className:`personal-drawer-body`,children:[f.kind===`attention`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-detail-card is-attention`,children:[(0,B.jsx)(`small`,{children:f.item.blocking?m(`drawer.attentionBlocking`):m(`drawer.attentionWaiting`)}),(0,B.jsx)(`h3`,{children:f.item.text}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Goal`}),(0,B.jsx)(`dd`,{children:f.item.goalTitle??f.item.goalId})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.priority`)}),(0,B.jsx)(`dd`,{children:f.item.priority??`medium`})]}),ye?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`common.waiting`)}),(0,B.jsx)(`dd`,{children:m(`tasks.waitingAge`,{age:ye})})]}):null]})]}),(0,B.jsx)(db,{item:f.item,onSelect:n,successor:Yd(f.item,t)}),!u&&Xd(f.item)?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>void Ce(f.item,`approve`,m(`common.confirm`)),type:`button`,children:[(0,B.jsx)(am,{size:17}),m(`drawer.decisionReview`)]}),(0,B.jsxs)(`details`,{className:`personal-compact-menu`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(gm,{size:17}),m(`drawer.decisionMore`)]}),(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`button`,{onClick:()=>void r.onExplainDecision?.(f.item),type:`button`,children:[(0,B.jsx)(Mm,{size:16}),m(`drawer.explainDecision`)]}),xb.map(e=>(0,B.jsx)(`button`,{onClick:()=>void Ce(f.item,e.resolution,m(e.key)),type:`button`,children:m(e.key)},e.resolution))]})]})]}):null]}):null,f.kind===`todo`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-task-inspector-summary`,children:[(0,B.jsxs)(`div`,{className:`personal-task-inspector-status`,children:[(0,B.jsxs)(`span`,{className:f.item.done?`is-done`:f.item.status===`blocked`?`is-blocked`:`is-open`,children:[(0,B.jsx)(`i`,{}),f.item.done?m(`drawer.taskStatusCompleted`):f.item.status===`deferred`?m(`drawer.taskStatusDeferred`):f.item.status===`blocked`?m(`drawer.taskStatusBlocked`):m(`drawer.taskStatusOpen`)]}),f.item.priority?(0,B.jsx)(`span`,{children:f.item.priority}):null,(0,B.jsx)(`span`,{children:f.item.taskClass===`advancement_task`?m(`drawer.taskAdvancement`):f.item.taskClass??m(`drawer.taskOrdinary`)})]}),(0,B.jsx)(`h3`,{children:f.item.text})]}),(0,B.jsxs)(`section`,{"aria-label":m(`drawer.taskInfo`),className:`personal-task-inspector-fields`,children:[(0,B.jsx)(`h4`,{children:m(`drawer.taskInfo`)}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Goal`}),(0,B.jsx)(`dd`,{children:f.item.goalTitle})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`common.owner`)}),(0,B.jsx)(`dd`,{children:f.item.ownerLabel??f.item.claimedBy??m(`drawer.notAssigned`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`common.status`)}),(0,B.jsx)(`dd`,{children:f.item.done?m(`drawer.taskStatusCompleted`):f.item.status===`deferred`?m(`drawer.taskStatusDeferred`):f.item.status===`blocked`?m(`drawer.taskStatusBlocked`):m(`drawer.taskStatusOpen`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.priority`)}),(0,B.jsx)(`dd`,{children:f.item.priority??m(`drawer.notSet`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.dependencies`)}),(0,B.jsx)(`dd`,{children:f.item.dependencies?.join(` · `)||m(`common.none`)})]}),f.item.status===`deferred`||f.item.resumeWhen?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.resumeWhen`)}),(0,B.jsx)(`dd`,{children:f.item.resumeWhen||m(`drawer.notSet`)})]}):null,f.item.resumeWhen?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.resumeState`)}),(0,B.jsx)(`dd`,{children:f.item.resumeReady?m(`drawer.resumeReady`):m(`drawer.resumePending`)})]}):null,f.item.resumeReceiptId?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.resumeReceipt`)}),(0,B.jsx)(`dd`,{children:f.item.resumeReceiptId})]}):null,(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.nextTransition`)}),(0,B.jsx)(`dd`,{children:f.item.nextTransition??(f.item.done?m(`drawer.taskNextCompleted`):f.item.resumeReady?m(`drawer.taskNextResumeReady`):f.item.status===`deferred`?m(`drawer.taskNextDeferred`):m(`drawer.taskNextOpen`))})]})]})]}),!u&&!f.item.done?(0,B.jsxs)(`div`,{className:`personal-task-inspector-actions`,"aria-label":m(`drawer.taskActions`),children:[(0,B.jsxs)(`details`,{className:`personal-task-management`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(gm,{size:16}),m(`drawer.taskManage`)]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:m(`drawer.reassign`)}),(0,B.jsxs)(`label`,{className:`personal-inline-agent-select`,children:[m(`drawer.reassign`),(0,B.jsx)(`select`,{"aria-label":m(`drawer.reassign`),onChange:e=>oe(e.target.value),value:F,children:e.filter(e=>e.available).map(e=>(0,B.jsx)(`option`,{value:e.agentId,children:e.label},e.agentId))}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onPreviewAction?.({actionKind:`todo.update`,context:{goal_id:f.item.goalId,kind:`todo`,todo_id:f.item.todoId},idempotencyKey:`workspace-todo-${f.item.todoId}-reassign-${F}-${Date.now().toString(36)}`,normalizedParameters:{agent_id:F,goal_id:f.item.goalId,operation:`reassign`,todo_id:f.item.todoId},summary:m(`drawer.reassignSummary`,{task:f.item.text})}),type:`button`,children:m(`timeline.review`)})]}),(0,B.jsx)(`strong`,{children:m(`drawer.taskDeferUntil`)}),(0,B.jsxs)(`label`,{className:`personal-inline-agent-select personal-inline-resume-when`,children:[m(`drawer.taskDeferUntil`),(0,B.jsx)(`input`,{"aria-label":m(`drawer.taskDeferCondition`),"aria-invalid":!!I.trim()&&!be,onChange:e=>se(e.target.value),placeholder:m(`drawer.taskDeferPlaceholder`),value:I}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,disabled:!be,onClick:()=>void Se(f.item,`defer`,m(`drawer.taskDefer`),be??void 0),type:`button`,children:m(`drawer.taskDeferReview`)}),(0,B.jsx)(`small`,{children:I.trim()&&!be?m(`drawer.taskDeferInvalid`):m(`drawer.taskDeferSupported`)})]}),(0,B.jsx)(`div`,{className:`personal-task-management-secondary`,children:bb.map(e=>(0,B.jsx)(`button`,{onClick:()=>void Se(f.item,e.operation,m(e.key)),type:`button`,children:m(e.key)},e.operation))})]})]}),(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>void Se(f.item,`complete`,m(`drawer.taskComplete`)),type:`button`,children:[(0,B.jsx)(am,{size:17}),m(`drawer.taskComplete`)]})]}):null,f.item.done?(0,B.jsxs)(`div`,{className:`personal-task-completed-note`,children:[(0,B.jsx)(am,{size:16}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:m(`drawer.taskCompletedTitle`)}),(0,B.jsx)(`small`,{children:m(`drawer.taskCompletedNote`)})]})]}):null]}):null,f.kind===`goal`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-detail-card`,children:[(0,B.jsx)(`small`,{children:Yi(f.item.state,p)}),(0,B.jsx)(`h3`,{children:f.item.title}),(0,B.jsx)(`p`,{children:f.item.agentSentence}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.tokens`)}),(0,B.jsxs)(`dd`,{children:[Ky(f.item.usage?.tokens24h,m(`drawer.usageNotMeasured`),Uy),` / `,Ky(f.item.usage?.tokens7d,m(`drawer.usageNotMeasured`),Uy)]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.cost`)}),(0,B.jsxs)(`dd`,{children:[Ky(f.item.usage?.costUsd24h,m(`drawer.usageNotMeasured`),Wy),` / `,Ky(f.item.usage?.costUsd7d,m(`drawer.usageNotMeasured`),Wy)]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.duration`)}),(0,B.jsxs)(`dd`,{children:[Ky(f.item.usage?.durationMs24h,m(`drawer.usageNotMeasured`),Gy),` / `,Ky(f.item.usage?.durationMs7d,m(`drawer.usageNotMeasured`),Gy)]})]})]})]}),(0,B.jsx)(ub,{goal:f.item}),(()=>{let e=i.find(e=>e.goalId===f.item.goalId),t=s.find(e=>e.goal_id===f.item.goalId);return(0,B.jsxs)(B.Fragment,{children:[f.item.repository?(0,B.jsxs)(`section`,{className:`personal-detail-card personal-goal-repository`,children:[(0,B.jsxs)(`div`,{className:`personal-detail-card-title`,children:[(0,B.jsx)(`small`,{children:m(`drawer.repository`)}),(0,B.jsx)(`em`,{children:m(`common.readOnly`)})]}),(0,B.jsxs)(`h3`,{children:[(0,B.jsx)(Sm,{size:16}),f.item.repository.label]}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.branch`)}),(0,B.jsx)(`dd`,{children:f.item.repository.branch||`detached`})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Role`}),(0,B.jsx)(`dd`,{children:m(`drawer.repositoryRole`)})]})]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>{let e=navigator.clipboard?.writeText(f.item.repository?.identity??``);if(!e){b(`error`);return}e.then(()=>b(`copied`)).catch(()=>b(`error`))},type:`button`,children:[(0,B.jsx)(pm,{size:15}),m(y===`copied`?`drawer.copyRepositoryDone`:`drawer.copyRepository`)]}),y===`error`?(0,B.jsx)(`p`,{className:`personal-copy-feedback is-error`,role:`status`,children:m(`drawer.copyRepositoryError`)}):y===`copied`?(0,B.jsx)(`p`,{className:`personal-copy-feedback`,role:`status`,children:m(`drawer.copyRepositorySuccess`)}):null]}):null,u?(0,B.jsxs)(`section`,{className:`personal-detail-card personal-goal-notification`,children:[(0,B.jsx)(`small`,{children:m(`drawer.larkConnection`)}),(0,B.jsx)(`h3`,{children:m(`drawer.remoteDetailsUnavailable`)}),(0,B.jsx)(`p`,{children:m(`drawer.remoteDetailsDescription`)})]}):(0,B.jsxs)(`section`,{className:`personal-detail-card personal-goal-notification`,children:[(0,B.jsx)(`small`,{children:m(`drawer.larkConnection`)}),t?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`h3`,{children:[t.app_label,(0,B.jsx)(`span`,{className:`personal-connection-status`,children:m(`drawer.connected`)})]}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.group`)}),(0,B.jsx)(`dd`,{children:t.chat_name})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.topic`)}),(0,B.jsxs)(`dd`,{children:[`# `,t.topic_name]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.trigger`)}),(0,B.jsx)(`dd`,{children:t.incoming_mode===`mentions`?m(`lark.someoneMentions`):m(`lark.allMessages`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.replyMode`)}),(0,B.jsx)(`dd`,{children:m(`lark.topicReply`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.autoNotify`)}),(0,B.jsx)(`dd`,{children:e?.humanGateAutoNotifyEnabled?m(`common.on`):m(`common.off`)})]}),e?.lastNotifiedAt?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.lastNotification`)}),(0,B.jsx)(`dd`,{children:e.lastNotifiedAt})]}):null]})]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`h3`,{children:m(`drawer.larkNotConfigured`)}),(0,B.jsx)(`p`,{children:m(`drawer.larkNotConfiguredDescription`)})]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>r.onOpenNotificationSettings?.(f.item.goalId),type:`button`,children:[(0,B.jsx)(tm,{size:16}),m(t?`drawer.larkConfigure`:`drawer.larkConnect`)]})]})]})})(),(0,B.jsxs)(`section`,{className:`personal-detail-card personal-goal-session`,children:[(0,B.jsx)(`small`,{children:m(`drawer.runDetails`)}),_e?.sessionId?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`h3`,{children:Xi(_e.sessionStatus??_e.status,m)}),(0,B.jsx)(`p`,{children:_e.title}),r.onOpenRunSession?(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>void r.onOpenRunSession?.(_e),type:`button`,children:[(0,B.jsx)(zm,{size:16}),m(`drawer.runLatest`)]}):null]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`h3`,{children:m(`drawer.noRun`)}),(0,B.jsx)(`p`,{children:m(`drawer.noRunDescription`)})]})]}),u?null:(0,B.jsxs)(`div`,{className:`personal-drawer-action-grid`,children:[(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>r.onRequestScheduleConfig?.(`heartbeat`,f.item.goalId),type:`button`,children:[(0,B.jsx)(Vm,{size:16}),m(`drawer.setupHeartbeat`)]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>r.onRequestScheduleConfig?.(`monitor`,f.item.goalId),type:`button`,children:[(0,B.jsx)(im,{size:16}),m(`drawer.scheduleAdd`)]})]}),f.item.subagentExecution?(0,B.jsxs)(`section`,{className:`personal-detail-card personal-goal-subagents`,children:[(0,B.jsxs)(`div`,{className:`personal-subagent-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`small`,{children:m(`drawer.subagentLabel`)}),(0,B.jsxs)(`h3`,{children:[(0,B.jsx)(nm,{size:16}),m(`drawer.subagentTitle`)]})]}),(0,B.jsxs)(`button`,{"aria-checked":we.enabled,"aria-label":m(ne&&j===`ready`?`drawer.subagentPending`:we.enabled?`drawer.subagentDisable`:`drawer.subagentEnable`),className:`personal-subagent-switch`,"data-pending":ne&&j===`ready`?`true`:void 0,disabled:u||Te||!!ne||!r.onPreviewGoalSubagentConfiguration,onClick:()=>void Ae(!we.enabled),role:`switch`,type:`button`,children:[(0,B.jsx)(`span`,{}),m(ne&&j===`ready`?`drawer.subagentPending`:we.enabled?`common.on`:`common.off`)]})]}),(0,B.jsx)(`p`,{children:m(`drawer.subagentDescription`)}),ne&&j===`ready`?(0,B.jsxs)(`div`,{className:`personal-subagent-preview`,children:[(0,B.jsx)(`strong`,{children:m(ne.enabled?`drawer.subagentConfirmEnable`:`drawer.subagentConfirmDisable`)}),(0,B.jsx)(`p`,{children:ne.enabled?m(`drawer.subagentPreviewSummary`,{count:ne.maxChildren,domains:ne.allowedDomains.join(` · `)||m(`drawer.subagentDomainsUnrestricted`)}):m(`drawer.subagentDisableSummary`)}),ne.modelConfig===void 0?null:(0,B.jsxs)(`p`,{children:[m(`drawer.subagentModel`),`: `,ne.modelConfig?.model||m(`drawer.subagentModelDefault`),` · `,ne.modelConfig?.reasoning_effort||m(`drawer.subagentModelDefault`)]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`button`,{className:`personal-primary-action`,onClick:()=>void R(),type:`button`,children:m(`common.confirm`)}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:De,type:`button`,children:m(`common.cancel`)})]})]}):null,T?(0,B.jsxs)(`p`,{className:`personal-subagent-feedback is-${j}`,role:`status`,children:[j===`previewing`||j===`applying`?(0,B.jsx)(Um,{className:`personal-spin`,size:13}):null,T]}):null,(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.subagentModel`)}),(0,B.jsx)(`dd`,{children:we.modelConfig?.model||m(`drawer.subagentModelDefault`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.subagentEffort`)}),(0,B.jsx)(`dd`,{children:we.modelConfig?.reasoning_effort||m(`drawer.subagentModelDefault`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.subagentCurrentBoundary`)}),(0,B.jsx)(`dd`,{children:we.allowedDomains.join(` · `)||m(`drawer.subagentDomainsUnrestricted`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.subagentChildLimit`)}),(0,B.jsx)(`dd`,{children:we.maxChildren||0})]})]}),u?(0,B.jsx)(`p`,{className:`personal-subagent-read-only`,children:m(`drawer.subagentRemoteReadOnly`)}):(0,B.jsxs)(`div`,{className:`personal-subagent-fields`,children:[(0,B.jsxs)(`fieldset`,{className:`personal-subagent-domain-picker`,disabled:Te,children:[(0,B.jsx)(`legend`,{children:m(`drawer.subagentDomains`)}),Ee.length>0?(0,B.jsx)(`div`,{className:`personal-subagent-domain-options`,children:Ee.map(e=>{let t=C.includes(e.value);return(0,B.jsxs)(`label`,{className:`personal-subagent-domain-option${t?` is-selected`:``}`,children:[(0,B.jsx)(`input`,{"aria-label":e.value,checked:t,onChange:t=>ke(e.value,t.target.checked),type:`checkbox`}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.value}),(0,B.jsx)(`small`,{children:m(`drawer.subagentDomainTodoCount`,{count:e.matchingTodoCount})})]})]},e.value)})}):(0,B.jsx)(`p`,{className:`personal-subagent-domain-empty`,children:m(`drawer.subagentDomainsEmpty`)}),(0,B.jsx)(`small`,{children:m(`drawer.subagentDomainsHint`)})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:m(`drawer.subagentModel`)}),(0,B.jsx)(`input`,{"aria-label":m(`drawer.subagentModel`),disabled:Te,value:k,placeholder:`gpt-5.6-luna`,onChange:e=>{ee(e.target.value),N(null),M(`idle`),E(null)}})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:m(`drawer.subagentEffort`)}),(0,B.jsxs)(`select`,{"aria-label":m(`drawer.subagentEffort`),disabled:Te,value:te,onChange:e=>{A(e.target.value),N(null),M(`idle`),E(null)},children:[(0,B.jsx)(`option`,{value:``,children:m(`drawer.subagentModelDefault`)}),[`none`,`minimal`,`low`,`medium`,`high`,`xhigh`,`max`,`ultra`].map(e=>(0,B.jsx)(`option`,{value:e,children:e},e))]})]}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,disabled:Te,type:`button`,onClick:()=>{ee(`gpt-5.6-luna`),A(`max`),N(null),M(`idle`),E(null)},children:m(`drawer.subagentLunaPreset`)}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,disabled:Te,type:`button`,onClick:()=>{ee(``),A(``),N(null),M(`idle`),E(null)},children:m(`drawer.subagentClearModel`)}),(0,B.jsx)(`p`,{children:m(`drawer.subagentModelHint`)}),(0,B.jsxs)(`label`,{className:`personal-subagent-limit-field`,children:[(0,B.jsx)(`span`,{children:m(`drawer.subagentMaxChildren`)}),(0,B.jsx)(`select`,{"aria-label":m(`drawer.subagentMaxChildren`),disabled:Te,onChange:e=>{O(Number(e.target.value)),N(null),M(`idle`),E(null)},value:D,children:Sb.map(e=>(0,B.jsx)(`option`,{value:e,children:e},e))})]}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,disabled:Te,onClick:()=>void Ae(we.enabled,!0),type:`button`,children:m(`drawer.subagentPreviewBoundary`)})]})]}):null]}):null,f.kind===`run`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`div`,{"aria-label":m(`drawer.runView`),className:`personal-run-drawer-tabs`,role:`tablist`,children:[(0,B.jsx)(`button`,{"aria-selected":x===`record`,onClick:()=>S(`record`),role:`tab`,type:`button`,children:m(`drawer.executionRecordAndResult`)}),(0,B.jsx)(`button`,{"aria-selected":x===`details`,onClick:()=>S(`details`),role:`tab`,type:`button`,children:m(`drawer.detailsAndActions`)})]}),x===`record`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-detail-card personal-session-summary`,children:[(0,B.jsxs)(`small`,{children:[f.item.agentLabel,` · `,Xi(f.item.sessionStatus??f.item.status,m)]}),(0,B.jsx)(`h3`,{children:f.item.title}),(0,B.jsx)(`p`,{children:f.item.latestActivity}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Goal`}),(0,B.jsx)(`dd`,{children:f.item.goalTitle})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.progress`)}),(0,B.jsxs)(`dd`,{children:[f.item.completedSteps,`/`,f.item.totalSteps]})]})]})]}),(0,B.jsxs)(`section`,{"aria-label":m(`drawer.executionRecord`),className:`personal-session-message-record`,children:[(0,B.jsx)(`h3`,{children:m(`drawer.executionRecord`)}),f.item.sessionMessages?.length?(0,B.jsx)(`ol`,{children:f.item.sessionMessages.map(e=>(0,B.jsxs)(`li`,{className:`is-${e.role}`,children:[(0,B.jsx)(`i`,{}),(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:e.role===`user`?m(`drawer.runRoleUser`):e.role===`assistant`?m(`drawer.runRoleAssistant`):m(`drawer.runRoleSystem`)}),e.createdAt?(0,B.jsx)(`time`,{children:new Date(e.createdAt).toLocaleTimeString(p,{hour:`2-digit`,minute:`2-digit`,hour12:!1})}):null]}),(0,B.jsx)(`p`,{children:e.text})]})]},e.messageId))}):(0,B.jsx)(`p`,{className:`personal-session-empty`,children:ve?m(`drawer.runRecordProjected`,{completed:f.item.completedSteps,outputs:f.item.outputs?.length?m(`drawer.runRecordProjectedOutputs`,{count:f.item.outputs.length}):``,total:f.item.totalSteps}):m(`drawer.runRecordEmpty`)}),f.item.status===`running`?(0,B.jsxs)(`div`,{className:`personal-session-active-step`,children:[(0,B.jsx)(`i`,{}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:m(`drawer.analysis`)}),(0,B.jsx)(`small`,{children:m(`drawer.agentWorking`)})]})]}):null]}),f.item.outputs?.length?(0,B.jsxs)(`section`,{className:`personal-execution-history`,"aria-labelledby":`personal-run-outputs-title`,children:[(0,B.jsx)(`h3`,{id:`personal-run-outputs-title`,children:m(`drawer.outputs`)}),(0,B.jsx)(`ol`,{children:f.item.outputs.map(e=>(0,B.jsx)(`li`,{children:(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.title}),(0,B.jsx)(`small`,{children:e.createdAt??e.kind??m(`files.emptySummary`)})]})},e.outputId))})]}):null]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-detail-card`,children:[(0,B.jsxs)(`small`,{children:[f.item.agentLabel,` · `,Xi(f.item.status,m)]}),(0,B.jsx)(`h3`,{children:f.item.title}),(0,B.jsx)(`p`,{children:f.item.latestActivity}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Goal`}),(0,B.jsx)(`dd`,{children:f.item.goalTitle})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.progress`)}),(0,B.jsxs)(`dd`,{children:[f.item.completedSteps,`/`,f.item.totalSteps]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.sessionStatus`)}),(0,B.jsx)(`dd`,{children:Xi(f.item.sessionStatus??f.item.status,m)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.sessionRecoverable`)}),(0,B.jsx)(`dd`,{children:f.item.resumable===!1?m(`drawer.resumeNo`):m(`drawer.resumeYes`)})]})]})]}),f.item.sessionStatus===`resume_failed`&&!u?(0,B.jsxs)(`section`,{className:`personal-recovery-panel`,"aria-label":m(`drawer.recoveryFailed`),children:[(0,B.jsx)(`strong`,{children:m(`drawer.recoveryFailed`)}),(0,B.jsx)(`p`,{children:m(`drawer.recoveryDescription`)}),(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>void r.onRetryResumeRun?.(f.item),type:`button`,children:[(0,B.jsx)(Um,{size:16}),m(`drawer.recoveryRetry`)]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onStartNewRunSession?.(f.item),type:`button`,children:[(0,B.jsx)(zm,{size:16}),m(`drawer.recoveryNewSession`)]})]}):null,u?null:(0,B.jsxs)(`section`,{className:`personal-correction-panel`,children:[(0,B.jsx)(`header`,{children:(0,B.jsxs)(`span`,{children:[(0,B.jsx)(nm,{size:16}),m(`drawer.correctionLabel`,{agent:f.item.agentLabel})]})}),(0,B.jsx)(`p`,{children:m(`drawer.correctionDescription`)}),(0,B.jsxs)(`div`,{className:`personal-correction-composer`,children:[(0,B.jsx)(`textarea`,{"aria-label":m(`drawer.correctionTextarea`,{agent:f.item.agentLabel,goal:f.item.goalTitle,run:f.item.title}),onChange:e=>g(e.target.value),placeholder:m(`drawer.correctionPlaceholder`),rows:3,value:h}),(0,B.jsx)(`button`,{"aria-label":m(`drawer.correctionSend`),disabled:!h.trim(),onClick:()=>void xe(),type:`button`,children:(0,B.jsx)(Km,{size:16})})]})]}),u?null:(0,B.jsxs)(`details`,{className:`personal-compact-menu personal-run-more`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(gm,{size:17}),m(`drawer.moreRunActions`)]}),(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`button`,{disabled:!f.item.canInterrupt,onClick:()=>void r.onInterruptRun?.(f.item),type:`button`,children:[(0,B.jsx)(Rm,{size:16}),m(`drawer.runInterrupt`)]}),(0,B.jsxs)(`button`,{disabled:f.item.resumable===!1,onClick:()=>void r.onRetryResumeRun?.(f.item),type:`button`,children:[(0,B.jsx)(Um,{size:16}),m(`drawer.recoveryRetry`)]}),(0,B.jsxs)(`button`,{onClick:()=>void r.onStartNewRunSession?.(f.item),type:`button`,children:[(0,B.jsx)(zm,{size:16}),m(`drawer.runNewSession`)]}),(0,B.jsxs)(`button`,{onClick:()=>void r.onCloseRunSession?.(f.item),type:`button`,children:[(0,B.jsx)($m,{size:16}),m(`drawer.runCloseSession`)]})]})]})]})]}):null,f.kind===`output`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-detail-card`,children:[(0,B.jsx)(`small`,{children:f.item.kind??`output`}),(0,B.jsx)(`h3`,{children:f.item.title}),(0,B.jsx)(`p`,{children:f.item.summary??m(`drawer.outputRecorded`)}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Goal`}),(0,B.jsx)(`dd`,{children:f.item.goalTitle??f.item.goalId})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.outputTodo`)}),(0,B.jsx)(`dd`,{children:f.item.todoId??m(`drawer.notLinked`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.outputRun`)}),(0,B.jsx)(`dd`,{children:f.item.runId??m(`drawer.notLinked`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Agent`}),(0,B.jsx)(`dd`,{children:f.item.agentLabel??f.item.agentId??`LoopX`})]})]})]}),f.item.report?(0,B.jsxs)(`section`,{className:`personal-report-detail`,"data-testid":`personal-periodic-report-detail`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsxs)(`span`,{children:[(0,B.jsxs)(`strong`,{children:[`+`,f.item.report.addedCount]}),m(`files.reportAdded`)]}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:f.item.report.changedCount}),m(`files.reportChanged`)]})]}),(0,B.jsxs)(`p`,{children:[f.item.report.periodStartAt,` → `,f.item.report.periodEndAt]}),(0,B.jsx)(`ol`,{children:f.item.report.items.map(e=>(0,B.jsxs)(`li`,{"data-change-kind":e.changeKind,children:[(0,B.jsxs)(`small`,{children:[e.changeKind,` · `,e.status]}),(0,B.jsx)(`strong`,{children:e.title}),(0,B.jsx)(`p`,{children:e.summary})]},e.sourceRef))}),(0,B.jsxs)(`footer`,{children:[(0,B.jsxs)(`span`,{children:[m(`files.reportPublication`),`: `,f.item.report.publicationId]}),(0,B.jsxs)(`span`,{children:[m(`files.reportGeneration`),`: `,f.item.report.generationId]})]})]}):null,f.item.safePreview?(0,B.jsx)(`pre`,{"aria-label":m(`drawer.outputSafePreview`),className:`personal-safe-preview`,children:f.item.safePreview}):(0,B.jsx)(`p`,{className:`personal-preview-unavailable`,children:m(`drawer.previewUnavailable`)}),(0,B.jsxs)(`div`,{className:`personal-drawer-action-grid`,children:[(0,B.jsxs)(`button`,{className:`personal-primary-action`,disabled:!r.onOpenOutput,onClick:()=>{r.onOpenOutput?.(f.item),c()},type:`button`,children:[(0,B.jsx)(_m,{size:16}),m(`files.openConversation`)]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,disabled:!r.onExportOutput,onClick:()=>void r.onExportOutput?.(f.item),type:`button`,children:[(0,B.jsx)(hm,{size:16}),m(`files.exportSummary`)]})]})]}):null,f.kind===`proposal`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-proposal-card`,children:[(0,B.jsxs)(`small`,{children:[f.item.actionKind,` · `,f.item.status]}),(0,B.jsx)(`h3`,{children:f.item.title}),(0,B.jsx)(`p`,{children:f.item.impact}),f.item.reviewPlan?(0,B.jsx)(`p`,{className:`personal-proposal-explainer`,"data-action-review":f.item.reviewPlan.interaction,children:f.item.actionKind===`operation.execute`&&f.item.status===`gated`?m(`actionReview.operation_group_confirmation`):f.item.actionKind===`operation.execute`&&f.item.reviewPlan.reason===`readback_unverified`?m(`actionReview.operation_result_delivery_pending`):m(`actionReview.${f.item.reviewPlan.reason}`)}):null,f.item.status===`ready`?(0,B.jsx)(`p`,{className:`personal-proposal-explainer`,children:m(`drawer.proposalExplainer`)}):null,(0,B.jsx)(`dl`,{children:f.item.fields.map(e=>(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:e.label}),(0,B.jsx)(`dd`,{children:e.value})]},e.key))})]}),f.item.status===`applied`?(0,B.jsxs)(`p`,{className:`personal-proposal-state ${f.item.actionKind===`operation.execute`&&f.item.reviewPlan?.reason===`readback_unverified`?`is-gated`:`is-applied`}`,children:[(0,B.jsx)(am,{size:16}),f.item.actionKind===`operation.execute`?f.item.primaryLabel:m(`drawer.proposalApplied`)]}):null,f.item.status===`applied`&&f.item.actionKind!==`operation.execute`&&f.item.goalId?(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>{let e=f.item.goalId;c(),r.onOpenGoal?.(e)},type:`button`,children:[(0,B.jsx)(_m,{size:16}),f.item.actionKind===`goal.create`?m(`drawer.proposalEnterGoal`):m(`drawer.proposalViewGoal`)]}):null,f.item.status===`stale`?(0,B.jsx)(`p`,{className:`personal-proposal-state is-stale`,children:m(`drawer.proposalStale`)}):null,f.item.status===`error`?(0,B.jsxs)(`div`,{className:`personal-proposal-state is-error`,children:[(0,B.jsx)(`span`,{children:f.item.reviewPlan?.reason===`readback_unverified`?m(`actionReview.readback_unverified`):m(`drawer.proposalApplyFailed`)}),f.item.errorMessage?(0,B.jsx)(`small`,{children:f.item.errorMessage}):null,(0,B.jsx)(`small`,{children:m(`drawer.proposalApplyFailedHint`)})]}):null,f.item.status===`rejected`?(0,B.jsx)(`p`,{className:`personal-proposal-state is-error`,children:m(`drawer.proposalRejected`)}):null,f.item.status===`deferred`?(0,B.jsx)(`p`,{className:`personal-proposal-state is-gated`,children:m(`drawer.proposalDeferred`)}):null,f.item.status===`gated`?(0,B.jsxs)(`div`,{className:`personal-proposal-state is-gated`,children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:f.item.actionKind===`operation.execute`?f.item.primaryLabel:m(`drawer.gateRequiresHost`)}),f.item.actionKind===`operation.execute`?f.item.impact:m(`drawer.gateRequiresHostDescription`)]}),f.item.gate?.nextAction?(0,B.jsx)(`small`,{children:f.item.gate.nextAction}):null]}):null,f.item.status===`gated`&&f.item.actionKind===`gate.resolve`?(()=>{let e=e=>f.item.fields.find(t=>t.key===e)?.value,t=e(`goal_id`),n=e(`todo_id`);return!t||!n?null:(0,B.jsxs)(`section`,{className:`personal-detail-card personal-gate-cli-hint`,children:[(0,B.jsx)(`small`,{children:m(`drawer.gateApproveHint`)}),(0,B.jsxs)(`code`,{children:[`loopx todo complete --goal-id `,t,` --todo-id `,n,` --decision-outcome approve`]}),(0,B.jsx)(`small`,{children:m(`drawer.gateRejectHint`)})]})})():null,!u&&f.item.workspaceCandidates?.length?(0,B.jsx)(`div`,{className:`personal-workspace-candidates`,"aria-label":m(`drawer.workspaceCandidates`),children:f.item.workspaceCandidates.map(e=>(0,B.jsxs)(`button`,{onClick:()=>void r.onSelectWorkspaceCandidate?.(f.item,e.workspaceRef),type:`button`,children:[(0,B.jsx)(`strong`,{children:e.label}),(0,B.jsx)(`small`,{children:e.workspaceRef})]},e.workspaceRef))}):null,!u&&f.item.actionKind!==`operation.execute`&&f.item.status===`error`?(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>void r.onTransitionProposal?.(f.item,`regenerate`),type:`button`,children:[(0,B.jsx)(Um,{size:17}),m(`drawer.proposalRegenerate`)]}):!u&&f.item.actionKind!==`operation.execute`&&f.item.status!==`gated`?(0,B.jsxs)(`button`,{className:`personal-primary-action`,disabled:![`ready`,`deferred`].includes(f.item.status)||f.item.reviewPlan?.canApply===!1,onClick:()=>void r.onApplyProposal?.(f.item),type:`button`,children:[(0,B.jsx)(am,{size:17}),f.item.status===`applying`?m(`drawer.applying`):f.item.primaryLabel??m(`drawer.apply`)]}):null,!u&&f.item.actionKind!==`operation.execute`&&([`stale`,`gated`,`rejected`].includes(f.item.status)||f.item.status===`ready`&&f.item.reviewPlan?.canApply===!1)?(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onTransitionProposal?.(f.item,`regenerate`),type:`button`,children:[(0,B.jsx)(Um,{size:16}),m(`drawer.proposalRecheck`)]}):null,!u&&f.item.actionKind!==`operation.execute`&&[`ready`,`gated`].includes(f.item.status)?(0,B.jsxs)(`div`,{className:`personal-drawer-action-grid`,children:[(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onTransitionProposal?.(f.item,`defer`),type:`button`,children:m(`drawer.proposalDefer`)}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onTransitionProposal?.(f.item,`reject`),type:`button`,children:m(`drawer.decisionReject`)})]}):null,[`applied`,`applying`].includes(f.item.status)?null:(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:c,type:`button`,children:m(`drawer.proposalClose`)})]}):null,f.kind===`schedule`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-detail-card`,children:[(0,B.jsxs)(`small`,{children:[f.item.scheduleKind===`heartbeat`?`Goal Heartbeat`:`continuous_monitor`,` · `,f.item.status??`active`]}),(0,B.jsx)(`h3`,{children:f.item.label}),(0,B.jsx)(`p`,{children:f.item.target??f.item.schedule??m(`drawer.scheduleDefaultTarget`)}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.scheduleTimezone`)}),(0,B.jsx)(`dd`,{children:f.item.timezone??m(`drawer.scheduleLocalTimezone`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.scheduleNext`)}),(0,B.jsx)(`dd`,{children:f.item.nextRunAt??m(`drawer.schedulePending`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.scheduleLast`)}),(0,B.jsx)(`dd`,{children:f.item.previousRunAt??m(`drawer.scheduleNeverRun`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.scheduleNotification`)}),(0,B.jsx)(`dd`,{children:f.item.notificationRule??m(`drawer.scheduleDefaultNotification`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.scheduleStopCondition`)}),(0,B.jsx)(`dd`,{children:f.item.stopCondition??m(`drawer.scheduleDefaultStop`)})]})]})]}),!u&&f.item.scheduleKind===`monitor`?(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>void r.onUpdateSchedule?.(f.item,`run_now`),type:`button`,children:[(0,B.jsx)(zm,{size:16}),m(`drawer.scheduleRunNow`)]}):null,u?null:(0,B.jsxs)(`div`,{className:`personal-drawer-action-grid`,children:[(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onUpdateSchedule?.(f.item,f.item.status===`paused`?`resume`:`pause`),type:`button`,children:[f.item.status===`paused`?(0,B.jsx)(zm,{size:16}):(0,B.jsx)(Rm,{size:16}),f.item.status===`paused`?m(`drawer.scheduleResume`):m(`drawer.schedulePause`)]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onUpdateSchedule?.(f.item,`edit`),type:`button`,children:[(0,B.jsx)(im,{size:16}),m(`drawer.scheduleEdit`)]})]}),u?null:(0,B.jsxs)(`button`,{className:`personal-danger-action`,onClick:()=>void r.onUpdateSchedule?.(f.item,`stop`),type:`button`,children:[(0,B.jsx)($m,{size:16}),m(`drawer.scheduleStop`,{kind:f.item.scheduleKind===`heartbeat`?` Heartbeat`:m(`drawer.titleSchedule`)})]}),(0,B.jsxs)(`section`,{className:`personal-execution-history`,"aria-labelledby":`personal-execution-history-title`,children:[(0,B.jsx)(`h3`,{id:`personal-execution-history-title`,children:m(`drawer.executionHistory`)}),f.item.executionHistory?.length?(0,B.jsx)(`ol`,{children:f.item.executionHistory.map((e,t)=>(0,B.jsxs)(`li`,{children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.label}),(0,B.jsx)(`small`,{children:e.timestamp})]}),(0,B.jsx)(`em`,{className:`is-${e.status}`,children:e.status})]},`${e.timestamp}:${e.runId??t}`))}):(0,B.jsx)(`p`,{children:m(`drawer.noExecutionHistory`)})]})]}):null,f.kind===`run`||f.kind===`proposal`||f.kind===`schedule`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`button`,{"aria-expanded":_,className:`personal-diagnostics-trigger`,onClick:()=>v(e=>!e),type:`button`,children:[(0,B.jsx)(`span`,{children:m(`drawer.advancedDiagnostics`)}),(0,B.jsx)(om,{className:_?`is-open`:``,size:16})]}),_?(0,B.jsxs)(`div`,{className:`personal-diagnostics`,children:[(0,B.jsxs)(`code`,{children:[`goal_id: `,he]}),(0,B.jsxs)(`code`,{children:[`kind: `,f.kind]}),f.kind===`run`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`code`,{children:[`session_id: `,f.item.sessionId??m(`drawer.notLinked`)]}),(0,B.jsxs)(`code`,{children:[`turn_id: `,f.item.turnId??m(`common.none`)]}),(0,B.jsxs)(`code`,{children:[`adapter: `,f.item.agentId]}),(0,B.jsxs)(`code`,{children:[`status: `,f.item.sessionStatus??f.item.status]})]}):f.kind===`proposal`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`code`,{children:[`action: `,f.item.actionKind]}),(0,B.jsxs)(`code`,{children:[`status: `,f.item.status]})]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`code`,{children:[`schedule_id: `,f.item.scheduleId]}),(0,B.jsxs)(`code`,{children:[`status: `,f.item.status??`active`]})]})]}):null]}):null]})]})}var Db=[`checking`,`connecting`,`downloading`,`installing_app`,`installing_runtime`],Ob={desktop_status_unavailable:[`无法读取 App 更新状态。请重启 App 后再试;若仍失败,请重新安装最新 App。`,`Cannot read the App update status. Restart the App; if this persists, reinstall the latest App.`],update_feed_unavailable:[`此通道的更新源尚未就绪或暂时不可用。可稍后重新检查,当前版本仍可继续使用。`,`This channel's update feed is not ready or temporarily unavailable. Check again later; you can keep using this version.`],update_feed_invalid:[`更新源格式异常。请稍后重新检查。`,`The update feed is invalid. Check again later.`],update_platform_unavailable:[`此通道尚无适用于本机的更新包。`,`This channel has no update package for this platform.`],update_check_timeout:[`检查更新超时。请稍后重试。`,`The update check timed out. Try again later.`],update_network_failed:[`无法连接更新服务器。请检查网络后重试。`,`Cannot reach the update server. Check your connection and retry.`],update_download_or_signature_failed:[`更新包下载或签名校验失败,尚未安装。请重新检查更新。`,`Download or signature verification failed; the update was not installed. Check for updates again.`]};function kb(e,t=`update_failed`){return{phase:`error`,details:{code:typeof e==`string`&&Object.hasOwn(Ob,e)?e:t}}}function Ab(){let{locale:e}=Ji(),t=e===`zh-CN`,[n,r]=(0,z.useState)(!1),i=(0,z.useRef)(null),[a,o]=(0,z.useState)(`stable`),[s,c]=(0,z.useState)({phase:`idle`}),[l,u]=(0,z.useState)(``),[d,f]=(0,z.useState)(!1),p=(0,z.useRef)(!1),m=window.__TAURI__?.core.invoke,h=Db.includes(s.phase);(0,z.useEffect)(()=>{let e=i.current;if(!e)return;let t=()=>r(e.matches(`:popover-open`));return e.addEventListener(`toggle`,t),()=>e.removeEventListener(`toggle`,t)},[]),(0,z.useEffect)(()=>{if(!m)return;let e=!0;return m(`desktop_update_status`).then(t=>{if(!e)return;u(t.app_version),f(t.rollback_available===!0),t.state?.phase&&c(t.state);let n=t.state?.details?.channel??(t.app_version.includes(`-main.`)?`main`:`stable`);o(n),t.state?.phase||m(`desktop_update`,{action:`check`,channel:n}).then(t=>{e&&c(t)}).catch(t=>{e&&c(kb(t))})}).catch(()=>{e&&c(kb(null,`desktop_status_unavailable`))}),()=>{e=!1}},[m]),(0,z.useEffect)(()=>{if(!m||!h)return;let e=window.setInterval(()=>{m(`desktop_update_status`).then(e=>{e.state?.phase&&c(e.state)}).catch(()=>{})},1e3);return()=>window.clearInterval(e)},[m,h]);async function g(e){if(!(!m||p.current)){p.current=!0,c({phase:e===`check`?`checking`:e===`repair`?`installing_runtime`:`downloading`});try{if(!l){let e=await m(`desktop_update_status`);u(e.app_version),f(e.rollback_available===!0)}c(await m(`desktop_update`,{action:e,channel:a}))}catch(e){c(kb(e,l?`update_failed`:`desktop_status_unavailable`))}finally{p.current=!1}}}let _={service_error:t?`运行时已安装,但服务尚未连接。可重试更新、修复或恢复上版。`:`Runtime installed, but services are unavailable. Retry updates, repair, or restore the previous version.`,runtime_pairing_required:t?`本机 CLI 运行时与 App 自带运行时不一致。回到 App 启动界面可「更新 App 与运行时」或「回退 CLI」。`:`This host's CLI runtime and the App's bundled runtime differ. On the App boot screen, update both or use the App's runtime.`,idle:t?`App 会检查可用更新,不会自动安装。`:`Updates are checked automatically, never installed without confirmation.`,runtime_required:t?`请完成匹配组件安装,或检查 App 更新。`:`Install matching components or check for an App update.`,connecting:t?`正在连接更新后的服务…`:`Connecting to updated services…`,checking:t?`正在检查更新…`:`Checking for updates…`,available:t?`新版本已就绪,一次更新 App 与匹配的运行时。`:`Update the App and its matching runtime together.`,up_to_date:t?`当前通道暂无更新。`:`No newer update on this channel.`,downloading:t?`正在下载并校验签名…`:`Downloading and verifying signature…`,installing_app:t?`正在安装 App,请保持窗口打开。`:`Installing the App. Keep this window open.`,installing_runtime:t?`正在安装匹配的运行时,请稍候…`:`Installing the matching runtime…`,restart_required:t?`重启后将自动完成运行时安装与服务连接。`:`Restart to finish runtime installation and reconnect services.`,ready:t?`更新完成,服务已就绪。`:`Update completed; services are ready.`,error:Ob[s.details?.code??``]?.[+!t]??(t?`更新未完成。请重试;启动失败可尝试修复当前版本。`:`Update incomplete. Retry; repair this version if startup fails.`)},v=h?t?`正在更新…`:`Updating…`:s.phase===`available`?t?`有可用更新`:`Update available`:s.phase===`restart_required`?t?`重启完成更新`:`Restart to finish`:s.phase===`error`?t?`更新需重试`:`Retry update`:t?`更新 LoopX`:`Update LoopX`;return(0,B.jsxs)(`div`,{className:`personal-desktop-update`,children:[(0,B.jsxs)(`button`,{className:`personal-update-trigger`,type:`button`,"aria-expanded":n,"aria-controls":`desktop-update-panel`,onClick:e=>{i.current?.style.setProperty(`bottom`,`${window.innerHeight-e.currentTarget.getBoundingClientRect().top+8}px`),i.current?.togglePopover()},children:[(0,B.jsx)(hm,{size:16,"aria-hidden":`true`}),(0,B.jsx)(`span`,{children:v}),(0,B.jsx)(cm,{size:14,"aria-hidden":`true`})]}),(0,B.jsxs)(`section`,{ref:i,popover:`auto`,id:`desktop-update-panel`,className:`personal-update-panel`,"aria-label":t?`LoopX 更新`:`LoopX updates`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:t?`LoopX 更新`:`LoopX updates`}),(0,B.jsx)(`button`,{type:`button`,"aria-label":t?`关闭更新面板`:`Close updates`,onClick:()=>i.current?.hidePopover(),children:(0,B.jsx)(ah,{size:16,"aria-hidden":`true`})})]}),(0,B.jsxs)(`small`,{children:[l,` · `,a===`main`?t?`main 预览版`:`main preview`:t?`稳定版`:`Stable`]}),s.details?.version?(0,B.jsxs)(`p`,{children:[t?`目标版本:`:`Target: `,s.details.version]}):null,(0,B.jsxs)(`p`,{role:`status`,"aria-live":`polite`,children:[h?(0,B.jsx)(Hm,{className:`is-spinning`,size:14,"aria-hidden":`true`}):null,_[s.phase]]}),s.phase===`downloading`&&s.details?.total?(0,B.jsx)(`progress`,{"aria-label":t?`下载进度`:`Download progress`,max:s.details.total,value:s.details.received??0}):null,m?(0,B.jsx)(`div`,{className:`personal-update-actions`,children:s.phase===`restart_required`?(0,B.jsx)(`button`,{type:`button`,onClick:()=>void g(`restart`),children:t?`重启完成更新`:`Restart to finish`}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`button`,{type:`button`,disabled:h,onClick:()=>void g(`check`),children:t?`检查更新`:`Check for updates`}),s.phase===`available`?(0,B.jsx)(`button`,{type:`button`,onClick:()=>void g(`apply`),children:t?`更新并准备重启`:`Install update`}):null]})}):(0,B.jsx)(`p`,{children:t?`请在 LoopX App 中更新;浏览器自身无需安装包。`:`Update from the LoopX App; the browser needs no installer.`}),(0,B.jsxs)(`details`,{children:[(0,B.jsx)(`summary`,{children:t?`高级选项`:`Advanced options`}),(0,B.jsxs)(`label`,{children:[t?`更新通道`:`Update channel`,(0,B.jsxs)(`select`,{disabled:h||s.phase===`restart_required`,value:a,onChange:e=>{o(e.target.value),c({phase:`idle`})},children:[(0,B.jsx)(`option`,{value:`stable`,children:t?`稳定版(推荐)`:`Stable (recommended)`}),(0,B.jsx)(`option`,{value:`main`,children:t?`main 预览版`:`main preview`})]})]}),(0,B.jsx)(`p`,{children:t?`App 与匹配的 CLI 一起更新,服务可能短暂断开。不删除 Goal 数据。`:`Updates the App and matching CLI. Services may briefly disconnect. Goal data is not deleted.`}),m?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{children:t?`启动失败时,可重装当前 App 随附的运行时。`:`If startup fails, reinstall this App's bundled runtime.`}),(0,B.jsx)(`button`,{disabled:h||s.phase===`restart_required`,type:`button`,onClick:()=>void g(`repair`),children:t?`修复当前版本`:`Repair this version`})]}):null,m&&d?(0,B.jsxs)(`details`,{children:[(0,B.jsx)(`summary`,{children:t?`恢复上个版本`:`Restore previous version`}),(0,B.jsx)(`p`,{children:t?`将恢复已保留的 App 和它的运行时,需要重启。`:`Restore the retained App and its runtime, then restart.`}),(0,B.jsx)(`button`,{disabled:h,type:`button`,onClick:()=>void g(`rollback`),children:t?`确认恢复上版`:`Restore previous version`})]}):null]})]})]})}var jb=e=>`loopx-sidebar-goal-order-v1:${encodeURIComponent(e)}`;function Mb(e){try{let t=JSON.parse(e??`null`);return Array.isArray(t)&&t.every(e=>typeof e==`string`)?[...new Set(t)]:[]}catch{return[]}}function Nb(e,t){let n=new Map(t.map((e,t)=>[e,t]));return[...e].sort((e,t)=>(n.get(e.goalId)??1/0)-(n.get(t.goalId)??1/0))}function Pb(e,t,n,r,i){if(n===r||!t.includes(n)||!t.includes(r))return e;let a=[...new Set([...e,...t])].filter(e=>e!==n);return a.splice(a.indexOf(r)+Number(i),0,n),a}function Fb(e,t){let n=jb(t),[r,i]=(0,z.useState)(()=>{try{return Mb(localStorage.getItem(n))}catch{return[]}}),[a,o]=(0,z.useState)(!1),[s,c]=(0,z.useState)(null),[l,u]=(0,z.useState)(null),d=(0,z.useRef)(null),f=(0,z.useRef)(!1),p=Nb(e,r),m=p.map(e=>e.goalId);function h(t,a,s){let l=Pb(r,m,t,a,s);if(l===r)return;i(l);let u=Nb(e,l),d=u.findIndex(e=>e.goalId===t),f=u[d];f&&c({title:f.title,position:d+1});try{localStorage.setItem(n,JSON.stringify(l)),o(!1)}catch{o(!0)}}function g(){d.current=null,u(null)}return{sorted:p,target:l,saveFailed:a,lastMoved:s,move:h,moveBy(e,t){let n=p[m.indexOf(e)+t];n&&h(e,n.goalId,t===1)},pointerProps:e=>({onPointerDown(t){f.current=!1,t.pointerType===`mouse`&&t.button===0&&(d.current={id:e,x:t.clientX,y:t.clientY,dragging:!1},t.currentTarget.setPointerCapture(t.pointerId))},onPointerMove(e){let t=d.current;if(!t||!t.dragging&&Math.hypot(e.clientX-t.x,e.clientY-t.y)<6)return;t.dragging=!0,f.current=!0;let n=document.elementFromPoint(e.clientX,e.clientY)?.closest(`[data-reorder-goal]`),r=e.currentTarget.closest(`.personal-goal-list`),i=n?.dataset.reorderGoal;if(!n||!i||!r?.contains(n)||i===t.id){u(null);return}let a=n.getBoundingClientRect();u({id:i,after:e.clientY>a.top+a.height/2})},onPointerUp(){d.current?.dragging&&l&&h(d.current.id,l.id,l.after),g()},onPointerCancel:g,onLostPointerCapture:g,onKeyDown(e){e.key===`Escape`&&g()},onClickCapture(e){f.current&&=(e.preventDefault(),e.stopPropagation(),!1)}})}}var Ib=`/ssh-hosts`,Lb=/^[A-Za-z0-9][A-Za-z0-9._-]{0,254}$/;function Rb(e){return typeof e==`string`&&Lb.test(e.trim())}function zb(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`SSH Host 列表响应无效。`);let t=e;if(t.ok!==!0||t.schema_version!==`ssh_host_catalog_v0`||!Array.isArray(t.hosts))throw Error(`SSH Host 列表协议不兼容,请更新本机 LoopX 服务。`);let n=new Set;return{hosts:t.hosts.flatMap(e=>{if(!e||typeof e!=`object`||Array.isArray(e))return[];let t=String(e.alias??``).trim();return!Rb(t)||n.has(t)?[]:(n.add(t),[{alias:t}])}),schemaVersion:`ssh_host_catalog_v0`}}async function Bb(e=fetch,t=Ib){let n=await e(t,{cache:`no-store`});if(!n.ok)throw Error(`无法读取本机 SSH Host(HTTP ${n.status})。`);return zb(await n.json())}function Vb(e,t){let n=e.trim();if(!Rb(n))return{error:`请选择有效的 SSH Host。`};let r=Number(t);return!Number.isInteger(r)||r<1024||r>65535?{error:`本地端口必须是 1024–65535 之间的整数。`}:{command:`ssh -N -L ${r}:127.0.0.1:8766 ${n}`,hostAlias:n,label:n,statusUrl:`http://127.0.0.1:${r}/status.json`}}var Hb=`/api/ssh-source/ensure`,Ub=`/api/ssh-source/goal-lifecycle`;async function Wb(e,t){let n=await fetch(Hb,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({host_alias:e,local_port:Number(t)})}),r=await n.json().catch(()=>null);if(!n.ok)throw Error(r?.error??`无法建立 SSH 隧道来源。`);if(!r?.ok)throw Error(`无法建立 SSH 隧道来源。`);return r}async function Gb(e,t,n,r,i=fetch){let a=await i(Ub,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({goal_id:t,host_alias:e,operation:n,reason:r})}),o=await a.json().catch(()=>null);if(!a.ok)throw Error(o?.error??`无法更新远端 Goal 生命周期。`);if(!o?.ok||o.schema_version!==`loopx_remote_goal_lifecycle_v1`||o.goal_id!==t||o.host_alias!==e||o.operation!==n||o.activation_state!==(n===`stop`?`stopped`:`active`)||o.projection_verified!==!0)throw Error(`远端 Goal 生命周期回读未验证。`);return o}function Kb({activeSource:e,connectionState:t,errorMessage:n,onAdd:r,onConfiguredHostsLoaded:i,onRemove:a,onSelect:o,sources:s}){let{t:c}=Ji(),[l,u]=(0,z.useState)(!1),[d,f]=(0,z.useState)(null),[p,m]=(0,z.useState)(`configured`),[h,g]=(0,z.useState)([]),[_,v]=(0,z.useState)(null),[y,b]=(0,z.useState)(!1),[x,S]=(0,z.useState)(!1),[C,w]=(0,z.useState)(``),[T,E]=(0,z.useState)(``),[D,O]=(0,z.useState)(`8876`),[k,ee]=(0,z.useState)(``),te=`configured:`,A=[...s.map(e=>({label:e.label,value:e.id})),...h.filter(e=>!s.some(t=>t.label===e.alias)).map(e=>({group:c(`source.configuredGroup`,{count:h.length}),label:e.alias,value:`${te}${e.alias}`}))],j=(0,z.useMemo)(()=>h.some(e=>e.alias===C)?Vb(C,D):{error:c(`source.selectHost`)},[h,C,D,c]);(0,z.useEffect)(()=>{M()},[]);async function M(){b(!0),v(null);try{let e=await Bb();g(e.hosts),i?.(e.hosts.map(e=>e.alias)),w(t=>t||e.hosts[0]?.alias||``),e.hosts.length||v(c(`source.hostEmpty`))}catch(e){v(e instanceof Error?e.message:c(`source.hostLoadError`))}finally{b(!1)}}function ne(){u(!0),m(`configured`),f(null),M()}function N(){u(!1),m(`configured`),v(null),S(!1),w(``),f(null),E(``),O(`8876`),ee(``)}function P(){let e=r({label:T,statusUrl:k});if(e.error){f(e.error);return}N()}function re(){if(`error`in j){f(j.error??c(`source.invalid`));return}let e=r({ensureTunnel:!0,hostAlias:j.hostAlias,label:j.label,statusUrl:j.statusUrl});if(e.error){f(e.error);return}N()}function ie(e){let t=new Set;for(let e of s)try{t.add(new URL(e.statusUrl).port)}catch{}let n=`8877`;for(let e=8877;e<9077;e+=1)if(!t.has(String(e))){n=String(e);break}let i=Vb(e,n);if(`error`in i){f(i.error??c(`source.invalid`));return}let a=r({ensureTunnel:!0,hostAlias:i.hostAlias,label:i.label,statusUrl:i.statusUrl});a.error?f(a.error):f(null),O(n)}async function ae(){if(`error`in j){f(j.error??c(`source.invalid`));return}try{await navigator.clipboard.writeText(j.command),S(!0),f(null)}catch{f(c(`source.copyError`))}}return(0,B.jsxs)(`section`,{"aria-label":c(`source.controlPlane`),className:`personal-status-source`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`span`,{children:`Control plane`}),(0,B.jsx)(`button`,{"aria-label":c(`source.addSsh`),onClick:ne,title:c(`source.add`),type:`button`,children:(0,B.jsx)(Bm,{size:14})})]}),(0,B.jsx)(Yy,{ariaLabel:c(`source.select`),className:`personal-status-source-select`,icon:(0,B.jsx)(Jm,{size:15}),onChange:e=>{if(e.startsWith(te)){ie(e.slice(11));return}o(e)},options:A,value:e.id}),(0,B.jsxs)(`div`,{className:`personal-status-source-meta`,children:[(0,B.jsxs)(`span`,{className:`is-${t}`,children:[(0,B.jsx)(`i`,{}),c(t===`loading`?`source.connecting`:t===`error`?`source.notAvailable`:`source.connected`)]}),(0,B.jsx)(`small`,{children:e.readOnly?c(`source.readOnly`):c(`source.localInteractive`)}),e.kind===`ssh_tunnel`?(0,B.jsx)(`button`,{"aria-label":c(`source.remove`,{source:e.label}),onClick:()=>a(e.id),title:c(`source.removeCurrent`),type:`button`,children:(0,B.jsx)(nh,{size:12})}):null]}),n?(0,B.jsx)(`p`,{className:`personal-status-source-error`,role:`alert`,children:n}):null,l?(0,B.jsxs)(`div`,{className:`personal-status-source-form`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:c(`source.addSsh`)}),(0,B.jsx)(`button`,{"aria-label":c(`source.closeForm`),onClick:N,type:`button`,children:(0,B.jsx)(ah,{size:13})})]}),(0,B.jsxs)(`div`,{"aria-label":c(`source.addMethod`),className:`personal-status-source-modes`,role:`tablist`,children:[(0,B.jsx)(`button`,{"aria-selected":p===`configured`,onClick:()=>{m(`configured`),f(null)},role:`tab`,type:`button`,children:c(`source.configured`)}),(0,B.jsx)(`button`,{"aria-selected":p===`manual`,onClick:()=>{m(`manual`),f(null)},role:`tab`,type:`button`,children:c(`source.manual`)})]}),p===`configured`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:c(`source.configuredCount`,{count:h.length})}),(0,B.jsxs)(`span`,{className:`personal-status-source-field-row`,children:[(0,B.jsx)(`input`,{"aria-label":c(`source.host`),disabled:y||!h.length,list:`loopx-configured-ssh-hosts`,onChange:e=>{w(e.target.value),S(!1)},placeholder:c(y?`source.loadingHosts`:`source.hostPlaceholder`),value:C}),(0,B.jsx)(`datalist`,{id:`loopx-configured-ssh-hosts`,children:h.map(e=>(0,B.jsx)(`option`,{value:e.alias},e.alias))}),(0,B.jsx)(`button`,{"aria-label":c(`source.refreshHosts`),disabled:y,onClick:()=>void M(),title:c(`source.refreshHosts`),type:`button`,children:(0,B.jsx)(Wm,{size:13})})]})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:c(`source.localPort`)}),(0,B.jsx)(`input`,{"aria-label":c(`source.localPort`),inputMode:`numeric`,onChange:e=>{O(e.target.value),S(!1)},value:D})]}),(0,B.jsxs)(`div`,{className:`personal-status-source-command`,children:[(0,B.jsx)(`code`,{children:`error`in j?c(`source.tunnelCommandPending`):j.command}),(0,B.jsxs)(`button`,{"aria-label":c(`source.copyCommand`),disabled:`error`in j,onClick:()=>void ae(),type:`button`,children:[(0,B.jsx)(pm,{size:12}),c(x?`source.copied`:`source.copy`)]})]}),_?(0,B.jsx)(`p`,{className:`is-error`,children:_}):null,(0,B.jsx)(`p`,{children:c(`source.description`)}),(0,B.jsx)(`button`,{className:`personal-status-source-add`,disabled:`error`in j,onClick:re,type:`button`,children:c(`source.addConfigured`)})]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:c(`source.name`)}),(0,B.jsx)(`input`,{autoFocus:!0,maxLength:48,onChange:e=>E(e.target.value),placeholder:c(`source.namePlaceholder`),value:T})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:c(`source.statusUrl`)}),(0,B.jsx)(`input`,{onChange:e=>ee(e.target.value),placeholder:`http://127.0.0.1:8876/status.json`,value:k})]}),(0,B.jsx)(`p`,{children:(0,B.jsx)(`code`,{children:`ssh -N -L 8876:127.0.0.1:8766 `})}),(0,B.jsx)(`p`,{children:c(`source.manualDescription`)}),(0,B.jsx)(`button`,{className:`personal-status-source-add`,onClick:P,type:`button`,children:c(`source.addConfigured`)})]}),d?(0,B.jsx)(`p`,{className:`is-error`,role:`alert`,children:d}):null]}):null]})}var qb={需修复:`is-danger`,等你:`is-warning`,等待条件:`is-info`,推进中:`is-success`,安静运行:`is-quiet`,已完成:`is-quiet`,已停止:`is-stopped`};function Jb({attentionCount:e,goals:t,goalArchiveLoadState:n={error:null,phase:`ready`},lifecycleBusyGoalIds:r,goalLifecycleOperations:i,onRequestGoalCreate:a,onOpenSettings:o,onRetryGoalArchive:s,onRequestGoalLifecycle:c,onSelectGoal:l,selectedGoalId:u,statusSourceControl:d}){let{locale:f,t:p}=Ji(),[m,h]=(0,z.useState)(!1),g=Fb(t.filter(e=>e.activationState!==`stopped`),d?.activeSource.statusUrl??`/status.json`),_=g.sorted,v=t.filter(e=>e.activationState===`stopped`),y=e=>!!c&&(!i||i.includes(e)),b=(e,t)=>(0,B.jsxs)(`div`,{className:`personal-goal-row${g.target?.id===e.goalId?g.target.after?` is-drop-after`:` is-drop-before`:``}`,"data-reorder-goal":t?void 0:e.goalId,"data-load-error":e.loadError,children:[(0,B.jsxs)(`button`,{...t?{}:g.pointerProps(e.goalId),title:t?void 0:p(`sidebar.dragGoal`),"aria-current":u===e.goalId?`page`:void 0,className:`personal-goal-link`,onClick:()=>l(e.goalId),type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-goal-state-dot ${e.loadState?``:qb[e.state]}`}),(0,B.jsxs)(`span`,{className:`personal-goal-link-copy`,children:[(0,B.jsx)(`strong`,{children:e.title}),(0,B.jsxs)(`small`,{children:[e.loadState&&(!t||u===e.goalId)?p(e.loadState===`error`?`startup.goalError`:`startup.goalLoading`):Yi(e.state,f),e.needsYou&&!t?` · ${p(`home.lane.needsYou`)}`:``]})]}),(0,B.jsx)(sm,{size:15})]}),!t&&m?(0,B.jsxs)(`div`,{className:`personal-goal-move-actions`,children:[(0,B.jsx)(`button`,{type:`button`,"aria-label":p(`sidebar.moveUp`,{goal:e.title}),disabled:_[0]?.goalId===e.goalId,onClick:()=>g.moveBy(e.goalId,-1),children:(0,B.jsx)($p,{"aria-hidden":`true`,size:13})}),(0,B.jsx)(`button`,{type:`button`,"aria-label":p(`sidebar.moveDown`,{goal:e.title}),disabled:_.at(-1)?.goalId===e.goalId,onClick:()=>g.moveBy(e.goalId,1),children:(0,B.jsx)(Yp,{"aria-hidden":`true`,size:13})})]}):null,c&&y(t?`resume`:`stop`)?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`button`,{"aria-label":`${p(t?`sidebar.resume`:`sidebar.stop`)} ${e.title}`,"aria-busy":r?.has(e.goalId)||void 0,className:`personal-goal-lifecycle${r?.has(e.goalId)?` is-pending`:``}`,disabled:r?.has(e.goalId),onClick:()=>c(e,t?`resume`:`stop`),title:p(t?`sidebar.resumeGoal`:`sidebar.stopGoal`),type:`button`,children:r?.has(e.goalId)?(0,B.jsx)(km,{size:13}):t?(0,B.jsx)(Um,{size:13}):(0,B.jsx)(Rm,{size:13})}),t&&y(`delete`)?(0,B.jsx)(`button`,{"aria-label":`${p(`sidebar.delete`)} ${e.title}`,className:`personal-goal-lifecycle personal-goal-delete`,onClick:()=>c(e,`delete`),title:p(`sidebar.deleteGoal`),type:`button`,children:(0,B.jsx)(nh,{size:13})}):null]}):null]},e.goalId);return(0,B.jsxs)(`div`,{className:`personal-goal-directory`,children:[(0,B.jsxs)(`div`,{className:`personal-sidebar-brand`,children:[(0,B.jsx)(`span`,{className:`personal-brand-mark`,children:(0,B.jsx)(nm,{size:18})}),(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:`LoopX`})})]}),d?(0,B.jsx)(Kb,{...d}):null,(0,B.jsxs)(`nav`,{"aria-label":p(`home.workspace`),className:`personal-sidebar-nav`,children:[(0,B.jsxs)(`button`,{"aria-current":u===null?`page`:void 0,className:`personal-manager-link`,onClick:()=>l(null),type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-manager-icon`,children:(0,B.jsx)(nm,{size:17})}),(0,B.jsx)(`span`,{children:p(`sidebar.manager`)}),e>0?(0,B.jsx)(`span`,{className:`personal-sidebar-count`,children:e}):null,(0,B.jsx)(sm,{size:15})]}),(0,B.jsxs)(`div`,{className:`personal-sidebar-section-title`,children:[(0,B.jsx)(`span`,{children:`Goals`}),(0,B.jsxs)(`span`,{className:`personal-sidebar-title-actions`,children:[(0,B.jsx)(`small`,{children:_.length}),(0,B.jsx)(`button`,{"aria-label":p(`sidebar.sortGoals`),title:p(`sidebar.sortGoals`),"aria-pressed":m,onClick:()=>h(!m),type:`button`,children:(0,B.jsx)(Qp,{"aria-hidden":`true`,size:15})}),a?(0,B.jsx)(`button`,{"aria-label":p(`sidebar.createGoal`),onClick:a,type:`button`,children:(0,B.jsx)(Bm,{size:15})}):null]})]}),g.saveFailed?(0,B.jsx)(`p`,{role:`status`,children:p(`sidebar.orderNotSaved`)}):null,(0,B.jsx)(`span`,{className:`personal-sr-only`,role:`status`,children:g.lastMoved?p(`sidebar.goalMoved`,{goal:g.lastMoved.title,position:g.lastMoved.position}):``}),(0,B.jsx)(`div`,{className:`personal-goal-list`,children:_.map(e=>b(e,!1))}),v.length||n.phase===`loading`||n.phase===`error`?(0,B.jsxs)(`details`,{className:`personal-stopped-goals`,open:n.phase===`error`||void 0,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(om,{size:13}),(0,B.jsx)(`span`,{children:p(`sidebar.stopped`)}),n.phase===`loading`?(0,B.jsx)(km,{"aria-label":p(`sidebar.stoppedLoading`),className:`is-spinning`,size:13}):(0,B.jsx)(`small`,{children:v.length})]}),(0,B.jsxs)(`div`,{className:`personal-goal-list is-stopped`,children:[n.phase===`error`?(0,B.jsxs)(`div`,{className:`personal-stopped-goal-error`,role:`alert`,children:[(0,B.jsx)(`span`,{children:p(`sidebar.stoppedLoadFailed`)}),s?(0,B.jsx)(`button`,{onClick:s,type:`button`,children:p(`sidebar.retryStopped`)}):null]}):null,v.map(e=>b(e,!0))]})]}):null]}),(0,B.jsxs)(`div`,{className:`personal-sidebar-footer`,children:[(0,B.jsx)(Ab,{}),o?(0,B.jsxs)(`button`,{"aria-label":p(`settings.open`),className:`personal-sidebar-utility`,onClick:o,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-sidebar-utility-icon`,children:(0,B.jsx)(Ym,{size:17})}),(0,B.jsx)(`span`,{className:`personal-sidebar-utility-copy`,children:(0,B.jsx)(`strong`,{children:p(`settings.open`)})}),(0,B.jsx)(sm,{"aria-hidden":`true`,size:15})]}):null]})]})}var Yb=J({ok:X(!0),total:G().int().nonnegative(),next_cursor:W().nullable(),items:q(J({todo_id:W(),text:W(),claimed_by:W().nullable(),evidence:W().nullable(),priority:W().nullable(),task_class:W().nullable()})).max(40)});function Xb({goal:e,agentId:t,seed:n,enabled:r,listView:i=!1,onSelect:a}){let{t:o}=Ji(),s=(0,z.useId)(),[c,l]=(0,z.useState)(!1),u=!i||c,d=i?96:148,[f,p]=(0,z.useState)(n),[m,h]=(0,z.useState)(t===`all`?e.doneTodoCount??n.length:n.length),[g,_]=(0,z.useState)(void 0),[v,y]=(0,z.useState)(!1),[b,x]=(0,z.useState)(!1),[S,C]=(0,z.useState)(!1),[w,T]=(0,z.useState)({top:0,height:600}),[E,D]=(0,z.useState)(null),O=(0,z.useRef)(null),k=(0,z.useRef)(null),[ee,te]=(0,z.useState)(0);(0,z.useEffect)(()=>{let e=O.current;if(!e)return;let t=new ResizeObserver(()=>T({top:e.scrollTop,height:e.clientHeight}));return t.observe(e),()=>{t.disconnect(),k.current?.abort()}},[]);let A=g===void 0||w.top+w.height>=f.length*d-d*2;(0,z.useEffect)(()=>{if(!r||!u||!A||g===null||b||k.current)return;let n=new AbortController;k.current=n,y(!0);let i=new URLSearchParams({goal_id:e.goalId});t!==`all`&&i.set(`agent_id`,t),g&&i.set(`cursor`,g),fetch(`/api/chat/completed-todos?${i}`,{signal:n.signal}).then(async e=>{if(e.status===409&&C(!0),!e.ok)throw Error(`history unavailable`);let t=Yb.parse(await e.json());if(n.signal.aborted)return;let r=t.items.map(e=>({todoId:e.todo_id,text:e.text,claimedBy:e.claimed_by,evidence:e.evidence,priority:e.priority,taskClass:e.task_class,done:!0,status:`done`}));p(e=>g===void 0?r:[...e,...r.filter(t=>!e.some(e=>e.todoId===t.todoId))]),h(t.total),_(t.next_cursor)}).catch(()=>{n.signal.aborted||x(!0)}).finally(()=>{n.signal.aborted||(k.current=null,y(!1))})},[r,u,A,g,b,ee,e.goalId,t,v]),(0,z.useEffect)(()=>{O.current&&(O.current.scrollTop=0),T({top:0,height:O.current?.clientHeight??600}),D(null)},[i]);let j=Math.max(0,Math.floor(w.top/d)-3),M=Math.min(f.length,Math.ceil((w.top+w.height)/d)+3),ne=Array.from({length:Math.max(0,M-j)},(e,t)=>j+t);return E!==null&&El(e=>!e),children:[(0,B.jsx)(`span`,{"aria-hidden":`true`,children:c?`▾`:`▸`}),` `,o(`tasks.completed`)]}):(0,B.jsxs)(`strong`,{children:[(0,B.jsx)(`i`,{"aria-hidden":`true`,className:`personal-kanban-dot tone-done`}),o(`tasks.completed`)]}),(0,B.jsx)(`span`,{children:m})]}),(0,B.jsxs)(`div`,{id:s,hidden:!u,"aria-label":o(`tasks.completed`),className:`personal-task-lane-scroll`,ref:O,role:`region`,tabIndex:0,onScroll:e=>T({top:e.currentTarget.scrollTop,height:e.currentTarget.clientHeight}),children:[(0,B.jsx)(`div`,{className:`personal-completed-window`,style:{height:f.length*d},children:ne.map(t=>{let n=f[t];return(0,B.jsx)(`div`,{className:`personal-task-card personal-completed-row`,style:{top:t*d,height:d},children:(0,B.jsxs)(`button`,{type:`button`,onFocus:()=>D(t),onBlur:()=>D(null),onClick:()=>a({kind:`todo`,item:{...n,goalId:e.goalId,goalTitle:e.title,ownerLabel:n.claimedBy??e.agentLabel??e.agentId}}),children:[(0,B.jsx)(`span`,{className:`is-done`,children:`✓`}),(0,B.jsx)(`strong`,{children:n.text}),(0,B.jsx)(`small`,{children:n.claimedBy??e.agentLabel??e.agentId})]})},n.todoId)})}),(0,B.jsx)(`div`,{className:`personal-completed-footer`,role:`status`,children:v?o(`tasks.historyLoading`):b?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`span`,{children:o(S?`tasks.historyExpired`:`tasks.historyError`)}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>{S&&(_(void 0),O.current&&(O.current.scrollTop=0)),C(!1),x(!1),te(e=>e+1)},children:o(`tasks.historyRetry`)})]}):r?g===null?o(`tasks.historyEnd`):(0,B.jsx)(`button`,{type:`button`,onClick:()=>{O.current&&(O.current.scrollTop=f.length*d)},children:o(`tasks.historyMore`)}):o(`tasks.historyLocalOnly`)})]})]})}function Zb({children:e,count:t,label:n,tone:r,listView:i=!1}){let a=(0,z.useId)(),o=(0,z.useRef)(null),s=(0,z.useRef)([]),c=(0,z.useRef)(null),[l,u]=(0,z.useState)({after:!1,before:!1}),d=(0,z.useCallback)(()=>{let e=o.current;if(!e)return;let t={after:Math.max(0,e.scrollHeight-e.clientHeight)-e.scrollTop>1,before:e.scrollTop>1};u(e=>e.after===t.after&&e.before===t.before?e:t)},[]);return(0,z.useEffect)(()=>{let e=o.current;if(!e)return;let t=new ResizeObserver(d);return c.current=t,t.observe(e),e.addEventListener(`scroll`,d,{passive:!0}),d(),()=>{t.disconnect(),c.current=null,s.current=[],e.removeEventListener(`scroll`,d)}},[i,d]),(0,z.useEffect)(()=>{let e=o.current,t=c.current;if(!e||!t)return;for(let e of s.current)t.unobserve(e);let n=Array.from(e.children).filter(e=>e instanceof HTMLElement);for(let e of n)t.observe(e);s.current=n,d()},[e,t,i,d]),i?!t&&r!==`done`?null:(0,B.jsxs)(`details`,{className:`personal-task-group tone-${r}`,open:!0,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(om,{size:16}),(0,B.jsx)(`strong`,{children:n}),(0,B.jsx)(`span`,{children:t})]}),(0,B.jsx)(`div`,{className:`personal-task-list-rows`,children:e})]}):(0,B.jsxs)(`section`,{className:`personal-object-list personal-task-lane`,children:[(0,B.jsxs)(`header`,{id:a,children:[(0,B.jsxs)(`strong`,{children:[(0,B.jsx)(`i`,{"aria-hidden":`true`,className:`personal-kanban-dot tone-${r}`}),n]}),(0,B.jsx)(`span`,{children:t})]}),(0,B.jsx)(`div`,{"aria-labelledby":a,className:`personal-task-lane-scroll${l.before?` has-overflow-before`:``}${l.after?` has-overflow-after`:``}`,ref:o,role:`region`,tabIndex:t>0?0:-1,children:e})]})}function Qb({historyEnabled:e=!1,goal:t,items:n,onDraftTaskFromMessage:r,onOpenChat:i,onQuickComplete:a,quickCompletingTodoIds:o,onSelect:s,selectedTodoId:c=null,userTodos:l}){let{t:u}=Ji(),[d,f]=(0,z.useState)(!1),[p,m]=(0,z.useState)({goalId:``,laneId:`all`}),h=(0,z.useRef)(null);(0,z.useEffect)(()=>{if(!c)return;let e=window.requestAnimationFrame(()=>h.current?.scrollIntoView({block:`nearest`,inline:`nearest`}));return()=>window.cancelAnimationFrame(e)},[c]);let g=l.filter(e=>e.goalId===t.goalId).map(e=>({...e,goalTitle:t.title})),_=e=>e.priority===`P0`?0:e.priority===`P1`?1:e.priority===`P2`?2:3,v=(0,z.useMemo)(()=>{let e=new Map((t.agentLanes??[]).map(e=>[e.agentId,e]));for(let n of t.agentTodos)n.claimedBy&&!e.has(n.claimedBy)&&e.set(n.claimedBy,{agentId:n.claimedBy,label:n.claimedBy});return[...e.values()]},[t.agentLanes,t.agentTodos]),y=p.goalId===t.goalId&&v.some(e=>e.agentId===p.laneId)?p.laneId:`all`,b=e=>y===`all`||e===y,x=t.agentTodos.filter(e=>e.taskClass!==`continuous_monitor`&&!e.done).filter(e=>b(e.claimedBy)).sort((e,t)=>_(e)-_(t)),S=t.agentTodos.filter(e=>e.taskClass!==`continuous_monitor`&&e.done).filter(e=>b(e.claimedBy)),C=n.filter(e=>e.kind===`schedule`&&b(e.schedule.agentId)),w=n.filter(e=>e.kind===`run`&&!!e.run.todoId&&b(e.run.agentId)),T=!g.length&&!x.length&&!S.length&&!C.length,E=n.filter(e=>e.kind===`message`&&(e.message.role===`user`||e.message.role===`assistant`)),D=E.reduce((e,t,n)=>t.message.role===`user`?n:e,-1),O=D>=0?E[D]?.message:null,k=D>=0?E.slice(D+1).reverse().find(e=>e.message.role===`assistant`)?.message:null,ee=D>=0&&E.slice(D+1).some(e=>e.message.role===`assistant`&&e.message.pending);return(0,B.jsxs)(`section`,{"aria-label":u(`header.tasks`),className:`personal-task-board${d?` is-list-view`:``}`,children:[(0,B.jsxs)(`header`,{className:`personal-task-view-toolbar`,children:[(0,B.jsx)(`div`,{children:(0,B.jsx)(`strong`,{children:u(`header.tasks`)})}),(0,B.jsxs)(`div`,{className:`personal-task-view-switch`,role:`group`,"aria-label":u(`tasks.viewLabel`),children:[(0,B.jsx)(`button`,{type:`button`,"aria-pressed":d,onClick:()=>f(!0),children:u(`tasks.listView`)}),(0,B.jsx)(`button`,{type:`button`,"aria-pressed":!d,onClick:()=>f(!1),children:u(`tasks.boardView`)})]})]}),v.length>1?(0,B.jsxs)(`section`,{"aria-label":u(`tasks.agentLaneFilter`),className:`personal-task-lane-filter`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(nm,{size:15}),(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:u(`tasks.agentLane`)})})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{className:`sr-only`,children:u(`tasks.agentLaneFilter`)}),(0,B.jsxs)(`select`,{"aria-label":u(`tasks.agentLaneFilter`),onChange:e=>m({goalId:t.goalId,laneId:e.target.value}),value:y,children:[(0,B.jsx)(`option`,{value:`all`,children:u(`tasks.allAgentLanes`,{count:v.length})}),v.map(e=>(0,B.jsx)(`option`,{value:e.agentId,children:e.label},e.agentId))]}),(0,B.jsx)(om,{"aria-hidden":!0,size:14})]})]}):null,O?(0,B.jsxs)(`section`,{"aria-label":u(`tasks.chatRecent`),className:`personal-task-chat-receipt`,children:[(0,B.jsx)(`span`,{className:`personal-task-chat-icon`,children:(0,B.jsx)(Nm,{size:18})}),(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:u(ee?`tasks.chatPending`:k?`tasks.chatAgentReplied`:`tasks.chatRecent`)}),(0,B.jsx)(`small`,{children:t.agentLabel??t.agentId})]}),(0,B.jsxs)(`p`,{className:`is-user`,children:[(0,B.jsx)(`b`,{children:u(`common.you`)}),O.text]}),k&&!k.pending?(0,B.jsxs)(`p`,{className:`is-assistant`,children:[(0,B.jsx)(`b`,{children:u(`common.agent`)}),k.text]}):null,(0,B.jsx)(`small`,{children:u(ee?`tasks.chatPendingDescription`:`tasks.chatUnchangedDescription`)})]}),(0,B.jsxs)(`footer`,{children:[(0,B.jsxs)(`button`,{onClick:i,type:`button`,children:[(0,B.jsx)(Nm,{size:14}),u(`tasks.chatViewReply`)]}),k&&!ee&&r?(0,B.jsxs)(`button`,{onClick:()=>r(k.text),type:`button`,children:[(0,B.jsx)(Om,{size:14}),u(`tasks.convertToTask`)]}):null]})]}):null,(0,B.jsxs)(`div`,{className:d?`personal-task-grouped-list`:`personal-task-kanban`,children:[(0,B.jsxs)(Zb,{listView:d,count:g.length,label:u(`timeline.waitingConfirmation`),tone:`attention`,children:[g.map(e=>{let t=Zi(e.updatedAt,u);return(0,B.jsxs)(`button`,{onClick:()=>s({item:e,kind:`attention`}),type:`button`,children:[(0,B.jsx)(`span`,{"aria-hidden":`true`,className:`is-attention`,children:`!`}),(0,B.jsx)(`strong`,{children:e.text}),(0,B.jsxs)(`small`,{children:[(0,B.jsx)(`span`,{className:`personal-row-status ${e.blocking?`is-blocking`:`is-pending`}`,children:e.blocking?u(`tasks.blocked`):u(`tasks.pending`)}),t?(0,B.jsx)(`span`,{className:`personal-task-age`,children:u(`tasks.waitingAge`,{age:t})}):null]})]},e.todoId)}),g.length?null:(0,B.jsx)(`p`,{className:`personal-task-empty`,children:u(`tasks.emptyConfirm`)})]}),(0,B.jsxs)(Zb,{listView:d,count:x.length,label:u(`tasks.pendingAndRunning`),tone:`progress`,children:[x.map(e=>{let n={...e,goalId:t.goalId,goalTitle:t.title,ownerLabel:e.claimedBy??t.agentLabel??t.agentId},r=w.find(t=>t.run.todoId===e.todoId)?.run;return(0,B.jsxs)(`div`,{className:`personal-task-card${r?` has-session`:``}${c===e.todoId?` is-selected`:``}`,ref:c===e.todoId?e=>{h.current=e}:void 0,children:[(0,B.jsxs)(`button`,{"aria-pressed":c===e.todoId,onClick:()=>s({item:n,kind:`todo`}),type:`button`,children:[(0,B.jsx)(`span`,{children:`○`}),(0,B.jsx)(`strong`,{children:e.text}),(0,B.jsxs)(`small`,{children:[e.priority?(0,B.jsx)(`span`,{className:`personal-priority-badge is-${e.priority.toLowerCase()}`,children:e.priority}):null,e.status===`blocked`?(0,B.jsx)(`span`,{className:`personal-priority-badge is-blocked`,children:u(`tasks.blocked`)}):null,r?(0,B.jsx)(`span`,{className:`personal-task-session-status`,children:r.status===`running`||r.status===`queued`?u(`runs.running`):r.status===`failed`?u(`tasks.sessionError`):u(`common.waiting`)}):null,e.status===`deferred`?(0,B.jsx)(`span`,{className:`personal-task-session-status`,children:u(`drawer.taskStatusDeferred`)}):r?null:(0,B.jsx)(`span`,{className:`personal-task-session-status`,children:u(`tasks.waiting`)}),e.claimedBy??t.agentLabel??t.agentId]})]}),(0,B.jsxs)(`div`,{className:`personal-task-card-actions`,children:[r?(0,B.jsxs)(`button`,{className:`personal-task-session-link`,"aria-label":u(`tasks.openExecution`,{name:e.text}),onClick:()=>s({item:r,kind:`run`}),title:r.status===`completed`?u(`tasks.viewResult`):u(`tasks.viewExecution`),type:`button`,children:[(0,B.jsx)(_m,{size:14}),(0,B.jsx)(`span`,{children:r.status===`completed`?u(`tasks.viewResult`):u(`tasks.viewExecution`)})]}):null,a?(0,B.jsx)(`button`,{"aria-busy":o?.has(e.todoId)||void 0,"aria-label":u(`tasks.markComplete`,{name:e.text}),disabled:o?.has(e.todoId),onClick:()=>void a(n),title:u(`tasks.completed`),type:`button`,children:o?.has(e.todoId)?(0,B.jsx)(km,{className:`personal-spin`,size:14}):(0,B.jsx)(am,{size:14})}):null,(0,B.jsx)(`button`,{"aria-label":u(`tasks.moreActions`,{name:e.text}),onClick:()=>s({item:n,kind:`todo`}),title:u(`common.actions`),type:`button`,children:(0,B.jsx)(gm,{size:14})})]})]},e.todoId)}),x.length?null:(0,B.jsx)(`p`,{className:`personal-task-empty`,children:u(`tasks.emptyRunning`)})]}),(0,B.jsxs)(Zb,{listView:d,count:C.length,label:u(`tasks.scheduled`),tone:`schedule`,children:[C.map(e=>(0,B.jsxs)(`button`,{onClick:()=>s({item:e.schedule,kind:`schedule`}),type:`button`,children:[(0,B.jsx)(`span`,{children:`◷`}),(0,B.jsx)(`strong`,{children:e.schedule.label}),(0,B.jsx)(`small`,{children:e.schedule.status===`paused`?u(`schedule.paused`):u(`schedule.active`)})]},e.id)),C.length?null:(0,B.jsx)(`p`,{className:`personal-task-empty`,children:u(`tasks.emptySchedules`)})]}),(0,B.jsx)(Xb,{goal:t,agentId:y,seed:S,enabled:e,listView:d,onSelect:s},`${t.goalId}:${y}:${e}`)]}),T?(0,B.jsx)(`p`,{className:`personal-task-empty`,children:u(`tasks.emptyGoal`)}):null]})}function $b(e,t){return{live_steering:{label:t(`lark.ingressSteering`),detail:t(`lark.ingressSteeringDescription`)},session_queue:{label:t(`lark.ingressQueue`),detail:t(`lark.ingressQueueDescription`)},async_inbox:{label:t(`lark.ingressAsync`),detail:t(`lark.ingressAsyncDescription`)},direct_session:{label:t(`lark.ingressLegacy`),detail:t(`lark.ingressLegacyDescription`)}}[e]}function ex(e,t){return e.listener_status===`starting`?{label:t(`lark.health.starting`),detail:t(`lark.health.startingDetail`),state:`not_ready`}:e.listener_status===`retrying`&&e.listener_error_code===`lark_event_source_disconnected`?{label:t(`lark.health.sourceDisconnected`),detail:t(`lark.health.sourceDisconnectedDetail`),state:`not_ready`}:e.listener_status===`retrying`?{label:t(`lark.health.retrying`),detail:t(`lark.health.retryingDetail`),state:`not_ready`}:e.listener_status===`stopped`||e.listener_status===null?{label:t(`lark.health.notStarted`),detail:t(`lark.health.notStartedDetail`),state:`not_ready`}:e.last_event_status===`message_context_permission_required`?{label:t(`lark.health.messageContextPermission`),detail:t(`lark.health.messageContextPermissionDetail`),state:`not_ready`}:e.last_event_status===`processing_failed`?{label:t(`lark.health.processingFailed`),detail:t(`lark.health.processingFailedDetail`),state:`not_ready`}:e.health_error_code===`invalid_routing_state`?{label:t(`lark.health.invalidRouting`),detail:t(`lark.health.invalidRoutingDetail`),state:`not_ready`}:e.last_event_status===`queued_for_agent`?{label:t(`lark.health.queued`),detail:t(`lark.health.queuedDetail`,{agent:e.agent_id??t(`lark.targetAgent`)}),state:`ready`}:e.last_event_status===`context_only_captured`||e.last_event_status===`context_only_already_captured`?{label:t(`lark.health.contextCaptured`),detail:t(`lark.health.contextCapturedDetail`),state:`ready`}:e.last_event_status===`ignored`&&e.last_event_reason===`not_addressed`?{label:t(`lark.health.notAddressed`),detail:t(`lark.health.notAddressedDetail`),state:`ready`}:e.last_event_status===`ignored`&&e.last_event_reason===`self_message`?{label:t(`lark.health.listening`),detail:t(`lark.health.ignoredSelf`),state:`ready`}:e.health_error_code===`lark_event_route_mismatch`||[`chat_mismatch`,`topic_mismatch`,`route_ambiguous`].includes(e.last_event_reason??``)?{label:e.last_event_reason===`route_ambiguous`?t(`lark.health.routeAmbiguous`):t(`lark.health.routeMismatch`),detail:e.last_event_reason===`route_ambiguous`?t(`lark.health.routeAmbiguousDetail`):t(`lark.health.routeMismatchDetail`),state:`not_ready`}:[`invalid_event`,`binding_unavailable`].includes(e.last_event_reason??``)?{label:t(`lark.health.routeUnavailable`),detail:t(`lark.health.routeUnavailableDetail`),state:`not_ready`}:e.last_event_status===`replied_and_acknowledged`?{label:t(`lark.health.listening`),detail:t(`lark.health.eventProcessed`,{events:e.event_count,replies:e.replied_count}),state:`ready`}:e.health_error_code===`lark_event_delivery_unverified`||e.event_count===0?{label:t(`lark.health.eventUnverified`),detail:t(`lark.health.eventUnverifiedDetail`),state:`unverified`}:{label:e.reply_ready?t(`lark.health.listening`):t(`lark.health.unavailable`),detail:t(`lark.health.lastStatus`,{status:e.last_event_status??t(`lark.health.waiting`)}),state:e.reply_ready?`ready`:`not_ready`}}function tx(e){return e.history_permission_guidance?.api_document_url??null}function nx(e,t,n){if(e instanceof Fh){let t=String(e.payload.error_code??``);return{lark_cli_not_installed:n(`lark.error.cliMissing`),lark_cli_not_executable:n(`lark.error.cliExecutable`),lark_cli_start_failed:n(`lark.error.cliStart`),lark_message_permissions_required:n(`lark.error.messagePermissions`),lark_app_required:n(`lark.error.appRequired`),invalid_lark_app:n(`lark.error.invalidApp`),lark_group_lookup_failed:n(`lark.error.groupLookup`),provider_api_failed:n(`lark.error.provider`)}[t]??e.message}return e instanceof Error?e.message:t}function rx({embedded:e=!1,focusGoalConnection:t=!1,goals:n,initialGoalId:r,onChanged:i,onClose:a}){let{t:o}=Ji(),[s,c]=(0,z.useState)(`connections`),[l,u]=(0,z.useState)([]),[d,f]=(0,z.useState)([]),[p,m]=(0,z.useState)(!0),[h,g]=(0,z.useState)(null),[_,v]=(0,z.useState)(``),[y,b]=(0,z.useState)(t),[x,S]=(0,z.useState)(``),[C,w]=(0,z.useState)(r??n[0]?.goalId??``),[T,E]=(0,z.useState)(``),[D,O]=(0,z.useState)([]),[k,ee]=(0,z.useState)(``),[te,A]=(0,z.useState)(!1),[j,M]=(0,z.useState)(null),[ne,N]=(0,z.useState)(`addressed_only`),[P,re]=(0,z.useState)(t&&r?`goal`:`manager`),[ie,ae]=(0,z.useState)(`async_inbox`),[F,oe]=(0,z.useState)(`topic_reply`),[I,se]=(0,z.useState)(``),[L,ce]=(0,z.useState)(!1),[le,ue]=(0,z.useState)({}),[de,fe]=(0,z.useState)(!1),[pe,me]=(0,z.useState)(null),[he,ge]=(0,z.useState)(null),[_e,ve]=(0,z.useState)(null),[ye,be]=(0,z.useState)(null),[xe,Se]=(0,z.useState)(!1),[Ce,we]=(0,z.useState)(`loopx-workspace-bot`),[Te,Ee]=(0,z.useState)(`feishu`),[De,Oe]=(0,z.useState)(null),[ke,Ae]=(0,z.useState)(!1),[R,je]=(0,z.useState)(null),Me=(0,z.useRef)(null),Ne=(0,z.useRef)(null),Pe=(0,z.useRef)(!1);async function Fe(){m(!0),g(null);try{let[e,t]=await Promise.all([Qg(),s_()]);u(e),f(t),S(t=>t||e.find(e=>e.reply_ready)?.app_ref||e.find(e=>e.ready)?.app_ref||e[0]?.app_ref||``)}catch(e){g(nx(e,o(`lark.error.configuration`),o))}finally{m(!1)}}(0,z.useEffect)(()=>{Fe()},[]),(0,z.useEffect)(()=>{if(!t||p||Pe.current||!r)return;Pe.current=!0;let e=d.find(e=>e.goal_id===r);e?Je(e):qe(n.find(e=>e.goalId===r))},[d,t,n,r,p]),(0,z.useEffect)(()=>{if(!y||!x||_e){O([]),ee(``),A(!1),M(null);return}let e=!1;A(!0),M(null);let t=window.setTimeout(()=>{a_(x,T).then(t=>{e||(O(t),ee(e=>t.some(t=>t.chat_id===e)?e:t[0]?.chat_id??``))}).catch(t=>{e||(O([]),ee(``),M(nx(t,o(`lark.error.groupLoad`),o)))}).finally(()=>{e||A(!1)})},180);return()=>{e=!0,window.clearTimeout(t)}},[x,T,y,_e]),(0,z.useEffect)(()=>{if(!xe||!De||[`ready`,`failed`,`cancelled`].includes(De.status))return;let e=!1,t=window.setTimeout(()=>{t_(De.setup_id).then(async t=>{e||(Oe(t),t.verification_url&&Ne.current!==t.verification_url&&(Ne.current=t.verification_url,Me.current&&!Me.current.closed&&(Me.current.location.href=t.verification_url)),t.status===`ready`&&(await Fe(),S(t.app_ref),ue({}),Se(!1)),t.status===`failed`&&je(t.error??o(`lark.error.appCreate`)))}).catch(t=>{e||je(nx(t,o(`lark.error.setupPoll`),o))})},650);return()=>{e=!0,window.clearTimeout(t)}},[xe,De]);let Ie=n.find(e=>e.goalId===C),Le=Ie?.agentId?[{agentId:Ie.agentId,label:Ie.agentLabel??Ie.agentId}]:[],Re=Ie?.agentLanes?.length?Ie.agentLanes:Le,ze=Re.some(e=>e.agentId===I),V=[];L?V=Re.map(e=>({agentId:e.agentId,appRef:le[e.agentId]??x})):ze&&(V=[{agentId:I,appRef:x}]);let Be=V.map(e=>e.agentId),Ve=!!_e||V.length>0&&V.every(e=>l.some(t=>t.app_ref===e.appRef&&t.reply_ready)),He=o(`lark.connect`);he?He=o(`lark.saveConnection`):L&&(He=o(`lark.connectAllAgentsAction`,{count:Be.length}));let Ue=l.find(e=>e.app_ref===x),We=D.find(e=>e.chat_id===k),Ge=(0,z.useMemo)(()=>{let e=_.trim().toLocaleLowerCase();return e?d.filter(t=>[t.app_label,t.chat_name,t.goal_title,t.topic_name].some(t=>t.toLocaleLowerCase().includes(e))):d},[d,_]),Ke=(0,z.useMemo)(()=>d.filter(e=>ex(e,o).state===`unverified`).length,[d,o]);function qe(e){let i=e??n.find(e=>e.goalId===r)??n[0];ge(null),ve(null),re(e||t?`goal`:`manager`),S(l.some(e=>e.app_ref===x)?x:l.find(e=>e.reply_ready)?.app_ref??l[0]?.app_ref??``),ee(``),w(i?.goalId??``),se(i?.agentId??``),ce(!1),ue({}),N(`addressed_only`),ae(`async_inbox`),oe(`topic_reply`),E(``),me(null),b(!0)}function Je(e){ge(e.goal_id),ve(e),re(e.conversation_kind??`goal`),S(e.app_ref),w(e.goal_id);let t=n.find(t=>t.goalId===e.goal_id),r=t?.agentLanes?.length?t.agentLanes:t?.agentId?[{agentId:t.agentId}]:[];se(e.agent_id??(r.length===1?r[0].agentId:``)),ce(!1),ue({}),N(e.capture_scope),ae(e.ingress_mode===`direct_session`?`async_inbox`:e.ingress_mode),oe(e.reply_mode),E(e.chat_name),me(null),b(!0)}function Ye(){Oe(null),je(null),Ne.current=null,Se(!0)}async function Xe(){if(!(ke||!/^[A-Za-z0-9][A-Za-z0-9._-]{0,99}$/.test(Ce))){Ae(!0),je(null),Ne.current=null,Me.current=window.open(window.location.href,`_blank`);try{let e=await e_({appRef:Ce,brand:Te});Oe(e)}catch(e){Me.current?.close(),je(nx(e,o(`lark.error.setupStart`),o))}finally{Ae(!1)}}}async function Ze(){let e=De;if(Se(!1),Me.current?.close(),e&&![`ready`,`failed`,`cancelled`].includes(e.status))try{await n_(e.setup_id)}catch{}}async function Qe(){if(!(!x||!C||!_e&&!We||P===`goal`&&Be.length===0||de)){fe(!0),me(null);try{let e={...P===`manager`?{..._e?{connectionId:_e.connection_id}:{appRef:x,chatId:We.chat_id,chatName:We.chat_name}}:_e?{connectionId:_e.connection_id,agentId:I}:{agentBindings:V,chatId:We.chat_id,chatName:We.chat_name},conversationKind:P,captureScope:P===`manager`?`addressed_only`:ne,goalId:C,incomingMode:ne===`configured_chat_all`?`all`:`mentions`,ingressMode:P===`manager`?`session_queue`:ie,replyMode:F},t=await c_({...e,execute:!1});if(!t.ok)throw new Fh(t.public_summary??t.blocker??o(`lark.error.bindPreview`),{error_code:t.blocker??`provider_api_failed`});let n=await c_({...e,execute:!0});if(!n.ok)throw new Fh(n.public_summary??n.blocker??o(`lark.error.bind`),{error_code:n.blocker??`provider_api_failed`});b(!1),await Fe(),i?.()}catch(e){me(nx(e,o(`lark.error.bind`),o))}finally{fe(!1)}}}async function $e(e,t){if(ye!==t){be(t);return}try{await l_(e,t),be(null),await Fe(),i?.()}catch(e){g(nx(e,o(`lark.error.disconnect`),o))}}return(0,B.jsxs)(`section`,{className:`personal-lark-settings${e?` is-embedded`:``}`,"aria-label":o(`lark.configuration`),children:[e?null:(0,B.jsxs)(`header`,{className:`personal-lark-header`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`small`,{children:o(`settings.goalConnections`)}),(0,B.jsx)(`h1`,{children:`Lark`})]}),(0,B.jsx)(`button`,{"aria-label":o(`lark.closeSettings`),className:`personal-icon-button`,onClick:a,type:`button`,children:(0,B.jsx)(ah,{size:18})})]}),(0,B.jsxs)(`nav`,{className:`personal-lark-tabs`,"aria-label":o(`lark.management`),children:[(0,B.jsxs)(`button`,{"aria-current":s===`apps`?`page`:void 0,onClick:()=>c(`apps`),type:`button`,children:[o(`lark.apps`),` `,(0,B.jsx)(`span`,{children:p?`…`:l.length})]}),(0,B.jsxs)(`button`,{"aria-current":s===`connections`?`page`:void 0,onClick:()=>c(`connections`),type:`button`,children:[o(`lark.connections`),` `,(0,B.jsx)(`span`,{children:p?`…`:d.length})]})]}),h?(0,B.jsx)(`p`,{className:`personal-notification-error`,children:h}):null,p?(0,B.jsxs)(`div`,{className:`personal-lark-loading`,children:[(0,B.jsx)(km,{className:`is-spinning`,size:18}),o(`lark.loading`)]}):null,!p&&s===`apps`?(0,B.jsxs)(`div`,{className:`personal-lark-apps`,children:[(0,B.jsxs)(`div`,{className:`personal-lark-app-toolbar`,children:[(0,B.jsx)(`span`,{children:o(`lark.reusableApps`,{count:l.length})}),(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:Ye,type:`button`,children:[(0,B.jsx)(Bm,{size:16}),o(`lark.newApp`)]})]}),(0,B.jsxs)(`div`,{className:`personal-lark-app-grid`,children:[l.map(e=>(0,B.jsxs)(`article`,{className:`personal-lark-app-card`,children:[(0,B.jsx)(`span`,{className:`personal-lark-app-avatar`,children:(0,B.jsx)(nm,{size:19})}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:e.label}),(0,B.jsxs)(`small`,{children:[e.brand,` · lark-cli profile`]})]}),(0,B.jsx)(`em`,{className:e.reply_ready?`is-ready`:`is-off`,children:e.reply_ready?o(`lark.autoReplyReady`):e.ready?o(`lark.needsMessagePermissions`):o(`lark.needsSetup`)}),(0,B.jsxs)(`p`,{children:[o(`lark.goalConnections`,{count:d.filter(t=>t.app_ref===e.app_ref).length}),e.ready&&!e.reply_ready?` · ${o(`lark.autoReplyUnavailable`)}`:``]})]},e.app_ref)),l.length===0?(0,B.jsx)(`p`,{className:`personal-lark-empty`,children:o(`lark.noProfiles`)}):null]})]}):null,!p&&s===`connections`?(0,B.jsxs)(`div`,{className:`personal-lark-connections`,children:[Ke>0?(0,B.jsxs)(`p`,{className:`personal-lark-route-readiness`,role:`status`,children:[(0,B.jsx)(Nm,{size:15}),o(`lark.routesUnverified`,{count:Ke})]}):null,(0,B.jsxs)(`div`,{className:`personal-lark-toolbar`,children:[(0,B.jsxs)(`label`,{children:[(0,B.jsx)(Gm,{size:16}),(0,B.jsx)(`input`,{"aria-label":o(`lark.searchConnections`),onChange:e=>v(e.target.value),placeholder:o(`lark.searchPlaceholder`),type:`search`,value:_})]}),(0,B.jsxs)(`button`,{className:`personal-primary-action`,disabled:l.length===0||n.length===0,onClick:()=>qe(),type:`button`,children:[(0,B.jsx)(Bm,{size:16}),o(`lark.connectApp`)]})]}),(0,B.jsxs)(`div`,{className:`personal-lark-table`,role:`table`,"aria-label":o(`lark.goalTopicConnections`),children:[(0,B.jsxs)(`div`,{className:`personal-lark-table-head`,role:`row`,children:[(0,B.jsx)(`span`,{children:o(`lark.connection`)}),(0,B.jsx)(`span`,{children:o(`common.goal`)}),(0,B.jsx)(`span`,{children:o(`lark.capture`)}),(0,B.jsx)(`span`,{children:o(`lark.processing`)}),(0,B.jsx)(`span`,{children:o(`common.actions`)})]}),Ge.map(e=>{let t=ex(e,o);return(0,B.jsxs)(`div`,{className:`personal-lark-table-row`,role:`row`,children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.chat_name}),(0,B.jsxs)(`small`,{children:[e.app_label,` · `,t.label]}),(0,B.jsx)(`small`,{children:t.detail}),t.state===`unverified`?(0,B.jsxs)(`a`,{href:`https://open.feishu.cn/document/server-docs/im-v1/message/events/receive?lang=zh-CN`,rel:`noreferrer`,target:`_blank`,children:[(0,B.jsx)(_m,{size:12}),o(`lark.openEventSettings`)]}):null,tx(e)?(0,B.jsxs)(`a`,{href:tx(e)??void 0,rel:`noreferrer`,target:`_blank`,children:[(0,B.jsx)(_m,{size:12}),o(`lark.historyPermission`)]}):null]}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.goal_title}),(0,B.jsxs)(`small`,{children:[`# `,e.topic_name]})]}),(0,B.jsx)(`span`,{children:e.capture_scope===`addressed_only`?o(`lark.mentionsOnly`):o(`lark.allTopicMessages`)}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.conversation_kind===`manager`?o(`lark.managerConversation`):$b(e.ingress_mode,o).label}),(0,B.jsx)(`small`,{children:e.conversation_kind===`manager`?o(`lark.managerConversationDescription`):e.agent_id??$b(e.ingress_mode,o).detail})]}),(0,B.jsxs)(`span`,{className:`personal-lark-row-actions`,children:[(0,B.jsx)(`button`,{"aria-label":o(`lark.settingsConfigure`,{goal:e.goal_title}),onClick:()=>Je(e),type:`button`,children:(0,B.jsx)(Ym,{size:15})}),(0,B.jsxs)(`button`,{"aria-label":o(`lark.settingsDisconnect`,{goal:e.goal_title}),className:ye===e.connection_id?`is-confirm`:``,onClick:()=>void $e(e.goal_id,e.connection_id),type:`button`,children:[(0,B.jsx)(ih,{size:15}),ye===e.connection_id?o(`common.confirm`):null]})]})]},e.connection_id)}),Ge.length===0?(0,B.jsx)(`p`,{className:`personal-lark-empty`,children:o(`lark.noConnections`)}):null]})]}):null,y?(0,B.jsx)(`div`,{className:`personal-lark-modal-backdrop`,role:`presentation`,children:(0,B.jsxs)(`section`,{"aria-labelledby":`connect-lark-title`,"aria-modal":`true`,className:`personal-lark-modal`,role:`dialog`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`small`,{children:`Goal Topic connection`}),(0,B.jsx)(`h2`,{id:`connect-lark-title`,children:o(he?`lark.editConnection`:`lark.connectApp`)})]}),(0,B.jsx)(`button`,{"aria-label":o(`lark.closeConnection`),onClick:()=>b(!1),type:`button`,children:(0,B.jsx)(ah,{size:18})})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.conversationKind`)}),(0,B.jsxs)(`select`,{"aria-label":o(`lark.conversationKind`),disabled:!!_e,value:P,onChange:e=>re(e.target.value),children:[(0,B.jsx)(`option`,{value:`manager`,children:o(`lark.managerConversation`)}),(0,B.jsx)(`option`,{value:`goal`,children:o(`lark.workerConversation`)})]})]}),P===`manager`?(0,B.jsx)(`p`,{children:o(`lark.managerConversationDescription`)}):null,_e?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.appProfile`)}),(0,B.jsx)(`div`,{children:_e.app_label})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.groupChat`)}),(0,B.jsx)(`div`,{children:_e.chat_name})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.bindGoal`)}),(0,B.jsx)(`div`,{children:_e.goal_title})]}),(0,B.jsx)(`small`,{children:o(`lark.editPreservesIdentity`)})]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.appProfile`)}),(0,B.jsx)(`select`,{"aria-label":o(`lark.appProfile`),disabled:p,onChange:e=>{e.target.value===`__register__`?Ye():(S(e.target.value),ue({}))},value:x,children:p?(0,B.jsx)(`option`,{value:``,children:o(`lark.appLoading`)}):(0,B.jsxs)(B.Fragment,{children:[l.map(e=>(0,B.jsxs)(`option`,{disabled:!e.ready,value:e.app_ref,children:[e.label,e.reply_ready?``:e.ready?` · ${o(`lark.needsMessagePermissions`)}`:` · ${o(`lark.needsSetup`)}`]},e.app_ref)),(0,B.jsx)(`option`,{value:`__register__`,children:o(`lark.registerAnother`)})]})}),(0,B.jsx)(`small`,{children:o(`lark.defaultAgentAppDescription`)})]}),Ue?.ready&&!Ue.reply_ready?(0,B.jsx)(`div`,{className:`personal-lark-group-state is-error`,role:`alert`,children:o(`lark.appPermissions`)}):null,(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.groupChat`)}),(0,B.jsx)(`input`,{"aria-label":o(`lark.groupSearch`),onChange:e=>E(e.target.value),placeholder:o(`lark.groupSearch`),type:`search`,value:T}),te?(0,B.jsxs)(`div`,{className:`personal-lark-group-state`,role:`status`,children:[(0,B.jsx)(km,{className:`is-spinning`,size:15}),o(`lark.groupLoading`)]}):null,!te&&j?(0,B.jsx)(`div`,{className:`personal-lark-group-state is-error`,role:`alert`,children:j}):null,!te&&!j&&D.length===0?(0,B.jsx)(`div`,{className:`personal-lark-group-state`,role:`status`,children:o(`lark.groupEmpty`)}):null,!te&&!j&&D.length>0?(0,B.jsx)(`select`,{"aria-label":o(`lark.groupChat`),onChange:e=>ee(e.target.value),value:k,children:D.map(e=>(0,B.jsx)(`option`,{value:e.chat_id,children:e.chat_name},e.chat_id))}):null]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.bindGoal`)}),(0,B.jsx)(`select`,{"aria-label":o(`lark.bindGoal`),onChange:e=>{let t=e.target.value;w(t),se(n.find(e=>e.goalId===t)?.agentId??``),ue({})},value:C,children:n.map(e=>(0,B.jsx)(`option`,{value:e.goalId,children:e.title},e.goalId))})]})]}),(0,B.jsxs)(`label`,{className:`personal-lark-check`,children:[(0,B.jsx)(`input`,{checked:!0,readOnly:!0,type:`checkbox`}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:o(`lark.createAutomatically`)}),(0,B.jsx)(`small`,{children:o(`lark.createAutomaticallyDescription`)})]})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.topicPreview`)}),(0,B.jsxs)(`div`,{className:`personal-lark-topic-preview`,children:[(0,B.jsx)(Nm,{size:15}),`# `,Ie?.title??Ie?.goalId??`Goal`]})]}),P===`goal`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.captureScope`)}),(0,B.jsxs)(`select`,{"aria-label":o(`lark.captureScope`),disabled:_e?.ingress_mode===`direct_session`,onChange:e=>N(e.target.value),value:ne,children:[(0,B.jsx)(`option`,{value:`addressed_only`,children:o(`lark.captureAddressed`)}),(0,B.jsx)(`option`,{value:`configured_chat_all`,children:o(`lark.captureAll`)})]}),(0,B.jsx)(`small`,{children:o(`lark.captureScopeDescription`)})]}),(0,B.jsxs)(`fieldset`,{"aria-label":o(`lark.agentIngress`),className:`personal-lark-ingress`,children:[(0,B.jsx)(`legend`,{children:o(`lark.agentIngress`)}),(0,B.jsx)(`div`,{children:[`live_steering`,`session_queue`,`async_inbox`].map(e=>{let t=$b(e,o);return(0,B.jsxs)(`label`,{className:ie===e?`is-active`:``,children:[(0,B.jsx)(`input`,{"aria-label":t.label,checked:ie===e,name:`lark-agent-ingress`,onChange:()=>ae(e),type:`radio`,value:e}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:t.label}),(0,B.jsx)(`small`,{children:t.detail})]})]},e)})})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.targetAgent`)}),(0,B.jsxs)(`select`,{"aria-label":o(`lark.targetAgent`),disabled:!!_e?.agent_id,onChange:e=>se(e.target.value),value:I,children:[ze?null:(0,B.jsx)(`option`,{disabled:!0,value:I,children:I?o(`lark.agentUnavailable`,{agent:I}):o(`lark.noAgentConfigured`)}),Re.map(e=>(0,B.jsx)(`option`,{value:e.agentId,children:e.label===e.agentId?e.agentId:`${e.label} · ${e.agentId}`},e.agentId))]}),(0,B.jsx)(`small`,{children:o(`lark.targetAgentDescription`)})]}),!he&&Re.length>1?(0,B.jsxs)(`label`,{"aria-label":o(`lark.connectAllAgents`),className:`personal-lark-check`,children:[(0,B.jsx)(`input`,{checked:L,onChange:e=>ce(e.target.checked),type:`checkbox`}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:o(`lark.connectAllAgents`)}),(0,B.jsx)(`small`,{children:o(`lark.connectAllAgentsDescription`,{count:Re.length})})]})]}):null,!he&&L&&Re.length>1?(0,B.jsxs)(`fieldset`,{"aria-label":o(`lark.agentApps`),className:`personal-lark-agent-apps`,children:[(0,B.jsx)(`legend`,{children:o(`lark.agentApps`)}),(0,B.jsx)(`small`,{children:o(`lark.agentAppsDescription`)}),(0,B.jsx)(`div`,{children:Re.map(e=>(0,B.jsxs)(`label`,{children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.label}),(0,B.jsx)(`small`,{children:e.agentId})]}),(0,B.jsx)(`select`,{"aria-label":o(`lark.agentAppSelection`,{agent:e.label}),onChange:t=>ue(n=>({...n,[e.agentId]:t.target.value})),value:le[e.agentId]??x,children:l.map(e=>(0,B.jsxs)(`option`,{disabled:!e.ready,value:e.app_ref,children:[e.label,e.reply_ready?``:e.ready?` · ${o(`lark.needsMessagePermissions`)}`:` · ${o(`lark.needsSetup`)}`]},e.app_ref))})]},e.agentId))})]}):null,L&&V.length>0&&!Ve?(0,B.jsx)(`div`,{className:`personal-lark-group-state is-error`,role:`alert`,children:o(`lark.agentAppPermissions`)}):null,Be.length===0?(0,B.jsx)(`p`,{className:`personal-notification-error`,role:`alert`,children:o(`lark.selectRegisteredAgent`)}):null]}):null,(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.replyMode`)}),(0,B.jsx)(`select`,{"aria-label":o(`lark.replyMode`),onChange:e=>oe(e.target.value),value:F,children:(0,B.jsx)(`option`,{value:`topic_reply`,children:o(`lark.topicReply`)})}),(0,B.jsx)(`small`,{children:o(`lark.replyModeDescription`)})]}),(0,B.jsxs)(`p`,{className:`personal-lark-cardinality`,children:[(0,B.jsx)(am,{size:15}),o(`lark.cardinality`)]}),pe?(0,B.jsx)(`p`,{className:`personal-notification-error`,role:`alert`,children:pe}):null,(0,B.jsxs)(`footer`,{children:[(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:()=>b(!1),type:`button`,children:o(`lark.cancel`)}),(0,B.jsxs)(`button`,{className:`personal-primary-action`,disabled:p||!x||!_e&&(!Ue?.reply_ready||!k)||P===`goal`&&(!Ve||Be.length===0)||!C||de,onClick:()=>void Qe(),type:`button`,children:[de?(0,B.jsx)(km,{className:`is-spinning`,size:15}):null,He]})]})]})}):null,xe?(0,B.jsx)(`div`,{className:`personal-lark-modal-backdrop is-setup`,role:`presentation`,children:(0,B.jsxs)(`section`,{"aria-labelledby":`new-lark-app-title`,"aria-modal":`true`,className:`personal-lark-modal personal-lark-setup-modal`,role:`dialog`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`small`,{children:o(`lark.reusableWorkspaceApp`)}),(0,B.jsx)(`h2`,{id:`new-lark-app-title`,children:o(`lark.newApp`)})]}),(0,B.jsx)(`button`,{"aria-label":o(`lark.closeCreate`),onClick:()=>void Ze(),type:`button`,children:(0,B.jsx)(ah,{size:18})})]}),De?(0,B.jsxs)(`div`,{className:`personal-lark-setup-progress`,children:[(0,B.jsx)(`span`,{className:`personal-lark-setup-icon is-${De.status}`,children:De.status===`ready`?(0,B.jsx)(am,{size:22}):(0,B.jsx)(km,{className:De.status===`failed`?``:`is-spinning`,size:22})}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:De.status===`ready`?o(`lark.appCreated`):De.status===`failed`?o(`lark.appCreateFailed`):o(`lark.waitingFeishu`)}),(0,B.jsx)(`p`,{children:De.status===`waiting_for_feishu`?o(`lark.waitingFeishuDescription`):De.status===`starting`?o(`lark.waitingLink`):De.error})]}),De.verification_url?(0,B.jsxs)(`a`,{href:De.verification_url,rel:`noreferrer`,target:`_blank`,children:[(0,B.jsx)(_m,{size:15}),o(`lark.reopenFeishu`)]}):null]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{className:`personal-lark-setup-copy`,children:o(`lark.setupCopy`)}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.profileName`)}),(0,B.jsx)(`input`,{"aria-label":o(`lark.profileName`),autoComplete:`off`,onChange:e=>we(e.target.value),placeholder:`loopx-workspace-bot`,value:Ce})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.region`)}),(0,B.jsxs)(`select`,{"aria-label":o(`lark.region`),onChange:e=>Ee(e.target.value),value:Te,children:[(0,B.jsx)(`option`,{value:`feishu`,children:`Feishu`}),(0,B.jsx)(`option`,{value:`lark`,children:`Lark`})]})]}),Ce&&!/^[A-Za-z0-9][A-Za-z0-9._-]{0,99}$/.test(Ce)?(0,B.jsx)(`p`,{className:`personal-notification-error`,children:o(`lark.profileValidation`)}):null]}),R?(0,B.jsx)(`p`,{className:`personal-notification-error`,children:R}):null,(0,B.jsxs)(`footer`,{children:[(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:()=>void Ze(),type:`button`,children:o(`lark.cancel`)}),De?null:(0,B.jsxs)(`button`,{className:`personal-primary-action`,disabled:ke||!/^[A-Za-z0-9][A-Za-z0-9._-]{0,99}$/.test(Ce),onClick:()=>void Xe(),type:`button`,children:[ke?(0,B.jsx)(km,{className:`is-spinning`,size:15}):(0,B.jsx)(_m,{size:15}),o(`lark.continueFeishu`)]})]})]})}):null]})}function ix(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function ax(e,t,n){let r=ix(t),i=ix(n);return Object.fromEntries(e.fields.flatMap(({key:e,nullable:t})=>{let n=r[e],a=i[e];return Object.hasOwn(r,e)&&(n!=null||t&&n===null)?[[e,n]]:Object.hasOwn(i,e)&&a!=null?[[e,a]]:[]}))}function ox(e,t){let n;try{n=JSON.parse(t)}catch{return null}if(!n||typeof n!=`object`||Array.isArray(n))return null;let r=new Set(e.fields.map(e=>e.key));return Object.keys(n).some(e=>!r.has(e))?null:n}function sx(e,t,n){let r={...e,[t]:n},i=e.schedule;return t===`timezone`&&i&&typeof i==`object`&&`schema_version`in i&&i.schema_version===`periodic_report_schedule_v0`&&(r.schedule={...i,timezone:n}),r}function cx({id:e,value:t,timezone:n,onChange:r}){let{locale:i}=Ji(),a=i===`zh-CN`,o=t&&typeof t==`object`&&!Array.isArray(t)?t:null,s=String(o?.rrule??``).split(`;`).map(e=>e.split(`=`)),c=Object.fromEntries(s.filter(e=>e.length===2)),l=[`MO`,`TU`,`WE`,`TH`,`FR`,`SA`,`SU`],u=(e,t)=>e!==void 0&&/^\d+$/.test(e)&&Number(e)<=t,d=!o||o.schema_version===`periodic_report_schedule_v0`&&[`DAILY`,`WEEKLY`].includes(c.FREQ)&&o.timezone===n&&s.every(e=>e.length===2&&[`FREQ`,`BYDAY`,`BYHOUR`,`BYMINUTE`,`INTERVAL`].includes(e[0]))&&new Set(s.map(([e])=>e)).size===s.length&&u(c.BYHOUR,23)&&u(c.BYMINUTE??`0`,59)&&(c.FREQ===`WEEKLY`?l.includes(c.BYDAY):!c.BYDAY)&&(!c.INTERVAL||c.INTERVAL===`1`),f=a?[`星期一`,`星期二`,`星期三`,`星期四`,`星期五`,`星期六`,`星期日`]:[`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`,`Sunday`];function p(e){let t={FREQ:`WEEKLY`,BYDAY:`MO`,BYHOUR:`9`,BYMINUTE:`0`,...c,...e};r?.({schema_version:`periodic_report_schedule_v0`,schedule_id:o?.schedule_id??`report-schedule`,timezone:n,rrule:[`FREQ=${t.FREQ}`,...t.FREQ===`WEEKLY`?[`BYDAY=${t.BYDAY}`]:[],`BYHOUR=${t.BYHOUR}`,`BYMINUTE=${t.BYMINUTE}`].join(`;`)})}return(0,B.jsxs)(`div`,{className:`personal-report-schedule`,children:[(0,B.jsxs)(`label`,{className:`is-boolean`,htmlFor:e,children:[(0,B.jsx)(`span`,{children:a?`按日历汇报`:`Calendar reports`}),(0,B.jsx)(`input`,{id:e,type:`checkbox`,role:`switch`,checked:!!o,disabled:!r,onChange:e=>e.target.checked?p({}):r?.(null)})]}),o?(0,B.jsxs)(B.Fragment,{children:[d?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{htmlFor:`${e}-frequency`,children:[(0,B.jsx)(`span`,{children:a?`频率`:`Frequency`}),(0,B.jsxs)(`select`,{id:`${e}-frequency`,value:c.FREQ,disabled:!r,onChange:e=>p({FREQ:e.target.value}),children:[(0,B.jsx)(`option`,{value:`DAILY`,children:a?`每天`:`Daily`}),(0,B.jsx)(`option`,{value:`WEEKLY`,children:a?`每周`:`Weekly`})]})]}),c.FREQ===`WEEKLY`&&(0,B.jsxs)(`label`,{htmlFor:`${e}-day`,children:[(0,B.jsx)(`span`,{children:a?`星期`:`Weekday`}),(0,B.jsx)(`select`,{id:`${e}-day`,value:c.BYDAY,disabled:!r,onChange:e=>p({BYDAY:e.target.value}),children:l.map((e,t)=>(0,B.jsx)(`option`,{value:e,children:f[t]},e))})]}),(0,B.jsxs)(`label`,{htmlFor:`${e}-time`,children:[(0,B.jsxs)(`span`,{children:[a?`当地时间`:`Local time`,` (`,n,`)`]}),(0,B.jsx)(`input`,{id:`${e}-time`,type:`time`,required:!0,disabled:!r,value:`${(c.BYHOUR??`9`).padStart(2,`0`)}:${(c.BYMINUTE??`0`).padStart(2,`0`)}`,onChange:e=>{if(!/^\d{2}:\d{2}$/.test(e.target.value))return;let[t,n]=e.target.value.split(`:`);p({BYHOUR:t,BYMINUTE:n})}})]})]}):(0,B.jsx)(`p`,{role:`alert`,children:a?`此计划需在 JSON 模式中编辑;当前内容已保留。`:`Edit this schedule in JSON mode; its current value is preserved.`}),(0,B.jsx)(`p`,{children:a?`由现有唤醒检查到期计划;实际送达以回执为准。`:`Existing wakes check the schedule; delivery is confirmed by its receipt.`})]}):(0,B.jsx)(`p`,{children:a?`未设置日历计划;保持阶段结束时汇报。`:`No calendar schedule; report at validated stage boundaries.`})]})}function lx({copy:e,field:t,id:n,onChange:r,value:i,timezone:a}){let o=e[t.key]?.label??t.label,s=!r;if(t.input_kind===`periodic_report_schedule`)return(0,B.jsx)(cx,{id:n,value:i,timezone:a,onChange:r?e=>r(t.key,e):void 0});if(t.input_kind===`boolean`)return(0,B.jsxs)(`label`,{className:`is-boolean`,htmlFor:n,children:[(0,B.jsx)(`span`,{children:o}),(0,B.jsx)(`input`,{checked:i===!0,id:n,onChange:r?e=>r(t.key,e.target.checked):void 0,readOnly:s,role:`switch`,type:`checkbox`})]});if(t.input_kind===`select`)return(0,B.jsxs)(`label`,{htmlFor:n,children:[(0,B.jsx)(`span`,{children:o}),(0,B.jsxs)(`select`,{id:n,onChange:r?e=>r(t.key,e.target.value):void 0,value:typeof i==`string`?i:``,children:[(0,B.jsx)(`option`,{value:``}),(t.options??[]).map(e=>(0,B.jsx)(`option`,{value:e,children:e},e))]})]});if(t.input_kind===`string_list`)return(0,B.jsxs)(`label`,{htmlFor:n,children:[(0,B.jsx)(`span`,{children:o}),(0,B.jsx)(`textarea`,{id:n,onChange:r?e=>r(t.key,e.target.value.split(/\r?\n/u).filter(Boolean)):void 0,readOnly:s,rows:4,value:Array.isArray(i)?i.join(` -`):``})]});let c=t.input_kind===`number`;return(0,B.jsxs)(`label`,{htmlFor:n,children:[(0,B.jsx)(`span`,{children:o}),(0,B.jsx)(`input`,{id:n,max:t.maximum,min:t.minimum,onChange:r?e=>r(t.key,c?Number(e.target.value):e.target.value):void 0,readOnly:s,required:t.required,type:c?`number`:`text`,value:typeof i==`number`||typeof i==`string`?i:``})]})}function ux({copy:e={},disabled:t=!1,editor:n,enabledAction:r,omitKeys:i=[],onChange:a,value:o}){let s=(0,z.useId)(),c=new Set(i);return(0,B.jsx)(`fieldset`,{className:`personal-capability-fields`,disabled:t,children:n.fields.filter(e=>!c.has(e.key)).map(t=>{let n=(0,B.jsx)(lx,{copy:e,field:t,id:`${s}-${t.key.replace(/[^a-z0-9_-]/gi,`-`)}`,onChange:a,value:o[t.key],timezone:String(o.timezone??`UTC`)},t.key);return t.key===`enabled`&&t.input_kind===`boolean`?(0,B.jsxs)(`div`,{className:`personal-capability-enabled-row`,children:[n,r]},t.key):n})})}var dx={en:{manager_runtime:{displayName:`Manager runtime`,description:`Selects the persistent host-tool profile used by owner manager conversations.`},steward_executor:{displayName:`Steward executor`,description:`Selects the executor, model, and reasoning effort the steward channel answers on for this machine, ahead of the Chat service environment.`},todo_replan_cadence:{displayName:`Goal review cadence`,description:`Configures the Goal review cadence.`},change_quality_qualification:{displayName:`Change quality qualification`,description:`Prepares a provider-neutral review packet, allows at most one policy-authorized safe-fix pass, and can require an exact-diff receipt.`},explore_graph:{displayName:`Explore Graph`,description:`Organizes bounded exploration as a typed evidence graph so branches, findings, and synthesis remain inspectable.`},explore_harness:{displayName:`Explore Harness`,description:`Selects a capability-owned planning and research harness profile for bounded multi-step exploration.`},lark_event_inbox:{displayName:`Lark event inbox`,description:`Receives provider events through a local-private inbox binding before LoopX projects them into governed work.`,readOnlyReason:`This capability requires a local-private inbox binding. Manage it in Lark settings or through the capability CLI.`},lark_kanban_heartbeat_sync:{displayName:`Lark Kanban heartbeat sync`,description:`Synchronizes accepted LoopX work state to the configured Lark Kanban heartbeat surface.`},local_authority_shadow:{displayName:`Local authority shadow`,description:`Observes post-commit Todo and task-lease state through the shared authority contract without taking write authority.`},multi_subagent:{displayName:`Adaptive child capacity`,description:`Sets bounded child-agent capacity and the public-safe responsibility domains in which parallel work may be delegated.`},peer_task_coordination:{displayName:`Registered-peer task coordination`,description:`Routes explicitly scoped peer-owned work to one registered coordinator without granting cross-owner mutation authority.`},periodic_report:{displayName:`Periodic reports`,description:`Turns validated Goal stage progress into a frozen report and automatically delivers it through the configured Goal Channel with exact readback.`},pull_request_review:{displayName:`Pull-request review`,description:`Ranks the public GitHub PR review queue with a machine-level default; it never grants GitHub, Todo, push, or merge authority.`},reward_memory:{displayName:`Reward Memory experiment`,description:`Configures a reviewed local-private provider binding for Goal-scoped Agent recall and evidence-backed outcome learning.`}},"zh-CN":{manager_runtime:{displayName:`管家 Runtime`,description:`选择管家会话持续生效的宿主工具模式。`},steward_executor:{displayName:`管家执行器`,description:`选择本机管家通道使用的执行器、模型与推理档位,优先级高于服务环境变量。`},todo_replan_cadence:{displayName:`Goal 复核周期`,description:`配置 Goal 的复核周期。`},change_quality_qualification:{displayName:`变更质量验证`,description:`生成与 Provider 无关的审阅包,最多允许一次策略授权的安全修复,并可要求精确 diff 回执。`},explore_graph:{displayName:`探索图谱`,description:`把有界探索组织为 typed 证据图,让探索分支、发现与综合结论都可检查、可追溯。`},explore_harness:{displayName:`探索 Harness`,description:`为有界的多步探索选择由能力负责的规划与研究 Harness profile。`},lark_event_inbox:{displayName:`飞书事件收件箱`,description:`通过本机私有收件箱接收 Provider 事件,再由 LoopX 将其投影为受治理的工作。`,readOnlyReason:`此能力依赖本机私有的收件箱绑定,请在飞书设置或 capability CLI 中管理。`},lark_kanban_heartbeat_sync:{displayName:`飞书看板心跳同步`,description:`把 LoopX 已接受的工作状态同步到配置好的飞书看板心跳界面。`},local_authority_shadow:{displayName:`本地 Authority 影子观测`,description:`通过共享 Authority contract 观测提交后的 Todo 与 task lease 状态,但不取得写入权。`},multi_subagent:{displayName:`自适应子 Agent 容量`,description:`限定子 Agent 容量与可公开的职责域,只有落在这些边界内的工作才能并行委派。`},peer_task_coordination:{displayName:`已注册 Peer 任务协调`,description:`把明确限定的 Peer 工作路由给一个已注册协调者,不授予跨 Owner 修改权限。`},periodic_report:{displayName:`周期报告`,description:`把经过验证的 Goal 阶段进展整理为冻结报告,并通过配置的 Goal Channel 自动发送和精确回读。`},pull_request_review:{displayName:`Pull-request Review`,description:`配置公开 GitHub PR 审阅队列的本机默认排序;不会授予 GitHub、Todo、push 或 merge 权限。`},reward_memory:{displayName:`Reward Memory 实验`,description:`为 Goal 内 Agent 的召回与证据化结果学习配置经过审阅的本机私有 Provider 绑定。`}}},fx={en:{runtime_profile:{label:`Runtime profile`,description:`Restricted keeps scoped LoopX reads only. Trusted owner enables normal host tools while protected operations retain separate checks.`},executor_endpoint:{label:`Steward executor`,description:`The executor this machine's steward channel answers on. The choice outranks the Chat service environment and the shipped default.`},executor_model:{label:`Model`,description:`Optional model for the selected executor. Leave blank to keep the executor's own default.`},executor_reasoning_effort:{label:`Reasoning effort`,description:`Optional reasoning effort for the selected executor. Leave blank to keep the executor's own default.`},completed_todos:{label:`Completed Todos between Goal reviews`,description:`Machine default or explicit Goal override, from 1 to 5.`},allowed_domains:{label:`Allowed responsibility domains`,description:`Enter one bounded, public-safe domain per line.`},coordinator_agent_id:{label:`Coordinator Agent`,description:`Use an already registered Agent id; leave blank to disable coordination.`},enabled:{label:`Enabled`},model:{label:`Child model`,description:`For example gpt-5.6-luna. Blank clears the child model preference.`},reasoning_effort:{label:`Child reasoning effort`,description:`For example max; the host must support this model and effort.`},max_children:{label:`Maximum children`,description:`Hard upper bound for concurrently delegated child work.`},profile:{label:`Planner profile`,description:`Select one registered Explore Harness profile.`},profile_preset:{label:`Report profile`,description:`Capability-owned report profile, such as weekly-progress.`},wait_for_ci:{label:`Wait for CI`,description:`Disable to use local validation without querying or waiting for CI. Merge authority is unchanged.`},review_priority:{label:`Review priority`,description:`Choose whether other developers' PRs or the authenticated reviewer's own PRs are ranked first.`},route_ref:{label:`Goal Channel route`,description:`Public route alias only; credentials and provider identifiers stay outside this form.`},safe_fix:{label:`Allow one bounded safe-fix pass`},strict_receipt:{label:`Require an exact-diff receipt`},timezone:{label:`Timezone`,description:`Use an IANA timezone, for example Asia/Shanghai.`},schedule:{label:`Calendar reports`,description:`Optional daily or weekly reports; no schedule preserves stage-only delivery.`},config_path:{label:`Local-private configuration path`,description:`Repo-relative ignored JSON under .loopx/config/. Leave blank to retain the current binding; the path is never returned.`},enabled_agents:{label:`Enabled Goal Agents`,description:`Enter one registered Goal-local Agent id per line. A private binding currently accepts exactly one Agent.`}},"zh-CN":{runtime_profile:{label:`运行模式`,description:`restricted 仅使用受限 LoopX 读取;trusted_owner 开放常规宿主工具,但受保护操作仍单独校验。`},executor_endpoint:{label:`管家执行器`,description:`本机管家通道使用的执行器;优先级高于 Chat 服务环境变量与出货默认值。`},executor_model:{label:`模型`,description:`所选执行器使用的模型,可留空;留空表示沿用执行器自身的默认模型。`},executor_reasoning_effort:{label:`推理档位`,description:`所选执行器使用的推理档位,可留空;留空表示沿用执行器自身的默认档位。`},completed_todos:{label:`两次 Goal 复核间的已完成 Todo 数`,description:`可设置 1–5;机器默认值可被 Goal 显式覆盖。`},allowed_domains:{label:`允许的职责域`,description:`每行填写一个有边界、可公开的职责域。`},coordinator_agent_id:{label:`协调 Agent`,description:`填写一个已经注册的 Agent ID;留空表示关闭协调。`},enabled:{label:`启用`},model:{label:`子 Agent 模型`,description:`例如 gpt-5.6-luna;留空清除模型偏好。`},reasoning_effort:{label:`子 Agent 推理档位`,description:`例如 max;宿主须支持所选模型与档位。`},max_children:{label:`最大子 Agent 数`,description:`可同时委派的子任务硬上限。`},profile:{label:`规划 Profile`,description:`选择一个已注册的 Explore Harness profile。`},profile_preset:{label:`报告 Profile`,description:`由该能力管理的报告 profile,例如 weekly-progress。`},wait_for_ci:{label:`等待 CI`,description:`关闭后使用本地验证,不查询或等待 CI;不改变合并权限。`},review_priority:{label:`审阅优先级`,description:`选择先排其他开发者的 PR,还是先排当前已认证审阅者自己的 PR。`},route_ref:{label:`Goal Channel 路由`,description:`只填写公开 route alias;凭据与 Provider 标识不会进入此表单。`},safe_fix:{label:`允许一次有界安全修复`},strict_receipt:{label:`要求精确 diff 回执`},timezone:{label:`时区`,description:`使用 IANA 时区,例如 Asia/Shanghai。`},schedule:{label:`日历汇报`,description:`可选每日或每周计划;未设置时保持阶段结束汇报。`},config_path:{label:`本机私有配置路径`,description:`填写 .loopx/config/ 下、相对仓库且被忽略的 JSON;留空保留当前绑定,路径不会被回传。`},enabled_agents:{label:`已启用的 Goal Agent`,description:`每行填写一个已注册的 Goal 内 Agent ID;私有绑定当前只接受一个 Agent。`}}};function px(e,t){let n=dx[t][e.capability_id];return n?{...e,display_name:n.displayName,description:n.description,configuration_editor:{...e.configuration_editor,...n.readOnlyReason?{read_only_reason:n.readOnlyReason}:{}}}:e}function mx(e){return fx[e]}Object.freeze(Object.keys(dx.en).sort());function hx(e,t){return e.available_scopes.includes(t)&&(t!==`machine`||!!e.machine_namespace)&&e.configuration_editor.editable&&e.configuration_editor.writable_scopes.includes(t)}function gx({values:e,t}){return(0,B.jsxs)(`details`,{className:`personal-capability-raw-values`,children:[(0,B.jsx)(`summary`,{children:t(`capabilities.rawJson`)}),(0,B.jsx)(`div`,{className:`personal-capability-value-grid`,children:e.map(({label:e,value:t})=>(0,B.jsxs)(`section`,{children:[(0,B.jsx)(`strong`,{children:e}),(0,B.jsx)(`pre`,{children:t?JSON.stringify(t,null,2):`—`})]},e))})]})}function _x({source:e,t}){return e?(0,B.jsxs)(`p`,{className:`personal-capability-effective-source`,children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:15}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:t(`capabilities.effectiveSource`)}),t(`capabilities.source.${e}`)]})]}):null}function vx({available:e,description:t,t:n}){return e?null:(0,B.jsxs)(`section`,{className:`personal-capability-editor-status is-read-only`,children:[(0,B.jsx)(rh,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:n(`capabilities.readOnly`)}),(0,B.jsx)(`p`,{children:t})]})]})}function yx(e){return e.availability?.includes(`experimental`)?4:e.capability_id===`multi_subagent`?3:e.configuration_editor.writable_scopes.length===0||e.availability===`supported_explicit_opt_in`?2:e.availability===`supported_explicit_override`?0:1}function bx(e,t){return[...e].sort((e,n)=>{let r=yx(e)-yx(n);if(r!==0)return r;let i=px(e,t),a=px(n,t);return i.display_name.localeCompare(a.display_name,t)||e.capability_id.localeCompare(n.capability_id)})}function xx({capabilities:e,locale:t,onSelect:n,scope:r,selectedCapabilityId:i,t:a}){return(0,B.jsx)(`nav`,{"aria-label":a(r===`goal`?`capabilities.catalog`:`machine.capabilityCatalog`),className:`personal-capability-list`,tabIndex:0,children:bx(e,t).map(e=>{let o=px(e,t);return(0,B.jsxs)(`button`,{"aria-current":i===o.capability_id?`page`:void 0,onClick:()=>n(o.capability_id),type:`button`,children:[(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:o.display_name})}),(0,B.jsx)(`em`,{children:a(o.available_scopes.includes(r)?r===`goal`?`capabilities.goalScope`:`capabilities.machineScope`:r===`machine`?`capabilities.goalScope`:`capabilities.machineScope`)})]},o.capability_id)})})}function Sx({capability:e,locale:t,source:n}){let{t:r}=Ji(),i=px(e,t);return(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`span`,{className:`personal-settings-icon`,children:(0,B.jsx)(Zm,{"aria-hidden":!0,size:18})}),(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`div`,{className:`personal-capability-heading-row`,children:[(0,B.jsx)(`h2`,{children:i.display_name}),(0,B.jsx)(_x,{source:n,t:r})]}),e.context_contribution&&(0,B.jsxs)(`details`,{className:`personal-capability-help`,"data-testid":`capability-context-phases`,children:[(0,B.jsx)(`summary`,{children:t===`zh-CN`?`主 Agent 协作指导`:`Coordinator workflow guidance`}),(0,B.jsx)(`p`,{children:t===`zh-CN`?`随能力开启。支持以下阶段;此处展示能力范围,不能证明某次运行已读取或采纳。`:`Enabled with this capability. These are supported phases, not proof that a run read or adopted the guidance.`}),(0,B.jsx)(`dl`,{children:e.context_contribution.supported_phases.map(e=>(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:(0,B.jsx)(`code`,{children:e})}),(0,B.jsx)(`dd`,{children:Cx[e][t===`zh-CN`?`zh`:`en`]})]},e))}),(0,B.jsx)(`p`,{children:t===`zh-CN`?`LoopX Turn 在请求与结果中提供上下文;原生工具入口由 LoopX skill 调用同一只读接口。执行与采纳需另看运行证据。`:`LoopX Turn includes context in requests and results. For native tools, the LoopX skill reads the same interface. Execution and adoption require run evidence.`})]}),(0,B.jsxs)(`details`,{className:`personal-capability-help`,children:[(0,B.jsx)(`summary`,{children:t===`zh-CN`?`配置说明`:`Configuration help`}),(0,B.jsx)(`p`,{children:i.description}),(0,B.jsx)(`dl`,{children:e.configuration_editor.fields.map(e=>{let n=mx(t)[e.key],r=n?.description??e.description;return r?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:n?.label??e.label}),(0,B.jsx)(`dd`,{children:r})]},e.key):null})})]},e.capability_id)]})]})}var Cx={before_plan:{zh:`规划前:识别独立问题并保留主 Agent 的核验与整合职责。`,en:`Before planning: identify independent questions and retain coordinator validation and integration.`},before_delegate:{zh:`委派前:明确子任务边界、模型偏好及预期证据。`,en:`Before delegation: specify task boundaries, model preferences and expected evidence.`},after_delegate_result:{zh:`回收后:核验结果,说明采纳决定并关联计划与成果。`,en:`After results: validate evidence, explain acceptance and link plans and deliverables.`}};function wx({callbacks:e,goalId:t,notification:n,onChanged:r}){let{t:i}=Ji(),[a,o]=(0,z.useState)(!1),[s,c]=(0,z.useState)(null);async function l(n){if(e.onToggleGoalAutoNotify){o(!0),c(null);try{let a=await e.onToggleGoalAutoNotify({autoNotify:n,goalId:t});if(!a.ok){c(a.public_summary??a.blocker??i(`notifications.setupFailed`));return}r()}catch(e){c(e instanceof Error?e.message:i(`notifications.setupFailed`))}finally{o(!1)}}}return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{className:`personal-notification-toggle`,children:[(0,B.jsx)(`input`,{checked:n?.humanGateAutoNotifyEnabled??!1,disabled:a||n?.configured!==!0||!e.onToggleGoalAutoNotify,onChange:e=>void l(e.target.checked),type:`checkbox`}),(0,B.jsx)(`span`,{children:i(`notifications.autoNotify`)}),a?(0,B.jsx)(km,{"aria-hidden":!0,className:`is-spinning`,size:14}):null]}),s?(0,B.jsx)(`p`,{className:`personal-notification-error`,role:`alert`,children:s}):null]})}function Tx({goalId:e,onApplied:t,selected:n,t:r}){let[i,a]=(0,z.useState)({busy:null,draft:{},partialWrite:null,preview:null}),[o,s]=(0,z.useState)(null),[c,l]=(0,z.useState)(`guided`),[u,d]=(0,z.useState)(``),f=(0,z.useMemo)(()=>n?ox(n.configuration_editor,u):null,[n,u]),p=c===`guided`||f!==null;(0,z.useEffect)(()=>{l(`guided`),d(``),a({busy:null,draft:ax(n?.configuration_editor??{fields:[]},n?.current??n?.effective_configuration?.configuration??n?.default,n?.default),partialWrite:null,preview:null}),s(null)},[n]);async function m(t){if(!(!n||i.busy||!p)){a(e=>({...e,busy:`preview`,partialWrite:null})),s(null);try{let r=await Vg(e,n.capability_id,t);a(e=>({...e,preview:r}))}catch(e){s(e instanceof Error?e.message:r(`capabilities.previewFailed`))}finally{a(e=>({...e,busy:null}))}}}async function h(){if(!(!n||!i.preview||i.busy||!p)){a(e=>({...e,busy:`apply`})),s(null);try{let r=ax(n.configuration_editor,i.draft,n.default),o=await Hg(e,n.capability_id,i.preview.action===`delete`?null:r,i.preview.plan_revision);a(e=>({...e,partialWrite:o.status===`partial_write`?o:null,preview:null})),o.status!==`partial_write`&&t()}catch(e){a(e=>({...e,preview:null})),s(e instanceof Error?e.message:r(`capabilities.applyFailed`))}finally{a(e=>({...e,busy:null}))}}}function g(e,t){a(r=>({...r,draft:n?.capability_id===`periodic_report`?sx(r.draft,e,t):{...r.draft,[e]:t},preview:null})),s(null)}function _(e){if(!n||i.busy)return;d(e);let t=ox(n.configuration_editor,e);a(e=>({...e,preview:null,draft:t?ax(n.configuration_editor,t,n.default):e.draft})),s(null)}function v(){i.busy||!p||(c===`guided`&&d(JSON.stringify(i.draft,null,2)),l(c===`guided`?`json`:`guided`),a(e=>({...e,preview:null})))}return{apply:h,changeDraft:g,changeJson:_,changeMode:v,editorMode:c,jsonDraft:u,jsonValid:p,error:o,mutation:i,preview:m}}function Ex({mutationError:e,onApplied:t,partialWrite:n,preview:r}){let{t:i}=Ji();return(0,B.jsxs)(B.Fragment,{children:[e?(0,B.jsx)(`p`,{className:`personal-machine-error`,role:`alert`,children:e}):null,n?(0,B.jsxs)(`section`,{"aria-live":`polite`,className:`personal-capability-recovery`,children:[(0,B.jsx)(rh,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:i(`capabilities.partialWrite`)}),(0,B.jsx)(`p`,{children:i(`capabilities.partialWriteDescription`)}),(0,B.jsx)(`small`,{children:n.recommended_action})]}),(0,B.jsxs)(`button`,{onClick:t,type:`button`,children:[(0,B.jsx)(Hm,{"aria-hidden":!0,size:15}),i(`capabilities.refreshSource`)]})]}):null,r?(0,B.jsxs)(`section`,{className:`personal-capability-preview`,"aria-label":i(`capabilities.preview`),children:[(0,B.jsx)(`strong`,{children:i(`capabilities.preview`)}),(0,B.jsx)(`span`,{children:i(`machine.action.${r.action}`)}),(0,B.jsx)(`small`,{children:i(`capabilities.previewLocked`)})]}):null]})}function Dx({callbacks:e,catalog:t,goalId:n,notification:r,onApplied:i,onNotificationChanged:a}){let{locale:o,t:s}=Ji(),c=(0,z.useMemo)(()=>bx(t.capabilities,o),[t.capabilities,o]),[l,u]=(0,z.useState)(()=>c[0]?.capability_id??``),d=(0,z.useMemo)(()=>c.find(e=>e.capability_id===l)??c[0],[c,l]),f=(0,z.useMemo)(()=>d?px(d,o):void 0,[o,d]),{apply:p,changeDraft:m,changeJson:h,changeMode:g,editorMode:_,jsonDraft:v,jsonValid:y,error:b,mutation:x,preview:S}=Tx({goalId:n,onApplied:i,selected:f,t:s}),{busy:C,draft:w,partialWrite:T,preview:E}=x;if(!d||!f)return(0,B.jsx)(`p`,{className:`personal-capability-empty`,children:s(`capabilities.empty`)});let D=f.available_scopes.includes(`goal`),O=hx(f,`goal`),k=f.configuration_editor.read_only_reason??s(D?`capabilities.previewOnly`:`capabilities.machineOnly`);async function ee(){if(!f||!O||C||!y)return;let e=ax(f.configuration_editor,w,f.default);await S(e)}async function te(){!O||C||await S(null)}return(0,B.jsxs)(`div`,{className:`personal-capability-layout`,children:[(0,B.jsx)(xx,{capabilities:t.capabilities,locale:o,onSelect:u,scope:`goal`,selectedCapabilityId:f.capability_id,t:s}),(0,B.jsxs)(`article`,{"aria-label":f.display_name,className:`personal-capability-detail`,tabIndex:0,children:[(0,B.jsx)(Sx,{capability:d,locale:o,source:f.effective_configuration?.source}),(0,B.jsx)(vx,{available:O,t:s,description:k}),f.capability_id===`lark_event_inbox`?(0,B.jsxs)(`section`,{className:`personal-capability-linked-setting`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:s(`capabilities.larkInboxNotificationSetting`)}),(0,B.jsx)(`p`,{children:s(`capabilities.larkInboxNotificationDescription`)})]}),(0,B.jsx)(wx,{callbacks:e,goalId:n,notification:r,onChanged:a})]}):null,O?(0,B.jsxs)(B.Fragment,{children:[_===`json`||!f.configuration_editor.fields.some(e=>e.key===`enabled`&&e.input_kind===`boolean`)?(0,B.jsx)(`div`,{className:`personal-capability-editor-mode`,children:(0,B.jsxs)(`button`,{disabled:!!C||!y,onClick:g,type:`button`,children:[(0,B.jsx)(fm,{"aria-hidden":!0,size:14}),s(_===`guided`?`machine.editJson`:`machine.backToForm`)]})}):null,_===`guided`?(0,B.jsx)(`section`,{className:`personal-capability-field-summary`,children:(0,B.jsx)(ux,{disabled:!!C,copy:mx(o),editor:f.configuration_editor,onChange:m,value:w,enabledAction:(0,B.jsxs)(`button`,{className:`personal-capability-edit-json`,onClick:g,type:`button`,children:[(0,B.jsx)(fm,{"aria-hidden":!0,size:14}),s(`machine.editJson`)]})})}):(0,B.jsxs)(`label`,{className:`personal-capability-json-editor`,htmlFor:`goal-configuration-json`,children:[(0,B.jsx)(`span`,{children:s(`capabilities.jsonConfiguration`)}),(0,B.jsx)(`textarea`,{id:`goal-configuration-json`,"aria-describedby":`goal-configuration-json-help`,disabled:!!C,onChange:e=>h(e.target.value),rows:12,spellCheck:!1,value:v}),(0,B.jsx)(`small`,{id:`goal-configuration-json-help`,children:s(`capabilities.jsonHelp`)}),y?null:(0,B.jsx)(`span`,{className:`personal-machine-validation`,role:`alert`,children:s(`capabilities.jsonInvalid`)})]})]}):null,(0,B.jsx)(Ex,{mutationError:b,onApplied:i,partialWrite:T,preview:E}),O?(0,B.jsxs)(`footer`,{className:`personal-capability-actions`,children:[f.current&&f.available_scopes.includes(`machine`)?(0,B.jsx)(`button`,{disabled:!!C||!y,onClick:()=>void te(),type:`button`,children:s(`capabilities.restoreInheritance`)}):null,(0,B.jsx)(`button`,{disabled:!!C||!y,onClick:()=>void ee(),type:`button`,children:s(C===`preview`?`common.loading`:`capabilities.previewChanges`)}),(0,B.jsx)(`button`,{className:`is-primary`,disabled:!!C||!E||!y,onClick:()=>void p(),type:`button`,children:s(C===`apply`?`common.loading`:`capabilities.applyPreview`)})]}):null,(0,B.jsx)(gx,{values:[{label:s(`capabilities.goalValue`),value:f.current},{label:s(f.machine_current?`capabilities.machineValue`:`capabilities.defaultValue`),value:f.machine_current??f.default}],t:s},d.capability_id)]})]})}function Ox({callbacks:e,goalId:t,notification:n,onChanged:r}){let{t:i}=Ji(),[a,o]=(0,z.useState)(null),[s,c]=(0,z.useState)(null),[l,u]=(0,z.useState)(!1);function d(){t&&(u(!0),c(null),Bg(t).then(o).catch(e=>c(e instanceof Error?e.message:i(`capabilities.loadFailed`))).finally(()=>u(!1)))}return(0,z.useEffect)(d,[t]),t?l&&!a?(0,B.jsxs)(`p`,{"aria-live":`polite`,className:`personal-capability-empty`,children:[(0,B.jsx)(km,{className:`personal-spin`,size:18}),i(`capabilities.loading`)]}):s?(0,B.jsxs)(`section`,{className:`personal-capability-error`,role:`alert`,children:[(0,B.jsx)(rh,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:i(`capabilities.loadFailed`)}),(0,B.jsx)(`small`,{children:s})]}),(0,B.jsxs)(`button`,{onClick:d,type:`button`,children:[(0,B.jsx)(Hm,{"aria-hidden":!0,size:15}),i(`capabilities.retry`)]})]}):a?(0,B.jsxs)(`section`,{className:`personal-capability-settings`,"data-revision":a.revision,children:[(0,B.jsxs)(`details`,{className:`personal-capability-scope-note`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:17}),i(`capabilities.atomicOverride`)]}),(0,B.jsx)(`p`,{children:i(`capabilities.atomicOverrideDescription`)})]}),(0,B.jsx)(Dx,{callbacks:e,catalog:a.capability_catalog,goalId:t,notification:n,onApplied:d,onNotificationChanged:r})]}):null:(0,B.jsx)(`p`,{className:`personal-capability-empty`,children:i(`capabilities.chooseGoal`)})}function kx(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function Ax(e,t){let n=t?.machine_namespace;return n?e?.machine_configuration?.namespaces[n]:void 0}function jx(e,t,n){return{...kx(e.default),...kx(t),...n}}function Mx(e,t){for(let n of e.configuration_editor.fields){let e=t[n.key];if(n.required&&(e==null||e===``))return!1}return e.capability_id===`periodic_report`&&t.enabled===!0?!!(String(t.profile_preset??``).trim()&&String(t.route_ref??``).trim()&&String(t.timezone??``).trim()):!0}function Nx(e){try{let t=JSON.parse(e);return t&&typeof t==`object`&&!Array.isArray(t)?t:null}catch{return null}}function Px(e){return e?e===`absent`?e:e.replace(/^sha256:/,``).slice(0,12):`—`}function Fx(){let{locale:e,t}=Ji(),[n,r]=(0,z.useState)(null),[i,a]=(0,z.useState)(``),[o,s]=(0,z.useState)({}),[c,l]=(0,z.useState)(`{}`),[u,d]=(0,z.useState)(`guided`),[f,p]=(0,z.useState)(null),[m,h]=(0,z.useState)(`upsert`),[g,_]=(0,z.useState)(null),[v,y]=(0,z.useState)(null),[b,x]=(0,z.useState)(`load`),[S,C]=(0,z.useState)(null),[w,T]=(0,z.useState)(null),E=(0,z.useMemo)(()=>bx(n?.capability_catalog.capabilities??[],e),[n,e]),D=n?.invalid_namespaces[0],O=E.find(e=>e.capability_id===i)??(D?E.find(e=>e.machine_namespace===D):void 0)??E.find(e=>hx(e,`machine`))??E[0],k=O?px(O,e):void 0,ee=Ax(n,k),te=!!(k?.machine_namespace&&ee),A=!!(k&&hx(k,`machine`)),j=(0,z.useMemo)(()=>Nx(c),[c]),M=k?u===`json`?j:jx(k,ee,o):null,ne=!!(k&&(u===`json`?j:Mx(k,M??{})));async function N(){r(await zg())}(0,z.useEffect)(()=>{let e=!0;return zg().then(t=>{e&&r(t)}).catch(n=>{e&&C(n instanceof Error?n.message:t(`machine.loadError`))}).finally(()=>{e&&x(null)}),()=>{e=!1}},[t]),(0,z.useEffect)(()=>{if(!k)return;let e=Ax(n,k),t=ax(k.configuration_editor,e??k.default,k.default),r=jx(k,e,t);s(t),l(JSON.stringify(r,null,2)),d(A?`guided`:`json`),p(null),h(`upsert`),y(null)},[n,i,e]);function P(e,t){s(n=>k?.capability_id===`periodic_report`?sx(n,e,t):{...n,[e]:t}),p(null),h(`upsert`),C(null),T(null)}function re(e){if(k){if(e===`json`)l(JSON.stringify(jx(k,ee,o),null,2));else if(j)s(ax(k.configuration_editor,j,k.default));else{C(t(`machine.jsonInvalid`));return}d(e),p(null),h(`upsert`),C(null)}}async function ie(){if(!(!A||!k?.machine_namespace||!M||!ne||b)){x(`preview`),C(null),T(null);try{h(`upsert`),p(await Ug(k.machine_namespace,M))}catch(e){C(e instanceof Error?e.message:t(`machine.previewError`))}finally{x(null)}}}async function ae(){if(!(!A||!k?.machine_namespace||!te||b)){x(`preview`),C(null),T(null);try{h(`remove`),p(await Gg(k.machine_namespace))}catch(e){C(e instanceof Error?e.message:t(`machine.previewError`))}finally{x(null)}}}async function F(){if(!A||!k?.machine_namespace||!f||b||m===`upsert`&&!M)return;x(`apply`),C(null);let e=m;try{let n=e===`remove`?await Kg(k.machine_namespace,f.plan_revision):await Wg(k.machine_namespace,M,f.plan_revision);_(n),p(null),h(`upsert`),y(null),await N(),T(n.status===`applied`?t(e===`remove`?`machine.removed`:`machine.applied`):t(`machine.unchanged`))}catch(e){p(null),h(`upsert`),C(e instanceof Error?e.message:t(`machine.applyError`))}finally{x(null)}}async function oe(){if(!(!g?.transaction_id||b)){x(`rollback-preview`),C(null);try{y(await qg(g.transaction_id))}catch(e){C(e instanceof Error?e.message:t(`machine.rollbackError`))}finally{x(null)}}}async function I(){if(!(!g?.transaction_id||!v||b)){x(`rollback`),C(null);try{await Jg(g.transaction_id,v.plan_revision),_(null),y(null),p(null),await N(),T(t(`machine.rolledBack`))}catch(e){y(null),C(e instanceof Error?e.message:t(`machine.rollbackError`))}finally{x(null)}}}return b===`load`?(0,B.jsx)(`div`,{className:`personal-machine-loading`,role:`status`,children:t(`common.loading`)}):k?(0,B.jsxs)(`section`,{className:`personal-capability-settings`,"data-revision":n?.revision,children:[(0,B.jsxs)(`details`,{className:`personal-capability-scope-note`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:17}),t(`machine.liveDefault`)]}),(0,B.jsx)(`p`,{children:t(`machine.liveDefaultDescription`)})]}),(0,B.jsxs)(`div`,{className:`personal-capability-body`,children:[n?.status===`invalid`?(0,B.jsxs)(`section`,{className:`personal-machine-error`,"data-testid":`machine-invalid-repair`,role:`alert`,children:[(0,B.jsx)(`strong`,{children:t(`machine.invalidStoredConfiguration`)}),(0,B.jsx)(`p`,{children:t(`machine.invalidStoredConfigurationDescription`)})]}):null,(0,B.jsxs)(`div`,{className:`personal-capability-layout`,children:[(0,B.jsx)(xx,{capabilities:E,locale:e,onSelect:a,scope:`machine`,selectedCapabilityId:k.capability_id,t}),(0,B.jsxs)(`article`,{"aria-label":k.display_name,className:`personal-capability-detail`,tabIndex:0,children:[(0,B.jsx)(Sx,{capability:O,locale:e,source:k.available_scopes.includes(`machine`)?te?`machine_default`:`capability_default`:void 0}),(0,B.jsx)(vx,{available:A,t,description:k.available_scopes.includes(`machine`)?t(`machine.editorUnavailableDescription`):t(`machine.goalOnly`)}),k.capability_id===`periodic_report`?(0,B.jsxs)(`section`,{className:`personal-capability-behavior-note`,children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:ee?.schedule?e===`zh-CN`?`日历与阶段汇报`:`Calendar and stage reports`:t(`machine.periodicReportActivation`)}),(0,B.jsx)(`p`,{children:ee?.schedule?ee.enabled===!0?e===`zh-CN`?`已配置日历计划,由现有唤醒检查;是否送达请核对报告回执。`:`A calendar schedule is configured and checked by existing wakes. Verify delivery in the report receipt.`:e===`zh-CN`?`日历计划已保存;启用此能力后才会检查和投递。`:`The schedule is saved; enable this capability to check and deliver reports.`:t(`machine.periodicReportActivationDescription`)})]})]}):null,k.capability_id===`change_quality_qualification`?(0,B.jsxs)(`section`,{className:`personal-capability-behavior-note`,children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:t(`machine.changeQualityActivation`)}),(0,B.jsx)(`p`,{children:t(`machine.changeQualityActivationDescription`)})]})]}):null,k.capability_id===`todo_replan_cadence`?(0,B.jsxs)(`section`,{className:`personal-capability-behavior-note`,children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:t(`machine.replanCadenceActivation`)}),(0,B.jsx)(`p`,{children:t(`machine.replanCadenceActivationDescription`)})]})]}):null,k.capability_id===`pull_request_review`?(0,B.jsxs)(`section`,{className:`personal-capability-behavior-note`,children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:e===`zh-CN`?`只改变队列排序`:`Queue ordering only`}),(0,B.jsx)(`p`,{children:e===`zh-CN`?`默认先审阅其他开发者的 PR;选择 owner-first 才会优先当前已认证审阅者自己的 PR。此配置不会发布 review、写 Todo、push 或 merge。`:`The default reviews other developers' PRs first; choose owner-first only when the authenticated reviewer's own PRs should lead. This setting never posts a review, writes Todos, pushes, or merges.`})]})]}):null,A?(0,B.jsxs)(B.Fragment,{children:[u===`json`||!k.configuration_editor.fields.some(e=>e.key===`enabled`&&e.input_kind===`boolean`)?(0,B.jsx)(`div`,{className:`personal-capability-editor-mode`,children:(0,B.jsxs)(`button`,{onClick:()=>re(u===`guided`?`json`:`guided`),type:`button`,children:[(0,B.jsx)(fm,{"aria-hidden":!0,size:14}),t(u===`guided`?`machine.editJson`:`machine.backToForm`)]})}):null,u===`guided`?(0,B.jsxs)(`section`,{className:`personal-capability-field-summary`,children:[(0,B.jsx)(ux,{copy:mx(e),disabled:!!b,editor:k.configuration_editor,onChange:P,value:o,enabledAction:(0,B.jsxs)(`button`,{className:`personal-capability-edit-json`,onClick:()=>re(`json`),type:`button`,children:[(0,B.jsx)(fm,{"aria-hidden":!0,size:14}),t(`machine.editJson`)]})}),ne?null:(0,B.jsx)(`p`,{className:`personal-machine-validation`,role:`alert`,children:t(`machine.requiredFields`)})]}):(0,B.jsxs)(`label`,{className:`personal-capability-json-editor`,htmlFor:`machine-configuration-json`,children:[(0,B.jsx)(`span`,{children:t(`machine.jsonConfiguration`)}),(0,B.jsx)(`textarea`,{"aria-describedby":`machine-configuration-json-help`,disabled:!!b,id:`machine-configuration-json`,onChange:e=>{l(e.target.value),p(null),C(null)},rows:12,spellCheck:!1,value:c}),(0,B.jsx)(`small`,{id:`machine-configuration-json-help`,children:t(`machine.jsonConfigurationHelp`)}),j?null:(0,B.jsx)(`span`,{className:`personal-machine-validation`,role:`alert`,children:t(`machine.jsonInvalid`)})]})]}):null,S?(0,B.jsx)(`p`,{className:`personal-machine-error`,role:`alert`,children:S}):null,w?(0,B.jsxs)(`p`,{className:`personal-machine-notice`,role:`status`,"aria-live":`polite`,children:[(0,B.jsx)(am,{"aria-hidden":!0,size:16}),w]}):null,f?(0,B.jsxs)(`section`,{"aria-label":t(`machine.preview`),className:`personal-machine-preview`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:t(`machine.preview`)}),(0,B.jsx)(`span`,{children:t(`machine.action.${f.action}`)})]}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`machine.currentRevision`)}),(0,B.jsx)(`dd`,{title:f.current_revision,children:Px(f.current_revision)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`machine.desiredRevision`)}),(0,B.jsx)(`dd`,{title:f.desired_revision,children:Px(f.desired_revision)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`machine.changedNamespaces`)}),(0,B.jsx)(`dd`,{children:f.changed_namespaces.join(`, `)||t(`common.none`)})]})]}),(0,B.jsx)(`p`,{children:t(`machine.previewLocked`)})]}):null,g?.rollback_available&&g.transaction_id?(0,B.jsxs)(`section`,{className:`personal-machine-rollback`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:t(`machine.rollbackAvailable`)}),(0,B.jsx)(`p`,{children:t(v?`machine.rollbackPreviewDescription`:`machine.rollbackDescription`)})]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,disabled:!!b||!!(v&&!v.rollback_allowed),onClick:()=>void(v?I():oe()),type:`button`,children:[(0,B.jsx)(Um,{"aria-hidden":!0,size:15}),t(b===`rollback`||b===`rollback-preview`?`common.loading`:v?`machine.confirmRollback`:`machine.previewRollback`)]})]}):null,A?(0,B.jsxs)(`footer`,{className:`personal-capability-actions`,children:[te?(0,B.jsxs)(`button`,{className:`is-danger`,disabled:!!b,onClick:()=>void ae(),type:`button`,children:[(0,B.jsx)(nh,{"aria-hidden":!0,size:15}),t(`machine.previewRemoval`)]}):null,(0,B.jsx)(`button`,{disabled:!!b||!ne,onClick:()=>void ie(),type:`button`,children:t(b===`preview`?`common.loading`:`machine.previewChanges`)}),(0,B.jsx)(`button`,{className:`is-primary`,disabled:!!b||!f,onClick:()=>void F(),type:`button`,children:t(b===`apply`?`common.loading`:`machine.applyPreview`)})]}):null,k.available_scopes.includes(`machine`)?(0,B.jsx)(gx,{values:[{label:t(`machine.currentValue`),value:ee},{label:t(`capabilities.defaultValue`),value:k.default}],t},k.capability_id):null]})]})]})]}):(0,B.jsx)(`p`,{className:`personal-capability-empty`,children:t(`machine.capabilityEmpty`)})}function Ix(e,t){return t(e===`invalid`?`machine.credentialInvalid`:e===`configured`?`machine.credentialConfigured`:`machine.credentialAbsent`)}function Lx(e,t){return t(e===`machine_store`?`machine.credentialSourceMachine`:e===`service_environment`?`machine.credentialSourceEnvironment`:`machine.credentialSourceUnset`)}function Rx(){let{t:e}=Ji(),[t,n]=(0,z.useState)(null),[r,i]=(0,z.useState)(``),[a,o]=(0,z.useState)(``),[s,c]=(0,z.useState)(``),[l,u]=(0,z.useState)(null),[d,f]=(0,z.useState)(null),p=(0,z.useCallback)(async()=>{c(`load`);try{let e=await Lg();n(e),o(String(e.base_url.value??``))}catch(t){u(t instanceof Error?t.message:e(`machine.credentialError`))}finally{c(``)}},[e]);(0,z.useEffect)(()=>{p()},[p]);async function m(t,r){c(`store`),u(null),f(null);try{let e=await Rg(t);n(e),o(String(e.base_url.value??``)),i(``),f(r)}catch(t){u(t instanceof Error?t.message:e(`machine.credentialError`))}finally{c(``)}}if(!t&&s===`load`)return(0,B.jsx)(`div`,{className:`personal-machine-loading`,role:`status`,children:e(`common.loading`)});let h=t?`${Ix(t.provider_key.configured?`configured`:`absent`,e)} · ${Lx(t.provider_key.source,e)}`:``,g=t?`${t.base_url.value??e(`machine.credentialAbsent`)} · ${Lx(t.base_url.source,e)}`:``;return(0,B.jsxs)(`section`,{className:`personal-operator-credential`,"data-testid":`operator-credential-settings`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(Tm,{"aria-hidden":!0,size:17}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:e(`machine.credentialTitle`)}),(0,B.jsx)(`p`,{children:e(`machine.credentialDescription`)})]}),(0,B.jsx)(`span`,{className:`personal-operator-credential-status`,children:t?Ix(t.status,e):e(`common.loading`)})]}),t?(0,B.jsxs)(`dl`,{className:`personal-operator-credential-readback`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:e(`machine.credentialApiKey`)}),(0,B.jsx)(`dd`,{children:h})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:e(`machine.credentialFingerprint`)}),(0,B.jsx)(`dd`,{children:(0,B.jsx)(`code`,{children:t.provider_key.fingerprint??e(`common.none`)})})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:e(`machine.credentialBaseUrl`)}),(0,B.jsx)(`dd`,{children:g})]})]}):null,t?.status===`invalid`&&t.repair?(0,B.jsx)(`p`,{className:`personal-machine-error`,role:`alert`,children:t.repair}):null,(0,B.jsxs)(`label`,{htmlFor:`operator-credential-api-key`,children:[(0,B.jsx)(`span`,{children:e(`machine.credentialApiKey`)}),(0,B.jsx)(`input`,{autoComplete:`off`,disabled:!!s,id:`operator-credential-api-key`,onChange:e=>i(e.target.value),placeholder:e(`machine.credentialApiKeyPlaceholder`),type:`password`,value:r})]}),(0,B.jsxs)(`label`,{htmlFor:`operator-credential-base-url`,children:[(0,B.jsx)(`span`,{children:e(`machine.credentialBaseUrl`)}),(0,B.jsx)(`input`,{autoComplete:`off`,disabled:!!s,id:`operator-credential-base-url`,onChange:e=>o(e.target.value),placeholder:e(`machine.credentialBaseUrlPlaceholder`),type:`text`,value:a})]}),l?(0,B.jsx)(`p`,{className:`personal-machine-error`,role:`alert`,children:l}):null,d?(0,B.jsxs)(`p`,{className:`personal-machine-notice`,role:`status`,"aria-live":`polite`,children:[(0,B.jsx)(am,{"aria-hidden":!0,size:16}),d]}):null,(0,B.jsxs)(`footer`,{className:`personal-operator-credential-actions`,children:[(0,B.jsx)(`button`,{className:`is-primary`,disabled:!!s||!r.trim()&&!a.trim(),onClick:()=>void m({...r.trim()?{provider_key:r}:{},...a.trim()?{base_url:a}:{}},e(`machine.credentialStored`)),type:`button`,children:e(s===`store`?`common.loading`:`machine.credentialStore`)}),(0,B.jsxs)(`button`,{disabled:!!s||t?.provider_key.configured!==!0,onClick:()=>void m({clear_provider_key:!0},e(`machine.credentialCleared`)),type:`button`,children:[(0,B.jsx)(nh,{"aria-hidden":!0,size:15}),e(`machine.credentialClearKey`)]}),(0,B.jsxs)(`button`,{disabled:!!s||t?.base_url.configured!==!0,onClick:()=>void m({clear_base_url:!0},e(`machine.credentialCleared`)),type:`button`,children:[(0,B.jsx)(nh,{"aria-hidden":!0,size:15}),e(`machine.credentialClearUrl`)]})]}),(0,B.jsxs)(`details`,{className:`personal-capability-scope-note`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:17}),e(`machine.credentialTitle`)]}),(0,B.jsx)(`p`,{children:e(`machine.credentialBoundary`)})]})]})}var zx={appearance:Im,capabilities:Zm,language:Em,lark:Ym,machine:qm,provider:Tm};function Bx({callbacks:e,focusGoalConnection:t=!1,goals:n,initialGoalId:r,initialTab:i=`lark`,goalNotifications:a,onChanged:o,onClose:s,onThemeChange:c,theme:l}){let{locale:u,setLocale:d,t:f}=Ji(),[p,m]=(0,z.useState)(i),h=[...r?[{key:`capabilities`,label:f(`capabilities.title`)}]:[],{key:`provider`,label:f(`settings.modelProvider`)},{key:`machine`,label:f(`settings.globalCapabilities`)},{key:`lark`,label:`Lark`},{key:`appearance`,label:f(`settings.appearance`)},{key:`language`,label:f(`settings.language`)}],g=[{label:f(`settings.languageEnglish`),value:`en`},{label:f(`settings.languageSimplifiedChinese`),value:`zh-CN`}],_={appearance:{title:f(`settings.appearance`)},capabilities:{title:f(`capabilities.title`)},language:{title:f(`settings.language`)},lark:{title:`Lark`},machine:{title:f(`settings.globalCapabilities`)},provider:{title:f(`settings.modelProvider`)}}[p];return(0,B.jsxs)(`section`,{"aria-label":f(`settings.title`),className:`personal-settings-page`,"data-pw-theme":l,children:[(0,B.jsxs)(`aside`,{className:`personal-settings-sidebar`,children:[(0,B.jsxs)(`button`,{className:`personal-settings-back`,onClick:s,type:`button`,children:[(0,B.jsx)(Xp,{size:17}),(0,B.jsx)(`span`,{children:f(`settings.back`)})]}),(0,B.jsxs)(`div`,{className:`personal-settings-title`,children:[(0,B.jsx)(`small`,{children:f(`settings.eyebrow`)}),(0,B.jsx)(`strong`,{children:f(`settings.title`)})]}),(0,B.jsx)(`nav`,{"aria-label":f(`settings.categories`),className:`personal-settings-tabs`,children:h.map(e=>{let t=zx[e.key];return(0,B.jsxs)(`button`,{"aria-current":p===e.key?`page`:void 0,onClick:()=>m(e.key),type:`button`,children:[(0,B.jsx)(t,{size:17}),(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:e.label})})]},e.key)})})]}),(0,B.jsxs)(`main`,{className:`personal-settings-body`,children:[(0,B.jsx)(`header`,{className:`personal-settings-header`,children:(0,B.jsx)(`div`,{children:(0,B.jsx)(`h1`,{children:_.title})})}),p===`lark`?(0,B.jsx)(rx,{embedded:!0,focusGoalConnection:t,goals:n,initialGoalId:r,onChanged:o,onClose:s}):null,p===`provider`?(0,B.jsx)(`div`,{className:`personal-provider-settings`,children:(0,B.jsx)(Rx,{})}):null,p===`machine`?(0,B.jsx)(Fx,{}):null,p===`capabilities`?(0,B.jsx)(Ox,{callbacks:e,goalId:r,notification:a.find(e=>e.goalId===r),onChanged:o}):null,p===`appearance`?(0,B.jsxs)(`section`,{className:`personal-detail-card personal-appearance-settings`,children:[(0,B.jsx)(`small`,{children:f(`settings.workspaceDisplay`)}),(0,B.jsx)(`h3`,{children:f(`settings.appearance`)}),(0,B.jsxs)(`div`,{className:`personal-settings-choice-group`,role:`radiogroup`,"aria-label":f(`settings.workspaceTheme`),children:[(0,B.jsxs)(`button`,{"aria-checked":l===`loopx`,onClick:()=>c(`loopx`),role:`radio`,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-settings-theme-swatch is-loopx`}),(0,B.jsx)(`strong`,{children:f(`settings.themeLoopx`)})]}),(0,B.jsxs)(`button`,{"aria-checked":l===`paper`,onClick:()=>c(`paper`),role:`radio`,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-settings-theme-swatch is-paper`}),(0,B.jsx)(`strong`,{children:f(`settings.themeDefault`)})]}),(0,B.jsxs)(`button`,{"aria-checked":l===`brutal`,onClick:()=>c(`brutal`),role:`radio`,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-settings-theme-swatch is-brutal`}),(0,B.jsx)(`strong`,{children:f(`settings.themeHighContrast`)})]})]})]}):null,p===`language`?(0,B.jsxs)(`section`,{className:`personal-settings-card`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`span`,{className:`personal-settings-icon`,children:(0,B.jsx)(Em,{size:18})}),(0,B.jsx)(`div`,{children:(0,B.jsx)(`h2`,{children:f(`settings.language`)})})]}),(0,B.jsx)(`div`,{"aria-label":f(`settings.language`),className:`personal-language-options`,role:`radiogroup`,children:g.map(e=>(0,B.jsxs)(`button`,{"aria-checked":u===e.value,className:u===e.value?`is-selected`:``,onClick:()=>d(e.value),role:`radio`,type:`button`,children:[(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:e.label})}),u===e.value?(0,B.jsx)(am,{"aria-hidden":!0,size:17}):null]},e.value))})]}):null]})]})}var Vx=`loopx-pw-theme`,Hx=`loopx`;function Ux(){try{let e=window.localStorage.getItem(Vx);return e===`loopx`||e===`paper`||e===`brutal`?e:Hx}catch{return Hx}}function Wx(e){try{window.localStorage.setItem(Vx,e)}catch{}}function Gx({drawer:e,drawerMode:t=`panel`,drawerOpen:n,main:r,mobileSidebarOpen:i=!1,onCloseMobileSidebar:a,sidebar:o,theme:s=`loopx`}){let{t:c}=Ji(),l=(0,z.useRef)(null),u=(0,z.useRef)(null);return(0,z.useEffect)(()=>{if(!i)return;u.current=document.activeElement instanceof HTMLElement?document.activeElement:null;let e=l.current?.querySelectorAll(`button:not([disabled]), a[href], select:not([disabled]), textarea:not([disabled]), input:not([disabled]), [tabindex]:not([tabindex="-1"])`);e?.[0]?.focus();function t(t){if(t.key!==`Tab`||!e?.length)return;let n=e[0],r=e[e.length-1];t.shiftKey&&document.activeElement===n?(t.preventDefault(),r.focus()):!t.shiftKey&&document.activeElement===r&&(t.preventDefault(),n.focus())}return document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`keydown`,t),u.current?.focus(),u.current=null}},[i]),(0,B.jsxs)(`section`,{className:`personal-workspace-shell${n?` has-drawer`:``}${n&&t.startsWith(`inspector`)?` has-task-inspector`:``}${t===`inspector-full`?` is-task-inspector-full`:``}${i?` mobile-sidebar-open`:``}`,"data-pw-theme":s,children:[i?(0,B.jsx)(`button`,{"aria-hidden":!0,className:`personal-sidebar-backdrop`,onClick:a,tabIndex:-1,type:`button`}):null,(0,B.jsx)(`aside`,{"aria-label":i?c(`header.goalNavigation`):void 0,"aria-modal":i?!0:void 0,className:`personal-workspace-sidebar`,"data-workspace-sidebar":!0,ref:l,role:i?`dialog`:void 0,children:(0,B.jsxs)(`div`,{className:`personal-workspace-sidebar-inner`,children:[i?(0,B.jsxs)(`button`,{className:`personal-sr-only`,onClick:a,type:`button`,children:[c(`common.close`),` `,c(`header.goalNavigation`)]}):null,o]})}),(0,B.jsx)(`main`,{"aria-hidden":i||void 0,className:`personal-workspace-main`,inert:i||void 0,children:r}),n?(0,B.jsx)(`aside`,{className:`personal-workspace-drawer`,"data-context-drawer":!0,"data-drawer-mode":t,children:e}):null]})}function Kx(e){let t=e.match(/(?:下一步|建议|行动项|待办)[::\s]*([^\n]+)/u),n=t?t[1]:e;n=n.replace(/```[\s\S]*?```/g,``).replace(/`([^`]+)`/g,`$1`).replace(/\[([^\]]+)\]\([^)]+\)/g,`$1`).replace(/[#*~_>]/g,``).replace(/^[-*•\d+.\s]+/u,``).replace(/^(好的|没问题|收到|建议如下|任务如下|分析如下|结论[::])[\s,,::]*/u,``);let r=(n.split(/\r?\n/).map(e=>e.trim()).filter(Boolean)[0]||n).replace(/\s+/gu,` `).trim();return Array.from(r).slice(0,120).join(``)}function qx(e){let t=new Map;return e.forEach(e=>{let n=e.fields.find(e=>e.key===`todo_id`)?.value??``,r=[e.actionKind,e.goalId??``,n,e.title].join(`:`);t.set(r,e)}),[...t.values()]}function Jx(e,t,n){if(!e)return n(`home.noFirstActivity`);let r=new Date(e);if(Number.isNaN(r.getTime()))return e;let i=new Date,a=new Intl.DateTimeFormat(t,{hour:`2-digit`,minute:`2-digit`,hour12:!1}).format(r);return r.toDateString()===i.toDateString()?n(`home.todayAt`,{time:a}):new Intl.DateTimeFormat(t,{month:`numeric`,day:`numeric`,hour:`2-digit`,minute:`2-digit`,hour12:!1}).format(r)}function Yx({goals:e,onSelectGoal:t,onRetry:n,systemHealth:r}){let{locale:i,t:a}=Ji(),o=e.filter(e=>e.activationState===`active`),s=o.filter(e=>e.loadState===`error`).length,c=[{key:`needs_you`,label:a(`home.lane.needsYou`)},{key:`running`,label:a(`home.lane.running`)},{key:`observing`,label:a(`home.lane.observing`)},{key:`scheduled`,label:a(`home.lane.scheduled`)}],l=Object.fromEntries(c.map(e=>[e.key,[]])),u=[],d=[];e.filter(e=>!e.loadState).forEach(e=>{let t=Hy(e);t===`history`?u.push(e):t===`stopped`?d.push(e):l[t].push(e)});let f=e=>(0,B.jsxs)(`button`,{className:`personal-home-goal-card`,"data-goal-state":e.loadState??e.state,"data-load-error":e.loadError,onClick:()=>t(e.goalId),type:`button`,children:[(0,B.jsxs)(`span`,{className:`personal-home-goal-meta`,children:[(0,B.jsx)(`i`,{}),e.agentLaneCount&&e.agentLaneCount>1?a(`header.workAgentCount`,{count:e.agentLaneCount}):e.agentLabel??e.agentId]}),(0,B.jsx)(`strong`,{children:e.title}),(0,B.jsx)(`p`,{children:e.loadError?a(`startup.error.${e.loadError}`):e.needsYou??e.nextSentence}),(0,B.jsxs)(`footer`,{children:[(0,B.jsx)(`span`,{children:e.loadState?a(e.loadState===`error`?`startup.goalError`:`startup.goalLoading`):Yi(e.state,i)}),(0,B.jsx)(`small`,{title:e.latestActivity,children:e.loadState?``:e.latestActivity?Jx(e.latestActivity,i,a):e.agentTodos.length?a(`home.taskCount`,{count:e.agentTodos.length}):a(`home.noActivity`)})]})]},e.goalId);return(0,B.jsxs)(`section`,{"aria-label":a(`home.workspace`),className:`personal-home-board`,children:[r&&(!r.ok||r.issues.length>0||r.freshnessWarning)?(0,B.jsxs)(`div`,{className:`personal-system-health-banner`,role:`alert`,children:[(0,B.jsxs)(`div`,{className:`personal-system-health-header`,children:[(0,B.jsx)(lm,{size:15}),(0,B.jsx)(`strong`,{children:a(`home.systemHealth`,{summary:r.summary})}),r.freshnessWarning?(0,B.jsxs)(`small`,{children:[`(`,r.freshnessWarning,`)`]}):null]}),r.issues.length>0?(0,B.jsx)(`ul`,{className:`personal-system-health-issues`,children:r.issues.map((e,t)=>(0,B.jsx)(`li`,{children:e},t))}):null]}):null,o.some(e=>e.loadState)?(0,B.jsxs)(`section`,{className:`personal-home-lane`,"aria-live":`polite`,children:[(0,B.jsx)(`header`,{children:a(`startup.progress`,{loaded:o.filter(e=>!e.loadState).length,total:o.length})}),s?(0,B.jsxs)(`div`,{className:`personal-stopped-goal-error`,role:`status`,children:[(0,B.jsx)(`span`,{children:a(`startup.failedCount`,{count:s})}),(0,B.jsx)(`button`,{className:`min-h-11 rounded-md border px-3 py-2 text-sm`,onClick:n,type:`button`,children:a(`startup.retryFailed`)})]}):null,o.filter(e=>e.loadState).map(f)]}):null,(0,B.jsx)(`div`,{className:`personal-home-lanes`,children:c.map(e=>(0,B.jsxs)(`section`,{className:`personal-home-lane is-${e.key}`,"data-testid":`personal-home-lane-${e.key}`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`i`,{}),e.label]}),(0,B.jsx)(`b`,{children:l[e.key].length})]}),(0,B.jsx)(`div`,{className:`personal-home-lane-list`,children:l[e.key].length?l[e.key].map(f):(0,B.jsx)(`span`,{className:`personal-home-empty`,children:a(`home.empty`)})})]},e.key))}),(0,B.jsxs)(`details`,{className:`personal-home-history`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(`span`,{children:a(`home.history`)}),(0,B.jsx)(`b`,{children:u.length}),(0,B.jsx)(`small`,{children:a(`home.completedGoals`)})]}),(0,B.jsx)(`div`,{children:u.length?u.map(f):(0,B.jsx)(`span`,{className:`personal-home-empty`,children:a(`home.noCompletedGoals`)})})]}),d.length?(0,B.jsxs)(`details`,{className:`personal-home-history is-stopped`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(`span`,{children:a(`home.stopped`)}),(0,B.jsx)(`b`,{children:d.length}),(0,B.jsx)(`small`,{children:a(`home.preservedState`)})]}),(0,B.jsx)(`div`,{children:d.map(f)})]}):null]})}function Xx({items:e,onSelect:t,reportState:n}){let{locale:r,t:i}=Ji();return(0,B.jsxs)(`section`,{className:`personal-object-list personal-files-list`,"data-testid":`personal-goal-outputs`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:i(`files.title`)}),(0,B.jsx)(`span`,{children:e.length})]}),n?.loading?(0,B.jsxs)(`p`,{className:`personal-object-list-state`,role:`status`,children:[(0,B.jsx)(Hm,{className:`is-spinning`,size:14}),i(`files.loadingReports`)]}):null,n?.error?(0,B.jsxs)(`p`,{className:`personal-object-list-state is-error`,role:`alert`,children:[(0,B.jsx)(lm,{size:14}),i(`files.reportLoadFailed`),`: `,n.error]}):null,!n?.loading&&!n?.error&&e.length===0?(0,B.jsxs)(`p`,{className:`personal-object-list-state`,children:[(0,B.jsx)(xm,{size:14}),i(`files.empty`)]}):null,e.map(e=>(0,B.jsxs)(`button`,{"data-output-kind":e.output.kind,onClick:()=>t({item:e.output,kind:`output`}),type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-file-icon`,children:(0,B.jsx)(xm,{size:16})}),(0,B.jsx)(`strong`,{children:e.output.title}),e.output.report?(0,B.jsx)(`em`,{children:i(`files.reportDelta`,{added:e.output.report.addedCount,changed:e.output.report.changedCount})}):null,(0,B.jsx)(`p`,{children:e.output.summary??e.output.safePreview??e.output.kind??i(`files.emptySummary`)}),(0,B.jsx)(`small`,{title:e.output.createdAt,children:[e.output.goalTitle,e.output.kind===`report`?i(`files.verifiedReport`):null,e.output.todoId?`${i(`common.task`)} ${e.output.todoId}`:null,Jx(e.output.createdAt,r,i)].filter(Boolean).join(` · `)})]},e.id))]})}function Zx({agentLabel:e,messages:t,onClose:n,onDraftTask:r,onOpenConversation:i,title:a}){let{t:o}=Ji(),s=t.reduce((e,t,n)=>t.role===`user`?n:e,0),c=t.slice(Math.max(0,s)).slice(-3),l=c.filter(e=>e.role===`assistant`&&!e.pending).at(-1);return(0,z.useEffect)(()=>{if(!n)return;let e=e=>{e.key===`Escape`&&n()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n]),(0,B.jsxs)(`aside`,{"aria-label":o(`conversation.receipt`),className:`personal-manager-conversation-tray`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(nm,{size:16}),(0,B.jsx)(`strong`,{children:a??o(`conversation.title`)}),(0,B.jsx)(`small`,{children:t.at(-1)?.pending?o(`conversation.replying`):o(`common.recently`)})]}),(0,B.jsxs)(`div`,{className:`personal-manager-conversation-actions`,children:[r&&l?(0,B.jsxs)(`button`,{className:`personal-manager-conversation-btn`,onClick:()=>r(l.text),title:o(`conversation.convertHint`),type:`button`,children:[(0,B.jsx)(Om,{size:13}),(0,B.jsx)(`span`,{children:o(`conversation.toTask`)})]}):null,(0,B.jsx)(`button`,{className:`personal-manager-conversation-link`,onClick:i,type:`button`,children:o(`conversation.full`)}),n?(0,B.jsx)(`button`,{"aria-label":o(`conversation.close`),className:`personal-manager-conversation-close`,onClick:n,title:o(`conversation.close`),type:`button`,children:(0,B.jsx)(ah,{size:14})}):null]})]}),(0,B.jsx)(`div`,{"aria-live":`polite`,className:`personal-manager-conversation-messages`,children:c.map(t=>(0,B.jsxs)(`article`,{className:`is-${t.role}`,children:[(0,B.jsx)(`strong`,{children:t.role===`user`?o(`common.you`):t.agentLabel??e??o(`header.manager`)}),(0,B.jsxs)(`div`,{className:`personal-manager-conversation-bubble`,children:[t.role===`user`?(0,B.jsx)(`p`,{children:t.text}):(0,B.jsx)(rb,{text:t.text}),t.pending?(0,B.jsx)(`small`,{children:o(`conversation.agentPending`)}):null,(0,B.jsx)(cb,{delivery:t.returnDelivery})]})]},t.id))})]})}function Qx({onClose:e,onOpenDetails:t,run:n}){let{t:r}=Ji();return(0,B.jsxs)(`section`,{"aria-label":r(`session.record`),className:`personal-session-record`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(nm,{size:17}),r(`session.record`)]}),(0,B.jsx)(`button`,{"aria-label":r(`session.closeRecord`),onClick:e,type:`button`,children:(0,B.jsx)(ah,{size:15})})]}),(0,B.jsx)(`div`,{children:(0,B.jsx)(`strong`,{children:n.title})}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Agent`}),(0,B.jsx)(`dd`,{children:n.agentLabel})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`common.status`)}),(0,B.jsx)(`dd`,{children:Xi(n.sessionStatus??n.status,r)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Session`}),(0,B.jsx)(`dd`,{title:n.sessionId,children:n.sessionId})]})]}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:t,type:`button`,children:r(`session.details`)})]})}function $x(e,t,n){let r=[];if(t===null)return e.userTodos.slice(0,4).forEach(t=>r.push({attention:{...t,goalTitle:t.goalTitle??Vy(e,t.goalId)},id:`attention:${t.todoId}`,kind:`attention`})),e.goals.filter(e=>Hy(e)===`running`).slice(0,4).forEach(e=>r.push({id:`run:${e.goalId}`,kind:`run`,run:{agentId:e.agentId,agentLabel:e.agentLabel??e.agentId,completedSteps:e.doneTodoCount??e.agentTodos.filter(e=>e.done).length,goalId:e.goalId,goalTitle:e.title,latestActivity:e.agentSentence,runId:`goal:${e.goalId}`,status:`running`,title:e.nextSentence,totalSteps:Math.max((e.doneTodoCount??0)+e.agentTodos.filter(e=>!e.done).length,1)}})),r;let i=e.goals.find(e=>e.goalId===t);if(!i)return r;if(i.needsYou){let t=e.userTodos.find(e=>e.goalId===i.goalId);r.push({attention:t?{...t,goalTitle:i.title}:{blocking:i.needsYouBlocking??!1,goalId:i.goalId,goalTitle:i.title,text:i.needsYou,todoId:`${i.goalId}:attention`},id:`attention:${i.goalId}`,kind:`attention`})}r.push({id:`run:${i.goalId}`,kind:`run`,run:{agentId:i.agentId,agentLabel:i.agentLabel??i.agentId,completedSteps:i.doneTodoCount??i.agentTodos.filter(e=>e.done).length,goalId:i.goalId,goalTitle:i.title,latestActivity:i.agentSentence,runId:`goal:${i.goalId}`,status:i.state===`推进中`?`running`:i.state===`需修复`?`failed`:`waiting`,title:i.nextSentence,totalSteps:Math.max((i.doneTodoCount??0)+i.agentTodos.filter(e=>!e.done).length,1)}}),i.agentTodos.filter(e=>e.taskClass===`continuous_monitor`).forEach(t=>{let a=e.timeline?.find(e=>e.kind===`run`&&e.run.goalId===i.goalId&&e.run.todoId===t.todoId&&!!e.run.sessionId);r.push({id:`schedule:${i.goalId}:${t.todoId}`,kind:`schedule`,schedule:{agentId:i.agentId,executionHistory:a?[{label:a.run.latestActivity||a.run.title,runId:a.run.runId,status:a.run.status===`waiting`||a.run.status===`queued`?`running`:a.run.status,timestamp:i.latestActivity||n(`common.recently`)}]:[],goalId:i.goalId,label:t.text,schedule:t.evidence??n(`schedule.summary`),scheduleId:t.todoId,scheduleKind:`monitor`,sessionId:a?.run.sessionId,status:t.done||t.status===`paused`?`paused`:`active`,stopCondition:n(`drawer.scheduleDefaultStop`),target:t.text,timezone:`Asia/Shanghai`}})});let a=e.timeline?.find(e=>e.kind===`proposal`&&e.proposal.actionKind===`heartbeat.bind`&&e.proposal.goalId===i.goalId);if(a){let e=e=>a.proposal.fields.find(t=>t.key===e)?.value;r.push({id:`schedule:${i.goalId}:heartbeat`,kind:`schedule`,schedule:{agentId:i.agentId,executionHistory:[],goalId:i.goalId,label:`${n(`schedule.heartbeat`)} · ${i.title}`,nextRunAt:n(`drawer.schedulePending`),notificationRule:n(`drawer.scheduleDefaultNotification`),schedule:e(`cadence`)??n(`schedule.summary`),scheduleId:`${i.goalId}:heartbeat`,scheduleKind:`heartbeat`,status:a.proposal.status===`applied`?`active`:`draft`,stopCondition:e(`stop_condition`)??n(`drawer.scheduleDefaultStop`),timezone:e(`timezone`)??`Asia/Shanghai`}})}return r}function eS(e){return e===`preview_ready`?`ready`:e===`cancelled`?`draft`:e===`failed`?`error`:e}function tS(e,t){let n={agent_id:t(`proposal.field.agentId`),cadence:t(`proposal.field.cadence`),completion_criteria:t(`proposal.field.completionCriteria`),execution_boundary:t(`proposal.field.executionBoundary`),goal_id:t(`proposal.field.goalId`),heartbeat:t(`proposal.field.heartbeat`),initial_todos:t(`proposal.field.initialTodos`),objective:t(`proposal.field.objective`),operation:t(`proposal.field.operation`),permission:t(`proposal.field.permission`),reason:t(`proposal.field.reason`),stop_condition:t(`proposal.field.stopCondition`),target:t(`proposal.field.target`),timezone:t(`proposal.field.timezone`),title:t(`proposal.field.title`),workspace_ref:t(`proposal.field.workspace`)},r=[`title`,`objective`,`completion_criteria`,`execution_boundary`,`permission`,`agent_id`,`workspace_ref`,`initial_todos`,`heartbeat`,`stop_condition`,`goal_id`];return Object.entries(e).sort(([e],[t])=>{let n=r.indexOf(e),i=r.indexOf(t);return(n<0?r.length:n)-(i<0?r.length:i)}).slice(0,10).map(([e,r])=>({key:e,label:n[e]??e.replaceAll(`_`,` `),value:e===`workspace_ref`?r===`current`?t(`proposal.workspace.current`):t(`proposal.workspace.named`,{workspace:String(r??`current`)}):Array.isArray(r)?r.join(` · `):typeof r==`object`&&r?JSON.stringify(r):String(r??`—`)}))}function nS(e,t,n){let r=t.operationFrame,i=r?.content.fields.map((e,t)=>({key:`projection:${t}`,label:e.label,value:e.value})).slice(0,8)??[];return[{key:`operation_state`,label:n(`proposal.field.operationState`),value:r?.lifecycleState??e.status},...r?.kind===`result`?[{key:`result_delivery`,label:n(`proposal.field.resultDelivery`),value:r.resultDeliveryVerified?n(`proposal.resultDelivery.verified`):n(`proposal.resultDelivery.pending`)}]:[],...i,...r?[{key:`warning`,label:n(`proposal.field.confirmationBoundary`),value:r.content.warning}]:[],...r?[{key:`expires_at`,label:n(`proposal.field.expiresAt`),value:r.expiresAt}]:[]].slice(0,10)}function rS(e){if(e.action_kind!==`goal.lifecycle`)return;let t=e.normalized_parameters.operation;return t===`stop`||t===`resume`||t===`delete`?t:void 0}function iS(e,t){let n=rS(e),r=Ny(e),i=typeof e.normalized_parameters.title==`string`?e.normalized_parameters.title:typeof e.normalized_parameters.goal_id==`string`?e.normalized_parameters.goal_id:``,a=typeof e.normalized_parameters.target==`string`?e.normalized_parameters.target:``,o=r.operationFrame,s=o?.content.title??e.summary,c=e.action_kind===`operation.execute`?s:e.action_kind===`team.plan`?t(`proposal.summary.teamPlan`,{goal:zy(e.normalized_parameters),count:Ry(e.normalized_parameters)}):e.action_kind===`goal.create`?t(`proposal.summary.goalCreate`,{title:i}):e.action_kind===`heartbeat.bind`?t(`proposal.summary.heartbeat`):e.action_kind===`monitor.create`?t(`proposal.summary.monitor`,{target:a}):e.action_kind===`goal.lifecycle`&&n===`stop`?t(`proposal.summary.lifecycleStop`,{title:i}):e.action_kind===`goal.lifecycle`&&n===`delete`?t(`proposal.summary.lifecycleDelete`,{title:i}):e.action_kind===`goal.lifecycle`?t(`proposal.summary.lifecycleResume`,{title:i}):e.summary;return{actionKind:e.action_kind,reviewPlan:r,fields:e.action_kind===`operation.execute`?nS(e,r,t):e.action_kind===`team.plan`?Ly(e.normalized_parameters,t):tS(e.normalized_parameters,t),goalId:typeof e.normalized_parameters.goal_id==`string`?e.normalized_parameters.goal_id:void 0,impact:e.action_kind===`operation.execute`?t(`proposal.impact.operation`):e.action_kind===`team.plan`?t(`proposal.impact.teamPlan`):e.action_kind===`goal.create`?t(`proposal.impact.goalCreate`):e.action_kind===`goal.lifecycle`&&n===`stop`?t(`proposal.impact.lifecycleStop`):e.action_kind===`goal.lifecycle`&&n===`delete`?t(`proposal.impact.lifecycleDelete`):e.action_kind===`goal.lifecycle`?t(`proposal.impact.lifecycleResume`):e.permission_classification===`protected`?t(`proposal.impact.protected`):t(`proposal.impact.default`),previewId:e.proposal_id,lifecycleOperation:n,gate:e.gate?{kind:String(e.gate.kind??`protected_action`),nextAction:typeof e.gate.next_action==`string`?e.gate.next_action:void 0,summary:String(e.gate.summary??t(`proposal.gate.default`))}:void 0,primaryLabel:e.action_kind===`operation.execute`?o?.kind===`result`?o.resultDeliveryVerified?t(`proposal.primary.operationResultVerified`):t(`proposal.primary.operationResultPending`):t(`proposal.primary.operationGroup`):e.action_kind===`team.plan`?t(`proposal.primary.teamPlan`):e.action_kind===`goal.create`?t(`proposal.primary.goalCreate`):e.action_kind===`goal.lifecycle`&&n===`stop`?t(`proposal.primary.lifecycleStop`):e.action_kind===`goal.lifecycle`&&n===`delete`?t(`proposal.primary.lifecycleDelete`):e.action_kind===`goal.lifecycle`?t(`proposal.primary.lifecycleResume`):e.action_kind===`todo.create`&&e.normalized_parameters.start_execution===!0?t(`proposal.primary.todoStart`):t(`proposal.primary.apply`),status:e.status===`applied`&&e.action_kind!==`operation.execute`&&r.interaction!==`completed`?`error`:eS(e.status),title:c}}function aS(e){let t=e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,42);if(t)return t;let n=2166136261;for(let t of e)n^=t.codePointAt(0)??0,n=Math.imul(n,16777619);return`goal-${(n>>>0).toString(36)}`}function oS(e,t){let n=e.match(/[「“"]([^」”"]{2,80})[」”"]/u)?.[1];return n?n.trim():e.replace(/^(请|帮我|我想|给我|创建|新建|设置|please|i want to|create|set up)+/iu,``).replace(/(一个|新的)?\s*(goal|目标)/giu,``).replace(/[,。!?].*$/u,``).trim().slice(0,80)||t(`goal.defaultTitle`)}function sS(e,t){for(let n of e.split(/\r?\n/u)){let e=n.trim();for(let n of t){let t=e.match(RegExp(`^${n.replace(/[.*+?^${}()|[\]\\]/gu,`\\$&`)}\\s*[::]\\s*(.*)$`,`iu`));if(t?.[1]?.trim())return t[1].trim()}}return``}function cS(e,t){let n=sS(e,[`目标`,`Objective`]),r=sS(e,[`完成标准`,`Completion criteria`]),i=sS(e,[`执行边界(可选)`,`执行边界`,`边界`,`Execution boundary (optional)`,`Execution boundary`,`Boundary`]),a=(n||oS(e,t)).split(/[。;;\n]/u)[0].trim().slice(0,80)||t(`goal.defaultTitle`),o=[n||a,r?t(`goal.objectiveCompletion`,{criteria:r}):``,i?t(`goal.objectiveBoundary`,{boundary:i}):``].filter(Boolean).join(` -`),s=/(只读|不调用外部工具|不修改(?:仓库|代码|状态)|read.?only|do not (?:call|use) external tools|do not modify (?:repositories|repository|code|state))/iu.test(i||e);return{completionCriteria:r,executionBoundary:i,initialTodos:r?[t(`goal.initialTodo`,{criteria:r})]:[],objective:o,permission:s?`read_only`:`workspace_write_on_confirmation`,title:a}}function lS(e){let t=e.match(/(?:每|every)\s*(\d{1,3})\s*(?:分钟|minutes?)/iu)?.[1];if(t)return`${t}m`;let n=e.match(/(?:每|every)\s*(\d{1,2})\s*(?:小时|hours?)/iu)?.[1];return n?`${n}h`:/每小时|every hour|hourly/iu.test(e)?`1h`:(/每天|每日|早上|上午|daily|every day/iu.test(e),`1d`)}function uS(e,t){return/(每周|星期|周[一二三四五六日天]|weekly|every\s+(?:mon|tues|wednes|thurs|fri|satur|sun)day|\d{1,2}\s*[::]\s*\d{2})/iu.test(e)?t(`schedule.unsupportedCalendar`):null}function dS(e,t){return sS(e,[`检查内容`,`监控内容`,`目标`,`Check target`,`Monitor target`,`Target`])||e.replace(/^(?:为当前 Goal |for the current Goal )?(?:添加|配置|创建|add|configure|create)?\s*(?:定时检查|监控|scheduled check|monitor)[::]?/iu,``).split(/\r?\n/u)[0].trim()||t(`schedule.defaultTarget`)}function fS(e){return/(mr|pr).{0,8}(合并|merge)/iu.test(e)?`pr_merged`:/发布完成|上线完成|release (?:is )?complete|deployment (?:is )?complete/iu.test(e)?`release_complete`:`goal_complete`}function pS(e,t){let n=e.toLowerCase();return t.find(e=>n.includes(e.agentId.toLowerCase())||n.includes(e.label.toLowerCase()))}function mS(e){let t=sS(e,[`标题`,`任务标题`,`Todo 标题`]),n=sS(e,[`内容`,`任务内容`,`Todo 内容`]);if(t)return[t,n].filter(Boolean).join(`:`).slice(0,400);let r=e.match(/[「“"]([^」”"]{2,200})[」”"]/u)?.[1];return r?r.trim():e.replace(/^(请|帮我|给我|为当前 Goal |新增|新建|创建|添加|加上|加一个|记一个)+/u,``).replace(/^(一个\s*)?(普通\s*)?(todo|待办|任务)(?:\s*到\s*Tasks?)?[::\s]*/iu,``).replace(/[。;;,,]\s*(?:不要|不需要|无需|禁止|别|暂不).{0,80}(?:heartbeat|心跳|定时|监控|执行).*$/iu,``).replace(/[,,]\s*(并且|然后|再)?\s*(交给|分配给|让).+$/u,``).replace(/\s*(交给|分配给|让)\s+.+$/u,``).trim().slice(0,400)||`推进当前 Goal 的下一项工作`}var hS=new Set([`image/png`,`image/jpeg`,`image/webp`,`image/gif`]),gS=5242880,_S=4;function vS(e,t){return new Promise((n,r)=>{let i=new FileReader;i.onerror=()=>r(Error(t(`composer.imageReadError`,{name:e.name}))),i.onload=()=>n({dataUrl:String(i.result??``),id:crypto.randomUUID(),mimeType:e.type,name:e.name,size:e.size}),i.readAsDataURL(e)})}function yS({agents:e=[{agentId:`codex`,available:!0,capability:`代码与项目执行`,label:`Codex`}],callbacks:t={},goalArchiveLoadState:n={error:null,phase:`ready`},managerChannelBinding:r,managerRuntime:i,model:a,readOnly:o=!1,selectedAgentId:s,selectedGoalId:c,statusSourceControl:l}){let{locale:u,t:d}=Ji(),[f,p]=(0,z.useState)(c??null),[m,h]=(0,z.useState)(s??e.find(e=>e.available)?.agentId??`codex`),[g,_]=(0,z.useState)(null),[v,y]=(0,z.useState)(!1),[b,x]=(0,z.useState)(null),[S,C]=(0,z.useState)({}),[w,T]=(0,z.useState)(`chat`),[E,D]=(0,z.useState)(!1),[O,k]=(0,z.useState)(!1),[ee,te]=(0,z.useState)(!1),[A,j]=(0,z.useState)(()=>{try{let e=window.sessionStorage.getItem(`loopx-pw-composer-drafts`),t=e?JSON.parse(e):{};return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}catch{return{}}}),[M,ne]=(0,z.useState)(!1),[N,P]=(0,z.useState)([]),[re,ie]=(0,z.useState)(null),[ae,F]=(0,z.useState)(null),[oe,I]=(0,z.useState)(()=>new Set),[se,L]=(0,z.useState)(()=>new Set),[ce,le]=(0,z.useState)(`idle`),[ue,de]=(0,z.useState)([]),[fe,pe]=(0,z.useState)([]),[me,he]=(0,z.useState)(!1),[ge,_e]=(0,z.useState)(Ux),[ve,ye]=(0,z.useState)({}),[be,xe]=(0,z.useState)([]),Se=(0,z.useRef)(!1),Ce=(0,z.useRef)(NaN),we=(0,z.useRef)(null),Te=(0,z.useRef)(null),Ee=(0,z.useRef)(null),De=(0,z.useRef)(new Set),Oe=(0,z.useRef)(new Set),[ke,Ae]=(0,z.useState)(null),R=c===void 0?f:c,je=s??m,Me=`${R??`manager`}:${je}`,Ne=A[Me]??``;(0,z.useEffect)(()=>{P([]),ie(null)},[Me]);function Pe(e,t){j(n=>{let r={...n};t?r[e]=t:delete r[e];try{window.sessionStorage.setItem(`loopx-pw-composer-drafts`,JSON.stringify(r))}catch{}return r})}function Fe(e){Pe(Me,e)}function Ie(e){return vh.find(t=>t.id===e)?.prompt??``}(0,z.useEffect)(()=>{let e=we.current;e&&(e.style.height=`auto`,e.style.height=`${Math.min(e.scrollHeight,120)}px`)},[Ne]);let Le=(0,z.useMemo)(()=>a.goals.map(e=>{let t=ve[e.goalId];return t?{...e,repository:{branch:t.branch,identity:t.identity,label:t.label,readOnly:!0}}:e}),[ve,a.goals]),Re=(0,z.useMemo)(()=>Le.filter(e=>Hy(e)===`needs_you`).length,[Le]),ze=(0,z.useMemo)(()=>Le.filter(e=>Hy(e)===`needs_you`&&(e.needsYouBlocking||e.state===`等你`)).length,[Le]),V=Le.find(e=>e.goalId===R)??null,Be=g?.kind===`settings`,Ve=R,He=(0,z.useMemo)(()=>{let e=Object.values(S).filter(e=>e.actionKind===`heartbeat.bind`&&e.goalId&&e.status===`applied`).map(e=>({id:`schedule:${e.goalId}:heartbeat`,kind:`schedule`,schedule:{agentId:je,executionHistory:[],goalId:e.goalId,label:e.title,nextRunAt:d(`drawer.schedulePending`),notificationRule:d(`drawer.scheduleDefaultNotification`),schedule:e.fields.find(e=>e.key===`cadence`)?.value??d(`schedule.summary`),scheduleId:`${e.goalId}:heartbeat`,scheduleKind:`heartbeat`,status:e.status===`applied`?`active`:`draft`,stopCondition:e.fields.find(e=>e.key===`stop_condition`)?.value??d(`drawer.scheduleDefaultStop`),timezone:e.fields.find(e=>e.key===`timezone`)?.value??`Asia/Shanghai`}})),t=[...$x(a,Ve,d),...a.timeline??[],...e,...qx(Object.values(S)).filter(e=>e.actionKind!==`heartbeat.bind`||e.status!==`applied`).map(e=>({id:`proposal:${e.previewId}`,kind:`proposal`,proposal:e}))];return[...new Map(t.map(e=>[e.id,e])).values()].filter(e=>e.kind!==`proposal`||![`stale`,`error`].includes(e.proposal.status)||ue.includes(e.proposal.previewId)).filter(e=>!R||e.kind===`message`?!0:e.kind===`proposal`?!e.proposal.goalId||e.proposal.goalId===R:e.kind===`attention`?e.attention.goalId===R:e.kind===`run`?e.run.goalId===R:e.kind===`schedule`?e.schedule.goalId===R:e.output.goalId===R)},[Ve,a,S,je,R,ue,d]),Ue=(0,z.useMemo)(()=>b?He.filter(e=>e.kind===`message`?!0:e.kind===`run`?e.run.runId===b.runId:e.kind===`output`&&e.output.runId===b.runId):He,[b,He]);(0,z.useEffect)(()=>{if(!b)return;let e=He.find(e=>e.kind===`run`&&e.run.runId===b.runId);!e||e.kind!==`run`||JSON.stringify({completedSteps:b.completedSteps,latestActivity:b.latestActivity,messages:b.sessionMessages,sessionStatus:b.sessionStatus,status:b.status,totalSteps:b.totalSteps})!==JSON.stringify({completedSteps:e.run.completedSteps,latestActivity:e.run.latestActivity,messages:e.run.sessionMessages,sessionStatus:e.run.sessionStatus,status:e.run.status,totalSteps:e.run.totalSteps})&&x(e.run)},[b,He]);let We=(0,z.useMemo)(()=>He.flatMap(e=>e.kind===`message`?[e.message]:[]),[He]),Ge=(0,z.useMemo)(()=>V?He.flatMap(e=>e.kind===`message`?[e.message]:[]):[],[He,V]);(0,z.useEffect)(()=>{V||E||We.some(e=>e.pending)&&k(!0)},[E,We,V]),(0,z.useEffect)(()=>{!V||w===`chat`||Ge.some(e=>e.pending)&&te(!0)},[Ge,V,w]);let Ke=(0,z.useMemo)(()=>He.filter(e=>e.kind===`message`||e.kind===`proposal`&&(ue.includes(e.proposal.previewId)||fe.includes(e.proposal.previewId))),[He,ue,fe]),qe=Ke[Ke.length-1],Je=qe?.kind===`message`?qe.message.text.length:0;(0,z.useEffect)(()=>{if(!E||!Te.current)return;let e=window.requestAnimationFrame(()=>{Te.current&&(Te.current.scrollTop=Te.current.scrollHeight)});return()=>window.cancelAnimationFrame(e)},[Ke.length,E,Je]);let Ye=(0,z.useMemo)(()=>{if(g?.kind===`settings`)return null;if(g?.kind===`attention`)return{kind:`attention`,item:Jd(g.item,a.attentionHistory??a.userTodos)};if(g?.kind===`goal`){let e=Le.find(e=>e.goalId===g.item.goalId);return e?{item:e,kind:`goal`}:g}if(g?.kind!==`run`)return g;let e=He.find(e=>e.kind===`run`&&e.run.runId===g.item.runId);return e?{item:e.run,kind:`run`}:g},[He,g,Le,a.attentionHistory,a.userTodos]);(0,z.useEffect)(()=>{if(o){ye({}),xe([]);return}let e=!1;return Promise.all([Xg(),s_()]).then(([t,n])=>{e||(ye(Object.fromEntries(t.map(e=>[e.goal_id,e.repository]))),xe(n))}).catch(()=>{}),()=>{e=!0}},[o]),(0,z.useEffect)(()=>{if(!me)return;function e(e){e.key===`Escape`&&he(!1)}return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[me]),(0,z.useEffect)(()=>{if(R||!He.length)return;if(!Se.current){Se.current=!0;try{Ce.current=Date.parse(window.localStorage.getItem(`loopx-pw-last-visit`)??``),window.localStorage.setItem(`loopx-pw-last-visit`,new Date().toISOString())}catch{Ce.current=NaN}}let e=Ce.current,t=He.filter(e=>e.kind===`run`).map(e=>e.run),n=t=>{let n=Date.parse(t??``);return!Number.isNaN(e)&&!Number.isNaN(n)&&n>e},r={attention:Re,done:t.filter(e=>e.status===`completed`&&n(e.latestActivity)).length,failed:t.filter(e=>(e.status===`failed`||e.status===`interrupted`)&&n(e.latestActivity)).length};Ae(e=>e?.attention===r.attention&&e.done===r.done&&e.failed===r.failed?e:r)},[He,Re,R]),(0,z.useEffect)(()=>{if(o){C({});return}let e=!1;return Hh(R?{goalId:R}:{contextKind:`manager`}).then(t=>{if(e)return;let n=t.filter(e=>[`preview_ready`,`gated`,`deferred`,`applying`].includes(e.status)||e.action_kind===`operation.execute`&&e.status===`applied`).map(e=>iS(e,d)),r=Object.fromEntries(n.map(e=>[e.previewId,e]));C(e=>({...e,...r})),R||pe(n.map(e=>e.previewId))}).catch(()=>{}),()=>{e=!0}},[o,R,d]);async function Xe(e,n={}){if(o)throw Error(d(`source.readOnlyWriteError`));let r;try{r=t.onPreviewAction?await t.onPreviewAction(e):iS(await Bh(e),d)}catch(t){if(!(t instanceof Fh)||t.payload.error_code!==`action_preview_gate`)throw t;let n=t.payload.gate&&typeof t.payload.gate==`object`?t.payload.gate:{},i=(Array.isArray(n.candidates)?n.candidates:[]).flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e;return typeof t.workspace_ref==`string`&&typeof t.label==`string`?[{label:t.label,workspaceRef:t.workspace_ref}]:[]}),a=String(n.kind??`workspace_selection_required`),o=a===`agent_binding_required`||a===`agent_identity_selection_required`;r={actionKind:e.actionKind,fields:i.map(e=>({key:`workspace_ref:${e.workspaceRef}`,label:e.label,value:e.workspaceRef})),gate:{kind:a,nextAction:typeof n.next_action==`string`?n.next_action:void 0,summary:String(n.summary??d(`proposal.workspaceGate.defaultSummary`))},impact:d(o?`proposal.workspaceGate.agentImpact`:`proposal.workspaceGate.selectionImpact`),previewId:`workspace-choice-${Date.now().toString(36)}`,sourceRequest:e,status:`gated`,title:d(o?`proposal.workspaceGate.agentTitle`:`proposal.workspaceGate.selectionTitle`),workspaceCandidates:i}}return de(e=>e.includes(r.previewId)?e:[...e,r.previewId]),C(e=>({...e,[r.previewId]:r})),n.select!==!1&&_({item:r,kind:`proposal`}),r}function Ze(){ot(null),Pe(`manager:${je}`,d(`composer.createGoalTemplate`)),window.requestAnimationFrame(()=>we.current?.focus())}async function Qe(e,n){he(!1);let r={delete:`Deleted from the owner workspace`,resume:`Resumed from the owner workspace`,stop:`Stopped from the owner workspace`},i={delete:d(`proposal.summary.lifecycleDelete`,{title:e.title}),resume:d(`proposal.summary.lifecycleResume`,{title:e.title}),stop:d(`proposal.summary.lifecycleStop`,{title:e.title})},a=null,o=!1;try{if(n===`stop`){if(De.current.has(e.goalId))return;De.current.add(e.goalId),I(new Set(De.current)),_(null),a={goalId:e.goalId,next:`stopped`,optimisticApplied:!0,previous:e.activationState},F(d(`feedback.applying`,{title:i.stop})),t.onGoalActivationStateChange?.(e.goalId,`stopped`)}if(t.onExecuteGoalLifecycle){if(n===`delete`)throw Error(`The selected status source does not authorize Goal deletion.`);let a=await t.onExecuteGoalLifecycle({goalId:e.goalId,operation:n,reason:r[n]});if(!a.projectionVerified)throw Error(`Goal lifecycle projection did not verify.`);o=!0,t.onGoalActivationStateChange?.(e.goalId,a.activationState),F(d(`feedback.completed`,{title:i[n]})),n===`stop`&&ot(null),await nt([e.goalId]);return}let s=await Xe({actionKind:`goal.lifecycle`,context:{kind:`goal_directory`,goal_id:e.goalId},idempotencyKey:`workspace-goal-${n}-${e.goalId}-${Date.now().toString(36)}`,normalizedParameters:{goal_id:e.goalId,operation:n,reason:r[n]},summary:i[n]},{select:n!==`stop`});if(s.goalId!==e.goalId||s.lifecycleOperation!==n)throw _(null),Error(d(`actionReview.targetChanged`));n===`stop`&&(s.reviewPlan?.interaction===`direct`?(o=!0,await rt(s,{lifecycleProjection:a??void 0,presentation:`feedback`})):(a&&t.onGoalActivationStateChange?.(a.goalId,a.previous),F(s.gate?d(`feedback.gateRequired`,{summary:s.gate.summary}):d(`feedback.notCompleted`,{status:s.status})),_({item:s,kind:`proposal`})))}catch(e){a&&!o&&t.onGoalActivationStateChange?.(a.goalId,a.previous),F(d(`feedback.executionFailed`,{error:e instanceof Error?e.message:String(e)}))}finally{n===`stop`&&(De.current.delete(e.goalId),I(new Set(De.current)))}}function $e(e,t){Fe(d(t?e===`heartbeat`?`composer.heartbeatTemplate`:`composer.monitorTemplate`:e===`heartbeat`?`composer.heartbeatTemplateWithoutGoal`:`composer.monitorTemplateWithoutGoal`)),_(null),window.requestAnimationFrame(()=>we.current?.focus())}async function et(e,n,r=``){let i=await t.onRequestScheduleConfig?.(e,n);if(i){de(e=>e.includes(i.previewId)?e:[...e,i.previewId]),C(e=>({...e,[i.previewId]:i})),_({item:i,kind:`proposal`});return}if(!n){Fe(d(e===`heartbeat`?`composer.heartbeatGoalQuestion`:`composer.monitorGoalQuestion`));return}let a=Date.now().toString(36);await Xe({actionKind:e===`heartbeat`?`heartbeat.bind`:`monitor.create`,context:{kind:`schedule`,goal_id:n},idempotencyKey:`workspace-${e}-${n}-${a}`,normalizedParameters:e===`heartbeat`?{agent_id:je,cadence:lS(r),goal_id:n,stop_condition:fS(r),timezone:`Asia/Shanghai`}:{agent_id:je,cadence:lS(r),goal_id:n,stop_condition:fS(r),target:dS(r,d),target_key:`goal-${n}`,timezone:`Asia/Shanghai`},summary:e===`heartbeat`?d(`proposal.summary.heartbeat`):d(`proposal.summary.monitor`,{target:dS(r,d)})})}async function tt(e){if(!Oe.current.has(e.todoId)){Oe.current.add(e.todoId),L(new Set(Oe.current)),F(d(`feedback.preparingPreview`,{title:e.text}));try{await Xe({actionKind:`todo.update`,context:{goal_id:e.goalId,kind:`todo`,todo_id:e.todoId},idempotencyKey:`workspace-todo-${e.todoId}-complete-${Date.now().toString(36)}`,normalizedParameters:{goal_id:e.goalId,operation:`complete`,todo_id:e.todoId},summary:d(`tasks.markComplete`,{name:e.text})}),F(null)}catch(e){F(d(`feedback.previewFailed`,{error:e instanceof Error?e.message:String(e)}))}finally{Oe.current.delete(e.todoId),L(new Set(Oe.current))}}}function nt(e){let n=t.onReconcileStatus,r=n?n({invalidateGoalIds:e}):t.onRefresh?.();return Promise.resolve(r).catch(()=>{F(d(`feedback.goalRefreshFailed`))})}async function rt(e,n={}){if(e.reviewPlan&&!e.reviewPlan.canApply)return;let r=n.presentation!==`feedback`,i=e.actionKind===`goal.lifecycle`&&e.goalId&&(e.lifecycleOperation===`stop`||e.lifecycleOperation===`resume`)?{goalId:e.goalId,next:e.lifecycleOperation===`stop`?`stopped`:`active`,optimisticApplied:!1,previous:a.goals.find(t=>t.goalId===e.goalId)?.activationState??(e.lifecycleOperation===`stop`?`active`:`stopped`)}:null,o=n.lifecycleProjection??i;F(d(`feedback.applying`,{title:e.title}));let s={...e,reviewPlan:e.reviewPlan?{...e.reviewPlan,interaction:`pending`,reason:`apply_pending`,canApply:!1}:void 0,status:`applying`};C(t=>({...t,[e.previewId]:s})),r&&_({item:s,kind:`proposal`}),o&&!o.optimisticApplied&&t.onGoalActivationStateChange?.(o.goalId,o.next);try{if(t.onApplyProposal){await t.onApplyProposal(e);let n={...e,status:`applied`};C(t=>({...t,[e.previewId]:n})),r&&_({item:n,kind:`proposal`}),F(d(`feedback.completed`,{title:e.title})),e.actionKind===`goal.lifecycle`&&((e.lifecycleOperation===`stop`||e.lifecycleOperation===`delete`)&&ot(null),e.lifecycleOperation===`delete`&&e.goalId&&t.onGoalDeleted?.(e.goalId),nt(e.goalId?[e.goalId]:void 0));return}let n=await Uh(e.previewId);if(n.proposal.proposal_id!==e.previewId||n.proposal.action_kind!==e.actionKind||e.actionKind===`goal.lifecycle`&&(n.proposal.normalized_parameters.goal_id!==e.goalId||rS(n.proposal)!==e.lifecycleOperation))throw new Fh(d(`actionReview.targetChanged`),{error_code:`action_response_mismatch`});let i=iS(n.proposal,d);if(C(t=>({...t,[e.previewId]:i})),r&&_({item:i,kind:`proposal`}),i.reviewPlan?.interaction!==`completed`){o&&t.onGoalActivationStateChange?.(o.goalId,o.previous),_({item:i,kind:`proposal`}),F(n.proposal.status===`stale`?d(`feedback.stale`):d(`actionReview.${i.reviewPlan.reason}`));return}F(d(`feedback.completed`,{title:i.title})),i.actionKind===`todo.create`&&await t.onRefresh?.(),i.actionKind===`goal.lifecycle`&&(i.lifecycleOperation===`stop`||i.lifecycleOperation===`delete`)&&ot(null),i.actionKind===`goal.lifecycle`&&i.lifecycleOperation===`delete`&&i.goalId&&t.onGoalDeleted?.(i.goalId),i.actionKind===`goal.lifecycle`&&nt(i.goalId?[i.goalId]:void 0)}catch(n){if(o&&t.onGoalActivationStateChange?.(o.goalId,o.previous),n instanceof Fh&&n.payload.error_code===`protected_action`){let r=n.payload.gate,i=r&&typeof r==`object`?r:{},a={...e,reviewPlan:e.reviewPlan?{...e.reviewPlan,interaction:`gated`,reason:`authority_gate`,canApply:!1}:void 0,gate:{kind:String(i.kind??`protected_action`),nextAction:typeof i.next_action==`string`?i.next_action:void 0,summary:String(i.summary??n.message)},status:`gated`};C(t=>({...t,[e.previewId]:a})),_({item:a,kind:`proposal`}),F(d(`feedback.gateRequired`,{summary:a.gate.summary})),e.actionKind===`goal.create`&&e.goalId&&(t.onRefresh?.(),ot(e.goalId));return}let r=n instanceof Fh&&Py(n.payload),i=n instanceof Fh&&n.payload.error_code===`action_response_mismatch`,a={...e,reviewPlan:e.reviewPlan?{...e.reviewPlan,interaction:r?`refresh`:`repair`,reason:i?`readback_unverified`:r?`stale_proposal`:`apply_failed`,canApply:!1}:void 0,errorMessage:n instanceof Error?n.message:String(n),status:r?`stale`:`error`};C(t=>({...t,[e.previewId]:a})),_({item:a,kind:`proposal`}),F(d(`feedback.executionFailed`,{error:a.errorMessage}))}}let it={...t,onOpenRunSession:async e=>{e.goalId!==R&&ot(e.goalId),T(`chat`),await t.onOpenRunSession?.(e),x(e),_(null)},onOpenGoal:e=>{ot(e),nt([e])},onOpenGoalView:e=>{T(e),e===`chat`&&x(null),_(null)},onOpenOutput:e=>{e.goalId!==R&&ot(e.goalId),T(`files`),t.onOpenOutput?.(e)},onApplyProposal:rt,onCancelProposal:async e=>{_(null),C(t=>{let n={...t};return delete n[e.previewId],n});try{t.onCancelProposal?.(e),t.onCancelProposal||await Wh(e.previewId)}catch(t){C(t=>({...t,[e.previewId]:e})),F(d(`feedback.cancelFailed`,{error:t instanceof Error?t.message:String(t)}))}},onTransitionProposal:async(e,t)=>{let n=iS(await Gh(e.previewId,t),d);de(e=>e.includes(n.previewId)?e:[...e,n.previewId]),C(r=>{let i={...r};return t===`regenerate`&&delete i[e.previewId],i[n.previewId]=n,i}),_({item:n,kind:`proposal`})},onSelectWorkspaceCandidate:async(e,t)=>{e.sourceRequest&&(C(t=>{let n={...t};return delete n[e.previewId],n}),await Xe({...e.sourceRequest,idempotencyKey:`${e.sourceRequest.idempotencyKey}-${t}`,normalizedParameters:{...e.sourceRequest.normalizedParameters,workspace_ref:t}}))},onPreviewAction:Xe,onRequestScheduleConfig:(e,t)=>$e(e,t),onOpenNotificationSettings:e=>_({goalId:e,kind:`settings`,tab:`lark`}),onFetchNotificationTargets:()=>mg(),onSetupGoalChannel:e=>gg(e),onToggleGoalAutoNotify:e=>_g(e),onUpdateSchedule:async(e,t)=>{let n=Date.now().toString(36),r=e.scheduleKind===`heartbeat`;await Xe({actionKind:r?`heartbeat.bind`:`monitor.update`,context:{kind:`schedule`,goal_id:e.goalId},idempotencyKey:`workspace-monitor-${e.scheduleId}-${t}-${n}`,normalizedParameters:{agent_id:e.agentId??je,...!r&&t===`run_now`?{endpoint_id:je}:{},...t===`edit`?{cadence:`2h`,...r?{timezone:e.timezone??`Asia/Shanghai`}:{}}:{},goal_id:e.goalId,operation:t,...!r&&t===`run_now`&&e.sessionId?{session_id:e.sessionId}:{},...r?{}:{todo_id:e.scheduleId}},summary:t===`pause`?`暂停自动运行:${e.label}`:t===`resume`?`恢复自动运行:${e.label}`:t===`run_now`?`立即运行:${e.label}`:t===`stop`?`停止自动运行:${e.label}`:`编辑自动运行生命周期:${e.label}`})}},at=o?{onOpenGoal:it.onOpenGoal,onOpenGoalView:it.onOpenGoalView,onOpenOutput:it.onOpenOutput}:it;function ot(e){p(e),D(!1),k(!1),te(!1),x(null),_(null),T(`tasks`),he(!1),t.onSelectGoal?.(e)}function st(e){h(e),t.onSelectAgent?.(e)}function ct(e){_e(e),Wx(e)}async function lt(n){let r=n?[]:N,i=(n??Ne).trim()||(r.length?d(`composer.imageAnalysisPrompt`):``);if(!(!i||M)){n||(Fe(``),P([])),ie(null),ne(!0);try{if(r.length){R?w!==`chat`&&te(!0):k(!0);let e=await t.onSendMessage?.(i,je,R,r);e&&await Xe(e);return}let n=_b(i,{agents:e.map(e=>({agentId:e.agentId,label:e.label})),goalId:R,todos:(V?.agentTodos??[]).map(e=>({text:e.text,todoId:e.todoId}))});if(n.route===`clarify`){Fe(i);let e=d(`composer.clarifySingleAction`);n.missingFields.includes(`resume_when`)&&(e=d(`composer.clarifyDefer`)),F(e);return}if(n.actionKind===`goal.create`){let e=cS(i,d),t=aS(e.title);await Xe({actionKind:`goal.create`,context:{kind:`manager`,goal_id:null,natural_language:i},idempotencyKey:`workspace-goal-intent-${t}-${Date.now().toString(36)}`,normalizedParameters:{agent_id:je,completion_criteria:e.completionCriteria,execution_boundary:e.executionBoundary,goal_id:t,heartbeat:{cadence:lS(i),enabled:n.normalizedParameters.heartbeat_enabled===!0,timezone:`Asia/Shanghai`},initial_todos:e.initialTodos,objective:e.objective,permission:e.permission,stop_condition:fS(i),title:e.title,workspace_ref:`current`},summary:d(`proposal.summary.goalCreate`,{title:e.title})});return}if(R&&n.actionKind===`heartbeat.bind`){await et(`heartbeat`,R,i);return}if(R&&n.actionKind===`monitor.create`){let e=uS(i,d);if(e){Fe(i),F(e);return}await et(`monitor`,R,i);return}let a=pS(i,e);if(R&&a&&n.actionKind===`agent.bind`){await Xe({actionKind:`agent.bind`,context:{kind:`goal`,goal_id:R,natural_language:i},idempotencyKey:`workspace-agent-bind-${R}-${a.agentId}-${Date.now().toString(36)}`,normalizedParameters:{agent_id:a.agentId,goal_id:R},summary:`将 ${a.label} 绑定到 ${V?.title??R}`});return}if(R&&n.actionKind===`todo.create`){if(n.normalizedParameters.start_execution===!0){await Xe({actionKind:`todo.create`,context:{kind:`goal`,goal_id:R,natural_language:i},idempotencyKey:`workspace-task-start-${R}-${Date.now().toString(36)}`,normalizedParameters:{endpoint_id:a?.agentId??je,goal_id:R,start_execution:!0,text:i},summary:`交给 Agent 执行:${i.slice(0,120)}`});return}let e=a?.agentId??(/(交给|分配给|让).{0,24}(agent|codex|claude|kiro|kimi)/iu.test(i)?je:null);await Xe({actionKind:`todo.create`,context:{kind:`goal`,goal_id:R,natural_language:i},idempotencyKey:`workspace-todo-create-${R}-${Date.now().toString(36)}`,normalizedParameters:{...e?{endpoint_id:e}:{},goal_id:R,text:mS(i)},summary:`创建 Todo:${mS(i)}`});return}let o=V?.agentTodos.find(e=>i.includes(e.todoId)||i.includes(e.text)),s=typeof n.normalizedParameters.operation==`string`?n.normalizedParameters.operation:null;if(R&&o&&n.actionKind===`todo.update`&&s){await Xe({actionKind:`todo.update`,context:{kind:`todo`,goal_id:R,todo_id:o.todoId,natural_language:i},idempotencyKey:`workspace-todo-update-${o.todoId}-${s}-${Date.now().toString(36)}`,normalizedParameters:{agent_id:je,...s===`reassign`&&a?{endpoint_id:a.agentId}:{},...s===`block`?{note:i}:{},...s===`defer`&&typeof n.normalizedParameters.resume_when==`string`?{resume_when:n.normalizedParameters.resume_when}:{},goal_id:R,operation:s,todo_id:o.todoId},summary:`更新 Todo:${o.text}`});return}R?w!==`chat`&&te(!0):k(!0);let c=await t.onSendMessage?.(i,je,R);c&&await Xe(c)}catch(e){n||(Fe(i),P(r));let t=e instanceof Error?e.message:d(`feedback.sendGenericError`);F(d(`feedback.sendFailed`,{error:t}))}finally{ne(!1)}}}let ut=e.find(e=>e.agentId===je)?.label??je,dt=!V&&Ne.startsWith(d(`composer.createGoalDraftLead`)),ft=He.filter(e=>e.kind===`run`&&!!e.run.sessionId&&!!e.run.canInterrupt&&(e.run.status===`running`||e.run.status===`queued`)).length;async function pt(e){if(!e?.length)return;let t=_S-N.length,n=Array.from(e).slice(0,Math.max(0,t)),r=n.find(e=>!hS.has(e.type)),i=n.find(e=>e.size>gS);if(t<=0){ie(d(`composer.imageCountError`,{count:_S}));return}if(r){ie(d(`composer.imageTypeError`));return}if(i){ie(d(`composer.imageSizeError`,{size:gS/1024/1024}));return}try{let t=await Promise.all(n.map(e=>vS(e,d)));P(e=>[...e,...t].slice(0,_S)),ie(e.length>n.length?d(`composer.imageCountError`,{count:_S}):null)}catch(e){ie(e instanceof Error?e.message:d(`composer.imageReadGenericError`))}finally{Ee.current&&(Ee.current.value=``)}}function mt(e){let t=Array.from(e.clipboardData.items).filter(e=>e.kind===`file`&&e.type.startsWith(`image/`)).flatMap(e=>{let t=e.getAsFile();return t?[t]:[]});t.length&&(e.preventDefault(),pt(t))}async function ht(){let e=await s_();xe(e)}async function gt(){await Promise.all([ht(),t.onRefresh?.()])}async function _t(){if(!(!t.onRefresh||ce===`loading`)){le(`loading`);try{await t.onRefresh(),le(`done`)}catch{le(`error`)}window.setTimeout(()=>le(`idle`),1800)}}return Be?(0,B.jsx)(Bx,{callbacks:at,focusGoalConnection:!!(g?.kind===`settings`&&g.goalId),goalNotifications:a.goalNotifications??[],goals:Le,initialGoalId:g?.kind===`settings`?g.goalId??R:R,initialTab:g?.kind===`settings`?g.tab??`lark`:`lark`,onChanged:()=>void gt(),onClose:()=>_(null),onThemeChange:ct,theme:ge}):(0,B.jsx)(Gx,{drawer:Ye?(0,B.jsx)(Eb,{agents:e,attentionHistory:a.attentionHistory??a.userTodos,onSelectAttention:e=>_({kind:`attention`,item:e}),callbacks:at,goalNotifications:a.goalNotifications??[],goals:Le,inspectorExpanded:v,larkConnections:o?[]:be,onClose:()=>{Ye.kind===`proposal`&&[`applied`,`rejected`].includes(Ye.item.status)&&(Ye.item.actionKind!==`heartbeat.bind`||Ye.item.status!==`applied`)&&C(e=>{let t={...e};return delete t[Ye.item.previewId],t}),y(!1),_(null)},onToggleInspectorSize:()=>y(e=>!e),readOnly:o,runs:He.flatMap(e=>e.kind===`run`?[e.run]:[]),selection:Ye}):null,drawerMode:Ye?.kind===`todo`?v?`inspector-full`:`inspector`:`panel`,drawerOpen:Ye!==null,mobileSidebarOpen:me,onCloseMobileSidebar:()=>he(!1),theme:ge,main:(0,B.jsxs)(`div`,{className:`personal-channel`,children:[(0,B.jsx)(Xy,{agents:e,managerChatOpen:E,managerChannelBinding:r,managerRuntime:i,mobileNavigationOpen:me,onOpenGoalCapabilities:V?()=>_({goalId:V.goalId,kind:`settings`,tab:`capabilities`}):void 0,onOpenGoalDetail:V&&!V.loadState?()=>_({item:V,kind:`goal`}):void 0,onRefresh:t.onRefresh?()=>void _t():void 0,onOpenNavigation:()=>he(!0),onOpenManagerChat:()=>{k(!1),D(!0)},onSelectGoalTab:e=>{T(e),e===`chat`&&(x(null),te(!1))},onSelectAgent:st,onReturnManagerHome:()=>{D(!1),k(!1),window.requestAnimationFrame(()=>Te.current?.scrollTo({behavior:`smooth`,top:0}))},selectedAgentId:je,refreshState:ce,readOnlySourceLabel:o?l?.activeSource.label:void 0,selectedGoal:V,selectedGoalTab:w}),(0,B.jsxs)(`div`,{className:`personal-channel-scroll`,ref:Te,children:[!V&&!E&&ke&&ke.done+ke.failed+ke.attention>0?(0,B.jsxs)(`section`,{className:`personal-digest-card`,"aria-label":d(`digest.away`),children:[(0,B.jsx)(`strong`,{children:d(`digest.away`)}),(0,B.jsxs)(`div`,{className:`personal-digest-stats`,children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`b`,{children:ke.done}),d(`digest.completed`)]}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`b`,{children:ke.failed}),d(`digest.failed`)]}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`b`,{children:ke.attention}),d(`digest.needsYou`)]})]})]}):null,!V&&!E?(0,B.jsxs)(`section`,{className:`personal-manager-greeting`,children:[(0,B.jsx)(`span`,{children:(0,B.jsx)(nm,{size:20})}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:d(`home.greeting`)}),(0,B.jsx)(`p`,{children:a.goals.some(e=>e.activationState===`active`&&e.loadState)?d(`startup.partial`):(0,B.jsxs)(B.Fragment,{children:[d(`home.waitingCount`,{count:Re}),` `,d(`home.blockingSummary`,{count:ze})]})})]})]}):null,V?.loadState?(0,B.jsx)(`section`,{className:`personal-manager-greeting`,role:`status`,"data-testid":`goal-status-loading`,children:(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:d(V.loadState===`error`?`startup.goalError`:`startup.goalLoading`)}),(0,B.jsx)(`p`,{children:d(V.loadError?`startup.error.${V.loadError}`:`startup.independent`)}),V.loadState===`error`?(0,B.jsx)(`button`,{className:`min-h-11 rounded-md border px-3 py-2 text-sm`,type:`button`,onClick:()=>void t.onRefresh?.(),children:d(`startup.retry`)}):null]})}):V&&w===`tasks`?(0,B.jsx)(Qb,{historyEnabled:!o,goal:V,items:He,onDraftTaskFromMessage:o?void 0:e=>{Fe(`创建一个 Task:${Kx(e)}`),F(d(`feedback.taskDraftCreated`)),window.requestAnimationFrame(()=>we.current?.focus())},onOpenChat:()=>T(`chat`),onQuickComplete:o?void 0:tt,onSelect:_,quickCompletingTodoIds:se,selectedTodoId:Ye?.kind===`todo`?Ye.item.todoId:null,userTodos:a.userTodos}):V&&w===`files`?(0,B.jsx)(Xx,{items:He.filter(e=>e.kind===`output`),onSelect:_,reportState:a.periodicReports}):!V&&!E?(0,B.jsx)(Yx,{goals:Le,onRetry:()=>void t.onRefresh?.(),onSelectGoal:ot,systemHealth:a.systemHealth}):V?(0,B.jsxs)(B.Fragment,{children:[V&&b?.goalId===V.goalId?(0,B.jsx)(Qx,{onClose:()=>x(null),onOpenDetails:()=>_({item:b,kind:`run`}),run:b}):null,(0,B.jsx)(lb,{items:Ue,onSelect:_,selectedGoal:V})]}):(0,B.jsx)(lb,{items:Ke,onSelect:_,selectedGoal:null})]}),(0,B.jsx)(`div`,{className:`personal-composer-wrap`,children:o?(0,B.jsxs)(`div`,{className:`personal-read-only-notice`,children:[(0,B.jsx)(`strong`,{children:d(`source.readOnlyNoticeTitle`)}),(0,B.jsx)(`span`,{children:d(`source.readOnlyNoticeDescription`)})]}):(0,B.jsxs)(B.Fragment,{children:[!V&&!E&&O&&We.length?(0,B.jsx)(Zx,{messages:We,onClose:()=>k(!1),onOpenConversation:()=>{k(!1),D(!0)}}):null,V&&w!==`chat`&&ee&&Ge.length?(0,B.jsx)(Zx,{agentLabel:ut,messages:Ge,onClose:()=>te(!1),onDraftTask:w===`tasks`?e=>{Fe(`创建一个 Task:${Kx(e)}`),F(d(`feedback.taskDraftCreated`)),window.requestAnimationFrame(()=>we.current?.focus())}:void 0,onOpenConversation:()=>{te(!1),T(`chat`)},title:`${V.title} · ${ut}`}):null,ae?(0,B.jsxs)(`div`,{className:`personal-action-feedback`,role:`status`,children:[(0,B.jsx)(`span`,{children:ae}),(0,B.jsx)(`button`,{"aria-label":d(`common.closeActionReceipt`),onClick:()=>F(null),type:`button`,children:(0,B.jsx)(ah,{size:14})})]}):null,(0,B.jsx)(`p`,{className:`personal-composer-hint`,children:V?ft>0?d(`composer.goalRunningHint`,{agent:ut,count:ft}):d(`composer.goalMessageHint`,{agent:ut}):d(`composer.managerMessageHint`)}),V?(0,B.jsxs)(`div`,{className:`personal-quick-prompts`,children:[(0,B.jsxs)(`button`,{"aria-label":d(`composer.nextAction`),disabled:M,onClick:()=>void lt(d(`composer.nextActionPrompt`)),title:d(`composer.sendMessageHint`),type:`button`,children:[(0,B.jsx)(Mm,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.nextAction`)})]}),(0,B.jsxs)(`button`,{"aria-label":d(`composer.agentProgress`),disabled:M,onClick:()=>void lt(d(`composer.agentProgressPrompt`)),title:d(`composer.sendMessageHint`),type:`button`,children:[(0,B.jsx)(Km,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.agentProgress`)})]}),(0,B.jsxs)(`button`,{"aria-label":d(`composer.monitor`),onClick:()=>$e(`monitor`,R),title:d(`composer.monitorHint`),type:`button`,children:[(0,B.jsx)(im,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.monitor`)})]}),(0,B.jsxs)(`button`,{"aria-label":d(`composer.blockers`),disabled:M||!Ie(`gate`),onClick:()=>void lt(Ie(`gate`)),title:d(`composer.sendMessageHint`),type:`button`,children:[(0,B.jsx)(lm,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.blockers`)})]}),(0,B.jsxs)(`button`,{"aria-label":d(`composer.evidence`),disabled:M||!Ie(`evidence`),onClick:()=>void lt(Ie(`evidence`)),title:d(`composer.sendMessageHint`),type:`button`,children:[(0,B.jsx)(xm,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.evidence`)})]})]}):(0,B.jsxs)(`div`,{className:`personal-quick-prompts`,children:[(0,B.jsxs)(`button`,{"aria-label":d(`composer.globalTasks`),disabled:M,onClick:()=>void lt(d(`composer.globalTasksPrompt`)),title:d(`composer.sendMessageHint`),type:`button`,children:[(0,B.jsx)(Mm,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.globalTasks`)})]}),(0,B.jsxs)(`button`,{"aria-label":d(`composer.globalProgress`),disabled:M,onClick:()=>void lt(d(`composer.globalProgressPrompt`)),title:d(`composer.sendMessageHint`),type:`button`,children:[(0,B.jsx)(Km,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.globalProgress`)})]}),(0,B.jsxs)(`button`,{"aria-label":d(`composer.createGoal`),onClick:Ze,title:d(`composer.createGoalHint`),type:`button`,children:[(0,B.jsx)(Bm,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.createGoal`)})]})]}),dt?(0,B.jsxs)(`div`,{className:`personal-goal-draft-status`,role:`status`,children:[(0,B.jsx)(`strong`,{children:d(`composer.createGoalDraft`)}),(0,B.jsx)(`span`,{children:d(`composer.createGoalDraftDescription`)})]}):null,N.length?(0,B.jsx)(`div`,{className:`personal-composer-images`,"aria-label":d(`composer.imagesPending`),children:N.map(e=>(0,B.jsxs)(`figure`,{children:[(0,B.jsx)(`img`,{alt:e.name,src:e.dataUrl}),(0,B.jsx)(`button`,{"aria-label":d(`composer.sentImageAlt`,{name:e.name}),onClick:()=>P(t=>t.filter(t=>t.id!==e.id)),type:`button`,children:(0,B.jsx)(ah,{size:13})})]},e.id))}):null,re?(0,B.jsx)(`p`,{className:`personal-composer-error`,role:`alert`,children:re}):null,(0,B.jsxs)(`div`,{className:`personal-channel-composer`,onDragOver:e=>{[...e.dataTransfer.items].some(e=>e.kind===`file`&&e.type.startsWith(`image/`))&&e.preventDefault()},onDrop:e=>{let t=[...e.dataTransfer.files].filter(e=>e.type.startsWith(`image/`));t.length&&(e.preventDefault(),pt(t))},children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(nm,{size:17}),e.find(e=>e.agentId===je)?.label??je]}),(0,B.jsx)(`button`,{"aria-label":d(`composer.addImage`),className:`personal-composer-attach`,disabled:M||N.length>=_S,onClick:()=>Ee.current?.click(),title:d(`composer.attachImageHint`),type:`button`,children:(0,B.jsx)(Lm,{size:17})}),(0,B.jsx)(`input`,{accept:`image/png,image/jpeg,image/webp,image/gif`,"aria-label":d(`composer.imagePicker`),className:`personal-composer-file-input`,disabled:M||N.length>=_S,multiple:!0,onChange:e=>void pt(e.target.files),ref:Ee,type:`file`}),(0,B.jsx)(`textarea`,{"aria-label":d(`composer.sendMessage`),onChange:e=>Fe(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&!e.nativeEvent.isComposing&&(e.preventDefault(),lt())},onPaste:mt,placeholder:V?d(`composer.goalPlaceholder`,{goal:V.title}):d(`composer.managerPlaceholder`),ref:we,rows:1,value:Ne}),(0,B.jsx)(`button`,{"aria-label":d(dt?`composer.createGoal`:`composer.send`),disabled:!Ne.trim()&&N.length===0||M,onClick:()=>void lt(),title:d(dt?`composer.createGoalHint`:`composer.sendMessageHint`),type:`button`,children:(0,B.jsx)(Km,{size:18})})]})]})})]}),sidebar:(0,B.jsx)(Jb,{attentionCount:Re,goals:Le,goalArchiveLoadState:n,goalLifecycleOperations:t.onExecuteGoalLifecycle?[`stop`,`resume`]:void 0,lifecycleBusyGoalIds:oe,onRequestGoalCreate:o?void 0:Ze,onRequestGoalLifecycle:o&&!t.onExecuteGoalLifecycle?void 0:(e,t)=>void Qe(e,t),onRetryGoalArchive:t.onRetryGoalArchive||t.onRefresh?()=>void(t.onRetryGoalArchive??t.onRefresh)?.():void 0,onOpenSettings:o?void 0:()=>_({kind:`settings`}),onSelectGoal:ot,selectedGoalId:R,statusSourceControl:l},l?.activeSource.statusUrl??`/status.json`)})}function bS(e){return(e??``).replace(/\s+/gu,` `).trim()}function xS(e,t=120){let n=Array.from(e);return n.length<=t?e:`${n.slice(0,t-1).join(``)}…`}function SS(e,t,n){let r=bS(e);return!r||r===`暂无`?n?t(n):``:/refresh-state|latest_run|latest run-derived/iu.test(r)?t(`projection.refreshState`):/first read-only adapter tick|read-only adapter/iu.test(r)?t(`projection.firstReadOnlyAdapterCheck`):/todo update recorded for/iu.test(r)?t(`projection.todoStatusUpdated`):/^(loopx|python3|npm|git|run)\s|\s--[a-z0-9-]+|\b[a-z]+_[a-z_]+\b/iu.test(r)?t(n??`projection.agentPreparingNextStep`):xS(r)}function CS(e,t){return t({advancing:`projection.agentAdvancingGoal`,idle:`projection.agentIdle`,needs_you:`projection.agentNeedsDecision`,stopped:`projection.agentStopped`,waiting_external:`projection.agentWaitingExternal`}[e])}function wS({eventCount:e,hasArtifact:t,hasLatestValidation:n},r){return{label:r(n?`projection.latestValidation`:`projection.latestRun`),metadata:e>0?r(`projection.events24h`,{count:e}):r(t?`projection.runEvidenceAvailable`:`projection.publicSafeProjection`)}}var TS=`/status.json`,ES=`loopx-status-source-catalog-v1`,DS={id:`local`,kind:`local`,label:`本机`,readOnly:!1,statusUrl:TS};function OS(e,t){let n=uh(e,t).source;if(!n||!n.isLoopback||n.isRelative)return{error:`SSH 隧道来源必须使用显式的 localhost、127.0.0.1 或 ::1 URL。`};let r=new URL(n.url,t);return[`http:`,`https:`].includes(r.protocol)?{url:r.toString()}:{error:`状态来源只支持 HTTP 或 HTTPS。`}}function kS(e){let t=2166136261;for(let n of e)t^=n.codePointAt(0)??0,t=Math.imul(t,16777619);return`ssh-${(t>>>0).toString(36)}`}function AS(e,t){if(!e||typeof e!=`object`||Array.isArray(e))return null;let n=e;if(n.kind!==`ssh_tunnel`||typeof n.label!=`string`||typeof n.statusUrl!=`string`)return null;let r=n.label.trim(),i=OS(n.statusUrl,t);if(!r||r.length>48||!(`url`in i))return null;let a=Rb(n.hostAlias)?n.hostAlias.trim():void 0;return{...a?{hostAlias:a}:{},id:kS(i.url),kind:`ssh_tunnel`,label:r,readOnly:!0,statusUrl:i.url}}function jS(){return{schemaVersion:1,sources:[DS]}}function MS(e,t){try{let n=e.getItem(ES);if(!n)return jS();let r=JSON.parse(n);if(r.schemaVersion!==1||!Array.isArray(r.sources))return jS();let i=new Set([DS.statusUrl]);return{schemaVersion:1,sources:[DS,...r.sources.flatMap(e=>{let n=AS(e,t);return!n||i.has(n.statusUrl)?[]:(i.add(n.statusUrl),[n])})]}}catch{return jS()}}function NS(e,t){e.setItem(ES,JSON.stringify({schemaVersion:1,sources:t.sources.filter(e=>e.kind===`ssh_tunnel`)}))}function PS(e,t){let n=new Set(t.filter(Rb).map(e=>e.trim())),r=!1,i=e.sources.map(e=>e.kind!==`ssh_tunnel`||e.hostAlias||!n.has(e.label)?e:(r=!0,{...e,hostAlias:e.label}));return r?{...e,sources:i}:e}function FS(e,t,n){let r=t.label.trim();if(!r)return{error:`请填写来源名称。`};if(r.length>48)return{error:`来源名称不能超过 48 个字符。`};let i=OS(t.statusUrl,n);if(!(`url`in i))return i;if(e.sources.some(e=>e.statusUrl===i.url))return{error:`这个状态 URL 已经在来源目录中。`};if(t.hostAlias!==void 0&&!Rb(t.hostAlias))return{error:`请选择有效的 SSH Host。`};let a=t.hostAlias?.trim(),o={...a?{hostAlias:a}:{},id:kS(i.url),kind:`ssh_tunnel`,label:r,readOnly:!0,statusUrl:i.url};return{catalog:{...e,sources:[...e.sources,o]},source:o}}function IS(e,t){return{...e,sources:e.sources.filter(e=>e.kind===`local`||e.id!==t)}}function LS(e,t,n){if(!t.trim()||uh(t,n).source?.isRelative)return DS;let r=t.trim();try{r=new URL(r,n).toString()}catch{return null}return e.sources.find(e=>e.statusUrl===r)??null}function RS(e,t,n){return LS(e,t,n)||(uh(t,n).source?.isRelative?DS:{id:`temporary`,kind:`ssh_tunnel`,label:`临时来源`,readOnly:!0,statusUrl:t.trim()})}function zS(e,t,n,r){return RS(e,t??n,r)}var BS={delete:`删除`,deploy:`部署`,merge:`合并`,payment:`付款`,release:`发布`};function VS(e,t,n){let r=t.replace(/\s+/gu,` `).trim().toLowerCase(),i=n.target.replace(/\s+/gu,` `).trim().toLowerCase();return!i||!r.includes(i)?null:{actionKind:`goal.update`,context:{goal_id:e,kind:`goal`,natural_language:t,semantic_proposal:{operation:n.operation,target:n.target}},idempotencyKey:`workspace-semantic-protected-${e}-${Date.now().toString(36)}`,normalizedParameters:{goal_id:e,status:`operator_gate_requested`},summary:`请求受保护操作:${BS[n.operation]} · ${n.target}`}}var HS=TS;async function US(e){let t=await fetch(e,{cache:`no-store`,signal:AbortSignal.timeout(3e4)});if(!t.ok)throw Error(`HTTP ${t.status} while loading ${e}`);return kp(await t.json())}function WS(e,t){if(t?.controller_readiness?.decision_advisor_ready||t?.controller_readiness?.write_controller_ready)return`controller_ready`;if(t?.controller_readiness)return`controller_gated`;if(t?.human_reward)return`reward_judged`;if(t?.operator_gate?.decision===`approve`)return`operator_approved`;if(t?.operator_gate)return`operator_gated`;let n=e||t?.classification||``;return n===`connected_without_run`?`connected`:n===`read_only_project_map`||t?.project_map?`mapped`:n===`state_refreshed`?`refreshed`:n&&n!==`no_status`?`adapter_inspected`:`registered`}function GS(e,t){let n=new Map(t.map(e=>[e.goal_id,e])),r=new Set,i=e.map(e=>{r.add(e.id);let t=n.get(e.id),i=e.latest_runs[0],a=t?.lifecycle_phase??e.lifecycle_phase??i?.lifecycle_phase??WS(t?.status??i?.classification??e.status,i),o=t?.lifecycle_flags?.length?t.lifecycle_flags:e.lifecycle_flags?.length?e.lifecycle_flags:i?.lifecycle_flags?.length?i.lifecycle_flags:[a];return{goal:e,queueItem:t,latestRun:i,status:t?.status??i?.classification??e.status??`no_status`,waitingOn:t?.waiting_on??`clear`,severity:t?.severity??`clear`,lifecyclePhase:a,lifecycleFlags:o}});for(let e of t)r.has(e.goal_id)||i.push({goal:{activation_state:e.activation_state,id:e.goal_id,status:e.status,display_name:e.goal_id,latest_runs:[],lifecycle_flags:[e.lifecycle_phase??`registered`],registry_member:!0,legacy_runtime_goal:!1,index_exists:!1,raw_index_records:0,unique_runs:0},queueItem:e,status:e.status,waitingOn:e.waiting_on,severity:e.severity,lifecyclePhase:e.lifecycle_phase??`registered`,lifecycleFlags:e.lifecycle_flags??[`registered`]});return i}function KS(e){return(e??``).replace(/\s+/g,` `).trim()}function qS(e,t=132){let n=KS(e);return n.length<=t?n:`${n.slice(0,Math.max(0,t-1))}…`}function JS(e){let t=new Map;for(let n of e?.goals??[])t.set(n.goal_id,n);return t}function YS(e,t){return e===void 0||t===void 0?void 0:e+t}function XS(e,t){if(!e)return null;let n=t===`user`?e.queueItem?.project_asset?.user_todos:e.queueItem?.project_asset?.agent_todos;if(n?.items?.length)return{done_count:n.done??n.items.filter(e=>e.done).length,items:n.items,open_count:n.open??n.items.filter(e=>!e.done).length,total_count:n.total??n.items.length};let r=t===`user`?e.queueItem?.user_todos:e.queueItem?.agent_todos;return r?.items?.length?r:null}function ZS(e){return e?.items.find(e=>!e.done)}function QS(e,t,n=`todos`){return e?.items?.length?{advancement_done_count:e.advancement_done_count??t?.advancement_done_count,done_count:e.done??e.items.filter(e=>e.done).length,items:e.items,open_count:e.open??e.items.filter(e=>!e.done).length,total_count:e.total??e.items.length}:t??null}function $S(e){return e?.queueItem?.project_asset?.quota?.state??e?.queueItem?.quota?.state??e?.goal.quota?.state??`waiting`}function eC(e,t,n){let r=[];for(let t of e){let e=XS(t,`agent`);for(let n of e?.items??[])r.push({goalId:t.goal.id,role:`agent`,todo:n})}let i=new Map;for(let e of r){let t=e.todo.claimed_by||`codex`,n=i.get(t)??[];n.push(e),i.set(t,n)}let a=new Map((n?.agents??[]).map(e=>[e.agent_id,e]));return Array.from(new Set([...i.keys(),...a.keys()])).map(e=>{let t=i.get(e)??[],n=a.get(e),r=Array.from(new Set([...t.map(e=>e.goalId),n?.current_todo?.goal_id,...n?.goal_ids??[]].filter(Boolean))),o=(t.filter(e=>!e.todo.done)[0]??t[0])?.goalId??n?.current_todo?.goal_id??r[0]??``,s=n?.last_activity_at??null;return{agentId:e,claimedTodos:t,currentTodo:n?.current_todo??null,evidenceRefs:[],goalIds:r,handoffNote:null,lastActivity:s,nextSafeAction:n?.next_action?.trim()||`Inspect status projection before taking work`,primaryGoalId:o,quotaHints:[],staleClaimHint:null,status:{label:`可用`,summary:`正常运行`,variant:`success`},workspaceRef:null}})}function tC(e){return e?.map(e=>({dataUrl:e.data_url,id:e.id,mimeType:e.mime_type,name:e.name,size:e.size}))}var nC=`loopx.personal-agent-selection.v1`;function rC(){if(typeof window>`u`)return{};try{let e=JSON.parse(window.localStorage.getItem(nC)??`{}`);return!e||typeof e!=`object`||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(e=>typeof e[0]==`string`&&typeof e[1]==`string`))}catch{return{}}}var iC={需修复:`danger`,等你:`warning`,等待条件:`info`,推进中:`success`,安静运行:`neutral`,已停止:`neutral`,已完成:`neutral`};function aC(e,t){return KS(t)||e.replace(/^loopx[-_]/i,`LoopX `).split(/[-_]+/).filter(Boolean).map((e,t)=>t===0?`${e.slice(0,1).toUpperCase()}${e.slice(1)}`:e).join(` `)}function oC(e){return e.split(/\r?\n/u).filter(e=>!/^\s*GOAL_(STATUS|PROGRESS)\s*:/u.test(e)).map(e=>/^\s*GOAL_EVIDENCE\s*:/u.test(e)?e.replace(/^\s*GOAL_EVIDENCE\s*:/u,`验证依据:`):/^\s*NEXT_ACTION\s*:/u.test(e)?e.replace(/^\s*NEXT_ACTION\s*:/u,`下一步:`):e).join(` -`).trim()}function sC(e,t){return[`agent`,`assistant`].includes(e.trim().toLowerCase())&&t.trim().length>0}var cC=`已发现的项目 Agent`;function lC(e){switch(Sy(e)){case`codex`:return`Codex`;case`claude`:return`Claude Code`;case`kiro`:return`Kiro CLI`;case`trae`:return`Trae CLI Agent`;case`coco`:return`Coco Agent`;default:return aC(e)}}function uC(e,t){switch(Cy(e,t)){case`codex`:return`代码与项目执行`;case`claude`:return`复杂分析与长任务`;case`openai`:case`anthropic`:return`管家问答 · 无工具`;case`kiro`:return`终端编码 · 原生 /goal 循环`;case`trae`:return`前端与交互实现`;case`coco`:return`通用任务`;default:return cC}}function dC(e,t){let n=e.project_asset;return t===`user`?QS(n?.user_todos,e.user_todos,`project_asset.user_todos`):QS(n?.agent_todos,e.agent_todos,`project_asset.agent_todos`)}function fC(e){return qS(e.title??e.text,112)}function pC(e){let t=e.resume_condition?.resume_receipt;if(!t||typeof t!=`object`||Array.isArray(t))return null;let n=t.receipt_id;return typeof n==`string`&&n.trim()?n.trim():null}function mC(e,t){return{resumeWhen:e.resume_when??null,resumeReady:e.resume_ready??null,resumeReceiptId:pC(e),claimedBy:e.claimed_by??null,done:e.status!==`deferred`&&e.done,evidence:e.evidence?qS(e.evidence,96):null,index:e.index,priority:e.priority??null,status:e.status??null,taskClass:e.task_class??null,taskDomain:e.task_domain??null,text:fC(e),todoId:e.todo_id?.trim()||`${t.goal.id}:agent:${e.index}`}}function hC(e){let t=e.queueItem?.agent_todos,n=t?.items??e.queueItem?.project_asset?.agent_todos?.items??[],r=new Map(n.map(t=>[t.todo_id?.trim()||`${e.goal.id}:agent:${t.index}`,t]));for(let n of t?.deferred_items??[]){let t=n.todo_id?.trim()||`${e.goal.id}:agent:${n.index}`;r.has(t)||r.set(t,n)}return[...r.values()]}function gC(e){return hC(e).map(t=>mC(t,e))}function _C(e,t,n){let r=new Map;for(let n of e.todo_index?.items??[]){if(n.goal_id!==t.goal.id||n.role!==`agent`)continue;let e=mC(n,t);r.set(e.todoId,e)}for(let e of n)r.has(e.todoId)||r.set(e.todoId,e);let i=new Map;for(let e of r.values()){if(e.done||e.taskClass!==`advancement_task`)continue;let t=e.taskDomain?.trim();t&&i.set(t,(i.get(t)??0)+1)}return[...i].map(([e,t])=>({domain:e,matchingTodoCount:t}))}function vC(e,t){return{claimedBy:e.claimed_by??null,done:e.status===`done`||e.status===`completed`,index:-1,priority:e.priority??null,status:e.status??null,taskClass:e.task_class??null,text:qS(e.title,112),todoId:e.todo_id?.trim()||`${t.goal.id}:agent:${e.claimed_by??`unknown`}:current`}}function yC(e,t,n){let r=new Map(e.map(e=>[e.todoId,e]));for(let e of t){let t=e.currentTodo;if(!t||t.goal_id!==n.goal.id)continue;let i=vC(t,n);r.has(i.todoId)||r.set(i.todoId,i)}return[...r.values()]}function bC(e){let t=e.queueItem?.project_asset?.agent_todos,n=e.queueItem?.agent_todos,r=hC(e),i=t?.advancement_done_count??n?.advancement_done_count??t?.done??n?.done_count??null,a=r.filter(e=>e.done&&e.status!==`deferred`).length,o=Math.max(i??0,a),s=new Set(r.map(e=>e.todo_id?.trim()).filter(e=>!!e)),c=(t?.recent_completed_advancement_items??[]).filter(e=>!e.todo_id?.trim()||!s.has(e.todo_id.trim())).map(t=>mC(t,e)),l=r.find(e=>!e.done);return{doneTodoCount:o,nextTodoText:KS(t?.next??``)||(l?KS(l.title??``)||KS(l.text??``):``)||null,recentCompleted:c}}function xC(e,t){let n=KS(e);return n?/\b(state_file|registry_goal|authority_sources|source_registry)\b|\b[a-z_]+\s+\d+\/\d+/i.test(n)?t(`projection.goalVerified`):SS(n,t,`projection.validationRecorded`):``}function SC(e,t=4){if(e.length<=t)return e;let n=e.findIndex(e=>!e.done);if(n<0)return e.slice(-t);let r=Math.max(0,Math.min(n-2,e.length-t));return e.slice(r,r+t)}function CC(e,t,n){let r=t.queueItem?.project_asset?.latest_validation,i=t.latestRun,a=e.event_ledger_summary?.goals.find(e=>e.goal_id===t.goal.id);if(!r&&!i&&!a)return null;let o=[xC(r?.summary,n),SS(i?.health_check,n),SS(i?.recommended_action,n)].find(e=>e!==``&&e!==`暂无`)??n(`projection.runRecorded`),s=wS({eventCount:a?.events_24h??0,hasArtifact:!!(i?.json_exists||i?.markdown_exists),hasLatestValidation:!!r},n);return{generatedAt:r?.generated_at??i?.generated_at??a?.latest_event_at??``,label:s.label,metadata:s.metadata,runId:i?`${t.goal.id}:${i.generated_at}`:null,safePreview:[o,s.metadata].filter(Boolean).join(` -`),summary:o,todoId:t.queueItem?.project_asset?.agent_todos?.items.find(e=>!e.done)?.todo_id??null}}function wC(e){return[e.status,e.goal.status,e.latestRun?.classification,e.lifecyclePhase].filter(Boolean).some(e=>/(^|[_\s-])(done|complete|completed|finished|terminal|closed|success)([_\s-]|$)/i.test(e??``))}function TC(e,t){return e.global_registry?.findings?.find(e=>e.severity===`high`&&(e.goal_id===t.goal.id||e.goal_ids.includes(t.goal.id)))}function EC(e){return[e.status,e.goal.status,e.latestRun?.classification,e.lifecyclePhase].filter(Boolean).some(e=>/(^|[_\s-])(failure|failed|error|broken|unhealthy|blocked[_\s-]?health|health[_\s-]?blocked)([_\s-]|$)/i.test(e??``))}function DC(e,t){let n=t.queueItem?.stale_latest_run_warning;return t.severity===`high`||!!TC(e,t)||!!(n?.requires_refresh_state||n?.severity===`high`)||EC(t)}function OC(e,t){let n=TC(e,t);return t.queueItem?.stale_latest_run_warning?.recommended_action??t.queueItem?.stale_latest_run_warning?.reason??n?.recommended_action??n?.message??t.queueItem?.recommended_action??t.latestRun?.recommended_action??null}function kC(e){let t=e.latestRun?.operator_gate,n=t?.decision?.trim().toLowerCase()??``,r=new Set([`approve`,`approved`,`reject`,`rejected`,`defer`,`deferred`,`cancel`,`cancelled`]),i=[e.queueItem?.recommended_action,e.latestRun?.recommended_action].filter(Boolean).join(` `),a=/(?:等待|需要)(?:用户|你|owner).{0,24}(?:批准|确认|授权|补充|选择|决定)|(?:批准|确认|授权).{0,16}(?:后|才能|方可)/i.test(i);return!!(t&&!r.has(n))||e.lifecyclePhase===`operator_gated`&&!r.has(n)||a}function AC(e,t){let n=e.latestRun?.operator_gate;return SS(n?.operator_question??n?.reason_summary??n?.follow_up??e.queueItem?.recommended_action??e.latestRun?.recommended_action,t,`projection.confirmAgentDecision`)}function jC(e,t){if(t.goal.activation_state===`stopped`)return`已停止`;let n=XS(t,`user`),r=XS(t,`agent`),i=!!ZS(n),a=!!ZS(r);return[`user_or_controller`,`controller`].includes(t.waitingOn)||i||kC(t)?`等你`:DC(e,t)?`需修复`:t.waitingOn===`external_evidence`?`等待条件`:$S(t)===`eligible`||a?`推进中`:wC(t)?`已完成`:`安静运行`}function MC(e,t,n,r){if(n===`已停止`)return CS(`stopped`,r);if(n===`需修复`)return SS(OC(e,t),r,`projection.statusRefreshNeeded`);if(n===`等你`)return CS(`needs_you`,r);if(n===`推进中`){let e=[(XS(t,`agent`)?.items??[]).filter(e=>!e.done).flatMap(e=>[e.title,e.text]).map(e=>KS(e)).find(e=>e!==``&&e!==`暂无`),t.queueItem?.recommended_action,t.latestRun?.recommended_action].map(e=>KS(e)).find(e=>e!==``&&e!==`暂无`);return e?SS(e,r,`projection.agentAdvancingGoal`):CS(`advancing`,r)}return CS(n===`等待条件`?`waiting_external`:`idle`,r)}function NC(e,t){return t.some(t=>e.includes(t))}function PC(e,t,n){if(t.goals.some(e=>e.activationState===`active`&&e.loadState))return{text:`Goal 状态尚未全部加载,暂不能给出完整统计。可先打开已加载的 Goal,失败项可重试。`,lines:[]};if(NC(n,[`Agent`,`agent`,`推进`,`在做`])){let e=t.goals.filter(e=>![`安静运行`,`已完成`,`已停止`].includes(e.state)),n=(e.length>0?e:t.goals).slice(0,3);return n.length===0?{text:`当前状态里还没有 Goal 可供汇总。`,lines:[]}:{text:e.length>0?`Agent 当前关注这些 Goal:`:`当前 Goal 都比较安静:`,lines:n.map(e=>`${e.title} · ${e.state} · ${e.agentSentence}`)}}if(NC(n,[`现在`,`下一步`,`我该`,`该做什么`,`优先处理`])){let e=t.userTodos[0];if(e)return{text:e.blocking?`先处理「${aC(e.goalId)}」:${e.text}`:`当前最先处理「${aC(e.goalId)}」:${e.text}`,lines:[]};let n=t.goals.find(e=>e.state===`需修复`);if(n)return{text:`没有待办,但这个 Goal 需要先修复。`,lines:[`${n.title} · ${n.agentSentence}`]};let r=t.goals.find(e=>e.state===`推进中`);return r?{text:`目前不需要你介入,Agent 正在推进。`,lines:[`${r.title} · ${r.agentSentence}`]}:{text:`当前系统很安静,没有需要你立即处理的事项。`,lines:[]}}if(NC(n,[`等我`,`阻塞`,`需要我`,`全局待办`]))return t.userTodos.length===0?{text:`目前没有 Goal 在等你,开放用户待办为 0。`,lines:[]}:{text:`有 ${t.userTodos.length} 项开放用户待办,阻塞项优先:`,lines:t.userTodos.slice(0,3).map(e=>`${aC(e.goalId)} · ${e.blocking?`阻塞`:`待处理`} · ${e.text}`)};if(NC(n,[`状态`,`异常`,`修复`,`健康`])){let n=t.systemHealth?!t.systemHealth.ok:!e.ok||!e.contract?.ok||!e.global_registry?.ok||(e.global_registry?.summary?.high??0)>0,r=t.goals.filter(e=>e.state===`需修复`),i=r.slice(0,n?2:3).map(e=>`${e.title} · ${e.agentSentence}`);return n&&i.push(`全局状态、契约或注册表健康检查未通过,请进入管理页检查。`),i.length===0?{text:`当前没有发现 Goal 级或全局健康异常。`,lines:[]}:{text:r.length>0?`当前需要关注这些健康问题:`:`Goal 状态正常,但全局健康需要检查:`,lines:i}}return{text:`当前管家支持三类问题:下一步、等待你的事项、Agent 与健康状态。`,lines:[`问“我现在该做什么?”`,`问“哪些 Goal 在等我?”`,`问“Agent 在做什么?”或当前健康状态`]}}function FC(e,t,n,r=!1){let i=new Map(t.map(e=>[e.goal.id,e])),a=new Set(e.run_history.goals.filter(e=>e.activation_state===`stopped`).map(e=>e.id)),o=JS(e.usage_summary),s=eC(t,e.todo_index,e.agent_management_projection),c=e.attention_queue.items.flatMap((e,t)=>{if(a.has(e.goal_id))return[];let n=[`user_or_controller`,`controller`].includes(e.waiting_on);return(dC(e,`user`)?.items??[]).map((r,i)=>({projectedDone:r.done,details:Kd(r),actionKind:r.action_kind??null,blocking:n,goalId:e.goal_id,sourceOrder:t,taskClass:r.task_class??null,text:fC(r),todoId:r.todo_id?.trim()||`${e.goal_id}:user:${r.index}`,todoOrder:i,updatedAt:r.updated_at??null}))}),l=c.filter(e=>!e.projectedDone),u=new Set(l.map(e=>e.goalId)),d=t.flatMap((t,r)=>a.has(t.goal.id)||u.has(t.goal.id)||!kC(t)?[]:[{details:Kd({task_class:`user_gate`,status:`open`,note:t.latestRun?.operator_gate?.reason_summary}),actionKind:`gate.resolve`,blocking:!0,goalId:t.goal.id,sourceOrder:e.attention_queue.items.length+r,taskClass:`user_gate`,text:AC(t,n),todoId:`${t.goal.id}:operator-gate`,todoOrder:0,updatedAt:t.latestRun?.operator_gate?.recorded_at??t.latestRun?.generated_at??null}]),f=[...l,...d].sort((e,t)=>Number(t.blocking)-Number(e.blocking)||e.sourceOrder-t.sourceOrder||e.todoOrder-t.todoOrder),p=e.run_history.goals.flatMap(t=>{if(t.registry_member===!1)return[];let a=i.get(t.id);if(!a)return[];let c=jC(e,a),l=f.find(e=>e.goalId===t.id),u=l?.text??null,d=bC(a),p=t.coordination?.registered_agents??[],m=new Set(p),h=[...s.filter(e=>e.goalIds.includes(t.id)&&!/unassigned|unknown/i.test(e.agentId)&&(m.size===0||m.has(e.agentId))&&(e.currentTodo?.goal_id===t.id||e.claimedTodos.some(e=>e.goalId===t.id)))].sort((e,t)=>(t.lastActivity??``).localeCompare(e.lastActivity??``)),g=new Set(h.map(e=>e.agentId)),_=[...h.map(e=>({agentId:e.agentId,label:e.agentId,lastActivityAt:e.lastActivity,state:e.status.label})),...p.filter(e=>!g.has(e)).map(e=>({agentId:e,label:e,lastActivityAt:null,state:`registered`}))],v=h[0],y=yC(gC(a),h,a),b=[d.nextTodoText,a.queueItem?.recommended_action,a.latestRun?.recommended_action,MC(e,a,c,n)].map(e=>SS(e,n)).find(e=>e!==``&&e!==`暂无`)??n(`projection.nextUpdatePending`);return[{activationState:t.activation_state,agentId:v?.agentId??p[0]??`codex`,agentLaneCount:_.length,agentLanes:_,agentLabel:v?.agentId,agentSentence:MC(e,a,c,n),agentTodos:[...y,...d.recentCompleted],doneTodoCount:d.doneTodoCount,acceptanceObservation:t.acceptance_observation,goalId:t.id,latestActivity:a.latestRun?.generated_at??``,needsYou:u,needsYouActionKind:l?.actionKind??null,needsYouBlocking:l?.blocking??!1,needsYouTaskClass:l?.taskClass??null,needsYouTodoId:l?.todoId??null,nextSentence:b,runEvidence:CC(e,a,n),state:c,...r?{subagentExecution:{allowedDomains:t.spawn_policy?.allowed_domains??[],domainCandidates:_C(e,a,y),enabled:t.spawn_policy?.mode===`multi_subagent`&&t.spawn_policy.spawn_allowed===!0&&t.spawn_policy.max_children>0,maxChildren:t.spawn_policy?.max_children??0,modelConfig:t.spawn_policy?.model_config}}:{},title:aC(t.id,t.display_name),usage:(()=>{let e=o.get(t.id);return e?{costUsd24h:e.cost_usd_24h,costUsd7d:e.cost_usd_7d,durationMs24h:e.duration_ms_24h,durationMs7d:e.duration_ms_7d,tokens24h:YS(e.input_tokens_24h,e.output_tokens_24h),tokens7d:YS(e.input_tokens_7d,e.output_tokens_7d)}:null})()}]}),m=[];if(e.ok||m.push(`状态载荷未标记为正常 (payload.ok === false)`),e.contract&&!e.contract.ok){let t=e.contract.summary,n=t?`${t.errors} 项错误 / ${t.warnings} 项警告`:e.contract.errors?.[0]||`请检查控制面契约`;m.push(`契约检查未通过: ${n}`)}if(e.global_registry){e.global_registry.ok||m.push(`注册表状态异常: ${e.global_registry.summary.high} 项高危`);for(let t of e.global_registry.findings||[])t.severity===`high`&&m.push(`[${t.kind}] ${t.message}`)}let h=e.decision_freshness_summary?.summary?.stale_count?`${e.decision_freshness_summary.summary.stale_count} 项决策状态已过期`:null,g=m.length===0&&!h,_={ok:g,summary:g?`所有控制面契约与注册表检查均正常`:`发现 ${m.length+ +!!h} 项系统健康关注点`,issues:m,freshnessWarning:h};return{blockingTodoCount:f.filter(e=>e.blocking).length,goalNotifications:(e.goal_channel_notification_projection?.goals??[]).map(e=>({goalId:e.goal_id,configured:e.configured,enabled:e.enabled,humanGateAutoNotifyEnabled:e.human_gate_auto_notify_enabled,lastNotifiedAt:e.last_notified_at??null,receiptCount:e.receipt_count,targetRef:e.target_ref??null})),goals:p,openUserTodoCount:f.length,systemHealth:_,attentionHistory:[...c,...d],userTodos:f,visibleUserTodos:f.slice(0,5),workers:(e.agent_management_projection?.agents??[]).map(e=>({agentId:e.agent_id,currentTodoGoalId:e.current_todo?.goal_id??null,currentTodoText:e.current_todo?.title?qS(e.current_todo.title,96):null,lastActivityAt:e.last_activity_at??null,state:e.state??null}))}}function IC({goalArchiveLoadState:e,isLoading:t,onGoalActivationStateChange:n,onGoalDeleted:r,onSelectGoal:i,onReconcileStatus:a,onRefresh:o,onRetryGoalArchive:s,payload:c,progress:l,rows:u,selectedGoalId:d,statusSourceControl:f,theme:p,toggleTheme:m}){let h=f.activeSource.readOnly,g=f.activeSource.kind===`ssh_tunnel`?f.activeSource.hostAlias:void 0,{t:_}=Ji(),[v,y]=(0,z.useState)([]),[b,x]=(0,z.useState)(!1),[S,C]=(0,z.useState)(null),[w,T]=(0,z.useState)(null),E=(0,z.useMemo)(()=>{let e=FC(c,u,_,b);if(!l)return e;let t=Object.values(l.snapshots).map(e=>FC(e,GS(e.run_history.goals,e.attention_queue.items),_,b)),n=new Map(t.flatMap(e=>e.goals).map(e=>[e.goalId,e])),r=e.goals.map(e=>n.get(e.goalId)??{...e,loadError:l.errors[e.goalId],loadState:l.errors[e.goalId]?`error`:`loading`,agentId:``,agentSentence:``,nextSentence:``,subagentExecution:void 0}),i=t.flatMap(e=>e.userTodos),a=r.some(e=>e.activationState===`active`&&e.loadState),o=[...new Set(t.flatMap(e=>e.systemHealth?.issues??[]))];return{...e,goals:r,userTodos:i,attentionHistory:t.flatMap(e=>e.attentionHistory??e.userTodos),visibleUserTodos:i.slice(0,5),openUserTodoCount:i.length,blockingTodoCount:i.filter(e=>e.blocking).length,workers:[...new Map(t.flatMap(e=>e.workers??[]).map(e=>[e.agentId,e])).values()],goalNotifications:t.flatMap(e=>e.goalNotifications??[]),systemHealth:a||t.length===0?void 0:{ok:t.every(e=>e.systemHealth?.ok),issues:o,summary:o.length?`发现 ${o.length} 项系统健康关注点`:`状态检查已完成`,freshnessWarning:t.map(e=>e.systemHealth?.freshnessWarning).filter(Boolean).join(`;`)||null}}},[c,u,l,b,_]),D=E.goals.find(e=>e.goalId===d)??null,O=l?.snapshots[d]??c,[k,ee]=(0,z.useState)(null),[te,A]=(0,z.useState)(null),[j,M]=(0,z.useState)(!1),ne=E.goals.some(e=>e.activationState===`active`&&e.loadState===`loading`)?`loading`:E.goals.map(e=>`${e.goalId}:${e.agentId}`).join(`|`),N=D?.goalId??`manager`;E.goals.some(e=>e.activationState===`active`&&e.loadState)||(E.systemHealth?!E.systemHealth.ok:!c.ok)||E.openUserTodoCount>0&&`${E.openUserTodoCount}${E.blockingTodoCount}`;let P=v.length>0?v.map(e=>({agentId:e.agent_id,adapterKind:e.adapter_kind,available:e.available,capability:uC(e.agent_id,e.adapter_kind),interrupt:e.interrupt,label:e.display_name,location:e.location,resume:e.resume,source:e.source,statusLabel:e.available?`可用`:`需要配置`,streaming:e.streaming,toolCalls:e.tool_calls,trustScope:e.trust_scope})):[{agentId:`codex`,available:!0,capability:uC(`codex`),label:`Codex`,statusLabel:`正在检测`}],re=[...P,{agentId:`status-only`,available:!0,capability:`不调用模型`,adapterKind:`status_projection`,interrupt:!1,label:`仅查状态`,resume:!0,statusLabel:`只读`,streaming:!1,toolCalls:!1,trustScope:`read_only`}],ie=P.find(e=>e.label===`Codex`&&e.available)?.agentId??P.find(e=>e.available)?.agentId??`status-only`,ae=w?.executor_endpoint?.trim()??``,F=ae?P.find(e=>e.agentId===ae)?.agentId:void 0,oe=e=>e===`manager`?F??ie:ie,[I,se]=(0,z.useState)(rC),L=gh(re,I[N]??oe(N),ie),[ce,le]=(0,z.useState)(!1),[ue,de]=(0,z.useState)(!1),[fe,pe]=(0,z.useState)(`chat`),[me,he]=(0,z.useState)(``),[ge,_e]=(0,z.useState)({}),[ve,ye]=(0,z.useState)({}),[be,xe]=(0,z.useState)(null),[Se,Ce]=(0,z.useState)({}),[we,Te]=(0,z.useState)([]),[Ee,De]=(0,z.useState)(null),[Oe,ke]=(0,z.useState)({}),Ae=(0,z.useRef)(1),R=(0,z.useRef)(1),je=(0,z.useRef)(new Map),Me=(0,z.useRef)(new Set),Ne=(0,z.useRef)(new Map),Pe=(0,z.useRef)(new Map),Fe=(0,z.useRef)(new Set),Ie=(0,z.useRef)(new Set),Le=(0,z.useRef)(null),Re=(0,z.useRef)(null),ze=(0,z.useRef)(null),V=(0,z.useRef)(null);(0,z.useRef)(null);let Be=ge[N]??[];ve[N];let Ve=(e,t)=>e===`manager`?_(`header.manager`):t,He=D?E.userTodos.filter(e=>e.goalId===D.goalId):E.userTodos,Ue=D?.agentTodos??[];SC(Ue,D?.needsYou?3:4);let We=Ue.filter(e=>e.done).length,Ge=Ue.length>0?`${We}/${Ue.length}`:`暂无计划`;D&&({...E},He.filter(e=>e.blocking).length,He.length),(0,z.useEffect)(()=>{let e=lh(f.activeSource.statusUrl,window.location.href),t=e.source?ph(O,e.source):null;if(!D||!t?.indexUrl||!t.detailUrl){ee(null),A(null),M(!1);return}let{detailUrl:n,indexUrl:r}=t,i=!1;return ee(null),A(null),M(!0),mh(r,D.goalId).then(async e=>{let t=e.items[0]?.detail_ref;return t?hh(n,t):null}).then(e=>{i||ee(e)}).catch(e=>{i||A(Ap(e))}).finally(()=>{i||M(!1)}),()=>{i=!0}},[O,D?.goalId,f.activeSource.statusUrl]);let Ke=D?void 0:Se[N]?.sessionId;(0,z.useEffect)(()=>{if(h||!Ke)return;let e=!1,t,n=async()=>{try{let t=await Xh(Ke);if(e)return;let n=t.messages.filter(e=>e.origin===`manager_followup`);_e(e=>{let t=e[N]??[],r=new Set(t.map(e=>e.sourceMessageId)),i=n.filter(e=>!r.has(e.message_id)),a=new Map(n.map(e=>[e.message_id,e.return_delivery])),o=!1,s=t.map(e=>{let t=e.sourceMessageId?a.get(e.sourceMessageId):void 0;return JSON.stringify(t)===JSON.stringify(e.returnDelivery)?e:(o=!0,{...e,returnDelivery:t})});return!i.length&&!o?e:{...e,[N]:[...s,...i.map(e=>({id:Ae.current++,sourceMessageId:e.message_id,role:`assistant`,agentLabel:Ve(N,L.label),sourceLabel:`管家交接回执`,text:oC(e.text),lines:[],returnDelivery:e.return_delivery}))]}})}catch{}finally{e||(t=setTimeout(n,3e3))}};return n(),()=>{e=!0,t&&clearTimeout(t)}},[h,Ke,N,L.label]);function qe(e,t){Ce(n=>{if(t===null){let t={...n};return delete t[e],t}return{...n,[e]:t}})}(0,z.useEffect)(()=>{if(h){y([]),x(!1),C(null),T(null);return}let e=!1;return qh().then(t=>{if(!e){y(t.adapters??[]);let e=t.manager?.runtime;T(t.manager?.channel_binding??null),C(e?{schema_version:`manager_runtime_session_readback_v0`,runtime_profile:e.runtime_profile,configuration_revision:e.configuration_revision,status:e.status,sandbox:e.sandbox,standing_grant:e.standing_grant,tool_classes:e.tool_classes}:null),x(t.goal_subagent_configuration===`preview_locked`)}}).catch(()=>{e||x(!1)}),()=>{e=!0}},[h]),(0,z.useEffect)(()=>{try{window.localStorage.setItem(nC,JSON.stringify(I))}catch{}},[I]),(0,z.useEffect)(()=>{if(h||!L.available)return;let e=N,t=`${e}:${L.agentId}`,n=D?`goal`:`manager`,r=D?`goal.${D.goalId}`:`manager`,i=!1,a=null,o=null;return(async()=>{try{let s=await $h({agentId:n===`manager`?void 0:L.agentId,channelId:r,goalId:D?.goalId});if(i||(_e(t=>(t[e]?.length??0)>0?t:{...t,[e]:s.messages.map(t=>({sourceMessageId:t.message_id,agentLabel:t.role===`user`?void 0:Ve(e,L.label),attachments:tC(t.attachments),id:Ae.current++,lines:[],role:t.role===`user`?`user`:`assistant`,returnDelivery:t.return_delivery,sourceLabel:t.role===`user`?void 0:t.role===`error`?`本地会话记录`:e===`manager`?`恢复的${_(`header.manager`)}会话`:`恢复的 ${L.label} 会话`,text:t.role===`user`?t.text:oC(t.text)}))}),L.agentId===`status-only`))return;let c=s.sessions[0];if(o=c?.session_id??null,c&&!c.resumable){Me.current.add(t),qe(e,{agentId:L.agentId,resumable:!1,sessionId:c.session_id,status:`resume_failed`});return}let l=n===`manager`?``:D?.goalId??``;if(n===`goal`&&!l)return;let u=await Yh(l,n===`manager`?I[e]:L.agentId,`resume_latest`,n);if(i)return;n===`manager`&&u.session.manager_runtime&&C(u.session.manager_runtime),je.current.set(t,u.session_id);let d=s.snapshots.find(e=>e.session.session_id===u.session_id),f=d?.session.active_turn_id??``;if(qe(e,{agentId:u.agent_id||L.agentId,resumable:!0,sessionId:u.session_id,status:f?`running`:`ready`,turnId:f||void 0}),Me.current.delete(t),!f)return;let p=`${u.session_id}:${f}`;if(Ie.current.has(p))return;Ie.current.add(p),Ne.current.set(e,f),qe(e,{agentId:L.agentId,resumable:!0,sessionId:u.session_id,status:`running`,turnId:f}),xe(e),a=new AbortController,Pe.current.set(e,a);let m=``,h=Je(e,{activity:[`正在恢复进行中的 Agent 回合`],agentLabel:Ve(e,L.label),lines:[],pending:!0,sourceLabel:e===`manager`?`恢复的${_(`header.manager`)}会话`:`恢复的 ${L.label} 会话`,text:``});try{let t=await og(u.session_id,f,{signal:a.signal,onDelta:t=>{m+=t,Ye(e,h,{text:m})},onActivity:t=>{_e(n=>({...n,[e]:(n[e]??[]).map(e=>e.id===h?{...e,activity:[...new Set([...e.activity??[],t])].slice(-6)}:e)}))}});if(i)return;Ye(e,h,{lines:t.response.gate?[t.response.gate.summary,t.response.gate.next_action].filter(Boolean).slice(0,2):[],pending:!1,text:t.response.message||m.trim()||`${Ve(e,L.label)} 已完成分析。`});let n=E.goals.find(e=>e.goalId===d?.session.goal_id)??D??E.goals[0]??null;if(n&&t.response.proposals.length>0){let r=t.response.proposals.filter(_h).map(e=>({goalId:n.goalId,id:R.current++,previewId:null,proposal:e,receiptLabel:null,state:`candidate`,statusMessage:null}));r.length>0&&ye(t=>({...t,[e]:[...t[e]??[],...r]}))}}catch(t){if(i)return;Ye(e,h,{activity:[],lines:[],pending:!1,reconnect:t instanceof Fh&&t.payload.reconnectable===!0,sourceLabel:`LoopX Chat 本地后端`,text:t instanceof Error?t.message:`无法恢复进行中的 Agent 回合。`})}finally{Ie.current.delete(p),Ne.current.get(e)===f&&Ne.current.delete(e),qe(e,{agentId:L.agentId,resumable:!0,sessionId:u.session_id,status:`ready`}),Pe.current.get(e)===a&&Pe.current.delete(e),i||xe(t=>t===e?null:t)}}catch(n){if(i)return;n instanceof Fh&&n.payload.error_code===`resume_failed`&&(Me.current.add(t),o&&qe(e,{agentId:L.agentId,resumable:!1,sessionId:o,status:`resume_failed`}))}})(),()=>{i=!0,a?.abort()}},[N,E.goals[0]?.goalId,h,D?.goalId,L.agentId,L.available,L.label,I]),(0,z.useEffect)(()=>{if(h||D||E.goals.length===0||ne===`loading`)return;let e=!1;return Promise.all(E.goals.filter(e=>!e.loadState).map(async e=>{let t=await Zh({agentId:e.agentId,channelId:`goal.${e.goalId}`,goalId:e.goalId});return{goalId:e.goalId,session:t.sessions[0]??null}})).then(t=>{e||Ce(e=>{let n={...e};for(let e of t)e.session&&(n[e.goalId]={agentId:e.session.agent_id,resumable:e.session.resumable,sessionId:e.session.session_id,status:e.session.active_turn_id?`running`:e.session.status,turnId:e.session.active_turn_id??void 0});return n})}).catch(()=>{}),()=>{e=!0}},[h,ne,D?.goalId]),(0,z.useEffect)(()=>{if(De(null),h){Te([]),ke({});return}if(!D){Te([]),ke({});return}let e=!1,t=0,n=0;Te([]),ke({});let r=async()=>{if(!e){if(document.hidden){t=window.setTimeout(()=>void r(),1e4);return}try{let t=await Zh({goalId:D.goalId});if(!e){let r=t.sessions.filter(e=>e.channel_id?.startsWith(`task.`));Te(r);let i=await Promise.allSettled(r.map(e=>Xh(e.session_id)));if(!e){let e=i.some(e=>e.status===`rejected`);n=e?n+1:0,De(e?`partial`:null),ke(Object.fromEntries(i.flatMap((e,t)=>e.status===`fulfilled`?[[r[t].session_id,e.value]]:[])))}}}catch{n+=1,e||De(`offline`)}e||(t=window.setTimeout(()=>void r(),Math.min(3e4,2e3*2**Math.min(n,4))))}};return r(),()=>{e=!0,window.clearTimeout(t)}},[h,D?.goalId]),(0,z.useEffect)(()=>{if(!ce)return;let e=window.requestAnimationFrame(()=>{Le.current?.querySelector(`[role="menuitem"]:not(:disabled)`)?.focus()});return()=>{window.cancelAnimationFrame(e),Re.current?.focus()}},[ce]),(0,z.useEffect)(()=>{if(!ue)return;let e=window.requestAnimationFrame(()=>ze.current?.focus());return()=>{window.cancelAnimationFrame(e),V.current?.focus()}},[ue]),(0,z.useEffect)(()=>{if(!ce&&!ue)return;let e=e=>{e.key===`Escape`&&(le(!1),de(!1))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[ce,ue]);function Je(e,t){let n=Ae.current++;return _e(r=>({...r,[e]:[...r[e]??[],{...t,id:n,role:`assistant`}]})),n}function Ye(e,t,n){_e(r=>({...r,[e]:(r[e]??[]).map(e=>e.id===t?{...e,...n}:e)}))}async function Xe(e,t){let n=e.trim();if(!n)return;let r=t&&`goalId`in t?t.goalId??`manager`:N,i=r===`manager`?null:E.goals.find(e=>e.goalId===r)??null,a=t?.agentId?gh(re,t.agentId,ie):L,o=r===`manager`?E:i?{...E,blockingTodoCount:E.userTodos.filter(e=>e.goalId===i.goalId&&e.blocking).length,goals:[i],openUserTodoCount:E.userTodos.filter(e=>e.goalId===i.goalId).length,userTodos:E.userTodos.filter(e=>e.goalId===i.goalId),visibleUserTodos:E.userTodos.filter(e=>e.goalId===i.goalId)}:E,s=Ae.current++;if(_e(e=>({...e,[r]:[...e[r]??[],{attachments:t?.attachments,id:s,lines:[],role:`user`,text:n}]})),he(``),xe(r),a.agentId===`status-only`||!i&&r!==`manager`){let e=PC(O,o,n),t=a.agentId===`status-only`;Je(r,{agentLabel:t?`仅查状态`:`LoopX 管家`,lines:e.lines.slice(0,3),sourceLabel:t?`LoopX 状态投影 · 仅查状态`:`LoopX 状态投影`,text:e.text}),Jh({answer:[e.text,...e.lines.slice(0,3)].filter(Boolean).join(` -`),contextKind:r===`manager`?`manager`:`goal`,goalId:r===`manager`?void 0:r,question:n}).catch(()=>{}),xe(null);return}let c=`${r}:${a.agentId}`,l=null;try{let e=je.current.get(c);if(!e){let t=Me.current.has(c)?`new`:`resume_latest`,n=r===`manager`?I[r]:a.agentId,o=await Yh(r===`manager`?``:i.goalId,n,t,r===`manager`?`manager`:`goal`);r===`manager`&&o.session.manager_runtime&&C(o.session.manager_runtime),e=o.session_id,je.current.set(c,e),qe(r,{agentId:o.agent_id||a.agentId,resumable:!0,sessionId:e,status:`ready`}),Me.current.delete(c)}let o=``;l=Je(r,{activity:[r===`manager`?`正在连接管家`:`正在连接 Agent`],agentLabel:Ve(r,a.label),lines:[],pending:!0,sourceLabel:r===`manager`?`${_(`header.manager`)} · 跨 Goal`:`${a.label} Agent · ${aC(i.goalId)}`,text:``});let s=(await ig(e,n,{attachments:t?.attachments,signal:(()=>{let e=new AbortController;return Pe.current.set(r,e),e.signal})(),onDelta:e=>{o+=e,l!==null&&Ye(r,l,{text:o})},onActivity:e=>{l!==null&&_e(t=>({...t,[r]:(t[r]??[]).map(t=>t.id===l?{...t,activity:[...new Set([...t.activity??[],e])].slice(-6)}:t)}))},onPhase:(t,n)=>{Ne.current.set(r,n),qe(r,{agentId:a.agentId,resumable:!0,sessionId:e,status:`running`,turnId:n})}})).response;Ye(r,l,{lines:s.gate?[s.gate.summary,s.gate.next_action].filter(Boolean).slice(0,2):[],pending:!1,text:oC(s.message||o.trim())||`${Ve(r,a.label)} 已完成分析。`});let u=s.proposals.filter(_h);if(u.length>0&&!i&&Ye(r,l,{lines:[`请进入要修改的 Goal,预览并确认具体变更。`]}),u.length>0&&i){let e=u.map(e=>({goalId:i.goalId,id:R.current++,previewId:null,proposal:e,receiptLabel:null,state:`candidate`,statusMessage:null}));ye(t=>({...t,[r]:[...t[r]??[],...e]}))}if(r!==`manager`&&s.protected_action){let e=VS(r,n,s.protected_action);if(e)return e}}catch(e){if(Fe.current.delete(r)){let e={agentLabel:Ve(r,a.label),lines:[],pending:!1,sourceLabel:r===`manager`?`${_(`header.manager`)}会话`:`${a.label} 会话`,text:`已中断。你可以在当前会话继续发送消息。`};l===null?Je(r,e):Ye(r,l,e);return}let t=e instanceof Fh?e.payload:null;t&&yh(t)&&je.current.delete(c),t?.error_code===`resume_failed`&&(je.current.delete(c),Me.current.add(c),qe(r,{agentId:a.agentId,resumable:!1,sessionId:Se[r]?.sessionId??`resume-failed`,status:`resume_failed`}));let n=t?.gate,i=n&&typeof n==`object`?String(n.summary??``):``,o={agentLabel:Ve(r,a.label),lines:i?[i]:[],pending:!1,reconnect:t?.reconnectable===!0,sourceLabel:`LoopX Chat 本地后端`,text:t?.error_code===`resume_failed`?`原 ${Ve(r,a.label)} 会话无法恢复。本地历史已经保留,请在运行详情里选择“重试恢复”或“开始新 Session”。`:e instanceof Error?e.message:`${Ve(r,a.label)} 会话暂时不可用。`};l===null?Je(r,o):Ye(r,l,o)}finally{Ne.current.delete(r),Pe.current.delete(r);let e=je.current.get(c);e&&qe(r,{agentId:a.agentId,resumable:!0,sessionId:e,status:`ready`}),xe(e=>e===r?null:e)}}async function Ze(e){let t=e?.goalId??N,n=Se[t],r=e?.agentId??n?.agentId??L.agentId,i=`${t}:${r}`,a=e?.sessionId??n?.sessionId??je.current.get(i),o=e?.turnId??n?.turnId??Ne.current.get(t);if(!(!a||!o))try{Fe.current.add(t),await rg(a,o),Pe.current.get(t)?.abort()}catch(e){throw Fe.current.delete(t),e}finally{Ne.current.delete(t),qe(t,{agentId:r,resumable:!0,sessionId:a,status:`ready`}),Pe.current.delete(t),xe(e=>e===t?null:e)}}async function Qe(e){let t=e.goalId,n=`${t}:${e.agentId}`,r=e.sessionId??Se[t]?.sessionId??je.current.get(n);if(r)try{let i=await cg(r);je.current.set(n,r),Me.current.delete(n),qe(t,{agentId:e.agentId,resumable:i.session.resumable,sessionId:r,status:i.session.status})}catch{qe(t,{agentId:e.agentId,resumable:!1,sessionId:r,status:`resume_failed`})}}function $e(e){let t=`${e.goalId}:${e.agentId}`;je.current.delete(t),Me.current.add(t),qe(e.goalId,{agentId:e.agentId,resumable:!0,sessionId:`new-session-pending`,status:`ready`})}async function et(e){let t=`${e.goalId}:${e.agentId}`,n=e.sessionId??Se[e.goalId]?.sessionId??je.current.get(t);n&&n!==`new-session-pending`&&await sg(n),je.current.delete(t),Me.current.add(t),qe(e.goalId,null)}function tt(e){re.some(t=>t.agentId===e&&t.available)&&(se(t=>({...t,[N]:e})),le(!1))}function nt(){i(``),pe(`chat`)}function rt(e){i(e),pe(`chat`)}D&&iC[D.state],D&&(`${L.label}${D.state}`,Ue.length>0&&`${Ge}`,He.length>0&&`${He.length}`),D?.state===`需修复`||!D&&!c.ok?(D&&lC(D.agentId),D?.nextSentence,D?.agentSentence):D?.state===`等你`?(D.needsYouBlocking,D.needsYouBlocking,D.needsYou??D.nextSentence,D.needsYou):(D&&lC(D.agentId),D?.nextSentence);let it=[...!D&&Se.manager?.status===`resume_failed`?[{id:`run:manager:resume-failed`,kind:`run`,run:{agentId:Se.manager.agentId,agentLabel:lC(Se.manager.agentId),canInterrupt:!1,completedSteps:0,goalId:`manager`,goalTitle:`LoopX 管家`,latestActivity:`本地聊天记录已保留,点我查看恢复方式。`,resumable:!1,runId:`manager:resume-failed`,sessionId:Se.manager.sessionId,sessionStatus:`resume_failed`,status:`failed`,title:`上次会话需要恢复`,totalSteps:1,outputs:[]}}]:[],...D?we.map(e=>{let t=e.channel_id?.startsWith(`task.`)?e.channel_id.slice(5):void 0,n=D.agentTodos.find(e=>e.todoId===t),r=!!e.active_turn_id,i=Oe[e.session_id],a=i?.messages.some(e=>sC(e.role,e.text))===!0;return{id:`run:task:${e.session_id}`,kind:`run`,run:{agentId:e.agent_id,agentLabel:lC(e.agent_id),canInterrupt:r,completedSteps:n?.done||a?1:0,goalId:D.goalId,goalTitle:D.title,latestActivity:r?`Agent 正在执行,可进入 Session 查看过程或发送纠偏。`:a?`Agent 已返回结果,点击查看结果与完整运行记录。`:`执行 Session 已保留,可继续纠偏或恢复。`,resumable:e.resumable,runId:e.session_id,sessionId:e.session_id,sessionMessages:i?.messages.map(e=>({createdAt:e.created_at,messageId:e.message_id,role:e.role===`user`?`user`:sC(e.role,e.text)?`assistant`:`error`,text:e.role===`user`?e.text:oC(e.text)})),sessionStatus:a?`completed`:e.status,status:n?.done||a?`completed`:r?`running`:e.status===`resume_failed`?`failed`:`waiting`,title:n?.text??`Agent 执行任务`,todoId:t,totalSteps:1,turnId:e.active_turn_id??void 0}}}):[],...D?[{id:`run:${D.goalId}`,kind:`run`,run:{agentId:Se[D.goalId]?.agentId??D.agentId,agentLabel:lC(Se[D.goalId]?.agentId??D.agentId),canInterrupt:!!Se[D.goalId]?.turnId,completedSteps:D.agentTodos.filter(e=>e.done).length,goalId:D.goalId,goalTitle:D.title,latestActivity:D.agentSentence,resumable:Se[D.goalId]?.resumable??!0,runId:`goal:${D.goalId}`,sessionId:Se[D.goalId]?.sessionId,sessionStatus:Se[D.goalId]?.status,status:Se[D.goalId]?.turnId?`running`:D.state===`需修复`?`failed`:`waiting`,title:D.nextSentence,totalSteps:D.agentTodos.length||1,turnId:Se[D.goalId]?.turnId,outputs:D.runEvidence?[{createdAt:D.runEvidence.generatedAt,kind:`evidence`,outputId:`${D.goalId}:latest-evidence`,title:D.runEvidence.label}]:[]}}]:[],...Be.map(e=>({id:`message:${e.id}`,kind:`message`,message:{agentLabel:e.agentLabel,attachments:e.attachments,id:String(e.id),pending:e.pending,returnDelivery:e.returnDelivery,role:e.role,text:e.text||(e.pending?`Agent 正在处理…`:e.lines.join(` -`))}})),...(D?[D]:E.goals).flatMap(e=>e.runEvidence?[{id:`output:${e.goalId}:${e.runEvidence.generatedAt||`latest`}`,kind:`output`,output:{agentLabel:lC(e.agentId),createdAt:e.runEvidence.generatedAt,goalId:e.goalId,goalTitle:e.title,kind:`evidence`,outputId:`${e.goalId}:latest-evidence`,runId:e.runEvidence.runId??void 0,safePreview:e.runEvidence.safePreview,summary:e.runEvidence.summary,title:e.runEvidence.label,todoId:e.runEvidence.todoId??void 0}}]:[]),...D&&k?[{id:`output:${D.goalId}:report:${k.publication.publication_id}`,kind:`output`,output:{agentId:k.agent_id,agentLabel:lC(k.agent_id),createdAt:k.publication.delivered_at,goalId:D.goalId,goalTitle:D.title,kind:`report`,outputId:k.publication.publication_id,report:{addedCount:k.delta.added_count,changedCount:k.delta.changed_count,deliveredAt:k.publication.delivered_at,generationId:k.generation_id,items:k.delta.items.map(e=>({changeKind:e.change_kind,previousStatus:e.previous_status,sourceRef:e.source_ref,status:e.status,summary:e.summary,title:e.title})),periodEndAt:k.period_window.end_at,periodStartAt:k.period_window.start_at,predecessorPublicationId:k.publication.predecessor_publication_id,publicationId:k.publication.publication_id},safePreview:k.delta.items.map(e=>`${e.change_kind===`added`?`+`:`~`} ${e.title}\n${e.summary}`).join(` +`)});continue}let o=e.match(/^\s{0,3}#{1,4}\s+(.*)$/);if(o){i();let t=e.trimStart().match(/^#+/)?.[0].length??1;n.push({type:`heading`,level:t,text:o[1].trim()}),a+=1;continue}if(ab.test(e)||ob.test(e)){i();let r=ob.test(e),o=r?ob:ab,s=[];for(;a{let n=`b${t}`;if(e.type===`code`)return(0,B.jsx)(`pre`,{className:`personal-md-pre`,children:(0,B.jsx)(`code`,{children:e.text})},n);if(e.type===`heading`)return(0,B.jsx)(`p`,{className:`personal-md-heading is-h${e.level}`,children:ib(e.text,n)},n);if(e.type===`list`){let t=e.items.map((e,t)=>(0,B.jsx)(`li`,{children:ib(e,`${n}-${t}`)},`${n}-${t}`));return e.ordered?(0,B.jsx)(`ol`,{className:`personal-md-list`,children:t},n):(0,B.jsx)(`ul`,{className:`personal-md-list`,children:t},n)}return(0,B.jsx)(`p`,{children:e.lines.map((e,t)=>(0,B.jsxs)(z.Fragment,{children:[t>0?(0,B.jsx)(`br`,{}):null,ib(e,`${n}-${t}`)]},`${n}-${t}`))},n)})})}function lb({onSelect:e,output:t}){let{t:n}=Ji(),r=t.kind===`report`?xm:bm;return(0,B.jsxs)(`button`,{className:`personal-timeline-row personal-output-row`,"data-output-kind":t.kind,"data-testid":`personal-browse-row`,onClick:e,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-row-icon is-output`,children:(0,B.jsx)(r,{size:18})}),(0,B.jsxs)(`span`,{className:`personal-row-copy`,children:[(0,B.jsxs)(`small`,{children:[t.goalTitle??t.goalId,` · `,t.agentLabel??`LoopX`]}),(0,B.jsx)(`strong`,{children:t.title}),t.summary?(0,B.jsx)(`span`,{children:t.summary}):null,t.report?(0,B.jsxs)(`small`,{children:[n(`files.reportDelta`,{added:t.report.addedCount,changed:t.report.changedCount}),` · `,n(`files.verifiedReport`)]}):null]}),t.createdAt?(0,B.jsx)(`time`,{children:t.createdAt}):null,(0,B.jsx)(sm,{size:17})]})}var ub={completed:`runs.completed`,failed:`runs.failed`,interrupted:`runs.interrupted`,queued:`runs.queued`,running:`runs.running`,waiting:`runs.waiting`};function db({onSelect:e,run:t}){let{t:n}=Ji(),r=t.totalSteps>0?Math.min(100,t.completedSteps/t.totalSteps*100):0;return(0,B.jsxs)(`button`,{"aria-label":`${n(`tasks.viewExecution`)}:${t.title}`,className:`personal-timeline-row personal-run-row`,"data-testid":`personal-browse-row`,onClick:e,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-row-icon is-run`,children:(0,B.jsx)(nm,{size:18})}),(0,B.jsxs)(`span`,{className:`personal-run-identity`,children:[(0,B.jsx)(`small`,{children:t.goalTitle}),(0,B.jsx)(`strong`,{children:t.agentLabel})]}),(0,B.jsxs)(`span`,{className:`personal-row-copy`,children:[(0,B.jsx)(`strong`,{children:t.title}),(0,B.jsx)(`small`,{children:t.latestActivity})]}),(0,B.jsxs)(`span`,{className:`personal-run-progress`,"aria-label":`${t.completedSteps}/${t.totalSteps}`,children:[(0,B.jsxs)(`small`,{children:[t.completedSteps,`/`,t.totalSteps]}),(0,B.jsx)(`i`,{children:(0,B.jsx)(`b`,{style:{width:`${r}%`}})})]}),(0,B.jsxs)(`span`,{className:`personal-row-status is-${t.status}`,children:[t.status===`running`?(0,B.jsx)(km,{className:`personal-spin`,size:14}):null,n(ub[t.status])]}),t.sessionId?(0,B.jsx)(`span`,{className:`personal-run-open-label`,children:n(`tasks.viewExecution`)}):null,(0,B.jsx)(sm,{size:17})]})}function fb({onSelect:e,schedule:t}){let{t:n}=Ji(),r=t.scheduleKind===`heartbeat`;return(0,B.jsxs)(`button`,{"aria-label":`${r?`Heartbeat`:n(`tasks.scheduled`)}:${t.label};${t.status??`active`}`,className:`personal-schedule-row`,onClick:e,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-schedule-icon`,children:r?(0,B.jsx)(Vm,{size:17}):(0,B.jsx)(im,{size:17})}),(0,B.jsxs)(`span`,{className:`personal-schedule-copy`,children:[(0,B.jsx)(`small`,{children:n(r?`schedule.heartbeat`:`schedule.monitor`)}),(0,B.jsx)(`strong`,{children:t.label}),(0,B.jsx)(`p`,{children:t.schedule??n(`schedule.summary`)})]}),(0,B.jsx)(`span`,{className:`personal-schedule-status is-${t.status??`active`}`,children:t.status===`paused`?n(`schedule.paused`):n(`schedule.active`)}),(0,B.jsx)(sm,{size:16})]})}function pb({delivery:e}){let{t}=Ji();if(!e)return null;let n=e.status===`delivered`?e.verification===`reconciled_after_restart`?t(`returnDelivery.reconciled`):t(`returnDelivery.delivered`):e.status===`verification_required`?t(`returnDelivery.verifying`):e.status===`explicit_unverified`?t(`returnDelivery.unverified`):t(`returnDelivery.queued`),r=e.status===`delivered`?`delivered`:e.status===`verification_required`?`verification_required`:e.status===`explicit_unverified`?`explicit_unverified`:`queued`;return(0,B.jsx)(`small`,{className:`personal-return-delivery is-${r}`,role:`status`,children:n})}function mb({items:e,onSelect:t,selectedGoal:n}){let{t:r}=Ji();if(e.length===0)return(0,B.jsxs)(`div`,{className:`personal-timeline-empty`,children:[(0,B.jsx)(`span`,{children:(0,B.jsx)(Qm,{size:20})}),(0,B.jsx)(`strong`,{children:r(n?`timeline.emptyGoal`:`timeline.emptyWorkspace`)}),(0,B.jsx)(`p`,{children:r(n?`timeline.emptyGoalDescription`:`timeline.emptyWorkspaceDescription`)})]});let i=[...e].reverse().find(e=>e.kind===`message`&&e.message.role!==`user`||e.kind===`proposal`&&[`applied`,`stale`,`error`,`gated`].includes(e.proposal.status)||e.kind===`run`&&e.run.status===`completed`),a=i?.kind===`message`?`${i.message.agentLabel??r(`header.manager`)}:${i.message.pending?r(`timeline.pending`):i.message.text}`:i?.kind===`proposal`?`${i.proposal.title}:${i.proposal.status}`:i?.kind===`run`?r(`timeline.runCompleted`,{run:i.run.title}):``,o=e.filter(e=>e.kind===`proposal`&&e.proposal.status===`gated`),s=e.filter(e=>e.kind!==`proposal`),c=e.filter(e=>e.kind===`proposal`&&e.proposal.status!==`gated`);function l(e){return e.kind===`attention`?(0,B.jsx)(nb,{attention:e.attention,onSelect:()=>t({item:e.attention,kind:`attention`})},e.id):e.kind===`run`?(0,B.jsx)(db,{onSelect:()=>t({item:e.run,kind:`run`}),run:e.run},e.id):e.kind===`output`?(0,B.jsx)(lb,{onSelect:()=>t({item:e.output,kind:`output`}),output:e.output},e.id):e.kind===`schedule`?(0,B.jsx)(fb,{onSelect:()=>t({item:e.schedule,kind:`schedule`}),schedule:e.schedule},e.id):e.kind===`proposal`?(0,B.jsxs)(`button`,{className:`personal-proposal-row is-${e.proposal.status}`,onClick:()=>t({item:e.proposal,kind:`proposal`}),type:`button`,children:[(0,B.jsx)(`span`,{children:(0,B.jsx)(Qm,{size:17})}),(0,B.jsxs)(`span`,{children:[(0,B.jsxs)(`small`,{children:[e.proposal.actionKind,` · `,e.proposal.status]}),(0,B.jsx)(`strong`,{children:e.proposal.title}),(0,B.jsx)(`p`,{children:e.proposal.impact})]}),(0,B.jsx)(`b`,{children:e.proposal.status===`gated`&&e.proposal.actionKind!==`operation.execute`?r(`timeline.review`):e.proposal.primaryLabel??r(`timeline.reviewAndConfirm`)})]},e.id):(0,B.jsxs)(`article`,{className:`personal-message is-${e.message.role}`,children:[e.message.role===`user`?null:(0,B.jsx)(`span`,{className:`personal-message-avatar`,children:(0,B.jsx)(nm,{size:17})}),(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:e.message.role===`user`?r(`common.you`):e.message.agentLabel??r(`header.manager`)}),e.message.time?(0,B.jsx)(`time`,{children:e.message.time}):null]}),e.message.attachments?.length?(0,B.jsx)(`div`,{className:`personal-message-images`,children:e.message.attachments.map(e=>(0,B.jsx)(`img`,{alt:e.name,src:e.dataUrl},e.id))}):null,e.message.role===`user`?(0,B.jsx)(`p`,{children:e.message.text}):(0,B.jsx)(cb,{text:e.message.text}),e.message.pending?(0,B.jsx)(`span`,{className:`personal-message-pending`,children:r(`timeline.pending`)}):null,(0,B.jsx)(pb,{delivery:e.message.returnDelivery})]})]},e.id)}return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{"aria-atomic":`true`,"aria-live":`polite`,className:`personal-live-region`,role:`status`,children:a}),(0,B.jsxs)(`div`,{className:`personal-channel-timeline`,children:[s.map(l),o.length?(0,B.jsxs)(`details`,{className:`personal-gated-summary`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(`span`,{children:(0,B.jsx)(Qm,{size:16})}),(0,B.jsx)(`strong`,{children:r(`timeline.waitingConfirmation`)}),(0,B.jsx)(`small`,{children:r(`timeline.gateHistory`,{count:o.length})})]}),(0,B.jsx)(`div`,{children:o.map(l)})]}):null,c.map(l)]})]})}function hb({goal:e}){let{t,locale:n}=Ji(),r=n===`zh-CN`?{checkpoint_satisfied:`检查点满足`,checkpoint_fresh:`检查点有效`,path_outcome_valid:`路径决策有效`,evidence_refs_present:`证据引用齐全`,final_outcome_claim_present:`最终成果声明齐全`,no_reported_outcome_gap:`无已报告成果缺口`}:{checkpoint_satisfied:`Checkpoint satisfied`,checkpoint_fresh:`Checkpoint current`,path_outcome_valid:`Valid path decision`,evidence_refs_present:`Evidence refs present`,final_outcome_claim_present:`Final outcome claim present`,no_reported_outcome_gap:`No reported outcome gap`},i={connected:t(`acceptance.connected`),mapped:t(`acceptance.mapped`),refreshed:t(`acceptance.refreshed`),adapter_inspected:t(`acceptance.inspected`),run_recorded:t(`acceptance.recorded`),reward_judged:t(`acceptance.judged`),operator_approved:t(`acceptance.approved`),controller_ready:t(`acceptance.ready`),attention_queue:t(`acceptance.attentionSource`),agent_vision:t(`acceptance.visionSource`),todo_projection:t(`acceptance.todoSource`),current_run:t(`acceptance.runSource`)},a=e=>i[e]??t(`acceptance.unknown`),o=e.acceptanceObservation,s=e.loadState||!o||o.goal_id!==e.goalId||o.coverage===`unavailable`;return(0,B.jsxs)(`section`,{className:`personal-detail-card personal-goal-acceptance`,"aria-label":t(`acceptance.title`),children:[(0,B.jsxs)(`div`,{className:`personal-detail-card-title`,children:[(0,B.jsx)(`h3`,{children:t(`acceptance.title`)}),(0,B.jsx)(`em`,{children:t(`common.readOnly`)})]}),(0,B.jsx)(`p`,{role:`status`,children:t(s?`acceptance.unavailable`:`acceptance.partial`)}),!s&&o?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`h4`,{children:t(`acceptance.gaps`)}),o.acceptance_gaps.length?o.acceptance_gaps.map((e,i)=>(0,B.jsxs)(`div`,{className:`personal-acceptance-observation`,children:[(0,B.jsx)(`p`,{children:e.reason??t(`acceptance.reasonUnknown`)}),e.resolution_hint?(0,B.jsx)(`p`,{children:e.resolution_hint}):null,e.component_checks?(0,B.jsx)(`div`,{children:Object.entries(e.component_checks).map(([e,t])=>(0,B.jsxs)(`p`,{children:[r[e],`: `,n===`zh-CN`?t?`通过`:`未通过`:t?`Passed`:`Failed`]},e))}):null,(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`common.owner`)}),(0,B.jsx)(`dd`,{children:e.owner??t(`acceptance.unknown`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`acceptance.required`)}),(0,B.jsx)(`dd`,{children:e.evidence_required??t(`acceptance.unknown`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`acceptance.observed`)}),(0,B.jsx)(`dd`,{children:e.observed_at??t(`acceptance.unknown`)})]})]})]},`${e.kind}:${e.owner}:${i}`)):(0,B.jsx)(`p`,{children:t(`acceptance.noGaps`)}),(0,B.jsx)(`h4`,{children:t(`acceptance.guards`)}),o.guards.length?o.guards.map((e,n)=>(0,B.jsxs)(`div`,{className:`personal-acceptance-observation`,children:[(0,B.jsx)(`p`,{children:e.reason??t(`acceptance.reasonUnknown`)}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`common.owner`)}),(0,B.jsx)(`dd`,{children:e.owner??t(`acceptance.unknown`)})]}),e.blocks_agent?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`common.agent`)}),(0,B.jsx)(`dd`,{children:e.blocks_agent})]}):null,e.todo_id?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`common.task`)}),(0,B.jsx)(`dd`,{children:e.todo_id})]}):null,(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`acceptance.required`)}),(0,B.jsx)(`dd`,{children:e.evidence_required??t(`acceptance.unknown`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`acceptance.scope`)}),(0,B.jsx)(`dd`,{children:e.decision_scope??t(`acceptance.unknown`)})]})]})]},`${e.todo_id}:${n}`)):(0,B.jsx)(`p`,{children:t(`acceptance.noGuards`)}),(0,B.jsx)(`h4`,{children:t(`acceptance.next`)}),(0,B.jsx)(`p`,{children:o.next_action??t(`acceptance.unknown`)}),(0,B.jsxs)(`details`,{children:[(0,B.jsxs)(`summary`,{children:[t(`acceptance.historical_progress`),` · `,o.historical_progress.length]}),(0,B.jsx)(`p`,{children:t(`acceptance.historical`)}),o.historical_progress.map(e=>(0,B.jsxs)(`p`,{children:[(0,B.jsx)(`strong`,{children:a(e.kind)}),` · `,e.observed_at??t(`acceptance.unknown`),` `,e.evidence_refs.join(`, `)]},e.kind))]}),o.missing_sources.length?(0,B.jsxs)(`p`,{children:[t(`acceptance.missing`),` `,o.missing_sources.map(a).join(`, `)]}):null,o.truncated?(0,B.jsx)(`p`,{children:t(`acceptance.truncated`)}):null]}):null]})}function gb({item:e,successor:t,onSelect:n}){let{t:r}=Ji(),i=e.details;return(0,B.jsxs)(`section`,{className:`personal-detail-card`,"aria-label":r(`attentionDetail.title`),children:[(0,B.jsx)(`h3`,{children:r(`attentionDetail.title`)}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`attentionDetail.request`)}),(0,B.jsx)(`dd`,{children:r(i?.interaction===`decision`?`attentionDetail.decision`:`attentionDetail.unknownRequest`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`common.status`)}),(0,B.jsx)(`dd`,{children:r(`attentionDetail.${i?.lifecycle??`unknown`}`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`drawer.reason`)}),(0,B.jsx)(`dd`,{children:i?.reason??e.explanation??r(`attentionDetail.unknownReason`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Todo`}),(0,B.jsx)(`dd`,{children:e.todoId})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`attentionDetail.targetTodo`)}),(0,B.jsx)(`dd`,{children:i?.unblocksTodoId??r(`attentionDetail.notProvided`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`attentionDetail.targetAgent`)}),(0,B.jsx)(`dd`,{children:i?.blocksAgent??r(`attentionDetail.notProvided`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`attentionDetail.scope`)}),(0,B.jsx)(`dd`,{children:i?.decisionScope?`${i.decisionScope.kind} · ${i.decisionScope.granularity} · ${i.decisionScope.scopeKey}`:r(`attentionDetail.notProvided`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`drawer.evidence`)}),(0,B.jsx)(`dd`,{children:i?.evidence??e.evidence??r(`drawer.decisionDefaultEvidence`)})]})]}),i?.supersededBy?(0,B.jsxs)(`p`,{children:[r(`attentionDetail.replacement`),`: `,i.supersededBy]}):null,t&&n?(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:()=>n(t),type:`button`,children:r(`attentionDetail.openReplacement`)}):null,(0,B.jsx)(`p`,{children:r(`attentionDetail.boundary`)})]})}function _b(e){return e.replace(/\s+/gu,` `).trim()}function vb(e,t){let n=RegExp(`(?:不要|不需要|无需|禁止|别|暂不|do not\\b|don't\\b|without\\b).{0,10}(?:${t.source})`,`iu`),r=RegExp(`(?:${t.source}).{0,10}(?:不要|不需要|无需|禁止|关闭)`,`iu`),i=RegExp(`disable\\b.{0,10}(?:${t.source})|(?:turn|switch|set)\\b.{0,10}(?:${t.source}).{0,10}\\boff\\b|(?:${t.source})\\s+(?:is\\s+)?disabled\\b`,`iu`);return n.test(e)||r.test(e)||i.test(e)}function yb(e){return/(我现在该做什么|下一步|哪些\s*Goal\s*在等我|需要我|谁在等我|Agent\s*在做什么|当前进度|总结(?:今天)?进展)/iu.test(e)}function bb(e){let t=/(怎么|如何|为什么|给.*建议|分析一下|解释|只读)/u.test(e),n=/(解决一下|修复一下|处理一下|执行一下|改一下|跑(?:一下)?测试|rebase|push|提交|推送)/iu.test(e);return!t&&n&&/(帮我|请|给我|直接|现在|开始|bytedcli|codebase|git|rebase|push|提交|推送)/iu.test(e)}function xb(e){return _b(e).toLowerCase().match(/(?:^|[\s,,;;:((:]|到|至)(?todo_done:todo_[a-z0-9_-]{3,64}|pr_merged:(?:(?:[a-z0-9_.-]{1,80})\/(?:[a-z0-9_.-]{1,100}))?#[1-9][0-9]{0,8}|capacity_available:[a-z][a-z0-9_:-]{0,63}|resume_at:[1-9][0-9]{3}-[0-9]{2}-[0-9]{2}t[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\.[0-9]{1,3})?(?:z|[+-][0-9]{2}:[0-9]{2}))(?=$|[\s,,。;;))])/iu)?.groups?.condition??null}function Sb(e,t){let n=_b(e),r=[],i=t.agents.find(e=>{let t=n.toLowerCase();return t.includes(e.agentId.toLowerCase())||t.includes(e.label.toLowerCase())}),a=t.todos.find(e=>n.includes(e.todoId)||n.includes(e.text)),o=/(刚刚|已经|已)(?:经)?\s*(新增|创建|添加)(?:的)?\s*(todo|待办|任务)/iu.test(n),s=!!t.goalId&&!vb(n,/heartbeat|心跳/iu)&&/(heartbeat|心跳|每天推进|持续推进|daily progress)/iu.test(n);if(!t.goalId&&!vb(n,/goal|目标/iu)&&/(创建|新建|设置|create|start|set up).{0,24}(goal|目标)/iu.test(n)&&r.push({actionKind:`goal.create`,confidence:.97,normalizedParameters:{heartbeat_enabled:!vb(n,/heartbeat|心跳/iu)&&/(heartbeat|心跳|每天推进|持续推进|daily progress)/iu.test(n)}}),t.goalId&&s&&r.push({actionKind:`heartbeat.bind`,confidence:.96,normalizedParameters:{goal_id:t.goalId}}),t.goalId&&!s&&!vb(n,/定时|监控|监测|持续观察|scheduled check|monitor/iu)&&/(定时|监控|监测|每.{0,8}(分钟|小时|天)|持续观察|scheduled check|monitor|every.{0,12}(minute|hour|day)|daily)/iu.test(n)&&r.push({actionKind:`monitor.create`,confidence:.94,normalizedParameters:{goal_id:t.goalId}}),t.goalId&&i&&!vb(n,/绑定|负责|接管|管理/iu)&&/((让|交给).{0,20}(管理|负责|接管).{0,8}(goal|目标)|(绑定).{0,12}(goal|目标)|(goal|目标).{0,12}(交给|绑定|负责|接管))/iu.test(n)&&r.push({actionKind:`agent.bind`,confidence:.96,normalizedParameters:{agent_id:i.agentId,goal_id:t.goalId}}),t.goalId&&!o&&!vb(n,RegExp(`todo|待办|任务`,`iu`))&&/(创建|新建|新增|添加|加一个|记一个).{0,16}(todo|待办|任务)|(todo|待办|任务).{0,12}(创建|新建|新增|添加)|(?:create|add)(?:\s+(?:a|an|new))?\s+(?:todo|task)|(?:todo|task).{0,12}(?:create|add)/iu.test(n)&&r.push({actionKind:`todo.create`,confidence:.94,normalizedParameters:{goal_id:t.goalId}}),t.goalId&&bb(n)&&r.push({actionKind:`todo.create`,confidence:.9,normalizedParameters:{goal_id:t.goalId,start_execution:!0}}),t.goalId&&a){let e=!vb(n,/完成|做完|关闭/u)&&/完成|做完|关闭/u.test(n)?`complete`:!vb(n,/阻塞|卡住/u)&&/阻塞|卡住/u.test(n)?`block`:!vb(n,/暂缓|稍后|推迟/u)&&/暂缓|稍后|推迟/u.test(n)?`defer`:i&&!vb(n,/交给|分配给|改派/u)&&/交给|分配给|改派/u.test(n)?`reassign`:null;if(e){let i=e===`defer`?xb(n):null;if(e===`defer`&&!i)return{actionKind:`todo.update`,confidence:.97,missingFields:[`resume_when`],normalizedParameters:{goal_id:t.goalId,operation:e,todo_id:a.todoId},route:`clarify`};r.push({actionKind:`todo.update`,confidence:.97,normalizedParameters:{goal_id:t.goalId,operation:e,...i?{resume_when:i}:{},todo_id:a.todoId}})}}let c=[...new Map(r.map(e=>[e.actionKind,e])).values()];return c.length>1?{actionKind:null,confidence:.4,missingFields:[`single_intent`],normalizedParameters:{},route:`clarify`}:c.length===1?{...c[0],missingFields:[],route:`typed_action`}:!t.goalId&&yb(n)?{actionKind:null,confidence:.98,missingFields:[],normalizedParameters:{},route:`projection`}:{actionKind:null,confidence:.75,missingFields:[],normalizedParameters:{},route:`agent_chat`}}function Cb(e,t,n){if(!e)return{};if(!t.trim())return{modelConfig:null};let r={model:t.trim()};return n&&(r.reasoning_effort=n),{modelConfig:r}}var wb=[`a[href]`,`button:not([disabled])`,`textarea:not([disabled])`,`select:not([disabled])`,`input:not([disabled])`,`[tabindex]:not([tabindex='-1'])`].join(`,`),Tb=[{key:`drawer.taskBlock`,operation:`block`},{key:`drawer.taskSuccessor`,operation:`successor_create`}],Eb=[{key:`drawer.decisionReject`,resolution:`reject`},{key:`drawer.decisionDefer`,resolution:`defer`}],Db=Array.from({length:32},(e,t)=>t+1),Ob=/^[a-z][a-z0-9_.-]{0,63}$/u;function kb(e){let t=String(e??``).trim().toLowerCase();return Ob.test(t)?t:null}function Ab(e,t){return e.enabled===t.enabled&&e.maxChildren===t.maxChildren&&JSON.stringify(e.modelConfig??null)===JSON.stringify(t.modelConfig??null)&&[...e.allowedDomains].sort((e,t)=>e.localeCompare(t)).join(`\0`)===[...t.allowedDomains].sort((e,t)=>e.localeCompare(t)).join(`\0`)}function jb({agents:e,attentionHistory:t=[],onSelectAttention:n,callbacks:r,goalNotifications:i=[],goals:a=[],inspectorExpanded:o=!1,larkConnections:s=[],onClose:c,onToggleInspectorSize:l,readOnly:u=!1,runs:d=[],selection:f}){let{locale:p,t:m}=Ji(),[h,g]=(0,z.useState)(``),[_,v]=(0,z.useState)(!1),[y,b]=(0,z.useState)(`idle`),[x,S]=(0,z.useState)(`record`),[C,w]=(0,z.useState)([]),[T,E]=(0,z.useState)(null),[D,O]=(0,z.useState)(2),[k,ee]=(0,z.useState)(``),[te,A]=(0,z.useState)(``),[j,M]=(0,z.useState)(`idle`),[ne,N]=(0,z.useState)(null),[P,re]=(0,z.useState)(null),ie=(0,z.useRef)(null),ae=(0,z.useRef)(null),[F,oe]=(0,z.useState)(e.find(e=>e.available)?.agentId??`codex`),[I,se]=(0,z.useState)(``),L=(0,z.useRef)(null),ce=(0,z.useRef)(null),le=(0,z.useRef)(null),ue=(0,z.useRef)(null),de=f.kind===`run`?`run:${f.item.runId}`:f.kind===`proposal`?`proposal:${f.item.previewId}`:f.kind===`todo`?`todo:${f.item.todoId}`:f.kind===`attention`?`attention:${f.item.todoId}`:f.kind===`output`?`output:${f.item.outputId}`:f.kind===`schedule`?`schedule:${f.item.scheduleId}`:`goal:${f.item.goalId}`;(0,z.useEffect)(()=>{b(`idle`),v(!1),S(`record`),se(``);let e=f.kind===`goal`?f.item.subagentExecution:void 0;w(e?.allowedDomains??[]),ee(e?.modelConfig?.model??``),A(e?.modelConfig?.reasoning_effort??``),O(e?.maxChildren?Math.min(e.maxChildren,32):2),E(null),M(`idle`),N(null),re(null),ie.current=e??null,ae.current=null},[de]);let fe=f.kind===`goal`?f.item.subagentExecution:void 0;(0,z.useEffect)(()=>{let e=ie.current,t=fe?!e||!Ab(e,fe):e!==null;if(ie.current=fe??null,!P){t&&fe&&(w(fe.allowedDomains),ee(fe.modelConfig?.model??``),A(fe.modelConfig?.reasoning_effort??``),O(fe.maxChildren||2),E(null),M(`idle`),N(null));return}let n=ae.current;(!fe||Ab(P,fe)||n&&!Ab(n,fe))&&(fe&&(w(fe.allowedDomains),ee(fe.modelConfig?.model??``),A(fe.modelConfig?.reasoning_effort??``),O(fe.maxChildren||2)),ae.current=null,re(null))},[fe,P]),(0,z.useEffect)(()=>{let e=document.activeElement;e instanceof HTMLElement&&!ce.current?.contains(e)&&(le.current=e);let t=window.requestAnimationFrame(()=>ue.current?.focus());return()=>window.cancelAnimationFrame(t)},[de]);let pe=(0,z.useCallback)(()=>{let e=le.current;c(),window.requestAnimationFrame(()=>e?.focus())},[c]);(0,z.useEffect)(()=>{function e(e){if(e.key===`Escape`){e.preventDefault(),pe();return}if(e.key===`Tab`&&f.kind!==`todo`){let t=Array.from(ce.current?.querySelectorAll(wb)??[]).filter(e=>!e.hasAttribute(`disabled`)&&e.getAttribute(`aria-hidden`)!==`true`);if(t.length===0)return;let n=t[0],r=t[t.length-1];e.shiftKey&&document.activeElement===n?(e.preventDefault(),r.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n.focus())}}return document.addEventListener(`keydown`,e),()=>{document.removeEventListener(`keydown`,e)}},[pe,f.kind]);let me=f.kind===`attention`?m(`drawer.titleAttention`):f.kind===`todo`?m(`drawer.taskDetails`):f.kind===`run`?m(`drawer.runDetails`):f.kind===`output`?m(`drawer.titleOutput`):f.kind===`proposal`?m(f.item.status===`applied`?`drawer.titleProposalApplied`:`drawer.titleProposalConfirm`):f.kind===`schedule`?f.item.scheduleKind===`heartbeat`?`Heartbeat`:m(`drawer.titleSchedule`):m(`drawer.goalDetails`),he=f.kind===`proposal`?f.item.goalId??`manager`:f.item.goalId,ge=f.kind===`attention`?f.item.goalTitle??m(`drawer.currentGoal`):f.kind===`todo`||f.kind===`run`?f.item.goalTitle:f.kind===`output`?f.item.goalTitle??m(`drawer.currentGoal`):f.kind===`goal`?f.item.title:f.kind===`schedule`?m(`drawer.goalAutoRun`):f.item.goalId?m(`drawer.goalChanges`):m(`drawer.managerChanges`),_e=f.kind===`goal`?d.find(e=>e.goalId===f.item.goalId&&!!e.sessionId)??d.find(e=>e.goalId===f.item.goalId):null,ve=f.kind===`run`&&(f.item.completedSteps>0||!!f.item.latestActivity||!!f.item.outputs?.length),ye=f.kind===`attention`?Zi(f.item.updatedAt,m):null,be=xb(I);async function xe(){f.kind!==`run`||!h.trim()||(await r.onCorrectRun?.(f.item,h.trim()),g(``))}async function Se(e,t,n,i){if(t===`successor_create`){await r.onPreviewAction?.({actionKind:`todo.create`,context:{goal_id:e.goalId,kind:`todo`,todo_id:e.todoId},idempotencyKey:`workspace-todo-successor-${e.todoId}-${Date.now().toString(36)}`,normalizedParameters:{goal_id:e.goalId,text:m(`drawer.taskSuccessorText`,{task:e.text})},summary:m(`drawer.taskSuccessorSummary`,{task:e.text})});return}await r.onPreviewAction?.({actionKind:`todo.update`,context:{goal_id:e.goalId,kind:`todo`,todo_id:e.todoId},idempotencyKey:`workspace-todo-${e.todoId}-${t}-${Date.now().toString(36)}`,normalizedParameters:{agent_id:e.claimedBy??F,goal_id:e.goalId,operation:t,...t===`block`?{note:m(`drawer.taskSuccessorNote`)}:{},...t===`defer`&&i?{resume_when:i}:{},todo_id:e.todoId},summary:`${n}:${e.text}`})}async function Ce(e,t,n){u||!Xd(e)||await r.onPreviewAction?.({actionKind:`gate.resolve`,context:{goal_id:e.goalId,kind:`todo`,todo_id:e.todoId},idempotencyKey:`workspace-decision-${e.todoId}-${t}-${Date.now().toString(36)}`,normalizedParameters:{goal_id:e.goalId,decision:t,todo_id:e.todoId},summary:`${n}:${e.text}`})}let we=f.kind===`goal`?P??f.item.subagentExecution??{allowedDomains:[],domainCandidates:[],enabled:!1,maxChildren:0}:{allowedDomains:[],domainCandidates:[],enabled:!1,maxChildren:0},Te=j===`previewing`||j===`applying`,Ee=(()=>{if(f.kind!==`goal`)return[];let e=new Map;for(let t of we.allowedDomains){let n=kb(t);n&&e.set(n,{matchingTodoCount:0,value:n})}if(we.domainCandidates)for(let t of we.domainCandidates){let n=kb(t.domain);if(!n)continue;let r=e.get(n);e.set(n,{matchingTodoCount:(r?.matchingTodoCount??0)+t.matchingTodoCount,value:n})}else for(let t of f.item.agentTodos){if(t.done||t.taskClass!==`advancement_task`)continue;let n=kb(t.taskDomain);if(!n)continue;let r=e.get(n);e.set(n,{matchingTodoCount:(r?.matchingTodoCount??0)+1,value:n})}return[...e.values()]})();function De(){w(we.allowedDomains),ee(we.modelConfig?.model??``),A(we.modelConfig?.reasoning_effort??``),O(we.maxChildren||2),E(null),M(`idle`),N(null)}function Oe(){let e=[...new Set(C.map(e=>kb(e)))];return e.every(e=>!!e)?e:null}function ke(e,t){w(n=>t?[...n,e].filter((e,t,n)=>n.indexOf(e)===t):n.filter(t=>t!==e)),N(null),M(`idle`),E(null)}async function Ae(e,t=e){if(f.kind!==`goal`||!r.onPreviewGoalSubagentConfiguration)return;let n=e?Oe():[];if(t&&!k.trim()&&te){M(`error`),E(m(`drawer.subagentModelRequired`));return}if(e&&!n){M(`error`),E(m(`drawer.subagentDomainInvalid`)),N(null);return}let i={allowedDomains:n??[],enabled:e,goalId:f.item.goalId,maxChildren:e?D:0,...Cb(t,k,te)};M(`previewing`),E(m(`drawer.subagentPreviewing`)),N(null);try{let e=await r.onPreviewGoalSubagentConfiguration(i);if(!e.changed){ae.current=fe??null,re({...e.configuration,domainCandidates:we.domainCandidates}),w(e.configuration.allowedDomains),ee(e.configuration.modelConfig?.model??``),A(e.configuration.modelConfig?.reasoning_effort??``),O(e.configuration.maxChildren||2),M(`success`),E(m(`drawer.subagentNoChange`));return}N({...i,changed:e.changed,previewId:e.previewId}),M(`ready`),E(m(`drawer.subagentPreviewReady`))}catch(e){M(`error`),E(e instanceof Error?e.message:m(`drawer.subagentPreviewFailed`))}}async function R(){if(!(!ne||!r.onApplyGoalSubagentConfiguration)){M(`applying`),E(m(`drawer.subagentApplying`));try{let e=await r.onApplyGoalSubagentConfiguration({allowedDomains:ne.allowedDomains,enabled:ne.enabled,goalId:ne.goalId,maxChildren:ne.maxChildren,modelConfig:ne.modelConfig,previewId:ne.previewId});ae.current=fe??null,re({...e,domainCandidates:we.domainCandidates}),w(e.allowedDomains),ee(e.modelConfig?.model??``),A(e.modelConfig?.reasoning_effort??``),O(e.maxChildren||2),M(`success`),E(m(`drawer.subagentApplied`)),N(null);try{await r.onRefresh?.()}catch{M(`warning`),E(m(`drawer.subagentAppliedRefreshFailed`))}}catch(e){M(`error`),E(e instanceof Error?e.message:m(`drawer.subagentApplyFailed`))}}}return(0,B.jsxs)(`div`,{"aria-labelledby":`personal-drawer-title`,"aria-modal":f.kind===`todo`?void 0:`true`,className:`personal-context-drawer`,"data-context-kind":f.kind,ref:ce,role:`dialog`,children:[(0,B.jsxs)(`header`,{className:`personal-drawer-header${f.kind===`todo`?` is-task-inspector`:``}`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`h2`,{id:`personal-drawer-title`,ref:ue,tabIndex:-1,children:me}),(0,B.jsx)(`p`,{children:ge})]}),(0,B.jsxs)(`div`,{className:`personal-drawer-header-actions`,children:[f.kind===`todo`&&l?(0,B.jsx)(`button`,{"aria-label":m(o?`drawer.inspectorHalf`:`drawer.inspectorFull`),className:`personal-icon-button personal-inspector-size`,onClick:l,title:m(o?`drawer.inspectorHalfView`:`drawer.inspectorFullView`),type:`button`,children:o?(0,B.jsx)(Pm,{size:17}):(0,B.jsx)(Am,{size:17})}):null,(0,B.jsxs)(`button`,{"aria-label":m(`drawer.closeDetail`,{context:ge}),className:`personal-icon-button personal-drawer-close`,onClick:pe,ref:L,type:`button`,children:[(0,B.jsx)(Xp,{className:`personal-mobile-back`,size:18}),(0,B.jsx)(ah,{className:`personal-desktop-close`,size:18})]})]})]}),(0,B.jsxs)(`div`,{className:`personal-drawer-body`,children:[f.kind===`attention`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-detail-card is-attention`,children:[(0,B.jsx)(`small`,{children:f.item.blocking?m(`drawer.attentionBlocking`):m(`drawer.attentionWaiting`)}),(0,B.jsx)(`h3`,{children:f.item.text}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Goal`}),(0,B.jsx)(`dd`,{children:f.item.goalTitle??f.item.goalId})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.priority`)}),(0,B.jsx)(`dd`,{children:f.item.priority??`medium`})]}),ye?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`common.waiting`)}),(0,B.jsx)(`dd`,{children:m(`tasks.waitingAge`,{age:ye})})]}):null]})]}),(0,B.jsx)(gb,{item:f.item,onSelect:n,successor:Yd(f.item,t)}),!u&&Xd(f.item)?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>void Ce(f.item,`approve`,m(`common.confirm`)),type:`button`,children:[(0,B.jsx)(am,{size:17}),m(`drawer.decisionReview`)]}),(0,B.jsxs)(`details`,{className:`personal-compact-menu`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(gm,{size:17}),m(`drawer.decisionMore`)]}),(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`button`,{onClick:()=>void r.onExplainDecision?.(f.item),type:`button`,children:[(0,B.jsx)(Mm,{size:16}),m(`drawer.explainDecision`)]}),Eb.map(e=>(0,B.jsx)(`button`,{onClick:()=>void Ce(f.item,e.resolution,m(e.key)),type:`button`,children:m(e.key)},e.resolution))]})]})]}):null]}):null,f.kind===`todo`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-task-inspector-summary`,children:[(0,B.jsxs)(`div`,{className:`personal-task-inspector-status`,children:[(0,B.jsxs)(`span`,{className:f.item.done?`is-done`:f.item.status===`blocked`?`is-blocked`:`is-open`,children:[(0,B.jsx)(`i`,{}),f.item.done?m(`drawer.taskStatusCompleted`):f.item.status===`deferred`?m(`drawer.taskStatusDeferred`):f.item.status===`blocked`?m(`drawer.taskStatusBlocked`):m(`drawer.taskStatusOpen`)]}),f.item.priority?(0,B.jsx)(`span`,{children:f.item.priority}):null,(0,B.jsx)(`span`,{children:f.item.taskClass===`advancement_task`?m(`drawer.taskAdvancement`):f.item.taskClass??m(`drawer.taskOrdinary`)})]}),(0,B.jsx)(`h3`,{children:f.item.text})]}),(0,B.jsxs)(`section`,{"aria-label":m(`drawer.taskInfo`),className:`personal-task-inspector-fields`,children:[(0,B.jsx)(`h4`,{children:m(`drawer.taskInfo`)}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Goal`}),(0,B.jsx)(`dd`,{children:f.item.goalTitle})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`common.owner`)}),(0,B.jsx)(`dd`,{children:f.item.ownerLabel??f.item.claimedBy??m(`drawer.notAssigned`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`common.status`)}),(0,B.jsx)(`dd`,{children:f.item.done?m(`drawer.taskStatusCompleted`):f.item.status===`deferred`?m(`drawer.taskStatusDeferred`):f.item.status===`blocked`?m(`drawer.taskStatusBlocked`):m(`drawer.taskStatusOpen`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.priority`)}),(0,B.jsx)(`dd`,{children:f.item.priority??m(`drawer.notSet`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.dependencies`)}),(0,B.jsx)(`dd`,{children:f.item.dependencies?.join(` · `)||m(`common.none`)})]}),f.item.status===`deferred`||f.item.resumeWhen?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.resumeWhen`)}),(0,B.jsx)(`dd`,{children:f.item.resumeWhen||m(`drawer.notSet`)})]}):null,f.item.resumeWhen?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.resumeState`)}),(0,B.jsx)(`dd`,{children:f.item.resumeReady?m(`drawer.resumeReady`):m(`drawer.resumePending`)})]}):null,f.item.resumeReceiptId?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.resumeReceipt`)}),(0,B.jsx)(`dd`,{children:f.item.resumeReceiptId})]}):null,(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.nextTransition`)}),(0,B.jsx)(`dd`,{children:f.item.nextTransition??(f.item.done?m(`drawer.taskNextCompleted`):f.item.resumeReady?m(`drawer.taskNextResumeReady`):f.item.status===`deferred`?m(`drawer.taskNextDeferred`):m(`drawer.taskNextOpen`))})]})]})]}),!u&&!f.item.done?(0,B.jsxs)(`div`,{className:`personal-task-inspector-actions`,"aria-label":m(`drawer.taskActions`),children:[(0,B.jsxs)(`details`,{className:`personal-task-management`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(gm,{size:16}),m(`drawer.taskManage`)]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:m(`drawer.reassign`)}),(0,B.jsxs)(`label`,{className:`personal-inline-agent-select`,children:[m(`drawer.reassign`),(0,B.jsx)(`select`,{"aria-label":m(`drawer.reassign`),onChange:e=>oe(e.target.value),value:F,children:e.filter(e=>e.available).map(e=>(0,B.jsx)(`option`,{value:e.agentId,children:e.label},e.agentId))}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onPreviewAction?.({actionKind:`todo.update`,context:{goal_id:f.item.goalId,kind:`todo`,todo_id:f.item.todoId},idempotencyKey:`workspace-todo-${f.item.todoId}-reassign-${F}-${Date.now().toString(36)}`,normalizedParameters:{agent_id:F,goal_id:f.item.goalId,operation:`reassign`,todo_id:f.item.todoId},summary:m(`drawer.reassignSummary`,{task:f.item.text})}),type:`button`,children:m(`timeline.review`)})]}),(0,B.jsx)(`strong`,{children:m(`drawer.taskDeferUntil`)}),(0,B.jsxs)(`label`,{className:`personal-inline-agent-select personal-inline-resume-when`,children:[m(`drawer.taskDeferUntil`),(0,B.jsx)(`input`,{"aria-label":m(`drawer.taskDeferCondition`),"aria-invalid":!!I.trim()&&!be,onChange:e=>se(e.target.value),placeholder:m(`drawer.taskDeferPlaceholder`),value:I}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,disabled:!be,onClick:()=>void Se(f.item,`defer`,m(`drawer.taskDefer`),be??void 0),type:`button`,children:m(`drawer.taskDeferReview`)}),(0,B.jsx)(`small`,{children:I.trim()&&!be?m(`drawer.taskDeferInvalid`):m(`drawer.taskDeferSupported`)})]}),(0,B.jsx)(`div`,{className:`personal-task-management-secondary`,children:Tb.map(e=>(0,B.jsx)(`button`,{onClick:()=>void Se(f.item,e.operation,m(e.key)),type:`button`,children:m(e.key)},e.operation))})]})]}),(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>void Se(f.item,`complete`,m(`drawer.taskComplete`)),type:`button`,children:[(0,B.jsx)(am,{size:17}),m(`drawer.taskComplete`)]})]}):null,f.item.done?(0,B.jsxs)(`div`,{className:`personal-task-completed-note`,children:[(0,B.jsx)(am,{size:16}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:m(`drawer.taskCompletedTitle`)}),(0,B.jsx)(`small`,{children:m(`drawer.taskCompletedNote`)})]})]}):null]}):null,f.kind===`goal`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-detail-card`,children:[(0,B.jsx)(`small`,{children:Yi(f.item.state,p)}),(0,B.jsx)(`h3`,{children:f.item.title}),(0,B.jsx)(`p`,{children:f.item.agentSentence}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.tokens`)}),(0,B.jsxs)(`dd`,{children:[Zy(f.item.usage?.tokens24h,m(`drawer.usageNotMeasured`),Jy),` / `,Zy(f.item.usage?.tokens7d,m(`drawer.usageNotMeasured`),Jy)]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.cost`)}),(0,B.jsxs)(`dd`,{children:[Zy(f.item.usage?.costUsd24h,m(`drawer.usageNotMeasured`),Yy),` / `,Zy(f.item.usage?.costUsd7d,m(`drawer.usageNotMeasured`),Yy)]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.duration`)}),(0,B.jsxs)(`dd`,{children:[Zy(f.item.usage?.durationMs24h,m(`drawer.usageNotMeasured`),Xy),` / `,Zy(f.item.usage?.durationMs7d,m(`drawer.usageNotMeasured`),Xy)]})]})]})]}),(0,B.jsx)(hb,{goal:f.item}),(()=>{let e=i.find(e=>e.goalId===f.item.goalId),t=s.find(e=>e.goal_id===f.item.goalId);return(0,B.jsxs)(B.Fragment,{children:[f.item.repository?(0,B.jsxs)(`section`,{className:`personal-detail-card personal-goal-repository`,children:[(0,B.jsxs)(`div`,{className:`personal-detail-card-title`,children:[(0,B.jsx)(`small`,{children:m(`drawer.repository`)}),(0,B.jsx)(`em`,{children:m(`common.readOnly`)})]}),(0,B.jsxs)(`h3`,{children:[(0,B.jsx)(Sm,{size:16}),f.item.repository.label]}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.branch`)}),(0,B.jsx)(`dd`,{children:f.item.repository.branch||`detached`})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Role`}),(0,B.jsx)(`dd`,{children:m(`drawer.repositoryRole`)})]})]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>{let e=navigator.clipboard?.writeText(f.item.repository?.identity??``);if(!e){b(`error`);return}e.then(()=>b(`copied`)).catch(()=>b(`error`))},type:`button`,children:[(0,B.jsx)(pm,{size:15}),m(y===`copied`?`drawer.copyRepositoryDone`:`drawer.copyRepository`)]}),y===`error`?(0,B.jsx)(`p`,{className:`personal-copy-feedback is-error`,role:`status`,children:m(`drawer.copyRepositoryError`)}):y===`copied`?(0,B.jsx)(`p`,{className:`personal-copy-feedback`,role:`status`,children:m(`drawer.copyRepositorySuccess`)}):null]}):null,u?(0,B.jsxs)(`section`,{className:`personal-detail-card personal-goal-notification`,children:[(0,B.jsx)(`small`,{children:m(`drawer.larkConnection`)}),(0,B.jsx)(`h3`,{children:m(`drawer.remoteDetailsUnavailable`)}),(0,B.jsx)(`p`,{children:m(`drawer.remoteDetailsDescription`)})]}):(0,B.jsxs)(`section`,{className:`personal-detail-card personal-goal-notification`,children:[(0,B.jsx)(`small`,{children:m(`drawer.larkConnection`)}),t?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`h3`,{children:[t.app_label,(0,B.jsx)(`span`,{className:`personal-connection-status`,children:m(`drawer.connected`)})]}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.group`)}),(0,B.jsx)(`dd`,{children:t.chat_name})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.topic`)}),(0,B.jsxs)(`dd`,{children:[`# `,t.topic_name]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.trigger`)}),(0,B.jsx)(`dd`,{children:t.incoming_mode===`mentions`?m(`lark.someoneMentions`):m(`lark.allMessages`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.replyMode`)}),(0,B.jsx)(`dd`,{children:m(`lark.topicReply`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.autoNotify`)}),(0,B.jsx)(`dd`,{children:e?.humanGateAutoNotifyEnabled?m(`common.on`):m(`common.off`)})]}),e?.lastNotifiedAt?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.lastNotification`)}),(0,B.jsx)(`dd`,{children:e.lastNotifiedAt})]}):null]})]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`h3`,{children:m(`drawer.larkNotConfigured`)}),(0,B.jsx)(`p`,{children:m(`drawer.larkNotConfiguredDescription`)})]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>r.onOpenNotificationSettings?.(f.item.goalId),type:`button`,children:[(0,B.jsx)(tm,{size:16}),m(t?`drawer.larkConfigure`:`drawer.larkConnect`)]})]})]})})(),(0,B.jsxs)(`section`,{className:`personal-detail-card personal-goal-session`,children:[(0,B.jsx)(`small`,{children:m(`drawer.runDetails`)}),_e?.sessionId?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`h3`,{children:Xi(_e.sessionStatus??_e.status,m)}),(0,B.jsx)(`p`,{children:_e.title}),r.onOpenRunSession?(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>void r.onOpenRunSession?.(_e),type:`button`,children:[(0,B.jsx)(zm,{size:16}),m(`drawer.runLatest`)]}):null]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`h3`,{children:m(`drawer.noRun`)}),(0,B.jsx)(`p`,{children:m(`drawer.noRunDescription`)})]})]}),u?null:(0,B.jsxs)(`div`,{className:`personal-drawer-action-grid`,children:[(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>r.onRequestScheduleConfig?.(`heartbeat`,f.item.goalId),type:`button`,children:[(0,B.jsx)(Vm,{size:16}),m(`drawer.setupHeartbeat`)]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>r.onRequestScheduleConfig?.(`monitor`,f.item.goalId),type:`button`,children:[(0,B.jsx)(im,{size:16}),m(`drawer.scheduleAdd`)]})]}),f.item.subagentExecution?(0,B.jsxs)(`section`,{className:`personal-detail-card personal-goal-subagents`,children:[(0,B.jsxs)(`div`,{className:`personal-subagent-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`small`,{children:m(`drawer.subagentLabel`)}),(0,B.jsxs)(`h3`,{children:[(0,B.jsx)(nm,{size:16}),m(`drawer.subagentTitle`)]})]}),(0,B.jsxs)(`button`,{"aria-checked":we.enabled,"aria-label":m(ne&&j===`ready`?`drawer.subagentPending`:we.enabled?`drawer.subagentDisable`:`drawer.subagentEnable`),className:`personal-subagent-switch`,"data-pending":ne&&j===`ready`?`true`:void 0,disabled:u||Te||!!ne||!r.onPreviewGoalSubagentConfiguration,onClick:()=>void Ae(!we.enabled),role:`switch`,type:`button`,children:[(0,B.jsx)(`span`,{}),m(ne&&j===`ready`?`drawer.subagentPending`:we.enabled?`common.on`:`common.off`)]})]}),(0,B.jsx)(`p`,{children:m(`drawer.subagentDescription`)}),ne&&j===`ready`?(0,B.jsxs)(`div`,{className:`personal-subagent-preview`,children:[(0,B.jsx)(`strong`,{children:m(ne.enabled?`drawer.subagentConfirmEnable`:`drawer.subagentConfirmDisable`)}),(0,B.jsx)(`p`,{children:ne.enabled?m(`drawer.subagentPreviewSummary`,{count:ne.maxChildren,domains:ne.allowedDomains.join(` · `)||m(`drawer.subagentDomainsUnrestricted`)}):m(`drawer.subagentDisableSummary`)}),ne.modelConfig===void 0?null:(0,B.jsxs)(`p`,{children:[m(`drawer.subagentModel`),`: `,ne.modelConfig?.model||m(`drawer.subagentModelDefault`),` · `,ne.modelConfig?.reasoning_effort||m(`drawer.subagentModelDefault`)]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`button`,{className:`personal-primary-action`,onClick:()=>void R(),type:`button`,children:m(`common.confirm`)}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:De,type:`button`,children:m(`common.cancel`)})]})]}):null,T?(0,B.jsxs)(`p`,{className:`personal-subagent-feedback is-${j}`,role:`status`,children:[j===`previewing`||j===`applying`?(0,B.jsx)(Um,{className:`personal-spin`,size:13}):null,T]}):null,(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.subagentModel`)}),(0,B.jsx)(`dd`,{children:we.modelConfig?.model||m(`drawer.subagentModelDefault`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.subagentEffort`)}),(0,B.jsx)(`dd`,{children:we.modelConfig?.reasoning_effort||m(`drawer.subagentModelDefault`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.subagentCurrentBoundary`)}),(0,B.jsx)(`dd`,{children:we.allowedDomains.join(` · `)||m(`drawer.subagentDomainsUnrestricted`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.subagentChildLimit`)}),(0,B.jsx)(`dd`,{children:we.maxChildren||0})]})]}),u?(0,B.jsx)(`p`,{className:`personal-subagent-read-only`,children:m(`drawer.subagentRemoteReadOnly`)}):(0,B.jsxs)(`div`,{className:`personal-subagent-fields`,children:[(0,B.jsxs)(`fieldset`,{className:`personal-subagent-domain-picker`,disabled:Te,children:[(0,B.jsx)(`legend`,{children:m(`drawer.subagentDomains`)}),Ee.length>0?(0,B.jsx)(`div`,{className:`personal-subagent-domain-options`,children:Ee.map(e=>{let t=C.includes(e.value);return(0,B.jsxs)(`label`,{className:`personal-subagent-domain-option${t?` is-selected`:``}`,children:[(0,B.jsx)(`input`,{"aria-label":e.value,checked:t,onChange:t=>ke(e.value,t.target.checked),type:`checkbox`}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.value}),(0,B.jsx)(`small`,{children:m(`drawer.subagentDomainTodoCount`,{count:e.matchingTodoCount})})]})]},e.value)})}):(0,B.jsx)(`p`,{className:`personal-subagent-domain-empty`,children:m(`drawer.subagentDomainsEmpty`)}),(0,B.jsx)(`small`,{children:m(`drawer.subagentDomainsHint`)})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:m(`drawer.subagentModel`)}),(0,B.jsx)(`input`,{"aria-label":m(`drawer.subagentModel`),disabled:Te,value:k,placeholder:`gpt-5.6-luna`,onChange:e=>{ee(e.target.value),N(null),M(`idle`),E(null)}})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:m(`drawer.subagentEffort`)}),(0,B.jsxs)(`select`,{"aria-label":m(`drawer.subagentEffort`),disabled:Te,value:te,onChange:e=>{A(e.target.value),N(null),M(`idle`),E(null)},children:[(0,B.jsx)(`option`,{value:``,children:m(`drawer.subagentModelDefault`)}),[`none`,`minimal`,`low`,`medium`,`high`,`xhigh`,`max`,`ultra`].map(e=>(0,B.jsx)(`option`,{value:e,children:e},e))]})]}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,disabled:Te,type:`button`,onClick:()=>{ee(`gpt-5.6-luna`),A(`max`),N(null),M(`idle`),E(null)},children:m(`drawer.subagentLunaPreset`)}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,disabled:Te,type:`button`,onClick:()=>{ee(``),A(``),N(null),M(`idle`),E(null)},children:m(`drawer.subagentClearModel`)}),(0,B.jsx)(`p`,{children:m(`drawer.subagentModelHint`)}),(0,B.jsxs)(`label`,{className:`personal-subagent-limit-field`,children:[(0,B.jsx)(`span`,{children:m(`drawer.subagentMaxChildren`)}),(0,B.jsx)(`select`,{"aria-label":m(`drawer.subagentMaxChildren`),disabled:Te,onChange:e=>{O(Number(e.target.value)),N(null),M(`idle`),E(null)},value:D,children:Db.map(e=>(0,B.jsx)(`option`,{value:e,children:e},e))})]}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,disabled:Te,onClick:()=>void Ae(we.enabled,!0),type:`button`,children:m(`drawer.subagentPreviewBoundary`)})]})]}):null]}):null,f.kind===`run`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`div`,{"aria-label":m(`drawer.runView`),className:`personal-run-drawer-tabs`,role:`tablist`,children:[(0,B.jsx)(`button`,{"aria-selected":x===`record`,onClick:()=>S(`record`),role:`tab`,type:`button`,children:m(`drawer.executionRecordAndResult`)}),(0,B.jsx)(`button`,{"aria-selected":x===`details`,onClick:()=>S(`details`),role:`tab`,type:`button`,children:m(`drawer.detailsAndActions`)})]}),x===`record`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-detail-card personal-session-summary`,children:[(0,B.jsxs)(`small`,{children:[f.item.agentLabel,` · `,Xi(f.item.sessionStatus??f.item.status,m)]}),(0,B.jsx)(`h3`,{children:f.item.title}),(0,B.jsx)(`p`,{children:f.item.latestActivity}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Goal`}),(0,B.jsx)(`dd`,{children:f.item.goalTitle})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.progress`)}),(0,B.jsxs)(`dd`,{children:[f.item.completedSteps,`/`,f.item.totalSteps]})]})]})]}),(0,B.jsxs)(`section`,{"aria-label":m(`drawer.executionRecord`),className:`personal-session-message-record`,children:[(0,B.jsx)(`h3`,{children:m(`drawer.executionRecord`)}),f.item.sessionMessages?.length?(0,B.jsx)(`ol`,{children:f.item.sessionMessages.map(e=>(0,B.jsxs)(`li`,{className:`is-${e.role}`,children:[(0,B.jsx)(`i`,{}),(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:e.role===`user`?m(`drawer.runRoleUser`):e.role===`assistant`?m(`drawer.runRoleAssistant`):m(`drawer.runRoleSystem`)}),e.createdAt?(0,B.jsx)(`time`,{children:new Date(e.createdAt).toLocaleTimeString(p,{hour:`2-digit`,minute:`2-digit`,hour12:!1})}):null]}),(0,B.jsx)(`p`,{children:e.text})]})]},e.messageId))}):(0,B.jsx)(`p`,{className:`personal-session-empty`,children:ve?m(`drawer.runRecordProjected`,{completed:f.item.completedSteps,outputs:f.item.outputs?.length?m(`drawer.runRecordProjectedOutputs`,{count:f.item.outputs.length}):``,total:f.item.totalSteps}):m(`drawer.runRecordEmpty`)}),f.item.status===`running`?(0,B.jsxs)(`div`,{className:`personal-session-active-step`,children:[(0,B.jsx)(`i`,{}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:m(`drawer.analysis`)}),(0,B.jsx)(`small`,{children:m(`drawer.agentWorking`)})]})]}):null]}),f.item.outputs?.length?(0,B.jsxs)(`section`,{className:`personal-execution-history`,"aria-labelledby":`personal-run-outputs-title`,children:[(0,B.jsx)(`h3`,{id:`personal-run-outputs-title`,children:m(`drawer.outputs`)}),(0,B.jsx)(`ol`,{children:f.item.outputs.map(e=>(0,B.jsx)(`li`,{children:(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.title}),(0,B.jsx)(`small`,{children:e.createdAt??e.kind??m(`files.emptySummary`)})]})},e.outputId))})]}):null]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-detail-card`,children:[(0,B.jsxs)(`small`,{children:[f.item.agentLabel,` · `,Xi(f.item.status,m)]}),(0,B.jsx)(`h3`,{children:f.item.title}),(0,B.jsx)(`p`,{children:f.item.latestActivity}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Goal`}),(0,B.jsx)(`dd`,{children:f.item.goalTitle})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.progress`)}),(0,B.jsxs)(`dd`,{children:[f.item.completedSteps,`/`,f.item.totalSteps]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.sessionStatus`)}),(0,B.jsx)(`dd`,{children:Xi(f.item.sessionStatus??f.item.status,m)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.sessionRecoverable`)}),(0,B.jsx)(`dd`,{children:f.item.resumable===!1?m(`drawer.resumeNo`):m(`drawer.resumeYes`)})]})]})]}),f.item.sessionStatus===`resume_failed`&&!u?(0,B.jsxs)(`section`,{className:`personal-recovery-panel`,"aria-label":m(`drawer.recoveryFailed`),children:[(0,B.jsx)(`strong`,{children:m(`drawer.recoveryFailed`)}),(0,B.jsx)(`p`,{children:m(`drawer.recoveryDescription`)}),(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>void r.onRetryResumeRun?.(f.item),type:`button`,children:[(0,B.jsx)(Um,{size:16}),m(`drawer.recoveryRetry`)]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onStartNewRunSession?.(f.item),type:`button`,children:[(0,B.jsx)(zm,{size:16}),m(`drawer.recoveryNewSession`)]})]}):null,u?null:(0,B.jsxs)(`section`,{className:`personal-correction-panel`,children:[(0,B.jsx)(`header`,{children:(0,B.jsxs)(`span`,{children:[(0,B.jsx)(nm,{size:16}),m(`drawer.correctionLabel`,{agent:f.item.agentLabel})]})}),(0,B.jsx)(`p`,{children:m(`drawer.correctionDescription`)}),(0,B.jsxs)(`div`,{className:`personal-correction-composer`,children:[(0,B.jsx)(`textarea`,{"aria-label":m(`drawer.correctionTextarea`,{agent:f.item.agentLabel,goal:f.item.goalTitle,run:f.item.title}),onChange:e=>g(e.target.value),placeholder:m(`drawer.correctionPlaceholder`),rows:3,value:h}),(0,B.jsx)(`button`,{"aria-label":m(`drawer.correctionSend`),disabled:!h.trim(),onClick:()=>void xe(),type:`button`,children:(0,B.jsx)(Km,{size:16})})]})]}),u?null:(0,B.jsxs)(`details`,{className:`personal-compact-menu personal-run-more`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(gm,{size:17}),m(`drawer.moreRunActions`)]}),(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`button`,{disabled:!f.item.canInterrupt,onClick:()=>void r.onInterruptRun?.(f.item),type:`button`,children:[(0,B.jsx)(Rm,{size:16}),m(`drawer.runInterrupt`)]}),(0,B.jsxs)(`button`,{disabled:f.item.resumable===!1,onClick:()=>void r.onRetryResumeRun?.(f.item),type:`button`,children:[(0,B.jsx)(Um,{size:16}),m(`drawer.recoveryRetry`)]}),(0,B.jsxs)(`button`,{onClick:()=>void r.onStartNewRunSession?.(f.item),type:`button`,children:[(0,B.jsx)(zm,{size:16}),m(`drawer.runNewSession`)]}),(0,B.jsxs)(`button`,{onClick:()=>void r.onCloseRunSession?.(f.item),type:`button`,children:[(0,B.jsx)($m,{size:16}),m(`drawer.runCloseSession`)]})]})]})]})]}):null,f.kind===`output`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-detail-card`,children:[(0,B.jsx)(`small`,{children:f.item.kind??`output`}),(0,B.jsx)(`h3`,{children:f.item.title}),(0,B.jsx)(`p`,{children:f.item.summary??m(`drawer.outputRecorded`)}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Goal`}),(0,B.jsx)(`dd`,{children:f.item.goalTitle??f.item.goalId})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.outputTodo`)}),(0,B.jsx)(`dd`,{children:f.item.todoId??m(`drawer.notLinked`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.outputRun`)}),(0,B.jsx)(`dd`,{children:f.item.runId??m(`drawer.notLinked`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Agent`}),(0,B.jsx)(`dd`,{children:f.item.agentLabel??f.item.agentId??`LoopX`})]})]})]}),f.item.report?(0,B.jsxs)(`section`,{className:`personal-report-detail`,"data-testid":`personal-periodic-report-detail`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsxs)(`span`,{children:[(0,B.jsxs)(`strong`,{children:[`+`,f.item.report.addedCount]}),m(`files.reportAdded`)]}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:f.item.report.changedCount}),m(`files.reportChanged`)]})]}),(0,B.jsxs)(`p`,{children:[f.item.report.periodStartAt,` → `,f.item.report.periodEndAt]}),(0,B.jsx)(`ol`,{children:f.item.report.items.map(e=>(0,B.jsxs)(`li`,{"data-change-kind":e.changeKind,children:[(0,B.jsxs)(`small`,{children:[e.changeKind,` · `,e.status]}),(0,B.jsx)(`strong`,{children:e.title}),(0,B.jsx)(`p`,{children:e.summary})]},e.sourceRef))}),(0,B.jsxs)(`footer`,{children:[(0,B.jsxs)(`span`,{children:[m(`files.reportPublication`),`: `,f.item.report.publicationId]}),(0,B.jsxs)(`span`,{children:[m(`files.reportGeneration`),`: `,f.item.report.generationId]})]})]}):null,f.item.safePreview?(0,B.jsx)(`pre`,{"aria-label":m(`drawer.outputSafePreview`),className:`personal-safe-preview`,children:f.item.safePreview}):(0,B.jsx)(`p`,{className:`personal-preview-unavailable`,children:m(`drawer.previewUnavailable`)}),(0,B.jsxs)(`div`,{className:`personal-drawer-action-grid`,children:[(0,B.jsxs)(`button`,{className:`personal-primary-action`,disabled:!r.onOpenOutput,onClick:()=>{r.onOpenOutput?.(f.item),c()},type:`button`,children:[(0,B.jsx)(_m,{size:16}),m(`files.openConversation`)]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,disabled:!r.onExportOutput,onClick:()=>void r.onExportOutput?.(f.item),type:`button`,children:[(0,B.jsx)(hm,{size:16}),m(`files.exportSummary`)]})]})]}):null,f.kind===`proposal`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-proposal-card`,children:[(0,B.jsxs)(`small`,{children:[f.item.actionKind,` · `,f.item.status]}),(0,B.jsx)(`h3`,{children:f.item.title}),(0,B.jsx)(`p`,{children:f.item.impact}),f.item.reviewPlan?(0,B.jsx)(`p`,{className:`personal-proposal-explainer`,"data-action-review":f.item.reviewPlan.interaction,children:f.item.actionKind===`operation.execute`&&f.item.status===`gated`?m(`actionReview.operation_group_confirmation`):f.item.actionKind===`operation.execute`&&f.item.reviewPlan.reason===`readback_unverified`?m(`actionReview.operation_result_delivery_pending`):m(`actionReview.${f.item.reviewPlan.reason}`)}):null,f.item.status===`ready`?(0,B.jsx)(`p`,{className:`personal-proposal-explainer`,children:m(`drawer.proposalExplainer`)}):null,(0,B.jsx)(`dl`,{children:f.item.fields.map(e=>(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:e.label}),(0,B.jsx)(`dd`,{children:e.value})]},e.key))})]}),f.item.status===`applied`?(0,B.jsxs)(`p`,{className:`personal-proposal-state ${f.item.actionKind===`operation.execute`&&f.item.reviewPlan?.reason===`readback_unverified`?`is-gated`:`is-applied`}`,children:[(0,B.jsx)(am,{size:16}),f.item.actionKind===`operation.execute`?f.item.primaryLabel:f.item.actionKind===`team.plan`?Wy(f.item.teamPlanOutcome??null,m):m(`drawer.proposalApplied`)]}):null,f.item.status===`applied`&&f.item.actionKind===`team.plan`&&(f.item.teamPlanGapLanes?.length??0)>0?(0,B.jsx)(`div`,{className:`personal-proposal-state is-gated`,children:(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:m(`drawer.proposalAppliedUnstaffed`,{count:f.item.teamPlanGapLanes.length})}),(0,B.jsx)(`ul`,{className:`personal-proposal-explainer`,children:f.item.teamPlanGapLanes.map(e=>(0,B.jsx)(`li`,{children:Hy(e,m)},e.laneId))})]})}):null,f.item.status===`applied`&&f.item.actionKind!==`operation.execute`&&f.item.goalId?(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>{let e=f.item.goalId;c(),r.onOpenGoal?.(e)},type:`button`,children:[(0,B.jsx)(_m,{size:16}),f.item.actionKind===`goal.create`?m(`drawer.proposalEnterGoal`):m(`drawer.proposalViewGoal`)]}):null,f.item.status===`stale`?(0,B.jsx)(`p`,{className:`personal-proposal-state is-stale`,children:m(`drawer.proposalStale`)}):null,f.item.status===`error`?(0,B.jsxs)(`div`,{className:`personal-proposal-state is-error`,children:[(0,B.jsx)(`span`,{children:f.item.reviewPlan?.reason===`readback_unverified`?m(`actionReview.readback_unverified`):m(`drawer.proposalApplyFailed`)}),f.item.errorMessage?(0,B.jsx)(`small`,{children:f.item.errorMessage}):null,(0,B.jsx)(`small`,{children:m(`drawer.proposalApplyFailedHint`)})]}):null,f.item.status===`rejected`?(0,B.jsx)(`p`,{className:`personal-proposal-state is-error`,children:m(`drawer.proposalRejected`)}):null,f.item.status===`deferred`?(0,B.jsx)(`p`,{className:`personal-proposal-state is-gated`,children:m(`drawer.proposalDeferred`)}):null,f.item.status===`gated`?(0,B.jsxs)(`div`,{className:`personal-proposal-state is-gated`,children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:f.item.actionKind===`operation.execute`?f.item.primaryLabel:m(`drawer.gateRequiresHost`)}),f.item.actionKind===`operation.execute`?f.item.impact:m(`drawer.gateRequiresHostDescription`)]}),f.item.gate?.nextAction?(0,B.jsx)(`small`,{children:f.item.gate.nextAction}):null]}):null,f.item.status===`gated`&&f.item.actionKind===`gate.resolve`?(()=>{let e=e=>f.item.fields.find(t=>t.key===e)?.value,t=e(`goal_id`),n=e(`todo_id`);return!t||!n?null:(0,B.jsxs)(`section`,{className:`personal-detail-card personal-gate-cli-hint`,children:[(0,B.jsx)(`small`,{children:m(`drawer.gateApproveHint`)}),(0,B.jsxs)(`code`,{children:[`loopx todo complete --goal-id `,t,` --todo-id `,n,` --decision-outcome approve`]}),(0,B.jsx)(`small`,{children:m(`drawer.gateRejectHint`)})]})})():null,!u&&f.item.workspaceCandidates?.length?(0,B.jsx)(`div`,{className:`personal-workspace-candidates`,"aria-label":m(`drawer.workspaceCandidates`),children:f.item.workspaceCandidates.map(e=>(0,B.jsxs)(`button`,{onClick:()=>void r.onSelectWorkspaceCandidate?.(f.item,e.workspaceRef),type:`button`,children:[(0,B.jsx)(`strong`,{children:e.label}),(0,B.jsx)(`small`,{children:e.workspaceRef})]},e.workspaceRef))}):null,!u&&f.item.actionKind!==`operation.execute`&&f.item.status===`error`?(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>void r.onTransitionProposal?.(f.item,`regenerate`),type:`button`,children:[(0,B.jsx)(Um,{size:17}),m(`drawer.proposalRegenerate`)]}):!u&&f.item.actionKind!==`operation.execute`&&f.item.status!==`gated`?(0,B.jsxs)(`button`,{className:`personal-primary-action`,disabled:![`ready`,`deferred`].includes(f.item.status)||f.item.reviewPlan?.canApply===!1,onClick:()=>void r.onApplyProposal?.(f.item),type:`button`,children:[(0,B.jsx)(am,{size:17}),f.item.status===`applying`?m(`drawer.applying`):f.item.primaryLabel??m(`drawer.apply`)]}):null,!u&&f.item.actionKind!==`operation.execute`&&([`stale`,`gated`,`rejected`].includes(f.item.status)||f.item.status===`ready`&&f.item.reviewPlan?.canApply===!1)?(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onTransitionProposal?.(f.item,`regenerate`),type:`button`,children:[(0,B.jsx)(Um,{size:16}),m(`drawer.proposalRecheck`)]}):null,!u&&f.item.actionKind!==`operation.execute`&&[`ready`,`gated`].includes(f.item.status)?(0,B.jsxs)(`div`,{className:`personal-drawer-action-grid`,children:[(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onTransitionProposal?.(f.item,`defer`),type:`button`,children:m(`drawer.proposalDefer`)}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onTransitionProposal?.(f.item,`reject`),type:`button`,children:m(`drawer.decisionReject`)})]}):null,[`applied`,`applying`].includes(f.item.status)?null:(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:c,type:`button`,children:m(`drawer.proposalClose`)})]}):null,f.kind===`schedule`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-detail-card`,children:[(0,B.jsxs)(`small`,{children:[f.item.scheduleKind===`heartbeat`?`Goal Heartbeat`:`continuous_monitor`,` · `,f.item.status??`active`]}),(0,B.jsx)(`h3`,{children:f.item.label}),(0,B.jsx)(`p`,{children:f.item.target??f.item.schedule??m(`drawer.scheduleDefaultTarget`)}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.scheduleTimezone`)}),(0,B.jsx)(`dd`,{children:f.item.timezone??m(`drawer.scheduleLocalTimezone`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.scheduleNext`)}),(0,B.jsx)(`dd`,{children:f.item.nextRunAt??m(`drawer.schedulePending`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.scheduleLast`)}),(0,B.jsx)(`dd`,{children:f.item.previousRunAt??m(`drawer.scheduleNeverRun`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.scheduleNotification`)}),(0,B.jsx)(`dd`,{children:f.item.notificationRule??m(`drawer.scheduleDefaultNotification`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.scheduleStopCondition`)}),(0,B.jsx)(`dd`,{children:f.item.stopCondition??m(`drawer.scheduleDefaultStop`)})]})]})]}),!u&&f.item.scheduleKind===`monitor`?(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>void r.onUpdateSchedule?.(f.item,`run_now`),type:`button`,children:[(0,B.jsx)(zm,{size:16}),m(`drawer.scheduleRunNow`)]}):null,u?null:(0,B.jsxs)(`div`,{className:`personal-drawer-action-grid`,children:[(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onUpdateSchedule?.(f.item,f.item.status===`paused`?`resume`:`pause`),type:`button`,children:[f.item.status===`paused`?(0,B.jsx)(zm,{size:16}):(0,B.jsx)(Rm,{size:16}),f.item.status===`paused`?m(`drawer.scheduleResume`):m(`drawer.schedulePause`)]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onUpdateSchedule?.(f.item,`edit`),type:`button`,children:[(0,B.jsx)(im,{size:16}),m(`drawer.scheduleEdit`)]})]}),u?null:(0,B.jsxs)(`button`,{className:`personal-danger-action`,onClick:()=>void r.onUpdateSchedule?.(f.item,`stop`),type:`button`,children:[(0,B.jsx)($m,{size:16}),m(`drawer.scheduleStop`,{kind:f.item.scheduleKind===`heartbeat`?` Heartbeat`:m(`drawer.titleSchedule`)})]}),(0,B.jsxs)(`section`,{className:`personal-execution-history`,"aria-labelledby":`personal-execution-history-title`,children:[(0,B.jsx)(`h3`,{id:`personal-execution-history-title`,children:m(`drawer.executionHistory`)}),f.item.executionHistory?.length?(0,B.jsx)(`ol`,{children:f.item.executionHistory.map((e,t)=>(0,B.jsxs)(`li`,{children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.label}),(0,B.jsx)(`small`,{children:e.timestamp})]}),(0,B.jsx)(`em`,{className:`is-${e.status}`,children:e.status})]},`${e.timestamp}:${e.runId??t}`))}):(0,B.jsx)(`p`,{children:m(`drawer.noExecutionHistory`)})]})]}):null,f.kind===`run`||f.kind===`proposal`||f.kind===`schedule`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`button`,{"aria-expanded":_,className:`personal-diagnostics-trigger`,onClick:()=>v(e=>!e),type:`button`,children:[(0,B.jsx)(`span`,{children:m(`drawer.advancedDiagnostics`)}),(0,B.jsx)(om,{className:_?`is-open`:``,size:16})]}),_?(0,B.jsxs)(`div`,{className:`personal-diagnostics`,children:[(0,B.jsxs)(`code`,{children:[`goal_id: `,he]}),(0,B.jsxs)(`code`,{children:[`kind: `,f.kind]}),f.kind===`run`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`code`,{children:[`session_id: `,f.item.sessionId??m(`drawer.notLinked`)]}),(0,B.jsxs)(`code`,{children:[`turn_id: `,f.item.turnId??m(`common.none`)]}),(0,B.jsxs)(`code`,{children:[`adapter: `,f.item.agentId]}),(0,B.jsxs)(`code`,{children:[`status: `,f.item.sessionStatus??f.item.status]})]}):f.kind===`proposal`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`code`,{children:[`action: `,f.item.actionKind]}),(0,B.jsxs)(`code`,{children:[`status: `,f.item.status]})]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`code`,{children:[`schedule_id: `,f.item.scheduleId]}),(0,B.jsxs)(`code`,{children:[`status: `,f.item.status??`active`]})]})]}):null]}):null]})]})}var Mb=[`checking`,`connecting`,`downloading`,`installing_app`,`installing_runtime`],Nb={desktop_status_unavailable:[`无法读取 App 更新状态。请重启 App 后再试;若仍失败,请重新安装最新 App。`,`Cannot read the App update status. Restart the App; if this persists, reinstall the latest App.`],update_feed_unavailable:[`此通道的更新源尚未就绪或暂时不可用。可稍后重新检查,当前版本仍可继续使用。`,`This channel's update feed is not ready or temporarily unavailable. Check again later; you can keep using this version.`],update_feed_invalid:[`更新源格式异常。请稍后重新检查。`,`The update feed is invalid. Check again later.`],update_platform_unavailable:[`此通道尚无适用于本机的更新包。`,`This channel has no update package for this platform.`],update_check_timeout:[`检查更新超时。请稍后重试。`,`The update check timed out. Try again later.`],update_network_failed:[`无法连接更新服务器。请检查网络后重试。`,`Cannot reach the update server. Check your connection and retry.`],update_download_or_signature_failed:[`更新包下载或签名校验失败,尚未安装。请重新检查更新。`,`Download or signature verification failed; the update was not installed. Check for updates again.`]};function Pb(e,t=`update_failed`){return{phase:`error`,details:{code:typeof e==`string`&&Object.hasOwn(Nb,e)?e:t}}}function Fb(){let{locale:e}=Ji(),t=e===`zh-CN`,[n,r]=(0,z.useState)(!1),i=(0,z.useRef)(null),[a,o]=(0,z.useState)(`stable`),[s,c]=(0,z.useState)({phase:`idle`}),[l,u]=(0,z.useState)(``),[d,f]=(0,z.useState)(!1),p=(0,z.useRef)(!1),m=window.__TAURI__?.core.invoke,h=Mb.includes(s.phase);(0,z.useEffect)(()=>{let e=i.current;if(!e)return;let t=()=>r(e.matches(`:popover-open`));return e.addEventListener(`toggle`,t),()=>e.removeEventListener(`toggle`,t)},[]),(0,z.useEffect)(()=>{if(!m)return;let e=!0;return m(`desktop_update_status`).then(t=>{if(!e)return;u(t.app_version),f(t.rollback_available===!0),t.state?.phase&&c(t.state);let n=t.state?.details?.channel??(t.app_version.includes(`-main.`)?`main`:`stable`);o(n),t.state?.phase||m(`desktop_update`,{action:`check`,channel:n}).then(t=>{e&&c(t)}).catch(t=>{e&&c(Pb(t))})}).catch(()=>{e&&c(Pb(null,`desktop_status_unavailable`))}),()=>{e=!1}},[m]),(0,z.useEffect)(()=>{if(!m||!h)return;let e=window.setInterval(()=>{m(`desktop_update_status`).then(e=>{e.state?.phase&&c(e.state)}).catch(()=>{})},1e3);return()=>window.clearInterval(e)},[m,h]);async function g(e){if(!(!m||p.current)){p.current=!0,c({phase:e===`check`?`checking`:e===`repair`?`installing_runtime`:`downloading`});try{if(!l){let e=await m(`desktop_update_status`);u(e.app_version),f(e.rollback_available===!0)}c(await m(`desktop_update`,{action:e,channel:a}))}catch(e){c(Pb(e,l?`update_failed`:`desktop_status_unavailable`))}finally{p.current=!1}}}let _={service_error:t?`运行时已安装,但服务尚未连接。可重试更新、修复或恢复上版。`:`Runtime installed, but services are unavailable. Retry updates, repair, or restore the previous version.`,runtime_pairing_required:t?`本机 CLI 运行时与 App 自带运行时不一致。回到 App 启动界面可「更新 App 与运行时」或「回退 CLI」。`:`This host's CLI runtime and the App's bundled runtime differ. On the App boot screen, update both or use the App's runtime.`,idle:t?`App 会检查可用更新,不会自动安装。`:`Updates are checked automatically, never installed without confirmation.`,runtime_required:t?`请完成匹配组件安装,或检查 App 更新。`:`Install matching components or check for an App update.`,connecting:t?`正在连接更新后的服务…`:`Connecting to updated services…`,checking:t?`正在检查更新…`:`Checking for updates…`,available:t?`新版本已就绪,一次更新 App 与匹配的运行时。`:`Update the App and its matching runtime together.`,up_to_date:t?`当前通道暂无更新。`:`No newer update on this channel.`,downloading:t?`正在下载并校验签名…`:`Downloading and verifying signature…`,installing_app:t?`正在安装 App,请保持窗口打开。`:`Installing the App. Keep this window open.`,installing_runtime:t?`正在安装匹配的运行时,请稍候…`:`Installing the matching runtime…`,restart_required:t?`重启后将自动完成运行时安装与服务连接。`:`Restart to finish runtime installation and reconnect services.`,ready:t?`更新完成,服务已就绪。`:`Update completed; services are ready.`,error:Nb[s.details?.code??``]?.[+!t]??(t?`更新未完成。请重试;启动失败可尝试修复当前版本。`:`Update incomplete. Retry; repair this version if startup fails.`)},v=h?t?`正在更新…`:`Updating…`:s.phase===`available`?t?`有可用更新`:`Update available`:s.phase===`restart_required`?t?`重启完成更新`:`Restart to finish`:s.phase===`error`?t?`更新需重试`:`Retry update`:t?`更新 LoopX`:`Update LoopX`;return(0,B.jsxs)(`div`,{className:`personal-desktop-update`,children:[(0,B.jsxs)(`button`,{className:`personal-update-trigger`,type:`button`,"aria-expanded":n,"aria-controls":`desktop-update-panel`,onClick:e=>{i.current?.style.setProperty(`bottom`,`${window.innerHeight-e.currentTarget.getBoundingClientRect().top+8}px`),i.current?.togglePopover()},children:[(0,B.jsx)(hm,{size:16,"aria-hidden":`true`}),(0,B.jsx)(`span`,{children:v}),(0,B.jsx)(cm,{size:14,"aria-hidden":`true`})]}),(0,B.jsxs)(`section`,{ref:i,popover:`auto`,id:`desktop-update-panel`,className:`personal-update-panel`,"aria-label":t?`LoopX 更新`:`LoopX updates`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:t?`LoopX 更新`:`LoopX updates`}),(0,B.jsx)(`button`,{type:`button`,"aria-label":t?`关闭更新面板`:`Close updates`,onClick:()=>i.current?.hidePopover(),children:(0,B.jsx)(ah,{size:16,"aria-hidden":`true`})})]}),(0,B.jsxs)(`small`,{children:[l,` · `,a===`main`?t?`main 预览版`:`main preview`:t?`稳定版`:`Stable`]}),s.details?.version?(0,B.jsxs)(`p`,{children:[t?`目标版本:`:`Target: `,s.details.version]}):null,(0,B.jsxs)(`p`,{role:`status`,"aria-live":`polite`,children:[h?(0,B.jsx)(Hm,{className:`is-spinning`,size:14,"aria-hidden":`true`}):null,_[s.phase]]}),s.phase===`downloading`&&s.details?.total?(0,B.jsx)(`progress`,{"aria-label":t?`下载进度`:`Download progress`,max:s.details.total,value:s.details.received??0}):null,m?(0,B.jsx)(`div`,{className:`personal-update-actions`,children:s.phase===`restart_required`?(0,B.jsx)(`button`,{type:`button`,onClick:()=>void g(`restart`),children:t?`重启完成更新`:`Restart to finish`}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`button`,{type:`button`,disabled:h,onClick:()=>void g(`check`),children:t?`检查更新`:`Check for updates`}),s.phase===`available`?(0,B.jsx)(`button`,{type:`button`,onClick:()=>void g(`apply`),children:t?`更新并准备重启`:`Install update`}):null]})}):(0,B.jsx)(`p`,{children:t?`请在 LoopX App 中更新;浏览器自身无需安装包。`:`Update from the LoopX App; the browser needs no installer.`}),(0,B.jsxs)(`details`,{children:[(0,B.jsx)(`summary`,{children:t?`高级选项`:`Advanced options`}),(0,B.jsxs)(`label`,{children:[t?`更新通道`:`Update channel`,(0,B.jsxs)(`select`,{disabled:h||s.phase===`restart_required`,value:a,onChange:e=>{o(e.target.value),c({phase:`idle`})},children:[(0,B.jsx)(`option`,{value:`stable`,children:t?`稳定版(推荐)`:`Stable (recommended)`}),(0,B.jsx)(`option`,{value:`main`,children:t?`main 预览版`:`main preview`})]})]}),(0,B.jsx)(`p`,{children:t?`App 与匹配的 CLI 一起更新,服务可能短暂断开。不删除 Goal 数据。`:`Updates the App and matching CLI. Services may briefly disconnect. Goal data is not deleted.`}),m?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{children:t?`启动失败时,可重装当前 App 随附的运行时。`:`If startup fails, reinstall this App's bundled runtime.`}),(0,B.jsx)(`button`,{disabled:h||s.phase===`restart_required`,type:`button`,onClick:()=>void g(`repair`),children:t?`修复当前版本`:`Repair this version`})]}):null,m&&d?(0,B.jsxs)(`details`,{children:[(0,B.jsx)(`summary`,{children:t?`恢复上个版本`:`Restore previous version`}),(0,B.jsx)(`p`,{children:t?`将恢复已保留的 App 和它的运行时,需要重启。`:`Restore the retained App and its runtime, then restart.`}),(0,B.jsx)(`button`,{disabled:h,type:`button`,onClick:()=>void g(`rollback`),children:t?`确认恢复上版`:`Restore previous version`})]}):null]})]})]})}var Ib=e=>`loopx-sidebar-goal-order-v1:${encodeURIComponent(e)}`;function Lb(e){try{let t=JSON.parse(e??`null`);return Array.isArray(t)&&t.every(e=>typeof e==`string`)?[...new Set(t)]:[]}catch{return[]}}function Rb(e,t){let n=new Map(t.map((e,t)=>[e,t]));return[...e].sort((e,t)=>(n.get(e.goalId)??1/0)-(n.get(t.goalId)??1/0))}function zb(e,t,n,r,i){if(n===r||!t.includes(n)||!t.includes(r))return e;let a=[...new Set([...e,...t])].filter(e=>e!==n);return a.splice(a.indexOf(r)+Number(i),0,n),a}function Bb(e,t){let n=Ib(t),[r,i]=(0,z.useState)(()=>{try{return Lb(localStorage.getItem(n))}catch{return[]}}),[a,o]=(0,z.useState)(!1),[s,c]=(0,z.useState)(null),[l,u]=(0,z.useState)(null),d=(0,z.useRef)(null),f=(0,z.useRef)(!1),p=Rb(e,r),m=p.map(e=>e.goalId);function h(t,a,s){let l=zb(r,m,t,a,s);if(l===r)return;i(l);let u=Rb(e,l),d=u.findIndex(e=>e.goalId===t),f=u[d];f&&c({title:f.title,position:d+1});try{localStorage.setItem(n,JSON.stringify(l)),o(!1)}catch{o(!0)}}function g(){d.current=null,u(null)}return{sorted:p,target:l,saveFailed:a,lastMoved:s,move:h,moveBy(e,t){let n=p[m.indexOf(e)+t];n&&h(e,n.goalId,t===1)},pointerProps:e=>({onPointerDown(t){f.current=!1,t.pointerType===`mouse`&&t.button===0&&(d.current={id:e,x:t.clientX,y:t.clientY,dragging:!1},t.currentTarget.setPointerCapture(t.pointerId))},onPointerMove(e){let t=d.current;if(!t||!t.dragging&&Math.hypot(e.clientX-t.x,e.clientY-t.y)<6)return;t.dragging=!0,f.current=!0;let n=document.elementFromPoint(e.clientX,e.clientY)?.closest(`[data-reorder-goal]`),r=e.currentTarget.closest(`.personal-goal-list`),i=n?.dataset.reorderGoal;if(!n||!i||!r?.contains(n)||i===t.id){u(null);return}let a=n.getBoundingClientRect();u({id:i,after:e.clientY>a.top+a.height/2})},onPointerUp(){d.current?.dragging&&l&&h(d.current.id,l.id,l.after),g()},onPointerCancel:g,onLostPointerCapture:g,onKeyDown(e){e.key===`Escape`&&g()},onClickCapture(e){f.current&&=(e.preventDefault(),e.stopPropagation(),!1)}})}}var Vb=`/ssh-hosts`,Hb=/^[A-Za-z0-9][A-Za-z0-9._-]{0,254}$/;function Ub(e){return typeof e==`string`&&Hb.test(e.trim())}function Wb(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`SSH Host 列表响应无效。`);let t=e;if(t.ok!==!0||t.schema_version!==`ssh_host_catalog_v0`||!Array.isArray(t.hosts))throw Error(`SSH Host 列表协议不兼容,请更新本机 LoopX 服务。`);let n=new Set;return{hosts:t.hosts.flatMap(e=>{if(!e||typeof e!=`object`||Array.isArray(e))return[];let t=String(e.alias??``).trim();return!Ub(t)||n.has(t)?[]:(n.add(t),[{alias:t}])}),schemaVersion:`ssh_host_catalog_v0`}}async function Gb(e=fetch,t=Vb){let n=await e(t,{cache:`no-store`});if(!n.ok)throw Error(`无法读取本机 SSH Host(HTTP ${n.status})。`);return Wb(await n.json())}function Kb(e,t){let n=e.trim();if(!Ub(n))return{error:`请选择有效的 SSH Host。`};let r=Number(t);return!Number.isInteger(r)||r<1024||r>65535?{error:`本地端口必须是 1024–65535 之间的整数。`}:{command:`ssh -N -L ${r}:127.0.0.1:8766 ${n}`,hostAlias:n,label:n,statusUrl:`http://127.0.0.1:${r}/status.json`}}var qb=`/api/ssh-source/ensure`,Jb=`/api/ssh-source/goal-lifecycle`;async function Yb(e,t){let n=await fetch(qb,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({host_alias:e,local_port:Number(t)})}),r=await n.json().catch(()=>null);if(!n.ok)throw Error(r?.error??`无法建立 SSH 隧道来源。`);if(!r?.ok)throw Error(`无法建立 SSH 隧道来源。`);return r}async function Xb(e,t,n,r,i=fetch){let a=await i(Jb,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({goal_id:t,host_alias:e,operation:n,reason:r})}),o=await a.json().catch(()=>null);if(!a.ok)throw Error(o?.error??`无法更新远端 Goal 生命周期。`);if(!o?.ok||o.schema_version!==`loopx_remote_goal_lifecycle_v1`||o.goal_id!==t||o.host_alias!==e||o.operation!==n||o.activation_state!==(n===`stop`?`stopped`:`active`)||o.projection_verified!==!0)throw Error(`远端 Goal 生命周期回读未验证。`);return o}function Zb({activeSource:e,connectionState:t,errorMessage:n,onAdd:r,onConfiguredHostsLoaded:i,onRemove:a,onSelect:o,sources:s}){let{t:c}=Ji(),[l,u]=(0,z.useState)(!1),[d,f]=(0,z.useState)(null),[p,m]=(0,z.useState)(`configured`),[h,g]=(0,z.useState)([]),[_,v]=(0,z.useState)(null),[y,b]=(0,z.useState)(!1),[x,S]=(0,z.useState)(!1),[C,w]=(0,z.useState)(``),[T,E]=(0,z.useState)(``),[D,O]=(0,z.useState)(`8876`),[k,ee]=(0,z.useState)(``),te=`configured:`,A=[...s.map(e=>({label:e.label,value:e.id})),...h.filter(e=>!s.some(t=>t.label===e.alias)).map(e=>({group:c(`source.configuredGroup`,{count:h.length}),label:e.alias,value:`${te}${e.alias}`}))],j=(0,z.useMemo)(()=>h.some(e=>e.alias===C)?Kb(C,D):{error:c(`source.selectHost`)},[h,C,D,c]);(0,z.useEffect)(()=>{M()},[]);async function M(){b(!0),v(null);try{let e=await Gb();g(e.hosts),i?.(e.hosts.map(e=>e.alias)),w(t=>t||e.hosts[0]?.alias||``),e.hosts.length||v(c(`source.hostEmpty`))}catch(e){v(e instanceof Error?e.message:c(`source.hostLoadError`))}finally{b(!1)}}function ne(){u(!0),m(`configured`),f(null),M()}function N(){u(!1),m(`configured`),v(null),S(!1),w(``),f(null),E(``),O(`8876`),ee(``)}function P(){let e=r({label:T,statusUrl:k});if(e.error){f(e.error);return}N()}function re(){if(`error`in j){f(j.error??c(`source.invalid`));return}let e=r({ensureTunnel:!0,hostAlias:j.hostAlias,label:j.label,statusUrl:j.statusUrl});if(e.error){f(e.error);return}N()}function ie(e){let t=new Set;for(let e of s)try{t.add(new URL(e.statusUrl).port)}catch{}let n=`8877`;for(let e=8877;e<9077;e+=1)if(!t.has(String(e))){n=String(e);break}let i=Kb(e,n);if(`error`in i){f(i.error??c(`source.invalid`));return}let a=r({ensureTunnel:!0,hostAlias:i.hostAlias,label:i.label,statusUrl:i.statusUrl});a.error?f(a.error):f(null),O(n)}async function ae(){if(`error`in j){f(j.error??c(`source.invalid`));return}try{await navigator.clipboard.writeText(j.command),S(!0),f(null)}catch{f(c(`source.copyError`))}}return(0,B.jsxs)(`section`,{"aria-label":c(`source.controlPlane`),className:`personal-status-source`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`span`,{children:`Control plane`}),(0,B.jsx)(`button`,{"aria-label":c(`source.addSsh`),onClick:ne,title:c(`source.add`),type:`button`,children:(0,B.jsx)(Bm,{size:14})})]}),(0,B.jsx)(eb,{ariaLabel:c(`source.select`),className:`personal-status-source-select`,icon:(0,B.jsx)(Jm,{size:15}),onChange:e=>{if(e.startsWith(te)){ie(e.slice(11));return}o(e)},options:A,value:e.id}),(0,B.jsxs)(`div`,{className:`personal-status-source-meta`,children:[(0,B.jsxs)(`span`,{className:`is-${t}`,children:[(0,B.jsx)(`i`,{}),c(t===`loading`?`source.connecting`:t===`error`?`source.notAvailable`:`source.connected`)]}),(0,B.jsx)(`small`,{children:e.readOnly?c(`source.readOnly`):c(`source.localInteractive`)}),e.kind===`ssh_tunnel`?(0,B.jsx)(`button`,{"aria-label":c(`source.remove`,{source:e.label}),onClick:()=>a(e.id),title:c(`source.removeCurrent`),type:`button`,children:(0,B.jsx)(nh,{size:12})}):null]}),n?(0,B.jsx)(`p`,{className:`personal-status-source-error`,role:`alert`,children:n}):null,l?(0,B.jsxs)(`div`,{className:`personal-status-source-form`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:c(`source.addSsh`)}),(0,B.jsx)(`button`,{"aria-label":c(`source.closeForm`),onClick:N,type:`button`,children:(0,B.jsx)(ah,{size:13})})]}),(0,B.jsxs)(`div`,{"aria-label":c(`source.addMethod`),className:`personal-status-source-modes`,role:`tablist`,children:[(0,B.jsx)(`button`,{"aria-selected":p===`configured`,onClick:()=>{m(`configured`),f(null)},role:`tab`,type:`button`,children:c(`source.configured`)}),(0,B.jsx)(`button`,{"aria-selected":p===`manual`,onClick:()=>{m(`manual`),f(null)},role:`tab`,type:`button`,children:c(`source.manual`)})]}),p===`configured`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:c(`source.configuredCount`,{count:h.length})}),(0,B.jsxs)(`span`,{className:`personal-status-source-field-row`,children:[(0,B.jsx)(`input`,{"aria-label":c(`source.host`),disabled:y||!h.length,list:`loopx-configured-ssh-hosts`,onChange:e=>{w(e.target.value),S(!1)},placeholder:c(y?`source.loadingHosts`:`source.hostPlaceholder`),value:C}),(0,B.jsx)(`datalist`,{id:`loopx-configured-ssh-hosts`,children:h.map(e=>(0,B.jsx)(`option`,{value:e.alias},e.alias))}),(0,B.jsx)(`button`,{"aria-label":c(`source.refreshHosts`),disabled:y,onClick:()=>void M(),title:c(`source.refreshHosts`),type:`button`,children:(0,B.jsx)(Wm,{size:13})})]})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:c(`source.localPort`)}),(0,B.jsx)(`input`,{"aria-label":c(`source.localPort`),inputMode:`numeric`,onChange:e=>{O(e.target.value),S(!1)},value:D})]}),(0,B.jsxs)(`div`,{className:`personal-status-source-command`,children:[(0,B.jsx)(`code`,{children:`error`in j?c(`source.tunnelCommandPending`):j.command}),(0,B.jsxs)(`button`,{"aria-label":c(`source.copyCommand`),disabled:`error`in j,onClick:()=>void ae(),type:`button`,children:[(0,B.jsx)(pm,{size:12}),c(x?`source.copied`:`source.copy`)]})]}),_?(0,B.jsx)(`p`,{className:`is-error`,children:_}):null,(0,B.jsx)(`p`,{children:c(`source.description`)}),(0,B.jsx)(`button`,{className:`personal-status-source-add`,disabled:`error`in j,onClick:re,type:`button`,children:c(`source.addConfigured`)})]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:c(`source.name`)}),(0,B.jsx)(`input`,{autoFocus:!0,maxLength:48,onChange:e=>E(e.target.value),placeholder:c(`source.namePlaceholder`),value:T})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:c(`source.statusUrl`)}),(0,B.jsx)(`input`,{onChange:e=>ee(e.target.value),placeholder:`http://127.0.0.1:8876/status.json`,value:k})]}),(0,B.jsx)(`p`,{children:(0,B.jsx)(`code`,{children:`ssh -N -L 8876:127.0.0.1:8766 `})}),(0,B.jsx)(`p`,{children:c(`source.manualDescription`)}),(0,B.jsx)(`button`,{className:`personal-status-source-add`,onClick:P,type:`button`,children:c(`source.addConfigured`)})]}),d?(0,B.jsx)(`p`,{className:`is-error`,role:`alert`,children:d}):null]}):null]})}var Qb={需修复:`is-danger`,等你:`is-warning`,等待条件:`is-info`,推进中:`is-success`,安静运行:`is-quiet`,已完成:`is-quiet`,已停止:`is-stopped`};function $b({attentionCount:e,goals:t,goalArchiveLoadState:n={error:null,phase:`ready`},lifecycleBusyGoalIds:r,goalLifecycleOperations:i,onRequestGoalCreate:a,onOpenSettings:o,onRetryGoalArchive:s,onRequestGoalLifecycle:c,onSelectGoal:l,selectedGoalId:u,statusSourceControl:d}){let{locale:f,t:p}=Ji(),[m,h]=(0,z.useState)(!1),g=Bb(t.filter(e=>e.activationState!==`stopped`),d?.activeSource.statusUrl??`/status.json`),_=g.sorted,v=t.filter(e=>e.activationState===`stopped`),y=e=>!!c&&(!i||i.includes(e)),b=(e,t)=>(0,B.jsxs)(`div`,{className:`personal-goal-row${g.target?.id===e.goalId?g.target.after?` is-drop-after`:` is-drop-before`:``}`,"data-reorder-goal":t?void 0:e.goalId,"data-load-error":e.loadError,children:[(0,B.jsxs)(`button`,{...t?{}:g.pointerProps(e.goalId),title:t?void 0:p(`sidebar.dragGoal`),"aria-current":u===e.goalId?`page`:void 0,className:`personal-goal-link`,onClick:()=>l(e.goalId),type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-goal-state-dot ${e.loadState?``:Qb[e.state]}`}),(0,B.jsxs)(`span`,{className:`personal-goal-link-copy`,children:[(0,B.jsx)(`strong`,{children:e.title}),(0,B.jsxs)(`small`,{children:[e.loadState&&(!t||u===e.goalId)?p(e.loadState===`error`?`startup.goalError`:`startup.goalLoading`):Yi(e.state,f),e.needsYou&&!t?` · ${p(`home.lane.needsYou`)}`:``]})]}),(0,B.jsx)(sm,{size:15})]}),!t&&m?(0,B.jsxs)(`div`,{className:`personal-goal-move-actions`,children:[(0,B.jsx)(`button`,{type:`button`,"aria-label":p(`sidebar.moveUp`,{goal:e.title}),disabled:_[0]?.goalId===e.goalId,onClick:()=>g.moveBy(e.goalId,-1),children:(0,B.jsx)($p,{"aria-hidden":`true`,size:13})}),(0,B.jsx)(`button`,{type:`button`,"aria-label":p(`sidebar.moveDown`,{goal:e.title}),disabled:_.at(-1)?.goalId===e.goalId,onClick:()=>g.moveBy(e.goalId,1),children:(0,B.jsx)(Yp,{"aria-hidden":`true`,size:13})})]}):null,c&&y(t?`resume`:`stop`)?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`button`,{"aria-label":`${p(t?`sidebar.resume`:`sidebar.stop`)} ${e.title}`,"aria-busy":r?.has(e.goalId)||void 0,className:`personal-goal-lifecycle${r?.has(e.goalId)?` is-pending`:``}`,disabled:r?.has(e.goalId),onClick:()=>c(e,t?`resume`:`stop`),title:p(t?`sidebar.resumeGoal`:`sidebar.stopGoal`),type:`button`,children:r?.has(e.goalId)?(0,B.jsx)(km,{size:13}):t?(0,B.jsx)(Um,{size:13}):(0,B.jsx)(Rm,{size:13})}),t&&y(`delete`)?(0,B.jsx)(`button`,{"aria-label":`${p(`sidebar.delete`)} ${e.title}`,className:`personal-goal-lifecycle personal-goal-delete`,onClick:()=>c(e,`delete`),title:p(`sidebar.deleteGoal`),type:`button`,children:(0,B.jsx)(nh,{size:13})}):null]}):null]},e.goalId);return(0,B.jsxs)(`div`,{className:`personal-goal-directory`,children:[(0,B.jsxs)(`div`,{className:`personal-sidebar-brand`,children:[(0,B.jsx)(`span`,{className:`personal-brand-mark`,children:(0,B.jsx)(nm,{size:18})}),(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:`LoopX`})})]}),d?(0,B.jsx)(Zb,{...d}):null,(0,B.jsxs)(`nav`,{"aria-label":p(`home.workspace`),className:`personal-sidebar-nav`,children:[(0,B.jsxs)(`button`,{"aria-current":u===null?`page`:void 0,className:`personal-manager-link`,onClick:()=>l(null),type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-manager-icon`,children:(0,B.jsx)(nm,{size:17})}),(0,B.jsx)(`span`,{children:p(`sidebar.manager`)}),e>0?(0,B.jsx)(`span`,{className:`personal-sidebar-count`,children:e}):null,(0,B.jsx)(sm,{size:15})]}),(0,B.jsxs)(`div`,{className:`personal-sidebar-section-title`,children:[(0,B.jsx)(`span`,{children:`Goals`}),(0,B.jsxs)(`span`,{className:`personal-sidebar-title-actions`,children:[(0,B.jsx)(`small`,{children:_.length}),(0,B.jsx)(`button`,{"aria-label":p(`sidebar.sortGoals`),title:p(`sidebar.sortGoals`),"aria-pressed":m,onClick:()=>h(!m),type:`button`,children:(0,B.jsx)(Qp,{"aria-hidden":`true`,size:15})}),a?(0,B.jsx)(`button`,{"aria-label":p(`sidebar.createGoal`),onClick:a,type:`button`,children:(0,B.jsx)(Bm,{size:15})}):null]})]}),g.saveFailed?(0,B.jsx)(`p`,{role:`status`,children:p(`sidebar.orderNotSaved`)}):null,(0,B.jsx)(`span`,{className:`personal-sr-only`,role:`status`,children:g.lastMoved?p(`sidebar.goalMoved`,{goal:g.lastMoved.title,position:g.lastMoved.position}):``}),(0,B.jsx)(`div`,{className:`personal-goal-list`,children:_.map(e=>b(e,!1))}),v.length||n.phase===`loading`||n.phase===`error`?(0,B.jsxs)(`details`,{className:`personal-stopped-goals`,open:n.phase===`error`||void 0,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(om,{size:13}),(0,B.jsx)(`span`,{children:p(`sidebar.stopped`)}),n.phase===`loading`?(0,B.jsx)(km,{"aria-label":p(`sidebar.stoppedLoading`),className:`is-spinning`,size:13}):(0,B.jsx)(`small`,{children:v.length})]}),(0,B.jsxs)(`div`,{className:`personal-goal-list is-stopped`,children:[n.phase===`error`?(0,B.jsxs)(`div`,{className:`personal-stopped-goal-error`,role:`alert`,children:[(0,B.jsx)(`span`,{children:p(`sidebar.stoppedLoadFailed`)}),s?(0,B.jsx)(`button`,{onClick:s,type:`button`,children:p(`sidebar.retryStopped`)}):null]}):null,v.map(e=>b(e,!0))]})]}):null]}),(0,B.jsxs)(`div`,{className:`personal-sidebar-footer`,children:[(0,B.jsx)(Fb,{}),o?(0,B.jsxs)(`button`,{"aria-label":p(`settings.open`),className:`personal-sidebar-utility`,onClick:o,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-sidebar-utility-icon`,children:(0,B.jsx)(Ym,{size:17})}),(0,B.jsx)(`span`,{className:`personal-sidebar-utility-copy`,children:(0,B.jsx)(`strong`,{children:p(`settings.open`)})}),(0,B.jsx)(sm,{"aria-hidden":`true`,size:15})]}):null]})]})}var ex=J({ok:X(!0),total:G().int().nonnegative(),next_cursor:W().nullable(),items:q(J({todo_id:W(),text:W(),claimed_by:W().nullable(),evidence:W().nullable(),priority:W().nullable(),task_class:W().nullable()})).max(40)});function tx({goal:e,agentId:t,seed:n,enabled:r,listView:i=!1,onSelect:a}){let{t:o}=Ji(),s=(0,z.useId)(),[c,l]=(0,z.useState)(!1),u=!i||c,d=i?96:148,[f,p]=(0,z.useState)(n),[m,h]=(0,z.useState)(t===`all`?e.doneTodoCount??n.length:n.length),[g,_]=(0,z.useState)(void 0),[v,y]=(0,z.useState)(!1),[b,x]=(0,z.useState)(!1),[S,C]=(0,z.useState)(!1),[w,T]=(0,z.useState)({top:0,height:600}),[E,D]=(0,z.useState)(null),O=(0,z.useRef)(null),k=(0,z.useRef)(null),[ee,te]=(0,z.useState)(0);(0,z.useEffect)(()=>{let e=O.current;if(!e)return;let t=new ResizeObserver(()=>T({top:e.scrollTop,height:e.clientHeight}));return t.observe(e),()=>{t.disconnect(),k.current?.abort()}},[]);let A=g===void 0||w.top+w.height>=f.length*d-d*2;(0,z.useEffect)(()=>{if(!r||!u||!A||g===null||b||k.current)return;let n=new AbortController;k.current=n,y(!0);let i=new URLSearchParams({goal_id:e.goalId});t!==`all`&&i.set(`agent_id`,t),g&&i.set(`cursor`,g),fetch(`/api/chat/completed-todos?${i}`,{signal:n.signal}).then(async e=>{if(e.status===409&&C(!0),!e.ok)throw Error(`history unavailable`);let t=ex.parse(await e.json());if(n.signal.aborted)return;let r=t.items.map(e=>({todoId:e.todo_id,text:e.text,claimedBy:e.claimed_by,evidence:e.evidence,priority:e.priority,taskClass:e.task_class,done:!0,status:`done`}));p(e=>g===void 0?r:[...e,...r.filter(t=>!e.some(e=>e.todoId===t.todoId))]),h(t.total),_(t.next_cursor)}).catch(()=>{n.signal.aborted||x(!0)}).finally(()=>{n.signal.aborted||(k.current=null,y(!1))})},[r,u,A,g,b,ee,e.goalId,t,v]),(0,z.useEffect)(()=>{O.current&&(O.current.scrollTop=0),T({top:0,height:O.current?.clientHeight??600}),D(null)},[i]);let j=Math.max(0,Math.floor(w.top/d)-3),M=Math.min(f.length,Math.ceil((w.top+w.height)/d)+3),ne=Array.from({length:Math.max(0,M-j)},(e,t)=>j+t);return E!==null&&El(e=>!e),children:[(0,B.jsx)(`span`,{"aria-hidden":`true`,children:c?`▾`:`▸`}),` `,o(`tasks.completed`)]}):(0,B.jsxs)(`strong`,{children:[(0,B.jsx)(`i`,{"aria-hidden":`true`,className:`personal-kanban-dot tone-done`}),o(`tasks.completed`)]}),(0,B.jsx)(`span`,{children:m})]}),(0,B.jsxs)(`div`,{id:s,hidden:!u,"aria-label":o(`tasks.completed`),className:`personal-task-lane-scroll`,ref:O,role:`region`,tabIndex:0,onScroll:e=>T({top:e.currentTarget.scrollTop,height:e.currentTarget.clientHeight}),children:[(0,B.jsx)(`div`,{className:`personal-completed-window`,style:{height:f.length*d},children:ne.map(t=>{let n=f[t];return(0,B.jsx)(`div`,{className:`personal-task-card personal-completed-row`,style:{top:t*d,height:d},children:(0,B.jsxs)(`button`,{type:`button`,onFocus:()=>D(t),onBlur:()=>D(null),onClick:()=>a({kind:`todo`,item:{...n,goalId:e.goalId,goalTitle:e.title,ownerLabel:n.claimedBy??e.agentLabel??e.agentId}}),children:[(0,B.jsx)(`span`,{className:`is-done`,children:`✓`}),(0,B.jsx)(`strong`,{children:n.text}),(0,B.jsx)(`small`,{children:n.claimedBy??e.agentLabel??e.agentId})]})},n.todoId)})}),(0,B.jsx)(`div`,{className:`personal-completed-footer`,role:`status`,children:v?o(`tasks.historyLoading`):b?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`span`,{children:o(S?`tasks.historyExpired`:`tasks.historyError`)}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>{S&&(_(void 0),O.current&&(O.current.scrollTop=0)),C(!1),x(!1),te(e=>e+1)},children:o(`tasks.historyRetry`)})]}):r?g===null?o(`tasks.historyEnd`):(0,B.jsx)(`button`,{type:`button`,onClick:()=>{O.current&&(O.current.scrollTop=f.length*d)},children:o(`tasks.historyMore`)}):o(`tasks.historyLocalOnly`)})]})]})}function nx({children:e,count:t,label:n,tone:r,listView:i=!1}){let a=(0,z.useId)(),o=(0,z.useRef)(null),s=(0,z.useRef)([]),c=(0,z.useRef)(null),[l,u]=(0,z.useState)({after:!1,before:!1}),d=(0,z.useCallback)(()=>{let e=o.current;if(!e)return;let t={after:Math.max(0,e.scrollHeight-e.clientHeight)-e.scrollTop>1,before:e.scrollTop>1};u(e=>e.after===t.after&&e.before===t.before?e:t)},[]);return(0,z.useEffect)(()=>{let e=o.current;if(!e)return;let t=new ResizeObserver(d);return c.current=t,t.observe(e),e.addEventListener(`scroll`,d,{passive:!0}),d(),()=>{t.disconnect(),c.current=null,s.current=[],e.removeEventListener(`scroll`,d)}},[i,d]),(0,z.useEffect)(()=>{let e=o.current,t=c.current;if(!e||!t)return;for(let e of s.current)t.unobserve(e);let n=Array.from(e.children).filter(e=>e instanceof HTMLElement);for(let e of n)t.observe(e);s.current=n,d()},[e,t,i,d]),i?!t&&r!==`done`?null:(0,B.jsxs)(`details`,{className:`personal-task-group tone-${r}`,open:!0,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(om,{size:16}),(0,B.jsx)(`strong`,{children:n}),(0,B.jsx)(`span`,{children:t})]}),(0,B.jsx)(`div`,{className:`personal-task-list-rows`,children:e})]}):(0,B.jsxs)(`section`,{className:`personal-object-list personal-task-lane`,children:[(0,B.jsxs)(`header`,{id:a,children:[(0,B.jsxs)(`strong`,{children:[(0,B.jsx)(`i`,{"aria-hidden":`true`,className:`personal-kanban-dot tone-${r}`}),n]}),(0,B.jsx)(`span`,{children:t})]}),(0,B.jsx)(`div`,{"aria-labelledby":a,className:`personal-task-lane-scroll${l.before?` has-overflow-before`:``}${l.after?` has-overflow-after`:``}`,ref:o,role:`region`,tabIndex:t>0?0:-1,children:e})]})}function rx({historyEnabled:e=!1,goal:t,items:n,onDraftTaskFromMessage:r,onOpenChat:i,onQuickComplete:a,quickCompletingTodoIds:o,onSelect:s,selectedTodoId:c=null,userTodos:l}){let{t:u}=Ji(),[d,f]=(0,z.useState)(!1),[p,m]=(0,z.useState)({goalId:``,laneId:`all`}),h=(0,z.useRef)(null);(0,z.useEffect)(()=>{if(!c)return;let e=window.requestAnimationFrame(()=>h.current?.scrollIntoView({block:`nearest`,inline:`nearest`}));return()=>window.cancelAnimationFrame(e)},[c]);let g=l.filter(e=>e.goalId===t.goalId).map(e=>({...e,goalTitle:t.title})),_=e=>e.priority===`P0`?0:e.priority===`P1`?1:e.priority===`P2`?2:3,v=(0,z.useMemo)(()=>{let e=new Map((t.agentLanes??[]).map(e=>[e.agentId,e]));for(let n of t.agentTodos)n.claimedBy&&!e.has(n.claimedBy)&&e.set(n.claimedBy,{agentId:n.claimedBy,label:n.claimedBy});return[...e.values()]},[t.agentLanes,t.agentTodos]),y=p.goalId===t.goalId&&v.some(e=>e.agentId===p.laneId)?p.laneId:`all`,b=e=>y===`all`||e===y,x=t.agentTodos.filter(e=>e.taskClass!==`continuous_monitor`&&!e.done).filter(e=>b(e.claimedBy)).sort((e,t)=>_(e)-_(t)),S=t.agentTodos.filter(e=>e.taskClass!==`continuous_monitor`&&e.done).filter(e=>b(e.claimedBy)),C=n.filter(e=>e.kind===`schedule`&&b(e.schedule.agentId)),w=n.filter(e=>e.kind===`run`&&!!e.run.todoId&&b(e.run.agentId)),T=!g.length&&!x.length&&!S.length&&!C.length,E=n.filter(e=>e.kind===`message`&&(e.message.role===`user`||e.message.role===`assistant`)),D=E.reduce((e,t,n)=>t.message.role===`user`?n:e,-1),O=D>=0?E[D]?.message:null,k=D>=0?E.slice(D+1).reverse().find(e=>e.message.role===`assistant`)?.message:null,ee=D>=0&&E.slice(D+1).some(e=>e.message.role===`assistant`&&e.message.pending);return(0,B.jsxs)(`section`,{"aria-label":u(`header.tasks`),className:`personal-task-board${d?` is-list-view`:``}`,children:[(0,B.jsxs)(`header`,{className:`personal-task-view-toolbar`,children:[(0,B.jsx)(`div`,{children:(0,B.jsx)(`strong`,{children:u(`header.tasks`)})}),(0,B.jsxs)(`div`,{className:`personal-task-view-switch`,role:`group`,"aria-label":u(`tasks.viewLabel`),children:[(0,B.jsx)(`button`,{type:`button`,"aria-pressed":d,onClick:()=>f(!0),children:u(`tasks.listView`)}),(0,B.jsx)(`button`,{type:`button`,"aria-pressed":!d,onClick:()=>f(!1),children:u(`tasks.boardView`)})]})]}),v.length>1?(0,B.jsxs)(`section`,{"aria-label":u(`tasks.agentLaneFilter`),className:`personal-task-lane-filter`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(nm,{size:15}),(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:u(`tasks.agentLane`)})})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{className:`sr-only`,children:u(`tasks.agentLaneFilter`)}),(0,B.jsxs)(`select`,{"aria-label":u(`tasks.agentLaneFilter`),onChange:e=>m({goalId:t.goalId,laneId:e.target.value}),value:y,children:[(0,B.jsx)(`option`,{value:`all`,children:u(`tasks.allAgentLanes`,{count:v.length})}),v.map(e=>(0,B.jsx)(`option`,{value:e.agentId,children:e.label},e.agentId))]}),(0,B.jsx)(om,{"aria-hidden":!0,size:14})]})]}):null,O?(0,B.jsxs)(`section`,{"aria-label":u(`tasks.chatRecent`),className:`personal-task-chat-receipt`,children:[(0,B.jsx)(`span`,{className:`personal-task-chat-icon`,children:(0,B.jsx)(Nm,{size:18})}),(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:u(ee?`tasks.chatPending`:k?`tasks.chatAgentReplied`:`tasks.chatRecent`)}),(0,B.jsx)(`small`,{children:t.agentLabel??t.agentId})]}),(0,B.jsxs)(`p`,{className:`is-user`,children:[(0,B.jsx)(`b`,{children:u(`common.you`)}),O.text]}),k&&!k.pending?(0,B.jsxs)(`p`,{className:`is-assistant`,children:[(0,B.jsx)(`b`,{children:u(`common.agent`)}),k.text]}):null,(0,B.jsx)(`small`,{children:u(ee?`tasks.chatPendingDescription`:`tasks.chatUnchangedDescription`)})]}),(0,B.jsxs)(`footer`,{children:[(0,B.jsxs)(`button`,{onClick:i,type:`button`,children:[(0,B.jsx)(Nm,{size:14}),u(`tasks.chatViewReply`)]}),k&&!ee&&r?(0,B.jsxs)(`button`,{onClick:()=>r(k.text),type:`button`,children:[(0,B.jsx)(Om,{size:14}),u(`tasks.convertToTask`)]}):null]})]}):null,(0,B.jsxs)(`div`,{className:d?`personal-task-grouped-list`:`personal-task-kanban`,children:[(0,B.jsxs)(nx,{listView:d,count:g.length,label:u(`timeline.waitingConfirmation`),tone:`attention`,children:[g.map(e=>{let t=Zi(e.updatedAt,u);return(0,B.jsxs)(`button`,{onClick:()=>s({item:e,kind:`attention`}),type:`button`,children:[(0,B.jsx)(`span`,{"aria-hidden":`true`,className:`is-attention`,children:`!`}),(0,B.jsx)(`strong`,{children:e.text}),(0,B.jsxs)(`small`,{children:[(0,B.jsx)(`span`,{className:`personal-row-status ${e.blocking?`is-blocking`:`is-pending`}`,children:e.blocking?u(`tasks.blocked`):u(`tasks.pending`)}),t?(0,B.jsx)(`span`,{className:`personal-task-age`,children:u(`tasks.waitingAge`,{age:t})}):null]})]},e.todoId)}),g.length?null:(0,B.jsx)(`p`,{className:`personal-task-empty`,children:u(`tasks.emptyConfirm`)})]}),(0,B.jsxs)(nx,{listView:d,count:x.length,label:u(`tasks.pendingAndRunning`),tone:`progress`,children:[x.map(e=>{let n={...e,goalId:t.goalId,goalTitle:t.title,ownerLabel:e.claimedBy??t.agentLabel??t.agentId},r=w.find(t=>t.run.todoId===e.todoId)?.run;return(0,B.jsxs)(`div`,{className:`personal-task-card${r?` has-session`:``}${c===e.todoId?` is-selected`:``}`,ref:c===e.todoId?e=>{h.current=e}:void 0,children:[(0,B.jsxs)(`button`,{"aria-pressed":c===e.todoId,onClick:()=>s({item:n,kind:`todo`}),type:`button`,children:[(0,B.jsx)(`span`,{children:`○`}),(0,B.jsx)(`strong`,{children:e.text}),(0,B.jsxs)(`small`,{children:[e.priority?(0,B.jsx)(`span`,{className:`personal-priority-badge is-${e.priority.toLowerCase()}`,children:e.priority}):null,e.status===`blocked`?(0,B.jsx)(`span`,{className:`personal-priority-badge is-blocked`,children:u(`tasks.blocked`)}):null,r?(0,B.jsx)(`span`,{className:`personal-task-session-status`,children:r.status===`running`||r.status===`queued`?u(`runs.running`):r.status===`failed`?u(`tasks.sessionError`):u(`common.waiting`)}):null,e.status===`deferred`?(0,B.jsx)(`span`,{className:`personal-task-session-status`,children:u(`drawer.taskStatusDeferred`)}):r?null:(0,B.jsx)(`span`,{className:`personal-task-session-status`,children:u(`tasks.waiting`)}),e.claimedBy??t.agentLabel??t.agentId]})]}),(0,B.jsxs)(`div`,{className:`personal-task-card-actions`,children:[r?(0,B.jsxs)(`button`,{className:`personal-task-session-link`,"aria-label":u(`tasks.openExecution`,{name:e.text}),onClick:()=>s({item:r,kind:`run`}),title:r.status===`completed`?u(`tasks.viewResult`):u(`tasks.viewExecution`),type:`button`,children:[(0,B.jsx)(_m,{size:14}),(0,B.jsx)(`span`,{children:r.status===`completed`?u(`tasks.viewResult`):u(`tasks.viewExecution`)})]}):null,a?(0,B.jsx)(`button`,{"aria-busy":o?.has(e.todoId)||void 0,"aria-label":u(`tasks.markComplete`,{name:e.text}),disabled:o?.has(e.todoId),onClick:()=>void a(n),title:u(`tasks.completed`),type:`button`,children:o?.has(e.todoId)?(0,B.jsx)(km,{className:`personal-spin`,size:14}):(0,B.jsx)(am,{size:14})}):null,(0,B.jsx)(`button`,{"aria-label":u(`tasks.moreActions`,{name:e.text}),onClick:()=>s({item:n,kind:`todo`}),title:u(`common.actions`),type:`button`,children:(0,B.jsx)(gm,{size:14})})]})]},e.todoId)}),x.length?null:(0,B.jsx)(`p`,{className:`personal-task-empty`,children:u(`tasks.emptyRunning`)})]}),(0,B.jsxs)(nx,{listView:d,count:C.length,label:u(`tasks.scheduled`),tone:`schedule`,children:[C.map(e=>(0,B.jsxs)(`button`,{onClick:()=>s({item:e.schedule,kind:`schedule`}),type:`button`,children:[(0,B.jsx)(`span`,{children:`◷`}),(0,B.jsx)(`strong`,{children:e.schedule.label}),(0,B.jsx)(`small`,{children:e.schedule.status===`paused`?u(`schedule.paused`):u(`schedule.active`)})]},e.id)),C.length?null:(0,B.jsx)(`p`,{className:`personal-task-empty`,children:u(`tasks.emptySchedules`)})]}),(0,B.jsx)(tx,{goal:t,agentId:y,seed:S,enabled:e,listView:d,onSelect:s},`${t.goalId}:${y}:${e}`)]}),T?(0,B.jsx)(`p`,{className:`personal-task-empty`,children:u(`tasks.emptyGoal`)}):null]})}function ix(e,t){return{live_steering:{label:t(`lark.ingressSteering`),detail:t(`lark.ingressSteeringDescription`)},session_queue:{label:t(`lark.ingressQueue`),detail:t(`lark.ingressQueueDescription`)},async_inbox:{label:t(`lark.ingressAsync`),detail:t(`lark.ingressAsyncDescription`)},direct_session:{label:t(`lark.ingressLegacy`),detail:t(`lark.ingressLegacyDescription`)}}[e]}function ax(e,t){return e.listener_status===`starting`?{label:t(`lark.health.starting`),detail:t(`lark.health.startingDetail`),state:`not_ready`}:e.listener_status===`retrying`&&e.listener_error_code===`lark_event_source_disconnected`?{label:t(`lark.health.sourceDisconnected`),detail:t(`lark.health.sourceDisconnectedDetail`),state:`not_ready`}:e.listener_status===`retrying`?{label:t(`lark.health.retrying`),detail:t(`lark.health.retryingDetail`),state:`not_ready`}:e.listener_status===`stopped`||e.listener_status===null?{label:t(`lark.health.notStarted`),detail:t(`lark.health.notStartedDetail`),state:`not_ready`}:e.last_event_status===`message_context_permission_required`?{label:t(`lark.health.messageContextPermission`),detail:t(`lark.health.messageContextPermissionDetail`),state:`not_ready`}:e.last_event_status===`processing_failed`?{label:t(`lark.health.processingFailed`),detail:t(`lark.health.processingFailedDetail`),state:`not_ready`}:e.health_error_code===`invalid_routing_state`?{label:t(`lark.health.invalidRouting`),detail:t(`lark.health.invalidRoutingDetail`),state:`not_ready`}:e.last_event_status===`queued_for_agent`?{label:t(`lark.health.queued`),detail:t(`lark.health.queuedDetail`,{agent:e.agent_id??t(`lark.targetAgent`)}),state:`ready`}:e.last_event_status===`context_only_captured`||e.last_event_status===`context_only_already_captured`?{label:t(`lark.health.contextCaptured`),detail:t(`lark.health.contextCapturedDetail`),state:`ready`}:e.last_event_status===`ignored`&&e.last_event_reason===`not_addressed`?{label:t(`lark.health.notAddressed`),detail:t(`lark.health.notAddressedDetail`),state:`ready`}:e.last_event_status===`ignored`&&e.last_event_reason===`self_message`?{label:t(`lark.health.listening`),detail:t(`lark.health.ignoredSelf`),state:`ready`}:e.health_error_code===`lark_event_route_mismatch`||[`chat_mismatch`,`topic_mismatch`,`route_ambiguous`].includes(e.last_event_reason??``)?{label:e.last_event_reason===`route_ambiguous`?t(`lark.health.routeAmbiguous`):t(`lark.health.routeMismatch`),detail:e.last_event_reason===`route_ambiguous`?t(`lark.health.routeAmbiguousDetail`):t(`lark.health.routeMismatchDetail`),state:`not_ready`}:[`invalid_event`,`binding_unavailable`].includes(e.last_event_reason??``)?{label:t(`lark.health.routeUnavailable`),detail:t(`lark.health.routeUnavailableDetail`),state:`not_ready`}:e.last_event_status===`replied_and_acknowledged`?{label:t(`lark.health.listening`),detail:t(`lark.health.eventProcessed`,{events:e.event_count,replies:e.replied_count}),state:`ready`}:e.health_error_code===`lark_event_delivery_unverified`||e.event_count===0?{label:t(`lark.health.eventUnverified`),detail:t(`lark.health.eventUnverifiedDetail`),state:`unverified`}:{label:e.reply_ready?t(`lark.health.listening`):t(`lark.health.unavailable`),detail:t(`lark.health.lastStatus`,{status:e.last_event_status??t(`lark.health.waiting`)}),state:e.reply_ready?`ready`:`not_ready`}}function ox(e){return e.history_permission_guidance?.api_document_url??null}function sx(e,t,n){if(e instanceof Fh){let t=String(e.payload.error_code??``);return{lark_cli_not_installed:n(`lark.error.cliMissing`),lark_cli_not_executable:n(`lark.error.cliExecutable`),lark_cli_start_failed:n(`lark.error.cliStart`),lark_message_permissions_required:n(`lark.error.messagePermissions`),lark_app_required:n(`lark.error.appRequired`),invalid_lark_app:n(`lark.error.invalidApp`),lark_group_lookup_failed:n(`lark.error.groupLookup`),provider_api_failed:n(`lark.error.provider`)}[t]??e.message}return e instanceof Error?e.message:t}function cx({embedded:e=!1,focusGoalConnection:t=!1,goals:n,initialGoalId:r,onChanged:i,onClose:a}){let{t:o}=Ji(),[s,c]=(0,z.useState)(`connections`),[l,u]=(0,z.useState)([]),[d,f]=(0,z.useState)([]),[p,m]=(0,z.useState)(!0),[h,g]=(0,z.useState)(null),[_,v]=(0,z.useState)(``),[y,b]=(0,z.useState)(t),[x,S]=(0,z.useState)(``),[C,w]=(0,z.useState)(r??n[0]?.goalId??``),[T,E]=(0,z.useState)(``),[D,O]=(0,z.useState)([]),[k,ee]=(0,z.useState)(``),[te,A]=(0,z.useState)(!1),[j,M]=(0,z.useState)(null),[ne,N]=(0,z.useState)(`addressed_only`),[P,re]=(0,z.useState)(t&&r?`goal`:`manager`),[ie,ae]=(0,z.useState)(`async_inbox`),[F,oe]=(0,z.useState)(`topic_reply`),[I,se]=(0,z.useState)(``),[L,ce]=(0,z.useState)(!1),[le,ue]=(0,z.useState)({}),[de,fe]=(0,z.useState)(!1),[pe,me]=(0,z.useState)(null),[he,ge]=(0,z.useState)(null),[_e,ve]=(0,z.useState)(null),[ye,be]=(0,z.useState)(null),[xe,Se]=(0,z.useState)(!1),[Ce,we]=(0,z.useState)(`loopx-workspace-bot`),[Te,Ee]=(0,z.useState)(`feishu`),[De,Oe]=(0,z.useState)(null),[ke,Ae]=(0,z.useState)(!1),[R,je]=(0,z.useState)(null),Me=(0,z.useRef)(null),Ne=(0,z.useRef)(null),Pe=(0,z.useRef)(!1);async function Fe(){m(!0),g(null);try{let[e,t]=await Promise.all([Qg(),s_()]);u(e),f(t),S(t=>t||e.find(e=>e.reply_ready)?.app_ref||e.find(e=>e.ready)?.app_ref||e[0]?.app_ref||``)}catch(e){g(sx(e,o(`lark.error.configuration`),o))}finally{m(!1)}}(0,z.useEffect)(()=>{Fe()},[]),(0,z.useEffect)(()=>{if(!t||p||Pe.current||!r)return;Pe.current=!0;let e=d.find(e=>e.goal_id===r);e?Je(e):qe(n.find(e=>e.goalId===r))},[d,t,n,r,p]),(0,z.useEffect)(()=>{if(!y||!x||_e){O([]),ee(``),A(!1),M(null);return}let e=!1;A(!0),M(null);let t=window.setTimeout(()=>{a_(x,T).then(t=>{e||(O(t),ee(e=>t.some(t=>t.chat_id===e)?e:t[0]?.chat_id??``))}).catch(t=>{e||(O([]),ee(``),M(sx(t,o(`lark.error.groupLoad`),o)))}).finally(()=>{e||A(!1)})},180);return()=>{e=!0,window.clearTimeout(t)}},[x,T,y,_e]),(0,z.useEffect)(()=>{if(!xe||!De||[`ready`,`failed`,`cancelled`].includes(De.status))return;let e=!1,t=window.setTimeout(()=>{t_(De.setup_id).then(async t=>{e||(Oe(t),t.verification_url&&Ne.current!==t.verification_url&&(Ne.current=t.verification_url,Me.current&&!Me.current.closed&&(Me.current.location.href=t.verification_url)),t.status===`ready`&&(await Fe(),S(t.app_ref),ue({}),Se(!1)),t.status===`failed`&&je(t.error??o(`lark.error.appCreate`)))}).catch(t=>{e||je(sx(t,o(`lark.error.setupPoll`),o))})},650);return()=>{e=!0,window.clearTimeout(t)}},[xe,De]);let Ie=n.find(e=>e.goalId===C),Le=Ie?.agentId?[{agentId:Ie.agentId,label:Ie.agentLabel??Ie.agentId}]:[],Re=Ie?.agentLanes?.length?Ie.agentLanes:Le,ze=Re.some(e=>e.agentId===I),V=[];L?V=Re.map(e=>({agentId:e.agentId,appRef:le[e.agentId]??x})):ze&&(V=[{agentId:I,appRef:x}]);let Be=V.map(e=>e.agentId),Ve=!!_e||V.length>0&&V.every(e=>l.some(t=>t.app_ref===e.appRef&&t.reply_ready)),He=o(`lark.connect`);he?He=o(`lark.saveConnection`):L&&(He=o(`lark.connectAllAgentsAction`,{count:Be.length}));let Ue=l.find(e=>e.app_ref===x),We=D.find(e=>e.chat_id===k),Ge=(0,z.useMemo)(()=>{let e=_.trim().toLocaleLowerCase();return e?d.filter(t=>[t.app_label,t.chat_name,t.goal_title,t.topic_name].some(t=>t.toLocaleLowerCase().includes(e))):d},[d,_]),Ke=(0,z.useMemo)(()=>d.filter(e=>ax(e,o).state===`unverified`).length,[d,o]);function qe(e){let i=e??n.find(e=>e.goalId===r)??n[0];ge(null),ve(null),re(e||t?`goal`:`manager`),S(l.some(e=>e.app_ref===x)?x:l.find(e=>e.reply_ready)?.app_ref??l[0]?.app_ref??``),ee(``),w(i?.goalId??``),se(i?.agentId??``),ce(!1),ue({}),N(`addressed_only`),ae(`async_inbox`),oe(`topic_reply`),E(``),me(null),b(!0)}function Je(e){ge(e.goal_id),ve(e),re(e.conversation_kind??`goal`),S(e.app_ref),w(e.goal_id);let t=n.find(t=>t.goalId===e.goal_id),r=t?.agentLanes?.length?t.agentLanes:t?.agentId?[{agentId:t.agentId}]:[];se(e.agent_id??(r.length===1?r[0].agentId:``)),ce(!1),ue({}),N(e.capture_scope),ae(e.ingress_mode===`direct_session`?`async_inbox`:e.ingress_mode),oe(e.reply_mode),E(e.chat_name),me(null),b(!0)}function Ye(){Oe(null),je(null),Ne.current=null,Se(!0)}async function Xe(){if(!(ke||!/^[A-Za-z0-9][A-Za-z0-9._-]{0,99}$/.test(Ce))){Ae(!0),je(null),Ne.current=null,Me.current=window.open(window.location.href,`_blank`);try{let e=await e_({appRef:Ce,brand:Te});Oe(e)}catch(e){Me.current?.close(),je(sx(e,o(`lark.error.setupStart`),o))}finally{Ae(!1)}}}async function Ze(){let e=De;if(Se(!1),Me.current?.close(),e&&![`ready`,`failed`,`cancelled`].includes(e.status))try{await n_(e.setup_id)}catch{}}async function Qe(){if(!(!x||!C||!_e&&!We||P===`goal`&&Be.length===0||de)){fe(!0),me(null);try{let e={...P===`manager`?{..._e?{connectionId:_e.connection_id}:{appRef:x,chatId:We.chat_id,chatName:We.chat_name}}:_e?{connectionId:_e.connection_id,agentId:I}:{agentBindings:V,chatId:We.chat_id,chatName:We.chat_name},conversationKind:P,captureScope:P===`manager`?`addressed_only`:ne,goalId:C,incomingMode:ne===`configured_chat_all`?`all`:`mentions`,ingressMode:P===`manager`?`session_queue`:ie,replyMode:F},t=await c_({...e,execute:!1});if(!t.ok)throw new Fh(t.public_summary??t.blocker??o(`lark.error.bindPreview`),{error_code:t.blocker??`provider_api_failed`});let n=await c_({...e,execute:!0});if(!n.ok)throw new Fh(n.public_summary??n.blocker??o(`lark.error.bind`),{error_code:n.blocker??`provider_api_failed`});b(!1),await Fe(),i?.()}catch(e){me(sx(e,o(`lark.error.bind`),o))}finally{fe(!1)}}}async function $e(e,t){if(ye!==t){be(t);return}try{await l_(e,t),be(null),await Fe(),i?.()}catch(e){g(sx(e,o(`lark.error.disconnect`),o))}}return(0,B.jsxs)(`section`,{className:`personal-lark-settings${e?` is-embedded`:``}`,"aria-label":o(`lark.configuration`),children:[e?null:(0,B.jsxs)(`header`,{className:`personal-lark-header`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`small`,{children:o(`settings.goalConnections`)}),(0,B.jsx)(`h1`,{children:`Lark`})]}),(0,B.jsx)(`button`,{"aria-label":o(`lark.closeSettings`),className:`personal-icon-button`,onClick:a,type:`button`,children:(0,B.jsx)(ah,{size:18})})]}),(0,B.jsxs)(`nav`,{className:`personal-lark-tabs`,"aria-label":o(`lark.management`),children:[(0,B.jsxs)(`button`,{"aria-current":s===`apps`?`page`:void 0,onClick:()=>c(`apps`),type:`button`,children:[o(`lark.apps`),` `,(0,B.jsx)(`span`,{children:p?`…`:l.length})]}),(0,B.jsxs)(`button`,{"aria-current":s===`connections`?`page`:void 0,onClick:()=>c(`connections`),type:`button`,children:[o(`lark.connections`),` `,(0,B.jsx)(`span`,{children:p?`…`:d.length})]})]}),h?(0,B.jsx)(`p`,{className:`personal-notification-error`,children:h}):null,p?(0,B.jsxs)(`div`,{className:`personal-lark-loading`,children:[(0,B.jsx)(km,{className:`is-spinning`,size:18}),o(`lark.loading`)]}):null,!p&&s===`apps`?(0,B.jsxs)(`div`,{className:`personal-lark-apps`,children:[(0,B.jsxs)(`div`,{className:`personal-lark-app-toolbar`,children:[(0,B.jsx)(`span`,{children:o(`lark.reusableApps`,{count:l.length})}),(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:Ye,type:`button`,children:[(0,B.jsx)(Bm,{size:16}),o(`lark.newApp`)]})]}),(0,B.jsxs)(`div`,{className:`personal-lark-app-grid`,children:[l.map(e=>(0,B.jsxs)(`article`,{className:`personal-lark-app-card`,children:[(0,B.jsx)(`span`,{className:`personal-lark-app-avatar`,children:(0,B.jsx)(nm,{size:19})}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:e.label}),(0,B.jsxs)(`small`,{children:[e.brand,` · lark-cli profile`]})]}),(0,B.jsx)(`em`,{className:e.reply_ready?`is-ready`:`is-off`,children:e.reply_ready?o(`lark.autoReplyReady`):e.ready?o(`lark.needsMessagePermissions`):o(`lark.needsSetup`)}),(0,B.jsxs)(`p`,{children:[o(`lark.goalConnections`,{count:d.filter(t=>t.app_ref===e.app_ref).length}),e.ready&&!e.reply_ready?` · ${o(`lark.autoReplyUnavailable`)}`:``]})]},e.app_ref)),l.length===0?(0,B.jsx)(`p`,{className:`personal-lark-empty`,children:o(`lark.noProfiles`)}):null]})]}):null,!p&&s===`connections`?(0,B.jsxs)(`div`,{className:`personal-lark-connections`,children:[Ke>0?(0,B.jsxs)(`p`,{className:`personal-lark-route-readiness`,role:`status`,children:[(0,B.jsx)(Nm,{size:15}),o(`lark.routesUnverified`,{count:Ke})]}):null,(0,B.jsxs)(`div`,{className:`personal-lark-toolbar`,children:[(0,B.jsxs)(`label`,{children:[(0,B.jsx)(Gm,{size:16}),(0,B.jsx)(`input`,{"aria-label":o(`lark.searchConnections`),onChange:e=>v(e.target.value),placeholder:o(`lark.searchPlaceholder`),type:`search`,value:_})]}),(0,B.jsxs)(`button`,{className:`personal-primary-action`,disabled:l.length===0||n.length===0,onClick:()=>qe(),type:`button`,children:[(0,B.jsx)(Bm,{size:16}),o(`lark.connectApp`)]})]}),(0,B.jsxs)(`div`,{className:`personal-lark-table`,role:`table`,"aria-label":o(`lark.goalTopicConnections`),children:[(0,B.jsxs)(`div`,{className:`personal-lark-table-head`,role:`row`,children:[(0,B.jsx)(`span`,{children:o(`lark.connection`)}),(0,B.jsx)(`span`,{children:o(`common.goal`)}),(0,B.jsx)(`span`,{children:o(`lark.capture`)}),(0,B.jsx)(`span`,{children:o(`lark.processing`)}),(0,B.jsx)(`span`,{children:o(`common.actions`)})]}),Ge.map(e=>{let t=ax(e,o);return(0,B.jsxs)(`div`,{className:`personal-lark-table-row`,role:`row`,children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.chat_name}),(0,B.jsxs)(`small`,{children:[e.app_label,` · `,t.label]}),(0,B.jsx)(`small`,{children:t.detail}),t.state===`unverified`?(0,B.jsxs)(`a`,{href:`https://open.feishu.cn/document/server-docs/im-v1/message/events/receive?lang=zh-CN`,rel:`noreferrer`,target:`_blank`,children:[(0,B.jsx)(_m,{size:12}),o(`lark.openEventSettings`)]}):null,ox(e)?(0,B.jsxs)(`a`,{href:ox(e)??void 0,rel:`noreferrer`,target:`_blank`,children:[(0,B.jsx)(_m,{size:12}),o(`lark.historyPermission`)]}):null]}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.goal_title}),(0,B.jsxs)(`small`,{children:[`# `,e.topic_name]})]}),(0,B.jsx)(`span`,{children:e.capture_scope===`addressed_only`?o(`lark.mentionsOnly`):o(`lark.allTopicMessages`)}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.conversation_kind===`manager`?o(`lark.managerConversation`):ix(e.ingress_mode,o).label}),(0,B.jsx)(`small`,{children:e.conversation_kind===`manager`?o(`lark.managerConversationDescription`):e.agent_id??ix(e.ingress_mode,o).detail})]}),(0,B.jsxs)(`span`,{className:`personal-lark-row-actions`,children:[(0,B.jsx)(`button`,{"aria-label":o(`lark.settingsConfigure`,{goal:e.goal_title}),onClick:()=>Je(e),type:`button`,children:(0,B.jsx)(Ym,{size:15})}),(0,B.jsxs)(`button`,{"aria-label":o(`lark.settingsDisconnect`,{goal:e.goal_title}),className:ye===e.connection_id?`is-confirm`:``,onClick:()=>void $e(e.goal_id,e.connection_id),type:`button`,children:[(0,B.jsx)(ih,{size:15}),ye===e.connection_id?o(`common.confirm`):null]})]})]},e.connection_id)}),Ge.length===0?(0,B.jsx)(`p`,{className:`personal-lark-empty`,children:o(`lark.noConnections`)}):null]})]}):null,y?(0,B.jsx)(`div`,{className:`personal-lark-modal-backdrop`,role:`presentation`,children:(0,B.jsxs)(`section`,{"aria-labelledby":`connect-lark-title`,"aria-modal":`true`,className:`personal-lark-modal`,role:`dialog`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`small`,{children:`Goal Topic connection`}),(0,B.jsx)(`h2`,{id:`connect-lark-title`,children:o(he?`lark.editConnection`:`lark.connectApp`)})]}),(0,B.jsx)(`button`,{"aria-label":o(`lark.closeConnection`),onClick:()=>b(!1),type:`button`,children:(0,B.jsx)(ah,{size:18})})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.conversationKind`)}),(0,B.jsxs)(`select`,{"aria-label":o(`lark.conversationKind`),disabled:!!_e,value:P,onChange:e=>re(e.target.value),children:[(0,B.jsx)(`option`,{value:`manager`,children:o(`lark.managerConversation`)}),(0,B.jsx)(`option`,{value:`goal`,children:o(`lark.workerConversation`)})]})]}),P===`manager`?(0,B.jsx)(`p`,{children:o(`lark.managerConversationDescription`)}):null,_e?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.appProfile`)}),(0,B.jsx)(`div`,{children:_e.app_label})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.groupChat`)}),(0,B.jsx)(`div`,{children:_e.chat_name})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.bindGoal`)}),(0,B.jsx)(`div`,{children:_e.goal_title})]}),(0,B.jsx)(`small`,{children:o(`lark.editPreservesIdentity`)})]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.appProfile`)}),(0,B.jsx)(`select`,{"aria-label":o(`lark.appProfile`),disabled:p,onChange:e=>{e.target.value===`__register__`?Ye():(S(e.target.value),ue({}))},value:x,children:p?(0,B.jsx)(`option`,{value:``,children:o(`lark.appLoading`)}):(0,B.jsxs)(B.Fragment,{children:[l.map(e=>(0,B.jsxs)(`option`,{disabled:!e.ready,value:e.app_ref,children:[e.label,e.reply_ready?``:e.ready?` · ${o(`lark.needsMessagePermissions`)}`:` · ${o(`lark.needsSetup`)}`]},e.app_ref)),(0,B.jsx)(`option`,{value:`__register__`,children:o(`lark.registerAnother`)})]})}),(0,B.jsx)(`small`,{children:o(`lark.defaultAgentAppDescription`)})]}),Ue?.ready&&!Ue.reply_ready?(0,B.jsx)(`div`,{className:`personal-lark-group-state is-error`,role:`alert`,children:o(`lark.appPermissions`)}):null,(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.groupChat`)}),(0,B.jsx)(`input`,{"aria-label":o(`lark.groupSearch`),onChange:e=>E(e.target.value),placeholder:o(`lark.groupSearch`),type:`search`,value:T}),te?(0,B.jsxs)(`div`,{className:`personal-lark-group-state`,role:`status`,children:[(0,B.jsx)(km,{className:`is-spinning`,size:15}),o(`lark.groupLoading`)]}):null,!te&&j?(0,B.jsx)(`div`,{className:`personal-lark-group-state is-error`,role:`alert`,children:j}):null,!te&&!j&&D.length===0?(0,B.jsx)(`div`,{className:`personal-lark-group-state`,role:`status`,children:o(`lark.groupEmpty`)}):null,!te&&!j&&D.length>0?(0,B.jsx)(`select`,{"aria-label":o(`lark.groupChat`),onChange:e=>ee(e.target.value),value:k,children:D.map(e=>(0,B.jsx)(`option`,{value:e.chat_id,children:e.chat_name},e.chat_id))}):null]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.bindGoal`)}),(0,B.jsx)(`select`,{"aria-label":o(`lark.bindGoal`),onChange:e=>{let t=e.target.value;w(t),se(n.find(e=>e.goalId===t)?.agentId??``),ue({})},value:C,children:n.map(e=>(0,B.jsx)(`option`,{value:e.goalId,children:e.title},e.goalId))})]})]}),(0,B.jsxs)(`label`,{className:`personal-lark-check`,children:[(0,B.jsx)(`input`,{checked:!0,readOnly:!0,type:`checkbox`}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:o(`lark.createAutomatically`)}),(0,B.jsx)(`small`,{children:o(`lark.createAutomaticallyDescription`)})]})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.topicPreview`)}),(0,B.jsxs)(`div`,{className:`personal-lark-topic-preview`,children:[(0,B.jsx)(Nm,{size:15}),`# `,Ie?.title??Ie?.goalId??`Goal`]})]}),P===`goal`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.captureScope`)}),(0,B.jsxs)(`select`,{"aria-label":o(`lark.captureScope`),disabled:_e?.ingress_mode===`direct_session`,onChange:e=>N(e.target.value),value:ne,children:[(0,B.jsx)(`option`,{value:`addressed_only`,children:o(`lark.captureAddressed`)}),(0,B.jsx)(`option`,{value:`configured_chat_all`,children:o(`lark.captureAll`)})]}),(0,B.jsx)(`small`,{children:o(`lark.captureScopeDescription`)})]}),(0,B.jsxs)(`fieldset`,{"aria-label":o(`lark.agentIngress`),className:`personal-lark-ingress`,children:[(0,B.jsx)(`legend`,{children:o(`lark.agentIngress`)}),(0,B.jsx)(`div`,{children:[`live_steering`,`session_queue`,`async_inbox`].map(e=>{let t=ix(e,o);return(0,B.jsxs)(`label`,{className:ie===e?`is-active`:``,children:[(0,B.jsx)(`input`,{"aria-label":t.label,checked:ie===e,name:`lark-agent-ingress`,onChange:()=>ae(e),type:`radio`,value:e}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:t.label}),(0,B.jsx)(`small`,{children:t.detail})]})]},e)})})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.targetAgent`)}),(0,B.jsxs)(`select`,{"aria-label":o(`lark.targetAgent`),disabled:!!_e?.agent_id,onChange:e=>se(e.target.value),value:I,children:[ze?null:(0,B.jsx)(`option`,{disabled:!0,value:I,children:I?o(`lark.agentUnavailable`,{agent:I}):o(`lark.noAgentConfigured`)}),Re.map(e=>(0,B.jsx)(`option`,{value:e.agentId,children:e.label===e.agentId?e.agentId:`${e.label} · ${e.agentId}`},e.agentId))]}),(0,B.jsx)(`small`,{children:o(`lark.targetAgentDescription`)})]}),!he&&Re.length>1?(0,B.jsxs)(`label`,{"aria-label":o(`lark.connectAllAgents`),className:`personal-lark-check`,children:[(0,B.jsx)(`input`,{checked:L,onChange:e=>ce(e.target.checked),type:`checkbox`}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:o(`lark.connectAllAgents`)}),(0,B.jsx)(`small`,{children:o(`lark.connectAllAgentsDescription`,{count:Re.length})})]})]}):null,!he&&L&&Re.length>1?(0,B.jsxs)(`fieldset`,{"aria-label":o(`lark.agentApps`),className:`personal-lark-agent-apps`,children:[(0,B.jsx)(`legend`,{children:o(`lark.agentApps`)}),(0,B.jsx)(`small`,{children:o(`lark.agentAppsDescription`)}),(0,B.jsx)(`div`,{children:Re.map(e=>(0,B.jsxs)(`label`,{children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.label}),(0,B.jsx)(`small`,{children:e.agentId})]}),(0,B.jsx)(`select`,{"aria-label":o(`lark.agentAppSelection`,{agent:e.label}),onChange:t=>ue(n=>({...n,[e.agentId]:t.target.value})),value:le[e.agentId]??x,children:l.map(e=>(0,B.jsxs)(`option`,{disabled:!e.ready,value:e.app_ref,children:[e.label,e.reply_ready?``:e.ready?` · ${o(`lark.needsMessagePermissions`)}`:` · ${o(`lark.needsSetup`)}`]},e.app_ref))})]},e.agentId))})]}):null,L&&V.length>0&&!Ve?(0,B.jsx)(`div`,{className:`personal-lark-group-state is-error`,role:`alert`,children:o(`lark.agentAppPermissions`)}):null,Be.length===0?(0,B.jsx)(`p`,{className:`personal-notification-error`,role:`alert`,children:o(`lark.selectRegisteredAgent`)}):null]}):null,(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.replyMode`)}),(0,B.jsx)(`select`,{"aria-label":o(`lark.replyMode`),onChange:e=>oe(e.target.value),value:F,children:(0,B.jsx)(`option`,{value:`topic_reply`,children:o(`lark.topicReply`)})}),(0,B.jsx)(`small`,{children:o(`lark.replyModeDescription`)})]}),(0,B.jsxs)(`p`,{className:`personal-lark-cardinality`,children:[(0,B.jsx)(am,{size:15}),o(`lark.cardinality`)]}),pe?(0,B.jsx)(`p`,{className:`personal-notification-error`,role:`alert`,children:pe}):null,(0,B.jsxs)(`footer`,{children:[(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:()=>b(!1),type:`button`,children:o(`lark.cancel`)}),(0,B.jsxs)(`button`,{className:`personal-primary-action`,disabled:p||!x||!_e&&(!Ue?.reply_ready||!k)||P===`goal`&&(!Ve||Be.length===0)||!C||de,onClick:()=>void Qe(),type:`button`,children:[de?(0,B.jsx)(km,{className:`is-spinning`,size:15}):null,He]})]})]})}):null,xe?(0,B.jsx)(`div`,{className:`personal-lark-modal-backdrop is-setup`,role:`presentation`,children:(0,B.jsxs)(`section`,{"aria-labelledby":`new-lark-app-title`,"aria-modal":`true`,className:`personal-lark-modal personal-lark-setup-modal`,role:`dialog`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`small`,{children:o(`lark.reusableWorkspaceApp`)}),(0,B.jsx)(`h2`,{id:`new-lark-app-title`,children:o(`lark.newApp`)})]}),(0,B.jsx)(`button`,{"aria-label":o(`lark.closeCreate`),onClick:()=>void Ze(),type:`button`,children:(0,B.jsx)(ah,{size:18})})]}),De?(0,B.jsxs)(`div`,{className:`personal-lark-setup-progress`,children:[(0,B.jsx)(`span`,{className:`personal-lark-setup-icon is-${De.status}`,children:De.status===`ready`?(0,B.jsx)(am,{size:22}):(0,B.jsx)(km,{className:De.status===`failed`?``:`is-spinning`,size:22})}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:De.status===`ready`?o(`lark.appCreated`):De.status===`failed`?o(`lark.appCreateFailed`):o(`lark.waitingFeishu`)}),(0,B.jsx)(`p`,{children:De.status===`waiting_for_feishu`?o(`lark.waitingFeishuDescription`):De.status===`starting`?o(`lark.waitingLink`):De.error})]}),De.verification_url?(0,B.jsxs)(`a`,{href:De.verification_url,rel:`noreferrer`,target:`_blank`,children:[(0,B.jsx)(_m,{size:15}),o(`lark.reopenFeishu`)]}):null]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{className:`personal-lark-setup-copy`,children:o(`lark.setupCopy`)}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.profileName`)}),(0,B.jsx)(`input`,{"aria-label":o(`lark.profileName`),autoComplete:`off`,onChange:e=>we(e.target.value),placeholder:`loopx-workspace-bot`,value:Ce})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.region`)}),(0,B.jsxs)(`select`,{"aria-label":o(`lark.region`),onChange:e=>Ee(e.target.value),value:Te,children:[(0,B.jsx)(`option`,{value:`feishu`,children:`Feishu`}),(0,B.jsx)(`option`,{value:`lark`,children:`Lark`})]})]}),Ce&&!/^[A-Za-z0-9][A-Za-z0-9._-]{0,99}$/.test(Ce)?(0,B.jsx)(`p`,{className:`personal-notification-error`,children:o(`lark.profileValidation`)}):null]}),R?(0,B.jsx)(`p`,{className:`personal-notification-error`,children:R}):null,(0,B.jsxs)(`footer`,{children:[(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:()=>void Ze(),type:`button`,children:o(`lark.cancel`)}),De?null:(0,B.jsxs)(`button`,{className:`personal-primary-action`,disabled:ke||!/^[A-Za-z0-9][A-Za-z0-9._-]{0,99}$/.test(Ce),onClick:()=>void Xe(),type:`button`,children:[ke?(0,B.jsx)(km,{className:`is-spinning`,size:15}):(0,B.jsx)(_m,{size:15}),o(`lark.continueFeishu`)]})]})]})}):null]})}function lx(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function ux(e,t,n){let r=lx(t),i=lx(n);return Object.fromEntries(e.fields.flatMap(({key:e,nullable:t})=>{let n=r[e],a=i[e];return Object.hasOwn(r,e)&&(n!=null||t&&n===null)?[[e,n]]:Object.hasOwn(i,e)&&a!=null?[[e,a]]:[]}))}function dx(e,t){let n;try{n=JSON.parse(t)}catch{return null}if(!n||typeof n!=`object`||Array.isArray(n))return null;let r=new Set(e.fields.map(e=>e.key));return Object.keys(n).some(e=>!r.has(e))?null:n}function fx(e,t,n){let r={...e,[t]:n},i=e.schedule;return t===`timezone`&&i&&typeof i==`object`&&`schema_version`in i&&i.schema_version===`periodic_report_schedule_v0`&&(r.schedule={...i,timezone:n}),r}function px({id:e,value:t,timezone:n,onChange:r}){let{locale:i}=Ji(),a=i===`zh-CN`,o=t&&typeof t==`object`&&!Array.isArray(t)?t:null,s=String(o?.rrule??``).split(`;`).map(e=>e.split(`=`)),c=Object.fromEntries(s.filter(e=>e.length===2)),l=[`MO`,`TU`,`WE`,`TH`,`FR`,`SA`,`SU`],u=(e,t)=>e!==void 0&&/^\d+$/.test(e)&&Number(e)<=t,d=!o||o.schema_version===`periodic_report_schedule_v0`&&[`DAILY`,`WEEKLY`].includes(c.FREQ)&&o.timezone===n&&s.every(e=>e.length===2&&[`FREQ`,`BYDAY`,`BYHOUR`,`BYMINUTE`,`INTERVAL`].includes(e[0]))&&new Set(s.map(([e])=>e)).size===s.length&&u(c.BYHOUR,23)&&u(c.BYMINUTE??`0`,59)&&(c.FREQ===`WEEKLY`?l.includes(c.BYDAY):!c.BYDAY)&&(!c.INTERVAL||c.INTERVAL===`1`),f=a?[`星期一`,`星期二`,`星期三`,`星期四`,`星期五`,`星期六`,`星期日`]:[`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`,`Sunday`];function p(e){let t={FREQ:`WEEKLY`,BYDAY:`MO`,BYHOUR:`9`,BYMINUTE:`0`,...c,...e};r?.({schema_version:`periodic_report_schedule_v0`,schedule_id:o?.schedule_id??`report-schedule`,timezone:n,rrule:[`FREQ=${t.FREQ}`,...t.FREQ===`WEEKLY`?[`BYDAY=${t.BYDAY}`]:[],`BYHOUR=${t.BYHOUR}`,`BYMINUTE=${t.BYMINUTE}`].join(`;`)})}return(0,B.jsxs)(`div`,{className:`personal-report-schedule`,children:[(0,B.jsxs)(`label`,{className:`is-boolean`,htmlFor:e,children:[(0,B.jsx)(`span`,{children:a?`按日历汇报`:`Calendar reports`}),(0,B.jsx)(`input`,{id:e,type:`checkbox`,role:`switch`,checked:!!o,disabled:!r,onChange:e=>e.target.checked?p({}):r?.(null)})]}),o?(0,B.jsxs)(B.Fragment,{children:[d?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{htmlFor:`${e}-frequency`,children:[(0,B.jsx)(`span`,{children:a?`频率`:`Frequency`}),(0,B.jsxs)(`select`,{id:`${e}-frequency`,value:c.FREQ,disabled:!r,onChange:e=>p({FREQ:e.target.value}),children:[(0,B.jsx)(`option`,{value:`DAILY`,children:a?`每天`:`Daily`}),(0,B.jsx)(`option`,{value:`WEEKLY`,children:a?`每周`:`Weekly`})]})]}),c.FREQ===`WEEKLY`&&(0,B.jsxs)(`label`,{htmlFor:`${e}-day`,children:[(0,B.jsx)(`span`,{children:a?`星期`:`Weekday`}),(0,B.jsx)(`select`,{id:`${e}-day`,value:c.BYDAY,disabled:!r,onChange:e=>p({BYDAY:e.target.value}),children:l.map((e,t)=>(0,B.jsx)(`option`,{value:e,children:f[t]},e))})]}),(0,B.jsxs)(`label`,{htmlFor:`${e}-time`,children:[(0,B.jsxs)(`span`,{children:[a?`当地时间`:`Local time`,` (`,n,`)`]}),(0,B.jsx)(`input`,{id:`${e}-time`,type:`time`,required:!0,disabled:!r,value:`${(c.BYHOUR??`9`).padStart(2,`0`)}:${(c.BYMINUTE??`0`).padStart(2,`0`)}`,onChange:e=>{if(!/^\d{2}:\d{2}$/.test(e.target.value))return;let[t,n]=e.target.value.split(`:`);p({BYHOUR:t,BYMINUTE:n})}})]})]}):(0,B.jsx)(`p`,{role:`alert`,children:a?`此计划需在 JSON 模式中编辑;当前内容已保留。`:`Edit this schedule in JSON mode; its current value is preserved.`}),(0,B.jsx)(`p`,{children:a?`由现有唤醒检查到期计划;实际送达以回执为准。`:`Existing wakes check the schedule; delivery is confirmed by its receipt.`})]}):(0,B.jsx)(`p`,{children:a?`未设置日历计划;保持阶段结束时汇报。`:`No calendar schedule; report at validated stage boundaries.`})]})}function mx({copy:e,field:t,id:n,onChange:r,value:i,timezone:a}){let o=e[t.key]?.label??t.label,s=!r;if(t.input_kind===`periodic_report_schedule`)return(0,B.jsx)(px,{id:n,value:i,timezone:a,onChange:r?e=>r(t.key,e):void 0});if(t.input_kind===`boolean`)return(0,B.jsxs)(`label`,{className:`is-boolean`,htmlFor:n,children:[(0,B.jsx)(`span`,{children:o}),(0,B.jsx)(`input`,{checked:i===!0,id:n,onChange:r?e=>r(t.key,e.target.checked):void 0,readOnly:s,role:`switch`,type:`checkbox`})]});if(t.input_kind===`select`)return(0,B.jsxs)(`label`,{htmlFor:n,children:[(0,B.jsx)(`span`,{children:o}),(0,B.jsxs)(`select`,{id:n,onChange:r?e=>r(t.key,e.target.value):void 0,value:typeof i==`string`?i:``,children:[(0,B.jsx)(`option`,{value:``}),(t.options??[]).map(e=>(0,B.jsx)(`option`,{value:e,children:e},e))]})]});if(t.input_kind===`string_list`)return(0,B.jsxs)(`label`,{htmlFor:n,children:[(0,B.jsx)(`span`,{children:o}),(0,B.jsx)(`textarea`,{id:n,onChange:r?e=>r(t.key,e.target.value.split(/\r?\n/u).filter(Boolean)):void 0,readOnly:s,rows:4,value:Array.isArray(i)?i.join(` +`):``})]});let c=t.input_kind===`number`;return(0,B.jsxs)(`label`,{htmlFor:n,children:[(0,B.jsx)(`span`,{children:o}),(0,B.jsx)(`input`,{id:n,max:t.maximum,min:t.minimum,onChange:r?e=>r(t.key,c?Number(e.target.value):e.target.value):void 0,readOnly:s,required:t.required,type:c?`number`:`text`,value:typeof i==`number`||typeof i==`string`?i:``})]})}function hx({copy:e={},disabled:t=!1,editor:n,enabledAction:r,omitKeys:i=[],onChange:a,value:o}){let s=(0,z.useId)(),c=new Set(i);return(0,B.jsx)(`fieldset`,{className:`personal-capability-fields`,disabled:t,children:n.fields.filter(e=>!c.has(e.key)).map(t=>{let n=(0,B.jsx)(mx,{copy:e,field:t,id:`${s}-${t.key.replace(/[^a-z0-9_-]/gi,`-`)}`,onChange:a,value:o[t.key],timezone:String(o.timezone??`UTC`)},t.key);return t.key===`enabled`&&t.input_kind===`boolean`?(0,B.jsxs)(`div`,{className:`personal-capability-enabled-row`,children:[n,r]},t.key):n})})}var gx={en:{manager_runtime:{displayName:`Manager runtime`,description:`Selects the persistent host-tool profile used by owner manager conversations.`},steward_executor:{displayName:`Steward executor`,description:`Selects the executor, model, and reasoning effort the steward channel answers on for this machine, ahead of the Chat service environment.`},todo_replan_cadence:{displayName:`Goal review cadence`,description:`Configures the Goal review cadence.`},change_quality_qualification:{displayName:`Change quality qualification`,description:`Prepares a provider-neutral review packet, allows at most one policy-authorized safe-fix pass, and can require an exact-diff receipt.`},explore_graph:{displayName:`Explore Graph`,description:`Organizes bounded exploration as a typed evidence graph so branches, findings, and synthesis remain inspectable.`},explore_harness:{displayName:`Explore Harness`,description:`Selects a capability-owned planning and research harness profile for bounded multi-step exploration.`},lark_event_inbox:{displayName:`Lark event inbox`,description:`Receives provider events through a local-private inbox binding before LoopX projects them into governed work.`,readOnlyReason:`This capability requires a local-private inbox binding. Manage it in Lark settings or through the capability CLI.`},lark_kanban_heartbeat_sync:{displayName:`Lark Kanban heartbeat sync`,description:`Synchronizes accepted LoopX work state to the configured Lark Kanban heartbeat surface.`},local_authority_shadow:{displayName:`Local authority shadow`,description:`Observes post-commit Todo and task-lease state through the shared authority contract without taking write authority.`},multi_subagent:{displayName:`Adaptive child capacity`,description:`Sets bounded child-agent capacity and the public-safe responsibility domains in which parallel work may be delegated.`},peer_task_coordination:{displayName:`Registered-peer task coordination`,description:`Routes explicitly scoped peer-owned work to one registered coordinator without granting cross-owner mutation authority.`},periodic_report:{displayName:`Periodic reports`,description:`Turns validated Goal stage progress into a frozen report and automatically delivers it through the configured Goal Channel with exact readback.`},pull_request_review:{displayName:`Pull-request review`,description:`Ranks the public GitHub PR review queue with a machine-level default; it never grants GitHub, Todo, push, or merge authority.`},reward_memory:{displayName:`Reward Memory experiment`,description:`Configures a reviewed local-private provider binding for Goal-scoped Agent recall and evidence-backed outcome learning.`}},"zh-CN":{manager_runtime:{displayName:`管家 Runtime`,description:`选择管家会话持续生效的宿主工具模式。`},steward_executor:{displayName:`管家执行器`,description:`选择本机管家通道使用的执行器、模型与推理档位,优先级高于服务环境变量。`},todo_replan_cadence:{displayName:`Goal 复核周期`,description:`配置 Goal 的复核周期。`},change_quality_qualification:{displayName:`变更质量验证`,description:`生成与 Provider 无关的审阅包,最多允许一次策略授权的安全修复,并可要求精确 diff 回执。`},explore_graph:{displayName:`探索图谱`,description:`把有界探索组织为 typed 证据图,让探索分支、发现与综合结论都可检查、可追溯。`},explore_harness:{displayName:`探索 Harness`,description:`为有界的多步探索选择由能力负责的规划与研究 Harness profile。`},lark_event_inbox:{displayName:`飞书事件收件箱`,description:`通过本机私有收件箱接收 Provider 事件,再由 LoopX 将其投影为受治理的工作。`,readOnlyReason:`此能力依赖本机私有的收件箱绑定,请在飞书设置或 capability CLI 中管理。`},lark_kanban_heartbeat_sync:{displayName:`飞书看板心跳同步`,description:`把 LoopX 已接受的工作状态同步到配置好的飞书看板心跳界面。`},local_authority_shadow:{displayName:`本地 Authority 影子观测`,description:`通过共享 Authority contract 观测提交后的 Todo 与 task lease 状态,但不取得写入权。`},multi_subagent:{displayName:`自适应子 Agent 容量`,description:`限定子 Agent 容量与可公开的职责域,只有落在这些边界内的工作才能并行委派。`},peer_task_coordination:{displayName:`已注册 Peer 任务协调`,description:`把明确限定的 Peer 工作路由给一个已注册协调者,不授予跨 Owner 修改权限。`},periodic_report:{displayName:`周期报告`,description:`把经过验证的 Goal 阶段进展整理为冻结报告,并通过配置的 Goal Channel 自动发送和精确回读。`},pull_request_review:{displayName:`Pull-request Review`,description:`配置公开 GitHub PR 审阅队列的本机默认排序;不会授予 GitHub、Todo、push 或 merge 权限。`},reward_memory:{displayName:`Reward Memory 实验`,description:`为 Goal 内 Agent 的召回与证据化结果学习配置经过审阅的本机私有 Provider 绑定。`}}},_x={en:{runtime_profile:{label:`Runtime profile`,description:`Restricted keeps scoped LoopX reads only. Trusted owner enables normal host tools while protected operations retain separate checks.`},executor_endpoint:{label:`Steward executor`,description:`The executor this machine's steward channel answers on. The choice outranks the Chat service environment and the shipped default.`},executor_model:{label:`Model`,description:`Optional model for the selected executor. Leave blank to keep the executor's own default.`},executor_reasoning_effort:{label:`Reasoning effort`,description:`Optional reasoning effort for the selected executor. Leave blank to keep the executor's own default.`},completed_todos:{label:`Completed Todos between Goal reviews`,description:`Machine default or explicit Goal override, from 1 to 5.`},allowed_domains:{label:`Allowed responsibility domains`,description:`Enter one bounded, public-safe domain per line.`},coordinator_agent_id:{label:`Coordinator Agent`,description:`Use an already registered Agent id; leave blank to disable coordination.`},enabled:{label:`Enabled`},model:{label:`Child model`,description:`For example gpt-5.6-luna. Blank clears the child model preference.`},reasoning_effort:{label:`Child reasoning effort`,description:`For example max; the host must support this model and effort.`},max_children:{label:`Maximum children`,description:`Hard upper bound for concurrently delegated child work.`},profile:{label:`Planner profile`,description:`Select one registered Explore Harness profile.`},profile_preset:{label:`Report profile`,description:`Capability-owned report profile, such as weekly-progress.`},wait_for_ci:{label:`Wait for CI`,description:`Disable to use local validation without querying or waiting for CI. Merge authority is unchanged.`},review_priority:{label:`Review priority`,description:`Choose whether other developers' PRs or the authenticated reviewer's own PRs are ranked first.`},route_ref:{label:`Goal Channel route`,description:`Public route alias only; credentials and provider identifiers stay outside this form.`},safe_fix:{label:`Allow one bounded safe-fix pass`},strict_receipt:{label:`Require an exact-diff receipt`},timezone:{label:`Timezone`,description:`Use an IANA timezone, for example Asia/Shanghai.`},schedule:{label:`Calendar reports`,description:`Optional daily or weekly reports; no schedule preserves stage-only delivery.`},config_path:{label:`Local-private configuration path`,description:`Repo-relative ignored JSON under .loopx/config/. Leave blank to retain the current binding; the path is never returned.`},enabled_agents:{label:`Enabled Goal Agents`,description:`Enter one registered Goal-local Agent id per line. A private binding currently accepts exactly one Agent.`}},"zh-CN":{runtime_profile:{label:`运行模式`,description:`restricted 仅使用受限 LoopX 读取;trusted_owner 开放常规宿主工具,但受保护操作仍单独校验。`},executor_endpoint:{label:`管家执行器`,description:`本机管家通道使用的执行器;优先级高于 Chat 服务环境变量与出货默认值。`},executor_model:{label:`模型`,description:`所选执行器使用的模型,可留空;留空表示沿用执行器自身的默认模型。`},executor_reasoning_effort:{label:`推理档位`,description:`所选执行器使用的推理档位,可留空;留空表示沿用执行器自身的默认档位。`},completed_todos:{label:`两次 Goal 复核间的已完成 Todo 数`,description:`可设置 1–5;机器默认值可被 Goal 显式覆盖。`},allowed_domains:{label:`允许的职责域`,description:`每行填写一个有边界、可公开的职责域。`},coordinator_agent_id:{label:`协调 Agent`,description:`填写一个已经注册的 Agent ID;留空表示关闭协调。`},enabled:{label:`启用`},model:{label:`子 Agent 模型`,description:`例如 gpt-5.6-luna;留空清除模型偏好。`},reasoning_effort:{label:`子 Agent 推理档位`,description:`例如 max;宿主须支持所选模型与档位。`},max_children:{label:`最大子 Agent 数`,description:`可同时委派的子任务硬上限。`},profile:{label:`规划 Profile`,description:`选择一个已注册的 Explore Harness profile。`},profile_preset:{label:`报告 Profile`,description:`由该能力管理的报告 profile,例如 weekly-progress。`},wait_for_ci:{label:`等待 CI`,description:`关闭后使用本地验证,不查询或等待 CI;不改变合并权限。`},review_priority:{label:`审阅优先级`,description:`选择先排其他开发者的 PR,还是先排当前已认证审阅者自己的 PR。`},route_ref:{label:`Goal Channel 路由`,description:`只填写公开 route alias;凭据与 Provider 标识不会进入此表单。`},safe_fix:{label:`允许一次有界安全修复`},strict_receipt:{label:`要求精确 diff 回执`},timezone:{label:`时区`,description:`使用 IANA 时区,例如 Asia/Shanghai。`},schedule:{label:`日历汇报`,description:`可选每日或每周计划;未设置时保持阶段结束汇报。`},config_path:{label:`本机私有配置路径`,description:`填写 .loopx/config/ 下、相对仓库且被忽略的 JSON;留空保留当前绑定,路径不会被回传。`},enabled_agents:{label:`已启用的 Goal Agent`,description:`每行填写一个已注册的 Goal 内 Agent ID;私有绑定当前只接受一个 Agent。`}}};function vx(e,t){let n=gx[t][e.capability_id];return n?{...e,display_name:n.displayName,description:n.description,configuration_editor:{...e.configuration_editor,...n.readOnlyReason?{read_only_reason:n.readOnlyReason}:{}}}:e}function yx(e){return _x[e]}Object.freeze(Object.keys(gx.en).sort());function bx(e,t){return e.available_scopes.includes(t)&&(t!==`machine`||!!e.machine_namespace)&&e.configuration_editor.editable&&e.configuration_editor.writable_scopes.includes(t)}function xx({values:e,t}){return(0,B.jsxs)(`details`,{className:`personal-capability-raw-values`,children:[(0,B.jsx)(`summary`,{children:t(`capabilities.rawJson`)}),(0,B.jsx)(`div`,{className:`personal-capability-value-grid`,children:e.map(({label:e,value:t})=>(0,B.jsxs)(`section`,{children:[(0,B.jsx)(`strong`,{children:e}),(0,B.jsx)(`pre`,{children:t?JSON.stringify(t,null,2):`—`})]},e))})]})}function Sx({source:e,t}){return e?(0,B.jsxs)(`p`,{className:`personal-capability-effective-source`,children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:15}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:t(`capabilities.effectiveSource`)}),t(`capabilities.source.${e}`)]})]}):null}function Cx({available:e,description:t,t:n}){return e?null:(0,B.jsxs)(`section`,{className:`personal-capability-editor-status is-read-only`,children:[(0,B.jsx)(rh,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:n(`capabilities.readOnly`)}),(0,B.jsx)(`p`,{children:t})]})]})}function wx(e){return e.availability?.includes(`experimental`)?4:e.capability_id===`multi_subagent`?3:e.configuration_editor.writable_scopes.length===0||e.availability===`supported_explicit_opt_in`?2:e.availability===`supported_explicit_override`?0:1}function Tx(e,t){return[...e].sort((e,n)=>{let r=wx(e)-wx(n);if(r!==0)return r;let i=vx(e,t),a=vx(n,t);return i.display_name.localeCompare(a.display_name,t)||e.capability_id.localeCompare(n.capability_id)})}function Ex({capabilities:e,locale:t,onSelect:n,scope:r,selectedCapabilityId:i,t:a}){return(0,B.jsx)(`nav`,{"aria-label":a(r===`goal`?`capabilities.catalog`:`machine.capabilityCatalog`),className:`personal-capability-list`,tabIndex:0,children:Tx(e,t).map(e=>{let o=vx(e,t);return(0,B.jsxs)(`button`,{"aria-current":i===o.capability_id?`page`:void 0,onClick:()=>n(o.capability_id),type:`button`,children:[(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:o.display_name})}),(0,B.jsx)(`em`,{children:a(o.available_scopes.includes(r)?r===`goal`?`capabilities.goalScope`:`capabilities.machineScope`:r===`machine`?`capabilities.goalScope`:`capabilities.machineScope`)})]},o.capability_id)})})}function Dx({capability:e,locale:t,source:n}){let{t:r}=Ji(),i=vx(e,t);return(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`span`,{className:`personal-settings-icon`,children:(0,B.jsx)(Zm,{"aria-hidden":!0,size:18})}),(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`div`,{className:`personal-capability-heading-row`,children:[(0,B.jsx)(`h2`,{children:i.display_name}),(0,B.jsx)(Sx,{source:n,t:r})]}),e.context_contribution&&(0,B.jsxs)(`details`,{className:`personal-capability-help`,"data-testid":`capability-context-phases`,children:[(0,B.jsx)(`summary`,{children:t===`zh-CN`?`主 Agent 协作指导`:`Coordinator workflow guidance`}),(0,B.jsx)(`p`,{children:t===`zh-CN`?`随能力开启。支持以下阶段;此处展示能力范围,不能证明某次运行已读取或采纳。`:`Enabled with this capability. These are supported phases, not proof that a run read or adopted the guidance.`}),(0,B.jsx)(`dl`,{children:e.context_contribution.supported_phases.map(e=>(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:(0,B.jsx)(`code`,{children:e})}),(0,B.jsx)(`dd`,{children:Ox[e][t===`zh-CN`?`zh`:`en`]})]},e))}),(0,B.jsx)(`p`,{children:t===`zh-CN`?`LoopX Turn 在请求与结果中提供上下文;原生工具入口由 LoopX skill 调用同一只读接口。执行与采纳需另看运行证据。`:`LoopX Turn includes context in requests and results. For native tools, the LoopX skill reads the same interface. Execution and adoption require run evidence.`})]}),(0,B.jsxs)(`details`,{className:`personal-capability-help`,children:[(0,B.jsx)(`summary`,{children:t===`zh-CN`?`配置说明`:`Configuration help`}),(0,B.jsx)(`p`,{children:i.description}),(0,B.jsx)(`dl`,{children:e.configuration_editor.fields.map(e=>{let n=yx(t)[e.key],r=n?.description??e.description;return r?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:n?.label??e.label}),(0,B.jsx)(`dd`,{children:r})]},e.key):null})})]},e.capability_id)]})]})}var Ox={before_plan:{zh:`规划前:识别独立问题并保留主 Agent 的核验与整合职责。`,en:`Before planning: identify independent questions and retain coordinator validation and integration.`},before_delegate:{zh:`委派前:明确子任务边界、模型偏好及预期证据。`,en:`Before delegation: specify task boundaries, model preferences and expected evidence.`},after_delegate_result:{zh:`回收后:核验结果,说明采纳决定并关联计划与成果。`,en:`After results: validate evidence, explain acceptance and link plans and deliverables.`}};function kx({callbacks:e,goalId:t,notification:n,onChanged:r}){let{t:i}=Ji(),[a,o]=(0,z.useState)(!1),[s,c]=(0,z.useState)(null);async function l(n){if(e.onToggleGoalAutoNotify){o(!0),c(null);try{let a=await e.onToggleGoalAutoNotify({autoNotify:n,goalId:t});if(!a.ok){c(a.public_summary??a.blocker??i(`notifications.setupFailed`));return}r()}catch(e){c(e instanceof Error?e.message:i(`notifications.setupFailed`))}finally{o(!1)}}}return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{className:`personal-notification-toggle`,children:[(0,B.jsx)(`input`,{checked:n?.humanGateAutoNotifyEnabled??!1,disabled:a||n?.configured!==!0||!e.onToggleGoalAutoNotify,onChange:e=>void l(e.target.checked),type:`checkbox`}),(0,B.jsx)(`span`,{children:i(`notifications.autoNotify`)}),a?(0,B.jsx)(km,{"aria-hidden":!0,className:`is-spinning`,size:14}):null]}),s?(0,B.jsx)(`p`,{className:`personal-notification-error`,role:`alert`,children:s}):null]})}function Ax({goalId:e,onApplied:t,selected:n,t:r}){let[i,a]=(0,z.useState)({busy:null,draft:{},partialWrite:null,preview:null}),[o,s]=(0,z.useState)(null),[c,l]=(0,z.useState)(`guided`),[u,d]=(0,z.useState)(``),f=(0,z.useMemo)(()=>n?dx(n.configuration_editor,u):null,[n,u]),p=c===`guided`||f!==null;(0,z.useEffect)(()=>{l(`guided`),d(``),a({busy:null,draft:ux(n?.configuration_editor??{fields:[]},n?.current??n?.effective_configuration?.configuration??n?.default,n?.default),partialWrite:null,preview:null}),s(null)},[n]);async function m(t){if(!(!n||i.busy||!p)){a(e=>({...e,busy:`preview`,partialWrite:null})),s(null);try{let r=await Vg(e,n.capability_id,t);a(e=>({...e,preview:r}))}catch(e){s(e instanceof Error?e.message:r(`capabilities.previewFailed`))}finally{a(e=>({...e,busy:null}))}}}async function h(){if(!(!n||!i.preview||i.busy||!p)){a(e=>({...e,busy:`apply`})),s(null);try{let r=ux(n.configuration_editor,i.draft,n.default),o=await Hg(e,n.capability_id,i.preview.action===`delete`?null:r,i.preview.plan_revision);a(e=>({...e,partialWrite:o.status===`partial_write`?o:null,preview:null})),o.status!==`partial_write`&&t()}catch(e){a(e=>({...e,preview:null})),s(e instanceof Error?e.message:r(`capabilities.applyFailed`))}finally{a(e=>({...e,busy:null}))}}}function g(e,t){a(r=>({...r,draft:n?.capability_id===`periodic_report`?fx(r.draft,e,t):{...r.draft,[e]:t},preview:null})),s(null)}function _(e){if(!n||i.busy)return;d(e);let t=dx(n.configuration_editor,e);a(e=>({...e,preview:null,draft:t?ux(n.configuration_editor,t,n.default):e.draft})),s(null)}function v(){i.busy||!p||(c===`guided`&&d(JSON.stringify(i.draft,null,2)),l(c===`guided`?`json`:`guided`),a(e=>({...e,preview:null})))}return{apply:h,changeDraft:g,changeJson:_,changeMode:v,editorMode:c,jsonDraft:u,jsonValid:p,error:o,mutation:i,preview:m}}function jx({mutationError:e,onApplied:t,partialWrite:n,preview:r}){let{t:i}=Ji();return(0,B.jsxs)(B.Fragment,{children:[e?(0,B.jsx)(`p`,{className:`personal-machine-error`,role:`alert`,children:e}):null,n?(0,B.jsxs)(`section`,{"aria-live":`polite`,className:`personal-capability-recovery`,children:[(0,B.jsx)(rh,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:i(`capabilities.partialWrite`)}),(0,B.jsx)(`p`,{children:i(`capabilities.partialWriteDescription`)}),(0,B.jsx)(`small`,{children:n.recommended_action})]}),(0,B.jsxs)(`button`,{onClick:t,type:`button`,children:[(0,B.jsx)(Hm,{"aria-hidden":!0,size:15}),i(`capabilities.refreshSource`)]})]}):null,r?(0,B.jsxs)(`section`,{className:`personal-capability-preview`,"aria-label":i(`capabilities.preview`),children:[(0,B.jsx)(`strong`,{children:i(`capabilities.preview`)}),(0,B.jsx)(`span`,{children:i(`machine.action.${r.action}`)}),(0,B.jsx)(`small`,{children:i(`capabilities.previewLocked`)})]}):null]})}function Mx({callbacks:e,catalog:t,goalId:n,notification:r,onApplied:i,onNotificationChanged:a}){let{locale:o,t:s}=Ji(),c=(0,z.useMemo)(()=>Tx(t.capabilities,o),[t.capabilities,o]),[l,u]=(0,z.useState)(()=>c[0]?.capability_id??``),d=(0,z.useMemo)(()=>c.find(e=>e.capability_id===l)??c[0],[c,l]),f=(0,z.useMemo)(()=>d?vx(d,o):void 0,[o,d]),{apply:p,changeDraft:m,changeJson:h,changeMode:g,editorMode:_,jsonDraft:v,jsonValid:y,error:b,mutation:x,preview:S}=Ax({goalId:n,onApplied:i,selected:f,t:s}),{busy:C,draft:w,partialWrite:T,preview:E}=x;if(!d||!f)return(0,B.jsx)(`p`,{className:`personal-capability-empty`,children:s(`capabilities.empty`)});let D=f.available_scopes.includes(`goal`),O=bx(f,`goal`),k=f.configuration_editor.read_only_reason??s(D?`capabilities.previewOnly`:`capabilities.machineOnly`);async function ee(){if(!f||!O||C||!y)return;let e=ux(f.configuration_editor,w,f.default);await S(e)}async function te(){!O||C||await S(null)}return(0,B.jsxs)(`div`,{className:`personal-capability-layout`,children:[(0,B.jsx)(Ex,{capabilities:t.capabilities,locale:o,onSelect:u,scope:`goal`,selectedCapabilityId:f.capability_id,t:s}),(0,B.jsxs)(`article`,{"aria-label":f.display_name,className:`personal-capability-detail`,tabIndex:0,children:[(0,B.jsx)(Dx,{capability:d,locale:o,source:f.effective_configuration?.source}),(0,B.jsx)(Cx,{available:O,t:s,description:k}),f.capability_id===`lark_event_inbox`?(0,B.jsxs)(`section`,{className:`personal-capability-linked-setting`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:s(`capabilities.larkInboxNotificationSetting`)}),(0,B.jsx)(`p`,{children:s(`capabilities.larkInboxNotificationDescription`)})]}),(0,B.jsx)(kx,{callbacks:e,goalId:n,notification:r,onChanged:a})]}):null,O?(0,B.jsxs)(B.Fragment,{children:[_===`json`||!f.configuration_editor.fields.some(e=>e.key===`enabled`&&e.input_kind===`boolean`)?(0,B.jsx)(`div`,{className:`personal-capability-editor-mode`,children:(0,B.jsxs)(`button`,{disabled:!!C||!y,onClick:g,type:`button`,children:[(0,B.jsx)(fm,{"aria-hidden":!0,size:14}),s(_===`guided`?`machine.editJson`:`machine.backToForm`)]})}):null,_===`guided`?(0,B.jsx)(`section`,{className:`personal-capability-field-summary`,children:(0,B.jsx)(hx,{disabled:!!C,copy:yx(o),editor:f.configuration_editor,onChange:m,value:w,enabledAction:(0,B.jsxs)(`button`,{className:`personal-capability-edit-json`,onClick:g,type:`button`,children:[(0,B.jsx)(fm,{"aria-hidden":!0,size:14}),s(`machine.editJson`)]})})}):(0,B.jsxs)(`label`,{className:`personal-capability-json-editor`,htmlFor:`goal-configuration-json`,children:[(0,B.jsx)(`span`,{children:s(`capabilities.jsonConfiguration`)}),(0,B.jsx)(`textarea`,{id:`goal-configuration-json`,"aria-describedby":`goal-configuration-json-help`,disabled:!!C,onChange:e=>h(e.target.value),rows:12,spellCheck:!1,value:v}),(0,B.jsx)(`small`,{id:`goal-configuration-json-help`,children:s(`capabilities.jsonHelp`)}),y?null:(0,B.jsx)(`span`,{className:`personal-machine-validation`,role:`alert`,children:s(`capabilities.jsonInvalid`)})]})]}):null,(0,B.jsx)(jx,{mutationError:b,onApplied:i,partialWrite:T,preview:E}),O?(0,B.jsxs)(`footer`,{className:`personal-capability-actions`,children:[f.current&&f.available_scopes.includes(`machine`)?(0,B.jsx)(`button`,{disabled:!!C||!y,onClick:()=>void te(),type:`button`,children:s(`capabilities.restoreInheritance`)}):null,(0,B.jsx)(`button`,{disabled:!!C||!y,onClick:()=>void ee(),type:`button`,children:s(C===`preview`?`common.loading`:`capabilities.previewChanges`)}),(0,B.jsx)(`button`,{className:`is-primary`,disabled:!!C||!E||!y,onClick:()=>void p(),type:`button`,children:s(C===`apply`?`common.loading`:`capabilities.applyPreview`)})]}):null,(0,B.jsx)(xx,{values:[{label:s(`capabilities.goalValue`),value:f.current},{label:s(f.machine_current?`capabilities.machineValue`:`capabilities.defaultValue`),value:f.machine_current??f.default}],t:s},d.capability_id)]})]})}function Nx({callbacks:e,goalId:t,notification:n,onChanged:r}){let{t:i}=Ji(),[a,o]=(0,z.useState)(null),[s,c]=(0,z.useState)(null),[l,u]=(0,z.useState)(!1);function d(){t&&(u(!0),c(null),Bg(t).then(o).catch(e=>c(e instanceof Error?e.message:i(`capabilities.loadFailed`))).finally(()=>u(!1)))}return(0,z.useEffect)(d,[t]),t?l&&!a?(0,B.jsxs)(`p`,{"aria-live":`polite`,className:`personal-capability-empty`,children:[(0,B.jsx)(km,{className:`personal-spin`,size:18}),i(`capabilities.loading`)]}):s?(0,B.jsxs)(`section`,{className:`personal-capability-error`,role:`alert`,children:[(0,B.jsx)(rh,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:i(`capabilities.loadFailed`)}),(0,B.jsx)(`small`,{children:s})]}),(0,B.jsxs)(`button`,{onClick:d,type:`button`,children:[(0,B.jsx)(Hm,{"aria-hidden":!0,size:15}),i(`capabilities.retry`)]})]}):a?(0,B.jsxs)(`section`,{className:`personal-capability-settings`,"data-revision":a.revision,children:[(0,B.jsxs)(`details`,{className:`personal-capability-scope-note`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:17}),i(`capabilities.atomicOverride`)]}),(0,B.jsx)(`p`,{children:i(`capabilities.atomicOverrideDescription`)})]}),(0,B.jsx)(Mx,{callbacks:e,catalog:a.capability_catalog,goalId:t,notification:n,onApplied:d,onNotificationChanged:r})]}):null:(0,B.jsx)(`p`,{className:`personal-capability-empty`,children:i(`capabilities.chooseGoal`)})}function Px(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function Fx(e,t){let n=t?.machine_namespace;return n?e?.machine_configuration?.namespaces[n]:void 0}function Ix(e,t,n){return{...Px(e.default),...Px(t),...n}}function Lx(e,t){for(let n of e.configuration_editor.fields){let e=t[n.key];if(n.required&&(e==null||e===``))return!1}return e.capability_id===`periodic_report`&&t.enabled===!0?!!(String(t.profile_preset??``).trim()&&String(t.route_ref??``).trim()&&String(t.timezone??``).trim()):!0}function Rx(e){try{let t=JSON.parse(e);return t&&typeof t==`object`&&!Array.isArray(t)?t:null}catch{return null}}function zx(e){return e?e===`absent`?e:e.replace(/^sha256:/,``).slice(0,12):`—`}function Bx(){let{locale:e,t}=Ji(),[n,r]=(0,z.useState)(null),[i,a]=(0,z.useState)(``),[o,s]=(0,z.useState)({}),[c,l]=(0,z.useState)(`{}`),[u,d]=(0,z.useState)(`guided`),[f,p]=(0,z.useState)(null),[m,h]=(0,z.useState)(`upsert`),[g,_]=(0,z.useState)(null),[v,y]=(0,z.useState)(null),[b,x]=(0,z.useState)(`load`),[S,C]=(0,z.useState)(null),[w,T]=(0,z.useState)(null),E=(0,z.useMemo)(()=>Tx(n?.capability_catalog.capabilities??[],e),[n,e]),D=n?.invalid_namespaces[0],O=E.find(e=>e.capability_id===i)??(D?E.find(e=>e.machine_namespace===D):void 0)??E.find(e=>bx(e,`machine`))??E[0],k=O?vx(O,e):void 0,ee=Fx(n,k),te=!!(k?.machine_namespace&&ee),A=!!(k&&bx(k,`machine`)),j=(0,z.useMemo)(()=>Rx(c),[c]),M=k?u===`json`?j:Ix(k,ee,o):null,ne=!!(k&&(u===`json`?j:Lx(k,M??{})));async function N(){r(await zg())}(0,z.useEffect)(()=>{let e=!0;return zg().then(t=>{e&&r(t)}).catch(n=>{e&&C(n instanceof Error?n.message:t(`machine.loadError`))}).finally(()=>{e&&x(null)}),()=>{e=!1}},[t]),(0,z.useEffect)(()=>{if(!k)return;let e=Fx(n,k),t=ux(k.configuration_editor,e??k.default,k.default),r=Ix(k,e,t);s(t),l(JSON.stringify(r,null,2)),d(A?`guided`:`json`),p(null),h(`upsert`),y(null)},[n,i,e]);function P(e,t){s(n=>k?.capability_id===`periodic_report`?fx(n,e,t):{...n,[e]:t}),p(null),h(`upsert`),C(null),T(null)}function re(e){if(k){if(e===`json`)l(JSON.stringify(Ix(k,ee,o),null,2));else if(j)s(ux(k.configuration_editor,j,k.default));else{C(t(`machine.jsonInvalid`));return}d(e),p(null),h(`upsert`),C(null)}}async function ie(){if(!(!A||!k?.machine_namespace||!M||!ne||b)){x(`preview`),C(null),T(null);try{h(`upsert`),p(await Ug(k.machine_namespace,M))}catch(e){C(e instanceof Error?e.message:t(`machine.previewError`))}finally{x(null)}}}async function ae(){if(!(!A||!k?.machine_namespace||!te||b)){x(`preview`),C(null),T(null);try{h(`remove`),p(await Gg(k.machine_namespace))}catch(e){C(e instanceof Error?e.message:t(`machine.previewError`))}finally{x(null)}}}async function F(){if(!A||!k?.machine_namespace||!f||b||m===`upsert`&&!M)return;x(`apply`),C(null);let e=m;try{let n=e===`remove`?await Kg(k.machine_namespace,f.plan_revision):await Wg(k.machine_namespace,M,f.plan_revision);_(n),p(null),h(`upsert`),y(null),await N(),T(n.status===`applied`?t(e===`remove`?`machine.removed`:`machine.applied`):t(`machine.unchanged`))}catch(e){p(null),h(`upsert`),C(e instanceof Error?e.message:t(`machine.applyError`))}finally{x(null)}}async function oe(){if(!(!g?.transaction_id||b)){x(`rollback-preview`),C(null);try{y(await qg(g.transaction_id))}catch(e){C(e instanceof Error?e.message:t(`machine.rollbackError`))}finally{x(null)}}}async function I(){if(!(!g?.transaction_id||!v||b)){x(`rollback`),C(null);try{await Jg(g.transaction_id,v.plan_revision),_(null),y(null),p(null),await N(),T(t(`machine.rolledBack`))}catch(e){y(null),C(e instanceof Error?e.message:t(`machine.rollbackError`))}finally{x(null)}}}return b===`load`?(0,B.jsx)(`div`,{className:`personal-machine-loading`,role:`status`,children:t(`common.loading`)}):k?(0,B.jsxs)(`section`,{className:`personal-capability-settings`,"data-revision":n?.revision,children:[(0,B.jsxs)(`details`,{className:`personal-capability-scope-note`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:17}),t(`machine.liveDefault`)]}),(0,B.jsx)(`p`,{children:t(`machine.liveDefaultDescription`)})]}),(0,B.jsxs)(`div`,{className:`personal-capability-body`,children:[n?.status===`invalid`?(0,B.jsxs)(`section`,{className:`personal-machine-error`,"data-testid":`machine-invalid-repair`,role:`alert`,children:[(0,B.jsx)(`strong`,{children:t(`machine.invalidStoredConfiguration`)}),(0,B.jsx)(`p`,{children:t(`machine.invalidStoredConfigurationDescription`)})]}):null,(0,B.jsxs)(`div`,{className:`personal-capability-layout`,children:[(0,B.jsx)(Ex,{capabilities:E,locale:e,onSelect:a,scope:`machine`,selectedCapabilityId:k.capability_id,t}),(0,B.jsxs)(`article`,{"aria-label":k.display_name,className:`personal-capability-detail`,tabIndex:0,children:[(0,B.jsx)(Dx,{capability:O,locale:e,source:k.available_scopes.includes(`machine`)?te?`machine_default`:`capability_default`:void 0}),(0,B.jsx)(Cx,{available:A,t,description:k.available_scopes.includes(`machine`)?t(`machine.editorUnavailableDescription`):t(`machine.goalOnly`)}),k.capability_id===`periodic_report`?(0,B.jsxs)(`section`,{className:`personal-capability-behavior-note`,children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:ee?.schedule?e===`zh-CN`?`日历与阶段汇报`:`Calendar and stage reports`:t(`machine.periodicReportActivation`)}),(0,B.jsx)(`p`,{children:ee?.schedule?ee.enabled===!0?e===`zh-CN`?`已配置日历计划,由现有唤醒检查;是否送达请核对报告回执。`:`A calendar schedule is configured and checked by existing wakes. Verify delivery in the report receipt.`:e===`zh-CN`?`日历计划已保存;启用此能力后才会检查和投递。`:`The schedule is saved; enable this capability to check and deliver reports.`:t(`machine.periodicReportActivationDescription`)})]})]}):null,k.capability_id===`change_quality_qualification`?(0,B.jsxs)(`section`,{className:`personal-capability-behavior-note`,children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:t(`machine.changeQualityActivation`)}),(0,B.jsx)(`p`,{children:t(`machine.changeQualityActivationDescription`)})]})]}):null,k.capability_id===`todo_replan_cadence`?(0,B.jsxs)(`section`,{className:`personal-capability-behavior-note`,children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:t(`machine.replanCadenceActivation`)}),(0,B.jsx)(`p`,{children:t(`machine.replanCadenceActivationDescription`)})]})]}):null,k.capability_id===`pull_request_review`?(0,B.jsxs)(`section`,{className:`personal-capability-behavior-note`,children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:e===`zh-CN`?`只改变队列排序`:`Queue ordering only`}),(0,B.jsx)(`p`,{children:e===`zh-CN`?`默认先审阅其他开发者的 PR;选择 owner-first 才会优先当前已认证审阅者自己的 PR。此配置不会发布 review、写 Todo、push 或 merge。`:`The default reviews other developers' PRs first; choose owner-first only when the authenticated reviewer's own PRs should lead. This setting never posts a review, writes Todos, pushes, or merges.`})]})]}):null,A?(0,B.jsxs)(B.Fragment,{children:[u===`json`||!k.configuration_editor.fields.some(e=>e.key===`enabled`&&e.input_kind===`boolean`)?(0,B.jsx)(`div`,{className:`personal-capability-editor-mode`,children:(0,B.jsxs)(`button`,{onClick:()=>re(u===`guided`?`json`:`guided`),type:`button`,children:[(0,B.jsx)(fm,{"aria-hidden":!0,size:14}),t(u===`guided`?`machine.editJson`:`machine.backToForm`)]})}):null,u===`guided`?(0,B.jsxs)(`section`,{className:`personal-capability-field-summary`,children:[(0,B.jsx)(hx,{copy:yx(e),disabled:!!b,editor:k.configuration_editor,onChange:P,value:o,enabledAction:(0,B.jsxs)(`button`,{className:`personal-capability-edit-json`,onClick:()=>re(`json`),type:`button`,children:[(0,B.jsx)(fm,{"aria-hidden":!0,size:14}),t(`machine.editJson`)]})}),ne?null:(0,B.jsx)(`p`,{className:`personal-machine-validation`,role:`alert`,children:t(`machine.requiredFields`)})]}):(0,B.jsxs)(`label`,{className:`personal-capability-json-editor`,htmlFor:`machine-configuration-json`,children:[(0,B.jsx)(`span`,{children:t(`machine.jsonConfiguration`)}),(0,B.jsx)(`textarea`,{"aria-describedby":`machine-configuration-json-help`,disabled:!!b,id:`machine-configuration-json`,onChange:e=>{l(e.target.value),p(null),C(null)},rows:12,spellCheck:!1,value:c}),(0,B.jsx)(`small`,{id:`machine-configuration-json-help`,children:t(`machine.jsonConfigurationHelp`)}),j?null:(0,B.jsx)(`span`,{className:`personal-machine-validation`,role:`alert`,children:t(`machine.jsonInvalid`)})]})]}):null,S?(0,B.jsx)(`p`,{className:`personal-machine-error`,role:`alert`,children:S}):null,w?(0,B.jsxs)(`p`,{className:`personal-machine-notice`,role:`status`,"aria-live":`polite`,children:[(0,B.jsx)(am,{"aria-hidden":!0,size:16}),w]}):null,f?(0,B.jsxs)(`section`,{"aria-label":t(`machine.preview`),className:`personal-machine-preview`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:t(`machine.preview`)}),(0,B.jsx)(`span`,{children:t(`machine.action.${f.action}`)})]}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`machine.currentRevision`)}),(0,B.jsx)(`dd`,{title:f.current_revision,children:zx(f.current_revision)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`machine.desiredRevision`)}),(0,B.jsx)(`dd`,{title:f.desired_revision,children:zx(f.desired_revision)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`machine.changedNamespaces`)}),(0,B.jsx)(`dd`,{children:f.changed_namespaces.join(`, `)||t(`common.none`)})]})]}),(0,B.jsx)(`p`,{children:t(`machine.previewLocked`)})]}):null,g?.rollback_available&&g.transaction_id?(0,B.jsxs)(`section`,{className:`personal-machine-rollback`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:t(`machine.rollbackAvailable`)}),(0,B.jsx)(`p`,{children:t(v?`machine.rollbackPreviewDescription`:`machine.rollbackDescription`)})]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,disabled:!!b||!!(v&&!v.rollback_allowed),onClick:()=>void(v?I():oe()),type:`button`,children:[(0,B.jsx)(Um,{"aria-hidden":!0,size:15}),t(b===`rollback`||b===`rollback-preview`?`common.loading`:v?`machine.confirmRollback`:`machine.previewRollback`)]})]}):null,A?(0,B.jsxs)(`footer`,{className:`personal-capability-actions`,children:[te?(0,B.jsxs)(`button`,{className:`is-danger`,disabled:!!b,onClick:()=>void ae(),type:`button`,children:[(0,B.jsx)(nh,{"aria-hidden":!0,size:15}),t(`machine.previewRemoval`)]}):null,(0,B.jsx)(`button`,{disabled:!!b||!ne,onClick:()=>void ie(),type:`button`,children:t(b===`preview`?`common.loading`:`machine.previewChanges`)}),(0,B.jsx)(`button`,{className:`is-primary`,disabled:!!b||!f,onClick:()=>void F(),type:`button`,children:t(b===`apply`?`common.loading`:`machine.applyPreview`)})]}):null,k.available_scopes.includes(`machine`)?(0,B.jsx)(xx,{values:[{label:t(`machine.currentValue`),value:ee},{label:t(`capabilities.defaultValue`),value:k.default}],t},k.capability_id):null]})]})]})]}):(0,B.jsx)(`p`,{className:`personal-capability-empty`,children:t(`machine.capabilityEmpty`)})}function Vx(e,t){return t(e===`invalid`?`machine.credentialInvalid`:e===`configured`?`machine.credentialConfigured`:`machine.credentialAbsent`)}function Hx(e,t){return t(e===`machine_store`?`machine.credentialSourceMachine`:e===`service_environment`?`machine.credentialSourceEnvironment`:`machine.credentialSourceUnset`)}function Ux(){let{t:e}=Ji(),[t,n]=(0,z.useState)(null),[r,i]=(0,z.useState)(``),[a,o]=(0,z.useState)(``),[s,c]=(0,z.useState)(``),[l,u]=(0,z.useState)(null),[d,f]=(0,z.useState)(null),p=(0,z.useCallback)(async()=>{c(`load`);try{let e=await Lg();n(e),o(String(e.base_url.value??``))}catch(t){u(t instanceof Error?t.message:e(`machine.credentialError`))}finally{c(``)}},[e]);(0,z.useEffect)(()=>{p()},[p]);async function m(t,r){c(`store`),u(null),f(null);try{let e=await Rg(t);n(e),o(String(e.base_url.value??``)),i(``),f(r)}catch(t){u(t instanceof Error?t.message:e(`machine.credentialError`))}finally{c(``)}}if(!t&&s===`load`)return(0,B.jsx)(`div`,{className:`personal-machine-loading`,role:`status`,children:e(`common.loading`)});let h=t?`${Vx(t.provider_key.configured?`configured`:`absent`,e)} · ${Hx(t.provider_key.source,e)}`:``,g=t?`${t.base_url.value??e(`machine.credentialAbsent`)} · ${Hx(t.base_url.source,e)}`:``;return(0,B.jsxs)(`section`,{className:`personal-operator-credential`,"data-testid":`operator-credential-settings`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(Tm,{"aria-hidden":!0,size:17}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:e(`machine.credentialTitle`)}),(0,B.jsx)(`p`,{children:e(`machine.credentialDescription`)})]}),(0,B.jsx)(`span`,{className:`personal-operator-credential-status`,children:t?Vx(t.status,e):e(`common.loading`)})]}),t?(0,B.jsxs)(`dl`,{className:`personal-operator-credential-readback`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:e(`machine.credentialApiKey`)}),(0,B.jsx)(`dd`,{children:h})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:e(`machine.credentialFingerprint`)}),(0,B.jsx)(`dd`,{children:(0,B.jsx)(`code`,{children:t.provider_key.fingerprint??e(`common.none`)})})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:e(`machine.credentialBaseUrl`)}),(0,B.jsx)(`dd`,{children:g})]})]}):null,t?.status===`invalid`&&t.repair?(0,B.jsx)(`p`,{className:`personal-machine-error`,role:`alert`,children:t.repair}):null,(0,B.jsxs)(`label`,{htmlFor:`operator-credential-api-key`,children:[(0,B.jsx)(`span`,{children:e(`machine.credentialApiKey`)}),(0,B.jsx)(`input`,{autoComplete:`off`,disabled:!!s,id:`operator-credential-api-key`,onChange:e=>i(e.target.value),placeholder:e(`machine.credentialApiKeyPlaceholder`),type:`password`,value:r})]}),(0,B.jsxs)(`label`,{htmlFor:`operator-credential-base-url`,children:[(0,B.jsx)(`span`,{children:e(`machine.credentialBaseUrl`)}),(0,B.jsx)(`input`,{autoComplete:`off`,disabled:!!s,id:`operator-credential-base-url`,onChange:e=>o(e.target.value),placeholder:e(`machine.credentialBaseUrlPlaceholder`),type:`text`,value:a})]}),l?(0,B.jsx)(`p`,{className:`personal-machine-error`,role:`alert`,children:l}):null,d?(0,B.jsxs)(`p`,{className:`personal-machine-notice`,role:`status`,"aria-live":`polite`,children:[(0,B.jsx)(am,{"aria-hidden":!0,size:16}),d]}):null,(0,B.jsxs)(`footer`,{className:`personal-operator-credential-actions`,children:[(0,B.jsx)(`button`,{className:`is-primary`,disabled:!!s||!r.trim()&&!a.trim(),onClick:()=>void m({...r.trim()?{provider_key:r}:{},...a.trim()?{base_url:a}:{}},e(`machine.credentialStored`)),type:`button`,children:e(s===`store`?`common.loading`:`machine.credentialStore`)}),(0,B.jsxs)(`button`,{disabled:!!s||t?.provider_key.configured!==!0,onClick:()=>void m({clear_provider_key:!0},e(`machine.credentialCleared`)),type:`button`,children:[(0,B.jsx)(nh,{"aria-hidden":!0,size:15}),e(`machine.credentialClearKey`)]}),(0,B.jsxs)(`button`,{disabled:!!s||t?.base_url.configured!==!0,onClick:()=>void m({clear_base_url:!0},e(`machine.credentialCleared`)),type:`button`,children:[(0,B.jsx)(nh,{"aria-hidden":!0,size:15}),e(`machine.credentialClearUrl`)]})]}),(0,B.jsxs)(`details`,{className:`personal-capability-scope-note`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:17}),e(`machine.credentialTitle`)]}),(0,B.jsx)(`p`,{children:e(`machine.credentialBoundary`)})]})]})}var Wx={appearance:Im,capabilities:Zm,language:Em,lark:Ym,machine:qm,provider:Tm};function Gx({callbacks:e,focusGoalConnection:t=!1,goals:n,initialGoalId:r,initialTab:i=`lark`,goalNotifications:a,onChanged:o,onClose:s,onThemeChange:c,theme:l}){let{locale:u,setLocale:d,t:f}=Ji(),[p,m]=(0,z.useState)(i),h=[...r?[{key:`capabilities`,label:f(`capabilities.title`)}]:[],{key:`provider`,label:f(`settings.modelProvider`)},{key:`machine`,label:f(`settings.globalCapabilities`)},{key:`lark`,label:`Lark`},{key:`appearance`,label:f(`settings.appearance`)},{key:`language`,label:f(`settings.language`)}],g=[{label:f(`settings.languageEnglish`),value:`en`},{label:f(`settings.languageSimplifiedChinese`),value:`zh-CN`}],_={appearance:{title:f(`settings.appearance`)},capabilities:{title:f(`capabilities.title`)},language:{title:f(`settings.language`)},lark:{title:`Lark`},machine:{title:f(`settings.globalCapabilities`)},provider:{title:f(`settings.modelProvider`)}}[p];return(0,B.jsxs)(`section`,{"aria-label":f(`settings.title`),className:`personal-settings-page`,"data-pw-theme":l,children:[(0,B.jsxs)(`aside`,{className:`personal-settings-sidebar`,children:[(0,B.jsxs)(`button`,{className:`personal-settings-back`,onClick:s,type:`button`,children:[(0,B.jsx)(Xp,{size:17}),(0,B.jsx)(`span`,{children:f(`settings.back`)})]}),(0,B.jsxs)(`div`,{className:`personal-settings-title`,children:[(0,B.jsx)(`small`,{children:f(`settings.eyebrow`)}),(0,B.jsx)(`strong`,{children:f(`settings.title`)})]}),(0,B.jsx)(`nav`,{"aria-label":f(`settings.categories`),className:`personal-settings-tabs`,children:h.map(e=>{let t=Wx[e.key];return(0,B.jsxs)(`button`,{"aria-current":p===e.key?`page`:void 0,onClick:()=>m(e.key),type:`button`,children:[(0,B.jsx)(t,{size:17}),(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:e.label})})]},e.key)})})]}),(0,B.jsxs)(`main`,{className:`personal-settings-body`,children:[(0,B.jsx)(`header`,{className:`personal-settings-header`,children:(0,B.jsx)(`div`,{children:(0,B.jsx)(`h1`,{children:_.title})})}),p===`lark`?(0,B.jsx)(cx,{embedded:!0,focusGoalConnection:t,goals:n,initialGoalId:r,onChanged:o,onClose:s}):null,p===`provider`?(0,B.jsx)(`div`,{className:`personal-provider-settings`,children:(0,B.jsx)(Ux,{})}):null,p===`machine`?(0,B.jsx)(Bx,{}):null,p===`capabilities`?(0,B.jsx)(Nx,{callbacks:e,goalId:r,notification:a.find(e=>e.goalId===r),onChanged:o}):null,p===`appearance`?(0,B.jsxs)(`section`,{className:`personal-detail-card personal-appearance-settings`,children:[(0,B.jsx)(`small`,{children:f(`settings.workspaceDisplay`)}),(0,B.jsx)(`h3`,{children:f(`settings.appearance`)}),(0,B.jsxs)(`div`,{className:`personal-settings-choice-group`,role:`radiogroup`,"aria-label":f(`settings.workspaceTheme`),children:[(0,B.jsxs)(`button`,{"aria-checked":l===`loopx`,onClick:()=>c(`loopx`),role:`radio`,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-settings-theme-swatch is-loopx`}),(0,B.jsx)(`strong`,{children:f(`settings.themeLoopx`)})]}),(0,B.jsxs)(`button`,{"aria-checked":l===`paper`,onClick:()=>c(`paper`),role:`radio`,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-settings-theme-swatch is-paper`}),(0,B.jsx)(`strong`,{children:f(`settings.themeDefault`)})]}),(0,B.jsxs)(`button`,{"aria-checked":l===`brutal`,onClick:()=>c(`brutal`),role:`radio`,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-settings-theme-swatch is-brutal`}),(0,B.jsx)(`strong`,{children:f(`settings.themeHighContrast`)})]})]})]}):null,p===`language`?(0,B.jsxs)(`section`,{className:`personal-settings-card`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`span`,{className:`personal-settings-icon`,children:(0,B.jsx)(Em,{size:18})}),(0,B.jsx)(`div`,{children:(0,B.jsx)(`h2`,{children:f(`settings.language`)})})]}),(0,B.jsx)(`div`,{"aria-label":f(`settings.language`),className:`personal-language-options`,role:`radiogroup`,children:g.map(e=>(0,B.jsxs)(`button`,{"aria-checked":u===e.value,className:u===e.value?`is-selected`:``,onClick:()=>d(e.value),role:`radio`,type:`button`,children:[(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:e.label})}),u===e.value?(0,B.jsx)(am,{"aria-hidden":!0,size:17}):null]},e.value))})]}):null]})]})}var Kx=`loopx-pw-theme`,qx=`loopx`;function Jx(){try{let e=window.localStorage.getItem(Kx);return e===`loopx`||e===`paper`||e===`brutal`?e:qx}catch{return qx}}function Yx(e){try{window.localStorage.setItem(Kx,e)}catch{}}function Xx({drawer:e,drawerMode:t=`panel`,drawerOpen:n,main:r,mobileSidebarOpen:i=!1,onCloseMobileSidebar:a,sidebar:o,theme:s=`loopx`}){let{t:c}=Ji(),l=(0,z.useRef)(null),u=(0,z.useRef)(null);return(0,z.useEffect)(()=>{if(!i)return;u.current=document.activeElement instanceof HTMLElement?document.activeElement:null;let e=l.current?.querySelectorAll(`button:not([disabled]), a[href], select:not([disabled]), textarea:not([disabled]), input:not([disabled]), [tabindex]:not([tabindex="-1"])`);e?.[0]?.focus();function t(t){if(t.key!==`Tab`||!e?.length)return;let n=e[0],r=e[e.length-1];t.shiftKey&&document.activeElement===n?(t.preventDefault(),r.focus()):!t.shiftKey&&document.activeElement===r&&(t.preventDefault(),n.focus())}return document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`keydown`,t),u.current?.focus(),u.current=null}},[i]),(0,B.jsxs)(`section`,{className:`personal-workspace-shell${n?` has-drawer`:``}${n&&t.startsWith(`inspector`)?` has-task-inspector`:``}${t===`inspector-full`?` is-task-inspector-full`:``}${i?` mobile-sidebar-open`:``}`,"data-pw-theme":s,children:[i?(0,B.jsx)(`button`,{"aria-hidden":!0,className:`personal-sidebar-backdrop`,onClick:a,tabIndex:-1,type:`button`}):null,(0,B.jsx)(`aside`,{"aria-label":i?c(`header.goalNavigation`):void 0,"aria-modal":i?!0:void 0,className:`personal-workspace-sidebar`,"data-workspace-sidebar":!0,ref:l,role:i?`dialog`:void 0,children:(0,B.jsxs)(`div`,{className:`personal-workspace-sidebar-inner`,children:[i?(0,B.jsxs)(`button`,{className:`personal-sr-only`,onClick:a,type:`button`,children:[c(`common.close`),` `,c(`header.goalNavigation`)]}):null,o]})}),(0,B.jsx)(`main`,{"aria-hidden":i||void 0,className:`personal-workspace-main`,inert:i||void 0,children:r}),n?(0,B.jsx)(`aside`,{className:`personal-workspace-drawer`,"data-context-drawer":!0,"data-drawer-mode":t,children:e}):null]})}function Zx(e){let t=e.match(/(?:下一步|建议|行动项|待办)[::\s]*([^\n]+)/u),n=t?t[1]:e;n=n.replace(/```[\s\S]*?```/g,``).replace(/`([^`]+)`/g,`$1`).replace(/\[([^\]]+)\]\([^)]+\)/g,`$1`).replace(/[#*~_>]/g,``).replace(/^[-*•\d+.\s]+/u,``).replace(/^(好的|没问题|收到|建议如下|任务如下|分析如下|结论[::])[\s,,::]*/u,``);let r=(n.split(/\r?\n/).map(e=>e.trim()).filter(Boolean)[0]||n).replace(/\s+/gu,` `).trim();return Array.from(r).slice(0,120).join(``)}function Qx(e){let t=new Map;return e.forEach(e=>{let n=e.fields.find(e=>e.key===`todo_id`)?.value??``,r=[e.actionKind,e.goalId??``,n,e.title].join(`:`);t.set(r,e)}),[...t.values()]}function $x(e,t,n){if(!e)return n(`home.noFirstActivity`);let r=new Date(e);if(Number.isNaN(r.getTime()))return e;let i=new Date,a=new Intl.DateTimeFormat(t,{hour:`2-digit`,minute:`2-digit`,hour12:!1}).format(r);return r.toDateString()===i.toDateString()?n(`home.todayAt`,{time:a}):new Intl.DateTimeFormat(t,{month:`numeric`,day:`numeric`,hour:`2-digit`,minute:`2-digit`,hour12:!1}).format(r)}function eS({goals:e,onSelectGoal:t,onRetry:n,systemHealth:r}){let{locale:i,t:a}=Ji(),o=e.filter(e=>e.activationState===`active`),s=o.filter(e=>e.loadState===`error`).length,c=[{key:`needs_you`,label:a(`home.lane.needsYou`)},{key:`running`,label:a(`home.lane.running`)},{key:`observing`,label:a(`home.lane.observing`)},{key:`scheduled`,label:a(`home.lane.scheduled`)}],l=Object.fromEntries(c.map(e=>[e.key,[]])),u=[],d=[];e.filter(e=>!e.loadState).forEach(e=>{let t=qy(e);t===`history`?u.push(e):t===`stopped`?d.push(e):l[t].push(e)});let f=e=>(0,B.jsxs)(`button`,{className:`personal-home-goal-card`,"data-goal-state":e.loadState??e.state,"data-load-error":e.loadError,onClick:()=>t(e.goalId),type:`button`,children:[(0,B.jsxs)(`span`,{className:`personal-home-goal-meta`,children:[(0,B.jsx)(`i`,{}),e.agentLaneCount&&e.agentLaneCount>1?a(`header.workAgentCount`,{count:e.agentLaneCount}):e.agentLabel??e.agentId]}),(0,B.jsx)(`strong`,{children:e.title}),(0,B.jsx)(`p`,{children:e.loadError?a(`startup.error.${e.loadError}`):e.needsYou??e.nextSentence}),(0,B.jsxs)(`footer`,{children:[(0,B.jsx)(`span`,{children:e.loadState?a(e.loadState===`error`?`startup.goalError`:`startup.goalLoading`):Yi(e.state,i)}),(0,B.jsx)(`small`,{title:e.latestActivity,children:e.loadState?``:e.latestActivity?$x(e.latestActivity,i,a):e.agentTodos.length?a(`home.taskCount`,{count:e.agentTodos.length}):a(`home.noActivity`)})]})]},e.goalId);return(0,B.jsxs)(`section`,{"aria-label":a(`home.workspace`),className:`personal-home-board`,children:[r&&(!r.ok||r.issues.length>0||r.freshnessWarning)?(0,B.jsxs)(`div`,{className:`personal-system-health-banner`,role:`alert`,children:[(0,B.jsxs)(`div`,{className:`personal-system-health-header`,children:[(0,B.jsx)(lm,{size:15}),(0,B.jsx)(`strong`,{children:a(`home.systemHealth`,{summary:r.summary})}),r.freshnessWarning?(0,B.jsxs)(`small`,{children:[`(`,r.freshnessWarning,`)`]}):null]}),r.issues.length>0?(0,B.jsx)(`ul`,{className:`personal-system-health-issues`,children:r.issues.map((e,t)=>(0,B.jsx)(`li`,{children:e},t))}):null]}):null,o.some(e=>e.loadState)?(0,B.jsxs)(`section`,{className:`personal-home-lane`,"aria-live":`polite`,children:[(0,B.jsx)(`header`,{children:a(`startup.progress`,{loaded:o.filter(e=>!e.loadState).length,total:o.length})}),s?(0,B.jsxs)(`div`,{className:`personal-stopped-goal-error`,role:`status`,children:[(0,B.jsx)(`span`,{children:a(`startup.failedCount`,{count:s})}),(0,B.jsx)(`button`,{className:`min-h-11 rounded-md border px-3 py-2 text-sm`,onClick:n,type:`button`,children:a(`startup.retryFailed`)})]}):null,o.filter(e=>e.loadState).map(f)]}):null,(0,B.jsx)(`div`,{className:`personal-home-lanes`,children:c.map(e=>(0,B.jsxs)(`section`,{className:`personal-home-lane is-${e.key}`,"data-testid":`personal-home-lane-${e.key}`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`i`,{}),e.label]}),(0,B.jsx)(`b`,{children:l[e.key].length})]}),(0,B.jsx)(`div`,{className:`personal-home-lane-list`,children:l[e.key].length?l[e.key].map(f):(0,B.jsx)(`span`,{className:`personal-home-empty`,children:a(`home.empty`)})})]},e.key))}),(0,B.jsxs)(`details`,{className:`personal-home-history`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(`span`,{children:a(`home.history`)}),(0,B.jsx)(`b`,{children:u.length}),(0,B.jsx)(`small`,{children:a(`home.completedGoals`)})]}),(0,B.jsx)(`div`,{children:u.length?u.map(f):(0,B.jsx)(`span`,{className:`personal-home-empty`,children:a(`home.noCompletedGoals`)})})]}),d.length?(0,B.jsxs)(`details`,{className:`personal-home-history is-stopped`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(`span`,{children:a(`home.stopped`)}),(0,B.jsx)(`b`,{children:d.length}),(0,B.jsx)(`small`,{children:a(`home.preservedState`)})]}),(0,B.jsx)(`div`,{children:d.map(f)})]}):null]})}function tS({items:e,onSelect:t,reportState:n}){let{locale:r,t:i}=Ji();return(0,B.jsxs)(`section`,{className:`personal-object-list personal-files-list`,"data-testid":`personal-goal-outputs`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:i(`files.title`)}),(0,B.jsx)(`span`,{children:e.length})]}),n?.loading?(0,B.jsxs)(`p`,{className:`personal-object-list-state`,role:`status`,children:[(0,B.jsx)(Hm,{className:`is-spinning`,size:14}),i(`files.loadingReports`)]}):null,n?.error?(0,B.jsxs)(`p`,{className:`personal-object-list-state is-error`,role:`alert`,children:[(0,B.jsx)(lm,{size:14}),i(`files.reportLoadFailed`),`: `,n.error]}):null,!n?.loading&&!n?.error&&e.length===0?(0,B.jsxs)(`p`,{className:`personal-object-list-state`,children:[(0,B.jsx)(xm,{size:14}),i(`files.empty`)]}):null,e.map(e=>(0,B.jsxs)(`button`,{"data-output-kind":e.output.kind,onClick:()=>t({item:e.output,kind:`output`}),type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-file-icon`,children:(0,B.jsx)(xm,{size:16})}),(0,B.jsx)(`strong`,{children:e.output.title}),e.output.report?(0,B.jsx)(`em`,{children:i(`files.reportDelta`,{added:e.output.report.addedCount,changed:e.output.report.changedCount})}):null,(0,B.jsx)(`p`,{children:e.output.summary??e.output.safePreview??e.output.kind??i(`files.emptySummary`)}),(0,B.jsx)(`small`,{title:e.output.createdAt,children:[e.output.goalTitle,e.output.kind===`report`?i(`files.verifiedReport`):null,e.output.todoId?`${i(`common.task`)} ${e.output.todoId}`:null,$x(e.output.createdAt,r,i)].filter(Boolean).join(` · `)})]},e.id))]})}function nS({agentLabel:e,messages:t,onClose:n,onDraftTask:r,onOpenConversation:i,title:a}){let{t:o}=Ji(),s=t.reduce((e,t,n)=>t.role===`user`?n:e,0),c=t.slice(Math.max(0,s)).slice(-3),l=c.filter(e=>e.role===`assistant`&&!e.pending).at(-1);return(0,z.useEffect)(()=>{if(!n)return;let e=e=>{e.key===`Escape`&&n()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n]),(0,B.jsxs)(`aside`,{"aria-label":o(`conversation.receipt`),className:`personal-manager-conversation-tray`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(nm,{size:16}),(0,B.jsx)(`strong`,{children:a??o(`conversation.title`)}),(0,B.jsx)(`small`,{children:t.at(-1)?.pending?o(`conversation.replying`):o(`common.recently`)})]}),(0,B.jsxs)(`div`,{className:`personal-manager-conversation-actions`,children:[r&&l?(0,B.jsxs)(`button`,{className:`personal-manager-conversation-btn`,onClick:()=>r(l.text),title:o(`conversation.convertHint`),type:`button`,children:[(0,B.jsx)(Om,{size:13}),(0,B.jsx)(`span`,{children:o(`conversation.toTask`)})]}):null,(0,B.jsx)(`button`,{className:`personal-manager-conversation-link`,onClick:i,type:`button`,children:o(`conversation.full`)}),n?(0,B.jsx)(`button`,{"aria-label":o(`conversation.close`),className:`personal-manager-conversation-close`,onClick:n,title:o(`conversation.close`),type:`button`,children:(0,B.jsx)(ah,{size:14})}):null]})]}),(0,B.jsx)(`div`,{"aria-live":`polite`,className:`personal-manager-conversation-messages`,children:c.map(t=>(0,B.jsxs)(`article`,{className:`is-${t.role}`,children:[(0,B.jsx)(`strong`,{children:t.role===`user`?o(`common.you`):t.agentLabel??e??o(`header.manager`)}),(0,B.jsxs)(`div`,{className:`personal-manager-conversation-bubble`,children:[t.role===`user`?(0,B.jsx)(`p`,{children:t.text}):(0,B.jsx)(cb,{text:t.text}),t.pending?(0,B.jsx)(`small`,{children:o(`conversation.agentPending`)}):null,(0,B.jsx)(pb,{delivery:t.returnDelivery})]})]},t.id))})]})}function rS({onClose:e,onOpenDetails:t,run:n}){let{t:r}=Ji();return(0,B.jsxs)(`section`,{"aria-label":r(`session.record`),className:`personal-session-record`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(nm,{size:17}),r(`session.record`)]}),(0,B.jsx)(`button`,{"aria-label":r(`session.closeRecord`),onClick:e,type:`button`,children:(0,B.jsx)(ah,{size:15})})]}),(0,B.jsx)(`div`,{children:(0,B.jsx)(`strong`,{children:n.title})}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Agent`}),(0,B.jsx)(`dd`,{children:n.agentLabel})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`common.status`)}),(0,B.jsx)(`dd`,{children:Xi(n.sessionStatus??n.status,r)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Session`}),(0,B.jsx)(`dd`,{title:n.sessionId,children:n.sessionId})]})]}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:t,type:`button`,children:r(`session.details`)})]})}function iS(e,t,n){let r=[];if(t===null)return e.userTodos.slice(0,4).forEach(t=>r.push({attention:{...t,goalTitle:t.goalTitle??Ky(e,t.goalId)},id:`attention:${t.todoId}`,kind:`attention`})),e.goals.filter(e=>qy(e)===`running`).slice(0,4).forEach(e=>r.push({id:`run:${e.goalId}`,kind:`run`,run:{agentId:e.agentId,agentLabel:e.agentLabel??e.agentId,completedSteps:e.doneTodoCount??e.agentTodos.filter(e=>e.done).length,goalId:e.goalId,goalTitle:e.title,latestActivity:e.agentSentence,runId:`goal:${e.goalId}`,status:`running`,title:e.nextSentence,totalSteps:Math.max((e.doneTodoCount??0)+e.agentTodos.filter(e=>!e.done).length,1)}})),r;let i=e.goals.find(e=>e.goalId===t);if(!i)return r;if(i.needsYou){let t=e.userTodos.find(e=>e.goalId===i.goalId);r.push({attention:t?{...t,goalTitle:i.title}:{blocking:i.needsYouBlocking??!1,goalId:i.goalId,goalTitle:i.title,text:i.needsYou,todoId:`${i.goalId}:attention`},id:`attention:${i.goalId}`,kind:`attention`})}r.push({id:`run:${i.goalId}`,kind:`run`,run:{agentId:i.agentId,agentLabel:i.agentLabel??i.agentId,completedSteps:i.doneTodoCount??i.agentTodos.filter(e=>e.done).length,goalId:i.goalId,goalTitle:i.title,latestActivity:i.agentSentence,runId:`goal:${i.goalId}`,status:i.state===`推进中`?`running`:i.state===`需修复`?`failed`:`waiting`,title:i.nextSentence,totalSteps:Math.max((i.doneTodoCount??0)+i.agentTodos.filter(e=>!e.done).length,1)}}),i.agentTodos.filter(e=>e.taskClass===`continuous_monitor`).forEach(t=>{let a=e.timeline?.find(e=>e.kind===`run`&&e.run.goalId===i.goalId&&e.run.todoId===t.todoId&&!!e.run.sessionId);r.push({id:`schedule:${i.goalId}:${t.todoId}`,kind:`schedule`,schedule:{agentId:i.agentId,executionHistory:a?[{label:a.run.latestActivity||a.run.title,runId:a.run.runId,status:a.run.status===`waiting`||a.run.status===`queued`?`running`:a.run.status,timestamp:i.latestActivity||n(`common.recently`)}]:[],goalId:i.goalId,label:t.text,schedule:t.evidence??n(`schedule.summary`),scheduleId:t.todoId,scheduleKind:`monitor`,sessionId:a?.run.sessionId,status:t.done||t.status===`paused`?`paused`:`active`,stopCondition:n(`drawer.scheduleDefaultStop`),target:t.text,timezone:`Asia/Shanghai`}})});let a=e.timeline?.find(e=>e.kind===`proposal`&&e.proposal.actionKind===`heartbeat.bind`&&e.proposal.goalId===i.goalId);if(a){let e=e=>a.proposal.fields.find(t=>t.key===e)?.value;r.push({id:`schedule:${i.goalId}:heartbeat`,kind:`schedule`,schedule:{agentId:i.agentId,executionHistory:[],goalId:i.goalId,label:`${n(`schedule.heartbeat`)} · ${i.title}`,nextRunAt:n(`drawer.schedulePending`),notificationRule:n(`drawer.scheduleDefaultNotification`),schedule:e(`cadence`)??n(`schedule.summary`),scheduleId:`${i.goalId}:heartbeat`,scheduleKind:`heartbeat`,status:a.proposal.status===`applied`?`active`:`draft`,stopCondition:e(`stop_condition`)??n(`drawer.scheduleDefaultStop`),timezone:e(`timezone`)??`Asia/Shanghai`}})}return r}function aS(e){return e===`preview_ready`?`ready`:e===`cancelled`?`draft`:e===`failed`?`error`:e}function oS(e,t){let n={agent_id:t(`proposal.field.agentId`),cadence:t(`proposal.field.cadence`),completion_criteria:t(`proposal.field.completionCriteria`),execution_boundary:t(`proposal.field.executionBoundary`),goal_id:t(`proposal.field.goalId`),heartbeat:t(`proposal.field.heartbeat`),initial_todos:t(`proposal.field.initialTodos`),objective:t(`proposal.field.objective`),operation:t(`proposal.field.operation`),permission:t(`proposal.field.permission`),reason:t(`proposal.field.reason`),stop_condition:t(`proposal.field.stopCondition`),target:t(`proposal.field.target`),timezone:t(`proposal.field.timezone`),title:t(`proposal.field.title`),workspace_ref:t(`proposal.field.workspace`)},r=[`title`,`objective`,`completion_criteria`,`execution_boundary`,`permission`,`agent_id`,`workspace_ref`,`initial_todos`,`heartbeat`,`stop_condition`,`goal_id`];return Object.entries(e).sort(([e],[t])=>{let n=r.indexOf(e),i=r.indexOf(t);return(n<0?r.length:n)-(i<0?r.length:i)}).slice(0,10).map(([e,r])=>({key:e,label:n[e]??e.replaceAll(`_`,` `),value:e===`workspace_ref`?r===`current`?t(`proposal.workspace.current`):t(`proposal.workspace.named`,{workspace:String(r??`current`)}):Array.isArray(r)?r.join(` · `):typeof r==`object`&&r?JSON.stringify(r):String(r??`—`)}))}function sS(e,t,n){let r=t.operationFrame,i=r?.content.fields.map((e,t)=>({key:`projection:${t}`,label:e.label,value:e.value})).slice(0,8)??[];return[{key:`operation_state`,label:n(`proposal.field.operationState`),value:r?.lifecycleState??e.status},...r?.kind===`result`?[{key:`result_delivery`,label:n(`proposal.field.resultDelivery`),value:r.resultDeliveryVerified?n(`proposal.resultDelivery.verified`):n(`proposal.resultDelivery.pending`)}]:[],...i,...r?[{key:`warning`,label:n(`proposal.field.confirmationBoundary`),value:r.content.warning}]:[],...r?[{key:`expires_at`,label:n(`proposal.field.expiresAt`),value:r.expiresAt}]:[]].slice(0,10)}function cS(e){if(e.action_kind!==`goal.lifecycle`)return;let t=e.normalized_parameters.operation;return t===`stop`||t===`resume`||t===`delete`?t:void 0}function lS(e,t){let n=cS(e),r=Ny(e),i=typeof e.normalized_parameters.title==`string`?e.normalized_parameters.title:typeof e.normalized_parameters.goal_id==`string`?e.normalized_parameters.goal_id:``,a=typeof e.normalized_parameters.target==`string`?e.normalized_parameters.target:``,o=r.operationFrame,s=o?.content.title??e.summary,c=e.action_kind===`operation.execute`?s:e.action_kind===`team.plan`?t(`proposal.summary.teamPlan`,{goal:zy(e.normalized_parameters),count:Ry(e.normalized_parameters)}):e.action_kind===`goal.create`?t(`proposal.summary.goalCreate`,{title:i}):e.action_kind===`heartbeat.bind`?t(`proposal.summary.heartbeat`):e.action_kind===`monitor.create`?t(`proposal.summary.monitor`,{target:a}):e.action_kind===`goal.lifecycle`&&n===`stop`?t(`proposal.summary.lifecycleStop`,{title:i}):e.action_kind===`goal.lifecycle`&&n===`delete`?t(`proposal.summary.lifecycleDelete`,{title:i}):e.action_kind===`goal.lifecycle`?t(`proposal.summary.lifecycleResume`,{title:i}):e.summary;return{actionKind:e.action_kind,reviewPlan:r,fields:e.action_kind===`operation.execute`?sS(e,r,t):e.action_kind===`team.plan`?Ly(e.normalized_parameters,t):oS(e.normalized_parameters,t),goalId:typeof e.normalized_parameters.goal_id==`string`?e.normalized_parameters.goal_id:void 0,impact:e.action_kind===`operation.execute`?t(`proposal.impact.operation`):e.action_kind===`team.plan`?t(`proposal.impact.teamPlan`):e.action_kind===`goal.create`?t(`proposal.impact.goalCreate`):e.action_kind===`goal.lifecycle`&&n===`stop`?t(`proposal.impact.lifecycleStop`):e.action_kind===`goal.lifecycle`&&n===`delete`?t(`proposal.impact.lifecycleDelete`):e.action_kind===`goal.lifecycle`?t(`proposal.impact.lifecycleResume`):e.permission_classification===`protected`?t(`proposal.impact.protected`):t(`proposal.impact.default`),previewId:e.proposal_id,lifecycleOperation:n,gate:e.gate?{kind:String(e.gate.kind??`protected_action`),nextAction:typeof e.gate.next_action==`string`?e.gate.next_action:void 0,summary:String(e.gate.summary??t(`proposal.gate.default`))}:void 0,primaryLabel:e.action_kind===`operation.execute`?o?.kind===`result`?o.resultDeliveryVerified?t(`proposal.primary.operationResultVerified`):t(`proposal.primary.operationResultPending`):t(`proposal.primary.operationGroup`):e.action_kind===`team.plan`?t(`proposal.primary.teamPlan`):e.action_kind===`goal.create`?t(`proposal.primary.goalCreate`):e.action_kind===`goal.lifecycle`&&n===`stop`?t(`proposal.primary.lifecycleStop`):e.action_kind===`goal.lifecycle`&&n===`delete`?t(`proposal.primary.lifecycleDelete`):e.action_kind===`goal.lifecycle`?t(`proposal.primary.lifecycleResume`):e.action_kind===`todo.create`&&e.normalized_parameters.start_execution===!0?t(`proposal.primary.todoStart`):t(`proposal.primary.apply`),status:e.status===`applied`&&e.action_kind!==`operation.execute`&&r.interaction!==`completed`?`error`:aS(e.status),teamPlanOutcome:e.action_kind===`team.plan`?Uy(e.receipt)??void 0:void 0,teamPlanGapLanes:e.action_kind===`team.plan`?By(e.receipt):void 0,title:c}}function uS(e){let t=e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,42);if(t)return t;let n=2166136261;for(let t of e)n^=t.codePointAt(0)??0,n=Math.imul(n,16777619);return`goal-${(n>>>0).toString(36)}`}function dS(e,t){let n=e.match(/[「“"]([^」”"]{2,80})[」”"]/u)?.[1];return n?n.trim():e.replace(/^(请|帮我|我想|给我|创建|新建|设置|please|i want to|create|set up)+/iu,``).replace(/(一个|新的)?\s*(goal|目标)/giu,``).replace(/[,。!?].*$/u,``).trim().slice(0,80)||t(`goal.defaultTitle`)}function fS(e,t){for(let n of e.split(/\r?\n/u)){let e=n.trim();for(let n of t){let t=e.match(RegExp(`^${n.replace(/[.*+?^${}()|[\]\\]/gu,`\\$&`)}\\s*[::]\\s*(.*)$`,`iu`));if(t?.[1]?.trim())return t[1].trim()}}return``}function pS(e,t){let n=fS(e,[`目标`,`Objective`]),r=fS(e,[`完成标准`,`Completion criteria`]),i=fS(e,[`执行边界(可选)`,`执行边界`,`边界`,`Execution boundary (optional)`,`Execution boundary`,`Boundary`]),a=(n||dS(e,t)).split(/[。;;\n]/u)[0].trim().slice(0,80)||t(`goal.defaultTitle`),o=[n||a,r?t(`goal.objectiveCompletion`,{criteria:r}):``,i?t(`goal.objectiveBoundary`,{boundary:i}):``].filter(Boolean).join(` +`),s=/(只读|不调用外部工具|不修改(?:仓库|代码|状态)|read.?only|do not (?:call|use) external tools|do not modify (?:repositories|repository|code|state))/iu.test(i||e);return{completionCriteria:r,executionBoundary:i,initialTodos:r?[t(`goal.initialTodo`,{criteria:r})]:[],objective:o,permission:s?`read_only`:`workspace_write_on_confirmation`,title:a}}function mS(e){let t=e.match(/(?:每|every)\s*(\d{1,3})\s*(?:分钟|minutes?)/iu)?.[1];if(t)return`${t}m`;let n=e.match(/(?:每|every)\s*(\d{1,2})\s*(?:小时|hours?)/iu)?.[1];return n?`${n}h`:/每小时|every hour|hourly/iu.test(e)?`1h`:(/每天|每日|早上|上午|daily|every day/iu.test(e),`1d`)}function hS(e,t){return/(每周|星期|周[一二三四五六日天]|weekly|every\s+(?:mon|tues|wednes|thurs|fri|satur|sun)day|\d{1,2}\s*[::]\s*\d{2})/iu.test(e)?t(`schedule.unsupportedCalendar`):null}function gS(e,t){return fS(e,[`检查内容`,`监控内容`,`目标`,`Check target`,`Monitor target`,`Target`])||e.replace(/^(?:为当前 Goal |for the current Goal )?(?:添加|配置|创建|add|configure|create)?\s*(?:定时检查|监控|scheduled check|monitor)[::]?/iu,``).split(/\r?\n/u)[0].trim()||t(`schedule.defaultTarget`)}function _S(e){return/(mr|pr).{0,8}(合并|merge)/iu.test(e)?`pr_merged`:/发布完成|上线完成|release (?:is )?complete|deployment (?:is )?complete/iu.test(e)?`release_complete`:`goal_complete`}function vS(e,t){let n=e.toLowerCase();return t.find(e=>n.includes(e.agentId.toLowerCase())||n.includes(e.label.toLowerCase()))}function yS(e){let t=fS(e,[`标题`,`任务标题`,`Todo 标题`]),n=fS(e,[`内容`,`任务内容`,`Todo 内容`]);if(t)return[t,n].filter(Boolean).join(`:`).slice(0,400);let r=e.match(/[「“"]([^」”"]{2,200})[」”"]/u)?.[1];return r?r.trim():e.replace(/^(请|帮我|给我|为当前 Goal |新增|新建|创建|添加|加上|加一个|记一个)+/u,``).replace(/^(一个\s*)?(普通\s*)?(todo|待办|任务)(?:\s*到\s*Tasks?)?[::\s]*/iu,``).replace(/[。;;,,]\s*(?:不要|不需要|无需|禁止|别|暂不).{0,80}(?:heartbeat|心跳|定时|监控|执行).*$/iu,``).replace(/[,,]\s*(并且|然后|再)?\s*(交给|分配给|让).+$/u,``).replace(/\s*(交给|分配给|让)\s+.+$/u,``).trim().slice(0,400)||`推进当前 Goal 的下一项工作`}var bS=new Set([`image/png`,`image/jpeg`,`image/webp`,`image/gif`]),xS=5242880,SS=4;function CS(e,t){return new Promise((n,r)=>{let i=new FileReader;i.onerror=()=>r(Error(t(`composer.imageReadError`,{name:e.name}))),i.onload=()=>n({dataUrl:String(i.result??``),id:crypto.randomUUID(),mimeType:e.type,name:e.name,size:e.size}),i.readAsDataURL(e)})}function wS({agents:e=[{agentId:`codex`,available:!0,capability:`代码与项目执行`,label:`Codex`}],callbacks:t={},goalArchiveLoadState:n={error:null,phase:`ready`},managerChannelBinding:r,managerRuntime:i,model:a,readOnly:o=!1,selectedAgentId:s,selectedGoalId:c,statusSourceControl:l}){let{locale:u,t:d}=Ji(),[f,p]=(0,z.useState)(c??null),[m,h]=(0,z.useState)(s??e.find(e=>e.available)?.agentId??`codex`),[g,_]=(0,z.useState)(null),[v,y]=(0,z.useState)(!1),[b,x]=(0,z.useState)(null),[S,C]=(0,z.useState)({}),[w,T]=(0,z.useState)(`chat`),[E,D]=(0,z.useState)(!1),[O,k]=(0,z.useState)(!1),[ee,te]=(0,z.useState)(!1),[A,j]=(0,z.useState)(()=>{try{let e=window.sessionStorage.getItem(`loopx-pw-composer-drafts`),t=e?JSON.parse(e):{};return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}catch{return{}}}),[M,ne]=(0,z.useState)(!1),[N,P]=(0,z.useState)([]),[re,ie]=(0,z.useState)(null),[ae,F]=(0,z.useState)(null),[oe,I]=(0,z.useState)(()=>new Set),[se,L]=(0,z.useState)(()=>new Set),[ce,le]=(0,z.useState)(`idle`),[ue,de]=(0,z.useState)([]),[fe,pe]=(0,z.useState)([]),[me,he]=(0,z.useState)(!1),[ge,_e]=(0,z.useState)(Jx),[ve,ye]=(0,z.useState)({}),[be,xe]=(0,z.useState)([]),Se=(0,z.useRef)(!1),Ce=(0,z.useRef)(NaN),we=(0,z.useRef)(null),Te=(0,z.useRef)(null),Ee=(0,z.useRef)(null),De=(0,z.useRef)(new Set),Oe=(0,z.useRef)(new Set),[ke,Ae]=(0,z.useState)(null),R=c===void 0?f:c,je=s??m,Me=`${R??`manager`}:${je}`,Ne=A[Me]??``;(0,z.useEffect)(()=>{P([]),ie(null)},[Me]);function Pe(e,t){j(n=>{let r={...n};t?r[e]=t:delete r[e];try{window.sessionStorage.setItem(`loopx-pw-composer-drafts`,JSON.stringify(r))}catch{}return r})}function Fe(e){Pe(Me,e)}function Ie(e){return vh.find(t=>t.id===e)?.prompt??``}(0,z.useEffect)(()=>{let e=we.current;e&&(e.style.height=`auto`,e.style.height=`${Math.min(e.scrollHeight,120)}px`)},[Ne]);let Le=(0,z.useMemo)(()=>a.goals.map(e=>{let t=ve[e.goalId];return t?{...e,repository:{branch:t.branch,identity:t.identity,label:t.label,readOnly:!0}}:e}),[ve,a.goals]),Re=(0,z.useMemo)(()=>Le.filter(e=>qy(e)===`needs_you`).length,[Le]),ze=(0,z.useMemo)(()=>Le.filter(e=>qy(e)===`needs_you`&&(e.needsYouBlocking||e.state===`等你`)).length,[Le]),V=Le.find(e=>e.goalId===R)??null,Be=g?.kind===`settings`,Ve=R,He=(0,z.useMemo)(()=>{let e=Object.values(S).filter(e=>e.actionKind===`heartbeat.bind`&&e.goalId&&e.status===`applied`).map(e=>({id:`schedule:${e.goalId}:heartbeat`,kind:`schedule`,schedule:{agentId:je,executionHistory:[],goalId:e.goalId,label:e.title,nextRunAt:d(`drawer.schedulePending`),notificationRule:d(`drawer.scheduleDefaultNotification`),schedule:e.fields.find(e=>e.key===`cadence`)?.value??d(`schedule.summary`),scheduleId:`${e.goalId}:heartbeat`,scheduleKind:`heartbeat`,status:e.status===`applied`?`active`:`draft`,stopCondition:e.fields.find(e=>e.key===`stop_condition`)?.value??d(`drawer.scheduleDefaultStop`),timezone:e.fields.find(e=>e.key===`timezone`)?.value??`Asia/Shanghai`}})),t=[...iS(a,Ve,d),...a.timeline??[],...e,...Qx(Object.values(S)).filter(e=>e.actionKind!==`heartbeat.bind`||e.status!==`applied`).map(e=>({id:`proposal:${e.previewId}`,kind:`proposal`,proposal:e}))];return[...new Map(t.map(e=>[e.id,e])).values()].filter(e=>e.kind!==`proposal`||![`stale`,`error`].includes(e.proposal.status)||ue.includes(e.proposal.previewId)).filter(e=>!R||e.kind===`message`?!0:e.kind===`proposal`?!e.proposal.goalId||e.proposal.goalId===R:e.kind===`attention`?e.attention.goalId===R:e.kind===`run`?e.run.goalId===R:e.kind===`schedule`?e.schedule.goalId===R:e.output.goalId===R)},[Ve,a,S,je,R,ue,d]),Ue=(0,z.useMemo)(()=>b?He.filter(e=>e.kind===`message`?!0:e.kind===`run`?e.run.runId===b.runId:e.kind===`output`&&e.output.runId===b.runId):He,[b,He]);(0,z.useEffect)(()=>{if(!b)return;let e=He.find(e=>e.kind===`run`&&e.run.runId===b.runId);!e||e.kind!==`run`||JSON.stringify({completedSteps:b.completedSteps,latestActivity:b.latestActivity,messages:b.sessionMessages,sessionStatus:b.sessionStatus,status:b.status,totalSteps:b.totalSteps})!==JSON.stringify({completedSteps:e.run.completedSteps,latestActivity:e.run.latestActivity,messages:e.run.sessionMessages,sessionStatus:e.run.sessionStatus,status:e.run.status,totalSteps:e.run.totalSteps})&&x(e.run)},[b,He]);let We=(0,z.useMemo)(()=>He.flatMap(e=>e.kind===`message`?[e.message]:[]),[He]),Ge=(0,z.useMemo)(()=>V?He.flatMap(e=>e.kind===`message`?[e.message]:[]):[],[He,V]);(0,z.useEffect)(()=>{V||E||We.some(e=>e.pending)&&k(!0)},[E,We,V]),(0,z.useEffect)(()=>{!V||w===`chat`||Ge.some(e=>e.pending)&&te(!0)},[Ge,V,w]);let Ke=(0,z.useMemo)(()=>He.filter(e=>e.kind===`message`||e.kind===`proposal`&&(ue.includes(e.proposal.previewId)||fe.includes(e.proposal.previewId))),[He,ue,fe]),qe=Ke[Ke.length-1],Je=qe?.kind===`message`?qe.message.text.length:0;(0,z.useEffect)(()=>{if(!E||!Te.current)return;let e=window.requestAnimationFrame(()=>{Te.current&&(Te.current.scrollTop=Te.current.scrollHeight)});return()=>window.cancelAnimationFrame(e)},[Ke.length,E,Je]);let Ye=(0,z.useMemo)(()=>{if(g?.kind===`settings`)return null;if(g?.kind===`attention`)return{kind:`attention`,item:Jd(g.item,a.attentionHistory??a.userTodos)};if(g?.kind===`goal`){let e=Le.find(e=>e.goalId===g.item.goalId);return e?{item:e,kind:`goal`}:g}if(g?.kind!==`run`)return g;let e=He.find(e=>e.kind===`run`&&e.run.runId===g.item.runId);return e?{item:e.run,kind:`run`}:g},[He,g,Le,a.attentionHistory,a.userTodos]);(0,z.useEffect)(()=>{if(o){ye({}),xe([]);return}let e=!1;return Promise.all([Xg(),s_()]).then(([t,n])=>{e||(ye(Object.fromEntries(t.map(e=>[e.goal_id,e.repository]))),xe(n))}).catch(()=>{}),()=>{e=!0}},[o]),(0,z.useEffect)(()=>{if(!me)return;function e(e){e.key===`Escape`&&he(!1)}return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[me]),(0,z.useEffect)(()=>{if(R||!He.length)return;if(!Se.current){Se.current=!0;try{Ce.current=Date.parse(window.localStorage.getItem(`loopx-pw-last-visit`)??``),window.localStorage.setItem(`loopx-pw-last-visit`,new Date().toISOString())}catch{Ce.current=NaN}}let e=Ce.current,t=He.filter(e=>e.kind===`run`).map(e=>e.run),n=t=>{let n=Date.parse(t??``);return!Number.isNaN(e)&&!Number.isNaN(n)&&n>e},r={attention:Re,done:t.filter(e=>e.status===`completed`&&n(e.latestActivity)).length,failed:t.filter(e=>(e.status===`failed`||e.status===`interrupted`)&&n(e.latestActivity)).length};Ae(e=>e?.attention===r.attention&&e.done===r.done&&e.failed===r.failed?e:r)},[He,Re,R]),(0,z.useEffect)(()=>{if(o){C({});return}let e=!1;return Hh(R?{goalId:R}:{contextKind:`manager`}).then(t=>{if(e)return;let n=t.filter(e=>[`preview_ready`,`gated`,`deferred`,`applying`].includes(e.status)||e.action_kind===`operation.execute`&&e.status===`applied`).map(e=>lS(e,d)),r=Object.fromEntries(n.map(e=>[e.previewId,e]));C(e=>({...e,...r})),R||pe(n.map(e=>e.previewId))}).catch(()=>{}),()=>{e=!0}},[o,R,d]);async function Xe(e,n={}){if(o)throw Error(d(`source.readOnlyWriteError`));let r;try{r=t.onPreviewAction?await t.onPreviewAction(e):lS(await Bh(e),d)}catch(t){if(!(t instanceof Fh)||t.payload.error_code!==`action_preview_gate`)throw t;let n=t.payload.gate&&typeof t.payload.gate==`object`?t.payload.gate:{},i=(Array.isArray(n.candidates)?n.candidates:[]).flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e;return typeof t.workspace_ref==`string`&&typeof t.label==`string`?[{label:t.label,workspaceRef:t.workspace_ref}]:[]}),a=String(n.kind??`workspace_selection_required`),o=a===`agent_binding_required`||a===`agent_identity_selection_required`;r={actionKind:e.actionKind,fields:i.map(e=>({key:`workspace_ref:${e.workspaceRef}`,label:e.label,value:e.workspaceRef})),gate:{kind:a,nextAction:typeof n.next_action==`string`?n.next_action:void 0,summary:String(n.summary??d(`proposal.workspaceGate.defaultSummary`))},impact:d(o?`proposal.workspaceGate.agentImpact`:`proposal.workspaceGate.selectionImpact`),previewId:`workspace-choice-${Date.now().toString(36)}`,sourceRequest:e,status:`gated`,title:d(o?`proposal.workspaceGate.agentTitle`:`proposal.workspaceGate.selectionTitle`),workspaceCandidates:i}}return de(e=>e.includes(r.previewId)?e:[...e,r.previewId]),C(e=>({...e,[r.previewId]:r})),n.select!==!1&&_({item:r,kind:`proposal`}),r}function Ze(){ot(null),Pe(`manager:${je}`,d(`composer.createGoalTemplate`)),window.requestAnimationFrame(()=>we.current?.focus())}async function Qe(e,n){he(!1);let r={delete:`Deleted from the owner workspace`,resume:`Resumed from the owner workspace`,stop:`Stopped from the owner workspace`},i={delete:d(`proposal.summary.lifecycleDelete`,{title:e.title}),resume:d(`proposal.summary.lifecycleResume`,{title:e.title}),stop:d(`proposal.summary.lifecycleStop`,{title:e.title})},a=null,o=!1;try{if(n===`stop`){if(De.current.has(e.goalId))return;De.current.add(e.goalId),I(new Set(De.current)),_(null),a={goalId:e.goalId,next:`stopped`,optimisticApplied:!0,previous:e.activationState},F(d(`feedback.applying`,{title:i.stop})),t.onGoalActivationStateChange?.(e.goalId,`stopped`)}if(t.onExecuteGoalLifecycle){if(n===`delete`)throw Error(`The selected status source does not authorize Goal deletion.`);let a=await t.onExecuteGoalLifecycle({goalId:e.goalId,operation:n,reason:r[n]});if(!a.projectionVerified)throw Error(`Goal lifecycle projection did not verify.`);o=!0,t.onGoalActivationStateChange?.(e.goalId,a.activationState),F(d(`feedback.completed`,{title:i[n]})),n===`stop`&&ot(null),await nt([e.goalId]);return}let s=await Xe({actionKind:`goal.lifecycle`,context:{kind:`goal_directory`,goal_id:e.goalId},idempotencyKey:`workspace-goal-${n}-${e.goalId}-${Date.now().toString(36)}`,normalizedParameters:{goal_id:e.goalId,operation:n,reason:r[n]},summary:i[n]},{select:n!==`stop`});if(s.goalId!==e.goalId||s.lifecycleOperation!==n)throw _(null),Error(d(`actionReview.targetChanged`));n===`stop`&&(s.reviewPlan?.interaction===`direct`?(o=!0,await rt(s,{lifecycleProjection:a??void 0,presentation:`feedback`})):(a&&t.onGoalActivationStateChange?.(a.goalId,a.previous),F(s.gate?d(`feedback.gateRequired`,{summary:s.gate.summary}):d(`feedback.notCompleted`,{status:s.status})),_({item:s,kind:`proposal`})))}catch(e){a&&!o&&t.onGoalActivationStateChange?.(a.goalId,a.previous),F(d(`feedback.executionFailed`,{error:e instanceof Error?e.message:String(e)}))}finally{n===`stop`&&(De.current.delete(e.goalId),I(new Set(De.current)))}}function $e(e,t){Fe(d(t?e===`heartbeat`?`composer.heartbeatTemplate`:`composer.monitorTemplate`:e===`heartbeat`?`composer.heartbeatTemplateWithoutGoal`:`composer.monitorTemplateWithoutGoal`)),_(null),window.requestAnimationFrame(()=>we.current?.focus())}async function et(e,n,r=``){let i=await t.onRequestScheduleConfig?.(e,n);if(i){de(e=>e.includes(i.previewId)?e:[...e,i.previewId]),C(e=>({...e,[i.previewId]:i})),_({item:i,kind:`proposal`});return}if(!n){Fe(d(e===`heartbeat`?`composer.heartbeatGoalQuestion`:`composer.monitorGoalQuestion`));return}let a=Date.now().toString(36);await Xe({actionKind:e===`heartbeat`?`heartbeat.bind`:`monitor.create`,context:{kind:`schedule`,goal_id:n},idempotencyKey:`workspace-${e}-${n}-${a}`,normalizedParameters:e===`heartbeat`?{agent_id:je,cadence:mS(r),goal_id:n,stop_condition:_S(r),timezone:`Asia/Shanghai`}:{agent_id:je,cadence:mS(r),goal_id:n,stop_condition:_S(r),target:gS(r,d),target_key:`goal-${n}`,timezone:`Asia/Shanghai`},summary:e===`heartbeat`?d(`proposal.summary.heartbeat`):d(`proposal.summary.monitor`,{target:gS(r,d)})})}async function tt(e){if(!Oe.current.has(e.todoId)){Oe.current.add(e.todoId),L(new Set(Oe.current)),F(d(`feedback.preparingPreview`,{title:e.text}));try{await Xe({actionKind:`todo.update`,context:{goal_id:e.goalId,kind:`todo`,todo_id:e.todoId},idempotencyKey:`workspace-todo-${e.todoId}-complete-${Date.now().toString(36)}`,normalizedParameters:{goal_id:e.goalId,operation:`complete`,todo_id:e.todoId},summary:d(`tasks.markComplete`,{name:e.text})}),F(null)}catch(e){F(d(`feedback.previewFailed`,{error:e instanceof Error?e.message:String(e)}))}finally{Oe.current.delete(e.todoId),L(new Set(Oe.current))}}}function nt(e){let n=t.onReconcileStatus,r=n?n({invalidateGoalIds:e}):t.onRefresh?.();return Promise.resolve(r).catch(()=>{F(d(`feedback.goalRefreshFailed`))})}async function rt(e,n={}){if(e.reviewPlan&&!e.reviewPlan.canApply)return;let r=n.presentation!==`feedback`,i=e.actionKind===`goal.lifecycle`&&e.goalId&&(e.lifecycleOperation===`stop`||e.lifecycleOperation===`resume`)?{goalId:e.goalId,next:e.lifecycleOperation===`stop`?`stopped`:`active`,optimisticApplied:!1,previous:a.goals.find(t=>t.goalId===e.goalId)?.activationState??(e.lifecycleOperation===`stop`?`active`:`stopped`)}:null,o=n.lifecycleProjection??i;F(d(`feedback.applying`,{title:e.title}));let s={...e,reviewPlan:e.reviewPlan?{...e.reviewPlan,interaction:`pending`,reason:`apply_pending`,canApply:!1}:void 0,status:`applying`};C(t=>({...t,[e.previewId]:s})),r&&_({item:s,kind:`proposal`}),o&&!o.optimisticApplied&&t.onGoalActivationStateChange?.(o.goalId,o.next);try{if(t.onApplyProposal){await t.onApplyProposal(e);let n={...e,status:`applied`};C(t=>({...t,[e.previewId]:n})),r&&_({item:n,kind:`proposal`}),F(d(`feedback.completed`,{title:e.title})),e.actionKind===`goal.lifecycle`&&((e.lifecycleOperation===`stop`||e.lifecycleOperation===`delete`)&&ot(null),e.lifecycleOperation===`delete`&&e.goalId&&t.onGoalDeleted?.(e.goalId),nt(e.goalId?[e.goalId]:void 0));return}let n=await Uh(e.previewId);if(n.proposal.proposal_id!==e.previewId||n.proposal.action_kind!==e.actionKind||e.actionKind===`goal.lifecycle`&&(n.proposal.normalized_parameters.goal_id!==e.goalId||cS(n.proposal)!==e.lifecycleOperation))throw new Fh(d(`actionReview.targetChanged`),{error_code:`action_response_mismatch`});let i=lS(n.proposal,d);if(C(t=>({...t,[e.previewId]:i})),r&&_({item:i,kind:`proposal`}),i.reviewPlan?.interaction!==`completed`){o&&t.onGoalActivationStateChange?.(o.goalId,o.previous),_({item:i,kind:`proposal`}),F(n.proposal.status===`stale`?d(`feedback.stale`):d(`actionReview.${i.reviewPlan.reason}`));return}F(d(`feedback.completed`,{title:i.title})),i.actionKind===`todo.create`&&await t.onRefresh?.(),i.actionKind===`goal.lifecycle`&&(i.lifecycleOperation===`stop`||i.lifecycleOperation===`delete`)&&ot(null),i.actionKind===`goal.lifecycle`&&i.lifecycleOperation===`delete`&&i.goalId&&t.onGoalDeleted?.(i.goalId),i.actionKind===`goal.lifecycle`&&nt(i.goalId?[i.goalId]:void 0)}catch(n){if(o&&t.onGoalActivationStateChange?.(o.goalId,o.previous),n instanceof Fh&&n.payload.error_code===`protected_action`){let r=n.payload.gate,i=r&&typeof r==`object`?r:{},a={...e,reviewPlan:e.reviewPlan?{...e.reviewPlan,interaction:`gated`,reason:`authority_gate`,canApply:!1}:void 0,gate:{kind:String(i.kind??`protected_action`),nextAction:typeof i.next_action==`string`?i.next_action:void 0,summary:String(i.summary??n.message)},status:`gated`};C(t=>({...t,[e.previewId]:a})),_({item:a,kind:`proposal`}),F(d(`feedback.gateRequired`,{summary:a.gate.summary})),e.actionKind===`goal.create`&&e.goalId&&(t.onRefresh?.(),ot(e.goalId));return}let r=n instanceof Fh&&Py(n.payload),i=n instanceof Fh&&n.payload.error_code===`action_response_mismatch`,a={...e,reviewPlan:e.reviewPlan?{...e.reviewPlan,interaction:r?`refresh`:`repair`,reason:i?`readback_unverified`:r?`stale_proposal`:`apply_failed`,canApply:!1}:void 0,errorMessage:n instanceof Error?n.message:String(n),status:r?`stale`:`error`};C(t=>({...t,[e.previewId]:a})),_({item:a,kind:`proposal`}),F(d(`feedback.executionFailed`,{error:a.errorMessage}))}}let it={...t,onOpenRunSession:async e=>{e.goalId!==R&&ot(e.goalId),T(`chat`),await t.onOpenRunSession?.(e),x(e),_(null)},onOpenGoal:e=>{ot(e),nt([e])},onOpenGoalView:e=>{T(e),e===`chat`&&x(null),_(null)},onOpenOutput:e=>{e.goalId!==R&&ot(e.goalId),T(`files`),t.onOpenOutput?.(e)},onApplyProposal:rt,onCancelProposal:async e=>{_(null),C(t=>{let n={...t};return delete n[e.previewId],n});try{t.onCancelProposal?.(e),t.onCancelProposal||await Wh(e.previewId)}catch(t){C(t=>({...t,[e.previewId]:e})),F(d(`feedback.cancelFailed`,{error:t instanceof Error?t.message:String(t)}))}},onTransitionProposal:async(e,t)=>{let n=lS(await Gh(e.previewId,t),d);de(e=>e.includes(n.previewId)?e:[...e,n.previewId]),C(r=>{let i={...r};return t===`regenerate`&&delete i[e.previewId],i[n.previewId]=n,i}),_({item:n,kind:`proposal`})},onSelectWorkspaceCandidate:async(e,t)=>{e.sourceRequest&&(C(t=>{let n={...t};return delete n[e.previewId],n}),await Xe({...e.sourceRequest,idempotencyKey:`${e.sourceRequest.idempotencyKey}-${t}`,normalizedParameters:{...e.sourceRequest.normalizedParameters,workspace_ref:t}}))},onPreviewAction:Xe,onRequestScheduleConfig:(e,t)=>$e(e,t),onOpenNotificationSettings:e=>_({goalId:e,kind:`settings`,tab:`lark`}),onFetchNotificationTargets:()=>mg(),onSetupGoalChannel:e=>gg(e),onToggleGoalAutoNotify:e=>_g(e),onUpdateSchedule:async(e,t)=>{let n=Date.now().toString(36),r=e.scheduleKind===`heartbeat`;await Xe({actionKind:r?`heartbeat.bind`:`monitor.update`,context:{kind:`schedule`,goal_id:e.goalId},idempotencyKey:`workspace-monitor-${e.scheduleId}-${t}-${n}`,normalizedParameters:{agent_id:e.agentId??je,...!r&&t===`run_now`?{endpoint_id:je}:{},...t===`edit`?{cadence:`2h`,...r?{timezone:e.timezone??`Asia/Shanghai`}:{}}:{},goal_id:e.goalId,operation:t,...!r&&t===`run_now`&&e.sessionId?{session_id:e.sessionId}:{},...r?{}:{todo_id:e.scheduleId}},summary:t===`pause`?`暂停自动运行:${e.label}`:t===`resume`?`恢复自动运行:${e.label}`:t===`run_now`?`立即运行:${e.label}`:t===`stop`?`停止自动运行:${e.label}`:`编辑自动运行生命周期:${e.label}`})}},at=o?{onOpenGoal:it.onOpenGoal,onOpenGoalView:it.onOpenGoalView,onOpenOutput:it.onOpenOutput}:it;function ot(e){p(e),D(!1),k(!1),te(!1),x(null),_(null),T(`tasks`),he(!1),t.onSelectGoal?.(e)}function st(e){h(e),t.onSelectAgent?.(e)}function ct(e){_e(e),Yx(e)}async function lt(n){let r=n?[]:N,i=(n??Ne).trim()||(r.length?d(`composer.imageAnalysisPrompt`):``);if(!(!i||M)){n||(Fe(``),P([])),ie(null),ne(!0);try{if(r.length){R?w!==`chat`&&te(!0):k(!0);let e=await t.onSendMessage?.(i,je,R,r);e&&await Xe(e);return}let n=Sb(i,{agents:e.map(e=>({agentId:e.agentId,label:e.label})),goalId:R,todos:(V?.agentTodos??[]).map(e=>({text:e.text,todoId:e.todoId}))});if(n.route===`clarify`){Fe(i);let e=d(`composer.clarifySingleAction`);n.missingFields.includes(`resume_when`)&&(e=d(`composer.clarifyDefer`)),F(e);return}if(n.actionKind===`goal.create`){let e=pS(i,d),t=uS(e.title);await Xe({actionKind:`goal.create`,context:{kind:`manager`,goal_id:null,natural_language:i},idempotencyKey:`workspace-goal-intent-${t}-${Date.now().toString(36)}`,normalizedParameters:{agent_id:je,completion_criteria:e.completionCriteria,execution_boundary:e.executionBoundary,goal_id:t,heartbeat:{cadence:mS(i),enabled:n.normalizedParameters.heartbeat_enabled===!0,timezone:`Asia/Shanghai`},initial_todos:e.initialTodos,objective:e.objective,permission:e.permission,stop_condition:_S(i),title:e.title,workspace_ref:`current`},summary:d(`proposal.summary.goalCreate`,{title:e.title})});return}if(R&&n.actionKind===`heartbeat.bind`){await et(`heartbeat`,R,i);return}if(R&&n.actionKind===`monitor.create`){let e=hS(i,d);if(e){Fe(i),F(e);return}await et(`monitor`,R,i);return}let a=vS(i,e);if(R&&a&&n.actionKind===`agent.bind`){await Xe({actionKind:`agent.bind`,context:{kind:`goal`,goal_id:R,natural_language:i},idempotencyKey:`workspace-agent-bind-${R}-${a.agentId}-${Date.now().toString(36)}`,normalizedParameters:{agent_id:a.agentId,goal_id:R},summary:`将 ${a.label} 绑定到 ${V?.title??R}`});return}if(R&&n.actionKind===`todo.create`){if(n.normalizedParameters.start_execution===!0){await Xe({actionKind:`todo.create`,context:{kind:`goal`,goal_id:R,natural_language:i},idempotencyKey:`workspace-task-start-${R}-${Date.now().toString(36)}`,normalizedParameters:{endpoint_id:a?.agentId??je,goal_id:R,start_execution:!0,text:i},summary:`交给 Agent 执行:${i.slice(0,120)}`});return}let e=a?.agentId??(/(交给|分配给|让).{0,24}(agent|codex|claude|kiro|kimi)/iu.test(i)?je:null);await Xe({actionKind:`todo.create`,context:{kind:`goal`,goal_id:R,natural_language:i},idempotencyKey:`workspace-todo-create-${R}-${Date.now().toString(36)}`,normalizedParameters:{...e?{endpoint_id:e}:{},goal_id:R,text:yS(i)},summary:`创建 Todo:${yS(i)}`});return}let o=V?.agentTodos.find(e=>i.includes(e.todoId)||i.includes(e.text)),s=typeof n.normalizedParameters.operation==`string`?n.normalizedParameters.operation:null;if(R&&o&&n.actionKind===`todo.update`&&s){await Xe({actionKind:`todo.update`,context:{kind:`todo`,goal_id:R,todo_id:o.todoId,natural_language:i},idempotencyKey:`workspace-todo-update-${o.todoId}-${s}-${Date.now().toString(36)}`,normalizedParameters:{agent_id:je,...s===`reassign`&&a?{endpoint_id:a.agentId}:{},...s===`block`?{note:i}:{},...s===`defer`&&typeof n.normalizedParameters.resume_when==`string`?{resume_when:n.normalizedParameters.resume_when}:{},goal_id:R,operation:s,todo_id:o.todoId},summary:`更新 Todo:${o.text}`});return}R?w!==`chat`&&te(!0):k(!0);let c=await t.onSendMessage?.(i,je,R);c&&await Xe(c)}catch(e){n||(Fe(i),P(r));let t=e instanceof Error?e.message:d(`feedback.sendGenericError`);F(d(`feedback.sendFailed`,{error:t}))}finally{ne(!1)}}}let ut=e.find(e=>e.agentId===je)?.label??je,dt=!V&&Ne.startsWith(d(`composer.createGoalDraftLead`)),ft=He.filter(e=>e.kind===`run`&&!!e.run.sessionId&&!!e.run.canInterrupt&&(e.run.status===`running`||e.run.status===`queued`)).length;async function pt(e){if(!e?.length)return;let t=SS-N.length,n=Array.from(e).slice(0,Math.max(0,t)),r=n.find(e=>!bS.has(e.type)),i=n.find(e=>e.size>xS);if(t<=0){ie(d(`composer.imageCountError`,{count:SS}));return}if(r){ie(d(`composer.imageTypeError`));return}if(i){ie(d(`composer.imageSizeError`,{size:xS/1024/1024}));return}try{let t=await Promise.all(n.map(e=>CS(e,d)));P(e=>[...e,...t].slice(0,SS)),ie(e.length>n.length?d(`composer.imageCountError`,{count:SS}):null)}catch(e){ie(e instanceof Error?e.message:d(`composer.imageReadGenericError`))}finally{Ee.current&&(Ee.current.value=``)}}function mt(e){let t=Array.from(e.clipboardData.items).filter(e=>e.kind===`file`&&e.type.startsWith(`image/`)).flatMap(e=>{let t=e.getAsFile();return t?[t]:[]});t.length&&(e.preventDefault(),pt(t))}async function ht(){let e=await s_();xe(e)}async function gt(){await Promise.all([ht(),t.onRefresh?.()])}async function _t(){if(!(!t.onRefresh||ce===`loading`)){le(`loading`);try{await t.onRefresh(),le(`done`)}catch{le(`error`)}window.setTimeout(()=>le(`idle`),1800)}}return Be?(0,B.jsx)(Gx,{callbacks:at,focusGoalConnection:!!(g?.kind===`settings`&&g.goalId),goalNotifications:a.goalNotifications??[],goals:Le,initialGoalId:g?.kind===`settings`?g.goalId??R:R,initialTab:g?.kind===`settings`?g.tab??`lark`:`lark`,onChanged:()=>void gt(),onClose:()=>_(null),onThemeChange:ct,theme:ge}):(0,B.jsx)(Xx,{drawer:Ye?(0,B.jsx)(jb,{agents:e,attentionHistory:a.attentionHistory??a.userTodos,onSelectAttention:e=>_({kind:`attention`,item:e}),callbacks:at,goalNotifications:a.goalNotifications??[],goals:Le,inspectorExpanded:v,larkConnections:o?[]:be,onClose:()=>{Ye.kind===`proposal`&&[`applied`,`rejected`].includes(Ye.item.status)&&(Ye.item.actionKind!==`heartbeat.bind`||Ye.item.status!==`applied`)&&C(e=>{let t={...e};return delete t[Ye.item.previewId],t}),y(!1),_(null)},onToggleInspectorSize:()=>y(e=>!e),readOnly:o,runs:He.flatMap(e=>e.kind===`run`?[e.run]:[]),selection:Ye}):null,drawerMode:Ye?.kind===`todo`?v?`inspector-full`:`inspector`:`panel`,drawerOpen:Ye!==null,mobileSidebarOpen:me,onCloseMobileSidebar:()=>he(!1),theme:ge,main:(0,B.jsxs)(`div`,{className:`personal-channel`,children:[(0,B.jsx)(tb,{agents:e,managerChatOpen:E,managerChannelBinding:r,managerRuntime:i,mobileNavigationOpen:me,onOpenGoalCapabilities:V?()=>_({goalId:V.goalId,kind:`settings`,tab:`capabilities`}):void 0,onOpenGoalDetail:V&&!V.loadState?()=>_({item:V,kind:`goal`}):void 0,onRefresh:t.onRefresh?()=>void _t():void 0,onOpenNavigation:()=>he(!0),onOpenManagerChat:()=>{k(!1),D(!0)},onSelectGoalTab:e=>{T(e),e===`chat`&&(x(null),te(!1))},onSelectAgent:st,onReturnManagerHome:()=>{D(!1),k(!1),window.requestAnimationFrame(()=>Te.current?.scrollTo({behavior:`smooth`,top:0}))},selectedAgentId:je,refreshState:ce,readOnlySourceLabel:o?l?.activeSource.label:void 0,selectedGoal:V,selectedGoalTab:w}),(0,B.jsxs)(`div`,{className:`personal-channel-scroll`,ref:Te,children:[!V&&!E&&ke&&ke.done+ke.failed+ke.attention>0?(0,B.jsxs)(`section`,{className:`personal-digest-card`,"aria-label":d(`digest.away`),children:[(0,B.jsx)(`strong`,{children:d(`digest.away`)}),(0,B.jsxs)(`div`,{className:`personal-digest-stats`,children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`b`,{children:ke.done}),d(`digest.completed`)]}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`b`,{children:ke.failed}),d(`digest.failed`)]}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`b`,{children:ke.attention}),d(`digest.needsYou`)]})]})]}):null,!V&&!E?(0,B.jsxs)(`section`,{className:`personal-manager-greeting`,children:[(0,B.jsx)(`span`,{children:(0,B.jsx)(nm,{size:20})}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:d(`home.greeting`)}),(0,B.jsx)(`p`,{children:a.goals.some(e=>e.activationState===`active`&&e.loadState)?d(`startup.partial`):(0,B.jsxs)(B.Fragment,{children:[d(`home.waitingCount`,{count:Re}),` `,d(`home.blockingSummary`,{count:ze})]})})]})]}):null,V?.loadState?(0,B.jsx)(`section`,{className:`personal-manager-greeting`,role:`status`,"data-testid":`goal-status-loading`,children:(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:d(V.loadState===`error`?`startup.goalError`:`startup.goalLoading`)}),(0,B.jsx)(`p`,{children:d(V.loadError?`startup.error.${V.loadError}`:`startup.independent`)}),V.loadState===`error`?(0,B.jsx)(`button`,{className:`min-h-11 rounded-md border px-3 py-2 text-sm`,type:`button`,onClick:()=>void t.onRefresh?.(),children:d(`startup.retry`)}):null]})}):V&&w===`tasks`?(0,B.jsx)(rx,{historyEnabled:!o,goal:V,items:He,onDraftTaskFromMessage:o?void 0:e=>{Fe(`创建一个 Task:${Zx(e)}`),F(d(`feedback.taskDraftCreated`)),window.requestAnimationFrame(()=>we.current?.focus())},onOpenChat:()=>T(`chat`),onQuickComplete:o?void 0:tt,onSelect:_,quickCompletingTodoIds:se,selectedTodoId:Ye?.kind===`todo`?Ye.item.todoId:null,userTodos:a.userTodos}):V&&w===`files`?(0,B.jsx)(tS,{items:He.filter(e=>e.kind===`output`),onSelect:_,reportState:a.periodicReports}):!V&&!E?(0,B.jsx)(eS,{goals:Le,onRetry:()=>void t.onRefresh?.(),onSelectGoal:ot,systemHealth:a.systemHealth}):V?(0,B.jsxs)(B.Fragment,{children:[V&&b?.goalId===V.goalId?(0,B.jsx)(rS,{onClose:()=>x(null),onOpenDetails:()=>_({item:b,kind:`run`}),run:b}):null,(0,B.jsx)(mb,{items:Ue,onSelect:_,selectedGoal:V})]}):(0,B.jsx)(mb,{items:Ke,onSelect:_,selectedGoal:null})]}),(0,B.jsx)(`div`,{className:`personal-composer-wrap`,children:o?(0,B.jsxs)(`div`,{className:`personal-read-only-notice`,children:[(0,B.jsx)(`strong`,{children:d(`source.readOnlyNoticeTitle`)}),(0,B.jsx)(`span`,{children:d(`source.readOnlyNoticeDescription`)})]}):(0,B.jsxs)(B.Fragment,{children:[!V&&!E&&O&&We.length?(0,B.jsx)(nS,{messages:We,onClose:()=>k(!1),onOpenConversation:()=>{k(!1),D(!0)}}):null,V&&w!==`chat`&&ee&&Ge.length?(0,B.jsx)(nS,{agentLabel:ut,messages:Ge,onClose:()=>te(!1),onDraftTask:w===`tasks`?e=>{Fe(`创建一个 Task:${Zx(e)}`),F(d(`feedback.taskDraftCreated`)),window.requestAnimationFrame(()=>we.current?.focus())}:void 0,onOpenConversation:()=>{te(!1),T(`chat`)},title:`${V.title} · ${ut}`}):null,ae?(0,B.jsxs)(`div`,{className:`personal-action-feedback`,role:`status`,children:[(0,B.jsx)(`span`,{children:ae}),(0,B.jsx)(`button`,{"aria-label":d(`common.closeActionReceipt`),onClick:()=>F(null),type:`button`,children:(0,B.jsx)(ah,{size:14})})]}):null,(0,B.jsx)(`p`,{className:`personal-composer-hint`,children:V?ft>0?d(`composer.goalRunningHint`,{agent:ut,count:ft}):d(`composer.goalMessageHint`,{agent:ut}):d(`composer.managerMessageHint`)}),V?(0,B.jsxs)(`div`,{className:`personal-quick-prompts`,children:[(0,B.jsxs)(`button`,{"aria-label":d(`composer.nextAction`),disabled:M,onClick:()=>void lt(d(`composer.nextActionPrompt`)),title:d(`composer.sendMessageHint`),type:`button`,children:[(0,B.jsx)(Mm,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.nextAction`)})]}),(0,B.jsxs)(`button`,{"aria-label":d(`composer.agentProgress`),disabled:M,onClick:()=>void lt(d(`composer.agentProgressPrompt`)),title:d(`composer.sendMessageHint`),type:`button`,children:[(0,B.jsx)(Km,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.agentProgress`)})]}),(0,B.jsxs)(`button`,{"aria-label":d(`composer.monitor`),disabled:M,onClick:()=>void lt(d(`composer.monitorShortcutTemplate`,{target:d(`schedule.defaultTarget`)})),title:d(`composer.sendMessageHint`),type:`button`,children:[(0,B.jsx)(im,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.monitor`)})]}),(0,B.jsxs)(`button`,{"aria-label":d(`composer.blockers`),disabled:M||!Ie(`gate`),onClick:()=>void lt(Ie(`gate`)),title:d(`composer.sendMessageHint`),type:`button`,children:[(0,B.jsx)(lm,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.blockers`)})]}),(0,B.jsxs)(`button`,{"aria-label":d(`composer.evidence`),disabled:M||!Ie(`evidence`),onClick:()=>void lt(Ie(`evidence`)),title:d(`composer.sendMessageHint`),type:`button`,children:[(0,B.jsx)(xm,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.evidence`)})]})]}):(0,B.jsxs)(`div`,{className:`personal-quick-prompts`,children:[(0,B.jsxs)(`button`,{"aria-label":d(`composer.globalTasks`),disabled:M,onClick:()=>void lt(d(`composer.globalTasksPrompt`)),title:d(`composer.sendMessageHint`),type:`button`,children:[(0,B.jsx)(Mm,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.globalTasks`)})]}),(0,B.jsxs)(`button`,{"aria-label":d(`composer.globalProgress`),disabled:M,onClick:()=>void lt(d(`composer.globalProgressPrompt`)),title:d(`composer.sendMessageHint`),type:`button`,children:[(0,B.jsx)(Km,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.globalProgress`)})]}),(0,B.jsxs)(`button`,{"aria-label":d(`composer.createGoal`),onClick:Ze,title:d(`composer.createGoalHint`),type:`button`,children:[(0,B.jsx)(Bm,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.createGoal`)})]})]}),dt?(0,B.jsxs)(`div`,{className:`personal-goal-draft-status`,role:`status`,children:[(0,B.jsx)(`strong`,{children:d(`composer.createGoalDraft`)}),(0,B.jsx)(`span`,{children:d(`composer.createGoalDraftDescription`)})]}):null,N.length?(0,B.jsx)(`div`,{className:`personal-composer-images`,"aria-label":d(`composer.imagesPending`),children:N.map(e=>(0,B.jsxs)(`figure`,{children:[(0,B.jsx)(`img`,{alt:e.name,src:e.dataUrl}),(0,B.jsx)(`button`,{"aria-label":d(`composer.sentImageAlt`,{name:e.name}),onClick:()=>P(t=>t.filter(t=>t.id!==e.id)),type:`button`,children:(0,B.jsx)(ah,{size:13})})]},e.id))}):null,re?(0,B.jsx)(`p`,{className:`personal-composer-error`,role:`alert`,children:re}):null,(0,B.jsxs)(`div`,{className:`personal-channel-composer`,onDragOver:e=>{[...e.dataTransfer.items].some(e=>e.kind===`file`&&e.type.startsWith(`image/`))&&e.preventDefault()},onDrop:e=>{let t=[...e.dataTransfer.files].filter(e=>e.type.startsWith(`image/`));t.length&&(e.preventDefault(),pt(t))},children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(nm,{size:17}),e.find(e=>e.agentId===je)?.label??je]}),(0,B.jsx)(`button`,{"aria-label":d(`composer.addImage`),className:`personal-composer-attach`,disabled:M||N.length>=SS,onClick:()=>Ee.current?.click(),title:d(`composer.attachImageHint`),type:`button`,children:(0,B.jsx)(Lm,{size:17})}),(0,B.jsx)(`input`,{accept:`image/png,image/jpeg,image/webp,image/gif`,"aria-label":d(`composer.imagePicker`),className:`personal-composer-file-input`,disabled:M||N.length>=SS,multiple:!0,onChange:e=>void pt(e.target.files),ref:Ee,type:`file`}),(0,B.jsx)(`textarea`,{"aria-label":d(`composer.sendMessage`),onChange:e=>Fe(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&!e.nativeEvent.isComposing&&(e.preventDefault(),lt())},onPaste:mt,placeholder:V?d(`composer.goalPlaceholder`,{goal:V.title}):d(`composer.managerPlaceholder`),ref:we,rows:1,value:Ne}),(0,B.jsx)(`button`,{"aria-label":d(dt?`composer.createGoal`:`composer.send`),disabled:!Ne.trim()&&N.length===0||M,onClick:()=>void lt(),title:d(dt?`composer.createGoalHint`:`composer.sendMessageHint`),type:`button`,children:(0,B.jsx)(Km,{size:18})})]})]})})]}),sidebar:(0,B.jsx)($b,{attentionCount:Re,goals:Le,goalArchiveLoadState:n,goalLifecycleOperations:t.onExecuteGoalLifecycle?[`stop`,`resume`]:void 0,lifecycleBusyGoalIds:oe,onRequestGoalCreate:o?void 0:Ze,onRequestGoalLifecycle:o&&!t.onExecuteGoalLifecycle?void 0:(e,t)=>void Qe(e,t),onRetryGoalArchive:t.onRetryGoalArchive||t.onRefresh?()=>void(t.onRetryGoalArchive??t.onRefresh)?.():void 0,onOpenSettings:o?void 0:()=>_({kind:`settings`}),onSelectGoal:ot,selectedGoalId:R,statusSourceControl:l},l?.activeSource.statusUrl??`/status.json`)})}function TS(e){return(e??``).replace(/\s+/gu,` `).trim()}function ES(e,t=120){let n=Array.from(e);return n.length<=t?e:`${n.slice(0,t-1).join(``)}…`}function DS(e,t,n){let r=TS(e);return!r||r===`暂无`?n?t(n):``:/refresh-state|latest_run|latest run-derived/iu.test(r)?t(`projection.refreshState`):/first read-only adapter tick|read-only adapter/iu.test(r)?t(`projection.firstReadOnlyAdapterCheck`):/todo update recorded for/iu.test(r)?t(`projection.todoStatusUpdated`):/^(loopx|python3|npm|git|run)\s|\s--[a-z0-9-]+|\b[a-z]+_[a-z_]+\b/iu.test(r)?t(n??`projection.agentPreparingNextStep`):ES(r)}function OS(e,t){return t({advancing:`projection.agentAdvancingGoal`,idle:`projection.agentIdle`,needs_you:`projection.agentNeedsDecision`,stopped:`projection.agentStopped`,waiting_external:`projection.agentWaitingExternal`}[e])}function kS({eventCount:e,hasArtifact:t,hasLatestValidation:n},r){return{label:r(n?`projection.latestValidation`:`projection.latestRun`),metadata:e>0?r(`projection.events24h`,{count:e}):r(t?`projection.runEvidenceAvailable`:`projection.publicSafeProjection`)}}var AS=`/status.json`,jS=`loopx-status-source-catalog-v1`,MS={id:`local`,kind:`local`,label:`本机`,readOnly:!1,statusUrl:AS};function NS(e,t){let n=uh(e,t).source;if(!n||!n.isLoopback||n.isRelative)return{error:`SSH 隧道来源必须使用显式的 localhost、127.0.0.1 或 ::1 URL。`};let r=new URL(n.url,t);return[`http:`,`https:`].includes(r.protocol)?{url:r.toString()}:{error:`状态来源只支持 HTTP 或 HTTPS。`}}function PS(e){let t=2166136261;for(let n of e)t^=n.codePointAt(0)??0,t=Math.imul(t,16777619);return`ssh-${(t>>>0).toString(36)}`}function FS(e,t){if(!e||typeof e!=`object`||Array.isArray(e))return null;let n=e;if(n.kind!==`ssh_tunnel`||typeof n.label!=`string`||typeof n.statusUrl!=`string`)return null;let r=n.label.trim(),i=NS(n.statusUrl,t);if(!r||r.length>48||!(`url`in i))return null;let a=Ub(n.hostAlias)?n.hostAlias.trim():void 0;return{...a?{hostAlias:a}:{},id:PS(i.url),kind:`ssh_tunnel`,label:r,readOnly:!0,statusUrl:i.url}}function IS(){return{schemaVersion:1,sources:[MS]}}function LS(e,t){try{let n=e.getItem(jS);if(!n)return IS();let r=JSON.parse(n);if(r.schemaVersion!==1||!Array.isArray(r.sources))return IS();let i=new Set([MS.statusUrl]);return{schemaVersion:1,sources:[MS,...r.sources.flatMap(e=>{let n=FS(e,t);return!n||i.has(n.statusUrl)?[]:(i.add(n.statusUrl),[n])})]}}catch{return IS()}}function RS(e,t){e.setItem(jS,JSON.stringify({schemaVersion:1,sources:t.sources.filter(e=>e.kind===`ssh_tunnel`)}))}function zS(e,t){let n=new Set(t.filter(Ub).map(e=>e.trim())),r=!1,i=e.sources.map(e=>e.kind!==`ssh_tunnel`||e.hostAlias||!n.has(e.label)?e:(r=!0,{...e,hostAlias:e.label}));return r?{...e,sources:i}:e}function BS(e,t,n){let r=t.label.trim();if(!r)return{error:`请填写来源名称。`};if(r.length>48)return{error:`来源名称不能超过 48 个字符。`};let i=NS(t.statusUrl,n);if(!(`url`in i))return i;if(e.sources.some(e=>e.statusUrl===i.url))return{error:`这个状态 URL 已经在来源目录中。`};if(t.hostAlias!==void 0&&!Ub(t.hostAlias))return{error:`请选择有效的 SSH Host。`};let a=t.hostAlias?.trim(),o={...a?{hostAlias:a}:{},id:PS(i.url),kind:`ssh_tunnel`,label:r,readOnly:!0,statusUrl:i.url};return{catalog:{...e,sources:[...e.sources,o]},source:o}}function VS(e,t){return{...e,sources:e.sources.filter(e=>e.kind===`local`||e.id!==t)}}function HS(e,t,n){if(!t.trim()||uh(t,n).source?.isRelative)return MS;let r=t.trim();try{r=new URL(r,n).toString()}catch{return null}return e.sources.find(e=>e.statusUrl===r)??null}function US(e,t,n){return HS(e,t,n)||(uh(t,n).source?.isRelative?MS:{id:`temporary`,kind:`ssh_tunnel`,label:`临时来源`,readOnly:!0,statusUrl:t.trim()})}function WS(e,t,n,r){return US(e,t??n,r)}var GS={delete:`删除`,deploy:`部署`,merge:`合并`,payment:`付款`,release:`发布`};function KS(e,t,n){let r=t.replace(/\s+/gu,` `).trim().toLowerCase(),i=n.target.replace(/\s+/gu,` `).trim().toLowerCase();return!i||!r.includes(i)?null:{actionKind:`goal.update`,context:{goal_id:e,kind:`goal`,natural_language:t,semantic_proposal:{operation:n.operation,target:n.target}},idempotencyKey:`workspace-semantic-protected-${e}-${Date.now().toString(36)}`,normalizedParameters:{goal_id:e,status:`operator_gate_requested`},summary:`请求受保护操作:${GS[n.operation]} · ${n.target}`}}var qS=AS;async function JS(e){let t=await fetch(e,{cache:`no-store`,signal:AbortSignal.timeout(3e4)});if(!t.ok)throw Error(`HTTP ${t.status} while loading ${e}`);return kp(await t.json())}function YS(e,t){if(t?.controller_readiness?.decision_advisor_ready||t?.controller_readiness?.write_controller_ready)return`controller_ready`;if(t?.controller_readiness)return`controller_gated`;if(t?.human_reward)return`reward_judged`;if(t?.operator_gate?.decision===`approve`)return`operator_approved`;if(t?.operator_gate)return`operator_gated`;let n=e||t?.classification||``;return n===`connected_without_run`?`connected`:n===`read_only_project_map`||t?.project_map?`mapped`:n===`state_refreshed`?`refreshed`:n&&n!==`no_status`?`adapter_inspected`:`registered`}function XS(e,t){let n=new Map(t.map(e=>[e.goal_id,e])),r=new Set,i=e.map(e=>{r.add(e.id);let t=n.get(e.id),i=e.latest_runs[0],a=t?.lifecycle_phase??e.lifecycle_phase??i?.lifecycle_phase??YS(t?.status??i?.classification??e.status,i),o=t?.lifecycle_flags?.length?t.lifecycle_flags:e.lifecycle_flags?.length?e.lifecycle_flags:i?.lifecycle_flags?.length?i.lifecycle_flags:[a];return{goal:e,queueItem:t,latestRun:i,status:t?.status??i?.classification??e.status??`no_status`,waitingOn:t?.waiting_on??`clear`,severity:t?.severity??`clear`,lifecyclePhase:a,lifecycleFlags:o}});for(let e of t)r.has(e.goal_id)||i.push({goal:{activation_state:e.activation_state,id:e.goal_id,status:e.status,display_name:e.goal_id,latest_runs:[],lifecycle_flags:[e.lifecycle_phase??`registered`],registry_member:!0,legacy_runtime_goal:!1,index_exists:!1,raw_index_records:0,unique_runs:0},queueItem:e,status:e.status,waitingOn:e.waiting_on,severity:e.severity,lifecyclePhase:e.lifecycle_phase??`registered`,lifecycleFlags:e.lifecycle_flags??[`registered`]});return i}function ZS(e){return(e??``).replace(/\s+/g,` `).trim()}function QS(e,t=132){let n=ZS(e);return n.length<=t?n:`${n.slice(0,Math.max(0,t-1))}…`}function $S(e){let t=new Map;for(let n of e?.goals??[])t.set(n.goal_id,n);return t}function eC(e,t){return e===void 0||t===void 0?void 0:e+t}function tC(e,t){if(!e)return null;let n=t===`user`?e.queueItem?.project_asset?.user_todos:e.queueItem?.project_asset?.agent_todos;if(n?.items?.length)return{done_count:n.done??n.items.filter(e=>e.done).length,items:n.items,open_count:n.open??n.items.filter(e=>!e.done).length,total_count:n.total??n.items.length};let r=t===`user`?e.queueItem?.user_todos:e.queueItem?.agent_todos;return r?.items?.length?r:null}function nC(e){return e?.items.find(e=>!e.done)}function rC(e,t,n=`todos`){return e?.items?.length?{advancement_done_count:e.advancement_done_count??t?.advancement_done_count,done_count:e.done??e.items.filter(e=>e.done).length,items:e.items,open_count:e.open??e.items.filter(e=>!e.done).length,total_count:e.total??e.items.length}:t??null}function iC(e){return e?.queueItem?.project_asset?.quota?.state??e?.queueItem?.quota?.state??e?.goal.quota?.state??`waiting`}function aC(e,t,n){let r=[];for(let t of e){let e=tC(t,`agent`);for(let n of e?.items??[])r.push({goalId:t.goal.id,role:`agent`,todo:n})}let i=new Map;for(let e of r){let t=e.todo.claimed_by||`codex`,n=i.get(t)??[];n.push(e),i.set(t,n)}let a=new Map((n?.agents??[]).map(e=>[e.agent_id,e]));return Array.from(new Set([...i.keys(),...a.keys()])).map(e=>{let t=i.get(e)??[],n=a.get(e),r=Array.from(new Set([...t.map(e=>e.goalId),n?.current_todo?.goal_id,...n?.goal_ids??[]].filter(Boolean))),o=(t.filter(e=>!e.todo.done)[0]??t[0])?.goalId??n?.current_todo?.goal_id??r[0]??``,s=n?.last_activity_at??null;return{agentId:e,claimedTodos:t,currentTodo:n?.current_todo??null,evidenceRefs:[],goalIds:r,handoffNote:null,lastActivity:s,nextSafeAction:n?.next_action?.trim()||`Inspect status projection before taking work`,primaryGoalId:o,quotaHints:[],staleClaimHint:null,status:{label:`可用`,summary:`正常运行`,variant:`success`},workspaceRef:null}})}function oC(e){return e?.map(e=>({dataUrl:e.data_url,id:e.id,mimeType:e.mime_type,name:e.name,size:e.size}))}var sC=`loopx.personal-agent-selection.v1`;function cC(){if(typeof window>`u`)return{};try{let e=JSON.parse(window.localStorage.getItem(sC)??`{}`);return!e||typeof e!=`object`||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(e=>typeof e[0]==`string`&&typeof e[1]==`string`))}catch{return{}}}var lC={需修复:`danger`,等你:`warning`,等待条件:`info`,推进中:`success`,安静运行:`neutral`,已停止:`neutral`,已完成:`neutral`};function uC(e,t){return ZS(t)||e.replace(/^loopx[-_]/i,`LoopX `).split(/[-_]+/).filter(Boolean).map((e,t)=>t===0?`${e.slice(0,1).toUpperCase()}${e.slice(1)}`:e).join(` `)}function dC(e){return e.split(/\r?\n/u).filter(e=>!/^\s*GOAL_(STATUS|PROGRESS)\s*:/u.test(e)).map(e=>/^\s*GOAL_EVIDENCE\s*:/u.test(e)?e.replace(/^\s*GOAL_EVIDENCE\s*:/u,`验证依据:`):/^\s*NEXT_ACTION\s*:/u.test(e)?e.replace(/^\s*NEXT_ACTION\s*:/u,`下一步:`):e).join(` +`).trim()}function fC(e,t){return[`agent`,`assistant`].includes(e.trim().toLowerCase())&&t.trim().length>0}var pC=`已发现的项目 Agent`;function mC(e){switch(Sy(e)){case`codex`:return`Codex`;case`claude`:return`Claude Code`;case`kiro`:return`Kiro CLI`;case`trae`:return`Trae CLI Agent`;case`coco`:return`Coco Agent`;default:return uC(e)}}function hC(e,t){switch(Cy(e,t)){case`codex`:return`代码与项目执行`;case`claude`:return`复杂分析与长任务`;case`openai`:case`anthropic`:return`管家问答 · 无工具`;case`kiro`:return`终端编码 · 原生 /goal 循环`;case`trae`:return`前端与交互实现`;case`coco`:return`通用任务`;default:return pC}}function gC(e,t){let n=e.project_asset;return t===`user`?rC(n?.user_todos,e.user_todos,`project_asset.user_todos`):rC(n?.agent_todos,e.agent_todos,`project_asset.agent_todos`)}function _C(e){return QS(e.title??e.text,112)}function vC(e){let t=e.resume_condition?.resume_receipt;if(!t||typeof t!=`object`||Array.isArray(t))return null;let n=t.receipt_id;return typeof n==`string`&&n.trim()?n.trim():null}function yC(e,t){return{resumeWhen:e.resume_when??null,resumeReady:e.resume_ready??null,resumeReceiptId:vC(e),claimedBy:e.claimed_by??null,done:e.status!==`deferred`&&e.done,evidence:e.evidence?QS(e.evidence,96):null,index:e.index,priority:e.priority??null,status:e.status??null,taskClass:e.task_class??null,taskDomain:e.task_domain??null,text:_C(e),todoId:e.todo_id?.trim()||`${t.goal.id}:agent:${e.index}`}}function bC(e){let t=e.queueItem?.agent_todos,n=t?.items??e.queueItem?.project_asset?.agent_todos?.items??[],r=new Map(n.map(t=>[t.todo_id?.trim()||`${e.goal.id}:agent:${t.index}`,t]));for(let n of t?.deferred_items??[]){let t=n.todo_id?.trim()||`${e.goal.id}:agent:${n.index}`;r.has(t)||r.set(t,n)}return[...r.values()]}function xC(e){return bC(e).map(t=>yC(t,e))}function SC(e,t,n){let r=new Map;for(let n of e.todo_index?.items??[]){if(n.goal_id!==t.goal.id||n.role!==`agent`)continue;let e=yC(n,t);r.set(e.todoId,e)}for(let e of n)r.has(e.todoId)||r.set(e.todoId,e);let i=new Map;for(let e of r.values()){if(e.done||e.taskClass!==`advancement_task`)continue;let t=e.taskDomain?.trim();t&&i.set(t,(i.get(t)??0)+1)}return[...i].map(([e,t])=>({domain:e,matchingTodoCount:t}))}function CC(e,t){return{claimedBy:e.claimed_by??null,done:e.status===`done`||e.status===`completed`,index:-1,priority:e.priority??null,status:e.status??null,taskClass:e.task_class??null,text:QS(e.title,112),todoId:e.todo_id?.trim()||`${t.goal.id}:agent:${e.claimed_by??`unknown`}:current`}}function wC(e,t,n){let r=new Map(e.map(e=>[e.todoId,e]));for(let e of t){let t=e.currentTodo;if(!t||t.goal_id!==n.goal.id)continue;let i=CC(t,n);r.has(i.todoId)||r.set(i.todoId,i)}return[...r.values()]}function TC(e){let t=e.queueItem?.project_asset?.agent_todos,n=e.queueItem?.agent_todos,r=bC(e),i=t?.advancement_done_count??n?.advancement_done_count??t?.done??n?.done_count??null,a=r.filter(e=>e.done&&e.status!==`deferred`).length,o=Math.max(i??0,a),s=new Set(r.map(e=>e.todo_id?.trim()).filter(e=>!!e)),c=(t?.recent_completed_advancement_items??[]).filter(e=>!e.todo_id?.trim()||!s.has(e.todo_id.trim())).map(t=>yC(t,e)),l=r.find(e=>!e.done);return{doneTodoCount:o,nextTodoText:ZS(t?.next??``)||(l?ZS(l.title??``)||ZS(l.text??``):``)||null,recentCompleted:c}}function EC(e,t){let n=ZS(e);return n?/\b(state_file|registry_goal|authority_sources|source_registry)\b|\b[a-z_]+\s+\d+\/\d+/i.test(n)?t(`projection.goalVerified`):DS(n,t,`projection.validationRecorded`):``}function DC(e,t=4){if(e.length<=t)return e;let n=e.findIndex(e=>!e.done);if(n<0)return e.slice(-t);let r=Math.max(0,Math.min(n-2,e.length-t));return e.slice(r,r+t)}function OC(e,t,n){let r=t.queueItem?.project_asset?.latest_validation,i=t.latestRun,a=e.event_ledger_summary?.goals.find(e=>e.goal_id===t.goal.id);if(!r&&!i&&!a)return null;let o=[EC(r?.summary,n),DS(i?.health_check,n),DS(i?.recommended_action,n)].find(e=>e!==``&&e!==`暂无`)??n(`projection.runRecorded`),s=kS({eventCount:a?.events_24h??0,hasArtifact:!!(i?.json_exists||i?.markdown_exists),hasLatestValidation:!!r},n);return{generatedAt:r?.generated_at??i?.generated_at??a?.latest_event_at??``,label:s.label,metadata:s.metadata,runId:i?`${t.goal.id}:${i.generated_at}`:null,safePreview:[o,s.metadata].filter(Boolean).join(` +`),summary:o,todoId:t.queueItem?.project_asset?.agent_todos?.items.find(e=>!e.done)?.todo_id??null}}function kC(e){return[e.status,e.goal.status,e.latestRun?.classification,e.lifecyclePhase].filter(Boolean).some(e=>/(^|[_\s-])(done|complete|completed|finished|terminal|closed|success)([_\s-]|$)/i.test(e??``))}function AC(e,t){return e.global_registry?.findings?.find(e=>e.severity===`high`&&(e.goal_id===t.goal.id||e.goal_ids.includes(t.goal.id)))}function jC(e){return[e.status,e.goal.status,e.latestRun?.classification,e.lifecyclePhase].filter(Boolean).some(e=>/(^|[_\s-])(failure|failed|error|broken|unhealthy|blocked[_\s-]?health|health[_\s-]?blocked)([_\s-]|$)/i.test(e??``))}function MC(e,t){let n=t.queueItem?.stale_latest_run_warning;return t.severity===`high`||!!AC(e,t)||!!(n?.requires_refresh_state||n?.severity===`high`)||jC(t)}function NC(e,t){let n=AC(e,t);return t.queueItem?.stale_latest_run_warning?.recommended_action??t.queueItem?.stale_latest_run_warning?.reason??n?.recommended_action??n?.message??t.queueItem?.recommended_action??t.latestRun?.recommended_action??null}function PC(e){let t=e.latestRun?.operator_gate,n=t?.decision?.trim().toLowerCase()??``,r=new Set([`approve`,`approved`,`reject`,`rejected`,`defer`,`deferred`,`cancel`,`cancelled`]),i=[e.queueItem?.recommended_action,e.latestRun?.recommended_action].filter(Boolean).join(` `),a=/(?:等待|需要)(?:用户|你|owner).{0,24}(?:批准|确认|授权|补充|选择|决定)|(?:批准|确认|授权).{0,16}(?:后|才能|方可)/i.test(i);return!!(t&&!r.has(n))||e.lifecyclePhase===`operator_gated`&&!r.has(n)||a}function FC(e,t){let n=e.latestRun?.operator_gate;return DS(n?.operator_question??n?.reason_summary??n?.follow_up??e.queueItem?.recommended_action??e.latestRun?.recommended_action,t,`projection.confirmAgentDecision`)}function IC(e,t){if(t.goal.activation_state===`stopped`)return`已停止`;let n=tC(t,`user`),r=tC(t,`agent`),i=!!nC(n),a=!!nC(r);return[`user_or_controller`,`controller`].includes(t.waitingOn)||i||PC(t)?`等你`:MC(e,t)?`需修复`:t.waitingOn===`external_evidence`?`等待条件`:iC(t)===`eligible`||a?`推进中`:kC(t)?`已完成`:`安静运行`}function LC(e,t,n,r){if(n===`已停止`)return OS(`stopped`,r);if(n===`需修复`)return DS(NC(e,t),r,`projection.statusRefreshNeeded`);if(n===`等你`)return OS(`needs_you`,r);if(n===`推进中`){let e=[(tC(t,`agent`)?.items??[]).filter(e=>!e.done).flatMap(e=>[e.title,e.text]).map(e=>ZS(e)).find(e=>e!==``&&e!==`暂无`),t.queueItem?.recommended_action,t.latestRun?.recommended_action].map(e=>ZS(e)).find(e=>e!==``&&e!==`暂无`);return e?DS(e,r,`projection.agentAdvancingGoal`):OS(`advancing`,r)}return OS(n===`等待条件`?`waiting_external`:`idle`,r)}function RC(e,t){return t.some(t=>e.includes(t))}function zC(e,t,n){if(t.goals.some(e=>e.activationState===`active`&&e.loadState))return{text:`Goal 状态尚未全部加载,暂不能给出完整统计。可先打开已加载的 Goal,失败项可重试。`,lines:[]};if(RC(n,[`Agent`,`agent`,`推进`,`在做`])){let e=t.goals.filter(e=>![`安静运行`,`已完成`,`已停止`].includes(e.state)),n=(e.length>0?e:t.goals).slice(0,3);return n.length===0?{text:`当前状态里还没有 Goal 可供汇总。`,lines:[]}:{text:e.length>0?`Agent 当前关注这些 Goal:`:`当前 Goal 都比较安静:`,lines:n.map(e=>`${e.title} · ${e.state} · ${e.agentSentence}`)}}if(RC(n,[`现在`,`下一步`,`我该`,`该做什么`,`优先处理`])){let e=t.userTodos[0];if(e)return{text:e.blocking?`先处理「${uC(e.goalId)}」:${e.text}`:`当前最先处理「${uC(e.goalId)}」:${e.text}`,lines:[]};let n=t.goals.find(e=>e.state===`需修复`);if(n)return{text:`没有待办,但这个 Goal 需要先修复。`,lines:[`${n.title} · ${n.agentSentence}`]};let r=t.goals.find(e=>e.state===`推进中`);return r?{text:`目前不需要你介入,Agent 正在推进。`,lines:[`${r.title} · ${r.agentSentence}`]}:{text:`当前系统很安静,没有需要你立即处理的事项。`,lines:[]}}if(RC(n,[`等我`,`阻塞`,`需要我`,`全局待办`]))return t.userTodos.length===0?{text:`目前没有 Goal 在等你,开放用户待办为 0。`,lines:[]}:{text:`有 ${t.userTodos.length} 项开放用户待办,阻塞项优先:`,lines:t.userTodos.slice(0,3).map(e=>`${uC(e.goalId)} · ${e.blocking?`阻塞`:`待处理`} · ${e.text}`)};if(RC(n,[`状态`,`异常`,`修复`,`健康`])){let n=t.systemHealth?!t.systemHealth.ok:!e.ok||!e.contract?.ok||!e.global_registry?.ok||(e.global_registry?.summary?.high??0)>0,r=t.goals.filter(e=>e.state===`需修复`),i=r.slice(0,n?2:3).map(e=>`${e.title} · ${e.agentSentence}`);return n&&i.push(`全局状态、契约或注册表健康检查未通过,请进入管理页检查。`),i.length===0?{text:`当前没有发现 Goal 级或全局健康异常。`,lines:[]}:{text:r.length>0?`当前需要关注这些健康问题:`:`Goal 状态正常,但全局健康需要检查:`,lines:i}}return{text:`当前管家支持三类问题:下一步、等待你的事项、Agent 与健康状态。`,lines:[`问“我现在该做什么?”`,`问“哪些 Goal 在等我?”`,`问“Agent 在做什么?”或当前健康状态`]}}function BC(e,t,n,r=!1){let i=new Map(t.map(e=>[e.goal.id,e])),a=new Set(e.run_history.goals.filter(e=>e.activation_state===`stopped`).map(e=>e.id)),o=$S(e.usage_summary),s=aC(t,e.todo_index,e.agent_management_projection),c=e.attention_queue.items.flatMap((e,t)=>{if(a.has(e.goal_id))return[];let n=[`user_or_controller`,`controller`].includes(e.waiting_on);return(gC(e,`user`)?.items??[]).map((r,i)=>({projectedDone:r.done,details:Kd(r),actionKind:r.action_kind??null,blocking:n,goalId:e.goal_id,sourceOrder:t,taskClass:r.task_class??null,text:_C(r),todoId:r.todo_id?.trim()||`${e.goal_id}:user:${r.index}`,todoOrder:i,updatedAt:r.updated_at??null}))}),l=c.filter(e=>!e.projectedDone),u=new Set(l.map(e=>e.goalId)),d=t.flatMap((t,r)=>a.has(t.goal.id)||u.has(t.goal.id)||!PC(t)?[]:[{details:Kd({task_class:`user_gate`,status:`open`,note:t.latestRun?.operator_gate?.reason_summary}),actionKind:`gate.resolve`,blocking:!0,goalId:t.goal.id,sourceOrder:e.attention_queue.items.length+r,taskClass:`user_gate`,text:FC(t,n),todoId:`${t.goal.id}:operator-gate`,todoOrder:0,updatedAt:t.latestRun?.operator_gate?.recorded_at??t.latestRun?.generated_at??null}]),f=[...l,...d].sort((e,t)=>Number(t.blocking)-Number(e.blocking)||e.sourceOrder-t.sourceOrder||e.todoOrder-t.todoOrder),p=e.run_history.goals.flatMap(t=>{if(t.registry_member===!1)return[];let a=i.get(t.id);if(!a)return[];let c=IC(e,a),l=f.find(e=>e.goalId===t.id),u=l?.text??null,d=TC(a),p=t.coordination?.registered_agents??[],m=new Set(p),h=[...s.filter(e=>e.goalIds.includes(t.id)&&!/unassigned|unknown/i.test(e.agentId)&&(m.size===0||m.has(e.agentId))&&(e.currentTodo?.goal_id===t.id||e.claimedTodos.some(e=>e.goalId===t.id)))].sort((e,t)=>(t.lastActivity??``).localeCompare(e.lastActivity??``)),g=new Set(h.map(e=>e.agentId)),_=[...h.map(e=>({agentId:e.agentId,label:e.agentId,lastActivityAt:e.lastActivity,state:e.status.label})),...p.filter(e=>!g.has(e)).map(e=>({agentId:e,label:e,lastActivityAt:null,state:`registered`}))],v=h[0],y=wC(xC(a),h,a),b=[d.nextTodoText,a.queueItem?.recommended_action,a.latestRun?.recommended_action,LC(e,a,c,n)].map(e=>DS(e,n)).find(e=>e!==``&&e!==`暂无`)??n(`projection.nextUpdatePending`);return[{activationState:t.activation_state,agentId:v?.agentId??p[0]??`codex`,agentLaneCount:_.length,agentLanes:_,agentLabel:v?.agentId,agentSentence:LC(e,a,c,n),agentTodos:[...y,...d.recentCompleted],doneTodoCount:d.doneTodoCount,acceptanceObservation:t.acceptance_observation,goalId:t.id,latestActivity:a.latestRun?.generated_at??``,needsYou:u,needsYouActionKind:l?.actionKind??null,needsYouBlocking:l?.blocking??!1,needsYouTaskClass:l?.taskClass??null,needsYouTodoId:l?.todoId??null,nextSentence:b,runEvidence:OC(e,a,n),state:c,...r?{subagentExecution:{allowedDomains:t.spawn_policy?.allowed_domains??[],domainCandidates:SC(e,a,y),enabled:t.spawn_policy?.mode===`multi_subagent`&&t.spawn_policy.spawn_allowed===!0&&t.spawn_policy.max_children>0,maxChildren:t.spawn_policy?.max_children??0,modelConfig:t.spawn_policy?.model_config}}:{},title:uC(t.id,t.display_name),usage:(()=>{let e=o.get(t.id);return e?{costUsd24h:e.cost_usd_24h,costUsd7d:e.cost_usd_7d,durationMs24h:e.duration_ms_24h,durationMs7d:e.duration_ms_7d,tokens24h:eC(e.input_tokens_24h,e.output_tokens_24h),tokens7d:eC(e.input_tokens_7d,e.output_tokens_7d)}:null})()}]}),m=[];if(e.ok||m.push(`状态载荷未标记为正常 (payload.ok === false)`),e.contract&&!e.contract.ok){let t=e.contract.summary,n=t?`${t.errors} 项错误 / ${t.warnings} 项警告`:e.contract.errors?.[0]||`请检查控制面契约`;m.push(`契约检查未通过: ${n}`)}if(e.global_registry){e.global_registry.ok||m.push(`注册表状态异常: ${e.global_registry.summary.high} 项高危`);for(let t of e.global_registry.findings||[])t.severity===`high`&&m.push(`[${t.kind}] ${t.message}`)}let h=e.decision_freshness_summary?.summary?.stale_count?`${e.decision_freshness_summary.summary.stale_count} 项决策状态已过期`:null,g=m.length===0&&!h,_={ok:g,summary:g?`所有控制面契约与注册表检查均正常`:`发现 ${m.length+ +!!h} 项系统健康关注点`,issues:m,freshnessWarning:h};return{blockingTodoCount:f.filter(e=>e.blocking).length,goalNotifications:(e.goal_channel_notification_projection?.goals??[]).map(e=>({goalId:e.goal_id,configured:e.configured,enabled:e.enabled,humanGateAutoNotifyEnabled:e.human_gate_auto_notify_enabled,lastNotifiedAt:e.last_notified_at??null,receiptCount:e.receipt_count,targetRef:e.target_ref??null})),goals:p,openUserTodoCount:f.length,systemHealth:_,attentionHistory:[...c,...d],userTodos:f,visibleUserTodos:f.slice(0,5),workers:(e.agent_management_projection?.agents??[]).map(e=>({agentId:e.agent_id,currentTodoGoalId:e.current_todo?.goal_id??null,currentTodoText:e.current_todo?.title?QS(e.current_todo.title,96):null,lastActivityAt:e.last_activity_at??null,state:e.state??null}))}}function VC({goalArchiveLoadState:e,isLoading:t,onGoalActivationStateChange:n,onGoalDeleted:r,onSelectGoal:i,onReconcileStatus:a,onRefresh:o,onRetryGoalArchive:s,payload:c,progress:l,rows:u,selectedGoalId:d,statusSourceControl:f,theme:p,toggleTheme:m}){let h=f.activeSource.readOnly,g=f.activeSource.kind===`ssh_tunnel`?f.activeSource.hostAlias:void 0,{t:_}=Ji(),[v,y]=(0,z.useState)([]),[b,x]=(0,z.useState)(!1),[S,C]=(0,z.useState)(null),[w,T]=(0,z.useState)(null),E=(0,z.useMemo)(()=>{let e=BC(c,u,_,b);if(!l)return e;let t=Object.values(l.snapshots).map(e=>BC(e,XS(e.run_history.goals,e.attention_queue.items),_,b)),n=new Map(t.flatMap(e=>e.goals).map(e=>[e.goalId,e])),r=e.goals.map(e=>n.get(e.goalId)??{...e,loadError:l.errors[e.goalId],loadState:l.errors[e.goalId]?`error`:`loading`,agentId:``,agentSentence:``,nextSentence:``,subagentExecution:void 0}),i=t.flatMap(e=>e.userTodos),a=r.some(e=>e.activationState===`active`&&e.loadState),o=[...new Set(t.flatMap(e=>e.systemHealth?.issues??[]))];return{...e,goals:r,userTodos:i,attentionHistory:t.flatMap(e=>e.attentionHistory??e.userTodos),visibleUserTodos:i.slice(0,5),openUserTodoCount:i.length,blockingTodoCount:i.filter(e=>e.blocking).length,workers:[...new Map(t.flatMap(e=>e.workers??[]).map(e=>[e.agentId,e])).values()],goalNotifications:t.flatMap(e=>e.goalNotifications??[]),systemHealth:a||t.length===0?void 0:{ok:t.every(e=>e.systemHealth?.ok),issues:o,summary:o.length?`发现 ${o.length} 项系统健康关注点`:`状态检查已完成`,freshnessWarning:t.map(e=>e.systemHealth?.freshnessWarning).filter(Boolean).join(`;`)||null}}},[c,u,l,b,_]),D=E.goals.find(e=>e.goalId===d)??null,O=l?.snapshots[d]??c,[k,ee]=(0,z.useState)(null),[te,A]=(0,z.useState)(null),[j,M]=(0,z.useState)(!1),ne=E.goals.some(e=>e.activationState===`active`&&e.loadState===`loading`)?`loading`:E.goals.map(e=>`${e.goalId}:${e.agentId}`).join(`|`),N=D?.goalId??`manager`;E.goals.some(e=>e.activationState===`active`&&e.loadState)||(E.systemHealth?!E.systemHealth.ok:!c.ok)||E.openUserTodoCount>0&&`${E.openUserTodoCount}${E.blockingTodoCount}`;let P=v.length>0?v.map(e=>({agentId:e.agent_id,adapterKind:e.adapter_kind,available:e.available,capability:hC(e.agent_id,e.adapter_kind),interrupt:e.interrupt,label:e.display_name,location:e.location,resume:e.resume,source:e.source,statusLabel:e.available?`可用`:`需要配置`,streaming:e.streaming,toolCalls:e.tool_calls,trustScope:e.trust_scope})):[{agentId:`codex`,available:!0,capability:hC(`codex`),label:`Codex`,statusLabel:`正在检测`}],re=[...P,{agentId:`status-only`,available:!0,capability:`不调用模型`,adapterKind:`status_projection`,interrupt:!1,label:`仅查状态`,resume:!0,statusLabel:`只读`,streaming:!1,toolCalls:!1,trustScope:`read_only`}],ie=P.find(e=>e.label===`Codex`&&e.available)?.agentId??P.find(e=>e.available)?.agentId??`status-only`,ae=w?.executor_endpoint?.trim()??``,F=ae?P.find(e=>e.agentId===ae)?.agentId:void 0,oe=e=>e===`manager`?F??ie:ie,[I,se]=(0,z.useState)(cC),L=gh(re,I[N]??oe(N),ie),[ce,le]=(0,z.useState)(!1),[ue,de]=(0,z.useState)(!1),[fe,pe]=(0,z.useState)(`chat`),[me,he]=(0,z.useState)(``),[ge,_e]=(0,z.useState)({}),[ve,ye]=(0,z.useState)({}),[be,xe]=(0,z.useState)(null),[Se,Ce]=(0,z.useState)({}),[we,Te]=(0,z.useState)([]),[Ee,De]=(0,z.useState)(null),[Oe,ke]=(0,z.useState)({}),Ae=(0,z.useRef)(1),R=(0,z.useRef)(1),je=(0,z.useRef)(new Map),Me=(0,z.useRef)(new Set),Ne=(0,z.useRef)(new Map),Pe=(0,z.useRef)(new Map),Fe=(0,z.useRef)(new Set),Ie=(0,z.useRef)(new Set),Le=(0,z.useRef)(null),Re=(0,z.useRef)(null),ze=(0,z.useRef)(null),V=(0,z.useRef)(null);(0,z.useRef)(null);let Be=ge[N]??[];ve[N];let Ve=(e,t)=>e===`manager`?_(`header.manager`):t,He=D?E.userTodos.filter(e=>e.goalId===D.goalId):E.userTodos,Ue=D?.agentTodos??[];DC(Ue,D?.needsYou?3:4);let We=Ue.filter(e=>e.done).length,Ge=Ue.length>0?`${We}/${Ue.length}`:`暂无计划`;D&&({...E},He.filter(e=>e.blocking).length,He.length),(0,z.useEffect)(()=>{let e=lh(f.activeSource.statusUrl,window.location.href),t=e.source?ph(O,e.source):null;if(!D||!t?.indexUrl||!t.detailUrl){ee(null),A(null),M(!1);return}let{detailUrl:n,indexUrl:r}=t,i=!1;return ee(null),A(null),M(!0),mh(r,D.goalId).then(async e=>{let t=e.items[0]?.detail_ref;return t?hh(n,t):null}).then(e=>{i||ee(e)}).catch(e=>{i||A(Ap(e))}).finally(()=>{i||M(!1)}),()=>{i=!0}},[O,D?.goalId,f.activeSource.statusUrl]);let Ke=D?void 0:Se[N]?.sessionId;(0,z.useEffect)(()=>{if(h||!Ke)return;let e=!1,t,n=async()=>{try{let t=await Xh(Ke);if(e)return;let n=t.messages.filter(e=>e.origin===`manager_followup`);_e(e=>{let t=e[N]??[],r=new Set(t.map(e=>e.sourceMessageId)),i=n.filter(e=>!r.has(e.message_id)),a=new Map(n.map(e=>[e.message_id,e.return_delivery])),o=!1,s=t.map(e=>{let t=e.sourceMessageId?a.get(e.sourceMessageId):void 0;return JSON.stringify(t)===JSON.stringify(e.returnDelivery)?e:(o=!0,{...e,returnDelivery:t})});return!i.length&&!o?e:{...e,[N]:[...s,...i.map(e=>({id:Ae.current++,sourceMessageId:e.message_id,role:`assistant`,agentLabel:Ve(N,L.label),sourceLabel:`管家交接回执`,text:dC(e.text),lines:[],returnDelivery:e.return_delivery}))]}})}catch{}finally{e||(t=setTimeout(n,3e3))}};return n(),()=>{e=!0,t&&clearTimeout(t)}},[h,Ke,N,L.label]);function qe(e,t){Ce(n=>{if(t===null){let t={...n};return delete t[e],t}return{...n,[e]:t}})}(0,z.useEffect)(()=>{if(h){y([]),x(!1),C(null),T(null);return}let e=!1;return qh().then(t=>{if(!e){y(t.adapters??[]);let e=t.manager?.runtime;T(t.manager?.channel_binding??null),C(e?{schema_version:`manager_runtime_session_readback_v0`,runtime_profile:e.runtime_profile,configuration_revision:e.configuration_revision,status:e.status,sandbox:e.sandbox,standing_grant:e.standing_grant,tool_classes:e.tool_classes}:null),x(t.goal_subagent_configuration===`preview_locked`)}}).catch(()=>{e||x(!1)}),()=>{e=!0}},[h]),(0,z.useEffect)(()=>{try{window.localStorage.setItem(sC,JSON.stringify(I))}catch{}},[I]),(0,z.useEffect)(()=>{if(h||!L.available)return;let e=N,t=`${e}:${L.agentId}`,n=D?`goal`:`manager`,r=D?`goal.${D.goalId}`:`manager`,i=!1,a=null,o=null;return(async()=>{try{let s=await $h({agentId:n===`manager`?void 0:L.agentId,channelId:r,goalId:D?.goalId});if(i||(_e(t=>(t[e]?.length??0)>0?t:{...t,[e]:s.messages.map(t=>({sourceMessageId:t.message_id,agentLabel:t.role===`user`?void 0:Ve(e,L.label),attachments:oC(t.attachments),id:Ae.current++,lines:[],role:t.role===`user`?`user`:`assistant`,returnDelivery:t.return_delivery,sourceLabel:t.role===`user`?void 0:t.role===`error`?`本地会话记录`:e===`manager`?`恢复的${_(`header.manager`)}会话`:`恢复的 ${L.label} 会话`,text:t.role===`user`?t.text:dC(t.text)}))}),L.agentId===`status-only`))return;let c=s.sessions[0];if(o=c?.session_id??null,c&&!c.resumable){Me.current.add(t),qe(e,{agentId:L.agentId,resumable:!1,sessionId:c.session_id,status:`resume_failed`});return}let l=n===`manager`?``:D?.goalId??``;if(n===`goal`&&!l)return;let u=await Yh(l,n===`manager`?I[e]:L.agentId,`resume_latest`,n);if(i)return;n===`manager`&&u.session.manager_runtime&&C(u.session.manager_runtime),je.current.set(t,u.session_id);let d=s.snapshots.find(e=>e.session.session_id===u.session_id),f=d?.session.active_turn_id??``;if(qe(e,{agentId:u.agent_id||L.agentId,resumable:!0,sessionId:u.session_id,status:f?`running`:`ready`,turnId:f||void 0}),Me.current.delete(t),!f)return;let p=`${u.session_id}:${f}`;if(Ie.current.has(p))return;Ie.current.add(p),Ne.current.set(e,f),qe(e,{agentId:L.agentId,resumable:!0,sessionId:u.session_id,status:`running`,turnId:f}),xe(e),a=new AbortController,Pe.current.set(e,a);let m=``,h=Je(e,{activity:[`正在恢复进行中的 Agent 回合`],agentLabel:Ve(e,L.label),lines:[],pending:!0,sourceLabel:e===`manager`?`恢复的${_(`header.manager`)}会话`:`恢复的 ${L.label} 会话`,text:``});try{let t=await og(u.session_id,f,{signal:a.signal,onDelta:t=>{m+=t,Ye(e,h,{text:m})},onActivity:t=>{_e(n=>({...n,[e]:(n[e]??[]).map(e=>e.id===h?{...e,activity:[...new Set([...e.activity??[],t])].slice(-6)}:e)}))}});if(i)return;Ye(e,h,{lines:t.response.gate?[t.response.gate.summary,t.response.gate.next_action].filter(Boolean).slice(0,2):[],pending:!1,text:t.response.message||m.trim()||`${Ve(e,L.label)} 已完成分析。`});let n=E.goals.find(e=>e.goalId===d?.session.goal_id)??D??E.goals[0]??null;if(n&&t.response.proposals.length>0){let r=t.response.proposals.filter(_h).map(e=>({goalId:n.goalId,id:R.current++,previewId:null,proposal:e,receiptLabel:null,state:`candidate`,statusMessage:null}));r.length>0&&ye(t=>({...t,[e]:[...t[e]??[],...r]}))}}catch(t){if(i)return;Ye(e,h,{activity:[],lines:[],pending:!1,reconnect:t instanceof Fh&&t.payload.reconnectable===!0,sourceLabel:`LoopX Chat 本地后端`,text:t instanceof Error?t.message:`无法恢复进行中的 Agent 回合。`})}finally{Ie.current.delete(p),Ne.current.get(e)===f&&Ne.current.delete(e),qe(e,{agentId:L.agentId,resumable:!0,sessionId:u.session_id,status:`ready`}),Pe.current.get(e)===a&&Pe.current.delete(e),i||xe(t=>t===e?null:t)}}catch(n){if(i)return;n instanceof Fh&&n.payload.error_code===`resume_failed`&&(Me.current.add(t),o&&qe(e,{agentId:L.agentId,resumable:!1,sessionId:o,status:`resume_failed`}))}})(),()=>{i=!0,a?.abort()}},[N,E.goals[0]?.goalId,h,D?.goalId,L.agentId,L.available,L.label,I]),(0,z.useEffect)(()=>{if(h||D||E.goals.length===0||ne===`loading`)return;let e=!1;return Promise.all(E.goals.filter(e=>!e.loadState).map(async e=>{let t=await Zh({agentId:e.agentId,channelId:`goal.${e.goalId}`,goalId:e.goalId});return{goalId:e.goalId,session:t.sessions[0]??null}})).then(t=>{e||Ce(e=>{let n={...e};for(let e of t)e.session&&(n[e.goalId]={agentId:e.session.agent_id,resumable:e.session.resumable,sessionId:e.session.session_id,status:e.session.active_turn_id?`running`:e.session.status,turnId:e.session.active_turn_id??void 0});return n})}).catch(()=>{}),()=>{e=!0}},[h,ne,D?.goalId]),(0,z.useEffect)(()=>{if(De(null),h){Te([]),ke({});return}if(!D){Te([]),ke({});return}let e=!1,t=0,n=0;Te([]),ke({});let r=async()=>{if(!e){if(document.hidden){t=window.setTimeout(()=>void r(),1e4);return}try{let t=await Zh({goalId:D.goalId});if(!e){let r=t.sessions.filter(e=>e.channel_id?.startsWith(`task.`));Te(r);let i=await Promise.allSettled(r.map(e=>Xh(e.session_id)));if(!e){let e=i.some(e=>e.status===`rejected`);n=e?n+1:0,De(e?`partial`:null),ke(Object.fromEntries(i.flatMap((e,t)=>e.status===`fulfilled`?[[r[t].session_id,e.value]]:[])))}}}catch{n+=1,e||De(`offline`)}e||(t=window.setTimeout(()=>void r(),Math.min(3e4,2e3*2**Math.min(n,4))))}};return r(),()=>{e=!0,window.clearTimeout(t)}},[h,D?.goalId]),(0,z.useEffect)(()=>{if(!ce)return;let e=window.requestAnimationFrame(()=>{Le.current?.querySelector(`[role="menuitem"]:not(:disabled)`)?.focus()});return()=>{window.cancelAnimationFrame(e),Re.current?.focus()}},[ce]),(0,z.useEffect)(()=>{if(!ue)return;let e=window.requestAnimationFrame(()=>ze.current?.focus());return()=>{window.cancelAnimationFrame(e),V.current?.focus()}},[ue]),(0,z.useEffect)(()=>{if(!ce&&!ue)return;let e=e=>{e.key===`Escape`&&(le(!1),de(!1))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[ce,ue]);function Je(e,t){let n=Ae.current++;return _e(r=>({...r,[e]:[...r[e]??[],{...t,id:n,role:`assistant`}]})),n}function Ye(e,t,n){_e(r=>({...r,[e]:(r[e]??[]).map(e=>e.id===t?{...e,...n}:e)}))}async function Xe(e,t){let n=e.trim();if(!n)return;let r=t&&`goalId`in t?t.goalId??`manager`:N,i=r===`manager`?null:E.goals.find(e=>e.goalId===r)??null,a=t?.agentId?gh(re,t.agentId,ie):L,o=r===`manager`?E:i?{...E,blockingTodoCount:E.userTodos.filter(e=>e.goalId===i.goalId&&e.blocking).length,goals:[i],openUserTodoCount:E.userTodos.filter(e=>e.goalId===i.goalId).length,userTodos:E.userTodos.filter(e=>e.goalId===i.goalId),visibleUserTodos:E.userTodos.filter(e=>e.goalId===i.goalId)}:E,s=Ae.current++;if(_e(e=>({...e,[r]:[...e[r]??[],{attachments:t?.attachments,id:s,lines:[],role:`user`,text:n}]})),he(``),xe(r),a.agentId===`status-only`||!i&&r!==`manager`){let e=zC(O,o,n),t=a.agentId===`status-only`;Je(r,{agentLabel:t?`仅查状态`:`LoopX 管家`,lines:e.lines.slice(0,3),sourceLabel:t?`LoopX 状态投影 · 仅查状态`:`LoopX 状态投影`,text:e.text}),Jh({answer:[e.text,...e.lines.slice(0,3)].filter(Boolean).join(` +`),contextKind:r===`manager`?`manager`:`goal`,goalId:r===`manager`?void 0:r,question:n}).catch(()=>{}),xe(null);return}let c=`${r}:${a.agentId}`,l=null;try{let e=je.current.get(c);if(!e){let t=Me.current.has(c)?`new`:`resume_latest`,n=r===`manager`?I[r]:a.agentId,o=await Yh(r===`manager`?``:i.goalId,n,t,r===`manager`?`manager`:`goal`);r===`manager`&&o.session.manager_runtime&&C(o.session.manager_runtime),e=o.session_id,je.current.set(c,e),qe(r,{agentId:o.agent_id||a.agentId,resumable:!0,sessionId:e,status:`ready`}),Me.current.delete(c)}let o=``;l=Je(r,{activity:[r===`manager`?`正在连接管家`:`正在连接 Agent`],agentLabel:Ve(r,a.label),lines:[],pending:!0,sourceLabel:r===`manager`?`${_(`header.manager`)} · 跨 Goal`:`${a.label} Agent · ${uC(i.goalId)}`,text:``});let s=(await ig(e,n,{attachments:t?.attachments,signal:(()=>{let e=new AbortController;return Pe.current.set(r,e),e.signal})(),onDelta:e=>{o+=e,l!==null&&Ye(r,l,{text:o})},onActivity:e=>{l!==null&&_e(t=>({...t,[r]:(t[r]??[]).map(t=>t.id===l?{...t,activity:[...new Set([...t.activity??[],e])].slice(-6)}:t)}))},onPhase:(t,n)=>{Ne.current.set(r,n),qe(r,{agentId:a.agentId,resumable:!0,sessionId:e,status:`running`,turnId:n})}})).response;Ye(r,l,{lines:s.gate?[s.gate.summary,s.gate.next_action].filter(Boolean).slice(0,2):[],pending:!1,text:dC(s.message||o.trim())||`${Ve(r,a.label)} 已完成分析。`});let u=s.proposals.filter(_h);if(u.length>0&&!i&&Ye(r,l,{lines:[`请进入要修改的 Goal,预览并确认具体变更。`]}),u.length>0&&i){let e=u.map(e=>({goalId:i.goalId,id:R.current++,previewId:null,proposal:e,receiptLabel:null,state:`candidate`,statusMessage:null}));ye(t=>({...t,[r]:[...t[r]??[],...e]}))}if(r!==`manager`&&s.protected_action){let e=KS(r,n,s.protected_action);if(e)return e}}catch(e){if(Fe.current.delete(r)){let e={agentLabel:Ve(r,a.label),lines:[],pending:!1,sourceLabel:r===`manager`?`${_(`header.manager`)}会话`:`${a.label} 会话`,text:`已中断。你可以在当前会话继续发送消息。`};l===null?Je(r,e):Ye(r,l,e);return}let t=e instanceof Fh?e.payload:null;t&&yh(t)&&je.current.delete(c),t?.error_code===`resume_failed`&&(je.current.delete(c),Me.current.add(c),qe(r,{agentId:a.agentId,resumable:!1,sessionId:Se[r]?.sessionId??`resume-failed`,status:`resume_failed`}));let n=t?.gate,i=n&&typeof n==`object`?String(n.summary??``):``,o={agentLabel:Ve(r,a.label),lines:i?[i]:[],pending:!1,reconnect:t?.reconnectable===!0,sourceLabel:`LoopX Chat 本地后端`,text:t?.error_code===`resume_failed`?`原 ${Ve(r,a.label)} 会话无法恢复。本地历史已经保留,请在运行详情里选择“重试恢复”或“开始新 Session”。`:e instanceof Error?e.message:`${Ve(r,a.label)} 会话暂时不可用。`};l===null?Je(r,o):Ye(r,l,o)}finally{Ne.current.delete(r),Pe.current.delete(r);let e=je.current.get(c);e&&qe(r,{agentId:a.agentId,resumable:!0,sessionId:e,status:`ready`}),xe(e=>e===r?null:e)}}async function Ze(e){let t=e?.goalId??N,n=Se[t],r=e?.agentId??n?.agentId??L.agentId,i=`${t}:${r}`,a=e?.sessionId??n?.sessionId??je.current.get(i),o=e?.turnId??n?.turnId??Ne.current.get(t);if(!(!a||!o))try{Fe.current.add(t),await rg(a,o),Pe.current.get(t)?.abort()}catch(e){throw Fe.current.delete(t),e}finally{Ne.current.delete(t),qe(t,{agentId:r,resumable:!0,sessionId:a,status:`ready`}),Pe.current.delete(t),xe(e=>e===t?null:e)}}async function Qe(e){let t=e.goalId,n=`${t}:${e.agentId}`,r=e.sessionId??Se[t]?.sessionId??je.current.get(n);if(r)try{let i=await cg(r);je.current.set(n,r),Me.current.delete(n),qe(t,{agentId:e.agentId,resumable:i.session.resumable,sessionId:r,status:i.session.status})}catch{qe(t,{agentId:e.agentId,resumable:!1,sessionId:r,status:`resume_failed`})}}function $e(e){let t=`${e.goalId}:${e.agentId}`;je.current.delete(t),Me.current.add(t),qe(e.goalId,{agentId:e.agentId,resumable:!0,sessionId:`new-session-pending`,status:`ready`})}async function et(e){let t=`${e.goalId}:${e.agentId}`,n=e.sessionId??Se[e.goalId]?.sessionId??je.current.get(t);n&&n!==`new-session-pending`&&await sg(n),je.current.delete(t),Me.current.add(t),qe(e.goalId,null)}function tt(e){re.some(t=>t.agentId===e&&t.available)&&(se(t=>({...t,[N]:e})),le(!1))}function nt(){i(``),pe(`chat`)}function rt(e){i(e),pe(`chat`)}D&&lC[D.state],D&&(`${L.label}${D.state}`,Ue.length>0&&`${Ge}`,He.length>0&&`${He.length}`),D?.state===`需修复`||!D&&!c.ok?(D&&mC(D.agentId),D?.nextSentence,D?.agentSentence):D?.state===`等你`?(D.needsYouBlocking,D.needsYouBlocking,D.needsYou??D.nextSentence,D.needsYou):(D&&mC(D.agentId),D?.nextSentence);let it=[...!D&&Se.manager?.status===`resume_failed`?[{id:`run:manager:resume-failed`,kind:`run`,run:{agentId:Se.manager.agentId,agentLabel:mC(Se.manager.agentId),canInterrupt:!1,completedSteps:0,goalId:`manager`,goalTitle:`LoopX 管家`,latestActivity:`本地聊天记录已保留,点我查看恢复方式。`,resumable:!1,runId:`manager:resume-failed`,sessionId:Se.manager.sessionId,sessionStatus:`resume_failed`,status:`failed`,title:`上次会话需要恢复`,totalSteps:1,outputs:[]}}]:[],...D?we.map(e=>{let t=e.channel_id?.startsWith(`task.`)?e.channel_id.slice(5):void 0,n=D.agentTodos.find(e=>e.todoId===t),r=!!e.active_turn_id,i=Oe[e.session_id],a=i?.messages.some(e=>fC(e.role,e.text))===!0;return{id:`run:task:${e.session_id}`,kind:`run`,run:{agentId:e.agent_id,agentLabel:mC(e.agent_id),canInterrupt:r,completedSteps:n?.done||a?1:0,goalId:D.goalId,goalTitle:D.title,latestActivity:r?`Agent 正在执行,可进入 Session 查看过程或发送纠偏。`:a?`Agent 已返回结果,点击查看结果与完整运行记录。`:`执行 Session 已保留,可继续纠偏或恢复。`,resumable:e.resumable,runId:e.session_id,sessionId:e.session_id,sessionMessages:i?.messages.map(e=>({createdAt:e.created_at,messageId:e.message_id,role:e.role===`user`?`user`:fC(e.role,e.text)?`assistant`:`error`,text:e.role===`user`?e.text:dC(e.text)})),sessionStatus:a?`completed`:e.status,status:n?.done||a?`completed`:r?`running`:e.status===`resume_failed`?`failed`:`waiting`,title:n?.text??`Agent 执行任务`,todoId:t,totalSteps:1,turnId:e.active_turn_id??void 0}}}):[],...D?[{id:`run:${D.goalId}`,kind:`run`,run:{agentId:Se[D.goalId]?.agentId??D.agentId,agentLabel:mC(Se[D.goalId]?.agentId??D.agentId),canInterrupt:!!Se[D.goalId]?.turnId,completedSteps:D.agentTodos.filter(e=>e.done).length,goalId:D.goalId,goalTitle:D.title,latestActivity:D.agentSentence,resumable:Se[D.goalId]?.resumable??!0,runId:`goal:${D.goalId}`,sessionId:Se[D.goalId]?.sessionId,sessionStatus:Se[D.goalId]?.status,status:Se[D.goalId]?.turnId?`running`:D.state===`需修复`?`failed`:`waiting`,title:D.nextSentence,totalSteps:D.agentTodos.length||1,turnId:Se[D.goalId]?.turnId,outputs:D.runEvidence?[{createdAt:D.runEvidence.generatedAt,kind:`evidence`,outputId:`${D.goalId}:latest-evidence`,title:D.runEvidence.label}]:[]}}]:[],...Be.map(e=>({id:`message:${e.id}`,kind:`message`,message:{agentLabel:e.agentLabel,attachments:e.attachments,id:String(e.id),pending:e.pending,returnDelivery:e.returnDelivery,role:e.role,text:e.text||(e.pending?`Agent 正在处理…`:e.lines.join(` +`))}})),...(D?[D]:E.goals).flatMap(e=>e.runEvidence?[{id:`output:${e.goalId}:${e.runEvidence.generatedAt||`latest`}`,kind:`output`,output:{agentLabel:mC(e.agentId),createdAt:e.runEvidence.generatedAt,goalId:e.goalId,goalTitle:e.title,kind:`evidence`,outputId:`${e.goalId}:latest-evidence`,runId:e.runEvidence.runId??void 0,safePreview:e.runEvidence.safePreview,summary:e.runEvidence.summary,title:e.runEvidence.label,todoId:e.runEvidence.todoId??void 0}}]:[]),...D&&k?[{id:`output:${D.goalId}:report:${k.publication.publication_id}`,kind:`output`,output:{agentId:k.agent_id,agentLabel:mC(k.agent_id),createdAt:k.publication.delivered_at,goalId:D.goalId,goalTitle:D.title,kind:`report`,outputId:k.publication.publication_id,report:{addedCount:k.delta.added_count,changedCount:k.delta.changed_count,deliveredAt:k.publication.delivered_at,generationId:k.generation_id,items:k.delta.items.map(e=>({changeKind:e.change_kind,previousStatus:e.previous_status,sourceRef:e.source_ref,status:e.status,summary:e.summary,title:e.title})),periodEndAt:k.period_window.end_at,periodStartAt:k.period_window.start_at,predecessorPublicationId:k.publication.predecessor_publication_id,publicationId:k.publication.publication_id},safePreview:k.delta.items.map(e=>`${e.change_kind===`added`?`+`:`~`} ${e.title}\n${e.summary}`).join(` -`),summary:k.summary,title:k.title}}]:[]],at=f.connectionState===`connected`,ot=new Map(E.goals.map(e=>[e.goalId,e.title])),st=e=>qd(e,f.activeSource.statusUrl,at&&!l?.errors[e.goalId],ot.get(e.goalId)),ct={...By(E),userTodos:E.userTodos.map(st),attentionHistory:(E.attentionHistory??E.userTodos).map(st),periodicReports:{error:te,loading:j},timeline:it};return(0,B.jsxs)(`div`,{className:p===`dark`?`dark`:``,"data-testid":`personal-goal-home`,children:[Ee?(0,B.jsx)(`p`,{role:`status`,className:`m-0 bg-amber-50 px-4 py-2 text-sm text-amber-900`,children:_(Ee===`partial`?`runs.discoveryPartial`:`runs.discoveryOffline`)}):null,(0,B.jsx)(yS,{agents:re.map(e=>({adapterKind:e.adapterKind,agentId:e.agentId,available:e.available,capability:e.capability,interrupt:e.interrupt,label:e.label,location:e.location,resume:e.resume,source:e.source,streaming:e.streaming,toolCalls:e.toolCalls,trustScope:e.trustScope,workspaceCompatibility:e.available?`当前 Goal 写入前验证`:`不可用,需先修复 Endpoint`})),callbacks:{onApplyAttention:e=>rt(e.goalId),onCorrectRun:async(e,t)=>{if(!e.sessionId)throw Error(`这个 Run 还没有可纠偏的执行 Session。`);let n=await Uh((await Bh({actionKind:`run.correct`,context:{kind:`run`,goal_id:e.goalId,todo_id:e.todoId},idempotencyKey:`workspace-run-correct-${e.sessionId}-${Date.now().toString(36)}`,normalizedParameters:{goal_id:e.goalId,message:t,session_id:e.sessionId},summary:`纠偏执行任务:${e.title}`})).proposal_id),r=typeof n.turn?.turn_id==`string`?n.turn.turn_id:void 0;if(qe(e.goalId,{agentId:e.agentId,resumable:!0,sessionId:e.sessionId,status:r?`running`:`ready`,turnId:r}),r){Ne.current.set(e.goalId,r);let t=new AbortController;Pe.current.set(e.goalId,t);let n=``,i=Je(e.goalId,{activity:[`正在把纠偏送入原执行 Session`],agentLabel:e.agentLabel,lines:[],pending:!0,sourceLabel:`${e.agentLabel} · 执行 Session`,text:``});try{let a=await og(e.sessionId,r,{signal:t.signal,onDelta:t=>{n+=t,Ye(e.goalId,i,{text:n})}});Ye(e.goalId,i,{activity:[],pending:!1,text:oC(a.response.message||n.trim())||`${e.agentLabel} 已完成纠偏。`})}catch(t){let n=Fe.current.delete(e.goalId);Ye(e.goalId,i,{activity:[],pending:!1,text:n?`已中断。你可以在当前会话继续发送消息。`:t instanceof Error?t.message:`纠偏回合失败。`})}finally{Ne.current.delete(e.goalId),Pe.current.delete(e.goalId),qe(e.goalId,{agentId:e.agentId,resumable:!0,sessionId:e.sessionId,status:`ready`})}}},onCloseRunSession:et,onInterruptRun:async e=>Ze(e),onOpenGoal:rt,onOpenRunSession:async e=>{if(!e.sessionId)return;let t=e.sessionId,n=await Xh(t);ke(e=>({...e,[t]:n})),rt(e.goalId),_e(t=>({...t,[e.goalId]:n.messages.map(t=>({agentLabel:t.role===`user`?void 0:e.agentLabel,attachments:tC(t.attachments),id:Ae.current++,lines:[],role:t.role===`user`?`user`:`assistant`,sourceLabel:t.role===`user`?void 0:`${e.agentLabel} · 执行 Session`,text:t.role===`user`?t.text:oC(t.text)}))})),qe(e.goalId,{agentId:e.agentId,resumable:n.session.resumable,sessionId:t,status:n.session.active_turn_id?`running`:n.session.status,turnId:n.session.active_turn_id??void 0})},onOpenOutput:e=>rt(e.goalId),...b?{onPreviewGoalSubagentConfiguration:async e=>{let t=await dg(e);return{changed:t.changed,configuration:{allowedDomains:t.after.orchestration.allowed_domains,enabled:t.feature_summary.multi_subagent===`enabled`,maxChildren:t.after.orchestration.max_children,modelConfig:t.after.orchestration.model_config},previewId:t.preview_id}},onApplyGoalSubagentConfiguration:async({previewId:e,...t})=>{let n=await fg(t,e);return{allowedDomains:n.after.orchestration.allowed_domains,enabled:n.feature_summary.multi_subagent===`enabled`,maxChildren:n.after.orchestration.max_children,modelConfig:n.after.orchestration.model_config}}}:{},...g?{onExecuteGoalLifecycle:async({goalId:e,operation:t,reason:n})=>{let r=await Gb(g,e,t,n);return{activationState:r.activation_state,projectionVerified:r.projection_verified}}}:{},onGoalActivationStateChange:n,onGoalDeleted:r,onReconcileStatus:a,onRetryGoalArchive:s,onExportOutput:async e=>{let t=[`# ${e.title}`,``,e.summary??``,``,e.safePreview??`此产出没有可用的公开安全预览。`,``,`Goal: ${e.goalId}`,`Todo: ${e.todoId??`unlinked`}`,`Run: ${e.runId??`unlinked`}`].join(` -`),n=URL.createObjectURL(new Blob([t],{type:`text/markdown;charset=utf-8`})),r=document.createElement(`a`);r.href=n,r.download=`${e.outputId.replace(/[^a-z0-9._-]+/gi,`-`)}.md`,r.click(),URL.revokeObjectURL(n)},onRefresh:o,onRetryResumeRun:Qe,onSelectAgent:tt,onSelectGoal:e=>e?rt(e):nt(),onSendMessage:async(e,t,n,r)=>Xe(e,{agentId:t,goalId:n,attachments:r}),onStartNewRunSession:$e},goalArchiveLoadState:e,managerChannelBinding:w,managerRuntime:S,model:ct,readOnly:h,selectedAgentId:L.agentId,selectedGoalId:D?.goalId??null,statusSourceControl:f})]})}function LC({error:e,isLoading:t,onRetry:n,requestedUrl:r,theme:i,toggleTheme:a}){let o=!!(e&&/failed to fetch|networkerror|load failed/i.test(e)&&r.includes(`status.json`));return(0,B.jsx)(`div`,{className:i===`dark`?`dark`:``,children:(0,B.jsxs)(`main`,{className:`min-h-screen bg-[#f6f7f9] text-slate-950 dark:bg-[#09090b] dark:text-zinc-50`,children:[(0,B.jsxs)(`header`,{className:`flex min-h-16 flex-wrap items-center justify-between gap-3 border-b border-slate-200 bg-white px-4 py-3 dark:border-zinc-800 dark:bg-zinc-950 sm:px-6`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`h1`,{className:`text-xl font-semibold`,children:`LoopX Workspace`}),(0,B.jsx)(`p`,{className:`mt-1 break-all text-sm text-slate-500 dark:text-zinc-400`,children:`Personal Workspace`})]}),(0,B.jsx)(_y,{"aria-label":`切换主题`,onClick:a,size:`icon`,variant:`secondary`,children:i===`dark`?(0,B.jsx)(eh,{className:`h-4 w-4`}):(0,B.jsx)(Fm,{className:`h-4 w-4`})})]}),(0,B.jsxs)(`div`,{className:`grid min-h-[calc(100vh-80px)] sm:grid-cols-[240px_1fr]`,children:[(0,B.jsxs)(`aside`,{className:`hidden border-r border-slate-200 p-6 dark:border-zinc-800 sm:block`,"aria-label":`Workspace`,children:[(0,B.jsx)(`strong`,{children:`LoopX`}),(0,B.jsx)(`p`,{className:`mt-6 text-sm`,children:`Workspace`}),(0,B.jsx)(`p`,{className:`mt-8 text-xs text-slate-500`,children:`Goals`}),[1,2,3].map(e=>(0,B.jsx)(`div`,{className:`mt-4 h-8 rounded bg-slate-100 dark:bg-zinc-900`},e))]}),(0,B.jsx)(`div`,{className:`p-4 sm:p-8`,children:(0,B.jsx)(vy,{"data-testid":`initial-status-state`,children:(0,B.jsx)(yy,{className:`flex min-h-64 items-center justify-center p-6`,children:(0,B.jsxs)(`div`,{className:`max-w-xl text-center`,children:[e?(0,B.jsx)(lm,{className:`mx-auto h-6 w-6 text-rose-600 dark:text-rose-300`}):(0,B.jsx)(Hm,{className:`mx-auto h-6 w-6 animate-spin text-slate-500 dark:text-zinc-400`}),(0,B.jsx)(`p`,{className:`mt-3 text-sm font-medium`,children:e?`无法加载实时状态`:`正在加载实时状态`}),e?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{className:`mt-2 break-words text-sm leading-6 text-slate-500 dark:text-zinc-400`,children:o?`本地状态服务暂时未连接。升级或启动期间可能短暂断开,请重试;仍失败时重新打开 LoopX App,或运行 loopx doctor。`:e}),o?(0,B.jsx)(`p`,{className:`mt-2 text-xs leading-5 text-slate-400 dark:text-zinc-500`,children:`重新加载不会执行任务,也不会改变 Goal 配置。`}):null,(0,B.jsx)(`div`,{className:`mt-4 flex flex-wrap justify-center gap-2`,children:(0,B.jsxs)(_y,{disabled:t,onClick:n,children:[(0,B.jsx)(Hm,{className:`h-4 w-4`}),`重试`]})})]}):(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-500 dark:text-zinc-400`,role:`status`,children:`正在连接 Workspace,Goal 列表将先出现,详细状态会逐个补齐。 / Connecting to your Workspace. Goals load independently.`})]})})})})]})]})})}function RC(){let e=Fw.useSearch(),t=Fw.useNavigate(),[n,r]=(0,z.useState)(`light`),[i,a]=(0,z.useState)(null),o=(0,z.useRef)(null),s=(0,z.useRef)(e.goalId);s.current=e.goalId;let[c,l]=(0,z.useState)(jp),[u,d]=(0,z.useState)({kind:`example`,label:`bundled example`}),[f,p]=(0,z.useState)(()=>MS(window.localStorage,window.location.href)),m=(0,z.useRef)(f);m.current=f;let[h,g]=(0,z.useState)(e.statusUrl),[_,v]=(0,z.useState)(null),[y,b]=(0,z.useState)(!1),[x,S]=(0,z.useState)({error:null,phase:`idle`}),[C,w]=(0,z.useState)(e.statusUrl.trim()||null),[T,E]=(0,z.useState)(!1),D=(0,z.useRef)(null),O=(0,z.useRef)(u_(e.statusUrl.trim()||null)),k=!T&&u.kind===`example`?e.statusUrl.trim():``,ee=C??k,te=u.kind===`url`?u.label:HS,A=!!(_&&C),j=zS(f,C,te,window.location.href),M=u.kind===`example`&&!T,ne=c.attention_queue,N=c.run_history,P=(0,z.useMemo)(()=>GS(N.goals,ne.items),[N.goals,ne.items]);function re(e,t,n=0){S({error:null,phase:`loading`}),US(dh(e,`stopped`,window.location.href)).then(r=>{if(!m_(O.current,t))return;let i=r.goal_projection?.registry_revision??null,a=t.registryRevision!==null&&t.registryRevision!==void 0&&i!==null&&t.registryRevision!==i;if(l(e=>L_(e,r)),a&&n<1){F(e,{background:!0,resyncAttempt:n+1});return}S(a?{error:`Goal 状态在加载历史时发生变化,请重试。`,phase:`error`}:{error:null,phase:`ready`})}).catch(e=>{m_(O.current,t)&&S({error:Ap(e),phase:`error`})})}function ie(){let e=u.kind===`url`?u.label:h||HS,t=f_(O.current,e,{background:!0});if(i){F(e);return}t&&re(e,t)}async function ae(e,n,r){if(r.background)return l(e=>L_(e,n)),!0;let i={kind:`url`,label:e};return O.current.loadedUrl=e,l(n),d(i),g(e),await t({search:t=>({...t,statusUrl:e})}),p_(O.current,r)?(O.current.requestedUrl=null,w(null),!0):!1}async function F(e,t={}){let n=e.trim(),r=t.background===!0;if(!n){r||v(`状态地址不能为空`);return}let c=f_(O.current,n,{background:r,selectionRevision:t.selectionRevision});if(!c)return;o.current?.abort();let d=new AbortController;o.current=d,r||(D.current=null,E(!1),w(n),b(!0),v(null),S({error:null,phase:`idle`}));try{let e=await Fp(n,window.location.href).catch(()=>null);if(!m_(O.current,c))return;if(e){let o=(t.retryOnly||t.reuseSnapshots)&&u.kind===`url`&&u.label===n?Np(i,e,{invalidateGoalIds:t.invalidateGoalIds}):{};a({directory:e,snapshots:o,errors:{}});let f={...e,goals:e.goals.filter(e=>!o[e.id])},p=!1,m=Ip(e);if(r)l(m);else if(!await ae(n,m,c))return;if(S({error:null,phase:`loading`}),await Rp(n,window.location.href,f,(e,t,n)=>{n===`revision`&&(p=!0),a(r=>r&&{...r,snapshots:t?{...r.snapshots,[e]:t}:r.snapshots,errors:n?{...r.errors,[e]:n}:r.errors})},()=>m_(O.current,c),()=>s.current,d.signal),p&&(t.resyncAttempt??0)<1&&m_(O.current,c)){await F(n,{resyncAttempt:1});return}m_(O.current,c)&&S({error:null,phase:`ready`});return}let o=await US(dh(n,`active`,window.location.href));if(!m_(O.current,c)||(a(null),c.registryRevision=o.goal_projection?.registry_revision??null,!await ae(n,o,c)))return;if(o.goal_projection?.scope!==`active`||o.goal_projection.complete){S({error:null,phase:`ready`});return}re(n,c,t.resyncAttempt??0)}catch(e){if(!p_(O.current,c))return;r||v(Ap(e))}finally{!r&&p_(O.current,c)&&b(!1)}}function oe(e,t={}){o.current?.abort();let n=d_(O.current,e.statusUrl);D.current=null,E(!1),w(e.statusUrl),b(!0),v(null),(async()=>{if(t.ensureTunnel&&e.kind===`ssh_tunnel`){let t=new URL(e.statusUrl,window.location.href).port;if(t)try{await Wb(e.label,t)}catch{}}O.current.selectionRevision===n&&await F(e.statusUrl,{selectionRevision:n})})()}function I(e){m.current=e,p(e);try{NS(window.localStorage,e)}catch{}}let se={activeSource:j,connectionState:y?`loading`:A?`error`:`connected`,errorMessage:A?`未切换到 ${C??`所选来源`}:${_}`:null,onAdd:e=>{let t=FS(f,e,window.location.href);return`error`in t?{error:t.error}:(I(t.catalog),oe(t.source,{ensureTunnel:e.ensureTunnel}),{})},onConfiguredHostsLoaded:e=>{let t=m.current,n=PS(t,e);n!==t&&I(n)},onRemove:e=>{I(IS(f,e)),j.id===e&&oe(DS)},onSelect:e=>{let t=f.sources.find(t=>t.id===e);t&&oe(t,{ensureTunnel:t.kind===`ssh_tunnel`})},sources:j.id===`temporary`?[...f.sources,j]:f.sources};(0,z.useEffect)(()=>{let t=e.statusUrl.trim();if(t){if(D.current===t||C&&C!==t)return;(u.kind!==`url`||u.label!==t)&&F(t);return}D.current=null,!T&&(C||u.kind===`example`&&F(HS))},[T,C,e.statusUrl,u.kind,u.label]),(0,z.useEffect)(()=>{if(e.statusUrl&&u.kind===`example`)return;let n=new Set(P.map(e=>e.goal.id));if(P.length===0){e.goalId&&t({search:e=>({...e,goalId:``})});return}e.goalId&&!n.has(e.goalId)&&x.phase!==`loading`&&t({search:e=>({...e,goalId:``})})},[x.phase,P,t,e.goalId,e.statusUrl,u.kind]),(0,z.useEffect)(()=>{if(!i||y||!e.goalId||u.kind!==`url`)return;let t=i.directory.goals.find(t=>t.id===e.goalId);t?.activation_state===`stopped`&&!i.snapshots[t.id]&&!i.errors[t.id]&&F(u.label,{retryOnly:!0})},[e.goalId,y,i,u]);function L(e){t({search:t=>({...t,goalId:e})})}return M?(0,B.jsx)(LC,{error:_,isLoading:y,onRetry:()=>void F(ee||HS),requestedUrl:ee||HS,theme:n,toggleTheme:()=>r(n===`dark`?`light`:`dark`)}):(0,B.jsx)(IC,{goalArchiveLoadState:x,isLoading:y,onGoalActivationStateChange:(e,t)=>{O.current.projectionRevision+=1,l(n=>Dp(n,e,t)),a(n=>n&&{...n,snapshots:Object.fromEntries(Object.entries(n.snapshots).map(([n,r])=>[n,Dp(r,e,t)]))})},onGoalDeleted:e=>{O.current.projectionRevision+=1,l(t=>Op(t,e)),a(t=>t&&{...t,snapshots:Object.fromEntries(Object.entries(t.snapshots).filter(([t])=>t!==e))})},onSelectGoal:L,onReconcileStatus:e=>F(u.kind===`url`?u.label:h||HS,{background:!0,invalidateGoalIds:e?.invalidateGoalIds,reuseSnapshots:!0}),onRetryGoalArchive:ie,onRefresh:()=>F(u.kind===`url`?u.label:h||HS,{retryOnly:!!(i&&Object.keys(i.errors).length)}),payload:c,progress:i,rows:P,selectedGoalId:e.goalId,statusSourceControl:se,theme:n,toggleTheme:()=>r(n===`dark`?`light`:`dark`)})}var zC=H_(`inline-flex items-center gap-1 rounded-md border px-2 py-0.5 text-xs font-medium`,{variants:{variant:{neutral:`border-slate-200 bg-white text-slate-700 dark:border-zinc-800 dark:bg-zinc-950 dark:text-zinc-300`,success:`border-emerald-200 bg-emerald-50 text-emerald-800 dark:border-emerald-900 dark:bg-emerald-950 dark:text-emerald-200`,warning:`border-amber-200 bg-amber-50 text-amber-800 dark:border-amber-900 dark:bg-amber-950 dark:text-amber-200`,info:`border-sky-200 bg-sky-50 text-sky-800 dark:border-sky-900 dark:bg-sky-950 dark:text-sky-200`,danger:`border-rose-200 bg-rose-50 text-rose-800 dark:border-rose-900 dark:bg-rose-950 dark:text-rose-200`}},defaultVariants:{variant:`neutral`}});function BC({className:e,variant:t,...n}){return(0,B.jsx)(`span`,{className:hy(zC({variant:t}),e),...n})}var VC=[{label:`status payload`,source:`apps/presentation/dashboard/src/data/status.ts`,detail:`status_contract, attention_queue, local_dashboard_api, run_history`},{label:`channel projection`,source:`apps/presentation/dashboard/src/data/goal-channel-frontstage.ts`,detail:`decision_frame, todos, gates, leases, artifacts, truth_contract`},{label:`public showcase catalog`,source:`docs/showcases/showcase-catalog.json`,detail:`case metadata, visual hints, evidence boundaries, story beats`},{label:`route smoke`,source:`apps/presentation/dashboard/smoke/frontstage-route-smoke.ts`,detail:`static route contract, source guards, component expectations`}],HC=[{axis:`schema`,current:`goal_channel_projection_v0`,proposed:`new optional projection field`,gate:`parser default plus route smoke assertion`},{axis:`truth`,current:`event ledger and active state remain source of truth`,proposed:`derived UI state only`,gate:`truth_contract must stay read-only`},{axis:`privacy`,current:`compact source refs and warnings`,proposed:`public-safe fixture field`,gate:`loopx check and browser fake-private fixture`},{axis:`interaction`,current:`render, filter, select, inspect`,proposed:`no browser write by default`,gate:`write affordance requires explicit loopback capability`}],UC=[{title:`Fixture sources`,body:`Use examples/status.example.json, browser-smoke fixtures, and docs/showcases/showcase-catalog.json.`},{title:`Required proof`,body:`Every projection addition needs parser coverage, route smoke assertions, and one browser or bundle check when UI output changes.`},{title:`Never include`,body:`Raw task text, trajectories, transcripts, local paths, private registry state, credentials, or internal document links.`}],WC=[`npm --prefix apps/presentation/dashboard run smoke:frontstage-route`,`npm --prefix apps/presentation/dashboard run smoke:frontstage-browser`,`npm --prefix apps/presentation/dashboard run smoke:frontstage-share-bundle`,`npm --prefix apps/presentation/dashboard run build`,`loopx check --scan-path apps/presentation/dashboard --scan-path docs/status-data-contract.md`],GC=[{name:`Projection lane`,badges:[`read-only`,`schema v0`],body:`Summarizes one compact projection lane without mutating the underlying LoopX state.`},{name:`Capability badge`,badges:[`loopback`,`dry-run`],body:`Shows an advertised local capability only after the status feed declares it.`},{name:`Boundary warning`,badges:[`public-safe`,`omitted`],body:`Names omitted private material and points contributors back to compact source references.`}];function KC({children:e,icon:t,title:n}){return(0,B.jsxs)(`section`,{className:`rounded-lg border border-slate-200 bg-white shadow-sm`,children:[(0,B.jsx)(`div`,{className:`flex items-center justify-between gap-3 border-b border-slate-200 px-4 py-3`,children:(0,B.jsxs)(`h2`,{className:`flex items-center gap-2 text-sm font-semibold text-slate-950`,children:[(0,B.jsx)(t,{className:`h-4 w-4 text-slate-500`}),n]})}),e]})}function qC(){return(0,B.jsx)(KC,{icon:rm,title:`Status Contract Explorer`,children:(0,B.jsx)(`div`,{className:`grid gap-3 p-4 lg:grid-cols-2`,"data-testid":`developer-contract-explorer`,children:VC.map(e=>(0,B.jsxs)(`div`,{className:`rounded-md border border-slate-200 bg-slate-50 px-3 py-3`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,B.jsx)(BC,{variant:`info`,children:e.label}),(0,B.jsx)(BC,{variant:`neutral`,children:`public contract`})]}),(0,B.jsx)(`div`,{className:`mt-2 break-words font-mono text-xs text-slate-700`,children:e.source}),(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600`,children:e.detail})]},e.label))})})}function JC(){return(0,B.jsx)(KC,{icon:Cm,title:`Projection Diffing`,children:(0,B.jsx)(`div`,{className:`overflow-x-auto`,"data-testid":`developer-projection-diffing`,children:(0,B.jsxs)(`table`,{className:`min-w-full border-separate border-spacing-0 text-left text-sm`,children:[(0,B.jsx)(`thead`,{children:(0,B.jsxs)(`tr`,{className:`bg-slate-50 text-xs uppercase tracking-normal text-slate-500`,children:[(0,B.jsx)(`th`,{className:`border-b border-slate-200 px-4 py-3 font-semibold`,children:`Axis`}),(0,B.jsx)(`th`,{className:`border-b border-slate-200 px-4 py-3 font-semibold`,children:`Current`}),(0,B.jsx)(`th`,{className:`border-b border-slate-200 px-4 py-3 font-semibold`,children:`Proposed`}),(0,B.jsx)(`th`,{className:`border-b border-slate-200 px-4 py-3 font-semibold`,children:`Gate`})]})}),(0,B.jsx)(`tbody`,{children:HC.map(e=>(0,B.jsxs)(`tr`,{className:`align-top`,children:[(0,B.jsx)(`td`,{className:`border-b border-slate-100 px-4 py-3 font-semibold text-slate-950`,children:e.axis}),(0,B.jsx)(`td`,{className:`border-b border-slate-100 px-4 py-3 text-slate-600`,children:e.current}),(0,B.jsx)(`td`,{className:`border-b border-slate-100 px-4 py-3 text-slate-600`,children:e.proposed}),(0,B.jsx)(`td`,{className:`border-b border-slate-100 px-4 py-3 text-slate-600`,children:e.gate})]},e.axis))})]})})})}function YC(){return(0,B.jsx)(KC,{icon:ym,title:`Fixture Generation`,children:(0,B.jsx)(`div`,{className:`grid gap-3 p-4 md:grid-cols-3`,"data-testid":`developer-fixture-generation`,children:UC.map(e=>(0,B.jsxs)(`div`,{className:`rounded-md border border-slate-200 bg-slate-50 px-3 py-3`,children:[(0,B.jsx)(`div`,{className:`text-sm font-semibold text-slate-950`,children:e.title}),(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600`,children:e.body})]},e.title))})})}function XC(){return(0,B.jsx)(KC,{icon:dm,title:`Smoke Checklist`,children:(0,B.jsx)(`div`,{className:`space-y-2 p-4`,"data-testid":`developer-smoke-checklist`,children:WC.map(e=>(0,B.jsxs)(`div`,{className:`flex items-start gap-3 rounded-md border border-slate-200 bg-slate-50 px-3 py-2`,children:[(0,B.jsx)(em,{className:`mt-0.5 h-4 w-4 shrink-0 text-emerald-600`}),(0,B.jsx)(`code`,{className:`break-all text-xs font-semibold leading-5 text-slate-700`,children:e})]},e))})})}function ZC(){return(0,B.jsx)(KC,{icon:fm,title:`Component Examples`,children:(0,B.jsx)(`div`,{className:`grid gap-3 p-4 lg:grid-cols-3`,"data-testid":`developer-component-examples`,children:GC.map(e=>(0,B.jsxs)(`article`,{className:`rounded-md border border-slate-200 bg-slate-50 p-3`,children:[(0,B.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:e.badges.map(e=>(0,B.jsx)(BC,{variant:e===`read-only`||e===`public-safe`?`success`:`neutral`,children:e},e))}),(0,B.jsx)(`h3`,{className:`mt-3 text-sm font-semibold leading-6 text-slate-950`,children:e.name}),(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600`,children:e.body})]},e.name))})})}function QC(){return(0,B.jsx)(`main`,{className:`min-h-screen bg-[#f7f7f4] px-4 py-4 text-slate-950 sm:px-5`,"data-testid":`frontstage-developer-cockpit`,children:(0,B.jsxs)(`div`,{className:`mx-auto grid max-w-[1500px] gap-4 xl:grid-cols-[260px_minmax(0,1fr)]`,children:[(0,B.jsxs)(`aside`,{className:`rounded-lg border border-slate-200 bg-white p-4 shadow-sm xl:sticky xl:top-4 xl:self-start`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(`div`,{className:`flex h-9 w-9 items-center justify-center rounded-md border border-slate-200 bg-slate-950 text-white`,children:(0,B.jsx)(th,{className:`h-4 w-4`})}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`text-sm font-semibold`,children:`Developer Cockpit`}),(0,B.jsx)(`div`,{className:`text-xs text-slate-500`,children:`Projection extension`})]})]}),(0,B.jsxs)(`div`,{className:`mt-4 grid gap-2`,children:[(0,B.jsxs)(`a`,{className:`flex items-center gap-2 rounded-md border border-slate-200 px-3 py-2 text-sm font-medium`,href:`https://huangruiteng.github.io/loopx/`,children:[(0,B.jsx)(Dm,{className:`h-4 w-4`}),`LoopX home`]}),(0,B.jsxs)(`a`,{className:`flex items-center gap-2 rounded-md border border-slate-200 px-3 py-2 text-sm font-medium`,href:`https://huangruiteng.github.io/loopx/docs/showcases/index.en.html`,children:[(0,B.jsx)(_m,{className:`h-4 w-4`}),`Public cases`]}),(0,B.jsxs)(`a`,{className:`flex items-center gap-2 rounded-md bg-slate-950 px-3 py-2 text-sm font-medium text-white`,href:`/chat/developers/projections/`,children:[(0,B.jsx)(fm,{className:`h-4 w-4`}),`Developer cockpit`]})]}),(0,B.jsxs)(`div`,{className:`mt-5 space-y-2 rounded-md border border-emerald-200 bg-emerald-50 p-3 text-xs leading-5 text-emerald-950`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,B.jsx)(BC,{variant:`success`,children:`read-only`}),(0,B.jsx)(BC,{variant:`neutral`,children:`public fixtures`})]}),(0,B.jsx)(`p`,{children:`This route uses static public contracts only; live status feeds, registry files, and browser write APIs stay outside the cockpit.`})]})]}),(0,B.jsxs)(`section`,{className:`space-y-4`,children:[(0,B.jsx)(`div`,{className:`rounded-lg border border-slate-200 bg-white px-5 py-5 shadow-sm`,children:(0,B.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-4`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,B.jsx)(BC,{variant:`info`,children:`developers/projections`}),(0,B.jsx)(BC,{variant:`success`,children:`public-safe`}),(0,B.jsx)(BC,{variant:`neutral`,children:`no browser writes`})]}),(0,B.jsx)(`h1`,{className:`mt-3 text-3xl font-semibold tracking-normal text-slate-950`,children:`LoopX Projection Developer Cockpit`}),(0,B.jsx)(`p`,{className:`mt-2 max-w-3xl text-sm leading-6 text-slate-600`,children:`A read-only contributor workbench for adding dashboard/frontstage projections without reverse-engineering the large operator page.`})]}),(0,B.jsxs)(`div`,{className:`grid min-w-[260px] gap-2 text-sm`,children:[(0,B.jsxs)(`div`,{className:`rounded-md border border-slate-200 bg-slate-50 px-3 py-2`,children:[(0,B.jsx)(`div`,{className:`text-[11px] font-semibold uppercase tracking-normal text-slate-500`,children:`Source of truth`}),(0,B.jsx)(`div`,{className:`mt-1 font-semibold text-slate-950`,children:`status contract + compact fixtures`})]}),(0,B.jsxs)(`div`,{className:`rounded-md border border-slate-200 bg-slate-50 px-3 py-2`,children:[(0,B.jsx)(`div`,{className:`text-[11px] font-semibold uppercase tracking-normal text-slate-500`,children:`Boundary`}),(0,B.jsx)(`div`,{className:`mt-1 font-semibold text-slate-950`,children:`read-only extension surface`})]})]})]})}),(0,B.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,B.jsx)(qC,{}),(0,B.jsx)(JC,{})]}),(0,B.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[minmax(0,1fr)_420px]`,children:[(0,B.jsx)(YC,{}),(0,B.jsx)(XC,{})]}),(0,B.jsx)(ZC,{}),(0,B.jsx)(KC,{icon:Xm,title:`Extension Boundary`,children:(0,B.jsxs)(`div`,{className:`grid gap-3 p-4 md:grid-cols-3`,"data-testid":`developer-extension-boundary`,children:[(0,B.jsxs)(`div`,{className:`rounded-md border border-emerald-200 bg-emerald-50 px-3 py-3`,children:[(0,B.jsx)(`div`,{className:`text-sm font-semibold text-slate-950`,children:`Allowed`}),(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600`,children:`Versioned parser defaults, public fixtures, read-only route panels, and focused smoke assertions.`})]}),(0,B.jsxs)(`div`,{className:`rounded-md border border-amber-200 bg-amber-50 px-3 py-3`,children:[(0,B.jsx)(`div`,{className:`text-sm font-semibold text-slate-950`,children:`Review`}),(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600`,children:`New dashboard dependencies, status contract fields, loopback capability display, and browser-visible workflows.`})]}),(0,B.jsxs)(`div`,{className:`rounded-md border border-rose-200 bg-rose-50 px-3 py-3`,children:[(0,B.jsx)(`div`,{className:`text-sm font-semibold text-slate-950`,children:`Stop`}),(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600`,children:`Credentials, private registry material, raw logs, transcripts, production actions, or default browser write authority.`})]})]})})]})]})})}var $C=J({value:G().finite(),total:G().finite().positive().optional(),unit:W().optional(),higher_is_better:K()}).passthrough(),ew=yd(W(),G().finite()).default({}),tw=J({outcome_status:W().optional(),failure_class:W(),causal_summary:W(),expectedness:W(),implication:W(),next_probe:W(),confidence:W(),evidence_refs:q(W()).optional()}).passthrough(),nw=J({arm_id:W(),selected_run_id:W().nullable(),score_countable:K(),metrics:yd(W(),$C),effort:ew,insight:tw.nullable().optional()}),rw=J({run_id:W(),case_id:W(),arm_id:W(),arm_role:W(),status:W(),protocol_id:W(),runner_revision:W().optional(),observed_at:W(),metrics:yd(W(),$C),countability:J({integrity_qualified:K(),official_result_present:K(),score_countable:K()}).passthrough(),treatment_fidelity:W(),effort:ew,redacted_insight:tw.nullable().optional(),upload_provenance:J({producer_id:W(),producer_version:W(),observed_at:W(),source_revision:W()}).passthrough()}).passthrough(),iw=J({case_denominator:G().int().nonnegative(),value_sum:G().finite(),value_mean:G().finite().nullable(),value_median:G().finite().nullable(),value_min:G().finite().nullable(),value_max:G().finite().nullable(),case_macro_rate:G().finite().optional(),suite_micro_rate:G().finite().optional(),suite_micro_numerator:G().finite().optional(),suite_micro_denominator:G().finite().positive().optional()}).passthrough(),aw=J({arm_id:W(),arm_role:W(),factor_assignments:yd(W(),W()),protocol_counts:yd(W(),G().int().nonnegative()).default({}),runner_revision_counts:yd(W(),G().int().nonnegative()).default({}),orchestrator_runtime_counts:yd(W(),G().int().nonnegative()).default({}),intended_case_count:G().int().positive(),run_count:G().int().nonnegative(),terminal_run_count:G().int().nonnegative(),selected_score_countable_case_count:G().int().nonnegative(),coverage_rate:G().finite().min(0).max(1),metrics:yd(W(),iw),binary_outcomes:yd(W(),J({success_count:G().int().nonnegative(),case_denominator:G().int().nonnegative(),success_rate:G().finite().min(0).max(1).nullable()})),effort:yd(W(),J({denominator:G().int().nonnegative(),mean:G().finite().nullable(),median:G().finite().nullable()})),failure_class_counts:yd(W(),G().int().nonnegative())}).passthrough(),ow=J({baseline_value:G().finite(),candidate_value:G().finite(),delta:G().finite(),direction:Y([`improved`,`flat`,`regressed`]).optional()}).passthrough(),sw=J({comparison_id:W(),comparison_anchor_run_id:W(),candidate_run_id:W(),candidate_arm_id:W(),primary_metric:W(),matched_pair_countable:X(!0),metric_deltas:yd(W(),ow)}).passthrough(),cw=J({ok:X(!0),schema_version:X(`benchmark_study_dashboard_v0`),benchmark_id:W(),study_id:W(),status:Y([`complete`,`provisional`]),design:J({protocol_id:W(),comparison_protocol_id:W(),baseline_arm_id:W(),case_set:J({case_set_id:W(),case_ids:q(W())}),metric_catalog:q(J({metric_name:W(),role:Y([`primary`,`guardrail`,`supporting`]),unit:W().optional(),higher_is_better:K(),binary:K()})),labels:yd(W(),W())}).passthrough(),campaign:J({intended_case_count:G().int().positive(),intended_arm_count:G().int().positive(),intended_cell_denominator:G().int().positive(),selected_score_countable_cell_count:G().int().nonnegative(),selected_score_countable_coverage_rate:G().finite().min(0).max(1),complete_declared_design_case_count:G().int().nonnegative(),ambiguous_score_countable_cell_count:G().int().nonnegative(),in_flight_run_count:G().int().nonnegative(),matched_pair_countable_count:G().int().nonnegative(),factorial_contrast_count:G().int().nonnegative(),factorial_contrast_countable_count:G().int().nonnegative(),runtime_observation_count:G().int().nonnegative(),runtime_classification_counts:yd(W(),G().int().nonnegative())}),arms:q(aw),contrasts:yd(W(),J({matched_pair_denominator:G().int().nonnegative(),primary_metric_directions:J({improved:G().int().nonnegative(),flat:G().int().nonnegative(),regressed:G().int().nonnegative()}),binary_metric_transitions:yd(W(),J({"0_to_1":G().int().nonnegative(),"1_to_0":G().int().nonnegative(),same:G().int().nonnegative()}))})),cases:q(J({case_id:W(),complete_declared_design:K(),arms:q(nw),eligible_comparisons:q(sw),largest_eligible_primary_contrast:sw.nullable()})),runs:q(rw),authority:J({score_source:W(),matched_comparison_source:W(),factorial_comparison_source:W().nullable(),manifest_changes_scores:X(!1),dashboard_is_execution_authority:X(!1)}),public_boundary:J({raw_task_recorded:X(!1),raw_trajectory_recorded:X(!1),hidden_evaluation_recorded:X(!1),raw_verifier_output_recorded:X(!1),credentials_recorded:X(!1),local_paths_recorded:X(!1)}),write_performed:X(!1),network_access_performed:X(!1)});function lw(e){return cw.parse(e)}function uw(e,t){let n=new URL(t),r=new URL(e||`/benchmark-study.example.json`,n);if(!new Set([`http:`,`https:`]).has(r.protocol))throw Error(`Benchmark dashboard source must use HTTP or HTTPS`);if(r.origin!==n.origin)throw Error(`Benchmark dashboard source must use same-origin local readback`);return r.toString()}var dw=[{id:`campaign`,label:`Campaign`},{id:`arms`,label:`Arms`},{id:`cases`,label:`Cases`},{id:`runs`,label:`Runs`}];function fw(e){return e==null?`—`:`${(e*100).toFixed(e>=.995?0:1)}%`}function pw(e){return e==null?`—`:new Intl.NumberFormat(`en`,{maximumFractionDigits:2,notation:`compact`}).format(e)}function mw(e){if(e==null)return`—`;let t=e/6e4;return t>=120?`${(t/60).toFixed(1)} h`:`${pw(t)} min`}function hw(e){let t=Object.entries(e);return t.length?t.map(([e,t])=>`${e} (${t})`).join(`, `):`—`}function gw(e){if(!e)return`—`;let t=e.total==null?pw(e.value):`${pw(e.value)}/${pw(e.total)}`;return e.unit?`${t} ${e.unit}`:t}function _w(e,t){let n=e.metrics[t];return!n||n.case_denominator===0?`—`:n.suite_micro_rate==null?`${pw(n.value_mean)} mean`:`${fw(n.suite_micro_rate)} · ${pw(n.suite_micro_numerator)}/${pw(n.suite_micro_denominator)}`}function vw(e,t){let n=e.largest_eligible_primary_contrast,r=n?.metric_deltas[t];if(!n||!r)return null;let i=r.delta>0?`+`:``;return{direction:r.direction,text:`${n.candidate_arm_id}: ${i}${pw(r.delta)}`}}function yw({children:e,tone:t=`neutral`}){return(0,B.jsx)(`span`,{className:`benchmark-state benchmark-state-${t}`,children:e})}function bw({packet:e,primaryMetric:t}){return(0,B.jsxs)(`div`,{className:`benchmark-view-stack`,children:[(0,B.jsxs)(`section`,{"aria-labelledby":`arm-summary-title`,children:[(0,B.jsxs)(`div`,{className:`benchmark-section-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`benchmark-kicker`,children:`ARM SUMMARY`}),(0,B.jsx)(`h2`,{id:`arm-summary-title`,children:`Comparable outcomes, denominator first`})]}),(0,B.jsx)(`p`,{children:`Only one score-countable run per declared case × arm cell is selected.`})]}),(0,B.jsx)(`div`,{className:`benchmark-arm-grid`,children:e.arms.map(e=>{let n=Object.values(e.binary_outcomes)[0];return(0,B.jsxs)(`article`,{className:`benchmark-arm-card`,children:[(0,B.jsxs)(`div`,{className:`benchmark-card-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`span`,{className:`benchmark-mono`,children:e.arm_role}),(0,B.jsx)(`h3`,{children:e.arm_id})]}),(0,B.jsx)(yw,{tone:e.coverage_rate===1?`success`:`warning`,children:e.coverage_rate===1?`Complete`:`Provisional`})]}),(0,B.jsxs)(`dl`,{className:`benchmark-stat-list`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`dt`,{children:[`Primary · `,t]}),(0,B.jsx)(`dd`,{children:_w(e,t)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Score-countable coverage`}),(0,B.jsxs)(`dd`,{children:[e.selected_score_countable_case_count,`/`,e.intended_case_count]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Binary success`}),(0,B.jsx)(`dd`,{children:n?`${n.success_count}/${n.case_denominator}`:`Not declared`})]})]})]},e.arm_id)})})]}),(0,B.jsxs)(`section`,{"aria-labelledby":`contrast-title`,children:[(0,B.jsxs)(`div`,{className:`benchmark-section-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`benchmark-kicker`,children:`MATCHED CONTRASTS`}),(0,B.jsx)(`h2`,{id:`contrast-title`,children:`Direction counts on eligible pairs`})]}),(0,B.jsx)(`p`,{children:`Raw run volume is never used as a comparison denominator.`})]}),(0,B.jsx)(`div`,{className:`benchmark-table-shell`,children:(0,B.jsxs)(`table`,{children:[(0,B.jsx)(`thead`,{children:(0,B.jsxs)(`tr`,{children:[(0,B.jsx)(`th`,{children:`Candidate arm`}),(0,B.jsx)(`th`,{children:`Matched denominator`}),(0,B.jsx)(`th`,{children:`Improved`}),(0,B.jsx)(`th`,{children:`Flat`}),(0,B.jsx)(`th`,{children:`Regressed`}),(0,B.jsx)(`th`,{children:`Binary transitions`})]})}),(0,B.jsxs)(`tbody`,{children:[Object.entries(e.contrasts).map(([e,t])=>(0,B.jsxs)(`tr`,{children:[(0,B.jsx)(`td`,{children:(0,B.jsx)(`strong`,{children:e})}),(0,B.jsx)(`td`,{children:t.matched_pair_denominator}),(0,B.jsx)(`td`,{className:`benchmark-positive`,children:t.primary_metric_directions.improved}),(0,B.jsx)(`td`,{children:t.primary_metric_directions.flat}),(0,B.jsx)(`td`,{className:`benchmark-negative`,children:t.primary_metric_directions.regressed}),(0,B.jsx)(`td`,{children:Object.entries(t.binary_metric_transitions).map(([e,t])=>`${e}: 0→1 ${t[`0_to_1`]}, 1→0 ${t[`1_to_0`]}, same ${t.same}`).join(` · `)||`—`})]},e)),Object.keys(e.contrasts).length===0&&(0,B.jsx)(`tr`,{children:(0,B.jsx)(`td`,{colSpan:6,children:`No matched comparisons are countable yet.`})})]})]})})]}),(0,B.jsxs)(`section`,{"aria-labelledby":`runtime-health-title`,children:[(0,B.jsxs)(`div`,{className:`benchmark-section-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`benchmark-kicker`,children:`RUNTIME HEALTH`}),(0,B.jsx)(`h2`,{id:`runtime-health-title`,children:`Qualified observations, without execution authority`})]}),(0,B.jsxs)(`p`,{children:[e.campaign.runtime_observation_count,` public-safe runtime observations.`]})]}),(0,B.jsxs)(`div`,{className:`benchmark-runtime-list`,children:[Object.entries(e.campaign.runtime_classification_counts).map(([e,t])=>(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`span`,{children:e}),(0,B.jsx)(`strong`,{children:t})]},e)),e.campaign.runtime_observation_count===0&&(0,B.jsx)(`p`,{className:`benchmark-muted`,children:`No runtime observations uploaded.`})]})]})]})}function xw({packet:e}){return(0,B.jsx)(`div`,{className:`benchmark-detail-grid`,children:e.arms.map(t=>(0,B.jsxs)(`article`,{className:`benchmark-detail-card`,children:[(0,B.jsxs)(`div`,{className:`benchmark-card-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`span`,{className:`benchmark-mono`,children:t.arm_role}),(0,B.jsx)(`h2`,{children:t.arm_id})]}),(0,B.jsxs)(yw,{tone:t.coverage_rate===1?`success`:`warning`,children:[t.selected_score_countable_case_count,`/`,t.intended_case_count,` countable`]})]}),(0,B.jsx)(`div`,{className:`benchmark-factor-row`,children:Object.entries(t.factor_assignments).map(([e,t])=>(0,B.jsxs)(`span`,{children:[e,`: `,(0,B.jsx)(`strong`,{children:t})]},e))}),(0,B.jsxs)(`dl`,{className:`benchmark-stat-list`,children:[e.design.metric_catalog.map(e=>(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`dt`,{children:[e.role,` · `,e.metric_name]}),(0,B.jsx)(`dd`,{children:_w(t,e.metric_name)})]},e.metric_name)),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Runs terminal / observed`}),(0,B.jsxs)(`dd`,{children:[t.terminal_run_count,`/`,t.run_count]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Median duration`}),(0,B.jsx)(`dd`,{children:mw(t.effort.duration_ms?.median)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Protocols`}),(0,B.jsx)(`dd`,{children:hw(t.protocol_counts)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Runner revisions`}),(0,B.jsx)(`dd`,{children:hw(t.runner_revision_counts)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Orchestrator runtimes`}),(0,B.jsxs)(`dd`,{children:[Object.keys(t.orchestrator_runtime_counts).length||0,` distinct`]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Failure classes`}),(0,B.jsx)(`dd`,{children:hw(t.failure_class_counts)})]})]})]},t.arm_id))})}function Sw({packet:e,primaryMetric:t,onOpenRun:n}){return(0,B.jsx)(`div`,{className:`benchmark-table-shell benchmark-wide-table`,children:(0,B.jsxs)(`table`,{children:[(0,B.jsx)(`thead`,{children:(0,B.jsxs)(`tr`,{children:[(0,B.jsx)(`th`,{children:`Case`}),(0,B.jsx)(`th`,{children:`Design status`}),(0,B.jsx)(`th`,{children:`Largest eligible delta`}),e.arms.map(e=>(0,B.jsx)(`th`,{children:e.arm_id},e.arm_id))]})}),(0,B.jsx)(`tbody`,{children:e.cases.map(r=>{let i=vw(r,t);return(0,B.jsxs)(`tr`,{children:[(0,B.jsx)(`td`,{children:(0,B.jsx)(`strong`,{children:r.case_id})}),(0,B.jsx)(`td`,{children:(0,B.jsx)(yw,{tone:r.complete_declared_design?`success`:`warning`,children:r.complete_declared_design?`Complete`:`Provisional`})}),(0,B.jsx)(`td`,{className:i?.direction===`improved`?`benchmark-positive`:i?.direction===`regressed`?`benchmark-negative`:void 0,children:i?.text??`—`}),r.arms.map(r=>(0,B.jsx)(`td`,{children:r.selected_run_id&&r.score_countable?(0,B.jsxs)(`button`,{className:`benchmark-cell-link`,onClick:()=>n(r.selected_run_id),type:`button`,children:[(0,B.jsxs)(`span`,{children:[t,`: `,gw(r.metrics[t])]}),e.design.metric_catalog.filter(e=>e.metric_name!==t).map(e=>(0,B.jsxs)(`small`,{className:`benchmark-cell-metric`,children:[e.metric_name,`: `,gw(r.metrics[e.metric_name])]},e.metric_name)),(0,B.jsxs)(`small`,{children:[`Countable · `,mw(r.effort.duration_ms),` `,(0,B.jsx)(Zp,{"aria-hidden":`true`,size:12})]}),r.insight&&(0,B.jsxs)(`small`,{children:[r.insight.failure_class,` · `,r.insight.confidence]})]}):(0,B.jsx)(`span`,{className:`benchmark-muted`,children:`Not countable`})},r.arm_id))]},r.case_id)})})]})})}function Cw({run:e,packet:t}){return(0,B.jsxs)(`aside`,{"aria-label":`Run detail for ${e.run_id}`,className:`benchmark-run-detail`,children:[(0,B.jsxs)(`div`,{className:`benchmark-card-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`span`,{className:`benchmark-mono`,children:`RUN DETAIL`}),(0,B.jsx)(`h2`,{children:e.run_id})]}),(0,B.jsx)(yw,{tone:e.countability.score_countable?`success`:`warning`,children:e.countability.score_countable?`Score-countable`:`Diagnostic only`})]}),(0,B.jsxs)(`dl`,{className:`benchmark-stat-list benchmark-run-facts`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Case / arm`}),(0,B.jsxs)(`dd`,{children:[e.case_id,` · `,e.arm_id]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Lifecycle`}),(0,B.jsxs)(`dd`,{children:[e.status,` · `,e.observed_at]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Protocol`}),(0,B.jsx)(`dd`,{children:e.protocol_id})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Qualification`}),(0,B.jsxs)(`dd`,{children:[`Integrity `,e.countability.integrity_qualified?`qualified`:`not qualified`,` · result `,e.countability.official_result_present?`present`:`missing`]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Treatment fidelity`}),(0,B.jsx)(`dd`,{children:e.treatment_fidelity})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Effort`}),(0,B.jsxs)(`dd`,{children:[mw(e.effort.duration_ms),` · `,pw(e.effort.agent_steps),` steps · `,pw(e.effort.token_count),` tokens`]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Runner revision`}),(0,B.jsx)(`dd`,{children:e.runner_revision??`—`})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Upload provenance`}),(0,B.jsxs)(`dd`,{children:[e.upload_provenance.producer_id,` · `,e.upload_provenance.source_revision]})]})]}),(0,B.jsx)(`div`,{className:`benchmark-run-metrics`,children:t.design.metric_catalog.map(t=>(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`span`,{children:t.metric_name}),(0,B.jsx)(`strong`,{children:gw(e.metrics[t.metric_name])})]},t.metric_name))}),e.redacted_insight&&(0,B.jsxs)(`div`,{className:`benchmark-insight`,children:[(0,B.jsxs)(`span`,{className:`benchmark-mono`,children:[`REDACTED CASE INSIGHT · `,e.redacted_insight.confidence]}),(0,B.jsx)(`p`,{children:e.redacted_insight.causal_summary}),(0,B.jsxs)(`small`,{children:[`Implication: `,e.redacted_insight.implication]}),(0,B.jsx)(`br`,{}),(0,B.jsxs)(`small`,{children:[`Next probe: `,e.redacted_insight.next_probe]}),!!e.redacted_insight.evidence_refs?.length&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`br`,{}),(0,B.jsxs)(`small`,{children:[`Evidence: `,e.redacted_insight.evidence_refs.join(`, `)]})]})]})]})}function ww({packet:e,selectedRunId:t,onSelectRun:n}){let r=e.runs.find(e=>e.run_id===t)??e.runs[0];return(0,B.jsxs)(`div`,{className:`benchmark-runs-layout`,children:[(0,B.jsx)(`div`,{className:`benchmark-table-shell`,children:(0,B.jsxs)(`table`,{children:[(0,B.jsx)(`thead`,{children:(0,B.jsxs)(`tr`,{children:[(0,B.jsx)(`th`,{children:`Run`}),(0,B.jsx)(`th`,{children:`Case`}),(0,B.jsx)(`th`,{children:`Arm`}),(0,B.jsx)(`th`,{children:`Status`}),(0,B.jsx)(`th`,{children:`Countability`})]})}),(0,B.jsx)(`tbody`,{children:e.runs.map(e=>(0,B.jsxs)(`tr`,{"aria-selected":e.run_id===r?.run_id,children:[(0,B.jsx)(`td`,{children:(0,B.jsx)(`button`,{className:`benchmark-run-link`,onClick:()=>n(e.run_id),type:`button`,children:e.run_id})}),(0,B.jsx)(`td`,{children:e.case_id}),(0,B.jsx)(`td`,{children:e.arm_id}),(0,B.jsx)(`td`,{children:e.status}),(0,B.jsx)(`td`,{children:e.countability.score_countable?`Score-countable`:`Diagnostic only`})]},e.run_id))})]})}),r&&(0,B.jsx)(Cw,{packet:e,run:r})]})}function Tw(){let e=Bw.useSearch(),t=Bw.useNavigate(),[n,r]=(0,z.useState)(null),[i,a]=(0,z.useState)(null),[o,s]=(0,z.useState)(0),c=(0,z.useMemo)(()=>{let t=e.dashboardUrl||`/chat/benchmark-study.example.json`;try{return{url:uw(t,window.location.href),error:null}}catch(e){return{url:``,error:e instanceof Error?e.message:`Invalid dashboard source`}}},[e.dashboardUrl]);if((0,z.useEffect)(()=>{let e=!0;return r(null),a(null),c.error?(a(c.error),()=>{e=!1}):(fetch(c.url,{cache:`no-store`}).then(async e=>{if(!e.ok)throw Error(`HTTP ${e.status} while loading the dashboard packet`);return lw(await e.json())}).then(t=>{e&&r(t)}).catch(t=>{e&&a(t instanceof Error?t.message:`Unable to load dashboard packet`)}),()=>{e=!1})},[o,c]),(0,z.useEffect)(()=>{n&&(document.title=`${n.design.labels.title??n.study_id} · LoopX Benchmark`)},[n]),i)return(0,B.jsxs)(`main`,{className:`benchmark-page benchmark-loading`,children:[(0,B.jsx)(lm,{"aria-hidden":`true`}),(0,B.jsx)(`h1`,{children:`Dashboard packet unavailable`}),(0,B.jsx)(`p`,{children:i}),(0,B.jsxs)(`button`,{onClick:()=>s(e=>e+1),type:`button`,children:[(0,B.jsx)(Hm,{"aria-hidden":`true`,size:16}),` Retry readback`]})]});if(!n)return(0,B.jsxs)(`main`,{"aria-busy":`true`,className:`benchmark-page benchmark-loading`,children:[(0,B.jsx)(Jp,{"aria-hidden":`true`}),(0,B.jsx)(`h1`,{children:`Reading benchmark study`}),(0,B.jsx)(`p`,{children:`Validating the public-safe dashboard packet…`})]});let l=n.design.metric_catalog.find(e=>e.role===`primary`)?.metric_name??`primary`,u=(n,r=e.runId)=>t({search:e=>({...e,view:n,runId:r})}),d=new URL(c.url).pathname;return(0,B.jsxs)(`main`,{className:`benchmark-page`,children:[(0,B.jsxs)(`header`,{className:`benchmark-hero`,children:[(0,B.jsxs)(`div`,{className:`benchmark-hero-topline`,children:[(0,B.jsx)(`a`,{className:`benchmark-wordmark`,href:`/chat/`,children:`LoopX`}),(0,B.jsxs)(`div`,{className:`benchmark-readonly`,children:[(0,B.jsx)(Xm,{"aria-hidden":`true`,size:15}),` Derived read-only projection`]})]}),(0,B.jsxs)(`div`,{className:`benchmark-hero-grid`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`p`,{className:`benchmark-kicker`,children:[`BENCHMARK STUDY / `,n.benchmark_id]}),(0,B.jsxs)(`div`,{className:`benchmark-title-row`,children:[(0,B.jsx)(`h1`,{children:n.design.labels.title??n.study_id}),(0,B.jsx)(yw,{tone:n.status===`complete`?`success`:`warning`,children:n.status})]}),(0,B.jsx)(`p`,{className:`benchmark-lead`,children:`One declared study, explicit denominators, and the same countability rules from campaign summary to exact run.`})]}),(0,B.jsxs)(`dl`,{className:`benchmark-identity`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Study`}),(0,B.jsx)(`dd`,{children:n.study_id})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Protocol`}),(0,B.jsx)(`dd`,{children:n.design.protocol_id})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Case set`}),(0,B.jsx)(`dd`,{children:n.design.case_set.case_set_id})]})]})]}),(0,B.jsxs)(`div`,{className:`benchmark-kpi-grid`,children:[(0,B.jsxs)(`article`,{children:[(0,B.jsx)(mm,{"aria-hidden":`true`}),(0,B.jsx)(`span`,{children:`Score-countable cells`}),(0,B.jsxs)(`strong`,{children:[n.campaign.selected_score_countable_cell_count,(0,B.jsxs)(`small`,{children:[` / `,n.campaign.intended_cell_denominator]})]}),(0,B.jsxs)(`p`,{children:[fw(n.campaign.selected_score_countable_coverage_rate),` declared coverage`]})]}),(0,B.jsxs)(`article`,{children:[(0,B.jsx)(um,{"aria-hidden":`true`}),(0,B.jsx)(`span`,{children:`Complete designs`}),(0,B.jsxs)(`strong`,{children:[n.campaign.complete_declared_design_case_count,(0,B.jsxs)(`small`,{children:[` / `,n.campaign.intended_case_count]})]}),(0,B.jsx)(`p`,{children:`Cases with every declared arm`})]}),(0,B.jsxs)(`article`,{children:[(0,B.jsx)(Zp,{"aria-hidden":`true`}),(0,B.jsx)(`span`,{children:`Matched comparisons`}),(0,B.jsx)(`strong`,{children:n.campaign.matched_pair_countable_count}),(0,B.jsx)(`p`,{children:`Eligible pairs only`})]}),(0,B.jsxs)(`article`,{children:[(0,B.jsx)(Jp,{"aria-hidden":`true`}),(0,B.jsx)(`span`,{children:`In flight`}),(0,B.jsx)(`strong`,{children:n.campaign.in_flight_run_count}),(0,B.jsx)(`p`,{children:n.status===`provisional`?`Coverage remains provisional`:`Declared coverage complete`})]})]})]}),(0,B.jsxs)(`nav`,{"aria-label":`Benchmark dashboard views`,className:`benchmark-tabs`,children:[dw.map(t=>(0,B.jsx)(`button`,{"aria-current":e.view===t.id?`page`:void 0,onClick:()=>u(t.id),type:`button`,children:t.label},t.id)),(0,B.jsxs)(`button`,{className:`benchmark-refresh`,onClick:()=>s(e=>e+1),type:`button`,children:[(0,B.jsx)(Hm,{"aria-hidden":`true`,size:14}),` Refresh local readback`]})]}),(0,B.jsxs)(`div`,{className:`benchmark-content`,children:[e.view===`campaign`&&(0,B.jsx)(bw,{packet:n,primaryMetric:l}),e.view===`arms`&&(0,B.jsx)(xw,{packet:n}),e.view===`cases`&&(0,B.jsx)(Sw,{onOpenRun:e=>u(`runs`,e),packet:n,primaryMetric:l}),e.view===`runs`&&(0,B.jsx)(ww,{onSelectRun:e=>u(`runs`,e),packet:n,selectedRunId:e.runId})]}),(0,B.jsxs)(`footer`,{className:`benchmark-footer`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(Xm,{"aria-hidden":`true`,size:16}),(0,B.jsxs)(`span`,{children:[`Scores: `,n.authority.score_source]}),(0,B.jsx)(`span`,{children:`Dashboard cannot launch, grade, or mutate runs.`})]}),(0,B.jsxs)(`code`,{title:d,children:[`local`,d]})]})]})}var Ew=J({goalId:W().optional().default(``),statusUrl:W().optional().default(``)}),Dw=J({goalId:W().optional().default(``),mode:Y([`showcase`,`developer`,`ops`]).optional().default(`showcase`),statusUrl:W().optional().default(``),todoLane:Y([`all`,`user`,`agent`]).optional().default(`all`),todoQuery:W().optional().default(``)}),Ow=Dw.omit({mode:!0}),kw=J({dashboardUrl:W().optional().default(``),view:Y([`campaign`,`arms`,`cases`,`runs`]).optional().default(`campaign`),runId:W().optional().default(``)});function Aw(){let e=`https://huangruiteng.github.io/loopx/docs/showcases/index.en.html`;return(0,z.useEffect)(()=>{window.location.replace(e)},[]),(0,B.jsx)(`a`,{href:e,children:`Open LoopX cases / 浏览案例`})}function jw({goalId:e,statusUrl:t}){let n=t?lh(t,window.location.href):null;return n?.error?(0,B.jsx)(`main`,{role:`alert`,children:n.error}):(0,B.jsx)(ii,{replace:!0,to:`/`,search:{goalId:e,statusUrl:t}})}function Mw(){let e=Iw.useSearch();return e.mode===`ops`?(0,B.jsx)(jw,{...e}):e.mode===`developer`?(0,B.jsx)(ii,{replace:!0,to:`/developers/projections`}):(0,B.jsx)(Aw,{})}function Nw(){return(0,B.jsx)(jw,{...Lw.useSearch()})}var Pw=Ci({component:()=>(0,B.jsx)(Mi,{}),errorComponent:()=>(0,B.jsxs)(`main`,{role:`alert`,className:`p-8`,children:[(0,B.jsx)(`h1`,{children:`页面暂时无法显示 / Page unavailable`}),(0,B.jsx)(`p`,{children:`请重新加载页面;这不会执行任务。 / Reloading does not execute tasks.`}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>window.location.reload(),children:`重新加载 / Reload`})]})}),Fw=xi({getParentRoute:()=>Pw,path:`/`,validateSearch:e=>Ew.parse(e),component:RC}),Iw=xi({getParentRoute:()=>Pw,path:`/frontstage`,validateSearch:e=>Dw.parse(e),component:Mw}),Lw=xi({getParentRoute:()=>Pw,path:`/deprecated/frontstage/ops`,validateSearch:e=>Ow.parse(e),component:Nw}),Rw=xi({getParentRoute:()=>Pw,path:`/frontstage/developer`,component:()=>(0,B.jsx)(ii,{replace:!0,to:`/developers/projections`})}),zw=xi({getParentRoute:()=>Pw,path:`/developers/projections`,component:QC}),Bw=xi({getParentRoute:()=>Pw,path:`/benchmarks/study`,validateSearch:e=>kw.parse(e),component:Tw}),Vw=Pw.addChildren([Fw,Iw,Lw,Rw,zw,Bw]);function Hw(e){return!e||e===`/`||e===`./`?`/`:(e.startsWith(`/`)?e:`/${e}`).replace(/\/+$/,``)||`/`}var Uw=Li({routeTree:Vw,basepath:Hw(`/chat/`),trailingSlash:`preserve`}),Ww=document.getElementById(`root`);if(!Ww)throw Error(`Root element not found`);var Gw=new R({defaultOptions:{queries:{refetchOnWindowFocus:!1,retry:1,staleTime:1e4}}});(0,Vi.createRoot)(Ww).render((0,B.jsx)(Pe,{client:Gw,children:(0,B.jsx)(qi,{children:(0,B.jsx)(Bi,{router:Uw})})})); \ No newline at end of file +`),summary:k.summary,title:k.title}}]:[]],at=f.connectionState===`connected`,ot=new Map(E.goals.map(e=>[e.goalId,e.title])),st=e=>qd(e,f.activeSource.statusUrl,at&&!l?.errors[e.goalId],ot.get(e.goalId)),ct={...Gy(E),userTodos:E.userTodos.map(st),attentionHistory:(E.attentionHistory??E.userTodos).map(st),periodicReports:{error:te,loading:j},timeline:it};return(0,B.jsxs)(`div`,{className:p===`dark`?`dark`:``,"data-testid":`personal-goal-home`,children:[Ee?(0,B.jsx)(`p`,{role:`status`,className:`m-0 bg-amber-50 px-4 py-2 text-sm text-amber-900`,children:_(Ee===`partial`?`runs.discoveryPartial`:`runs.discoveryOffline`)}):null,(0,B.jsx)(wS,{agents:re.map(e=>({adapterKind:e.adapterKind,agentId:e.agentId,available:e.available,capability:e.capability,interrupt:e.interrupt,label:e.label,location:e.location,resume:e.resume,source:e.source,streaming:e.streaming,toolCalls:e.toolCalls,trustScope:e.trustScope,workspaceCompatibility:e.available?`当前 Goal 写入前验证`:`不可用,需先修复 Endpoint`})),callbacks:{onApplyAttention:e=>rt(e.goalId),onCorrectRun:async(e,t)=>{if(!e.sessionId)throw Error(`这个 Run 还没有可纠偏的执行 Session。`);let n=await Uh((await Bh({actionKind:`run.correct`,context:{kind:`run`,goal_id:e.goalId,todo_id:e.todoId},idempotencyKey:`workspace-run-correct-${e.sessionId}-${Date.now().toString(36)}`,normalizedParameters:{goal_id:e.goalId,message:t,session_id:e.sessionId},summary:`纠偏执行任务:${e.title}`})).proposal_id),r=typeof n.turn?.turn_id==`string`?n.turn.turn_id:void 0;if(qe(e.goalId,{agentId:e.agentId,resumable:!0,sessionId:e.sessionId,status:r?`running`:`ready`,turnId:r}),r){Ne.current.set(e.goalId,r);let t=new AbortController;Pe.current.set(e.goalId,t);let n=``,i=Je(e.goalId,{activity:[`正在把纠偏送入原执行 Session`],agentLabel:e.agentLabel,lines:[],pending:!0,sourceLabel:`${e.agentLabel} · 执行 Session`,text:``});try{let a=await og(e.sessionId,r,{signal:t.signal,onDelta:t=>{n+=t,Ye(e.goalId,i,{text:n})}});Ye(e.goalId,i,{activity:[],pending:!1,text:dC(a.response.message||n.trim())||`${e.agentLabel} 已完成纠偏。`})}catch(t){let n=Fe.current.delete(e.goalId);Ye(e.goalId,i,{activity:[],pending:!1,text:n?`已中断。你可以在当前会话继续发送消息。`:t instanceof Error?t.message:`纠偏回合失败。`})}finally{Ne.current.delete(e.goalId),Pe.current.delete(e.goalId),qe(e.goalId,{agentId:e.agentId,resumable:!0,sessionId:e.sessionId,status:`ready`})}}},onCloseRunSession:et,onInterruptRun:async e=>Ze(e),onOpenGoal:rt,onOpenRunSession:async e=>{if(!e.sessionId)return;let t=e.sessionId,n=await Xh(t);ke(e=>({...e,[t]:n})),rt(e.goalId),_e(t=>({...t,[e.goalId]:n.messages.map(t=>({agentLabel:t.role===`user`?void 0:e.agentLabel,attachments:oC(t.attachments),id:Ae.current++,lines:[],role:t.role===`user`?`user`:`assistant`,sourceLabel:t.role===`user`?void 0:`${e.agentLabel} · 执行 Session`,text:t.role===`user`?t.text:dC(t.text)}))})),qe(e.goalId,{agentId:e.agentId,resumable:n.session.resumable,sessionId:t,status:n.session.active_turn_id?`running`:n.session.status,turnId:n.session.active_turn_id??void 0})},onOpenOutput:e=>rt(e.goalId),...b?{onPreviewGoalSubagentConfiguration:async e=>{let t=await dg(e);return{changed:t.changed,configuration:{allowedDomains:t.after.orchestration.allowed_domains,enabled:t.feature_summary.multi_subagent===`enabled`,maxChildren:t.after.orchestration.max_children,modelConfig:t.after.orchestration.model_config},previewId:t.preview_id}},onApplyGoalSubagentConfiguration:async({previewId:e,...t})=>{let n=await fg(t,e);return{allowedDomains:n.after.orchestration.allowed_domains,enabled:n.feature_summary.multi_subagent===`enabled`,maxChildren:n.after.orchestration.max_children,modelConfig:n.after.orchestration.model_config}}}:{},...g?{onExecuteGoalLifecycle:async({goalId:e,operation:t,reason:n})=>{let r=await Xb(g,e,t,n);return{activationState:r.activation_state,projectionVerified:r.projection_verified}}}:{},onGoalActivationStateChange:n,onGoalDeleted:r,onReconcileStatus:a,onRetryGoalArchive:s,onExportOutput:async e=>{let t=[`# ${e.title}`,``,e.summary??``,``,e.safePreview??`此产出没有可用的公开安全预览。`,``,`Goal: ${e.goalId}`,`Todo: ${e.todoId??`unlinked`}`,`Run: ${e.runId??`unlinked`}`].join(` +`),n=URL.createObjectURL(new Blob([t],{type:`text/markdown;charset=utf-8`})),r=document.createElement(`a`);r.href=n,r.download=`${e.outputId.replace(/[^a-z0-9._-]+/gi,`-`)}.md`,r.click(),URL.revokeObjectURL(n)},onRefresh:o,onRetryResumeRun:Qe,onSelectAgent:tt,onSelectGoal:e=>e?rt(e):nt(),onSendMessage:async(e,t,n,r)=>Xe(e,{agentId:t,goalId:n,attachments:r}),onStartNewRunSession:$e},goalArchiveLoadState:e,managerChannelBinding:w,managerRuntime:S,model:ct,readOnly:h,selectedAgentId:L.agentId,selectedGoalId:D?.goalId??null,statusSourceControl:f})]})}function HC({error:e,isLoading:t,onRetry:n,requestedUrl:r,theme:i,toggleTheme:a}){let o=!!(e&&/failed to fetch|networkerror|load failed/i.test(e)&&r.includes(`status.json`));return(0,B.jsx)(`div`,{className:i===`dark`?`dark`:``,children:(0,B.jsxs)(`main`,{className:`min-h-screen bg-[#f6f7f9] text-slate-950 dark:bg-[#09090b] dark:text-zinc-50`,children:[(0,B.jsxs)(`header`,{className:`flex min-h-16 flex-wrap items-center justify-between gap-3 border-b border-slate-200 bg-white px-4 py-3 dark:border-zinc-800 dark:bg-zinc-950 sm:px-6`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`h1`,{className:`text-xl font-semibold`,children:`LoopX Workspace`}),(0,B.jsx)(`p`,{className:`mt-1 break-all text-sm text-slate-500 dark:text-zinc-400`,children:`Personal Workspace`})]}),(0,B.jsx)(_y,{"aria-label":`切换主题`,onClick:a,size:`icon`,variant:`secondary`,children:i===`dark`?(0,B.jsx)(eh,{className:`h-4 w-4`}):(0,B.jsx)(Fm,{className:`h-4 w-4`})})]}),(0,B.jsxs)(`div`,{className:`grid min-h-[calc(100vh-80px)] sm:grid-cols-[240px_1fr]`,children:[(0,B.jsxs)(`aside`,{className:`hidden border-r border-slate-200 p-6 dark:border-zinc-800 sm:block`,"aria-label":`Workspace`,children:[(0,B.jsx)(`strong`,{children:`LoopX`}),(0,B.jsx)(`p`,{className:`mt-6 text-sm`,children:`Workspace`}),(0,B.jsx)(`p`,{className:`mt-8 text-xs text-slate-500`,children:`Goals`}),[1,2,3].map(e=>(0,B.jsx)(`div`,{className:`mt-4 h-8 rounded bg-slate-100 dark:bg-zinc-900`},e))]}),(0,B.jsx)(`div`,{className:`p-4 sm:p-8`,children:(0,B.jsx)(vy,{"data-testid":`initial-status-state`,children:(0,B.jsx)(yy,{className:`flex min-h-64 items-center justify-center p-6`,children:(0,B.jsxs)(`div`,{className:`max-w-xl text-center`,children:[e?(0,B.jsx)(lm,{className:`mx-auto h-6 w-6 text-rose-600 dark:text-rose-300`}):(0,B.jsx)(Hm,{className:`mx-auto h-6 w-6 animate-spin text-slate-500 dark:text-zinc-400`}),(0,B.jsx)(`p`,{className:`mt-3 text-sm font-medium`,children:e?`无法加载实时状态`:`正在加载实时状态`}),e?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{className:`mt-2 break-words text-sm leading-6 text-slate-500 dark:text-zinc-400`,children:o?`本地状态服务暂时未连接。升级或启动期间可能短暂断开,请重试;仍失败时重新打开 LoopX App,或运行 loopx doctor。`:e}),o?(0,B.jsx)(`p`,{className:`mt-2 text-xs leading-5 text-slate-400 dark:text-zinc-500`,children:`重新加载不会执行任务,也不会改变 Goal 配置。`}):null,(0,B.jsx)(`div`,{className:`mt-4 flex flex-wrap justify-center gap-2`,children:(0,B.jsxs)(_y,{disabled:t,onClick:n,children:[(0,B.jsx)(Hm,{className:`h-4 w-4`}),`重试`]})})]}):(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-500 dark:text-zinc-400`,role:`status`,children:`正在连接 Workspace,Goal 列表将先出现,详细状态会逐个补齐。 / Connecting to your Workspace. Goals load independently.`})]})})})})]})]})})}function UC(){let e=Bw.useSearch(),t=Bw.useNavigate(),[n,r]=(0,z.useState)(`light`),[i,a]=(0,z.useState)(null),o=(0,z.useRef)(null),s=(0,z.useRef)(e.goalId);s.current=e.goalId;let[c,l]=(0,z.useState)(jp),[u,d]=(0,z.useState)({kind:`example`,label:`bundled example`}),[f,p]=(0,z.useState)(()=>LS(window.localStorage,window.location.href)),m=(0,z.useRef)(f);m.current=f;let[h,g]=(0,z.useState)(e.statusUrl),[_,v]=(0,z.useState)(null),[y,b]=(0,z.useState)(!1),[x,S]=(0,z.useState)({error:null,phase:`idle`}),[C,w]=(0,z.useState)(e.statusUrl.trim()||null),[T,E]=(0,z.useState)(!1),D=(0,z.useRef)(null),O=(0,z.useRef)(u_(e.statusUrl.trim()||null)),k=!T&&u.kind===`example`?e.statusUrl.trim():``,ee=C??k,te=u.kind===`url`?u.label:qS,A=!!(_&&C),j=WS(f,C,te,window.location.href),M=u.kind===`example`&&!T,ne=c.attention_queue,N=c.run_history,P=(0,z.useMemo)(()=>XS(N.goals,ne.items),[N.goals,ne.items]);function re(e,t,n=0){S({error:null,phase:`loading`}),JS(dh(e,`stopped`,window.location.href)).then(r=>{if(!m_(O.current,t))return;let i=r.goal_projection?.registry_revision??null,a=t.registryRevision!==null&&t.registryRevision!==void 0&&i!==null&&t.registryRevision!==i;if(l(e=>L_(e,r)),a&&n<1){F(e,{background:!0,resyncAttempt:n+1});return}S(a?{error:`Goal 状态在加载历史时发生变化,请重试。`,phase:`error`}:{error:null,phase:`ready`})}).catch(e=>{m_(O.current,t)&&S({error:Ap(e),phase:`error`})})}function ie(){let e=u.kind===`url`?u.label:h||qS,t=f_(O.current,e,{background:!0});if(i){F(e);return}t&&re(e,t)}async function ae(e,n,r){if(r.background)return l(e=>L_(e,n)),!0;let i={kind:`url`,label:e};return O.current.loadedUrl=e,l(n),d(i),g(e),await t({search:t=>({...t,statusUrl:e})}),p_(O.current,r)?(O.current.requestedUrl=null,w(null),!0):!1}async function F(e,t={}){let n=e.trim(),r=t.background===!0;if(!n){r||v(`状态地址不能为空`);return}let c=f_(O.current,n,{background:r,selectionRevision:t.selectionRevision});if(!c)return;o.current?.abort();let d=new AbortController;o.current=d,r||(D.current=null,E(!1),w(n),b(!0),v(null),S({error:null,phase:`idle`}));try{let e=await Fp(n,window.location.href).catch(()=>null);if(!m_(O.current,c))return;if(e){let o=(t.retryOnly||t.reuseSnapshots)&&u.kind===`url`&&u.label===n?Np(i,e,{invalidateGoalIds:t.invalidateGoalIds}):{};a({directory:e,snapshots:o,errors:{}});let f={...e,goals:e.goals.filter(e=>!o[e.id])},p=!1,m=Ip(e);if(r)l(m);else if(!await ae(n,m,c))return;if(S({error:null,phase:`loading`}),await Rp(n,window.location.href,f,(e,t,n)=>{n===`revision`&&(p=!0),a(r=>r&&{...r,snapshots:t?{...r.snapshots,[e]:t}:r.snapshots,errors:n?{...r.errors,[e]:n}:r.errors})},()=>m_(O.current,c),()=>s.current,d.signal),p&&(t.resyncAttempt??0)<1&&m_(O.current,c)){await F(n,{resyncAttempt:1});return}m_(O.current,c)&&S({error:null,phase:`ready`});return}let o=await JS(dh(n,`active`,window.location.href));if(!m_(O.current,c)||(a(null),c.registryRevision=o.goal_projection?.registry_revision??null,!await ae(n,o,c)))return;if(o.goal_projection?.scope!==`active`||o.goal_projection.complete){S({error:null,phase:`ready`});return}re(n,c,t.resyncAttempt??0)}catch(e){if(!p_(O.current,c))return;r||v(Ap(e))}finally{!r&&p_(O.current,c)&&b(!1)}}function oe(e,t={}){o.current?.abort();let n=d_(O.current,e.statusUrl);D.current=null,E(!1),w(e.statusUrl),b(!0),v(null),(async()=>{if(t.ensureTunnel&&e.kind===`ssh_tunnel`){let t=new URL(e.statusUrl,window.location.href).port;if(t)try{await Yb(e.label,t)}catch{}}O.current.selectionRevision===n&&await F(e.statusUrl,{selectionRevision:n})})()}function I(e){m.current=e,p(e);try{RS(window.localStorage,e)}catch{}}let se={activeSource:j,connectionState:y?`loading`:A?`error`:`connected`,errorMessage:A?`未切换到 ${C??`所选来源`}:${_}`:null,onAdd:e=>{let t=BS(f,e,window.location.href);return`error`in t?{error:t.error}:(I(t.catalog),oe(t.source,{ensureTunnel:e.ensureTunnel}),{})},onConfiguredHostsLoaded:e=>{let t=m.current,n=zS(t,e);n!==t&&I(n)},onRemove:e=>{I(VS(f,e)),j.id===e&&oe(MS)},onSelect:e=>{let t=f.sources.find(t=>t.id===e);t&&oe(t,{ensureTunnel:t.kind===`ssh_tunnel`})},sources:j.id===`temporary`?[...f.sources,j]:f.sources};(0,z.useEffect)(()=>{let t=e.statusUrl.trim();if(t){if(D.current===t||C&&C!==t)return;(u.kind!==`url`||u.label!==t)&&F(t);return}D.current=null,!T&&(C||u.kind===`example`&&F(qS))},[T,C,e.statusUrl,u.kind,u.label]),(0,z.useEffect)(()=>{if(e.statusUrl&&u.kind===`example`)return;let n=new Set(P.map(e=>e.goal.id));if(P.length===0){e.goalId&&t({search:e=>({...e,goalId:``})});return}e.goalId&&!n.has(e.goalId)&&x.phase!==`loading`&&t({search:e=>({...e,goalId:``})})},[x.phase,P,t,e.goalId,e.statusUrl,u.kind]),(0,z.useEffect)(()=>{if(!i||y||!e.goalId||u.kind!==`url`)return;let t=i.directory.goals.find(t=>t.id===e.goalId);t?.activation_state===`stopped`&&!i.snapshots[t.id]&&!i.errors[t.id]&&F(u.label,{retryOnly:!0})},[e.goalId,y,i,u]);function L(e){t({search:t=>({...t,goalId:e})})}return M?(0,B.jsx)(HC,{error:_,isLoading:y,onRetry:()=>void F(ee||qS),requestedUrl:ee||qS,theme:n,toggleTheme:()=>r(n===`dark`?`light`:`dark`)}):(0,B.jsx)(VC,{goalArchiveLoadState:x,isLoading:y,onGoalActivationStateChange:(e,t)=>{O.current.projectionRevision+=1,l(n=>Dp(n,e,t)),a(n=>n&&{...n,snapshots:Object.fromEntries(Object.entries(n.snapshots).map(([n,r])=>[n,Dp(r,e,t)]))})},onGoalDeleted:e=>{O.current.projectionRevision+=1,l(t=>Op(t,e)),a(t=>t&&{...t,snapshots:Object.fromEntries(Object.entries(t.snapshots).filter(([t])=>t!==e))})},onSelectGoal:L,onReconcileStatus:e=>F(u.kind===`url`?u.label:h||qS,{background:!0,invalidateGoalIds:e?.invalidateGoalIds,reuseSnapshots:!0}),onRetryGoalArchive:ie,onRefresh:()=>F(u.kind===`url`?u.label:h||qS,{retryOnly:!!(i&&Object.keys(i.errors).length)}),payload:c,progress:i,rows:P,selectedGoalId:e.goalId,statusSourceControl:se,theme:n,toggleTheme:()=>r(n===`dark`?`light`:`dark`)})}var WC=H_(`inline-flex items-center gap-1 rounded-md border px-2 py-0.5 text-xs font-medium`,{variants:{variant:{neutral:`border-slate-200 bg-white text-slate-700 dark:border-zinc-800 dark:bg-zinc-950 dark:text-zinc-300`,success:`border-emerald-200 bg-emerald-50 text-emerald-800 dark:border-emerald-900 dark:bg-emerald-950 dark:text-emerald-200`,warning:`border-amber-200 bg-amber-50 text-amber-800 dark:border-amber-900 dark:bg-amber-950 dark:text-amber-200`,info:`border-sky-200 bg-sky-50 text-sky-800 dark:border-sky-900 dark:bg-sky-950 dark:text-sky-200`,danger:`border-rose-200 bg-rose-50 text-rose-800 dark:border-rose-900 dark:bg-rose-950 dark:text-rose-200`}},defaultVariants:{variant:`neutral`}});function GC({className:e,variant:t,...n}){return(0,B.jsx)(`span`,{className:hy(WC({variant:t}),e),...n})}var KC=[{label:`status payload`,source:`apps/presentation/dashboard/src/data/status.ts`,detail:`status_contract, attention_queue, local_dashboard_api, run_history`},{label:`channel projection`,source:`apps/presentation/dashboard/src/data/goal-channel-frontstage.ts`,detail:`decision_frame, todos, gates, leases, artifacts, truth_contract`},{label:`public showcase catalog`,source:`docs/showcases/showcase-catalog.json`,detail:`case metadata, visual hints, evidence boundaries, story beats`},{label:`route smoke`,source:`apps/presentation/dashboard/smoke/frontstage-route-smoke.ts`,detail:`static route contract, source guards, component expectations`}],qC=[{axis:`schema`,current:`goal_channel_projection_v0`,proposed:`new optional projection field`,gate:`parser default plus route smoke assertion`},{axis:`truth`,current:`event ledger and active state remain source of truth`,proposed:`derived UI state only`,gate:`truth_contract must stay read-only`},{axis:`privacy`,current:`compact source refs and warnings`,proposed:`public-safe fixture field`,gate:`loopx check and browser fake-private fixture`},{axis:`interaction`,current:`render, filter, select, inspect`,proposed:`no browser write by default`,gate:`write affordance requires explicit loopback capability`}],JC=[{title:`Fixture sources`,body:`Use examples/status.example.json, browser-smoke fixtures, and docs/showcases/showcase-catalog.json.`},{title:`Required proof`,body:`Every projection addition needs parser coverage, route smoke assertions, and one browser or bundle check when UI output changes.`},{title:`Never include`,body:`Raw task text, trajectories, transcripts, local paths, private registry state, credentials, or internal document links.`}],YC=[`npm --prefix apps/presentation/dashboard run smoke:frontstage-route`,`npm --prefix apps/presentation/dashboard run smoke:frontstage-browser`,`npm --prefix apps/presentation/dashboard run smoke:frontstage-share-bundle`,`npm --prefix apps/presentation/dashboard run build`,`loopx check --scan-path apps/presentation/dashboard --scan-path docs/status-data-contract.md`],XC=[{name:`Projection lane`,badges:[`read-only`,`schema v0`],body:`Summarizes one compact projection lane without mutating the underlying LoopX state.`},{name:`Capability badge`,badges:[`loopback`,`dry-run`],body:`Shows an advertised local capability only after the status feed declares it.`},{name:`Boundary warning`,badges:[`public-safe`,`omitted`],body:`Names omitted private material and points contributors back to compact source references.`}];function ZC({children:e,icon:t,title:n}){return(0,B.jsxs)(`section`,{className:`rounded-lg border border-slate-200 bg-white shadow-sm`,children:[(0,B.jsx)(`div`,{className:`flex items-center justify-between gap-3 border-b border-slate-200 px-4 py-3`,children:(0,B.jsxs)(`h2`,{className:`flex items-center gap-2 text-sm font-semibold text-slate-950`,children:[(0,B.jsx)(t,{className:`h-4 w-4 text-slate-500`}),n]})}),e]})}function QC(){return(0,B.jsx)(ZC,{icon:rm,title:`Status Contract Explorer`,children:(0,B.jsx)(`div`,{className:`grid gap-3 p-4 lg:grid-cols-2`,"data-testid":`developer-contract-explorer`,children:KC.map(e=>(0,B.jsxs)(`div`,{className:`rounded-md border border-slate-200 bg-slate-50 px-3 py-3`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,B.jsx)(GC,{variant:`info`,children:e.label}),(0,B.jsx)(GC,{variant:`neutral`,children:`public contract`})]}),(0,B.jsx)(`div`,{className:`mt-2 break-words font-mono text-xs text-slate-700`,children:e.source}),(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600`,children:e.detail})]},e.label))})})}function $C(){return(0,B.jsx)(ZC,{icon:Cm,title:`Projection Diffing`,children:(0,B.jsx)(`div`,{className:`overflow-x-auto`,"data-testid":`developer-projection-diffing`,children:(0,B.jsxs)(`table`,{className:`min-w-full border-separate border-spacing-0 text-left text-sm`,children:[(0,B.jsx)(`thead`,{children:(0,B.jsxs)(`tr`,{className:`bg-slate-50 text-xs uppercase tracking-normal text-slate-500`,children:[(0,B.jsx)(`th`,{className:`border-b border-slate-200 px-4 py-3 font-semibold`,children:`Axis`}),(0,B.jsx)(`th`,{className:`border-b border-slate-200 px-4 py-3 font-semibold`,children:`Current`}),(0,B.jsx)(`th`,{className:`border-b border-slate-200 px-4 py-3 font-semibold`,children:`Proposed`}),(0,B.jsx)(`th`,{className:`border-b border-slate-200 px-4 py-3 font-semibold`,children:`Gate`})]})}),(0,B.jsx)(`tbody`,{children:qC.map(e=>(0,B.jsxs)(`tr`,{className:`align-top`,children:[(0,B.jsx)(`td`,{className:`border-b border-slate-100 px-4 py-3 font-semibold text-slate-950`,children:e.axis}),(0,B.jsx)(`td`,{className:`border-b border-slate-100 px-4 py-3 text-slate-600`,children:e.current}),(0,B.jsx)(`td`,{className:`border-b border-slate-100 px-4 py-3 text-slate-600`,children:e.proposed}),(0,B.jsx)(`td`,{className:`border-b border-slate-100 px-4 py-3 text-slate-600`,children:e.gate})]},e.axis))})]})})})}function ew(){return(0,B.jsx)(ZC,{icon:ym,title:`Fixture Generation`,children:(0,B.jsx)(`div`,{className:`grid gap-3 p-4 md:grid-cols-3`,"data-testid":`developer-fixture-generation`,children:JC.map(e=>(0,B.jsxs)(`div`,{className:`rounded-md border border-slate-200 bg-slate-50 px-3 py-3`,children:[(0,B.jsx)(`div`,{className:`text-sm font-semibold text-slate-950`,children:e.title}),(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600`,children:e.body})]},e.title))})})}function tw(){return(0,B.jsx)(ZC,{icon:dm,title:`Smoke Checklist`,children:(0,B.jsx)(`div`,{className:`space-y-2 p-4`,"data-testid":`developer-smoke-checklist`,children:YC.map(e=>(0,B.jsxs)(`div`,{className:`flex items-start gap-3 rounded-md border border-slate-200 bg-slate-50 px-3 py-2`,children:[(0,B.jsx)(em,{className:`mt-0.5 h-4 w-4 shrink-0 text-emerald-600`}),(0,B.jsx)(`code`,{className:`break-all text-xs font-semibold leading-5 text-slate-700`,children:e})]},e))})})}function nw(){return(0,B.jsx)(ZC,{icon:fm,title:`Component Examples`,children:(0,B.jsx)(`div`,{className:`grid gap-3 p-4 lg:grid-cols-3`,"data-testid":`developer-component-examples`,children:XC.map(e=>(0,B.jsxs)(`article`,{className:`rounded-md border border-slate-200 bg-slate-50 p-3`,children:[(0,B.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:e.badges.map(e=>(0,B.jsx)(GC,{variant:e===`read-only`||e===`public-safe`?`success`:`neutral`,children:e},e))}),(0,B.jsx)(`h3`,{className:`mt-3 text-sm font-semibold leading-6 text-slate-950`,children:e.name}),(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600`,children:e.body})]},e.name))})})}function rw(){return(0,B.jsx)(`main`,{className:`min-h-screen bg-[#f7f7f4] px-4 py-4 text-slate-950 sm:px-5`,"data-testid":`frontstage-developer-cockpit`,children:(0,B.jsxs)(`div`,{className:`mx-auto grid max-w-[1500px] gap-4 xl:grid-cols-[260px_minmax(0,1fr)]`,children:[(0,B.jsxs)(`aside`,{className:`rounded-lg border border-slate-200 bg-white p-4 shadow-sm xl:sticky xl:top-4 xl:self-start`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(`div`,{className:`flex h-9 w-9 items-center justify-center rounded-md border border-slate-200 bg-slate-950 text-white`,children:(0,B.jsx)(th,{className:`h-4 w-4`})}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`text-sm font-semibold`,children:`Developer Cockpit`}),(0,B.jsx)(`div`,{className:`text-xs text-slate-500`,children:`Projection extension`})]})]}),(0,B.jsxs)(`div`,{className:`mt-4 grid gap-2`,children:[(0,B.jsxs)(`a`,{className:`flex items-center gap-2 rounded-md border border-slate-200 px-3 py-2 text-sm font-medium`,href:`https://huangruiteng.github.io/loopx/`,children:[(0,B.jsx)(Dm,{className:`h-4 w-4`}),`LoopX home`]}),(0,B.jsxs)(`a`,{className:`flex items-center gap-2 rounded-md border border-slate-200 px-3 py-2 text-sm font-medium`,href:`https://huangruiteng.github.io/loopx/docs/showcases/index.en.html`,children:[(0,B.jsx)(_m,{className:`h-4 w-4`}),`Public cases`]}),(0,B.jsxs)(`a`,{className:`flex items-center gap-2 rounded-md bg-slate-950 px-3 py-2 text-sm font-medium text-white`,href:`/chat/developers/projections/`,children:[(0,B.jsx)(fm,{className:`h-4 w-4`}),`Developer cockpit`]})]}),(0,B.jsxs)(`div`,{className:`mt-5 space-y-2 rounded-md border border-emerald-200 bg-emerald-50 p-3 text-xs leading-5 text-emerald-950`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,B.jsx)(GC,{variant:`success`,children:`read-only`}),(0,B.jsx)(GC,{variant:`neutral`,children:`public fixtures`})]}),(0,B.jsx)(`p`,{children:`This route uses static public contracts only; live status feeds, registry files, and browser write APIs stay outside the cockpit.`})]})]}),(0,B.jsxs)(`section`,{className:`space-y-4`,children:[(0,B.jsx)(`div`,{className:`rounded-lg border border-slate-200 bg-white px-5 py-5 shadow-sm`,children:(0,B.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-4`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,B.jsx)(GC,{variant:`info`,children:`developers/projections`}),(0,B.jsx)(GC,{variant:`success`,children:`public-safe`}),(0,B.jsx)(GC,{variant:`neutral`,children:`no browser writes`})]}),(0,B.jsx)(`h1`,{className:`mt-3 text-3xl font-semibold tracking-normal text-slate-950`,children:`LoopX Projection Developer Cockpit`}),(0,B.jsx)(`p`,{className:`mt-2 max-w-3xl text-sm leading-6 text-slate-600`,children:`A read-only contributor workbench for adding dashboard/frontstage projections without reverse-engineering the large operator page.`})]}),(0,B.jsxs)(`div`,{className:`grid min-w-[260px] gap-2 text-sm`,children:[(0,B.jsxs)(`div`,{className:`rounded-md border border-slate-200 bg-slate-50 px-3 py-2`,children:[(0,B.jsx)(`div`,{className:`text-[11px] font-semibold uppercase tracking-normal text-slate-500`,children:`Source of truth`}),(0,B.jsx)(`div`,{className:`mt-1 font-semibold text-slate-950`,children:`status contract + compact fixtures`})]}),(0,B.jsxs)(`div`,{className:`rounded-md border border-slate-200 bg-slate-50 px-3 py-2`,children:[(0,B.jsx)(`div`,{className:`text-[11px] font-semibold uppercase tracking-normal text-slate-500`,children:`Boundary`}),(0,B.jsx)(`div`,{className:`mt-1 font-semibold text-slate-950`,children:`read-only extension surface`})]})]})]})}),(0,B.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,B.jsx)(QC,{}),(0,B.jsx)($C,{})]}),(0,B.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[minmax(0,1fr)_420px]`,children:[(0,B.jsx)(ew,{}),(0,B.jsx)(tw,{})]}),(0,B.jsx)(nw,{}),(0,B.jsx)(ZC,{icon:Xm,title:`Extension Boundary`,children:(0,B.jsxs)(`div`,{className:`grid gap-3 p-4 md:grid-cols-3`,"data-testid":`developer-extension-boundary`,children:[(0,B.jsxs)(`div`,{className:`rounded-md border border-emerald-200 bg-emerald-50 px-3 py-3`,children:[(0,B.jsx)(`div`,{className:`text-sm font-semibold text-slate-950`,children:`Allowed`}),(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600`,children:`Versioned parser defaults, public fixtures, read-only route panels, and focused smoke assertions.`})]}),(0,B.jsxs)(`div`,{className:`rounded-md border border-amber-200 bg-amber-50 px-3 py-3`,children:[(0,B.jsx)(`div`,{className:`text-sm font-semibold text-slate-950`,children:`Review`}),(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600`,children:`New dashboard dependencies, status contract fields, loopback capability display, and browser-visible workflows.`})]}),(0,B.jsxs)(`div`,{className:`rounded-md border border-rose-200 bg-rose-50 px-3 py-3`,children:[(0,B.jsx)(`div`,{className:`text-sm font-semibold text-slate-950`,children:`Stop`}),(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600`,children:`Credentials, private registry material, raw logs, transcripts, production actions, or default browser write authority.`})]})]})})]})]})})}var iw=J({value:G().finite(),total:G().finite().positive().optional(),unit:W().optional(),higher_is_better:K()}).passthrough(),aw=yd(W(),G().finite()).default({}),ow=J({outcome_status:W().optional(),failure_class:W(),causal_summary:W(),expectedness:W(),implication:W(),next_probe:W(),confidence:W(),evidence_refs:q(W()).optional()}).passthrough(),sw=J({arm_id:W(),selected_run_id:W().nullable(),score_countable:K(),metrics:yd(W(),iw),effort:aw,insight:ow.nullable().optional()}),cw=J({run_id:W(),case_id:W(),arm_id:W(),arm_role:W(),status:W(),protocol_id:W(),runner_revision:W().optional(),observed_at:W(),metrics:yd(W(),iw),countability:J({integrity_qualified:K(),official_result_present:K(),score_countable:K()}).passthrough(),treatment_fidelity:W(),effort:aw,redacted_insight:ow.nullable().optional(),upload_provenance:J({producer_id:W(),producer_version:W(),observed_at:W(),source_revision:W()}).passthrough()}).passthrough(),lw=J({case_denominator:G().int().nonnegative(),value_sum:G().finite(),value_mean:G().finite().nullable(),value_median:G().finite().nullable(),value_min:G().finite().nullable(),value_max:G().finite().nullable(),case_macro_rate:G().finite().optional(),suite_micro_rate:G().finite().optional(),suite_micro_numerator:G().finite().optional(),suite_micro_denominator:G().finite().positive().optional()}).passthrough(),uw=J({arm_id:W(),arm_role:W(),factor_assignments:yd(W(),W()),protocol_counts:yd(W(),G().int().nonnegative()).default({}),runner_revision_counts:yd(W(),G().int().nonnegative()).default({}),orchestrator_runtime_counts:yd(W(),G().int().nonnegative()).default({}),intended_case_count:G().int().positive(),run_count:G().int().nonnegative(),terminal_run_count:G().int().nonnegative(),selected_score_countable_case_count:G().int().nonnegative(),coverage_rate:G().finite().min(0).max(1),metrics:yd(W(),lw),binary_outcomes:yd(W(),J({success_count:G().int().nonnegative(),case_denominator:G().int().nonnegative(),success_rate:G().finite().min(0).max(1).nullable()})),effort:yd(W(),J({denominator:G().int().nonnegative(),mean:G().finite().nullable(),median:G().finite().nullable()})),failure_class_counts:yd(W(),G().int().nonnegative())}).passthrough(),dw=J({baseline_value:G().finite(),candidate_value:G().finite(),delta:G().finite(),direction:Y([`improved`,`flat`,`regressed`]).optional()}).passthrough(),fw=J({comparison_id:W(),comparison_anchor_run_id:W(),candidate_run_id:W(),candidate_arm_id:W(),primary_metric:W(),matched_pair_countable:X(!0),metric_deltas:yd(W(),dw)}).passthrough(),pw=J({ok:X(!0),schema_version:X(`benchmark_study_dashboard_v0`),benchmark_id:W(),study_id:W(),status:Y([`complete`,`provisional`]),design:J({protocol_id:W(),comparison_protocol_id:W(),baseline_arm_id:W(),case_set:J({case_set_id:W(),case_ids:q(W())}),metric_catalog:q(J({metric_name:W(),role:Y([`primary`,`guardrail`,`supporting`]),unit:W().optional(),higher_is_better:K(),binary:K()})),labels:yd(W(),W())}).passthrough(),campaign:J({intended_case_count:G().int().positive(),intended_arm_count:G().int().positive(),intended_cell_denominator:G().int().positive(),selected_score_countable_cell_count:G().int().nonnegative(),selected_score_countable_coverage_rate:G().finite().min(0).max(1),complete_declared_design_case_count:G().int().nonnegative(),ambiguous_score_countable_cell_count:G().int().nonnegative(),in_flight_run_count:G().int().nonnegative(),matched_pair_countable_count:G().int().nonnegative(),factorial_contrast_count:G().int().nonnegative(),factorial_contrast_countable_count:G().int().nonnegative(),runtime_observation_count:G().int().nonnegative(),runtime_classification_counts:yd(W(),G().int().nonnegative())}),arms:q(uw),contrasts:yd(W(),J({matched_pair_denominator:G().int().nonnegative(),primary_metric_directions:J({improved:G().int().nonnegative(),flat:G().int().nonnegative(),regressed:G().int().nonnegative()}),binary_metric_transitions:yd(W(),J({"0_to_1":G().int().nonnegative(),"1_to_0":G().int().nonnegative(),same:G().int().nonnegative()}))})),cases:q(J({case_id:W(),complete_declared_design:K(),arms:q(sw),eligible_comparisons:q(fw),largest_eligible_primary_contrast:fw.nullable()})),runs:q(cw),authority:J({score_source:W(),matched_comparison_source:W(),factorial_comparison_source:W().nullable(),manifest_changes_scores:X(!1),dashboard_is_execution_authority:X(!1)}),public_boundary:J({raw_task_recorded:X(!1),raw_trajectory_recorded:X(!1),hidden_evaluation_recorded:X(!1),raw_verifier_output_recorded:X(!1),credentials_recorded:X(!1),local_paths_recorded:X(!1)}),write_performed:X(!1),network_access_performed:X(!1)});function mw(e){return pw.parse(e)}function hw(e,t){let n=new URL(t),r=new URL(e||`/benchmark-study.example.json`,n);if(!new Set([`http:`,`https:`]).has(r.protocol))throw Error(`Benchmark dashboard source must use HTTP or HTTPS`);if(r.origin!==n.origin)throw Error(`Benchmark dashboard source must use same-origin local readback`);return r.toString()}var gw=[{id:`campaign`,label:`Campaign`},{id:`arms`,label:`Arms`},{id:`cases`,label:`Cases`},{id:`runs`,label:`Runs`}];function _w(e){return e==null?`—`:`${(e*100).toFixed(e>=.995?0:1)}%`}function vw(e){return e==null?`—`:new Intl.NumberFormat(`en`,{maximumFractionDigits:2,notation:`compact`}).format(e)}function yw(e){if(e==null)return`—`;let t=e/6e4;return t>=120?`${(t/60).toFixed(1)} h`:`${vw(t)} min`}function bw(e){let t=Object.entries(e);return t.length?t.map(([e,t])=>`${e} (${t})`).join(`, `):`—`}function xw(e){if(!e)return`—`;let t=e.total==null?vw(e.value):`${vw(e.value)}/${vw(e.total)}`;return e.unit?`${t} ${e.unit}`:t}function Sw(e,t){let n=e.metrics[t];return!n||n.case_denominator===0?`—`:n.suite_micro_rate==null?`${vw(n.value_mean)} mean`:`${_w(n.suite_micro_rate)} · ${vw(n.suite_micro_numerator)}/${vw(n.suite_micro_denominator)}`}function Cw(e,t){let n=e.largest_eligible_primary_contrast,r=n?.metric_deltas[t];if(!n||!r)return null;let i=r.delta>0?`+`:``;return{direction:r.direction,text:`${n.candidate_arm_id}: ${i}${vw(r.delta)}`}}function ww({children:e,tone:t=`neutral`}){return(0,B.jsx)(`span`,{className:`benchmark-state benchmark-state-${t}`,children:e})}function Tw({packet:e,primaryMetric:t}){return(0,B.jsxs)(`div`,{className:`benchmark-view-stack`,children:[(0,B.jsxs)(`section`,{"aria-labelledby":`arm-summary-title`,children:[(0,B.jsxs)(`div`,{className:`benchmark-section-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`benchmark-kicker`,children:`ARM SUMMARY`}),(0,B.jsx)(`h2`,{id:`arm-summary-title`,children:`Comparable outcomes, denominator first`})]}),(0,B.jsx)(`p`,{children:`Only one score-countable run per declared case × arm cell is selected.`})]}),(0,B.jsx)(`div`,{className:`benchmark-arm-grid`,children:e.arms.map(e=>{let n=Object.values(e.binary_outcomes)[0];return(0,B.jsxs)(`article`,{className:`benchmark-arm-card`,children:[(0,B.jsxs)(`div`,{className:`benchmark-card-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`span`,{className:`benchmark-mono`,children:e.arm_role}),(0,B.jsx)(`h3`,{children:e.arm_id})]}),(0,B.jsx)(ww,{tone:e.coverage_rate===1?`success`:`warning`,children:e.coverage_rate===1?`Complete`:`Provisional`})]}),(0,B.jsxs)(`dl`,{className:`benchmark-stat-list`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`dt`,{children:[`Primary · `,t]}),(0,B.jsx)(`dd`,{children:Sw(e,t)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Score-countable coverage`}),(0,B.jsxs)(`dd`,{children:[e.selected_score_countable_case_count,`/`,e.intended_case_count]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Binary success`}),(0,B.jsx)(`dd`,{children:n?`${n.success_count}/${n.case_denominator}`:`Not declared`})]})]})]},e.arm_id)})})]}),(0,B.jsxs)(`section`,{"aria-labelledby":`contrast-title`,children:[(0,B.jsxs)(`div`,{className:`benchmark-section-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`benchmark-kicker`,children:`MATCHED CONTRASTS`}),(0,B.jsx)(`h2`,{id:`contrast-title`,children:`Direction counts on eligible pairs`})]}),(0,B.jsx)(`p`,{children:`Raw run volume is never used as a comparison denominator.`})]}),(0,B.jsx)(`div`,{className:`benchmark-table-shell`,children:(0,B.jsxs)(`table`,{children:[(0,B.jsx)(`thead`,{children:(0,B.jsxs)(`tr`,{children:[(0,B.jsx)(`th`,{children:`Candidate arm`}),(0,B.jsx)(`th`,{children:`Matched denominator`}),(0,B.jsx)(`th`,{children:`Improved`}),(0,B.jsx)(`th`,{children:`Flat`}),(0,B.jsx)(`th`,{children:`Regressed`}),(0,B.jsx)(`th`,{children:`Binary transitions`})]})}),(0,B.jsxs)(`tbody`,{children:[Object.entries(e.contrasts).map(([e,t])=>(0,B.jsxs)(`tr`,{children:[(0,B.jsx)(`td`,{children:(0,B.jsx)(`strong`,{children:e})}),(0,B.jsx)(`td`,{children:t.matched_pair_denominator}),(0,B.jsx)(`td`,{className:`benchmark-positive`,children:t.primary_metric_directions.improved}),(0,B.jsx)(`td`,{children:t.primary_metric_directions.flat}),(0,B.jsx)(`td`,{className:`benchmark-negative`,children:t.primary_metric_directions.regressed}),(0,B.jsx)(`td`,{children:Object.entries(t.binary_metric_transitions).map(([e,t])=>`${e}: 0→1 ${t[`0_to_1`]}, 1→0 ${t[`1_to_0`]}, same ${t.same}`).join(` · `)||`—`})]},e)),Object.keys(e.contrasts).length===0&&(0,B.jsx)(`tr`,{children:(0,B.jsx)(`td`,{colSpan:6,children:`No matched comparisons are countable yet.`})})]})]})})]}),(0,B.jsxs)(`section`,{"aria-labelledby":`runtime-health-title`,children:[(0,B.jsxs)(`div`,{className:`benchmark-section-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`benchmark-kicker`,children:`RUNTIME HEALTH`}),(0,B.jsx)(`h2`,{id:`runtime-health-title`,children:`Qualified observations, without execution authority`})]}),(0,B.jsxs)(`p`,{children:[e.campaign.runtime_observation_count,` public-safe runtime observations.`]})]}),(0,B.jsxs)(`div`,{className:`benchmark-runtime-list`,children:[Object.entries(e.campaign.runtime_classification_counts).map(([e,t])=>(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`span`,{children:e}),(0,B.jsx)(`strong`,{children:t})]},e)),e.campaign.runtime_observation_count===0&&(0,B.jsx)(`p`,{className:`benchmark-muted`,children:`No runtime observations uploaded.`})]})]})]})}function Ew({packet:e}){return(0,B.jsx)(`div`,{className:`benchmark-detail-grid`,children:e.arms.map(t=>(0,B.jsxs)(`article`,{className:`benchmark-detail-card`,children:[(0,B.jsxs)(`div`,{className:`benchmark-card-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`span`,{className:`benchmark-mono`,children:t.arm_role}),(0,B.jsx)(`h2`,{children:t.arm_id})]}),(0,B.jsxs)(ww,{tone:t.coverage_rate===1?`success`:`warning`,children:[t.selected_score_countable_case_count,`/`,t.intended_case_count,` countable`]})]}),(0,B.jsx)(`div`,{className:`benchmark-factor-row`,children:Object.entries(t.factor_assignments).map(([e,t])=>(0,B.jsxs)(`span`,{children:[e,`: `,(0,B.jsx)(`strong`,{children:t})]},e))}),(0,B.jsxs)(`dl`,{className:`benchmark-stat-list`,children:[e.design.metric_catalog.map(e=>(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`dt`,{children:[e.role,` · `,e.metric_name]}),(0,B.jsx)(`dd`,{children:Sw(t,e.metric_name)})]},e.metric_name)),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Runs terminal / observed`}),(0,B.jsxs)(`dd`,{children:[t.terminal_run_count,`/`,t.run_count]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Median duration`}),(0,B.jsx)(`dd`,{children:yw(t.effort.duration_ms?.median)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Protocols`}),(0,B.jsx)(`dd`,{children:bw(t.protocol_counts)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Runner revisions`}),(0,B.jsx)(`dd`,{children:bw(t.runner_revision_counts)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Orchestrator runtimes`}),(0,B.jsxs)(`dd`,{children:[Object.keys(t.orchestrator_runtime_counts).length||0,` distinct`]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Failure classes`}),(0,B.jsx)(`dd`,{children:bw(t.failure_class_counts)})]})]})]},t.arm_id))})}function Dw({packet:e,primaryMetric:t,onOpenRun:n}){return(0,B.jsx)(`div`,{className:`benchmark-table-shell benchmark-wide-table`,children:(0,B.jsxs)(`table`,{children:[(0,B.jsx)(`thead`,{children:(0,B.jsxs)(`tr`,{children:[(0,B.jsx)(`th`,{children:`Case`}),(0,B.jsx)(`th`,{children:`Design status`}),(0,B.jsx)(`th`,{children:`Largest eligible delta`}),e.arms.map(e=>(0,B.jsx)(`th`,{children:e.arm_id},e.arm_id))]})}),(0,B.jsx)(`tbody`,{children:e.cases.map(r=>{let i=Cw(r,t);return(0,B.jsxs)(`tr`,{children:[(0,B.jsx)(`td`,{children:(0,B.jsx)(`strong`,{children:r.case_id})}),(0,B.jsx)(`td`,{children:(0,B.jsx)(ww,{tone:r.complete_declared_design?`success`:`warning`,children:r.complete_declared_design?`Complete`:`Provisional`})}),(0,B.jsx)(`td`,{className:i?.direction===`improved`?`benchmark-positive`:i?.direction===`regressed`?`benchmark-negative`:void 0,children:i?.text??`—`}),r.arms.map(r=>(0,B.jsx)(`td`,{children:r.selected_run_id&&r.score_countable?(0,B.jsxs)(`button`,{className:`benchmark-cell-link`,onClick:()=>n(r.selected_run_id),type:`button`,children:[(0,B.jsxs)(`span`,{children:[t,`: `,xw(r.metrics[t])]}),e.design.metric_catalog.filter(e=>e.metric_name!==t).map(e=>(0,B.jsxs)(`small`,{className:`benchmark-cell-metric`,children:[e.metric_name,`: `,xw(r.metrics[e.metric_name])]},e.metric_name)),(0,B.jsxs)(`small`,{children:[`Countable · `,yw(r.effort.duration_ms),` `,(0,B.jsx)(Zp,{"aria-hidden":`true`,size:12})]}),r.insight&&(0,B.jsxs)(`small`,{children:[r.insight.failure_class,` · `,r.insight.confidence]})]}):(0,B.jsx)(`span`,{className:`benchmark-muted`,children:`Not countable`})},r.arm_id))]},r.case_id)})})]})})}function Ow({run:e,packet:t}){return(0,B.jsxs)(`aside`,{"aria-label":`Run detail for ${e.run_id}`,className:`benchmark-run-detail`,children:[(0,B.jsxs)(`div`,{className:`benchmark-card-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`span`,{className:`benchmark-mono`,children:`RUN DETAIL`}),(0,B.jsx)(`h2`,{children:e.run_id})]}),(0,B.jsx)(ww,{tone:e.countability.score_countable?`success`:`warning`,children:e.countability.score_countable?`Score-countable`:`Diagnostic only`})]}),(0,B.jsxs)(`dl`,{className:`benchmark-stat-list benchmark-run-facts`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Case / arm`}),(0,B.jsxs)(`dd`,{children:[e.case_id,` · `,e.arm_id]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Lifecycle`}),(0,B.jsxs)(`dd`,{children:[e.status,` · `,e.observed_at]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Protocol`}),(0,B.jsx)(`dd`,{children:e.protocol_id})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Qualification`}),(0,B.jsxs)(`dd`,{children:[`Integrity `,e.countability.integrity_qualified?`qualified`:`not qualified`,` · result `,e.countability.official_result_present?`present`:`missing`]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Treatment fidelity`}),(0,B.jsx)(`dd`,{children:e.treatment_fidelity})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Effort`}),(0,B.jsxs)(`dd`,{children:[yw(e.effort.duration_ms),` · `,vw(e.effort.agent_steps),` steps · `,vw(e.effort.token_count),` tokens`]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Runner revision`}),(0,B.jsx)(`dd`,{children:e.runner_revision??`—`})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Upload provenance`}),(0,B.jsxs)(`dd`,{children:[e.upload_provenance.producer_id,` · `,e.upload_provenance.source_revision]})]})]}),(0,B.jsx)(`div`,{className:`benchmark-run-metrics`,children:t.design.metric_catalog.map(t=>(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`span`,{children:t.metric_name}),(0,B.jsx)(`strong`,{children:xw(e.metrics[t.metric_name])})]},t.metric_name))}),e.redacted_insight&&(0,B.jsxs)(`div`,{className:`benchmark-insight`,children:[(0,B.jsxs)(`span`,{className:`benchmark-mono`,children:[`REDACTED CASE INSIGHT · `,e.redacted_insight.confidence]}),(0,B.jsx)(`p`,{children:e.redacted_insight.causal_summary}),(0,B.jsxs)(`small`,{children:[`Implication: `,e.redacted_insight.implication]}),(0,B.jsx)(`br`,{}),(0,B.jsxs)(`small`,{children:[`Next probe: `,e.redacted_insight.next_probe]}),!!e.redacted_insight.evidence_refs?.length&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`br`,{}),(0,B.jsxs)(`small`,{children:[`Evidence: `,e.redacted_insight.evidence_refs.join(`, `)]})]})]})]})}function kw({packet:e,selectedRunId:t,onSelectRun:n}){let r=e.runs.find(e=>e.run_id===t)??e.runs[0];return(0,B.jsxs)(`div`,{className:`benchmark-runs-layout`,children:[(0,B.jsx)(`div`,{className:`benchmark-table-shell`,children:(0,B.jsxs)(`table`,{children:[(0,B.jsx)(`thead`,{children:(0,B.jsxs)(`tr`,{children:[(0,B.jsx)(`th`,{children:`Run`}),(0,B.jsx)(`th`,{children:`Case`}),(0,B.jsx)(`th`,{children:`Arm`}),(0,B.jsx)(`th`,{children:`Status`}),(0,B.jsx)(`th`,{children:`Countability`})]})}),(0,B.jsx)(`tbody`,{children:e.runs.map(e=>(0,B.jsxs)(`tr`,{"aria-selected":e.run_id===r?.run_id,children:[(0,B.jsx)(`td`,{children:(0,B.jsx)(`button`,{className:`benchmark-run-link`,onClick:()=>n(e.run_id),type:`button`,children:e.run_id})}),(0,B.jsx)(`td`,{children:e.case_id}),(0,B.jsx)(`td`,{children:e.arm_id}),(0,B.jsx)(`td`,{children:e.status}),(0,B.jsx)(`td`,{children:e.countability.score_countable?`Score-countable`:`Diagnostic only`})]},e.run_id))})]})}),r&&(0,B.jsx)(Ow,{packet:e,run:r})]})}function Aw(){let e=Gw.useSearch(),t=Gw.useNavigate(),[n,r]=(0,z.useState)(null),[i,a]=(0,z.useState)(null),[o,s]=(0,z.useState)(0),c=(0,z.useMemo)(()=>{let t=e.dashboardUrl||`/chat/benchmark-study.example.json`;try{return{url:hw(t,window.location.href),error:null}}catch(e){return{url:``,error:e instanceof Error?e.message:`Invalid dashboard source`}}},[e.dashboardUrl]);if((0,z.useEffect)(()=>{let e=!0;return r(null),a(null),c.error?(a(c.error),()=>{e=!1}):(fetch(c.url,{cache:`no-store`}).then(async e=>{if(!e.ok)throw Error(`HTTP ${e.status} while loading the dashboard packet`);return mw(await e.json())}).then(t=>{e&&r(t)}).catch(t=>{e&&a(t instanceof Error?t.message:`Unable to load dashboard packet`)}),()=>{e=!1})},[o,c]),(0,z.useEffect)(()=>{n&&(document.title=`${n.design.labels.title??n.study_id} · LoopX Benchmark`)},[n]),i)return(0,B.jsxs)(`main`,{className:`benchmark-page benchmark-loading`,children:[(0,B.jsx)(lm,{"aria-hidden":`true`}),(0,B.jsx)(`h1`,{children:`Dashboard packet unavailable`}),(0,B.jsx)(`p`,{children:i}),(0,B.jsxs)(`button`,{onClick:()=>s(e=>e+1),type:`button`,children:[(0,B.jsx)(Hm,{"aria-hidden":`true`,size:16}),` Retry readback`]})]});if(!n)return(0,B.jsxs)(`main`,{"aria-busy":`true`,className:`benchmark-page benchmark-loading`,children:[(0,B.jsx)(Jp,{"aria-hidden":`true`}),(0,B.jsx)(`h1`,{children:`Reading benchmark study`}),(0,B.jsx)(`p`,{children:`Validating the public-safe dashboard packet…`})]});let l=n.design.metric_catalog.find(e=>e.role===`primary`)?.metric_name??`primary`,u=(n,r=e.runId)=>t({search:e=>({...e,view:n,runId:r})}),d=new URL(c.url).pathname;return(0,B.jsxs)(`main`,{className:`benchmark-page`,children:[(0,B.jsxs)(`header`,{className:`benchmark-hero`,children:[(0,B.jsxs)(`div`,{className:`benchmark-hero-topline`,children:[(0,B.jsx)(`a`,{className:`benchmark-wordmark`,href:`/chat/`,children:`LoopX`}),(0,B.jsxs)(`div`,{className:`benchmark-readonly`,children:[(0,B.jsx)(Xm,{"aria-hidden":`true`,size:15}),` Derived read-only projection`]})]}),(0,B.jsxs)(`div`,{className:`benchmark-hero-grid`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`p`,{className:`benchmark-kicker`,children:[`BENCHMARK STUDY / `,n.benchmark_id]}),(0,B.jsxs)(`div`,{className:`benchmark-title-row`,children:[(0,B.jsx)(`h1`,{children:n.design.labels.title??n.study_id}),(0,B.jsx)(ww,{tone:n.status===`complete`?`success`:`warning`,children:n.status})]}),(0,B.jsx)(`p`,{className:`benchmark-lead`,children:`One declared study, explicit denominators, and the same countability rules from campaign summary to exact run.`})]}),(0,B.jsxs)(`dl`,{className:`benchmark-identity`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Study`}),(0,B.jsx)(`dd`,{children:n.study_id})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Protocol`}),(0,B.jsx)(`dd`,{children:n.design.protocol_id})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Case set`}),(0,B.jsx)(`dd`,{children:n.design.case_set.case_set_id})]})]})]}),(0,B.jsxs)(`div`,{className:`benchmark-kpi-grid`,children:[(0,B.jsxs)(`article`,{children:[(0,B.jsx)(mm,{"aria-hidden":`true`}),(0,B.jsx)(`span`,{children:`Score-countable cells`}),(0,B.jsxs)(`strong`,{children:[n.campaign.selected_score_countable_cell_count,(0,B.jsxs)(`small`,{children:[` / `,n.campaign.intended_cell_denominator]})]}),(0,B.jsxs)(`p`,{children:[_w(n.campaign.selected_score_countable_coverage_rate),` declared coverage`]})]}),(0,B.jsxs)(`article`,{children:[(0,B.jsx)(um,{"aria-hidden":`true`}),(0,B.jsx)(`span`,{children:`Complete designs`}),(0,B.jsxs)(`strong`,{children:[n.campaign.complete_declared_design_case_count,(0,B.jsxs)(`small`,{children:[` / `,n.campaign.intended_case_count]})]}),(0,B.jsx)(`p`,{children:`Cases with every declared arm`})]}),(0,B.jsxs)(`article`,{children:[(0,B.jsx)(Zp,{"aria-hidden":`true`}),(0,B.jsx)(`span`,{children:`Matched comparisons`}),(0,B.jsx)(`strong`,{children:n.campaign.matched_pair_countable_count}),(0,B.jsx)(`p`,{children:`Eligible pairs only`})]}),(0,B.jsxs)(`article`,{children:[(0,B.jsx)(Jp,{"aria-hidden":`true`}),(0,B.jsx)(`span`,{children:`In flight`}),(0,B.jsx)(`strong`,{children:n.campaign.in_flight_run_count}),(0,B.jsx)(`p`,{children:n.status===`provisional`?`Coverage remains provisional`:`Declared coverage complete`})]})]})]}),(0,B.jsxs)(`nav`,{"aria-label":`Benchmark dashboard views`,className:`benchmark-tabs`,children:[gw.map(t=>(0,B.jsx)(`button`,{"aria-current":e.view===t.id?`page`:void 0,onClick:()=>u(t.id),type:`button`,children:t.label},t.id)),(0,B.jsxs)(`button`,{className:`benchmark-refresh`,onClick:()=>s(e=>e+1),type:`button`,children:[(0,B.jsx)(Hm,{"aria-hidden":`true`,size:14}),` Refresh local readback`]})]}),(0,B.jsxs)(`div`,{className:`benchmark-content`,children:[e.view===`campaign`&&(0,B.jsx)(Tw,{packet:n,primaryMetric:l}),e.view===`arms`&&(0,B.jsx)(Ew,{packet:n}),e.view===`cases`&&(0,B.jsx)(Dw,{onOpenRun:e=>u(`runs`,e),packet:n,primaryMetric:l}),e.view===`runs`&&(0,B.jsx)(kw,{onSelectRun:e=>u(`runs`,e),packet:n,selectedRunId:e.runId})]}),(0,B.jsxs)(`footer`,{className:`benchmark-footer`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(Xm,{"aria-hidden":`true`,size:16}),(0,B.jsxs)(`span`,{children:[`Scores: `,n.authority.score_source]}),(0,B.jsx)(`span`,{children:`Dashboard cannot launch, grade, or mutate runs.`})]}),(0,B.jsxs)(`code`,{title:d,children:[`local`,d]})]})]})}var jw=J({goalId:W().optional().default(``),statusUrl:W().optional().default(``)}),Mw=J({goalId:W().optional().default(``),mode:Y([`showcase`,`developer`,`ops`]).optional().default(`showcase`),statusUrl:W().optional().default(``),todoLane:Y([`all`,`user`,`agent`]).optional().default(`all`),todoQuery:W().optional().default(``)}),Nw=Mw.omit({mode:!0}),Pw=J({dashboardUrl:W().optional().default(``),view:Y([`campaign`,`arms`,`cases`,`runs`]).optional().default(`campaign`),runId:W().optional().default(``)});function Fw(){let e=`https://huangruiteng.github.io/loopx/docs/showcases/index.en.html`;return(0,z.useEffect)(()=>{window.location.replace(e)},[]),(0,B.jsx)(`a`,{href:e,children:`Open LoopX cases / 浏览案例`})}function Iw({goalId:e,statusUrl:t}){let n=t?lh(t,window.location.href):null;return n?.error?(0,B.jsx)(`main`,{role:`alert`,children:n.error}):(0,B.jsx)(ii,{replace:!0,to:`/`,search:{goalId:e,statusUrl:t}})}function Lw(){let e=Vw.useSearch();return e.mode===`ops`?(0,B.jsx)(Iw,{...e}):e.mode===`developer`?(0,B.jsx)(ii,{replace:!0,to:`/developers/projections`}):(0,B.jsx)(Fw,{})}function Rw(){return(0,B.jsx)(Iw,{...Hw.useSearch()})}var zw=Ci({component:()=>(0,B.jsx)(Mi,{}),errorComponent:()=>(0,B.jsxs)(`main`,{role:`alert`,className:`p-8`,children:[(0,B.jsx)(`h1`,{children:`页面暂时无法显示 / Page unavailable`}),(0,B.jsx)(`p`,{children:`请重新加载页面;这不会执行任务。 / Reloading does not execute tasks.`}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>window.location.reload(),children:`重新加载 / Reload`})]})}),Bw=xi({getParentRoute:()=>zw,path:`/`,validateSearch:e=>jw.parse(e),component:UC}),Vw=xi({getParentRoute:()=>zw,path:`/frontstage`,validateSearch:e=>Mw.parse(e),component:Lw}),Hw=xi({getParentRoute:()=>zw,path:`/deprecated/frontstage/ops`,validateSearch:e=>Nw.parse(e),component:Rw}),Uw=xi({getParentRoute:()=>zw,path:`/frontstage/developer`,component:()=>(0,B.jsx)(ii,{replace:!0,to:`/developers/projections`})}),Ww=xi({getParentRoute:()=>zw,path:`/developers/projections`,component:rw}),Gw=xi({getParentRoute:()=>zw,path:`/benchmarks/study`,validateSearch:e=>Pw.parse(e),component:Aw}),Kw=zw.addChildren([Bw,Vw,Hw,Uw,Ww,Gw]);function qw(e){return!e||e===`/`||e===`./`?`/`:(e.startsWith(`/`)?e:`/${e}`).replace(/\/+$/,``)||`/`}var Jw=Li({routeTree:Kw,basepath:qw(`/chat/`),trailingSlash:`preserve`}),Yw=document.getElementById(`root`);if(!Yw)throw Error(`Root element not found`);var Xw=new R({defaultOptions:{queries:{refetchOnWindowFocus:!1,retry:1,staleTime:1e4}}});(0,Vi.createRoot)(Yw).render((0,B.jsx)(Pe,{client:Xw,children:(0,B.jsx)(qi,{children:(0,B.jsx)(Bi,{router:Jw})})})); \ No newline at end of file diff --git a/loopx/web/chat/index.html b/loopx/web/chat/index.html index 260456d6e..bd5279fc4 100644 --- a/loopx/web/chat/index.html +++ b/loopx/web/chat/index.html @@ -18,7 +18,7 @@ content="LoopX 个人 Agent 工作区:在同一个频道里查看、纠偏并推进 Goal。" /> LoopX 个人 Agent 工作区 - + From 0ac16776446e5e2579aa48750abe1a8eccfe61d2 Mon Sep 17 00:00:00 2001 From: huangruiteng <14976749+huangruiteng@users.noreply.github.com> Date: Thu, 17 Sep 2026 15:40:33 +0800 Subject: [PATCH 3/9] docs(steward): distinguish assignment from receiver adoption and execution Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com> --- .../rfcs/loopx-overall-roadmap-v0.md | 6 +++- .../rfcs/loopx-overall-roadmap-v0.zh-CN.md | 6 +++- .../typescript-control-plane-migration-v0.md | 2 +- ...script-control-plane-migration-v0.zh-CN.md | 2 +- .../skills/loopx-manager/SKILL.md | 30 +++++++++++-------- tests/test_manager_team_plan_guidance.py | 24 +++++++-------- 6 files changed, 41 insertions(+), 29 deletions(-) diff --git a/docs/architecture/rfcs/loopx-overall-roadmap-v0.md b/docs/architecture/rfcs/loopx-overall-roadmap-v0.md index 7e29b8ffa..84a928330 100644 --- a/docs/architecture/rfcs/loopx-overall-roadmap-v0.md +++ b/docs/architecture/rfcs/loopx-overall-roadmap-v0.md @@ -300,7 +300,11 @@ Progress means another independently reproducible user journey, not more fields These are synthetic-fixture results at the exact baseline, without live user content. F1–F4 exercise existing `ChatActionService.preview/apply` with isolated Goals. F4 injects failure immediately before the second Todo write; the other writes use the actual local Todo writer. F5–F7 are source/contract findings. -**Repair status (2026-09-17, baseline `6979d528b`).** The rows below stay as the record of what the audit found. R1 has since closed the priority and acceptance half of F1, all of F3, F2, and the reconciliation half of F4: a confirmed lane now keeps the priority it declared in its own Todo label, the settlement receipt retains each lane's acceptance beside the Todo identity it became, a partial application reports `team_plan_partially_applied` with a gap count instead of a full success, a confirmation that staffed no lane is recorded as the typed failure `team_plan_no_staffable_lane` rather than as an applied plan with an empty Todo id, a team-plan preview now binds this Goal's active-state intent and the canonical basis its lanes would advance, and a lane write that fails after earlier lanes were committed is recorded as the typed failure `team_plan_lane_write_failed` whose details name the lanes that exist and the lane that failed, so the retry reconciles against real identities instead of duplicating them. The remainder is open and owned by canonical Todos: the plan-level quota/stop classification, F4's automatic recovery and execution barrier (the re-entrant apply that finishes a partial plan without a fresh owner confirmation), and rendering a partial application as partial on the confirmation card. +**R1 transaction checkpoint.** Team-plan admission and whole-batch planning now live in `work_items/team_plan.ts`. Confirmation assigns all admitted lanes in one write with a durable operation receipt; identity is proposal + lane, never Todo text. File/SQLite authority uses the existing CAS and receipt owner; legacy Markdown writes the records and immutable receipt together under its existing fence and lock. Exact replay reads historical results even after a receiver changes, completes or deletes work. A precommit failure creates no lane prefix, and pending canonical display delivery requires recovery before Chat reports verified success. The card names partial assignments and gaps; quota/stop remain advisory and an explicit enforcement claim is rejected. + +This closes the local assignment/retry portion of F4, not R1's collaboration acceptance. Registered receivers are assigned without being impersonated as authors; agent-originated settlement cannot assign another peer without owner confirmation. Assignment does not attest receiver adoption, a lease, execution, dependency consumption or independent acceptance. Do not add a second confirmation to ordinary already-authorized work. Gap resolution requires new explicit intent; replay must not silently extend the confirmed subset. The fingerprint binds current local state and canonical revision, not a full shared Goal-intent transaction. R2/R3/R4 still own executor qualification, receiver adoption/result return and shared intent/authorization; the cross-host Turn lease is not a plan barrier. + +Validation: production Chat apply and real file projection recovery; packaged confirmation card; typed batch cases on FileAuthorityStore and an isolated PostgreSQL server, including equal-text identities, concurrent commit, invalid final lane, lost response and receiver changes. These fixtures do not qualify Lark transport or cross-host worker execution. | ID / Priority | Trigger, result and consequence | Location and successor | | --- | --- | --- | diff --git a/docs/architecture/rfcs/loopx-overall-roadmap-v0.zh-CN.md b/docs/architecture/rfcs/loopx-overall-roadmap-v0.zh-CN.md index f498fd668..8fb4b8579 100644 --- a/docs/architecture/rfcs/loopx-overall-roadmap-v0.zh-CN.md +++ b/docs/architecture/rfcs/loopx-overall-roadmap-v0.zh-CN.md @@ -300,7 +300,11 @@ R2 的一条依赖必须通过真实 LoopX Agent 间的请求/产物交接完成 以下是精确基线上的合成 fixture 结果,不含线上用户内容。F1–F4 用现有 `ChatActionService.preview/apply` 及隔离 Goal 复核;F4 只在第二次 Todo 写入前注入失败,其余走实际本地 Todo writer。F5–F7 是源码/合同审计。 -**修复状态(2026-09-17,基线 `6979d528b`)。** 下表保留审计当时的事实。R1 已收口 F1 的优先级与验收部分、全部 F3、F2,以及 F4 的对账部分:确认后的 lane 现在把声明的优先级保留在自己的 Todo 标签里;结算 receipt 会把每条 lane 的 acceptance 保留在它变成的 Todo 身份旁;部分落地返回 `team_plan_partially_applied` 并带缺口数量,而不是完整成功;没有任何 lane 可组建的确认记为 typed failure `team_plan_no_staffable_lane`,不再是一份空 Todo id 的已应用计划;团队计划预览现在绑定该 Goal 的 active-state 意图与这些 lane 将要推进的 canonical basis;某条 lane 在更早的 lane 已提交后写入失败时,记为 typed failure `team_plan_lane_write_failed`,其 details 同时给出"已存在哪些 lane Todo"和"哪条 lane 失败",因此重试是对着真实身份做对账而不是再创建一份。剩余部分由 canonical Todo 承接:计划级 quota/stop 分类、F4 的自动恢复与执行屏障(无需业主重新确认即可补完部分计划的可重入 apply),以及确认卡片把部分落地渲染为部分。 +**R1 事务检查点。** 团队计划准入与整批规划现在归 `work_items/team_plan.ts`。确认后,全部已准入 lane 与持久操作回执一次提交;身份由 proposal + lane 决定,不再由 Todo 文本决定。File/SQLite 权威复用现有 CAS 与回执 owner;legacy Markdown 在原有 fence 和锁内同时写入任务和不可变回执。同一操作重试只读历史结果,接收者后来修改、完成或删除任务也不会触发重建。提交前失败不会留下部分 lane;canonical 展示投递仍 pending 时,Chat 必须恢复后才能报告验证成功。卡片列出部分分配及缺口;quota/stop 是参考,显式强制声明会被拒绝。 + +这完成 F4 的本地分配/重试部分,不等于 R1 协同验收。注册接收者可以被分配任务,但不会被冒充为作者;Agent 发起的结算未经业主确认不能给另一 peer 分配任务。分配不证明接收者采纳、lease、执行、依赖消费或独立验收。普通已授权工作不应普遍增加第二次确认。解决缺口需要明确的新意图;重放不能静默扩展原确认子集。fingerprint 绑定当前本地状态与 canonical revision,不是完整共享 Goal 意图事务。R2/R3/R4 仍负责执行器资格、接收者采纳/结果返回及共享意图/授权;跨主机 Turn lease 不是计划屏障。 + +验证覆盖真实 Chat apply、文件权威投递恢复、打包确认卡片,以及 FileAuthorityStore 和隔离 PostgreSQL 上的同文不同身份、并发提交、末条 lane 非法、响应丢失和接收者变更。这些 fixture 不验收 Lark 传输或跨主机 worker 执行。 | ID / 优先级 | 触发、结果与影响 | 定位与修复卡 | | --- | --- | --- | diff --git a/docs/architecture/rfcs/typescript-control-plane-migration-v0.md b/docs/architecture/rfcs/typescript-control-plane-migration-v0.md index 89b30e479..a89087019 100644 --- a/docs/architecture/rfcs/typescript-control-plane-migration-v0.md +++ b/docs/architecture/rfcs/typescript-control-plane-migration-v0.md @@ -16,7 +16,7 @@ ## Cross-RFC execution priority (2026-09-16) -[Roadmap](loopx-overall-roadmap-v0.md) R1–R5 are current product consumers of T0–T4, not another migration ladder. Close one hot-path team confirmation/materialization/recovery transaction first: `governed_transition_proposal.py` still validates plans in Python and calls Todo per lane. Calling a typed Todo owner does not migrate the entire team transaction. +[Roadmap](loopx-overall-roadmap-v0.md) R1–R5 are current product consumers of T0–T4, not another migration ladder. The team confirmation path now uses `work_items/team_plan.ts` for preview, batch planning and immutable operation identity, plus the existing AuthorityStore receipt/CAS boundary. Python retains public-safety and legacy Markdown IO adaptation; the per-lane writer loop is retired. The R1 checkpoint records the delivered assignment/retry delta and remaining receiver/execution boundaries. Retain T0 caller/parity inventory, T1/T2 transaction/effect convergence, T3 complete-source consumption and T4 deletion conditions. #4472 is merged; inspect `todos/public_update.ts` and actual callers before rebuilding Todo update. Converge new team domain rules in existing typed work-items/collaboration ownership; Python retains input/IO adaptation. R1 independent counterexamples and real-path verification gate delivery. More leaf RPCs, enums or files are not migration payoff. Shared-authority retains D1–D3. diff --git a/docs/architecture/rfcs/typescript-control-plane-migration-v0.zh-CN.md b/docs/architecture/rfcs/typescript-control-plane-migration-v0.zh-CN.md index 7f67f49f6..0be3a3631 100644 --- a/docs/architecture/rfcs/typescript-control-plane-migration-v0.zh-CN.md +++ b/docs/architecture/rfcs/typescript-control-plane-migration-v0.zh-CN.md @@ -15,7 +15,7 @@ ## 跨 RFC 的执行优先级(2026-09-16) -[统一路线](loopx-overall-roadmap-v0.zh-CN.md) 的 R1–R5 是 T0–T4 的当前产品消费者,不另设一套迁移阶段。先闭合团队计划确认/物化/恢复热路径的一笔事务:`governed_transition_proposal.py` 仍在 Python 校验计划并逐 lane 调 Todo,不能把调用了 typed Todo owner 等同于整笔团队事务已迁到 TS。 +[统一路线](loopx-overall-roadmap-v0.zh-CN.md) 的 R1–R5 是 T0–T4 的当前产品消费者,不另设一套迁移阶段。团队确认路径现在由 `work_items/team_plan.ts` 负责预览、整批规划及不可变操作身份,复用现有 AuthorityStore 回执/CAS 边界。Python 保留公开安全校验与 legacy Markdown IO adapter,逐 lane 写入循环已移除。R1 检查点区分已交付的分配/重试结果与尚未验收的接收者/执行边界。 保留 T0 caller/parity 盘点、T1/T2 事务与 effect 收敛、T3 完整来源消费、T4 删除条件。#4472 已合入,执行前核验 `todos/public_update.ts` 和实际 caller,不能重建 Todo update。新增团队领域规则应在现有 typed work-items/collaboration 归属中收敛;Python 保留输入/IO adapter。R1 的独立反例与 real-path 验证是交付条件;不以更多 leaf RPC、enum 或文件数量记迁移收益。D1–D3 仍由 shared-authority RFC 拥有。 diff --git a/loopx/capabilities/manager_context/skills/loopx-manager/SKILL.md b/loopx/capabilities/manager_context/skills/loopx-manager/SKILL.md index 3afb702ee..f9014cac5 100644 --- a/loopx/capabilities/manager_context/skills/loopx-manager/SKILL.md +++ b/loopx/capabilities/manager_context/skills/loopx-manager/SKILL.md @@ -117,18 +117,24 @@ cannot staff as a gap, with the missing registration or grant, or with the shipped action kind that covers the work it asked for, instead of inventing a lane, an Agent, a capability, or an action kind. -A team preview is a proposal, never an effect. Do not create Todos, register -Agents, set quota, or start work until the owner confirms that exact preview; -the confirmation arrives as one typed team-plan action from the product -surface, and you never create lanes yourself. State what will be created and -which canonical owner creates it — Agent -registration, Todo creation, quota or goal policy — so the owner sees where -each effect lands. After confirmation, apply through those owners only, reuse -the Agent and Todo identities the preview named, and report one readback of -what now exists. Never say a lane exists, or that a team is running, before the -apply receipt returns; if the confirmation was refused, or the plan went stale -because the Agents it named changed, say exactly that instead. Never widen the -confirmed scope while applying it, and never charge quota for the preview itself. +A team preview proposes a new assignment; it is not execution. This optional +confirmation path is for that assignment decision, not a universal second +approval for work the owner has already authorized. Do not create the proposed +lanes before the exact preview is confirmed. The typed work-items transaction +creates its admitted tasks together through the existing Todo authority; +registration, quota and Goal policy remain separate owners. + +Read the apply receipt before reporting assignments. A claim reserves work but +does not attest receiver adoption, a lease, execution or independent acceptance. +Never impersonate a receiving Agent as the author. An Agent-originated governed +settlement may assign its own lanes; assigning another peer requires the owner +confirmation entrypoint. Retry the same proposal to recover an uncertain commit, +including after intervening work changes. Do not regenerate every lane or fill a +previously unstaffed gap automatically: new assignments need explicit new intent. +Plan-level quota and stop fields are advisory; this operation installs neither +policy. Do not charge quota for the preview itself. If an `enforcement` object is supplied, only `advisory` values for +`quota_envelope` and `stop_condition` are supported. Lane acceptance is a +retained reference, not a completed acceptance check. The preview is machine-readable, so the product surface can offer it as one typed action. Your prose answer stays the answer; the same team plan also rides diff --git a/tests/test_manager_team_plan_guidance.py b/tests/test_manager_team_plan_guidance.py index b7c4ab87b..e2b197777 100644 --- a/tests/test_manager_team_plan_guidance.py +++ b/tests/test_manager_team_plan_guidance.py @@ -20,19 +20,17 @@ def test_manager_guidance_orders_one_team_preview_before_any_effect() -> None: positions = [text.index(marker) for marker in ordered] assert positions == sorted(positions), ordered - # The preview gates every effect, and the effects keep their canonical owners. - assert "proposal, never an effect" in text - assert "until the owner confirms that exact preview" in text - # A plan is admitted only for the Goal it names, and the confirmation is the - # product surface's typed action rather than something the steward performs. - assert "Name the exact Goal the plan\nstaffs" in text - assert "dropped instead of shown" in text - assert "typed team-plan action from the product\nsurface" in text - # A lane may not be claimed to exist before its apply receipt returns. - assert "before the\napply receipt returns" in text - assert "the plan went stale" in text - assert "Agent\nregistration, Todo creation, quota or goal policy" in text - assert "charge quota for the preview itself" in text + prose = " ".join(text.split()) + assert "not a universal second approval" in prose + assert "Do not create the proposed lanes before the exact preview is confirmed" in prose + assert "Read the apply receipt before reporting assignments" in prose + assert "does not attest receiver adoption" in prose + assert "Never impersonate a receiving Agent as the author" in prose + assert "Retry the same proposal" in prose + assert "Do not regenerate every lane" in prose + assert "registration, quota and Goal policy remain separate owners" in prose + assert "Name the exact Goal the plan staffs" in prose + assert "dropped instead of shown" in prose # An unstaffable lane is named as a gap rather than invented. assert "as a gap, with the missing registration or grant" in text # Guidance is read as prose, so its phrases are compared as prose: a line From 4f1772727829fdaf115e1f43cd8822ff984d3c51 Mon Sep 17 00:00:00 2001 From: huangruiteng <14976749+huangruiteng@users.noreply.github.com> Date: Thu, 17 Sep 2026 15:43:43 +0800 Subject: [PATCH 4/9] test(dashboard): preserve confirmed plan context and capture assignment readback Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com> --- .../team-plan-assignment-after.png | Bin 0 -> 273780 bytes .../team-plan-assignment-before.png | Bin 0 -> 252327 bytes .../personal-workspace-browser/fixture.mjs | 2 +- .../personal-workspace-browser/team-plan.mjs | 1 + 4 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 docs/assets/personal-workspace/team-plan-assignment-after.png create mode 100644 docs/assets/personal-workspace/team-plan-assignment-before.png diff --git a/docs/assets/personal-workspace/team-plan-assignment-after.png b/docs/assets/personal-workspace/team-plan-assignment-after.png new file mode 100644 index 0000000000000000000000000000000000000000..cdd4979363f1762994d64655252bf38ff0c2e455 GIT binary patch literal 273780 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

eL#7cUs- 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 z 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±xPjkNfL+1V)Wo3c{!1CJE=LWibHI3Zw`e* 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 Date: Thu, 17 Sep 2026 15:54:56 +0800 Subject: [PATCH 5/9] fix(dashboard): focus assignment results and retry the original operation Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com> --- .../smoke/team-plan-proposal-smoke.ts | 23 +++---- .../personal-workspace/context-drawer.tsx | 21 ++++--- .../src/features/personal-workspace/i18n.tsx | 58 ++++++++++++------ .../personal-workspace-model.ts | 3 +- .../personal-workspace-page.tsx | 19 ++++-- .../personal-workspace/personal-workspace.css | 10 +++ .../personal-workspace/team-plan-preview.ts | 57 +++++++++-------- .../personal-workspace/team-plan-result.tsx | 25 ++++++++ .../team-plan-assignment-after.png | Bin 273780 -> 148317 bytes .../personal-workspace-browser/fixture.mjs | 10 ++- .../personal-workspace-browser/team-plan.mjs | 55 ++++++++++------- loopx/web/chat/asset-retention.json | 4 +- .../{index-CCaRy5Qh.js => index-6J6ypwcs.js} | 24 ++++---- loopx/web/chat/assets/index-Cc8RYr9k.css | 1 + loopx/web/chat/index.html | 4 +- 15 files changed, 194 insertions(+), 120 deletions(-) create mode 100644 apps/presentation/dashboard/src/features/personal-workspace/team-plan-result.tsx rename loopx/web/chat/assets/{index-CCaRy5Qh.js => index-6J6ypwcs.js} (69%) create mode 100644 loopx/web/chat/assets/index-Cc8RYr9k.css diff --git a/apps/presentation/dashboard/smoke/team-plan-proposal-smoke.ts b/apps/presentation/dashboard/smoke/team-plan-proposal-smoke.ts index cf713489d..1be98ea2d 100644 --- a/apps/presentation/dashboard/smoke/team-plan-proposal-smoke.ts +++ b/apps/presentation/dashboard/smoke/team-plan-proposal-smoke.ts @@ -13,7 +13,7 @@ import { typedActionKindSchema, typedActionProposalSchema, } from "../src/data/chat.js"; -import { teamPlanFields, teamPlanGapLaneLine, teamPlanGoalId, teamPlanLaneCount, teamPlanReceiptGapLanes } from "../src/features/personal-workspace/team-plan-preview.js"; +import { teamPlanAssignments, teamPlanFields, teamPlanGapReason, teamPlanGoalId, teamPlanLaneCount, teamPlanReceiptGapLanes } from "../src/features/personal-workspace/team-plan-preview.js"; const GOAL_ID = "team-plan-smoke-goal"; @@ -157,11 +157,11 @@ check( "a ready lane shows its first bounded Todo, its priority and its acceptance signal", ); check( - gapLane?.value.startsWith("unstaffed · agent_not_registered") === true + gapLane?.value.startsWith("unstaffed · the Agent is not registered for this Goal") === true && gapLane?.value.includes("Independently review the intake") === true, "a gap lane says it is unstaffed, names the reason and keeps the work it did not staff", ); -check(byKey.get("lane_gaps")?.value === "lane_review: agent_not_registered", "the gap summary joins lane and reason"); +check(!byKey.has("lane_gaps"), "the preview does not repeat a gap already shown with its task"); check(byKey.get("quota_envelope")?.value === "slots: 4 · window: 1d · planning context", "quota is labeled as planning context"); check( byKey.get("stop_condition")?.value === "every lane reports a typed outcome or a stated gap · planning context", @@ -182,18 +182,13 @@ const partialReceipt = { { lane_id: "lane_review", agent_id: "agent-reviewer", reason_code: "agent_not_registered" }, ], }; -const appliedGaps = teamPlanReceiptGapLanes(partialReceipt); +const appliedGaps = teamPlanReceiptGapLanes(partialReceipt, { plan }); +check(appliedGaps[0].task === "Independently review the intake", "pending work keeps the admitted task label"); +const assignments = teamPlanAssignments({ lanes: [{ lane_id: "lane_backend", agent_id: "receipt-owner" }] }, { plan }); +check(assignments.length === 1 && assignments[0].agentId === "receipt-owner" && assignments[0].task === "Implement the bounded intake", "only receipted tasks are assigned; the receipt owns the assignee"); +check(teamPlanAssignments(null, { plan }).length === 0, "the preview alone never establishes assignment"); check(appliedGaps.length === 1 && appliedGaps[0].laneId === "lane_review", "the apply receipt names the lane that stayed unstaffed"); -check( - teamPlanGapLaneLine(appliedGaps[0], translate as never) - === "lane_review (agent-reviewer) stayed unstaffed: the Agent is not registered for this Goal", - "the applied card says which lane is missing and what would let it run", -); -check( - teamPlanGapLaneLine({ laneId: "lane_x", agentId: "", reasonCode: "future_reason" }, translate as never) - .endsWith("future_reason"), - "an unrecognized host reason is shown verbatim instead of being invented", -); +check(teamPlanGapReason("future_reason", translate as never) === "future_reason", "unknown host reasons stay explicit"); check( teamPlanReceiptGapLanes({ outcome: "team_plan_applied" }).length === 0, "a plan that staffed every lane reports no gap lanes", diff --git a/apps/presentation/dashboard/src/features/personal-workspace/context-drawer.tsx b/apps/presentation/dashboard/src/features/personal-workspace/context-drawer.tsx index 1c5c71729..c8056458f 100644 --- a/apps/presentation/dashboard/src/features/personal-workspace/context-drawer.tsx +++ b/apps/presentation/dashboard/src/features/personal-workspace/context-drawer.tsx @@ -40,7 +40,7 @@ import type { import type { LarkGoalConnection } from "../../data/chat"; import { localizedAttentionAge, localizedGoalState, localizedSessionStatus, useWorkspaceI18n } from "./i18n"; import { formatCostUsd, formatDurationMs, formatTokenCount, formatUsageValue } from "./personal-workspace-model"; -import { teamPlanAppliedLine, teamPlanGapLaneLine } from "./team-plan-preview"; +import { TeamPlanResult } from "./team-plan-result"; import { todoResumeWhenFromMessage } from "./personal-workspace-router"; function subagentModelRequest(include: boolean, model: string, effort: string) { @@ -266,6 +266,7 @@ export function ContextDrawer({ agents, attentionHistory = [], onSelectAttention : selection.kind === "todo" ? t("drawer.taskDetails") : selection.kind === "run" ? t("drawer.runDetails") : selection.kind === "output" ? t("drawer.titleOutput") + : selection.kind === "proposal" && selection.item.actionKind === "team.plan" && selection.item.status === "applied" ? t("proposal.teamPlan.resultTitle") : selection.kind === "proposal" ? t(selection.item.status === "applied" ? "drawer.titleProposalApplied" : "drawer.titleProposalConfirm") : selection.kind === "schedule" ? (selection.item.scheduleKind === "heartbeat" ? "Heartbeat" : t("drawer.titleSchedule")) : t("drawer.goalDetails"); @@ -277,6 +278,7 @@ export function ContextDrawer({ agents, attentionHistory = [], onSelectAttention : selection.kind === "output" ? selection.item.goalTitle ?? t("drawer.currentGoal") : selection.kind === "goal" ? selection.item.title : selection.kind === "schedule" ? t("drawer.goalAutoRun") + : selection.kind === "proposal" && selection.item.status === "applied" && selection.item.actionKind === "team.plan" ? selection.item.goalId ?? t("drawer.currentGoal") : selection.item.goalId ? t("drawer.goalChanges") : t("drawer.managerChanges"); const selectedGoalRun = selection.kind === "goal" ? runs.find((run) => run.goalId === selection.item.goalId && Boolean(run.sessionId)) @@ -960,23 +962,22 @@ export function ContextDrawer({ agents, attentionHistory = [], onSelectAttention {selection.kind === "proposal" ? ( <> -

+ {selection.item.actionKind === "team.plan" && selection.item.status === "applied" ? :
{selection.item.actionKind} · {selection.item.status}

{selection.item.title}

{selection.item.impact}

- {selection.item.reviewPlan ?

{selection.item.actionKind === "operation.execute" && selection.item.status === "gated" + {selection.item.reviewPlan && selection.item.actionKind !== "team.plan" ?

{selection.item.actionKind === "operation.execute" && selection.item.status === "gated" ? t("actionReview.operation_group_confirmation") : selection.item.actionKind === "operation.execute" && selection.item.reviewPlan.reason === "readback_unverified" ? t("actionReview.operation_result_delivery_pending") : t(`actionReview.${selection.item.reviewPlan.reason}`)}

: null} - {selection.item.status === "ready" ?

{t("drawer.proposalExplainer")}

: null} + {selection.item.status === "ready" && selection.item.actionKind !== "team.plan" ?

{t("drawer.proposalExplainer")}

: null}
{selection.item.fields.map((field) =>
{field.label}
{field.value}
)}
-
- {selection.item.status === "applied" ?

{selection.item.actionKind === "operation.execute" ? selection.item.primaryLabel : selection.item.actionKind === "team.plan" ? teamPlanAppliedLine(selection.item.teamPlanOutcome ?? null, t) : t("drawer.proposalApplied")}

: null} - {selection.item.status === "applied" && selection.item.actionKind === "team.plan" && (selection.item.teamPlanGapLanes?.length ?? 0) > 0 ?
{t("drawer.proposalAppliedUnstaffed", { count: selection.item.teamPlanGapLanes!.length })}
    {selection.item.teamPlanGapLanes!.map((gap) =>
  • {teamPlanGapLaneLine(gap, t)}
  • )}
: null} - {selection.item.status === "applied" && selection.item.actionKind !== "operation.execute" && selection.item.goalId ? : null} +
} + {selection.item.status === "applied" && selection.item.actionKind !== "team.plan" ?

{selection.item.actionKind === "operation.execute" ? selection.item.primaryLabel : t("drawer.proposalApplied")}

: null} + {selection.item.status === "applied" && selection.item.actionKind !== "operation.execute" && selection.item.goalId ? : null} {selection.item.status === "stale" ?

{t("drawer.proposalStale")}

: null} - {selection.item.status === "error" ?
{selection.item.reviewPlan?.reason === "readback_unverified" ? t("actionReview.readback_unverified") : t("drawer.proposalApplyFailed")}{selection.item.errorMessage ? {selection.item.errorMessage} : null}{t("drawer.proposalApplyFailedHint")}
: null} + {selection.item.status === "error" ?
{selection.item.reviewPlan?.reason === "readback_unverified" ? t("actionReview.readback_unverified") : t("drawer.proposalApplyFailed")}{selection.item.errorMessage ? {selection.item.errorMessage} : null}{t(selection.item.actionKind === "team.plan" ? "proposal.teamPlan.retryHint" : "drawer.proposalApplyFailedHint")}
: null} {selection.item.status === "rejected" ?

{t("drawer.proposalRejected")}

: null} {selection.item.status === "deferred" ?

{t("drawer.proposalDeferred")}

: null} {selection.item.status === "gated" ?
{selection.item.actionKind === "operation.execute" ? selection.item.primaryLabel : t("drawer.gateRequiresHost")}{selection.item.actionKind === "operation.execute" ? selection.item.impact : t("drawer.gateRequiresHostDescription")}{selection.item.gate?.nextAction ? {selection.item.gate.nextAction} : null}
: null} @@ -994,7 +995,7 @@ export function ContextDrawer({ agents, attentionHistory = [], onSelectAttention ); })() : null} {!readOnly && selection.item.workspaceCandidates?.length ?
{selection.item.workspaceCandidates.map((candidate) => )}
: null} - {!readOnly && selection.item.actionKind !== "operation.execute" && selection.item.status === "error" ? : !readOnly && selection.item.actionKind !== "operation.execute" && selection.item.status !== "gated" ? : null} + {!readOnly && selection.item.actionKind !== "operation.execute" && selection.item.status === "error" ? : !readOnly && selection.item.actionKind !== "operation.execute" && selection.item.status !== "gated" && !(selection.item.actionKind === "team.plan" && selection.item.status === "applied") ? : null} {!readOnly && selection.item.actionKind !== "operation.execute" && (["stale", "gated", "rejected"].includes(selection.item.status) || (selection.item.status === "ready" && selection.item.reviewPlan?.canApply === false)) ? : null} {!readOnly && selection.item.actionKind !== "operation.execute" && ["ready", "gated"].includes(selection.item.status) ?
: null} {!["applied", "applying"].includes(selection.item.status) ? : null} diff --git a/apps/presentation/dashboard/src/features/personal-workspace/i18n.tsx b/apps/presentation/dashboard/src/features/personal-workspace/i18n.tsx index 0a3270b7a..2ab612cfc 100644 --- a/apps/presentation/dashboard/src/features/personal-workspace/i18n.tsx +++ b/apps/presentation/dashboard/src/features/personal-workspace/i18n.tsx @@ -237,7 +237,6 @@ const en = { "drawer.priority": "Priority", "drawer.progress": "Progress", "drawer.proposalApplied": "Applied. LoopX state will refresh.", - "drawer.proposalAppliedUnstaffed": "Applied, with {count} lane(s) still unstaffed:", "drawer.proposalApplyFailed": "Apply failed. No changes were written.", "drawer.proposalApplyFailedHint": "Refresh the Goal state and regenerate. If it still fails, keep this page open and inspect advanced diagnostics.", "drawer.proposalClose": "Close", @@ -694,19 +693,29 @@ const en = { "proposal.summary.lifecycleResume": "Resume Goal: {title}", "proposal.summary.lifecycleStop": "Stop Goal: {title}", "proposal.summary.monitor": "Create a scheduled check for the current Goal: {target}", - "proposal.summary.teamPlan": "Staff a {count}-lane team for {goal}", - "proposal.impact.teamPlan": "Confirming creates each ready lane's first bounded Todo through the canonical owner; a lane with a staffing gap creates nothing, no lane exists before the apply receipt returns, and a Goal or Agent change between preview and apply makes this proposal stale instead of applying drifted staffing.", - "proposal.primary.teamPlan": "Confirm and staff the lanes", + "proposal.teamPlan.gapReason.capabilityNotGranted": "Required capability not granted", + "proposal.teamPlan.gapReason.audienceNotAuthorized": "Required access not authorized", + "proposal.teamPlan.pending": "Pending", + "proposal.teamPlan.assignedHint": "Assignment recorded. See the Goal for execution progress.", + "proposal.teamPlan.recoveredHint": "No new tasks created. See the Goal for current progress.", + "proposal.teamPlan.originalPlan": "View original plan", + "proposal.teamPlan.viewResult": "View result", + "proposal.teamPlan.openGoal": "Open Goal", + "proposal.teamPlan.resultTitle": "Assignment result", + "proposal.teamPlan.retry": "Retry assignment", + "proposal.teamPlan.retryHint": "Retry this assignment to recover its result without duplicating tasks.", + "proposal.summary.teamPlan": "Assign {count} tasks for {goal}", + "proposal.impact.teamPlan": "Confirm to assign the ready tasks. Unavailable assignments stay pending.", + "proposal.primary.teamPlan": "Confirm assignment", "proposal.field.laneGaps": "Unstaffed lanes", "proposal.field.quotaEnvelope": "Quota envelope", "proposal.teamPlan.acceptanceShort": "acceptance reference", "proposal.teamPlan.advisory": "planning context; not enforced by this confirmation", - "proposal.teamPlan.appliedPartially": "Assigned {created} lane task(s); {gaps} lane(s) remain unstaffed. Receiver adoption and execution are still unverified.", - "proposal.teamPlan.appliedAlreadyPresent": "Original assignment recovered; no new tasks created. This does not attest current execution.", - "proposal.teamPlan.applied": "Lane tasks assigned. Receiver adoption and execution are still unverified.", + "proposal.teamPlan.appliedPartially": "{created} assigned · {gaps} pending", + "proposal.teamPlan.appliedAlreadyPresent": "Original assignment recovered", + "proposal.teamPlan.applied": "{count} tasks assigned", "proposal.teamPlan.gapLane": "unstaffed", "proposal.teamPlan.laneUnstaffed": "staffing gap, no first Todo", - "proposal.teamPlan.appliedGapLane": "{lane} ({agent}) stayed unstaffed: {reason}", "proposal.teamPlan.gapReason.agentNotRegistered": "the Agent is not registered for this Goal", "proposal.teamPlan.gapReason.actionKindNotSupported": "this host does not ship that action kind", "proposal.workspace.current": "Current local workspace (no Repository bound)", @@ -1282,7 +1291,6 @@ const zhCN: Record = { "drawer.priority": "优先级", "drawer.progress": "进度", "drawer.proposalApplied": "已应用,LoopX 状态将刷新。", - "drawer.proposalAppliedUnstaffed": "已应用,但有 {count} 条 lane 仍未组建:", "drawer.proposalApplyFailed": "应用失败,没有写入任何变更。", "drawer.proposalApplyFailedHint": "请刷新 Goal 状态后重新生成;若仍失败,可保留此页并查看高级诊断。", "drawer.proposalClose": "关闭", @@ -1739,21 +1747,31 @@ const zhCN: Record = { "proposal.summary.lifecycleResume": "恢复 Goal:{title}", "proposal.summary.lifecycleStop": "停止 Goal:{title}", "proposal.summary.monitor": "为当前 Goal 创建定时检查:{target}", - "proposal.summary.teamPlan": "为 {goal} 配出 {count} 条 lane 的团队", - "proposal.impact.teamPlan": "确认后会通过既有 owner 为每条就绪 lane 创建它的首个有界 Todo;声明了编制缺口的 lane 不创建任何东西;apply 回执返回前不存在任何 lane;预览与 apply 之间 Goal 或 Agent 发生变化会让这条提案变为 stale,而不是按漂移后的编制执行。", - "proposal.primary.teamPlan": "确认并组建各 lane", + "proposal.teamPlan.gapReason.capabilityNotGranted": "尚未授予所需能力", + "proposal.teamPlan.gapReason.audienceNotAuthorized": "尚未获得所需访问权限", + "proposal.teamPlan.pending": "待安排", + "proposal.teamPlan.assignedHint": "分配已记录,执行进度请查看目标。", + "proposal.teamPlan.recoveredHint": "未新增任务,当前进度请查看目标。", + "proposal.teamPlan.originalPlan": "查看原计划", + "proposal.teamPlan.viewResult": "查看结果", + "proposal.teamPlan.openGoal": "打开目标", + "proposal.teamPlan.resultTitle": "分配结果", + "proposal.teamPlan.retry": "重试分配", + "proposal.teamPlan.retryHint": "重试会恢复本次分配结果,不会重复创建任务。", + "proposal.summary.teamPlan": "为 {goal} 分配 {count} 项任务", + "proposal.impact.teamPlan": "确认后分配可安排的任务,其余保留为待安排。", + "proposal.primary.teamPlan": "确认分配", "proposal.field.laneGaps": "未配齐的 lane", "proposal.field.quotaEnvelope": "配额包络", "proposal.teamPlan.acceptanceShort": "验收参考", "proposal.teamPlan.advisory": "计划参考;本次确认不执行该约束", - "proposal.teamPlan.appliedPartially": "已分配 {created} 条 lane 的任务,{gaps} 条仍有缺口。接收者采纳与执行尚未验证。", - "proposal.teamPlan.appliedAlreadyPresent": "已恢复原分配结果,未新增任务;这不证明当前执行状态。", - "proposal.teamPlan.applied": "lane 任务已分配;接收者采纳与执行尚未验证。", - "proposal.teamPlan.gapLane": "未配齐", - "proposal.teamPlan.laneUnstaffed": "编制缺口,无首个 Todo", - "proposal.teamPlan.appliedGapLane": "{lane}({agent})仍未组建:{reason}", - "proposal.teamPlan.gapReason.agentNotRegistered": "该 Agent 未在该 Goal 注册", - "proposal.teamPlan.gapReason.actionKindNotSupported": "本机不支持该动作类型", + "proposal.teamPlan.appliedPartially": "已分配 {created} 项,{gaps} 项待安排", + "proposal.teamPlan.appliedAlreadyPresent": "已恢复原分配结果", + "proposal.teamPlan.applied": "已分配 {count} 项任务", + "proposal.teamPlan.gapLane": "待安排", + "proposal.teamPlan.laneUnstaffed": "待安排,尚无任务", + "proposal.teamPlan.gapReason.agentNotRegistered": "尚未加入此目标", + "proposal.teamPlan.gapReason.actionKindNotSupported": "当前环境不支持此任务类型", "proposal.workspace.current": "当前本地工作区(未绑定 Repository)", "proposal.workspace.named": "{workspace}(仅提供执行环境,不会自动关联仓库)", "proposal.workspaceGate.agentImpact": "先完成 Agent 身份绑定,再重新检查原操作;当前没有写入 Goal。", diff --git a/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-model.ts b/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-model.ts index 9a8a652dc..5d0ab40be 100644 --- a/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-model.ts +++ b/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-model.ts @@ -237,7 +237,8 @@ export type WorkspaceActionPreview = { // receipt so the card can name them after the confirmation, not only in the // preview that the confirmation replaced. teamPlanOutcome?: TeamPlanAppliedOutcome; - teamPlanGapLanes?: Array<{ laneId: string; agentId: string; reasonCode: string }>; + teamPlanAssignments?: Array<{ laneId: string; agentId: string; task: string }>; + teamPlanGapLanes?: Array<{ laneId: string; agentId: string; reasonCode: string; task?: string }>; title: string; sourceRequest?: WorkspaceActionPreviewRequest; workspaceCandidates?: Array<{ label: string; workspaceRef: string }>; diff --git a/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-page.tsx b/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-page.tsx index ed7aaf021..1cc5721a1 100644 --- a/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-page.tsx +++ b/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace-page.tsx @@ -3,7 +3,7 @@ import { isStaleActionFailure, } from "../../../../../../loopx/control_plane/presentation/action_review_plan.js"; import { refreshAttention } from "./attention-details"; -import { teamPlanAppliedOutcome, teamPlanFields, teamPlanGoalId, teamPlanLaneCount, teamPlanReceiptGapLanes } from "./team-plan-preview"; +import { teamPlanAssignments, teamPlanAppliedLine, teamPlanAppliedOutcome, teamPlanFields, teamPlanGoalId, teamPlanLaneCount, teamPlanReceiptGapLanes } from "./team-plan-preview"; import { useEffect, useMemo, useRef, useState, type ClipboardEvent as ReactClipboardEvent } from "react"; import { AlertCircle, Bot, CalendarClock, FileText, ListPlus, MessageCircleQuestion, Paperclip, Plus, RefreshCw, Send, X } from "lucide-react"; @@ -564,7 +564,9 @@ function workspaceProposal(proposal: TypedActionProposal, t: WorkspaceTranslate) const localizedSummary = proposal.action_kind === "operation.execute" ? operationTitle : proposal.action_kind === "team.plan" - ? t("proposal.summary.teamPlan", { + ? proposal.status === "applied" + ? teamPlanAppliedLine(teamPlanAppliedOutcome(proposal.receipt), t) + : t("proposal.summary.teamPlan", { goal: teamPlanGoalId(proposal.normalized_parameters), count: teamPlanLaneCount(proposal.normalized_parameters), }) @@ -593,7 +595,7 @@ function workspaceProposal(proposal: TypedActionProposal, t: WorkspaceTranslate) impact: proposal.action_kind === "operation.execute" ? t("proposal.impact.operation") : proposal.action_kind === "team.plan" - ? t("proposal.impact.teamPlan") + ? proposal.status === "applied" ? t("proposal.teamPlan.assignedHint") : t("proposal.impact.teamPlan") : proposal.action_kind === "goal.create" ? t("proposal.impact.goalCreate") : proposal.action_kind === "goal.lifecycle" && lifecycleOperation === "stop" @@ -618,7 +620,7 @@ function workspaceProposal(proposal: TypedActionProposal, t: WorkspaceTranslate) ? t("proposal.primary.operationResultVerified") : t("proposal.primary.operationResultPending") : t("proposal.primary.operationGroup") - : proposal.action_kind === "team.plan" ? t("proposal.primary.teamPlan") + : proposal.action_kind === "team.plan" ? t(proposal.status === "applied" ? "proposal.teamPlan.viewResult" : "proposal.primary.teamPlan") : proposal.action_kind === "goal.create" ? t("proposal.primary.goalCreate") : proposal.action_kind === "goal.lifecycle" && lifecycleOperation === "stop" ? t("proposal.primary.lifecycleStop") @@ -635,8 +637,9 @@ function workspaceProposal(proposal: TypedActionProposal, t: WorkspaceTranslate) ? "error" : proposalStatus(proposal.status), teamPlanOutcome: proposal.action_kind === "team.plan" ? teamPlanAppliedOutcome(proposal.receipt) ?? undefined : undefined, + teamPlanAssignments: proposal.action_kind === "team.plan" ? teamPlanAssignments(proposal.receipt, proposal.normalized_parameters) : undefined, teamPlanGapLanes: proposal.action_kind === "team.plan" - ? teamPlanReceiptGapLanes(proposal.receipt) + ? teamPlanReceiptGapLanes(proposal.receipt, proposal.normalized_parameters) : undefined, title: localizedSummary, }; @@ -1356,7 +1359,11 @@ export function PersonalWorkspacePage({ presentation?: "drawer" | "feedback"; } = {}, ) { - if (proposal.reviewPlan && !proposal.reviewPlan.canApply) return; + // A failed/uncertain assignment retries its original authorized operation. + // The server still revalidates admission or recovers its immutable receipt. + const retryTeamAssignment = proposal.actionKind === "team.plan" && proposal.status === "error" + && ["apply_failed", "readback_unverified"].includes(proposal.reviewPlan?.reason ?? ""); + if (proposal.reviewPlan && !proposal.reviewPlan.canApply && !retryTeamAssignment) return; const showDrawer = options.presentation !== "feedback"; const inferredLifecycleChange = proposal.actionKind === "goal.lifecycle" && proposal.goalId diff --git a/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace.css b/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace.css index 35ec71084..2d8d5a958 100644 --- a/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace.css +++ b/apps/presentation/dashboard/src/features/personal-workspace/personal-workspace.css @@ -1030,6 +1030,16 @@ .personal-proposal-card dl div { display: grid; grid-template-columns: 82px minmax(0, 1fr); gap: 10px; font-size: 11.5px; } .personal-proposal-card dt { color: var(--pw-faint); } .personal-proposal-card dd { margin: 0; overflow-wrap: anywhere; } +/* Completed assignments lead with results; proposal details stay on demand. */ +.personal-context-drawer .personal-team-plan-result { border-color: var(--pw-line); background: var(--pw-card); } +.personal-context-drawer .personal-team-plan-result h3 { margin: 0; font-size: 18px; font-weight: 600; } +.personal-context-drawer .personal-team-plan-result > p { margin: 16px 0 0; font-weight: 400; color: var(--pw-muted); } +.personal-team-plan-result .personal-team-plan-assignments { gap: 16px; margin: 20px 0; } +.personal-team-plan-result .personal-team-plan-assignments > div { grid-template-columns: minmax(0, 1fr); gap: 4px; font-size: 13px; } +.personal-team-plan-result .personal-team-plan-assignments dt { color: var(--pw-muted); font-size: 12px; } +.personal-team-plan-result .is-pending dd { color: var(--pw-muted); } +.personal-team-plan-result details { border-top: 1px solid var(--pw-line); margin-top: 16px; padding-top: 12px; } +.personal-team-plan-result summary { cursor: pointer; font-size: 12px; color: var(--pw-muted); } .personal-proposal-state { display: flex; align-items: center; gap: 7px; padding: 10px 12px; margin: 10px 0 0; border-radius: 9px; font-size: 11px; } .personal-proposal-state.is-applied { background: var(--pw-green-bg); color: var(--pw-green); } .personal-proposal-state.is-stale, .personal-proposal-state.is-error { background: var(--pw-red-bg); color: var(--pw-red); } diff --git a/apps/presentation/dashboard/src/features/personal-workspace/team-plan-preview.ts b/apps/presentation/dashboard/src/features/personal-workspace/team-plan-preview.ts index fc5376544..a3a9b2d3e 100644 --- a/apps/presentation/dashboard/src/features/personal-workspace/team-plan-preview.ts +++ b/apps/presentation/dashboard/src/features/personal-workspace/team-plan-preview.ts @@ -49,7 +49,7 @@ export function teamPlanFields( label: agentId || laneId, value: [ t("proposal.teamPlan.gapLane"), - asText(lane.gap_reason_code), + teamPlanGapReason(asText(lane.gap_reason_code), t), asText(declined.text), ].filter(Boolean).join(" · "), }); @@ -70,20 +70,6 @@ export function teamPlanFields( ].filter(Boolean).join(" · "), }); }); - const gaps = Array.isArray(plan.gaps) ? plan.gaps : []; - if (gaps.length > 0) { - fields.push({ - key: "lane_gaps", - label: t("proposal.field.laneGaps"), - value: gaps - .map((rawGap) => { - const gap = asRecord(rawGap); - return [asText(gap.lane_id), asText(gap.reason_code)].filter(Boolean).join(": "); - }) - .filter(Boolean) - .join(" · "), - }); - } const envelope = asRecord(plan.quota_envelope); const envelopeEntries = Object.entries(envelope); if (envelopeEntries.length > 0) { @@ -114,7 +100,26 @@ export function teamPlanGoalId(parameters: Record): string { return asText(parameters.goal_id) || asText(plan.goal_id); } -export type TeamPlanGapLane = { laneId: string; agentId: string; reasonCode: string }; +export type TeamPlanGapLane = { laneId: string; agentId: string; reasonCode: string; task?: string }; + +export type TeamPlanAssignment = { laneId: string; agentId: string; task: string }; + +/** Receipt membership owns the result; the admitted preview only supplies task labels. */ +export function teamPlanAssignments(receipt: unknown, parameters: Record): TeamPlanAssignment[] { + const record = asRecord(receipt); + const plan = asRecord(parameters.plan); + const previewLanes = (Array.isArray(plan.lanes) ? plan.lanes : []).map(asRecord); + return (Array.isArray(record.lanes) ? record.lanes : []).map((entry) => { + const lane = asRecord(entry); + const laneId = asText(lane.lane_id); + const preview = previewLanes.find((candidate) => candidate.lane_id === laneId); + return { + laneId, + agentId: asText(lane.agent_id), + task: asText(asRecord(preview?.first_todo).text) || laneId, + }; + }).filter((lane) => lane.laneId.length > 0); +} /** * Read the lanes a confirmed plan left unstaffed out of the apply receipt. @@ -125,8 +130,10 @@ export type TeamPlanGapLane = { laneId: string; agentId: string; reasonCode: str * so the card that confirmed the plan can say both. A receipt without the field * (an older runtime, or a plan that staffed every lane) reports no gap lanes. */ -export function teamPlanReceiptGapLanes(receipt: unknown): TeamPlanGapLane[] { +export function teamPlanReceiptGapLanes(receipt: unknown, parameters: Record = {}): TeamPlanGapLane[] { const record = asRecord(receipt); + const plan = asRecord(parameters.plan); + const previewLanes = (Array.isArray(plan.lanes) ? plan.lanes : []).map(asRecord); const raw = Array.isArray(record.gap_lanes) ? record.gap_lanes : []; return raw .map((entry) => { @@ -135,6 +142,7 @@ export function teamPlanReceiptGapLanes(receipt: unknown): TeamPlanGapLane[] { laneId: asText(gap.lane_id), agentId: asText(gap.agent_id), reasonCode: asText(gap.reason_code), + task: asText(asRecord(previewLanes.find((lane) => lane.lane_id === gap.lane_id)?.declined_first_todo).text), }; }) .filter((gap) => gap.laneId.length > 0); @@ -151,22 +159,13 @@ export function teamPlanGapReason( if (reasonCode === "action_kind_not_supported") { return t("proposal.teamPlan.gapReason.actionKindNotSupported"); } + if (reasonCode === "capability_not_granted") return t("proposal.teamPlan.gapReason.capabilityNotGranted"); + if (reasonCode === "audience_not_authorized") return t("proposal.teamPlan.gapReason.audienceNotAuthorized"); // An unrecognized code is a host fact this card has no words for. Naming it // verbatim is honest; inventing a reason for it would not be. return reasonCode; } -export function teamPlanGapLaneLine( - gap: TeamPlanGapLane, - t: WorkspaceTranslate, -): string { - return t("proposal.teamPlan.appliedGapLane", { - lane: gap.laneId, - agent: gap.agentId || gap.laneId, - reason: teamPlanGapReason(gap.reasonCode, t), - }); -} - /** * What confirming a plan actually did, read from the receipt the apply wrote. * @@ -220,5 +219,5 @@ export function teamPlanAppliedLine( if (outcome?.kind === "already_present") { return t("proposal.teamPlan.appliedAlreadyPresent"); } - return t(outcome?.kind === "applied" ? "proposal.teamPlan.applied" : "drawer.proposalApplied"); + return t(outcome?.kind === "applied" ? "proposal.teamPlan.applied" : "drawer.proposalApplied", { count: outcome?.created ?? 0 }); } diff --git a/apps/presentation/dashboard/src/features/personal-workspace/team-plan-result.tsx b/apps/presentation/dashboard/src/features/personal-workspace/team-plan-result.tsx new file mode 100644 index 000000000..bd8ec7fff --- /dev/null +++ b/apps/presentation/dashboard/src/features/personal-workspace/team-plan-result.tsx @@ -0,0 +1,25 @@ +import type { WorkspaceActionPreview } from "./personal-workspace-model"; +import type { WorkspaceTranslate } from "./i18n"; +import { teamPlanAppliedLine, teamPlanGapReason } from "./team-plan-preview"; + +/** Assignment receipt, with the original proposal available on demand. */ +export function TeamPlanResult({ proposal, t }: { proposal: WorkspaceActionPreview; t: WorkspaceTranslate }) { + const recovered = proposal.teamPlanOutcome?.kind === "already_present"; + return
+

{teamPlanAppliedLine(proposal.teamPlanOutcome ?? null, t)}

+
+ {proposal.teamPlanAssignments?.map((lane) =>
+
{lane.agentId || lane.laneId}
{lane.task}
+
)} + {proposal.teamPlanGapLanes?.map((gap) =>
+
{gap.agentId || gap.laneId}
+
{gap.task || gap.laneId}
{t("proposal.teamPlan.pending")} · {teamPlanGapReason(gap.reasonCode, t)}
+
)} +
+

{t(recovered ? "proposal.teamPlan.recoveredHint" : "proposal.teamPlan.assignedHint")}

+
+ {t("proposal.teamPlan.originalPlan")} +
{proposal.fields.map((field) =>
{field.label}
{field.value}
)}
+
+
; +} diff --git a/docs/assets/personal-workspace/team-plan-assignment-after.png b/docs/assets/personal-workspace/team-plan-assignment-after.png index cdd4979363f1762994d64655252bf38ff0c2e455..f16a7b128479d8c33b865ddf9b64316fd7ee9230 100644 GIT binary patch literal 148317 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
b<{}ha#pl1+p^+lj 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


q?60TmPBIpKJ+R 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 literal 273780 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

eL#7cUs- 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 element.getBoundingClientRect().height); + check(resultHeight < 400, "the assignment result remains a compact card"); await page.screenshot({ path: resolve(outputDir, "team-plan-applied.png"), fullPage: false, @@ -250,6 +246,19 @@ export const teamPlanScenario = { fullPage: false, animations: "disabled", }); + // A lost response occurs after the durable write. Retry must use the + // original operation, including its remaining gaps, without a new plan. + await managerCard.click(); + api.loseNextTeamPlanResponse = true; + await drawer.getByRole("button", { name: "确认分配", exact: true }).click(); + const retry = drawer.getByRole("button", { name: "重试分配", exact: true }); + await retry.waitFor({ state: "visible" }); + check(api.durableWriteCount === 2, "the uncertain manager apply committed once"); + await retry.click(); + await drawer.getByRole("heading", { name: "已恢复原分配结果", exact: true }).waitFor(); + check(api.actionApplies.filter((id) => id === MANAGER_PROPOSAL_ID).length === 2, "retry uses the same proposal identity"); + check(api.durableWriteCount === 2, "recovery does not create another assignment"); + check((await drawer.innerText()).includes("待安排 · 尚未加入此目标"), "recovery preserves the original unassigned work"); // The harness collects both uncaught page errors and console errors; a // dev-server resource status is not a client-side exception, so only the // former is a failure here. @@ -259,8 +268,8 @@ export const teamPlanScenario = { `no client-side exception was raised (${scriptErrors.join(" | ")})`, ); check( - failedResponses.length === 0, - `no LoopX API call failed while confirming the plan (${failedResponses.join(" | ")})`, + failedResponses.length === 1 && failedResponses[0].includes(`503 ${new URL(url).origin}/api/actions/${MANAGER_PROPOSAL_ID}/apply`), + `only the injected lost response failed (${failedResponses.join(" | ")})`, ); } finally { await context.close(); diff --git a/loopx/web/chat/asset-retention.json b/loopx/web/chat/asset-retention.json index 60ce15f1f..7a3b0e74a 100644 --- a/loopx/web/chat/asset-retention.json +++ b/loopx/web/chat/asset-retention.json @@ -13,8 +13,8 @@ "assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2", "assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2", "assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2", - "assets/index-C58Y-FU6.css", - "assets/index-CCaRy5Qh.js" + "assets/index-6J6ypwcs.js", + "assets/index-Cc8RYr9k.css" ], [ "assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2", diff --git a/loopx/web/chat/assets/index-CCaRy5Qh.js b/loopx/web/chat/assets/index-6J6ypwcs.js similarity index 69% rename from loopx/web/chat/assets/index-CCaRy5Qh.js rename to loopx/web/chat/assets/index-6J6ypwcs.js index 37505ed59..a0a6a2881 100644 --- a/loopx/web/chat/assets/index-CCaRy5Qh.js +++ b/loopx/web/chat/assets/index-6J6ypwcs.js @@ -28,7 +28,7 @@ Notification: Only notify me when needed`,"composer.heartbeatTemplateWithoutGoal Goal: Frequency: Daily Stop condition: Goal completes -Notification: Only notify me when needed`,"composer.nextAction":`Ask what’s next`,"composer.nextActionPrompt":`What should I do next?`,"composer.send":`Send`,"composer.sendMessage":`Send a message to LoopX`,"composer.sendMessageHint":`Send message`,"composer.sentImageAlt":`Remove image {name}`,"conversation.agentPending":`Working…`,"conversation.close":`Close conversation receipt`,"conversation.convertHint":`Turn the Agent’s latest reply into a Task draft`,"conversation.full":`View full conversation`,"conversation.receipt":`Conversation receipt`,"conversation.replying":`Replying`,"conversation.title":`Manager conversation`,"conversation.toTask":`Convert to Task`,"digest.away":`Runs since your previous visit`,"digest.completed":`new completions`,"digest.failed":`new failed/interrupted runs`,"digest.needsYou":`currently need confirmation`,"feedback.applying":`Running: {title}`,"feedback.cancelFailed":`Cancel failed: {error}`,"feedback.completed":`Completed: {title}`,"feedback.executionFailed":`Execution failed: {error}`,"feedback.gateRequired":`Your confirmation is required: {summary}`,"feedback.notCompleted":`Not completed: {status}`,"feedback.goalRefreshFailed":`The Goal opened, but its latest state could not be refreshed. Use Refresh to try again.`,"feedback.preparingPreview":`Preparing confirmation preview: {title}`,"feedback.previewFailed":`Could not prepare the confirmation preview: {error}`,"feedback.sendFailed":`Send failed: {error}`,"feedback.sendGenericError":`Could not send the message. Try again later.`,"feedback.stale":`State changed, so nothing was applied. Generate a new confirmation preview.`,"feedback.taskDraftCreated":`Created a Task draft from the reply. Edit and send it to review the confirmation preview.`,"goal.defaultTitle":`New personal Goal`,"goal.initialTodo":`Work toward the completion criteria: {criteria}`,"goal.objectiveBoundary":`Execution boundary: {boundary}`,"goal.objectiveCompletion":`Completion criteria: {criteria}`,"drawer.advancedDiagnostics":`Advanced diagnostics`,"drawer.agentWorking":`Agent is continuing; the record updates automatically.`,"drawer.analysis":`Analyzing`,"drawer.apply":`Confirm and apply`,"drawer.applying":`Applying…`,"drawer.attentionBlocking":`Blocking an Agent`,"drawer.attentionWaiting":`Waiting for your decision`,"drawer.autoNotify":`Human-gate auto notifications`,"drawer.branch":`Branch`,"drawer.closeDetail":`Close details and return to {context}`,"drawer.connected":`Connected`,"drawer.correctionDescription":`The message keeps the current Goal, Todo, and Agent Session context.`,"drawer.correctionLabel":`Guide {agent}`,"drawer.correctionPlaceholder":`For example: focus on permission risks first and do not commit yet…`,"drawer.correctionSend":`Send guidance`,"drawer.correctionTextarea":`Enter guidance for Goal {goal}, Agent {agent}, Run {run}`,"drawer.copyRepository":`Copy repository identity`,"drawer.copyRepositoryDone":`Repository identity copied`,"drawer.copyRepositoryError":`Copy failed. Check browser clipboard permission.`,"drawer.copyRepositorySuccess":`Copied. You can paste it into another tool.`,"drawer.cost":`Cost 24h / 7d`,"drawer.costShort":`Cost`,"drawer.durationShort":`Duration`,"drawer.period24h":`24h`,"drawer.period7d":`7d`,"drawer.tokens":`Tokens 24h / 7d`,"drawer.tokensShort":`tokens`,"drawer.usageNotMeasured":`Not measured`,"drawer.currentGoal":`Current Goal`,"attentionDetail.title":`Request details`,"attentionDetail.request":`What is requested`,"attentionDetail.decision":`Decision requested`,"attentionDetail.unknownRequest":`Not specified; review the source before deciding`,"attentionDetail.open":`Open in current projection`,"attentionDetail.closed":`Closed`,"attentionDetail.deferred":`Deferred`,"attentionDetail.superseded":`Replaced`,"attentionDetail.unknown":`Status not provided`,"attentionDetail.unavailable":`The source has not confirmed this item; refresh before acting`,"attentionDetail.unknownReason":`The source has not provided a reason.`,"attentionDetail.targetTodo":`Linked Todo to unblock`,"attentionDetail.targetAgent":`Agent named by the request`,"attentionDetail.scope":`Declared decision scope`,"attentionDetail.notProvided":`Not provided`,"attentionDetail.replacement":`Replacement Todo`,"attentionDetail.openReplacement":`Open replacement`,"attentionDetail.boundary":`Reading this detail does not resolve a gate or grant authority. Available decisions require a fresh preview.`,"drawer.decisionDefaultEvidence":`No additional public-safe evidence is attached. The next step will still show a Preview first.`,"drawer.decisionDefaultReason":`This decision affects the next step of the current Todo.`,"drawer.decisionDefer":`Decide later`,"drawer.decisionMore":`More decisions`,"drawer.decisionReject":`Reject`,"drawer.decisionReview":`Review impact and decide`,"drawer.dependencies":`Dependencies`,"drawer.detailsAndActions":`Details & actions`,"drawer.duration":`Duration 24h / 7d`,"drawer.evidence":`Evidence`,"drawer.executionHistory":`Execution history`,"drawer.executionRecord":`Run record`,"drawer.executionRecordAndResult":`Execution & result`,"drawer.explainDecision":`Explain this decision`,"drawer.gateApproveHint":`Run one command in the terminal to complete approval:`,"drawer.gateRejectHint":`Replace approve with reject at the end to decline. This notice disappears after the command runs.`,"drawer.gateRequiresHost":`Host confirmation required`,"drawer.gateRequiresHostDescription":`This page cannot approve this protected permission change. Nothing was written by your click.`,"drawer.goalAutoRun":`Automatic runs for this Goal`,"drawer.goalChanges":`Pending changes for this Goal`,"drawer.goalDetails":`Goal details`,"drawer.group":`Group`,"drawer.inspectorFull":`Switch to full screen`,"drawer.inspectorFullView":`Full-screen view`,"drawer.inspectorHalf":`Switch to half screen`,"drawer.inspectorHalfView":`Half-screen view`,"drawer.lastNotification":`Latest notification`,"drawer.larkConfigure":`Configure Lark connection`,"drawer.larkConnect":`Connect Lark App`,"drawer.larkConnection":`Lark connection`,"drawer.larkNotConfigured":`Not configured`,"drawer.larkNotConfiguredDescription":`After setup, LoopX sends a Feishu notification when this Goal needs your confirmation.`,"drawer.managerChanges":`Pending Manager changes`,"drawer.moreActions":`More actions`,"drawer.moreRunActions":`More run actions`,"drawer.nextTransition":`Next transition`,"drawer.noExecutionHistory":`No execution history yet.`,"drawer.noRun":`Execution Session has not started`,"drawer.noRunDescription":`Run records will appear here after an Agent starts execution.`,"drawer.notAssigned":`Unassigned`,"drawer.notLinked":`Not linked`,"drawer.notSet":`Not set`,"drawer.outputDetails":`Output details`,"drawer.outputRecorded":`This output is recorded on the current Goal.`,"drawer.outputSafePreview":`Public-safe output preview`,"drawer.outputRun":`Run`,"drawer.outputTodo":`Todo`,"drawer.outputs":`Outputs from this run`,"drawer.previewUnavailable":`No public-safe inline preview is available for this output.`,"drawer.priority":`Priority`,"drawer.progress":`Progress`,"drawer.proposalApplied":`Applied. LoopX state will refresh.`,"drawer.proposalAppliedUnstaffed":`Applied, with {count} lane(s) still unstaffed:`,"drawer.proposalApplyFailed":`Apply failed. No changes were written.`,"drawer.proposalApplyFailedHint":`Refresh the Goal state and regenerate. If it still fails, keep this page open and inspect advanced diagnostics.`,"drawer.proposalClose":`Close`,"drawer.proposalDefer":`Later`,"drawer.proposalDeferred":`Deferred. You can apply it later or regenerate it.`,"drawer.proposalEnterGoal":`Open new Goal`,"drawer.proposalExplainer":`After confirmation, LoopX applies this change and shows the write result. Closing or canceling changes nothing.`,"drawer.proposalRecheck":`Recheck against latest state`,"drawer.proposalRegenerate":`Retry with latest state`,"drawer.proposalRejected":`Rejected. This change will not be written.`,"drawer.proposalStale":`Source state changed. Recheck against the latest state.`,"drawer.proposalViewGoal":`View updated Goal`,"drawer.reassign":`Reassign to`,"drawer.reassignSummary":`Reassign: {task}`,"drawer.reason":`Reason`,"drawer.recoveryDescription":`Local history is preserved. Choose a recovery path.`,"drawer.recoveryFailed":`Upstream Session recovery failed`,"drawer.recoveryNewSession":`Start a new Session with context`,"drawer.recoveryRetry":`Retry recovery`,"drawer.repositoryRole":`Execution workspace`,"drawer.repository":`Repository`,"drawer.replyMode":`Reply mode`,"drawer.subagentApplied":`Applied and verified against the shared Goal state.`,"drawer.subagentAppliedRefreshFailed":`Applied and verified. The status view could not refresh; retry the page refresh later.`,"drawer.subagentApplying":`Applying and verifying shared-state readback…`,"drawer.subagentApplyFailed":`Could not apply the sub-agent setting.`,"drawer.subagentChildLimit":`Current limit`,"drawer.subagentConfirmDisable":`Confirm turning off sub-agent execution`,"drawer.subagentConfirmEnable":`Confirm turning on sub-agent execution`,"drawer.subagentCurrentBoundary":`Current task-domain restriction`,"drawer.subagentDescription":`Allows the runtime to create temporary child agents for independent tasks only after Todo, quota, capability, and write-scope gates pass. It does not force parallel work or grant durable authority.`,"drawer.subagentDisable":`Preview turning off sub-agent execution`,"drawer.subagentDisableSummary":`New child-agent execution will be disabled for this Goal. Existing Todo ownership and execution records stay unchanged.`,"drawer.subagentDomainInvalid":`The selected task-domain restriction is invalid.`,"drawer.subagentDomainTodoCount":`{count} matching open Todos`,"drawer.subagentDomains":`Task-domain restriction (optional)`,"drawer.subagentDomainsEmpty":`No open advancement Todo declares task_domain. Leave this empty to keep child execution unrestricted by task domain.`,"drawer.subagentDomainsHint":`Leave every option clear to apply no task-domain filter. Selecting domains admits only matching typed Todos; all other execution gates still apply.`,"drawer.subagentDomainsUnrestricted":`No task-domain restriction`,"drawer.subagentEnable":`Preview turning on sub-agent execution`,"drawer.subagentLabel":`Per-Goal execution boundary`,"drawer.subagentModel":`Child model`,"drawer.subagentEffort":`Child reasoning effort`,"drawer.subagentModelDefault":`Host default`,"drawer.subagentLunaPreset":`Use Luna / max`,"drawer.subagentClearModel":`Clear model preference`,"drawer.subagentModelHint":`Use Preview configuration update to save this preference. It can be saved while execution is off; host support is checked at launch.`,"drawer.subagentModelRequired":`Choose a child model before setting reasoning effort.`,"drawer.subagentMaxChildren":`Maximum child agents`,"drawer.subagentNoChange":`The current Goal already matches this setting; nothing was written.`,"drawer.subagentPending":`Pending confirmation`,"drawer.subagentPreviewBoundary":`Preview configuration update`,"drawer.subagentPreviewFailed":`Could not create the sub-agent setting preview.`,"drawer.subagentPreviewing":`Checking the latest Goal state…`,"drawer.subagentPreviewReady":`Preview locked. Confirm to apply this Goal setting.`,"drawer.subagentPreviewSummary":`Allow up to {count} child agents. Task-domain restriction: {domains}.`,"drawer.subagentRemoteReadOnly":`This source is read only. Open the Goal on its host to change the setting.`,"drawer.subagentTitle":`Adaptive sub-agent execution`,"drawer.remoteDetailsDescription":`SSH sources expose public-safe status only and do not read connection settings from the source host.`,"drawer.remoteDetailsUnavailable":`Remote details are not projected`,"drawer.resumeNo":`No`,"drawer.resumeYes":`Yes`,"drawer.runDetails":`Execution Session`,"drawer.runInterrupt":`Interrupt this run`,"drawer.runLatest":`View latest execution`,"drawer.runNewSession":`Start new Session`,"drawer.runCloseSession":`Close Session`,"drawer.runRecordEmpty":`No run record yet. The Agent has not started this execution. Check waiting conditions or resume the Session under Details & actions.`,"drawer.runRecordProjected":`No step-by-step record is available. LoopX read {completed}/{total} projected steps{outputs}; inspect the Session under Details & actions.`,"drawer.runRecordProjectedOutputs":` and {count} outputs`,"drawer.runRoleAssistant":`Completed`,"drawer.runRoleSystem":`Needs review`,"drawer.runRoleUser":`Task received`,"drawer.runView":`Session views`,"drawer.scheduleAdd":`Add scheduled check`,"drawer.scheduleDefaultNotification":`Notify only when you are needed`,"drawer.scheduleDefaultStop":`Goal completes or owner stops it`,"drawer.scheduleDefaultTarget":`Wake according to this Goal’s LoopX schedule.`,"drawer.scheduleEdit":`Change to every 2 hours`,"drawer.scheduleLast":`Last run`,"drawer.scheduleLocalTimezone":`Local timezone`,"drawer.scheduleNext":`Next run`,"drawer.scheduleNeverRun":`Not run yet`,"drawer.scheduleNotification":`Notification`,"drawer.schedulePause":`Pause`,"drawer.schedulePending":`Waiting for schedule`,"drawer.scheduleResume":`Resume`,"drawer.scheduleRunNow":`Run now`,"drawer.scheduleStop":`Stop {kind}`,"drawer.scheduleStopCondition":`Stop condition`,"drawer.scheduleTimezone":`Timezone`,"drawer.sessionRecoverable":`Resumable`,"drawer.sessionStatus":`Session status`,"drawer.setupHeartbeat":`Set up Heartbeat`,"drawer.taskActions":`Pending Todo actions`,"drawer.taskAdvancement":`Advancement task`,"drawer.taskBlock":`Mark blocked`,"drawer.taskComplete":`Mark complete`,"drawer.taskCompletedNote":`This task is retained as a read-only record.`,"drawer.taskCompletedTitle":`Task completed`,"drawer.taskDefer":`Defer`,"drawer.taskDeferCondition":`Todo defer resume condition`,"drawer.taskDeferInvalid":`Unsupported condition format; use one of the deterministic conditions below.`,"drawer.taskDeferPlaceholder":`For example, resume_at:2026-09-14T09:00:00+08:00`,"drawer.taskDeferReview":`Review defer`,"drawer.taskDeferSupported":`Supports todo_done, pr_merged, capacity_available, and timezone-aware resume_at conditions.`,"drawer.taskDeferUntil":`Defer until`,"drawer.taskDetails":`Todo details`,"drawer.taskInfo":`Task information`,"drawer.taskManage":`Manage task`,"drawer.taskNextCompleted":`Create a follow-up task`,"drawer.taskNextOpen":`Advance or update status`,"drawer.taskOrdinary":`Task`,"drawer.taskStatusBlocked":`Blocked`,"drawer.taskStatusDeferred":`Deferred`,"drawer.resumeWhen":`Resume condition`,"drawer.resumeState":`Resume state`,"drawer.resumePending":`Waiting for condition`,"drawer.resumeReady":`Ready to resume`,"drawer.resumeReceipt":`Resume receipt`,"drawer.taskNextDeferred":`Wait for the resume condition, then reassess`,"drawer.taskNextResumeReady":`Resume condition met; awaiting lifecycle replan`,"drawer.taskStatusCompleted":`Completed`,"drawer.taskStatusOpen":`Ready`,"drawer.taskSuccessor":`Create follow-up Todo`,"drawer.taskSuccessorNote":`Owner marked this blocked while waiting for more context.`,"drawer.taskSuccessorSummary":`Create follow-up Todo: {task}`,"drawer.taskSuccessorText":`Follow-up work for {task}`,"drawer.taskType":`Task type`,"drawer.topic":`Topic`,"drawer.trigger":`Trigger`,"drawer.titleAttention":`Needs you`,"drawer.titleOutput":`Output details`,"drawer.titleProposalApplied":`Execution result`,"drawer.titleProposalConfirm":`Confirm execution`,"drawer.titleSchedule":`Scheduled check`,"drawer.unconfigured":`Not configured`,"drawer.workspaceCandidates":`Available workspaces`,"files.emptySummary":`Public-safe output`,"files.empty":`No files, outputs, or verified reports yet.`,"files.loadingReports":`Loading verified milestone reports…`,"files.reportDelta":`+{added} added · {changed} changed`,"files.reportAdded":`added`,"files.reportChanged":`changed`,"files.reportGeneration":`Generation`,"files.reportLoadFailed":`Could not load verified reports`,"files.reportPublication":`Publication`,"files.title":`Files & Outputs`,"files.verifiedReport":`Verified milestone report`,"header.agentUnavailable":`Unavailable`,"header.chatRuntime":`Chat`,"header.workAgentCount":`{count} work Agents`,"header.chat":`Chat`,"header.files":`Files`,"header.goalCapabilities":`Capability settings`,"header.goalCapabilitiesDescription":`Manage overrides and inherited machine defaults.`,"header.goalDetails":`Goal details`,"header.goalDetailsDescription":`Review status, usage, repository, notifications, and sessions.`,"header.goalSettings":`Goal settings`,"header.goalSettingsDescription":`Open Goal details or capability settings`,"header.goalNavigation":`Goal navigation`,"header.goalView":`Goal view`,"header.live":`Live`,"header.manager":`LoopX Manager`,"header.managerDescription":`Your personal workspace across Goals`,"header.managerRuntime":`{profile} · {sandbox}`,"header.managerRuntimeFallback":`Configuration invalid; fell back to {profile} · {sandbox}. Repair it in Machine capabilities.`,"header.managerExecutorKindIndividual":`individual CLI login`,"header.managerExecutorKindManaged":`operator credential`,"header.managerExecutorKindRegistered":`registered endpoint`,"header.managerExecutionUnavailable":`Selected {executor} cannot start here; this channel does not fall back to an individual CLI login.`,"header.managerExecutionUnavailableCredential":`Selected {executor} needs the operator credential {credential} before this channel can start it.`,"header.managerExecutionUnavailableRuntime":`Selected {executor} cannot start here because its runtime is not installed on this machine.`,"header.managerExecutionUnavailableEffort":`Selected {executor} rejected the configured reasoning effort; set a supported effort and reload.`,"header.managerEndpointStewardDefault":`Runs {executor}, the steward channel's shipped default. Select an executor explicitly to move it.`,"header.managerOverview":`Overview`,"header.managerView":`Manager view`,"header.openGoalNavigation":`Open Goal navigation`,"header.readOnlySourceDescription":`{source} is displayed read-only through an SSH tunnel`,"header.refresh":`Refresh status`,"header.refreshDone":`Updated just now`,"header.refreshFailed":`Refresh failed`,"header.refreshing":`Refreshing`,"header.selectAgent":`Select Agent`,"header.selectChatRuntime":`Select chat runtime`,"header.tasks":`Tasks`,"header.themeBrutal":`Switch to brutal theme`,"header.themePaper":`Switch to default theme`,"home.blockingSummary":`{count} are blocking an Agent.`,"home.completedGoals":`Completed Goals`,"home.empty":`Nothing here`,"startup.goalLoading":`Loading status…`,"startup.goalError":`Could not load status`,"startup.progress":`{loaded} of {total} active Goals loaded`,"startup.partial":`Goal states are updating. Counts are incomplete.`,"startup.independent":`Other Goals remain available while this Goal loads.`,"startup.error.timeout":`The request timed out. Retry when the local service is ready.`,"startup.error.network":`The connection was interrupted. Retry to reconnect.`,"startup.error.service":`The Goal status could not be read. Retry later; if the problem continues, check the status source.`,"startup.error.access":`The status source cannot access files or runtime directories required for this Goal. Check the permissions of the account running that source, then retry.`,"startup.error.revision":`The Goal directory changed during loading. Refresh to synchronize.`,"startup.error.scope":`This Goal is no longer available in the selected source. Refresh the directory.`,"startup.error.invalid":`The status response could not be read. Refresh or check for a LoopX update.`,"startup.retry":`Retry`,"startup.retryFailed":`Retry failed Goals`,"startup.failedCount":`{count} Goals could not be loaded. Ready Goals remain available.`,"home.greeting":`Hi, I’m your LoopX Manager`,"home.history":`History`,"home.lane.needsYou":`Needs you`,"home.lane.needsYouDescription":`Waiting for your decision, authorization, or context`,"home.lane.observing":`Observing`,"home.lane.observingDescription":`Monitoring continuously and notifying you when something changes`,"home.lane.running":`Running`,"home.lane.runningDescription":`Agents are making progress and reporting back`,"home.lane.scheduled":`Scheduled`,"home.lane.scheduledDescription":`Queued until its time or prerequisite arrives`,"home.noActivity":`No activity yet`,"home.noFirstActivity":`Waiting for first activity`,"home.noCompletedGoals":`No completed Goals yet`,"home.preservedState":`State is preserved and can be resumed`,"home.stopped":`Stopped`,"home.systemHealth":`System health: {summary}`,"home.taskCount":`{count} Tasks`,"home.todayAt":`Today {time}`,"home.waitingCount":`You have {count} items to handle.`,"home.workspace":`Goal workspace`,"lark.allMessages":`All messages in this topic`,"lark.allTopicMessages":`All topic messages`,"lark.agentIngress":`Agent ingress`,"lark.agentAppPermissions":`Every selected Agent needs a Lark App that is ready for group mentions and replies.`,"lark.agentApps":`Lark App per Agent`,"lark.agentAppsDescription":`The default App is preselected. Assign a different compatible App when an Agent needs its own bot identity.`,"lark.agentAppSelection":`Lark App for {agent}`,"lark.appCreated":`App created`,"lark.appCreateFailed":`Creation failed`,"lark.appLoading":`Loading available Lark Apps…`,"lark.appPermissions":`This App can send connection messages, but lacks the bot permissions required to receive group mentions or reply automatically. Enable im:message.group_at_msg:readonly, im:message.send_as_bot, and the im.message.receive_v1 event, publish a new version, then refresh.`,"lark.appProfile":`Lark App`,"lark.apps":`Lark Apps`,"lark.autoReplyUnavailable":`Auto reply unavailable`,"lark.autoReplyReady":`Auto reply ready`,"lark.bindGoal":`Bind to Goal`,"lark.cancel":`Cancel`,"lark.cardinality":`One Lark App · many Goals · one isolated route per Agent`,"lark.capture":`Capture`,"lark.captureAddressed":`Only messages that mention or reply to the App`,"lark.captureAll":`All messages in this Goal topic`,"lark.captureScope":`Capture scope`,"lark.captureScopeDescription":`Controls which Topic messages enter LoopX without expanding Agent permissions.`,"lark.closeConnection":`Close connection dialog`,"lark.closeCreate":`Close create dialog`,"lark.closeSettings":`Close Lark settings`,"lark.connect":`Connect`,"lark.connectAllAgents":`Connect every registered Agent`,"lark.connectAllAgentsAction":`Connect {count} Agents`,"lark.connectAllAgentsDescription":`Create {count} isolated Agent Topics in one guided action. Send requests inside the matching Topic; each Agent keeps its own route and inbox.`,"lark.connectApp":`Connect Lark App`,"lark.connection":`Connection`,"lark.connections":`Connections`,"lark.configuration":`Lark configuration`,"lark.continueFeishu":`Continue in Feishu`,"lark.createAutomatically":`Create Goal topic automatically`,"lark.createAutomaticallyDescription":`A dedicated, Agent-labelled Topic will be created for every selected Agent.`,"lark.defaultAgentAppDescription":`Used to find the target group and as the default for every selected Agent. Per-Agent choices below override it.`,"lark.description":`Manage reusable Lark Apps and connect group chats to Goals through dedicated topics.`,"lark.editConnection":`Edit Lark Connection`,"lark.goalConnections":`{count} Goal connections`,"lark.goalTopicConnections":`Lark Goal Topic connections`,"lark.groupChat":`Group chat`,"lark.groupEmpty":`This bot has not joined a group that can be connected. Add it to a Feishu group first, then return to refresh or search.`,"lark.groupLoading":`Reading groups joined by this bot…`,"lark.groupSearch":`Search groups joined by this bot`,"lark.historyPermission":`Group-history permission (separate capability)`,"lark.health.contextCaptured":`Group context captured`,"lark.health.contextCapturedDetail":`The message is retained as non-authoritative context. It did not start or steer a Manager turn; send a direct @ mention or verified reply when action is required.`,"lark.health.eventProcessed":`{events} events processed, {replies} replies sent.`,"lark.health.eventUnverified":`Event subscription needs verification`,"lark.health.eventUnverifiedDetail":`The provider listener is ready, but no event has arrived. Enable im.message.receive_v1 and group mention permissions, publish a new version, then send a new @ mention inside this Agent Topic. Group-level messages fail closed when multiple Agent routes exist.`,"lark.health.ignoredSelf":`The bot’s own message was ignored to prevent duplicate replies.`,"lark.health.invalidRouting":`Invalid routing configuration`,"lark.health.invalidRoutingDetail":`The connection was safely disabled. Select a processing mode again and save.`,"lark.health.lastStatus":`Latest event status: {status}`,"lark.health.listening":`Listening`,"lark.health.messageContextPermission":`Message permission required`,"lark.health.messageContextPermissionDetail":`A message event arrived, but group context could not be read. Publish and authorize group message read access for this App.`,"lark.health.notAddressed":`Latest message did not directly @ the bot`,"lark.health.notAddressedDetail":`Listening is healthy. This connection only responds to direct @ mentions or replies to the bot.`,"lark.health.notStarted":`Listener not started`,"lark.health.notStartedDetail":`Refresh the connection or restart LoopX, then try again.`,"lark.health.processingFailed":`Message processing failed`,"lark.health.processingFailedDetail":`The message event arrived, but Agent processing failed. Review local diagnostics and retry.`,"lark.health.queued":`Queued in the Agent inbox`,"lark.health.queuedDetail":`The message will be processed asynchronously by {agent} without starting a general Chat Session.`,"lark.health.sourceDisconnected":`Event connection disconnected`,"lark.health.sourceDisconnectedDetail":`The event consumer exited unexpectedly. Check that the app profile uses Feishu for Feishu apps or Lark for international Lark, then inspect connection and subscription errors. LoopX is retrying; successful history queries do not prove live delivery.`,"lark.health.retrying":`Retrying listener`,"lark.health.retryingDetail":`Event listening was interrupted and LoopX is retrying automatically.`,"lark.health.routeAmbiguous":`Message matches multiple Goals`,"lark.health.routeAmbiguousDetail":`The same bot and group have multiple full-group capture connections. Use a separate bot for each Agent or keep only one full-group connection.`,"lark.health.routeMismatch":`Message did not match this Goal Topic`,"lark.health.routeMismatchDetail":`The event came from another group or Topic. Reconnect this Goal to the correct group, then send a new @ mention.`,"lark.health.routeUnavailable":`Message cannot be routed to the Goal`,"lark.health.routeUnavailableDetail":`Connection data is incomplete. Reconnect this Goal, then send a new @ mention.`,"lark.health.starting":`Starting`,"lark.health.startingDetail":`LoopX is starting message event listening for this App.`,"lark.health.unavailable":`Auto reply unavailable`,"lark.health.waiting":`Waiting`,"lark.incomingMessages":`Incoming messages`,"lark.ingressAsync":`Async inbox`,"lark.ingressAsyncDescription":`Write to the Agent private inbox for a later explicit drain.`,"lark.editPreservesIdentity":`Saving preserves this App, group and Topic. Old connections upgrade to the Agent inbox by default.`,"lark.conversationKind":`Connection purpose`,"lark.managerConversation":`Manager · live conversation`,"lark.workerConversation":`Worker Agent · background tasks`,"lark.managerConversationDescription":`The built-in manager responds as you chat and delegates long-running work to background Agents. Group and private conversations keep separate histories.`,"lark.ingressLegacy":`Upgrade available`,"lark.ingressLegacyDescription":`Save this connection to upgrade to the Agent inbox. Existing messages remain in the same Topic.`,"lark.ingressQueue":`Queuing`,"lark.ingressQueueDescription":`Enter the same Agent Session's bounded FIFO queue and run after the current Turn.`,"lark.ingressSteering":`Steering`,"lark.ingressSteeringDescription":`Deliver to the active Turn and reject safely when no exact active Turn exists.`,"lark.loading":`Loading Lark configuration…`,"lark.management":`Lark management`,"lark.openEventSettings":`Open Feishu event settings`,"lark.mentions":`Mentions`,"lark.mentionsOnly":`Mentions only`,"lark.needsMessagePermissions":`Needs message permissions`,"lark.needsSetup":`Needs setup`,"lark.newApp":`New Lark App`,"lark.noAgentConfigured":`No Agent configured`,"lark.noConnections":`No matching connections.`,"lark.noProfiles":`No lark-cli App profiles are available yet.`,"lark.profileName":`Profile name`,"lark.profileValidation":`Profile can contain only letters, numbers, periods, underscores, and hyphens.`,"lark.processing":`Processing`,"lark.region":`Region`,"lark.registerAnother":`+ Register another Lark App — Create through Feishu`,"lark.reopenFeishu":`Reopen Feishu`,"lark.settingsConfigure":`Configure {goal}`,"lark.settingsDisconnect":`Disconnect {goal}`,"lark.replyMode":`Reply mode`,"lark.replyModeDescription":`Replies are limited to the source Topic to prevent cross-group or cross-Goal delivery.`,"lark.reusableApps":`{count} reusable Apps`,"lark.reusableWorkspaceApp":`Reusable workspace App`,"lark.routesUnverified":`{count} Lark routes pending verification`,"lark.saveConnection":`Save connection`,"lark.searchConnections":`Search Lark connections`,"lark.searchPlaceholder":`Search Apps, groups, Goals, or topics`,"lark.setupCopy":`LoopX opens the official Feishu creation page through lark-cli. App credentials stay in the system Keychain; LoopX stores only the profile reference.`,"lark.someoneMentions":`Someone mentions the Agent`,"lark.targetAgent":`Target Agent`,"lark.targetAgentDescription":`Choose a registered Agent in this Goal. This connection delivers to one Agent; it does not broadcast or grant permissions. Steering and Queuing require that Agent's exact active Session.`,"lark.agentUnavailable":`{agent} · no longer available`,"lark.selectRegisteredAgent":`Select an available registered Agent before connecting. The previous Agent will not be replaced automatically.`,"lark.topicPreview":`Topic preview`,"lark.topicReply":`Topic reply`,"lark.trigger":`Trigger`,"lark.waitingFeishu":`Waiting for Feishu`,"lark.waitingFeishuDescription":`Complete Feishu authorization in the new window. This page updates automatically when it is ready.`,"lark.waitingLink":`Generating the official Feishu creation link…`,"lark.error.appCreate":`Lark App creation failed`,"lark.error.appRequired":`Select a Lark App profile.`,"lark.error.bind":`Connection failed`,"lark.error.bindPreview":`Connection preview failed`,"lark.error.configuration":`Could not load Lark configuration`,"lark.error.groupLookup":`Could not read groups joined by this bot. Check the bot status and try again.`,"lark.error.groupLoad":`Could not load group chats`,"lark.error.invalidApp":`The Lark App profile is unavailable or has not completed authorization.`,"lark.error.messagePermissions":`This App lacks the bot permissions required for automatic replies. Enable im:message.group_at_msg:readonly and im:message:send_as_bot, publish a new version, then refresh.`,"lark.error.provider":`The Feishu API call failed without a verified receipt. Try again later.`,"lark.error.setupPoll":`Could not read creation status`,"lark.error.setupStart":`Could not start Lark App creation`,"lark.error.cliExecutable":`The configured lark-cli was found but cannot run. Check the installation or launch arguments.`,"lark.error.cliMissing":`lark-cli was not found. Install lark-cli and restart LoopX.`,"lark.error.cliStart":`lark-cli failed to start. Check the installation and restart LoopX.`,"lark.error.disconnect":`Disconnect failed`,"notifications.autoNotify":`Send automatically when your confirmation is required`,"notifications.bind":`Bind notification group`,"notifications.bindConfirm":`Bind “{goal}” to “{target}”. LoopX will verify that the bot is in the group and send a confirmation message.`,"notifications.bindFailed":`Binding failed`,"notifications.bound":`Bound`,"notifications.confirmBind":`Confirm binding`,"notifications.description":`Send Goal changes that need your confirmation to a Feishu group. Bindings and automatic delivery use the existing channel.`,"notifications.disabled":`Disabled`,"notifications.group":`Notification group: {target}`,"notifications.loadFailed":`Could not load notification groups`,"notifications.noTargets":`No notification groups are available. Group delivery uses a private bot identity; configure one from the terminal first:`,"notifications.notBound":`Not bound`,"notifications.recent":`Latest {time}`,"notifications.sentCount":`{count} sent`,"notifications.settings":`Goal notification bindings`,"notifications.setupFailed":`Could not update settings`,"notifications.title":`Feishu group notifications`,"proposal.field.agentId":`Agent`,"proposal.field.cadence":`Frequency`,"proposal.field.completionCriteria":`Completion criteria`,"proposal.field.executionBoundary":`Execution boundary`,"proposal.field.goalId":`Goal ID`,"proposal.field.heartbeat":`Heartbeat`,"proposal.field.initialTodos":`Initial tasks`,"proposal.field.objective":`Objective`,"proposal.field.operation":`Operation`,"proposal.field.operationState":`Operation state`,"proposal.field.resultDelivery":`Result delivery`,"proposal.field.confirmationBoundary":`Confirmation boundary`,"proposal.field.expiresAt":`Expires at`,"proposal.field.permission":`Permission`,"proposal.field.reason":`Reason`,"proposal.field.stopCondition":`Stop condition`,"proposal.field.target":`Check target`,"proposal.field.timezone":`Timezone`,"proposal.field.title":`Title`,"proposal.field.workspace":`Execution workspace`,"actionReview.targetChanged":`The preview target does not match the requested Goal and operation. Generate a new preview.`,"actionReview.ready_stop":`Pausing is reversible. This validated preview can apply directly; completion still requires verified readback.`,"actionReview.resume_review":`Review before restoring automatic scheduling. Quota, gates and Todo constraints still apply.`,"actionReview.delete_review":`Review removal of this stopped Goal from the registries. Project files and history are preserved.`,"actionReview.action_review":`Review the target and impact before applying this proposal.`,"actionReview.protected_action":`This action needs explicit review. Confirmation cannot replace required authority.`,"actionReview.unknown_permission":`The permission classification is not recognized. Recheck the proposal before continuing.`,"actionReview.unknown_action":`This lifecycle operation is not recognized. Recheck the proposal before continuing.`,"actionReview.incomplete_proposal":`The preview is missing validation or an available apply transition. Generate a new preview.`,"actionReview.authority_gate":`A gate prevents execution. Resolve its requirements, then recheck the proposal.`,"actionReview.stale_proposal":`The source state changed. Generate a new preview; the previous decision no longer applies.`,"actionReview.apply_pending":`Execution is in progress. Wait for its result before retrying.`,"actionReview.readback_verified":`The action completed and its resulting state was verified.`,"actionReview.readback_unverified":`The action returned without verified readback. Completion is not confirmed; recheck the state.`,"actionReview.operation_group_confirmation":`This exact request can only be confirmed on its original card in the bound Feishu group. The Dashboard does not expose a local execution control.`,"actionReview.operation_result_delivery_pending":`The operation outcome was recorded, but the original group result card has not passed readback verification yet.`,"actionReview.apply_failed":`Execution did not complete. Check the failure and regenerate the preview before retrying.`,"actionReview.inactive_proposal":`This proposal is no longer ready to execute. Recheck it before continuing.`,"proposal.gate.default":`Host confirmation required`,"proposal.impact.default":`After confirmation, the canonical LoopX service will write the state change.`,"proposal.impact.goalCreate":`After confirmation, LoopX will create the Goal and its initial Todo, then let the selected Agent start the first run.`,"proposal.impact.lifecycleDelete":`After confirmation, this stopped Goal is removed from the source and global registries. Project files, history state, and backups are preserved.`,"proposal.impact.lifecycleResume":`After confirmation, the Goal becomes eligible for automatic scheduling and returns to Active Goals. Actual execution still follows quota, Gate, and Todo constraints.`,"proposal.impact.lifecycleStop":`After confirmation, automatic progress stops and the Goal moves to the collapsed Stopped list. History, Todos, and evidence remain available for resuming.`,"proposal.impact.protected":`This action must be completed through the protected LoopX write service.`,"proposal.impact.operation":`The exact terms are read-only here. Confirm or reject the same immutable request in the bound Feishu group; confirmation consumes one canonical claim.`,"proposal.primary.apply":`Confirm and apply`,"proposal.primary.goalCreate":`Create Goal and start first run`,"proposal.primary.lifecycleDelete":`Delete Goal`,"proposal.primary.lifecycleResume":`Resume Goal`,"proposal.primary.lifecycleStop":`Stop Goal`,"proposal.primary.todoStart":`Create task and start execution`,"proposal.primary.operationGroup":`Confirm in Feishu group`,"proposal.primary.operationResultPending":`Result card delivery pending`,"proposal.primary.operationResultVerified":`Verified result`,"proposal.resultDelivery.verified":`Verified in the original group card`,"proposal.resultDelivery.pending":`Pending verified return to the original group card`,"proposal.summary.goalCreate":`Create Goal: {title}`,"proposal.summary.heartbeat":`Set a Heartbeat for the current Goal`,"proposal.summary.lifecycleDelete":`Delete Goal: {title}`,"proposal.summary.lifecycleResume":`Resume Goal: {title}`,"proposal.summary.lifecycleStop":`Stop Goal: {title}`,"proposal.summary.monitor":`Create a scheduled check for the current Goal: {target}`,"proposal.summary.teamPlan":`Staff a {count}-lane team for {goal}`,"proposal.impact.teamPlan":`Confirming creates each ready lane's first bounded Todo through the canonical owner; a lane with a staffing gap creates nothing, no lane exists before the apply receipt returns, and a Goal or Agent change between preview and apply makes this proposal stale instead of applying drifted staffing.`,"proposal.primary.teamPlan":`Confirm and staff the lanes`,"proposal.field.laneGaps":`Unstaffed lanes`,"proposal.field.quotaEnvelope":`Quota envelope`,"proposal.teamPlan.acceptanceShort":`acceptance reference`,"proposal.teamPlan.advisory":`planning context; not enforced by this confirmation`,"proposal.teamPlan.appliedPartially":`Assigned {created} lane task(s); {gaps} lane(s) remain unstaffed. Receiver adoption and execution are still unverified.`,"proposal.teamPlan.appliedAlreadyPresent":`Original assignment recovered; no new tasks created. This does not attest current execution.`,"proposal.teamPlan.applied":`Lane tasks assigned. Receiver adoption and execution are still unverified.`,"proposal.teamPlan.gapLane":`unstaffed`,"proposal.teamPlan.laneUnstaffed":`staffing gap, no first Todo`,"proposal.teamPlan.appliedGapLane":`{lane} ({agent}) stayed unstaffed: {reason}`,"proposal.teamPlan.gapReason.agentNotRegistered":`the Agent is not registered for this Goal`,"proposal.teamPlan.gapReason.actionKindNotSupported":`this host does not ship that action kind`,"proposal.workspace.current":`Current local workspace (no Repository bound)`,"proposal.workspace.named":`{workspace} (execution environment only; does not bind a repository)`,"proposal.workspaceGate.agentImpact":`Bind an Agent identity, then recheck the original action. No Goal has been written.`,"proposal.workspaceGate.agentTitle":`Bind an Agent first`,"proposal.workspaceGate.defaultSummary":`Select the Goal workspace.`,"proposal.workspaceGate.selectionImpact":`After selecting a workspace, LoopX will show the confirmation preview again. The selection itself does not write state.`,"proposal.workspaceGate.selectionTitle":`Select Goal workspace`,"projection.agentAdvancingGoal":`Agent is advancing the current Goal`,"projection.agentIdle":`Nothing needs your attention`,"projection.agentNeedsDecision":`Agent is waiting for your decision`,"projection.agentPreparingNextStep":`Agent is preparing the next step`,"projection.agentStopped":`Stopped by you; history, Todos, and evidence are preserved`,"projection.agentWaitingExternal":`Waiting for an external condition`,"projection.confirmAgentDecision":`Confirm the permission or decision the Agent needs next`,"projection.events24h":`{count} events in the last 24 hours`,"projection.firstReadOnlyAdapterCheck":`Run the first read-only adapter check and save progress`,"projection.goalVerified":`Goal state, Todos, and registration information verified`,"projection.latestRun":`Latest run`,"projection.latestValidation":`Latest validation`,"projection.nextUpdatePending":`Waiting for LoopX to update the next step`,"projection.publicSafeProjection":`Public-safe status projection`,"projection.refreshState":`Refresh LoopX status and confirm the current progress is still valid`,"projection.runEvidenceAvailable":`Run evidence is available`,"projection.runRecorded":`The latest LoopX run is recorded`,"projection.statusRefreshNeeded":`LoopX status needs to be refreshed`,"projection.todoStatusUpdated":`Todo status updated; confirming the next step`,"projection.validationRecorded":`The latest validation is recorded`,"runs.completed":`Completed`,"runs.failed":`Needs review`,"runs.interrupted":`Interrupted`,"runs.queued":`Scheduled`,"runs.ready":`Ready`,"runs.resumeFailed":`Recovery failed`,"runs.running":`Running`,"runs.unknown":`Unknown`,"runs.waiting":`Waiting`,"schedule.active":`Running`,"schedule.heartbeat":`Goal Heartbeat`,"schedule.monitor":`Scheduled & continuous task`,"schedule.paused":`Paused`,"schedule.summary":`Continuously checked under LoopX scheduling constraints`,"schedule.defaultTarget":`Check the current Goal for blockers, progress, and new outputs`,"schedule.unsupportedCalendar":`Scheduled checks do not currently support an exact weekday or time. Use a fixed interval such as “Every 30 minutes,” “Every 2 hours,” or “Daily.” The draft was preserved and no confirmation preview was created.`,"source.add":`Add source`,"source.addConfigured":`Add read-only source`,"source.addMethod":`Source setup method`,"source.addSsh":`Add SSH source`,"source.closeForm":`Close source form`,"source.configured":`Configured SSH`,"source.configuredCount":`Local SSH Hosts · {count}`,"source.configuredGroup":`Configured SSH Hosts · {count} (select to add)`,"source.connected":`Connected`,"source.connecting":`Connecting`,"source.controlPlane":`Control plane source`,"source.copy":`Copy`,"source.copyCommand":`Copy SSH tunnel command`,"source.copyError":`Could not copy the command. Copy it manually below.`,"source.copied":`Copied`,"source.description":`All explicit Hosts are loaded, including Include files. Wildcards are not listed. Run the command first; LoopX never reads SSH keys or configuration details.`,"source.host":`Local SSH Host`,"source.hostEmpty":`No explicit SSH Hosts are available in ~/.ssh/config.`,"source.hostLoadError":`Could not read local SSH Hosts.`,"source.hostPlaceholder":`Enter or search for a Host`,"source.invalid":`The SSH source settings are invalid.`,"source.loadingHosts":`Loading…`,"source.localInteractive":`Local interactive`,"source.localPort":`Local port`,"source.manual":`Manual URL`,"source.manualDescription":`Remote sources always remain read-only projections and never inherit local write permissions.`,"source.name":`Name`,"source.namePlaceholder":`Remote development machine`,"source.notAvailable":`Unavailable`,"source.readOnly":`SSH tunnel · read only`,"source.readOnlyNoticeDescription":`You can view Goals, Tasks, evidence, and run status. Writes, guidance, and Agent sessions remain on the source host.`,"source.readOnlyNoticeTitle":`Remote read-only projection`,"source.readOnlyWriteError":`Remote SSH tunnel sources are read-only projections and cannot perform control-plane writes.`,"source.refreshHosts":`Reload SSH Hosts`,"source.remove":`Remove source {source}`,"source.removeCurrent":`Remove current source`,"source.select":`Select control plane source`,"source.selectHost":`Select a configured SSH Host.`,"source.statusUrl":`Local forwarded URL`,"source.tunnelCommandPending":`Select a Host to generate the tunnel command`,"machine.absent":`Not configured`,"machine.action.create":`Create machine policy`,"machine.action.delete":`Remove machine policy`,"machine.action.unchanged":`No write required`,"machine.action.update":`Update machine policy`,"machine.applied":`Machine policy applied and read back successfully.`,"machine.applyError":`Machine policy could not be applied.`,"machine.applyPreview":`Apply reviewed preview`,"machine.changedNamespaces":`Changed namespaces`,"machine.capabilityCatalog":`Machine capability catalog`,"machine.capabilityEmpty":`No machine-configurable capabilities are registered.`,"machine.configured":`Configured`,"machine.confirmRollback":`Confirm rollback`,"machine.currentRevision":`Current revision`,"machine.currentValue":`Current machine value`,"machine.description":`Browse the same capability catalog as Goal settings. Configure supported machine defaults here; Goal-only capabilities are labeled explicitly.`,"capabilities.rawJson":`Advanced: raw JSON`,"machine.goalOnly":`This capability currently supports Goal configuration only. Open a Goal’s capability settings to configure it; no machine-wide default is applied.`,"machine.desiredRevision":`Desired revision`,"machine.editorUnavailable":`No editor is installed for this namespace`,"machine.editorUnavailableDescription":`The namespace remains visible in the registry. Install or upgrade its Dashboard editor before changing it.`,"machine.editorMode":`Editor mode`,"machine.liveDefault":`Live default; Goal override wins`,"machine.liveDefaultDescription":`Goals without an explicit override read the current machine policy at the capability’s next decision point. Changes and removal affect those existing Goals immediately; an explicit Goal override stays pinned.`,"machine.credentialTitle":`Operator model credential`,"machine.credentialDescription":`The key and endpoint the steward channel and the managed host authenticate with on this machine. The key is stored in its own owner-only file, never in the machine configuration that is projected here, and it is never read back — only its fingerprint is.`,"machine.credentialApiKey":`API key`,"machine.credentialApiKeyPlaceholder":`Paste a key to store it; leave blank to keep the stored one`,"machine.credentialBaseUrl":`Endpoint base URL`,"machine.credentialBaseUrlPlaceholder":`https://endpoint.example/v1 (blank keeps the endpoint default)`,"machine.credentialStore":`Store credential`,"machine.credentialClearKey":`Clear stored key`,"machine.credentialClearUrl":`Clear stored endpoint`,"machine.credentialConfigured":`configured`,"machine.credentialAbsent":`not configured`,"machine.credentialInvalid":`unreadable — repair required`,"machine.credentialSourceMachine":`this machine's stored credential`,"machine.credentialSourceEnvironment":`the service environment`,"machine.credentialSourceUnset":`no source`,"machine.credentialFingerprint":`fingerprint`,"machine.credentialStored":`Credential stored. The next turn uses it; no restart is needed.`,"machine.credentialCleared":`Stored credential cleared.`,"machine.credentialError":`The credential could not be stored.`,"machine.credentialBoundary":`Storing a credential grants no authority: it does not select an executor, model, or reasoning effort.`,"machine.genericNamespaceDescription":`Edit this registered namespace as JSON. LoopX validates it with the capability-owned schema before previewing any write.`,"machine.jsonConfiguration":`Namespace configuration (JSON)`,"machine.jsonConfigurationHelp":`Only this namespace is updated. Other machine configuration is preserved, and Apply remains locked to the reviewed preview revision.`,"machine.jsonEditor":`JSON`,"machine.editJson":`Edit JSON`,"capabilities.jsonConfiguration":`Goal configuration (JSON)`,"capabilities.jsonHelp":`Edit registered fields for this Goal. Changes require a new preview before applying.`,"capabilities.jsonInvalid":`Enter a valid JSON object using only registered editable fields.`,"machine.backToForm":`Back to form`,"machine.jsonInvalid":`Enter one valid JSON object before previewing changes.`,"machine.loadError":`Machine configuration could not be loaded.`,"machine.invalidStoredConfiguration":`Stored machine configuration needs repair`,"machine.invalidStoredConfigurationDescription":`Stored values are hidden because they no longer match the installed contract. Review the affected capability, then Preview and Apply its replacement; unrelated namespaces remain unchanged.`,"machine.machinePolicy":`Machine policy`,"machine.namespaceCount":`Registered namespaces`,"machine.namespaces":`Configuration namespaces`,"machine.periodicReport":`Periodic reports`,"machine.periodicReportDescription":`Default report policy for every Goal without an explicit override. Goal scheduling and delivery consume the effective configuration.`,"machine.periodicReportActivation":`Enabled means automatic delivery at validated stage boundaries`,"machine.periodicReportActivationDescription":`This is not a weekly timer. When LoopX validates a Goal stage completion, an Agent prepares and freezes the report, then automatically delivers it through the configured Goal Channel. The enabled subscription is standing delivery authority; failures and route drift stop closed for repair.`,"machine.changeQualityActivation":`Qualification is a quality gate, not new authority`,"machine.changeQualityActivationDescription":`Goals that inherit this policy qualify their exact final diff. safe_fix allows at most one bounded fix pass inside existing write authority; this setting never grants file, permission, or merge authority.`,"machine.replanCadenceActivation":`Review cadence changes timing, not execution authority`,"machine.replanCadenceActivationDescription":`Goals without an explicit override read this threshold before the next review decision. It does not create Turns, spend quota, or grant authority.`,"machine.preview":`Review exact machine change`,"machine.previewChanges":`Preview changes`,"machine.previewError":`A machine-policy preview could not be created.`,"machine.previewLocked":`Apply is locked to this exact revision. If machine state changes, LoopX requires a new preview.`,"machine.previewRollback":`Preview rollback`,"machine.previewRemoval":`Preview removal`,"machine.profilePreset":`Profile preset`,"machine.profilePresetHelp":`A capability-owned preset, such as weekly-progress.`,"machine.registry":`Typed registry`,"machine.requiredFields":`Enable requires a profile preset, Goal Channel route, and valid timezone.`,"machine.revision":`Machine revision`,"machine.revisionLockedReady":`All changes require a preview and apply only while that exact machine revision remains current.`,"machine.rollbackAvailable":`Rollback is available for the last apply`,"machine.rollbackDescription":`Preview the stored prior revision before restoring it.`,"machine.rollbackError":`The rollback could not be completed.`,"machine.rollbackPreviewDescription":`The prior revision is ready to restore. Confirm to apply this rollback.`,"machine.rolledBack":`The prior machine policy was restored and verified.`,"machine.removed":`Machine policy removed and the resulting configuration read back successfully.`,"machine.routeRef":`Goal Channel route`,"machine.routeRefHelp":`Use a public route alias; credentials and provider identifiers never enter this form.`,"machine.timezone":`Timezone`,"machine.timezoneHelp":`Use an IANA timezone, for example Asia/Shanghai.`,"machine.title":`Machine configuration`,"machine.unchanged":`Machine policy already matches this preview; nothing was written.`,"machine.visualEditor":`Guided`,"capabilities.atomicOverride":`Goal override is atomic`,"capabilities.atomicOverrideDescription":`A complete Goal value wins over the machine default. LoopX never mixes individual fields across scopes.`,"capabilities.applyFailed":`Goal capability changes were not applied.`,"capabilities.applyPreview":`Apply preview`,"capabilities.catalog":`Goal capability catalog`,"capabilities.chooseGoal":`Choose a Goal before inspecting its capabilities.`,"capabilities.defaultValue":`Declared default`,"capabilities.description":`Inspect the capabilities available to this Goal and the exact scope of each setting.`,"capabilities.editorPrepared":`Typed editor contract available`,"capabilities.effectiveSource":`Effective source`,"capabilities.empty":`No capability descriptors are available for this Goal.`,"capabilities.fields":`Registered fields`,"capabilities.goalPolicy":`Goal capability policy`,"capabilities.goalScope":`Goal`,"capabilities.goalValue":`Current Goal value`,"capabilities.loadFailed":`Could not load Goal capabilities`,"capabilities.larkInboxNotificationDescription":`This switch controls automatic group messages for human gates. Incoming Lark events remain available when it is off.`,"capabilities.larkInboxNotificationSetting":`Human-gate group notifications`,"capabilities.loading":`Loading Goal capabilities…`,"capabilities.machineOnly":`This capability is configured only at machine scope.`,"capabilities.machineValue":`Live machine default`,"capabilities.machineScope":`Machine`,"capabilities.previewOnly":`Inspection is live. Goal writes remain unavailable until the revision-locked preview and apply path is connected.`,"capabilities.preview":`Revision-locked preview`,"capabilities.previewChanges":`Preview changes`,"capabilities.restoreInheritance":`Restore machine-default inheritance`,"capabilities.previewFailed":`Could not preview Goal capability changes.`,"capabilities.previewLocked":`Apply will re-check this exact plan revision and reject stale changes.`,"capabilities.partialWrite":`Goal value saved; shared projection needs reconciliation`,"capabilities.partialWriteDescription":`The source Goal configuration was written and read back. Its shared runtime projection did not synchronize, so do not submit the change again.`,"capabilities.refreshSource":`Refresh source value`,"capabilities.readOnly":`Read-only capability`,"capabilities.revisionLockedReady":`Changes require a preview and are applied only when its exact revision is still current.`,"capabilities.retry":`Retry`,"capabilities.source.capability_default":`Capability default`,"capabilities.source.goal_override":`Goal override`,"capabilities.source.machine_default":`Live machine default`,"capabilities.source.not_configured":`Not configured`,"capabilities.title":`Goal capabilities`,"settings.close":`Close settings`,"settings.appearance":`Appearance`,"settings.appearanceDescription":`Manage workspace display preferences in this browser.`,"settings.appearanceTabDescription":`Theme and display preferences`,"settings.capabilitiesTabDescription":`Capability overrides for this Goal`,"settings.back":`Back to workspace`,"settings.categories":`Settings categories`,"settings.description":`Manage workspace preferences and integrations.`,"settings.eyebrow":`Workspace preferences`,"settings.general":`General`,"settings.goalConnections":`Goal connections`,"settings.language":`Language`,"settings.modelProvider":`Model provider`,"settings.globalCapabilities":`Global capabilities`,"settings.languageDescription":`Choose the language used by the LoopX desktop workspace.`,"settings.languageEnglishDescription":`Use English for navigation, settings, and workspace controls.`,"settings.languageEnglish":`English`,"settings.languageSimplifiedChineseDescription":`Use Simplified Chinese for navigation, settings, and workspace controls.`,"settings.languageSimplifiedChinese":`Simplified Chinese`,"settings.languageStoredLocally":`This preference is stored only on this device.`,"settings.languageTabDescription":`Interface language for this device`,"settings.larkTabDescription":`Apps, group chats, and Goal Topic connections`,"settings.machineTabDescription":`Typed defaults shared by capabilities on this machine`,"settings.notifications":`Notifications`,"settings.open":`Settings`,"settings.themeDefault":`Paper`,"settings.themeDefaultDescription":`Calm and lightweight for long-running work.`,"settings.themeDescription":`Choose the workspace visual style. This preference is stored in the current browser.`,"settings.themeHighContrast":`High contrast`,"settings.themeHighContrastDescription":`Stronger borders and more prominent state blocks.`,"settings.themeLoopx":`LoopX standard`,"settings.themeLoopxDescription":`Precise monochrome surfaces, Geist type, and quiet hairline structure.`,"settings.title":`Settings`,"settings.workspaceDisplay":`Workspace display`,"settings.workspaceTheme":`Workspace theme`,"session.closeRecord":`Exit run record`,"session.details":`Session details`,"session.record":`Execution Session · Run record`,"session.recordDescription":`The timeline now shows messages and Turn records from this Session.`,"sidebar.createGoal":`Create Goal`,"sidebar.delete":`Delete`,"sidebar.deleteGoal":`Delete Goal`,"sidebar.manager":`LoopX Manager`,"sidebar.notifications":`Settings`,"sidebar.owner":`Personal workspace`,"sidebar.product":`Personal Agent workspace`,"sidebar.resume":`Resume`,"sidebar.resumeGoal":`Resume Goal`,"sidebar.stop":`Stop`,"tasks.historyLoading":`Loading history…`,"tasks.historyError":`History could not be loaded.`,"tasks.historyExpired":`History snapshot expired. Reload to continue.`,"tasks.historyRetry":`Reload`,"tasks.historyEnd":`End of completed history`,"tasks.historyMore":`Load more`,"tasks.historyLocalOnly":`Open this machine’s Dashboard to browse full history.`,"sidebar.sortGoals":`Reorder Goals`,"sidebar.dragGoal":`Drag to reorder, or use Reorder Goals`,"sidebar.moveUp":`Move {goal} up`,"sidebar.moveDown":`Move {goal} down`,"sidebar.goalMoved":`{goal} moved to position {position}`,"sidebar.orderNotSaved":`Order changed for this visit; browser storage is unavailable.`,"sidebar.stopGoal":`Stop Goal`,"sidebar.stopped":`Stopped`,"sidebar.stoppedLoading":`Loading stopped Goals`,"sidebar.stoppedLoadFailed":`Stopped Goals could not be loaded. Active Goals remain available.`,"sidebar.retryStopped":`Retry`,"state.completed":`Completed`,"state.needsRepair":`Needs repair`,"state.needsYou":`Needs you`,"state.quiet":`Quiet`,"state.running":`Running`,"state.stopped":`Stopped`,"state.waiting":`Waiting`,"tasks.blocked":`Blocked`,"tasks.agentLane":`Work Agent`,"tasks.agentLaneDescription":`Filter this Goal's projected work lanes`,"tasks.agentLaneFilter":`Filter by work Agent`,"tasks.allAgentLanes":`All Agents ({count})`,"tasks.chatAgentReplied":`Agent replied`,"tasks.chatPending":`Sent to Agent`,"tasks.chatPendingDescription":`Processing. Tasks update only after a task operation is confirmed.`,"tasks.chatRecent":`Recent conversation`,"tasks.chatUnchangedDescription":`This conversation did not directly change Tasks. Convert the reply to a Task draft and confirm it when execution is needed.`,"tasks.chatViewReply":`View reply`,"tasks.convertToTask":`Convert to Task`,"tasks.completed":`Completed`,"runs.discoveryPartial":`Some execution details are unavailable. Reconnecting; task summaries are not live execution status.`,"runs.discoveryOffline":`Execution service unavailable. Reconnecting; retained task summaries may be stale.`,"files.openConversation":`Go to conversation`,"files.exportSummary":`Export summary`,"tasks.viewDescription":`Decisions first, then work and recent completions`,"tasks.viewLabel":`Task view`,"tasks.listView":`List`,"tasks.boardView":`Board`,"tasks.completedSummary":`{count} tasks completed. Recent details are projected by the control plane when needed.`,"tasks.emptyCompleted":`No completed tasks yet.`,"tasks.emptyConfirm":`No tasks waiting for confirmation.`,"tasks.emptyRunning":`No queued or running tasks.`,"tasks.emptySchedules":`No scheduled tasks.`,"tasks.emptyGoal":`This Goal has no tasks yet. Describe the next step below and LoopX will show a confirmation preview first.`,"tasks.markComplete":`Mark complete: {name}`,"tasks.moreActions":`More actions: {name}`,"tasks.openExecution":`View execution: {name}`,"tasks.pending":`Pending`,"tasks.pendingAndRunning":`Queued / Running`,"tasks.scheduled":`Scheduled & continuous`,"tasks.sessionError":`Session issue`,"tasks.waiting":`Queued`,"tasks.waitingAge":`Waiting {age}`,"tasks.viewExecution":`View execution`,"tasks.viewResult":`View result`,"time.days":`{count} days`,"time.hours":`{count} hours`,"timeline.emptyGoal":`This Goal has no new activity`,"timeline.emptyGoalDescription":`Ask for progress or send new guidance.`,"timeline.emptyWorkspace":`Your workspace is quiet today`,"timeline.emptyWorkspaceDescription":`Describe a Goal to the LoopX Manager, or ask what deserves attention today.`,"timeline.gateHistory":`{count} historical Gates`,"timeline.pending":`Working…`,"returnDelivery.queued":`Return queued`,"returnDelivery.verifying":`Verifying delivery without resending`,"returnDelivery.delivered":`Delivered to the original audience`,"returnDelivery.reconciled":`Delivery verified after recovery`,"returnDelivery.unverified":`Delivery remains explicitly unverified`,"timeline.runCompleted":`{run}: completed`,"timeline.review":`Review`,"timeline.reviewAndConfirm":`Review and confirm`,"timeline.waitingConfirmation":`Needs your confirmation`},"zh-CN":{"acceptance.connected":`已连接`,"acceptance.mapped":`已建立项目映射`,"acceptance.refreshed":`已刷新状态`,"acceptance.inspected":`已检查适配器`,"acceptance.recorded":`已记录执行`,"acceptance.judged":`已记录反馈`,"acceptance.approved":`已记录批准`,"acceptance.ready":`已记录控制器就绪`,"acceptance.attentionSource":`当前状态`,"acceptance.visionSource":`Agent 验收条件`,"acceptance.todoSource":`任务状态`,"acceptance.runSource":`最新执行证据`,"acceptance.title":`验收观察`,"acceptance.unavailable":`验收观测不可用,Goal 是否达成仍未知。`,"acceptance.partial":`当前仅有部分观测。任务完成或缺口列表为空,都不能证明 Goal 已通过验收。`,"acceptance.gaps":`仍需补充的证据`,"acceptance.reasonUnknown":`来源未提供原因`,"acceptance.unknown":`未知`,"acceptance.required":`所需证据或条件`,"acceptance.observed":`观测时间`,"acceptance.noGaps":`现有观测中没有缺口,尚未评估完整验收条件。`,"acceptance.guards":`待处理的门禁决策`,"acceptance.noGuards":`现有观测中没有待处理的门禁决策。`,"acceptance.scope":`决策范围`,"acceptance.next":`当前状态给出的下一步`,"acceptance.historical_progress":`已记录的历史进展`,"acceptance.historical":`历史生命周期记录不授予权限,也不代表通过验收。`,"acceptance.missing":`未获取的来源:`,"acceptance.truncated":`仅展示前 12 条观测。`,"common.actions":`操作`,"common.agent":`Agent`,"common.allMessages":`所有消息`,"common.cancel":`取消`,"common.close":`关闭`,"common.closeActionReceipt":`关闭操作回执`,"common.confirm":`确认`,"common.export":`导出`,"common.failed":`失败`,"common.goal":`Goal`,"common.loading":`加载中…`,"common.none":`无`,"common.off":`关闭`,"common.on":`开启`,"common.open":`打开`,"common.owner":`Owner`,"common.readOnly":`只读`,"common.recently":`刚刚`,"common.status":`状态`,"common.task":`Task`,"common.you":`你`,"common.waiting":`等待中`,"composer.addImage":`添加图片`,"composer.agentProgress":`向 Agent 获取进度报告`,"composer.agentProgressPrompt":`请给我一份当前 Goal 的进度报告:已完成、执行中、阻塞和下一步。`,"composer.blockers":`看阻塞`,"composer.attachImageHint":`选择、粘贴或拖入图片`,"composer.clarifyDefer":`暂缓 Todo 需要可自动判断的恢复条件。请补充 todo_done:、pr_merged:[owner/repo]#、capacity_available: 或 resume_at:<带时区 RFC3339 时间>。`,"composer.clarifySingleAction":`这句话包含多个可能修改状态的操作。请一次描述一项操作,我会逐项展示确认预览。`,"composer.evidence":`查证据`,"composer.createGoal":`创建新 Goal`,"composer.createGoalDraft":`Goal 草稿`,"composer.createGoalDraftDescription":`补充内容后发送,LoopX 会先展示待确认操作。`,"composer.createGoalDraftLead":`我想创建一个长期 Goal:`,"composer.createGoalTemplate":`我想创建一个长期 Goal: +Notification: Only notify me when needed`,"composer.nextAction":`Ask what’s next`,"composer.nextActionPrompt":`What should I do next?`,"composer.send":`Send`,"composer.sendMessage":`Send a message to LoopX`,"composer.sendMessageHint":`Send message`,"composer.sentImageAlt":`Remove image {name}`,"conversation.agentPending":`Working…`,"conversation.close":`Close conversation receipt`,"conversation.convertHint":`Turn the Agent’s latest reply into a Task draft`,"conversation.full":`View full conversation`,"conversation.receipt":`Conversation receipt`,"conversation.replying":`Replying`,"conversation.title":`Manager conversation`,"conversation.toTask":`Convert to Task`,"digest.away":`Runs since your previous visit`,"digest.completed":`new completions`,"digest.failed":`new failed/interrupted runs`,"digest.needsYou":`currently need confirmation`,"feedback.applying":`Running: {title}`,"feedback.cancelFailed":`Cancel failed: {error}`,"feedback.completed":`Completed: {title}`,"feedback.executionFailed":`Execution failed: {error}`,"feedback.gateRequired":`Your confirmation is required: {summary}`,"feedback.notCompleted":`Not completed: {status}`,"feedback.goalRefreshFailed":`The Goal opened, but its latest state could not be refreshed. Use Refresh to try again.`,"feedback.preparingPreview":`Preparing confirmation preview: {title}`,"feedback.previewFailed":`Could not prepare the confirmation preview: {error}`,"feedback.sendFailed":`Send failed: {error}`,"feedback.sendGenericError":`Could not send the message. Try again later.`,"feedback.stale":`State changed, so nothing was applied. Generate a new confirmation preview.`,"feedback.taskDraftCreated":`Created a Task draft from the reply. Edit and send it to review the confirmation preview.`,"goal.defaultTitle":`New personal Goal`,"goal.initialTodo":`Work toward the completion criteria: {criteria}`,"goal.objectiveBoundary":`Execution boundary: {boundary}`,"goal.objectiveCompletion":`Completion criteria: {criteria}`,"drawer.advancedDiagnostics":`Advanced diagnostics`,"drawer.agentWorking":`Agent is continuing; the record updates automatically.`,"drawer.analysis":`Analyzing`,"drawer.apply":`Confirm and apply`,"drawer.applying":`Applying…`,"drawer.attentionBlocking":`Blocking an Agent`,"drawer.attentionWaiting":`Waiting for your decision`,"drawer.autoNotify":`Human-gate auto notifications`,"drawer.branch":`Branch`,"drawer.closeDetail":`Close details and return to {context}`,"drawer.connected":`Connected`,"drawer.correctionDescription":`The message keeps the current Goal, Todo, and Agent Session context.`,"drawer.correctionLabel":`Guide {agent}`,"drawer.correctionPlaceholder":`For example: focus on permission risks first and do not commit yet…`,"drawer.correctionSend":`Send guidance`,"drawer.correctionTextarea":`Enter guidance for Goal {goal}, Agent {agent}, Run {run}`,"drawer.copyRepository":`Copy repository identity`,"drawer.copyRepositoryDone":`Repository identity copied`,"drawer.copyRepositoryError":`Copy failed. Check browser clipboard permission.`,"drawer.copyRepositorySuccess":`Copied. You can paste it into another tool.`,"drawer.cost":`Cost 24h / 7d`,"drawer.costShort":`Cost`,"drawer.durationShort":`Duration`,"drawer.period24h":`24h`,"drawer.period7d":`7d`,"drawer.tokens":`Tokens 24h / 7d`,"drawer.tokensShort":`tokens`,"drawer.usageNotMeasured":`Not measured`,"drawer.currentGoal":`Current Goal`,"attentionDetail.title":`Request details`,"attentionDetail.request":`What is requested`,"attentionDetail.decision":`Decision requested`,"attentionDetail.unknownRequest":`Not specified; review the source before deciding`,"attentionDetail.open":`Open in current projection`,"attentionDetail.closed":`Closed`,"attentionDetail.deferred":`Deferred`,"attentionDetail.superseded":`Replaced`,"attentionDetail.unknown":`Status not provided`,"attentionDetail.unavailable":`The source has not confirmed this item; refresh before acting`,"attentionDetail.unknownReason":`The source has not provided a reason.`,"attentionDetail.targetTodo":`Linked Todo to unblock`,"attentionDetail.targetAgent":`Agent named by the request`,"attentionDetail.scope":`Declared decision scope`,"attentionDetail.notProvided":`Not provided`,"attentionDetail.replacement":`Replacement Todo`,"attentionDetail.openReplacement":`Open replacement`,"attentionDetail.boundary":`Reading this detail does not resolve a gate or grant authority. Available decisions require a fresh preview.`,"drawer.decisionDefaultEvidence":`No additional public-safe evidence is attached. The next step will still show a Preview first.`,"drawer.decisionDefaultReason":`This decision affects the next step of the current Todo.`,"drawer.decisionDefer":`Decide later`,"drawer.decisionMore":`More decisions`,"drawer.decisionReject":`Reject`,"drawer.decisionReview":`Review impact and decide`,"drawer.dependencies":`Dependencies`,"drawer.detailsAndActions":`Details & actions`,"drawer.duration":`Duration 24h / 7d`,"drawer.evidence":`Evidence`,"drawer.executionHistory":`Execution history`,"drawer.executionRecord":`Run record`,"drawer.executionRecordAndResult":`Execution & result`,"drawer.explainDecision":`Explain this decision`,"drawer.gateApproveHint":`Run one command in the terminal to complete approval:`,"drawer.gateRejectHint":`Replace approve with reject at the end to decline. This notice disappears after the command runs.`,"drawer.gateRequiresHost":`Host confirmation required`,"drawer.gateRequiresHostDescription":`This page cannot approve this protected permission change. Nothing was written by your click.`,"drawer.goalAutoRun":`Automatic runs for this Goal`,"drawer.goalChanges":`Pending changes for this Goal`,"drawer.goalDetails":`Goal details`,"drawer.group":`Group`,"drawer.inspectorFull":`Switch to full screen`,"drawer.inspectorFullView":`Full-screen view`,"drawer.inspectorHalf":`Switch to half screen`,"drawer.inspectorHalfView":`Half-screen view`,"drawer.lastNotification":`Latest notification`,"drawer.larkConfigure":`Configure Lark connection`,"drawer.larkConnect":`Connect Lark App`,"drawer.larkConnection":`Lark connection`,"drawer.larkNotConfigured":`Not configured`,"drawer.larkNotConfiguredDescription":`After setup, LoopX sends a Feishu notification when this Goal needs your confirmation.`,"drawer.managerChanges":`Pending Manager changes`,"drawer.moreActions":`More actions`,"drawer.moreRunActions":`More run actions`,"drawer.nextTransition":`Next transition`,"drawer.noExecutionHistory":`No execution history yet.`,"drawer.noRun":`Execution Session has not started`,"drawer.noRunDescription":`Run records will appear here after an Agent starts execution.`,"drawer.notAssigned":`Unassigned`,"drawer.notLinked":`Not linked`,"drawer.notSet":`Not set`,"drawer.outputDetails":`Output details`,"drawer.outputRecorded":`This output is recorded on the current Goal.`,"drawer.outputSafePreview":`Public-safe output preview`,"drawer.outputRun":`Run`,"drawer.outputTodo":`Todo`,"drawer.outputs":`Outputs from this run`,"drawer.previewUnavailable":`No public-safe inline preview is available for this output.`,"drawer.priority":`Priority`,"drawer.progress":`Progress`,"drawer.proposalApplied":`Applied. LoopX state will refresh.`,"drawer.proposalApplyFailed":`Apply failed. No changes were written.`,"drawer.proposalApplyFailedHint":`Refresh the Goal state and regenerate. If it still fails, keep this page open and inspect advanced diagnostics.`,"drawer.proposalClose":`Close`,"drawer.proposalDefer":`Later`,"drawer.proposalDeferred":`Deferred. You can apply it later or regenerate it.`,"drawer.proposalEnterGoal":`Open new Goal`,"drawer.proposalExplainer":`After confirmation, LoopX applies this change and shows the write result. Closing or canceling changes nothing.`,"drawer.proposalRecheck":`Recheck against latest state`,"drawer.proposalRegenerate":`Retry with latest state`,"drawer.proposalRejected":`Rejected. This change will not be written.`,"drawer.proposalStale":`Source state changed. Recheck against the latest state.`,"drawer.proposalViewGoal":`View updated Goal`,"drawer.reassign":`Reassign to`,"drawer.reassignSummary":`Reassign: {task}`,"drawer.reason":`Reason`,"drawer.recoveryDescription":`Local history is preserved. Choose a recovery path.`,"drawer.recoveryFailed":`Upstream Session recovery failed`,"drawer.recoveryNewSession":`Start a new Session with context`,"drawer.recoveryRetry":`Retry recovery`,"drawer.repositoryRole":`Execution workspace`,"drawer.repository":`Repository`,"drawer.replyMode":`Reply mode`,"drawer.subagentApplied":`Applied and verified against the shared Goal state.`,"drawer.subagentAppliedRefreshFailed":`Applied and verified. The status view could not refresh; retry the page refresh later.`,"drawer.subagentApplying":`Applying and verifying shared-state readback…`,"drawer.subagentApplyFailed":`Could not apply the sub-agent setting.`,"drawer.subagentChildLimit":`Current limit`,"drawer.subagentConfirmDisable":`Confirm turning off sub-agent execution`,"drawer.subagentConfirmEnable":`Confirm turning on sub-agent execution`,"drawer.subagentCurrentBoundary":`Current task-domain restriction`,"drawer.subagentDescription":`Allows the runtime to create temporary child agents for independent tasks only after Todo, quota, capability, and write-scope gates pass. It does not force parallel work or grant durable authority.`,"drawer.subagentDisable":`Preview turning off sub-agent execution`,"drawer.subagentDisableSummary":`New child-agent execution will be disabled for this Goal. Existing Todo ownership and execution records stay unchanged.`,"drawer.subagentDomainInvalid":`The selected task-domain restriction is invalid.`,"drawer.subagentDomainTodoCount":`{count} matching open Todos`,"drawer.subagentDomains":`Task-domain restriction (optional)`,"drawer.subagentDomainsEmpty":`No open advancement Todo declares task_domain. Leave this empty to keep child execution unrestricted by task domain.`,"drawer.subagentDomainsHint":`Leave every option clear to apply no task-domain filter. Selecting domains admits only matching typed Todos; all other execution gates still apply.`,"drawer.subagentDomainsUnrestricted":`No task-domain restriction`,"drawer.subagentEnable":`Preview turning on sub-agent execution`,"drawer.subagentLabel":`Per-Goal execution boundary`,"drawer.subagentModel":`Child model`,"drawer.subagentEffort":`Child reasoning effort`,"drawer.subagentModelDefault":`Host default`,"drawer.subagentLunaPreset":`Use Luna / max`,"drawer.subagentClearModel":`Clear model preference`,"drawer.subagentModelHint":`Use Preview configuration update to save this preference. It can be saved while execution is off; host support is checked at launch.`,"drawer.subagentModelRequired":`Choose a child model before setting reasoning effort.`,"drawer.subagentMaxChildren":`Maximum child agents`,"drawer.subagentNoChange":`The current Goal already matches this setting; nothing was written.`,"drawer.subagentPending":`Pending confirmation`,"drawer.subagentPreviewBoundary":`Preview configuration update`,"drawer.subagentPreviewFailed":`Could not create the sub-agent setting preview.`,"drawer.subagentPreviewing":`Checking the latest Goal state…`,"drawer.subagentPreviewReady":`Preview locked. Confirm to apply this Goal setting.`,"drawer.subagentPreviewSummary":`Allow up to {count} child agents. Task-domain restriction: {domains}.`,"drawer.subagentRemoteReadOnly":`This source is read only. Open the Goal on its host to change the setting.`,"drawer.subagentTitle":`Adaptive sub-agent execution`,"drawer.remoteDetailsDescription":`SSH sources expose public-safe status only and do not read connection settings from the source host.`,"drawer.remoteDetailsUnavailable":`Remote details are not projected`,"drawer.resumeNo":`No`,"drawer.resumeYes":`Yes`,"drawer.runDetails":`Execution Session`,"drawer.runInterrupt":`Interrupt this run`,"drawer.runLatest":`View latest execution`,"drawer.runNewSession":`Start new Session`,"drawer.runCloseSession":`Close Session`,"drawer.runRecordEmpty":`No run record yet. The Agent has not started this execution. Check waiting conditions or resume the Session under Details & actions.`,"drawer.runRecordProjected":`No step-by-step record is available. LoopX read {completed}/{total} projected steps{outputs}; inspect the Session under Details & actions.`,"drawer.runRecordProjectedOutputs":` and {count} outputs`,"drawer.runRoleAssistant":`Completed`,"drawer.runRoleSystem":`Needs review`,"drawer.runRoleUser":`Task received`,"drawer.runView":`Session views`,"drawer.scheduleAdd":`Add scheduled check`,"drawer.scheduleDefaultNotification":`Notify only when you are needed`,"drawer.scheduleDefaultStop":`Goal completes or owner stops it`,"drawer.scheduleDefaultTarget":`Wake according to this Goal’s LoopX schedule.`,"drawer.scheduleEdit":`Change to every 2 hours`,"drawer.scheduleLast":`Last run`,"drawer.scheduleLocalTimezone":`Local timezone`,"drawer.scheduleNext":`Next run`,"drawer.scheduleNeverRun":`Not run yet`,"drawer.scheduleNotification":`Notification`,"drawer.schedulePause":`Pause`,"drawer.schedulePending":`Waiting for schedule`,"drawer.scheduleResume":`Resume`,"drawer.scheduleRunNow":`Run now`,"drawer.scheduleStop":`Stop {kind}`,"drawer.scheduleStopCondition":`Stop condition`,"drawer.scheduleTimezone":`Timezone`,"drawer.sessionRecoverable":`Resumable`,"drawer.sessionStatus":`Session status`,"drawer.setupHeartbeat":`Set up Heartbeat`,"drawer.taskActions":`Pending Todo actions`,"drawer.taskAdvancement":`Advancement task`,"drawer.taskBlock":`Mark blocked`,"drawer.taskComplete":`Mark complete`,"drawer.taskCompletedNote":`This task is retained as a read-only record.`,"drawer.taskCompletedTitle":`Task completed`,"drawer.taskDefer":`Defer`,"drawer.taskDeferCondition":`Todo defer resume condition`,"drawer.taskDeferInvalid":`Unsupported condition format; use one of the deterministic conditions below.`,"drawer.taskDeferPlaceholder":`For example, resume_at:2026-09-14T09:00:00+08:00`,"drawer.taskDeferReview":`Review defer`,"drawer.taskDeferSupported":`Supports todo_done, pr_merged, capacity_available, and timezone-aware resume_at conditions.`,"drawer.taskDeferUntil":`Defer until`,"drawer.taskDetails":`Todo details`,"drawer.taskInfo":`Task information`,"drawer.taskManage":`Manage task`,"drawer.taskNextCompleted":`Create a follow-up task`,"drawer.taskNextOpen":`Advance or update status`,"drawer.taskOrdinary":`Task`,"drawer.taskStatusBlocked":`Blocked`,"drawer.taskStatusDeferred":`Deferred`,"drawer.resumeWhen":`Resume condition`,"drawer.resumeState":`Resume state`,"drawer.resumePending":`Waiting for condition`,"drawer.resumeReady":`Ready to resume`,"drawer.resumeReceipt":`Resume receipt`,"drawer.taskNextDeferred":`Wait for the resume condition, then reassess`,"drawer.taskNextResumeReady":`Resume condition met; awaiting lifecycle replan`,"drawer.taskStatusCompleted":`Completed`,"drawer.taskStatusOpen":`Ready`,"drawer.taskSuccessor":`Create follow-up Todo`,"drawer.taskSuccessorNote":`Owner marked this blocked while waiting for more context.`,"drawer.taskSuccessorSummary":`Create follow-up Todo: {task}`,"drawer.taskSuccessorText":`Follow-up work for {task}`,"drawer.taskType":`Task type`,"drawer.topic":`Topic`,"drawer.trigger":`Trigger`,"drawer.titleAttention":`Needs you`,"drawer.titleOutput":`Output details`,"drawer.titleProposalApplied":`Execution result`,"drawer.titleProposalConfirm":`Confirm execution`,"drawer.titleSchedule":`Scheduled check`,"drawer.unconfigured":`Not configured`,"drawer.workspaceCandidates":`Available workspaces`,"files.emptySummary":`Public-safe output`,"files.empty":`No files, outputs, or verified reports yet.`,"files.loadingReports":`Loading verified milestone reports…`,"files.reportDelta":`+{added} added · {changed} changed`,"files.reportAdded":`added`,"files.reportChanged":`changed`,"files.reportGeneration":`Generation`,"files.reportLoadFailed":`Could not load verified reports`,"files.reportPublication":`Publication`,"files.title":`Files & Outputs`,"files.verifiedReport":`Verified milestone report`,"header.agentUnavailable":`Unavailable`,"header.chatRuntime":`Chat`,"header.workAgentCount":`{count} work Agents`,"header.chat":`Chat`,"header.files":`Files`,"header.goalCapabilities":`Capability settings`,"header.goalCapabilitiesDescription":`Manage overrides and inherited machine defaults.`,"header.goalDetails":`Goal details`,"header.goalDetailsDescription":`Review status, usage, repository, notifications, and sessions.`,"header.goalSettings":`Goal settings`,"header.goalSettingsDescription":`Open Goal details or capability settings`,"header.goalNavigation":`Goal navigation`,"header.goalView":`Goal view`,"header.live":`Live`,"header.manager":`LoopX Manager`,"header.managerDescription":`Your personal workspace across Goals`,"header.managerRuntime":`{profile} · {sandbox}`,"header.managerRuntimeFallback":`Configuration invalid; fell back to {profile} · {sandbox}. Repair it in Machine capabilities.`,"header.managerExecutorKindIndividual":`individual CLI login`,"header.managerExecutorKindManaged":`operator credential`,"header.managerExecutorKindRegistered":`registered endpoint`,"header.managerExecutionUnavailable":`Selected {executor} cannot start here; this channel does not fall back to an individual CLI login.`,"header.managerExecutionUnavailableCredential":`Selected {executor} needs the operator credential {credential} before this channel can start it.`,"header.managerExecutionUnavailableRuntime":`Selected {executor} cannot start here because its runtime is not installed on this machine.`,"header.managerExecutionUnavailableEffort":`Selected {executor} rejected the configured reasoning effort; set a supported effort and reload.`,"header.managerEndpointStewardDefault":`Runs {executor}, the steward channel's shipped default. Select an executor explicitly to move it.`,"header.managerOverview":`Overview`,"header.managerView":`Manager view`,"header.openGoalNavigation":`Open Goal navigation`,"header.readOnlySourceDescription":`{source} is displayed read-only through an SSH tunnel`,"header.refresh":`Refresh status`,"header.refreshDone":`Updated just now`,"header.refreshFailed":`Refresh failed`,"header.refreshing":`Refreshing`,"header.selectAgent":`Select Agent`,"header.selectChatRuntime":`Select chat runtime`,"header.tasks":`Tasks`,"header.themeBrutal":`Switch to brutal theme`,"header.themePaper":`Switch to default theme`,"home.blockingSummary":`{count} are blocking an Agent.`,"home.completedGoals":`Completed Goals`,"home.empty":`Nothing here`,"startup.goalLoading":`Loading status…`,"startup.goalError":`Could not load status`,"startup.progress":`{loaded} of {total} active Goals loaded`,"startup.partial":`Goal states are updating. Counts are incomplete.`,"startup.independent":`Other Goals remain available while this Goal loads.`,"startup.error.timeout":`The request timed out. Retry when the local service is ready.`,"startup.error.network":`The connection was interrupted. Retry to reconnect.`,"startup.error.service":`The Goal status could not be read. Retry later; if the problem continues, check the status source.`,"startup.error.access":`The status source cannot access files or runtime directories required for this Goal. Check the permissions of the account running that source, then retry.`,"startup.error.revision":`The Goal directory changed during loading. Refresh to synchronize.`,"startup.error.scope":`This Goal is no longer available in the selected source. Refresh the directory.`,"startup.error.invalid":`The status response could not be read. Refresh or check for a LoopX update.`,"startup.retry":`Retry`,"startup.retryFailed":`Retry failed Goals`,"startup.failedCount":`{count} Goals could not be loaded. Ready Goals remain available.`,"home.greeting":`Hi, I’m your LoopX Manager`,"home.history":`History`,"home.lane.needsYou":`Needs you`,"home.lane.needsYouDescription":`Waiting for your decision, authorization, or context`,"home.lane.observing":`Observing`,"home.lane.observingDescription":`Monitoring continuously and notifying you when something changes`,"home.lane.running":`Running`,"home.lane.runningDescription":`Agents are making progress and reporting back`,"home.lane.scheduled":`Scheduled`,"home.lane.scheduledDescription":`Queued until its time or prerequisite arrives`,"home.noActivity":`No activity yet`,"home.noFirstActivity":`Waiting for first activity`,"home.noCompletedGoals":`No completed Goals yet`,"home.preservedState":`State is preserved and can be resumed`,"home.stopped":`Stopped`,"home.systemHealth":`System health: {summary}`,"home.taskCount":`{count} Tasks`,"home.todayAt":`Today {time}`,"home.waitingCount":`You have {count} items to handle.`,"home.workspace":`Goal workspace`,"lark.allMessages":`All messages in this topic`,"lark.allTopicMessages":`All topic messages`,"lark.agentIngress":`Agent ingress`,"lark.agentAppPermissions":`Every selected Agent needs a Lark App that is ready for group mentions and replies.`,"lark.agentApps":`Lark App per Agent`,"lark.agentAppsDescription":`The default App is preselected. Assign a different compatible App when an Agent needs its own bot identity.`,"lark.agentAppSelection":`Lark App for {agent}`,"lark.appCreated":`App created`,"lark.appCreateFailed":`Creation failed`,"lark.appLoading":`Loading available Lark Apps…`,"lark.appPermissions":`This App can send connection messages, but lacks the bot permissions required to receive group mentions or reply automatically. Enable im:message.group_at_msg:readonly, im:message.send_as_bot, and the im.message.receive_v1 event, publish a new version, then refresh.`,"lark.appProfile":`Lark App`,"lark.apps":`Lark Apps`,"lark.autoReplyUnavailable":`Auto reply unavailable`,"lark.autoReplyReady":`Auto reply ready`,"lark.bindGoal":`Bind to Goal`,"lark.cancel":`Cancel`,"lark.cardinality":`One Lark App · many Goals · one isolated route per Agent`,"lark.capture":`Capture`,"lark.captureAddressed":`Only messages that mention or reply to the App`,"lark.captureAll":`All messages in this Goal topic`,"lark.captureScope":`Capture scope`,"lark.captureScopeDescription":`Controls which Topic messages enter LoopX without expanding Agent permissions.`,"lark.closeConnection":`Close connection dialog`,"lark.closeCreate":`Close create dialog`,"lark.closeSettings":`Close Lark settings`,"lark.connect":`Connect`,"lark.connectAllAgents":`Connect every registered Agent`,"lark.connectAllAgentsAction":`Connect {count} Agents`,"lark.connectAllAgentsDescription":`Create {count} isolated Agent Topics in one guided action. Send requests inside the matching Topic; each Agent keeps its own route and inbox.`,"lark.connectApp":`Connect Lark App`,"lark.connection":`Connection`,"lark.connections":`Connections`,"lark.configuration":`Lark configuration`,"lark.continueFeishu":`Continue in Feishu`,"lark.createAutomatically":`Create Goal topic automatically`,"lark.createAutomaticallyDescription":`A dedicated, Agent-labelled Topic will be created for every selected Agent.`,"lark.defaultAgentAppDescription":`Used to find the target group and as the default for every selected Agent. Per-Agent choices below override it.`,"lark.description":`Manage reusable Lark Apps and connect group chats to Goals through dedicated topics.`,"lark.editConnection":`Edit Lark Connection`,"lark.goalConnections":`{count} Goal connections`,"lark.goalTopicConnections":`Lark Goal Topic connections`,"lark.groupChat":`Group chat`,"lark.groupEmpty":`This bot has not joined a group that can be connected. Add it to a Feishu group first, then return to refresh or search.`,"lark.groupLoading":`Reading groups joined by this bot…`,"lark.groupSearch":`Search groups joined by this bot`,"lark.historyPermission":`Group-history permission (separate capability)`,"lark.health.contextCaptured":`Group context captured`,"lark.health.contextCapturedDetail":`The message is retained as non-authoritative context. It did not start or steer a Manager turn; send a direct @ mention or verified reply when action is required.`,"lark.health.eventProcessed":`{events} events processed, {replies} replies sent.`,"lark.health.eventUnverified":`Event subscription needs verification`,"lark.health.eventUnverifiedDetail":`The provider listener is ready, but no event has arrived. Enable im.message.receive_v1 and group mention permissions, publish a new version, then send a new @ mention inside this Agent Topic. Group-level messages fail closed when multiple Agent routes exist.`,"lark.health.ignoredSelf":`The bot’s own message was ignored to prevent duplicate replies.`,"lark.health.invalidRouting":`Invalid routing configuration`,"lark.health.invalidRoutingDetail":`The connection was safely disabled. Select a processing mode again and save.`,"lark.health.lastStatus":`Latest event status: {status}`,"lark.health.listening":`Listening`,"lark.health.messageContextPermission":`Message permission required`,"lark.health.messageContextPermissionDetail":`A message event arrived, but group context could not be read. Publish and authorize group message read access for this App.`,"lark.health.notAddressed":`Latest message did not directly @ the bot`,"lark.health.notAddressedDetail":`Listening is healthy. This connection only responds to direct @ mentions or replies to the bot.`,"lark.health.notStarted":`Listener not started`,"lark.health.notStartedDetail":`Refresh the connection or restart LoopX, then try again.`,"lark.health.processingFailed":`Message processing failed`,"lark.health.processingFailedDetail":`The message event arrived, but Agent processing failed. Review local diagnostics and retry.`,"lark.health.queued":`Queued in the Agent inbox`,"lark.health.queuedDetail":`The message will be processed asynchronously by {agent} without starting a general Chat Session.`,"lark.health.sourceDisconnected":`Event connection disconnected`,"lark.health.sourceDisconnectedDetail":`The event consumer exited unexpectedly. Check that the app profile uses Feishu for Feishu apps or Lark for international Lark, then inspect connection and subscription errors. LoopX is retrying; successful history queries do not prove live delivery.`,"lark.health.retrying":`Retrying listener`,"lark.health.retryingDetail":`Event listening was interrupted and LoopX is retrying automatically.`,"lark.health.routeAmbiguous":`Message matches multiple Goals`,"lark.health.routeAmbiguousDetail":`The same bot and group have multiple full-group capture connections. Use a separate bot for each Agent or keep only one full-group connection.`,"lark.health.routeMismatch":`Message did not match this Goal Topic`,"lark.health.routeMismatchDetail":`The event came from another group or Topic. Reconnect this Goal to the correct group, then send a new @ mention.`,"lark.health.routeUnavailable":`Message cannot be routed to the Goal`,"lark.health.routeUnavailableDetail":`Connection data is incomplete. Reconnect this Goal, then send a new @ mention.`,"lark.health.starting":`Starting`,"lark.health.startingDetail":`LoopX is starting message event listening for this App.`,"lark.health.unavailable":`Auto reply unavailable`,"lark.health.waiting":`Waiting`,"lark.incomingMessages":`Incoming messages`,"lark.ingressAsync":`Async inbox`,"lark.ingressAsyncDescription":`Write to the Agent private inbox for a later explicit drain.`,"lark.editPreservesIdentity":`Saving preserves this App, group and Topic. Old connections upgrade to the Agent inbox by default.`,"lark.conversationKind":`Connection purpose`,"lark.managerConversation":`Manager · live conversation`,"lark.workerConversation":`Worker Agent · background tasks`,"lark.managerConversationDescription":`The built-in manager responds as you chat and delegates long-running work to background Agents. Group and private conversations keep separate histories.`,"lark.ingressLegacy":`Upgrade available`,"lark.ingressLegacyDescription":`Save this connection to upgrade to the Agent inbox. Existing messages remain in the same Topic.`,"lark.ingressQueue":`Queuing`,"lark.ingressQueueDescription":`Enter the same Agent Session's bounded FIFO queue and run after the current Turn.`,"lark.ingressSteering":`Steering`,"lark.ingressSteeringDescription":`Deliver to the active Turn and reject safely when no exact active Turn exists.`,"lark.loading":`Loading Lark configuration…`,"lark.management":`Lark management`,"lark.openEventSettings":`Open Feishu event settings`,"lark.mentions":`Mentions`,"lark.mentionsOnly":`Mentions only`,"lark.needsMessagePermissions":`Needs message permissions`,"lark.needsSetup":`Needs setup`,"lark.newApp":`New Lark App`,"lark.noAgentConfigured":`No Agent configured`,"lark.noConnections":`No matching connections.`,"lark.noProfiles":`No lark-cli App profiles are available yet.`,"lark.profileName":`Profile name`,"lark.profileValidation":`Profile can contain only letters, numbers, periods, underscores, and hyphens.`,"lark.processing":`Processing`,"lark.region":`Region`,"lark.registerAnother":`+ Register another Lark App — Create through Feishu`,"lark.reopenFeishu":`Reopen Feishu`,"lark.settingsConfigure":`Configure {goal}`,"lark.settingsDisconnect":`Disconnect {goal}`,"lark.replyMode":`Reply mode`,"lark.replyModeDescription":`Replies are limited to the source Topic to prevent cross-group or cross-Goal delivery.`,"lark.reusableApps":`{count} reusable Apps`,"lark.reusableWorkspaceApp":`Reusable workspace App`,"lark.routesUnverified":`{count} Lark routes pending verification`,"lark.saveConnection":`Save connection`,"lark.searchConnections":`Search Lark connections`,"lark.searchPlaceholder":`Search Apps, groups, Goals, or topics`,"lark.setupCopy":`LoopX opens the official Feishu creation page through lark-cli. App credentials stay in the system Keychain; LoopX stores only the profile reference.`,"lark.someoneMentions":`Someone mentions the Agent`,"lark.targetAgent":`Target Agent`,"lark.targetAgentDescription":`Choose a registered Agent in this Goal. This connection delivers to one Agent; it does not broadcast or grant permissions. Steering and Queuing require that Agent's exact active Session.`,"lark.agentUnavailable":`{agent} · no longer available`,"lark.selectRegisteredAgent":`Select an available registered Agent before connecting. The previous Agent will not be replaced automatically.`,"lark.topicPreview":`Topic preview`,"lark.topicReply":`Topic reply`,"lark.trigger":`Trigger`,"lark.waitingFeishu":`Waiting for Feishu`,"lark.waitingFeishuDescription":`Complete Feishu authorization in the new window. This page updates automatically when it is ready.`,"lark.waitingLink":`Generating the official Feishu creation link…`,"lark.error.appCreate":`Lark App creation failed`,"lark.error.appRequired":`Select a Lark App profile.`,"lark.error.bind":`Connection failed`,"lark.error.bindPreview":`Connection preview failed`,"lark.error.configuration":`Could not load Lark configuration`,"lark.error.groupLookup":`Could not read groups joined by this bot. Check the bot status and try again.`,"lark.error.groupLoad":`Could not load group chats`,"lark.error.invalidApp":`The Lark App profile is unavailable or has not completed authorization.`,"lark.error.messagePermissions":`This App lacks the bot permissions required for automatic replies. Enable im:message.group_at_msg:readonly and im:message:send_as_bot, publish a new version, then refresh.`,"lark.error.provider":`The Feishu API call failed without a verified receipt. Try again later.`,"lark.error.setupPoll":`Could not read creation status`,"lark.error.setupStart":`Could not start Lark App creation`,"lark.error.cliExecutable":`The configured lark-cli was found but cannot run. Check the installation or launch arguments.`,"lark.error.cliMissing":`lark-cli was not found. Install lark-cli and restart LoopX.`,"lark.error.cliStart":`lark-cli failed to start. Check the installation and restart LoopX.`,"lark.error.disconnect":`Disconnect failed`,"notifications.autoNotify":`Send automatically when your confirmation is required`,"notifications.bind":`Bind notification group`,"notifications.bindConfirm":`Bind “{goal}” to “{target}”. LoopX will verify that the bot is in the group and send a confirmation message.`,"notifications.bindFailed":`Binding failed`,"notifications.bound":`Bound`,"notifications.confirmBind":`Confirm binding`,"notifications.description":`Send Goal changes that need your confirmation to a Feishu group. Bindings and automatic delivery use the existing channel.`,"notifications.disabled":`Disabled`,"notifications.group":`Notification group: {target}`,"notifications.loadFailed":`Could not load notification groups`,"notifications.noTargets":`No notification groups are available. Group delivery uses a private bot identity; configure one from the terminal first:`,"notifications.notBound":`Not bound`,"notifications.recent":`Latest {time}`,"notifications.sentCount":`{count} sent`,"notifications.settings":`Goal notification bindings`,"notifications.setupFailed":`Could not update settings`,"notifications.title":`Feishu group notifications`,"proposal.field.agentId":`Agent`,"proposal.field.cadence":`Frequency`,"proposal.field.completionCriteria":`Completion criteria`,"proposal.field.executionBoundary":`Execution boundary`,"proposal.field.goalId":`Goal ID`,"proposal.field.heartbeat":`Heartbeat`,"proposal.field.initialTodos":`Initial tasks`,"proposal.field.objective":`Objective`,"proposal.field.operation":`Operation`,"proposal.field.operationState":`Operation state`,"proposal.field.resultDelivery":`Result delivery`,"proposal.field.confirmationBoundary":`Confirmation boundary`,"proposal.field.expiresAt":`Expires at`,"proposal.field.permission":`Permission`,"proposal.field.reason":`Reason`,"proposal.field.stopCondition":`Stop condition`,"proposal.field.target":`Check target`,"proposal.field.timezone":`Timezone`,"proposal.field.title":`Title`,"proposal.field.workspace":`Execution workspace`,"actionReview.targetChanged":`The preview target does not match the requested Goal and operation. Generate a new preview.`,"actionReview.ready_stop":`Pausing is reversible. This validated preview can apply directly; completion still requires verified readback.`,"actionReview.resume_review":`Review before restoring automatic scheduling. Quota, gates and Todo constraints still apply.`,"actionReview.delete_review":`Review removal of this stopped Goal from the registries. Project files and history are preserved.`,"actionReview.action_review":`Review the target and impact before applying this proposal.`,"actionReview.protected_action":`This action needs explicit review. Confirmation cannot replace required authority.`,"actionReview.unknown_permission":`The permission classification is not recognized. Recheck the proposal before continuing.`,"actionReview.unknown_action":`This lifecycle operation is not recognized. Recheck the proposal before continuing.`,"actionReview.incomplete_proposal":`The preview is missing validation or an available apply transition. Generate a new preview.`,"actionReview.authority_gate":`A gate prevents execution. Resolve its requirements, then recheck the proposal.`,"actionReview.stale_proposal":`The source state changed. Generate a new preview; the previous decision no longer applies.`,"actionReview.apply_pending":`Execution is in progress. Wait for its result before retrying.`,"actionReview.readback_verified":`The action completed and its resulting state was verified.`,"actionReview.readback_unverified":`The action returned without verified readback. Completion is not confirmed; recheck the state.`,"actionReview.operation_group_confirmation":`This exact request can only be confirmed on its original card in the bound Feishu group. The Dashboard does not expose a local execution control.`,"actionReview.operation_result_delivery_pending":`The operation outcome was recorded, but the original group result card has not passed readback verification yet.`,"actionReview.apply_failed":`Execution did not complete. Check the failure and regenerate the preview before retrying.`,"actionReview.inactive_proposal":`This proposal is no longer ready to execute. Recheck it before continuing.`,"proposal.gate.default":`Host confirmation required`,"proposal.impact.default":`After confirmation, the canonical LoopX service will write the state change.`,"proposal.impact.goalCreate":`After confirmation, LoopX will create the Goal and its initial Todo, then let the selected Agent start the first run.`,"proposal.impact.lifecycleDelete":`After confirmation, this stopped Goal is removed from the source and global registries. Project files, history state, and backups are preserved.`,"proposal.impact.lifecycleResume":`After confirmation, the Goal becomes eligible for automatic scheduling and returns to Active Goals. Actual execution still follows quota, Gate, and Todo constraints.`,"proposal.impact.lifecycleStop":`After confirmation, automatic progress stops and the Goal moves to the collapsed Stopped list. History, Todos, and evidence remain available for resuming.`,"proposal.impact.protected":`This action must be completed through the protected LoopX write service.`,"proposal.impact.operation":`The exact terms are read-only here. Confirm or reject the same immutable request in the bound Feishu group; confirmation consumes one canonical claim.`,"proposal.primary.apply":`Confirm and apply`,"proposal.primary.goalCreate":`Create Goal and start first run`,"proposal.primary.lifecycleDelete":`Delete Goal`,"proposal.primary.lifecycleResume":`Resume Goal`,"proposal.primary.lifecycleStop":`Stop Goal`,"proposal.primary.todoStart":`Create task and start execution`,"proposal.primary.operationGroup":`Confirm in Feishu group`,"proposal.primary.operationResultPending":`Result card delivery pending`,"proposal.primary.operationResultVerified":`Verified result`,"proposal.resultDelivery.verified":`Verified in the original group card`,"proposal.resultDelivery.pending":`Pending verified return to the original group card`,"proposal.summary.goalCreate":`Create Goal: {title}`,"proposal.summary.heartbeat":`Set a Heartbeat for the current Goal`,"proposal.summary.lifecycleDelete":`Delete Goal: {title}`,"proposal.summary.lifecycleResume":`Resume Goal: {title}`,"proposal.summary.lifecycleStop":`Stop Goal: {title}`,"proposal.summary.monitor":`Create a scheduled check for the current Goal: {target}`,"proposal.teamPlan.gapReason.capabilityNotGranted":`Required capability not granted`,"proposal.teamPlan.gapReason.audienceNotAuthorized":`Required access not authorized`,"proposal.teamPlan.pending":`Pending`,"proposal.teamPlan.assignedHint":`Assignment recorded. See the Goal for execution progress.`,"proposal.teamPlan.recoveredHint":`No new tasks created. See the Goal for current progress.`,"proposal.teamPlan.originalPlan":`View original plan`,"proposal.teamPlan.viewResult":`View result`,"proposal.teamPlan.openGoal":`Open Goal`,"proposal.teamPlan.resultTitle":`Assignment result`,"proposal.teamPlan.retry":`Retry assignment`,"proposal.teamPlan.retryHint":`Retry this assignment to recover its result without duplicating tasks.`,"proposal.summary.teamPlan":`Assign {count} tasks for {goal}`,"proposal.impact.teamPlan":`Confirm to assign the ready tasks. Unavailable assignments stay pending.`,"proposal.primary.teamPlan":`Confirm assignment`,"proposal.field.laneGaps":`Unstaffed lanes`,"proposal.field.quotaEnvelope":`Quota envelope`,"proposal.teamPlan.acceptanceShort":`acceptance reference`,"proposal.teamPlan.advisory":`planning context; not enforced by this confirmation`,"proposal.teamPlan.appliedPartially":`{created} assigned · {gaps} pending`,"proposal.teamPlan.appliedAlreadyPresent":`Original assignment recovered`,"proposal.teamPlan.applied":`{count} tasks assigned`,"proposal.teamPlan.gapLane":`unstaffed`,"proposal.teamPlan.laneUnstaffed":`staffing gap, no first Todo`,"proposal.teamPlan.gapReason.agentNotRegistered":`the Agent is not registered for this Goal`,"proposal.teamPlan.gapReason.actionKindNotSupported":`this host does not ship that action kind`,"proposal.workspace.current":`Current local workspace (no Repository bound)`,"proposal.workspace.named":`{workspace} (execution environment only; does not bind a repository)`,"proposal.workspaceGate.agentImpact":`Bind an Agent identity, then recheck the original action. No Goal has been written.`,"proposal.workspaceGate.agentTitle":`Bind an Agent first`,"proposal.workspaceGate.defaultSummary":`Select the Goal workspace.`,"proposal.workspaceGate.selectionImpact":`After selecting a workspace, LoopX will show the confirmation preview again. The selection itself does not write state.`,"proposal.workspaceGate.selectionTitle":`Select Goal workspace`,"projection.agentAdvancingGoal":`Agent is advancing the current Goal`,"projection.agentIdle":`Nothing needs your attention`,"projection.agentNeedsDecision":`Agent is waiting for your decision`,"projection.agentPreparingNextStep":`Agent is preparing the next step`,"projection.agentStopped":`Stopped by you; history, Todos, and evidence are preserved`,"projection.agentWaitingExternal":`Waiting for an external condition`,"projection.confirmAgentDecision":`Confirm the permission or decision the Agent needs next`,"projection.events24h":`{count} events in the last 24 hours`,"projection.firstReadOnlyAdapterCheck":`Run the first read-only adapter check and save progress`,"projection.goalVerified":`Goal state, Todos, and registration information verified`,"projection.latestRun":`Latest run`,"projection.latestValidation":`Latest validation`,"projection.nextUpdatePending":`Waiting for LoopX to update the next step`,"projection.publicSafeProjection":`Public-safe status projection`,"projection.refreshState":`Refresh LoopX status and confirm the current progress is still valid`,"projection.runEvidenceAvailable":`Run evidence is available`,"projection.runRecorded":`The latest LoopX run is recorded`,"projection.statusRefreshNeeded":`LoopX status needs to be refreshed`,"projection.todoStatusUpdated":`Todo status updated; confirming the next step`,"projection.validationRecorded":`The latest validation is recorded`,"runs.completed":`Completed`,"runs.failed":`Needs review`,"runs.interrupted":`Interrupted`,"runs.queued":`Scheduled`,"runs.ready":`Ready`,"runs.resumeFailed":`Recovery failed`,"runs.running":`Running`,"runs.unknown":`Unknown`,"runs.waiting":`Waiting`,"schedule.active":`Running`,"schedule.heartbeat":`Goal Heartbeat`,"schedule.monitor":`Scheduled & continuous task`,"schedule.paused":`Paused`,"schedule.summary":`Continuously checked under LoopX scheduling constraints`,"schedule.defaultTarget":`Check the current Goal for blockers, progress, and new outputs`,"schedule.unsupportedCalendar":`Scheduled checks do not currently support an exact weekday or time. Use a fixed interval such as “Every 30 minutes,” “Every 2 hours,” or “Daily.” The draft was preserved and no confirmation preview was created.`,"source.add":`Add source`,"source.addConfigured":`Add read-only source`,"source.addMethod":`Source setup method`,"source.addSsh":`Add SSH source`,"source.closeForm":`Close source form`,"source.configured":`Configured SSH`,"source.configuredCount":`Local SSH Hosts · {count}`,"source.configuredGroup":`Configured SSH Hosts · {count} (select to add)`,"source.connected":`Connected`,"source.connecting":`Connecting`,"source.controlPlane":`Control plane source`,"source.copy":`Copy`,"source.copyCommand":`Copy SSH tunnel command`,"source.copyError":`Could not copy the command. Copy it manually below.`,"source.copied":`Copied`,"source.description":`All explicit Hosts are loaded, including Include files. Wildcards are not listed. Run the command first; LoopX never reads SSH keys or configuration details.`,"source.host":`Local SSH Host`,"source.hostEmpty":`No explicit SSH Hosts are available in ~/.ssh/config.`,"source.hostLoadError":`Could not read local SSH Hosts.`,"source.hostPlaceholder":`Enter or search for a Host`,"source.invalid":`The SSH source settings are invalid.`,"source.loadingHosts":`Loading…`,"source.localInteractive":`Local interactive`,"source.localPort":`Local port`,"source.manual":`Manual URL`,"source.manualDescription":`Remote sources always remain read-only projections and never inherit local write permissions.`,"source.name":`Name`,"source.namePlaceholder":`Remote development machine`,"source.notAvailable":`Unavailable`,"source.readOnly":`SSH tunnel · read only`,"source.readOnlyNoticeDescription":`You can view Goals, Tasks, evidence, and run status. Writes, guidance, and Agent sessions remain on the source host.`,"source.readOnlyNoticeTitle":`Remote read-only projection`,"source.readOnlyWriteError":`Remote SSH tunnel sources are read-only projections and cannot perform control-plane writes.`,"source.refreshHosts":`Reload SSH Hosts`,"source.remove":`Remove source {source}`,"source.removeCurrent":`Remove current source`,"source.select":`Select control plane source`,"source.selectHost":`Select a configured SSH Host.`,"source.statusUrl":`Local forwarded URL`,"source.tunnelCommandPending":`Select a Host to generate the tunnel command`,"machine.absent":`Not configured`,"machine.action.create":`Create machine policy`,"machine.action.delete":`Remove machine policy`,"machine.action.unchanged":`No write required`,"machine.action.update":`Update machine policy`,"machine.applied":`Machine policy applied and read back successfully.`,"machine.applyError":`Machine policy could not be applied.`,"machine.applyPreview":`Apply reviewed preview`,"machine.changedNamespaces":`Changed namespaces`,"machine.capabilityCatalog":`Machine capability catalog`,"machine.capabilityEmpty":`No machine-configurable capabilities are registered.`,"machine.configured":`Configured`,"machine.confirmRollback":`Confirm rollback`,"machine.currentRevision":`Current revision`,"machine.currentValue":`Current machine value`,"machine.description":`Browse the same capability catalog as Goal settings. Configure supported machine defaults here; Goal-only capabilities are labeled explicitly.`,"capabilities.rawJson":`Advanced: raw JSON`,"machine.goalOnly":`This capability currently supports Goal configuration only. Open a Goal’s capability settings to configure it; no machine-wide default is applied.`,"machine.desiredRevision":`Desired revision`,"machine.editorUnavailable":`No editor is installed for this namespace`,"machine.editorUnavailableDescription":`The namespace remains visible in the registry. Install or upgrade its Dashboard editor before changing it.`,"machine.editorMode":`Editor mode`,"machine.liveDefault":`Live default; Goal override wins`,"machine.liveDefaultDescription":`Goals without an explicit override read the current machine policy at the capability’s next decision point. Changes and removal affect those existing Goals immediately; an explicit Goal override stays pinned.`,"machine.credentialTitle":`Operator model credential`,"machine.credentialDescription":`The key and endpoint the steward channel and the managed host authenticate with on this machine. The key is stored in its own owner-only file, never in the machine configuration that is projected here, and it is never read back — only its fingerprint is.`,"machine.credentialApiKey":`API key`,"machine.credentialApiKeyPlaceholder":`Paste a key to store it; leave blank to keep the stored one`,"machine.credentialBaseUrl":`Endpoint base URL`,"machine.credentialBaseUrlPlaceholder":`https://endpoint.example/v1 (blank keeps the endpoint default)`,"machine.credentialStore":`Store credential`,"machine.credentialClearKey":`Clear stored key`,"machine.credentialClearUrl":`Clear stored endpoint`,"machine.credentialConfigured":`configured`,"machine.credentialAbsent":`not configured`,"machine.credentialInvalid":`unreadable — repair required`,"machine.credentialSourceMachine":`this machine's stored credential`,"machine.credentialSourceEnvironment":`the service environment`,"machine.credentialSourceUnset":`no source`,"machine.credentialFingerprint":`fingerprint`,"machine.credentialStored":`Credential stored. The next turn uses it; no restart is needed.`,"machine.credentialCleared":`Stored credential cleared.`,"machine.credentialError":`The credential could not be stored.`,"machine.credentialBoundary":`Storing a credential grants no authority: it does not select an executor, model, or reasoning effort.`,"machine.genericNamespaceDescription":`Edit this registered namespace as JSON. LoopX validates it with the capability-owned schema before previewing any write.`,"machine.jsonConfiguration":`Namespace configuration (JSON)`,"machine.jsonConfigurationHelp":`Only this namespace is updated. Other machine configuration is preserved, and Apply remains locked to the reviewed preview revision.`,"machine.jsonEditor":`JSON`,"machine.editJson":`Edit JSON`,"capabilities.jsonConfiguration":`Goal configuration (JSON)`,"capabilities.jsonHelp":`Edit registered fields for this Goal. Changes require a new preview before applying.`,"capabilities.jsonInvalid":`Enter a valid JSON object using only registered editable fields.`,"machine.backToForm":`Back to form`,"machine.jsonInvalid":`Enter one valid JSON object before previewing changes.`,"machine.loadError":`Machine configuration could not be loaded.`,"machine.invalidStoredConfiguration":`Stored machine configuration needs repair`,"machine.invalidStoredConfigurationDescription":`Stored values are hidden because they no longer match the installed contract. Review the affected capability, then Preview and Apply its replacement; unrelated namespaces remain unchanged.`,"machine.machinePolicy":`Machine policy`,"machine.namespaceCount":`Registered namespaces`,"machine.namespaces":`Configuration namespaces`,"machine.periodicReport":`Periodic reports`,"machine.periodicReportDescription":`Default report policy for every Goal without an explicit override. Goal scheduling and delivery consume the effective configuration.`,"machine.periodicReportActivation":`Enabled means automatic delivery at validated stage boundaries`,"machine.periodicReportActivationDescription":`This is not a weekly timer. When LoopX validates a Goal stage completion, an Agent prepares and freezes the report, then automatically delivers it through the configured Goal Channel. The enabled subscription is standing delivery authority; failures and route drift stop closed for repair.`,"machine.changeQualityActivation":`Qualification is a quality gate, not new authority`,"machine.changeQualityActivationDescription":`Goals that inherit this policy qualify their exact final diff. safe_fix allows at most one bounded fix pass inside existing write authority; this setting never grants file, permission, or merge authority.`,"machine.replanCadenceActivation":`Review cadence changes timing, not execution authority`,"machine.replanCadenceActivationDescription":`Goals without an explicit override read this threshold before the next review decision. It does not create Turns, spend quota, or grant authority.`,"machine.preview":`Review exact machine change`,"machine.previewChanges":`Preview changes`,"machine.previewError":`A machine-policy preview could not be created.`,"machine.previewLocked":`Apply is locked to this exact revision. If machine state changes, LoopX requires a new preview.`,"machine.previewRollback":`Preview rollback`,"machine.previewRemoval":`Preview removal`,"machine.profilePreset":`Profile preset`,"machine.profilePresetHelp":`A capability-owned preset, such as weekly-progress.`,"machine.registry":`Typed registry`,"machine.requiredFields":`Enable requires a profile preset, Goal Channel route, and valid timezone.`,"machine.revision":`Machine revision`,"machine.revisionLockedReady":`All changes require a preview and apply only while that exact machine revision remains current.`,"machine.rollbackAvailable":`Rollback is available for the last apply`,"machine.rollbackDescription":`Preview the stored prior revision before restoring it.`,"machine.rollbackError":`The rollback could not be completed.`,"machine.rollbackPreviewDescription":`The prior revision is ready to restore. Confirm to apply this rollback.`,"machine.rolledBack":`The prior machine policy was restored and verified.`,"machine.removed":`Machine policy removed and the resulting configuration read back successfully.`,"machine.routeRef":`Goal Channel route`,"machine.routeRefHelp":`Use a public route alias; credentials and provider identifiers never enter this form.`,"machine.timezone":`Timezone`,"machine.timezoneHelp":`Use an IANA timezone, for example Asia/Shanghai.`,"machine.title":`Machine configuration`,"machine.unchanged":`Machine policy already matches this preview; nothing was written.`,"machine.visualEditor":`Guided`,"capabilities.atomicOverride":`Goal override is atomic`,"capabilities.atomicOverrideDescription":`A complete Goal value wins over the machine default. LoopX never mixes individual fields across scopes.`,"capabilities.applyFailed":`Goal capability changes were not applied.`,"capabilities.applyPreview":`Apply preview`,"capabilities.catalog":`Goal capability catalog`,"capabilities.chooseGoal":`Choose a Goal before inspecting its capabilities.`,"capabilities.defaultValue":`Declared default`,"capabilities.description":`Inspect the capabilities available to this Goal and the exact scope of each setting.`,"capabilities.editorPrepared":`Typed editor contract available`,"capabilities.effectiveSource":`Effective source`,"capabilities.empty":`No capability descriptors are available for this Goal.`,"capabilities.fields":`Registered fields`,"capabilities.goalPolicy":`Goal capability policy`,"capabilities.goalScope":`Goal`,"capabilities.goalValue":`Current Goal value`,"capabilities.loadFailed":`Could not load Goal capabilities`,"capabilities.larkInboxNotificationDescription":`This switch controls automatic group messages for human gates. Incoming Lark events remain available when it is off.`,"capabilities.larkInboxNotificationSetting":`Human-gate group notifications`,"capabilities.loading":`Loading Goal capabilities…`,"capabilities.machineOnly":`This capability is configured only at machine scope.`,"capabilities.machineValue":`Live machine default`,"capabilities.machineScope":`Machine`,"capabilities.previewOnly":`Inspection is live. Goal writes remain unavailable until the revision-locked preview and apply path is connected.`,"capabilities.preview":`Revision-locked preview`,"capabilities.previewChanges":`Preview changes`,"capabilities.restoreInheritance":`Restore machine-default inheritance`,"capabilities.previewFailed":`Could not preview Goal capability changes.`,"capabilities.previewLocked":`Apply will re-check this exact plan revision and reject stale changes.`,"capabilities.partialWrite":`Goal value saved; shared projection needs reconciliation`,"capabilities.partialWriteDescription":`The source Goal configuration was written and read back. Its shared runtime projection did not synchronize, so do not submit the change again.`,"capabilities.refreshSource":`Refresh source value`,"capabilities.readOnly":`Read-only capability`,"capabilities.revisionLockedReady":`Changes require a preview and are applied only when its exact revision is still current.`,"capabilities.retry":`Retry`,"capabilities.source.capability_default":`Capability default`,"capabilities.source.goal_override":`Goal override`,"capabilities.source.machine_default":`Live machine default`,"capabilities.source.not_configured":`Not configured`,"capabilities.title":`Goal capabilities`,"settings.close":`Close settings`,"settings.appearance":`Appearance`,"settings.appearanceDescription":`Manage workspace display preferences in this browser.`,"settings.appearanceTabDescription":`Theme and display preferences`,"settings.capabilitiesTabDescription":`Capability overrides for this Goal`,"settings.back":`Back to workspace`,"settings.categories":`Settings categories`,"settings.description":`Manage workspace preferences and integrations.`,"settings.eyebrow":`Workspace preferences`,"settings.general":`General`,"settings.goalConnections":`Goal connections`,"settings.language":`Language`,"settings.modelProvider":`Model provider`,"settings.globalCapabilities":`Global capabilities`,"settings.languageDescription":`Choose the language used by the LoopX desktop workspace.`,"settings.languageEnglishDescription":`Use English for navigation, settings, and workspace controls.`,"settings.languageEnglish":`English`,"settings.languageSimplifiedChineseDescription":`Use Simplified Chinese for navigation, settings, and workspace controls.`,"settings.languageSimplifiedChinese":`Simplified Chinese`,"settings.languageStoredLocally":`This preference is stored only on this device.`,"settings.languageTabDescription":`Interface language for this device`,"settings.larkTabDescription":`Apps, group chats, and Goal Topic connections`,"settings.machineTabDescription":`Typed defaults shared by capabilities on this machine`,"settings.notifications":`Notifications`,"settings.open":`Settings`,"settings.themeDefault":`Paper`,"settings.themeDefaultDescription":`Calm and lightweight for long-running work.`,"settings.themeDescription":`Choose the workspace visual style. This preference is stored in the current browser.`,"settings.themeHighContrast":`High contrast`,"settings.themeHighContrastDescription":`Stronger borders and more prominent state blocks.`,"settings.themeLoopx":`LoopX standard`,"settings.themeLoopxDescription":`Precise monochrome surfaces, Geist type, and quiet hairline structure.`,"settings.title":`Settings`,"settings.workspaceDisplay":`Workspace display`,"settings.workspaceTheme":`Workspace theme`,"session.closeRecord":`Exit run record`,"session.details":`Session details`,"session.record":`Execution Session · Run record`,"session.recordDescription":`The timeline now shows messages and Turn records from this Session.`,"sidebar.createGoal":`Create Goal`,"sidebar.delete":`Delete`,"sidebar.deleteGoal":`Delete Goal`,"sidebar.manager":`LoopX Manager`,"sidebar.notifications":`Settings`,"sidebar.owner":`Personal workspace`,"sidebar.product":`Personal Agent workspace`,"sidebar.resume":`Resume`,"sidebar.resumeGoal":`Resume Goal`,"sidebar.stop":`Stop`,"tasks.historyLoading":`Loading history…`,"tasks.historyError":`History could not be loaded.`,"tasks.historyExpired":`History snapshot expired. Reload to continue.`,"tasks.historyRetry":`Reload`,"tasks.historyEnd":`End of completed history`,"tasks.historyMore":`Load more`,"tasks.historyLocalOnly":`Open this machine’s Dashboard to browse full history.`,"sidebar.sortGoals":`Reorder Goals`,"sidebar.dragGoal":`Drag to reorder, or use Reorder Goals`,"sidebar.moveUp":`Move {goal} up`,"sidebar.moveDown":`Move {goal} down`,"sidebar.goalMoved":`{goal} moved to position {position}`,"sidebar.orderNotSaved":`Order changed for this visit; browser storage is unavailable.`,"sidebar.stopGoal":`Stop Goal`,"sidebar.stopped":`Stopped`,"sidebar.stoppedLoading":`Loading stopped Goals`,"sidebar.stoppedLoadFailed":`Stopped Goals could not be loaded. Active Goals remain available.`,"sidebar.retryStopped":`Retry`,"state.completed":`Completed`,"state.needsRepair":`Needs repair`,"state.needsYou":`Needs you`,"state.quiet":`Quiet`,"state.running":`Running`,"state.stopped":`Stopped`,"state.waiting":`Waiting`,"tasks.blocked":`Blocked`,"tasks.agentLane":`Work Agent`,"tasks.agentLaneDescription":`Filter this Goal's projected work lanes`,"tasks.agentLaneFilter":`Filter by work Agent`,"tasks.allAgentLanes":`All Agents ({count})`,"tasks.chatAgentReplied":`Agent replied`,"tasks.chatPending":`Sent to Agent`,"tasks.chatPendingDescription":`Processing. Tasks update only after a task operation is confirmed.`,"tasks.chatRecent":`Recent conversation`,"tasks.chatUnchangedDescription":`This conversation did not directly change Tasks. Convert the reply to a Task draft and confirm it when execution is needed.`,"tasks.chatViewReply":`View reply`,"tasks.convertToTask":`Convert to Task`,"tasks.completed":`Completed`,"runs.discoveryPartial":`Some execution details are unavailable. Reconnecting; task summaries are not live execution status.`,"runs.discoveryOffline":`Execution service unavailable. Reconnecting; retained task summaries may be stale.`,"files.openConversation":`Go to conversation`,"files.exportSummary":`Export summary`,"tasks.viewDescription":`Decisions first, then work and recent completions`,"tasks.viewLabel":`Task view`,"tasks.listView":`List`,"tasks.boardView":`Board`,"tasks.completedSummary":`{count} tasks completed. Recent details are projected by the control plane when needed.`,"tasks.emptyCompleted":`No completed tasks yet.`,"tasks.emptyConfirm":`No tasks waiting for confirmation.`,"tasks.emptyRunning":`No queued or running tasks.`,"tasks.emptySchedules":`No scheduled tasks.`,"tasks.emptyGoal":`This Goal has no tasks yet. Describe the next step below and LoopX will show a confirmation preview first.`,"tasks.markComplete":`Mark complete: {name}`,"tasks.moreActions":`More actions: {name}`,"tasks.openExecution":`View execution: {name}`,"tasks.pending":`Pending`,"tasks.pendingAndRunning":`Queued / Running`,"tasks.scheduled":`Scheduled & continuous`,"tasks.sessionError":`Session issue`,"tasks.waiting":`Queued`,"tasks.waitingAge":`Waiting {age}`,"tasks.viewExecution":`View execution`,"tasks.viewResult":`View result`,"time.days":`{count} days`,"time.hours":`{count} hours`,"timeline.emptyGoal":`This Goal has no new activity`,"timeline.emptyGoalDescription":`Ask for progress or send new guidance.`,"timeline.emptyWorkspace":`Your workspace is quiet today`,"timeline.emptyWorkspaceDescription":`Describe a Goal to the LoopX Manager, or ask what deserves attention today.`,"timeline.gateHistory":`{count} historical Gates`,"timeline.pending":`Working…`,"returnDelivery.queued":`Return queued`,"returnDelivery.verifying":`Verifying delivery without resending`,"returnDelivery.delivered":`Delivered to the original audience`,"returnDelivery.reconciled":`Delivery verified after recovery`,"returnDelivery.unverified":`Delivery remains explicitly unverified`,"timeline.runCompleted":`{run}: completed`,"timeline.review":`Review`,"timeline.reviewAndConfirm":`Review and confirm`,"timeline.waitingConfirmation":`Needs your confirmation`},"zh-CN":{"acceptance.connected":`已连接`,"acceptance.mapped":`已建立项目映射`,"acceptance.refreshed":`已刷新状态`,"acceptance.inspected":`已检查适配器`,"acceptance.recorded":`已记录执行`,"acceptance.judged":`已记录反馈`,"acceptance.approved":`已记录批准`,"acceptance.ready":`已记录控制器就绪`,"acceptance.attentionSource":`当前状态`,"acceptance.visionSource":`Agent 验收条件`,"acceptance.todoSource":`任务状态`,"acceptance.runSource":`最新执行证据`,"acceptance.title":`验收观察`,"acceptance.unavailable":`验收观测不可用,Goal 是否达成仍未知。`,"acceptance.partial":`当前仅有部分观测。任务完成或缺口列表为空,都不能证明 Goal 已通过验收。`,"acceptance.gaps":`仍需补充的证据`,"acceptance.reasonUnknown":`来源未提供原因`,"acceptance.unknown":`未知`,"acceptance.required":`所需证据或条件`,"acceptance.observed":`观测时间`,"acceptance.noGaps":`现有观测中没有缺口,尚未评估完整验收条件。`,"acceptance.guards":`待处理的门禁决策`,"acceptance.noGuards":`现有观测中没有待处理的门禁决策。`,"acceptance.scope":`决策范围`,"acceptance.next":`当前状态给出的下一步`,"acceptance.historical_progress":`已记录的历史进展`,"acceptance.historical":`历史生命周期记录不授予权限,也不代表通过验收。`,"acceptance.missing":`未获取的来源:`,"acceptance.truncated":`仅展示前 12 条观测。`,"common.actions":`操作`,"common.agent":`Agent`,"common.allMessages":`所有消息`,"common.cancel":`取消`,"common.close":`关闭`,"common.closeActionReceipt":`关闭操作回执`,"common.confirm":`确认`,"common.export":`导出`,"common.failed":`失败`,"common.goal":`Goal`,"common.loading":`加载中…`,"common.none":`无`,"common.off":`关闭`,"common.on":`开启`,"common.open":`打开`,"common.owner":`Owner`,"common.readOnly":`只读`,"common.recently":`刚刚`,"common.status":`状态`,"common.task":`Task`,"common.you":`你`,"common.waiting":`等待中`,"composer.addImage":`添加图片`,"composer.agentProgress":`向 Agent 获取进度报告`,"composer.agentProgressPrompt":`请给我一份当前 Goal 的进度报告:已完成、执行中、阻塞和下一步。`,"composer.blockers":`看阻塞`,"composer.attachImageHint":`选择、粘贴或拖入图片`,"composer.clarifyDefer":`暂缓 Todo 需要可自动判断的恢复条件。请补充 todo_done:、pr_merged:[owner/repo]#、capacity_available: 或 resume_at:<带时区 RFC3339 时间>。`,"composer.clarifySingleAction":`这句话包含多个可能修改状态的操作。请一次描述一项操作,我会逐项展示确认预览。`,"composer.evidence":`查证据`,"composer.createGoal":`创建新 Goal`,"composer.createGoalDraft":`Goal 草稿`,"composer.createGoalDraftDescription":`补充内容后发送,LoopX 会先展示待确认操作。`,"composer.createGoalDraftLead":`我想创建一个长期 Goal:`,"composer.createGoalTemplate":`我想创建一个长期 Goal: 目标: 完成标准: 执行边界(可选): @@ -50,7 +50,7 @@ Goal: Goal: 频率:每天 停止条件:Goal 完成 -通知:仅在需要我时`,"composer.nextAction":`询问下一步`,"composer.nextActionPrompt":`我现在该做什么?`,"composer.send":`发送`,"composer.sendMessage":`向 LoopX 发送消息`,"composer.sendMessageHint":`发送消息`,"composer.sentImageAlt":`移除图片 {name}`,"conversation.agentPending":`正在整理…`,"conversation.close":`关闭对话回执`,"conversation.convertHint":`将 Agent 最新回复转为 Task 草稿`,"conversation.full":`查看完整对话`,"conversation.receipt":`对话回执`,"conversation.replying":`正在回复`,"conversation.title":`管家对话`,"conversation.toTask":`转为 Task`,"digest.away":`自上次访问以来的运行记录`,"digest.completed":`新增完成运行`,"digest.failed":`新增失败或中断`,"digest.needsYou":`当前待确认`,"feedback.applying":`正在执行:{title}`,"feedback.cancelFailed":`取消失败:{error}`,"feedback.completed":`已完成:{title}`,"feedback.executionFailed":`执行失败:{error}`,"feedback.gateRequired":`需要你确认:{summary}`,"feedback.notCompleted":`操作未完成:{status}`,"feedback.goalRefreshFailed":`已打开 Goal,但暂时无法刷新最新状态。请点击刷新重试。`,"feedback.preparingPreview":`正在准备确认预览:{title}`,"feedback.previewFailed":`无法准备确认预览:{error}`,"feedback.sendFailed":`发送失败:{error}`,"feedback.sendGenericError":`消息发送失败,请稍后重试。`,"feedback.stale":`状态已变化,操作未执行,请重新生成确认预览。`,"feedback.taskDraftCreated":`已根据回复生成 Task 草稿。编辑后发送,LoopX 会先展示确认预览。`,"goal.defaultTitle":`新的个人 Goal`,"goal.initialTodo":`按完成标准推进:{criteria}`,"goal.objectiveBoundary":`执行边界:{boundary}`,"goal.objectiveCompletion":`完成标准:{criteria}`,"drawer.advancedDiagnostics":`高级诊断`,"drawer.agentWorking":`Agent 正在继续执行,记录会自动更新。`,"drawer.analysis":`正在分析`,"drawer.apply":`确认并应用`,"drawer.applying":`正在应用…`,"drawer.attentionBlocking":`正在阻塞 Agent`,"drawer.attentionWaiting":`等待你的决定`,"drawer.autoNotify":`Human-gate 自动通知`,"drawer.branch":`分支`,"drawer.closeDetail":`关闭详情:返回{context}`,"drawer.connected":`已连接`,"drawer.correctionDescription":`消息会沿用当前 Goal、Todo 与 Agent Session 上下文。`,"drawer.correctionLabel":`与 {agent} 纠偏`,"drawer.correctionPlaceholder":`例如:先关注权限风险,暂时不要提交…`,"drawer.correctionSend":`发送纠偏`,"drawer.correctionTextarea":`输入纠偏信息:Goal {goal},Agent {agent},Run {run}`,"drawer.copyRepository":`复制仓库标识`,"drawer.copyRepositoryDone":`已复制仓库标识`,"drawer.copyRepositoryError":`复制失败,请检查浏览器剪贴板权限。`,"drawer.copyRepositorySuccess":`已复制,可粘贴到其他工具。`,"drawer.cost":`成本 24h / 7d`,"drawer.costShort":`成本`,"drawer.durationShort":`时长`,"drawer.period24h":`24 小时`,"drawer.period7d":`7 天`,"drawer.tokens":`Token 24 小时 / 7 天`,"drawer.tokensShort":`Token`,"drawer.usageNotMeasured":`未采集`,"drawer.currentGoal":`当前 Goal`,"attentionDetail.title":`事项说明`,"attentionDetail.request":`需要你做什么`,"attentionDetail.decision":`需要作出决定`,"attentionDetail.unknownRequest":`来源未明确,请先查看来源再判断`,"attentionDetail.open":`当前投影中待处理`,"attentionDetail.closed":`已关闭`,"attentionDetail.deferred":`已推迟`,"attentionDetail.superseded":`已被替代`,"attentionDetail.unknown":`来源未提供状态`,"attentionDetail.unavailable":`来源尚未确认当前事项,请刷新后再操作`,"attentionDetail.unknownReason":`来源尚未提供原因。`,"attentionDetail.targetTodo":`关联的待解锁 Todo`,"attentionDetail.targetAgent":`事项指定的 Agent`,"attentionDetail.scope":`声明的决策范围`,"attentionDetail.notProvided":`来源未提供`,"attentionDetail.replacement":`替代 Todo`,"attentionDetail.openReplacement":`打开替代事项`,"attentionDetail.boundary":`阅读详情不会关闭 gate 或授予权限;作出决定前仍需新的操作预览。`,"drawer.decisionDefaultEvidence":`当前状态没有附加公开安全证据;下一步仍会先展示 Preview。`,"drawer.decisionDefaultReason":`该决定会影响当前 Todo 的下一步执行。`,"drawer.decisionDefer":`稍后决定`,"drawer.decisionMore":`更多决定`,"drawer.decisionReject":`拒绝`,"drawer.decisionReview":`查看影响并决定`,"drawer.dependencies":`依赖`,"drawer.detailsAndActions":`详情与操作`,"drawer.duration":`运行时长 24h / 7d`,"drawer.evidence":`证据`,"drawer.executionHistory":`执行历史`,"drawer.executionRecord":`运行记录`,"drawer.executionRecordAndResult":`执行过程与结果`,"drawer.explainDecision":`解释此决定`,"drawer.gateApproveHint":`在终端执行一条命令即可完成审批:`,"drawer.gateRejectHint":`不同意就把末尾的 approve 换成 reject。执行后这条提醒会自动消失。`,"drawer.gateRequiresHost":`需要宿主确认`,"drawer.gateRequiresHostDescription":`页面无权直接批准这类权限变更,你的点击没有写入任何内容。`,"drawer.goalAutoRun":`当前 Goal 的自动运行`,"drawer.goalChanges":`当前 Goal 的待确认变更`,"drawer.goalDetails":`Goal 详情`,"drawer.group":`群聊`,"drawer.inspectorFull":`切换到全屏`,"drawer.inspectorFullView":`全屏查看`,"drawer.inspectorHalf":`切换到半屏`,"drawer.inspectorHalfView":`半屏查看`,"drawer.lastNotification":`最近通知`,"drawer.larkConfigure":`管理 Lark connection`,"drawer.larkConnect":`连接 Lark App`,"drawer.larkConnection":`Lark connection`,"drawer.larkNotConfigured":`未配置`,"drawer.larkNotConfiguredDescription":`配置后,当这个 Goal 出现需要你确认的变更时,会自动发飞书通知。`,"drawer.managerChanges":`管家待确认变更`,"drawer.moreActions":`更多操作`,"drawer.moreRunActions":`更多运行操作`,"drawer.nextTransition":`下一转换`,"drawer.noExecutionHistory":`暂无执行记录。`,"drawer.noRun":`尚未启动执行 Session`,"drawer.noRunDescription":`Agent 开始执行后,运行记录会稳定显示在这里。`,"drawer.notAssigned":`未分配`,"drawer.notLinked":`未关联`,"drawer.notSet":`未设置`,"drawer.outputDetails":`产出详情`,"drawer.outputRecorded":`该产出已记录到当前 Goal。`,"drawer.outputSafePreview":`公开安全产出预览`,"drawer.outputRun":`Run`,"drawer.outputTodo":`Todo`,"drawer.outputs":`本次运行产出`,"drawer.previewUnavailable":`此产出没有可用的公开安全内联预览。`,"drawer.priority":`优先级`,"drawer.progress":`进度`,"drawer.proposalApplied":`已应用,LoopX 状态将刷新。`,"drawer.proposalAppliedUnstaffed":`已应用,但有 {count} 条 lane 仍未组建:`,"drawer.proposalApplyFailed":`应用失败,没有写入任何变更。`,"drawer.proposalApplyFailedHint":`请刷新 Goal 状态后重新生成;若仍失败,可保留此页并查看高级诊断。`,"drawer.proposalClose":`关闭`,"drawer.proposalDefer":`稍后`,"drawer.proposalDeferred":`已暂缓,可稍后继续应用或重新生成。`,"drawer.proposalEnterGoal":`进入新 Goal`,"drawer.proposalExplainer":`确认后,LoopX 会执行这项变更并显示写入结果。关闭或取消不会修改任何状态。`,"drawer.proposalRecheck":`按最新状态重新检查`,"drawer.proposalRegenerate":`基于最新状态重试`,"drawer.proposalRejected":`已拒绝,这项变更不会写入。`,"drawer.proposalStale":`来源状态已变化,请按最新状态重新检查。`,"drawer.proposalViewGoal":`查看更新后的 Goal`,"drawer.reassign":`改派给`,"drawer.reassignSummary":`重新分配:{task}`,"drawer.reason":`原因`,"drawer.recoveryDescription":`本地历史已经保留,请选择恢复路径。`,"drawer.recoveryFailed":`上游 Session 恢复失败`,"drawer.recoveryNewSession":`携带上下文开始新 Session`,"drawer.recoveryRetry":`重试恢复`,"drawer.repositoryRole":`执行工作区`,"drawer.repository":`仓库`,"drawer.replyMode":`回复方式`,"drawer.subagentApplied":`已写入,并通过共享 Goal 状态读回校验。`,"drawer.subagentAppliedRefreshFailed":`已写入并通过共享 Goal 状态读回;状态投影刷新失败,可稍后手动刷新。`,"drawer.subagentApplying":`正在写入并校验共享状态读回…`,"drawer.subagentApplyFailed":`子代理设置写入失败。`,"drawer.subagentChildLimit":`当前上限`,"drawer.subagentConfirmDisable":`确认关闭子代理执行`,"drawer.subagentConfirmEnable":`确认开启子代理执行`,"drawer.subagentCurrentBoundary":`当前任务领域限制`,"drawer.subagentDescription":`仅在 Todo、配额、能力和写入范围门禁全部通过后,允许运行时为相互独立的任务临时创建子代理;不会强制并行,也不会授予持久权限。`,"drawer.subagentDisable":`预览关闭子代理执行`,"drawer.subagentDisableSummary":`这个 Goal 将不再创建新的子代理;现有 Todo 归属和执行记录不受影响。`,"drawer.subagentDomainInvalid":`所选任务领域限制无效。`,"drawer.subagentDomainTodoCount":`匹配 {count} 个开放 Todo`,"drawer.subagentDomains":`任务领域限制(可选)`,"drawer.subagentDomainsEmpty":`当前没有开放的 advancement Todo 声明 task_domain;保持为空即可不按任务领域限制子代理执行。`,"drawer.subagentDomainsHint":`全部不选表示不按任务领域过滤;选择后只放行匹配且已声明领域的 Todo,其他执行门禁始终生效。`,"drawer.subagentDomainsUnrestricted":`不限制任务领域`,"drawer.subagentEnable":`预览开启子代理执行`,"drawer.subagentLabel":`Per-Goal 执行边界`,"drawer.subagentModel":`子 Agent 模型`,"drawer.subagentEffort":`子 Agent 推理档位`,"drawer.subagentModelDefault":`宿主默认`,"drawer.subagentLunaPreset":`使用 Luna / max`,"drawer.subagentClearModel":`清除模型偏好`,"drawer.subagentModelHint":`填写后通过“预览配置调整”保存,执行关闭时也可保存偏好;启动时须核验宿主支持情况。`,"drawer.subagentModelRequired":`设置推理档位前请先指定子 Agent 模型。`,"drawer.subagentMaxChildren":`最多子代理数`,"drawer.subagentNoChange":`当前 Goal 已是这个设置,没有写入任何内容。`,"drawer.subagentPending":`待确认`,"drawer.subagentPreviewBoundary":`预览配置调整`,"drawer.subagentPreviewFailed":`无法生成子代理设置预览。`,"drawer.subagentPreviewing":`正在核对最新 Goal 状态…`,"drawer.subagentPreviewReady":`预览已锁定,确认后才会写入这个 Goal。`,"drawer.subagentPreviewSummary":`最多允许创建 {count} 个子代理;任务领域限制:{domains}。`,"drawer.subagentRemoteReadOnly":`当前来源只读,请在 Goal 所在主机上修改。`,"drawer.subagentTitle":`自适应子代理执行`,"drawer.remoteDetailsDescription":`SSH 来源只展示公开安全状态,不读取来源主机上的连接配置。`,"drawer.remoteDetailsUnavailable":`远端详情未投影`,"drawer.resumeNo":`否`,"drawer.resumeYes":`是`,"drawer.runDetails":`执行 Session`,"drawer.runInterrupt":`中断本次运行`,"drawer.runLatest":`查看最近执行过程`,"drawer.runNewSession":`开始新 Session`,"drawer.runCloseSession":`关闭 Session`,"drawer.runRecordEmpty":`还没有运行记录。Agent 尚未开始这次执行;请在“详情与操作”查看等待条件或恢复 Session。`,"drawer.runRecordProjected":`当前没有可展示的逐步运行记录。LoopX 已读取到 {completed}/{total} 的投影进度{outputs};请在“详情与操作”检查 Session 状态。`,"drawer.runRecordProjectedOutputs":`和 {count} 项产出`,"drawer.runRoleAssistant":`已完成`,"drawer.runRoleSystem":`需检查`,"drawer.runRoleUser":`收到任务`,"drawer.runView":`Session 视图`,"drawer.scheduleAdd":`添加定时检查`,"drawer.scheduleDefaultNotification":`仅在需要你时通知`,"drawer.scheduleDefaultStop":`Goal 完成或 owner 停止`,"drawer.scheduleDefaultTarget":`由 LoopX 调度器按 Goal 配置唤醒。`,"drawer.scheduleEdit":`改为每 2 小时`,"drawer.scheduleLast":`上次执行`,"drawer.scheduleLocalTimezone":`本地时区`,"drawer.scheduleNext":`下次执行`,"drawer.scheduleNeverRun":`尚未执行`,"drawer.scheduleNotification":`通知`,"drawer.schedulePause":`暂停`,"drawer.schedulePending":`等待调度`,"drawer.scheduleResume":`恢复`,"drawer.scheduleRunNow":`立即运行`,"drawer.scheduleStop":`停止{kind}`,"drawer.scheduleStopCondition":`停止条件`,"drawer.scheduleTimezone":`时区`,"drawer.sessionRecoverable":`可恢复`,"drawer.sessionStatus":`会话状态`,"drawer.setupHeartbeat":`设置 Heartbeat`,"drawer.taskActions":`Todo 待确认操作`,"drawer.taskAdvancement":`推进任务`,"drawer.taskBlock":`标记阻塞`,"drawer.taskComplete":`标记完成`,"drawer.taskCompletedNote":`该任务保留为只读记录。`,"drawer.taskCompletedTitle":`任务已完成`,"drawer.taskDefer":`暂缓`,"drawer.taskDeferCondition":`Todo 暂缓恢复条件`,"drawer.taskDeferInvalid":`条件格式不受支持;请使用下列可判定条件。`,"drawer.taskDeferPlaceholder":`例如 resume_at:2026-09-14T09:00:00+08:00`,"drawer.taskDeferReview":`检查暂缓`,"drawer.taskDeferSupported":`支持 todo_done、pr_merged、capacity_available 与带时区的 resume_at 条件。`,"drawer.taskDeferUntil":`暂缓至`,"drawer.taskDetails":`Todo 详情`,"drawer.taskInfo":`任务信息`,"drawer.taskManage":`管理任务`,"drawer.taskNextCompleted":`可创建后续任务`,"drawer.taskNextOpen":`推进或更新状态`,"drawer.taskOrdinary":`普通任务`,"drawer.taskStatusBlocked":`受阻`,"drawer.taskStatusDeferred":`已延期`,"drawer.resumeWhen":`恢复条件`,"drawer.resumeState":`恢复状态`,"drawer.resumePending":`等待条件满足`,"drawer.resumeReady":`可恢复`,"drawer.resumeReceipt":`恢复回执`,"drawer.taskNextDeferred":`等待恢复条件满足后重新评估`,"drawer.taskNextResumeReady":`恢复条件已满足,等待生命周期重新规划`,"drawer.taskStatusCompleted":`已完成`,"drawer.taskStatusOpen":`待执行`,"drawer.taskSuccessor":`创建后续 Todo`,"drawer.taskSuccessorNote":`Owner 标记为阻塞,等待补充上下文。`,"drawer.taskSuccessorSummary":`创建后续 Todo:{task}`,"drawer.taskSuccessorText":`{task} 的后续工作`,"drawer.taskType":`任务类型`,"drawer.topic":`Topic`,"drawer.trigger":`触发方式`,"drawer.titleAttention":`需要你`,"drawer.titleOutput":`产出详情`,"drawer.titleProposalApplied":`执行结果`,"drawer.titleProposalConfirm":`确认执行`,"drawer.titleSchedule":`定时检查`,"drawer.unconfigured":`未配置`,"drawer.workspaceCandidates":`可选择的工作区`,"files.emptySummary":`公开安全产出`,"files.empty":`还没有文件、产出或已验证的阶段周报。`,"files.loadingReports":`正在加载已验证的阶段周报…`,"files.reportDelta":`+{added} 新增 · {changed} 变化`,"files.reportAdded":`新增`,"files.reportChanged":`变化`,"files.reportGeneration":`生成批次`,"files.reportLoadFailed":`无法加载已验证周报`,"files.reportPublication":`发布批次`,"files.title":`Files & Outputs`,"files.verifiedReport":`已验证阶段周报`,"header.agentUnavailable":`不可用`,"header.chatRuntime":`Chat`,"header.workAgentCount":`{count} 个工作 Agent`,"header.chat":`Chat`,"header.files":`Files`,"header.goalCapabilities":`能力配置`,"header.goalCapabilitiesDescription":`管理 Goal override 与继承的本机默认值。`,"header.goalDetails":`Goal 详情`,"header.goalDetailsDescription":`查看状态、用量、仓库、通知与 Session。`,"header.goalSettings":`Goal 设置`,"header.goalSettingsDescription":`打开 Goal 详情或能力配置`,"header.goalNavigation":`Goal 导航`,"header.goalView":`Goal 视图`,"header.live":`实时`,"header.manager":`LoopX 管家`,"header.managerDescription":`跨 Goal 的个人工作入口`,"header.managerRuntime":`{profile} · {sandbox}`,"header.managerRuntimeFallback":`配置无效,已回退到 {profile} · {sandbox};请在机器能力设置中修复。`,"header.managerExecutorKindIndividual":`个人 CLI 登录`,"header.managerExecutorKindManaged":`operator 凭据`,"header.managerExecutorKindRegistered":`注册端点`,"header.managerExecutionUnavailable":`所选执行器 {executor} 无法在本机启动;该通道不会回落到个人 CLI 登录。`,"header.managerExecutionUnavailableCredential":`所选执行器 {executor} 需要 operator 凭据 {credential},配置后该通道才能启动它。`,"header.managerExecutionUnavailableRuntime":`所选执行器 {executor} 无法在本机启动:本机未安装其 runtime。`,"header.managerExecutionUnavailableEffort":`所选执行器 {executor} 拒绝了当前配置的推理档位;请改为受支持的档位后刷新。`,"header.managerEndpointStewardDefault":`当前运行 {executor},管家通道的出货默认值;如需改指请显式选择执行器。`,"header.managerOverview":`总览`,"header.managerView":`管家视图`,"header.openGoalNavigation":`打开 Goal 导航`,"header.readOnlySourceDescription":`{source} 通过 SSH 隧道只读展示`,"header.refresh":`刷新状态`,"header.refreshDone":`刚刚更新`,"header.refreshFailed":`刷新失败`,"header.refreshing":`刷新中`,"header.selectAgent":`选择 Agent`,"header.selectChatRuntime":`选择聊天 Runtime`,"header.tasks":`Tasks`,"header.themeBrutal":`切换到野兽主题`,"header.themePaper":`切换到默认主题`,"home.blockingSummary":`其中 {count} 项正在阻塞 Agent。`,"home.completedGoals":`已完成的 Goal`,"home.empty":`当前没有`,"startup.goalLoading":`正在加载状态…`,"startup.goalError":`状态加载失败`,"startup.progress":`已加载 {loaded} / {total} 个活跃 Goal`,"startup.partial":`Goal 状态正在逐个更新,当前统计尚不完整。`,"startup.independent":`此 Goal 的加载不会阻塞其他 Goal,你可以先查看已加载的内容。`,"startup.error.timeout":`读取超时,可在本地服务就绪后重试。`,"startup.error.network":`连接中断,请重试以重新连接。`,"startup.error.service":`Goal 状态读取失败。请稍后重试;若问题持续,请检查状态来源。`,"startup.error.access":`状态来源无法访问此 Goal 所需的文件或运行时目录。请检查该来源运行账户的访问权限,修复后重试。`,"startup.error.revision":`加载期间 Goal 目录发生变化,请刷新以同步。`,"startup.error.scope":`该 Goal 已不在当前来源中,请刷新目录。`,"startup.error.invalid":`无法解析状态响应,请刷新或检查 LoopX 更新。`,"startup.retry":`重试`,"startup.retryFailed":`重试失败的 Goal`,"startup.failedCount":`{count} 个 Goal 加载失败,已加载的 Goal 可继续使用。`,"home.greeting":`你好,我是 LoopX 管家`,"home.history":`历史`,"home.lane.needsYou":`需要你`,"home.lane.needsYouDescription":`等待你的决定、授权或补充信息`,"home.lane.observing":`观察中`,"home.lane.observingDescription":`持续监控,出现变化时再提醒你`,"home.lane.running":`执行中`,"home.lane.runningDescription":`Agent 正在推进并持续回传进展`,"home.lane.scheduled":`已安排`,"home.lane.scheduledDescription":`已经安排,等待时间或前置条件`,"home.noActivity":`尚无活动`,"home.noFirstActivity":`等待首次活动`,"home.noCompletedGoals":`还没有已完成的 Goal`,"home.preservedState":`保留状态,可随时恢复`,"home.stopped":`已停止`,"home.systemHealth":`系统健康:{summary}`,"home.taskCount":`{count} 个 Task`,"home.todayAt":`今天 {time}`,"home.waitingCount":`你有 {count} 项需要处理。`,"home.workspace":`Goal 工作区`,"lark.allMessages":`此 Topic 中的所有消息`,"lark.allTopicMessages":`所有 Topic 消息`,"lark.agentIngress":`Agent 入站方式`,"lark.agentAppPermissions":`每个选中的 Agent 都需要一个已具备群聊提及和回复能力的 Lark App。`,"lark.agentApps":`每个 Agent 的 Lark App`,"lark.agentAppsDescription":`默认使用上方 App;需要独立机器人身份时,可为 Agent 选择另一个兼容 App。`,"lark.agentAppSelection":`{agent} 的 Lark App`,"lark.appCreated":`App 已创建`,"lark.appCreateFailed":`创建失败`,"lark.appLoading":`正在加载可用的 Lark Apps…`,"lark.appPermissions":`该 App 能发送建联消息,但缺少接收群聊 @ 消息或自动回复所需的机器人权限。请开启 im:message.group_at_msg:readonly、im:message.send_as_bot 和事件 im.message.receive_v1,发布新版后刷新。`,"lark.appProfile":`Lark App`,"lark.apps":`Lark Apps`,"lark.autoReplyUnavailable":`自动回复暂不可用`,"lark.autoReplyReady":`自动回复可用`,"lark.bindGoal":`绑定到 Goal`,"lark.cancel":`取消`,"lark.cardinality":`一个 Lark App · 多个 Goal · 每个 Agent 一条隔离路由`,"lark.capture":`接收范围`,"lark.captureAddressed":`仅接收提及 App 或回复 App 的消息`,"lark.captureAll":`接收此 Goal Topic 中的所有消息`,"lark.captureScope":`接收范围`,"lark.captureScopeDescription":`决定哪些 Topic 消息会进入 LoopX;不会扩大 Agent 权限。`,"lark.closeConnection":`关闭连接弹窗`,"lark.closeCreate":`关闭创建弹窗`,"lark.closeSettings":`关闭 Lark 设置`,"lark.connect":`连接`,"lark.connectAllAgents":`连接全部已注册 Agent`,"lark.connectAllAgentsAction":`一键连接 {count} 个 Agent`,"lark.connectAllAgentsDescription":`一次引导创建 {count} 个隔离的 Agent Topic;请在对应 Topic 内发送请求,每个 Agent 保留独立路由和收件箱。`,"lark.connectApp":`连接 Lark App`,"lark.connection":`连接`,"lark.connections":`连接`,"lark.configuration":`Lark 配置`,"lark.continueFeishu":`在飞书中继续`,"lark.createAutomatically":`自动创建 Goal Topic`,"lark.createAutomaticallyDescription":`将为每个选中的 Agent 创建带 Agent 标识的专属 Topic。`,"lark.defaultAgentAppDescription":`用于查找目标群聊,并作为所有选中 Agent 的默认 App;下方的逐 Agent 选择可覆盖它。`,"lark.description":`管理可复用的 Lark App,并用独立 Topic 将群聊连接到 Goal。`,"lark.editConnection":`编辑 Lark 连接`,"lark.goalConnections":`{count} 个 Goal 连接`,"lark.goalTopicConnections":`Lark Goal Topic 连接`,"lark.groupChat":`群聊`,"lark.groupEmpty":`该机器人尚未加入可连接的群。请先在飞书群设置中添加这个机器人,再回来刷新或搜索。`,"lark.groupLoading":`正在读取该机器人已加入的群…`,"lark.groupSearch":`搜索该机器人已加入的群`,"lark.historyPermission":`历史补读权限(独立能力)`,"lark.health.contextCaptured":`已捕获群聊上下文`,"lark.health.contextCapturedDetail":`该消息仅作为非权威上下文保留,不会启动或引导管家 Turn;需要执行时请直接 @ 机器人或回复机器人的消息。`,"lark.health.eventProcessed":`已处理 {events} 条事件,成功回复 {replies} 条。`,"lark.health.eventUnverified":`事件订阅待验证`,"lark.health.eventUnverifiedDetail":`Provider listener 已就绪,但尚未收到消息事件。请启用 im.message.receive_v1、开通群聊 @ 消息权限并发布新版,然后在这个 Agent Topic 内发送新的 @ 消息;存在多条 Agent 路由时,群顶层消息会 fail closed。`,"lark.health.ignoredSelf":`已忽略机器人自身发送的消息,避免重复回复。`,"lark.health.invalidRouting":`路由配置无效`,"lark.health.invalidRoutingDetail":`连接已安全停用,请重新选择处理方式并保存。`,"lark.health.lastStatus":`最近事件状态:{status}`,"lark.health.listening":`监听中`,"lark.health.messageContextPermission":`消息权限不足`,"lark.health.messageContextPermissionDetail":`已收到消息事件,但无法读取群消息上下文。请发布并授权该 App 的群消息读取权限。`,"lark.health.notAddressed":`最近消息未直接 @ 机器人`,"lark.health.notAddressedDetail":`监听正常;当前连接只响应直接 @ 机器人或对机器人的回复。`,"lark.health.notStarted":`监听未启动`,"lark.health.notStartedDetail":`请刷新连接或重新启动 LoopX 后再试。`,"lark.health.processingFailed":`消息处理失败`,"lark.health.processingFailedDetail":`已收到消息事件,但 Agent 处理失败。请查看本地诊断后重试。`,"lark.health.queued":`已进入 Agent 收件箱`,"lark.health.queuedDetail":`消息由 {agent} 异步处理,不会启动通用 Chat Session。`,"lark.health.sourceDisconnected":`实时消息连接断开`,"lark.health.sourceDisconnectedDetail":`消息监听进程意外退出。请核对应用档案的平台:飞书应用选飞书,国际版 Lark 应用选 Lark,再检查连接及订阅错误。LoopX 正在重试;历史消息能读取,不代表能实时收消息。`,"lark.health.retrying":`监听重试中`,"lark.health.retryingDetail":`事件监听暂时中断,LoopX 正在自动重试。`,"lark.health.routeAmbiguous":`消息匹配多个 Goal`,"lark.health.routeAmbiguousDetail":`同一 Bot 和群聊存在多个完整群捕获连接。请让每个 Agent 使用独立 Bot,或只保留一个完整群连接。`,"lark.health.routeMismatch":`消息未匹配当前 Goal Topic`,"lark.health.routeMismatchDetail":`事件来自其他群聊或 Topic。请重新选择群聊并连接该 Goal,然后发送一条新的 @ 消息。`,"lark.health.routeUnavailable":`消息无法路由到 Goal`,"lark.health.routeUnavailableDetail":`当前连接信息不完整。请重新连接该 Goal 后再发送一条新的 @ 消息。`,"lark.health.starting":`正在启动`,"lark.health.startingDetail":`LoopX 正在启动该 App 的消息事件监听。`,"lark.health.unavailable":`自动回复不可用`,"lark.health.waiting":`等待处理`,"lark.incomingMessages":`接收消息`,"lark.ingressAsync":`异步收件箱`,"lark.ingressAsyncDescription":`写入 Agent 私有收件箱,等待后续显式处理。`,"lark.editPreservesIdentity":`保存会保留此 App、群和 Topic;旧连接默认升级为 Agent 异步收件箱。`,"lark.conversationKind":`连接用途`,"lark.managerConversation":`管家 · 同步对话`,"lark.workerConversation":`工作 Agent · 后台任务`,"lark.managerConversationDescription":`内置管家即时回应对话,长任务交给后台 Agent。群聊与私聊分别保存上下文。`,"lark.ingressLegacy":`待升级`,"lark.ingressLegacyDescription":`保存连接即可升级为 Agent 异步收件箱,已有消息保留在原 Topic 中。`,"lark.ingressQueue":`排队`,"lark.ingressQueueDescription":`进入同一 Agent Session 的有界 FIFO 队列,当前 Turn 完成后处理。`,"lark.ingressSteering":`实时引导`,"lark.ingressSteeringDescription":`投到当前活跃 Turn;没有精确活跃 Turn 时安全拒绝。`,"lark.loading":`加载 Lark 配置…`,"lark.management":`Lark 管理`,"lark.openEventSettings":`查看飞书事件配置`,"lark.mentions":`提及机器人`,"lark.mentionsOnly":`仅提及消息`,"lark.needsMessagePermissions":`需要消息权限`,"lark.needsSetup":`需要设置`,"lark.newApp":`新建 Lark App`,"lark.noAgentConfigured":`未配置 Agent`,"lark.noConnections":`暂无匹配的连接。`,"lark.noProfiles":`还没有可用的 lark-cli App profile。`,"lark.profileName":`Profile 名称`,"lark.profileValidation":`Profile 只能包含字母、数字、点、下划线和连字符。`,"lark.processing":`处理方式`,"lark.region":`区域`,"lark.registerAnother":`+ 注册另一个 Lark App — 通过飞书创建`,"lark.reopenFeishu":`重新打开飞书`,"lark.settingsConfigure":`配置 {goal}`,"lark.settingsDisconnect":`解绑 {goal}`,"lark.replyMode":`回复方式`,"lark.replyModeDescription":`当前只支持在来源 Topic 内回复,避免跨群或跨 Goal 投递。`,"lark.reusableApps":`{count} 个可复用 App`,"lark.reusableWorkspaceApp":`可复用工作区 App`,"lark.routesUnverified":`{count} 条 Lark 路由尚未验证`,"lark.saveConnection":`保存连接`,"lark.searchConnections":`搜索 Lark 连接`,"lark.searchPlaceholder":`搜索 App、群、Goal 或 Topic`,"lark.setupCopy":`LoopX 将通过 lark-cli 打开飞书官方创建页面。应用凭证保存在系统 Keychain,LoopX 只保留 profile 引用。`,"lark.someoneMentions":`有人提及 Agent`,"lark.targetAgent":`目标 Agent`,"lark.targetAgentDescription":`选择该 Goal 内已注册的 Agent。此连接只投递给一个 Agent,不广播、不授予新权限。实时引导与排队需要该 Agent 的精确活跃 Session。`,"lark.agentUnavailable":`{agent} · 已不可用`,"lark.selectRegisteredAgent":`请先选择可用的已注册 Agent;不会自动替换原先的接收者。`,"lark.topicPreview":`Topic 预览`,"lark.topicReply":`Topic 回复`,"lark.trigger":`触发方式`,"lark.waitingFeishu":`等待飞书完成创建`,"lark.waitingFeishuDescription":`请在新窗口中完成飞书授权,完成后会自动回到这里。`,"lark.waitingLink":`正在生成飞书官方创建链接…`,"lark.error.appCreate":`Lark App 创建失败`,"lark.error.appRequired":`请选择一个 Lark App profile。`,"lark.error.bind":`绑定失败`,"lark.error.bindPreview":`绑定预览失败`,"lark.error.configuration":`Lark 配置加载失败`,"lark.error.groupLookup":`无法读取该机器人已加入的群。请检查机器人状态后重试。`,"lark.error.groupLoad":`群聊加载失败`,"lark.error.invalidApp":`Lark App profile 不可用或尚未完成授权。`,"lark.error.messagePermissions":`该 App 缺少自动回复所需的机器人权限。请开启 im:message.group_at_msg:readonly 和 im:message:send_as_bot,发布新版后回来刷新重试。`,"lark.error.provider":`飞书 API 调用失败,且没有生成已验证回执。请稍后重试。`,"lark.error.setupPoll":`创建状态查询失败`,"lark.error.setupStart":`无法启动 Lark App 创建流程`,"lark.error.cliExecutable":`已找到配置的 lark-cli,但当前无法执行。请检查安装或启动参数。`,"lark.error.cliMissing":`未发现 lark-cli。请先安装 lark-cli,然后重新启动 LoopX。`,"lark.error.cliStart":`lark-cli 启动失败。请检查安装状态,然后重新启动 LoopX。`,"lark.error.disconnect":`解绑失败`,"notifications.autoNotify":`需要你确认时自动推送到群里`,"notifications.bind":`绑定到通知群`,"notifications.bindConfirm":`将把「{goal}」绑定到通知群「{target}」,绑定时会验证机器人在群内并发送一条确认消息。`,"notifications.bindFailed":`绑定失败`,"notifications.bound":`已绑定`,"notifications.confirmBind":`确认绑定`,"notifications.description":`把 Goal 里需要你确认的变更推送到飞书群。绑定和开关在这里完成,推送逻辑沿用现有通道。`,"notifications.disabled":`已停用`,"notifications.group":`通知群:{target}`,"notifications.loadFailed":`通知群列表加载失败`,"notifications.noTargets":`还没有可用的通知群。通知群涉及机器人私有身份,请先在终端配置一次:`,"notifications.notBound":`未绑定`,"notifications.recent":`最近 {time}`,"notifications.sentCount":`已发送 {count} 条`,"notifications.settings":`Goal 通知绑定`,"notifications.setupFailed":`设置失败`,"notifications.title":`飞书群通知`,"proposal.field.agentId":`Agent`,"proposal.field.cadence":`频率`,"proposal.field.completionCriteria":`完成标准`,"proposal.field.executionBoundary":`执行边界`,"proposal.field.goalId":`Goal ID`,"proposal.field.heartbeat":`Heartbeat`,"proposal.field.initialTodos":`首个任务`,"proposal.field.objective":`目标`,"proposal.field.operation":`操作`,"proposal.field.operationState":`操作状态`,"proposal.field.resultDelivery":`结果回传`,"proposal.field.confirmationBoundary":`确认边界`,"proposal.field.expiresAt":`过期时间`,"proposal.field.permission":`权限`,"proposal.field.reason":`原因`,"proposal.field.stopCondition":`停止条件`,"proposal.field.target":`检查内容`,"proposal.field.timezone":`时区`,"proposal.field.title":`标题`,"proposal.field.workspace":`执行工作区`,"actionReview.targetChanged":`预览目标与请求的 Goal 或操作不一致,请重新生成预览。`,"actionReview.ready_stop":`暂停可恢复。此预览已通过检查,可直接执行;完成仍需要读回验证。`,"actionReview.resume_review":`恢复自动调度前需要确认。实际执行仍受额度、Gate 和 Todo 约束。`,"actionReview.delete_review":`请确认从注册表移除这个已停止 Goal。项目文件与历史记录会保留。`,"actionReview.action_review":`执行前请检查此提案的目标与影响。`,"actionReview.protected_action":`此操作需要明确审阅。确认不能替代所需授权。`,"actionReview.unknown_permission":`无法识别权限分类。请重新检查提案后再继续。`,"actionReview.unknown_action":`无法识别此生命周期操作。请重新检查提案后再继续。`,"actionReview.incomplete_proposal":`预览缺少验证信息或可执行转换。请重新生成预览。`,"actionReview.authority_gate":`Gate 阻止执行。请满足其要求后重新检查提案。`,"actionReview.stale_proposal":`来源状态已变化。请重新生成预览,原决定不再适用。`,"actionReview.apply_pending":`正在执行,请等待读回结果后再重试。`,"actionReview.readback_verified":`操作已完成,结果状态已通过读回验证。`,"actionReview.readback_unverified":`操作返回但未通过读回验证。尚不能确认完成,请重新检查状态。`,"actionReview.operation_group_confirmation":`这份精确请求只能在已绑定飞书群的原始卡片确认;Dashboard 不提供本地执行入口。`,"actionReview.operation_result_delivery_pending":`操作结果已经记录,但原群结果卡尚未通过回读核验。`,"actionReview.apply_failed":`执行未完成。请检查失败原因并重新生成预览后再试。`,"actionReview.inactive_proposal":`此提案当前不可执行。请重新检查后再继续。`,"proposal.gate.default":`需要宿主确认`,"proposal.impact.default":`确认后会调用规范 LoopX 服务写入状态。`,"proposal.impact.goalCreate":`确认后会创建 Goal 和首个 Todo,并让选定 Agent 开始首轮推进。`,"proposal.impact.lifecycleDelete":`确认后会从 source registry 和 global registry 移除这个已停止 Goal;项目文件、历史状态文件和备份不会被删除。`,"proposal.impact.lifecycleResume":`确认后会恢复 Goal 的自动调度资格并移回 Active Goals;实际执行仍受 quota、Gate 和 Todo 约束。`,"proposal.impact.lifecycleStop":`确认后会停止自动推进,并将 Goal 移入折叠的「已停止」列表;历史、Todo 和证据都会保留,可随时恢复。`,"proposal.impact.protected":`该操作需要通过受保护的 LoopX 写入服务完成。`,"proposal.impact.operation":`这里仅展示同一份不可变条款。请在已绑定的飞书群确认或拒绝;确认只会消费一个规范 claim。`,"proposal.primary.apply":`确认并应用`,"proposal.primary.goalCreate":`创建 Goal 并开始首轮`,"proposal.primary.lifecycleDelete":`删除 Goal`,"proposal.primary.lifecycleResume":`恢复 Goal`,"proposal.primary.lifecycleStop":`停止 Goal`,"proposal.primary.todoStart":`创建任务并开始执行`,"proposal.primary.operationGroup":`前往飞书群确认`,"proposal.primary.operationResultPending":`结果卡回传待恢复`,"proposal.primary.operationResultVerified":`结果已核验`,"proposal.resultDelivery.verified":`已在原群卡片完成回读核验`,"proposal.resultDelivery.pending":`等待回传并核验原群卡片`,"proposal.summary.goalCreate":`创建 Goal:{title}`,"proposal.summary.heartbeat":`为当前 Goal 设置 Heartbeat`,"proposal.summary.lifecycleDelete":`删除 Goal:{title}`,"proposal.summary.lifecycleResume":`恢复 Goal:{title}`,"proposal.summary.lifecycleStop":`停止 Goal:{title}`,"proposal.summary.monitor":`为当前 Goal 创建定时检查:{target}`,"proposal.summary.teamPlan":`为 {goal} 配出 {count} 条 lane 的团队`,"proposal.impact.teamPlan":`确认后会通过既有 owner 为每条就绪 lane 创建它的首个有界 Todo;声明了编制缺口的 lane 不创建任何东西;apply 回执返回前不存在任何 lane;预览与 apply 之间 Goal 或 Agent 发生变化会让这条提案变为 stale,而不是按漂移后的编制执行。`,"proposal.primary.teamPlan":`确认并组建各 lane`,"proposal.field.laneGaps":`未配齐的 lane`,"proposal.field.quotaEnvelope":`配额包络`,"proposal.teamPlan.acceptanceShort":`验收参考`,"proposal.teamPlan.advisory":`计划参考;本次确认不执行该约束`,"proposal.teamPlan.appliedPartially":`已分配 {created} 条 lane 的任务,{gaps} 条仍有缺口。接收者采纳与执行尚未验证。`,"proposal.teamPlan.appliedAlreadyPresent":`已恢复原分配结果,未新增任务;这不证明当前执行状态。`,"proposal.teamPlan.applied":`lane 任务已分配;接收者采纳与执行尚未验证。`,"proposal.teamPlan.gapLane":`未配齐`,"proposal.teamPlan.laneUnstaffed":`编制缺口,无首个 Todo`,"proposal.teamPlan.appliedGapLane":`{lane}({agent})仍未组建:{reason}`,"proposal.teamPlan.gapReason.agentNotRegistered":`该 Agent 未在该 Goal 注册`,"proposal.teamPlan.gapReason.actionKindNotSupported":`本机不支持该动作类型`,"proposal.workspace.current":`当前本地工作区(未绑定 Repository)`,"proposal.workspace.named":`{workspace}(仅提供执行环境,不会自动关联仓库)`,"proposal.workspaceGate.agentImpact":`先完成 Agent 身份绑定,再重新检查原操作;当前没有写入 Goal。`,"proposal.workspaceGate.agentTitle":`先绑定 Agent`,"proposal.workspaceGate.defaultSummary":`请选择 Goal 所属工作区。`,"proposal.workspaceGate.selectionImpact":`选择工作区后会重新展示待确认操作,选择本身不会写入状态。`,"proposal.workspaceGate.selectionTitle":`选择 Goal 工作区`,"projection.agentAdvancingGoal":`Agent 正在推进当前 Goal`,"projection.agentIdle":`暂无需要你处理`,"projection.agentNeedsDecision":`Agent 等待你的决定`,"projection.agentPreparingNextStep":`Agent 正在整理下一步`,"projection.agentStopped":`已由你停止;历史、Todo 和证据仍保留`,"projection.agentWaitingExternal":`正在等待外部条件`,"projection.confirmAgentDecision":`请确认 Agent 下一步需要的权限或决策`,"projection.events24h":`24 小时内 {count} 个事件`,"projection.firstReadOnlyAdapterCheck":`执行首次只读适配检查并保存进度`,"projection.goalVerified":`Goal 状态、Todo 与注册信息已验证`,"projection.latestRun":`最近运行`,"projection.latestValidation":`最近验证`,"projection.nextUpdatePending":`等待 LoopX 更新下一步`,"projection.publicSafeProjection":`公开安全状态投影`,"projection.refreshState":`刷新 LoopX 状态,确认当前进度仍然有效`,"projection.runEvidenceAvailable":`存在可查看的运行证据`,"projection.runRecorded":`最近一次 LoopX 运行已经记录`,"projection.statusRefreshNeeded":`LoopX 状态需要刷新`,"projection.todoStatusUpdated":`Todo 状态已经更新,正在确认下一步`,"projection.validationRecorded":`最近验证已经记录`,"runs.completed":`已完成`,"runs.failed":`需检查`,"runs.interrupted":`已中断`,"runs.queued":`已安排`,"runs.ready":`可继续`,"runs.resumeFailed":`恢复失败`,"runs.running":`执行中`,"runs.unknown":`状态未知`,"runs.waiting":`等待条件`,"schedule.active":`执行中`,"schedule.heartbeat":`Goal Heartbeat`,"schedule.monitor":`定时与持续任务`,"schedule.paused":`已暂停`,"schedule.summary":`按 LoopX 调度约束持续检查`,"schedule.defaultTarget":`检查当前 Goal 的阻塞、进度与新产出`,"schedule.unsupportedCalendar":`当前定时检查不支持精确到星期或时刻的日历计划。请改用固定间隔,例如“每 30 分钟”“每 2 小时”或“每天”;草稿已保留,没有生成待确认操作。`,"source.add":`添加来源`,"source.addConfigured":`添加只读来源`,"source.addMethod":`来源添加方式`,"source.addSsh":`添加 SSH 隧道来源`,"source.closeForm":`关闭来源表单`,"source.configured":`已配置 SSH`,"source.configuredCount":`本机 SSH Host · {count} 个`,"source.configuredGroup":`已配置 SSH Host · {count}(点击快速添加)`,"source.connected":`已连接`,"source.connecting":`连接中`,"source.controlPlane":`控制面来源`,"source.copy":`复制`,"source.copyCommand":`复制 SSH 隧道命令`,"source.copyError":`无法复制命令,请手动复制下方命令。`,"source.copied":`已复制`,"source.description":`已读取全部显式 Host(含 Include);通配规则不会作为具体来源。先运行命令,LoopX 不读取密钥或配置细节。`,"source.host":`本机 SSH Host`,"source.hostEmpty":`~/.ssh/config 中没有可直接选择的显式 Host。`,"source.hostLoadError":`无法读取本机 SSH Host。`,"source.hostPlaceholder":`输入或搜索 Host`,"source.invalid":`SSH 来源参数无效。`,"source.loadingHosts":`正在读取…`,"source.localInteractive":`本机交互`,"source.localPort":`本地端口`,"source.manual":`手动 URL`,"source.manualDescription":`远端来源始终按只读投影处理,不继承本机写权限。`,"source.name":`名称`,"source.namePlaceholder":`远程开发机`,"source.notAvailable":`不可用`,"source.readOnly":`SSH 隧道 · 只读`,"source.readOnlyNoticeDescription":`你可以查看 Goal、Task、证据与运行状态;写入、纠偏和 Agent 会话仍留在来源主机。`,"source.readOnlyNoticeTitle":`远端只读投影`,"source.readOnlyWriteError":`远端 SSH 隧道来源是只读投影,不能执行控制面写入。`,"source.refreshHosts":`重新读取 SSH Host`,"source.remove":`移除来源 {source}`,"source.removeCurrent":`移除当前来源`,"source.select":`选择控制面来源`,"source.selectHost":`请选择已配置的 SSH Host。`,"source.statusUrl":`本地转发 URL`,"source.tunnelCommandPending":`选择 Host 后生成隧道命令`,"machine.absent":`尚未配置`,"machine.action.create":`创建机器策略`,"machine.action.delete":`移除机器策略`,"machine.action.unchanged":`无需写入`,"machine.action.update":`更新机器策略`,"machine.applied":`机器策略已应用,并通过回读校验。`,"machine.applyError":`无法应用机器策略。`,"machine.applyPreview":`应用已审阅预览`,"machine.changedNamespaces":`变更的 Namespace`,"machine.capabilityCatalog":`机器能力目录`,"machine.capabilityEmpty":`当前没有注册可在机器作用域配置的能力。`,"machine.configured":`已配置`,"machine.confirmRollback":`确认回滚`,"machine.currentRevision":`当前 Revision`,"machine.currentValue":`当前机器值`,"machine.description":`与 Goal 设置共用能力目录。在这里管理受支持的机器默认值;仅支持 Goal 配置的能力会明确标注。`,"capabilities.rawJson":`高级:原始 JSON`,"machine.goalOnly":`此能力目前仅支持 Goal 级配置。请打开具体 Goal 的能力设置进行配置;这里不会设置机器级默认值。`,"machine.desiredRevision":`目标 Revision`,"machine.editorUnavailable":`当前版本未安装此 Namespace 的编辑器`,"machine.editorUnavailableDescription":`它仍会显示在 Registry 中;安装或升级对应的 Dashboard 编辑器后才能修改。`,"machine.editorMode":`编辑模式`,"machine.liveDefault":`实时默认值;Goal 显式覆盖优先`,"machine.liveDefaultDescription":`没有显式覆盖的 Goal 会在该能力下一次决策时读取当前机器策略。修改或移除策略会立即影响这些已有 Goal;显式 Goal 覆盖保持固定。`,"machine.credentialTitle":`操作者模型凭据`,"machine.credentialDescription":`管家通道与托管宿主在本机认证用的 key 与 endpoint。key 单独存放于仅属主可读的文件,不会进入这里展示的机器配置,也不会被回读——回读的是它的指纹。`,"machine.credentialApiKey":`API key`,"machine.credentialApiKeyPlaceholder":`粘贴 key 以保存;留空则保留已存的 key`,"machine.credentialBaseUrl":`Endpoint base URL`,"machine.credentialBaseUrlPlaceholder":`https://endpoint.example/v1(留空则使用 endpoint 默认值)`,"machine.credentialStore":`保存凭据`,"machine.credentialClearKey":`清除已存 key`,"machine.credentialClearUrl":`清除已存 endpoint`,"machine.credentialConfigured":`已配置`,"machine.credentialAbsent":`未配置`,"machine.credentialInvalid":`无法读取——需要修复`,"machine.credentialSourceMachine":`本机已存凭据`,"machine.credentialSourceEnvironment":`服务环境变量`,"machine.credentialSourceUnset":`无来源`,"machine.credentialFingerprint":`指纹`,"machine.credentialStored":`凭据已保存。下一轮即生效,无需重启。`,"machine.credentialCleared":`已清除本机存储的凭据。`,"machine.credentialError":`凭据保存失败。`,"machine.credentialBoundary":`保存凭据不授予任何权限:它不会选择执行器、模型或推理强度。`,"machine.genericNamespaceDescription":`使用 JSON 编辑这个已注册 Namespace。LoopX 会先按 capability 自己拥有的 schema 校验,再允许预览写入。`,"machine.jsonConfiguration":`Namespace 配置(JSON)`,"machine.jsonConfigurationHelp":`只更新当前 Namespace;其他机器配置会保留,Apply 仍锁定到已审阅的 Preview Revision。`,"machine.jsonEditor":`JSON`,"machine.editJson":`编辑 JSON`,"capabilities.jsonConfiguration":`Goal 配置(JSON)`,"capabilities.jsonHelp":`仅编辑当前 Goal 的已注册字段。修改后需重新预览才能应用。`,"capabilities.jsonInvalid":`请输入合法的 JSON 对象,且仅包含已注册的可编辑字段。`,"machine.backToForm":`返回表单`,"machine.jsonInvalid":`请先填写一个合法的 JSON object,再预览变更。`,"machine.loadError":`无法读取机器配置。`,"machine.invalidStoredConfiguration":`已保存的机器配置需要修复`,"machine.invalidStoredConfigurationDescription":`已保存值不再符合当前契约,因此不会在这里显示。请检查已定位的能力,并通过“预览”和“应用”替换它;无关 namespace 保持不变。`,"machine.machinePolicy":`机器策略`,"machine.namespaceCount":`已注册 Namespace`,"machine.namespaces":`配置 Namespace`,"machine.periodicReport":`周期报告`,"machine.periodicReportDescription":`为所有未显式覆盖的 Goal 提供默认报告策略;Goal 调度与发送消费解析后的有效配置。`,"machine.periodicReportActivation":`开启后将在已验证的阶段节点自动投递`,"machine.periodicReportActivationDescription":`这不是每周定时器。当 LoopX 验证 Goal 已完成一个阶段时,Agent 会生成并冻结报告,随后通过配置的 Goal Channel 自动发送。启用此订阅即授予持续投递权;发送失败或路由漂移会 fail closed 并进入修复。`,"machine.changeQualityActivation":`质量验证是质量门禁,不是新增授权`,"machine.changeQualityActivationDescription":`继承该策略的 Goal 会验证最终精确 diff。safe_fix 只允许在既有写入权限内执行至多一次有界修复;此设置不会授予文件、权限或合并权。`,"machine.replanCadenceActivation":`复核周期只改变时机,不改变执行权限`,"machine.replanCadenceActivationDescription":`没有显式覆盖的 Goal 会在下一次复核决策前读取此阈值;它不会创建 Turn、消耗配额或授予权限。`,"machine.preview":`审阅机器配置变更`,"machine.previewChanges":`预览变更`,"machine.previewError":`无法生成机器策略预览。`,"machine.previewLocked":`应用操作锁定到当前 Revision;若机器状态变化,LoopX 会要求重新预览。`,"machine.previewRollback":`预览回滚`,"machine.previewRemoval":`预览移除`,"machine.profilePreset":`Profile preset`,"machine.profilePresetHelp":`由 capability 管理的 preset,例如 weekly-progress。`,"machine.registry":`Typed Registry`,"machine.requiredFields":`开启后必须填写 profile preset、Goal Channel route 与有效时区。`,"machine.revision":`机器 Revision`,"machine.revisionLockedReady":`所有变更必须先预览;只有对应的机器 Revision 仍然有效时才会应用。`,"machine.rollbackAvailable":`可回滚上一次应用`,"machine.rollbackDescription":`先预览已保存的前一 Revision,再决定是否恢复。`,"machine.rollbackError":`无法完成回滚。`,"machine.rollbackPreviewDescription":`前一 Revision 已准备恢复,请确认执行本次回滚。`,"machine.rolledBack":`已恢复前一版机器策略,并通过校验。`,"machine.removed":`机器策略已移除,并通过回读校验。`,"machine.routeRef":`Goal Channel route`,"machine.routeRefHelp":`只填写公开 route alias;凭据与 provider identifier 不会进入此表单。`,"machine.timezone":`时区`,"machine.timezoneHelp":`填写 IANA 时区,例如 Asia/Shanghai。`,"machine.title":`机器配置`,"machine.unchanged":`机器策略已与预览一致,本次没有写入。`,"machine.visualEditor":`引导式`,"capabilities.atomicOverride":`Goal override 按完整配置生效`,"capabilities.atomicOverrideDescription":`Goal 的完整配置优先于机器默认值;LoopX 不会在两个作用域之间逐字段拼接。`,"capabilities.applyFailed":`Goal 能力变更未写入。`,"capabilities.applyPreview":`应用此预览`,"capabilities.catalog":`Goal 能力目录`,"capabilities.chooseGoal":`请先选择一个 Goal,再查看它的能力配置。`,"capabilities.defaultValue":`声明的默认值`,"capabilities.description":`查看当前 Goal 可用的能力,以及每项配置的准确作用域。`,"capabilities.editorPrepared":`已注册 typed editor contract`,"capabilities.effectiveSource":`当前生效来源`,"capabilities.empty":`当前 Goal 没有可用的能力描述。`,"capabilities.fields":`已注册字段`,"capabilities.goalPolicy":`Goal 能力策略`,"capabilities.goalScope":`Goal`,"capabilities.goalValue":`当前 Goal 值`,"capabilities.loadFailed":`无法加载 Goal 能力`,"capabilities.larkInboxNotificationDescription":`此开关只控制遇到人工 Gate 时是否自动发群消息;关闭后仍会保留飞书事件收件箱能力。`,"capabilities.larkInboxNotificationSetting":`Gate 群通知`,"capabilities.loading":`正在加载 Goal 能力…`,"capabilities.machineOnly":`此能力只能在机器作用域配置。`,"capabilities.machineValue":`实时机器默认值`,"capabilities.machineScope":`机器`,"capabilities.previewOnly":`当前读取结果来自真实配置;在 revision-locked preview/apply 路径接通前,Dashboard 不会提供 Goal 写入控件。`,"capabilities.preview":`锁定 revision 的变更预览`,"capabilities.previewChanges":`预览变更`,"capabilities.restoreInheritance":`恢复继承机器默认值`,"capabilities.previewFailed":`无法预览 Goal 能力变更。`,"capabilities.previewLocked":`应用时会重新校验这一个 plan revision;过期变更将被拒绝。`,"capabilities.partialWrite":`Goal 值已保存;共享投影仍需修复`,"capabilities.partialWriteDescription":`源 Goal 配置已经写入并回读,但共享 runtime 投影尚未同步;请勿重复提交本次变更。`,"capabilities.refreshSource":`刷新源配置`,"capabilities.readOnly":`只读能力`,"capabilities.revisionLockedReady":`所有变更必须先预览;只有对应的精确 revision 仍然有效时才会写入。`,"capabilities.retry":`重试`,"capabilities.source.capability_default":`能力默认值`,"capabilities.source.goal_override":`Goal override`,"capabilities.source.machine_default":`实时机器默认值`,"capabilities.source.not_configured":`未配置`,"capabilities.title":`Goal 能力`,"settings.close":`关闭设置`,"settings.appearance":`外观`,"settings.appearanceDescription":`管理当前浏览器里的工作区显示偏好。`,"settings.appearanceTabDescription":`主题和显示偏好`,"settings.capabilitiesTabDescription":`当前 Goal 的能力覆盖配置`,"settings.back":`返回工作区`,"settings.categories":`设置分类`,"settings.description":`管理工作区偏好与集成。`,"settings.eyebrow":`工作区偏好`,"settings.general":`通用`,"settings.goalConnections":`Goal 连接`,"settings.language":`语言`,"settings.modelProvider":`模型 Provider 配置`,"settings.globalCapabilities":`全局能力配置`,"settings.languageDescription":`选择 LoopX Desktop 工作区使用的界面语言。`,"settings.languageEnglishDescription":`使用英文显示导航、设置和工作区控件。`,"settings.languageEnglish":`English`,"settings.languageSimplifiedChineseDescription":`使用简体中文显示导航、设置和工作区控件。`,"settings.languageSimplifiedChinese":`简体中文`,"settings.languageStoredLocally":`此偏好仅保存在当前设备。`,"settings.languageTabDescription":`当前设备的界面语言`,"settings.larkTabDescription":`App、群聊和 Goal Topic 连接`,"settings.machineTabDescription":`本机各 Capability 共享的 typed defaults`,"settings.notifications":`通知`,"settings.open":`设置`,"settings.themeDefault":`纸张`,"settings.themeDefaultDescription":`安静、轻量,适合长期查看。`,"settings.themeDescription":`选择工作区的视觉风格。设置会保存在当前浏览器本地。`,"settings.themeHighContrast":`高对比`,"settings.themeHighContrastDescription":`更强边框和更醒目的状态块。`,"settings.themeLoopx":`LoopX 标准`,"settings.themeLoopxDescription":`精确的黑白界面、Geist 字体与安静的细线结构。`,"settings.title":`设置`,"settings.workspaceDisplay":`工作区显示`,"settings.workspaceTheme":`工作区主题`,"session.closeRecord":`退出运行记录`,"session.details":`Session 详情`,"session.record":`执行 Session · 运行记录`,"session.recordDescription":`当前时间线已切换到这次 Session 的消息与 Turn 记录。`,"sidebar.createGoal":`创建 Goal`,"sidebar.delete":`删除`,"sidebar.deleteGoal":`删除 Goal`,"sidebar.manager":`LoopX 管家`,"sidebar.notifications":`设置`,"sidebar.owner":`个人工作区`,"sidebar.product":`个人 Agent 工作区`,"sidebar.resume":`恢复`,"sidebar.resumeGoal":`恢复 Goal`,"sidebar.stop":`停止`,"tasks.historyLoading":`正在加载历史…`,"tasks.historyError":`历史加载失败,已显示的内容仍可查看。`,"tasks.historyExpired":`历史快照已过期,重新加载后可继续查看。`,"tasks.historyRetry":`重新加载`,"tasks.historyEnd":`已显示全部完成记录`,"tasks.historyMore":`加载更多`,"tasks.historyLocalOnly":`请打开这台机器的 Dashboard 查看完整历史。`,"sidebar.sortGoals":`调整 Goal 顺序`,"sidebar.dragGoal":`拖拽调整顺序,或使用列表排序按钮`,"sidebar.moveUp":`上移 {goal}`,"sidebar.moveDown":`下移 {goal}`,"sidebar.goalMoved":`{goal} 已移至第 {position} 位`,"sidebar.orderNotSaved":`顺序已在本次页面生效;浏览器存储不可用,无法保存。`,"sidebar.stopGoal":`停止 Goal`,"sidebar.stopped":`已停止`,"sidebar.stoppedLoading":`正在加载已停止 Goal`,"sidebar.stoppedLoadFailed":`已停止 Goal 加载失败,其他 Goal 仍可使用。`,"sidebar.retryStopped":`重试`,"state.completed":`已完成`,"state.needsRepair":`需修复`,"state.needsYou":`等你`,"state.quiet":`安静运行`,"state.running":`推进中`,"state.stopped":`已停止`,"state.waiting":`等待条件`,"tasks.blocked":`受阻`,"tasks.agentLane":`工作 Agent`,"tasks.agentLaneDescription":`筛选这个 Goal 下的工作泳道`,"tasks.agentLaneFilter":`按工作 Agent 筛选`,"tasks.allAgentLanes":`全部 Agent({count})`,"tasks.chatAgentReplied":`Agent 已回复`,"tasks.chatPending":`已发送给 Agent`,"tasks.chatPendingDescription":`正在处理;只有经过确认的任务操作才会更新 Tasks。`,"tasks.chatRecent":`最近对话`,"tasks.chatUnchangedDescription":`本次对话没有直接修改 Tasks。需要执行时,可先转成 Task 草稿并确认。`,"tasks.chatViewReply":`查看回复`,"tasks.convertToTask":`转为 Task`,"tasks.completed":`已完成`,"runs.discoveryPartial":`部分执行详情暂不可用,正在重连;任务摘要不代表实时执行状态。`,"runs.discoveryOffline":`执行服务暂不可用,正在重连;保留的任务摘要可能已过时。`,"files.openConversation":`前往会话`,"files.exportSummary":`导出摘要`,"tasks.viewDescription":`先处理待确认,再查看工作与完成记录`,"tasks.viewLabel":`任务视图`,"tasks.listView":`列表`,"tasks.boardView":`看板`,"tasks.completedSummary":`已完成 {count} 项,近期完成明细由控制面按需投影。`,"tasks.emptyCompleted":`还没有完成的任务。`,"tasks.emptyConfirm":`没有待确认的任务。`,"tasks.emptyRunning":`没有待执行或进行中的任务。`,"tasks.emptySchedules":`没有定时任务。`,"tasks.emptyGoal":`这个 Goal 还没有任务。用下面的输入框描述下一步,LoopX 会先展示待确认操作。`,"tasks.markComplete":`标记完成:{name}`,"tasks.moreActions":`更多操作:{name}`,"tasks.openExecution":`查看执行过程:{name}`,"tasks.pending":`待处理`,"tasks.pendingAndRunning":`待执行 / 进行中`,"tasks.scheduled":`定时与持续`,"tasks.sessionError":`Session 异常`,"tasks.waiting":`待执行`,"tasks.waitingAge":`已等待 {age}`,"tasks.viewExecution":`查看执行过程`,"tasks.viewResult":`查看结果`,"time.days":`{count} 天`,"time.hours":`{count} 小时`,"timeline.emptyGoal":`这个 Goal 还没有新动态`,"timeline.emptyGoalDescription":`你可以直接询问进度或下发新的纠偏信息。`,"timeline.emptyWorkspace":`今天的工作区很安静`,"timeline.emptyWorkspaceDescription":`向 LoopX 管家描述一个 Goal,或询问今天最值得关注的事情。`,"timeline.gateHistory":`{count} 项历史 Gate`,"timeline.pending":`正在整理…`,"returnDelivery.queued":`结论等待回传`,"returnDelivery.verifying":`正在核验送达,不会重复发送`,"returnDelivery.delivered":`已送达原受众`,"returnDelivery.reconciled":`恢复后已核验送达`,"returnDelivery.unverified":`送达仍明确未核验`,"timeline.runCompleted":`{run}:已完成`,"timeline.review":`查看处理方式`,"timeline.reviewAndConfirm":`查看并确认`,"timeline.waitingConfirmation":`待你确认`}};function Gi(e,t){return t?Object.entries(t).reduce((e,[t,n])=>e.replaceAll(`{${t}}`,String(n)),e):e}function Ki(){try{return window.localStorage.getItem(`loopx-pw-locale`)===`en`?`en`:`zh-CN`}catch{return`zh-CN`}}function qi({children:e}){let[t,n]=(0,z.useState)(Ki);function r(e){n(e);try{window.localStorage.setItem(Ui,e)}catch{}}(0,z.useEffect)(()=>{document.documentElement.lang=t},[t]);let i=(0,z.useMemo)(()=>({locale:t,setLocale:r,t:(e,n)=>Gi(Wi[t][e],n)}),[t]);return(0,B.jsx)(Hi.Provider,{value:i,children:e})}function Ji(){let e=(0,z.useContext)(Hi);if(!e)throw Error(`useWorkspaceI18n must be used within WorkspaceI18nProvider`);return e}function Yi(e,t){let n={安静运行:`state.quiet`,等你:`state.needsYou`,等待条件:`state.waiting`,推进中:`state.running`,需修复:`state.needsRepair`,已完成:`state.completed`,已停止:`state.stopped`}[e];return n?Wi[t][n]:e}function Xi(e,t){let n={busy:`runs.running`,completed:`runs.completed`,failed:`runs.failed`,queued:`runs.queued`,ready:`runs.ready`,resume_failed:`runs.resumeFailed`,running:`runs.running`,waiting:`runs.waiting`};return e?n[e]?t(n[e]):e:t(`runs.unknown`)}function Zi(e,t){if(!e)return null;let n=new Date(e).getTime();if(Number.isNaN(n))return null;let r=Date.now()-n;if(r<36e5)return null;let i=Math.floor(r/864e5);return i>=1?t(`time.days`,{count:i}):t(`time.hours`,{count:Math.floor(r/36e5)})}var Qi;function H(e,t,n){function r(n,r){if(n._zod||Object.defineProperty(n,"_zod",{value:{def:r,constr:o,traits:new Set},enumerable:!1}),n._zod.traits.has(e))return;n._zod.traits.add(e),t(n,r);let i=o.prototype,a=Object.keys(i);for(let e=0;en?.Parent&&t instanceof n.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(o,"name",{value:e}),o}var $i=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},ea=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(Qi=globalThis).__zod_globalConfig??(Qi.__zod_globalConfig={});var ta=globalThis.__zod_globalConfig;function na(e){return e&&Object.assign(ta,e),ta}function ra(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function ia(e,t){return typeof t==`bigint`?t.toString():t}function aa(e){return{get value(){{let t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function oa(e){return e==null}function sa(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function ca(e,t){let n=e/t,r=Math.round(n),i=2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r){};function ga(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var _a=aa(()=>{if(ta.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function va(e){if(ga(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return ga(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}function ya(e){return va(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var ba=new Set([`string`,`number`,`symbol`]);function xa(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Sa(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function U(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function Ca(e){return Object.keys(e).filter(t=>e[t]._zod.optin===`optional`&&e[t]._zod.optout===`optional`)}var wa={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function Ta(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);return Sa(e,fa(e._zod.def,{get shape(){let e={};for(let r in t){if(!(r in n.shape))throw Error(`Unrecognized key: "${r}"`);t[r]&&(e[r]=n.shape[r])}return da(this,`shape`,e),e},checks:[]}))}function Ea(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);return Sa(e,fa(e._zod.def,{get shape(){let r={...e._zod.def.shape};for(let e in t){if(!(e in n.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&delete r[e]}return da(this,`shape`,r),r},checks:[]}))}function Da(e,t){if(!va(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=e._zod.def.shape;for(let e in t)if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return Sa(e,fa(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return da(this,`shape`,n),n}}))}function Oa(e,t){if(!va(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return Sa(e,fa(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return da(this,`shape`,n),n}}))}function ka(e,t){if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);return Sa(e,fa(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return da(this,`shape`,n),n},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function Aa(e,t,n){let r=t._zod.def.checks;if(r&&r.length>0)throw Error(`.partial() cannot be used on object schemas containing refinements`);return Sa(t,fa(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in r))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t])}else for(let t in r)i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t];return da(this,`shape`,i),i},checks:[]}))}function ja(e,t,n){return Sa(t,fa(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in i))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=new e({type:`nonoptional`,innerType:r[t]}))}else for(let t in r)i[t]=new e({type:`nonoptional`,innerType:r[t]});return da(this,`shape`,i),i}}))}function Ma(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function Fa(e){return typeof e==`string`?e:e?.message}function Ia(e,t,n){let r=e.message?e.message:Fa(e.inst?._zod.def?.error?.(e))??Fa(t?.error?.(e))??Fa(n.customError?.(e))??Fa(n.localeError?.(e))??`Invalid input`,{inst:i,continue:a,input:o,...s}=e;return s.path??=[],s.message=r,t?.reportInput&&(s.input=o),s}function La(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function Ra(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}var za=(e,t)=>{e.name=`$ZodError`,Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,ia,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},Ba=H(`$ZodError`,za),Va=H(`$ZodError`,za,{Parent:Error});function Ha(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?(n[i.path[0]]=n[i.path[0]]||[],n[i.path[0]].push(t(i))):r.push(t(i));return{formErrors:r,fieldErrors:n}}function Ua(e,t=e=>e.message){let n={_errors:[]},r=(e,i=[])=>{for(let a of e.issues)if(a.code===`invalid_union`&&a.errors.length)a.errors.map(e=>r({issues:e},[...i,...a.path]));else if(a.code===`invalid_key`)r({issues:a.issues},[...i,...a.path]);else if(a.code===`invalid_element`)r({issues:a.issues},[...i,...a.path]);else{let e=[...i,...a.path];if(e.length===0)n._errors.push(t(a));else{let r=n,i=0;for(;i(t,n,r,i)=>{let a=r?{...r,async:!1}:{async:!1},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise)throw new $i;if(o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>Ia(e,a,na())));throw ha(t,i?.callee),t}return o.value},Ga=e=>async(t,n,r,i)=>{let a=r?{...r,async:!0}:{async:!0},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise&&(o=await o),o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>Ia(e,a,na())));throw ha(t,i?.callee),t}return o.value},Ka=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new $i;return a.issues.length?{success:!1,error:new(e??Ba)(a.issues.map(e=>Ia(e,i,na())))}:{success:!0,data:a.value}},qa=Ka(Va),Ja=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new e(a.issues.map(e=>Ia(e,i,na())))}:{success:!0,data:a.value}},Ya=Ja(Va),Xa=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Wa(e)(t,n,i)},Za=e=>(t,n,r)=>Wa(e)(t,n,r),Qa=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Ga(e)(t,n,i)},$a=e=>async(t,n,r)=>Ga(e)(t,n,r),eo=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Ka(e)(t,n,i)},to=e=>(t,n,r)=>Ka(e)(t,n,r),no=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Ja(e)(t,n,i)},ro=e=>async(t,n,r)=>Ja(e)(t,n,r),io=/^[cC][0-9a-z]{6,}$/,ao=/^[0-9a-z]+$/,oo=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,so=/^[0-9a-vA-V]{20}$/,co=/^[A-Za-z0-9]{27}$/,lo=/^[a-zA-Z0-9_-]{21}$/,uo=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,fo=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,po=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,mo=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,ho=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;function go(){return new RegExp(ho,`u`)}var _o=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,vo=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,yo=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,bo=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,xo=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,So=/^[A-Za-z0-9_-]*$/,Co=/^https?$/,wo=/^\+[1-9]\d{6,14}$/,To=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`,Eo=RegExp(`^${To}$`);function Do(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Oo(e){return RegExp(`^${Do(e)}$`)}function ko(e){let t=Do({precision:e.precision}),n=[`Z`];e.local&&n.push(``),e.offset&&n.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let r=`${t}(?:${n.join(`|`)})`;return RegExp(`^${To}T(?:${r})$`)}var Ao=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},jo=/^-?\d+$/,Mo=/^-?\d+(?:\.\d+)?$/,No=/^(?:true|false)$/i,Po=/^null$/i,Fo=/^[^A-Z]*$/,Io=/^[^a-z]*$/,Lo=H(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),Ro={number:`number`,bigint:`bigint`,object:`date`},zo=H(`$ZodCheckLessThan`,(e,t)=>{Lo.init(e,t);let n=Ro[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.maximum:n.exclusiveMaximum)??1/0;t.value{(t.inclusive?r.value<=t.value:r.value{Lo.init(e,t);let n=Ro[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.minimum:n.exclusiveMinimum)??-1/0;t.value>r&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Vo=H(`$ZodCheckMultipleOf`,(e,t)=>{Lo.init(e,t),e._zod.onattach.push(e=>{var n;(n=e._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?n.value%t.value===BigInt(0):ca(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),Ho=H(`$ZodCheckNumberFormat`,(e,t)=>{Lo.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=wa[t.format];e._zod.onattach.push(e=>{let r=e._zod.bag;r.format=t.format,r.minimum=i,r.maximum=a,n&&(r.pattern=jo)}),e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}sa&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),Uo=H(`$ZodCheckMaxLength`,(e,t)=>{var n;Lo.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!oa(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.maximum??1/0;t.maximum{let r=n.value;if(r.length<=t.maximum)return;let i=La(r);n.issues.push({origin:i,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Wo=H(`$ZodCheckMinLength`,(e,t)=>{var n;Lo.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!oa(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.minimum??-1/0;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let r=n.value;if(r.length>=t.minimum)return;let i=La(r);n.issues.push({origin:i,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Go=H(`$ZodCheckLengthEquals`,(e,t)=>{var n;Lo.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!oa(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=n=>{let r=n.value,i=r.length;if(i===t.length)return;let a=La(r),o=i>t.length;n.issues.push({origin:a,...o?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),Ko=H(`$ZodCheckStringFormat`,(e,t)=>{var n,r;Lo.init(e,t),e._zod.onattach.push(e=>{let n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??=new Set,n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),qo=H(`$ZodCheckRegex`,(e,t)=>{Ko.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Jo=H(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=Fo,Ko.init(e,t)}),Yo=H(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=Io,Ko.init(e,t)}),Xo=H(`$ZodCheckIncludes`,(e,t)=>{Lo.init(e,t);let n=xa(t.includes),r=new RegExp(typeof t.position==`number`?`^.{${t.position}}${n}`:n);t.pattern=r,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(r)}),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),Zo=H(`$ZodCheckStartsWith`,(e,t)=>{Lo.init(e,t);let n=RegExp(`^${xa(t.prefix)}.*`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),Qo=H(`$ZodCheckEndsWith`,(e,t)=>{Lo.init(e,t);let n=RegExp(`.*${xa(t.suffix)}$`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),$o=H(`$ZodCheckOverwrite`,(e,t)=>{Lo.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),es=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),--this.indent}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(` +通知:仅在需要我时`,"composer.nextAction":`询问下一步`,"composer.nextActionPrompt":`我现在该做什么?`,"composer.send":`发送`,"composer.sendMessage":`向 LoopX 发送消息`,"composer.sendMessageHint":`发送消息`,"composer.sentImageAlt":`移除图片 {name}`,"conversation.agentPending":`正在整理…`,"conversation.close":`关闭对话回执`,"conversation.convertHint":`将 Agent 最新回复转为 Task 草稿`,"conversation.full":`查看完整对话`,"conversation.receipt":`对话回执`,"conversation.replying":`正在回复`,"conversation.title":`管家对话`,"conversation.toTask":`转为 Task`,"digest.away":`自上次访问以来的运行记录`,"digest.completed":`新增完成运行`,"digest.failed":`新增失败或中断`,"digest.needsYou":`当前待确认`,"feedback.applying":`正在执行:{title}`,"feedback.cancelFailed":`取消失败:{error}`,"feedback.completed":`已完成:{title}`,"feedback.executionFailed":`执行失败:{error}`,"feedback.gateRequired":`需要你确认:{summary}`,"feedback.notCompleted":`操作未完成:{status}`,"feedback.goalRefreshFailed":`已打开 Goal,但暂时无法刷新最新状态。请点击刷新重试。`,"feedback.preparingPreview":`正在准备确认预览:{title}`,"feedback.previewFailed":`无法准备确认预览:{error}`,"feedback.sendFailed":`发送失败:{error}`,"feedback.sendGenericError":`消息发送失败,请稍后重试。`,"feedback.stale":`状态已变化,操作未执行,请重新生成确认预览。`,"feedback.taskDraftCreated":`已根据回复生成 Task 草稿。编辑后发送,LoopX 会先展示确认预览。`,"goal.defaultTitle":`新的个人 Goal`,"goal.initialTodo":`按完成标准推进:{criteria}`,"goal.objectiveBoundary":`执行边界:{boundary}`,"goal.objectiveCompletion":`完成标准:{criteria}`,"drawer.advancedDiagnostics":`高级诊断`,"drawer.agentWorking":`Agent 正在继续执行,记录会自动更新。`,"drawer.analysis":`正在分析`,"drawer.apply":`确认并应用`,"drawer.applying":`正在应用…`,"drawer.attentionBlocking":`正在阻塞 Agent`,"drawer.attentionWaiting":`等待你的决定`,"drawer.autoNotify":`Human-gate 自动通知`,"drawer.branch":`分支`,"drawer.closeDetail":`关闭详情:返回{context}`,"drawer.connected":`已连接`,"drawer.correctionDescription":`消息会沿用当前 Goal、Todo 与 Agent Session 上下文。`,"drawer.correctionLabel":`与 {agent} 纠偏`,"drawer.correctionPlaceholder":`例如:先关注权限风险,暂时不要提交…`,"drawer.correctionSend":`发送纠偏`,"drawer.correctionTextarea":`输入纠偏信息:Goal {goal},Agent {agent},Run {run}`,"drawer.copyRepository":`复制仓库标识`,"drawer.copyRepositoryDone":`已复制仓库标识`,"drawer.copyRepositoryError":`复制失败,请检查浏览器剪贴板权限。`,"drawer.copyRepositorySuccess":`已复制,可粘贴到其他工具。`,"drawer.cost":`成本 24h / 7d`,"drawer.costShort":`成本`,"drawer.durationShort":`时长`,"drawer.period24h":`24 小时`,"drawer.period7d":`7 天`,"drawer.tokens":`Token 24 小时 / 7 天`,"drawer.tokensShort":`Token`,"drawer.usageNotMeasured":`未采集`,"drawer.currentGoal":`当前 Goal`,"attentionDetail.title":`事项说明`,"attentionDetail.request":`需要你做什么`,"attentionDetail.decision":`需要作出决定`,"attentionDetail.unknownRequest":`来源未明确,请先查看来源再判断`,"attentionDetail.open":`当前投影中待处理`,"attentionDetail.closed":`已关闭`,"attentionDetail.deferred":`已推迟`,"attentionDetail.superseded":`已被替代`,"attentionDetail.unknown":`来源未提供状态`,"attentionDetail.unavailable":`来源尚未确认当前事项,请刷新后再操作`,"attentionDetail.unknownReason":`来源尚未提供原因。`,"attentionDetail.targetTodo":`关联的待解锁 Todo`,"attentionDetail.targetAgent":`事项指定的 Agent`,"attentionDetail.scope":`声明的决策范围`,"attentionDetail.notProvided":`来源未提供`,"attentionDetail.replacement":`替代 Todo`,"attentionDetail.openReplacement":`打开替代事项`,"attentionDetail.boundary":`阅读详情不会关闭 gate 或授予权限;作出决定前仍需新的操作预览。`,"drawer.decisionDefaultEvidence":`当前状态没有附加公开安全证据;下一步仍会先展示 Preview。`,"drawer.decisionDefaultReason":`该决定会影响当前 Todo 的下一步执行。`,"drawer.decisionDefer":`稍后决定`,"drawer.decisionMore":`更多决定`,"drawer.decisionReject":`拒绝`,"drawer.decisionReview":`查看影响并决定`,"drawer.dependencies":`依赖`,"drawer.detailsAndActions":`详情与操作`,"drawer.duration":`运行时长 24h / 7d`,"drawer.evidence":`证据`,"drawer.executionHistory":`执行历史`,"drawer.executionRecord":`运行记录`,"drawer.executionRecordAndResult":`执行过程与结果`,"drawer.explainDecision":`解释此决定`,"drawer.gateApproveHint":`在终端执行一条命令即可完成审批:`,"drawer.gateRejectHint":`不同意就把末尾的 approve 换成 reject。执行后这条提醒会自动消失。`,"drawer.gateRequiresHost":`需要宿主确认`,"drawer.gateRequiresHostDescription":`页面无权直接批准这类权限变更,你的点击没有写入任何内容。`,"drawer.goalAutoRun":`当前 Goal 的自动运行`,"drawer.goalChanges":`当前 Goal 的待确认变更`,"drawer.goalDetails":`Goal 详情`,"drawer.group":`群聊`,"drawer.inspectorFull":`切换到全屏`,"drawer.inspectorFullView":`全屏查看`,"drawer.inspectorHalf":`切换到半屏`,"drawer.inspectorHalfView":`半屏查看`,"drawer.lastNotification":`最近通知`,"drawer.larkConfigure":`管理 Lark connection`,"drawer.larkConnect":`连接 Lark App`,"drawer.larkConnection":`Lark connection`,"drawer.larkNotConfigured":`未配置`,"drawer.larkNotConfiguredDescription":`配置后,当这个 Goal 出现需要你确认的变更时,会自动发飞书通知。`,"drawer.managerChanges":`管家待确认变更`,"drawer.moreActions":`更多操作`,"drawer.moreRunActions":`更多运行操作`,"drawer.nextTransition":`下一转换`,"drawer.noExecutionHistory":`暂无执行记录。`,"drawer.noRun":`尚未启动执行 Session`,"drawer.noRunDescription":`Agent 开始执行后,运行记录会稳定显示在这里。`,"drawer.notAssigned":`未分配`,"drawer.notLinked":`未关联`,"drawer.notSet":`未设置`,"drawer.outputDetails":`产出详情`,"drawer.outputRecorded":`该产出已记录到当前 Goal。`,"drawer.outputSafePreview":`公开安全产出预览`,"drawer.outputRun":`Run`,"drawer.outputTodo":`Todo`,"drawer.outputs":`本次运行产出`,"drawer.previewUnavailable":`此产出没有可用的公开安全内联预览。`,"drawer.priority":`优先级`,"drawer.progress":`进度`,"drawer.proposalApplied":`已应用,LoopX 状态将刷新。`,"drawer.proposalApplyFailed":`应用失败,没有写入任何变更。`,"drawer.proposalApplyFailedHint":`请刷新 Goal 状态后重新生成;若仍失败,可保留此页并查看高级诊断。`,"drawer.proposalClose":`关闭`,"drawer.proposalDefer":`稍后`,"drawer.proposalDeferred":`已暂缓,可稍后继续应用或重新生成。`,"drawer.proposalEnterGoal":`进入新 Goal`,"drawer.proposalExplainer":`确认后,LoopX 会执行这项变更并显示写入结果。关闭或取消不会修改任何状态。`,"drawer.proposalRecheck":`按最新状态重新检查`,"drawer.proposalRegenerate":`基于最新状态重试`,"drawer.proposalRejected":`已拒绝,这项变更不会写入。`,"drawer.proposalStale":`来源状态已变化,请按最新状态重新检查。`,"drawer.proposalViewGoal":`查看更新后的 Goal`,"drawer.reassign":`改派给`,"drawer.reassignSummary":`重新分配:{task}`,"drawer.reason":`原因`,"drawer.recoveryDescription":`本地历史已经保留,请选择恢复路径。`,"drawer.recoveryFailed":`上游 Session 恢复失败`,"drawer.recoveryNewSession":`携带上下文开始新 Session`,"drawer.recoveryRetry":`重试恢复`,"drawer.repositoryRole":`执行工作区`,"drawer.repository":`仓库`,"drawer.replyMode":`回复方式`,"drawer.subagentApplied":`已写入,并通过共享 Goal 状态读回校验。`,"drawer.subagentAppliedRefreshFailed":`已写入并通过共享 Goal 状态读回;状态投影刷新失败,可稍后手动刷新。`,"drawer.subagentApplying":`正在写入并校验共享状态读回…`,"drawer.subagentApplyFailed":`子代理设置写入失败。`,"drawer.subagentChildLimit":`当前上限`,"drawer.subagentConfirmDisable":`确认关闭子代理执行`,"drawer.subagentConfirmEnable":`确认开启子代理执行`,"drawer.subagentCurrentBoundary":`当前任务领域限制`,"drawer.subagentDescription":`仅在 Todo、配额、能力和写入范围门禁全部通过后,允许运行时为相互独立的任务临时创建子代理;不会强制并行,也不会授予持久权限。`,"drawer.subagentDisable":`预览关闭子代理执行`,"drawer.subagentDisableSummary":`这个 Goal 将不再创建新的子代理;现有 Todo 归属和执行记录不受影响。`,"drawer.subagentDomainInvalid":`所选任务领域限制无效。`,"drawer.subagentDomainTodoCount":`匹配 {count} 个开放 Todo`,"drawer.subagentDomains":`任务领域限制(可选)`,"drawer.subagentDomainsEmpty":`当前没有开放的 advancement Todo 声明 task_domain;保持为空即可不按任务领域限制子代理执行。`,"drawer.subagentDomainsHint":`全部不选表示不按任务领域过滤;选择后只放行匹配且已声明领域的 Todo,其他执行门禁始终生效。`,"drawer.subagentDomainsUnrestricted":`不限制任务领域`,"drawer.subagentEnable":`预览开启子代理执行`,"drawer.subagentLabel":`Per-Goal 执行边界`,"drawer.subagentModel":`子 Agent 模型`,"drawer.subagentEffort":`子 Agent 推理档位`,"drawer.subagentModelDefault":`宿主默认`,"drawer.subagentLunaPreset":`使用 Luna / max`,"drawer.subagentClearModel":`清除模型偏好`,"drawer.subagentModelHint":`填写后通过“预览配置调整”保存,执行关闭时也可保存偏好;启动时须核验宿主支持情况。`,"drawer.subagentModelRequired":`设置推理档位前请先指定子 Agent 模型。`,"drawer.subagentMaxChildren":`最多子代理数`,"drawer.subagentNoChange":`当前 Goal 已是这个设置,没有写入任何内容。`,"drawer.subagentPending":`待确认`,"drawer.subagentPreviewBoundary":`预览配置调整`,"drawer.subagentPreviewFailed":`无法生成子代理设置预览。`,"drawer.subagentPreviewing":`正在核对最新 Goal 状态…`,"drawer.subagentPreviewReady":`预览已锁定,确认后才会写入这个 Goal。`,"drawer.subagentPreviewSummary":`最多允许创建 {count} 个子代理;任务领域限制:{domains}。`,"drawer.subagentRemoteReadOnly":`当前来源只读,请在 Goal 所在主机上修改。`,"drawer.subagentTitle":`自适应子代理执行`,"drawer.remoteDetailsDescription":`SSH 来源只展示公开安全状态,不读取来源主机上的连接配置。`,"drawer.remoteDetailsUnavailable":`远端详情未投影`,"drawer.resumeNo":`否`,"drawer.resumeYes":`是`,"drawer.runDetails":`执行 Session`,"drawer.runInterrupt":`中断本次运行`,"drawer.runLatest":`查看最近执行过程`,"drawer.runNewSession":`开始新 Session`,"drawer.runCloseSession":`关闭 Session`,"drawer.runRecordEmpty":`还没有运行记录。Agent 尚未开始这次执行;请在“详情与操作”查看等待条件或恢复 Session。`,"drawer.runRecordProjected":`当前没有可展示的逐步运行记录。LoopX 已读取到 {completed}/{total} 的投影进度{outputs};请在“详情与操作”检查 Session 状态。`,"drawer.runRecordProjectedOutputs":`和 {count} 项产出`,"drawer.runRoleAssistant":`已完成`,"drawer.runRoleSystem":`需检查`,"drawer.runRoleUser":`收到任务`,"drawer.runView":`Session 视图`,"drawer.scheduleAdd":`添加定时检查`,"drawer.scheduleDefaultNotification":`仅在需要你时通知`,"drawer.scheduleDefaultStop":`Goal 完成或 owner 停止`,"drawer.scheduleDefaultTarget":`由 LoopX 调度器按 Goal 配置唤醒。`,"drawer.scheduleEdit":`改为每 2 小时`,"drawer.scheduleLast":`上次执行`,"drawer.scheduleLocalTimezone":`本地时区`,"drawer.scheduleNext":`下次执行`,"drawer.scheduleNeverRun":`尚未执行`,"drawer.scheduleNotification":`通知`,"drawer.schedulePause":`暂停`,"drawer.schedulePending":`等待调度`,"drawer.scheduleResume":`恢复`,"drawer.scheduleRunNow":`立即运行`,"drawer.scheduleStop":`停止{kind}`,"drawer.scheduleStopCondition":`停止条件`,"drawer.scheduleTimezone":`时区`,"drawer.sessionRecoverable":`可恢复`,"drawer.sessionStatus":`会话状态`,"drawer.setupHeartbeat":`设置 Heartbeat`,"drawer.taskActions":`Todo 待确认操作`,"drawer.taskAdvancement":`推进任务`,"drawer.taskBlock":`标记阻塞`,"drawer.taskComplete":`标记完成`,"drawer.taskCompletedNote":`该任务保留为只读记录。`,"drawer.taskCompletedTitle":`任务已完成`,"drawer.taskDefer":`暂缓`,"drawer.taskDeferCondition":`Todo 暂缓恢复条件`,"drawer.taskDeferInvalid":`条件格式不受支持;请使用下列可判定条件。`,"drawer.taskDeferPlaceholder":`例如 resume_at:2026-09-14T09:00:00+08:00`,"drawer.taskDeferReview":`检查暂缓`,"drawer.taskDeferSupported":`支持 todo_done、pr_merged、capacity_available 与带时区的 resume_at 条件。`,"drawer.taskDeferUntil":`暂缓至`,"drawer.taskDetails":`Todo 详情`,"drawer.taskInfo":`任务信息`,"drawer.taskManage":`管理任务`,"drawer.taskNextCompleted":`可创建后续任务`,"drawer.taskNextOpen":`推进或更新状态`,"drawer.taskOrdinary":`普通任务`,"drawer.taskStatusBlocked":`受阻`,"drawer.taskStatusDeferred":`已延期`,"drawer.resumeWhen":`恢复条件`,"drawer.resumeState":`恢复状态`,"drawer.resumePending":`等待条件满足`,"drawer.resumeReady":`可恢复`,"drawer.resumeReceipt":`恢复回执`,"drawer.taskNextDeferred":`等待恢复条件满足后重新评估`,"drawer.taskNextResumeReady":`恢复条件已满足,等待生命周期重新规划`,"drawer.taskStatusCompleted":`已完成`,"drawer.taskStatusOpen":`待执行`,"drawer.taskSuccessor":`创建后续 Todo`,"drawer.taskSuccessorNote":`Owner 标记为阻塞,等待补充上下文。`,"drawer.taskSuccessorSummary":`创建后续 Todo:{task}`,"drawer.taskSuccessorText":`{task} 的后续工作`,"drawer.taskType":`任务类型`,"drawer.topic":`Topic`,"drawer.trigger":`触发方式`,"drawer.titleAttention":`需要你`,"drawer.titleOutput":`产出详情`,"drawer.titleProposalApplied":`执行结果`,"drawer.titleProposalConfirm":`确认执行`,"drawer.titleSchedule":`定时检查`,"drawer.unconfigured":`未配置`,"drawer.workspaceCandidates":`可选择的工作区`,"files.emptySummary":`公开安全产出`,"files.empty":`还没有文件、产出或已验证的阶段周报。`,"files.loadingReports":`正在加载已验证的阶段周报…`,"files.reportDelta":`+{added} 新增 · {changed} 变化`,"files.reportAdded":`新增`,"files.reportChanged":`变化`,"files.reportGeneration":`生成批次`,"files.reportLoadFailed":`无法加载已验证周报`,"files.reportPublication":`发布批次`,"files.title":`Files & Outputs`,"files.verifiedReport":`已验证阶段周报`,"header.agentUnavailable":`不可用`,"header.chatRuntime":`Chat`,"header.workAgentCount":`{count} 个工作 Agent`,"header.chat":`Chat`,"header.files":`Files`,"header.goalCapabilities":`能力配置`,"header.goalCapabilitiesDescription":`管理 Goal override 与继承的本机默认值。`,"header.goalDetails":`Goal 详情`,"header.goalDetailsDescription":`查看状态、用量、仓库、通知与 Session。`,"header.goalSettings":`Goal 设置`,"header.goalSettingsDescription":`打开 Goal 详情或能力配置`,"header.goalNavigation":`Goal 导航`,"header.goalView":`Goal 视图`,"header.live":`实时`,"header.manager":`LoopX 管家`,"header.managerDescription":`跨 Goal 的个人工作入口`,"header.managerRuntime":`{profile} · {sandbox}`,"header.managerRuntimeFallback":`配置无效,已回退到 {profile} · {sandbox};请在机器能力设置中修复。`,"header.managerExecutorKindIndividual":`个人 CLI 登录`,"header.managerExecutorKindManaged":`operator 凭据`,"header.managerExecutorKindRegistered":`注册端点`,"header.managerExecutionUnavailable":`所选执行器 {executor} 无法在本机启动;该通道不会回落到个人 CLI 登录。`,"header.managerExecutionUnavailableCredential":`所选执行器 {executor} 需要 operator 凭据 {credential},配置后该通道才能启动它。`,"header.managerExecutionUnavailableRuntime":`所选执行器 {executor} 无法在本机启动:本机未安装其 runtime。`,"header.managerExecutionUnavailableEffort":`所选执行器 {executor} 拒绝了当前配置的推理档位;请改为受支持的档位后刷新。`,"header.managerEndpointStewardDefault":`当前运行 {executor},管家通道的出货默认值;如需改指请显式选择执行器。`,"header.managerOverview":`总览`,"header.managerView":`管家视图`,"header.openGoalNavigation":`打开 Goal 导航`,"header.readOnlySourceDescription":`{source} 通过 SSH 隧道只读展示`,"header.refresh":`刷新状态`,"header.refreshDone":`刚刚更新`,"header.refreshFailed":`刷新失败`,"header.refreshing":`刷新中`,"header.selectAgent":`选择 Agent`,"header.selectChatRuntime":`选择聊天 Runtime`,"header.tasks":`Tasks`,"header.themeBrutal":`切换到野兽主题`,"header.themePaper":`切换到默认主题`,"home.blockingSummary":`其中 {count} 项正在阻塞 Agent。`,"home.completedGoals":`已完成的 Goal`,"home.empty":`当前没有`,"startup.goalLoading":`正在加载状态…`,"startup.goalError":`状态加载失败`,"startup.progress":`已加载 {loaded} / {total} 个活跃 Goal`,"startup.partial":`Goal 状态正在逐个更新,当前统计尚不完整。`,"startup.independent":`此 Goal 的加载不会阻塞其他 Goal,你可以先查看已加载的内容。`,"startup.error.timeout":`读取超时,可在本地服务就绪后重试。`,"startup.error.network":`连接中断,请重试以重新连接。`,"startup.error.service":`Goal 状态读取失败。请稍后重试;若问题持续,请检查状态来源。`,"startup.error.access":`状态来源无法访问此 Goal 所需的文件或运行时目录。请检查该来源运行账户的访问权限,修复后重试。`,"startup.error.revision":`加载期间 Goal 目录发生变化,请刷新以同步。`,"startup.error.scope":`该 Goal 已不在当前来源中,请刷新目录。`,"startup.error.invalid":`无法解析状态响应,请刷新或检查 LoopX 更新。`,"startup.retry":`重试`,"startup.retryFailed":`重试失败的 Goal`,"startup.failedCount":`{count} 个 Goal 加载失败,已加载的 Goal 可继续使用。`,"home.greeting":`你好,我是 LoopX 管家`,"home.history":`历史`,"home.lane.needsYou":`需要你`,"home.lane.needsYouDescription":`等待你的决定、授权或补充信息`,"home.lane.observing":`观察中`,"home.lane.observingDescription":`持续监控,出现变化时再提醒你`,"home.lane.running":`执行中`,"home.lane.runningDescription":`Agent 正在推进并持续回传进展`,"home.lane.scheduled":`已安排`,"home.lane.scheduledDescription":`已经安排,等待时间或前置条件`,"home.noActivity":`尚无活动`,"home.noFirstActivity":`等待首次活动`,"home.noCompletedGoals":`还没有已完成的 Goal`,"home.preservedState":`保留状态,可随时恢复`,"home.stopped":`已停止`,"home.systemHealth":`系统健康:{summary}`,"home.taskCount":`{count} 个 Task`,"home.todayAt":`今天 {time}`,"home.waitingCount":`你有 {count} 项需要处理。`,"home.workspace":`Goal 工作区`,"lark.allMessages":`此 Topic 中的所有消息`,"lark.allTopicMessages":`所有 Topic 消息`,"lark.agentIngress":`Agent 入站方式`,"lark.agentAppPermissions":`每个选中的 Agent 都需要一个已具备群聊提及和回复能力的 Lark App。`,"lark.agentApps":`每个 Agent 的 Lark App`,"lark.agentAppsDescription":`默认使用上方 App;需要独立机器人身份时,可为 Agent 选择另一个兼容 App。`,"lark.agentAppSelection":`{agent} 的 Lark App`,"lark.appCreated":`App 已创建`,"lark.appCreateFailed":`创建失败`,"lark.appLoading":`正在加载可用的 Lark Apps…`,"lark.appPermissions":`该 App 能发送建联消息,但缺少接收群聊 @ 消息或自动回复所需的机器人权限。请开启 im:message.group_at_msg:readonly、im:message.send_as_bot 和事件 im.message.receive_v1,发布新版后刷新。`,"lark.appProfile":`Lark App`,"lark.apps":`Lark Apps`,"lark.autoReplyUnavailable":`自动回复暂不可用`,"lark.autoReplyReady":`自动回复可用`,"lark.bindGoal":`绑定到 Goal`,"lark.cancel":`取消`,"lark.cardinality":`一个 Lark App · 多个 Goal · 每个 Agent 一条隔离路由`,"lark.capture":`接收范围`,"lark.captureAddressed":`仅接收提及 App 或回复 App 的消息`,"lark.captureAll":`接收此 Goal Topic 中的所有消息`,"lark.captureScope":`接收范围`,"lark.captureScopeDescription":`决定哪些 Topic 消息会进入 LoopX;不会扩大 Agent 权限。`,"lark.closeConnection":`关闭连接弹窗`,"lark.closeCreate":`关闭创建弹窗`,"lark.closeSettings":`关闭 Lark 设置`,"lark.connect":`连接`,"lark.connectAllAgents":`连接全部已注册 Agent`,"lark.connectAllAgentsAction":`一键连接 {count} 个 Agent`,"lark.connectAllAgentsDescription":`一次引导创建 {count} 个隔离的 Agent Topic;请在对应 Topic 内发送请求,每个 Agent 保留独立路由和收件箱。`,"lark.connectApp":`连接 Lark App`,"lark.connection":`连接`,"lark.connections":`连接`,"lark.configuration":`Lark 配置`,"lark.continueFeishu":`在飞书中继续`,"lark.createAutomatically":`自动创建 Goal Topic`,"lark.createAutomaticallyDescription":`将为每个选中的 Agent 创建带 Agent 标识的专属 Topic。`,"lark.defaultAgentAppDescription":`用于查找目标群聊,并作为所有选中 Agent 的默认 App;下方的逐 Agent 选择可覆盖它。`,"lark.description":`管理可复用的 Lark App,并用独立 Topic 将群聊连接到 Goal。`,"lark.editConnection":`编辑 Lark 连接`,"lark.goalConnections":`{count} 个 Goal 连接`,"lark.goalTopicConnections":`Lark Goal Topic 连接`,"lark.groupChat":`群聊`,"lark.groupEmpty":`该机器人尚未加入可连接的群。请先在飞书群设置中添加这个机器人,再回来刷新或搜索。`,"lark.groupLoading":`正在读取该机器人已加入的群…`,"lark.groupSearch":`搜索该机器人已加入的群`,"lark.historyPermission":`历史补读权限(独立能力)`,"lark.health.contextCaptured":`已捕获群聊上下文`,"lark.health.contextCapturedDetail":`该消息仅作为非权威上下文保留,不会启动或引导管家 Turn;需要执行时请直接 @ 机器人或回复机器人的消息。`,"lark.health.eventProcessed":`已处理 {events} 条事件,成功回复 {replies} 条。`,"lark.health.eventUnverified":`事件订阅待验证`,"lark.health.eventUnverifiedDetail":`Provider listener 已就绪,但尚未收到消息事件。请启用 im.message.receive_v1、开通群聊 @ 消息权限并发布新版,然后在这个 Agent Topic 内发送新的 @ 消息;存在多条 Agent 路由时,群顶层消息会 fail closed。`,"lark.health.ignoredSelf":`已忽略机器人自身发送的消息,避免重复回复。`,"lark.health.invalidRouting":`路由配置无效`,"lark.health.invalidRoutingDetail":`连接已安全停用,请重新选择处理方式并保存。`,"lark.health.lastStatus":`最近事件状态:{status}`,"lark.health.listening":`监听中`,"lark.health.messageContextPermission":`消息权限不足`,"lark.health.messageContextPermissionDetail":`已收到消息事件,但无法读取群消息上下文。请发布并授权该 App 的群消息读取权限。`,"lark.health.notAddressed":`最近消息未直接 @ 机器人`,"lark.health.notAddressedDetail":`监听正常;当前连接只响应直接 @ 机器人或对机器人的回复。`,"lark.health.notStarted":`监听未启动`,"lark.health.notStartedDetail":`请刷新连接或重新启动 LoopX 后再试。`,"lark.health.processingFailed":`消息处理失败`,"lark.health.processingFailedDetail":`已收到消息事件,但 Agent 处理失败。请查看本地诊断后重试。`,"lark.health.queued":`已进入 Agent 收件箱`,"lark.health.queuedDetail":`消息由 {agent} 异步处理,不会启动通用 Chat Session。`,"lark.health.sourceDisconnected":`实时消息连接断开`,"lark.health.sourceDisconnectedDetail":`消息监听进程意外退出。请核对应用档案的平台:飞书应用选飞书,国际版 Lark 应用选 Lark,再检查连接及订阅错误。LoopX 正在重试;历史消息能读取,不代表能实时收消息。`,"lark.health.retrying":`监听重试中`,"lark.health.retryingDetail":`事件监听暂时中断,LoopX 正在自动重试。`,"lark.health.routeAmbiguous":`消息匹配多个 Goal`,"lark.health.routeAmbiguousDetail":`同一 Bot 和群聊存在多个完整群捕获连接。请让每个 Agent 使用独立 Bot,或只保留一个完整群连接。`,"lark.health.routeMismatch":`消息未匹配当前 Goal Topic`,"lark.health.routeMismatchDetail":`事件来自其他群聊或 Topic。请重新选择群聊并连接该 Goal,然后发送一条新的 @ 消息。`,"lark.health.routeUnavailable":`消息无法路由到 Goal`,"lark.health.routeUnavailableDetail":`当前连接信息不完整。请重新连接该 Goal 后再发送一条新的 @ 消息。`,"lark.health.starting":`正在启动`,"lark.health.startingDetail":`LoopX 正在启动该 App 的消息事件监听。`,"lark.health.unavailable":`自动回复不可用`,"lark.health.waiting":`等待处理`,"lark.incomingMessages":`接收消息`,"lark.ingressAsync":`异步收件箱`,"lark.ingressAsyncDescription":`写入 Agent 私有收件箱,等待后续显式处理。`,"lark.editPreservesIdentity":`保存会保留此 App、群和 Topic;旧连接默认升级为 Agent 异步收件箱。`,"lark.conversationKind":`连接用途`,"lark.managerConversation":`管家 · 同步对话`,"lark.workerConversation":`工作 Agent · 后台任务`,"lark.managerConversationDescription":`内置管家即时回应对话,长任务交给后台 Agent。群聊与私聊分别保存上下文。`,"lark.ingressLegacy":`待升级`,"lark.ingressLegacyDescription":`保存连接即可升级为 Agent 异步收件箱,已有消息保留在原 Topic 中。`,"lark.ingressQueue":`排队`,"lark.ingressQueueDescription":`进入同一 Agent Session 的有界 FIFO 队列,当前 Turn 完成后处理。`,"lark.ingressSteering":`实时引导`,"lark.ingressSteeringDescription":`投到当前活跃 Turn;没有精确活跃 Turn 时安全拒绝。`,"lark.loading":`加载 Lark 配置…`,"lark.management":`Lark 管理`,"lark.openEventSettings":`查看飞书事件配置`,"lark.mentions":`提及机器人`,"lark.mentionsOnly":`仅提及消息`,"lark.needsMessagePermissions":`需要消息权限`,"lark.needsSetup":`需要设置`,"lark.newApp":`新建 Lark App`,"lark.noAgentConfigured":`未配置 Agent`,"lark.noConnections":`暂无匹配的连接。`,"lark.noProfiles":`还没有可用的 lark-cli App profile。`,"lark.profileName":`Profile 名称`,"lark.profileValidation":`Profile 只能包含字母、数字、点、下划线和连字符。`,"lark.processing":`处理方式`,"lark.region":`区域`,"lark.registerAnother":`+ 注册另一个 Lark App — 通过飞书创建`,"lark.reopenFeishu":`重新打开飞书`,"lark.settingsConfigure":`配置 {goal}`,"lark.settingsDisconnect":`解绑 {goal}`,"lark.replyMode":`回复方式`,"lark.replyModeDescription":`当前只支持在来源 Topic 内回复,避免跨群或跨 Goal 投递。`,"lark.reusableApps":`{count} 个可复用 App`,"lark.reusableWorkspaceApp":`可复用工作区 App`,"lark.routesUnverified":`{count} 条 Lark 路由尚未验证`,"lark.saveConnection":`保存连接`,"lark.searchConnections":`搜索 Lark 连接`,"lark.searchPlaceholder":`搜索 App、群、Goal 或 Topic`,"lark.setupCopy":`LoopX 将通过 lark-cli 打开飞书官方创建页面。应用凭证保存在系统 Keychain,LoopX 只保留 profile 引用。`,"lark.someoneMentions":`有人提及 Agent`,"lark.targetAgent":`目标 Agent`,"lark.targetAgentDescription":`选择该 Goal 内已注册的 Agent。此连接只投递给一个 Agent,不广播、不授予新权限。实时引导与排队需要该 Agent 的精确活跃 Session。`,"lark.agentUnavailable":`{agent} · 已不可用`,"lark.selectRegisteredAgent":`请先选择可用的已注册 Agent;不会自动替换原先的接收者。`,"lark.topicPreview":`Topic 预览`,"lark.topicReply":`Topic 回复`,"lark.trigger":`触发方式`,"lark.waitingFeishu":`等待飞书完成创建`,"lark.waitingFeishuDescription":`请在新窗口中完成飞书授权,完成后会自动回到这里。`,"lark.waitingLink":`正在生成飞书官方创建链接…`,"lark.error.appCreate":`Lark App 创建失败`,"lark.error.appRequired":`请选择一个 Lark App profile。`,"lark.error.bind":`绑定失败`,"lark.error.bindPreview":`绑定预览失败`,"lark.error.configuration":`Lark 配置加载失败`,"lark.error.groupLookup":`无法读取该机器人已加入的群。请检查机器人状态后重试。`,"lark.error.groupLoad":`群聊加载失败`,"lark.error.invalidApp":`Lark App profile 不可用或尚未完成授权。`,"lark.error.messagePermissions":`该 App 缺少自动回复所需的机器人权限。请开启 im:message.group_at_msg:readonly 和 im:message:send_as_bot,发布新版后回来刷新重试。`,"lark.error.provider":`飞书 API 调用失败,且没有生成已验证回执。请稍后重试。`,"lark.error.setupPoll":`创建状态查询失败`,"lark.error.setupStart":`无法启动 Lark App 创建流程`,"lark.error.cliExecutable":`已找到配置的 lark-cli,但当前无法执行。请检查安装或启动参数。`,"lark.error.cliMissing":`未发现 lark-cli。请先安装 lark-cli,然后重新启动 LoopX。`,"lark.error.cliStart":`lark-cli 启动失败。请检查安装状态,然后重新启动 LoopX。`,"lark.error.disconnect":`解绑失败`,"notifications.autoNotify":`需要你确认时自动推送到群里`,"notifications.bind":`绑定到通知群`,"notifications.bindConfirm":`将把「{goal}」绑定到通知群「{target}」,绑定时会验证机器人在群内并发送一条确认消息。`,"notifications.bindFailed":`绑定失败`,"notifications.bound":`已绑定`,"notifications.confirmBind":`确认绑定`,"notifications.description":`把 Goal 里需要你确认的变更推送到飞书群。绑定和开关在这里完成,推送逻辑沿用现有通道。`,"notifications.disabled":`已停用`,"notifications.group":`通知群:{target}`,"notifications.loadFailed":`通知群列表加载失败`,"notifications.noTargets":`还没有可用的通知群。通知群涉及机器人私有身份,请先在终端配置一次:`,"notifications.notBound":`未绑定`,"notifications.recent":`最近 {time}`,"notifications.sentCount":`已发送 {count} 条`,"notifications.settings":`Goal 通知绑定`,"notifications.setupFailed":`设置失败`,"notifications.title":`飞书群通知`,"proposal.field.agentId":`Agent`,"proposal.field.cadence":`频率`,"proposal.field.completionCriteria":`完成标准`,"proposal.field.executionBoundary":`执行边界`,"proposal.field.goalId":`Goal ID`,"proposal.field.heartbeat":`Heartbeat`,"proposal.field.initialTodos":`首个任务`,"proposal.field.objective":`目标`,"proposal.field.operation":`操作`,"proposal.field.operationState":`操作状态`,"proposal.field.resultDelivery":`结果回传`,"proposal.field.confirmationBoundary":`确认边界`,"proposal.field.expiresAt":`过期时间`,"proposal.field.permission":`权限`,"proposal.field.reason":`原因`,"proposal.field.stopCondition":`停止条件`,"proposal.field.target":`检查内容`,"proposal.field.timezone":`时区`,"proposal.field.title":`标题`,"proposal.field.workspace":`执行工作区`,"actionReview.targetChanged":`预览目标与请求的 Goal 或操作不一致,请重新生成预览。`,"actionReview.ready_stop":`暂停可恢复。此预览已通过检查,可直接执行;完成仍需要读回验证。`,"actionReview.resume_review":`恢复自动调度前需要确认。实际执行仍受额度、Gate 和 Todo 约束。`,"actionReview.delete_review":`请确认从注册表移除这个已停止 Goal。项目文件与历史记录会保留。`,"actionReview.action_review":`执行前请检查此提案的目标与影响。`,"actionReview.protected_action":`此操作需要明确审阅。确认不能替代所需授权。`,"actionReview.unknown_permission":`无法识别权限分类。请重新检查提案后再继续。`,"actionReview.unknown_action":`无法识别此生命周期操作。请重新检查提案后再继续。`,"actionReview.incomplete_proposal":`预览缺少验证信息或可执行转换。请重新生成预览。`,"actionReview.authority_gate":`Gate 阻止执行。请满足其要求后重新检查提案。`,"actionReview.stale_proposal":`来源状态已变化。请重新生成预览,原决定不再适用。`,"actionReview.apply_pending":`正在执行,请等待读回结果后再重试。`,"actionReview.readback_verified":`操作已完成,结果状态已通过读回验证。`,"actionReview.readback_unverified":`操作返回但未通过读回验证。尚不能确认完成,请重新检查状态。`,"actionReview.operation_group_confirmation":`这份精确请求只能在已绑定飞书群的原始卡片确认;Dashboard 不提供本地执行入口。`,"actionReview.operation_result_delivery_pending":`操作结果已经记录,但原群结果卡尚未通过回读核验。`,"actionReview.apply_failed":`执行未完成。请检查失败原因并重新生成预览后再试。`,"actionReview.inactive_proposal":`此提案当前不可执行。请重新检查后再继续。`,"proposal.gate.default":`需要宿主确认`,"proposal.impact.default":`确认后会调用规范 LoopX 服务写入状态。`,"proposal.impact.goalCreate":`确认后会创建 Goal 和首个 Todo,并让选定 Agent 开始首轮推进。`,"proposal.impact.lifecycleDelete":`确认后会从 source registry 和 global registry 移除这个已停止 Goal;项目文件、历史状态文件和备份不会被删除。`,"proposal.impact.lifecycleResume":`确认后会恢复 Goal 的自动调度资格并移回 Active Goals;实际执行仍受 quota、Gate 和 Todo 约束。`,"proposal.impact.lifecycleStop":`确认后会停止自动推进,并将 Goal 移入折叠的「已停止」列表;历史、Todo 和证据都会保留,可随时恢复。`,"proposal.impact.protected":`该操作需要通过受保护的 LoopX 写入服务完成。`,"proposal.impact.operation":`这里仅展示同一份不可变条款。请在已绑定的飞书群确认或拒绝;确认只会消费一个规范 claim。`,"proposal.primary.apply":`确认并应用`,"proposal.primary.goalCreate":`创建 Goal 并开始首轮`,"proposal.primary.lifecycleDelete":`删除 Goal`,"proposal.primary.lifecycleResume":`恢复 Goal`,"proposal.primary.lifecycleStop":`停止 Goal`,"proposal.primary.todoStart":`创建任务并开始执行`,"proposal.primary.operationGroup":`前往飞书群确认`,"proposal.primary.operationResultPending":`结果卡回传待恢复`,"proposal.primary.operationResultVerified":`结果已核验`,"proposal.resultDelivery.verified":`已在原群卡片完成回读核验`,"proposal.resultDelivery.pending":`等待回传并核验原群卡片`,"proposal.summary.goalCreate":`创建 Goal:{title}`,"proposal.summary.heartbeat":`为当前 Goal 设置 Heartbeat`,"proposal.summary.lifecycleDelete":`删除 Goal:{title}`,"proposal.summary.lifecycleResume":`恢复 Goal:{title}`,"proposal.summary.lifecycleStop":`停止 Goal:{title}`,"proposal.summary.monitor":`为当前 Goal 创建定时检查:{target}`,"proposal.teamPlan.gapReason.capabilityNotGranted":`尚未授予所需能力`,"proposal.teamPlan.gapReason.audienceNotAuthorized":`尚未获得所需访问权限`,"proposal.teamPlan.pending":`待安排`,"proposal.teamPlan.assignedHint":`分配已记录,执行进度请查看目标。`,"proposal.teamPlan.recoveredHint":`未新增任务,当前进度请查看目标。`,"proposal.teamPlan.originalPlan":`查看原计划`,"proposal.teamPlan.viewResult":`查看结果`,"proposal.teamPlan.openGoal":`打开目标`,"proposal.teamPlan.resultTitle":`分配结果`,"proposal.teamPlan.retry":`重试分配`,"proposal.teamPlan.retryHint":`重试会恢复本次分配结果,不会重复创建任务。`,"proposal.summary.teamPlan":`为 {goal} 分配 {count} 项任务`,"proposal.impact.teamPlan":`确认后分配可安排的任务,其余保留为待安排。`,"proposal.primary.teamPlan":`确认分配`,"proposal.field.laneGaps":`未配齐的 lane`,"proposal.field.quotaEnvelope":`配额包络`,"proposal.teamPlan.acceptanceShort":`验收参考`,"proposal.teamPlan.advisory":`计划参考;本次确认不执行该约束`,"proposal.teamPlan.appliedPartially":`已分配 {created} 项,{gaps} 项待安排`,"proposal.teamPlan.appliedAlreadyPresent":`已恢复原分配结果`,"proposal.teamPlan.applied":`已分配 {count} 项任务`,"proposal.teamPlan.gapLane":`待安排`,"proposal.teamPlan.laneUnstaffed":`待安排,尚无任务`,"proposal.teamPlan.gapReason.agentNotRegistered":`尚未加入此目标`,"proposal.teamPlan.gapReason.actionKindNotSupported":`当前环境不支持此任务类型`,"proposal.workspace.current":`当前本地工作区(未绑定 Repository)`,"proposal.workspace.named":`{workspace}(仅提供执行环境,不会自动关联仓库)`,"proposal.workspaceGate.agentImpact":`先完成 Agent 身份绑定,再重新检查原操作;当前没有写入 Goal。`,"proposal.workspaceGate.agentTitle":`先绑定 Agent`,"proposal.workspaceGate.defaultSummary":`请选择 Goal 所属工作区。`,"proposal.workspaceGate.selectionImpact":`选择工作区后会重新展示待确认操作,选择本身不会写入状态。`,"proposal.workspaceGate.selectionTitle":`选择 Goal 工作区`,"projection.agentAdvancingGoal":`Agent 正在推进当前 Goal`,"projection.agentIdle":`暂无需要你处理`,"projection.agentNeedsDecision":`Agent 等待你的决定`,"projection.agentPreparingNextStep":`Agent 正在整理下一步`,"projection.agentStopped":`已由你停止;历史、Todo 和证据仍保留`,"projection.agentWaitingExternal":`正在等待外部条件`,"projection.confirmAgentDecision":`请确认 Agent 下一步需要的权限或决策`,"projection.events24h":`24 小时内 {count} 个事件`,"projection.firstReadOnlyAdapterCheck":`执行首次只读适配检查并保存进度`,"projection.goalVerified":`Goal 状态、Todo 与注册信息已验证`,"projection.latestRun":`最近运行`,"projection.latestValidation":`最近验证`,"projection.nextUpdatePending":`等待 LoopX 更新下一步`,"projection.publicSafeProjection":`公开安全状态投影`,"projection.refreshState":`刷新 LoopX 状态,确认当前进度仍然有效`,"projection.runEvidenceAvailable":`存在可查看的运行证据`,"projection.runRecorded":`最近一次 LoopX 运行已经记录`,"projection.statusRefreshNeeded":`LoopX 状态需要刷新`,"projection.todoStatusUpdated":`Todo 状态已经更新,正在确认下一步`,"projection.validationRecorded":`最近验证已经记录`,"runs.completed":`已完成`,"runs.failed":`需检查`,"runs.interrupted":`已中断`,"runs.queued":`已安排`,"runs.ready":`可继续`,"runs.resumeFailed":`恢复失败`,"runs.running":`执行中`,"runs.unknown":`状态未知`,"runs.waiting":`等待条件`,"schedule.active":`执行中`,"schedule.heartbeat":`Goal Heartbeat`,"schedule.monitor":`定时与持续任务`,"schedule.paused":`已暂停`,"schedule.summary":`按 LoopX 调度约束持续检查`,"schedule.defaultTarget":`检查当前 Goal 的阻塞、进度与新产出`,"schedule.unsupportedCalendar":`当前定时检查不支持精确到星期或时刻的日历计划。请改用固定间隔,例如“每 30 分钟”“每 2 小时”或“每天”;草稿已保留,没有生成待确认操作。`,"source.add":`添加来源`,"source.addConfigured":`添加只读来源`,"source.addMethod":`来源添加方式`,"source.addSsh":`添加 SSH 隧道来源`,"source.closeForm":`关闭来源表单`,"source.configured":`已配置 SSH`,"source.configuredCount":`本机 SSH Host · {count} 个`,"source.configuredGroup":`已配置 SSH Host · {count}(点击快速添加)`,"source.connected":`已连接`,"source.connecting":`连接中`,"source.controlPlane":`控制面来源`,"source.copy":`复制`,"source.copyCommand":`复制 SSH 隧道命令`,"source.copyError":`无法复制命令,请手动复制下方命令。`,"source.copied":`已复制`,"source.description":`已读取全部显式 Host(含 Include);通配规则不会作为具体来源。先运行命令,LoopX 不读取密钥或配置细节。`,"source.host":`本机 SSH Host`,"source.hostEmpty":`~/.ssh/config 中没有可直接选择的显式 Host。`,"source.hostLoadError":`无法读取本机 SSH Host。`,"source.hostPlaceholder":`输入或搜索 Host`,"source.invalid":`SSH 来源参数无效。`,"source.loadingHosts":`正在读取…`,"source.localInteractive":`本机交互`,"source.localPort":`本地端口`,"source.manual":`手动 URL`,"source.manualDescription":`远端来源始终按只读投影处理,不继承本机写权限。`,"source.name":`名称`,"source.namePlaceholder":`远程开发机`,"source.notAvailable":`不可用`,"source.readOnly":`SSH 隧道 · 只读`,"source.readOnlyNoticeDescription":`你可以查看 Goal、Task、证据与运行状态;写入、纠偏和 Agent 会话仍留在来源主机。`,"source.readOnlyNoticeTitle":`远端只读投影`,"source.readOnlyWriteError":`远端 SSH 隧道来源是只读投影,不能执行控制面写入。`,"source.refreshHosts":`重新读取 SSH Host`,"source.remove":`移除来源 {source}`,"source.removeCurrent":`移除当前来源`,"source.select":`选择控制面来源`,"source.selectHost":`请选择已配置的 SSH Host。`,"source.statusUrl":`本地转发 URL`,"source.tunnelCommandPending":`选择 Host 后生成隧道命令`,"machine.absent":`尚未配置`,"machine.action.create":`创建机器策略`,"machine.action.delete":`移除机器策略`,"machine.action.unchanged":`无需写入`,"machine.action.update":`更新机器策略`,"machine.applied":`机器策略已应用,并通过回读校验。`,"machine.applyError":`无法应用机器策略。`,"machine.applyPreview":`应用已审阅预览`,"machine.changedNamespaces":`变更的 Namespace`,"machine.capabilityCatalog":`机器能力目录`,"machine.capabilityEmpty":`当前没有注册可在机器作用域配置的能力。`,"machine.configured":`已配置`,"machine.confirmRollback":`确认回滚`,"machine.currentRevision":`当前 Revision`,"machine.currentValue":`当前机器值`,"machine.description":`与 Goal 设置共用能力目录。在这里管理受支持的机器默认值;仅支持 Goal 配置的能力会明确标注。`,"capabilities.rawJson":`高级:原始 JSON`,"machine.goalOnly":`此能力目前仅支持 Goal 级配置。请打开具体 Goal 的能力设置进行配置;这里不会设置机器级默认值。`,"machine.desiredRevision":`目标 Revision`,"machine.editorUnavailable":`当前版本未安装此 Namespace 的编辑器`,"machine.editorUnavailableDescription":`它仍会显示在 Registry 中;安装或升级对应的 Dashboard 编辑器后才能修改。`,"machine.editorMode":`编辑模式`,"machine.liveDefault":`实时默认值;Goal 显式覆盖优先`,"machine.liveDefaultDescription":`没有显式覆盖的 Goal 会在该能力下一次决策时读取当前机器策略。修改或移除策略会立即影响这些已有 Goal;显式 Goal 覆盖保持固定。`,"machine.credentialTitle":`操作者模型凭据`,"machine.credentialDescription":`管家通道与托管宿主在本机认证用的 key 与 endpoint。key 单独存放于仅属主可读的文件,不会进入这里展示的机器配置,也不会被回读——回读的是它的指纹。`,"machine.credentialApiKey":`API key`,"machine.credentialApiKeyPlaceholder":`粘贴 key 以保存;留空则保留已存的 key`,"machine.credentialBaseUrl":`Endpoint base URL`,"machine.credentialBaseUrlPlaceholder":`https://endpoint.example/v1(留空则使用 endpoint 默认值)`,"machine.credentialStore":`保存凭据`,"machine.credentialClearKey":`清除已存 key`,"machine.credentialClearUrl":`清除已存 endpoint`,"machine.credentialConfigured":`已配置`,"machine.credentialAbsent":`未配置`,"machine.credentialInvalid":`无法读取——需要修复`,"machine.credentialSourceMachine":`本机已存凭据`,"machine.credentialSourceEnvironment":`服务环境变量`,"machine.credentialSourceUnset":`无来源`,"machine.credentialFingerprint":`指纹`,"machine.credentialStored":`凭据已保存。下一轮即生效,无需重启。`,"machine.credentialCleared":`已清除本机存储的凭据。`,"machine.credentialError":`凭据保存失败。`,"machine.credentialBoundary":`保存凭据不授予任何权限:它不会选择执行器、模型或推理强度。`,"machine.genericNamespaceDescription":`使用 JSON 编辑这个已注册 Namespace。LoopX 会先按 capability 自己拥有的 schema 校验,再允许预览写入。`,"machine.jsonConfiguration":`Namespace 配置(JSON)`,"machine.jsonConfigurationHelp":`只更新当前 Namespace;其他机器配置会保留,Apply 仍锁定到已审阅的 Preview Revision。`,"machine.jsonEditor":`JSON`,"machine.editJson":`编辑 JSON`,"capabilities.jsonConfiguration":`Goal 配置(JSON)`,"capabilities.jsonHelp":`仅编辑当前 Goal 的已注册字段。修改后需重新预览才能应用。`,"capabilities.jsonInvalid":`请输入合法的 JSON 对象,且仅包含已注册的可编辑字段。`,"machine.backToForm":`返回表单`,"machine.jsonInvalid":`请先填写一个合法的 JSON object,再预览变更。`,"machine.loadError":`无法读取机器配置。`,"machine.invalidStoredConfiguration":`已保存的机器配置需要修复`,"machine.invalidStoredConfigurationDescription":`已保存值不再符合当前契约,因此不会在这里显示。请检查已定位的能力,并通过“预览”和“应用”替换它;无关 namespace 保持不变。`,"machine.machinePolicy":`机器策略`,"machine.namespaceCount":`已注册 Namespace`,"machine.namespaces":`配置 Namespace`,"machine.periodicReport":`周期报告`,"machine.periodicReportDescription":`为所有未显式覆盖的 Goal 提供默认报告策略;Goal 调度与发送消费解析后的有效配置。`,"machine.periodicReportActivation":`开启后将在已验证的阶段节点自动投递`,"machine.periodicReportActivationDescription":`这不是每周定时器。当 LoopX 验证 Goal 已完成一个阶段时,Agent 会生成并冻结报告,随后通过配置的 Goal Channel 自动发送。启用此订阅即授予持续投递权;发送失败或路由漂移会 fail closed 并进入修复。`,"machine.changeQualityActivation":`质量验证是质量门禁,不是新增授权`,"machine.changeQualityActivationDescription":`继承该策略的 Goal 会验证最终精确 diff。safe_fix 只允许在既有写入权限内执行至多一次有界修复;此设置不会授予文件、权限或合并权。`,"machine.replanCadenceActivation":`复核周期只改变时机,不改变执行权限`,"machine.replanCadenceActivationDescription":`没有显式覆盖的 Goal 会在下一次复核决策前读取此阈值;它不会创建 Turn、消耗配额或授予权限。`,"machine.preview":`审阅机器配置变更`,"machine.previewChanges":`预览变更`,"machine.previewError":`无法生成机器策略预览。`,"machine.previewLocked":`应用操作锁定到当前 Revision;若机器状态变化,LoopX 会要求重新预览。`,"machine.previewRollback":`预览回滚`,"machine.previewRemoval":`预览移除`,"machine.profilePreset":`Profile preset`,"machine.profilePresetHelp":`由 capability 管理的 preset,例如 weekly-progress。`,"machine.registry":`Typed Registry`,"machine.requiredFields":`开启后必须填写 profile preset、Goal Channel route 与有效时区。`,"machine.revision":`机器 Revision`,"machine.revisionLockedReady":`所有变更必须先预览;只有对应的机器 Revision 仍然有效时才会应用。`,"machine.rollbackAvailable":`可回滚上一次应用`,"machine.rollbackDescription":`先预览已保存的前一 Revision,再决定是否恢复。`,"machine.rollbackError":`无法完成回滚。`,"machine.rollbackPreviewDescription":`前一 Revision 已准备恢复,请确认执行本次回滚。`,"machine.rolledBack":`已恢复前一版机器策略,并通过校验。`,"machine.removed":`机器策略已移除,并通过回读校验。`,"machine.routeRef":`Goal Channel route`,"machine.routeRefHelp":`只填写公开 route alias;凭据与 provider identifier 不会进入此表单。`,"machine.timezone":`时区`,"machine.timezoneHelp":`填写 IANA 时区,例如 Asia/Shanghai。`,"machine.title":`机器配置`,"machine.unchanged":`机器策略已与预览一致,本次没有写入。`,"machine.visualEditor":`引导式`,"capabilities.atomicOverride":`Goal override 按完整配置生效`,"capabilities.atomicOverrideDescription":`Goal 的完整配置优先于机器默认值;LoopX 不会在两个作用域之间逐字段拼接。`,"capabilities.applyFailed":`Goal 能力变更未写入。`,"capabilities.applyPreview":`应用此预览`,"capabilities.catalog":`Goal 能力目录`,"capabilities.chooseGoal":`请先选择一个 Goal,再查看它的能力配置。`,"capabilities.defaultValue":`声明的默认值`,"capabilities.description":`查看当前 Goal 可用的能力,以及每项配置的准确作用域。`,"capabilities.editorPrepared":`已注册 typed editor contract`,"capabilities.effectiveSource":`当前生效来源`,"capabilities.empty":`当前 Goal 没有可用的能力描述。`,"capabilities.fields":`已注册字段`,"capabilities.goalPolicy":`Goal 能力策略`,"capabilities.goalScope":`Goal`,"capabilities.goalValue":`当前 Goal 值`,"capabilities.loadFailed":`无法加载 Goal 能力`,"capabilities.larkInboxNotificationDescription":`此开关只控制遇到人工 Gate 时是否自动发群消息;关闭后仍会保留飞书事件收件箱能力。`,"capabilities.larkInboxNotificationSetting":`Gate 群通知`,"capabilities.loading":`正在加载 Goal 能力…`,"capabilities.machineOnly":`此能力只能在机器作用域配置。`,"capabilities.machineValue":`实时机器默认值`,"capabilities.machineScope":`机器`,"capabilities.previewOnly":`当前读取结果来自真实配置;在 revision-locked preview/apply 路径接通前,Dashboard 不会提供 Goal 写入控件。`,"capabilities.preview":`锁定 revision 的变更预览`,"capabilities.previewChanges":`预览变更`,"capabilities.restoreInheritance":`恢复继承机器默认值`,"capabilities.previewFailed":`无法预览 Goal 能力变更。`,"capabilities.previewLocked":`应用时会重新校验这一个 plan revision;过期变更将被拒绝。`,"capabilities.partialWrite":`Goal 值已保存;共享投影仍需修复`,"capabilities.partialWriteDescription":`源 Goal 配置已经写入并回读,但共享 runtime 投影尚未同步;请勿重复提交本次变更。`,"capabilities.refreshSource":`刷新源配置`,"capabilities.readOnly":`只读能力`,"capabilities.revisionLockedReady":`所有变更必须先预览;只有对应的精确 revision 仍然有效时才会写入。`,"capabilities.retry":`重试`,"capabilities.source.capability_default":`能力默认值`,"capabilities.source.goal_override":`Goal override`,"capabilities.source.machine_default":`实时机器默认值`,"capabilities.source.not_configured":`未配置`,"capabilities.title":`Goal 能力`,"settings.close":`关闭设置`,"settings.appearance":`外观`,"settings.appearanceDescription":`管理当前浏览器里的工作区显示偏好。`,"settings.appearanceTabDescription":`主题和显示偏好`,"settings.capabilitiesTabDescription":`当前 Goal 的能力覆盖配置`,"settings.back":`返回工作区`,"settings.categories":`设置分类`,"settings.description":`管理工作区偏好与集成。`,"settings.eyebrow":`工作区偏好`,"settings.general":`通用`,"settings.goalConnections":`Goal 连接`,"settings.language":`语言`,"settings.modelProvider":`模型 Provider 配置`,"settings.globalCapabilities":`全局能力配置`,"settings.languageDescription":`选择 LoopX Desktop 工作区使用的界面语言。`,"settings.languageEnglishDescription":`使用英文显示导航、设置和工作区控件。`,"settings.languageEnglish":`English`,"settings.languageSimplifiedChineseDescription":`使用简体中文显示导航、设置和工作区控件。`,"settings.languageSimplifiedChinese":`简体中文`,"settings.languageStoredLocally":`此偏好仅保存在当前设备。`,"settings.languageTabDescription":`当前设备的界面语言`,"settings.larkTabDescription":`App、群聊和 Goal Topic 连接`,"settings.machineTabDescription":`本机各 Capability 共享的 typed defaults`,"settings.notifications":`通知`,"settings.open":`设置`,"settings.themeDefault":`纸张`,"settings.themeDefaultDescription":`安静、轻量,适合长期查看。`,"settings.themeDescription":`选择工作区的视觉风格。设置会保存在当前浏览器本地。`,"settings.themeHighContrast":`高对比`,"settings.themeHighContrastDescription":`更强边框和更醒目的状态块。`,"settings.themeLoopx":`LoopX 标准`,"settings.themeLoopxDescription":`精确的黑白界面、Geist 字体与安静的细线结构。`,"settings.title":`设置`,"settings.workspaceDisplay":`工作区显示`,"settings.workspaceTheme":`工作区主题`,"session.closeRecord":`退出运行记录`,"session.details":`Session 详情`,"session.record":`执行 Session · 运行记录`,"session.recordDescription":`当前时间线已切换到这次 Session 的消息与 Turn 记录。`,"sidebar.createGoal":`创建 Goal`,"sidebar.delete":`删除`,"sidebar.deleteGoal":`删除 Goal`,"sidebar.manager":`LoopX 管家`,"sidebar.notifications":`设置`,"sidebar.owner":`个人工作区`,"sidebar.product":`个人 Agent 工作区`,"sidebar.resume":`恢复`,"sidebar.resumeGoal":`恢复 Goal`,"sidebar.stop":`停止`,"tasks.historyLoading":`正在加载历史…`,"tasks.historyError":`历史加载失败,已显示的内容仍可查看。`,"tasks.historyExpired":`历史快照已过期,重新加载后可继续查看。`,"tasks.historyRetry":`重新加载`,"tasks.historyEnd":`已显示全部完成记录`,"tasks.historyMore":`加载更多`,"tasks.historyLocalOnly":`请打开这台机器的 Dashboard 查看完整历史。`,"sidebar.sortGoals":`调整 Goal 顺序`,"sidebar.dragGoal":`拖拽调整顺序,或使用列表排序按钮`,"sidebar.moveUp":`上移 {goal}`,"sidebar.moveDown":`下移 {goal}`,"sidebar.goalMoved":`{goal} 已移至第 {position} 位`,"sidebar.orderNotSaved":`顺序已在本次页面生效;浏览器存储不可用,无法保存。`,"sidebar.stopGoal":`停止 Goal`,"sidebar.stopped":`已停止`,"sidebar.stoppedLoading":`正在加载已停止 Goal`,"sidebar.stoppedLoadFailed":`已停止 Goal 加载失败,其他 Goal 仍可使用。`,"sidebar.retryStopped":`重试`,"state.completed":`已完成`,"state.needsRepair":`需修复`,"state.needsYou":`等你`,"state.quiet":`安静运行`,"state.running":`推进中`,"state.stopped":`已停止`,"state.waiting":`等待条件`,"tasks.blocked":`受阻`,"tasks.agentLane":`工作 Agent`,"tasks.agentLaneDescription":`筛选这个 Goal 下的工作泳道`,"tasks.agentLaneFilter":`按工作 Agent 筛选`,"tasks.allAgentLanes":`全部 Agent({count})`,"tasks.chatAgentReplied":`Agent 已回复`,"tasks.chatPending":`已发送给 Agent`,"tasks.chatPendingDescription":`正在处理;只有经过确认的任务操作才会更新 Tasks。`,"tasks.chatRecent":`最近对话`,"tasks.chatUnchangedDescription":`本次对话没有直接修改 Tasks。需要执行时,可先转成 Task 草稿并确认。`,"tasks.chatViewReply":`查看回复`,"tasks.convertToTask":`转为 Task`,"tasks.completed":`已完成`,"runs.discoveryPartial":`部分执行详情暂不可用,正在重连;任务摘要不代表实时执行状态。`,"runs.discoveryOffline":`执行服务暂不可用,正在重连;保留的任务摘要可能已过时。`,"files.openConversation":`前往会话`,"files.exportSummary":`导出摘要`,"tasks.viewDescription":`先处理待确认,再查看工作与完成记录`,"tasks.viewLabel":`任务视图`,"tasks.listView":`列表`,"tasks.boardView":`看板`,"tasks.completedSummary":`已完成 {count} 项,近期完成明细由控制面按需投影。`,"tasks.emptyCompleted":`还没有完成的任务。`,"tasks.emptyConfirm":`没有待确认的任务。`,"tasks.emptyRunning":`没有待执行或进行中的任务。`,"tasks.emptySchedules":`没有定时任务。`,"tasks.emptyGoal":`这个 Goal 还没有任务。用下面的输入框描述下一步,LoopX 会先展示待确认操作。`,"tasks.markComplete":`标记完成:{name}`,"tasks.moreActions":`更多操作:{name}`,"tasks.openExecution":`查看执行过程:{name}`,"tasks.pending":`待处理`,"tasks.pendingAndRunning":`待执行 / 进行中`,"tasks.scheduled":`定时与持续`,"tasks.sessionError":`Session 异常`,"tasks.waiting":`待执行`,"tasks.waitingAge":`已等待 {age}`,"tasks.viewExecution":`查看执行过程`,"tasks.viewResult":`查看结果`,"time.days":`{count} 天`,"time.hours":`{count} 小时`,"timeline.emptyGoal":`这个 Goal 还没有新动态`,"timeline.emptyGoalDescription":`你可以直接询问进度或下发新的纠偏信息。`,"timeline.emptyWorkspace":`今天的工作区很安静`,"timeline.emptyWorkspaceDescription":`向 LoopX 管家描述一个 Goal,或询问今天最值得关注的事情。`,"timeline.gateHistory":`{count} 项历史 Gate`,"timeline.pending":`正在整理…`,"returnDelivery.queued":`结论等待回传`,"returnDelivery.verifying":`正在核验送达,不会重复发送`,"returnDelivery.delivered":`已送达原受众`,"returnDelivery.reconciled":`恢复后已核验送达`,"returnDelivery.unverified":`送达仍明确未核验`,"timeline.runCompleted":`{run}:已完成`,"timeline.review":`查看处理方式`,"timeline.reviewAndConfirm":`查看并确认`,"timeline.waitingConfirmation":`待你确认`}};function Gi(e,t){return t?Object.entries(t).reduce((e,[t,n])=>e.replaceAll(`{${t}}`,String(n)),e):e}function Ki(){try{return window.localStorage.getItem(`loopx-pw-locale`)===`en`?`en`:`zh-CN`}catch{return`zh-CN`}}function qi({children:e}){let[t,n]=(0,z.useState)(Ki);function r(e){n(e);try{window.localStorage.setItem(Ui,e)}catch{}}(0,z.useEffect)(()=>{document.documentElement.lang=t},[t]);let i=(0,z.useMemo)(()=>({locale:t,setLocale:r,t:(e,n)=>Gi(Wi[t][e],n)}),[t]);return(0,B.jsx)(Hi.Provider,{value:i,children:e})}function Ji(){let e=(0,z.useContext)(Hi);if(!e)throw Error(`useWorkspaceI18n must be used within WorkspaceI18nProvider`);return e}function Yi(e,t){let n={安静运行:`state.quiet`,等你:`state.needsYou`,等待条件:`state.waiting`,推进中:`state.running`,需修复:`state.needsRepair`,已完成:`state.completed`,已停止:`state.stopped`}[e];return n?Wi[t][n]:e}function Xi(e,t){let n={busy:`runs.running`,completed:`runs.completed`,failed:`runs.failed`,queued:`runs.queued`,ready:`runs.ready`,resume_failed:`runs.resumeFailed`,running:`runs.running`,waiting:`runs.waiting`};return e?n[e]?t(n[e]):e:t(`runs.unknown`)}function Zi(e,t){if(!e)return null;let n=new Date(e).getTime();if(Number.isNaN(n))return null;let r=Date.now()-n;if(r<36e5)return null;let i=Math.floor(r/864e5);return i>=1?t(`time.days`,{count:i}):t(`time.hours`,{count:Math.floor(r/36e5)})}var Qi;function H(e,t,n){function r(n,r){if(n._zod||Object.defineProperty(n,"_zod",{value:{def:r,constr:o,traits:new Set},enumerable:!1}),n._zod.traits.has(e))return;n._zod.traits.add(e),t(n,r);let i=o.prototype,a=Object.keys(i);for(let e=0;en?.Parent&&t instanceof n.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(o,"name",{value:e}),o}var $i=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},ea=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(Qi=globalThis).__zod_globalConfig??(Qi.__zod_globalConfig={});var ta=globalThis.__zod_globalConfig;function na(e){return e&&Object.assign(ta,e),ta}function ra(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function ia(e,t){return typeof t==`bigint`?t.toString():t}function aa(e){return{get value(){{let t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function oa(e){return e==null}function sa(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function ca(e,t){let n=e/t,r=Math.round(n),i=2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r){};function ga(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var _a=aa(()=>{if(ta.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function va(e){if(ga(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return ga(n)!==!1&&Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)!==!1}function ya(e){return va(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var ba=new Set([`string`,`number`,`symbol`]);function xa(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Sa(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function U(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function Ca(e){return Object.keys(e).filter(t=>e[t]._zod.optin===`optional`&&e[t]._zod.optout===`optional`)}var wa={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function Ta(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);return Sa(e,fa(e._zod.def,{get shape(){let e={};for(let r in t){if(!(r in n.shape))throw Error(`Unrecognized key: "${r}"`);t[r]&&(e[r]=n.shape[r])}return da(this,`shape`,e),e},checks:[]}))}function Ea(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);return Sa(e,fa(e._zod.def,{get shape(){let r={...e._zod.def.shape};for(let e in t){if(!(e in n.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&delete r[e]}return da(this,`shape`,r),r},checks:[]}))}function Da(e,t){if(!va(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=e._zod.def.shape;for(let e in t)if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return Sa(e,fa(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return da(this,`shape`,n),n}}))}function Oa(e,t){if(!va(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return Sa(e,fa(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return da(this,`shape`,n),n}}))}function ka(e,t){if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);return Sa(e,fa(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return da(this,`shape`,n),n},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function Aa(e,t,n){let r=t._zod.def.checks;if(r&&r.length>0)throw Error(`.partial() cannot be used on object schemas containing refinements`);return Sa(t,fa(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in r))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t])}else for(let t in r)i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t];return da(this,`shape`,i),i},checks:[]}))}function ja(e,t,n){return Sa(t,fa(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in i))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=new e({type:`nonoptional`,innerType:r[t]}))}else for(let t in r)i[t]=new e({type:`nonoptional`,innerType:r[t]});return da(this,`shape`,i),i}}))}function Ma(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function Fa(e){return typeof e==`string`?e:e?.message}function Ia(e,t,n){let r=e.message?e.message:Fa(e.inst?._zod.def?.error?.(e))??Fa(t?.error?.(e))??Fa(n.customError?.(e))??Fa(n.localeError?.(e))??`Invalid input`,{inst:i,continue:a,input:o,...s}=e;return s.path??=[],s.message=r,t?.reportInput&&(s.input=o),s}function La(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function Ra(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}var za=(e,t)=>{e.name=`$ZodError`,Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,ia,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},Ba=H(`$ZodError`,za),Va=H(`$ZodError`,za,{Parent:Error});function Ha(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?(n[i.path[0]]=n[i.path[0]]||[],n[i.path[0]].push(t(i))):r.push(t(i));return{formErrors:r,fieldErrors:n}}function Ua(e,t=e=>e.message){let n={_errors:[]},r=(e,i=[])=>{for(let a of e.issues)if(a.code===`invalid_union`&&a.errors.length)a.errors.map(e=>r({issues:e},[...i,...a.path]));else if(a.code===`invalid_key`)r({issues:a.issues},[...i,...a.path]);else if(a.code===`invalid_element`)r({issues:a.issues},[...i,...a.path]);else{let e=[...i,...a.path];if(e.length===0)n._errors.push(t(a));else{let r=n,i=0;for(;i(t,n,r,i)=>{let a=r?{...r,async:!1}:{async:!1},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise)throw new $i;if(o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>Ia(e,a,na())));throw ha(t,i?.callee),t}return o.value},Ga=e=>async(t,n,r,i)=>{let a=r?{...r,async:!0}:{async:!0},o=t._zod.run({value:n,issues:[]},a);if(o instanceof Promise&&(o=await o),o.issues.length){let t=new((i?.Err)??e)(o.issues.map(e=>Ia(e,a,na())));throw ha(t,i?.callee),t}return o.value},Ka=e=>(t,n,r)=>{let i=r?{...r,async:!1}:{async:!1},a=t._zod.run({value:n,issues:[]},i);if(a instanceof Promise)throw new $i;return a.issues.length?{success:!1,error:new(e??Ba)(a.issues.map(e=>Ia(e,i,na())))}:{success:!0,data:a.value}},qa=Ka(Va),Ja=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},a=t._zod.run({value:n,issues:[]},i);return a instanceof Promise&&(a=await a),a.issues.length?{success:!1,error:new e(a.issues.map(e=>Ia(e,i,na())))}:{success:!0,data:a.value}},Ya=Ja(Va),Xa=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Wa(e)(t,n,i)},Za=e=>(t,n,r)=>Wa(e)(t,n,r),Qa=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Ga(e)(t,n,i)},$a=e=>async(t,n,r)=>Ga(e)(t,n,r),eo=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Ka(e)(t,n,i)},to=e=>(t,n,r)=>Ka(e)(t,n,r),no=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return Ja(e)(t,n,i)},ro=e=>async(t,n,r)=>Ja(e)(t,n,r),io=/^[cC][0-9a-z]{6,}$/,ao=/^[0-9a-z]+$/,oo=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,so=/^[0-9a-vA-V]{20}$/,co=/^[A-Za-z0-9]{27}$/,lo=/^[a-zA-Z0-9_-]{21}$/,uo=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,fo=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,po=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,mo=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,ho=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;function go(){return new RegExp(ho,`u`)}var _o=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,vo=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,yo=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,bo=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,xo=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,So=/^[A-Za-z0-9_-]*$/,Co=/^https?$/,wo=/^\+[1-9]\d{6,14}$/,To=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`,Eo=RegExp(`^${To}$`);function Do(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function Oo(e){return RegExp(`^${Do(e)}$`)}function ko(e){let t=Do({precision:e.precision}),n=[`Z`];e.local&&n.push(``),e.offset&&n.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let r=`${t}(?:${n.join(`|`)})`;return RegExp(`^${To}T(?:${r})$`)}var Ao=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},jo=/^-?\d+$/,Mo=/^-?\d+(?:\.\d+)?$/,No=/^(?:true|false)$/i,Po=/^null$/i,Fo=/^[^A-Z]*$/,Io=/^[^a-z]*$/,Lo=H(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),Ro={number:`number`,bigint:`bigint`,object:`date`},zo=H(`$ZodCheckLessThan`,(e,t)=>{Lo.init(e,t);let n=Ro[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.maximum:n.exclusiveMaximum)??1/0;t.value{(t.inclusive?r.value<=t.value:r.value{Lo.init(e,t);let n=Ro[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.minimum:n.exclusiveMinimum)??-1/0;t.value>r&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Vo=H(`$ZodCheckMultipleOf`,(e,t)=>{Lo.init(e,t),e._zod.onattach.push(e=>{var n;(n=e._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?n.value%t.value===BigInt(0):ca(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),Ho=H(`$ZodCheckNumberFormat`,(e,t)=>{Lo.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=wa[t.format];e._zod.onattach.push(e=>{let r=e._zod.bag;r.format=t.format,r.minimum=i,r.maximum=a,n&&(r.pattern=jo)}),e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}sa&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),Uo=H(`$ZodCheckMaxLength`,(e,t)=>{var n;Lo.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!oa(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.maximum??1/0;t.maximum{let r=n.value;if(r.length<=t.maximum)return;let i=La(r);n.issues.push({origin:i,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Wo=H(`$ZodCheckMinLength`,(e,t)=>{var n;Lo.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!oa(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.minimum??-1/0;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let r=n.value;if(r.length>=t.minimum)return;let i=La(r);n.issues.push({origin:i,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Go=H(`$ZodCheckLengthEquals`,(e,t)=>{var n;Lo.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!oa(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=n=>{let r=n.value,i=r.length;if(i===t.length)return;let a=La(r),o=i>t.length;n.issues.push({origin:a,...o?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),Ko=H(`$ZodCheckStringFormat`,(e,t)=>{var n,r;Lo.init(e,t),e._zod.onattach.push(e=>{let n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??=new Set,n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),qo=H(`$ZodCheckRegex`,(e,t)=>{Ko.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Jo=H(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=Fo,Ko.init(e,t)}),Yo=H(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=Io,Ko.init(e,t)}),Xo=H(`$ZodCheckIncludes`,(e,t)=>{Lo.init(e,t);let n=xa(t.includes),r=new RegExp(typeof t.position==`number`?`^.{${t.position}}${n}`:n);t.pattern=r,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(r)}),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),Zo=H(`$ZodCheckStartsWith`,(e,t)=>{Lo.init(e,t);let n=RegExp(`^${xa(t.prefix)}.*`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),Qo=H(`$ZodCheckEndsWith`,(e,t)=>{Lo.init(e,t);let n=RegExp(`.*${xa(t.suffix)}$`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),$o=H(`$ZodCheckOverwrite`,(e,t)=>{Lo.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),es=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),--this.indent}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(` `).filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),r=t.map(e=>e.slice(n)).map(e=>` `.repeat(this.indent*2)+e);for(let e of r)this.content.push(e)}compile(){let e=Function,t=this?.args,n=[...(this?.content??[``]).map(e=>` ${e}`)];return new e(...t,n.join(` `))}},ts={major:4,minor:4,patch:3},ns=H(`$ZodType`,(e,t)=>{var n;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=ts;let r=[...e._zod.def.checks??[]];e._zod.traits.has(`$ZodCheck`)&&r.unshift(e);for(let t of r)for(let n of t._zod.onattach)n(e);if(r.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(e,t,n)=>{let r=Ma(e),i;for(let a of t){if(a._zod.def.when){if(Na(e)||!a._zod.def.when(e))continue}else if(r)continue;let t=e.issues.length,o=a._zod.check(e);if(o instanceof Promise&&n?.async===!1)throw new $i;if(i||o instanceof Promise)i=(i??Promise.resolve()).then(async()=>{await o,e.issues.length!==t&&(r||=Ma(e,t))});else{if(e.issues.length===t)continue;r||=Ma(e,t)}}return i?i.then(()=>e):e},n=(n,i,a)=>{if(Ma(n))return n.aborted=!0,n;let o=t(i,r,a);if(o instanceof Promise){if(a.async===!1)throw new $i;return o.then(t=>e._zod.parse(t,a))}return e._zod.parse(o,a)};e._zod.run=(i,a)=>{if(a.skipChecks)return e._zod.parse(i,a);if(a.direction===`backward`){let t=e._zod.parse({value:i.value,issues:[]},{...a,skipChecks:!0});return t instanceof Promise?t.then(e=>n(e,i,a)):n(t,i,a)}let o=e._zod.parse(i,a);if(o instanceof Promise){if(a.async===!1)throw new $i;return o.then(e=>t(e,r,a))}return t(o,r,a)}}ua(e,`~standard`,()=>({validate:t=>{try{let n=qa(e,t);return n.success?{value:n.data}:{issues:n.error?.issues}}catch{return Ya(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:`zod`,version:1}))}),rs=H(`$ZodString`,(e,t)=>{ns.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??Ao(e._zod.bag),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),is=H(`$ZodStringFormat`,(e,t)=>{Ko.init(e,t),rs.init(e,t)}),as=H(`$ZodGUID`,(e,t)=>{t.pattern??=fo,is.init(e,t)}),os=H(`$ZodUUID`,(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(e===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??=po(e)}else t.pattern??=po();is.init(e,t)}),ss=H(`$ZodEmail`,(e,t)=>{t.pattern??=mo,is.init(e,t)}),cs=H(`$ZodURL`,(e,t)=>{is.init(e,t),e._zod.check=n=>{try{let r=n.value.trim();if(!t.normalize&&t.protocol?.source===Co.source&&!/^https?:\/\//i.test(r)){n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid URL format`,input:n.value,inst:e,continue:!t.abort});return}let i=new URL(r);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(i.hostname)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid hostname`,pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(i.protocol.endsWith(`:`)?i.protocol.slice(0,-1):i.protocol)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid protocol`,pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort})),n.value=t.normalize?i.href:r;return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),ls=H(`$ZodEmoji`,(e,t)=>{t.pattern??=go(),is.init(e,t)}),us=H(`$ZodNanoID`,(e,t)=>{t.pattern??=lo,is.init(e,t)}),ds=H(`$ZodCUID`,(e,t)=>{t.pattern??=io,is.init(e,t)}),fs=H(`$ZodCUID2`,(e,t)=>{t.pattern??=ao,is.init(e,t)}),ps=H(`$ZodULID`,(e,t)=>{t.pattern??=oo,is.init(e,t)}),ms=H(`$ZodXID`,(e,t)=>{t.pattern??=so,is.init(e,t)}),hs=H(`$ZodKSUID`,(e,t)=>{t.pattern??=co,is.init(e,t)}),gs=H(`$ZodISODateTime`,(e,t)=>{t.pattern??=ko(t),is.init(e,t)}),_s=H(`$ZodISODate`,(e,t)=>{t.pattern??=Eo,is.init(e,t)}),vs=H(`$ZodISOTime`,(e,t)=>{t.pattern??=Oo(t),is.init(e,t)}),ys=H(`$ZodISODuration`,(e,t)=>{t.pattern??=uo,is.init(e,t)}),bs=H(`$ZodIPv4`,(e,t)=>{t.pattern??=_o,is.init(e,t),e._zod.bag.format=`ipv4`}),xs=H(`$ZodIPv6`,(e,t)=>{t.pattern??=vo,is.init(e,t),e._zod.bag.format=`ipv6`,e._zod.check=n=>{try{new URL(`http://[${n.value}]`)}catch{n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}}),Ss=H(`$ZodCIDRv4`,(e,t)=>{t.pattern??=yo,is.init(e,t)}),Cs=H(`$ZodCIDRv6`,(e,t)=>{t.pattern??=bo,is.init(e,t),e._zod.check=n=>{let r=n.value.split(`/`);try{if(r.length!==2)throw Error();let[e,t]=r;if(!t)throw Error();let n=Number(t);if(`${n}`!==t||n<0||n>128)throw Error();new URL(`http://[${e}]`)}catch{n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}}});function ws(e){if(e===``)return!0;if(/\s/.test(e)||e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}var Ts=H(`$ZodBase64`,(e,t)=>{t.pattern??=xo,is.init(e,t),e._zod.bag.contentEncoding=`base64`,e._zod.check=n=>{ws(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}});function Es(e){if(!So.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return ws(t.padEnd(Math.ceil(t.length/4)*4,`=`))}var Ds=H(`$ZodBase64URL`,(e,t)=>{t.pattern??=So,is.init(e,t),e._zod.bag.contentEncoding=`base64url`,e._zod.check=n=>{Es(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),Os=H(`$ZodE164`,(e,t)=>{t.pattern??=wo,is.init(e,t)});function ks(e,t=null){try{let n=e.split(`.`);if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let i=JSON.parse(atob(r));return!(`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&(!(`alg`in i)||i.alg!==t))}catch{return!1}}var As=H(`$ZodJWT`,(e,t)=>{is.init(e,t),e._zod.check=n=>{ks(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),js=H(`$ZodNumber`,(e,t)=>{ns.init(e,t),e._zod.pattern=e._zod.bag.pattern??Mo,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch{}let i=n.value;if(typeof i==`number`&&!Number.isNaN(i)&&Number.isFinite(i))return n;let a=typeof i==`number`?Number.isNaN(i)?`NaN`:Number.isFinite(i)?void 0:`Infinity`:void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),Ms=H(`$ZodNumberFormat`,(e,t)=>{Ho.init(e,t),js.init(e,t)}),Ns=H(`$ZodBoolean`,(e,t)=>{ns.init(e,t),e._zod.pattern=No,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),Ps=H(`$ZodNull`,(e,t)=>{ns.init(e,t),e._zod.pattern=Po,e._zod.values=new Set([null]),e._zod.parse=(t,n)=>{let r=t.value;return r===null||t.issues.push({expected:`null`,code:`invalid_type`,input:r,inst:e}),t}}),Fs=H(`$ZodUnknown`,(e,t)=>{ns.init(e,t),e._zod.parse=e=>e}),Is=H(`$ZodNever`,(e,t)=>{ns.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)});function Ls(e,t,n){e.issues.length&&t.issues.push(...Pa(n,e.issues)),t.value[n]=e.value}var Rs=H(`$ZodArray`,(e,t)=>{ns.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!Array.isArray(i))return n.issues.push({expected:`array`,code:`invalid_type`,input:i,inst:e}),n;n.value=Array(i.length);let a=[];for(let e=0;eLs(t,n,e))):Ls(s,n,e)}return a.length?Promise.all(a).then(()=>n):n}});function zs(e,t,n,r,i,a){let o=n in r;if(e.issues.length){if(i&&a&&!o)return;t.issues.push(...Pa(n,e.issues))}if(!o&&!i){e.issues.length||t.issues.push({code:`invalid_type`,expected:`nonoptional`,input:void 0,path:[n]});return}e.value===void 0?o&&(t.value[n]=void 0):t.value[n]=e.value}function Bs(e){let t=Object.keys(e.shape);for(let n of t)if(!e.shape?.[n]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${n}": expected a Zod schema`);let n=Ca(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(n)}}function Vs(e,t,n,r,i,a){let o=[],s=i.keySet,c=i.catchall._zod,l=c.def.type,u=c.optin===`optional`,d=c.optout===`optional`;for(let i in t){if(i===`__proto__`||s.has(i))continue;if(l===`never`){o.push(i);continue}let a=c.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>zs(e,n,i,t,u,d))):zs(a,n,i,t,u,d)}return o.length&&n.issues.push({code:`unrecognized_keys`,keys:o,input:t,inst:a}),e.length?Promise.all(e).then(()=>n):n}var Hs=H(`$ZodObject`,(e,t)=>{if(ns.init(e,t),!Object.getOwnPropertyDescriptor(t,`shape`)?.get){let e=t.shape;Object.defineProperty(t,"shape",{get:()=>{let n={...e};return Object.defineProperty(t,"shape",{value:n}),n}})}let n=aa(()=>Bs(t));ua(e._zod,`propValues`,()=>{let e=t.shape,n={};for(let t in e){let r=e[t]._zod;if(r.values){n[t]??(n[t]=new Set);for(let e of r.values)n[t].add(e)}}return n});let r=ga,i=t.catchall,a;e._zod.parse=(t,o)=>{a??=n.value;let s=t.value;if(!r(s))return t.issues.push({expected:`object`,code:`invalid_type`,input:s,inst:e}),t;t.value={};let c=[],l=a.shape;for(let e of a.keys){let n=l[e],r=n._zod.optin===`optional`,i=n._zod.optout===`optional`,a=n._zod.run({value:s[e],issues:[]},o);a instanceof Promise?c.push(a.then(n=>zs(n,t,e,s,r,i))):zs(a,t,e,s,r,i)}return i?Vs(c,s,t,o,n.value,e):c.length?Promise.all(c).then(()=>t):t}}),Us=H(`$ZodObjectJIT`,(e,t)=>{Hs.init(e,t);let n=e._zod.parse,r=aa(()=>Bs(t)),i=e=>{let t=new es([`shape`,`payload`,`ctx`]),n=r.value,i=e=>{let t=pa(e);return`shape[${t}]._zod.run({ value: input[${t}], issues: [] }, ctx)`};t.write(`const input = payload.value;`);let a=Object.create(null),o=0;for(let e of n.keys)a[e]=`key_${o++}`;t.write(`const newResult = {};`);for(let r of n.keys){let n=a[r],o=pa(r),s=e[r],c=s?._zod?.optin===`optional`,l=s?._zod?.optout===`optional`;t.write(`const ${n} = ${i(r)};`),c&&l?t.write(` if (${n}.issues.length) { @@ -121,15 +121,15 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs. `);for(;i>=0;){let e=l.slice(0,i);l=l.slice(i+2);let n=tg(e);n&&(n.event_id&&(r=n.event_id),t(n),a=[`turn.completed`,`turn.interrupted`,`turn.failed`].includes(n.kind)),i=l.indexOf(` -`)}if(e||a)break}i=a?i:i+1}catch(e){if(n?.aborted||(i+=1,i>=4))throw e;await new Promise(e=>globalThis.setTimeout(e,250*2**(i-1)))}}if(!a)throw new Fh(`Agent 事件流连接已断开。`,{reconnect_attempts:i})}async function rg(e,t){return Kh(`/api/chat/sessions/${e}/turns/${t}/interrupt`,{method:`POST`,body:`{}`})}async function ig(e,t,n={}){let r=await eg(e,t,n.clientTurnId??crypto.randomUUID(),n.attachments);return n.onPhase?.(`turn.accepted`,r.turn_id),ag(e,r.turn_id,r.events_url,n)}async function ag(e,t,n,r={}){let i=null,a={failure:null,interrupted:null};try{await ng(n,e=>{r.onPhase?.(e.kind,t),(e.kind===`answer.delta`||e.kind===`assistant.delta`)&&r.onDelta?.(String(e.payload.text??``)),e.kind===`agent.phase`&&r.onActivity?.(String(e.payload.label??`Agent 正在处理`)),e.kind===`turn.completed`&&(i=e.payload.response),e.kind===`turn.failed`&&(a.failure=e.payload),e.kind===`turn.interrupted`&&(a.interrupted=e.payload)},r.signal)}catch(i){throw i instanceof Fh&&!r.signal?.aborted?new Fh(i.message,{...i.payload,events_url:n,reconnectable:!0,session_id:e,turn_id:t}):i}if(a.failure)throw new Fh(String(a.failure.message||`Agent 回合失败。`),a.failure);if(a.interrupted)throw new Fh(`Agent 回合已中断。`,{...a.interrupted,error_code:`turn_interrupted`,session_id:e,turn_id:t});return{response:kh.parse(i),sessionId:e,turnId:t}}async function og(e,t,n={}){return ag(e,t,`/api/chat/sessions/${e}/turns/${t}/events`,n)}async function sg(e){let t=Ah.parse(await Kh(`/api/chat/sessions/${e}`,{keepalive:!0,method:`DELETE`}));if(t.session_id!==e)throw new Fh(`Agent 会话关闭回执与本次请求不一致。`,{session_id:t.session_id});return t}async function cg(e){return Kh(`/api/chat/sessions/${e}/resume`,{method:`POST`,body:`{}`})}function lg(e){return{goal_id:e.goalId,enabled:e.enabled,...e.modelConfig===void 0?{}:{model_config:e.modelConfig},...e.enabled?{max_children:e.maxChildren,allowed_domains:e.allowedDomains}:{}}}function ug(e,t){let n=e.after.orchestration,r=[...new Set(t.allowedDomains)],i=e.feature_summary.multi_subagent===`enabled`;if(!(e.goal_id===t.goalId&&i===t.enabled&&(t.modelConfig===void 0||JSON.stringify(n.model_config??null)===JSON.stringify(t.modelConfig))&&(t.enabled?n.max_children===t.maxChildren&&JSON.stringify(n.allowed_domains)===JSON.stringify(r):n.spawn_allowed===!1&&n.max_children===0)))throw new Fh(`Goal 子代理配置回执与本次请求不一致,界面已停止更新。`,{after:e.after,goal_id:e.goal_id});return e}async function dg(e){let t=Nh.parse(await Kh(`/api/chat/goal-subagents/dry-run`,{method:`POST`,body:JSON.stringify(lg(e))}));if(!t.dry_run||t.execute||t.written)throw new Fh(`Goal 子代理预览返回了非预览回执,已停止进入确认状态。`,{result:t});return ug(t,e)}async function fg(e,t){let n=Nh.parse(await Kh(`/api/chat/goal-subagents/apply`,{method:`POST`,body:JSON.stringify({...lg(e),preview_id:t})}));if(n.preview_id!==t||n.dry_run||!n.execute)throw new Fh(`Goal 子代理写入回执与本次确认不一致,界面已停止更新。`,{result:n});if(n.changed&&(!n.written||!n.global_sync.executed||!n.global_sync.readback.verified))throw new Fh(`Goal 子代理设置未通过共享状态读回验证。`,{result:n});return ug(n,e)}var pg=J({ok:X(!0),targets:q(J({enabled:K(),provider:W(),target_name:W()}))});async function mg(){return pg.parse(await Kh(`/api/chat/goal-channel/targets`)).targets}var hg=J({ok:K(),blocker:W().optional(),public_summary:W().optional(),status:W().optional()});async function gg(e){return hg.parse(await Kh(`/api/chat/goal-channel/setup`,{method:`POST`,body:JSON.stringify({execute:e.execute,goal_id:e.goalId,target:e.target})}))}async function _g(e){return hg.parse(await Kh(`/api/chat/goal-channel/configure`,{method:`POST`,body:JSON.stringify({auto_notify_human_gates:e.autoNotify,goal_id:e.goalId})}))}var vg=J({schema_version:X(`periodic_report_schedule_v0`),schedule_id:W(),rrule:W(),timezone:W()});J({schema_version:X(`periodic_report_machine_defaults_v0`),enabled:K(),inheritance:X(`live_machine_default`),profile_preset:W().optional(),route_ref:W().optional(),timezone:W(),schedule:vg.nullable().optional()});var yg=J({schema_version:X(`loopx_machine_configuration_v0`),namespaces:yd(W(),yd(W(),ad()))}),bg=J({namespace:W(),title:W(),description:W(),schema_versions:q(W()).min(1),configuration_template:yd(W(),ad()),template_status:Y([`ready`,`schema_only`])}),xg=J({schema_version:X(`machine_configuration_catalog_v0`),namespaces:q(bg)}),Sg=J({key:W(),label:W(),description:W(),input_kind:Y([`boolean`,`number`,`select`,`string_list`,`text`,`periodic_report_schedule`]),nullable:K().optional(),required:K(),minimum:G().int().optional(),maximum:G().int().optional(),options:q(W()).optional()}),Cg=J({schema_version:X(`capability_configuration_editor_v0`),editable:K(),supported_scopes:q(Y([`goal`,`machine`])),writable_scopes:q(Y([`goal`,`machine`])),fields:q(Sg),read_only_reason:W().optional()}),wg=J({schema_version:X(`capability_configuration_catalog_v0`),capabilities:q(J({capability_id:W(),display_name:W(),description:W(),available_scopes:q(Y([`goal`,`machine`])),machine_namespace:W().optional(),goal_feature_id:W().optional(),effective_value_policy:X(`goal_override_over_live_machine_default`).optional(),availability:W().optional(),default:yd(W(),ad()).optional(),current:yd(W(),ad()).optional(),machine_current:yd(W(),ad()).optional(),effective_configuration:J({schema_version:X(`capability_configuration_resolution_v0`),capability_id:W(),source:Y([`goal_override`,`machine_default`,`capability_default`,`not_configured`]),configuration:yd(W(),ad()).nullable(),inherited:K(),goal_override_present:K(),machine_default_present:K(),effective_revision:W()}).optional(),documentation:yd(W(),ad()).optional(),context_contribution:J({supported_phases:q(Y([`before_plan`,`before_delegate`,`after_delegate_result`])),target:X(`coordinator`),activation:X(`with_capability`),receipt_required:X(!0)}).optional(),configuration_editor:Cg}))}),Tg=J({ok:X(!0),schema_version:X(`goal_configuration_inspection_v0`),status:X(`configured`),goal_id:W(),revision:W(),available_capabilities:q(W()),capability_catalog:wg}),Eg=J({ok:X(!0),goal_id:W(),capability_id:W(),changed_fields:q(W()),goal_configuration:yd(W(),ad()).nullable(),capability_catalog:wg}),Dg=Eg.extend({schema_version:X(`goal_configuration_update_plan_v0`),status:X(`preview`),action:Y([`create`,`update`,`delete`,`unchanged`]),current_revision:W(),desired_revision:W(),base_revision:W(),plan_revision:W(),writes_required:G().int().nonnegative()}),Og=dd([Eg.extend({schema_version:X(`goal_configuration_transaction_v0`),status:Y([`applied`,`unchanged`]),plan_revision:W(),applied_revision:W(),readback_verified:X(!0)}),J({ok:X(!1),schema_version:X(`goal_configuration_transaction_v0`),status:X(`partial_write`),goal_id:W(),capability_id:W(),plan_revision:W(),applied_revision:W().nullable(),source_written:X(!0),shared_sync_pending:X(!0),readback_verified:K(),changed_fields:q(W()),goal_configuration:yd(W(),ad()).nullable(),capability_catalog:wg,error:W(),recommended_action:W()})]),kg=J({ok:X(!0),available_namespaces:q(W()),namespace_catalog:xg.optional().default({schema_version:`machine_configuration_catalog_v0`,namespaces:[]}),capability_catalog:wg,changed_namespaces:q(W()).optional().default([]),invalid_namespaces:q(W()).optional().default([]),machine_configuration:yg.nullable().optional()}),Ag=kg.extend({schema_version:X(`machine_configuration_inspection_v0`),status:Y([`configured`,`absent`,`invalid`]),revision:W()}),jg=kg.extend({schema_version:X(`machine_configuration_update_plan_v0`),status:X(`preview`),action:Y([`create`,`update`,`delete`,`unchanged`]),current_revision:W(),desired_revision:W(),plan_revision:W(),writes_required:G().int().nonnegative(),machine_configuration:yg.nullable()}),Mg=kg.extend({schema_version:X(`machine_configuration_transaction_v0`),status:Y([`applied`,`unchanged`]),plan_revision:W(),transaction_id:W().nullable(),readback_verified:X(!0),rollback_available:K(),applied_revision:W().optional(),prior_revision:W().optional()}),Ng=kg.extend({schema_version:X(`machine_configuration_rollback_plan_v0`),status:X(`preview`),action:Y([`delete`,`restore`,`unchanged`,`blocked`]),reason:W(),transaction_id:W(),plan_revision:W(),rollback_allowed:K(),writes_required:G().int().nonnegative()}),Pg=kg.extend({schema_version:X(`machine_configuration_rollback_receipt_v0`),status:Y([`rolled_back`,`unchanged`]),transaction_id:W(),plan_revision:W(),rollback_id:W().nullable(),readback_verified:X(!0)}),Fg=J({configured:K(),source:Y([`machine_store`,`service_environment`,`unset`]),env_var:W().optional(),fingerprint:W().nullable().optional(),value:W().nullable().optional(),blocked_by:W().optional()}),Ig=J({ok:X(!0),schema_version:X(`operator_provider_credential_projection_v0`),action:W().optional(),store_ref:W(),store_revision:W(),record_present:K(),status:Y([`configured`,`absent`,`invalid`]),repair:W(),provider_key:Fg,base_url:Fg});async function Lg(){return Ig.parse(await Kh(`/api/chat/operator-credential`))}async function Rg(e){return Ig.parse(await Kh(`/api/chat/operator-credential`,{method:`POST`,body:JSON.stringify(e)}))}async function zg(){return Ag.parse(await Kh(`/api/chat/machine-configuration`))}async function Bg(e){let t=new URLSearchParams({goal_id:e});return Tg.parse(await Kh(`/api/chat/goal-configuration?${t.toString()}`))}async function Vg(e,t,n){return Dg.parse(await Kh(`/api/chat/goal-configuration/preview`,{method:`POST`,body:JSON.stringify({goal_id:e,capability_id:t,configuration:n})}))}async function Hg(e,t,n,r){return Og.parse(await Kh(`/api/chat/goal-configuration/apply`,{method:`POST`,body:JSON.stringify({goal_id:e,capability_id:t,configuration:n,expected_plan_revision:r})}))}async function Ug(e,t){return jg.parse(await Kh(`/api/chat/machine-configuration/preview`,{method:`POST`,body:JSON.stringify({namespace:e,namespace_configuration:t})}))}async function Wg(e,t,n){return Mg.parse(await Kh(`/api/chat/machine-configuration/apply`,{method:`POST`,body:JSON.stringify({expected_plan_revision:n,namespace:e,namespace_configuration:t})}))}async function Gg(e){return jg.parse(await Kh(`/api/chat/machine-configuration/preview`,{method:`POST`,body:JSON.stringify({namespace:e,operation:`remove`})}))}async function Kg(e,t){return Mg.parse(await Kh(`/api/chat/machine-configuration/apply`,{method:`POST`,body:JSON.stringify({expected_plan_revision:t,namespace:e,operation:`remove`})}))}async function qg(e){return Ng.parse(await Kh(`/api/chat/machine-configuration/rollback`,{method:`POST`,body:JSON.stringify({execute:!1,transaction_id:e})}))}async function Jg(e,t){return Pg.parse(await Kh(`/api/chat/machine-configuration/rollback`,{method:`POST`,body:JSON.stringify({execute:!0,expected_plan_revision:t,transaction_id:e})}))}var Yg=J({ok:X(!0),goals:q(J({goal_id:W(),repository:J({branch:W(),identity:W(),label:W(),read_only:X(!0)})}))});async function Xg(){return Yg.parse(await Kh(`/api/chat/goals/contexts`)).goals}var Zg=J({ok:X(!0),apps:q(J({active:K(),app_ref:W(),brand:W(),health_error_code:W().nullable().default(null),label:W(),ready:K(),reply_ready:K().default(!1)}))});async function Qg(){return Zg.parse(await Kh(`/api/chat/lark/apps`)).apps}var $g=J({ok:X(!0),app_ref:W(),error:W().nullable(),setup_id:W(),status:Y([`starting`,`waiting_for_feishu`,`ready`,`failed`,`cancelled`]),verification_url:W().url().nullable()});async function e_(e){return $g.parse(await Kh(`/api/chat/lark/app-setups`,{method:`POST`,body:JSON.stringify({app_ref:e.appRef,brand:e.brand})}))}async function t_(e){return $g.parse(await Kh(`/api/chat/lark/app-setups/${encodeURIComponent(e)}`))}async function n_(e){return $g.parse(await Kh(`/api/chat/lark/app-setups/${encodeURIComponent(e)}`,{method:`DELETE`}))}var r_=[`invalid_event`,`binding_unavailable`,`chat_mismatch`,`topic_mismatch`,`route_ambiguous`,`self_message`,`invalid_routing_state`,`not_addressed`],i_=J({ok:X(!0),chats:q(J({chat_id:W(),chat_name:W()}))});async function a_(e,t){let n=new URLSearchParams({app_ref:e});return t&&n.set(`query`,t),i_.parse(await Kh(`/api/chat/lark/chats?${n.toString()}`)).chats}var o_=J({ok:X(!0),connections:q(J({conversation_kind:Y([`goal`,`manager`]).default(`goal`),agent_id:W().nullable().default(null),connection_id:W(),app_label:W(),app_ref:W(),capture_scope:Y([`addressed_only`,`configured_chat_all`]).default(`addressed_only`),chat_name:W(),enabled:K(),goal_id:W(),goal_title:W(),health_error_code:W().nullable().default(null),history_permission_guidance:J({action:X(`enable_application_scopes_and_publish`),api_document_url:W().url(),capability:X(`group_history_pagination`),identity:X(`bot`),required_scopes:_d([X(`im:message.group_msg`),X(`im:message.group_msg.include_bot:read`)]),schema_version:X(`lark_bot_group_history_permission_guidance_v0`)}).nullable().default(null),incoming_mode:Y([`mentions`,`all`]),ingress_mode:Y([`live_steering`,`session_queue`,`async_inbox`,`direct_session`]).default(`async_inbox`),event_count:G().int().nonnegative().default(0),last_event_reason:Y(r_).nullable().default(null).catch(null),last_event_status:W().nullable().default(null),listener_error_code:W().nullable().default(null),listener_status:Y([`starting`,`listening`,`retrying`,`stopped`]).nullable().default(null),replied_count:G().int().nonnegative().default(0),reply_ready:K().default(!1),reply_mode:X(`topic_reply`),session_bound:K().default(!1),target_ref:W(),topic_name:W(),topic_setup_required:K()}))});async function s_(){return o_.parse(await Kh(`/api/chat/lark/connections`)).connections}async function c_(e){return hg.parse(await Kh(`/api/chat/lark/connections`,{method:`POST`,body:JSON.stringify({...e.agentBindings?{agent_bindings:e.agentBindings.map(e=>({agent_id:e.agentId,app_ref:e.appRef}))}:{},...e.agentId?{agent_id:e.agentId}:{},...e.appRef?{app_ref:e.appRef}:{},...e.connectionId?{connection_id:e.connectionId}:{},conversation_kind:e.conversationKind??`goal`,capture_scope:e.captureScope,chat_id:e.chatId,chat_name:e.chatName,execute:e.execute,goal_id:e.goalId,incoming_mode:e.incomingMode,ingress_mode:e.ingressMode,reply_mode:e.replyMode})}))}async function l_(e,t){let n=new URLSearchParams({goal_id:e,connection_id:t});return hg.parse(await Kh(`/api/chat/lark/connections?${n.toString()}`,{method:`DELETE`}))}function u_(e){return{loadedUrl:null,projectionRevision:0,requestedUrl:e,selectionRevision:0,requestGeneration:0}}function d_(e,t){return e.selectionRevision+=1,e.requestedUrl=t,e.selectionRevision}function f_(e,t,n){if(n.background)return e.requestedUrl!==null||e.loadedUrl!==t?null:(e.requestGeneration+=1,{background:!0,projectionRevision:e.projectionRevision,selectionRevision:e.selectionRevision,url:t,generation:e.requestGeneration});let r=n.selectionRevision??e.selectionRevision+1;return n.selectionRevision!==void 0&&e.selectionRevision!==r?null:(e.selectionRevision=r,e.projectionRevision+=1,e.requestedUrl=t,e.requestGeneration+=1,{background:!1,projectionRevision:e.projectionRevision,selectionRevision:r,url:t,generation:e.requestGeneration})}function p_(e,t){return t.generation===e.requestGeneration&&e.projectionRevision===t.projectionRevision&&e.selectionRevision===t.selectionRevision}function m_(e,t){return p_(e,t)&&(!t.background||e.requestedUrl===null&&e.loadedUrl===t.url)}function h_(e,t,n){return t.get(e)===n}function g_(e,t,n,r){return e.filter(e=>h_(r(e),n,t))}function __(e,t,n){let r=new Set,i=[];for(let a of[...e,...t]){let e=n(a);e==null||r.has(e)||(r.add(e),i.push(a))}return i}var v_=[`runs_24h`,`runs_7d`,`quota_spend_slots_24h`,`quota_spend_slots_7d`,`automation_run_count_24h`,`automation_run_count_7d`,`progress_signal_run_count_24h`,`progress_signal_run_count_7d`],y_=[`input_tokens_24h`,`input_tokens_7d`,`output_tokens_24h`,`output_tokens_7d`,`cache_tokens_24h`,`cache_tokens_7d`,`cost_usd_24h`,`cost_usd_7d`,`duration_ms_24h`,`duration_ms_7d`],b_=[`accounting`,`decision`,`evidence`,`state`,`work`],x_={accounting:0,decision:0,evidence:0,state:0,work:0},S_={runs_24h:0,runs_7d:0,quota_spend_slots_24h:0,quota_spend_slots_7d:0,automation_run_count_24h:0,automation_run_count_7d:0,progress_signal_run_count_24h:0,progress_signal_run_count_7d:0};function C_(e,t){let n={...e};for(let r of v_)n[r]=(Number(e[r])||0)+(Number(t[r])||0);for(let r of y_)(e[r]!==void 0||t[r]!==void 0)&&(n[r]=(e[r]??0)+(t[r]??0));return n}function w_(e,t){return!e.length||t<=0?e:e.map(e=>({...e,project_share_24h:Math.round((Number(e.runs_24h)||0)/t*1e3)/1e3}))}function T_(e,t){let n={...e};for(let r of b_)n[r]=(e[r]??0)+(t[r]??0);return n}function E_(e){let t={events_24h:0,events_7d:0,by_class_24h:{...x_},by_class_7d:{...x_}};for(let n of e)t.events_24h+=n.events_24h,t.events_7d+=n.events_7d,t.by_class_24h=T_(t.by_class_24h,n.by_class_24h),t.by_class_7d=T_(t.by_class_7d,n.by_class_7d);return t}function D_(e,t,n){if(!e&&!t)return null;let r=g_(e?.goals??[],`active`,n,e=>e.goal_id),i=g_(t?.goals??[],`stopped`,n,e=>e.goal_id),a=__(r,i,e=>e.goal_id),o=E_(r),s=E_(i),c={events_24h:o.events_24h+s.events_24h,events_7d:o.events_7d+s.events_7d,by_class_24h:T_(o.by_class_24h,s.by_class_24h),by_class_7d:T_(o.by_class_7d,s.by_class_7d)};return{...e??t,goals:a,sample_run_count:(e?.sample_run_count??0)+(t?.sample_run_count??0),totals:c}}function O_(e,t,n){if(!e&&!t)return null;let r=__([...g_(e?.items??[],`active`,n,e=>e.goal_id),...g_(t?.items??[],`stopped`,n,e=>e.goal_id)],[],e=>`${e.goal_id}:${e.decision_kind??``}:${e.decision_at??``}`),i={decision_count:(e?.summary.decision_count??0)+(t?.summary.decision_count??0),stale_count:r.filter(e=>e.stale_by_age).length,rebase_required_count:(e?.summary.rebase_required_count??0)+(t?.summary.rebase_required_count??0),fresh_count:(e?.summary.fresh_count??0)+(t?.summary.fresh_count??0)};return{...e??t,items:r,sample_run_count:(e?.sample_run_count??0)+(t?.sample_run_count??0),summary:i}}function k_(e,t){return __([...e,...t].sort((e,t)=>t.generated_at.localeCompare(e.generated_at)),[],e=>`${e.goal_id}:${e.generated_at}:${e.classification??``}`)}function A_(e,t,n){let r=__(g_(e.items,`active`,n,e=>e.goal_id),g_(t.items,`stopped`,n,e=>e.goal_id),e=>e.goal_id);return{...e,item_count:r.length,items:r,needs_controller:r.filter(e=>e.waiting_on===`controller`).length,needs_codex:r.filter(e=>e.waiting_on===`codex`).length,needs_user_or_controller:r.filter(e=>[`user_or_controller`,`controller`].includes(e.waiting_on)).length,watching_external_evidence:r.filter(e=>e.waiting_on===`external_evidence`).length}}function j_(e){let t=e.todo_id?.trim()||``;return t?`${e.goal_id}:${t}`:`${e.goal_id}:synthetic:${e.role??``}:${e.index??``}:${e.text??``}`}function M_(e){let t={...S_};for(let n of e){for(let e of v_)t[e]+=Number(n[e])||0;for(let e of y_)n[e]!==void 0&&(t[e]=(t[e]??0)+n[e])}return t}function N_(e,t,n){if(!e&&!t)return null;let r=g_(e?.items??[],`active`,n,e=>e.goal_id),i=g_(t?.items??[],`stopped`,n,e=>e.goal_id),a=__(r,i,j_);return{...e??t,current_projected_count:r.length+i.length,items:a,rollout_event_count:a.reduce((e,t)=>e+(t.event_count??0),0),total_count:a.length}}function P_(e,t,n){if(!e&&!t)return null;let r=g_(e?.goals??[],`active`,n,e=>e.goal_id),i=g_(t?.goals??[],`stopped`,n,e=>e.goal_id),a=__(r,i,e=>e.goal_id),o=C_(M_(r),M_(i));return{...e??t,goals:w_(a,Number(o.runs_24h)||0),sample_run_count:(e?.sample_run_count??0)+(t?.sample_run_count??0),totals:o}}function F_(e,t,n){if(!e&&!t)return null;let r=(e?.agents??[]).filter(e=>e.goal_ids.some(e=>h_(e,n,`active`))||(e.current_todo?.goal_id?h_(e.current_todo.goal_id,n,`active`):!1)),i=(t?.agents??[]).filter(e=>e.goal_ids.some(e=>h_(e,n,`stopped`))||(e.current_todo?.goal_id?h_(e.current_todo.goal_id,n,`stopped`):!1)),a=__(r,i,e=>e.agent_id).map(e=>{let t=i.find(t=>t.agent_id===e.agent_id);return t?{...e,goal_ids:Array.from(new Set([...e.goal_ids??[],...t.goal_ids]))}:e});return{...e??t,agents:a,source_summary:(e??t)?.source_summary?{...(e??t).source_summary,projected_agent_count:a.length,registered_agent_count:new Set(a.map(e=>e.agent_id)).size}:(e??t)?.source_summary}}function I_(e,t,n){if(!e&&!t)return null;let r=__(g_(e?.goals??[],`active`,n,e=>e.goal_id),g_(t?.goals??[],`stopped`,n,e=>e.goal_id),e=>e.goal_id);return{...e??t,goals:r}}function L_(e,t){let n=t.goal_projection?.scope;if(n!==`active`&&n!==`stopped`)return t;let r=n,i=t.run_history.goals,a=e.run_history.goals,o=__(r===`active`?i:a.filter(e=>e.activation_state!==`stopped`),r===`stopped`?i:a.filter(e=>e.activation_state===`stopped`),e=>e.id),s=new Map(o.map(e=>[e.id,e.activation_state])),c=r===`active`?t:e,l=r===`stopped`?t:e,u=e.goal_projection?.registry_revision??null,d=t.goal_projection?.registry_revision??null,f=u===null||d===null||u===d;return{...e,agent_management_projection:F_(c.agent_management_projection,l.agent_management_projection,s),attention_queue:A_(c.attention_queue,l.attention_queue,s),decision_freshness_summary:O_(c.decision_freshness_summary,l.decision_freshness_summary,s),event_ledger_summary:D_(c.event_ledger_summary,l.event_ledger_summary,s),goal_channel_notification_projection:I_(c.goal_channel_notification_projection,l.goal_channel_notification_projection,s),goal_projection:{schema_version:`loopx_goal_projection_scope_v0`,...t.goal_projection,complete:f,projected_goal_count:o.length,registry_goal_count:t.goal_projection?.registry_goal_count??0,scope:`all`},run_history:{...e.run_history,goal_count:o.length,goals:o,recent_runs:k_(c.run_history.recent_runs,l.run_history.recent_runs),run_count:c.run_history.run_count+l.run_history.run_count},todo_index:N_(c.todo_index,l.todo_index,s),usage_summary:P_(c.usage_summary,l.usage_summary,s)}}function R_(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`){if(Array.isArray(e)){var i=e.length;for(t=0;ttypeof e==`boolean`?`${e}`:e===0?`0`:e,V_=z_,H_=(e,t)=>n=>{if(t?.variants==null)return V_(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=B_(t)||B_(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return V_(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},U_=(e,t)=>{let n=Array(e.length+t.length);for(let t=0;t({classGroupId:e,validator:t}),G_=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),K_=`-`,q_=[],J_=`arbitrary..`,Y_=e=>{let t=Q_(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{if(e.startsWith(`[`)&&e.endsWith(`]`))return Z_(e);let n=e.split(K_);return X_(n,+(n[0]===``&&n.length>1),t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=r[e],i=n[e];return t?i?U_(i,t):t:i||q_}return n[e]||q_}}},X_=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;let r=e[t],i=n.nextPart.get(r);if(i){let n=X_(e,t+1,i);if(n)return n}let a=n.validators;if(a===null)return;let o=t===0?e.join(K_):e.slice(t).join(K_),s=a.length;for(let e=0;ee.slice(1,-1).indexOf(`:`)===-1?void 0:(()=>{let t=e.slice(1,-1),n=t.indexOf(`:`),r=t.slice(0,n);return r?J_+r:void 0})(),Q_=e=>{let{theme:t,classGroups:n}=e;return $_(n,t)},$_=(e,t)=>{let n=G_();for(let r in e){let i=e[r];ev(i,n,r,t)}return n},ev=(e,t,n,r)=>{let i=e.length;for(let a=0;a{if(typeof e==`string`){nv(e,t,n);return}if(typeof e==`function`){rv(e,t,n,r);return}iv(e,t,n,r)},nv=(e,t,n)=>{let r=e===``?t:av(t,e);r.classGroupId=n},rv=(e,t,n,r)=>{if(ov(e)){ev(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(W_(n,e))},iv=(e,t,n,r)=>{let i=Object.entries(e),a=i.length;for(let e=0;e{let n=e,r=t.split(K_),i=r.length;for(let e=0;e`isThemeGetter`in e&&e.isThemeGetter===!0,sv=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null),i=(i,a)=>{n[i]=a,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(e){let t=n[e];if(t!==void 0)return t;if((t=r[e])!==void 0)return i(e,t),t},set(e,t){e in n?n[e]=t:i(e,t)}}},cv=`!`,lv=`:`,uv=[],dv=(e,t,n,r,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:i}),fv=e=>{let{prefix:t,experimentalParseClassName:n}=e,r=e=>{let t=[],n=0,r=0,i=0,a,o=e.length;for(let s=0;si?a-i:void 0;return dv(t,l,c,u)};if(t){let e=t+lv,n=r;r=t=>t.startsWith(e)?n(t.slice(e.length)):dv(uv,!1,t,void 0,!0)}if(n){let e=r;r=t=>n({className:t,parseClassName:e})}return r},pv=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((e,n)=>{t.set(e,1e6+n)}),e=>{let n=[],r=[];for(let i=0;i0&&(r.sort(),n.push(...r),r=[]),n.push(a)):r.push(a)}return r.length>0&&(r.sort(),n.push(...r)),n}},mv=e=>({cache:sv(e.cacheSize),parseClassName:fv(e),sortModifiers:pv(e),postfixLookupClassGroupIds:hv(e),...Y_(e)}),hv=e=>{let t=Object.create(null),n=e.postfixLookupClassGroups;if(n)for(let e=0;e{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i,sortModifiers:a,postfixLookupClassGroupIds:o}=t,s=[],c=e.trim().split(gv),l=``;for(let e=c.length-1;e>=0;--e){let t=c[e],{isExternal:u,modifiers:d,hasImportantModifier:f,baseClassName:p,maybePostfixModifierPosition:m}=n(t);if(u){l=t+(l.length>0?` `+l:l);continue}let h=!!m,g;if(h){g=r(p.substring(0,m));let e=g&&o[g]?r(p):void 0;e&&e!==g&&(g=e,h=!1)}else g=r(p);if(!g){if(!h){l=t+(l.length>0?` `+l:l);continue}if(g=r(p),!g){l=t+(l.length>0?` `+l:l);continue}h=!1}let _=d.length===0?``:d.length===1?d[0]:a(d).join(`:`),v=f?_+cv:_,y=v+g;if(s.indexOf(y)>-1)continue;s.push(y);let b=i(g,h);for(let e=0;e0?` `+l:l)}return l},vv=(...e)=>{let t=0,n,r,i=``;for(;t{if(typeof e==`string`)return e;let t,n=``;for(let r=0;r{let n,r,i,a,o=o=>(n=mv(t.reduce((e,t)=>t(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)),s=e=>{let t=r(e);if(t)return t;let a=_v(e,n);return i(e,a),a};return a=o,(...e)=>a(vv(...e))},xv=[],Sv=e=>{let t=t=>t[e]||xv;return t.isThemeGetter=!0,t},Cv=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,wv=/^\((?:(\w[\w-]*):)?(.+)\)$/i,Tv=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,Ev=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Dv=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Ov=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,kv=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Av=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,jv=e=>Tv.test(e),Mv=e=>!!e&&!Number.isNaN(Number(e)),Nv=e=>!!e&&Number.isInteger(Number(e)),Pv=e=>e.endsWith(`%`)&&Mv(e.slice(0,-1)),Fv=e=>Ev.test(e),Iv=()=>!0,Lv=e=>Dv.test(e)&&!Ov.test(e),Rv=()=>!1,zv=e=>kv.test(e),Bv=e=>Av.test(e),Vv=e=>!Q(e)&&!$(e),Hv=e=>e.startsWith(`@container`)&&(e[10]===`/`&&e[11]!==void 0||e[11]===`s`&&e[16]!==void 0&&e.startsWith(`-size/`,10)||e[11]===`n`&&e[18]!==void 0&&e.startsWith(`-normal/`,10)),Uv=e=>iy(e,cy,Rv),Q=e=>Cv.test(e),Wv=e=>iy(e,ly,Lv),Gv=e=>iy(e,uy,Mv),Kv=e=>iy(e,fy,Iv),qv=e=>iy(e,dy,Rv),Jv=e=>iy(e,oy,Rv),Yv=e=>iy(e,sy,Bv),Xv=e=>iy(e,py,zv),$=e=>wv.test(e),Zv=e=>ay(e,ly),Qv=e=>ay(e,dy),$v=e=>ay(e,oy),ey=e=>ay(e,cy),ty=e=>ay(e,sy),ny=e=>ay(e,py,!0),ry=e=>ay(e,fy,!0),iy=(e,t,n)=>{let r=Cv.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},ay=(e,t,n=!1)=>{let r=wv.exec(e);return r?r[1]?t(r[1]):n:!1},oy=e=>e===`position`||e===`percentage`,sy=e=>e===`image`||e===`url`,cy=e=>e===`length`||e===`size`||e===`bg-size`,ly=e=>e===`length`,uy=e=>e===`number`,dy=e=>e===`family-name`,fy=e=>e===`number`||e===`weight`,py=e=>e===`shadow`,my=bv(()=>{let e=Sv(`color`),t=Sv(`font`),n=Sv(`text`),r=Sv(`font-weight`),i=Sv(`tracking`),a=Sv(`leading`),o=Sv(`breakpoint`),s=Sv(`container`),c=Sv(`spacing`),l=Sv(`radius`),u=Sv(`shadow`),d=Sv(`inset-shadow`),f=Sv(`text-shadow`),p=Sv(`drop-shadow`),m=Sv(`blur`),h=Sv(`perspective`),g=Sv(`aspect`),_=Sv(`ease`),v=Sv(`animate`),y=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],b=()=>[`center`,`top`,`bottom`,`left`,`right`,`top-left`,`left-top`,`top-right`,`right-top`,`bottom-right`,`right-bottom`,`bottom-left`,`left-bottom`],x=()=>[...b(),$,Q],S=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],C=()=>[`auto`,`contain`,`none`],w=()=>[$,Q,c],T=()=>[jv,`full`,`auto`,...w()],E=()=>[Nv,`none`,`subgrid`,$,Q],D=()=>[`auto`,{span:[`full`,Nv,$,Q]},Nv,$,Q],O=()=>[Nv,`auto`,$,Q],k=()=>[`auto`,`min`,`max`,`fr`,$,Q],ee=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`,`baseline`,`center-safe`,`end-safe`],te=()=>[`start`,`end`,`center`,`stretch`,`center-safe`,`end-safe`],A=()=>[`auto`,...w()],j=()=>[jv,`auto`,`full`,`dvw`,`dvh`,`lvw`,`lvh`,`svw`,`svh`,`min`,`max`,`fit`,...w()],M=()=>[jv,`screen`,`full`,`dvw`,`lvw`,`svw`,`min`,`max`,`fit`,...w()],ne=()=>[jv,`screen`,`full`,`lh`,`dvh`,`lvh`,`svh`,`min`,`max`,`fit`,...w()],N=()=>[e,$,Q],P=()=>[...b(),$v,Jv,{position:[$,Q]}],re=()=>[`no-repeat`,{repeat:[``,`x`,`y`,`space`,`round`]}],ie=()=>[`auto`,`cover`,`contain`,ey,Uv,{size:[$,Q]}],ae=()=>[Pv,Zv,Wv],F=()=>[``,`none`,`full`,l,$,Q],oe=()=>[``,Mv,Zv,Wv],I=()=>[`solid`,`dashed`,`dotted`,`double`],se=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],L=()=>[Mv,Pv,$v,Jv],ce=()=>[``,`none`,m,$,Q],le=()=>[`none`,Mv,$,Q],ue=()=>[`none`,Mv,$,Q],de=()=>[Mv,$,Q],fe=()=>[jv,`full`,...w()];return{cacheSize:500,theme:{animate:[`spin`,`ping`,`pulse`,`bounce`],aspect:[`video`],blur:[Fv],breakpoint:[Fv],color:[Iv],container:[Fv],"drop-shadow":[Fv],ease:[`in`,`out`,`in-out`],font:[Vv],"font-weight":[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`],"inset-shadow":[Fv],leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`],perspective:[`dramatic`,`near`,`normal`,`midrange`,`distant`,`none`],radius:[Fv],shadow:[Fv],spacing:[`px`,Mv],text:[Fv],"text-shadow":[Fv],tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`]},classGroups:{aspect:[{aspect:[`auto`,`square`,jv,Q,$,g]}],container:[`container`],"container-type":[{"@container":[``,`normal`,`size`,$,Q]}],"container-named":[Hv],columns:[{columns:[Mv,Q,$,s]}],"break-after":[{"break-after":y()}],"break-before":[{"break-before":y()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],sr:[`sr-only`,`not-sr-only`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:x()}],overflow:[{overflow:S()}],"overflow-x":[{"overflow-x":S()}],"overflow-y":[{"overflow-y":S()}],overscroll:[{overscroll:C()}],"overscroll-x":[{"overscroll-x":C()}],"overscroll-y":[{"overscroll-y":C()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:T()}],"inset-x":[{"inset-x":T()}],"inset-y":[{"inset-y":T()}],start:[{"inset-s":T(),start:T()}],end:[{"inset-e":T(),end:T()}],"inset-bs":[{"inset-bs":T()}],"inset-be":[{"inset-be":T()}],top:[{top:T()}],right:[{right:T()}],bottom:[{bottom:T()}],left:[{left:T()}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[Nv,`auto`,$,Q]}],basis:[{basis:[jv,`full`,`auto`,s,...w()]}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`nowrap`,`wrap`,`wrap-reverse`]}],flex:[{flex:[Mv,jv,`auto`,`initial`,`none`,Q]}],grow:[{grow:[``,Mv,$,Q]}],shrink:[{shrink:[``,Mv,$,Q]}],order:[{order:[Nv,`first`,`last`,`none`,$,Q]}],"grid-cols":[{"grid-cols":E()}],"col-start-end":[{col:D()}],"col-start":[{"col-start":O()}],"col-end":[{"col-end":O()}],"grid-rows":[{"grid-rows":E()}],"row-start-end":[{row:D()}],"row-start":[{"row-start":O()}],"row-end":[{"row-end":O()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":k()}],"auto-rows":[{"auto-rows":k()}],gap:[{gap:w()}],"gap-x":[{"gap-x":w()}],"gap-y":[{"gap-y":w()}],"justify-content":[{justify:[...ee(),`normal`]}],"justify-items":[{"justify-items":[...te(),`normal`]}],"justify-self":[{"justify-self":[`auto`,...te()]}],"align-content":[{content:[`normal`,...ee()]}],"align-items":[{items:[...te(),{baseline:[``,`last`]}]}],"align-self":[{self:[`auto`,...te(),{baseline:[``,`last`]}]}],"place-content":[{"place-content":ee()}],"place-items":[{"place-items":[...te(),`baseline`]}],"place-self":[{"place-self":[`auto`,...te()]}],p:[{p:w()}],px:[{px:w()}],py:[{py:w()}],ps:[{ps:w()}],pe:[{pe:w()}],pbs:[{pbs:w()}],pbe:[{pbe:w()}],pt:[{pt:w()}],pr:[{pr:w()}],pb:[{pb:w()}],pl:[{pl:w()}],m:[{m:A()}],mx:[{mx:A()}],my:[{my:A()}],ms:[{ms:A()}],me:[{me:A()}],mbs:[{mbs:A()}],mbe:[{mbe:A()}],mt:[{mt:A()}],mr:[{mr:A()}],mb:[{mb:A()}],ml:[{ml:A()}],"space-x":[{"space-x":w()}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":w()}],"space-y-reverse":[`space-y-reverse`],size:[{size:j()}],"inline-size":[{inline:[`auto`,...M()]}],"min-inline-size":[{"min-inline":[`auto`,...M()]}],"max-inline-size":[{"max-inline":[`none`,...M()]}],"block-size":[{block:[`auto`,...ne()]}],"min-block-size":[{"min-block":[`auto`,...ne()]}],"max-block-size":[{"max-block":[`none`,...ne()]}],w:[{w:[s,`screen`,...j()]}],"min-w":[{"min-w":[s,`screen`,`none`,...j()]}],"max-w":[{"max-w":[s,`screen`,`none`,`prose`,{screen:[o]},...j()]}],h:[{h:[`screen`,`lh`,...j()]}],"min-h":[{"min-h":[`screen`,`lh`,`none`,...j()]}],"max-h":[{"max-h":[`screen`,`lh`,...j()]}],"font-size":[{text:[`base`,n,Zv,Wv]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[r,ry,Kv]}],"font-stretch":[{"font-stretch":[`ultra-condensed`,`extra-condensed`,`condensed`,`semi-condensed`,`normal`,`semi-expanded`,`expanded`,`extra-expanded`,`ultra-expanded`,Pv,Q]}],"font-family":[{font:[Qv,qv,t]}],"font-features":[{"font-features":[Q]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[i,$,Q]}],"line-clamp":[{"line-clamp":[Mv,`none`,$,Gv]}],leading:[{leading:[a,...w()]}],"list-image":[{"list-image":[`none`,$,Q]}],"list-style-position":[{list:[`inside`,`outside`]}],"list-style-type":[{list:[`disc`,`decimal`,`none`,$,Q]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"placeholder-color":[{placeholder:N()}],"text-color":[{text:N()}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...I(),`wavy`]}],"text-decoration-thickness":[{decoration:[Mv,`from-font`,`auto`,$,Wv]}],"text-decoration-color":[{decoration:N()}],"underline-offset":[{"underline-offset":[Mv,`auto`,$,Q]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:w()}],"tab-size":[{tab:[Nv,$,Q]}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,$,Q]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],wrap:[{wrap:[`break-word`,`anywhere`,`normal`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,$,Q]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:P()}],"bg-repeat":[{bg:re()}],"bg-size":[{bg:ie()}],"bg-image":[{bg:[`none`,{linear:[{to:[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},Nv,$,Q],radial:[``,$,Q],conic:[Nv,$,Q]},ty,Yv]}],"bg-color":[{bg:N()}],"gradient-from-pos":[{from:ae()}],"gradient-via-pos":[{via:ae()}],"gradient-to-pos":[{to:ae()}],"gradient-from":[{from:N()}],"gradient-via":[{via:N()}],"gradient-to":[{to:N()}],rounded:[{rounded:F()}],"rounded-s":[{"rounded-s":F()}],"rounded-e":[{"rounded-e":F()}],"rounded-t":[{"rounded-t":F()}],"rounded-r":[{"rounded-r":F()}],"rounded-b":[{"rounded-b":F()}],"rounded-l":[{"rounded-l":F()}],"rounded-ss":[{"rounded-ss":F()}],"rounded-se":[{"rounded-se":F()}],"rounded-ee":[{"rounded-ee":F()}],"rounded-es":[{"rounded-es":F()}],"rounded-tl":[{"rounded-tl":F()}],"rounded-tr":[{"rounded-tr":F()}],"rounded-br":[{"rounded-br":F()}],"rounded-bl":[{"rounded-bl":F()}],"border-w":[{border:oe()}],"border-w-x":[{"border-x":oe()}],"border-w-y":[{"border-y":oe()}],"border-w-s":[{"border-s":oe()}],"border-w-e":[{"border-e":oe()}],"border-w-bs":[{"border-bs":oe()}],"border-w-be":[{"border-be":oe()}],"border-w-t":[{"border-t":oe()}],"border-w-r":[{"border-r":oe()}],"border-w-b":[{"border-b":oe()}],"border-w-l":[{"border-l":oe()}],"divide-x":[{"divide-x":oe()}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":oe()}],"divide-y-reverse":[`divide-y-reverse`],"border-style":[{border:[...I(),`hidden`,`none`]}],"divide-style":[{divide:[...I(),`hidden`,`none`]}],"border-color":[{border:N()}],"border-color-x":[{"border-x":N()}],"border-color-y":[{"border-y":N()}],"border-color-s":[{"border-s":N()}],"border-color-e":[{"border-e":N()}],"border-color-bs":[{"border-bs":N()}],"border-color-be":[{"border-be":N()}],"border-color-t":[{"border-t":N()}],"border-color-r":[{"border-r":N()}],"border-color-b":[{"border-b":N()}],"border-color-l":[{"border-l":N()}],"divide-color":[{divide:N()}],"outline-style":[{outline:[...I(),`none`,`hidden`]}],"outline-offset":[{"outline-offset":[Mv,$,Q]}],"outline-w":[{outline:[``,Mv,Zv,Wv]}],"outline-color":[{outline:N()}],shadow:[{shadow:[``,`none`,u,ny,Xv]}],"shadow-color":[{shadow:N()}],"inset-shadow":[{"inset-shadow":[`none`,d,ny,Xv]}],"inset-shadow-color":[{"inset-shadow":N()}],"ring-w":[{ring:oe()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:N()}],"ring-offset-w":[{"ring-offset":[Mv,Wv]}],"ring-offset-color":[{"ring-offset":N()}],"inset-ring-w":[{"inset-ring":oe()}],"inset-ring-color":[{"inset-ring":N()}],"text-shadow":[{"text-shadow":[`none`,f,ny,Xv]}],"text-shadow-color":[{"text-shadow":N()}],opacity:[{opacity:[Mv,$,Q]}],"mix-blend":[{"mix-blend":[...se(),`plus-darker`,`plus-lighter`]}],"bg-blend":[{"bg-blend":se()}],"mask-clip":[{"mask-clip":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]},`mask-no-clip`],"mask-composite":[{mask:[`add`,`subtract`,`intersect`,`exclude`]}],"mask-image-linear-pos":[{"mask-linear":[Mv]}],"mask-image-linear-from-pos":[{"mask-linear-from":L()}],"mask-image-linear-to-pos":[{"mask-linear-to":L()}],"mask-image-linear-from-color":[{"mask-linear-from":N()}],"mask-image-linear-to-color":[{"mask-linear-to":N()}],"mask-image-t-from-pos":[{"mask-t-from":L()}],"mask-image-t-to-pos":[{"mask-t-to":L()}],"mask-image-t-from-color":[{"mask-t-from":N()}],"mask-image-t-to-color":[{"mask-t-to":N()}],"mask-image-r-from-pos":[{"mask-r-from":L()}],"mask-image-r-to-pos":[{"mask-r-to":L()}],"mask-image-r-from-color":[{"mask-r-from":N()}],"mask-image-r-to-color":[{"mask-r-to":N()}],"mask-image-b-from-pos":[{"mask-b-from":L()}],"mask-image-b-to-pos":[{"mask-b-to":L()}],"mask-image-b-from-color":[{"mask-b-from":N()}],"mask-image-b-to-color":[{"mask-b-to":N()}],"mask-image-l-from-pos":[{"mask-l-from":L()}],"mask-image-l-to-pos":[{"mask-l-to":L()}],"mask-image-l-from-color":[{"mask-l-from":N()}],"mask-image-l-to-color":[{"mask-l-to":N()}],"mask-image-x-from-pos":[{"mask-x-from":L()}],"mask-image-x-to-pos":[{"mask-x-to":L()}],"mask-image-x-from-color":[{"mask-x-from":N()}],"mask-image-x-to-color":[{"mask-x-to":N()}],"mask-image-y-from-pos":[{"mask-y-from":L()}],"mask-image-y-to-pos":[{"mask-y-to":L()}],"mask-image-y-from-color":[{"mask-y-from":N()}],"mask-image-y-to-color":[{"mask-y-to":N()}],"mask-image-radial":[{"mask-radial":[$,Q]}],"mask-image-radial-from-pos":[{"mask-radial-from":L()}],"mask-image-radial-to-pos":[{"mask-radial-to":L()}],"mask-image-radial-from-color":[{"mask-radial-from":N()}],"mask-image-radial-to-color":[{"mask-radial-to":N()}],"mask-image-radial-shape":[{"mask-radial":[`circle`,`ellipse`]}],"mask-image-radial-size":[{"mask-radial":[{closest:[`side`,`corner`],farthest:[`side`,`corner`]}]}],"mask-image-radial-pos":[{"mask-radial-at":b()}],"mask-image-conic-pos":[{"mask-conic":[Mv]}],"mask-image-conic-from-pos":[{"mask-conic-from":L()}],"mask-image-conic-to-pos":[{"mask-conic-to":L()}],"mask-image-conic-from-color":[{"mask-conic-from":N()}],"mask-image-conic-to-color":[{"mask-conic-to":N()}],"mask-mode":[{mask:[`alpha`,`luminance`,`match`]}],"mask-origin":[{"mask-origin":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]}],"mask-position":[{mask:P()}],"mask-repeat":[{mask:re()}],"mask-size":[{mask:ie()}],"mask-type":[{"mask-type":[`alpha`,`luminance`]}],"mask-image":[{mask:[`none`,$,Q]}],filter:[{filter:[``,`none`,$,Q]}],blur:[{blur:ce()}],brightness:[{brightness:[Mv,$,Q]}],contrast:[{contrast:[Mv,$,Q]}],"drop-shadow":[{"drop-shadow":[``,`none`,p,ny,Xv]}],"drop-shadow-color":[{"drop-shadow":N()}],grayscale:[{grayscale:[``,Mv,$,Q]}],"hue-rotate":[{"hue-rotate":[Mv,$,Q]}],invert:[{invert:[``,Mv,$,Q]}],saturate:[{saturate:[Mv,$,Q]}],sepia:[{sepia:[``,Mv,$,Q]}],"backdrop-filter":[{"backdrop-filter":[``,`none`,$,Q]}],"backdrop-blur":[{"backdrop-blur":ce()}],"backdrop-brightness":[{"backdrop-brightness":[Mv,$,Q]}],"backdrop-contrast":[{"backdrop-contrast":[Mv,$,Q]}],"backdrop-grayscale":[{"backdrop-grayscale":[``,Mv,$,Q]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Mv,$,Q]}],"backdrop-invert":[{"backdrop-invert":[``,Mv,$,Q]}],"backdrop-opacity":[{"backdrop-opacity":[Mv,$,Q]}],"backdrop-saturate":[{"backdrop-saturate":[Mv,$,Q]}],"backdrop-sepia":[{"backdrop-sepia":[``,Mv,$,Q]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":w()}],"border-spacing-x":[{"border-spacing-x":w()}],"border-spacing-y":[{"border-spacing-y":w()}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[``,`all`,`colors`,`opacity`,`shadow`,`transform`,`none`,$,Q]}],"transition-behavior":[{transition:[`normal`,`discrete`]}],duration:[{duration:[Mv,`initial`,$,Q]}],ease:[{ease:[`linear`,`initial`,_,$,Q]}],delay:[{delay:[Mv,$,Q]}],animate:[{animate:[`none`,v,$,Q]}],backface:[{backface:[`hidden`,`visible`]}],perspective:[{perspective:[h,$,Q]}],"perspective-origin":[{"perspective-origin":x()}],rotate:[{rotate:le()}],"rotate-x":[{"rotate-x":le()}],"rotate-y":[{"rotate-y":le()}],"rotate-z":[{"rotate-z":le()}],scale:[{scale:ue()}],"scale-x":[{"scale-x":ue()}],"scale-y":[{"scale-y":ue()}],"scale-z":[{"scale-z":ue()}],"scale-3d":[`scale-3d`],skew:[{skew:de()}],"skew-x":[{"skew-x":de()}],"skew-y":[{"skew-y":de()}],transform:[{transform:[$,Q,``,`none`,`gpu`,`cpu`]}],"transform-origin":[{origin:x()}],"transform-style":[{transform:[`3d`,`flat`]}],translate:[{translate:fe()}],"translate-x":[{"translate-x":fe()}],"translate-y":[{"translate-y":fe()}],"translate-z":[{"translate-z":fe()}],"translate-none":[`translate-none`],zoom:[{zoom:[Nv,$,Q]}],accent:[{accent:N()}],appearance:[{appearance:[`none`,`auto`]}],"caret-color":[{caret:N()}],"color-scheme":[{scheme:[`normal`,`dark`,`light`,`light-dark`,`only-dark`,`only-light`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,$,Q]}],"field-sizing":[{"field-sizing":[`fixed`,`content`]}],"pointer-events":[{"pointer-events":[`auto`,`none`]}],resize:[{resize:[`none`,``,`y`,`x`]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scrollbar-thumb-color":[{"scrollbar-thumb":N()}],"scrollbar-track-color":[{"scrollbar-track":N()}],"scrollbar-gutter":[{"scrollbar-gutter":[`auto`,`stable`,`both`]}],"scrollbar-w":[{scrollbar:[`auto`,`thin`,`none`]}],"scroll-m":[{"scroll-m":w()}],"scroll-mx":[{"scroll-mx":w()}],"scroll-my":[{"scroll-my":w()}],"scroll-ms":[{"scroll-ms":w()}],"scroll-me":[{"scroll-me":w()}],"scroll-mbs":[{"scroll-mbs":w()}],"scroll-mbe":[{"scroll-mbe":w()}],"scroll-mt":[{"scroll-mt":w()}],"scroll-mr":[{"scroll-mr":w()}],"scroll-mb":[{"scroll-mb":w()}],"scroll-ml":[{"scroll-ml":w()}],"scroll-p":[{"scroll-p":w()}],"scroll-px":[{"scroll-px":w()}],"scroll-py":[{"scroll-py":w()}],"scroll-ps":[{"scroll-ps":w()}],"scroll-pe":[{"scroll-pe":w()}],"scroll-pbs":[{"scroll-pbs":w()}],"scroll-pbe":[{"scroll-pbe":w()}],"scroll-pt":[{"scroll-pt":w()}],"scroll-pr":[{"scroll-pr":w()}],"scroll-pb":[{"scroll-pb":w()}],"scroll-pl":[{"scroll-pl":w()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,$,Q]}],fill:[{fill:[`none`,...N()]}],"stroke-w":[{stroke:[Mv,Zv,Wv,Gv]}],stroke:[{stroke:[`none`,...N()]}],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{"container-named":[`container-type`],overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`inset-bs`,`inset-be`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`right`,`left`],"inset-y":[`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pbs`,`pbe`,`pt`,`pr`,`pb`,`pl`],px:[`pr`,`pl`],py:[`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mbs`,`mbe`,`mt`,`mr`,`mb`,`ml`],mx:[`mr`,`ml`],my:[`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-x`,`border-w-y`,`border-w-s`,`border-w-e`,`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-r`,`border-w-l`],"border-w-y":[`border-w-t`,`border-w-b`],"border-color":[`border-color-x`,`border-color-y`,`border-color-s`,`border-color-e`,`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-r`,`border-color-l`],"border-color-y":[`border-color-t`,`border-color-b`],translate:[`translate-x`,`translate-y`,`translate-none`],"translate-none":[`translate`,`translate-x`,`translate-y`,`translate-z`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]},postfixLookupClassGroups:[`container-type`],orderSensitiveModifiers:[`*`,`**`,`after`,`backdrop`,`before`,`details-content`,`file`,`first-letter`,`first-line`,`marker`,`placeholder`,`selection`]}});function hy(...e){return my(z_(e))}var gy=H_(`inline-flex h-9 shrink-0 items-center justify-center gap-2 whitespace-nowrap rounded-md border px-3 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-400 disabled:pointer-events-none disabled:opacity-50 dark:focus-visible:ring-zinc-500`,{variants:{variant:{primary:`border-slate-900 bg-slate-950 text-white hover:bg-slate-800 dark:border-zinc-100 dark:bg-zinc-50 dark:text-zinc-950 dark:hover:bg-zinc-200`,secondary:`border-slate-200 bg-white text-slate-900 hover:bg-slate-50 dark:border-zinc-800 dark:bg-zinc-950 dark:text-zinc-100 dark:hover:bg-zinc-900`,ghost:`border-transparent bg-transparent text-slate-700 hover:bg-slate-100 dark:text-zinc-300 dark:hover:bg-zinc-900`},size:{sm:`h-8 px-2 text-xs`,md:`h-9 px-3 text-sm`,icon:`h-9 w-9 px-0`}},defaultVariants:{variant:`secondary`,size:`md`}});function _y({className:e,variant:t,size:n,...r}){return(0,B.jsx)(`button`,{className:hy(gy({variant:t,size:n}),e),type:`button`,...r})}function vy({className:e,...t}){return(0,B.jsx)(`section`,{className:hy(`rounded-lg border border-slate-200/80 bg-white/95 text-slate-950 shadow-[0_1px_2px_rgba(15,23,42,0.04)] dark:border-zinc-800 dark:bg-zinc-950 dark:text-zinc-50`,e),...t})}function yy({className:e,...t}){return(0,B.jsx)(`div`,{className:hy(`p-4 pt-0`,e),...t})}var by=[`codex`,`claude`,`kiro`,`trae`,`coco`,`openai`,`anthropic`],xy=new Set([`acp`,`status_projection`]);function Sy(e){let t=e.trim().toLowerCase().replace(/_/gu,`-`);for(let e of by)if(t===e||t.startsWith(`${e}-`))return e;return t}function Cy(e,t){let n=t?.trim().toLowerCase()??``;return n.length>0&&!xy.has(n)?Sy(n):Sy(e)}var wy={stop:`ready_stop`,resume:`resume_review`,delete:`delete_review`};function Ty(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function Ey(e){return typeof e==`string`&&e.trim().length>0?e:null}function Dy(e,t=240){let n=typeof e==`string`?e.replace(/\s+/g,` `).trim():``;return n.length>t?`${n.slice(0,t-1)}…`:n}function Oy(e){let t=Ty(e)??{},n=Dy(t.agent_id,80)||`unknown-agent`,r=Dy(t.acceptance,200);if(t.staffing===`gap`){let e=Ty(t.declined_first_todo)??{};return[`${n} · gap`,Dy(t.gap_reason_code,80),Dy(e.text,200)].filter(Boolean).join(` · `)}let i=Ty(t.first_todo)??{};return[`${n} · ready`,Dy(i.priority,8),Dy(i.action_kind,40),Dy(i.text,240),r?`acceptance: ${r}`:``].filter(Boolean).join(` · `)}function ky(e){let t=Ty(e)??{};return Object.entries(t).map(([e,t])=>`${e}: ${typeof t==`object`&&t?JSON.stringify(t):String(t)}`).join(` · `)}function Ay(e){let t=Ty(e);if(t?.action_kind!==`team.plan`||t.status!==`preview_ready`&&t.status!==`deferred`)return;let n=Ty(Ty(t.normalized_parameters)?.plan);if(!n||n.kind!==`steward_team_plan_preview`||n.applies!==!1)return;let r=Ey(t.proposal_id),i=Ey(t.expected_state_fingerprint),a=Ey(n.goal_id);if(!r||!i||!a)return;let o=Array.isArray(n.lanes)?n.lanes:[],s=Array.isArray(n.gaps)?n.gaps:[],c=[{key:`goal`,value:a},{key:`objective`,value:Dy(n.objective)},...o.map((e,t)=>({key:`lane_${t+1}`,value:Oy(e)})),...s.length>0?[{key:`lane_gaps`,value:s.map(e=>{let t=Ty(e)??{};return[Dy(t.lane_id,80),Dy(t.reason_code,80)].filter(Boolean).join(`: `)}).filter(Boolean).join(` · `)}]:[],{key:`quota_envelope`,value:ky(n.quota_envelope)},{key:`stop_condition`,value:Dy(n.stop_condition)}].filter(e=>e.value.length>0);return{schemaVersion:`review_card_frame_v0`,actionKind:`team.plan`,proposalId:r,stateFingerprint:i,kind:`confirmation`,attentionKind:`authority`,interactionMode:`confirm_reject`,decisions:[`confirm`,`reject`],titleKey:`team_plan_preview`,subtitleKey:`preview_only_no_lane_exists`,confirmLabelKey:`confirm_team_plan`,rejectLabelKey:`reject_team_plan`,warningKey:`confirming_creates_each_ready_lane_first_todo`,focus:`${a} · ${o.length} lane${o.length===1?``:`s`}`,fields:c}}function jy(e){let t=Ty(e.projection);if(t?.schema_version!==`loopx_operation_projection_v0`)return null;let n=Ey(t.title),r=Ey(t.subtitle),i=Ey(t.focus),a=Ey(t.warning);if(!n||!r||!i||!a||!Array.isArray(t.fields))return null;let o=[];for(let e of t.fields){let t=Ty(e),n=Ey(t?.label),r=Ey(t?.value);if(!n||!r)return null;o.push({label:n,value:r})}return{title:n,subtitle:r,focus:i,fields:o,warning:a}}function My(e){let t=Ty(e);if(t?.action_kind!==`operation.execute`)return;let n=Ty(t.normalized_parameters),r=Ty(t.operation);if(!n||r?.schema_version!==`loopx_operation_envelope_v0`)return;let i=Ey(r.operation_id),a=Ey(r.confirmation_digest),o=Ey(r.expires_at),s=jy(n);if(!i||!a||!o||!s||i!==t.proposal_id)return;let c=r.lifecycle_state;if(c!==`awaiting_confirmation`&&c!==`claimed`&&c!==`outcome_observed`)return;let l={schemaVersion:`operation_review_frame_v0`,operationId:i,confirmationDigest:a,lifecycleState:c,simulated:Ty(n.projection).simulated===!0,expiresAt:o,content:s};if(c===`awaiting_confirmation`)return{...l,kind:`confirmation`,attentionKind:`authority`,interactionMode:`confirm_reject`,decisions:[`confirm`,`reject`]};if(c===`claimed`)return{...l,kind:`pending`,attentionKind:`progress`,interactionMode:`inform`};let u=Ty(r.outcome);if(!u)return;let d=u.outcome===`rejected_by_operator`,f=u.simulation===!0||l.simulated;return{...l,kind:`result`,attentionKind:`progress`,interactionMode:`inform`,resultKind:d?`rejected`:f?`simulation_completed`:`completed`,resultDeliveryVerified:Ty(r.result_delivery)!==null,summary:Ey(u.summary)??``}}function Ny(e){let t=Ty(e)??{},n={schemaVersion:`action_review_plan_v0`,proposalId:typeof t.proposal_id==`string`?t.proposal_id:``,sourceFingerprint:typeof t.expected_state_fingerprint==`string`?t.expected_state_fingerprint:``},r=My(t),i=Ay(t),a=e=>({...n,...e,...r?{operationFrame:r}:{},...i?{reviewCardFrame:i}:{}}),o=(e,t)=>a({interaction:e,reason:t,canApply:!1}),s=t.action_kind===`goal.lifecycle`;if(s&&t.gate!=null||t.status===`gated`)return o(`gated`,`authority_gate`);if(s&&t.stale!=null||t.status===`stale`)return o(`refresh`,`stale_proposal`);if(t.status===`applied`)return Ty(t.receipt)?.projection_verified===!0&&(t.action_kind!==`operation.execute`||Ty(Ty(t.operation)?.result_delivery)!==null)?o(`completed`,`readback_verified`):o(`repair`,`readback_unverified`);if(t.status===`applying`)return o(`pending`,`apply_pending`);if(t.status===`failed`||t.error!=null)return o(`repair`,`apply_failed`);if(t.status!==`preview_ready`&&t.status!==`deferred`)return o(`inactive`,`inactive_proposal`);let c=(e,t=!0)=>a({interaction:`review`,reason:e,canApply:t});if(t.action_kind!==`goal.lifecycle`)return c(t.permission_classification===`protected`?`protected_action`:`action_review`);let l=t.validation_evidence,u=t.available_transitions;if(!(Ey(t.proposal_id)!==null&&Ey(t.expected_state_fingerprint)!==null&&Array.isArray(l)&&l.length>0&&l.every(e=>Ey(e)!==null)&&Array.isArray(u)&&u.includes(`apply`)))return o(`refresh`,`incomplete_proposal`);let d=Ty(t.normalized_parameters),f=Ty(t.context),p=d?.operation,m=Ey(d?.goal_id);if(!m||f?.goal_id!=null&&f.goal_id!==m)return o(`refresh`,`incomplete_proposal`);if(p!==`stop`&&p!==`resume`&&p!==`delete`)return c(`unknown_action`,!1);if(t.permission_classification===`protected`)return c(`protected_action`);if(t.permission_classification!==`durable_write`)return c(`unknown_permission`,!1);let h=wy[p];return h===`ready_stop`&&t.status===`preview_ready`?a({interaction:`direct`,reason:h,canApply:!0}):c(h===`ready_stop`?`action_review`:h)}function Py(e){return e.error_code===`action_stale`||e.error_code===`action_conflict`||Ty(e.proposal)?.status===`stale`}function Fy(e){return typeof e==`object`&&e?e:{}}function Iy(e){return typeof e==`string`?e:``}function Ly(e,t){let n=Fy(e.plan),r=[],i=Iy(e.goal_id)||Iy(n.goal_id);i&&r.push({key:`goal_id`,label:t(`proposal.field.goalId`),value:i});let a=Iy(n.objective);a&&r.push({key:`objective`,label:t(`proposal.field.objective`),value:a}),(Array.isArray(n.lanes)?n.lanes:[]).forEach((e,n)=>{let i=Fy(e),a=Iy(i.lane_id)||`lane-${n+1}`,o=Iy(i.agent_id),s=Iy(i.acceptance);if(Iy(i.staffing)===`gap`){let e=Fy(i.declined_first_todo);r.push({key:`lane_${a}`,label:o||a,value:[t(`proposal.teamPlan.gapLane`),Iy(i.gap_reason_code),Iy(e.text)].filter(Boolean).join(` · `)});return}let c=Fy(i.first_todo),l=[Iy(c.priority),Iy(c.action_kind),Iy(c.text)].filter(Boolean).join(` · `);r.push({key:`lane_${a}`,label:o||a,value:[l||t(`proposal.teamPlan.laneUnstaffed`),s?`${t(`proposal.teamPlan.acceptanceShort`)}: ${s}`:``].filter(Boolean).join(` · `)})});let o=Array.isArray(n.gaps)?n.gaps:[];o.length>0&&r.push({key:`lane_gaps`,label:t(`proposal.field.laneGaps`),value:o.map(e=>{let t=Fy(e);return[Iy(t.lane_id),Iy(t.reason_code)].filter(Boolean).join(`: `)}).filter(Boolean).join(` · `)});let s=Fy(n.quota_envelope),c=Object.entries(s);c.length>0&&r.push({key:`quota_envelope`,label:t(`proposal.field.quotaEnvelope`),value:c.map(([e,t])=>`${e}: ${String(t??``)}`).join(` · `)+` · ${t(`proposal.teamPlan.advisory`)}`});let l=Iy(n.stop_condition);return l&&r.push({key:`stop_condition`,label:t(`proposal.field.stopCondition`),value:`${l} · ${t(`proposal.teamPlan.advisory`)}`}),r}function Ry(e){let t=Fy(e.plan);return Array.isArray(t.lanes)?t.lanes.length:0}function zy(e){let t=Fy(e.plan);return Iy(e.goal_id)||Iy(t.goal_id)}function By(e){let t=Fy(e);return(Array.isArray(t.gap_lanes)?t.gap_lanes:[]).map(e=>{let t=Fy(e);return{laneId:Iy(t.lane_id),agentId:Iy(t.agent_id),reasonCode:Iy(t.reason_code)}}).filter(e=>e.laneId.length>0)}function Vy(e,t){return e===`agent_not_registered`?t(`proposal.teamPlan.gapReason.agentNotRegistered`):e===`action_kind_not_supported`?t(`proposal.teamPlan.gapReason.actionKindNotSupported`):e}function Hy(e,t){return t(`proposal.teamPlan.appliedGapLane`,{lane:e.laneId,agent:e.agentId||e.laneId,reason:Vy(e.reasonCode,t)})}function Uy(e){let t=Fy(e),n=Iy(t.outcome),r=Array.isArray(t.lanes)?t.lanes.length:0,i=typeof t.gap_count==`number`?t.gap_count:0;return n===`team_plan_partially_applied`?{kind:`partially_applied`,created:r,gaps:i}:n===`team_plan_lanes_already_present`||n===`team_plan_commit_recovered`?{kind:`already_present`,created:r,gaps:i}:n===`team_plan_applied`?{kind:`applied`,created:r,gaps:i}:null}function Wy(e,t){return e?.kind===`partially_applied`?t(`proposal.teamPlan.appliedPartially`,{created:String(e.created),gaps:String(e.gaps)}):e?.kind===`already_present`?t(`proposal.teamPlan.appliedAlreadyPresent`):t(e?.kind===`applied`?`proposal.teamPlan.applied`:`drawer.proposalApplied`)}function Gy(e){return{blockingTodoCount:e.blockingTodoCount,goalNotifications:e.goalNotifications,goals:e.goals,openUserTodoCount:e.openUserTodoCount,systemHealth:e.systemHealth,attentionHistory:e.attentionHistory,userTodos:e.userTodos,workers:e.workers}}function Ky(e,t){return e.goals.find(e=>e.goalId===t)?.title??t}function qy(e){return e.activationState===`stopped`||e.state===`已停止`?`stopped`:e.state===`已完成`?`history`:e.needsYou||e.state===`等你`?`needs_you`:e.state===`推进中`||e.state===`需修复`?`running`:e.state===`安静运行`?`observing`:`scheduled`}function Jy(e){let t=e;return t>=1e6?`${(t/1e6).toFixed(1)}M`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function Yy(e){return`$${e.toFixed(2)}`}function Xy(e){let t=e;return t>=36e5?`${(t/36e5).toFixed(1)}h`:t>=6e4?`${(t/6e4).toFixed(1)}m`:t>=1e3?`${Math.round(t/1e3)}s`:`${t}ms`}function Zy(e,t,n){return e==null?t:n(e)}function Qy(e){return!!(e&&[e.tokens24h,e.tokens7d,e.costUsd24h,e.costUsd7d,e.durationMs24h,e.durationMs7d].some(e=>e!=null))}function $y(e,t){if(!Qy(e))return null;let n=(e,n,r,i)=>{let a=[n==null?null:`${Jy(n)} ${t.tokens}`,r==null?null:`${t.cost}: ${Yy(r)}`,i==null?null:`${t.duration}: ${Xy(i)}`].filter(e=>e!==null);return a.length?`${e} ${a.join(` · `)}`:null};return n(t.period7d,e.tokens7d,e.costUsd7d,e.durationMs7d)??n(t.period24h,e.tokens24h,e.costUsd24h,e.durationMs24h)}function eb({ariaLabel:e,className:t,icon:n,onChange:r,options:i,prefixLabel:a,value:o}){let s=(0,z.useId)(),c=(0,z.useRef)(null),l=(0,z.useRef)(null),u=(0,z.useRef)(new Map),[d,f]=(0,z.useState)(!1),[p,m]=(0,z.useState)(o),h=i.find(e=>e.value===o)??i[0],g=i.filter(e=>!e.disabled);(0,z.useEffect)(()=>{if(!d)return;let e=e=>{c.current?.contains(e.target)||f(!1)};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[d]),(0,z.useEffect)(()=>{d&&u.current.get(p)?.focus()},[p,d]);function _(e){m(e)}function v(e=`selected`){let t=e===`last`?g.at(-1):g[0],n=e===`selected`&&h&&!h.disabled?h:t;n&&(f(!0),_(n.value))}function y({restoreFocus:e=!1}={}){f(!1),e&&l.current?.focus()}function b(e){e.disabled||(r(e.value),y({restoreFocus:!0}))}function x(e){if(!g.length)return;let t=g.findIndex(e=>e.value===p),n=t<0?0:(t+e+g.length)%g.length;_(g[n].value)}function S(e){e.key===`ArrowDown`||e.key===`Enter`||e.key===` `?(e.preventDefault(),v(`selected`)):e.key===`ArrowUp`&&(e.preventDefault(),v(`last`))}function C(e,t){if(e.key===`ArrowDown`)e.preventDefault(),x(1);else if(e.key===`ArrowUp`)e.preventDefault(),x(-1);else if(e.key===`Home`)e.preventDefault(),g[0]&&_(g[0].value);else if(e.key===`End`){e.preventDefault();let t=g.at(-1);t&&_(t.value)}else e.key===`Enter`||e.key===` `?(e.preventDefault(),b(t)):e.key===`Escape`?(e.preventDefault(),y({restoreFocus:!0})):e.key===`Tab`&&y()}let w;return(0,B.jsxs)(`div`,{className:`personal-select${t?` ${t}`:``}`,ref:c,children:[(0,B.jsxs)(`button`,{"aria-controls":s,"aria-expanded":d,"aria-haspopup":`listbox`,"aria-label":e,className:`personal-select-trigger`,"data-value":o,onClick:()=>d?y():v(),onKeyDown:S,ref:l,role:`combobox`,type:`button`,children:[n?(0,B.jsx)(`span`,{className:`personal-select-icon`,children:n}):null,(0,B.jsxs)(`span`,{className:`personal-select-value`,children:[a?(0,B.jsx)(`small`,{children:a}):null,(0,B.jsx)(`span`,{children:h?.label??o})]}),(0,B.jsx)(om,{"aria-hidden":!0,className:d?`is-open`:void 0,size:14})]}),d?(0,B.jsx)(`div`,{"aria-label":e,className:`personal-select-listbox`,id:s,role:`listbox`,children:i.map(e=>{let t=e.group&&e.group!==w;return w=e.group,(0,B.jsxs)(`div`,{className:`personal-select-option-wrap`,children:[t?(0,B.jsx)(`div`,{className:`personal-select-group-label`,children:e.group}):null,(0,B.jsxs)(`button`,{"aria-disabled":e.disabled||void 0,"aria-selected":e.value===o,className:`personal-select-option`,disabled:e.disabled,id:`${s}-${e.value.replace(/[^a-z0-9_-]/gi,`-`)}`,onClick:()=>b(e),onFocus:()=>m(e.value),onKeyDown:t=>C(t,e),ref:t=>{t?u.current.set(e.value,t):u.current.delete(e.value)},role:`option`,tabIndex:e.value===p?0:-1,type:`button`,children:[(0,B.jsx)(`span`,{children:e.label}),e.value===o?(0,B.jsx)(am,{"aria-hidden":!0,size:15}):null]})]},e.value)})}):null]})}function tb({agents:e,managerChannelBinding:t,managerChatOpen:n,managerRuntime:r,mobileNavigationOpen:i,onOpenGoalCapabilities:a,onOpenGoalDetail:o,onOpenManagerChat:s,onRefresh:c,onOpenNavigation:l,onSelectGoalTab:u,onSelectAgent:d,onReturnManagerHome:f,refreshState:p,readOnlySourceLabel:m,selectedAgentId:h,selectedGoal:g,selectedGoalTab:_}){let{locale:v,t:y}=Ji(),[b,x]=(0,z.useState)(!1),S=(0,z.useRef)(null),C=(0,z.useRef)(null);(0,z.useEffect)(()=>{if(!b)return;function e(e){C.current?.contains(e.target)||x(!1)}function t(e){e.key===`Escape`&&(x(!1),S.current?.focus())}return document.addEventListener(`pointerdown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`pointerdown`,e),document.removeEventListener(`keydown`,t)}},[b]),(0,z.useEffect)(()=>x(!1),[g?.goalId]);function w(e){x(!1),e?.()}let T=g?$y(g.usage,{cost:y(`drawer.costShort`),duration:y(`drawer.durationShort`),period24h:y(`drawer.period24h`),period7d:y(`drawer.period7d`),tokens:y(`drawer.tokensShort`)}):null,E=t?t.executor_kind===`individual`?y(`header.managerExecutorKindIndividual`):t.executor_kind===`managed`?y(`header.managerExecutorKindManaged`):y(`header.managerExecutorKindRegistered`):null,D=t?.available===!1,O=t?.available===!1?t.unavailable_reason:null,k=O===`operator_credential_unconfigured`?`header.managerExecutionUnavailableCredential`:O===`dsh_runtime_unavailable`?`header.managerExecutionUnavailableRuntime`:O===`invalid_reasoning_effort`?`header.managerExecutionUnavailableEffort`:`header.managerExecutionUnavailable`,ee=t&&t.executor_endpoint_source===`product_default`&&t.executor_endpoint_default_reason===`steward_channel_default`?`header.managerEndpointStewardDefault`:null;return(0,B.jsxs)(`header`,{className:`personal-channel-header`,children:[(0,B.jsx)(`button`,{"aria-expanded":i??!1,"aria-label":y(`header.openGoalNavigation`),className:`personal-icon-button personal-mobile-menu`,onClick:l,type:`button`,children:(0,B.jsx)(jm,{size:18})}),(0,B.jsxs)(`div`,{className:`personal-channel-title`,children:[(0,B.jsx)(`h1`,{children:g?.title??y(`header.manager`)}),!g&&r?(0,B.jsx)(`p`,{children:r.status===`ready`?y(`header.managerRuntime`,{profile:r.runtime_profile,sandbox:r.sandbox}):y(`header.managerRuntimeFallback`,{profile:r.runtime_profile,sandbox:r.sandbox})}):null,!g&&t?(0,B.jsxs)(`p`,{className:`personal-manager-execution`,children:[(0,B.jsxs)(`span`,{className:D?`personal-execution-chip is-unavailable`:`personal-execution-chip`,children:[(0,B.jsx)(`span`,{className:`personal-execution-chip-endpoint`,children:t.executor_endpoint}),E?(0,B.jsx)(`span`,{className:`personal-execution-chip-kind`,children:E}):null,(0,B.jsx)(`span`,{className:`personal-execution-chip-model`,children:t.model})]}),D?(0,B.jsx)(`span`,{className:`personal-execution-note`,children:y(k,{executor:t.executor_endpoint,credential:t.credential_env_var})}):null,ee?(0,B.jsx)(`span`,{className:`personal-execution-rule-note`,children:y(ee,{executor:t.executor_endpoint})}):null]}):null,g?(0,B.jsx)(`p`,{children:g.loadState?y(g.loadState===`error`?`startup.goalError`:`startup.goalLoading`):`${g.agentLaneCount&&g.agentLaneCount>1?y(`header.workAgentCount`,{count:g.agentLaneCount}):g.agentLabel??g.agentId} · ${g.loadState?y(g.loadState===`error`?`startup.goalError`:`startup.goalLoading`):Yi(g.state,v)}${T?` · ${T}`:``} · ${g.nextSentence}`}):null]}),g?(0,B.jsxs)(`nav`,{"aria-label":y(`header.goalView`),className:`personal-goal-tabs`,children:[(0,B.jsx)(`button`,{"aria-current":_===`chat`?`page`:void 0,onClick:()=>u(`chat`),type:`button`,children:y(`header.chat`)}),(0,B.jsx)(`button`,{"aria-current":_===`tasks`?`page`:void 0,onClick:()=>u(`tasks`),type:`button`,children:y(`header.tasks`)}),(0,B.jsx)(`button`,{"aria-current":_===`files`?`page`:void 0,onClick:()=>u(`files`),type:`button`,children:y(`header.files`)})]}):(0,B.jsxs)(`nav`,{"aria-label":y(`header.managerView`),className:`personal-goal-tabs`,children:[(0,B.jsx)(`button`,{"aria-current":n?void 0:`page`,onClick:f,type:`button`,children:y(`header.managerOverview`)}),(0,B.jsx)(`button`,{"aria-current":n?`page`:void 0,onClick:s,type:`button`,children:y(`header.chat`)})]}),(0,B.jsxs)(`div`,{className:`personal-channel-actions`,children:[g&&o&&a?(0,B.jsxs)(`div`,{className:`personal-goal-tools`,ref:C,children:[(0,B.jsxs)(`button`,{"aria-expanded":b,"aria-haspopup":`menu`,"aria-label":y(`header.goalSettingsDescription`),className:`personal-goal-tools-trigger`,onClick:()=>x(e=>!e),ref:S,title:y(`header.goalSettingsDescription`),type:`button`,children:[(0,B.jsx)(Zm,{"aria-hidden":!0,size:16}),(0,B.jsx)(`span`,{children:y(`header.goalSettings`)}),(0,B.jsx)(om,{"aria-hidden":!0,size:13})]}),b?(0,B.jsxs)(`fieldset`,{"aria-label":y(`header.goalSettings`),className:`personal-goal-tools-menu`,children:[(0,B.jsxs)(`button`,{onClick:()=>w(o),type:`button`,children:[(0,B.jsx)(wm,{"aria-hidden":!0,size:17}),(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:y(`header.goalDetails`)})})]}),(0,B.jsxs)(`button`,{onClick:()=>w(a),type:`button`,children:[(0,B.jsx)(Zm,{"aria-hidden":!0,size:17}),(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:y(`header.goalCapabilities`)})})]})]}):null]}):null,m?(0,B.jsxs)(`span`,{className:`personal-read-only-source`,title:y(`header.readOnlySourceDescription`,{source:m}),children:[(0,B.jsx)(vm,{size:15}),m,(0,B.jsx)(`small`,{children:y(`common.readOnly`)})]}):(0,B.jsx)(eb,{ariaLabel:y(`header.selectChatRuntime`),className:`personal-agent-select`,icon:(0,B.jsx)(nm,{size:16}),onChange:d,options:e.map(e=>({disabled:!e.available,label:`${e.label}${e.available?``:` · ${y(`header.agentUnavailable`)}`}`,value:e.agentId})),prefixLabel:y(`header.chatRuntime`),value:h}),(0,B.jsxs)(`span`,{className:`personal-live-indicator`,children:[(0,B.jsx)(`i`,{}),y(`header.live`)]}),c?(0,B.jsxs)(`span`,{className:`personal-refresh-control is-${p??`idle`}`,children:[p===`loading`?(0,B.jsx)(`small`,{children:y(`header.refreshing`)}):p===`done`?(0,B.jsx)(`small`,{children:y(`header.refreshDone`)}):p===`error`?(0,B.jsx)(`small`,{children:y(`header.refreshFailed`)}):null,(0,B.jsx)(`button`,{"aria-label":y(p===`loading`?`header.refreshing`:`header.refresh`),className:`personal-icon-button`,disabled:p===`loading`,onClick:c,type:`button`,children:(0,B.jsx)(Hm,{className:p===`loading`?`is-spinning`:void 0,size:17})})]}):null]})]})}function nb({attention:e,onSelect:t}){let{t:n}=Ji(),r=Zi(e.updatedAt,n);return(0,B.jsxs)(`button`,{className:`personal-timeline-row personal-attention-row`,"data-testid":`personal-browse-row`,onClick:t,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-row-icon is-attention`,children:(0,B.jsx)(lm,{size:18})}),(0,B.jsxs)(`span`,{className:`personal-row-copy`,children:[(0,B.jsxs)(`small`,{children:[e.goalTitle??e.goalId,` · `,n(`home.lane.needsYou`),r?` · ${n(`tasks.waitingAge`,{age:r})}`:``]}),(0,B.jsx)(`strong`,{children:e.text})]}),(0,B.jsx)(`span`,{className:`personal-priority-dot is-${e.priority??(e.blocking?`high`:`medium`)}`}),(0,B.jsx)(`span`,{className:`personal-row-status ${e.blocking?`is-blocking`:`is-pending`}`,children:e.blocking?n(`tasks.blocked`):n(`tasks.pending`)}),(0,B.jsx)(sm,{size:17})]})}var rb=/(`[^`\n]+`)|(\*\*[^*\n]+(\*[^*\n]*)?\*\*)|(\[[^\]\n]{1,120}\]\(https?:\/\/[^)\s]+\))/g;function ib(e,t){let n=[],r=0,i=0;for(let a of e.matchAll(rb)){let o=a.index??0;o>r&&n.push(e.slice(r,o));let s=a[0],c=`${t}-i${i++}`;if(s.startsWith("`"))n.push((0,B.jsx)(`code`,{className:`personal-md-code`,children:s.slice(1,-1)},c));else if(s.startsWith(`**`))n.push((0,B.jsx)(`strong`,{children:s.slice(2,-2)},c));else{let e=s.indexOf(`](`),t=s.slice(1,e),r=s.slice(e+2,-1);n.push((0,B.jsx)(`a`,{className:`personal-md-link`,href:r,rel:`noreferrer`,target:`_blank`,children:t},c))}r=o+s.length}return r=4))throw e;await new Promise(e=>globalThis.setTimeout(e,250*2**(i-1)))}}if(!a)throw new Fh(`Agent 事件流连接已断开。`,{reconnect_attempts:i})}async function rg(e,t){return Kh(`/api/chat/sessions/${e}/turns/${t}/interrupt`,{method:`POST`,body:`{}`})}async function ig(e,t,n={}){let r=await eg(e,t,n.clientTurnId??crypto.randomUUID(),n.attachments);return n.onPhase?.(`turn.accepted`,r.turn_id),ag(e,r.turn_id,r.events_url,n)}async function ag(e,t,n,r={}){let i=null,a={failure:null,interrupted:null};try{await ng(n,e=>{r.onPhase?.(e.kind,t),(e.kind===`answer.delta`||e.kind===`assistant.delta`)&&r.onDelta?.(String(e.payload.text??``)),e.kind===`agent.phase`&&r.onActivity?.(String(e.payload.label??`Agent 正在处理`)),e.kind===`turn.completed`&&(i=e.payload.response),e.kind===`turn.failed`&&(a.failure=e.payload),e.kind===`turn.interrupted`&&(a.interrupted=e.payload)},r.signal)}catch(i){throw i instanceof Fh&&!r.signal?.aborted?new Fh(i.message,{...i.payload,events_url:n,reconnectable:!0,session_id:e,turn_id:t}):i}if(a.failure)throw new Fh(String(a.failure.message||`Agent 回合失败。`),a.failure);if(a.interrupted)throw new Fh(`Agent 回合已中断。`,{...a.interrupted,error_code:`turn_interrupted`,session_id:e,turn_id:t});return{response:kh.parse(i),sessionId:e,turnId:t}}async function og(e,t,n={}){return ag(e,t,`/api/chat/sessions/${e}/turns/${t}/events`,n)}async function sg(e){let t=Ah.parse(await Kh(`/api/chat/sessions/${e}`,{keepalive:!0,method:`DELETE`}));if(t.session_id!==e)throw new Fh(`Agent 会话关闭回执与本次请求不一致。`,{session_id:t.session_id});return t}async function cg(e){return Kh(`/api/chat/sessions/${e}/resume`,{method:`POST`,body:`{}`})}function lg(e){return{goal_id:e.goalId,enabled:e.enabled,...e.modelConfig===void 0?{}:{model_config:e.modelConfig},...e.enabled?{max_children:e.maxChildren,allowed_domains:e.allowedDomains}:{}}}function ug(e,t){let n=e.after.orchestration,r=[...new Set(t.allowedDomains)],i=e.feature_summary.multi_subagent===`enabled`;if(!(e.goal_id===t.goalId&&i===t.enabled&&(t.modelConfig===void 0||JSON.stringify(n.model_config??null)===JSON.stringify(t.modelConfig))&&(t.enabled?n.max_children===t.maxChildren&&JSON.stringify(n.allowed_domains)===JSON.stringify(r):n.spawn_allowed===!1&&n.max_children===0)))throw new Fh(`Goal 子代理配置回执与本次请求不一致,界面已停止更新。`,{after:e.after,goal_id:e.goal_id});return e}async function dg(e){let t=Nh.parse(await Kh(`/api/chat/goal-subagents/dry-run`,{method:`POST`,body:JSON.stringify(lg(e))}));if(!t.dry_run||t.execute||t.written)throw new Fh(`Goal 子代理预览返回了非预览回执,已停止进入确认状态。`,{result:t});return ug(t,e)}async function fg(e,t){let n=Nh.parse(await Kh(`/api/chat/goal-subagents/apply`,{method:`POST`,body:JSON.stringify({...lg(e),preview_id:t})}));if(n.preview_id!==t||n.dry_run||!n.execute)throw new Fh(`Goal 子代理写入回执与本次确认不一致,界面已停止更新。`,{result:n});if(n.changed&&(!n.written||!n.global_sync.executed||!n.global_sync.readback.verified))throw new Fh(`Goal 子代理设置未通过共享状态读回验证。`,{result:n});return ug(n,e)}var pg=J({ok:X(!0),targets:q(J({enabled:K(),provider:W(),target_name:W()}))});async function mg(){return pg.parse(await Kh(`/api/chat/goal-channel/targets`)).targets}var hg=J({ok:K(),blocker:W().optional(),public_summary:W().optional(),status:W().optional()});async function gg(e){return hg.parse(await Kh(`/api/chat/goal-channel/setup`,{method:`POST`,body:JSON.stringify({execute:e.execute,goal_id:e.goalId,target:e.target})}))}async function _g(e){return hg.parse(await Kh(`/api/chat/goal-channel/configure`,{method:`POST`,body:JSON.stringify({auto_notify_human_gates:e.autoNotify,goal_id:e.goalId})}))}var vg=J({schema_version:X(`periodic_report_schedule_v0`),schedule_id:W(),rrule:W(),timezone:W()});J({schema_version:X(`periodic_report_machine_defaults_v0`),enabled:K(),inheritance:X(`live_machine_default`),profile_preset:W().optional(),route_ref:W().optional(),timezone:W(),schedule:vg.nullable().optional()});var yg=J({schema_version:X(`loopx_machine_configuration_v0`),namespaces:yd(W(),yd(W(),ad()))}),bg=J({namespace:W(),title:W(),description:W(),schema_versions:q(W()).min(1),configuration_template:yd(W(),ad()),template_status:Y([`ready`,`schema_only`])}),xg=J({schema_version:X(`machine_configuration_catalog_v0`),namespaces:q(bg)}),Sg=J({key:W(),label:W(),description:W(),input_kind:Y([`boolean`,`number`,`select`,`string_list`,`text`,`periodic_report_schedule`]),nullable:K().optional(),required:K(),minimum:G().int().optional(),maximum:G().int().optional(),options:q(W()).optional()}),Cg=J({schema_version:X(`capability_configuration_editor_v0`),editable:K(),supported_scopes:q(Y([`goal`,`machine`])),writable_scopes:q(Y([`goal`,`machine`])),fields:q(Sg),read_only_reason:W().optional()}),wg=J({schema_version:X(`capability_configuration_catalog_v0`),capabilities:q(J({capability_id:W(),display_name:W(),description:W(),available_scopes:q(Y([`goal`,`machine`])),machine_namespace:W().optional(),goal_feature_id:W().optional(),effective_value_policy:X(`goal_override_over_live_machine_default`).optional(),availability:W().optional(),default:yd(W(),ad()).optional(),current:yd(W(),ad()).optional(),machine_current:yd(W(),ad()).optional(),effective_configuration:J({schema_version:X(`capability_configuration_resolution_v0`),capability_id:W(),source:Y([`goal_override`,`machine_default`,`capability_default`,`not_configured`]),configuration:yd(W(),ad()).nullable(),inherited:K(),goal_override_present:K(),machine_default_present:K(),effective_revision:W()}).optional(),documentation:yd(W(),ad()).optional(),context_contribution:J({supported_phases:q(Y([`before_plan`,`before_delegate`,`after_delegate_result`])),target:X(`coordinator`),activation:X(`with_capability`),receipt_required:X(!0)}).optional(),configuration_editor:Cg}))}),Tg=J({ok:X(!0),schema_version:X(`goal_configuration_inspection_v0`),status:X(`configured`),goal_id:W(),revision:W(),available_capabilities:q(W()),capability_catalog:wg}),Eg=J({ok:X(!0),goal_id:W(),capability_id:W(),changed_fields:q(W()),goal_configuration:yd(W(),ad()).nullable(),capability_catalog:wg}),Dg=Eg.extend({schema_version:X(`goal_configuration_update_plan_v0`),status:X(`preview`),action:Y([`create`,`update`,`delete`,`unchanged`]),current_revision:W(),desired_revision:W(),base_revision:W(),plan_revision:W(),writes_required:G().int().nonnegative()}),Og=dd([Eg.extend({schema_version:X(`goal_configuration_transaction_v0`),status:Y([`applied`,`unchanged`]),plan_revision:W(),applied_revision:W(),readback_verified:X(!0)}),J({ok:X(!1),schema_version:X(`goal_configuration_transaction_v0`),status:X(`partial_write`),goal_id:W(),capability_id:W(),plan_revision:W(),applied_revision:W().nullable(),source_written:X(!0),shared_sync_pending:X(!0),readback_verified:K(),changed_fields:q(W()),goal_configuration:yd(W(),ad()).nullable(),capability_catalog:wg,error:W(),recommended_action:W()})]),kg=J({ok:X(!0),available_namespaces:q(W()),namespace_catalog:xg.optional().default({schema_version:`machine_configuration_catalog_v0`,namespaces:[]}),capability_catalog:wg,changed_namespaces:q(W()).optional().default([]),invalid_namespaces:q(W()).optional().default([]),machine_configuration:yg.nullable().optional()}),Ag=kg.extend({schema_version:X(`machine_configuration_inspection_v0`),status:Y([`configured`,`absent`,`invalid`]),revision:W()}),jg=kg.extend({schema_version:X(`machine_configuration_update_plan_v0`),status:X(`preview`),action:Y([`create`,`update`,`delete`,`unchanged`]),current_revision:W(),desired_revision:W(),plan_revision:W(),writes_required:G().int().nonnegative(),machine_configuration:yg.nullable()}),Mg=kg.extend({schema_version:X(`machine_configuration_transaction_v0`),status:Y([`applied`,`unchanged`]),plan_revision:W(),transaction_id:W().nullable(),readback_verified:X(!0),rollback_available:K(),applied_revision:W().optional(),prior_revision:W().optional()}),Ng=kg.extend({schema_version:X(`machine_configuration_rollback_plan_v0`),status:X(`preview`),action:Y([`delete`,`restore`,`unchanged`,`blocked`]),reason:W(),transaction_id:W(),plan_revision:W(),rollback_allowed:K(),writes_required:G().int().nonnegative()}),Pg=kg.extend({schema_version:X(`machine_configuration_rollback_receipt_v0`),status:Y([`rolled_back`,`unchanged`]),transaction_id:W(),plan_revision:W(),rollback_id:W().nullable(),readback_verified:X(!0)}),Fg=J({configured:K(),source:Y([`machine_store`,`service_environment`,`unset`]),env_var:W().optional(),fingerprint:W().nullable().optional(),value:W().nullable().optional(),blocked_by:W().optional()}),Ig=J({ok:X(!0),schema_version:X(`operator_provider_credential_projection_v0`),action:W().optional(),store_ref:W(),store_revision:W(),record_present:K(),status:Y([`configured`,`absent`,`invalid`]),repair:W(),provider_key:Fg,base_url:Fg});async function Lg(){return Ig.parse(await Kh(`/api/chat/operator-credential`))}async function Rg(e){return Ig.parse(await Kh(`/api/chat/operator-credential`,{method:`POST`,body:JSON.stringify(e)}))}async function zg(){return Ag.parse(await Kh(`/api/chat/machine-configuration`))}async function Bg(e){let t=new URLSearchParams({goal_id:e});return Tg.parse(await Kh(`/api/chat/goal-configuration?${t.toString()}`))}async function Vg(e,t,n){return Dg.parse(await Kh(`/api/chat/goal-configuration/preview`,{method:`POST`,body:JSON.stringify({goal_id:e,capability_id:t,configuration:n})}))}async function Hg(e,t,n,r){return Og.parse(await Kh(`/api/chat/goal-configuration/apply`,{method:`POST`,body:JSON.stringify({goal_id:e,capability_id:t,configuration:n,expected_plan_revision:r})}))}async function Ug(e,t){return jg.parse(await Kh(`/api/chat/machine-configuration/preview`,{method:`POST`,body:JSON.stringify({namespace:e,namespace_configuration:t})}))}async function Wg(e,t,n){return Mg.parse(await Kh(`/api/chat/machine-configuration/apply`,{method:`POST`,body:JSON.stringify({expected_plan_revision:n,namespace:e,namespace_configuration:t})}))}async function Gg(e){return jg.parse(await Kh(`/api/chat/machine-configuration/preview`,{method:`POST`,body:JSON.stringify({namespace:e,operation:`remove`})}))}async function Kg(e,t){return Mg.parse(await Kh(`/api/chat/machine-configuration/apply`,{method:`POST`,body:JSON.stringify({expected_plan_revision:t,namespace:e,operation:`remove`})}))}async function qg(e){return Ng.parse(await Kh(`/api/chat/machine-configuration/rollback`,{method:`POST`,body:JSON.stringify({execute:!1,transaction_id:e})}))}async function Jg(e,t){return Pg.parse(await Kh(`/api/chat/machine-configuration/rollback`,{method:`POST`,body:JSON.stringify({execute:!0,expected_plan_revision:t,transaction_id:e})}))}var Yg=J({ok:X(!0),goals:q(J({goal_id:W(),repository:J({branch:W(),identity:W(),label:W(),read_only:X(!0)})}))});async function Xg(){return Yg.parse(await Kh(`/api/chat/goals/contexts`)).goals}var Zg=J({ok:X(!0),apps:q(J({active:K(),app_ref:W(),brand:W(),health_error_code:W().nullable().default(null),label:W(),ready:K(),reply_ready:K().default(!1)}))});async function Qg(){return Zg.parse(await Kh(`/api/chat/lark/apps`)).apps}var $g=J({ok:X(!0),app_ref:W(),error:W().nullable(),setup_id:W(),status:Y([`starting`,`waiting_for_feishu`,`ready`,`failed`,`cancelled`]),verification_url:W().url().nullable()});async function e_(e){return $g.parse(await Kh(`/api/chat/lark/app-setups`,{method:`POST`,body:JSON.stringify({app_ref:e.appRef,brand:e.brand})}))}async function t_(e){return $g.parse(await Kh(`/api/chat/lark/app-setups/${encodeURIComponent(e)}`))}async function n_(e){return $g.parse(await Kh(`/api/chat/lark/app-setups/${encodeURIComponent(e)}`,{method:`DELETE`}))}var r_=[`invalid_event`,`binding_unavailable`,`chat_mismatch`,`topic_mismatch`,`route_ambiguous`,`self_message`,`invalid_routing_state`,`not_addressed`],i_=J({ok:X(!0),chats:q(J({chat_id:W(),chat_name:W()}))});async function a_(e,t){let n=new URLSearchParams({app_ref:e});return t&&n.set(`query`,t),i_.parse(await Kh(`/api/chat/lark/chats?${n.toString()}`)).chats}var o_=J({ok:X(!0),connections:q(J({conversation_kind:Y([`goal`,`manager`]).default(`goal`),agent_id:W().nullable().default(null),connection_id:W(),app_label:W(),app_ref:W(),capture_scope:Y([`addressed_only`,`configured_chat_all`]).default(`addressed_only`),chat_name:W(),enabled:K(),goal_id:W(),goal_title:W(),health_error_code:W().nullable().default(null),history_permission_guidance:J({action:X(`enable_application_scopes_and_publish`),api_document_url:W().url(),capability:X(`group_history_pagination`),identity:X(`bot`),required_scopes:_d([X(`im:message.group_msg`),X(`im:message.group_msg.include_bot:read`)]),schema_version:X(`lark_bot_group_history_permission_guidance_v0`)}).nullable().default(null),incoming_mode:Y([`mentions`,`all`]),ingress_mode:Y([`live_steering`,`session_queue`,`async_inbox`,`direct_session`]).default(`async_inbox`),event_count:G().int().nonnegative().default(0),last_event_reason:Y(r_).nullable().default(null).catch(null),last_event_status:W().nullable().default(null),listener_error_code:W().nullable().default(null),listener_status:Y([`starting`,`listening`,`retrying`,`stopped`]).nullable().default(null),replied_count:G().int().nonnegative().default(0),reply_ready:K().default(!1),reply_mode:X(`topic_reply`),session_bound:K().default(!1),target_ref:W(),topic_name:W(),topic_setup_required:K()}))});async function s_(){return o_.parse(await Kh(`/api/chat/lark/connections`)).connections}async function c_(e){return hg.parse(await Kh(`/api/chat/lark/connections`,{method:`POST`,body:JSON.stringify({...e.agentBindings?{agent_bindings:e.agentBindings.map(e=>({agent_id:e.agentId,app_ref:e.appRef}))}:{},...e.agentId?{agent_id:e.agentId}:{},...e.appRef?{app_ref:e.appRef}:{},...e.connectionId?{connection_id:e.connectionId}:{},conversation_kind:e.conversationKind??`goal`,capture_scope:e.captureScope,chat_id:e.chatId,chat_name:e.chatName,execute:e.execute,goal_id:e.goalId,incoming_mode:e.incomingMode,ingress_mode:e.ingressMode,reply_mode:e.replyMode})}))}async function l_(e,t){let n=new URLSearchParams({goal_id:e,connection_id:t});return hg.parse(await Kh(`/api/chat/lark/connections?${n.toString()}`,{method:`DELETE`}))}function u_(e){return{loadedUrl:null,projectionRevision:0,requestedUrl:e,selectionRevision:0,requestGeneration:0}}function d_(e,t){return e.selectionRevision+=1,e.requestedUrl=t,e.selectionRevision}function f_(e,t,n){if(n.background)return e.requestedUrl!==null||e.loadedUrl!==t?null:(e.requestGeneration+=1,{background:!0,projectionRevision:e.projectionRevision,selectionRevision:e.selectionRevision,url:t,generation:e.requestGeneration});let r=n.selectionRevision??e.selectionRevision+1;return n.selectionRevision!==void 0&&e.selectionRevision!==r?null:(e.selectionRevision=r,e.projectionRevision+=1,e.requestedUrl=t,e.requestGeneration+=1,{background:!1,projectionRevision:e.projectionRevision,selectionRevision:r,url:t,generation:e.requestGeneration})}function p_(e,t){return t.generation===e.requestGeneration&&e.projectionRevision===t.projectionRevision&&e.selectionRevision===t.selectionRevision}function m_(e,t){return p_(e,t)&&(!t.background||e.requestedUrl===null&&e.loadedUrl===t.url)}function h_(e,t,n){return t.get(e)===n}function g_(e,t,n,r){return e.filter(e=>h_(r(e),n,t))}function __(e,t,n){let r=new Set,i=[];for(let a of[...e,...t]){let e=n(a);e==null||r.has(e)||(r.add(e),i.push(a))}return i}var v_=[`runs_24h`,`runs_7d`,`quota_spend_slots_24h`,`quota_spend_slots_7d`,`automation_run_count_24h`,`automation_run_count_7d`,`progress_signal_run_count_24h`,`progress_signal_run_count_7d`],y_=[`input_tokens_24h`,`input_tokens_7d`,`output_tokens_24h`,`output_tokens_7d`,`cache_tokens_24h`,`cache_tokens_7d`,`cost_usd_24h`,`cost_usd_7d`,`duration_ms_24h`,`duration_ms_7d`],b_=[`accounting`,`decision`,`evidence`,`state`,`work`],x_={accounting:0,decision:0,evidence:0,state:0,work:0},S_={runs_24h:0,runs_7d:0,quota_spend_slots_24h:0,quota_spend_slots_7d:0,automation_run_count_24h:0,automation_run_count_7d:0,progress_signal_run_count_24h:0,progress_signal_run_count_7d:0};function C_(e,t){let n={...e};for(let r of v_)n[r]=(Number(e[r])||0)+(Number(t[r])||0);for(let r of y_)(e[r]!==void 0||t[r]!==void 0)&&(n[r]=(e[r]??0)+(t[r]??0));return n}function w_(e,t){return!e.length||t<=0?e:e.map(e=>({...e,project_share_24h:Math.round((Number(e.runs_24h)||0)/t*1e3)/1e3}))}function T_(e,t){let n={...e};for(let r of b_)n[r]=(e[r]??0)+(t[r]??0);return n}function E_(e){let t={events_24h:0,events_7d:0,by_class_24h:{...x_},by_class_7d:{...x_}};for(let n of e)t.events_24h+=n.events_24h,t.events_7d+=n.events_7d,t.by_class_24h=T_(t.by_class_24h,n.by_class_24h),t.by_class_7d=T_(t.by_class_7d,n.by_class_7d);return t}function D_(e,t,n){if(!e&&!t)return null;let r=g_(e?.goals??[],`active`,n,e=>e.goal_id),i=g_(t?.goals??[],`stopped`,n,e=>e.goal_id),a=__(r,i,e=>e.goal_id),o=E_(r),s=E_(i),c={events_24h:o.events_24h+s.events_24h,events_7d:o.events_7d+s.events_7d,by_class_24h:T_(o.by_class_24h,s.by_class_24h),by_class_7d:T_(o.by_class_7d,s.by_class_7d)};return{...e??t,goals:a,sample_run_count:(e?.sample_run_count??0)+(t?.sample_run_count??0),totals:c}}function O_(e,t,n){if(!e&&!t)return null;let r=__([...g_(e?.items??[],`active`,n,e=>e.goal_id),...g_(t?.items??[],`stopped`,n,e=>e.goal_id)],[],e=>`${e.goal_id}:${e.decision_kind??``}:${e.decision_at??``}`),i={decision_count:(e?.summary.decision_count??0)+(t?.summary.decision_count??0),stale_count:r.filter(e=>e.stale_by_age).length,rebase_required_count:(e?.summary.rebase_required_count??0)+(t?.summary.rebase_required_count??0),fresh_count:(e?.summary.fresh_count??0)+(t?.summary.fresh_count??0)};return{...e??t,items:r,sample_run_count:(e?.sample_run_count??0)+(t?.sample_run_count??0),summary:i}}function k_(e,t){return __([...e,...t].sort((e,t)=>t.generated_at.localeCompare(e.generated_at)),[],e=>`${e.goal_id}:${e.generated_at}:${e.classification??``}`)}function A_(e,t,n){let r=__(g_(e.items,`active`,n,e=>e.goal_id),g_(t.items,`stopped`,n,e=>e.goal_id),e=>e.goal_id);return{...e,item_count:r.length,items:r,needs_controller:r.filter(e=>e.waiting_on===`controller`).length,needs_codex:r.filter(e=>e.waiting_on===`codex`).length,needs_user_or_controller:r.filter(e=>[`user_or_controller`,`controller`].includes(e.waiting_on)).length,watching_external_evidence:r.filter(e=>e.waiting_on===`external_evidence`).length}}function j_(e){let t=e.todo_id?.trim()||``;return t?`${e.goal_id}:${t}`:`${e.goal_id}:synthetic:${e.role??``}:${e.index??``}:${e.text??``}`}function M_(e){let t={...S_};for(let n of e){for(let e of v_)t[e]+=Number(n[e])||0;for(let e of y_)n[e]!==void 0&&(t[e]=(t[e]??0)+n[e])}return t}function N_(e,t,n){if(!e&&!t)return null;let r=g_(e?.items??[],`active`,n,e=>e.goal_id),i=g_(t?.items??[],`stopped`,n,e=>e.goal_id),a=__(r,i,j_);return{...e??t,current_projected_count:r.length+i.length,items:a,rollout_event_count:a.reduce((e,t)=>e+(t.event_count??0),0),total_count:a.length}}function P_(e,t,n){if(!e&&!t)return null;let r=g_(e?.goals??[],`active`,n,e=>e.goal_id),i=g_(t?.goals??[],`stopped`,n,e=>e.goal_id),a=__(r,i,e=>e.goal_id),o=C_(M_(r),M_(i));return{...e??t,goals:w_(a,Number(o.runs_24h)||0),sample_run_count:(e?.sample_run_count??0)+(t?.sample_run_count??0),totals:o}}function F_(e,t,n){if(!e&&!t)return null;let r=(e?.agents??[]).filter(e=>e.goal_ids.some(e=>h_(e,n,`active`))||(e.current_todo?.goal_id?h_(e.current_todo.goal_id,n,`active`):!1)),i=(t?.agents??[]).filter(e=>e.goal_ids.some(e=>h_(e,n,`stopped`))||(e.current_todo?.goal_id?h_(e.current_todo.goal_id,n,`stopped`):!1)),a=__(r,i,e=>e.agent_id).map(e=>{let t=i.find(t=>t.agent_id===e.agent_id);return t?{...e,goal_ids:Array.from(new Set([...e.goal_ids??[],...t.goal_ids]))}:e});return{...e??t,agents:a,source_summary:(e??t)?.source_summary?{...(e??t).source_summary,projected_agent_count:a.length,registered_agent_count:new Set(a.map(e=>e.agent_id)).size}:(e??t)?.source_summary}}function I_(e,t,n){if(!e&&!t)return null;let r=__(g_(e?.goals??[],`active`,n,e=>e.goal_id),g_(t?.goals??[],`stopped`,n,e=>e.goal_id),e=>e.goal_id);return{...e??t,goals:r}}function L_(e,t){let n=t.goal_projection?.scope;if(n!==`active`&&n!==`stopped`)return t;let r=n,i=t.run_history.goals,a=e.run_history.goals,o=__(r===`active`?i:a.filter(e=>e.activation_state!==`stopped`),r===`stopped`?i:a.filter(e=>e.activation_state===`stopped`),e=>e.id),s=new Map(o.map(e=>[e.id,e.activation_state])),c=r===`active`?t:e,l=r===`stopped`?t:e,u=e.goal_projection?.registry_revision??null,d=t.goal_projection?.registry_revision??null,f=u===null||d===null||u===d;return{...e,agent_management_projection:F_(c.agent_management_projection,l.agent_management_projection,s),attention_queue:A_(c.attention_queue,l.attention_queue,s),decision_freshness_summary:O_(c.decision_freshness_summary,l.decision_freshness_summary,s),event_ledger_summary:D_(c.event_ledger_summary,l.event_ledger_summary,s),goal_channel_notification_projection:I_(c.goal_channel_notification_projection,l.goal_channel_notification_projection,s),goal_projection:{schema_version:`loopx_goal_projection_scope_v0`,...t.goal_projection,complete:f,projected_goal_count:o.length,registry_goal_count:t.goal_projection?.registry_goal_count??0,scope:`all`},run_history:{...e.run_history,goal_count:o.length,goals:o,recent_runs:k_(c.run_history.recent_runs,l.run_history.recent_runs),run_count:c.run_history.run_count+l.run_history.run_count},todo_index:N_(c.todo_index,l.todo_index,s),usage_summary:P_(c.usage_summary,l.usage_summary,s)}}function R_(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`){if(Array.isArray(e)){var i=e.length;for(t=0;ttypeof e==`boolean`?`${e}`:e===0?`0`:e,V_=z_,H_=(e,t)=>n=>{if(t?.variants==null)return V_(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=B_(t)||B_(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return V_(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},U_=(e,t)=>{let n=Array(e.length+t.length);for(let t=0;t({classGroupId:e,validator:t}),G_=(e=new Map,t=null,n)=>({nextPart:e,validators:t,classGroupId:n}),K_=`-`,q_=[],J_=`arbitrary..`,Y_=e=>{let t=Q_(e),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=e;return{getClassGroupId:e=>{if(e.startsWith(`[`)&&e.endsWith(`]`))return Z_(e);let n=e.split(K_);return X_(n,+(n[0]===``&&n.length>1),t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=r[e],i=n[e];return t?i?U_(i,t):t:i||q_}return n[e]||q_}}},X_=(e,t,n)=>{if(e.length-t===0)return n.classGroupId;let r=e[t],i=n.nextPart.get(r);if(i){let n=X_(e,t+1,i);if(n)return n}let a=n.validators;if(a===null)return;let o=t===0?e.join(K_):e.slice(t).join(K_),s=a.length;for(let e=0;ee.slice(1,-1).indexOf(`:`)===-1?void 0:(()=>{let t=e.slice(1,-1),n=t.indexOf(`:`),r=t.slice(0,n);return r?J_+r:void 0})(),Q_=e=>{let{theme:t,classGroups:n}=e;return $_(n,t)},$_=(e,t)=>{let n=G_();for(let r in e){let i=e[r];ev(i,n,r,t)}return n},ev=(e,t,n,r)=>{let i=e.length;for(let a=0;a{if(typeof e==`string`){nv(e,t,n);return}if(typeof e==`function`){rv(e,t,n,r);return}iv(e,t,n,r)},nv=(e,t,n)=>{let r=e===``?t:av(t,e);r.classGroupId=n},rv=(e,t,n,r)=>{if(ov(e)){ev(e(r),t,n,r);return}t.validators===null&&(t.validators=[]),t.validators.push(W_(n,e))},iv=(e,t,n,r)=>{let i=Object.entries(e),a=i.length;for(let e=0;e{let n=e,r=t.split(K_),i=r.length;for(let e=0;e`isThemeGetter`in e&&e.isThemeGetter===!0,sv=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,n=Object.create(null),r=Object.create(null),i=(i,a)=>{n[i]=a,t++,t>e&&(t=0,r=n,n=Object.create(null))};return{get(e){let t=n[e];if(t!==void 0)return t;if((t=r[e])!==void 0)return i(e,t),t},set(e,t){e in n?n[e]=t:i(e,t)}}},cv=`!`,lv=`:`,uv=[],dv=(e,t,n,r,i)=>({modifiers:e,hasImportantModifier:t,baseClassName:n,maybePostfixModifierPosition:r,isExternal:i}),fv=e=>{let{prefix:t,experimentalParseClassName:n}=e,r=e=>{let t=[],n=0,r=0,i=0,a,o=e.length;for(let s=0;si?a-i:void 0;return dv(t,l,c,u)};if(t){let e=t+lv,n=r;r=t=>t.startsWith(e)?n(t.slice(e.length)):dv(uv,!1,t,void 0,!0)}if(n){let e=r;r=t=>n({className:t,parseClassName:e})}return r},pv=e=>{let t=new Map;return e.orderSensitiveModifiers.forEach((e,n)=>{t.set(e,1e6+n)}),e=>{let n=[],r=[];for(let i=0;i0&&(r.sort(),n.push(...r),r=[]),n.push(a)):r.push(a)}return r.length>0&&(r.sort(),n.push(...r)),n}},mv=e=>({cache:sv(e.cacheSize),parseClassName:fv(e),sortModifiers:pv(e),postfixLookupClassGroupIds:hv(e),...Y_(e)}),hv=e=>{let t=Object.create(null),n=e.postfixLookupClassGroups;if(n)for(let e=0;e{let{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:i,sortModifiers:a,postfixLookupClassGroupIds:o}=t,s=[],c=e.trim().split(gv),l=``;for(let e=c.length-1;e>=0;--e){let t=c[e],{isExternal:u,modifiers:d,hasImportantModifier:f,baseClassName:p,maybePostfixModifierPosition:m}=n(t);if(u){l=t+(l.length>0?` `+l:l);continue}let h=!!m,g;if(h){g=r(p.substring(0,m));let e=g&&o[g]?r(p):void 0;e&&e!==g&&(g=e,h=!1)}else g=r(p);if(!g){if(!h){l=t+(l.length>0?` `+l:l);continue}if(g=r(p),!g){l=t+(l.length>0?` `+l:l);continue}h=!1}let _=d.length===0?``:d.length===1?d[0]:a(d).join(`:`),v=f?_+cv:_,y=v+g;if(s.indexOf(y)>-1)continue;s.push(y);let b=i(g,h);for(let e=0;e0?` `+l:l)}return l},vv=(...e)=>{let t=0,n,r,i=``;for(;t{if(typeof e==`string`)return e;let t,n=``;for(let r=0;r{let n,r,i,a,o=o=>(n=mv(t.reduce((e,t)=>t(e),e())),r=n.cache.get,i=n.cache.set,a=s,s(o)),s=e=>{let t=r(e);if(t)return t;let a=_v(e,n);return i(e,a),a};return a=o,(...e)=>a(vv(...e))},xv=[],Sv=e=>{let t=t=>t[e]||xv;return t.isThemeGetter=!0,t},Cv=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,wv=/^\((?:(\w[\w-]*):)?(.+)\)$/i,Tv=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,Ev=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Dv=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,Ov=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,kv=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Av=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,jv=e=>Tv.test(e),Mv=e=>!!e&&!Number.isNaN(Number(e)),Nv=e=>!!e&&Number.isInteger(Number(e)),Pv=e=>e.endsWith(`%`)&&Mv(e.slice(0,-1)),Fv=e=>Ev.test(e),Iv=()=>!0,Lv=e=>Dv.test(e)&&!Ov.test(e),Rv=()=>!1,zv=e=>kv.test(e),Bv=e=>Av.test(e),Vv=e=>!Q(e)&&!$(e),Hv=e=>e.startsWith(`@container`)&&(e[10]===`/`&&e[11]!==void 0||e[11]===`s`&&e[16]!==void 0&&e.startsWith(`-size/`,10)||e[11]===`n`&&e[18]!==void 0&&e.startsWith(`-normal/`,10)),Uv=e=>iy(e,cy,Rv),Q=e=>Cv.test(e),Wv=e=>iy(e,ly,Lv),Gv=e=>iy(e,uy,Mv),Kv=e=>iy(e,fy,Iv),qv=e=>iy(e,dy,Rv),Jv=e=>iy(e,oy,Rv),Yv=e=>iy(e,sy,Bv),Xv=e=>iy(e,py,zv),$=e=>wv.test(e),Zv=e=>ay(e,ly),Qv=e=>ay(e,dy),$v=e=>ay(e,oy),ey=e=>ay(e,cy),ty=e=>ay(e,sy),ny=e=>ay(e,py,!0),ry=e=>ay(e,fy,!0),iy=(e,t,n)=>{let r=Cv.exec(e);return r?r[1]?t(r[1]):n(r[2]):!1},ay=(e,t,n=!1)=>{let r=wv.exec(e);return r?r[1]?t(r[1]):n:!1},oy=e=>e===`position`||e===`percentage`,sy=e=>e===`image`||e===`url`,cy=e=>e===`length`||e===`size`||e===`bg-size`,ly=e=>e===`length`,uy=e=>e===`number`,dy=e=>e===`family-name`,fy=e=>e===`number`||e===`weight`,py=e=>e===`shadow`,my=bv(()=>{let e=Sv(`color`),t=Sv(`font`),n=Sv(`text`),r=Sv(`font-weight`),i=Sv(`tracking`),a=Sv(`leading`),o=Sv(`breakpoint`),s=Sv(`container`),c=Sv(`spacing`),l=Sv(`radius`),u=Sv(`shadow`),d=Sv(`inset-shadow`),f=Sv(`text-shadow`),p=Sv(`drop-shadow`),m=Sv(`blur`),h=Sv(`perspective`),g=Sv(`aspect`),_=Sv(`ease`),v=Sv(`animate`),y=()=>[`auto`,`avoid`,`all`,`avoid-page`,`page`,`left`,`right`,`column`],b=()=>[`center`,`top`,`bottom`,`left`,`right`,`top-left`,`left-top`,`top-right`,`right-top`,`bottom-right`,`right-bottom`,`bottom-left`,`left-bottom`],x=()=>[...b(),$,Q],S=()=>[`auto`,`hidden`,`clip`,`visible`,`scroll`],C=()=>[`auto`,`contain`,`none`],w=()=>[$,Q,c],T=()=>[jv,`full`,`auto`,...w()],E=()=>[Nv,`none`,`subgrid`,$,Q],D=()=>[`auto`,{span:[`full`,Nv,$,Q]},Nv,$,Q],O=()=>[Nv,`auto`,$,Q],k=()=>[`auto`,`min`,`max`,`fr`,$,Q],ee=()=>[`start`,`end`,`center`,`between`,`around`,`evenly`,`stretch`,`baseline`,`center-safe`,`end-safe`],te=()=>[`start`,`end`,`center`,`stretch`,`center-safe`,`end-safe`],A=()=>[`auto`,...w()],j=()=>[jv,`auto`,`full`,`dvw`,`dvh`,`lvw`,`lvh`,`svw`,`svh`,`min`,`max`,`fit`,...w()],M=()=>[jv,`screen`,`full`,`dvw`,`lvw`,`svw`,`min`,`max`,`fit`,...w()],ne=()=>[jv,`screen`,`full`,`lh`,`dvh`,`lvh`,`svh`,`min`,`max`,`fit`,...w()],N=()=>[e,$,Q],P=()=>[...b(),$v,Jv,{position:[$,Q]}],re=()=>[`no-repeat`,{repeat:[``,`x`,`y`,`space`,`round`]}],ie=()=>[`auto`,`cover`,`contain`,ey,Uv,{size:[$,Q]}],ae=()=>[Pv,Zv,Wv],F=()=>[``,`none`,`full`,l,$,Q],oe=()=>[``,Mv,Zv,Wv],I=()=>[`solid`,`dashed`,`dotted`,`double`],se=()=>[`normal`,`multiply`,`screen`,`overlay`,`darken`,`lighten`,`color-dodge`,`color-burn`,`hard-light`,`soft-light`,`difference`,`exclusion`,`hue`,`saturation`,`color`,`luminosity`],L=()=>[Mv,Pv,$v,Jv],ce=()=>[``,`none`,m,$,Q],le=()=>[`none`,Mv,$,Q],ue=()=>[`none`,Mv,$,Q],de=()=>[Mv,$,Q],fe=()=>[jv,`full`,...w()];return{cacheSize:500,theme:{animate:[`spin`,`ping`,`pulse`,`bounce`],aspect:[`video`],blur:[Fv],breakpoint:[Fv],color:[Iv],container:[Fv],"drop-shadow":[Fv],ease:[`in`,`out`,`in-out`],font:[Vv],"font-weight":[`thin`,`extralight`,`light`,`normal`,`medium`,`semibold`,`bold`,`extrabold`,`black`],"inset-shadow":[Fv],leading:[`none`,`tight`,`snug`,`normal`,`relaxed`,`loose`],perspective:[`dramatic`,`near`,`normal`,`midrange`,`distant`,`none`],radius:[Fv],shadow:[Fv],spacing:[`px`,Mv],text:[Fv],"text-shadow":[Fv],tracking:[`tighter`,`tight`,`normal`,`wide`,`wider`,`widest`]},classGroups:{aspect:[{aspect:[`auto`,`square`,jv,Q,$,g]}],container:[`container`],"container-type":[{"@container":[``,`normal`,`size`,$,Q]}],"container-named":[Hv],columns:[{columns:[Mv,Q,$,s]}],"break-after":[{"break-after":y()}],"break-before":[{"break-before":y()}],"break-inside":[{"break-inside":[`auto`,`avoid`,`avoid-page`,`avoid-column`]}],"box-decoration":[{"box-decoration":[`slice`,`clone`]}],box:[{box:[`border`,`content`]}],display:[`block`,`inline-block`,`inline`,`flex`,`inline-flex`,`table`,`inline-table`,`table-caption`,`table-cell`,`table-column`,`table-column-group`,`table-footer-group`,`table-header-group`,`table-row-group`,`table-row`,`flow-root`,`grid`,`inline-grid`,`contents`,`list-item`,`hidden`],sr:[`sr-only`,`not-sr-only`],float:[{float:[`right`,`left`,`none`,`start`,`end`]}],clear:[{clear:[`left`,`right`,`both`,`none`,`start`,`end`]}],isolation:[`isolate`,`isolation-auto`],"object-fit":[{object:[`contain`,`cover`,`fill`,`none`,`scale-down`]}],"object-position":[{object:x()}],overflow:[{overflow:S()}],"overflow-x":[{"overflow-x":S()}],"overflow-y":[{"overflow-y":S()}],overscroll:[{overscroll:C()}],"overscroll-x":[{"overscroll-x":C()}],"overscroll-y":[{"overscroll-y":C()}],position:[`static`,`fixed`,`absolute`,`relative`,`sticky`],inset:[{inset:T()}],"inset-x":[{"inset-x":T()}],"inset-y":[{"inset-y":T()}],start:[{"inset-s":T(),start:T()}],end:[{"inset-e":T(),end:T()}],"inset-bs":[{"inset-bs":T()}],"inset-be":[{"inset-be":T()}],top:[{top:T()}],right:[{right:T()}],bottom:[{bottom:T()}],left:[{left:T()}],visibility:[`visible`,`invisible`,`collapse`],z:[{z:[Nv,`auto`,$,Q]}],basis:[{basis:[jv,`full`,`auto`,s,...w()]}],"flex-direction":[{flex:[`row`,`row-reverse`,`col`,`col-reverse`]}],"flex-wrap":[{flex:[`nowrap`,`wrap`,`wrap-reverse`]}],flex:[{flex:[Mv,jv,`auto`,`initial`,`none`,Q]}],grow:[{grow:[``,Mv,$,Q]}],shrink:[{shrink:[``,Mv,$,Q]}],order:[{order:[Nv,`first`,`last`,`none`,$,Q]}],"grid-cols":[{"grid-cols":E()}],"col-start-end":[{col:D()}],"col-start":[{"col-start":O()}],"col-end":[{"col-end":O()}],"grid-rows":[{"grid-rows":E()}],"row-start-end":[{row:D()}],"row-start":[{"row-start":O()}],"row-end":[{"row-end":O()}],"grid-flow":[{"grid-flow":[`row`,`col`,`dense`,`row-dense`,`col-dense`]}],"auto-cols":[{"auto-cols":k()}],"auto-rows":[{"auto-rows":k()}],gap:[{gap:w()}],"gap-x":[{"gap-x":w()}],"gap-y":[{"gap-y":w()}],"justify-content":[{justify:[...ee(),`normal`]}],"justify-items":[{"justify-items":[...te(),`normal`]}],"justify-self":[{"justify-self":[`auto`,...te()]}],"align-content":[{content:[`normal`,...ee()]}],"align-items":[{items:[...te(),{baseline:[``,`last`]}]}],"align-self":[{self:[`auto`,...te(),{baseline:[``,`last`]}]}],"place-content":[{"place-content":ee()}],"place-items":[{"place-items":[...te(),`baseline`]}],"place-self":[{"place-self":[`auto`,...te()]}],p:[{p:w()}],px:[{px:w()}],py:[{py:w()}],ps:[{ps:w()}],pe:[{pe:w()}],pbs:[{pbs:w()}],pbe:[{pbe:w()}],pt:[{pt:w()}],pr:[{pr:w()}],pb:[{pb:w()}],pl:[{pl:w()}],m:[{m:A()}],mx:[{mx:A()}],my:[{my:A()}],ms:[{ms:A()}],me:[{me:A()}],mbs:[{mbs:A()}],mbe:[{mbe:A()}],mt:[{mt:A()}],mr:[{mr:A()}],mb:[{mb:A()}],ml:[{ml:A()}],"space-x":[{"space-x":w()}],"space-x-reverse":[`space-x-reverse`],"space-y":[{"space-y":w()}],"space-y-reverse":[`space-y-reverse`],size:[{size:j()}],"inline-size":[{inline:[`auto`,...M()]}],"min-inline-size":[{"min-inline":[`auto`,...M()]}],"max-inline-size":[{"max-inline":[`none`,...M()]}],"block-size":[{block:[`auto`,...ne()]}],"min-block-size":[{"min-block":[`auto`,...ne()]}],"max-block-size":[{"max-block":[`none`,...ne()]}],w:[{w:[s,`screen`,...j()]}],"min-w":[{"min-w":[s,`screen`,`none`,...j()]}],"max-w":[{"max-w":[s,`screen`,`none`,`prose`,{screen:[o]},...j()]}],h:[{h:[`screen`,`lh`,...j()]}],"min-h":[{"min-h":[`screen`,`lh`,`none`,...j()]}],"max-h":[{"max-h":[`screen`,`lh`,...j()]}],"font-size":[{text:[`base`,n,Zv,Wv]}],"font-smoothing":[`antialiased`,`subpixel-antialiased`],"font-style":[`italic`,`not-italic`],"font-weight":[{font:[r,ry,Kv]}],"font-stretch":[{"font-stretch":[`ultra-condensed`,`extra-condensed`,`condensed`,`semi-condensed`,`normal`,`semi-expanded`,`expanded`,`extra-expanded`,`ultra-expanded`,Pv,Q]}],"font-family":[{font:[Qv,qv,t]}],"font-features":[{"font-features":[Q]}],"fvn-normal":[`normal-nums`],"fvn-ordinal":[`ordinal`],"fvn-slashed-zero":[`slashed-zero`],"fvn-figure":[`lining-nums`,`oldstyle-nums`],"fvn-spacing":[`proportional-nums`,`tabular-nums`],"fvn-fraction":[`diagonal-fractions`,`stacked-fractions`],tracking:[{tracking:[i,$,Q]}],"line-clamp":[{"line-clamp":[Mv,`none`,$,Gv]}],leading:[{leading:[a,...w()]}],"list-image":[{"list-image":[`none`,$,Q]}],"list-style-position":[{list:[`inside`,`outside`]}],"list-style-type":[{list:[`disc`,`decimal`,`none`,$,Q]}],"text-alignment":[{text:[`left`,`center`,`right`,`justify`,`start`,`end`]}],"placeholder-color":[{placeholder:N()}],"text-color":[{text:N()}],"text-decoration":[`underline`,`overline`,`line-through`,`no-underline`],"text-decoration-style":[{decoration:[...I(),`wavy`]}],"text-decoration-thickness":[{decoration:[Mv,`from-font`,`auto`,$,Wv]}],"text-decoration-color":[{decoration:N()}],"underline-offset":[{"underline-offset":[Mv,`auto`,$,Q]}],"text-transform":[`uppercase`,`lowercase`,`capitalize`,`normal-case`],"text-overflow":[`truncate`,`text-ellipsis`,`text-clip`],"text-wrap":[{text:[`wrap`,`nowrap`,`balance`,`pretty`]}],indent:[{indent:w()}],"tab-size":[{tab:[Nv,$,Q]}],"vertical-align":[{align:[`baseline`,`top`,`middle`,`bottom`,`text-top`,`text-bottom`,`sub`,`super`,$,Q]}],whitespace:[{whitespace:[`normal`,`nowrap`,`pre`,`pre-line`,`pre-wrap`,`break-spaces`]}],break:[{break:[`normal`,`words`,`all`,`keep`]}],wrap:[{wrap:[`break-word`,`anywhere`,`normal`]}],hyphens:[{hyphens:[`none`,`manual`,`auto`]}],content:[{content:[`none`,$,Q]}],"bg-attachment":[{bg:[`fixed`,`local`,`scroll`]}],"bg-clip":[{"bg-clip":[`border`,`padding`,`content`,`text`]}],"bg-origin":[{"bg-origin":[`border`,`padding`,`content`]}],"bg-position":[{bg:P()}],"bg-repeat":[{bg:re()}],"bg-size":[{bg:ie()}],"bg-image":[{bg:[`none`,{linear:[{to:[`t`,`tr`,`r`,`br`,`b`,`bl`,`l`,`tl`]},Nv,$,Q],radial:[``,$,Q],conic:[Nv,$,Q]},ty,Yv]}],"bg-color":[{bg:N()}],"gradient-from-pos":[{from:ae()}],"gradient-via-pos":[{via:ae()}],"gradient-to-pos":[{to:ae()}],"gradient-from":[{from:N()}],"gradient-via":[{via:N()}],"gradient-to":[{to:N()}],rounded:[{rounded:F()}],"rounded-s":[{"rounded-s":F()}],"rounded-e":[{"rounded-e":F()}],"rounded-t":[{"rounded-t":F()}],"rounded-r":[{"rounded-r":F()}],"rounded-b":[{"rounded-b":F()}],"rounded-l":[{"rounded-l":F()}],"rounded-ss":[{"rounded-ss":F()}],"rounded-se":[{"rounded-se":F()}],"rounded-ee":[{"rounded-ee":F()}],"rounded-es":[{"rounded-es":F()}],"rounded-tl":[{"rounded-tl":F()}],"rounded-tr":[{"rounded-tr":F()}],"rounded-br":[{"rounded-br":F()}],"rounded-bl":[{"rounded-bl":F()}],"border-w":[{border:oe()}],"border-w-x":[{"border-x":oe()}],"border-w-y":[{"border-y":oe()}],"border-w-s":[{"border-s":oe()}],"border-w-e":[{"border-e":oe()}],"border-w-bs":[{"border-bs":oe()}],"border-w-be":[{"border-be":oe()}],"border-w-t":[{"border-t":oe()}],"border-w-r":[{"border-r":oe()}],"border-w-b":[{"border-b":oe()}],"border-w-l":[{"border-l":oe()}],"divide-x":[{"divide-x":oe()}],"divide-x-reverse":[`divide-x-reverse`],"divide-y":[{"divide-y":oe()}],"divide-y-reverse":[`divide-y-reverse`],"border-style":[{border:[...I(),`hidden`,`none`]}],"divide-style":[{divide:[...I(),`hidden`,`none`]}],"border-color":[{border:N()}],"border-color-x":[{"border-x":N()}],"border-color-y":[{"border-y":N()}],"border-color-s":[{"border-s":N()}],"border-color-e":[{"border-e":N()}],"border-color-bs":[{"border-bs":N()}],"border-color-be":[{"border-be":N()}],"border-color-t":[{"border-t":N()}],"border-color-r":[{"border-r":N()}],"border-color-b":[{"border-b":N()}],"border-color-l":[{"border-l":N()}],"divide-color":[{divide:N()}],"outline-style":[{outline:[...I(),`none`,`hidden`]}],"outline-offset":[{"outline-offset":[Mv,$,Q]}],"outline-w":[{outline:[``,Mv,Zv,Wv]}],"outline-color":[{outline:N()}],shadow:[{shadow:[``,`none`,u,ny,Xv]}],"shadow-color":[{shadow:N()}],"inset-shadow":[{"inset-shadow":[`none`,d,ny,Xv]}],"inset-shadow-color":[{"inset-shadow":N()}],"ring-w":[{ring:oe()}],"ring-w-inset":[`ring-inset`],"ring-color":[{ring:N()}],"ring-offset-w":[{"ring-offset":[Mv,Wv]}],"ring-offset-color":[{"ring-offset":N()}],"inset-ring-w":[{"inset-ring":oe()}],"inset-ring-color":[{"inset-ring":N()}],"text-shadow":[{"text-shadow":[`none`,f,ny,Xv]}],"text-shadow-color":[{"text-shadow":N()}],opacity:[{opacity:[Mv,$,Q]}],"mix-blend":[{"mix-blend":[...se(),`plus-darker`,`plus-lighter`]}],"bg-blend":[{"bg-blend":se()}],"mask-clip":[{"mask-clip":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]},`mask-no-clip`],"mask-composite":[{mask:[`add`,`subtract`,`intersect`,`exclude`]}],"mask-image-linear-pos":[{"mask-linear":[Mv]}],"mask-image-linear-from-pos":[{"mask-linear-from":L()}],"mask-image-linear-to-pos":[{"mask-linear-to":L()}],"mask-image-linear-from-color":[{"mask-linear-from":N()}],"mask-image-linear-to-color":[{"mask-linear-to":N()}],"mask-image-t-from-pos":[{"mask-t-from":L()}],"mask-image-t-to-pos":[{"mask-t-to":L()}],"mask-image-t-from-color":[{"mask-t-from":N()}],"mask-image-t-to-color":[{"mask-t-to":N()}],"mask-image-r-from-pos":[{"mask-r-from":L()}],"mask-image-r-to-pos":[{"mask-r-to":L()}],"mask-image-r-from-color":[{"mask-r-from":N()}],"mask-image-r-to-color":[{"mask-r-to":N()}],"mask-image-b-from-pos":[{"mask-b-from":L()}],"mask-image-b-to-pos":[{"mask-b-to":L()}],"mask-image-b-from-color":[{"mask-b-from":N()}],"mask-image-b-to-color":[{"mask-b-to":N()}],"mask-image-l-from-pos":[{"mask-l-from":L()}],"mask-image-l-to-pos":[{"mask-l-to":L()}],"mask-image-l-from-color":[{"mask-l-from":N()}],"mask-image-l-to-color":[{"mask-l-to":N()}],"mask-image-x-from-pos":[{"mask-x-from":L()}],"mask-image-x-to-pos":[{"mask-x-to":L()}],"mask-image-x-from-color":[{"mask-x-from":N()}],"mask-image-x-to-color":[{"mask-x-to":N()}],"mask-image-y-from-pos":[{"mask-y-from":L()}],"mask-image-y-to-pos":[{"mask-y-to":L()}],"mask-image-y-from-color":[{"mask-y-from":N()}],"mask-image-y-to-color":[{"mask-y-to":N()}],"mask-image-radial":[{"mask-radial":[$,Q]}],"mask-image-radial-from-pos":[{"mask-radial-from":L()}],"mask-image-radial-to-pos":[{"mask-radial-to":L()}],"mask-image-radial-from-color":[{"mask-radial-from":N()}],"mask-image-radial-to-color":[{"mask-radial-to":N()}],"mask-image-radial-shape":[{"mask-radial":[`circle`,`ellipse`]}],"mask-image-radial-size":[{"mask-radial":[{closest:[`side`,`corner`],farthest:[`side`,`corner`]}]}],"mask-image-radial-pos":[{"mask-radial-at":b()}],"mask-image-conic-pos":[{"mask-conic":[Mv]}],"mask-image-conic-from-pos":[{"mask-conic-from":L()}],"mask-image-conic-to-pos":[{"mask-conic-to":L()}],"mask-image-conic-from-color":[{"mask-conic-from":N()}],"mask-image-conic-to-color":[{"mask-conic-to":N()}],"mask-mode":[{mask:[`alpha`,`luminance`,`match`]}],"mask-origin":[{"mask-origin":[`border`,`padding`,`content`,`fill`,`stroke`,`view`]}],"mask-position":[{mask:P()}],"mask-repeat":[{mask:re()}],"mask-size":[{mask:ie()}],"mask-type":[{"mask-type":[`alpha`,`luminance`]}],"mask-image":[{mask:[`none`,$,Q]}],filter:[{filter:[``,`none`,$,Q]}],blur:[{blur:ce()}],brightness:[{brightness:[Mv,$,Q]}],contrast:[{contrast:[Mv,$,Q]}],"drop-shadow":[{"drop-shadow":[``,`none`,p,ny,Xv]}],"drop-shadow-color":[{"drop-shadow":N()}],grayscale:[{grayscale:[``,Mv,$,Q]}],"hue-rotate":[{"hue-rotate":[Mv,$,Q]}],invert:[{invert:[``,Mv,$,Q]}],saturate:[{saturate:[Mv,$,Q]}],sepia:[{sepia:[``,Mv,$,Q]}],"backdrop-filter":[{"backdrop-filter":[``,`none`,$,Q]}],"backdrop-blur":[{"backdrop-blur":ce()}],"backdrop-brightness":[{"backdrop-brightness":[Mv,$,Q]}],"backdrop-contrast":[{"backdrop-contrast":[Mv,$,Q]}],"backdrop-grayscale":[{"backdrop-grayscale":[``,Mv,$,Q]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Mv,$,Q]}],"backdrop-invert":[{"backdrop-invert":[``,Mv,$,Q]}],"backdrop-opacity":[{"backdrop-opacity":[Mv,$,Q]}],"backdrop-saturate":[{"backdrop-saturate":[Mv,$,Q]}],"backdrop-sepia":[{"backdrop-sepia":[``,Mv,$,Q]}],"border-collapse":[{border:[`collapse`,`separate`]}],"border-spacing":[{"border-spacing":w()}],"border-spacing-x":[{"border-spacing-x":w()}],"border-spacing-y":[{"border-spacing-y":w()}],"table-layout":[{table:[`auto`,`fixed`]}],caption:[{caption:[`top`,`bottom`]}],transition:[{transition:[``,`all`,`colors`,`opacity`,`shadow`,`transform`,`none`,$,Q]}],"transition-behavior":[{transition:[`normal`,`discrete`]}],duration:[{duration:[Mv,`initial`,$,Q]}],ease:[{ease:[`linear`,`initial`,_,$,Q]}],delay:[{delay:[Mv,$,Q]}],animate:[{animate:[`none`,v,$,Q]}],backface:[{backface:[`hidden`,`visible`]}],perspective:[{perspective:[h,$,Q]}],"perspective-origin":[{"perspective-origin":x()}],rotate:[{rotate:le()}],"rotate-x":[{"rotate-x":le()}],"rotate-y":[{"rotate-y":le()}],"rotate-z":[{"rotate-z":le()}],scale:[{scale:ue()}],"scale-x":[{"scale-x":ue()}],"scale-y":[{"scale-y":ue()}],"scale-z":[{"scale-z":ue()}],"scale-3d":[`scale-3d`],skew:[{skew:de()}],"skew-x":[{"skew-x":de()}],"skew-y":[{"skew-y":de()}],transform:[{transform:[$,Q,``,`none`,`gpu`,`cpu`]}],"transform-origin":[{origin:x()}],"transform-style":[{transform:[`3d`,`flat`]}],translate:[{translate:fe()}],"translate-x":[{"translate-x":fe()}],"translate-y":[{"translate-y":fe()}],"translate-z":[{"translate-z":fe()}],"translate-none":[`translate-none`],zoom:[{zoom:[Nv,$,Q]}],accent:[{accent:N()}],appearance:[{appearance:[`none`,`auto`]}],"caret-color":[{caret:N()}],"color-scheme":[{scheme:[`normal`,`dark`,`light`,`light-dark`,`only-dark`,`only-light`]}],cursor:[{cursor:[`auto`,`default`,`pointer`,`wait`,`text`,`move`,`help`,`not-allowed`,`none`,`context-menu`,`progress`,`cell`,`crosshair`,`vertical-text`,`alias`,`copy`,`no-drop`,`grab`,`grabbing`,`all-scroll`,`col-resize`,`row-resize`,`n-resize`,`e-resize`,`s-resize`,`w-resize`,`ne-resize`,`nw-resize`,`se-resize`,`sw-resize`,`ew-resize`,`ns-resize`,`nesw-resize`,`nwse-resize`,`zoom-in`,`zoom-out`,$,Q]}],"field-sizing":[{"field-sizing":[`fixed`,`content`]}],"pointer-events":[{"pointer-events":[`auto`,`none`]}],resize:[{resize:[`none`,``,`y`,`x`]}],"scroll-behavior":[{scroll:[`auto`,`smooth`]}],"scrollbar-thumb-color":[{"scrollbar-thumb":N()}],"scrollbar-track-color":[{"scrollbar-track":N()}],"scrollbar-gutter":[{"scrollbar-gutter":[`auto`,`stable`,`both`]}],"scrollbar-w":[{scrollbar:[`auto`,`thin`,`none`]}],"scroll-m":[{"scroll-m":w()}],"scroll-mx":[{"scroll-mx":w()}],"scroll-my":[{"scroll-my":w()}],"scroll-ms":[{"scroll-ms":w()}],"scroll-me":[{"scroll-me":w()}],"scroll-mbs":[{"scroll-mbs":w()}],"scroll-mbe":[{"scroll-mbe":w()}],"scroll-mt":[{"scroll-mt":w()}],"scroll-mr":[{"scroll-mr":w()}],"scroll-mb":[{"scroll-mb":w()}],"scroll-ml":[{"scroll-ml":w()}],"scroll-p":[{"scroll-p":w()}],"scroll-px":[{"scroll-px":w()}],"scroll-py":[{"scroll-py":w()}],"scroll-ps":[{"scroll-ps":w()}],"scroll-pe":[{"scroll-pe":w()}],"scroll-pbs":[{"scroll-pbs":w()}],"scroll-pbe":[{"scroll-pbe":w()}],"scroll-pt":[{"scroll-pt":w()}],"scroll-pr":[{"scroll-pr":w()}],"scroll-pb":[{"scroll-pb":w()}],"scroll-pl":[{"scroll-pl":w()}],"snap-align":[{snap:[`start`,`end`,`center`,`align-none`]}],"snap-stop":[{snap:[`normal`,`always`]}],"snap-type":[{snap:[`none`,`x`,`y`,`both`]}],"snap-strictness":[{snap:[`mandatory`,`proximity`]}],touch:[{touch:[`auto`,`none`,`manipulation`]}],"touch-x":[{"touch-pan":[`x`,`left`,`right`]}],"touch-y":[{"touch-pan":[`y`,`up`,`down`]}],"touch-pz":[`touch-pinch-zoom`],select:[{select:[`none`,`text`,`all`,`auto`]}],"will-change":[{"will-change":[`auto`,`scroll`,`contents`,`transform`,$,Q]}],fill:[{fill:[`none`,...N()]}],"stroke-w":[{stroke:[Mv,Zv,Wv,Gv]}],stroke:[{stroke:[`none`,...N()]}],"forced-color-adjust":[{"forced-color-adjust":[`auto`,`none`]}]},conflictingClassGroups:{"container-named":[`container-type`],overflow:[`overflow-x`,`overflow-y`],overscroll:[`overscroll-x`,`overscroll-y`],inset:[`inset-x`,`inset-y`,`inset-bs`,`inset-be`,`start`,`end`,`top`,`right`,`bottom`,`left`],"inset-x":[`right`,`left`],"inset-y":[`top`,`bottom`],flex:[`basis`,`grow`,`shrink`],gap:[`gap-x`,`gap-y`],p:[`px`,`py`,`ps`,`pe`,`pbs`,`pbe`,`pt`,`pr`,`pb`,`pl`],px:[`pr`,`pl`],py:[`pt`,`pb`],m:[`mx`,`my`,`ms`,`me`,`mbs`,`mbe`,`mt`,`mr`,`mb`,`ml`],mx:[`mr`,`ml`],my:[`mt`,`mb`],size:[`w`,`h`],"font-size":[`leading`],"fvn-normal":[`fvn-ordinal`,`fvn-slashed-zero`,`fvn-figure`,`fvn-spacing`,`fvn-fraction`],"fvn-ordinal":[`fvn-normal`],"fvn-slashed-zero":[`fvn-normal`],"fvn-figure":[`fvn-normal`],"fvn-spacing":[`fvn-normal`],"fvn-fraction":[`fvn-normal`],"line-clamp":[`display`,`overflow`],rounded:[`rounded-s`,`rounded-e`,`rounded-t`,`rounded-r`,`rounded-b`,`rounded-l`,`rounded-ss`,`rounded-se`,`rounded-ee`,`rounded-es`,`rounded-tl`,`rounded-tr`,`rounded-br`,`rounded-bl`],"rounded-s":[`rounded-ss`,`rounded-es`],"rounded-e":[`rounded-se`,`rounded-ee`],"rounded-t":[`rounded-tl`,`rounded-tr`],"rounded-r":[`rounded-tr`,`rounded-br`],"rounded-b":[`rounded-br`,`rounded-bl`],"rounded-l":[`rounded-tl`,`rounded-bl`],"border-spacing":[`border-spacing-x`,`border-spacing-y`],"border-w":[`border-w-x`,`border-w-y`,`border-w-s`,`border-w-e`,`border-w-bs`,`border-w-be`,`border-w-t`,`border-w-r`,`border-w-b`,`border-w-l`],"border-w-x":[`border-w-r`,`border-w-l`],"border-w-y":[`border-w-t`,`border-w-b`],"border-color":[`border-color-x`,`border-color-y`,`border-color-s`,`border-color-e`,`border-color-bs`,`border-color-be`,`border-color-t`,`border-color-r`,`border-color-b`,`border-color-l`],"border-color-x":[`border-color-r`,`border-color-l`],"border-color-y":[`border-color-t`,`border-color-b`],translate:[`translate-x`,`translate-y`,`translate-none`],"translate-none":[`translate`,`translate-x`,`translate-y`,`translate-z`],"scroll-m":[`scroll-mx`,`scroll-my`,`scroll-ms`,`scroll-me`,`scroll-mbs`,`scroll-mbe`,`scroll-mt`,`scroll-mr`,`scroll-mb`,`scroll-ml`],"scroll-mx":[`scroll-mr`,`scroll-ml`],"scroll-my":[`scroll-mt`,`scroll-mb`],"scroll-p":[`scroll-px`,`scroll-py`,`scroll-ps`,`scroll-pe`,`scroll-pbs`,`scroll-pbe`,`scroll-pt`,`scroll-pr`,`scroll-pb`,`scroll-pl`],"scroll-px":[`scroll-pr`,`scroll-pl`],"scroll-py":[`scroll-pt`,`scroll-pb`],touch:[`touch-x`,`touch-y`,`touch-pz`],"touch-x":[`touch`],"touch-y":[`touch`],"touch-pz":[`touch`]},conflictingClassGroupModifiers:{"font-size":[`leading`]},postfixLookupClassGroups:[`container-type`],orderSensitiveModifiers:[`*`,`**`,`after`,`backdrop`,`before`,`details-content`,`file`,`first-letter`,`first-line`,`marker`,`placeholder`,`selection`]}});function hy(...e){return my(z_(e))}var gy=H_(`inline-flex h-9 shrink-0 items-center justify-center gap-2 whitespace-nowrap rounded-md border px-3 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-slate-400 disabled:pointer-events-none disabled:opacity-50 dark:focus-visible:ring-zinc-500`,{variants:{variant:{primary:`border-slate-900 bg-slate-950 text-white hover:bg-slate-800 dark:border-zinc-100 dark:bg-zinc-50 dark:text-zinc-950 dark:hover:bg-zinc-200`,secondary:`border-slate-200 bg-white text-slate-900 hover:bg-slate-50 dark:border-zinc-800 dark:bg-zinc-950 dark:text-zinc-100 dark:hover:bg-zinc-900`,ghost:`border-transparent bg-transparent text-slate-700 hover:bg-slate-100 dark:text-zinc-300 dark:hover:bg-zinc-900`},size:{sm:`h-8 px-2 text-xs`,md:`h-9 px-3 text-sm`,icon:`h-9 w-9 px-0`}},defaultVariants:{variant:`secondary`,size:`md`}});function _y({className:e,variant:t,size:n,...r}){return(0,B.jsx)(`button`,{className:hy(gy({variant:t,size:n}),e),type:`button`,...r})}function vy({className:e,...t}){return(0,B.jsx)(`section`,{className:hy(`rounded-lg border border-slate-200/80 bg-white/95 text-slate-950 shadow-[0_1px_2px_rgba(15,23,42,0.04)] dark:border-zinc-800 dark:bg-zinc-950 dark:text-zinc-50`,e),...t})}function yy({className:e,...t}){return(0,B.jsx)(`div`,{className:hy(`p-4 pt-0`,e),...t})}var by=[`codex`,`claude`,`kiro`,`trae`,`coco`,`openai`,`anthropic`],xy=new Set([`acp`,`status_projection`]);function Sy(e){let t=e.trim().toLowerCase().replace(/_/gu,`-`);for(let e of by)if(t===e||t.startsWith(`${e}-`))return e;return t}function Cy(e,t){let n=t?.trim().toLowerCase()??``;return n.length>0&&!xy.has(n)?Sy(n):Sy(e)}var wy={stop:`ready_stop`,resume:`resume_review`,delete:`delete_review`};function Ty(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function Ey(e){return typeof e==`string`&&e.trim().length>0?e:null}function Dy(e,t=240){let n=typeof e==`string`?e.replace(/\s+/g,` `).trim():``;return n.length>t?`${n.slice(0,t-1)}…`:n}function Oy(e){let t=Ty(e)??{},n=Dy(t.agent_id,80)||`unknown-agent`,r=Dy(t.acceptance,200);if(t.staffing===`gap`){let e=Ty(t.declined_first_todo)??{};return[`${n} · gap`,Dy(t.gap_reason_code,80),Dy(e.text,200)].filter(Boolean).join(` · `)}let i=Ty(t.first_todo)??{};return[`${n} · ready`,Dy(i.priority,8),Dy(i.action_kind,40),Dy(i.text,240),r?`acceptance: ${r}`:``].filter(Boolean).join(` · `)}function ky(e){let t=Ty(e)??{};return Object.entries(t).map(([e,t])=>`${e}: ${typeof t==`object`&&t?JSON.stringify(t):String(t)}`).join(` · `)}function Ay(e){let t=Ty(e);if(t?.action_kind!==`team.plan`||t.status!==`preview_ready`&&t.status!==`deferred`)return;let n=Ty(Ty(t.normalized_parameters)?.plan);if(!n||n.kind!==`steward_team_plan_preview`||n.applies!==!1)return;let r=Ey(t.proposal_id),i=Ey(t.expected_state_fingerprint),a=Ey(n.goal_id);if(!r||!i||!a)return;let o=Array.isArray(n.lanes)?n.lanes:[],s=Array.isArray(n.gaps)?n.gaps:[],c=[{key:`goal`,value:a},{key:`objective`,value:Dy(n.objective)},...o.map((e,t)=>({key:`lane_${t+1}`,value:Oy(e)})),...s.length>0?[{key:`lane_gaps`,value:s.map(e=>{let t=Ty(e)??{};return[Dy(t.lane_id,80),Dy(t.reason_code,80)].filter(Boolean).join(`: `)}).filter(Boolean).join(` · `)}]:[],{key:`quota_envelope`,value:ky(n.quota_envelope)},{key:`stop_condition`,value:Dy(n.stop_condition)}].filter(e=>e.value.length>0);return{schemaVersion:`review_card_frame_v0`,actionKind:`team.plan`,proposalId:r,stateFingerprint:i,kind:`confirmation`,attentionKind:`authority`,interactionMode:`confirm_reject`,decisions:[`confirm`,`reject`],titleKey:`team_plan_preview`,subtitleKey:`preview_only_no_lane_exists`,confirmLabelKey:`confirm_team_plan`,rejectLabelKey:`reject_team_plan`,warningKey:`confirming_creates_each_ready_lane_first_todo`,focus:`${a} · ${o.length} lane${o.length===1?``:`s`}`,fields:c}}function jy(e){let t=Ty(e.projection);if(t?.schema_version!==`loopx_operation_projection_v0`)return null;let n=Ey(t.title),r=Ey(t.subtitle),i=Ey(t.focus),a=Ey(t.warning);if(!n||!r||!i||!a||!Array.isArray(t.fields))return null;let o=[];for(let e of t.fields){let t=Ty(e),n=Ey(t?.label),r=Ey(t?.value);if(!n||!r)return null;o.push({label:n,value:r})}return{title:n,subtitle:r,focus:i,fields:o,warning:a}}function My(e){let t=Ty(e);if(t?.action_kind!==`operation.execute`)return;let n=Ty(t.normalized_parameters),r=Ty(t.operation);if(!n||r?.schema_version!==`loopx_operation_envelope_v0`)return;let i=Ey(r.operation_id),a=Ey(r.confirmation_digest),o=Ey(r.expires_at),s=jy(n);if(!i||!a||!o||!s||i!==t.proposal_id)return;let c=r.lifecycle_state;if(c!==`awaiting_confirmation`&&c!==`claimed`&&c!==`outcome_observed`)return;let l={schemaVersion:`operation_review_frame_v0`,operationId:i,confirmationDigest:a,lifecycleState:c,simulated:Ty(n.projection).simulated===!0,expiresAt:o,content:s};if(c===`awaiting_confirmation`)return{...l,kind:`confirmation`,attentionKind:`authority`,interactionMode:`confirm_reject`,decisions:[`confirm`,`reject`]};if(c===`claimed`)return{...l,kind:`pending`,attentionKind:`progress`,interactionMode:`inform`};let u=Ty(r.outcome);if(!u)return;let d=u.outcome===`rejected_by_operator`,f=u.simulation===!0||l.simulated;return{...l,kind:`result`,attentionKind:`progress`,interactionMode:`inform`,resultKind:d?`rejected`:f?`simulation_completed`:`completed`,resultDeliveryVerified:Ty(r.result_delivery)!==null,summary:Ey(u.summary)??``}}function Ny(e){let t=Ty(e)??{},n={schemaVersion:`action_review_plan_v0`,proposalId:typeof t.proposal_id==`string`?t.proposal_id:``,sourceFingerprint:typeof t.expected_state_fingerprint==`string`?t.expected_state_fingerprint:``},r=My(t),i=Ay(t),a=e=>({...n,...e,...r?{operationFrame:r}:{},...i?{reviewCardFrame:i}:{}}),o=(e,t)=>a({interaction:e,reason:t,canApply:!1}),s=t.action_kind===`goal.lifecycle`;if(s&&t.gate!=null||t.status===`gated`)return o(`gated`,`authority_gate`);if(s&&t.stale!=null||t.status===`stale`)return o(`refresh`,`stale_proposal`);if(t.status===`applied`)return Ty(t.receipt)?.projection_verified===!0&&(t.action_kind!==`operation.execute`||Ty(Ty(t.operation)?.result_delivery)!==null)?o(`completed`,`readback_verified`):o(`repair`,`readback_unverified`);if(t.status===`applying`)return o(`pending`,`apply_pending`);if(t.status===`failed`||t.error!=null)return o(`repair`,`apply_failed`);if(t.status!==`preview_ready`&&t.status!==`deferred`)return o(`inactive`,`inactive_proposal`);let c=(e,t=!0)=>a({interaction:`review`,reason:e,canApply:t});if(t.action_kind!==`goal.lifecycle`)return c(t.permission_classification===`protected`?`protected_action`:`action_review`);let l=t.validation_evidence,u=t.available_transitions;if(!(Ey(t.proposal_id)!==null&&Ey(t.expected_state_fingerprint)!==null&&Array.isArray(l)&&l.length>0&&l.every(e=>Ey(e)!==null)&&Array.isArray(u)&&u.includes(`apply`)))return o(`refresh`,`incomplete_proposal`);let d=Ty(t.normalized_parameters),f=Ty(t.context),p=d?.operation,m=Ey(d?.goal_id);if(!m||f?.goal_id!=null&&f.goal_id!==m)return o(`refresh`,`incomplete_proposal`);if(p!==`stop`&&p!==`resume`&&p!==`delete`)return c(`unknown_action`,!1);if(t.permission_classification===`protected`)return c(`protected_action`);if(t.permission_classification!==`durable_write`)return c(`unknown_permission`,!1);let h=wy[p];return h===`ready_stop`&&t.status===`preview_ready`?a({interaction:`direct`,reason:h,canApply:!0}):c(h===`ready_stop`?`action_review`:h)}function Py(e){return e.error_code===`action_stale`||e.error_code===`action_conflict`||Ty(e.proposal)?.status===`stale`}function Fy(e){return typeof e==`object`&&e?e:{}}function Iy(e){return typeof e==`string`?e:``}function Ly(e,t){let n=Fy(e.plan),r=[],i=Iy(e.goal_id)||Iy(n.goal_id);i&&r.push({key:`goal_id`,label:t(`proposal.field.goalId`),value:i});let a=Iy(n.objective);a&&r.push({key:`objective`,label:t(`proposal.field.objective`),value:a}),(Array.isArray(n.lanes)?n.lanes:[]).forEach((e,n)=>{let i=Fy(e),a=Iy(i.lane_id)||`lane-${n+1}`,o=Iy(i.agent_id),s=Iy(i.acceptance);if(Iy(i.staffing)===`gap`){let e=Fy(i.declined_first_todo);r.push({key:`lane_${a}`,label:o||a,value:[t(`proposal.teamPlan.gapLane`),Hy(Iy(i.gap_reason_code),t),Iy(e.text)].filter(Boolean).join(` · `)});return}let c=Fy(i.first_todo),l=[Iy(c.priority),Iy(c.action_kind),Iy(c.text)].filter(Boolean).join(` · `);r.push({key:`lane_${a}`,label:o||a,value:[l||t(`proposal.teamPlan.laneUnstaffed`),s?`${t(`proposal.teamPlan.acceptanceShort`)}: ${s}`:``].filter(Boolean).join(` · `)})});let o=Fy(n.quota_envelope),s=Object.entries(o);s.length>0&&r.push({key:`quota_envelope`,label:t(`proposal.field.quotaEnvelope`),value:s.map(([e,t])=>`${e}: ${String(t??``)}`).join(` · `)+` · ${t(`proposal.teamPlan.advisory`)}`});let c=Iy(n.stop_condition);return c&&r.push({key:`stop_condition`,label:t(`proposal.field.stopCondition`),value:`${c} · ${t(`proposal.teamPlan.advisory`)}`}),r}function Ry(e){let t=Fy(e.plan);return Array.isArray(t.lanes)?t.lanes.length:0}function zy(e){let t=Fy(e.plan);return Iy(e.goal_id)||Iy(t.goal_id)}function By(e,t){let n=Fy(e),r=Fy(t.plan),i=(Array.isArray(r.lanes)?r.lanes:[]).map(Fy);return(Array.isArray(n.lanes)?n.lanes:[]).map(e=>{let t=Fy(e),n=Iy(t.lane_id),r=i.find(e=>e.lane_id===n);return{laneId:n,agentId:Iy(t.agent_id),task:Iy(Fy(r?.first_todo).text)||n}}).filter(e=>e.laneId.length>0)}function Vy(e,t={}){let n=Fy(e),r=Fy(t.plan),i=(Array.isArray(r.lanes)?r.lanes:[]).map(Fy);return(Array.isArray(n.gap_lanes)?n.gap_lanes:[]).map(e=>{let t=Fy(e);return{laneId:Iy(t.lane_id),agentId:Iy(t.agent_id),reasonCode:Iy(t.reason_code),task:Iy(Fy(i.find(e=>e.lane_id===t.lane_id)?.declined_first_todo).text)}}).filter(e=>e.laneId.length>0)}function Hy(e,t){return e===`agent_not_registered`?t(`proposal.teamPlan.gapReason.agentNotRegistered`):e===`action_kind_not_supported`?t(`proposal.teamPlan.gapReason.actionKindNotSupported`):e===`capability_not_granted`?t(`proposal.teamPlan.gapReason.capabilityNotGranted`):e===`audience_not_authorized`?t(`proposal.teamPlan.gapReason.audienceNotAuthorized`):e}function Uy(e){let t=Fy(e),n=Iy(t.outcome),r=Array.isArray(t.lanes)?t.lanes.length:0,i=typeof t.gap_count==`number`?t.gap_count:0;return n===`team_plan_partially_applied`?{kind:`partially_applied`,created:r,gaps:i}:n===`team_plan_lanes_already_present`||n===`team_plan_commit_recovered`?{kind:`already_present`,created:r,gaps:i}:n===`team_plan_applied`?{kind:`applied`,created:r,gaps:i}:null}function Wy(e,t){return e?.kind===`partially_applied`?t(`proposal.teamPlan.appliedPartially`,{created:String(e.created),gaps:String(e.gaps)}):e?.kind===`already_present`?t(`proposal.teamPlan.appliedAlreadyPresent`):t(e?.kind===`applied`?`proposal.teamPlan.applied`:`drawer.proposalApplied`,{count:e?.created??0})}function Gy(e){return{blockingTodoCount:e.blockingTodoCount,goalNotifications:e.goalNotifications,goals:e.goals,openUserTodoCount:e.openUserTodoCount,systemHealth:e.systemHealth,attentionHistory:e.attentionHistory,userTodos:e.userTodos,workers:e.workers}}function Ky(e,t){return e.goals.find(e=>e.goalId===t)?.title??t}function qy(e){return e.activationState===`stopped`||e.state===`已停止`?`stopped`:e.state===`已完成`?`history`:e.needsYou||e.state===`等你`?`needs_you`:e.state===`推进中`||e.state===`需修复`?`running`:e.state===`安静运行`?`observing`:`scheduled`}function Jy(e){let t=e;return t>=1e6?`${(t/1e6).toFixed(1)}M`:t>=1e3?`${(t/1e3).toFixed(1)}k`:String(t)}function Yy(e){return`$${e.toFixed(2)}`}function Xy(e){let t=e;return t>=36e5?`${(t/36e5).toFixed(1)}h`:t>=6e4?`${(t/6e4).toFixed(1)}m`:t>=1e3?`${Math.round(t/1e3)}s`:`${t}ms`}function Zy(e,t,n){return e==null?t:n(e)}function Qy(e){return!!(e&&[e.tokens24h,e.tokens7d,e.costUsd24h,e.costUsd7d,e.durationMs24h,e.durationMs7d].some(e=>e!=null))}function $y(e,t){if(!Qy(e))return null;let n=(e,n,r,i)=>{let a=[n==null?null:`${Jy(n)} ${t.tokens}`,r==null?null:`${t.cost}: ${Yy(r)}`,i==null?null:`${t.duration}: ${Xy(i)}`].filter(e=>e!==null);return a.length?`${e} ${a.join(` · `)}`:null};return n(t.period7d,e.tokens7d,e.costUsd7d,e.durationMs7d)??n(t.period24h,e.tokens24h,e.costUsd24h,e.durationMs24h)}function eb({ariaLabel:e,className:t,icon:n,onChange:r,options:i,prefixLabel:a,value:o}){let s=(0,z.useId)(),c=(0,z.useRef)(null),l=(0,z.useRef)(null),u=(0,z.useRef)(new Map),[d,f]=(0,z.useState)(!1),[p,m]=(0,z.useState)(o),h=i.find(e=>e.value===o)??i[0],g=i.filter(e=>!e.disabled);(0,z.useEffect)(()=>{if(!d)return;let e=e=>{c.current?.contains(e.target)||f(!1)};return document.addEventListener(`pointerdown`,e),()=>document.removeEventListener(`pointerdown`,e)},[d]),(0,z.useEffect)(()=>{d&&u.current.get(p)?.focus()},[p,d]);function _(e){m(e)}function v(e=`selected`){let t=e===`last`?g.at(-1):g[0],n=e===`selected`&&h&&!h.disabled?h:t;n&&(f(!0),_(n.value))}function y({restoreFocus:e=!1}={}){f(!1),e&&l.current?.focus()}function b(e){e.disabled||(r(e.value),y({restoreFocus:!0}))}function x(e){if(!g.length)return;let t=g.findIndex(e=>e.value===p),n=t<0?0:(t+e+g.length)%g.length;_(g[n].value)}function S(e){e.key===`ArrowDown`||e.key===`Enter`||e.key===` `?(e.preventDefault(),v(`selected`)):e.key===`ArrowUp`&&(e.preventDefault(),v(`last`))}function C(e,t){if(e.key===`ArrowDown`)e.preventDefault(),x(1);else if(e.key===`ArrowUp`)e.preventDefault(),x(-1);else if(e.key===`Home`)e.preventDefault(),g[0]&&_(g[0].value);else if(e.key===`End`){e.preventDefault();let t=g.at(-1);t&&_(t.value)}else e.key===`Enter`||e.key===` `?(e.preventDefault(),b(t)):e.key===`Escape`?(e.preventDefault(),y({restoreFocus:!0})):e.key===`Tab`&&y()}let w;return(0,B.jsxs)(`div`,{className:`personal-select${t?` ${t}`:``}`,ref:c,children:[(0,B.jsxs)(`button`,{"aria-controls":s,"aria-expanded":d,"aria-haspopup":`listbox`,"aria-label":e,className:`personal-select-trigger`,"data-value":o,onClick:()=>d?y():v(),onKeyDown:S,ref:l,role:`combobox`,type:`button`,children:[n?(0,B.jsx)(`span`,{className:`personal-select-icon`,children:n}):null,(0,B.jsxs)(`span`,{className:`personal-select-value`,children:[a?(0,B.jsx)(`small`,{children:a}):null,(0,B.jsx)(`span`,{children:h?.label??o})]}),(0,B.jsx)(om,{"aria-hidden":!0,className:d?`is-open`:void 0,size:14})]}),d?(0,B.jsx)(`div`,{"aria-label":e,className:`personal-select-listbox`,id:s,role:`listbox`,children:i.map(e=>{let t=e.group&&e.group!==w;return w=e.group,(0,B.jsxs)(`div`,{className:`personal-select-option-wrap`,children:[t?(0,B.jsx)(`div`,{className:`personal-select-group-label`,children:e.group}):null,(0,B.jsxs)(`button`,{"aria-disabled":e.disabled||void 0,"aria-selected":e.value===o,className:`personal-select-option`,disabled:e.disabled,id:`${s}-${e.value.replace(/[^a-z0-9_-]/gi,`-`)}`,onClick:()=>b(e),onFocus:()=>m(e.value),onKeyDown:t=>C(t,e),ref:t=>{t?u.current.set(e.value,t):u.current.delete(e.value)},role:`option`,tabIndex:e.value===p?0:-1,type:`button`,children:[(0,B.jsx)(`span`,{children:e.label}),e.value===o?(0,B.jsx)(am,{"aria-hidden":!0,size:15}):null]})]},e.value)})}):null]})}function tb({agents:e,managerChannelBinding:t,managerChatOpen:n,managerRuntime:r,mobileNavigationOpen:i,onOpenGoalCapabilities:a,onOpenGoalDetail:o,onOpenManagerChat:s,onRefresh:c,onOpenNavigation:l,onSelectGoalTab:u,onSelectAgent:d,onReturnManagerHome:f,refreshState:p,readOnlySourceLabel:m,selectedAgentId:h,selectedGoal:g,selectedGoalTab:_}){let{locale:v,t:y}=Ji(),[b,x]=(0,z.useState)(!1),S=(0,z.useRef)(null),C=(0,z.useRef)(null);(0,z.useEffect)(()=>{if(!b)return;function e(e){C.current?.contains(e.target)||x(!1)}function t(e){e.key===`Escape`&&(x(!1),S.current?.focus())}return document.addEventListener(`pointerdown`,e),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`pointerdown`,e),document.removeEventListener(`keydown`,t)}},[b]),(0,z.useEffect)(()=>x(!1),[g?.goalId]);function w(e){x(!1),e?.()}let T=g?$y(g.usage,{cost:y(`drawer.costShort`),duration:y(`drawer.durationShort`),period24h:y(`drawer.period24h`),period7d:y(`drawer.period7d`),tokens:y(`drawer.tokensShort`)}):null,E=t?t.executor_kind===`individual`?y(`header.managerExecutorKindIndividual`):t.executor_kind===`managed`?y(`header.managerExecutorKindManaged`):y(`header.managerExecutorKindRegistered`):null,D=t?.available===!1,O=t?.available===!1?t.unavailable_reason:null,k=O===`operator_credential_unconfigured`?`header.managerExecutionUnavailableCredential`:O===`dsh_runtime_unavailable`?`header.managerExecutionUnavailableRuntime`:O===`invalid_reasoning_effort`?`header.managerExecutionUnavailableEffort`:`header.managerExecutionUnavailable`,ee=t&&t.executor_endpoint_source===`product_default`&&t.executor_endpoint_default_reason===`steward_channel_default`?`header.managerEndpointStewardDefault`:null;return(0,B.jsxs)(`header`,{className:`personal-channel-header`,children:[(0,B.jsx)(`button`,{"aria-expanded":i??!1,"aria-label":y(`header.openGoalNavigation`),className:`personal-icon-button personal-mobile-menu`,onClick:l,type:`button`,children:(0,B.jsx)(jm,{size:18})}),(0,B.jsxs)(`div`,{className:`personal-channel-title`,children:[(0,B.jsx)(`h1`,{children:g?.title??y(`header.manager`)}),!g&&r?(0,B.jsx)(`p`,{children:r.status===`ready`?y(`header.managerRuntime`,{profile:r.runtime_profile,sandbox:r.sandbox}):y(`header.managerRuntimeFallback`,{profile:r.runtime_profile,sandbox:r.sandbox})}):null,!g&&t?(0,B.jsxs)(`p`,{className:`personal-manager-execution`,children:[(0,B.jsxs)(`span`,{className:D?`personal-execution-chip is-unavailable`:`personal-execution-chip`,children:[(0,B.jsx)(`span`,{className:`personal-execution-chip-endpoint`,children:t.executor_endpoint}),E?(0,B.jsx)(`span`,{className:`personal-execution-chip-kind`,children:E}):null,(0,B.jsx)(`span`,{className:`personal-execution-chip-model`,children:t.model})]}),D?(0,B.jsx)(`span`,{className:`personal-execution-note`,children:y(k,{executor:t.executor_endpoint,credential:t.credential_env_var})}):null,ee?(0,B.jsx)(`span`,{className:`personal-execution-rule-note`,children:y(ee,{executor:t.executor_endpoint})}):null]}):null,g?(0,B.jsx)(`p`,{children:g.loadState?y(g.loadState===`error`?`startup.goalError`:`startup.goalLoading`):`${g.agentLaneCount&&g.agentLaneCount>1?y(`header.workAgentCount`,{count:g.agentLaneCount}):g.agentLabel??g.agentId} · ${g.loadState?y(g.loadState===`error`?`startup.goalError`:`startup.goalLoading`):Yi(g.state,v)}${T?` · ${T}`:``} · ${g.nextSentence}`}):null]}),g?(0,B.jsxs)(`nav`,{"aria-label":y(`header.goalView`),className:`personal-goal-tabs`,children:[(0,B.jsx)(`button`,{"aria-current":_===`chat`?`page`:void 0,onClick:()=>u(`chat`),type:`button`,children:y(`header.chat`)}),(0,B.jsx)(`button`,{"aria-current":_===`tasks`?`page`:void 0,onClick:()=>u(`tasks`),type:`button`,children:y(`header.tasks`)}),(0,B.jsx)(`button`,{"aria-current":_===`files`?`page`:void 0,onClick:()=>u(`files`),type:`button`,children:y(`header.files`)})]}):(0,B.jsxs)(`nav`,{"aria-label":y(`header.managerView`),className:`personal-goal-tabs`,children:[(0,B.jsx)(`button`,{"aria-current":n?void 0:`page`,onClick:f,type:`button`,children:y(`header.managerOverview`)}),(0,B.jsx)(`button`,{"aria-current":n?`page`:void 0,onClick:s,type:`button`,children:y(`header.chat`)})]}),(0,B.jsxs)(`div`,{className:`personal-channel-actions`,children:[g&&o&&a?(0,B.jsxs)(`div`,{className:`personal-goal-tools`,ref:C,children:[(0,B.jsxs)(`button`,{"aria-expanded":b,"aria-haspopup":`menu`,"aria-label":y(`header.goalSettingsDescription`),className:`personal-goal-tools-trigger`,onClick:()=>x(e=>!e),ref:S,title:y(`header.goalSettingsDescription`),type:`button`,children:[(0,B.jsx)(Zm,{"aria-hidden":!0,size:16}),(0,B.jsx)(`span`,{children:y(`header.goalSettings`)}),(0,B.jsx)(om,{"aria-hidden":!0,size:13})]}),b?(0,B.jsxs)(`fieldset`,{"aria-label":y(`header.goalSettings`),className:`personal-goal-tools-menu`,children:[(0,B.jsxs)(`button`,{onClick:()=>w(o),type:`button`,children:[(0,B.jsx)(wm,{"aria-hidden":!0,size:17}),(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:y(`header.goalDetails`)})})]}),(0,B.jsxs)(`button`,{onClick:()=>w(a),type:`button`,children:[(0,B.jsx)(Zm,{"aria-hidden":!0,size:17}),(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:y(`header.goalCapabilities`)})})]})]}):null]}):null,m?(0,B.jsxs)(`span`,{className:`personal-read-only-source`,title:y(`header.readOnlySourceDescription`,{source:m}),children:[(0,B.jsx)(vm,{size:15}),m,(0,B.jsx)(`small`,{children:y(`common.readOnly`)})]}):(0,B.jsx)(eb,{ariaLabel:y(`header.selectChatRuntime`),className:`personal-agent-select`,icon:(0,B.jsx)(nm,{size:16}),onChange:d,options:e.map(e=>({disabled:!e.available,label:`${e.label}${e.available?``:` · ${y(`header.agentUnavailable`)}`}`,value:e.agentId})),prefixLabel:y(`header.chatRuntime`),value:h}),(0,B.jsxs)(`span`,{className:`personal-live-indicator`,children:[(0,B.jsx)(`i`,{}),y(`header.live`)]}),c?(0,B.jsxs)(`span`,{className:`personal-refresh-control is-${p??`idle`}`,children:[p===`loading`?(0,B.jsx)(`small`,{children:y(`header.refreshing`)}):p===`done`?(0,B.jsx)(`small`,{children:y(`header.refreshDone`)}):p===`error`?(0,B.jsx)(`small`,{children:y(`header.refreshFailed`)}):null,(0,B.jsx)(`button`,{"aria-label":y(p===`loading`?`header.refreshing`:`header.refresh`),className:`personal-icon-button`,disabled:p===`loading`,onClick:c,type:`button`,children:(0,B.jsx)(Hm,{className:p===`loading`?`is-spinning`:void 0,size:17})})]}):null]})]})}function nb({attention:e,onSelect:t}){let{t:n}=Ji(),r=Zi(e.updatedAt,n);return(0,B.jsxs)(`button`,{className:`personal-timeline-row personal-attention-row`,"data-testid":`personal-browse-row`,onClick:t,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-row-icon is-attention`,children:(0,B.jsx)(lm,{size:18})}),(0,B.jsxs)(`span`,{className:`personal-row-copy`,children:[(0,B.jsxs)(`small`,{children:[e.goalTitle??e.goalId,` · `,n(`home.lane.needsYou`),r?` · ${n(`tasks.waitingAge`,{age:r})}`:``]}),(0,B.jsx)(`strong`,{children:e.text})]}),(0,B.jsx)(`span`,{className:`personal-priority-dot is-${e.priority??(e.blocking?`high`:`medium`)}`}),(0,B.jsx)(`span`,{className:`personal-row-status ${e.blocking?`is-blocking`:`is-pending`}`,children:e.blocking?n(`tasks.blocked`):n(`tasks.pending`)}),(0,B.jsx)(sm,{size:17})]})}var rb=/(`[^`\n]+`)|(\*\*[^*\n]+(\*[^*\n]*)?\*\*)|(\[[^\]\n]{1,120}\]\(https?:\/\/[^)\s]+\))/g;function ib(e,t){let n=[],r=0,i=0;for(let a of e.matchAll(rb)){let o=a.index??0;o>r&&n.push(e.slice(r,o));let s=a[0],c=`${t}-i${i++}`;if(s.startsWith("`"))n.push((0,B.jsx)(`code`,{className:`personal-md-code`,children:s.slice(1,-1)},c));else if(s.startsWith(`**`))n.push((0,B.jsx)(`strong`,{children:s.slice(2,-2)},c));else{let e=s.indexOf(`](`),t=s.slice(1,e),r=s.slice(e+2,-1);n.push((0,B.jsx)(`a`,{className:`personal-md-link`,href:r,rel:`noreferrer`,target:`_blank`,children:t},c))}r=o+s.length}return r{r.length>0&&(n.push({type:`paragraph`,lines:r}),r=[])},a=0;for(;a{let n=`b${t}`;if(e.type===`code`)return(0,B.jsx)(`pre`,{className:`personal-md-pre`,children:(0,B.jsx)(`code`,{children:e.text})},n);if(e.type===`heading`)return(0,B.jsx)(`p`,{className:`personal-md-heading is-h${e.level}`,children:ib(e.text,n)},n);if(e.type===`list`){let t=e.items.map((e,t)=>(0,B.jsx)(`li`,{children:ib(e,`${n}-${t}`)},`${n}-${t}`));return e.ordered?(0,B.jsx)(`ol`,{className:`personal-md-list`,children:t},n):(0,B.jsx)(`ul`,{className:`personal-md-list`,children:t},n)}return(0,B.jsx)(`p`,{children:e.lines.map((e,t)=>(0,B.jsxs)(z.Fragment,{children:[t>0?(0,B.jsx)(`br`,{}):null,ib(e,`${n}-${t}`)]},`${n}-${t}`))},n)})})}function lb({onSelect:e,output:t}){let{t:n}=Ji(),r=t.kind===`report`?xm:bm;return(0,B.jsxs)(`button`,{className:`personal-timeline-row personal-output-row`,"data-output-kind":t.kind,"data-testid":`personal-browse-row`,onClick:e,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-row-icon is-output`,children:(0,B.jsx)(r,{size:18})}),(0,B.jsxs)(`span`,{className:`personal-row-copy`,children:[(0,B.jsxs)(`small`,{children:[t.goalTitle??t.goalId,` · `,t.agentLabel??`LoopX`]}),(0,B.jsx)(`strong`,{children:t.title}),t.summary?(0,B.jsx)(`span`,{children:t.summary}):null,t.report?(0,B.jsxs)(`small`,{children:[n(`files.reportDelta`,{added:t.report.addedCount,changed:t.report.changedCount}),` · `,n(`files.verifiedReport`)]}):null]}),t.createdAt?(0,B.jsx)(`time`,{children:t.createdAt}):null,(0,B.jsx)(sm,{size:17})]})}var ub={completed:`runs.completed`,failed:`runs.failed`,interrupted:`runs.interrupted`,queued:`runs.queued`,running:`runs.running`,waiting:`runs.waiting`};function db({onSelect:e,run:t}){let{t:n}=Ji(),r=t.totalSteps>0?Math.min(100,t.completedSteps/t.totalSteps*100):0;return(0,B.jsxs)(`button`,{"aria-label":`${n(`tasks.viewExecution`)}:${t.title}`,className:`personal-timeline-row personal-run-row`,"data-testid":`personal-browse-row`,onClick:e,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-row-icon is-run`,children:(0,B.jsx)(nm,{size:18})}),(0,B.jsxs)(`span`,{className:`personal-run-identity`,children:[(0,B.jsx)(`small`,{children:t.goalTitle}),(0,B.jsx)(`strong`,{children:t.agentLabel})]}),(0,B.jsxs)(`span`,{className:`personal-row-copy`,children:[(0,B.jsx)(`strong`,{children:t.title}),(0,B.jsx)(`small`,{children:t.latestActivity})]}),(0,B.jsxs)(`span`,{className:`personal-run-progress`,"aria-label":`${t.completedSteps}/${t.totalSteps}`,children:[(0,B.jsxs)(`small`,{children:[t.completedSteps,`/`,t.totalSteps]}),(0,B.jsx)(`i`,{children:(0,B.jsx)(`b`,{style:{width:`${r}%`}})})]}),(0,B.jsxs)(`span`,{className:`personal-row-status is-${t.status}`,children:[t.status===`running`?(0,B.jsx)(km,{className:`personal-spin`,size:14}):null,n(ub[t.status])]}),t.sessionId?(0,B.jsx)(`span`,{className:`personal-run-open-label`,children:n(`tasks.viewExecution`)}):null,(0,B.jsx)(sm,{size:17})]})}function fb({onSelect:e,schedule:t}){let{t:n}=Ji(),r=t.scheduleKind===`heartbeat`;return(0,B.jsxs)(`button`,{"aria-label":`${r?`Heartbeat`:n(`tasks.scheduled`)}:${t.label};${t.status??`active`}`,className:`personal-schedule-row`,onClick:e,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-schedule-icon`,children:r?(0,B.jsx)(Vm,{size:17}):(0,B.jsx)(im,{size:17})}),(0,B.jsxs)(`span`,{className:`personal-schedule-copy`,children:[(0,B.jsx)(`small`,{children:n(r?`schedule.heartbeat`:`schedule.monitor`)}),(0,B.jsx)(`strong`,{children:t.label}),(0,B.jsx)(`p`,{children:t.schedule??n(`schedule.summary`)})]}),(0,B.jsx)(`span`,{className:`personal-schedule-status is-${t.status??`active`}`,children:t.status===`paused`?n(`schedule.paused`):n(`schedule.active`)}),(0,B.jsx)(sm,{size:16})]})}function pb({delivery:e}){let{t}=Ji();if(!e)return null;let n=e.status===`delivered`?e.verification===`reconciled_after_restart`?t(`returnDelivery.reconciled`):t(`returnDelivery.delivered`):e.status===`verification_required`?t(`returnDelivery.verifying`):e.status===`explicit_unverified`?t(`returnDelivery.unverified`):t(`returnDelivery.queued`),r=e.status===`delivered`?`delivered`:e.status===`verification_required`?`verification_required`:e.status===`explicit_unverified`?`explicit_unverified`:`queued`;return(0,B.jsx)(`small`,{className:`personal-return-delivery is-${r}`,role:`status`,children:n})}function mb({items:e,onSelect:t,selectedGoal:n}){let{t:r}=Ji();if(e.length===0)return(0,B.jsxs)(`div`,{className:`personal-timeline-empty`,children:[(0,B.jsx)(`span`,{children:(0,B.jsx)(Qm,{size:20})}),(0,B.jsx)(`strong`,{children:r(n?`timeline.emptyGoal`:`timeline.emptyWorkspace`)}),(0,B.jsx)(`p`,{children:r(n?`timeline.emptyGoalDescription`:`timeline.emptyWorkspaceDescription`)})]});let i=[...e].reverse().find(e=>e.kind===`message`&&e.message.role!==`user`||e.kind===`proposal`&&[`applied`,`stale`,`error`,`gated`].includes(e.proposal.status)||e.kind===`run`&&e.run.status===`completed`),a=i?.kind===`message`?`${i.message.agentLabel??r(`header.manager`)}:${i.message.pending?r(`timeline.pending`):i.message.text}`:i?.kind===`proposal`?`${i.proposal.title}:${i.proposal.status}`:i?.kind===`run`?r(`timeline.runCompleted`,{run:i.run.title}):``,o=e.filter(e=>e.kind===`proposal`&&e.proposal.status===`gated`),s=e.filter(e=>e.kind!==`proposal`),c=e.filter(e=>e.kind===`proposal`&&e.proposal.status!==`gated`);function l(e){return e.kind===`attention`?(0,B.jsx)(nb,{attention:e.attention,onSelect:()=>t({item:e.attention,kind:`attention`})},e.id):e.kind===`run`?(0,B.jsx)(db,{onSelect:()=>t({item:e.run,kind:`run`}),run:e.run},e.id):e.kind===`output`?(0,B.jsx)(lb,{onSelect:()=>t({item:e.output,kind:`output`}),output:e.output},e.id):e.kind===`schedule`?(0,B.jsx)(fb,{onSelect:()=>t({item:e.schedule,kind:`schedule`}),schedule:e.schedule},e.id):e.kind===`proposal`?(0,B.jsxs)(`button`,{className:`personal-proposal-row is-${e.proposal.status}`,onClick:()=>t({item:e.proposal,kind:`proposal`}),type:`button`,children:[(0,B.jsx)(`span`,{children:(0,B.jsx)(Qm,{size:17})}),(0,B.jsxs)(`span`,{children:[(0,B.jsxs)(`small`,{children:[e.proposal.actionKind,` · `,e.proposal.status]}),(0,B.jsx)(`strong`,{children:e.proposal.title}),(0,B.jsx)(`p`,{children:e.proposal.impact})]}),(0,B.jsx)(`b`,{children:e.proposal.status===`gated`&&e.proposal.actionKind!==`operation.execute`?r(`timeline.review`):e.proposal.primaryLabel??r(`timeline.reviewAndConfirm`)})]},e.id):(0,B.jsxs)(`article`,{className:`personal-message is-${e.message.role}`,children:[e.message.role===`user`?null:(0,B.jsx)(`span`,{className:`personal-message-avatar`,children:(0,B.jsx)(nm,{size:17})}),(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:e.message.role===`user`?r(`common.you`):e.message.agentLabel??r(`header.manager`)}),e.message.time?(0,B.jsx)(`time`,{children:e.message.time}):null]}),e.message.attachments?.length?(0,B.jsx)(`div`,{className:`personal-message-images`,children:e.message.attachments.map(e=>(0,B.jsx)(`img`,{alt:e.name,src:e.dataUrl},e.id))}):null,e.message.role===`user`?(0,B.jsx)(`p`,{children:e.message.text}):(0,B.jsx)(cb,{text:e.message.text}),e.message.pending?(0,B.jsx)(`span`,{className:`personal-message-pending`,children:r(`timeline.pending`)}):null,(0,B.jsx)(pb,{delivery:e.message.returnDelivery})]})]},e.id)}return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{"aria-atomic":`true`,"aria-live":`polite`,className:`personal-live-region`,role:`status`,children:a}),(0,B.jsxs)(`div`,{className:`personal-channel-timeline`,children:[s.map(l),o.length?(0,B.jsxs)(`details`,{className:`personal-gated-summary`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(`span`,{children:(0,B.jsx)(Qm,{size:16})}),(0,B.jsx)(`strong`,{children:r(`timeline.waitingConfirmation`)}),(0,B.jsx)(`small`,{children:r(`timeline.gateHistory`,{count:o.length})})]}),(0,B.jsx)(`div`,{children:o.map(l)})]}):null,c.map(l)]})]})}function hb({goal:e}){let{t,locale:n}=Ji(),r=n===`zh-CN`?{checkpoint_satisfied:`检查点满足`,checkpoint_fresh:`检查点有效`,path_outcome_valid:`路径决策有效`,evidence_refs_present:`证据引用齐全`,final_outcome_claim_present:`最终成果声明齐全`,no_reported_outcome_gap:`无已报告成果缺口`}:{checkpoint_satisfied:`Checkpoint satisfied`,checkpoint_fresh:`Checkpoint current`,path_outcome_valid:`Valid path decision`,evidence_refs_present:`Evidence refs present`,final_outcome_claim_present:`Final outcome claim present`,no_reported_outcome_gap:`No reported outcome gap`},i={connected:t(`acceptance.connected`),mapped:t(`acceptance.mapped`),refreshed:t(`acceptance.refreshed`),adapter_inspected:t(`acceptance.inspected`),run_recorded:t(`acceptance.recorded`),reward_judged:t(`acceptance.judged`),operator_approved:t(`acceptance.approved`),controller_ready:t(`acceptance.ready`),attention_queue:t(`acceptance.attentionSource`),agent_vision:t(`acceptance.visionSource`),todo_projection:t(`acceptance.todoSource`),current_run:t(`acceptance.runSource`)},a=e=>i[e]??t(`acceptance.unknown`),o=e.acceptanceObservation,s=e.loadState||!o||o.goal_id!==e.goalId||o.coverage===`unavailable`;return(0,B.jsxs)(`section`,{className:`personal-detail-card personal-goal-acceptance`,"aria-label":t(`acceptance.title`),children:[(0,B.jsxs)(`div`,{className:`personal-detail-card-title`,children:[(0,B.jsx)(`h3`,{children:t(`acceptance.title`)}),(0,B.jsx)(`em`,{children:t(`common.readOnly`)})]}),(0,B.jsx)(`p`,{role:`status`,children:t(s?`acceptance.unavailable`:`acceptance.partial`)}),!s&&o?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`h4`,{children:t(`acceptance.gaps`)}),o.acceptance_gaps.length?o.acceptance_gaps.map((e,i)=>(0,B.jsxs)(`div`,{className:`personal-acceptance-observation`,children:[(0,B.jsx)(`p`,{children:e.reason??t(`acceptance.reasonUnknown`)}),e.resolution_hint?(0,B.jsx)(`p`,{children:e.resolution_hint}):null,e.component_checks?(0,B.jsx)(`div`,{children:Object.entries(e.component_checks).map(([e,t])=>(0,B.jsxs)(`p`,{children:[r[e],`: `,n===`zh-CN`?t?`通过`:`未通过`:t?`Passed`:`Failed`]},e))}):null,(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`common.owner`)}),(0,B.jsx)(`dd`,{children:e.owner??t(`acceptance.unknown`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`acceptance.required`)}),(0,B.jsx)(`dd`,{children:e.evidence_required??t(`acceptance.unknown`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`acceptance.observed`)}),(0,B.jsx)(`dd`,{children:e.observed_at??t(`acceptance.unknown`)})]})]})]},`${e.kind}:${e.owner}:${i}`)):(0,B.jsx)(`p`,{children:t(`acceptance.noGaps`)}),(0,B.jsx)(`h4`,{children:t(`acceptance.guards`)}),o.guards.length?o.guards.map((e,n)=>(0,B.jsxs)(`div`,{className:`personal-acceptance-observation`,children:[(0,B.jsx)(`p`,{children:e.reason??t(`acceptance.reasonUnknown`)}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`common.owner`)}),(0,B.jsx)(`dd`,{children:e.owner??t(`acceptance.unknown`)})]}),e.blocks_agent?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`common.agent`)}),(0,B.jsx)(`dd`,{children:e.blocks_agent})]}):null,e.todo_id?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`common.task`)}),(0,B.jsx)(`dd`,{children:e.todo_id})]}):null,(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`acceptance.required`)}),(0,B.jsx)(`dd`,{children:e.evidence_required??t(`acceptance.unknown`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`acceptance.scope`)}),(0,B.jsx)(`dd`,{children:e.decision_scope??t(`acceptance.unknown`)})]})]})]},`${e.todo_id}:${n}`)):(0,B.jsx)(`p`,{children:t(`acceptance.noGuards`)}),(0,B.jsx)(`h4`,{children:t(`acceptance.next`)}),(0,B.jsx)(`p`,{children:o.next_action??t(`acceptance.unknown`)}),(0,B.jsxs)(`details`,{children:[(0,B.jsxs)(`summary`,{children:[t(`acceptance.historical_progress`),` · `,o.historical_progress.length]}),(0,B.jsx)(`p`,{children:t(`acceptance.historical`)}),o.historical_progress.map(e=>(0,B.jsxs)(`p`,{children:[(0,B.jsx)(`strong`,{children:a(e.kind)}),` · `,e.observed_at??t(`acceptance.unknown`),` `,e.evidence_refs.join(`, `)]},e.kind))]}),o.missing_sources.length?(0,B.jsxs)(`p`,{children:[t(`acceptance.missing`),` `,o.missing_sources.map(a).join(`, `)]}):null,o.truncated?(0,B.jsx)(`p`,{children:t(`acceptance.truncated`)}):null]}):null]})}function gb({item:e,successor:t,onSelect:n}){let{t:r}=Ji(),i=e.details;return(0,B.jsxs)(`section`,{className:`personal-detail-card`,"aria-label":r(`attentionDetail.title`),children:[(0,B.jsx)(`h3`,{children:r(`attentionDetail.title`)}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`attentionDetail.request`)}),(0,B.jsx)(`dd`,{children:r(i?.interaction===`decision`?`attentionDetail.decision`:`attentionDetail.unknownRequest`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`common.status`)}),(0,B.jsx)(`dd`,{children:r(`attentionDetail.${i?.lifecycle??`unknown`}`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`drawer.reason`)}),(0,B.jsx)(`dd`,{children:i?.reason??e.explanation??r(`attentionDetail.unknownReason`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Todo`}),(0,B.jsx)(`dd`,{children:e.todoId})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`attentionDetail.targetTodo`)}),(0,B.jsx)(`dd`,{children:i?.unblocksTodoId??r(`attentionDetail.notProvided`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`attentionDetail.targetAgent`)}),(0,B.jsx)(`dd`,{children:i?.blocksAgent??r(`attentionDetail.notProvided`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`attentionDetail.scope`)}),(0,B.jsx)(`dd`,{children:i?.decisionScope?`${i.decisionScope.kind} · ${i.decisionScope.granularity} · ${i.decisionScope.scopeKey}`:r(`attentionDetail.notProvided`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`drawer.evidence`)}),(0,B.jsx)(`dd`,{children:i?.evidence??e.evidence??r(`drawer.decisionDefaultEvidence`)})]})]}),i?.supersededBy?(0,B.jsxs)(`p`,{children:[r(`attentionDetail.replacement`),`: `,i.supersededBy]}):null,t&&n?(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:()=>n(t),type:`button`,children:r(`attentionDetail.openReplacement`)}):null,(0,B.jsx)(`p`,{children:r(`attentionDetail.boundary`)})]})}function _b(e){return e.replace(/\s+/gu,` `).trim()}function vb(e,t){let n=RegExp(`(?:不要|不需要|无需|禁止|别|暂不|do not\\b|don't\\b|without\\b).{0,10}(?:${t.source})`,`iu`),r=RegExp(`(?:${t.source}).{0,10}(?:不要|不需要|无需|禁止|关闭)`,`iu`),i=RegExp(`disable\\b.{0,10}(?:${t.source})|(?:turn|switch|set)\\b.{0,10}(?:${t.source}).{0,10}\\boff\\b|(?:${t.source})\\s+(?:is\\s+)?disabled\\b`,`iu`);return n.test(e)||r.test(e)||i.test(e)}function yb(e){return/(我现在该做什么|下一步|哪些\s*Goal\s*在等我|需要我|谁在等我|Agent\s*在做什么|当前进度|总结(?:今天)?进展)/iu.test(e)}function bb(e){let t=/(怎么|如何|为什么|给.*建议|分析一下|解释|只读)/u.test(e),n=/(解决一下|修复一下|处理一下|执行一下|改一下|跑(?:一下)?测试|rebase|push|提交|推送)/iu.test(e);return!t&&n&&/(帮我|请|给我|直接|现在|开始|bytedcli|codebase|git|rebase|push|提交|推送)/iu.test(e)}function xb(e){return _b(e).toLowerCase().match(/(?:^|[\s,,;;:((:]|到|至)(?todo_done:todo_[a-z0-9_-]{3,64}|pr_merged:(?:(?:[a-z0-9_.-]{1,80})\/(?:[a-z0-9_.-]{1,100}))?#[1-9][0-9]{0,8}|capacity_available:[a-z][a-z0-9_:-]{0,63}|resume_at:[1-9][0-9]{3}-[0-9]{2}-[0-9]{2}t[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\.[0-9]{1,3})?(?:z|[+-][0-9]{2}:[0-9]{2}))(?=$|[\s,,。;;))])/iu)?.groups?.condition??null}function Sb(e,t){let n=_b(e),r=[],i=t.agents.find(e=>{let t=n.toLowerCase();return t.includes(e.agentId.toLowerCase())||t.includes(e.label.toLowerCase())}),a=t.todos.find(e=>n.includes(e.todoId)||n.includes(e.text)),o=/(刚刚|已经|已)(?:经)?\s*(新增|创建|添加)(?:的)?\s*(todo|待办|任务)/iu.test(n),s=!!t.goalId&&!vb(n,/heartbeat|心跳/iu)&&/(heartbeat|心跳|每天推进|持续推进|daily progress)/iu.test(n);if(!t.goalId&&!vb(n,/goal|目标/iu)&&/(创建|新建|设置|create|start|set up).{0,24}(goal|目标)/iu.test(n)&&r.push({actionKind:`goal.create`,confidence:.97,normalizedParameters:{heartbeat_enabled:!vb(n,/heartbeat|心跳/iu)&&/(heartbeat|心跳|每天推进|持续推进|daily progress)/iu.test(n)}}),t.goalId&&s&&r.push({actionKind:`heartbeat.bind`,confidence:.96,normalizedParameters:{goal_id:t.goalId}}),t.goalId&&!s&&!vb(n,/定时|监控|监测|持续观察|scheduled check|monitor/iu)&&/(定时|监控|监测|每.{0,8}(分钟|小时|天)|持续观察|scheduled check|monitor|every.{0,12}(minute|hour|day)|daily)/iu.test(n)&&r.push({actionKind:`monitor.create`,confidence:.94,normalizedParameters:{goal_id:t.goalId}}),t.goalId&&i&&!vb(n,/绑定|负责|接管|管理/iu)&&/((让|交给).{0,20}(管理|负责|接管).{0,8}(goal|目标)|(绑定).{0,12}(goal|目标)|(goal|目标).{0,12}(交给|绑定|负责|接管))/iu.test(n)&&r.push({actionKind:`agent.bind`,confidence:.96,normalizedParameters:{agent_id:i.agentId,goal_id:t.goalId}}),t.goalId&&!o&&!vb(n,RegExp(`todo|待办|任务`,`iu`))&&/(创建|新建|新增|添加|加一个|记一个).{0,16}(todo|待办|任务)|(todo|待办|任务).{0,12}(创建|新建|新增|添加)|(?:create|add)(?:\s+(?:a|an|new))?\s+(?:todo|task)|(?:todo|task).{0,12}(?:create|add)/iu.test(n)&&r.push({actionKind:`todo.create`,confidence:.94,normalizedParameters:{goal_id:t.goalId}}),t.goalId&&bb(n)&&r.push({actionKind:`todo.create`,confidence:.9,normalizedParameters:{goal_id:t.goalId,start_execution:!0}}),t.goalId&&a){let e=!vb(n,/完成|做完|关闭/u)&&/完成|做完|关闭/u.test(n)?`complete`:!vb(n,/阻塞|卡住/u)&&/阻塞|卡住/u.test(n)?`block`:!vb(n,/暂缓|稍后|推迟/u)&&/暂缓|稍后|推迟/u.test(n)?`defer`:i&&!vb(n,/交给|分配给|改派/u)&&/交给|分配给|改派/u.test(n)?`reassign`:null;if(e){let i=e===`defer`?xb(n):null;if(e===`defer`&&!i)return{actionKind:`todo.update`,confidence:.97,missingFields:[`resume_when`],normalizedParameters:{goal_id:t.goalId,operation:e,todo_id:a.todoId},route:`clarify`};r.push({actionKind:`todo.update`,confidence:.97,normalizedParameters:{goal_id:t.goalId,operation:e,...i?{resume_when:i}:{},todo_id:a.todoId}})}}let c=[...new Map(r.map(e=>[e.actionKind,e])).values()];return c.length>1?{actionKind:null,confidence:.4,missingFields:[`single_intent`],normalizedParameters:{},route:`clarify`}:c.length===1?{...c[0],missingFields:[],route:`typed_action`}:!t.goalId&&yb(n)?{actionKind:null,confidence:.98,missingFields:[],normalizedParameters:{},route:`projection`}:{actionKind:null,confidence:.75,missingFields:[],normalizedParameters:{},route:`agent_chat`}}function Cb(e,t,n){if(!e)return{};if(!t.trim())return{modelConfig:null};let r={model:t.trim()};return n&&(r.reasoning_effort=n),{modelConfig:r}}var wb=[`a[href]`,`button:not([disabled])`,`textarea:not([disabled])`,`select:not([disabled])`,`input:not([disabled])`,`[tabindex]:not([tabindex='-1'])`].join(`,`),Tb=[{key:`drawer.taskBlock`,operation:`block`},{key:`drawer.taskSuccessor`,operation:`successor_create`}],Eb=[{key:`drawer.decisionReject`,resolution:`reject`},{key:`drawer.decisionDefer`,resolution:`defer`}],Db=Array.from({length:32},(e,t)=>t+1),Ob=/^[a-z][a-z0-9_.-]{0,63}$/u;function kb(e){let t=String(e??``).trim().toLowerCase();return Ob.test(t)?t:null}function Ab(e,t){return e.enabled===t.enabled&&e.maxChildren===t.maxChildren&&JSON.stringify(e.modelConfig??null)===JSON.stringify(t.modelConfig??null)&&[...e.allowedDomains].sort((e,t)=>e.localeCompare(t)).join(`\0`)===[...t.allowedDomains].sort((e,t)=>e.localeCompare(t)).join(`\0`)}function jb({agents:e,attentionHistory:t=[],onSelectAttention:n,callbacks:r,goalNotifications:i=[],goals:a=[],inspectorExpanded:o=!1,larkConnections:s=[],onClose:c,onToggleInspectorSize:l,readOnly:u=!1,runs:d=[],selection:f}){let{locale:p,t:m}=Ji(),[h,g]=(0,z.useState)(``),[_,v]=(0,z.useState)(!1),[y,b]=(0,z.useState)(`idle`),[x,S]=(0,z.useState)(`record`),[C,w]=(0,z.useState)([]),[T,E]=(0,z.useState)(null),[D,O]=(0,z.useState)(2),[k,ee]=(0,z.useState)(``),[te,A]=(0,z.useState)(``),[j,M]=(0,z.useState)(`idle`),[ne,N]=(0,z.useState)(null),[P,re]=(0,z.useState)(null),ie=(0,z.useRef)(null),ae=(0,z.useRef)(null),[F,oe]=(0,z.useState)(e.find(e=>e.available)?.agentId??`codex`),[I,se]=(0,z.useState)(``),L=(0,z.useRef)(null),ce=(0,z.useRef)(null),le=(0,z.useRef)(null),ue=(0,z.useRef)(null),de=f.kind===`run`?`run:${f.item.runId}`:f.kind===`proposal`?`proposal:${f.item.previewId}`:f.kind===`todo`?`todo:${f.item.todoId}`:f.kind===`attention`?`attention:${f.item.todoId}`:f.kind===`output`?`output:${f.item.outputId}`:f.kind===`schedule`?`schedule:${f.item.scheduleId}`:`goal:${f.item.goalId}`;(0,z.useEffect)(()=>{b(`idle`),v(!1),S(`record`),se(``);let e=f.kind===`goal`?f.item.subagentExecution:void 0;w(e?.allowedDomains??[]),ee(e?.modelConfig?.model??``),A(e?.modelConfig?.reasoning_effort??``),O(e?.maxChildren?Math.min(e.maxChildren,32):2),E(null),M(`idle`),N(null),re(null),ie.current=e??null,ae.current=null},[de]);let fe=f.kind===`goal`?f.item.subagentExecution:void 0;(0,z.useEffect)(()=>{let e=ie.current,t=fe?!e||!Ab(e,fe):e!==null;if(ie.current=fe??null,!P){t&&fe&&(w(fe.allowedDomains),ee(fe.modelConfig?.model??``),A(fe.modelConfig?.reasoning_effort??``),O(fe.maxChildren||2),E(null),M(`idle`),N(null));return}let n=ae.current;(!fe||Ab(P,fe)||n&&!Ab(n,fe))&&(fe&&(w(fe.allowedDomains),ee(fe.modelConfig?.model??``),A(fe.modelConfig?.reasoning_effort??``),O(fe.maxChildren||2)),ae.current=null,re(null))},[fe,P]),(0,z.useEffect)(()=>{let e=document.activeElement;e instanceof HTMLElement&&!ce.current?.contains(e)&&(le.current=e);let t=window.requestAnimationFrame(()=>ue.current?.focus());return()=>window.cancelAnimationFrame(t)},[de]);let pe=(0,z.useCallback)(()=>{let e=le.current;c(),window.requestAnimationFrame(()=>e?.focus())},[c]);(0,z.useEffect)(()=>{function e(e){if(e.key===`Escape`){e.preventDefault(),pe();return}if(e.key===`Tab`&&f.kind!==`todo`){let t=Array.from(ce.current?.querySelectorAll(wb)??[]).filter(e=>!e.hasAttribute(`disabled`)&&e.getAttribute(`aria-hidden`)!==`true`);if(t.length===0)return;let n=t[0],r=t[t.length-1];e.shiftKey&&document.activeElement===n?(e.preventDefault(),r.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n.focus())}}return document.addEventListener(`keydown`,e),()=>{document.removeEventListener(`keydown`,e)}},[pe,f.kind]);let me=f.kind===`attention`?m(`drawer.titleAttention`):f.kind===`todo`?m(`drawer.taskDetails`):f.kind===`run`?m(`drawer.runDetails`):f.kind===`output`?m(`drawer.titleOutput`):f.kind===`proposal`?m(f.item.status===`applied`?`drawer.titleProposalApplied`:`drawer.titleProposalConfirm`):f.kind===`schedule`?f.item.scheduleKind===`heartbeat`?`Heartbeat`:m(`drawer.titleSchedule`):m(`drawer.goalDetails`),he=f.kind===`proposal`?f.item.goalId??`manager`:f.item.goalId,ge=f.kind===`attention`?f.item.goalTitle??m(`drawer.currentGoal`):f.kind===`todo`||f.kind===`run`?f.item.goalTitle:f.kind===`output`?f.item.goalTitle??m(`drawer.currentGoal`):f.kind===`goal`?f.item.title:f.kind===`schedule`?m(`drawer.goalAutoRun`):f.item.goalId?m(`drawer.goalChanges`):m(`drawer.managerChanges`),_e=f.kind===`goal`?d.find(e=>e.goalId===f.item.goalId&&!!e.sessionId)??d.find(e=>e.goalId===f.item.goalId):null,ve=f.kind===`run`&&(f.item.completedSteps>0||!!f.item.latestActivity||!!f.item.outputs?.length),ye=f.kind===`attention`?Zi(f.item.updatedAt,m):null,be=xb(I);async function xe(){f.kind!==`run`||!h.trim()||(await r.onCorrectRun?.(f.item,h.trim()),g(``))}async function Se(e,t,n,i){if(t===`successor_create`){await r.onPreviewAction?.({actionKind:`todo.create`,context:{goal_id:e.goalId,kind:`todo`,todo_id:e.todoId},idempotencyKey:`workspace-todo-successor-${e.todoId}-${Date.now().toString(36)}`,normalizedParameters:{goal_id:e.goalId,text:m(`drawer.taskSuccessorText`,{task:e.text})},summary:m(`drawer.taskSuccessorSummary`,{task:e.text})});return}await r.onPreviewAction?.({actionKind:`todo.update`,context:{goal_id:e.goalId,kind:`todo`,todo_id:e.todoId},idempotencyKey:`workspace-todo-${e.todoId}-${t}-${Date.now().toString(36)}`,normalizedParameters:{agent_id:e.claimedBy??F,goal_id:e.goalId,operation:t,...t===`block`?{note:m(`drawer.taskSuccessorNote`)}:{},...t===`defer`&&i?{resume_when:i}:{},todo_id:e.todoId},summary:`${n}:${e.text}`})}async function Ce(e,t,n){u||!Xd(e)||await r.onPreviewAction?.({actionKind:`gate.resolve`,context:{goal_id:e.goalId,kind:`todo`,todo_id:e.todoId},idempotencyKey:`workspace-decision-${e.todoId}-${t}-${Date.now().toString(36)}`,normalizedParameters:{goal_id:e.goalId,decision:t,todo_id:e.todoId},summary:`${n}:${e.text}`})}let we=f.kind===`goal`?P??f.item.subagentExecution??{allowedDomains:[],domainCandidates:[],enabled:!1,maxChildren:0}:{allowedDomains:[],domainCandidates:[],enabled:!1,maxChildren:0},Te=j===`previewing`||j===`applying`,Ee=(()=>{if(f.kind!==`goal`)return[];let e=new Map;for(let t of we.allowedDomains){let n=kb(t);n&&e.set(n,{matchingTodoCount:0,value:n})}if(we.domainCandidates)for(let t of we.domainCandidates){let n=kb(t.domain);if(!n)continue;let r=e.get(n);e.set(n,{matchingTodoCount:(r?.matchingTodoCount??0)+t.matchingTodoCount,value:n})}else for(let t of f.item.agentTodos){if(t.done||t.taskClass!==`advancement_task`)continue;let n=kb(t.taskDomain);if(!n)continue;let r=e.get(n);e.set(n,{matchingTodoCount:(r?.matchingTodoCount??0)+1,value:n})}return[...e.values()]})();function De(){w(we.allowedDomains),ee(we.modelConfig?.model??``),A(we.modelConfig?.reasoning_effort??``),O(we.maxChildren||2),E(null),M(`idle`),N(null)}function Oe(){let e=[...new Set(C.map(e=>kb(e)))];return e.every(e=>!!e)?e:null}function ke(e,t){w(n=>t?[...n,e].filter((e,t,n)=>n.indexOf(e)===t):n.filter(t=>t!==e)),N(null),M(`idle`),E(null)}async function Ae(e,t=e){if(f.kind!==`goal`||!r.onPreviewGoalSubagentConfiguration)return;let n=e?Oe():[];if(t&&!k.trim()&&te){M(`error`),E(m(`drawer.subagentModelRequired`));return}if(e&&!n){M(`error`),E(m(`drawer.subagentDomainInvalid`)),N(null);return}let i={allowedDomains:n??[],enabled:e,goalId:f.item.goalId,maxChildren:e?D:0,...Cb(t,k,te)};M(`previewing`),E(m(`drawer.subagentPreviewing`)),N(null);try{let e=await r.onPreviewGoalSubagentConfiguration(i);if(!e.changed){ae.current=fe??null,re({...e.configuration,domainCandidates:we.domainCandidates}),w(e.configuration.allowedDomains),ee(e.configuration.modelConfig?.model??``),A(e.configuration.modelConfig?.reasoning_effort??``),O(e.configuration.maxChildren||2),M(`success`),E(m(`drawer.subagentNoChange`));return}N({...i,changed:e.changed,previewId:e.previewId}),M(`ready`),E(m(`drawer.subagentPreviewReady`))}catch(e){M(`error`),E(e instanceof Error?e.message:m(`drawer.subagentPreviewFailed`))}}async function R(){if(!(!ne||!r.onApplyGoalSubagentConfiguration)){M(`applying`),E(m(`drawer.subagentApplying`));try{let e=await r.onApplyGoalSubagentConfiguration({allowedDomains:ne.allowedDomains,enabled:ne.enabled,goalId:ne.goalId,maxChildren:ne.maxChildren,modelConfig:ne.modelConfig,previewId:ne.previewId});ae.current=fe??null,re({...e,domainCandidates:we.domainCandidates}),w(e.allowedDomains),ee(e.modelConfig?.model??``),A(e.modelConfig?.reasoning_effort??``),O(e.maxChildren||2),M(`success`),E(m(`drawer.subagentApplied`)),N(null);try{await r.onRefresh?.()}catch{M(`warning`),E(m(`drawer.subagentAppliedRefreshFailed`))}}catch(e){M(`error`),E(e instanceof Error?e.message:m(`drawer.subagentApplyFailed`))}}}return(0,B.jsxs)(`div`,{"aria-labelledby":`personal-drawer-title`,"aria-modal":f.kind===`todo`?void 0:`true`,className:`personal-context-drawer`,"data-context-kind":f.kind,ref:ce,role:`dialog`,children:[(0,B.jsxs)(`header`,{className:`personal-drawer-header${f.kind===`todo`?` is-task-inspector`:``}`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`h2`,{id:`personal-drawer-title`,ref:ue,tabIndex:-1,children:me}),(0,B.jsx)(`p`,{children:ge})]}),(0,B.jsxs)(`div`,{className:`personal-drawer-header-actions`,children:[f.kind===`todo`&&l?(0,B.jsx)(`button`,{"aria-label":m(o?`drawer.inspectorHalf`:`drawer.inspectorFull`),className:`personal-icon-button personal-inspector-size`,onClick:l,title:m(o?`drawer.inspectorHalfView`:`drawer.inspectorFullView`),type:`button`,children:o?(0,B.jsx)(Pm,{size:17}):(0,B.jsx)(Am,{size:17})}):null,(0,B.jsxs)(`button`,{"aria-label":m(`drawer.closeDetail`,{context:ge}),className:`personal-icon-button personal-drawer-close`,onClick:pe,ref:L,type:`button`,children:[(0,B.jsx)(Xp,{className:`personal-mobile-back`,size:18}),(0,B.jsx)(ah,{className:`personal-desktop-close`,size:18})]})]})]}),(0,B.jsxs)(`div`,{className:`personal-drawer-body`,children:[f.kind===`attention`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-detail-card is-attention`,children:[(0,B.jsx)(`small`,{children:f.item.blocking?m(`drawer.attentionBlocking`):m(`drawer.attentionWaiting`)}),(0,B.jsx)(`h3`,{children:f.item.text}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Goal`}),(0,B.jsx)(`dd`,{children:f.item.goalTitle??f.item.goalId})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.priority`)}),(0,B.jsx)(`dd`,{children:f.item.priority??`medium`})]}),ye?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`common.waiting`)}),(0,B.jsx)(`dd`,{children:m(`tasks.waitingAge`,{age:ye})})]}):null]})]}),(0,B.jsx)(gb,{item:f.item,onSelect:n,successor:Yd(f.item,t)}),!u&&Xd(f.item)?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>void Ce(f.item,`approve`,m(`common.confirm`)),type:`button`,children:[(0,B.jsx)(am,{size:17}),m(`drawer.decisionReview`)]}),(0,B.jsxs)(`details`,{className:`personal-compact-menu`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(gm,{size:17}),m(`drawer.decisionMore`)]}),(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`button`,{onClick:()=>void r.onExplainDecision?.(f.item),type:`button`,children:[(0,B.jsx)(Mm,{size:16}),m(`drawer.explainDecision`)]}),Eb.map(e=>(0,B.jsx)(`button`,{onClick:()=>void Ce(f.item,e.resolution,m(e.key)),type:`button`,children:m(e.key)},e.resolution))]})]})]}):null]}):null,f.kind===`todo`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-task-inspector-summary`,children:[(0,B.jsxs)(`div`,{className:`personal-task-inspector-status`,children:[(0,B.jsxs)(`span`,{className:f.item.done?`is-done`:f.item.status===`blocked`?`is-blocked`:`is-open`,children:[(0,B.jsx)(`i`,{}),f.item.done?m(`drawer.taskStatusCompleted`):f.item.status===`deferred`?m(`drawer.taskStatusDeferred`):f.item.status===`blocked`?m(`drawer.taskStatusBlocked`):m(`drawer.taskStatusOpen`)]}),f.item.priority?(0,B.jsx)(`span`,{children:f.item.priority}):null,(0,B.jsx)(`span`,{children:f.item.taskClass===`advancement_task`?m(`drawer.taskAdvancement`):f.item.taskClass??m(`drawer.taskOrdinary`)})]}),(0,B.jsx)(`h3`,{children:f.item.text})]}),(0,B.jsxs)(`section`,{"aria-label":m(`drawer.taskInfo`),className:`personal-task-inspector-fields`,children:[(0,B.jsx)(`h4`,{children:m(`drawer.taskInfo`)}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Goal`}),(0,B.jsx)(`dd`,{children:f.item.goalTitle})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`common.owner`)}),(0,B.jsx)(`dd`,{children:f.item.ownerLabel??f.item.claimedBy??m(`drawer.notAssigned`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`common.status`)}),(0,B.jsx)(`dd`,{children:f.item.done?m(`drawer.taskStatusCompleted`):f.item.status===`deferred`?m(`drawer.taskStatusDeferred`):f.item.status===`blocked`?m(`drawer.taskStatusBlocked`):m(`drawer.taskStatusOpen`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.priority`)}),(0,B.jsx)(`dd`,{children:f.item.priority??m(`drawer.notSet`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.dependencies`)}),(0,B.jsx)(`dd`,{children:f.item.dependencies?.join(` · `)||m(`common.none`)})]}),f.item.status===`deferred`||f.item.resumeWhen?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.resumeWhen`)}),(0,B.jsx)(`dd`,{children:f.item.resumeWhen||m(`drawer.notSet`)})]}):null,f.item.resumeWhen?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.resumeState`)}),(0,B.jsx)(`dd`,{children:f.item.resumeReady?m(`drawer.resumeReady`):m(`drawer.resumePending`)})]}):null,f.item.resumeReceiptId?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.resumeReceipt`)}),(0,B.jsx)(`dd`,{children:f.item.resumeReceiptId})]}):null,(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.nextTransition`)}),(0,B.jsx)(`dd`,{children:f.item.nextTransition??(f.item.done?m(`drawer.taskNextCompleted`):f.item.resumeReady?m(`drawer.taskNextResumeReady`):f.item.status===`deferred`?m(`drawer.taskNextDeferred`):m(`drawer.taskNextOpen`))})]})]})]}),!u&&!f.item.done?(0,B.jsxs)(`div`,{className:`personal-task-inspector-actions`,"aria-label":m(`drawer.taskActions`),children:[(0,B.jsxs)(`details`,{className:`personal-task-management`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(gm,{size:16}),m(`drawer.taskManage`)]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:m(`drawer.reassign`)}),(0,B.jsxs)(`label`,{className:`personal-inline-agent-select`,children:[m(`drawer.reassign`),(0,B.jsx)(`select`,{"aria-label":m(`drawer.reassign`),onChange:e=>oe(e.target.value),value:F,children:e.filter(e=>e.available).map(e=>(0,B.jsx)(`option`,{value:e.agentId,children:e.label},e.agentId))}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onPreviewAction?.({actionKind:`todo.update`,context:{goal_id:f.item.goalId,kind:`todo`,todo_id:f.item.todoId},idempotencyKey:`workspace-todo-${f.item.todoId}-reassign-${F}-${Date.now().toString(36)}`,normalizedParameters:{agent_id:F,goal_id:f.item.goalId,operation:`reassign`,todo_id:f.item.todoId},summary:m(`drawer.reassignSummary`,{task:f.item.text})}),type:`button`,children:m(`timeline.review`)})]}),(0,B.jsx)(`strong`,{children:m(`drawer.taskDeferUntil`)}),(0,B.jsxs)(`label`,{className:`personal-inline-agent-select personal-inline-resume-when`,children:[m(`drawer.taskDeferUntil`),(0,B.jsx)(`input`,{"aria-label":m(`drawer.taskDeferCondition`),"aria-invalid":!!I.trim()&&!be,onChange:e=>se(e.target.value),placeholder:m(`drawer.taskDeferPlaceholder`),value:I}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,disabled:!be,onClick:()=>void Se(f.item,`defer`,m(`drawer.taskDefer`),be??void 0),type:`button`,children:m(`drawer.taskDeferReview`)}),(0,B.jsx)(`small`,{children:I.trim()&&!be?m(`drawer.taskDeferInvalid`):m(`drawer.taskDeferSupported`)})]}),(0,B.jsx)(`div`,{className:`personal-task-management-secondary`,children:Tb.map(e=>(0,B.jsx)(`button`,{onClick:()=>void Se(f.item,e.operation,m(e.key)),type:`button`,children:m(e.key)},e.operation))})]})]}),(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>void Se(f.item,`complete`,m(`drawer.taskComplete`)),type:`button`,children:[(0,B.jsx)(am,{size:17}),m(`drawer.taskComplete`)]})]}):null,f.item.done?(0,B.jsxs)(`div`,{className:`personal-task-completed-note`,children:[(0,B.jsx)(am,{size:16}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:m(`drawer.taskCompletedTitle`)}),(0,B.jsx)(`small`,{children:m(`drawer.taskCompletedNote`)})]})]}):null]}):null,f.kind===`goal`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-detail-card`,children:[(0,B.jsx)(`small`,{children:Yi(f.item.state,p)}),(0,B.jsx)(`h3`,{children:f.item.title}),(0,B.jsx)(`p`,{children:f.item.agentSentence}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.tokens`)}),(0,B.jsxs)(`dd`,{children:[Zy(f.item.usage?.tokens24h,m(`drawer.usageNotMeasured`),Jy),` / `,Zy(f.item.usage?.tokens7d,m(`drawer.usageNotMeasured`),Jy)]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.cost`)}),(0,B.jsxs)(`dd`,{children:[Zy(f.item.usage?.costUsd24h,m(`drawer.usageNotMeasured`),Yy),` / `,Zy(f.item.usage?.costUsd7d,m(`drawer.usageNotMeasured`),Yy)]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.duration`)}),(0,B.jsxs)(`dd`,{children:[Zy(f.item.usage?.durationMs24h,m(`drawer.usageNotMeasured`),Xy),` / `,Zy(f.item.usage?.durationMs7d,m(`drawer.usageNotMeasured`),Xy)]})]})]})]}),(0,B.jsx)(hb,{goal:f.item}),(()=>{let e=i.find(e=>e.goalId===f.item.goalId),t=s.find(e=>e.goal_id===f.item.goalId);return(0,B.jsxs)(B.Fragment,{children:[f.item.repository?(0,B.jsxs)(`section`,{className:`personal-detail-card personal-goal-repository`,children:[(0,B.jsxs)(`div`,{className:`personal-detail-card-title`,children:[(0,B.jsx)(`small`,{children:m(`drawer.repository`)}),(0,B.jsx)(`em`,{children:m(`common.readOnly`)})]}),(0,B.jsxs)(`h3`,{children:[(0,B.jsx)(Sm,{size:16}),f.item.repository.label]}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.branch`)}),(0,B.jsx)(`dd`,{children:f.item.repository.branch||`detached`})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Role`}),(0,B.jsx)(`dd`,{children:m(`drawer.repositoryRole`)})]})]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>{let e=navigator.clipboard?.writeText(f.item.repository?.identity??``);if(!e){b(`error`);return}e.then(()=>b(`copied`)).catch(()=>b(`error`))},type:`button`,children:[(0,B.jsx)(pm,{size:15}),m(y===`copied`?`drawer.copyRepositoryDone`:`drawer.copyRepository`)]}),y===`error`?(0,B.jsx)(`p`,{className:`personal-copy-feedback is-error`,role:`status`,children:m(`drawer.copyRepositoryError`)}):y===`copied`?(0,B.jsx)(`p`,{className:`personal-copy-feedback`,role:`status`,children:m(`drawer.copyRepositorySuccess`)}):null]}):null,u?(0,B.jsxs)(`section`,{className:`personal-detail-card personal-goal-notification`,children:[(0,B.jsx)(`small`,{children:m(`drawer.larkConnection`)}),(0,B.jsx)(`h3`,{children:m(`drawer.remoteDetailsUnavailable`)}),(0,B.jsx)(`p`,{children:m(`drawer.remoteDetailsDescription`)})]}):(0,B.jsxs)(`section`,{className:`personal-detail-card personal-goal-notification`,children:[(0,B.jsx)(`small`,{children:m(`drawer.larkConnection`)}),t?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`h3`,{children:[t.app_label,(0,B.jsx)(`span`,{className:`personal-connection-status`,children:m(`drawer.connected`)})]}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.group`)}),(0,B.jsx)(`dd`,{children:t.chat_name})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.topic`)}),(0,B.jsxs)(`dd`,{children:[`# `,t.topic_name]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.trigger`)}),(0,B.jsx)(`dd`,{children:t.incoming_mode===`mentions`?m(`lark.someoneMentions`):m(`lark.allMessages`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.replyMode`)}),(0,B.jsx)(`dd`,{children:m(`lark.topicReply`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.autoNotify`)}),(0,B.jsx)(`dd`,{children:e?.humanGateAutoNotifyEnabled?m(`common.on`):m(`common.off`)})]}),e?.lastNotifiedAt?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.lastNotification`)}),(0,B.jsx)(`dd`,{children:e.lastNotifiedAt})]}):null]})]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`h3`,{children:m(`drawer.larkNotConfigured`)}),(0,B.jsx)(`p`,{children:m(`drawer.larkNotConfiguredDescription`)})]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>r.onOpenNotificationSettings?.(f.item.goalId),type:`button`,children:[(0,B.jsx)(tm,{size:16}),m(t?`drawer.larkConfigure`:`drawer.larkConnect`)]})]})]})})(),(0,B.jsxs)(`section`,{className:`personal-detail-card personal-goal-session`,children:[(0,B.jsx)(`small`,{children:m(`drawer.runDetails`)}),_e?.sessionId?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`h3`,{children:Xi(_e.sessionStatus??_e.status,m)}),(0,B.jsx)(`p`,{children:_e.title}),r.onOpenRunSession?(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>void r.onOpenRunSession?.(_e),type:`button`,children:[(0,B.jsx)(zm,{size:16}),m(`drawer.runLatest`)]}):null]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`h3`,{children:m(`drawer.noRun`)}),(0,B.jsx)(`p`,{children:m(`drawer.noRunDescription`)})]})]}),u?null:(0,B.jsxs)(`div`,{className:`personal-drawer-action-grid`,children:[(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>r.onRequestScheduleConfig?.(`heartbeat`,f.item.goalId),type:`button`,children:[(0,B.jsx)(Vm,{size:16}),m(`drawer.setupHeartbeat`)]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>r.onRequestScheduleConfig?.(`monitor`,f.item.goalId),type:`button`,children:[(0,B.jsx)(im,{size:16}),m(`drawer.scheduleAdd`)]})]}),f.item.subagentExecution?(0,B.jsxs)(`section`,{className:`personal-detail-card personal-goal-subagents`,children:[(0,B.jsxs)(`div`,{className:`personal-subagent-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`small`,{children:m(`drawer.subagentLabel`)}),(0,B.jsxs)(`h3`,{children:[(0,B.jsx)(nm,{size:16}),m(`drawer.subagentTitle`)]})]}),(0,B.jsxs)(`button`,{"aria-checked":we.enabled,"aria-label":m(ne&&j===`ready`?`drawer.subagentPending`:we.enabled?`drawer.subagentDisable`:`drawer.subagentEnable`),className:`personal-subagent-switch`,"data-pending":ne&&j===`ready`?`true`:void 0,disabled:u||Te||!!ne||!r.onPreviewGoalSubagentConfiguration,onClick:()=>void Ae(!we.enabled),role:`switch`,type:`button`,children:[(0,B.jsx)(`span`,{}),m(ne&&j===`ready`?`drawer.subagentPending`:we.enabled?`common.on`:`common.off`)]})]}),(0,B.jsx)(`p`,{children:m(`drawer.subagentDescription`)}),ne&&j===`ready`?(0,B.jsxs)(`div`,{className:`personal-subagent-preview`,children:[(0,B.jsx)(`strong`,{children:m(ne.enabled?`drawer.subagentConfirmEnable`:`drawer.subagentConfirmDisable`)}),(0,B.jsx)(`p`,{children:ne.enabled?m(`drawer.subagentPreviewSummary`,{count:ne.maxChildren,domains:ne.allowedDomains.join(` · `)||m(`drawer.subagentDomainsUnrestricted`)}):m(`drawer.subagentDisableSummary`)}),ne.modelConfig===void 0?null:(0,B.jsxs)(`p`,{children:[m(`drawer.subagentModel`),`: `,ne.modelConfig?.model||m(`drawer.subagentModelDefault`),` · `,ne.modelConfig?.reasoning_effort||m(`drawer.subagentModelDefault`)]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`button`,{className:`personal-primary-action`,onClick:()=>void R(),type:`button`,children:m(`common.confirm`)}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:De,type:`button`,children:m(`common.cancel`)})]})]}):null,T?(0,B.jsxs)(`p`,{className:`personal-subagent-feedback is-${j}`,role:`status`,children:[j===`previewing`||j===`applying`?(0,B.jsx)(Um,{className:`personal-spin`,size:13}):null,T]}):null,(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.subagentModel`)}),(0,B.jsx)(`dd`,{children:we.modelConfig?.model||m(`drawer.subagentModelDefault`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.subagentEffort`)}),(0,B.jsx)(`dd`,{children:we.modelConfig?.reasoning_effort||m(`drawer.subagentModelDefault`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.subagentCurrentBoundary`)}),(0,B.jsx)(`dd`,{children:we.allowedDomains.join(` · `)||m(`drawer.subagentDomainsUnrestricted`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.subagentChildLimit`)}),(0,B.jsx)(`dd`,{children:we.maxChildren||0})]})]}),u?(0,B.jsx)(`p`,{className:`personal-subagent-read-only`,children:m(`drawer.subagentRemoteReadOnly`)}):(0,B.jsxs)(`div`,{className:`personal-subagent-fields`,children:[(0,B.jsxs)(`fieldset`,{className:`personal-subagent-domain-picker`,disabled:Te,children:[(0,B.jsx)(`legend`,{children:m(`drawer.subagentDomains`)}),Ee.length>0?(0,B.jsx)(`div`,{className:`personal-subagent-domain-options`,children:Ee.map(e=>{let t=C.includes(e.value);return(0,B.jsxs)(`label`,{className:`personal-subagent-domain-option${t?` is-selected`:``}`,children:[(0,B.jsx)(`input`,{"aria-label":e.value,checked:t,onChange:t=>ke(e.value,t.target.checked),type:`checkbox`}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.value}),(0,B.jsx)(`small`,{children:m(`drawer.subagentDomainTodoCount`,{count:e.matchingTodoCount})})]})]},e.value)})}):(0,B.jsx)(`p`,{className:`personal-subagent-domain-empty`,children:m(`drawer.subagentDomainsEmpty`)}),(0,B.jsx)(`small`,{children:m(`drawer.subagentDomainsHint`)})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:m(`drawer.subagentModel`)}),(0,B.jsx)(`input`,{"aria-label":m(`drawer.subagentModel`),disabled:Te,value:k,placeholder:`gpt-5.6-luna`,onChange:e=>{ee(e.target.value),N(null),M(`idle`),E(null)}})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:m(`drawer.subagentEffort`)}),(0,B.jsxs)(`select`,{"aria-label":m(`drawer.subagentEffort`),disabled:Te,value:te,onChange:e=>{A(e.target.value),N(null),M(`idle`),E(null)},children:[(0,B.jsx)(`option`,{value:``,children:m(`drawer.subagentModelDefault`)}),[`none`,`minimal`,`low`,`medium`,`high`,`xhigh`,`max`,`ultra`].map(e=>(0,B.jsx)(`option`,{value:e,children:e},e))]})]}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,disabled:Te,type:`button`,onClick:()=>{ee(`gpt-5.6-luna`),A(`max`),N(null),M(`idle`),E(null)},children:m(`drawer.subagentLunaPreset`)}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,disabled:Te,type:`button`,onClick:()=>{ee(``),A(``),N(null),M(`idle`),E(null)},children:m(`drawer.subagentClearModel`)}),(0,B.jsx)(`p`,{children:m(`drawer.subagentModelHint`)}),(0,B.jsxs)(`label`,{className:`personal-subagent-limit-field`,children:[(0,B.jsx)(`span`,{children:m(`drawer.subagentMaxChildren`)}),(0,B.jsx)(`select`,{"aria-label":m(`drawer.subagentMaxChildren`),disabled:Te,onChange:e=>{O(Number(e.target.value)),N(null),M(`idle`),E(null)},value:D,children:Db.map(e=>(0,B.jsx)(`option`,{value:e,children:e},e))})]}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,disabled:Te,onClick:()=>void Ae(we.enabled,!0),type:`button`,children:m(`drawer.subagentPreviewBoundary`)})]})]}):null]}):null,f.kind===`run`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`div`,{"aria-label":m(`drawer.runView`),className:`personal-run-drawer-tabs`,role:`tablist`,children:[(0,B.jsx)(`button`,{"aria-selected":x===`record`,onClick:()=>S(`record`),role:`tab`,type:`button`,children:m(`drawer.executionRecordAndResult`)}),(0,B.jsx)(`button`,{"aria-selected":x===`details`,onClick:()=>S(`details`),role:`tab`,type:`button`,children:m(`drawer.detailsAndActions`)})]}),x===`record`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-detail-card personal-session-summary`,children:[(0,B.jsxs)(`small`,{children:[f.item.agentLabel,` · `,Xi(f.item.sessionStatus??f.item.status,m)]}),(0,B.jsx)(`h3`,{children:f.item.title}),(0,B.jsx)(`p`,{children:f.item.latestActivity}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Goal`}),(0,B.jsx)(`dd`,{children:f.item.goalTitle})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.progress`)}),(0,B.jsxs)(`dd`,{children:[f.item.completedSteps,`/`,f.item.totalSteps]})]})]})]}),(0,B.jsxs)(`section`,{"aria-label":m(`drawer.executionRecord`),className:`personal-session-message-record`,children:[(0,B.jsx)(`h3`,{children:m(`drawer.executionRecord`)}),f.item.sessionMessages?.length?(0,B.jsx)(`ol`,{children:f.item.sessionMessages.map(e=>(0,B.jsxs)(`li`,{className:`is-${e.role}`,children:[(0,B.jsx)(`i`,{}),(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:e.role===`user`?m(`drawer.runRoleUser`):e.role===`assistant`?m(`drawer.runRoleAssistant`):m(`drawer.runRoleSystem`)}),e.createdAt?(0,B.jsx)(`time`,{children:new Date(e.createdAt).toLocaleTimeString(p,{hour:`2-digit`,minute:`2-digit`,hour12:!1})}):null]}),(0,B.jsx)(`p`,{children:e.text})]})]},e.messageId))}):(0,B.jsx)(`p`,{className:`personal-session-empty`,children:ve?m(`drawer.runRecordProjected`,{completed:f.item.completedSteps,outputs:f.item.outputs?.length?m(`drawer.runRecordProjectedOutputs`,{count:f.item.outputs.length}):``,total:f.item.totalSteps}):m(`drawer.runRecordEmpty`)}),f.item.status===`running`?(0,B.jsxs)(`div`,{className:`personal-session-active-step`,children:[(0,B.jsx)(`i`,{}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:m(`drawer.analysis`)}),(0,B.jsx)(`small`,{children:m(`drawer.agentWorking`)})]})]}):null]}),f.item.outputs?.length?(0,B.jsxs)(`section`,{className:`personal-execution-history`,"aria-labelledby":`personal-run-outputs-title`,children:[(0,B.jsx)(`h3`,{id:`personal-run-outputs-title`,children:m(`drawer.outputs`)}),(0,B.jsx)(`ol`,{children:f.item.outputs.map(e=>(0,B.jsx)(`li`,{children:(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.title}),(0,B.jsx)(`small`,{children:e.createdAt??e.kind??m(`files.emptySummary`)})]})},e.outputId))})]}):null]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-detail-card`,children:[(0,B.jsxs)(`small`,{children:[f.item.agentLabel,` · `,Xi(f.item.status,m)]}),(0,B.jsx)(`h3`,{children:f.item.title}),(0,B.jsx)(`p`,{children:f.item.latestActivity}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Goal`}),(0,B.jsx)(`dd`,{children:f.item.goalTitle})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.progress`)}),(0,B.jsxs)(`dd`,{children:[f.item.completedSteps,`/`,f.item.totalSteps]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.sessionStatus`)}),(0,B.jsx)(`dd`,{children:Xi(f.item.sessionStatus??f.item.status,m)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.sessionRecoverable`)}),(0,B.jsx)(`dd`,{children:f.item.resumable===!1?m(`drawer.resumeNo`):m(`drawer.resumeYes`)})]})]})]}),f.item.sessionStatus===`resume_failed`&&!u?(0,B.jsxs)(`section`,{className:`personal-recovery-panel`,"aria-label":m(`drawer.recoveryFailed`),children:[(0,B.jsx)(`strong`,{children:m(`drawer.recoveryFailed`)}),(0,B.jsx)(`p`,{children:m(`drawer.recoveryDescription`)}),(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>void r.onRetryResumeRun?.(f.item),type:`button`,children:[(0,B.jsx)(Um,{size:16}),m(`drawer.recoveryRetry`)]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onStartNewRunSession?.(f.item),type:`button`,children:[(0,B.jsx)(zm,{size:16}),m(`drawer.recoveryNewSession`)]})]}):null,u?null:(0,B.jsxs)(`section`,{className:`personal-correction-panel`,children:[(0,B.jsx)(`header`,{children:(0,B.jsxs)(`span`,{children:[(0,B.jsx)(nm,{size:16}),m(`drawer.correctionLabel`,{agent:f.item.agentLabel})]})}),(0,B.jsx)(`p`,{children:m(`drawer.correctionDescription`)}),(0,B.jsxs)(`div`,{className:`personal-correction-composer`,children:[(0,B.jsx)(`textarea`,{"aria-label":m(`drawer.correctionTextarea`,{agent:f.item.agentLabel,goal:f.item.goalTitle,run:f.item.title}),onChange:e=>g(e.target.value),placeholder:m(`drawer.correctionPlaceholder`),rows:3,value:h}),(0,B.jsx)(`button`,{"aria-label":m(`drawer.correctionSend`),disabled:!h.trim(),onClick:()=>void xe(),type:`button`,children:(0,B.jsx)(Km,{size:16})})]})]}),u?null:(0,B.jsxs)(`details`,{className:`personal-compact-menu personal-run-more`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(gm,{size:17}),m(`drawer.moreRunActions`)]}),(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`button`,{disabled:!f.item.canInterrupt,onClick:()=>void r.onInterruptRun?.(f.item),type:`button`,children:[(0,B.jsx)(Rm,{size:16}),m(`drawer.runInterrupt`)]}),(0,B.jsxs)(`button`,{disabled:f.item.resumable===!1,onClick:()=>void r.onRetryResumeRun?.(f.item),type:`button`,children:[(0,B.jsx)(Um,{size:16}),m(`drawer.recoveryRetry`)]}),(0,B.jsxs)(`button`,{onClick:()=>void r.onStartNewRunSession?.(f.item),type:`button`,children:[(0,B.jsx)(zm,{size:16}),m(`drawer.runNewSession`)]}),(0,B.jsxs)(`button`,{onClick:()=>void r.onCloseRunSession?.(f.item),type:`button`,children:[(0,B.jsx)($m,{size:16}),m(`drawer.runCloseSession`)]})]})]})]})]}):null,f.kind===`output`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-detail-card`,children:[(0,B.jsx)(`small`,{children:f.item.kind??`output`}),(0,B.jsx)(`h3`,{children:f.item.title}),(0,B.jsx)(`p`,{children:f.item.summary??m(`drawer.outputRecorded`)}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Goal`}),(0,B.jsx)(`dd`,{children:f.item.goalTitle??f.item.goalId})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.outputTodo`)}),(0,B.jsx)(`dd`,{children:f.item.todoId??m(`drawer.notLinked`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.outputRun`)}),(0,B.jsx)(`dd`,{children:f.item.runId??m(`drawer.notLinked`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Agent`}),(0,B.jsx)(`dd`,{children:f.item.agentLabel??f.item.agentId??`LoopX`})]})]})]}),f.item.report?(0,B.jsxs)(`section`,{className:`personal-report-detail`,"data-testid":`personal-periodic-report-detail`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsxs)(`span`,{children:[(0,B.jsxs)(`strong`,{children:[`+`,f.item.report.addedCount]}),m(`files.reportAdded`)]}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:f.item.report.changedCount}),m(`files.reportChanged`)]})]}),(0,B.jsxs)(`p`,{children:[f.item.report.periodStartAt,` → `,f.item.report.periodEndAt]}),(0,B.jsx)(`ol`,{children:f.item.report.items.map(e=>(0,B.jsxs)(`li`,{"data-change-kind":e.changeKind,children:[(0,B.jsxs)(`small`,{children:[e.changeKind,` · `,e.status]}),(0,B.jsx)(`strong`,{children:e.title}),(0,B.jsx)(`p`,{children:e.summary})]},e.sourceRef))}),(0,B.jsxs)(`footer`,{children:[(0,B.jsxs)(`span`,{children:[m(`files.reportPublication`),`: `,f.item.report.publicationId]}),(0,B.jsxs)(`span`,{children:[m(`files.reportGeneration`),`: `,f.item.report.generationId]})]})]}):null,f.item.safePreview?(0,B.jsx)(`pre`,{"aria-label":m(`drawer.outputSafePreview`),className:`personal-safe-preview`,children:f.item.safePreview}):(0,B.jsx)(`p`,{className:`personal-preview-unavailable`,children:m(`drawer.previewUnavailable`)}),(0,B.jsxs)(`div`,{className:`personal-drawer-action-grid`,children:[(0,B.jsxs)(`button`,{className:`personal-primary-action`,disabled:!r.onOpenOutput,onClick:()=>{r.onOpenOutput?.(f.item),c()},type:`button`,children:[(0,B.jsx)(_m,{size:16}),m(`files.openConversation`)]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,disabled:!r.onExportOutput,onClick:()=>void r.onExportOutput?.(f.item),type:`button`,children:[(0,B.jsx)(hm,{size:16}),m(`files.exportSummary`)]})]})]}):null,f.kind===`proposal`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-proposal-card`,children:[(0,B.jsxs)(`small`,{children:[f.item.actionKind,` · `,f.item.status]}),(0,B.jsx)(`h3`,{children:f.item.title}),(0,B.jsx)(`p`,{children:f.item.impact}),f.item.reviewPlan?(0,B.jsx)(`p`,{className:`personal-proposal-explainer`,"data-action-review":f.item.reviewPlan.interaction,children:f.item.actionKind===`operation.execute`&&f.item.status===`gated`?m(`actionReview.operation_group_confirmation`):f.item.actionKind===`operation.execute`&&f.item.reviewPlan.reason===`readback_unverified`?m(`actionReview.operation_result_delivery_pending`):m(`actionReview.${f.item.reviewPlan.reason}`)}):null,f.item.status===`ready`?(0,B.jsx)(`p`,{className:`personal-proposal-explainer`,children:m(`drawer.proposalExplainer`)}):null,(0,B.jsx)(`dl`,{children:f.item.fields.map(e=>(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:e.label}),(0,B.jsx)(`dd`,{children:e.value})]},e.key))})]}),f.item.status===`applied`?(0,B.jsxs)(`p`,{className:`personal-proposal-state ${f.item.actionKind===`operation.execute`&&f.item.reviewPlan?.reason===`readback_unverified`?`is-gated`:`is-applied`}`,children:[(0,B.jsx)(am,{size:16}),f.item.actionKind===`operation.execute`?f.item.primaryLabel:f.item.actionKind===`team.plan`?Wy(f.item.teamPlanOutcome??null,m):m(`drawer.proposalApplied`)]}):null,f.item.status===`applied`&&f.item.actionKind===`team.plan`&&(f.item.teamPlanGapLanes?.length??0)>0?(0,B.jsx)(`div`,{className:`personal-proposal-state is-gated`,children:(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:m(`drawer.proposalAppliedUnstaffed`,{count:f.item.teamPlanGapLanes.length})}),(0,B.jsx)(`ul`,{className:`personal-proposal-explainer`,children:f.item.teamPlanGapLanes.map(e=>(0,B.jsx)(`li`,{children:Hy(e,m)},e.laneId))})]})}):null,f.item.status===`applied`&&f.item.actionKind!==`operation.execute`&&f.item.goalId?(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>{let e=f.item.goalId;c(),r.onOpenGoal?.(e)},type:`button`,children:[(0,B.jsx)(_m,{size:16}),f.item.actionKind===`goal.create`?m(`drawer.proposalEnterGoal`):m(`drawer.proposalViewGoal`)]}):null,f.item.status===`stale`?(0,B.jsx)(`p`,{className:`personal-proposal-state is-stale`,children:m(`drawer.proposalStale`)}):null,f.item.status===`error`?(0,B.jsxs)(`div`,{className:`personal-proposal-state is-error`,children:[(0,B.jsx)(`span`,{children:f.item.reviewPlan?.reason===`readback_unverified`?m(`actionReview.readback_unverified`):m(`drawer.proposalApplyFailed`)}),f.item.errorMessage?(0,B.jsx)(`small`,{children:f.item.errorMessage}):null,(0,B.jsx)(`small`,{children:m(`drawer.proposalApplyFailedHint`)})]}):null,f.item.status===`rejected`?(0,B.jsx)(`p`,{className:`personal-proposal-state is-error`,children:m(`drawer.proposalRejected`)}):null,f.item.status===`deferred`?(0,B.jsx)(`p`,{className:`personal-proposal-state is-gated`,children:m(`drawer.proposalDeferred`)}):null,f.item.status===`gated`?(0,B.jsxs)(`div`,{className:`personal-proposal-state is-gated`,children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:f.item.actionKind===`operation.execute`?f.item.primaryLabel:m(`drawer.gateRequiresHost`)}),f.item.actionKind===`operation.execute`?f.item.impact:m(`drawer.gateRequiresHostDescription`)]}),f.item.gate?.nextAction?(0,B.jsx)(`small`,{children:f.item.gate.nextAction}):null]}):null,f.item.status===`gated`&&f.item.actionKind===`gate.resolve`?(()=>{let e=e=>f.item.fields.find(t=>t.key===e)?.value,t=e(`goal_id`),n=e(`todo_id`);return!t||!n?null:(0,B.jsxs)(`section`,{className:`personal-detail-card personal-gate-cli-hint`,children:[(0,B.jsx)(`small`,{children:m(`drawer.gateApproveHint`)}),(0,B.jsxs)(`code`,{children:[`loopx todo complete --goal-id `,t,` --todo-id `,n,` --decision-outcome approve`]}),(0,B.jsx)(`small`,{children:m(`drawer.gateRejectHint`)})]})})():null,!u&&f.item.workspaceCandidates?.length?(0,B.jsx)(`div`,{className:`personal-workspace-candidates`,"aria-label":m(`drawer.workspaceCandidates`),children:f.item.workspaceCandidates.map(e=>(0,B.jsxs)(`button`,{onClick:()=>void r.onSelectWorkspaceCandidate?.(f.item,e.workspaceRef),type:`button`,children:[(0,B.jsx)(`strong`,{children:e.label}),(0,B.jsx)(`small`,{children:e.workspaceRef})]},e.workspaceRef))}):null,!u&&f.item.actionKind!==`operation.execute`&&f.item.status===`error`?(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>void r.onTransitionProposal?.(f.item,`regenerate`),type:`button`,children:[(0,B.jsx)(Um,{size:17}),m(`drawer.proposalRegenerate`)]}):!u&&f.item.actionKind!==`operation.execute`&&f.item.status!==`gated`?(0,B.jsxs)(`button`,{className:`personal-primary-action`,disabled:![`ready`,`deferred`].includes(f.item.status)||f.item.reviewPlan?.canApply===!1,onClick:()=>void r.onApplyProposal?.(f.item),type:`button`,children:[(0,B.jsx)(am,{size:17}),f.item.status===`applying`?m(`drawer.applying`):f.item.primaryLabel??m(`drawer.apply`)]}):null,!u&&f.item.actionKind!==`operation.execute`&&([`stale`,`gated`,`rejected`].includes(f.item.status)||f.item.status===`ready`&&f.item.reviewPlan?.canApply===!1)?(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onTransitionProposal?.(f.item,`regenerate`),type:`button`,children:[(0,B.jsx)(Um,{size:16}),m(`drawer.proposalRecheck`)]}):null,!u&&f.item.actionKind!==`operation.execute`&&[`ready`,`gated`].includes(f.item.status)?(0,B.jsxs)(`div`,{className:`personal-drawer-action-grid`,children:[(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onTransitionProposal?.(f.item,`defer`),type:`button`,children:m(`drawer.proposalDefer`)}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onTransitionProposal?.(f.item,`reject`),type:`button`,children:m(`drawer.decisionReject`)})]}):null,[`applied`,`applying`].includes(f.item.status)?null:(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:c,type:`button`,children:m(`drawer.proposalClose`)})]}):null,f.kind===`schedule`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-detail-card`,children:[(0,B.jsxs)(`small`,{children:[f.item.scheduleKind===`heartbeat`?`Goal Heartbeat`:`continuous_monitor`,` · `,f.item.status??`active`]}),(0,B.jsx)(`h3`,{children:f.item.label}),(0,B.jsx)(`p`,{children:f.item.target??f.item.schedule??m(`drawer.scheduleDefaultTarget`)}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.scheduleTimezone`)}),(0,B.jsx)(`dd`,{children:f.item.timezone??m(`drawer.scheduleLocalTimezone`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.scheduleNext`)}),(0,B.jsx)(`dd`,{children:f.item.nextRunAt??m(`drawer.schedulePending`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.scheduleLast`)}),(0,B.jsx)(`dd`,{children:f.item.previousRunAt??m(`drawer.scheduleNeverRun`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.scheduleNotification`)}),(0,B.jsx)(`dd`,{children:f.item.notificationRule??m(`drawer.scheduleDefaultNotification`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.scheduleStopCondition`)}),(0,B.jsx)(`dd`,{children:f.item.stopCondition??m(`drawer.scheduleDefaultStop`)})]})]})]}),!u&&f.item.scheduleKind===`monitor`?(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>void r.onUpdateSchedule?.(f.item,`run_now`),type:`button`,children:[(0,B.jsx)(zm,{size:16}),m(`drawer.scheduleRunNow`)]}):null,u?null:(0,B.jsxs)(`div`,{className:`personal-drawer-action-grid`,children:[(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onUpdateSchedule?.(f.item,f.item.status===`paused`?`resume`:`pause`),type:`button`,children:[f.item.status===`paused`?(0,B.jsx)(zm,{size:16}):(0,B.jsx)(Rm,{size:16}),f.item.status===`paused`?m(`drawer.scheduleResume`):m(`drawer.schedulePause`)]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onUpdateSchedule?.(f.item,`edit`),type:`button`,children:[(0,B.jsx)(im,{size:16}),m(`drawer.scheduleEdit`)]})]}),u?null:(0,B.jsxs)(`button`,{className:`personal-danger-action`,onClick:()=>void r.onUpdateSchedule?.(f.item,`stop`),type:`button`,children:[(0,B.jsx)($m,{size:16}),m(`drawer.scheduleStop`,{kind:f.item.scheduleKind===`heartbeat`?` Heartbeat`:m(`drawer.titleSchedule`)})]}),(0,B.jsxs)(`section`,{className:`personal-execution-history`,"aria-labelledby":`personal-execution-history-title`,children:[(0,B.jsx)(`h3`,{id:`personal-execution-history-title`,children:m(`drawer.executionHistory`)}),f.item.executionHistory?.length?(0,B.jsx)(`ol`,{children:f.item.executionHistory.map((e,t)=>(0,B.jsxs)(`li`,{children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.label}),(0,B.jsx)(`small`,{children:e.timestamp})]}),(0,B.jsx)(`em`,{className:`is-${e.status}`,children:e.status})]},`${e.timestamp}:${e.runId??t}`))}):(0,B.jsx)(`p`,{children:m(`drawer.noExecutionHistory`)})]})]}):null,f.kind===`run`||f.kind===`proposal`||f.kind===`schedule`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`button`,{"aria-expanded":_,className:`personal-diagnostics-trigger`,onClick:()=>v(e=>!e),type:`button`,children:[(0,B.jsx)(`span`,{children:m(`drawer.advancedDiagnostics`)}),(0,B.jsx)(om,{className:_?`is-open`:``,size:16})]}),_?(0,B.jsxs)(`div`,{className:`personal-diagnostics`,children:[(0,B.jsxs)(`code`,{children:[`goal_id: `,he]}),(0,B.jsxs)(`code`,{children:[`kind: `,f.kind]}),f.kind===`run`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`code`,{children:[`session_id: `,f.item.sessionId??m(`drawer.notLinked`)]}),(0,B.jsxs)(`code`,{children:[`turn_id: `,f.item.turnId??m(`common.none`)]}),(0,B.jsxs)(`code`,{children:[`adapter: `,f.item.agentId]}),(0,B.jsxs)(`code`,{children:[`status: `,f.item.sessionStatus??f.item.status]})]}):f.kind===`proposal`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`code`,{children:[`action: `,f.item.actionKind]}),(0,B.jsxs)(`code`,{children:[`status: `,f.item.status]})]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`code`,{children:[`schedule_id: `,f.item.scheduleId]}),(0,B.jsxs)(`code`,{children:[`status: `,f.item.status??`active`]})]})]}):null]}):null]})]})}var Mb=[`checking`,`connecting`,`downloading`,`installing_app`,`installing_runtime`],Nb={desktop_status_unavailable:[`无法读取 App 更新状态。请重启 App 后再试;若仍失败,请重新安装最新 App。`,`Cannot read the App update status. Restart the App; if this persists, reinstall the latest App.`],update_feed_unavailable:[`此通道的更新源尚未就绪或暂时不可用。可稍后重新检查,当前版本仍可继续使用。`,`This channel's update feed is not ready or temporarily unavailable. Check again later; you can keep using this version.`],update_feed_invalid:[`更新源格式异常。请稍后重新检查。`,`The update feed is invalid. Check again later.`],update_platform_unavailable:[`此通道尚无适用于本机的更新包。`,`This channel has no update package for this platform.`],update_check_timeout:[`检查更新超时。请稍后重试。`,`The update check timed out. Try again later.`],update_network_failed:[`无法连接更新服务器。请检查网络后重试。`,`Cannot reach the update server. Check your connection and retry.`],update_download_or_signature_failed:[`更新包下载或签名校验失败,尚未安装。请重新检查更新。`,`Download or signature verification failed; the update was not installed. Check for updates again.`]};function Pb(e,t=`update_failed`){return{phase:`error`,details:{code:typeof e==`string`&&Object.hasOwn(Nb,e)?e:t}}}function Fb(){let{locale:e}=Ji(),t=e===`zh-CN`,[n,r]=(0,z.useState)(!1),i=(0,z.useRef)(null),[a,o]=(0,z.useState)(`stable`),[s,c]=(0,z.useState)({phase:`idle`}),[l,u]=(0,z.useState)(``),[d,f]=(0,z.useState)(!1),p=(0,z.useRef)(!1),m=window.__TAURI__?.core.invoke,h=Mb.includes(s.phase);(0,z.useEffect)(()=>{let e=i.current;if(!e)return;let t=()=>r(e.matches(`:popover-open`));return e.addEventListener(`toggle`,t),()=>e.removeEventListener(`toggle`,t)},[]),(0,z.useEffect)(()=>{if(!m)return;let e=!0;return m(`desktop_update_status`).then(t=>{if(!e)return;u(t.app_version),f(t.rollback_available===!0),t.state?.phase&&c(t.state);let n=t.state?.details?.channel??(t.app_version.includes(`-main.`)?`main`:`stable`);o(n),t.state?.phase||m(`desktop_update`,{action:`check`,channel:n}).then(t=>{e&&c(t)}).catch(t=>{e&&c(Pb(t))})}).catch(()=>{e&&c(Pb(null,`desktop_status_unavailable`))}),()=>{e=!1}},[m]),(0,z.useEffect)(()=>{if(!m||!h)return;let e=window.setInterval(()=>{m(`desktop_update_status`).then(e=>{e.state?.phase&&c(e.state)}).catch(()=>{})},1e3);return()=>window.clearInterval(e)},[m,h]);async function g(e){if(!(!m||p.current)){p.current=!0,c({phase:e===`check`?`checking`:e===`repair`?`installing_runtime`:`downloading`});try{if(!l){let e=await m(`desktop_update_status`);u(e.app_version),f(e.rollback_available===!0)}c(await m(`desktop_update`,{action:e,channel:a}))}catch(e){c(Pb(e,l?`update_failed`:`desktop_status_unavailable`))}finally{p.current=!1}}}let _={service_error:t?`运行时已安装,但服务尚未连接。可重试更新、修复或恢复上版。`:`Runtime installed, but services are unavailable. Retry updates, repair, or restore the previous version.`,runtime_pairing_required:t?`本机 CLI 运行时与 App 自带运行时不一致。回到 App 启动界面可「更新 App 与运行时」或「回退 CLI」。`:`This host's CLI runtime and the App's bundled runtime differ. On the App boot screen, update both or use the App's runtime.`,idle:t?`App 会检查可用更新,不会自动安装。`:`Updates are checked automatically, never installed without confirmation.`,runtime_required:t?`请完成匹配组件安装,或检查 App 更新。`:`Install matching components or check for an App update.`,connecting:t?`正在连接更新后的服务…`:`Connecting to updated services…`,checking:t?`正在检查更新…`:`Checking for updates…`,available:t?`新版本已就绪,一次更新 App 与匹配的运行时。`:`Update the App and its matching runtime together.`,up_to_date:t?`当前通道暂无更新。`:`No newer update on this channel.`,downloading:t?`正在下载并校验签名…`:`Downloading and verifying signature…`,installing_app:t?`正在安装 App,请保持窗口打开。`:`Installing the App. Keep this window open.`,installing_runtime:t?`正在安装匹配的运行时,请稍候…`:`Installing the matching runtime…`,restart_required:t?`重启后将自动完成运行时安装与服务连接。`:`Restart to finish runtime installation and reconnect services.`,ready:t?`更新完成,服务已就绪。`:`Update completed; services are ready.`,error:Nb[s.details?.code??``]?.[+!t]??(t?`更新未完成。请重试;启动失败可尝试修复当前版本。`:`Update incomplete. Retry; repair this version if startup fails.`)},v=h?t?`正在更新…`:`Updating…`:s.phase===`available`?t?`有可用更新`:`Update available`:s.phase===`restart_required`?t?`重启完成更新`:`Restart to finish`:s.phase===`error`?t?`更新需重试`:`Retry update`:t?`更新 LoopX`:`Update LoopX`;return(0,B.jsxs)(`div`,{className:`personal-desktop-update`,children:[(0,B.jsxs)(`button`,{className:`personal-update-trigger`,type:`button`,"aria-expanded":n,"aria-controls":`desktop-update-panel`,onClick:e=>{i.current?.style.setProperty(`bottom`,`${window.innerHeight-e.currentTarget.getBoundingClientRect().top+8}px`),i.current?.togglePopover()},children:[(0,B.jsx)(hm,{size:16,"aria-hidden":`true`}),(0,B.jsx)(`span`,{children:v}),(0,B.jsx)(cm,{size:14,"aria-hidden":`true`})]}),(0,B.jsxs)(`section`,{ref:i,popover:`auto`,id:`desktop-update-panel`,className:`personal-update-panel`,"aria-label":t?`LoopX 更新`:`LoopX updates`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:t?`LoopX 更新`:`LoopX updates`}),(0,B.jsx)(`button`,{type:`button`,"aria-label":t?`关闭更新面板`:`Close updates`,onClick:()=>i.current?.hidePopover(),children:(0,B.jsx)(ah,{size:16,"aria-hidden":`true`})})]}),(0,B.jsxs)(`small`,{children:[l,` · `,a===`main`?t?`main 预览版`:`main preview`:t?`稳定版`:`Stable`]}),s.details?.version?(0,B.jsxs)(`p`,{children:[t?`目标版本:`:`Target: `,s.details.version]}):null,(0,B.jsxs)(`p`,{role:`status`,"aria-live":`polite`,children:[h?(0,B.jsx)(Hm,{className:`is-spinning`,size:14,"aria-hidden":`true`}):null,_[s.phase]]}),s.phase===`downloading`&&s.details?.total?(0,B.jsx)(`progress`,{"aria-label":t?`下载进度`:`Download progress`,max:s.details.total,value:s.details.received??0}):null,m?(0,B.jsx)(`div`,{className:`personal-update-actions`,children:s.phase===`restart_required`?(0,B.jsx)(`button`,{type:`button`,onClick:()=>void g(`restart`),children:t?`重启完成更新`:`Restart to finish`}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`button`,{type:`button`,disabled:h,onClick:()=>void g(`check`),children:t?`检查更新`:`Check for updates`}),s.phase===`available`?(0,B.jsx)(`button`,{type:`button`,onClick:()=>void g(`apply`),children:t?`更新并准备重启`:`Install update`}):null]})}):(0,B.jsx)(`p`,{children:t?`请在 LoopX App 中更新;浏览器自身无需安装包。`:`Update from the LoopX App; the browser needs no installer.`}),(0,B.jsxs)(`details`,{children:[(0,B.jsx)(`summary`,{children:t?`高级选项`:`Advanced options`}),(0,B.jsxs)(`label`,{children:[t?`更新通道`:`Update channel`,(0,B.jsxs)(`select`,{disabled:h||s.phase===`restart_required`,value:a,onChange:e=>{o(e.target.value),c({phase:`idle`})},children:[(0,B.jsx)(`option`,{value:`stable`,children:t?`稳定版(推荐)`:`Stable (recommended)`}),(0,B.jsx)(`option`,{value:`main`,children:t?`main 预览版`:`main preview`})]})]}),(0,B.jsx)(`p`,{children:t?`App 与匹配的 CLI 一起更新,服务可能短暂断开。不删除 Goal 数据。`:`Updates the App and matching CLI. Services may briefly disconnect. Goal data is not deleted.`}),m?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{children:t?`启动失败时,可重装当前 App 随附的运行时。`:`If startup fails, reinstall this App's bundled runtime.`}),(0,B.jsx)(`button`,{disabled:h||s.phase===`restart_required`,type:`button`,onClick:()=>void g(`repair`),children:t?`修复当前版本`:`Repair this version`})]}):null,m&&d?(0,B.jsxs)(`details`,{children:[(0,B.jsx)(`summary`,{children:t?`恢复上个版本`:`Restore previous version`}),(0,B.jsx)(`p`,{children:t?`将恢复已保留的 App 和它的运行时,需要重启。`:`Restore the retained App and its runtime, then restart.`}),(0,B.jsx)(`button`,{disabled:h,type:`button`,onClick:()=>void g(`rollback`),children:t?`确认恢复上版`:`Restore previous version`})]}):null]})]})]})}var Ib=e=>`loopx-sidebar-goal-order-v1:${encodeURIComponent(e)}`;function Lb(e){try{let t=JSON.parse(e??`null`);return Array.isArray(t)&&t.every(e=>typeof e==`string`)?[...new Set(t)]:[]}catch{return[]}}function Rb(e,t){let n=new Map(t.map((e,t)=>[e,t]));return[...e].sort((e,t)=>(n.get(e.goalId)??1/0)-(n.get(t.goalId)??1/0))}function zb(e,t,n,r,i){if(n===r||!t.includes(n)||!t.includes(r))return e;let a=[...new Set([...e,...t])].filter(e=>e!==n);return a.splice(a.indexOf(r)+Number(i),0,n),a}function Bb(e,t){let n=Ib(t),[r,i]=(0,z.useState)(()=>{try{return Lb(localStorage.getItem(n))}catch{return[]}}),[a,o]=(0,z.useState)(!1),[s,c]=(0,z.useState)(null),[l,u]=(0,z.useState)(null),d=(0,z.useRef)(null),f=(0,z.useRef)(!1),p=Rb(e,r),m=p.map(e=>e.goalId);function h(t,a,s){let l=zb(r,m,t,a,s);if(l===r)return;i(l);let u=Rb(e,l),d=u.findIndex(e=>e.goalId===t),f=u[d];f&&c({title:f.title,position:d+1});try{localStorage.setItem(n,JSON.stringify(l)),o(!1)}catch{o(!0)}}function g(){d.current=null,u(null)}return{sorted:p,target:l,saveFailed:a,lastMoved:s,move:h,moveBy(e,t){let n=p[m.indexOf(e)+t];n&&h(e,n.goalId,t===1)},pointerProps:e=>({onPointerDown(t){f.current=!1,t.pointerType===`mouse`&&t.button===0&&(d.current={id:e,x:t.clientX,y:t.clientY,dragging:!1},t.currentTarget.setPointerCapture(t.pointerId))},onPointerMove(e){let t=d.current;if(!t||!t.dragging&&Math.hypot(e.clientX-t.x,e.clientY-t.y)<6)return;t.dragging=!0,f.current=!0;let n=document.elementFromPoint(e.clientX,e.clientY)?.closest(`[data-reorder-goal]`),r=e.currentTarget.closest(`.personal-goal-list`),i=n?.dataset.reorderGoal;if(!n||!i||!r?.contains(n)||i===t.id){u(null);return}let a=n.getBoundingClientRect();u({id:i,after:e.clientY>a.top+a.height/2})},onPointerUp(){d.current?.dragging&&l&&h(d.current.id,l.id,l.after),g()},onPointerCancel:g,onLostPointerCapture:g,onKeyDown(e){e.key===`Escape`&&g()},onClickCapture(e){f.current&&=(e.preventDefault(),e.stopPropagation(),!1)}})}}var Vb=`/ssh-hosts`,Hb=/^[A-Za-z0-9][A-Za-z0-9._-]{0,254}$/;function Ub(e){return typeof e==`string`&&Hb.test(e.trim())}function Wb(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`SSH Host 列表响应无效。`);let t=e;if(t.ok!==!0||t.schema_version!==`ssh_host_catalog_v0`||!Array.isArray(t.hosts))throw Error(`SSH Host 列表协议不兼容,请更新本机 LoopX 服务。`);let n=new Set;return{hosts:t.hosts.flatMap(e=>{if(!e||typeof e!=`object`||Array.isArray(e))return[];let t=String(e.alias??``).trim();return!Ub(t)||n.has(t)?[]:(n.add(t),[{alias:t}])}),schemaVersion:`ssh_host_catalog_v0`}}async function Gb(e=fetch,t=Vb){let n=await e(t,{cache:`no-store`});if(!n.ok)throw Error(`无法读取本机 SSH Host(HTTP ${n.status})。`);return Wb(await n.json())}function Kb(e,t){let n=e.trim();if(!Ub(n))return{error:`请选择有效的 SSH Host。`};let r=Number(t);return!Number.isInteger(r)||r<1024||r>65535?{error:`本地端口必须是 1024–65535 之间的整数。`}:{command:`ssh -N -L ${r}:127.0.0.1:8766 ${n}`,hostAlias:n,label:n,statusUrl:`http://127.0.0.1:${r}/status.json`}}var qb=`/api/ssh-source/ensure`,Jb=`/api/ssh-source/goal-lifecycle`;async function Yb(e,t){let n=await fetch(qb,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({host_alias:e,local_port:Number(t)})}),r=await n.json().catch(()=>null);if(!n.ok)throw Error(r?.error??`无法建立 SSH 隧道来源。`);if(!r?.ok)throw Error(`无法建立 SSH 隧道来源。`);return r}async function Xb(e,t,n,r,i=fetch){let a=await i(Jb,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({goal_id:t,host_alias:e,operation:n,reason:r})}),o=await a.json().catch(()=>null);if(!a.ok)throw Error(o?.error??`无法更新远端 Goal 生命周期。`);if(!o?.ok||o.schema_version!==`loopx_remote_goal_lifecycle_v1`||o.goal_id!==t||o.host_alias!==e||o.operation!==n||o.activation_state!==(n===`stop`?`stopped`:`active`)||o.projection_verified!==!0)throw Error(`远端 Goal 生命周期回读未验证。`);return o}function Zb({activeSource:e,connectionState:t,errorMessage:n,onAdd:r,onConfiguredHostsLoaded:i,onRemove:a,onSelect:o,sources:s}){let{t:c}=Ji(),[l,u]=(0,z.useState)(!1),[d,f]=(0,z.useState)(null),[p,m]=(0,z.useState)(`configured`),[h,g]=(0,z.useState)([]),[_,v]=(0,z.useState)(null),[y,b]=(0,z.useState)(!1),[x,S]=(0,z.useState)(!1),[C,w]=(0,z.useState)(``),[T,E]=(0,z.useState)(``),[D,O]=(0,z.useState)(`8876`),[k,ee]=(0,z.useState)(``),te=`configured:`,A=[...s.map(e=>({label:e.label,value:e.id})),...h.filter(e=>!s.some(t=>t.label===e.alias)).map(e=>({group:c(`source.configuredGroup`,{count:h.length}),label:e.alias,value:`${te}${e.alias}`}))],j=(0,z.useMemo)(()=>h.some(e=>e.alias===C)?Kb(C,D):{error:c(`source.selectHost`)},[h,C,D,c]);(0,z.useEffect)(()=>{M()},[]);async function M(){b(!0),v(null);try{let e=await Gb();g(e.hosts),i?.(e.hosts.map(e=>e.alias)),w(t=>t||e.hosts[0]?.alias||``),e.hosts.length||v(c(`source.hostEmpty`))}catch(e){v(e instanceof Error?e.message:c(`source.hostLoadError`))}finally{b(!1)}}function ne(){u(!0),m(`configured`),f(null),M()}function N(){u(!1),m(`configured`),v(null),S(!1),w(``),f(null),E(``),O(`8876`),ee(``)}function P(){let e=r({label:T,statusUrl:k});if(e.error){f(e.error);return}N()}function re(){if(`error`in j){f(j.error??c(`source.invalid`));return}let e=r({ensureTunnel:!0,hostAlias:j.hostAlias,label:j.label,statusUrl:j.statusUrl});if(e.error){f(e.error);return}N()}function ie(e){let t=new Set;for(let e of s)try{t.add(new URL(e.statusUrl).port)}catch{}let n=`8877`;for(let e=8877;e<9077;e+=1)if(!t.has(String(e))){n=String(e);break}let i=Kb(e,n);if(`error`in i){f(i.error??c(`source.invalid`));return}let a=r({ensureTunnel:!0,hostAlias:i.hostAlias,label:i.label,statusUrl:i.statusUrl});a.error?f(a.error):f(null),O(n)}async function ae(){if(`error`in j){f(j.error??c(`source.invalid`));return}try{await navigator.clipboard.writeText(j.command),S(!0),f(null)}catch{f(c(`source.copyError`))}}return(0,B.jsxs)(`section`,{"aria-label":c(`source.controlPlane`),className:`personal-status-source`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`span`,{children:`Control plane`}),(0,B.jsx)(`button`,{"aria-label":c(`source.addSsh`),onClick:ne,title:c(`source.add`),type:`button`,children:(0,B.jsx)(Bm,{size:14})})]}),(0,B.jsx)(eb,{ariaLabel:c(`source.select`),className:`personal-status-source-select`,icon:(0,B.jsx)(Jm,{size:15}),onChange:e=>{if(e.startsWith(te)){ie(e.slice(11));return}o(e)},options:A,value:e.id}),(0,B.jsxs)(`div`,{className:`personal-status-source-meta`,children:[(0,B.jsxs)(`span`,{className:`is-${t}`,children:[(0,B.jsx)(`i`,{}),c(t===`loading`?`source.connecting`:t===`error`?`source.notAvailable`:`source.connected`)]}),(0,B.jsx)(`small`,{children:e.readOnly?c(`source.readOnly`):c(`source.localInteractive`)}),e.kind===`ssh_tunnel`?(0,B.jsx)(`button`,{"aria-label":c(`source.remove`,{source:e.label}),onClick:()=>a(e.id),title:c(`source.removeCurrent`),type:`button`,children:(0,B.jsx)(nh,{size:12})}):null]}),n?(0,B.jsx)(`p`,{className:`personal-status-source-error`,role:`alert`,children:n}):null,l?(0,B.jsxs)(`div`,{className:`personal-status-source-form`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:c(`source.addSsh`)}),(0,B.jsx)(`button`,{"aria-label":c(`source.closeForm`),onClick:N,type:`button`,children:(0,B.jsx)(ah,{size:13})})]}),(0,B.jsxs)(`div`,{"aria-label":c(`source.addMethod`),className:`personal-status-source-modes`,role:`tablist`,children:[(0,B.jsx)(`button`,{"aria-selected":p===`configured`,onClick:()=>{m(`configured`),f(null)},role:`tab`,type:`button`,children:c(`source.configured`)}),(0,B.jsx)(`button`,{"aria-selected":p===`manual`,onClick:()=>{m(`manual`),f(null)},role:`tab`,type:`button`,children:c(`source.manual`)})]}),p===`configured`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:c(`source.configuredCount`,{count:h.length})}),(0,B.jsxs)(`span`,{className:`personal-status-source-field-row`,children:[(0,B.jsx)(`input`,{"aria-label":c(`source.host`),disabled:y||!h.length,list:`loopx-configured-ssh-hosts`,onChange:e=>{w(e.target.value),S(!1)},placeholder:c(y?`source.loadingHosts`:`source.hostPlaceholder`),value:C}),(0,B.jsx)(`datalist`,{id:`loopx-configured-ssh-hosts`,children:h.map(e=>(0,B.jsx)(`option`,{value:e.alias},e.alias))}),(0,B.jsx)(`button`,{"aria-label":c(`source.refreshHosts`),disabled:y,onClick:()=>void M(),title:c(`source.refreshHosts`),type:`button`,children:(0,B.jsx)(Wm,{size:13})})]})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:c(`source.localPort`)}),(0,B.jsx)(`input`,{"aria-label":c(`source.localPort`),inputMode:`numeric`,onChange:e=>{O(e.target.value),S(!1)},value:D})]}),(0,B.jsxs)(`div`,{className:`personal-status-source-command`,children:[(0,B.jsx)(`code`,{children:`error`in j?c(`source.tunnelCommandPending`):j.command}),(0,B.jsxs)(`button`,{"aria-label":c(`source.copyCommand`),disabled:`error`in j,onClick:()=>void ae(),type:`button`,children:[(0,B.jsx)(pm,{size:12}),c(x?`source.copied`:`source.copy`)]})]}),_?(0,B.jsx)(`p`,{className:`is-error`,children:_}):null,(0,B.jsx)(`p`,{children:c(`source.description`)}),(0,B.jsx)(`button`,{className:`personal-status-source-add`,disabled:`error`in j,onClick:re,type:`button`,children:c(`source.addConfigured`)})]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:c(`source.name`)}),(0,B.jsx)(`input`,{autoFocus:!0,maxLength:48,onChange:e=>E(e.target.value),placeholder:c(`source.namePlaceholder`),value:T})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:c(`source.statusUrl`)}),(0,B.jsx)(`input`,{onChange:e=>ee(e.target.value),placeholder:`http://127.0.0.1:8876/status.json`,value:k})]}),(0,B.jsx)(`p`,{children:(0,B.jsx)(`code`,{children:`ssh -N -L 8876:127.0.0.1:8766 `})}),(0,B.jsx)(`p`,{children:c(`source.manualDescription`)}),(0,B.jsx)(`button`,{className:`personal-status-source-add`,onClick:P,type:`button`,children:c(`source.addConfigured`)})]}),d?(0,B.jsx)(`p`,{className:`is-error`,role:`alert`,children:d}):null]}):null]})}var Qb={需修复:`is-danger`,等你:`is-warning`,等待条件:`is-info`,推进中:`is-success`,安静运行:`is-quiet`,已完成:`is-quiet`,已停止:`is-stopped`};function $b({attentionCount:e,goals:t,goalArchiveLoadState:n={error:null,phase:`ready`},lifecycleBusyGoalIds:r,goalLifecycleOperations:i,onRequestGoalCreate:a,onOpenSettings:o,onRetryGoalArchive:s,onRequestGoalLifecycle:c,onSelectGoal:l,selectedGoalId:u,statusSourceControl:d}){let{locale:f,t:p}=Ji(),[m,h]=(0,z.useState)(!1),g=Bb(t.filter(e=>e.activationState!==`stopped`),d?.activeSource.statusUrl??`/status.json`),_=g.sorted,v=t.filter(e=>e.activationState===`stopped`),y=e=>!!c&&(!i||i.includes(e)),b=(e,t)=>(0,B.jsxs)(`div`,{className:`personal-goal-row${g.target?.id===e.goalId?g.target.after?` is-drop-after`:` is-drop-before`:``}`,"data-reorder-goal":t?void 0:e.goalId,"data-load-error":e.loadError,children:[(0,B.jsxs)(`button`,{...t?{}:g.pointerProps(e.goalId),title:t?void 0:p(`sidebar.dragGoal`),"aria-current":u===e.goalId?`page`:void 0,className:`personal-goal-link`,onClick:()=>l(e.goalId),type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-goal-state-dot ${e.loadState?``:Qb[e.state]}`}),(0,B.jsxs)(`span`,{className:`personal-goal-link-copy`,children:[(0,B.jsx)(`strong`,{children:e.title}),(0,B.jsxs)(`small`,{children:[e.loadState&&(!t||u===e.goalId)?p(e.loadState===`error`?`startup.goalError`:`startup.goalLoading`):Yi(e.state,f),e.needsYou&&!t?` · ${p(`home.lane.needsYou`)}`:``]})]}),(0,B.jsx)(sm,{size:15})]}),!t&&m?(0,B.jsxs)(`div`,{className:`personal-goal-move-actions`,children:[(0,B.jsx)(`button`,{type:`button`,"aria-label":p(`sidebar.moveUp`,{goal:e.title}),disabled:_[0]?.goalId===e.goalId,onClick:()=>g.moveBy(e.goalId,-1),children:(0,B.jsx)($p,{"aria-hidden":`true`,size:13})}),(0,B.jsx)(`button`,{type:`button`,"aria-label":p(`sidebar.moveDown`,{goal:e.title}),disabled:_.at(-1)?.goalId===e.goalId,onClick:()=>g.moveBy(e.goalId,1),children:(0,B.jsx)(Yp,{"aria-hidden":`true`,size:13})})]}):null,c&&y(t?`resume`:`stop`)?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`button`,{"aria-label":`${p(t?`sidebar.resume`:`sidebar.stop`)} ${e.title}`,"aria-busy":r?.has(e.goalId)||void 0,className:`personal-goal-lifecycle${r?.has(e.goalId)?` is-pending`:``}`,disabled:r?.has(e.goalId),onClick:()=>c(e,t?`resume`:`stop`),title:p(t?`sidebar.resumeGoal`:`sidebar.stopGoal`),type:`button`,children:r?.has(e.goalId)?(0,B.jsx)(km,{size:13}):t?(0,B.jsx)(Um,{size:13}):(0,B.jsx)(Rm,{size:13})}),t&&y(`delete`)?(0,B.jsx)(`button`,{"aria-label":`${p(`sidebar.delete`)} ${e.title}`,className:`personal-goal-lifecycle personal-goal-delete`,onClick:()=>c(e,`delete`),title:p(`sidebar.deleteGoal`),type:`button`,children:(0,B.jsx)(nh,{size:13})}):null]}):null]},e.goalId);return(0,B.jsxs)(`div`,{className:`personal-goal-directory`,children:[(0,B.jsxs)(`div`,{className:`personal-sidebar-brand`,children:[(0,B.jsx)(`span`,{className:`personal-brand-mark`,children:(0,B.jsx)(nm,{size:18})}),(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:`LoopX`})})]}),d?(0,B.jsx)(Zb,{...d}):null,(0,B.jsxs)(`nav`,{"aria-label":p(`home.workspace`),className:`personal-sidebar-nav`,children:[(0,B.jsxs)(`button`,{"aria-current":u===null?`page`:void 0,className:`personal-manager-link`,onClick:()=>l(null),type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-manager-icon`,children:(0,B.jsx)(nm,{size:17})}),(0,B.jsx)(`span`,{children:p(`sidebar.manager`)}),e>0?(0,B.jsx)(`span`,{className:`personal-sidebar-count`,children:e}):null,(0,B.jsx)(sm,{size:15})]}),(0,B.jsxs)(`div`,{className:`personal-sidebar-section-title`,children:[(0,B.jsx)(`span`,{children:`Goals`}),(0,B.jsxs)(`span`,{className:`personal-sidebar-title-actions`,children:[(0,B.jsx)(`small`,{children:_.length}),(0,B.jsx)(`button`,{"aria-label":p(`sidebar.sortGoals`),title:p(`sidebar.sortGoals`),"aria-pressed":m,onClick:()=>h(!m),type:`button`,children:(0,B.jsx)(Qp,{"aria-hidden":`true`,size:15})}),a?(0,B.jsx)(`button`,{"aria-label":p(`sidebar.createGoal`),onClick:a,type:`button`,children:(0,B.jsx)(Bm,{size:15})}):null]})]}),g.saveFailed?(0,B.jsx)(`p`,{role:`status`,children:p(`sidebar.orderNotSaved`)}):null,(0,B.jsx)(`span`,{className:`personal-sr-only`,role:`status`,children:g.lastMoved?p(`sidebar.goalMoved`,{goal:g.lastMoved.title,position:g.lastMoved.position}):``}),(0,B.jsx)(`div`,{className:`personal-goal-list`,children:_.map(e=>b(e,!1))}),v.length||n.phase===`loading`||n.phase===`error`?(0,B.jsxs)(`details`,{className:`personal-stopped-goals`,open:n.phase===`error`||void 0,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(om,{size:13}),(0,B.jsx)(`span`,{children:p(`sidebar.stopped`)}),n.phase===`loading`?(0,B.jsx)(km,{"aria-label":p(`sidebar.stoppedLoading`),className:`is-spinning`,size:13}):(0,B.jsx)(`small`,{children:v.length})]}),(0,B.jsxs)(`div`,{className:`personal-goal-list is-stopped`,children:[n.phase===`error`?(0,B.jsxs)(`div`,{className:`personal-stopped-goal-error`,role:`alert`,children:[(0,B.jsx)(`span`,{children:p(`sidebar.stoppedLoadFailed`)}),s?(0,B.jsx)(`button`,{onClick:s,type:`button`,children:p(`sidebar.retryStopped`)}):null]}):null,v.map(e=>b(e,!0))]})]}):null]}),(0,B.jsxs)(`div`,{className:`personal-sidebar-footer`,children:[(0,B.jsx)(Fb,{}),o?(0,B.jsxs)(`button`,{"aria-label":p(`settings.open`),className:`personal-sidebar-utility`,onClick:o,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-sidebar-utility-icon`,children:(0,B.jsx)(Ym,{size:17})}),(0,B.jsx)(`span`,{className:`personal-sidebar-utility-copy`,children:(0,B.jsx)(`strong`,{children:p(`settings.open`)})}),(0,B.jsx)(sm,{"aria-hidden":`true`,size:15})]}):null]})]})}var ex=J({ok:X(!0),total:G().int().nonnegative(),next_cursor:W().nullable(),items:q(J({todo_id:W(),text:W(),claimed_by:W().nullable(),evidence:W().nullable(),priority:W().nullable(),task_class:W().nullable()})).max(40)});function tx({goal:e,agentId:t,seed:n,enabled:r,listView:i=!1,onSelect:a}){let{t:o}=Ji(),s=(0,z.useId)(),[c,l]=(0,z.useState)(!1),u=!i||c,d=i?96:148,[f,p]=(0,z.useState)(n),[m,h]=(0,z.useState)(t===`all`?e.doneTodoCount??n.length:n.length),[g,_]=(0,z.useState)(void 0),[v,y]=(0,z.useState)(!1),[b,x]=(0,z.useState)(!1),[S,C]=(0,z.useState)(!1),[w,T]=(0,z.useState)({top:0,height:600}),[E,D]=(0,z.useState)(null),O=(0,z.useRef)(null),k=(0,z.useRef)(null),[ee,te]=(0,z.useState)(0);(0,z.useEffect)(()=>{let e=O.current;if(!e)return;let t=new ResizeObserver(()=>T({top:e.scrollTop,height:e.clientHeight}));return t.observe(e),()=>{t.disconnect(),k.current?.abort()}},[]);let A=g===void 0||w.top+w.height>=f.length*d-d*2;(0,z.useEffect)(()=>{if(!r||!u||!A||g===null||b||k.current)return;let n=new AbortController;k.current=n,y(!0);let i=new URLSearchParams({goal_id:e.goalId});t!==`all`&&i.set(`agent_id`,t),g&&i.set(`cursor`,g),fetch(`/api/chat/completed-todos?${i}`,{signal:n.signal}).then(async e=>{if(e.status===409&&C(!0),!e.ok)throw Error(`history unavailable`);let t=ex.parse(await e.json());if(n.signal.aborted)return;let r=t.items.map(e=>({todoId:e.todo_id,text:e.text,claimedBy:e.claimed_by,evidence:e.evidence,priority:e.priority,taskClass:e.task_class,done:!0,status:`done`}));p(e=>g===void 0?r:[...e,...r.filter(t=>!e.some(e=>e.todoId===t.todoId))]),h(t.total),_(t.next_cursor)}).catch(()=>{n.signal.aborted||x(!0)}).finally(()=>{n.signal.aborted||(k.current=null,y(!1))})},[r,u,A,g,b,ee,e.goalId,t,v]),(0,z.useEffect)(()=>{O.current&&(O.current.scrollTop=0),T({top:0,height:O.current?.clientHeight??600}),D(null)},[i]);let j=Math.max(0,Math.floor(w.top/d)-3),M=Math.min(f.length,Math.ceil((w.top+w.height)/d)+3),ne=Array.from({length:Math.max(0,M-j)},(e,t)=>j+t);return E!==null&&El(e=>!e),children:[(0,B.jsx)(`span`,{"aria-hidden":`true`,children:c?`▾`:`▸`}),` `,o(`tasks.completed`)]}):(0,B.jsxs)(`strong`,{children:[(0,B.jsx)(`i`,{"aria-hidden":`true`,className:`personal-kanban-dot tone-done`}),o(`tasks.completed`)]}),(0,B.jsx)(`span`,{children:m})]}),(0,B.jsxs)(`div`,{id:s,hidden:!u,"aria-label":o(`tasks.completed`),className:`personal-task-lane-scroll`,ref:O,role:`region`,tabIndex:0,onScroll:e=>T({top:e.currentTarget.scrollTop,height:e.currentTarget.clientHeight}),children:[(0,B.jsx)(`div`,{className:`personal-completed-window`,style:{height:f.length*d},children:ne.map(t=>{let n=f[t];return(0,B.jsx)(`div`,{className:`personal-task-card personal-completed-row`,style:{top:t*d,height:d},children:(0,B.jsxs)(`button`,{type:`button`,onFocus:()=>D(t),onBlur:()=>D(null),onClick:()=>a({kind:`todo`,item:{...n,goalId:e.goalId,goalTitle:e.title,ownerLabel:n.claimedBy??e.agentLabel??e.agentId}}),children:[(0,B.jsx)(`span`,{className:`is-done`,children:`✓`}),(0,B.jsx)(`strong`,{children:n.text}),(0,B.jsx)(`small`,{children:n.claimedBy??e.agentLabel??e.agentId})]})},n.todoId)})}),(0,B.jsx)(`div`,{className:`personal-completed-footer`,role:`status`,children:v?o(`tasks.historyLoading`):b?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`span`,{children:o(S?`tasks.historyExpired`:`tasks.historyError`)}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>{S&&(_(void 0),O.current&&(O.current.scrollTop=0)),C(!1),x(!1),te(e=>e+1)},children:o(`tasks.historyRetry`)})]}):r?g===null?o(`tasks.historyEnd`):(0,B.jsx)(`button`,{type:`button`,onClick:()=>{O.current&&(O.current.scrollTop=f.length*d)},children:o(`tasks.historyMore`)}):o(`tasks.historyLocalOnly`)})]})]})}function nx({children:e,count:t,label:n,tone:r,listView:i=!1}){let a=(0,z.useId)(),o=(0,z.useRef)(null),s=(0,z.useRef)([]),c=(0,z.useRef)(null),[l,u]=(0,z.useState)({after:!1,before:!1}),d=(0,z.useCallback)(()=>{let e=o.current;if(!e)return;let t={after:Math.max(0,e.scrollHeight-e.clientHeight)-e.scrollTop>1,before:e.scrollTop>1};u(e=>e.after===t.after&&e.before===t.before?e:t)},[]);return(0,z.useEffect)(()=>{let e=o.current;if(!e)return;let t=new ResizeObserver(d);return c.current=t,t.observe(e),e.addEventListener(`scroll`,d,{passive:!0}),d(),()=>{t.disconnect(),c.current=null,s.current=[],e.removeEventListener(`scroll`,d)}},[i,d]),(0,z.useEffect)(()=>{let e=o.current,t=c.current;if(!e||!t)return;for(let e of s.current)t.unobserve(e);let n=Array.from(e.children).filter(e=>e instanceof HTMLElement);for(let e of n)t.observe(e);s.current=n,d()},[e,t,i,d]),i?!t&&r!==`done`?null:(0,B.jsxs)(`details`,{className:`personal-task-group tone-${r}`,open:!0,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(om,{size:16}),(0,B.jsx)(`strong`,{children:n}),(0,B.jsx)(`span`,{children:t})]}),(0,B.jsx)(`div`,{className:`personal-task-list-rows`,children:e})]}):(0,B.jsxs)(`section`,{className:`personal-object-list personal-task-lane`,children:[(0,B.jsxs)(`header`,{id:a,children:[(0,B.jsxs)(`strong`,{children:[(0,B.jsx)(`i`,{"aria-hidden":`true`,className:`personal-kanban-dot tone-${r}`}),n]}),(0,B.jsx)(`span`,{children:t})]}),(0,B.jsx)(`div`,{"aria-labelledby":a,className:`personal-task-lane-scroll${l.before?` has-overflow-before`:``}${l.after?` has-overflow-after`:``}`,ref:o,role:`region`,tabIndex:t>0?0:-1,children:e})]})}function rx({historyEnabled:e=!1,goal:t,items:n,onDraftTaskFromMessage:r,onOpenChat:i,onQuickComplete:a,quickCompletingTodoIds:o,onSelect:s,selectedTodoId:c=null,userTodos:l}){let{t:u}=Ji(),[d,f]=(0,z.useState)(!1),[p,m]=(0,z.useState)({goalId:``,laneId:`all`}),h=(0,z.useRef)(null);(0,z.useEffect)(()=>{if(!c)return;let e=window.requestAnimationFrame(()=>h.current?.scrollIntoView({block:`nearest`,inline:`nearest`}));return()=>window.cancelAnimationFrame(e)},[c]);let g=l.filter(e=>e.goalId===t.goalId).map(e=>({...e,goalTitle:t.title})),_=e=>e.priority===`P0`?0:e.priority===`P1`?1:e.priority===`P2`?2:3,v=(0,z.useMemo)(()=>{let e=new Map((t.agentLanes??[]).map(e=>[e.agentId,e]));for(let n of t.agentTodos)n.claimedBy&&!e.has(n.claimedBy)&&e.set(n.claimedBy,{agentId:n.claimedBy,label:n.claimedBy});return[...e.values()]},[t.agentLanes,t.agentTodos]),y=p.goalId===t.goalId&&v.some(e=>e.agentId===p.laneId)?p.laneId:`all`,b=e=>y===`all`||e===y,x=t.agentTodos.filter(e=>e.taskClass!==`continuous_monitor`&&!e.done).filter(e=>b(e.claimedBy)).sort((e,t)=>_(e)-_(t)),S=t.agentTodos.filter(e=>e.taskClass!==`continuous_monitor`&&e.done).filter(e=>b(e.claimedBy)),C=n.filter(e=>e.kind===`schedule`&&b(e.schedule.agentId)),w=n.filter(e=>e.kind===`run`&&!!e.run.todoId&&b(e.run.agentId)),T=!g.length&&!x.length&&!S.length&&!C.length,E=n.filter(e=>e.kind===`message`&&(e.message.role===`user`||e.message.role===`assistant`)),D=E.reduce((e,t,n)=>t.message.role===`user`?n:e,-1),O=D>=0?E[D]?.message:null,k=D>=0?E.slice(D+1).reverse().find(e=>e.message.role===`assistant`)?.message:null,ee=D>=0&&E.slice(D+1).some(e=>e.message.role===`assistant`&&e.message.pending);return(0,B.jsxs)(`section`,{"aria-label":u(`header.tasks`),className:`personal-task-board${d?` is-list-view`:``}`,children:[(0,B.jsxs)(`header`,{className:`personal-task-view-toolbar`,children:[(0,B.jsx)(`div`,{children:(0,B.jsx)(`strong`,{children:u(`header.tasks`)})}),(0,B.jsxs)(`div`,{className:`personal-task-view-switch`,role:`group`,"aria-label":u(`tasks.viewLabel`),children:[(0,B.jsx)(`button`,{type:`button`,"aria-pressed":d,onClick:()=>f(!0),children:u(`tasks.listView`)}),(0,B.jsx)(`button`,{type:`button`,"aria-pressed":!d,onClick:()=>f(!1),children:u(`tasks.boardView`)})]})]}),v.length>1?(0,B.jsxs)(`section`,{"aria-label":u(`tasks.agentLaneFilter`),className:`personal-task-lane-filter`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(nm,{size:15}),(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:u(`tasks.agentLane`)})})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{className:`sr-only`,children:u(`tasks.agentLaneFilter`)}),(0,B.jsxs)(`select`,{"aria-label":u(`tasks.agentLaneFilter`),onChange:e=>m({goalId:t.goalId,laneId:e.target.value}),value:y,children:[(0,B.jsx)(`option`,{value:`all`,children:u(`tasks.allAgentLanes`,{count:v.length})}),v.map(e=>(0,B.jsx)(`option`,{value:e.agentId,children:e.label},e.agentId))]}),(0,B.jsx)(om,{"aria-hidden":!0,size:14})]})]}):null,O?(0,B.jsxs)(`section`,{"aria-label":u(`tasks.chatRecent`),className:`personal-task-chat-receipt`,children:[(0,B.jsx)(`span`,{className:`personal-task-chat-icon`,children:(0,B.jsx)(Nm,{size:18})}),(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:u(ee?`tasks.chatPending`:k?`tasks.chatAgentReplied`:`tasks.chatRecent`)}),(0,B.jsx)(`small`,{children:t.agentLabel??t.agentId})]}),(0,B.jsxs)(`p`,{className:`is-user`,children:[(0,B.jsx)(`b`,{children:u(`common.you`)}),O.text]}),k&&!k.pending?(0,B.jsxs)(`p`,{className:`is-assistant`,children:[(0,B.jsx)(`b`,{children:u(`common.agent`)}),k.text]}):null,(0,B.jsx)(`small`,{children:u(ee?`tasks.chatPendingDescription`:`tasks.chatUnchangedDescription`)})]}),(0,B.jsxs)(`footer`,{children:[(0,B.jsxs)(`button`,{onClick:i,type:`button`,children:[(0,B.jsx)(Nm,{size:14}),u(`tasks.chatViewReply`)]}),k&&!ee&&r?(0,B.jsxs)(`button`,{onClick:()=>r(k.text),type:`button`,children:[(0,B.jsx)(Om,{size:14}),u(`tasks.convertToTask`)]}):null]})]}):null,(0,B.jsxs)(`div`,{className:d?`personal-task-grouped-list`:`personal-task-kanban`,children:[(0,B.jsxs)(nx,{listView:d,count:g.length,label:u(`timeline.waitingConfirmation`),tone:`attention`,children:[g.map(e=>{let t=Zi(e.updatedAt,u);return(0,B.jsxs)(`button`,{onClick:()=>s({item:e,kind:`attention`}),type:`button`,children:[(0,B.jsx)(`span`,{"aria-hidden":`true`,className:`is-attention`,children:`!`}),(0,B.jsx)(`strong`,{children:e.text}),(0,B.jsxs)(`small`,{children:[(0,B.jsx)(`span`,{className:`personal-row-status ${e.blocking?`is-blocking`:`is-pending`}`,children:e.blocking?u(`tasks.blocked`):u(`tasks.pending`)}),t?(0,B.jsx)(`span`,{className:`personal-task-age`,children:u(`tasks.waitingAge`,{age:t})}):null]})]},e.todoId)}),g.length?null:(0,B.jsx)(`p`,{className:`personal-task-empty`,children:u(`tasks.emptyConfirm`)})]}),(0,B.jsxs)(nx,{listView:d,count:x.length,label:u(`tasks.pendingAndRunning`),tone:`progress`,children:[x.map(e=>{let n={...e,goalId:t.goalId,goalTitle:t.title,ownerLabel:e.claimedBy??t.agentLabel??t.agentId},r=w.find(t=>t.run.todoId===e.todoId)?.run;return(0,B.jsxs)(`div`,{className:`personal-task-card${r?` has-session`:``}${c===e.todoId?` is-selected`:``}`,ref:c===e.todoId?e=>{h.current=e}:void 0,children:[(0,B.jsxs)(`button`,{"aria-pressed":c===e.todoId,onClick:()=>s({item:n,kind:`todo`}),type:`button`,children:[(0,B.jsx)(`span`,{children:`○`}),(0,B.jsx)(`strong`,{children:e.text}),(0,B.jsxs)(`small`,{children:[e.priority?(0,B.jsx)(`span`,{className:`personal-priority-badge is-${e.priority.toLowerCase()}`,children:e.priority}):null,e.status===`blocked`?(0,B.jsx)(`span`,{className:`personal-priority-badge is-blocked`,children:u(`tasks.blocked`)}):null,r?(0,B.jsx)(`span`,{className:`personal-task-session-status`,children:r.status===`running`||r.status===`queued`?u(`runs.running`):r.status===`failed`?u(`tasks.sessionError`):u(`common.waiting`)}):null,e.status===`deferred`?(0,B.jsx)(`span`,{className:`personal-task-session-status`,children:u(`drawer.taskStatusDeferred`)}):r?null:(0,B.jsx)(`span`,{className:`personal-task-session-status`,children:u(`tasks.waiting`)}),e.claimedBy??t.agentLabel??t.agentId]})]}),(0,B.jsxs)(`div`,{className:`personal-task-card-actions`,children:[r?(0,B.jsxs)(`button`,{className:`personal-task-session-link`,"aria-label":u(`tasks.openExecution`,{name:e.text}),onClick:()=>s({item:r,kind:`run`}),title:r.status===`completed`?u(`tasks.viewResult`):u(`tasks.viewExecution`),type:`button`,children:[(0,B.jsx)(_m,{size:14}),(0,B.jsx)(`span`,{children:r.status===`completed`?u(`tasks.viewResult`):u(`tasks.viewExecution`)})]}):null,a?(0,B.jsx)(`button`,{"aria-busy":o?.has(e.todoId)||void 0,"aria-label":u(`tasks.markComplete`,{name:e.text}),disabled:o?.has(e.todoId),onClick:()=>void a(n),title:u(`tasks.completed`),type:`button`,children:o?.has(e.todoId)?(0,B.jsx)(km,{className:`personal-spin`,size:14}):(0,B.jsx)(am,{size:14})}):null,(0,B.jsx)(`button`,{"aria-label":u(`tasks.moreActions`,{name:e.text}),onClick:()=>s({item:n,kind:`todo`}),title:u(`common.actions`),type:`button`,children:(0,B.jsx)(gm,{size:14})})]})]},e.todoId)}),x.length?null:(0,B.jsx)(`p`,{className:`personal-task-empty`,children:u(`tasks.emptyRunning`)})]}),(0,B.jsxs)(nx,{listView:d,count:C.length,label:u(`tasks.scheduled`),tone:`schedule`,children:[C.map(e=>(0,B.jsxs)(`button`,{onClick:()=>s({item:e.schedule,kind:`schedule`}),type:`button`,children:[(0,B.jsx)(`span`,{children:`◷`}),(0,B.jsx)(`strong`,{children:e.schedule.label}),(0,B.jsx)(`small`,{children:e.schedule.status===`paused`?u(`schedule.paused`):u(`schedule.active`)})]},e.id)),C.length?null:(0,B.jsx)(`p`,{className:`personal-task-empty`,children:u(`tasks.emptySchedules`)})]}),(0,B.jsx)(tx,{goal:t,agentId:y,seed:S,enabled:e,listView:d,onSelect:s},`${t.goalId}:${y}:${e}`)]}),T?(0,B.jsx)(`p`,{className:`personal-task-empty`,children:u(`tasks.emptyGoal`)}):null]})}function ix(e,t){return{live_steering:{label:t(`lark.ingressSteering`),detail:t(`lark.ingressSteeringDescription`)},session_queue:{label:t(`lark.ingressQueue`),detail:t(`lark.ingressQueueDescription`)},async_inbox:{label:t(`lark.ingressAsync`),detail:t(`lark.ingressAsyncDescription`)},direct_session:{label:t(`lark.ingressLegacy`),detail:t(`lark.ingressLegacyDescription`)}}[e]}function ax(e,t){return e.listener_status===`starting`?{label:t(`lark.health.starting`),detail:t(`lark.health.startingDetail`),state:`not_ready`}:e.listener_status===`retrying`&&e.listener_error_code===`lark_event_source_disconnected`?{label:t(`lark.health.sourceDisconnected`),detail:t(`lark.health.sourceDisconnectedDetail`),state:`not_ready`}:e.listener_status===`retrying`?{label:t(`lark.health.retrying`),detail:t(`lark.health.retryingDetail`),state:`not_ready`}:e.listener_status===`stopped`||e.listener_status===null?{label:t(`lark.health.notStarted`),detail:t(`lark.health.notStartedDetail`),state:`not_ready`}:e.last_event_status===`message_context_permission_required`?{label:t(`lark.health.messageContextPermission`),detail:t(`lark.health.messageContextPermissionDetail`),state:`not_ready`}:e.last_event_status===`processing_failed`?{label:t(`lark.health.processingFailed`),detail:t(`lark.health.processingFailedDetail`),state:`not_ready`}:e.health_error_code===`invalid_routing_state`?{label:t(`lark.health.invalidRouting`),detail:t(`lark.health.invalidRoutingDetail`),state:`not_ready`}:e.last_event_status===`queued_for_agent`?{label:t(`lark.health.queued`),detail:t(`lark.health.queuedDetail`,{agent:e.agent_id??t(`lark.targetAgent`)}),state:`ready`}:e.last_event_status===`context_only_captured`||e.last_event_status===`context_only_already_captured`?{label:t(`lark.health.contextCaptured`),detail:t(`lark.health.contextCapturedDetail`),state:`ready`}:e.last_event_status===`ignored`&&e.last_event_reason===`not_addressed`?{label:t(`lark.health.notAddressed`),detail:t(`lark.health.notAddressedDetail`),state:`ready`}:e.last_event_status===`ignored`&&e.last_event_reason===`self_message`?{label:t(`lark.health.listening`),detail:t(`lark.health.ignoredSelf`),state:`ready`}:e.health_error_code===`lark_event_route_mismatch`||[`chat_mismatch`,`topic_mismatch`,`route_ambiguous`].includes(e.last_event_reason??``)?{label:e.last_event_reason===`route_ambiguous`?t(`lark.health.routeAmbiguous`):t(`lark.health.routeMismatch`),detail:e.last_event_reason===`route_ambiguous`?t(`lark.health.routeAmbiguousDetail`):t(`lark.health.routeMismatchDetail`),state:`not_ready`}:[`invalid_event`,`binding_unavailable`].includes(e.last_event_reason??``)?{label:t(`lark.health.routeUnavailable`),detail:t(`lark.health.routeUnavailableDetail`),state:`not_ready`}:e.last_event_status===`replied_and_acknowledged`?{label:t(`lark.health.listening`),detail:t(`lark.health.eventProcessed`,{events:e.event_count,replies:e.replied_count}),state:`ready`}:e.health_error_code===`lark_event_delivery_unverified`||e.event_count===0?{label:t(`lark.health.eventUnverified`),detail:t(`lark.health.eventUnverifiedDetail`),state:`unverified`}:{label:e.reply_ready?t(`lark.health.listening`):t(`lark.health.unavailable`),detail:t(`lark.health.lastStatus`,{status:e.last_event_status??t(`lark.health.waiting`)}),state:e.reply_ready?`ready`:`not_ready`}}function ox(e){return e.history_permission_guidance?.api_document_url??null}function sx(e,t,n){if(e instanceof Fh){let t=String(e.payload.error_code??``);return{lark_cli_not_installed:n(`lark.error.cliMissing`),lark_cli_not_executable:n(`lark.error.cliExecutable`),lark_cli_start_failed:n(`lark.error.cliStart`),lark_message_permissions_required:n(`lark.error.messagePermissions`),lark_app_required:n(`lark.error.appRequired`),invalid_lark_app:n(`lark.error.invalidApp`),lark_group_lookup_failed:n(`lark.error.groupLookup`),provider_api_failed:n(`lark.error.provider`)}[t]??e.message}return e instanceof Error?e.message:t}function cx({embedded:e=!1,focusGoalConnection:t=!1,goals:n,initialGoalId:r,onChanged:i,onClose:a}){let{t:o}=Ji(),[s,c]=(0,z.useState)(`connections`),[l,u]=(0,z.useState)([]),[d,f]=(0,z.useState)([]),[p,m]=(0,z.useState)(!0),[h,g]=(0,z.useState)(null),[_,v]=(0,z.useState)(``),[y,b]=(0,z.useState)(t),[x,S]=(0,z.useState)(``),[C,w]=(0,z.useState)(r??n[0]?.goalId??``),[T,E]=(0,z.useState)(``),[D,O]=(0,z.useState)([]),[k,ee]=(0,z.useState)(``),[te,A]=(0,z.useState)(!1),[j,M]=(0,z.useState)(null),[ne,N]=(0,z.useState)(`addressed_only`),[P,re]=(0,z.useState)(t&&r?`goal`:`manager`),[ie,ae]=(0,z.useState)(`async_inbox`),[F,oe]=(0,z.useState)(`topic_reply`),[I,se]=(0,z.useState)(``),[L,ce]=(0,z.useState)(!1),[le,ue]=(0,z.useState)({}),[de,fe]=(0,z.useState)(!1),[pe,me]=(0,z.useState)(null),[he,ge]=(0,z.useState)(null),[_e,ve]=(0,z.useState)(null),[ye,be]=(0,z.useState)(null),[xe,Se]=(0,z.useState)(!1),[Ce,we]=(0,z.useState)(`loopx-workspace-bot`),[Te,Ee]=(0,z.useState)(`feishu`),[De,Oe]=(0,z.useState)(null),[ke,Ae]=(0,z.useState)(!1),[R,je]=(0,z.useState)(null),Me=(0,z.useRef)(null),Ne=(0,z.useRef)(null),Pe=(0,z.useRef)(!1);async function Fe(){m(!0),g(null);try{let[e,t]=await Promise.all([Qg(),s_()]);u(e),f(t),S(t=>t||e.find(e=>e.reply_ready)?.app_ref||e.find(e=>e.ready)?.app_ref||e[0]?.app_ref||``)}catch(e){g(sx(e,o(`lark.error.configuration`),o))}finally{m(!1)}}(0,z.useEffect)(()=>{Fe()},[]),(0,z.useEffect)(()=>{if(!t||p||Pe.current||!r)return;Pe.current=!0;let e=d.find(e=>e.goal_id===r);e?Je(e):qe(n.find(e=>e.goalId===r))},[d,t,n,r,p]),(0,z.useEffect)(()=>{if(!y||!x||_e){O([]),ee(``),A(!1),M(null);return}let e=!1;A(!0),M(null);let t=window.setTimeout(()=>{a_(x,T).then(t=>{e||(O(t),ee(e=>t.some(t=>t.chat_id===e)?e:t[0]?.chat_id??``))}).catch(t=>{e||(O([]),ee(``),M(sx(t,o(`lark.error.groupLoad`),o)))}).finally(()=>{e||A(!1)})},180);return()=>{e=!0,window.clearTimeout(t)}},[x,T,y,_e]),(0,z.useEffect)(()=>{if(!xe||!De||[`ready`,`failed`,`cancelled`].includes(De.status))return;let e=!1,t=window.setTimeout(()=>{t_(De.setup_id).then(async t=>{e||(Oe(t),t.verification_url&&Ne.current!==t.verification_url&&(Ne.current=t.verification_url,Me.current&&!Me.current.closed&&(Me.current.location.href=t.verification_url)),t.status===`ready`&&(await Fe(),S(t.app_ref),ue({}),Se(!1)),t.status===`failed`&&je(t.error??o(`lark.error.appCreate`)))}).catch(t=>{e||je(sx(t,o(`lark.error.setupPoll`),o))})},650);return()=>{e=!0,window.clearTimeout(t)}},[xe,De]);let Ie=n.find(e=>e.goalId===C),Le=Ie?.agentId?[{agentId:Ie.agentId,label:Ie.agentLabel??Ie.agentId}]:[],Re=Ie?.agentLanes?.length?Ie.agentLanes:Le,ze=Re.some(e=>e.agentId===I),V=[];L?V=Re.map(e=>({agentId:e.agentId,appRef:le[e.agentId]??x})):ze&&(V=[{agentId:I,appRef:x}]);let Be=V.map(e=>e.agentId),Ve=!!_e||V.length>0&&V.every(e=>l.some(t=>t.app_ref===e.appRef&&t.reply_ready)),He=o(`lark.connect`);he?He=o(`lark.saveConnection`):L&&(He=o(`lark.connectAllAgentsAction`,{count:Be.length}));let Ue=l.find(e=>e.app_ref===x),We=D.find(e=>e.chat_id===k),Ge=(0,z.useMemo)(()=>{let e=_.trim().toLocaleLowerCase();return e?d.filter(t=>[t.app_label,t.chat_name,t.goal_title,t.topic_name].some(t=>t.toLocaleLowerCase().includes(e))):d},[d,_]),Ke=(0,z.useMemo)(()=>d.filter(e=>ax(e,o).state===`unverified`).length,[d,o]);function qe(e){let i=e??n.find(e=>e.goalId===r)??n[0];ge(null),ve(null),re(e||t?`goal`:`manager`),S(l.some(e=>e.app_ref===x)?x:l.find(e=>e.reply_ready)?.app_ref??l[0]?.app_ref??``),ee(``),w(i?.goalId??``),se(i?.agentId??``),ce(!1),ue({}),N(`addressed_only`),ae(`async_inbox`),oe(`topic_reply`),E(``),me(null),b(!0)}function Je(e){ge(e.goal_id),ve(e),re(e.conversation_kind??`goal`),S(e.app_ref),w(e.goal_id);let t=n.find(t=>t.goalId===e.goal_id),r=t?.agentLanes?.length?t.agentLanes:t?.agentId?[{agentId:t.agentId}]:[];se(e.agent_id??(r.length===1?r[0].agentId:``)),ce(!1),ue({}),N(e.capture_scope),ae(e.ingress_mode===`direct_session`?`async_inbox`:e.ingress_mode),oe(e.reply_mode),E(e.chat_name),me(null),b(!0)}function Ye(){Oe(null),je(null),Ne.current=null,Se(!0)}async function Xe(){if(!(ke||!/^[A-Za-z0-9][A-Za-z0-9._-]{0,99}$/.test(Ce))){Ae(!0),je(null),Ne.current=null,Me.current=window.open(window.location.href,`_blank`);try{let e=await e_({appRef:Ce,brand:Te});Oe(e)}catch(e){Me.current?.close(),je(sx(e,o(`lark.error.setupStart`),o))}finally{Ae(!1)}}}async function Ze(){let e=De;if(Se(!1),Me.current?.close(),e&&![`ready`,`failed`,`cancelled`].includes(e.status))try{await n_(e.setup_id)}catch{}}async function Qe(){if(!(!x||!C||!_e&&!We||P===`goal`&&Be.length===0||de)){fe(!0),me(null);try{let e={...P===`manager`?{..._e?{connectionId:_e.connection_id}:{appRef:x,chatId:We.chat_id,chatName:We.chat_name}}:_e?{connectionId:_e.connection_id,agentId:I}:{agentBindings:V,chatId:We.chat_id,chatName:We.chat_name},conversationKind:P,captureScope:P===`manager`?`addressed_only`:ne,goalId:C,incomingMode:ne===`configured_chat_all`?`all`:`mentions`,ingressMode:P===`manager`?`session_queue`:ie,replyMode:F},t=await c_({...e,execute:!1});if(!t.ok)throw new Fh(t.public_summary??t.blocker??o(`lark.error.bindPreview`),{error_code:t.blocker??`provider_api_failed`});let n=await c_({...e,execute:!0});if(!n.ok)throw new Fh(n.public_summary??n.blocker??o(`lark.error.bind`),{error_code:n.blocker??`provider_api_failed`});b(!1),await Fe(),i?.()}catch(e){me(sx(e,o(`lark.error.bind`),o))}finally{fe(!1)}}}async function $e(e,t){if(ye!==t){be(t);return}try{await l_(e,t),be(null),await Fe(),i?.()}catch(e){g(sx(e,o(`lark.error.disconnect`),o))}}return(0,B.jsxs)(`section`,{className:`personal-lark-settings${e?` is-embedded`:``}`,"aria-label":o(`lark.configuration`),children:[e?null:(0,B.jsxs)(`header`,{className:`personal-lark-header`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`small`,{children:o(`settings.goalConnections`)}),(0,B.jsx)(`h1`,{children:`Lark`})]}),(0,B.jsx)(`button`,{"aria-label":o(`lark.closeSettings`),className:`personal-icon-button`,onClick:a,type:`button`,children:(0,B.jsx)(ah,{size:18})})]}),(0,B.jsxs)(`nav`,{className:`personal-lark-tabs`,"aria-label":o(`lark.management`),children:[(0,B.jsxs)(`button`,{"aria-current":s===`apps`?`page`:void 0,onClick:()=>c(`apps`),type:`button`,children:[o(`lark.apps`),` `,(0,B.jsx)(`span`,{children:p?`…`:l.length})]}),(0,B.jsxs)(`button`,{"aria-current":s===`connections`?`page`:void 0,onClick:()=>c(`connections`),type:`button`,children:[o(`lark.connections`),` `,(0,B.jsx)(`span`,{children:p?`…`:d.length})]})]}),h?(0,B.jsx)(`p`,{className:`personal-notification-error`,children:h}):null,p?(0,B.jsxs)(`div`,{className:`personal-lark-loading`,children:[(0,B.jsx)(km,{className:`is-spinning`,size:18}),o(`lark.loading`)]}):null,!p&&s===`apps`?(0,B.jsxs)(`div`,{className:`personal-lark-apps`,children:[(0,B.jsxs)(`div`,{className:`personal-lark-app-toolbar`,children:[(0,B.jsx)(`span`,{children:o(`lark.reusableApps`,{count:l.length})}),(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:Ye,type:`button`,children:[(0,B.jsx)(Bm,{size:16}),o(`lark.newApp`)]})]}),(0,B.jsxs)(`div`,{className:`personal-lark-app-grid`,children:[l.map(e=>(0,B.jsxs)(`article`,{className:`personal-lark-app-card`,children:[(0,B.jsx)(`span`,{className:`personal-lark-app-avatar`,children:(0,B.jsx)(nm,{size:19})}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:e.label}),(0,B.jsxs)(`small`,{children:[e.brand,` · lark-cli profile`]})]}),(0,B.jsx)(`em`,{className:e.reply_ready?`is-ready`:`is-off`,children:e.reply_ready?o(`lark.autoReplyReady`):e.ready?o(`lark.needsMessagePermissions`):o(`lark.needsSetup`)}),(0,B.jsxs)(`p`,{children:[o(`lark.goalConnections`,{count:d.filter(t=>t.app_ref===e.app_ref).length}),e.ready&&!e.reply_ready?` · ${o(`lark.autoReplyUnavailable`)}`:``]})]},e.app_ref)),l.length===0?(0,B.jsx)(`p`,{className:`personal-lark-empty`,children:o(`lark.noProfiles`)}):null]})]}):null,!p&&s===`connections`?(0,B.jsxs)(`div`,{className:`personal-lark-connections`,children:[Ke>0?(0,B.jsxs)(`p`,{className:`personal-lark-route-readiness`,role:`status`,children:[(0,B.jsx)(Nm,{size:15}),o(`lark.routesUnverified`,{count:Ke})]}):null,(0,B.jsxs)(`div`,{className:`personal-lark-toolbar`,children:[(0,B.jsxs)(`label`,{children:[(0,B.jsx)(Gm,{size:16}),(0,B.jsx)(`input`,{"aria-label":o(`lark.searchConnections`),onChange:e=>v(e.target.value),placeholder:o(`lark.searchPlaceholder`),type:`search`,value:_})]}),(0,B.jsxs)(`button`,{className:`personal-primary-action`,disabled:l.length===0||n.length===0,onClick:()=>qe(),type:`button`,children:[(0,B.jsx)(Bm,{size:16}),o(`lark.connectApp`)]})]}),(0,B.jsxs)(`div`,{className:`personal-lark-table`,role:`table`,"aria-label":o(`lark.goalTopicConnections`),children:[(0,B.jsxs)(`div`,{className:`personal-lark-table-head`,role:`row`,children:[(0,B.jsx)(`span`,{children:o(`lark.connection`)}),(0,B.jsx)(`span`,{children:o(`common.goal`)}),(0,B.jsx)(`span`,{children:o(`lark.capture`)}),(0,B.jsx)(`span`,{children:o(`lark.processing`)}),(0,B.jsx)(`span`,{children:o(`common.actions`)})]}),Ge.map(e=>{let t=ax(e,o);return(0,B.jsxs)(`div`,{className:`personal-lark-table-row`,role:`row`,children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.chat_name}),(0,B.jsxs)(`small`,{children:[e.app_label,` · `,t.label]}),(0,B.jsx)(`small`,{children:t.detail}),t.state===`unverified`?(0,B.jsxs)(`a`,{href:`https://open.feishu.cn/document/server-docs/im-v1/message/events/receive?lang=zh-CN`,rel:`noreferrer`,target:`_blank`,children:[(0,B.jsx)(_m,{size:12}),o(`lark.openEventSettings`)]}):null,ox(e)?(0,B.jsxs)(`a`,{href:ox(e)??void 0,rel:`noreferrer`,target:`_blank`,children:[(0,B.jsx)(_m,{size:12}),o(`lark.historyPermission`)]}):null]}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.goal_title}),(0,B.jsxs)(`small`,{children:[`# `,e.topic_name]})]}),(0,B.jsx)(`span`,{children:e.capture_scope===`addressed_only`?o(`lark.mentionsOnly`):o(`lark.allTopicMessages`)}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.conversation_kind===`manager`?o(`lark.managerConversation`):ix(e.ingress_mode,o).label}),(0,B.jsx)(`small`,{children:e.conversation_kind===`manager`?o(`lark.managerConversationDescription`):e.agent_id??ix(e.ingress_mode,o).detail})]}),(0,B.jsxs)(`span`,{className:`personal-lark-row-actions`,children:[(0,B.jsx)(`button`,{"aria-label":o(`lark.settingsConfigure`,{goal:e.goal_title}),onClick:()=>Je(e),type:`button`,children:(0,B.jsx)(Ym,{size:15})}),(0,B.jsxs)(`button`,{"aria-label":o(`lark.settingsDisconnect`,{goal:e.goal_title}),className:ye===e.connection_id?`is-confirm`:``,onClick:()=>void $e(e.goal_id,e.connection_id),type:`button`,children:[(0,B.jsx)(ih,{size:15}),ye===e.connection_id?o(`common.confirm`):null]})]})]},e.connection_id)}),Ge.length===0?(0,B.jsx)(`p`,{className:`personal-lark-empty`,children:o(`lark.noConnections`)}):null]})]}):null,y?(0,B.jsx)(`div`,{className:`personal-lark-modal-backdrop`,role:`presentation`,children:(0,B.jsxs)(`section`,{"aria-labelledby":`connect-lark-title`,"aria-modal":`true`,className:`personal-lark-modal`,role:`dialog`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`small`,{children:`Goal Topic connection`}),(0,B.jsx)(`h2`,{id:`connect-lark-title`,children:o(he?`lark.editConnection`:`lark.connectApp`)})]}),(0,B.jsx)(`button`,{"aria-label":o(`lark.closeConnection`),onClick:()=>b(!1),type:`button`,children:(0,B.jsx)(ah,{size:18})})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.conversationKind`)}),(0,B.jsxs)(`select`,{"aria-label":o(`lark.conversationKind`),disabled:!!_e,value:P,onChange:e=>re(e.target.value),children:[(0,B.jsx)(`option`,{value:`manager`,children:o(`lark.managerConversation`)}),(0,B.jsx)(`option`,{value:`goal`,children:o(`lark.workerConversation`)})]})]}),P===`manager`?(0,B.jsx)(`p`,{children:o(`lark.managerConversationDescription`)}):null,_e?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.appProfile`)}),(0,B.jsx)(`div`,{children:_e.app_label})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.groupChat`)}),(0,B.jsx)(`div`,{children:_e.chat_name})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.bindGoal`)}),(0,B.jsx)(`div`,{children:_e.goal_title})]}),(0,B.jsx)(`small`,{children:o(`lark.editPreservesIdentity`)})]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.appProfile`)}),(0,B.jsx)(`select`,{"aria-label":o(`lark.appProfile`),disabled:p,onChange:e=>{e.target.value===`__register__`?Ye():(S(e.target.value),ue({}))},value:x,children:p?(0,B.jsx)(`option`,{value:``,children:o(`lark.appLoading`)}):(0,B.jsxs)(B.Fragment,{children:[l.map(e=>(0,B.jsxs)(`option`,{disabled:!e.ready,value:e.app_ref,children:[e.label,e.reply_ready?``:e.ready?` · ${o(`lark.needsMessagePermissions`)}`:` · ${o(`lark.needsSetup`)}`]},e.app_ref)),(0,B.jsx)(`option`,{value:`__register__`,children:o(`lark.registerAnother`)})]})}),(0,B.jsx)(`small`,{children:o(`lark.defaultAgentAppDescription`)})]}),Ue?.ready&&!Ue.reply_ready?(0,B.jsx)(`div`,{className:`personal-lark-group-state is-error`,role:`alert`,children:o(`lark.appPermissions`)}):null,(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.groupChat`)}),(0,B.jsx)(`input`,{"aria-label":o(`lark.groupSearch`),onChange:e=>E(e.target.value),placeholder:o(`lark.groupSearch`),type:`search`,value:T}),te?(0,B.jsxs)(`div`,{className:`personal-lark-group-state`,role:`status`,children:[(0,B.jsx)(km,{className:`is-spinning`,size:15}),o(`lark.groupLoading`)]}):null,!te&&j?(0,B.jsx)(`div`,{className:`personal-lark-group-state is-error`,role:`alert`,children:j}):null,!te&&!j&&D.length===0?(0,B.jsx)(`div`,{className:`personal-lark-group-state`,role:`status`,children:o(`lark.groupEmpty`)}):null,!te&&!j&&D.length>0?(0,B.jsx)(`select`,{"aria-label":o(`lark.groupChat`),onChange:e=>ee(e.target.value),value:k,children:D.map(e=>(0,B.jsx)(`option`,{value:e.chat_id,children:e.chat_name},e.chat_id))}):null]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.bindGoal`)}),(0,B.jsx)(`select`,{"aria-label":o(`lark.bindGoal`),onChange:e=>{let t=e.target.value;w(t),se(n.find(e=>e.goalId===t)?.agentId??``),ue({})},value:C,children:n.map(e=>(0,B.jsx)(`option`,{value:e.goalId,children:e.title},e.goalId))})]})]}),(0,B.jsxs)(`label`,{className:`personal-lark-check`,children:[(0,B.jsx)(`input`,{checked:!0,readOnly:!0,type:`checkbox`}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:o(`lark.createAutomatically`)}),(0,B.jsx)(`small`,{children:o(`lark.createAutomaticallyDescription`)})]})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.topicPreview`)}),(0,B.jsxs)(`div`,{className:`personal-lark-topic-preview`,children:[(0,B.jsx)(Nm,{size:15}),`# `,Ie?.title??Ie?.goalId??`Goal`]})]}),P===`goal`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.captureScope`)}),(0,B.jsxs)(`select`,{"aria-label":o(`lark.captureScope`),disabled:_e?.ingress_mode===`direct_session`,onChange:e=>N(e.target.value),value:ne,children:[(0,B.jsx)(`option`,{value:`addressed_only`,children:o(`lark.captureAddressed`)}),(0,B.jsx)(`option`,{value:`configured_chat_all`,children:o(`lark.captureAll`)})]}),(0,B.jsx)(`small`,{children:o(`lark.captureScopeDescription`)})]}),(0,B.jsxs)(`fieldset`,{"aria-label":o(`lark.agentIngress`),className:`personal-lark-ingress`,children:[(0,B.jsx)(`legend`,{children:o(`lark.agentIngress`)}),(0,B.jsx)(`div`,{children:[`live_steering`,`session_queue`,`async_inbox`].map(e=>{let t=ix(e,o);return(0,B.jsxs)(`label`,{className:ie===e?`is-active`:``,children:[(0,B.jsx)(`input`,{"aria-label":t.label,checked:ie===e,name:`lark-agent-ingress`,onChange:()=>ae(e),type:`radio`,value:e}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:t.label}),(0,B.jsx)(`small`,{children:t.detail})]})]},e)})})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.targetAgent`)}),(0,B.jsxs)(`select`,{"aria-label":o(`lark.targetAgent`),disabled:!!_e?.agent_id,onChange:e=>se(e.target.value),value:I,children:[ze?null:(0,B.jsx)(`option`,{disabled:!0,value:I,children:I?o(`lark.agentUnavailable`,{agent:I}):o(`lark.noAgentConfigured`)}),Re.map(e=>(0,B.jsx)(`option`,{value:e.agentId,children:e.label===e.agentId?e.agentId:`${e.label} · ${e.agentId}`},e.agentId))]}),(0,B.jsx)(`small`,{children:o(`lark.targetAgentDescription`)})]}),!he&&Re.length>1?(0,B.jsxs)(`label`,{"aria-label":o(`lark.connectAllAgents`),className:`personal-lark-check`,children:[(0,B.jsx)(`input`,{checked:L,onChange:e=>ce(e.target.checked),type:`checkbox`}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:o(`lark.connectAllAgents`)}),(0,B.jsx)(`small`,{children:o(`lark.connectAllAgentsDescription`,{count:Re.length})})]})]}):null,!he&&L&&Re.length>1?(0,B.jsxs)(`fieldset`,{"aria-label":o(`lark.agentApps`),className:`personal-lark-agent-apps`,children:[(0,B.jsx)(`legend`,{children:o(`lark.agentApps`)}),(0,B.jsx)(`small`,{children:o(`lark.agentAppsDescription`)}),(0,B.jsx)(`div`,{children:Re.map(e=>(0,B.jsxs)(`label`,{children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.label}),(0,B.jsx)(`small`,{children:e.agentId})]}),(0,B.jsx)(`select`,{"aria-label":o(`lark.agentAppSelection`,{agent:e.label}),onChange:t=>ue(n=>({...n,[e.agentId]:t.target.value})),value:le[e.agentId]??x,children:l.map(e=>(0,B.jsxs)(`option`,{disabled:!e.ready,value:e.app_ref,children:[e.label,e.reply_ready?``:e.ready?` · ${o(`lark.needsMessagePermissions`)}`:` · ${o(`lark.needsSetup`)}`]},e.app_ref))})]},e.agentId))})]}):null,L&&V.length>0&&!Ve?(0,B.jsx)(`div`,{className:`personal-lark-group-state is-error`,role:`alert`,children:o(`lark.agentAppPermissions`)}):null,Be.length===0?(0,B.jsx)(`p`,{className:`personal-notification-error`,role:`alert`,children:o(`lark.selectRegisteredAgent`)}):null]}):null,(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.replyMode`)}),(0,B.jsx)(`select`,{"aria-label":o(`lark.replyMode`),onChange:e=>oe(e.target.value),value:F,children:(0,B.jsx)(`option`,{value:`topic_reply`,children:o(`lark.topicReply`)})}),(0,B.jsx)(`small`,{children:o(`lark.replyModeDescription`)})]}),(0,B.jsxs)(`p`,{className:`personal-lark-cardinality`,children:[(0,B.jsx)(am,{size:15}),o(`lark.cardinality`)]}),pe?(0,B.jsx)(`p`,{className:`personal-notification-error`,role:`alert`,children:pe}):null,(0,B.jsxs)(`footer`,{children:[(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:()=>b(!1),type:`button`,children:o(`lark.cancel`)}),(0,B.jsxs)(`button`,{className:`personal-primary-action`,disabled:p||!x||!_e&&(!Ue?.reply_ready||!k)||P===`goal`&&(!Ve||Be.length===0)||!C||de,onClick:()=>void Qe(),type:`button`,children:[de?(0,B.jsx)(km,{className:`is-spinning`,size:15}):null,He]})]})]})}):null,xe?(0,B.jsx)(`div`,{className:`personal-lark-modal-backdrop is-setup`,role:`presentation`,children:(0,B.jsxs)(`section`,{"aria-labelledby":`new-lark-app-title`,"aria-modal":`true`,className:`personal-lark-modal personal-lark-setup-modal`,role:`dialog`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`small`,{children:o(`lark.reusableWorkspaceApp`)}),(0,B.jsx)(`h2`,{id:`new-lark-app-title`,children:o(`lark.newApp`)})]}),(0,B.jsx)(`button`,{"aria-label":o(`lark.closeCreate`),onClick:()=>void Ze(),type:`button`,children:(0,B.jsx)(ah,{size:18})})]}),De?(0,B.jsxs)(`div`,{className:`personal-lark-setup-progress`,children:[(0,B.jsx)(`span`,{className:`personal-lark-setup-icon is-${De.status}`,children:De.status===`ready`?(0,B.jsx)(am,{size:22}):(0,B.jsx)(km,{className:De.status===`failed`?``:`is-spinning`,size:22})}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:De.status===`ready`?o(`lark.appCreated`):De.status===`failed`?o(`lark.appCreateFailed`):o(`lark.waitingFeishu`)}),(0,B.jsx)(`p`,{children:De.status===`waiting_for_feishu`?o(`lark.waitingFeishuDescription`):De.status===`starting`?o(`lark.waitingLink`):De.error})]}),De.verification_url?(0,B.jsxs)(`a`,{href:De.verification_url,rel:`noreferrer`,target:`_blank`,children:[(0,B.jsx)(_m,{size:15}),o(`lark.reopenFeishu`)]}):null]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{className:`personal-lark-setup-copy`,children:o(`lark.setupCopy`)}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.profileName`)}),(0,B.jsx)(`input`,{"aria-label":o(`lark.profileName`),autoComplete:`off`,onChange:e=>we(e.target.value),placeholder:`loopx-workspace-bot`,value:Ce})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.region`)}),(0,B.jsxs)(`select`,{"aria-label":o(`lark.region`),onChange:e=>Ee(e.target.value),value:Te,children:[(0,B.jsx)(`option`,{value:`feishu`,children:`Feishu`}),(0,B.jsx)(`option`,{value:`lark`,children:`Lark`})]})]}),Ce&&!/^[A-Za-z0-9][A-Za-z0-9._-]{0,99}$/.test(Ce)?(0,B.jsx)(`p`,{className:`personal-notification-error`,children:o(`lark.profileValidation`)}):null]}),R?(0,B.jsx)(`p`,{className:`personal-notification-error`,children:R}):null,(0,B.jsxs)(`footer`,{children:[(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:()=>void Ze(),type:`button`,children:o(`lark.cancel`)}),De?null:(0,B.jsxs)(`button`,{className:`personal-primary-action`,disabled:ke||!/^[A-Za-z0-9][A-Za-z0-9._-]{0,99}$/.test(Ce),onClick:()=>void Xe(),type:`button`,children:[ke?(0,B.jsx)(km,{className:`is-spinning`,size:15}):(0,B.jsx)(_m,{size:15}),o(`lark.continueFeishu`)]})]})]})}):null]})}function lx(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function ux(e,t,n){let r=lx(t),i=lx(n);return Object.fromEntries(e.fields.flatMap(({key:e,nullable:t})=>{let n=r[e],a=i[e];return Object.hasOwn(r,e)&&(n!=null||t&&n===null)?[[e,n]]:Object.hasOwn(i,e)&&a!=null?[[e,a]]:[]}))}function dx(e,t){let n;try{n=JSON.parse(t)}catch{return null}if(!n||typeof n!=`object`||Array.isArray(n))return null;let r=new Set(e.fields.map(e=>e.key));return Object.keys(n).some(e=>!r.has(e))?null:n}function fx(e,t,n){let r={...e,[t]:n},i=e.schedule;return t===`timezone`&&i&&typeof i==`object`&&`schema_version`in i&&i.schema_version===`periodic_report_schedule_v0`&&(r.schedule={...i,timezone:n}),r}function px({id:e,value:t,timezone:n,onChange:r}){let{locale:i}=Ji(),a=i===`zh-CN`,o=t&&typeof t==`object`&&!Array.isArray(t)?t:null,s=String(o?.rrule??``).split(`;`).map(e=>e.split(`=`)),c=Object.fromEntries(s.filter(e=>e.length===2)),l=[`MO`,`TU`,`WE`,`TH`,`FR`,`SA`,`SU`],u=(e,t)=>e!==void 0&&/^\d+$/.test(e)&&Number(e)<=t,d=!o||o.schema_version===`periodic_report_schedule_v0`&&[`DAILY`,`WEEKLY`].includes(c.FREQ)&&o.timezone===n&&s.every(e=>e.length===2&&[`FREQ`,`BYDAY`,`BYHOUR`,`BYMINUTE`,`INTERVAL`].includes(e[0]))&&new Set(s.map(([e])=>e)).size===s.length&&u(c.BYHOUR,23)&&u(c.BYMINUTE??`0`,59)&&(c.FREQ===`WEEKLY`?l.includes(c.BYDAY):!c.BYDAY)&&(!c.INTERVAL||c.INTERVAL===`1`),f=a?[`星期一`,`星期二`,`星期三`,`星期四`,`星期五`,`星期六`,`星期日`]:[`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`,`Sunday`];function p(e){let t={FREQ:`WEEKLY`,BYDAY:`MO`,BYHOUR:`9`,BYMINUTE:`0`,...c,...e};r?.({schema_version:`periodic_report_schedule_v0`,schedule_id:o?.schedule_id??`report-schedule`,timezone:n,rrule:[`FREQ=${t.FREQ}`,...t.FREQ===`WEEKLY`?[`BYDAY=${t.BYDAY}`]:[],`BYHOUR=${t.BYHOUR}`,`BYMINUTE=${t.BYMINUTE}`].join(`;`)})}return(0,B.jsxs)(`div`,{className:`personal-report-schedule`,children:[(0,B.jsxs)(`label`,{className:`is-boolean`,htmlFor:e,children:[(0,B.jsx)(`span`,{children:a?`按日历汇报`:`Calendar reports`}),(0,B.jsx)(`input`,{id:e,type:`checkbox`,role:`switch`,checked:!!o,disabled:!r,onChange:e=>e.target.checked?p({}):r?.(null)})]}),o?(0,B.jsxs)(B.Fragment,{children:[d?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{htmlFor:`${e}-frequency`,children:[(0,B.jsx)(`span`,{children:a?`频率`:`Frequency`}),(0,B.jsxs)(`select`,{id:`${e}-frequency`,value:c.FREQ,disabled:!r,onChange:e=>p({FREQ:e.target.value}),children:[(0,B.jsx)(`option`,{value:`DAILY`,children:a?`每天`:`Daily`}),(0,B.jsx)(`option`,{value:`WEEKLY`,children:a?`每周`:`Weekly`})]})]}),c.FREQ===`WEEKLY`&&(0,B.jsxs)(`label`,{htmlFor:`${e}-day`,children:[(0,B.jsx)(`span`,{children:a?`星期`:`Weekday`}),(0,B.jsx)(`select`,{id:`${e}-day`,value:c.BYDAY,disabled:!r,onChange:e=>p({BYDAY:e.target.value}),children:l.map((e,t)=>(0,B.jsx)(`option`,{value:e,children:f[t]},e))})]}),(0,B.jsxs)(`label`,{htmlFor:`${e}-time`,children:[(0,B.jsxs)(`span`,{children:[a?`当地时间`:`Local time`,` (`,n,`)`]}),(0,B.jsx)(`input`,{id:`${e}-time`,type:`time`,required:!0,disabled:!r,value:`${(c.BYHOUR??`9`).padStart(2,`0`)}:${(c.BYMINUTE??`0`).padStart(2,`0`)}`,onChange:e=>{if(!/^\d{2}:\d{2}$/.test(e.target.value))return;let[t,n]=e.target.value.split(`:`);p({BYHOUR:t,BYMINUTE:n})}})]})]}):(0,B.jsx)(`p`,{role:`alert`,children:a?`此计划需在 JSON 模式中编辑;当前内容已保留。`:`Edit this schedule in JSON mode; its current value is preserved.`}),(0,B.jsx)(`p`,{children:a?`由现有唤醒检查到期计划;实际送达以回执为准。`:`Existing wakes check the schedule; delivery is confirmed by its receipt.`})]}):(0,B.jsx)(`p`,{children:a?`未设置日历计划;保持阶段结束时汇报。`:`No calendar schedule; report at validated stage boundaries.`})]})}function mx({copy:e,field:t,id:n,onChange:r,value:i,timezone:a}){let o=e[t.key]?.label??t.label,s=!r;if(t.input_kind===`periodic_report_schedule`)return(0,B.jsx)(px,{id:n,value:i,timezone:a,onChange:r?e=>r(t.key,e):void 0});if(t.input_kind===`boolean`)return(0,B.jsxs)(`label`,{className:`is-boolean`,htmlFor:n,children:[(0,B.jsx)(`span`,{children:o}),(0,B.jsx)(`input`,{checked:i===!0,id:n,onChange:r?e=>r(t.key,e.target.checked):void 0,readOnly:s,role:`switch`,type:`checkbox`})]});if(t.input_kind===`select`)return(0,B.jsxs)(`label`,{htmlFor:n,children:[(0,B.jsx)(`span`,{children:o}),(0,B.jsxs)(`select`,{id:n,onChange:r?e=>r(t.key,e.target.value):void 0,value:typeof i==`string`?i:``,children:[(0,B.jsx)(`option`,{value:``}),(t.options??[]).map(e=>(0,B.jsx)(`option`,{value:e,children:e},e))]})]});if(t.input_kind===`string_list`)return(0,B.jsxs)(`label`,{htmlFor:n,children:[(0,B.jsx)(`span`,{children:o}),(0,B.jsx)(`textarea`,{id:n,onChange:r?e=>r(t.key,e.target.value.split(/\r?\n/u).filter(Boolean)):void 0,readOnly:s,rows:4,value:Array.isArray(i)?i.join(` -`):``})]});let c=t.input_kind===`number`;return(0,B.jsxs)(`label`,{htmlFor:n,children:[(0,B.jsx)(`span`,{children:o}),(0,B.jsx)(`input`,{id:n,max:t.maximum,min:t.minimum,onChange:r?e=>r(t.key,c?Number(e.target.value):e.target.value):void 0,readOnly:s,required:t.required,type:c?`number`:`text`,value:typeof i==`number`||typeof i==`string`?i:``})]})}function hx({copy:e={},disabled:t=!1,editor:n,enabledAction:r,omitKeys:i=[],onChange:a,value:o}){let s=(0,z.useId)(),c=new Set(i);return(0,B.jsx)(`fieldset`,{className:`personal-capability-fields`,disabled:t,children:n.fields.filter(e=>!c.has(e.key)).map(t=>{let n=(0,B.jsx)(mx,{copy:e,field:t,id:`${s}-${t.key.replace(/[^a-z0-9_-]/gi,`-`)}`,onChange:a,value:o[t.key],timezone:String(o.timezone??`UTC`)},t.key);return t.key===`enabled`&&t.input_kind===`boolean`?(0,B.jsxs)(`div`,{className:`personal-capability-enabled-row`,children:[n,r]},t.key):n})})}var gx={en:{manager_runtime:{displayName:`Manager runtime`,description:`Selects the persistent host-tool profile used by owner manager conversations.`},steward_executor:{displayName:`Steward executor`,description:`Selects the executor, model, and reasoning effort the steward channel answers on for this machine, ahead of the Chat service environment.`},todo_replan_cadence:{displayName:`Goal review cadence`,description:`Configures the Goal review cadence.`},change_quality_qualification:{displayName:`Change quality qualification`,description:`Prepares a provider-neutral review packet, allows at most one policy-authorized safe-fix pass, and can require an exact-diff receipt.`},explore_graph:{displayName:`Explore Graph`,description:`Organizes bounded exploration as a typed evidence graph so branches, findings, and synthesis remain inspectable.`},explore_harness:{displayName:`Explore Harness`,description:`Selects a capability-owned planning and research harness profile for bounded multi-step exploration.`},lark_event_inbox:{displayName:`Lark event inbox`,description:`Receives provider events through a local-private inbox binding before LoopX projects them into governed work.`,readOnlyReason:`This capability requires a local-private inbox binding. Manage it in Lark settings or through the capability CLI.`},lark_kanban_heartbeat_sync:{displayName:`Lark Kanban heartbeat sync`,description:`Synchronizes accepted LoopX work state to the configured Lark Kanban heartbeat surface.`},local_authority_shadow:{displayName:`Local authority shadow`,description:`Observes post-commit Todo and task-lease state through the shared authority contract without taking write authority.`},multi_subagent:{displayName:`Adaptive child capacity`,description:`Sets bounded child-agent capacity and the public-safe responsibility domains in which parallel work may be delegated.`},peer_task_coordination:{displayName:`Registered-peer task coordination`,description:`Routes explicitly scoped peer-owned work to one registered coordinator without granting cross-owner mutation authority.`},periodic_report:{displayName:`Periodic reports`,description:`Turns validated Goal stage progress into a frozen report and automatically delivers it through the configured Goal Channel with exact readback.`},pull_request_review:{displayName:`Pull-request review`,description:`Ranks the public GitHub PR review queue with a machine-level default; it never grants GitHub, Todo, push, or merge authority.`},reward_memory:{displayName:`Reward Memory experiment`,description:`Configures a reviewed local-private provider binding for Goal-scoped Agent recall and evidence-backed outcome learning.`}},"zh-CN":{manager_runtime:{displayName:`管家 Runtime`,description:`选择管家会话持续生效的宿主工具模式。`},steward_executor:{displayName:`管家执行器`,description:`选择本机管家通道使用的执行器、模型与推理档位,优先级高于服务环境变量。`},todo_replan_cadence:{displayName:`Goal 复核周期`,description:`配置 Goal 的复核周期。`},change_quality_qualification:{displayName:`变更质量验证`,description:`生成与 Provider 无关的审阅包,最多允许一次策略授权的安全修复,并可要求精确 diff 回执。`},explore_graph:{displayName:`探索图谱`,description:`把有界探索组织为 typed 证据图,让探索分支、发现与综合结论都可检查、可追溯。`},explore_harness:{displayName:`探索 Harness`,description:`为有界的多步探索选择由能力负责的规划与研究 Harness profile。`},lark_event_inbox:{displayName:`飞书事件收件箱`,description:`通过本机私有收件箱接收 Provider 事件,再由 LoopX 将其投影为受治理的工作。`,readOnlyReason:`此能力依赖本机私有的收件箱绑定,请在飞书设置或 capability CLI 中管理。`},lark_kanban_heartbeat_sync:{displayName:`飞书看板心跳同步`,description:`把 LoopX 已接受的工作状态同步到配置好的飞书看板心跳界面。`},local_authority_shadow:{displayName:`本地 Authority 影子观测`,description:`通过共享 Authority contract 观测提交后的 Todo 与 task lease 状态,但不取得写入权。`},multi_subagent:{displayName:`自适应子 Agent 容量`,description:`限定子 Agent 容量与可公开的职责域,只有落在这些边界内的工作才能并行委派。`},peer_task_coordination:{displayName:`已注册 Peer 任务协调`,description:`把明确限定的 Peer 工作路由给一个已注册协调者,不授予跨 Owner 修改权限。`},periodic_report:{displayName:`周期报告`,description:`把经过验证的 Goal 阶段进展整理为冻结报告,并通过配置的 Goal Channel 自动发送和精确回读。`},pull_request_review:{displayName:`Pull-request Review`,description:`配置公开 GitHub PR 审阅队列的本机默认排序;不会授予 GitHub、Todo、push 或 merge 权限。`},reward_memory:{displayName:`Reward Memory 实验`,description:`为 Goal 内 Agent 的召回与证据化结果学习配置经过审阅的本机私有 Provider 绑定。`}}},_x={en:{runtime_profile:{label:`Runtime profile`,description:`Restricted keeps scoped LoopX reads only. Trusted owner enables normal host tools while protected operations retain separate checks.`},executor_endpoint:{label:`Steward executor`,description:`The executor this machine's steward channel answers on. The choice outranks the Chat service environment and the shipped default.`},executor_model:{label:`Model`,description:`Optional model for the selected executor. Leave blank to keep the executor's own default.`},executor_reasoning_effort:{label:`Reasoning effort`,description:`Optional reasoning effort for the selected executor. Leave blank to keep the executor's own default.`},completed_todos:{label:`Completed Todos between Goal reviews`,description:`Machine default or explicit Goal override, from 1 to 5.`},allowed_domains:{label:`Allowed responsibility domains`,description:`Enter one bounded, public-safe domain per line.`},coordinator_agent_id:{label:`Coordinator Agent`,description:`Use an already registered Agent id; leave blank to disable coordination.`},enabled:{label:`Enabled`},model:{label:`Child model`,description:`For example gpt-5.6-luna. Blank clears the child model preference.`},reasoning_effort:{label:`Child reasoning effort`,description:`For example max; the host must support this model and effort.`},max_children:{label:`Maximum children`,description:`Hard upper bound for concurrently delegated child work.`},profile:{label:`Planner profile`,description:`Select one registered Explore Harness profile.`},profile_preset:{label:`Report profile`,description:`Capability-owned report profile, such as weekly-progress.`},wait_for_ci:{label:`Wait for CI`,description:`Disable to use local validation without querying or waiting for CI. Merge authority is unchanged.`},review_priority:{label:`Review priority`,description:`Choose whether other developers' PRs or the authenticated reviewer's own PRs are ranked first.`},route_ref:{label:`Goal Channel route`,description:`Public route alias only; credentials and provider identifiers stay outside this form.`},safe_fix:{label:`Allow one bounded safe-fix pass`},strict_receipt:{label:`Require an exact-diff receipt`},timezone:{label:`Timezone`,description:`Use an IANA timezone, for example Asia/Shanghai.`},schedule:{label:`Calendar reports`,description:`Optional daily or weekly reports; no schedule preserves stage-only delivery.`},config_path:{label:`Local-private configuration path`,description:`Repo-relative ignored JSON under .loopx/config/. Leave blank to retain the current binding; the path is never returned.`},enabled_agents:{label:`Enabled Goal Agents`,description:`Enter one registered Goal-local Agent id per line. A private binding currently accepts exactly one Agent.`}},"zh-CN":{runtime_profile:{label:`运行模式`,description:`restricted 仅使用受限 LoopX 读取;trusted_owner 开放常规宿主工具,但受保护操作仍单独校验。`},executor_endpoint:{label:`管家执行器`,description:`本机管家通道使用的执行器;优先级高于 Chat 服务环境变量与出货默认值。`},executor_model:{label:`模型`,description:`所选执行器使用的模型,可留空;留空表示沿用执行器自身的默认模型。`},executor_reasoning_effort:{label:`推理档位`,description:`所选执行器使用的推理档位,可留空;留空表示沿用执行器自身的默认档位。`},completed_todos:{label:`两次 Goal 复核间的已完成 Todo 数`,description:`可设置 1–5;机器默认值可被 Goal 显式覆盖。`},allowed_domains:{label:`允许的职责域`,description:`每行填写一个有边界、可公开的职责域。`},coordinator_agent_id:{label:`协调 Agent`,description:`填写一个已经注册的 Agent ID;留空表示关闭协调。`},enabled:{label:`启用`},model:{label:`子 Agent 模型`,description:`例如 gpt-5.6-luna;留空清除模型偏好。`},reasoning_effort:{label:`子 Agent 推理档位`,description:`例如 max;宿主须支持所选模型与档位。`},max_children:{label:`最大子 Agent 数`,description:`可同时委派的子任务硬上限。`},profile:{label:`规划 Profile`,description:`选择一个已注册的 Explore Harness profile。`},profile_preset:{label:`报告 Profile`,description:`由该能力管理的报告 profile,例如 weekly-progress。`},wait_for_ci:{label:`等待 CI`,description:`关闭后使用本地验证,不查询或等待 CI;不改变合并权限。`},review_priority:{label:`审阅优先级`,description:`选择先排其他开发者的 PR,还是先排当前已认证审阅者自己的 PR。`},route_ref:{label:`Goal Channel 路由`,description:`只填写公开 route alias;凭据与 Provider 标识不会进入此表单。`},safe_fix:{label:`允许一次有界安全修复`},strict_receipt:{label:`要求精确 diff 回执`},timezone:{label:`时区`,description:`使用 IANA 时区,例如 Asia/Shanghai。`},schedule:{label:`日历汇报`,description:`可选每日或每周计划;未设置时保持阶段结束汇报。`},config_path:{label:`本机私有配置路径`,description:`填写 .loopx/config/ 下、相对仓库且被忽略的 JSON;留空保留当前绑定,路径不会被回传。`},enabled_agents:{label:`已启用的 Goal Agent`,description:`每行填写一个已注册的 Goal 内 Agent ID;私有绑定当前只接受一个 Agent。`}}};function vx(e,t){let n=gx[t][e.capability_id];return n?{...e,display_name:n.displayName,description:n.description,configuration_editor:{...e.configuration_editor,...n.readOnlyReason?{read_only_reason:n.readOnlyReason}:{}}}:e}function yx(e){return _x[e]}Object.freeze(Object.keys(gx.en).sort());function bx(e,t){return e.available_scopes.includes(t)&&(t!==`machine`||!!e.machine_namespace)&&e.configuration_editor.editable&&e.configuration_editor.writable_scopes.includes(t)}function xx({values:e,t}){return(0,B.jsxs)(`details`,{className:`personal-capability-raw-values`,children:[(0,B.jsx)(`summary`,{children:t(`capabilities.rawJson`)}),(0,B.jsx)(`div`,{className:`personal-capability-value-grid`,children:e.map(({label:e,value:t})=>(0,B.jsxs)(`section`,{children:[(0,B.jsx)(`strong`,{children:e}),(0,B.jsx)(`pre`,{children:t?JSON.stringify(t,null,2):`—`})]},e))})]})}function Sx({source:e,t}){return e?(0,B.jsxs)(`p`,{className:`personal-capability-effective-source`,children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:15}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:t(`capabilities.effectiveSource`)}),t(`capabilities.source.${e}`)]})]}):null}function Cx({available:e,description:t,t:n}){return e?null:(0,B.jsxs)(`section`,{className:`personal-capability-editor-status is-read-only`,children:[(0,B.jsx)(rh,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:n(`capabilities.readOnly`)}),(0,B.jsx)(`p`,{children:t})]})]})}function wx(e){return e.availability?.includes(`experimental`)?4:e.capability_id===`multi_subagent`?3:e.configuration_editor.writable_scopes.length===0||e.availability===`supported_explicit_opt_in`?2:e.availability===`supported_explicit_override`?0:1}function Tx(e,t){return[...e].sort((e,n)=>{let r=wx(e)-wx(n);if(r!==0)return r;let i=vx(e,t),a=vx(n,t);return i.display_name.localeCompare(a.display_name,t)||e.capability_id.localeCompare(n.capability_id)})}function Ex({capabilities:e,locale:t,onSelect:n,scope:r,selectedCapabilityId:i,t:a}){return(0,B.jsx)(`nav`,{"aria-label":a(r===`goal`?`capabilities.catalog`:`machine.capabilityCatalog`),className:`personal-capability-list`,tabIndex:0,children:Tx(e,t).map(e=>{let o=vx(e,t);return(0,B.jsxs)(`button`,{"aria-current":i===o.capability_id?`page`:void 0,onClick:()=>n(o.capability_id),type:`button`,children:[(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:o.display_name})}),(0,B.jsx)(`em`,{children:a(o.available_scopes.includes(r)?r===`goal`?`capabilities.goalScope`:`capabilities.machineScope`:r===`machine`?`capabilities.goalScope`:`capabilities.machineScope`)})]},o.capability_id)})})}function Dx({capability:e,locale:t,source:n}){let{t:r}=Ji(),i=vx(e,t);return(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`span`,{className:`personal-settings-icon`,children:(0,B.jsx)(Zm,{"aria-hidden":!0,size:18})}),(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`div`,{className:`personal-capability-heading-row`,children:[(0,B.jsx)(`h2`,{children:i.display_name}),(0,B.jsx)(Sx,{source:n,t:r})]}),e.context_contribution&&(0,B.jsxs)(`details`,{className:`personal-capability-help`,"data-testid":`capability-context-phases`,children:[(0,B.jsx)(`summary`,{children:t===`zh-CN`?`主 Agent 协作指导`:`Coordinator workflow guidance`}),(0,B.jsx)(`p`,{children:t===`zh-CN`?`随能力开启。支持以下阶段;此处展示能力范围,不能证明某次运行已读取或采纳。`:`Enabled with this capability. These are supported phases, not proof that a run read or adopted the guidance.`}),(0,B.jsx)(`dl`,{children:e.context_contribution.supported_phases.map(e=>(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:(0,B.jsx)(`code`,{children:e})}),(0,B.jsx)(`dd`,{children:Ox[e][t===`zh-CN`?`zh`:`en`]})]},e))}),(0,B.jsx)(`p`,{children:t===`zh-CN`?`LoopX Turn 在请求与结果中提供上下文;原生工具入口由 LoopX skill 调用同一只读接口。执行与采纳需另看运行证据。`:`LoopX Turn includes context in requests and results. For native tools, the LoopX skill reads the same interface. Execution and adoption require run evidence.`})]}),(0,B.jsxs)(`details`,{className:`personal-capability-help`,children:[(0,B.jsx)(`summary`,{children:t===`zh-CN`?`配置说明`:`Configuration help`}),(0,B.jsx)(`p`,{children:i.description}),(0,B.jsx)(`dl`,{children:e.configuration_editor.fields.map(e=>{let n=yx(t)[e.key],r=n?.description??e.description;return r?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:n?.label??e.label}),(0,B.jsx)(`dd`,{children:r})]},e.key):null})})]},e.capability_id)]})]})}var Ox={before_plan:{zh:`规划前:识别独立问题并保留主 Agent 的核验与整合职责。`,en:`Before planning: identify independent questions and retain coordinator validation and integration.`},before_delegate:{zh:`委派前:明确子任务边界、模型偏好及预期证据。`,en:`Before delegation: specify task boundaries, model preferences and expected evidence.`},after_delegate_result:{zh:`回收后:核验结果,说明采纳决定并关联计划与成果。`,en:`After results: validate evidence, explain acceptance and link plans and deliverables.`}};function kx({callbacks:e,goalId:t,notification:n,onChanged:r}){let{t:i}=Ji(),[a,o]=(0,z.useState)(!1),[s,c]=(0,z.useState)(null);async function l(n){if(e.onToggleGoalAutoNotify){o(!0),c(null);try{let a=await e.onToggleGoalAutoNotify({autoNotify:n,goalId:t});if(!a.ok){c(a.public_summary??a.blocker??i(`notifications.setupFailed`));return}r()}catch(e){c(e instanceof Error?e.message:i(`notifications.setupFailed`))}finally{o(!1)}}}return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{className:`personal-notification-toggle`,children:[(0,B.jsx)(`input`,{checked:n?.humanGateAutoNotifyEnabled??!1,disabled:a||n?.configured!==!0||!e.onToggleGoalAutoNotify,onChange:e=>void l(e.target.checked),type:`checkbox`}),(0,B.jsx)(`span`,{children:i(`notifications.autoNotify`)}),a?(0,B.jsx)(km,{"aria-hidden":!0,className:`is-spinning`,size:14}):null]}),s?(0,B.jsx)(`p`,{className:`personal-notification-error`,role:`alert`,children:s}):null]})}function Ax({goalId:e,onApplied:t,selected:n,t:r}){let[i,a]=(0,z.useState)({busy:null,draft:{},partialWrite:null,preview:null}),[o,s]=(0,z.useState)(null),[c,l]=(0,z.useState)(`guided`),[u,d]=(0,z.useState)(``),f=(0,z.useMemo)(()=>n?dx(n.configuration_editor,u):null,[n,u]),p=c===`guided`||f!==null;(0,z.useEffect)(()=>{l(`guided`),d(``),a({busy:null,draft:ux(n?.configuration_editor??{fields:[]},n?.current??n?.effective_configuration?.configuration??n?.default,n?.default),partialWrite:null,preview:null}),s(null)},[n]);async function m(t){if(!(!n||i.busy||!p)){a(e=>({...e,busy:`preview`,partialWrite:null})),s(null);try{let r=await Vg(e,n.capability_id,t);a(e=>({...e,preview:r}))}catch(e){s(e instanceof Error?e.message:r(`capabilities.previewFailed`))}finally{a(e=>({...e,busy:null}))}}}async function h(){if(!(!n||!i.preview||i.busy||!p)){a(e=>({...e,busy:`apply`})),s(null);try{let r=ux(n.configuration_editor,i.draft,n.default),o=await Hg(e,n.capability_id,i.preview.action===`delete`?null:r,i.preview.plan_revision);a(e=>({...e,partialWrite:o.status===`partial_write`?o:null,preview:null})),o.status!==`partial_write`&&t()}catch(e){a(e=>({...e,preview:null})),s(e instanceof Error?e.message:r(`capabilities.applyFailed`))}finally{a(e=>({...e,busy:null}))}}}function g(e,t){a(r=>({...r,draft:n?.capability_id===`periodic_report`?fx(r.draft,e,t):{...r.draft,[e]:t},preview:null})),s(null)}function _(e){if(!n||i.busy)return;d(e);let t=dx(n.configuration_editor,e);a(e=>({...e,preview:null,draft:t?ux(n.configuration_editor,t,n.default):e.draft})),s(null)}function v(){i.busy||!p||(c===`guided`&&d(JSON.stringify(i.draft,null,2)),l(c===`guided`?`json`:`guided`),a(e=>({...e,preview:null})))}return{apply:h,changeDraft:g,changeJson:_,changeMode:v,editorMode:c,jsonDraft:u,jsonValid:p,error:o,mutation:i,preview:m}}function jx({mutationError:e,onApplied:t,partialWrite:n,preview:r}){let{t:i}=Ji();return(0,B.jsxs)(B.Fragment,{children:[e?(0,B.jsx)(`p`,{className:`personal-machine-error`,role:`alert`,children:e}):null,n?(0,B.jsxs)(`section`,{"aria-live":`polite`,className:`personal-capability-recovery`,children:[(0,B.jsx)(rh,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:i(`capabilities.partialWrite`)}),(0,B.jsx)(`p`,{children:i(`capabilities.partialWriteDescription`)}),(0,B.jsx)(`small`,{children:n.recommended_action})]}),(0,B.jsxs)(`button`,{onClick:t,type:`button`,children:[(0,B.jsx)(Hm,{"aria-hidden":!0,size:15}),i(`capabilities.refreshSource`)]})]}):null,r?(0,B.jsxs)(`section`,{className:`personal-capability-preview`,"aria-label":i(`capabilities.preview`),children:[(0,B.jsx)(`strong`,{children:i(`capabilities.preview`)}),(0,B.jsx)(`span`,{children:i(`machine.action.${r.action}`)}),(0,B.jsx)(`small`,{children:i(`capabilities.previewLocked`)})]}):null]})}function Mx({callbacks:e,catalog:t,goalId:n,notification:r,onApplied:i,onNotificationChanged:a}){let{locale:o,t:s}=Ji(),c=(0,z.useMemo)(()=>Tx(t.capabilities,o),[t.capabilities,o]),[l,u]=(0,z.useState)(()=>c[0]?.capability_id??``),d=(0,z.useMemo)(()=>c.find(e=>e.capability_id===l)??c[0],[c,l]),f=(0,z.useMemo)(()=>d?vx(d,o):void 0,[o,d]),{apply:p,changeDraft:m,changeJson:h,changeMode:g,editorMode:_,jsonDraft:v,jsonValid:y,error:b,mutation:x,preview:S}=Ax({goalId:n,onApplied:i,selected:f,t:s}),{busy:C,draft:w,partialWrite:T,preview:E}=x;if(!d||!f)return(0,B.jsx)(`p`,{className:`personal-capability-empty`,children:s(`capabilities.empty`)});let D=f.available_scopes.includes(`goal`),O=bx(f,`goal`),k=f.configuration_editor.read_only_reason??s(D?`capabilities.previewOnly`:`capabilities.machineOnly`);async function ee(){if(!f||!O||C||!y)return;let e=ux(f.configuration_editor,w,f.default);await S(e)}async function te(){!O||C||await S(null)}return(0,B.jsxs)(`div`,{className:`personal-capability-layout`,children:[(0,B.jsx)(Ex,{capabilities:t.capabilities,locale:o,onSelect:u,scope:`goal`,selectedCapabilityId:f.capability_id,t:s}),(0,B.jsxs)(`article`,{"aria-label":f.display_name,className:`personal-capability-detail`,tabIndex:0,children:[(0,B.jsx)(Dx,{capability:d,locale:o,source:f.effective_configuration?.source}),(0,B.jsx)(Cx,{available:O,t:s,description:k}),f.capability_id===`lark_event_inbox`?(0,B.jsxs)(`section`,{className:`personal-capability-linked-setting`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:s(`capabilities.larkInboxNotificationSetting`)}),(0,B.jsx)(`p`,{children:s(`capabilities.larkInboxNotificationDescription`)})]}),(0,B.jsx)(kx,{callbacks:e,goalId:n,notification:r,onChanged:a})]}):null,O?(0,B.jsxs)(B.Fragment,{children:[_===`json`||!f.configuration_editor.fields.some(e=>e.key===`enabled`&&e.input_kind===`boolean`)?(0,B.jsx)(`div`,{className:`personal-capability-editor-mode`,children:(0,B.jsxs)(`button`,{disabled:!!C||!y,onClick:g,type:`button`,children:[(0,B.jsx)(fm,{"aria-hidden":!0,size:14}),s(_===`guided`?`machine.editJson`:`machine.backToForm`)]})}):null,_===`guided`?(0,B.jsx)(`section`,{className:`personal-capability-field-summary`,children:(0,B.jsx)(hx,{disabled:!!C,copy:yx(o),editor:f.configuration_editor,onChange:m,value:w,enabledAction:(0,B.jsxs)(`button`,{className:`personal-capability-edit-json`,onClick:g,type:`button`,children:[(0,B.jsx)(fm,{"aria-hidden":!0,size:14}),s(`machine.editJson`)]})})}):(0,B.jsxs)(`label`,{className:`personal-capability-json-editor`,htmlFor:`goal-configuration-json`,children:[(0,B.jsx)(`span`,{children:s(`capabilities.jsonConfiguration`)}),(0,B.jsx)(`textarea`,{id:`goal-configuration-json`,"aria-describedby":`goal-configuration-json-help`,disabled:!!C,onChange:e=>h(e.target.value),rows:12,spellCheck:!1,value:v}),(0,B.jsx)(`small`,{id:`goal-configuration-json-help`,children:s(`capabilities.jsonHelp`)}),y?null:(0,B.jsx)(`span`,{className:`personal-machine-validation`,role:`alert`,children:s(`capabilities.jsonInvalid`)})]})]}):null,(0,B.jsx)(jx,{mutationError:b,onApplied:i,partialWrite:T,preview:E}),O?(0,B.jsxs)(`footer`,{className:`personal-capability-actions`,children:[f.current&&f.available_scopes.includes(`machine`)?(0,B.jsx)(`button`,{disabled:!!C||!y,onClick:()=>void te(),type:`button`,children:s(`capabilities.restoreInheritance`)}):null,(0,B.jsx)(`button`,{disabled:!!C||!y,onClick:()=>void ee(),type:`button`,children:s(C===`preview`?`common.loading`:`capabilities.previewChanges`)}),(0,B.jsx)(`button`,{className:`is-primary`,disabled:!!C||!E||!y,onClick:()=>void p(),type:`button`,children:s(C===`apply`?`common.loading`:`capabilities.applyPreview`)})]}):null,(0,B.jsx)(xx,{values:[{label:s(`capabilities.goalValue`),value:f.current},{label:s(f.machine_current?`capabilities.machineValue`:`capabilities.defaultValue`),value:f.machine_current??f.default}],t:s},d.capability_id)]})]})}function Nx({callbacks:e,goalId:t,notification:n,onChanged:r}){let{t:i}=Ji(),[a,o]=(0,z.useState)(null),[s,c]=(0,z.useState)(null),[l,u]=(0,z.useState)(!1);function d(){t&&(u(!0),c(null),Bg(t).then(o).catch(e=>c(e instanceof Error?e.message:i(`capabilities.loadFailed`))).finally(()=>u(!1)))}return(0,z.useEffect)(d,[t]),t?l&&!a?(0,B.jsxs)(`p`,{"aria-live":`polite`,className:`personal-capability-empty`,children:[(0,B.jsx)(km,{className:`personal-spin`,size:18}),i(`capabilities.loading`)]}):s?(0,B.jsxs)(`section`,{className:`personal-capability-error`,role:`alert`,children:[(0,B.jsx)(rh,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:i(`capabilities.loadFailed`)}),(0,B.jsx)(`small`,{children:s})]}),(0,B.jsxs)(`button`,{onClick:d,type:`button`,children:[(0,B.jsx)(Hm,{"aria-hidden":!0,size:15}),i(`capabilities.retry`)]})]}):a?(0,B.jsxs)(`section`,{className:`personal-capability-settings`,"data-revision":a.revision,children:[(0,B.jsxs)(`details`,{className:`personal-capability-scope-note`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:17}),i(`capabilities.atomicOverride`)]}),(0,B.jsx)(`p`,{children:i(`capabilities.atomicOverrideDescription`)})]}),(0,B.jsx)(Mx,{callbacks:e,catalog:a.capability_catalog,goalId:t,notification:n,onApplied:d,onNotificationChanged:r})]}):null:(0,B.jsx)(`p`,{className:`personal-capability-empty`,children:i(`capabilities.chooseGoal`)})}function Px(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function Fx(e,t){let n=t?.machine_namespace;return n?e?.machine_configuration?.namespaces[n]:void 0}function Ix(e,t,n){return{...Px(e.default),...Px(t),...n}}function Lx(e,t){for(let n of e.configuration_editor.fields){let e=t[n.key];if(n.required&&(e==null||e===``))return!1}return e.capability_id===`periodic_report`&&t.enabled===!0?!!(String(t.profile_preset??``).trim()&&String(t.route_ref??``).trim()&&String(t.timezone??``).trim()):!0}function Rx(e){try{let t=JSON.parse(e);return t&&typeof t==`object`&&!Array.isArray(t)?t:null}catch{return null}}function zx(e){return e?e===`absent`?e:e.replace(/^sha256:/,``).slice(0,12):`—`}function Bx(){let{locale:e,t}=Ji(),[n,r]=(0,z.useState)(null),[i,a]=(0,z.useState)(``),[o,s]=(0,z.useState)({}),[c,l]=(0,z.useState)(`{}`),[u,d]=(0,z.useState)(`guided`),[f,p]=(0,z.useState)(null),[m,h]=(0,z.useState)(`upsert`),[g,_]=(0,z.useState)(null),[v,y]=(0,z.useState)(null),[b,x]=(0,z.useState)(`load`),[S,C]=(0,z.useState)(null),[w,T]=(0,z.useState)(null),E=(0,z.useMemo)(()=>Tx(n?.capability_catalog.capabilities??[],e),[n,e]),D=n?.invalid_namespaces[0],O=E.find(e=>e.capability_id===i)??(D?E.find(e=>e.machine_namespace===D):void 0)??E.find(e=>bx(e,`machine`))??E[0],k=O?vx(O,e):void 0,ee=Fx(n,k),te=!!(k?.machine_namespace&&ee),A=!!(k&&bx(k,`machine`)),j=(0,z.useMemo)(()=>Rx(c),[c]),M=k?u===`json`?j:Ix(k,ee,o):null,ne=!!(k&&(u===`json`?j:Lx(k,M??{})));async function N(){r(await zg())}(0,z.useEffect)(()=>{let e=!0;return zg().then(t=>{e&&r(t)}).catch(n=>{e&&C(n instanceof Error?n.message:t(`machine.loadError`))}).finally(()=>{e&&x(null)}),()=>{e=!1}},[t]),(0,z.useEffect)(()=>{if(!k)return;let e=Fx(n,k),t=ux(k.configuration_editor,e??k.default,k.default),r=Ix(k,e,t);s(t),l(JSON.stringify(r,null,2)),d(A?`guided`:`json`),p(null),h(`upsert`),y(null)},[n,i,e]);function P(e,t){s(n=>k?.capability_id===`periodic_report`?fx(n,e,t):{...n,[e]:t}),p(null),h(`upsert`),C(null),T(null)}function re(e){if(k){if(e===`json`)l(JSON.stringify(Ix(k,ee,o),null,2));else if(j)s(ux(k.configuration_editor,j,k.default));else{C(t(`machine.jsonInvalid`));return}d(e),p(null),h(`upsert`),C(null)}}async function ie(){if(!(!A||!k?.machine_namespace||!M||!ne||b)){x(`preview`),C(null),T(null);try{h(`upsert`),p(await Ug(k.machine_namespace,M))}catch(e){C(e instanceof Error?e.message:t(`machine.previewError`))}finally{x(null)}}}async function ae(){if(!(!A||!k?.machine_namespace||!te||b)){x(`preview`),C(null),T(null);try{h(`remove`),p(await Gg(k.machine_namespace))}catch(e){C(e instanceof Error?e.message:t(`machine.previewError`))}finally{x(null)}}}async function F(){if(!A||!k?.machine_namespace||!f||b||m===`upsert`&&!M)return;x(`apply`),C(null);let e=m;try{let n=e===`remove`?await Kg(k.machine_namespace,f.plan_revision):await Wg(k.machine_namespace,M,f.plan_revision);_(n),p(null),h(`upsert`),y(null),await N(),T(n.status===`applied`?t(e===`remove`?`machine.removed`:`machine.applied`):t(`machine.unchanged`))}catch(e){p(null),h(`upsert`),C(e instanceof Error?e.message:t(`machine.applyError`))}finally{x(null)}}async function oe(){if(!(!g?.transaction_id||b)){x(`rollback-preview`),C(null);try{y(await qg(g.transaction_id))}catch(e){C(e instanceof Error?e.message:t(`machine.rollbackError`))}finally{x(null)}}}async function I(){if(!(!g?.transaction_id||!v||b)){x(`rollback`),C(null);try{await Jg(g.transaction_id,v.plan_revision),_(null),y(null),p(null),await N(),T(t(`machine.rolledBack`))}catch(e){y(null),C(e instanceof Error?e.message:t(`machine.rollbackError`))}finally{x(null)}}}return b===`load`?(0,B.jsx)(`div`,{className:`personal-machine-loading`,role:`status`,children:t(`common.loading`)}):k?(0,B.jsxs)(`section`,{className:`personal-capability-settings`,"data-revision":n?.revision,children:[(0,B.jsxs)(`details`,{className:`personal-capability-scope-note`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:17}),t(`machine.liveDefault`)]}),(0,B.jsx)(`p`,{children:t(`machine.liveDefaultDescription`)})]}),(0,B.jsxs)(`div`,{className:`personal-capability-body`,children:[n?.status===`invalid`?(0,B.jsxs)(`section`,{className:`personal-machine-error`,"data-testid":`machine-invalid-repair`,role:`alert`,children:[(0,B.jsx)(`strong`,{children:t(`machine.invalidStoredConfiguration`)}),(0,B.jsx)(`p`,{children:t(`machine.invalidStoredConfigurationDescription`)})]}):null,(0,B.jsxs)(`div`,{className:`personal-capability-layout`,children:[(0,B.jsx)(Ex,{capabilities:E,locale:e,onSelect:a,scope:`machine`,selectedCapabilityId:k.capability_id,t}),(0,B.jsxs)(`article`,{"aria-label":k.display_name,className:`personal-capability-detail`,tabIndex:0,children:[(0,B.jsx)(Dx,{capability:O,locale:e,source:k.available_scopes.includes(`machine`)?te?`machine_default`:`capability_default`:void 0}),(0,B.jsx)(Cx,{available:A,t,description:k.available_scopes.includes(`machine`)?t(`machine.editorUnavailableDescription`):t(`machine.goalOnly`)}),k.capability_id===`periodic_report`?(0,B.jsxs)(`section`,{className:`personal-capability-behavior-note`,children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:ee?.schedule?e===`zh-CN`?`日历与阶段汇报`:`Calendar and stage reports`:t(`machine.periodicReportActivation`)}),(0,B.jsx)(`p`,{children:ee?.schedule?ee.enabled===!0?e===`zh-CN`?`已配置日历计划,由现有唤醒检查;是否送达请核对报告回执。`:`A calendar schedule is configured and checked by existing wakes. Verify delivery in the report receipt.`:e===`zh-CN`?`日历计划已保存;启用此能力后才会检查和投递。`:`The schedule is saved; enable this capability to check and deliver reports.`:t(`machine.periodicReportActivationDescription`)})]})]}):null,k.capability_id===`change_quality_qualification`?(0,B.jsxs)(`section`,{className:`personal-capability-behavior-note`,children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:t(`machine.changeQualityActivation`)}),(0,B.jsx)(`p`,{children:t(`machine.changeQualityActivationDescription`)})]})]}):null,k.capability_id===`todo_replan_cadence`?(0,B.jsxs)(`section`,{className:`personal-capability-behavior-note`,children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:t(`machine.replanCadenceActivation`)}),(0,B.jsx)(`p`,{children:t(`machine.replanCadenceActivationDescription`)})]})]}):null,k.capability_id===`pull_request_review`?(0,B.jsxs)(`section`,{className:`personal-capability-behavior-note`,children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:e===`zh-CN`?`只改变队列排序`:`Queue ordering only`}),(0,B.jsx)(`p`,{children:e===`zh-CN`?`默认先审阅其他开发者的 PR;选择 owner-first 才会优先当前已认证审阅者自己的 PR。此配置不会发布 review、写 Todo、push 或 merge。`:`The default reviews other developers' PRs first; choose owner-first only when the authenticated reviewer's own PRs should lead. This setting never posts a review, writes Todos, pushes, or merges.`})]})]}):null,A?(0,B.jsxs)(B.Fragment,{children:[u===`json`||!k.configuration_editor.fields.some(e=>e.key===`enabled`&&e.input_kind===`boolean`)?(0,B.jsx)(`div`,{className:`personal-capability-editor-mode`,children:(0,B.jsxs)(`button`,{onClick:()=>re(u===`guided`?`json`:`guided`),type:`button`,children:[(0,B.jsx)(fm,{"aria-hidden":!0,size:14}),t(u===`guided`?`machine.editJson`:`machine.backToForm`)]})}):null,u===`guided`?(0,B.jsxs)(`section`,{className:`personal-capability-field-summary`,children:[(0,B.jsx)(hx,{copy:yx(e),disabled:!!b,editor:k.configuration_editor,onChange:P,value:o,enabledAction:(0,B.jsxs)(`button`,{className:`personal-capability-edit-json`,onClick:()=>re(`json`),type:`button`,children:[(0,B.jsx)(fm,{"aria-hidden":!0,size:14}),t(`machine.editJson`)]})}),ne?null:(0,B.jsx)(`p`,{className:`personal-machine-validation`,role:`alert`,children:t(`machine.requiredFields`)})]}):(0,B.jsxs)(`label`,{className:`personal-capability-json-editor`,htmlFor:`machine-configuration-json`,children:[(0,B.jsx)(`span`,{children:t(`machine.jsonConfiguration`)}),(0,B.jsx)(`textarea`,{"aria-describedby":`machine-configuration-json-help`,disabled:!!b,id:`machine-configuration-json`,onChange:e=>{l(e.target.value),p(null),C(null)},rows:12,spellCheck:!1,value:c}),(0,B.jsx)(`small`,{id:`machine-configuration-json-help`,children:t(`machine.jsonConfigurationHelp`)}),j?null:(0,B.jsx)(`span`,{className:`personal-machine-validation`,role:`alert`,children:t(`machine.jsonInvalid`)})]})]}):null,S?(0,B.jsx)(`p`,{className:`personal-machine-error`,role:`alert`,children:S}):null,w?(0,B.jsxs)(`p`,{className:`personal-machine-notice`,role:`status`,"aria-live":`polite`,children:[(0,B.jsx)(am,{"aria-hidden":!0,size:16}),w]}):null,f?(0,B.jsxs)(`section`,{"aria-label":t(`machine.preview`),className:`personal-machine-preview`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:t(`machine.preview`)}),(0,B.jsx)(`span`,{children:t(`machine.action.${f.action}`)})]}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`machine.currentRevision`)}),(0,B.jsx)(`dd`,{title:f.current_revision,children:zx(f.current_revision)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`machine.desiredRevision`)}),(0,B.jsx)(`dd`,{title:f.desired_revision,children:zx(f.desired_revision)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`machine.changedNamespaces`)}),(0,B.jsx)(`dd`,{children:f.changed_namespaces.join(`, `)||t(`common.none`)})]})]}),(0,B.jsx)(`p`,{children:t(`machine.previewLocked`)})]}):null,g?.rollback_available&&g.transaction_id?(0,B.jsxs)(`section`,{className:`personal-machine-rollback`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:t(`machine.rollbackAvailable`)}),(0,B.jsx)(`p`,{children:t(v?`machine.rollbackPreviewDescription`:`machine.rollbackDescription`)})]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,disabled:!!b||!!(v&&!v.rollback_allowed),onClick:()=>void(v?I():oe()),type:`button`,children:[(0,B.jsx)(Um,{"aria-hidden":!0,size:15}),t(b===`rollback`||b===`rollback-preview`?`common.loading`:v?`machine.confirmRollback`:`machine.previewRollback`)]})]}):null,A?(0,B.jsxs)(`footer`,{className:`personal-capability-actions`,children:[te?(0,B.jsxs)(`button`,{className:`is-danger`,disabled:!!b,onClick:()=>void ae(),type:`button`,children:[(0,B.jsx)(nh,{"aria-hidden":!0,size:15}),t(`machine.previewRemoval`)]}):null,(0,B.jsx)(`button`,{disabled:!!b||!ne,onClick:()=>void ie(),type:`button`,children:t(b===`preview`?`common.loading`:`machine.previewChanges`)}),(0,B.jsx)(`button`,{className:`is-primary`,disabled:!!b||!f,onClick:()=>void F(),type:`button`,children:t(b===`apply`?`common.loading`:`machine.applyPreview`)})]}):null,k.available_scopes.includes(`machine`)?(0,B.jsx)(xx,{values:[{label:t(`machine.currentValue`),value:ee},{label:t(`capabilities.defaultValue`),value:k.default}],t},k.capability_id):null]})]})]})]}):(0,B.jsx)(`p`,{className:`personal-capability-empty`,children:t(`machine.capabilityEmpty`)})}function Vx(e,t){return t(e===`invalid`?`machine.credentialInvalid`:e===`configured`?`machine.credentialConfigured`:`machine.credentialAbsent`)}function Hx(e,t){return t(e===`machine_store`?`machine.credentialSourceMachine`:e===`service_environment`?`machine.credentialSourceEnvironment`:`machine.credentialSourceUnset`)}function Ux(){let{t:e}=Ji(),[t,n]=(0,z.useState)(null),[r,i]=(0,z.useState)(``),[a,o]=(0,z.useState)(``),[s,c]=(0,z.useState)(``),[l,u]=(0,z.useState)(null),[d,f]=(0,z.useState)(null),p=(0,z.useCallback)(async()=>{c(`load`);try{let e=await Lg();n(e),o(String(e.base_url.value??``))}catch(t){u(t instanceof Error?t.message:e(`machine.credentialError`))}finally{c(``)}},[e]);(0,z.useEffect)(()=>{p()},[p]);async function m(t,r){c(`store`),u(null),f(null);try{let e=await Rg(t);n(e),o(String(e.base_url.value??``)),i(``),f(r)}catch(t){u(t instanceof Error?t.message:e(`machine.credentialError`))}finally{c(``)}}if(!t&&s===`load`)return(0,B.jsx)(`div`,{className:`personal-machine-loading`,role:`status`,children:e(`common.loading`)});let h=t?`${Vx(t.provider_key.configured?`configured`:`absent`,e)} · ${Hx(t.provider_key.source,e)}`:``,g=t?`${t.base_url.value??e(`machine.credentialAbsent`)} · ${Hx(t.base_url.source,e)}`:``;return(0,B.jsxs)(`section`,{className:`personal-operator-credential`,"data-testid":`operator-credential-settings`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(Tm,{"aria-hidden":!0,size:17}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:e(`machine.credentialTitle`)}),(0,B.jsx)(`p`,{children:e(`machine.credentialDescription`)})]}),(0,B.jsx)(`span`,{className:`personal-operator-credential-status`,children:t?Vx(t.status,e):e(`common.loading`)})]}),t?(0,B.jsxs)(`dl`,{className:`personal-operator-credential-readback`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:e(`machine.credentialApiKey`)}),(0,B.jsx)(`dd`,{children:h})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:e(`machine.credentialFingerprint`)}),(0,B.jsx)(`dd`,{children:(0,B.jsx)(`code`,{children:t.provider_key.fingerprint??e(`common.none`)})})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:e(`machine.credentialBaseUrl`)}),(0,B.jsx)(`dd`,{children:g})]})]}):null,t?.status===`invalid`&&t.repair?(0,B.jsx)(`p`,{className:`personal-machine-error`,role:`alert`,children:t.repair}):null,(0,B.jsxs)(`label`,{htmlFor:`operator-credential-api-key`,children:[(0,B.jsx)(`span`,{children:e(`machine.credentialApiKey`)}),(0,B.jsx)(`input`,{autoComplete:`off`,disabled:!!s,id:`operator-credential-api-key`,onChange:e=>i(e.target.value),placeholder:e(`machine.credentialApiKeyPlaceholder`),type:`password`,value:r})]}),(0,B.jsxs)(`label`,{htmlFor:`operator-credential-base-url`,children:[(0,B.jsx)(`span`,{children:e(`machine.credentialBaseUrl`)}),(0,B.jsx)(`input`,{autoComplete:`off`,disabled:!!s,id:`operator-credential-base-url`,onChange:e=>o(e.target.value),placeholder:e(`machine.credentialBaseUrlPlaceholder`),type:`text`,value:a})]}),l?(0,B.jsx)(`p`,{className:`personal-machine-error`,role:`alert`,children:l}):null,d?(0,B.jsxs)(`p`,{className:`personal-machine-notice`,role:`status`,"aria-live":`polite`,children:[(0,B.jsx)(am,{"aria-hidden":!0,size:16}),d]}):null,(0,B.jsxs)(`footer`,{className:`personal-operator-credential-actions`,children:[(0,B.jsx)(`button`,{className:`is-primary`,disabled:!!s||!r.trim()&&!a.trim(),onClick:()=>void m({...r.trim()?{provider_key:r}:{},...a.trim()?{base_url:a}:{}},e(`machine.credentialStored`)),type:`button`,children:e(s===`store`?`common.loading`:`machine.credentialStore`)}),(0,B.jsxs)(`button`,{disabled:!!s||t?.provider_key.configured!==!0,onClick:()=>void m({clear_provider_key:!0},e(`machine.credentialCleared`)),type:`button`,children:[(0,B.jsx)(nh,{"aria-hidden":!0,size:15}),e(`machine.credentialClearKey`)]}),(0,B.jsxs)(`button`,{disabled:!!s||t?.base_url.configured!==!0,onClick:()=>void m({clear_base_url:!0},e(`machine.credentialCleared`)),type:`button`,children:[(0,B.jsx)(nh,{"aria-hidden":!0,size:15}),e(`machine.credentialClearUrl`)]})]}),(0,B.jsxs)(`details`,{className:`personal-capability-scope-note`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:17}),e(`machine.credentialTitle`)]}),(0,B.jsx)(`p`,{children:e(`machine.credentialBoundary`)})]})]})}var Wx={appearance:Im,capabilities:Zm,language:Em,lark:Ym,machine:qm,provider:Tm};function Gx({callbacks:e,focusGoalConnection:t=!1,goals:n,initialGoalId:r,initialTab:i=`lark`,goalNotifications:a,onChanged:o,onClose:s,onThemeChange:c,theme:l}){let{locale:u,setLocale:d,t:f}=Ji(),[p,m]=(0,z.useState)(i),h=[...r?[{key:`capabilities`,label:f(`capabilities.title`)}]:[],{key:`provider`,label:f(`settings.modelProvider`)},{key:`machine`,label:f(`settings.globalCapabilities`)},{key:`lark`,label:`Lark`},{key:`appearance`,label:f(`settings.appearance`)},{key:`language`,label:f(`settings.language`)}],g=[{label:f(`settings.languageEnglish`),value:`en`},{label:f(`settings.languageSimplifiedChinese`),value:`zh-CN`}],_={appearance:{title:f(`settings.appearance`)},capabilities:{title:f(`capabilities.title`)},language:{title:f(`settings.language`)},lark:{title:`Lark`},machine:{title:f(`settings.globalCapabilities`)},provider:{title:f(`settings.modelProvider`)}}[p];return(0,B.jsxs)(`section`,{"aria-label":f(`settings.title`),className:`personal-settings-page`,"data-pw-theme":l,children:[(0,B.jsxs)(`aside`,{className:`personal-settings-sidebar`,children:[(0,B.jsxs)(`button`,{className:`personal-settings-back`,onClick:s,type:`button`,children:[(0,B.jsx)(Xp,{size:17}),(0,B.jsx)(`span`,{children:f(`settings.back`)})]}),(0,B.jsxs)(`div`,{className:`personal-settings-title`,children:[(0,B.jsx)(`small`,{children:f(`settings.eyebrow`)}),(0,B.jsx)(`strong`,{children:f(`settings.title`)})]}),(0,B.jsx)(`nav`,{"aria-label":f(`settings.categories`),className:`personal-settings-tabs`,children:h.map(e=>{let t=Wx[e.key];return(0,B.jsxs)(`button`,{"aria-current":p===e.key?`page`:void 0,onClick:()=>m(e.key),type:`button`,children:[(0,B.jsx)(t,{size:17}),(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:e.label})})]},e.key)})})]}),(0,B.jsxs)(`main`,{className:`personal-settings-body`,children:[(0,B.jsx)(`header`,{className:`personal-settings-header`,children:(0,B.jsx)(`div`,{children:(0,B.jsx)(`h1`,{children:_.title})})}),p===`lark`?(0,B.jsx)(cx,{embedded:!0,focusGoalConnection:t,goals:n,initialGoalId:r,onChanged:o,onClose:s}):null,p===`provider`?(0,B.jsx)(`div`,{className:`personal-provider-settings`,children:(0,B.jsx)(Ux,{})}):null,p===`machine`?(0,B.jsx)(Bx,{}):null,p===`capabilities`?(0,B.jsx)(Nx,{callbacks:e,goalId:r,notification:a.find(e=>e.goalId===r),onChanged:o}):null,p===`appearance`?(0,B.jsxs)(`section`,{className:`personal-detail-card personal-appearance-settings`,children:[(0,B.jsx)(`small`,{children:f(`settings.workspaceDisplay`)}),(0,B.jsx)(`h3`,{children:f(`settings.appearance`)}),(0,B.jsxs)(`div`,{className:`personal-settings-choice-group`,role:`radiogroup`,"aria-label":f(`settings.workspaceTheme`),children:[(0,B.jsxs)(`button`,{"aria-checked":l===`loopx`,onClick:()=>c(`loopx`),role:`radio`,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-settings-theme-swatch is-loopx`}),(0,B.jsx)(`strong`,{children:f(`settings.themeLoopx`)})]}),(0,B.jsxs)(`button`,{"aria-checked":l===`paper`,onClick:()=>c(`paper`),role:`radio`,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-settings-theme-swatch is-paper`}),(0,B.jsx)(`strong`,{children:f(`settings.themeDefault`)})]}),(0,B.jsxs)(`button`,{"aria-checked":l===`brutal`,onClick:()=>c(`brutal`),role:`radio`,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-settings-theme-swatch is-brutal`}),(0,B.jsx)(`strong`,{children:f(`settings.themeHighContrast`)})]})]})]}):null,p===`language`?(0,B.jsxs)(`section`,{className:`personal-settings-card`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`span`,{className:`personal-settings-icon`,children:(0,B.jsx)(Em,{size:18})}),(0,B.jsx)(`div`,{children:(0,B.jsx)(`h2`,{children:f(`settings.language`)})})]}),(0,B.jsx)(`div`,{"aria-label":f(`settings.language`),className:`personal-language-options`,role:`radiogroup`,children:g.map(e=>(0,B.jsxs)(`button`,{"aria-checked":u===e.value,className:u===e.value?`is-selected`:``,onClick:()=>d(e.value),role:`radio`,type:`button`,children:[(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:e.label})}),u===e.value?(0,B.jsx)(am,{"aria-hidden":!0,size:17}):null]},e.value))})]}):null]})]})}var Kx=`loopx-pw-theme`,qx=`loopx`;function Jx(){try{let e=window.localStorage.getItem(Kx);return e===`loopx`||e===`paper`||e===`brutal`?e:qx}catch{return qx}}function Yx(e){try{window.localStorage.setItem(Kx,e)}catch{}}function Xx({drawer:e,drawerMode:t=`panel`,drawerOpen:n,main:r,mobileSidebarOpen:i=!1,onCloseMobileSidebar:a,sidebar:o,theme:s=`loopx`}){let{t:c}=Ji(),l=(0,z.useRef)(null),u=(0,z.useRef)(null);return(0,z.useEffect)(()=>{if(!i)return;u.current=document.activeElement instanceof HTMLElement?document.activeElement:null;let e=l.current?.querySelectorAll(`button:not([disabled]), a[href], select:not([disabled]), textarea:not([disabled]), input:not([disabled]), [tabindex]:not([tabindex="-1"])`);e?.[0]?.focus();function t(t){if(t.key!==`Tab`||!e?.length)return;let n=e[0],r=e[e.length-1];t.shiftKey&&document.activeElement===n?(t.preventDefault(),r.focus()):!t.shiftKey&&document.activeElement===r&&(t.preventDefault(),n.focus())}return document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`keydown`,t),u.current?.focus(),u.current=null}},[i]),(0,B.jsxs)(`section`,{className:`personal-workspace-shell${n?` has-drawer`:``}${n&&t.startsWith(`inspector`)?` has-task-inspector`:``}${t===`inspector-full`?` is-task-inspector-full`:``}${i?` mobile-sidebar-open`:``}`,"data-pw-theme":s,children:[i?(0,B.jsx)(`button`,{"aria-hidden":!0,className:`personal-sidebar-backdrop`,onClick:a,tabIndex:-1,type:`button`}):null,(0,B.jsx)(`aside`,{"aria-label":i?c(`header.goalNavigation`):void 0,"aria-modal":i?!0:void 0,className:`personal-workspace-sidebar`,"data-workspace-sidebar":!0,ref:l,role:i?`dialog`:void 0,children:(0,B.jsxs)(`div`,{className:`personal-workspace-sidebar-inner`,children:[i?(0,B.jsxs)(`button`,{className:`personal-sr-only`,onClick:a,type:`button`,children:[c(`common.close`),` `,c(`header.goalNavigation`)]}):null,o]})}),(0,B.jsx)(`main`,{"aria-hidden":i||void 0,className:`personal-workspace-main`,inert:i||void 0,children:r}),n?(0,B.jsx)(`aside`,{className:`personal-workspace-drawer`,"data-context-drawer":!0,"data-drawer-mode":t,children:e}):null]})}function Zx(e){let t=e.match(/(?:下一步|建议|行动项|待办)[::\s]*([^\n]+)/u),n=t?t[1]:e;n=n.replace(/```[\s\S]*?```/g,``).replace(/`([^`]+)`/g,`$1`).replace(/\[([^\]]+)\]\([^)]+\)/g,`$1`).replace(/[#*~_>]/g,``).replace(/^[-*•\d+.\s]+/u,``).replace(/^(好的|没问题|收到|建议如下|任务如下|分析如下|结论[::])[\s,,::]*/u,``);let r=(n.split(/\r?\n/).map(e=>e.trim()).filter(Boolean)[0]||n).replace(/\s+/gu,` `).trim();return Array.from(r).slice(0,120).join(``)}function Qx(e){let t=new Map;return e.forEach(e=>{let n=e.fields.find(e=>e.key===`todo_id`)?.value??``,r=[e.actionKind,e.goalId??``,n,e.title].join(`:`);t.set(r,e)}),[...t.values()]}function $x(e,t,n){if(!e)return n(`home.noFirstActivity`);let r=new Date(e);if(Number.isNaN(r.getTime()))return e;let i=new Date,a=new Intl.DateTimeFormat(t,{hour:`2-digit`,minute:`2-digit`,hour12:!1}).format(r);return r.toDateString()===i.toDateString()?n(`home.todayAt`,{time:a}):new Intl.DateTimeFormat(t,{month:`numeric`,day:`numeric`,hour:`2-digit`,minute:`2-digit`,hour12:!1}).format(r)}function eS({goals:e,onSelectGoal:t,onRetry:n,systemHealth:r}){let{locale:i,t:a}=Ji(),o=e.filter(e=>e.activationState===`active`),s=o.filter(e=>e.loadState===`error`).length,c=[{key:`needs_you`,label:a(`home.lane.needsYou`)},{key:`running`,label:a(`home.lane.running`)},{key:`observing`,label:a(`home.lane.observing`)},{key:`scheduled`,label:a(`home.lane.scheduled`)}],l=Object.fromEntries(c.map(e=>[e.key,[]])),u=[],d=[];e.filter(e=>!e.loadState).forEach(e=>{let t=qy(e);t===`history`?u.push(e):t===`stopped`?d.push(e):l[t].push(e)});let f=e=>(0,B.jsxs)(`button`,{className:`personal-home-goal-card`,"data-goal-state":e.loadState??e.state,"data-load-error":e.loadError,onClick:()=>t(e.goalId),type:`button`,children:[(0,B.jsxs)(`span`,{className:`personal-home-goal-meta`,children:[(0,B.jsx)(`i`,{}),e.agentLaneCount&&e.agentLaneCount>1?a(`header.workAgentCount`,{count:e.agentLaneCount}):e.agentLabel??e.agentId]}),(0,B.jsx)(`strong`,{children:e.title}),(0,B.jsx)(`p`,{children:e.loadError?a(`startup.error.${e.loadError}`):e.needsYou??e.nextSentence}),(0,B.jsxs)(`footer`,{children:[(0,B.jsx)(`span`,{children:e.loadState?a(e.loadState===`error`?`startup.goalError`:`startup.goalLoading`):Yi(e.state,i)}),(0,B.jsx)(`small`,{title:e.latestActivity,children:e.loadState?``:e.latestActivity?$x(e.latestActivity,i,a):e.agentTodos.length?a(`home.taskCount`,{count:e.agentTodos.length}):a(`home.noActivity`)})]})]},e.goalId);return(0,B.jsxs)(`section`,{"aria-label":a(`home.workspace`),className:`personal-home-board`,children:[r&&(!r.ok||r.issues.length>0||r.freshnessWarning)?(0,B.jsxs)(`div`,{className:`personal-system-health-banner`,role:`alert`,children:[(0,B.jsxs)(`div`,{className:`personal-system-health-header`,children:[(0,B.jsx)(lm,{size:15}),(0,B.jsx)(`strong`,{children:a(`home.systemHealth`,{summary:r.summary})}),r.freshnessWarning?(0,B.jsxs)(`small`,{children:[`(`,r.freshnessWarning,`)`]}):null]}),r.issues.length>0?(0,B.jsx)(`ul`,{className:`personal-system-health-issues`,children:r.issues.map((e,t)=>(0,B.jsx)(`li`,{children:e},t))}):null]}):null,o.some(e=>e.loadState)?(0,B.jsxs)(`section`,{className:`personal-home-lane`,"aria-live":`polite`,children:[(0,B.jsx)(`header`,{children:a(`startup.progress`,{loaded:o.filter(e=>!e.loadState).length,total:o.length})}),s?(0,B.jsxs)(`div`,{className:`personal-stopped-goal-error`,role:`status`,children:[(0,B.jsx)(`span`,{children:a(`startup.failedCount`,{count:s})}),(0,B.jsx)(`button`,{className:`min-h-11 rounded-md border px-3 py-2 text-sm`,onClick:n,type:`button`,children:a(`startup.retryFailed`)})]}):null,o.filter(e=>e.loadState).map(f)]}):null,(0,B.jsx)(`div`,{className:`personal-home-lanes`,children:c.map(e=>(0,B.jsxs)(`section`,{className:`personal-home-lane is-${e.key}`,"data-testid":`personal-home-lane-${e.key}`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`i`,{}),e.label]}),(0,B.jsx)(`b`,{children:l[e.key].length})]}),(0,B.jsx)(`div`,{className:`personal-home-lane-list`,children:l[e.key].length?l[e.key].map(f):(0,B.jsx)(`span`,{className:`personal-home-empty`,children:a(`home.empty`)})})]},e.key))}),(0,B.jsxs)(`details`,{className:`personal-home-history`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(`span`,{children:a(`home.history`)}),(0,B.jsx)(`b`,{children:u.length}),(0,B.jsx)(`small`,{children:a(`home.completedGoals`)})]}),(0,B.jsx)(`div`,{children:u.length?u.map(f):(0,B.jsx)(`span`,{className:`personal-home-empty`,children:a(`home.noCompletedGoals`)})})]}),d.length?(0,B.jsxs)(`details`,{className:`personal-home-history is-stopped`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(`span`,{children:a(`home.stopped`)}),(0,B.jsx)(`b`,{children:d.length}),(0,B.jsx)(`small`,{children:a(`home.preservedState`)})]}),(0,B.jsx)(`div`,{children:d.map(f)})]}):null]})}function tS({items:e,onSelect:t,reportState:n}){let{locale:r,t:i}=Ji();return(0,B.jsxs)(`section`,{className:`personal-object-list personal-files-list`,"data-testid":`personal-goal-outputs`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:i(`files.title`)}),(0,B.jsx)(`span`,{children:e.length})]}),n?.loading?(0,B.jsxs)(`p`,{className:`personal-object-list-state`,role:`status`,children:[(0,B.jsx)(Hm,{className:`is-spinning`,size:14}),i(`files.loadingReports`)]}):null,n?.error?(0,B.jsxs)(`p`,{className:`personal-object-list-state is-error`,role:`alert`,children:[(0,B.jsx)(lm,{size:14}),i(`files.reportLoadFailed`),`: `,n.error]}):null,!n?.loading&&!n?.error&&e.length===0?(0,B.jsxs)(`p`,{className:`personal-object-list-state`,children:[(0,B.jsx)(xm,{size:14}),i(`files.empty`)]}):null,e.map(e=>(0,B.jsxs)(`button`,{"data-output-kind":e.output.kind,onClick:()=>t({item:e.output,kind:`output`}),type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-file-icon`,children:(0,B.jsx)(xm,{size:16})}),(0,B.jsx)(`strong`,{children:e.output.title}),e.output.report?(0,B.jsx)(`em`,{children:i(`files.reportDelta`,{added:e.output.report.addedCount,changed:e.output.report.changedCount})}):null,(0,B.jsx)(`p`,{children:e.output.summary??e.output.safePreview??e.output.kind??i(`files.emptySummary`)}),(0,B.jsx)(`small`,{title:e.output.createdAt,children:[e.output.goalTitle,e.output.kind===`report`?i(`files.verifiedReport`):null,e.output.todoId?`${i(`common.task`)} ${e.output.todoId}`:null,$x(e.output.createdAt,r,i)].filter(Boolean).join(` · `)})]},e.id))]})}function nS({agentLabel:e,messages:t,onClose:n,onDraftTask:r,onOpenConversation:i,title:a}){let{t:o}=Ji(),s=t.reduce((e,t,n)=>t.role===`user`?n:e,0),c=t.slice(Math.max(0,s)).slice(-3),l=c.filter(e=>e.role===`assistant`&&!e.pending).at(-1);return(0,z.useEffect)(()=>{if(!n)return;let e=e=>{e.key===`Escape`&&n()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n]),(0,B.jsxs)(`aside`,{"aria-label":o(`conversation.receipt`),className:`personal-manager-conversation-tray`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(nm,{size:16}),(0,B.jsx)(`strong`,{children:a??o(`conversation.title`)}),(0,B.jsx)(`small`,{children:t.at(-1)?.pending?o(`conversation.replying`):o(`common.recently`)})]}),(0,B.jsxs)(`div`,{className:`personal-manager-conversation-actions`,children:[r&&l?(0,B.jsxs)(`button`,{className:`personal-manager-conversation-btn`,onClick:()=>r(l.text),title:o(`conversation.convertHint`),type:`button`,children:[(0,B.jsx)(Om,{size:13}),(0,B.jsx)(`span`,{children:o(`conversation.toTask`)})]}):null,(0,B.jsx)(`button`,{className:`personal-manager-conversation-link`,onClick:i,type:`button`,children:o(`conversation.full`)}),n?(0,B.jsx)(`button`,{"aria-label":o(`conversation.close`),className:`personal-manager-conversation-close`,onClick:n,title:o(`conversation.close`),type:`button`,children:(0,B.jsx)(ah,{size:14})}):null]})]}),(0,B.jsx)(`div`,{"aria-live":`polite`,className:`personal-manager-conversation-messages`,children:c.map(t=>(0,B.jsxs)(`article`,{className:`is-${t.role}`,children:[(0,B.jsx)(`strong`,{children:t.role===`user`?o(`common.you`):t.agentLabel??e??o(`header.manager`)}),(0,B.jsxs)(`div`,{className:`personal-manager-conversation-bubble`,children:[t.role===`user`?(0,B.jsx)(`p`,{children:t.text}):(0,B.jsx)(cb,{text:t.text}),t.pending?(0,B.jsx)(`small`,{children:o(`conversation.agentPending`)}):null,(0,B.jsx)(pb,{delivery:t.returnDelivery})]})]},t.id))})]})}function rS({onClose:e,onOpenDetails:t,run:n}){let{t:r}=Ji();return(0,B.jsxs)(`section`,{"aria-label":r(`session.record`),className:`personal-session-record`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(nm,{size:17}),r(`session.record`)]}),(0,B.jsx)(`button`,{"aria-label":r(`session.closeRecord`),onClick:e,type:`button`,children:(0,B.jsx)(ah,{size:15})})]}),(0,B.jsx)(`div`,{children:(0,B.jsx)(`strong`,{children:n.title})}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Agent`}),(0,B.jsx)(`dd`,{children:n.agentLabel})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`common.status`)}),(0,B.jsx)(`dd`,{children:Xi(n.sessionStatus??n.status,r)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Session`}),(0,B.jsx)(`dd`,{title:n.sessionId,children:n.sessionId})]})]}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:t,type:`button`,children:r(`session.details`)})]})}function iS(e,t,n){let r=[];if(t===null)return e.userTodos.slice(0,4).forEach(t=>r.push({attention:{...t,goalTitle:t.goalTitle??Ky(e,t.goalId)},id:`attention:${t.todoId}`,kind:`attention`})),e.goals.filter(e=>qy(e)===`running`).slice(0,4).forEach(e=>r.push({id:`run:${e.goalId}`,kind:`run`,run:{agentId:e.agentId,agentLabel:e.agentLabel??e.agentId,completedSteps:e.doneTodoCount??e.agentTodos.filter(e=>e.done).length,goalId:e.goalId,goalTitle:e.title,latestActivity:e.agentSentence,runId:`goal:${e.goalId}`,status:`running`,title:e.nextSentence,totalSteps:Math.max((e.doneTodoCount??0)+e.agentTodos.filter(e=>!e.done).length,1)}})),r;let i=e.goals.find(e=>e.goalId===t);if(!i)return r;if(i.needsYou){let t=e.userTodos.find(e=>e.goalId===i.goalId);r.push({attention:t?{...t,goalTitle:i.title}:{blocking:i.needsYouBlocking??!1,goalId:i.goalId,goalTitle:i.title,text:i.needsYou,todoId:`${i.goalId}:attention`},id:`attention:${i.goalId}`,kind:`attention`})}r.push({id:`run:${i.goalId}`,kind:`run`,run:{agentId:i.agentId,agentLabel:i.agentLabel??i.agentId,completedSteps:i.doneTodoCount??i.agentTodos.filter(e=>e.done).length,goalId:i.goalId,goalTitle:i.title,latestActivity:i.agentSentence,runId:`goal:${i.goalId}`,status:i.state===`推进中`?`running`:i.state===`需修复`?`failed`:`waiting`,title:i.nextSentence,totalSteps:Math.max((i.doneTodoCount??0)+i.agentTodos.filter(e=>!e.done).length,1)}}),i.agentTodos.filter(e=>e.taskClass===`continuous_monitor`).forEach(t=>{let a=e.timeline?.find(e=>e.kind===`run`&&e.run.goalId===i.goalId&&e.run.todoId===t.todoId&&!!e.run.sessionId);r.push({id:`schedule:${i.goalId}:${t.todoId}`,kind:`schedule`,schedule:{agentId:i.agentId,executionHistory:a?[{label:a.run.latestActivity||a.run.title,runId:a.run.runId,status:a.run.status===`waiting`||a.run.status===`queued`?`running`:a.run.status,timestamp:i.latestActivity||n(`common.recently`)}]:[],goalId:i.goalId,label:t.text,schedule:t.evidence??n(`schedule.summary`),scheduleId:t.todoId,scheduleKind:`monitor`,sessionId:a?.run.sessionId,status:t.done||t.status===`paused`?`paused`:`active`,stopCondition:n(`drawer.scheduleDefaultStop`),target:t.text,timezone:`Asia/Shanghai`}})});let a=e.timeline?.find(e=>e.kind===`proposal`&&e.proposal.actionKind===`heartbeat.bind`&&e.proposal.goalId===i.goalId);if(a){let e=e=>a.proposal.fields.find(t=>t.key===e)?.value;r.push({id:`schedule:${i.goalId}:heartbeat`,kind:`schedule`,schedule:{agentId:i.agentId,executionHistory:[],goalId:i.goalId,label:`${n(`schedule.heartbeat`)} · ${i.title}`,nextRunAt:n(`drawer.schedulePending`),notificationRule:n(`drawer.scheduleDefaultNotification`),schedule:e(`cadence`)??n(`schedule.summary`),scheduleId:`${i.goalId}:heartbeat`,scheduleKind:`heartbeat`,status:a.proposal.status===`applied`?`active`:`draft`,stopCondition:e(`stop_condition`)??n(`drawer.scheduleDefaultStop`),timezone:e(`timezone`)??`Asia/Shanghai`}})}return r}function aS(e){return e===`preview_ready`?`ready`:e===`cancelled`?`draft`:e===`failed`?`error`:e}function oS(e,t){let n={agent_id:t(`proposal.field.agentId`),cadence:t(`proposal.field.cadence`),completion_criteria:t(`proposal.field.completionCriteria`),execution_boundary:t(`proposal.field.executionBoundary`),goal_id:t(`proposal.field.goalId`),heartbeat:t(`proposal.field.heartbeat`),initial_todos:t(`proposal.field.initialTodos`),objective:t(`proposal.field.objective`),operation:t(`proposal.field.operation`),permission:t(`proposal.field.permission`),reason:t(`proposal.field.reason`),stop_condition:t(`proposal.field.stopCondition`),target:t(`proposal.field.target`),timezone:t(`proposal.field.timezone`),title:t(`proposal.field.title`),workspace_ref:t(`proposal.field.workspace`)},r=[`title`,`objective`,`completion_criteria`,`execution_boundary`,`permission`,`agent_id`,`workspace_ref`,`initial_todos`,`heartbeat`,`stop_condition`,`goal_id`];return Object.entries(e).sort(([e],[t])=>{let n=r.indexOf(e),i=r.indexOf(t);return(n<0?r.length:n)-(i<0?r.length:i)}).slice(0,10).map(([e,r])=>({key:e,label:n[e]??e.replaceAll(`_`,` `),value:e===`workspace_ref`?r===`current`?t(`proposal.workspace.current`):t(`proposal.workspace.named`,{workspace:String(r??`current`)}):Array.isArray(r)?r.join(` · `):typeof r==`object`&&r?JSON.stringify(r):String(r??`—`)}))}function sS(e,t,n){let r=t.operationFrame,i=r?.content.fields.map((e,t)=>({key:`projection:${t}`,label:e.label,value:e.value})).slice(0,8)??[];return[{key:`operation_state`,label:n(`proposal.field.operationState`),value:r?.lifecycleState??e.status},...r?.kind===`result`?[{key:`result_delivery`,label:n(`proposal.field.resultDelivery`),value:r.resultDeliveryVerified?n(`proposal.resultDelivery.verified`):n(`proposal.resultDelivery.pending`)}]:[],...i,...r?[{key:`warning`,label:n(`proposal.field.confirmationBoundary`),value:r.content.warning}]:[],...r?[{key:`expires_at`,label:n(`proposal.field.expiresAt`),value:r.expiresAt}]:[]].slice(0,10)}function cS(e){if(e.action_kind!==`goal.lifecycle`)return;let t=e.normalized_parameters.operation;return t===`stop`||t===`resume`||t===`delete`?t:void 0}function lS(e,t){let n=cS(e),r=Ny(e),i=typeof e.normalized_parameters.title==`string`?e.normalized_parameters.title:typeof e.normalized_parameters.goal_id==`string`?e.normalized_parameters.goal_id:``,a=typeof e.normalized_parameters.target==`string`?e.normalized_parameters.target:``,o=r.operationFrame,s=o?.content.title??e.summary,c=e.action_kind===`operation.execute`?s:e.action_kind===`team.plan`?t(`proposal.summary.teamPlan`,{goal:zy(e.normalized_parameters),count:Ry(e.normalized_parameters)}):e.action_kind===`goal.create`?t(`proposal.summary.goalCreate`,{title:i}):e.action_kind===`heartbeat.bind`?t(`proposal.summary.heartbeat`):e.action_kind===`monitor.create`?t(`proposal.summary.monitor`,{target:a}):e.action_kind===`goal.lifecycle`&&n===`stop`?t(`proposal.summary.lifecycleStop`,{title:i}):e.action_kind===`goal.lifecycle`&&n===`delete`?t(`proposal.summary.lifecycleDelete`,{title:i}):e.action_kind===`goal.lifecycle`?t(`proposal.summary.lifecycleResume`,{title:i}):e.summary;return{actionKind:e.action_kind,reviewPlan:r,fields:e.action_kind===`operation.execute`?sS(e,r,t):e.action_kind===`team.plan`?Ly(e.normalized_parameters,t):oS(e.normalized_parameters,t),goalId:typeof e.normalized_parameters.goal_id==`string`?e.normalized_parameters.goal_id:void 0,impact:e.action_kind===`operation.execute`?t(`proposal.impact.operation`):e.action_kind===`team.plan`?t(`proposal.impact.teamPlan`):e.action_kind===`goal.create`?t(`proposal.impact.goalCreate`):e.action_kind===`goal.lifecycle`&&n===`stop`?t(`proposal.impact.lifecycleStop`):e.action_kind===`goal.lifecycle`&&n===`delete`?t(`proposal.impact.lifecycleDelete`):e.action_kind===`goal.lifecycle`?t(`proposal.impact.lifecycleResume`):e.permission_classification===`protected`?t(`proposal.impact.protected`):t(`proposal.impact.default`),previewId:e.proposal_id,lifecycleOperation:n,gate:e.gate?{kind:String(e.gate.kind??`protected_action`),nextAction:typeof e.gate.next_action==`string`?e.gate.next_action:void 0,summary:String(e.gate.summary??t(`proposal.gate.default`))}:void 0,primaryLabel:e.action_kind===`operation.execute`?o?.kind===`result`?o.resultDeliveryVerified?t(`proposal.primary.operationResultVerified`):t(`proposal.primary.operationResultPending`):t(`proposal.primary.operationGroup`):e.action_kind===`team.plan`?t(`proposal.primary.teamPlan`):e.action_kind===`goal.create`?t(`proposal.primary.goalCreate`):e.action_kind===`goal.lifecycle`&&n===`stop`?t(`proposal.primary.lifecycleStop`):e.action_kind===`goal.lifecycle`&&n===`delete`?t(`proposal.primary.lifecycleDelete`):e.action_kind===`goal.lifecycle`?t(`proposal.primary.lifecycleResume`):e.action_kind===`todo.create`&&e.normalized_parameters.start_execution===!0?t(`proposal.primary.todoStart`):t(`proposal.primary.apply`),status:e.status===`applied`&&e.action_kind!==`operation.execute`&&r.interaction!==`completed`?`error`:aS(e.status),teamPlanOutcome:e.action_kind===`team.plan`?Uy(e.receipt)??void 0:void 0,teamPlanGapLanes:e.action_kind===`team.plan`?By(e.receipt):void 0,title:c}}function uS(e){let t=e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,42);if(t)return t;let n=2166136261;for(let t of e)n^=t.codePointAt(0)??0,n=Math.imul(n,16777619);return`goal-${(n>>>0).toString(36)}`}function dS(e,t){let n=e.match(/[「“"]([^」”"]{2,80})[」”"]/u)?.[1];return n?n.trim():e.replace(/^(请|帮我|我想|给我|创建|新建|设置|please|i want to|create|set up)+/iu,``).replace(/(一个|新的)?\s*(goal|目标)/giu,``).replace(/[,。!?].*$/u,``).trim().slice(0,80)||t(`goal.defaultTitle`)}function fS(e,t){for(let n of e.split(/\r?\n/u)){let e=n.trim();for(let n of t){let t=e.match(RegExp(`^${n.replace(/[.*+?^${}()|[\]\\]/gu,`\\$&`)}\\s*[::]\\s*(.*)$`,`iu`));if(t?.[1]?.trim())return t[1].trim()}}return``}function pS(e,t){let n=fS(e,[`目标`,`Objective`]),r=fS(e,[`完成标准`,`Completion criteria`]),i=fS(e,[`执行边界(可选)`,`执行边界`,`边界`,`Execution boundary (optional)`,`Execution boundary`,`Boundary`]),a=(n||dS(e,t)).split(/[。;;\n]/u)[0].trim().slice(0,80)||t(`goal.defaultTitle`),o=[n||a,r?t(`goal.objectiveCompletion`,{criteria:r}):``,i?t(`goal.objectiveBoundary`,{boundary:i}):``].filter(Boolean).join(` -`),s=/(只读|不调用外部工具|不修改(?:仓库|代码|状态)|read.?only|do not (?:call|use) external tools|do not modify (?:repositories|repository|code|state))/iu.test(i||e);return{completionCriteria:r,executionBoundary:i,initialTodos:r?[t(`goal.initialTodo`,{criteria:r})]:[],objective:o,permission:s?`read_only`:`workspace_write_on_confirmation`,title:a}}function mS(e){let t=e.match(/(?:每|every)\s*(\d{1,3})\s*(?:分钟|minutes?)/iu)?.[1];if(t)return`${t}m`;let n=e.match(/(?:每|every)\s*(\d{1,2})\s*(?:小时|hours?)/iu)?.[1];return n?`${n}h`:/每小时|every hour|hourly/iu.test(e)?`1h`:(/每天|每日|早上|上午|daily|every day/iu.test(e),`1d`)}function hS(e,t){return/(每周|星期|周[一二三四五六日天]|weekly|every\s+(?:mon|tues|wednes|thurs|fri|satur|sun)day|\d{1,2}\s*[::]\s*\d{2})/iu.test(e)?t(`schedule.unsupportedCalendar`):null}function gS(e,t){return fS(e,[`检查内容`,`监控内容`,`目标`,`Check target`,`Monitor target`,`Target`])||e.replace(/^(?:为当前 Goal |for the current Goal )?(?:添加|配置|创建|add|configure|create)?\s*(?:定时检查|监控|scheduled check|monitor)[::]?/iu,``).split(/\r?\n/u)[0].trim()||t(`schedule.defaultTarget`)}function _S(e){return/(mr|pr).{0,8}(合并|merge)/iu.test(e)?`pr_merged`:/发布完成|上线完成|release (?:is )?complete|deployment (?:is )?complete/iu.test(e)?`release_complete`:`goal_complete`}function vS(e,t){let n=e.toLowerCase();return t.find(e=>n.includes(e.agentId.toLowerCase())||n.includes(e.label.toLowerCase()))}function yS(e){let t=fS(e,[`标题`,`任务标题`,`Todo 标题`]),n=fS(e,[`内容`,`任务内容`,`Todo 内容`]);if(t)return[t,n].filter(Boolean).join(`:`).slice(0,400);let r=e.match(/[「“"]([^」”"]{2,200})[」”"]/u)?.[1];return r?r.trim():e.replace(/^(请|帮我|给我|为当前 Goal |新增|新建|创建|添加|加上|加一个|记一个)+/u,``).replace(/^(一个\s*)?(普通\s*)?(todo|待办|任务)(?:\s*到\s*Tasks?)?[::\s]*/iu,``).replace(/[。;;,,]\s*(?:不要|不需要|无需|禁止|别|暂不).{0,80}(?:heartbeat|心跳|定时|监控|执行).*$/iu,``).replace(/[,,]\s*(并且|然后|再)?\s*(交给|分配给|让).+$/u,``).replace(/\s*(交给|分配给|让)\s+.+$/u,``).trim().slice(0,400)||`推进当前 Goal 的下一项工作`}var bS=new Set([`image/png`,`image/jpeg`,`image/webp`,`image/gif`]),xS=5242880,SS=4;function CS(e,t){return new Promise((n,r)=>{let i=new FileReader;i.onerror=()=>r(Error(t(`composer.imageReadError`,{name:e.name}))),i.onload=()=>n({dataUrl:String(i.result??``),id:crypto.randomUUID(),mimeType:e.type,name:e.name,size:e.size}),i.readAsDataURL(e)})}function wS({agents:e=[{agentId:`codex`,available:!0,capability:`代码与项目执行`,label:`Codex`}],callbacks:t={},goalArchiveLoadState:n={error:null,phase:`ready`},managerChannelBinding:r,managerRuntime:i,model:a,readOnly:o=!1,selectedAgentId:s,selectedGoalId:c,statusSourceControl:l}){let{locale:u,t:d}=Ji(),[f,p]=(0,z.useState)(c??null),[m,h]=(0,z.useState)(s??e.find(e=>e.available)?.agentId??`codex`),[g,_]=(0,z.useState)(null),[v,y]=(0,z.useState)(!1),[b,x]=(0,z.useState)(null),[S,C]=(0,z.useState)({}),[w,T]=(0,z.useState)(`chat`),[E,D]=(0,z.useState)(!1),[O,k]=(0,z.useState)(!1),[ee,te]=(0,z.useState)(!1),[A,j]=(0,z.useState)(()=>{try{let e=window.sessionStorage.getItem(`loopx-pw-composer-drafts`),t=e?JSON.parse(e):{};return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}catch{return{}}}),[M,ne]=(0,z.useState)(!1),[N,P]=(0,z.useState)([]),[re,ie]=(0,z.useState)(null),[ae,F]=(0,z.useState)(null),[oe,I]=(0,z.useState)(()=>new Set),[se,L]=(0,z.useState)(()=>new Set),[ce,le]=(0,z.useState)(`idle`),[ue,de]=(0,z.useState)([]),[fe,pe]=(0,z.useState)([]),[me,he]=(0,z.useState)(!1),[ge,_e]=(0,z.useState)(Jx),[ve,ye]=(0,z.useState)({}),[be,xe]=(0,z.useState)([]),Se=(0,z.useRef)(!1),Ce=(0,z.useRef)(NaN),we=(0,z.useRef)(null),Te=(0,z.useRef)(null),Ee=(0,z.useRef)(null),De=(0,z.useRef)(new Set),Oe=(0,z.useRef)(new Set),[ke,Ae]=(0,z.useState)(null),R=c===void 0?f:c,je=s??m,Me=`${R??`manager`}:${je}`,Ne=A[Me]??``;(0,z.useEffect)(()=>{P([]),ie(null)},[Me]);function Pe(e,t){j(n=>{let r={...n};t?r[e]=t:delete r[e];try{window.sessionStorage.setItem(`loopx-pw-composer-drafts`,JSON.stringify(r))}catch{}return r})}function Fe(e){Pe(Me,e)}function Ie(e){return vh.find(t=>t.id===e)?.prompt??``}(0,z.useEffect)(()=>{let e=we.current;e&&(e.style.height=`auto`,e.style.height=`${Math.min(e.scrollHeight,120)}px`)},[Ne]);let Le=(0,z.useMemo)(()=>a.goals.map(e=>{let t=ve[e.goalId];return t?{...e,repository:{branch:t.branch,identity:t.identity,label:t.label,readOnly:!0}}:e}),[ve,a.goals]),Re=(0,z.useMemo)(()=>Le.filter(e=>qy(e)===`needs_you`).length,[Le]),ze=(0,z.useMemo)(()=>Le.filter(e=>qy(e)===`needs_you`&&(e.needsYouBlocking||e.state===`等你`)).length,[Le]),V=Le.find(e=>e.goalId===R)??null,Be=g?.kind===`settings`,Ve=R,He=(0,z.useMemo)(()=>{let e=Object.values(S).filter(e=>e.actionKind===`heartbeat.bind`&&e.goalId&&e.status===`applied`).map(e=>({id:`schedule:${e.goalId}:heartbeat`,kind:`schedule`,schedule:{agentId:je,executionHistory:[],goalId:e.goalId,label:e.title,nextRunAt:d(`drawer.schedulePending`),notificationRule:d(`drawer.scheduleDefaultNotification`),schedule:e.fields.find(e=>e.key===`cadence`)?.value??d(`schedule.summary`),scheduleId:`${e.goalId}:heartbeat`,scheduleKind:`heartbeat`,status:e.status===`applied`?`active`:`draft`,stopCondition:e.fields.find(e=>e.key===`stop_condition`)?.value??d(`drawer.scheduleDefaultStop`),timezone:e.fields.find(e=>e.key===`timezone`)?.value??`Asia/Shanghai`}})),t=[...iS(a,Ve,d),...a.timeline??[],...e,...Qx(Object.values(S)).filter(e=>e.actionKind!==`heartbeat.bind`||e.status!==`applied`).map(e=>({id:`proposal:${e.previewId}`,kind:`proposal`,proposal:e}))];return[...new Map(t.map(e=>[e.id,e])).values()].filter(e=>e.kind!==`proposal`||![`stale`,`error`].includes(e.proposal.status)||ue.includes(e.proposal.previewId)).filter(e=>!R||e.kind===`message`?!0:e.kind===`proposal`?!e.proposal.goalId||e.proposal.goalId===R:e.kind===`attention`?e.attention.goalId===R:e.kind===`run`?e.run.goalId===R:e.kind===`schedule`?e.schedule.goalId===R:e.output.goalId===R)},[Ve,a,S,je,R,ue,d]),Ue=(0,z.useMemo)(()=>b?He.filter(e=>e.kind===`message`?!0:e.kind===`run`?e.run.runId===b.runId:e.kind===`output`&&e.output.runId===b.runId):He,[b,He]);(0,z.useEffect)(()=>{if(!b)return;let e=He.find(e=>e.kind===`run`&&e.run.runId===b.runId);!e||e.kind!==`run`||JSON.stringify({completedSteps:b.completedSteps,latestActivity:b.latestActivity,messages:b.sessionMessages,sessionStatus:b.sessionStatus,status:b.status,totalSteps:b.totalSteps})!==JSON.stringify({completedSteps:e.run.completedSteps,latestActivity:e.run.latestActivity,messages:e.run.sessionMessages,sessionStatus:e.run.sessionStatus,status:e.run.status,totalSteps:e.run.totalSteps})&&x(e.run)},[b,He]);let We=(0,z.useMemo)(()=>He.flatMap(e=>e.kind===`message`?[e.message]:[]),[He]),Ge=(0,z.useMemo)(()=>V?He.flatMap(e=>e.kind===`message`?[e.message]:[]):[],[He,V]);(0,z.useEffect)(()=>{V||E||We.some(e=>e.pending)&&k(!0)},[E,We,V]),(0,z.useEffect)(()=>{!V||w===`chat`||Ge.some(e=>e.pending)&&te(!0)},[Ge,V,w]);let Ke=(0,z.useMemo)(()=>He.filter(e=>e.kind===`message`||e.kind===`proposal`&&(ue.includes(e.proposal.previewId)||fe.includes(e.proposal.previewId))),[He,ue,fe]),qe=Ke[Ke.length-1],Je=qe?.kind===`message`?qe.message.text.length:0;(0,z.useEffect)(()=>{if(!E||!Te.current)return;let e=window.requestAnimationFrame(()=>{Te.current&&(Te.current.scrollTop=Te.current.scrollHeight)});return()=>window.cancelAnimationFrame(e)},[Ke.length,E,Je]);let Ye=(0,z.useMemo)(()=>{if(g?.kind===`settings`)return null;if(g?.kind===`attention`)return{kind:`attention`,item:Jd(g.item,a.attentionHistory??a.userTodos)};if(g?.kind===`goal`){let e=Le.find(e=>e.goalId===g.item.goalId);return e?{item:e,kind:`goal`}:g}if(g?.kind!==`run`)return g;let e=He.find(e=>e.kind===`run`&&e.run.runId===g.item.runId);return e?{item:e.run,kind:`run`}:g},[He,g,Le,a.attentionHistory,a.userTodos]);(0,z.useEffect)(()=>{if(o){ye({}),xe([]);return}let e=!1;return Promise.all([Xg(),s_()]).then(([t,n])=>{e||(ye(Object.fromEntries(t.map(e=>[e.goal_id,e.repository]))),xe(n))}).catch(()=>{}),()=>{e=!0}},[o]),(0,z.useEffect)(()=>{if(!me)return;function e(e){e.key===`Escape`&&he(!1)}return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[me]),(0,z.useEffect)(()=>{if(R||!He.length)return;if(!Se.current){Se.current=!0;try{Ce.current=Date.parse(window.localStorage.getItem(`loopx-pw-last-visit`)??``),window.localStorage.setItem(`loopx-pw-last-visit`,new Date().toISOString())}catch{Ce.current=NaN}}let e=Ce.current,t=He.filter(e=>e.kind===`run`).map(e=>e.run),n=t=>{let n=Date.parse(t??``);return!Number.isNaN(e)&&!Number.isNaN(n)&&n>e},r={attention:Re,done:t.filter(e=>e.status===`completed`&&n(e.latestActivity)).length,failed:t.filter(e=>(e.status===`failed`||e.status===`interrupted`)&&n(e.latestActivity)).length};Ae(e=>e?.attention===r.attention&&e.done===r.done&&e.failed===r.failed?e:r)},[He,Re,R]),(0,z.useEffect)(()=>{if(o){C({});return}let e=!1;return Hh(R?{goalId:R}:{contextKind:`manager`}).then(t=>{if(e)return;let n=t.filter(e=>[`preview_ready`,`gated`,`deferred`,`applying`].includes(e.status)||e.action_kind===`operation.execute`&&e.status===`applied`).map(e=>lS(e,d)),r=Object.fromEntries(n.map(e=>[e.previewId,e]));C(e=>({...e,...r})),R||pe(n.map(e=>e.previewId))}).catch(()=>{}),()=>{e=!0}},[o,R,d]);async function Xe(e,n={}){if(o)throw Error(d(`source.readOnlyWriteError`));let r;try{r=t.onPreviewAction?await t.onPreviewAction(e):lS(await Bh(e),d)}catch(t){if(!(t instanceof Fh)||t.payload.error_code!==`action_preview_gate`)throw t;let n=t.payload.gate&&typeof t.payload.gate==`object`?t.payload.gate:{},i=(Array.isArray(n.candidates)?n.candidates:[]).flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e;return typeof t.workspace_ref==`string`&&typeof t.label==`string`?[{label:t.label,workspaceRef:t.workspace_ref}]:[]}),a=String(n.kind??`workspace_selection_required`),o=a===`agent_binding_required`||a===`agent_identity_selection_required`;r={actionKind:e.actionKind,fields:i.map(e=>({key:`workspace_ref:${e.workspaceRef}`,label:e.label,value:e.workspaceRef})),gate:{kind:a,nextAction:typeof n.next_action==`string`?n.next_action:void 0,summary:String(n.summary??d(`proposal.workspaceGate.defaultSummary`))},impact:d(o?`proposal.workspaceGate.agentImpact`:`proposal.workspaceGate.selectionImpact`),previewId:`workspace-choice-${Date.now().toString(36)}`,sourceRequest:e,status:`gated`,title:d(o?`proposal.workspaceGate.agentTitle`:`proposal.workspaceGate.selectionTitle`),workspaceCandidates:i}}return de(e=>e.includes(r.previewId)?e:[...e,r.previewId]),C(e=>({...e,[r.previewId]:r})),n.select!==!1&&_({item:r,kind:`proposal`}),r}function Ze(){ot(null),Pe(`manager:${je}`,d(`composer.createGoalTemplate`)),window.requestAnimationFrame(()=>we.current?.focus())}async function Qe(e,n){he(!1);let r={delete:`Deleted from the owner workspace`,resume:`Resumed from the owner workspace`,stop:`Stopped from the owner workspace`},i={delete:d(`proposal.summary.lifecycleDelete`,{title:e.title}),resume:d(`proposal.summary.lifecycleResume`,{title:e.title}),stop:d(`proposal.summary.lifecycleStop`,{title:e.title})},a=null,o=!1;try{if(n===`stop`){if(De.current.has(e.goalId))return;De.current.add(e.goalId),I(new Set(De.current)),_(null),a={goalId:e.goalId,next:`stopped`,optimisticApplied:!0,previous:e.activationState},F(d(`feedback.applying`,{title:i.stop})),t.onGoalActivationStateChange?.(e.goalId,`stopped`)}if(t.onExecuteGoalLifecycle){if(n===`delete`)throw Error(`The selected status source does not authorize Goal deletion.`);let a=await t.onExecuteGoalLifecycle({goalId:e.goalId,operation:n,reason:r[n]});if(!a.projectionVerified)throw Error(`Goal lifecycle projection did not verify.`);o=!0,t.onGoalActivationStateChange?.(e.goalId,a.activationState),F(d(`feedback.completed`,{title:i[n]})),n===`stop`&&ot(null),await nt([e.goalId]);return}let s=await Xe({actionKind:`goal.lifecycle`,context:{kind:`goal_directory`,goal_id:e.goalId},idempotencyKey:`workspace-goal-${n}-${e.goalId}-${Date.now().toString(36)}`,normalizedParameters:{goal_id:e.goalId,operation:n,reason:r[n]},summary:i[n]},{select:n!==`stop`});if(s.goalId!==e.goalId||s.lifecycleOperation!==n)throw _(null),Error(d(`actionReview.targetChanged`));n===`stop`&&(s.reviewPlan?.interaction===`direct`?(o=!0,await rt(s,{lifecycleProjection:a??void 0,presentation:`feedback`})):(a&&t.onGoalActivationStateChange?.(a.goalId,a.previous),F(s.gate?d(`feedback.gateRequired`,{summary:s.gate.summary}):d(`feedback.notCompleted`,{status:s.status})),_({item:s,kind:`proposal`})))}catch(e){a&&!o&&t.onGoalActivationStateChange?.(a.goalId,a.previous),F(d(`feedback.executionFailed`,{error:e instanceof Error?e.message:String(e)}))}finally{n===`stop`&&(De.current.delete(e.goalId),I(new Set(De.current)))}}function $e(e,t){Fe(d(t?e===`heartbeat`?`composer.heartbeatTemplate`:`composer.monitorTemplate`:e===`heartbeat`?`composer.heartbeatTemplateWithoutGoal`:`composer.monitorTemplateWithoutGoal`)),_(null),window.requestAnimationFrame(()=>we.current?.focus())}async function et(e,n,r=``){let i=await t.onRequestScheduleConfig?.(e,n);if(i){de(e=>e.includes(i.previewId)?e:[...e,i.previewId]),C(e=>({...e,[i.previewId]:i})),_({item:i,kind:`proposal`});return}if(!n){Fe(d(e===`heartbeat`?`composer.heartbeatGoalQuestion`:`composer.monitorGoalQuestion`));return}let a=Date.now().toString(36);await Xe({actionKind:e===`heartbeat`?`heartbeat.bind`:`monitor.create`,context:{kind:`schedule`,goal_id:n},idempotencyKey:`workspace-${e}-${n}-${a}`,normalizedParameters:e===`heartbeat`?{agent_id:je,cadence:mS(r),goal_id:n,stop_condition:_S(r),timezone:`Asia/Shanghai`}:{agent_id:je,cadence:mS(r),goal_id:n,stop_condition:_S(r),target:gS(r,d),target_key:`goal-${n}`,timezone:`Asia/Shanghai`},summary:e===`heartbeat`?d(`proposal.summary.heartbeat`):d(`proposal.summary.monitor`,{target:gS(r,d)})})}async function tt(e){if(!Oe.current.has(e.todoId)){Oe.current.add(e.todoId),L(new Set(Oe.current)),F(d(`feedback.preparingPreview`,{title:e.text}));try{await Xe({actionKind:`todo.update`,context:{goal_id:e.goalId,kind:`todo`,todo_id:e.todoId},idempotencyKey:`workspace-todo-${e.todoId}-complete-${Date.now().toString(36)}`,normalizedParameters:{goal_id:e.goalId,operation:`complete`,todo_id:e.todoId},summary:d(`tasks.markComplete`,{name:e.text})}),F(null)}catch(e){F(d(`feedback.previewFailed`,{error:e instanceof Error?e.message:String(e)}))}finally{Oe.current.delete(e.todoId),L(new Set(Oe.current))}}}function nt(e){let n=t.onReconcileStatus,r=n?n({invalidateGoalIds:e}):t.onRefresh?.();return Promise.resolve(r).catch(()=>{F(d(`feedback.goalRefreshFailed`))})}async function rt(e,n={}){if(e.reviewPlan&&!e.reviewPlan.canApply)return;let r=n.presentation!==`feedback`,i=e.actionKind===`goal.lifecycle`&&e.goalId&&(e.lifecycleOperation===`stop`||e.lifecycleOperation===`resume`)?{goalId:e.goalId,next:e.lifecycleOperation===`stop`?`stopped`:`active`,optimisticApplied:!1,previous:a.goals.find(t=>t.goalId===e.goalId)?.activationState??(e.lifecycleOperation===`stop`?`active`:`stopped`)}:null,o=n.lifecycleProjection??i;F(d(`feedback.applying`,{title:e.title}));let s={...e,reviewPlan:e.reviewPlan?{...e.reviewPlan,interaction:`pending`,reason:`apply_pending`,canApply:!1}:void 0,status:`applying`};C(t=>({...t,[e.previewId]:s})),r&&_({item:s,kind:`proposal`}),o&&!o.optimisticApplied&&t.onGoalActivationStateChange?.(o.goalId,o.next);try{if(t.onApplyProposal){await t.onApplyProposal(e);let n={...e,status:`applied`};C(t=>({...t,[e.previewId]:n})),r&&_({item:n,kind:`proposal`}),F(d(`feedback.completed`,{title:e.title})),e.actionKind===`goal.lifecycle`&&((e.lifecycleOperation===`stop`||e.lifecycleOperation===`delete`)&&ot(null),e.lifecycleOperation===`delete`&&e.goalId&&t.onGoalDeleted?.(e.goalId),nt(e.goalId?[e.goalId]:void 0));return}let n=await Uh(e.previewId);if(n.proposal.proposal_id!==e.previewId||n.proposal.action_kind!==e.actionKind||e.actionKind===`goal.lifecycle`&&(n.proposal.normalized_parameters.goal_id!==e.goalId||cS(n.proposal)!==e.lifecycleOperation))throw new Fh(d(`actionReview.targetChanged`),{error_code:`action_response_mismatch`});let i=lS(n.proposal,d);if(C(t=>({...t,[e.previewId]:i})),r&&_({item:i,kind:`proposal`}),i.reviewPlan?.interaction!==`completed`){o&&t.onGoalActivationStateChange?.(o.goalId,o.previous),_({item:i,kind:`proposal`}),F(n.proposal.status===`stale`?d(`feedback.stale`):d(`actionReview.${i.reviewPlan.reason}`));return}F(d(`feedback.completed`,{title:i.title})),i.actionKind===`todo.create`&&await t.onRefresh?.(),i.actionKind===`goal.lifecycle`&&(i.lifecycleOperation===`stop`||i.lifecycleOperation===`delete`)&&ot(null),i.actionKind===`goal.lifecycle`&&i.lifecycleOperation===`delete`&&i.goalId&&t.onGoalDeleted?.(i.goalId),i.actionKind===`goal.lifecycle`&&nt(i.goalId?[i.goalId]:void 0)}catch(n){if(o&&t.onGoalActivationStateChange?.(o.goalId,o.previous),n instanceof Fh&&n.payload.error_code===`protected_action`){let r=n.payload.gate,i=r&&typeof r==`object`?r:{},a={...e,reviewPlan:e.reviewPlan?{...e.reviewPlan,interaction:`gated`,reason:`authority_gate`,canApply:!1}:void 0,gate:{kind:String(i.kind??`protected_action`),nextAction:typeof i.next_action==`string`?i.next_action:void 0,summary:String(i.summary??n.message)},status:`gated`};C(t=>({...t,[e.previewId]:a})),_({item:a,kind:`proposal`}),F(d(`feedback.gateRequired`,{summary:a.gate.summary})),e.actionKind===`goal.create`&&e.goalId&&(t.onRefresh?.(),ot(e.goalId));return}let r=n instanceof Fh&&Py(n.payload),i=n instanceof Fh&&n.payload.error_code===`action_response_mismatch`,a={...e,reviewPlan:e.reviewPlan?{...e.reviewPlan,interaction:r?`refresh`:`repair`,reason:i?`readback_unverified`:r?`stale_proposal`:`apply_failed`,canApply:!1}:void 0,errorMessage:n instanceof Error?n.message:String(n),status:r?`stale`:`error`};C(t=>({...t,[e.previewId]:a})),_({item:a,kind:`proposal`}),F(d(`feedback.executionFailed`,{error:a.errorMessage}))}}let it={...t,onOpenRunSession:async e=>{e.goalId!==R&&ot(e.goalId),T(`chat`),await t.onOpenRunSession?.(e),x(e),_(null)},onOpenGoal:e=>{ot(e),nt([e])},onOpenGoalView:e=>{T(e),e===`chat`&&x(null),_(null)},onOpenOutput:e=>{e.goalId!==R&&ot(e.goalId),T(`files`),t.onOpenOutput?.(e)},onApplyProposal:rt,onCancelProposal:async e=>{_(null),C(t=>{let n={...t};return delete n[e.previewId],n});try{t.onCancelProposal?.(e),t.onCancelProposal||await Wh(e.previewId)}catch(t){C(t=>({...t,[e.previewId]:e})),F(d(`feedback.cancelFailed`,{error:t instanceof Error?t.message:String(t)}))}},onTransitionProposal:async(e,t)=>{let n=lS(await Gh(e.previewId,t),d);de(e=>e.includes(n.previewId)?e:[...e,n.previewId]),C(r=>{let i={...r};return t===`regenerate`&&delete i[e.previewId],i[n.previewId]=n,i}),_({item:n,kind:`proposal`})},onSelectWorkspaceCandidate:async(e,t)=>{e.sourceRequest&&(C(t=>{let n={...t};return delete n[e.previewId],n}),await Xe({...e.sourceRequest,idempotencyKey:`${e.sourceRequest.idempotencyKey}-${t}`,normalizedParameters:{...e.sourceRequest.normalizedParameters,workspace_ref:t}}))},onPreviewAction:Xe,onRequestScheduleConfig:(e,t)=>$e(e,t),onOpenNotificationSettings:e=>_({goalId:e,kind:`settings`,tab:`lark`}),onFetchNotificationTargets:()=>mg(),onSetupGoalChannel:e=>gg(e),onToggleGoalAutoNotify:e=>_g(e),onUpdateSchedule:async(e,t)=>{let n=Date.now().toString(36),r=e.scheduleKind===`heartbeat`;await Xe({actionKind:r?`heartbeat.bind`:`monitor.update`,context:{kind:`schedule`,goal_id:e.goalId},idempotencyKey:`workspace-monitor-${e.scheduleId}-${t}-${n}`,normalizedParameters:{agent_id:e.agentId??je,...!r&&t===`run_now`?{endpoint_id:je}:{},...t===`edit`?{cadence:`2h`,...r?{timezone:e.timezone??`Asia/Shanghai`}:{}}:{},goal_id:e.goalId,operation:t,...!r&&t===`run_now`&&e.sessionId?{session_id:e.sessionId}:{},...r?{}:{todo_id:e.scheduleId}},summary:t===`pause`?`暂停自动运行:${e.label}`:t===`resume`?`恢复自动运行:${e.label}`:t===`run_now`?`立即运行:${e.label}`:t===`stop`?`停止自动运行:${e.label}`:`编辑自动运行生命周期:${e.label}`})}},at=o?{onOpenGoal:it.onOpenGoal,onOpenGoalView:it.onOpenGoalView,onOpenOutput:it.onOpenOutput}:it;function ot(e){p(e),D(!1),k(!1),te(!1),x(null),_(null),T(`tasks`),he(!1),t.onSelectGoal?.(e)}function st(e){h(e),t.onSelectAgent?.(e)}function ct(e){_e(e),Yx(e)}async function lt(n){let r=n?[]:N,i=(n??Ne).trim()||(r.length?d(`composer.imageAnalysisPrompt`):``);if(!(!i||M)){n||(Fe(``),P([])),ie(null),ne(!0);try{if(r.length){R?w!==`chat`&&te(!0):k(!0);let e=await t.onSendMessage?.(i,je,R,r);e&&await Xe(e);return}let n=Sb(i,{agents:e.map(e=>({agentId:e.agentId,label:e.label})),goalId:R,todos:(V?.agentTodos??[]).map(e=>({text:e.text,todoId:e.todoId}))});if(n.route===`clarify`){Fe(i);let e=d(`composer.clarifySingleAction`);n.missingFields.includes(`resume_when`)&&(e=d(`composer.clarifyDefer`)),F(e);return}if(n.actionKind===`goal.create`){let e=pS(i,d),t=uS(e.title);await Xe({actionKind:`goal.create`,context:{kind:`manager`,goal_id:null,natural_language:i},idempotencyKey:`workspace-goal-intent-${t}-${Date.now().toString(36)}`,normalizedParameters:{agent_id:je,completion_criteria:e.completionCriteria,execution_boundary:e.executionBoundary,goal_id:t,heartbeat:{cadence:mS(i),enabled:n.normalizedParameters.heartbeat_enabled===!0,timezone:`Asia/Shanghai`},initial_todos:e.initialTodos,objective:e.objective,permission:e.permission,stop_condition:_S(i),title:e.title,workspace_ref:`current`},summary:d(`proposal.summary.goalCreate`,{title:e.title})});return}if(R&&n.actionKind===`heartbeat.bind`){await et(`heartbeat`,R,i);return}if(R&&n.actionKind===`monitor.create`){let e=hS(i,d);if(e){Fe(i),F(e);return}await et(`monitor`,R,i);return}let a=vS(i,e);if(R&&a&&n.actionKind===`agent.bind`){await Xe({actionKind:`agent.bind`,context:{kind:`goal`,goal_id:R,natural_language:i},idempotencyKey:`workspace-agent-bind-${R}-${a.agentId}-${Date.now().toString(36)}`,normalizedParameters:{agent_id:a.agentId,goal_id:R},summary:`将 ${a.label} 绑定到 ${V?.title??R}`});return}if(R&&n.actionKind===`todo.create`){if(n.normalizedParameters.start_execution===!0){await Xe({actionKind:`todo.create`,context:{kind:`goal`,goal_id:R,natural_language:i},idempotencyKey:`workspace-task-start-${R}-${Date.now().toString(36)}`,normalizedParameters:{endpoint_id:a?.agentId??je,goal_id:R,start_execution:!0,text:i},summary:`交给 Agent 执行:${i.slice(0,120)}`});return}let e=a?.agentId??(/(交给|分配给|让).{0,24}(agent|codex|claude|kiro|kimi)/iu.test(i)?je:null);await Xe({actionKind:`todo.create`,context:{kind:`goal`,goal_id:R,natural_language:i},idempotencyKey:`workspace-todo-create-${R}-${Date.now().toString(36)}`,normalizedParameters:{...e?{endpoint_id:e}:{},goal_id:R,text:yS(i)},summary:`创建 Todo:${yS(i)}`});return}let o=V?.agentTodos.find(e=>i.includes(e.todoId)||i.includes(e.text)),s=typeof n.normalizedParameters.operation==`string`?n.normalizedParameters.operation:null;if(R&&o&&n.actionKind===`todo.update`&&s){await Xe({actionKind:`todo.update`,context:{kind:`todo`,goal_id:R,todo_id:o.todoId,natural_language:i},idempotencyKey:`workspace-todo-update-${o.todoId}-${s}-${Date.now().toString(36)}`,normalizedParameters:{agent_id:je,...s===`reassign`&&a?{endpoint_id:a.agentId}:{},...s===`block`?{note:i}:{},...s===`defer`&&typeof n.normalizedParameters.resume_when==`string`?{resume_when:n.normalizedParameters.resume_when}:{},goal_id:R,operation:s,todo_id:o.todoId},summary:`更新 Todo:${o.text}`});return}R?w!==`chat`&&te(!0):k(!0);let c=await t.onSendMessage?.(i,je,R);c&&await Xe(c)}catch(e){n||(Fe(i),P(r));let t=e instanceof Error?e.message:d(`feedback.sendGenericError`);F(d(`feedback.sendFailed`,{error:t}))}finally{ne(!1)}}}let ut=e.find(e=>e.agentId===je)?.label??je,dt=!V&&Ne.startsWith(d(`composer.createGoalDraftLead`)),ft=He.filter(e=>e.kind===`run`&&!!e.run.sessionId&&!!e.run.canInterrupt&&(e.run.status===`running`||e.run.status===`queued`)).length;async function pt(e){if(!e?.length)return;let t=SS-N.length,n=Array.from(e).slice(0,Math.max(0,t)),r=n.find(e=>!bS.has(e.type)),i=n.find(e=>e.size>xS);if(t<=0){ie(d(`composer.imageCountError`,{count:SS}));return}if(r){ie(d(`composer.imageTypeError`));return}if(i){ie(d(`composer.imageSizeError`,{size:xS/1024/1024}));return}try{let t=await Promise.all(n.map(e=>CS(e,d)));P(e=>[...e,...t].slice(0,SS)),ie(e.length>n.length?d(`composer.imageCountError`,{count:SS}):null)}catch(e){ie(e instanceof Error?e.message:d(`composer.imageReadGenericError`))}finally{Ee.current&&(Ee.current.value=``)}}function mt(e){let t=Array.from(e.clipboardData.items).filter(e=>e.kind===`file`&&e.type.startsWith(`image/`)).flatMap(e=>{let t=e.getAsFile();return t?[t]:[]});t.length&&(e.preventDefault(),pt(t))}async function ht(){let e=await s_();xe(e)}async function gt(){await Promise.all([ht(),t.onRefresh?.()])}async function _t(){if(!(!t.onRefresh||ce===`loading`)){le(`loading`);try{await t.onRefresh(),le(`done`)}catch{le(`error`)}window.setTimeout(()=>le(`idle`),1800)}}return Be?(0,B.jsx)(Gx,{callbacks:at,focusGoalConnection:!!(g?.kind===`settings`&&g.goalId),goalNotifications:a.goalNotifications??[],goals:Le,initialGoalId:g?.kind===`settings`?g.goalId??R:R,initialTab:g?.kind===`settings`?g.tab??`lark`:`lark`,onChanged:()=>void gt(),onClose:()=>_(null),onThemeChange:ct,theme:ge}):(0,B.jsx)(Xx,{drawer:Ye?(0,B.jsx)(jb,{agents:e,attentionHistory:a.attentionHistory??a.userTodos,onSelectAttention:e=>_({kind:`attention`,item:e}),callbacks:at,goalNotifications:a.goalNotifications??[],goals:Le,inspectorExpanded:v,larkConnections:o?[]:be,onClose:()=>{Ye.kind===`proposal`&&[`applied`,`rejected`].includes(Ye.item.status)&&(Ye.item.actionKind!==`heartbeat.bind`||Ye.item.status!==`applied`)&&C(e=>{let t={...e};return delete t[Ye.item.previewId],t}),y(!1),_(null)},onToggleInspectorSize:()=>y(e=>!e),readOnly:o,runs:He.flatMap(e=>e.kind===`run`?[e.run]:[]),selection:Ye}):null,drawerMode:Ye?.kind===`todo`?v?`inspector-full`:`inspector`:`panel`,drawerOpen:Ye!==null,mobileSidebarOpen:me,onCloseMobileSidebar:()=>he(!1),theme:ge,main:(0,B.jsxs)(`div`,{className:`personal-channel`,children:[(0,B.jsx)(tb,{agents:e,managerChatOpen:E,managerChannelBinding:r,managerRuntime:i,mobileNavigationOpen:me,onOpenGoalCapabilities:V?()=>_({goalId:V.goalId,kind:`settings`,tab:`capabilities`}):void 0,onOpenGoalDetail:V&&!V.loadState?()=>_({item:V,kind:`goal`}):void 0,onRefresh:t.onRefresh?()=>void _t():void 0,onOpenNavigation:()=>he(!0),onOpenManagerChat:()=>{k(!1),D(!0)},onSelectGoalTab:e=>{T(e),e===`chat`&&(x(null),te(!1))},onSelectAgent:st,onReturnManagerHome:()=>{D(!1),k(!1),window.requestAnimationFrame(()=>Te.current?.scrollTo({behavior:`smooth`,top:0}))},selectedAgentId:je,refreshState:ce,readOnlySourceLabel:o?l?.activeSource.label:void 0,selectedGoal:V,selectedGoalTab:w}),(0,B.jsxs)(`div`,{className:`personal-channel-scroll`,ref:Te,children:[!V&&!E&&ke&&ke.done+ke.failed+ke.attention>0?(0,B.jsxs)(`section`,{className:`personal-digest-card`,"aria-label":d(`digest.away`),children:[(0,B.jsx)(`strong`,{children:d(`digest.away`)}),(0,B.jsxs)(`div`,{className:`personal-digest-stats`,children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`b`,{children:ke.done}),d(`digest.completed`)]}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`b`,{children:ke.failed}),d(`digest.failed`)]}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`b`,{children:ke.attention}),d(`digest.needsYou`)]})]})]}):null,!V&&!E?(0,B.jsxs)(`section`,{className:`personal-manager-greeting`,children:[(0,B.jsx)(`span`,{children:(0,B.jsx)(nm,{size:20})}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:d(`home.greeting`)}),(0,B.jsx)(`p`,{children:a.goals.some(e=>e.activationState===`active`&&e.loadState)?d(`startup.partial`):(0,B.jsxs)(B.Fragment,{children:[d(`home.waitingCount`,{count:Re}),` `,d(`home.blockingSummary`,{count:ze})]})})]})]}):null,V?.loadState?(0,B.jsx)(`section`,{className:`personal-manager-greeting`,role:`status`,"data-testid":`goal-status-loading`,children:(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:d(V.loadState===`error`?`startup.goalError`:`startup.goalLoading`)}),(0,B.jsx)(`p`,{children:d(V.loadError?`startup.error.${V.loadError}`:`startup.independent`)}),V.loadState===`error`?(0,B.jsx)(`button`,{className:`min-h-11 rounded-md border px-3 py-2 text-sm`,type:`button`,onClick:()=>void t.onRefresh?.(),children:d(`startup.retry`)}):null]})}):V&&w===`tasks`?(0,B.jsx)(rx,{historyEnabled:!o,goal:V,items:He,onDraftTaskFromMessage:o?void 0:e=>{Fe(`创建一个 Task:${Zx(e)}`),F(d(`feedback.taskDraftCreated`)),window.requestAnimationFrame(()=>we.current?.focus())},onOpenChat:()=>T(`chat`),onQuickComplete:o?void 0:tt,onSelect:_,quickCompletingTodoIds:se,selectedTodoId:Ye?.kind===`todo`?Ye.item.todoId:null,userTodos:a.userTodos}):V&&w===`files`?(0,B.jsx)(tS,{items:He.filter(e=>e.kind===`output`),onSelect:_,reportState:a.periodicReports}):!V&&!E?(0,B.jsx)(eS,{goals:Le,onRetry:()=>void t.onRefresh?.(),onSelectGoal:ot,systemHealth:a.systemHealth}):V?(0,B.jsxs)(B.Fragment,{children:[V&&b?.goalId===V.goalId?(0,B.jsx)(rS,{onClose:()=>x(null),onOpenDetails:()=>_({item:b,kind:`run`}),run:b}):null,(0,B.jsx)(mb,{items:Ue,onSelect:_,selectedGoal:V})]}):(0,B.jsx)(mb,{items:Ke,onSelect:_,selectedGoal:null})]}),(0,B.jsx)(`div`,{className:`personal-composer-wrap`,children:o?(0,B.jsxs)(`div`,{className:`personal-read-only-notice`,children:[(0,B.jsx)(`strong`,{children:d(`source.readOnlyNoticeTitle`)}),(0,B.jsx)(`span`,{children:d(`source.readOnlyNoticeDescription`)})]}):(0,B.jsxs)(B.Fragment,{children:[!V&&!E&&O&&We.length?(0,B.jsx)(nS,{messages:We,onClose:()=>k(!1),onOpenConversation:()=>{k(!1),D(!0)}}):null,V&&w!==`chat`&&ee&&Ge.length?(0,B.jsx)(nS,{agentLabel:ut,messages:Ge,onClose:()=>te(!1),onDraftTask:w===`tasks`?e=>{Fe(`创建一个 Task:${Zx(e)}`),F(d(`feedback.taskDraftCreated`)),window.requestAnimationFrame(()=>we.current?.focus())}:void 0,onOpenConversation:()=>{te(!1),T(`chat`)},title:`${V.title} · ${ut}`}):null,ae?(0,B.jsxs)(`div`,{className:`personal-action-feedback`,role:`status`,children:[(0,B.jsx)(`span`,{children:ae}),(0,B.jsx)(`button`,{"aria-label":d(`common.closeActionReceipt`),onClick:()=>F(null),type:`button`,children:(0,B.jsx)(ah,{size:14})})]}):null,(0,B.jsx)(`p`,{className:`personal-composer-hint`,children:V?ft>0?d(`composer.goalRunningHint`,{agent:ut,count:ft}):d(`composer.goalMessageHint`,{agent:ut}):d(`composer.managerMessageHint`)}),V?(0,B.jsxs)(`div`,{className:`personal-quick-prompts`,children:[(0,B.jsxs)(`button`,{"aria-label":d(`composer.nextAction`),disabled:M,onClick:()=>void lt(d(`composer.nextActionPrompt`)),title:d(`composer.sendMessageHint`),type:`button`,children:[(0,B.jsx)(Mm,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.nextAction`)})]}),(0,B.jsxs)(`button`,{"aria-label":d(`composer.agentProgress`),disabled:M,onClick:()=>void lt(d(`composer.agentProgressPrompt`)),title:d(`composer.sendMessageHint`),type:`button`,children:[(0,B.jsx)(Km,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.agentProgress`)})]}),(0,B.jsxs)(`button`,{"aria-label":d(`composer.monitor`),disabled:M,onClick:()=>void lt(d(`composer.monitorShortcutTemplate`,{target:d(`schedule.defaultTarget`)})),title:d(`composer.sendMessageHint`),type:`button`,children:[(0,B.jsx)(im,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.monitor`)})]}),(0,B.jsxs)(`button`,{"aria-label":d(`composer.blockers`),disabled:M||!Ie(`gate`),onClick:()=>void lt(Ie(`gate`)),title:d(`composer.sendMessageHint`),type:`button`,children:[(0,B.jsx)(lm,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.blockers`)})]}),(0,B.jsxs)(`button`,{"aria-label":d(`composer.evidence`),disabled:M||!Ie(`evidence`),onClick:()=>void lt(Ie(`evidence`)),title:d(`composer.sendMessageHint`),type:`button`,children:[(0,B.jsx)(xm,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.evidence`)})]})]}):(0,B.jsxs)(`div`,{className:`personal-quick-prompts`,children:[(0,B.jsxs)(`button`,{"aria-label":d(`composer.globalTasks`),disabled:M,onClick:()=>void lt(d(`composer.globalTasksPrompt`)),title:d(`composer.sendMessageHint`),type:`button`,children:[(0,B.jsx)(Mm,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.globalTasks`)})]}),(0,B.jsxs)(`button`,{"aria-label":d(`composer.globalProgress`),disabled:M,onClick:()=>void lt(d(`composer.globalProgressPrompt`)),title:d(`composer.sendMessageHint`),type:`button`,children:[(0,B.jsx)(Km,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.globalProgress`)})]}),(0,B.jsxs)(`button`,{"aria-label":d(`composer.createGoal`),onClick:Ze,title:d(`composer.createGoalHint`),type:`button`,children:[(0,B.jsx)(Bm,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.createGoal`)})]})]}),dt?(0,B.jsxs)(`div`,{className:`personal-goal-draft-status`,role:`status`,children:[(0,B.jsx)(`strong`,{children:d(`composer.createGoalDraft`)}),(0,B.jsx)(`span`,{children:d(`composer.createGoalDraftDescription`)})]}):null,N.length?(0,B.jsx)(`div`,{className:`personal-composer-images`,"aria-label":d(`composer.imagesPending`),children:N.map(e=>(0,B.jsxs)(`figure`,{children:[(0,B.jsx)(`img`,{alt:e.name,src:e.dataUrl}),(0,B.jsx)(`button`,{"aria-label":d(`composer.sentImageAlt`,{name:e.name}),onClick:()=>P(t=>t.filter(t=>t.id!==e.id)),type:`button`,children:(0,B.jsx)(ah,{size:13})})]},e.id))}):null,re?(0,B.jsx)(`p`,{className:`personal-composer-error`,role:`alert`,children:re}):null,(0,B.jsxs)(`div`,{className:`personal-channel-composer`,onDragOver:e=>{[...e.dataTransfer.items].some(e=>e.kind===`file`&&e.type.startsWith(`image/`))&&e.preventDefault()},onDrop:e=>{let t=[...e.dataTransfer.files].filter(e=>e.type.startsWith(`image/`));t.length&&(e.preventDefault(),pt(t))},children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(nm,{size:17}),e.find(e=>e.agentId===je)?.label??je]}),(0,B.jsx)(`button`,{"aria-label":d(`composer.addImage`),className:`personal-composer-attach`,disabled:M||N.length>=SS,onClick:()=>Ee.current?.click(),title:d(`composer.attachImageHint`),type:`button`,children:(0,B.jsx)(Lm,{size:17})}),(0,B.jsx)(`input`,{accept:`image/png,image/jpeg,image/webp,image/gif`,"aria-label":d(`composer.imagePicker`),className:`personal-composer-file-input`,disabled:M||N.length>=SS,multiple:!0,onChange:e=>void pt(e.target.files),ref:Ee,type:`file`}),(0,B.jsx)(`textarea`,{"aria-label":d(`composer.sendMessage`),onChange:e=>Fe(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&!e.nativeEvent.isComposing&&(e.preventDefault(),lt())},onPaste:mt,placeholder:V?d(`composer.goalPlaceholder`,{goal:V.title}):d(`composer.managerPlaceholder`),ref:we,rows:1,value:Ne}),(0,B.jsx)(`button`,{"aria-label":d(dt?`composer.createGoal`:`composer.send`),disabled:!Ne.trim()&&N.length===0||M,onClick:()=>void lt(),title:d(dt?`composer.createGoalHint`:`composer.sendMessageHint`),type:`button`,children:(0,B.jsx)(Km,{size:18})})]})]})})]}),sidebar:(0,B.jsx)($b,{attentionCount:Re,goals:Le,goalArchiveLoadState:n,goalLifecycleOperations:t.onExecuteGoalLifecycle?[`stop`,`resume`]:void 0,lifecycleBusyGoalIds:oe,onRequestGoalCreate:o?void 0:Ze,onRequestGoalLifecycle:o&&!t.onExecuteGoalLifecycle?void 0:(e,t)=>void Qe(e,t),onRetryGoalArchive:t.onRetryGoalArchive||t.onRefresh?()=>void(t.onRetryGoalArchive??t.onRefresh)?.():void 0,onOpenSettings:o?void 0:()=>_({kind:`settings`}),onSelectGoal:ot,selectedGoalId:R,statusSourceControl:l},l?.activeSource.statusUrl??`/status.json`)})}function TS(e){return(e??``).replace(/\s+/gu,` `).trim()}function ES(e,t=120){let n=Array.from(e);return n.length<=t?e:`${n.slice(0,t-1).join(``)}…`}function DS(e,t,n){let r=TS(e);return!r||r===`暂无`?n?t(n):``:/refresh-state|latest_run|latest run-derived/iu.test(r)?t(`projection.refreshState`):/first read-only adapter tick|read-only adapter/iu.test(r)?t(`projection.firstReadOnlyAdapterCheck`):/todo update recorded for/iu.test(r)?t(`projection.todoStatusUpdated`):/^(loopx|python3|npm|git|run)\s|\s--[a-z0-9-]+|\b[a-z]+_[a-z_]+\b/iu.test(r)?t(n??`projection.agentPreparingNextStep`):ES(r)}function OS(e,t){return t({advancing:`projection.agentAdvancingGoal`,idle:`projection.agentIdle`,needs_you:`projection.agentNeedsDecision`,stopped:`projection.agentStopped`,waiting_external:`projection.agentWaitingExternal`}[e])}function kS({eventCount:e,hasArtifact:t,hasLatestValidation:n},r){return{label:r(n?`projection.latestValidation`:`projection.latestRun`),metadata:e>0?r(`projection.events24h`,{count:e}):r(t?`projection.runEvidenceAvailable`:`projection.publicSafeProjection`)}}var AS=`/status.json`,jS=`loopx-status-source-catalog-v1`,MS={id:`local`,kind:`local`,label:`本机`,readOnly:!1,statusUrl:AS};function NS(e,t){let n=uh(e,t).source;if(!n||!n.isLoopback||n.isRelative)return{error:`SSH 隧道来源必须使用显式的 localhost、127.0.0.1 或 ::1 URL。`};let r=new URL(n.url,t);return[`http:`,`https:`].includes(r.protocol)?{url:r.toString()}:{error:`状态来源只支持 HTTP 或 HTTPS。`}}function PS(e){let t=2166136261;for(let n of e)t^=n.codePointAt(0)??0,t=Math.imul(t,16777619);return`ssh-${(t>>>0).toString(36)}`}function FS(e,t){if(!e||typeof e!=`object`||Array.isArray(e))return null;let n=e;if(n.kind!==`ssh_tunnel`||typeof n.label!=`string`||typeof n.statusUrl!=`string`)return null;let r=n.label.trim(),i=NS(n.statusUrl,t);if(!r||r.length>48||!(`url`in i))return null;let a=Ub(n.hostAlias)?n.hostAlias.trim():void 0;return{...a?{hostAlias:a}:{},id:PS(i.url),kind:`ssh_tunnel`,label:r,readOnly:!0,statusUrl:i.url}}function IS(){return{schemaVersion:1,sources:[MS]}}function LS(e,t){try{let n=e.getItem(jS);if(!n)return IS();let r=JSON.parse(n);if(r.schemaVersion!==1||!Array.isArray(r.sources))return IS();let i=new Set([MS.statusUrl]);return{schemaVersion:1,sources:[MS,...r.sources.flatMap(e=>{let n=FS(e,t);return!n||i.has(n.statusUrl)?[]:(i.add(n.statusUrl),[n])})]}}catch{return IS()}}function RS(e,t){e.setItem(jS,JSON.stringify({schemaVersion:1,sources:t.sources.filter(e=>e.kind===`ssh_tunnel`)}))}function zS(e,t){let n=new Set(t.filter(Ub).map(e=>e.trim())),r=!1,i=e.sources.map(e=>e.kind!==`ssh_tunnel`||e.hostAlias||!n.has(e.label)?e:(r=!0,{...e,hostAlias:e.label}));return r?{...e,sources:i}:e}function BS(e,t,n){let r=t.label.trim();if(!r)return{error:`请填写来源名称。`};if(r.length>48)return{error:`来源名称不能超过 48 个字符。`};let i=NS(t.statusUrl,n);if(!(`url`in i))return i;if(e.sources.some(e=>e.statusUrl===i.url))return{error:`这个状态 URL 已经在来源目录中。`};if(t.hostAlias!==void 0&&!Ub(t.hostAlias))return{error:`请选择有效的 SSH Host。`};let a=t.hostAlias?.trim(),o={...a?{hostAlias:a}:{},id:PS(i.url),kind:`ssh_tunnel`,label:r,readOnly:!0,statusUrl:i.url};return{catalog:{...e,sources:[...e.sources,o]},source:o}}function VS(e,t){return{...e,sources:e.sources.filter(e=>e.kind===`local`||e.id!==t)}}function HS(e,t,n){if(!t.trim()||uh(t,n).source?.isRelative)return MS;let r=t.trim();try{r=new URL(r,n).toString()}catch{return null}return e.sources.find(e=>e.statusUrl===r)??null}function US(e,t,n){return HS(e,t,n)||(uh(t,n).source?.isRelative?MS:{id:`temporary`,kind:`ssh_tunnel`,label:`临时来源`,readOnly:!0,statusUrl:t.trim()})}function WS(e,t,n,r){return US(e,t??n,r)}var GS={delete:`删除`,deploy:`部署`,merge:`合并`,payment:`付款`,release:`发布`};function KS(e,t,n){let r=t.replace(/\s+/gu,` `).trim().toLowerCase(),i=n.target.replace(/\s+/gu,` `).trim().toLowerCase();return!i||!r.includes(i)?null:{actionKind:`goal.update`,context:{goal_id:e,kind:`goal`,natural_language:t,semantic_proposal:{operation:n.operation,target:n.target}},idempotencyKey:`workspace-semantic-protected-${e}-${Date.now().toString(36)}`,normalizedParameters:{goal_id:e,status:`operator_gate_requested`},summary:`请求受保护操作:${GS[n.operation]} · ${n.target}`}}var qS=AS;async function JS(e){let t=await fetch(e,{cache:`no-store`,signal:AbortSignal.timeout(3e4)});if(!t.ok)throw Error(`HTTP ${t.status} while loading ${e}`);return kp(await t.json())}function YS(e,t){if(t?.controller_readiness?.decision_advisor_ready||t?.controller_readiness?.write_controller_ready)return`controller_ready`;if(t?.controller_readiness)return`controller_gated`;if(t?.human_reward)return`reward_judged`;if(t?.operator_gate?.decision===`approve`)return`operator_approved`;if(t?.operator_gate)return`operator_gated`;let n=e||t?.classification||``;return n===`connected_without_run`?`connected`:n===`read_only_project_map`||t?.project_map?`mapped`:n===`state_refreshed`?`refreshed`:n&&n!==`no_status`?`adapter_inspected`:`registered`}function XS(e,t){let n=new Map(t.map(e=>[e.goal_id,e])),r=new Set,i=e.map(e=>{r.add(e.id);let t=n.get(e.id),i=e.latest_runs[0],a=t?.lifecycle_phase??e.lifecycle_phase??i?.lifecycle_phase??YS(t?.status??i?.classification??e.status,i),o=t?.lifecycle_flags?.length?t.lifecycle_flags:e.lifecycle_flags?.length?e.lifecycle_flags:i?.lifecycle_flags?.length?i.lifecycle_flags:[a];return{goal:e,queueItem:t,latestRun:i,status:t?.status??i?.classification??e.status??`no_status`,waitingOn:t?.waiting_on??`clear`,severity:t?.severity??`clear`,lifecyclePhase:a,lifecycleFlags:o}});for(let e of t)r.has(e.goal_id)||i.push({goal:{activation_state:e.activation_state,id:e.goal_id,status:e.status,display_name:e.goal_id,latest_runs:[],lifecycle_flags:[e.lifecycle_phase??`registered`],registry_member:!0,legacy_runtime_goal:!1,index_exists:!1,raw_index_records:0,unique_runs:0},queueItem:e,status:e.status,waitingOn:e.waiting_on,severity:e.severity,lifecyclePhase:e.lifecycle_phase??`registered`,lifecycleFlags:e.lifecycle_flags??[`registered`]});return i}function ZS(e){return(e??``).replace(/\s+/g,` `).trim()}function QS(e,t=132){let n=ZS(e);return n.length<=t?n:`${n.slice(0,Math.max(0,t-1))}…`}function $S(e){let t=new Map;for(let n of e?.goals??[])t.set(n.goal_id,n);return t}function eC(e,t){return e===void 0||t===void 0?void 0:e+t}function tC(e,t){if(!e)return null;let n=t===`user`?e.queueItem?.project_asset?.user_todos:e.queueItem?.project_asset?.agent_todos;if(n?.items?.length)return{done_count:n.done??n.items.filter(e=>e.done).length,items:n.items,open_count:n.open??n.items.filter(e=>!e.done).length,total_count:n.total??n.items.length};let r=t===`user`?e.queueItem?.user_todos:e.queueItem?.agent_todos;return r?.items?.length?r:null}function nC(e){return e?.items.find(e=>!e.done)}function rC(e,t,n=`todos`){return e?.items?.length?{advancement_done_count:e.advancement_done_count??t?.advancement_done_count,done_count:e.done??e.items.filter(e=>e.done).length,items:e.items,open_count:e.open??e.items.filter(e=>!e.done).length,total_count:e.total??e.items.length}:t??null}function iC(e){return e?.queueItem?.project_asset?.quota?.state??e?.queueItem?.quota?.state??e?.goal.quota?.state??`waiting`}function aC(e,t,n){let r=[];for(let t of e){let e=tC(t,`agent`);for(let n of e?.items??[])r.push({goalId:t.goal.id,role:`agent`,todo:n})}let i=new Map;for(let e of r){let t=e.todo.claimed_by||`codex`,n=i.get(t)??[];n.push(e),i.set(t,n)}let a=new Map((n?.agents??[]).map(e=>[e.agent_id,e]));return Array.from(new Set([...i.keys(),...a.keys()])).map(e=>{let t=i.get(e)??[],n=a.get(e),r=Array.from(new Set([...t.map(e=>e.goalId),n?.current_todo?.goal_id,...n?.goal_ids??[]].filter(Boolean))),o=(t.filter(e=>!e.todo.done)[0]??t[0])?.goalId??n?.current_todo?.goal_id??r[0]??``,s=n?.last_activity_at??null;return{agentId:e,claimedTodos:t,currentTodo:n?.current_todo??null,evidenceRefs:[],goalIds:r,handoffNote:null,lastActivity:s,nextSafeAction:n?.next_action?.trim()||`Inspect status projection before taking work`,primaryGoalId:o,quotaHints:[],staleClaimHint:null,status:{label:`可用`,summary:`正常运行`,variant:`success`},workspaceRef:null}})}function oC(e){return e?.map(e=>({dataUrl:e.data_url,id:e.id,mimeType:e.mime_type,name:e.name,size:e.size}))}var sC=`loopx.personal-agent-selection.v1`;function cC(){if(typeof window>`u`)return{};try{let e=JSON.parse(window.localStorage.getItem(sC)??`{}`);return!e||typeof e!=`object`||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(e=>typeof e[0]==`string`&&typeof e[1]==`string`))}catch{return{}}}var lC={需修复:`danger`,等你:`warning`,等待条件:`info`,推进中:`success`,安静运行:`neutral`,已停止:`neutral`,已完成:`neutral`};function uC(e,t){return ZS(t)||e.replace(/^loopx[-_]/i,`LoopX `).split(/[-_]+/).filter(Boolean).map((e,t)=>t===0?`${e.slice(0,1).toUpperCase()}${e.slice(1)}`:e).join(` `)}function dC(e){return e.split(/\r?\n/u).filter(e=>!/^\s*GOAL_(STATUS|PROGRESS)\s*:/u.test(e)).map(e=>/^\s*GOAL_EVIDENCE\s*:/u.test(e)?e.replace(/^\s*GOAL_EVIDENCE\s*:/u,`验证依据:`):/^\s*NEXT_ACTION\s*:/u.test(e)?e.replace(/^\s*NEXT_ACTION\s*:/u,`下一步:`):e).join(` -`).trim()}function fC(e,t){return[`agent`,`assistant`].includes(e.trim().toLowerCase())&&t.trim().length>0}var pC=`已发现的项目 Agent`;function mC(e){switch(Sy(e)){case`codex`:return`Codex`;case`claude`:return`Claude Code`;case`kiro`:return`Kiro CLI`;case`trae`:return`Trae CLI Agent`;case`coco`:return`Coco Agent`;default:return uC(e)}}function hC(e,t){switch(Cy(e,t)){case`codex`:return`代码与项目执行`;case`claude`:return`复杂分析与长任务`;case`openai`:case`anthropic`:return`管家问答 · 无工具`;case`kiro`:return`终端编码 · 原生 /goal 循环`;case`trae`:return`前端与交互实现`;case`coco`:return`通用任务`;default:return pC}}function gC(e,t){let n=e.project_asset;return t===`user`?rC(n?.user_todos,e.user_todos,`project_asset.user_todos`):rC(n?.agent_todos,e.agent_todos,`project_asset.agent_todos`)}function _C(e){return QS(e.title??e.text,112)}function vC(e){let t=e.resume_condition?.resume_receipt;if(!t||typeof t!=`object`||Array.isArray(t))return null;let n=t.receipt_id;return typeof n==`string`&&n.trim()?n.trim():null}function yC(e,t){return{resumeWhen:e.resume_when??null,resumeReady:e.resume_ready??null,resumeReceiptId:vC(e),claimedBy:e.claimed_by??null,done:e.status!==`deferred`&&e.done,evidence:e.evidence?QS(e.evidence,96):null,index:e.index,priority:e.priority??null,status:e.status??null,taskClass:e.task_class??null,taskDomain:e.task_domain??null,text:_C(e),todoId:e.todo_id?.trim()||`${t.goal.id}:agent:${e.index}`}}function bC(e){let t=e.queueItem?.agent_todos,n=t?.items??e.queueItem?.project_asset?.agent_todos?.items??[],r=new Map(n.map(t=>[t.todo_id?.trim()||`${e.goal.id}:agent:${t.index}`,t]));for(let n of t?.deferred_items??[]){let t=n.todo_id?.trim()||`${e.goal.id}:agent:${n.index}`;r.has(t)||r.set(t,n)}return[...r.values()]}function xC(e){return bC(e).map(t=>yC(t,e))}function SC(e,t,n){let r=new Map;for(let n of e.todo_index?.items??[]){if(n.goal_id!==t.goal.id||n.role!==`agent`)continue;let e=yC(n,t);r.set(e.todoId,e)}for(let e of n)r.has(e.todoId)||r.set(e.todoId,e);let i=new Map;for(let e of r.values()){if(e.done||e.taskClass!==`advancement_task`)continue;let t=e.taskDomain?.trim();t&&i.set(t,(i.get(t)??0)+1)}return[...i].map(([e,t])=>({domain:e,matchingTodoCount:t}))}function CC(e,t){return{claimedBy:e.claimed_by??null,done:e.status===`done`||e.status===`completed`,index:-1,priority:e.priority??null,status:e.status??null,taskClass:e.task_class??null,text:QS(e.title,112),todoId:e.todo_id?.trim()||`${t.goal.id}:agent:${e.claimed_by??`unknown`}:current`}}function wC(e,t,n){let r=new Map(e.map(e=>[e.todoId,e]));for(let e of t){let t=e.currentTodo;if(!t||t.goal_id!==n.goal.id)continue;let i=CC(t,n);r.has(i.todoId)||r.set(i.todoId,i)}return[...r.values()]}function TC(e){let t=e.queueItem?.project_asset?.agent_todos,n=e.queueItem?.agent_todos,r=bC(e),i=t?.advancement_done_count??n?.advancement_done_count??t?.done??n?.done_count??null,a=r.filter(e=>e.done&&e.status!==`deferred`).length,o=Math.max(i??0,a),s=new Set(r.map(e=>e.todo_id?.trim()).filter(e=>!!e)),c=(t?.recent_completed_advancement_items??[]).filter(e=>!e.todo_id?.trim()||!s.has(e.todo_id.trim())).map(t=>yC(t,e)),l=r.find(e=>!e.done);return{doneTodoCount:o,nextTodoText:ZS(t?.next??``)||(l?ZS(l.title??``)||ZS(l.text??``):``)||null,recentCompleted:c}}function EC(e,t){let n=ZS(e);return n?/\b(state_file|registry_goal|authority_sources|source_registry)\b|\b[a-z_]+\s+\d+\/\d+/i.test(n)?t(`projection.goalVerified`):DS(n,t,`projection.validationRecorded`):``}function DC(e,t=4){if(e.length<=t)return e;let n=e.findIndex(e=>!e.done);if(n<0)return e.slice(-t);let r=Math.max(0,Math.min(n-2,e.length-t));return e.slice(r,r+t)}function OC(e,t,n){let r=t.queueItem?.project_asset?.latest_validation,i=t.latestRun,a=e.event_ledger_summary?.goals.find(e=>e.goal_id===t.goal.id);if(!r&&!i&&!a)return null;let o=[EC(r?.summary,n),DS(i?.health_check,n),DS(i?.recommended_action,n)].find(e=>e!==``&&e!==`暂无`)??n(`projection.runRecorded`),s=kS({eventCount:a?.events_24h??0,hasArtifact:!!(i?.json_exists||i?.markdown_exists),hasLatestValidation:!!r},n);return{generatedAt:r?.generated_at??i?.generated_at??a?.latest_event_at??``,label:s.label,metadata:s.metadata,runId:i?`${t.goal.id}:${i.generated_at}`:null,safePreview:[o,s.metadata].filter(Boolean).join(` -`),summary:o,todoId:t.queueItem?.project_asset?.agent_todos?.items.find(e=>!e.done)?.todo_id??null}}function kC(e){return[e.status,e.goal.status,e.latestRun?.classification,e.lifecyclePhase].filter(Boolean).some(e=>/(^|[_\s-])(done|complete|completed|finished|terminal|closed|success)([_\s-]|$)/i.test(e??``))}function AC(e,t){return e.global_registry?.findings?.find(e=>e.severity===`high`&&(e.goal_id===t.goal.id||e.goal_ids.includes(t.goal.id)))}function jC(e){return[e.status,e.goal.status,e.latestRun?.classification,e.lifecyclePhase].filter(Boolean).some(e=>/(^|[_\s-])(failure|failed|error|broken|unhealthy|blocked[_\s-]?health|health[_\s-]?blocked)([_\s-]|$)/i.test(e??``))}function MC(e,t){let n=t.queueItem?.stale_latest_run_warning;return t.severity===`high`||!!AC(e,t)||!!(n?.requires_refresh_state||n?.severity===`high`)||jC(t)}function NC(e,t){let n=AC(e,t);return t.queueItem?.stale_latest_run_warning?.recommended_action??t.queueItem?.stale_latest_run_warning?.reason??n?.recommended_action??n?.message??t.queueItem?.recommended_action??t.latestRun?.recommended_action??null}function PC(e){let t=e.latestRun?.operator_gate,n=t?.decision?.trim().toLowerCase()??``,r=new Set([`approve`,`approved`,`reject`,`rejected`,`defer`,`deferred`,`cancel`,`cancelled`]),i=[e.queueItem?.recommended_action,e.latestRun?.recommended_action].filter(Boolean).join(` `),a=/(?:等待|需要)(?:用户|你|owner).{0,24}(?:批准|确认|授权|补充|选择|决定)|(?:批准|确认|授权).{0,16}(?:后|才能|方可)/i.test(i);return!!(t&&!r.has(n))||e.lifecyclePhase===`operator_gated`&&!r.has(n)||a}function FC(e,t){let n=e.latestRun?.operator_gate;return DS(n?.operator_question??n?.reason_summary??n?.follow_up??e.queueItem?.recommended_action??e.latestRun?.recommended_action,t,`projection.confirmAgentDecision`)}function IC(e,t){if(t.goal.activation_state===`stopped`)return`已停止`;let n=tC(t,`user`),r=tC(t,`agent`),i=!!nC(n),a=!!nC(r);return[`user_or_controller`,`controller`].includes(t.waitingOn)||i||PC(t)?`等你`:MC(e,t)?`需修复`:t.waitingOn===`external_evidence`?`等待条件`:iC(t)===`eligible`||a?`推进中`:kC(t)?`已完成`:`安静运行`}function LC(e,t,n,r){if(n===`已停止`)return OS(`stopped`,r);if(n===`需修复`)return DS(NC(e,t),r,`projection.statusRefreshNeeded`);if(n===`等你`)return OS(`needs_you`,r);if(n===`推进中`){let e=[(tC(t,`agent`)?.items??[]).filter(e=>!e.done).flatMap(e=>[e.title,e.text]).map(e=>ZS(e)).find(e=>e!==``&&e!==`暂无`),t.queueItem?.recommended_action,t.latestRun?.recommended_action].map(e=>ZS(e)).find(e=>e!==``&&e!==`暂无`);return e?DS(e,r,`projection.agentAdvancingGoal`):OS(`advancing`,r)}return OS(n===`等待条件`?`waiting_external`:`idle`,r)}function RC(e,t){return t.some(t=>e.includes(t))}function zC(e,t,n){if(t.goals.some(e=>e.activationState===`active`&&e.loadState))return{text:`Goal 状态尚未全部加载,暂不能给出完整统计。可先打开已加载的 Goal,失败项可重试。`,lines:[]};if(RC(n,[`Agent`,`agent`,`推进`,`在做`])){let e=t.goals.filter(e=>![`安静运行`,`已完成`,`已停止`].includes(e.state)),n=(e.length>0?e:t.goals).slice(0,3);return n.length===0?{text:`当前状态里还没有 Goal 可供汇总。`,lines:[]}:{text:e.length>0?`Agent 当前关注这些 Goal:`:`当前 Goal 都比较安静:`,lines:n.map(e=>`${e.title} · ${e.state} · ${e.agentSentence}`)}}if(RC(n,[`现在`,`下一步`,`我该`,`该做什么`,`优先处理`])){let e=t.userTodos[0];if(e)return{text:e.blocking?`先处理「${uC(e.goalId)}」:${e.text}`:`当前最先处理「${uC(e.goalId)}」:${e.text}`,lines:[]};let n=t.goals.find(e=>e.state===`需修复`);if(n)return{text:`没有待办,但这个 Goal 需要先修复。`,lines:[`${n.title} · ${n.agentSentence}`]};let r=t.goals.find(e=>e.state===`推进中`);return r?{text:`目前不需要你介入,Agent 正在推进。`,lines:[`${r.title} · ${r.agentSentence}`]}:{text:`当前系统很安静,没有需要你立即处理的事项。`,lines:[]}}if(RC(n,[`等我`,`阻塞`,`需要我`,`全局待办`]))return t.userTodos.length===0?{text:`目前没有 Goal 在等你,开放用户待办为 0。`,lines:[]}:{text:`有 ${t.userTodos.length} 项开放用户待办,阻塞项优先:`,lines:t.userTodos.slice(0,3).map(e=>`${uC(e.goalId)} · ${e.blocking?`阻塞`:`待处理`} · ${e.text}`)};if(RC(n,[`状态`,`异常`,`修复`,`健康`])){let n=t.systemHealth?!t.systemHealth.ok:!e.ok||!e.contract?.ok||!e.global_registry?.ok||(e.global_registry?.summary?.high??0)>0,r=t.goals.filter(e=>e.state===`需修复`),i=r.slice(0,n?2:3).map(e=>`${e.title} · ${e.agentSentence}`);return n&&i.push(`全局状态、契约或注册表健康检查未通过,请进入管理页检查。`),i.length===0?{text:`当前没有发现 Goal 级或全局健康异常。`,lines:[]}:{text:r.length>0?`当前需要关注这些健康问题:`:`Goal 状态正常,但全局健康需要检查:`,lines:i}}return{text:`当前管家支持三类问题:下一步、等待你的事项、Agent 与健康状态。`,lines:[`问“我现在该做什么?”`,`问“哪些 Goal 在等我?”`,`问“Agent 在做什么?”或当前健康状态`]}}function BC(e,t,n,r=!1){let i=new Map(t.map(e=>[e.goal.id,e])),a=new Set(e.run_history.goals.filter(e=>e.activation_state===`stopped`).map(e=>e.id)),o=$S(e.usage_summary),s=aC(t,e.todo_index,e.agent_management_projection),c=e.attention_queue.items.flatMap((e,t)=>{if(a.has(e.goal_id))return[];let n=[`user_or_controller`,`controller`].includes(e.waiting_on);return(gC(e,`user`)?.items??[]).map((r,i)=>({projectedDone:r.done,details:Kd(r),actionKind:r.action_kind??null,blocking:n,goalId:e.goal_id,sourceOrder:t,taskClass:r.task_class??null,text:_C(r),todoId:r.todo_id?.trim()||`${e.goal_id}:user:${r.index}`,todoOrder:i,updatedAt:r.updated_at??null}))}),l=c.filter(e=>!e.projectedDone),u=new Set(l.map(e=>e.goalId)),d=t.flatMap((t,r)=>a.has(t.goal.id)||u.has(t.goal.id)||!PC(t)?[]:[{details:Kd({task_class:`user_gate`,status:`open`,note:t.latestRun?.operator_gate?.reason_summary}),actionKind:`gate.resolve`,blocking:!0,goalId:t.goal.id,sourceOrder:e.attention_queue.items.length+r,taskClass:`user_gate`,text:FC(t,n),todoId:`${t.goal.id}:operator-gate`,todoOrder:0,updatedAt:t.latestRun?.operator_gate?.recorded_at??t.latestRun?.generated_at??null}]),f=[...l,...d].sort((e,t)=>Number(t.blocking)-Number(e.blocking)||e.sourceOrder-t.sourceOrder||e.todoOrder-t.todoOrder),p=e.run_history.goals.flatMap(t=>{if(t.registry_member===!1)return[];let a=i.get(t.id);if(!a)return[];let c=IC(e,a),l=f.find(e=>e.goalId===t.id),u=l?.text??null,d=TC(a),p=t.coordination?.registered_agents??[],m=new Set(p),h=[...s.filter(e=>e.goalIds.includes(t.id)&&!/unassigned|unknown/i.test(e.agentId)&&(m.size===0||m.has(e.agentId))&&(e.currentTodo?.goal_id===t.id||e.claimedTodos.some(e=>e.goalId===t.id)))].sort((e,t)=>(t.lastActivity??``).localeCompare(e.lastActivity??``)),g=new Set(h.map(e=>e.agentId)),_=[...h.map(e=>({agentId:e.agentId,label:e.agentId,lastActivityAt:e.lastActivity,state:e.status.label})),...p.filter(e=>!g.has(e)).map(e=>({agentId:e,label:e,lastActivityAt:null,state:`registered`}))],v=h[0],y=wC(xC(a),h,a),b=[d.nextTodoText,a.queueItem?.recommended_action,a.latestRun?.recommended_action,LC(e,a,c,n)].map(e=>DS(e,n)).find(e=>e!==``&&e!==`暂无`)??n(`projection.nextUpdatePending`);return[{activationState:t.activation_state,agentId:v?.agentId??p[0]??`codex`,agentLaneCount:_.length,agentLanes:_,agentLabel:v?.agentId,agentSentence:LC(e,a,c,n),agentTodos:[...y,...d.recentCompleted],doneTodoCount:d.doneTodoCount,acceptanceObservation:t.acceptance_observation,goalId:t.id,latestActivity:a.latestRun?.generated_at??``,needsYou:u,needsYouActionKind:l?.actionKind??null,needsYouBlocking:l?.blocking??!1,needsYouTaskClass:l?.taskClass??null,needsYouTodoId:l?.todoId??null,nextSentence:b,runEvidence:OC(e,a,n),state:c,...r?{subagentExecution:{allowedDomains:t.spawn_policy?.allowed_domains??[],domainCandidates:SC(e,a,y),enabled:t.spawn_policy?.mode===`multi_subagent`&&t.spawn_policy.spawn_allowed===!0&&t.spawn_policy.max_children>0,maxChildren:t.spawn_policy?.max_children??0,modelConfig:t.spawn_policy?.model_config}}:{},title:uC(t.id,t.display_name),usage:(()=>{let e=o.get(t.id);return e?{costUsd24h:e.cost_usd_24h,costUsd7d:e.cost_usd_7d,durationMs24h:e.duration_ms_24h,durationMs7d:e.duration_ms_7d,tokens24h:eC(e.input_tokens_24h,e.output_tokens_24h),tokens7d:eC(e.input_tokens_7d,e.output_tokens_7d)}:null})()}]}),m=[];if(e.ok||m.push(`状态载荷未标记为正常 (payload.ok === false)`),e.contract&&!e.contract.ok){let t=e.contract.summary,n=t?`${t.errors} 项错误 / ${t.warnings} 项警告`:e.contract.errors?.[0]||`请检查控制面契约`;m.push(`契约检查未通过: ${n}`)}if(e.global_registry){e.global_registry.ok||m.push(`注册表状态异常: ${e.global_registry.summary.high} 项高危`);for(let t of e.global_registry.findings||[])t.severity===`high`&&m.push(`[${t.kind}] ${t.message}`)}let h=e.decision_freshness_summary?.summary?.stale_count?`${e.decision_freshness_summary.summary.stale_count} 项决策状态已过期`:null,g=m.length===0&&!h,_={ok:g,summary:g?`所有控制面契约与注册表检查均正常`:`发现 ${m.length+ +!!h} 项系统健康关注点`,issues:m,freshnessWarning:h};return{blockingTodoCount:f.filter(e=>e.blocking).length,goalNotifications:(e.goal_channel_notification_projection?.goals??[]).map(e=>({goalId:e.goal_id,configured:e.configured,enabled:e.enabled,humanGateAutoNotifyEnabled:e.human_gate_auto_notify_enabled,lastNotifiedAt:e.last_notified_at??null,receiptCount:e.receipt_count,targetRef:e.target_ref??null})),goals:p,openUserTodoCount:f.length,systemHealth:_,attentionHistory:[...c,...d],userTodos:f,visibleUserTodos:f.slice(0,5),workers:(e.agent_management_projection?.agents??[]).map(e=>({agentId:e.agent_id,currentTodoGoalId:e.current_todo?.goal_id??null,currentTodoText:e.current_todo?.title?QS(e.current_todo.title,96):null,lastActivityAt:e.last_activity_at??null,state:e.state??null}))}}function VC({goalArchiveLoadState:e,isLoading:t,onGoalActivationStateChange:n,onGoalDeleted:r,onSelectGoal:i,onReconcileStatus:a,onRefresh:o,onRetryGoalArchive:s,payload:c,progress:l,rows:u,selectedGoalId:d,statusSourceControl:f,theme:p,toggleTheme:m}){let h=f.activeSource.readOnly,g=f.activeSource.kind===`ssh_tunnel`?f.activeSource.hostAlias:void 0,{t:_}=Ji(),[v,y]=(0,z.useState)([]),[b,x]=(0,z.useState)(!1),[S,C]=(0,z.useState)(null),[w,T]=(0,z.useState)(null),E=(0,z.useMemo)(()=>{let e=BC(c,u,_,b);if(!l)return e;let t=Object.values(l.snapshots).map(e=>BC(e,XS(e.run_history.goals,e.attention_queue.items),_,b)),n=new Map(t.flatMap(e=>e.goals).map(e=>[e.goalId,e])),r=e.goals.map(e=>n.get(e.goalId)??{...e,loadError:l.errors[e.goalId],loadState:l.errors[e.goalId]?`error`:`loading`,agentId:``,agentSentence:``,nextSentence:``,subagentExecution:void 0}),i=t.flatMap(e=>e.userTodos),a=r.some(e=>e.activationState===`active`&&e.loadState),o=[...new Set(t.flatMap(e=>e.systemHealth?.issues??[]))];return{...e,goals:r,userTodos:i,attentionHistory:t.flatMap(e=>e.attentionHistory??e.userTodos),visibleUserTodos:i.slice(0,5),openUserTodoCount:i.length,blockingTodoCount:i.filter(e=>e.blocking).length,workers:[...new Map(t.flatMap(e=>e.workers??[]).map(e=>[e.agentId,e])).values()],goalNotifications:t.flatMap(e=>e.goalNotifications??[]),systemHealth:a||t.length===0?void 0:{ok:t.every(e=>e.systemHealth?.ok),issues:o,summary:o.length?`发现 ${o.length} 项系统健康关注点`:`状态检查已完成`,freshnessWarning:t.map(e=>e.systemHealth?.freshnessWarning).filter(Boolean).join(`;`)||null}}},[c,u,l,b,_]),D=E.goals.find(e=>e.goalId===d)??null,O=l?.snapshots[d]??c,[k,ee]=(0,z.useState)(null),[te,A]=(0,z.useState)(null),[j,M]=(0,z.useState)(!1),ne=E.goals.some(e=>e.activationState===`active`&&e.loadState===`loading`)?`loading`:E.goals.map(e=>`${e.goalId}:${e.agentId}`).join(`|`),N=D?.goalId??`manager`;E.goals.some(e=>e.activationState===`active`&&e.loadState)||(E.systemHealth?!E.systemHealth.ok:!c.ok)||E.openUserTodoCount>0&&`${E.openUserTodoCount}${E.blockingTodoCount}`;let P=v.length>0?v.map(e=>({agentId:e.agent_id,adapterKind:e.adapter_kind,available:e.available,capability:hC(e.agent_id,e.adapter_kind),interrupt:e.interrupt,label:e.display_name,location:e.location,resume:e.resume,source:e.source,statusLabel:e.available?`可用`:`需要配置`,streaming:e.streaming,toolCalls:e.tool_calls,trustScope:e.trust_scope})):[{agentId:`codex`,available:!0,capability:hC(`codex`),label:`Codex`,statusLabel:`正在检测`}],re=[...P,{agentId:`status-only`,available:!0,capability:`不调用模型`,adapterKind:`status_projection`,interrupt:!1,label:`仅查状态`,resume:!0,statusLabel:`只读`,streaming:!1,toolCalls:!1,trustScope:`read_only`}],ie=P.find(e=>e.label===`Codex`&&e.available)?.agentId??P.find(e=>e.available)?.agentId??`status-only`,ae=w?.executor_endpoint?.trim()??``,F=ae?P.find(e=>e.agentId===ae)?.agentId:void 0,oe=e=>e===`manager`?F??ie:ie,[I,se]=(0,z.useState)(cC),L=gh(re,I[N]??oe(N),ie),[ce,le]=(0,z.useState)(!1),[ue,de]=(0,z.useState)(!1),[fe,pe]=(0,z.useState)(`chat`),[me,he]=(0,z.useState)(``),[ge,_e]=(0,z.useState)({}),[ve,ye]=(0,z.useState)({}),[be,xe]=(0,z.useState)(null),[Se,Ce]=(0,z.useState)({}),[we,Te]=(0,z.useState)([]),[Ee,De]=(0,z.useState)(null),[Oe,ke]=(0,z.useState)({}),Ae=(0,z.useRef)(1),R=(0,z.useRef)(1),je=(0,z.useRef)(new Map),Me=(0,z.useRef)(new Set),Ne=(0,z.useRef)(new Map),Pe=(0,z.useRef)(new Map),Fe=(0,z.useRef)(new Set),Ie=(0,z.useRef)(new Set),Le=(0,z.useRef)(null),Re=(0,z.useRef)(null),ze=(0,z.useRef)(null),V=(0,z.useRef)(null);(0,z.useRef)(null);let Be=ge[N]??[];ve[N];let Ve=(e,t)=>e===`manager`?_(`header.manager`):t,He=D?E.userTodos.filter(e=>e.goalId===D.goalId):E.userTodos,Ue=D?.agentTodos??[];DC(Ue,D?.needsYou?3:4);let We=Ue.filter(e=>e.done).length,Ge=Ue.length>0?`${We}/${Ue.length}`:`暂无计划`;D&&({...E},He.filter(e=>e.blocking).length,He.length),(0,z.useEffect)(()=>{let e=lh(f.activeSource.statusUrl,window.location.href),t=e.source?ph(O,e.source):null;if(!D||!t?.indexUrl||!t.detailUrl){ee(null),A(null),M(!1);return}let{detailUrl:n,indexUrl:r}=t,i=!1;return ee(null),A(null),M(!0),mh(r,D.goalId).then(async e=>{let t=e.items[0]?.detail_ref;return t?hh(n,t):null}).then(e=>{i||ee(e)}).catch(e=>{i||A(Ap(e))}).finally(()=>{i||M(!1)}),()=>{i=!0}},[O,D?.goalId,f.activeSource.statusUrl]);let Ke=D?void 0:Se[N]?.sessionId;(0,z.useEffect)(()=>{if(h||!Ke)return;let e=!1,t,n=async()=>{try{let t=await Xh(Ke);if(e)return;let n=t.messages.filter(e=>e.origin===`manager_followup`);_e(e=>{let t=e[N]??[],r=new Set(t.map(e=>e.sourceMessageId)),i=n.filter(e=>!r.has(e.message_id)),a=new Map(n.map(e=>[e.message_id,e.return_delivery])),o=!1,s=t.map(e=>{let t=e.sourceMessageId?a.get(e.sourceMessageId):void 0;return JSON.stringify(t)===JSON.stringify(e.returnDelivery)?e:(o=!0,{...e,returnDelivery:t})});return!i.length&&!o?e:{...e,[N]:[...s,...i.map(e=>({id:Ae.current++,sourceMessageId:e.message_id,role:`assistant`,agentLabel:Ve(N,L.label),sourceLabel:`管家交接回执`,text:dC(e.text),lines:[],returnDelivery:e.return_delivery}))]}})}catch{}finally{e||(t=setTimeout(n,3e3))}};return n(),()=>{e=!0,t&&clearTimeout(t)}},[h,Ke,N,L.label]);function qe(e,t){Ce(n=>{if(t===null){let t={...n};return delete t[e],t}return{...n,[e]:t}})}(0,z.useEffect)(()=>{if(h){y([]),x(!1),C(null),T(null);return}let e=!1;return qh().then(t=>{if(!e){y(t.adapters??[]);let e=t.manager?.runtime;T(t.manager?.channel_binding??null),C(e?{schema_version:`manager_runtime_session_readback_v0`,runtime_profile:e.runtime_profile,configuration_revision:e.configuration_revision,status:e.status,sandbox:e.sandbox,standing_grant:e.standing_grant,tool_classes:e.tool_classes}:null),x(t.goal_subagent_configuration===`preview_locked`)}}).catch(()=>{e||x(!1)}),()=>{e=!0}},[h]),(0,z.useEffect)(()=>{try{window.localStorage.setItem(sC,JSON.stringify(I))}catch{}},[I]),(0,z.useEffect)(()=>{if(h||!L.available)return;let e=N,t=`${e}:${L.agentId}`,n=D?`goal`:`manager`,r=D?`goal.${D.goalId}`:`manager`,i=!1,a=null,o=null;return(async()=>{try{let s=await $h({agentId:n===`manager`?void 0:L.agentId,channelId:r,goalId:D?.goalId});if(i||(_e(t=>(t[e]?.length??0)>0?t:{...t,[e]:s.messages.map(t=>({sourceMessageId:t.message_id,agentLabel:t.role===`user`?void 0:Ve(e,L.label),attachments:oC(t.attachments),id:Ae.current++,lines:[],role:t.role===`user`?`user`:`assistant`,returnDelivery:t.return_delivery,sourceLabel:t.role===`user`?void 0:t.role===`error`?`本地会话记录`:e===`manager`?`恢复的${_(`header.manager`)}会话`:`恢复的 ${L.label} 会话`,text:t.role===`user`?t.text:dC(t.text)}))}),L.agentId===`status-only`))return;let c=s.sessions[0];if(o=c?.session_id??null,c&&!c.resumable){Me.current.add(t),qe(e,{agentId:L.agentId,resumable:!1,sessionId:c.session_id,status:`resume_failed`});return}let l=n===`manager`?``:D?.goalId??``;if(n===`goal`&&!l)return;let u=await Yh(l,n===`manager`?I[e]:L.agentId,`resume_latest`,n);if(i)return;n===`manager`&&u.session.manager_runtime&&C(u.session.manager_runtime),je.current.set(t,u.session_id);let d=s.snapshots.find(e=>e.session.session_id===u.session_id),f=d?.session.active_turn_id??``;if(qe(e,{agentId:u.agent_id||L.agentId,resumable:!0,sessionId:u.session_id,status:f?`running`:`ready`,turnId:f||void 0}),Me.current.delete(t),!f)return;let p=`${u.session_id}:${f}`;if(Ie.current.has(p))return;Ie.current.add(p),Ne.current.set(e,f),qe(e,{agentId:L.agentId,resumable:!0,sessionId:u.session_id,status:`running`,turnId:f}),xe(e),a=new AbortController,Pe.current.set(e,a);let m=``,h=Je(e,{activity:[`正在恢复进行中的 Agent 回合`],agentLabel:Ve(e,L.label),lines:[],pending:!0,sourceLabel:e===`manager`?`恢复的${_(`header.manager`)}会话`:`恢复的 ${L.label} 会话`,text:``});try{let t=await og(u.session_id,f,{signal:a.signal,onDelta:t=>{m+=t,Ye(e,h,{text:m})},onActivity:t=>{_e(n=>({...n,[e]:(n[e]??[]).map(e=>e.id===h?{...e,activity:[...new Set([...e.activity??[],t])].slice(-6)}:e)}))}});if(i)return;Ye(e,h,{lines:t.response.gate?[t.response.gate.summary,t.response.gate.next_action].filter(Boolean).slice(0,2):[],pending:!1,text:t.response.message||m.trim()||`${Ve(e,L.label)} 已完成分析。`});let n=E.goals.find(e=>e.goalId===d?.session.goal_id)??D??E.goals[0]??null;if(n&&t.response.proposals.length>0){let r=t.response.proposals.filter(_h).map(e=>({goalId:n.goalId,id:R.current++,previewId:null,proposal:e,receiptLabel:null,state:`candidate`,statusMessage:null}));r.length>0&&ye(t=>({...t,[e]:[...t[e]??[],...r]}))}}catch(t){if(i)return;Ye(e,h,{activity:[],lines:[],pending:!1,reconnect:t instanceof Fh&&t.payload.reconnectable===!0,sourceLabel:`LoopX Chat 本地后端`,text:t instanceof Error?t.message:`无法恢复进行中的 Agent 回合。`})}finally{Ie.current.delete(p),Ne.current.get(e)===f&&Ne.current.delete(e),qe(e,{agentId:L.agentId,resumable:!0,sessionId:u.session_id,status:`ready`}),Pe.current.get(e)===a&&Pe.current.delete(e),i||xe(t=>t===e?null:t)}}catch(n){if(i)return;n instanceof Fh&&n.payload.error_code===`resume_failed`&&(Me.current.add(t),o&&qe(e,{agentId:L.agentId,resumable:!1,sessionId:o,status:`resume_failed`}))}})(),()=>{i=!0,a?.abort()}},[N,E.goals[0]?.goalId,h,D?.goalId,L.agentId,L.available,L.label,I]),(0,z.useEffect)(()=>{if(h||D||E.goals.length===0||ne===`loading`)return;let e=!1;return Promise.all(E.goals.filter(e=>!e.loadState).map(async e=>{let t=await Zh({agentId:e.agentId,channelId:`goal.${e.goalId}`,goalId:e.goalId});return{goalId:e.goalId,session:t.sessions[0]??null}})).then(t=>{e||Ce(e=>{let n={...e};for(let e of t)e.session&&(n[e.goalId]={agentId:e.session.agent_id,resumable:e.session.resumable,sessionId:e.session.session_id,status:e.session.active_turn_id?`running`:e.session.status,turnId:e.session.active_turn_id??void 0});return n})}).catch(()=>{}),()=>{e=!0}},[h,ne,D?.goalId]),(0,z.useEffect)(()=>{if(De(null),h){Te([]),ke({});return}if(!D){Te([]),ke({});return}let e=!1,t=0,n=0;Te([]),ke({});let r=async()=>{if(!e){if(document.hidden){t=window.setTimeout(()=>void r(),1e4);return}try{let t=await Zh({goalId:D.goalId});if(!e){let r=t.sessions.filter(e=>e.channel_id?.startsWith(`task.`));Te(r);let i=await Promise.allSettled(r.map(e=>Xh(e.session_id)));if(!e){let e=i.some(e=>e.status===`rejected`);n=e?n+1:0,De(e?`partial`:null),ke(Object.fromEntries(i.flatMap((e,t)=>e.status===`fulfilled`?[[r[t].session_id,e.value]]:[])))}}}catch{n+=1,e||De(`offline`)}e||(t=window.setTimeout(()=>void r(),Math.min(3e4,2e3*2**Math.min(n,4))))}};return r(),()=>{e=!0,window.clearTimeout(t)}},[h,D?.goalId]),(0,z.useEffect)(()=>{if(!ce)return;let e=window.requestAnimationFrame(()=>{Le.current?.querySelector(`[role="menuitem"]:not(:disabled)`)?.focus()});return()=>{window.cancelAnimationFrame(e),Re.current?.focus()}},[ce]),(0,z.useEffect)(()=>{if(!ue)return;let e=window.requestAnimationFrame(()=>ze.current?.focus());return()=>{window.cancelAnimationFrame(e),V.current?.focus()}},[ue]),(0,z.useEffect)(()=>{if(!ce&&!ue)return;let e=e=>{e.key===`Escape`&&(le(!1),de(!1))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[ce,ue]);function Je(e,t){let n=Ae.current++;return _e(r=>({...r,[e]:[...r[e]??[],{...t,id:n,role:`assistant`}]})),n}function Ye(e,t,n){_e(r=>({...r,[e]:(r[e]??[]).map(e=>e.id===t?{...e,...n}:e)}))}async function Xe(e,t){let n=e.trim();if(!n)return;let r=t&&`goalId`in t?t.goalId??`manager`:N,i=r===`manager`?null:E.goals.find(e=>e.goalId===r)??null,a=t?.agentId?gh(re,t.agentId,ie):L,o=r===`manager`?E:i?{...E,blockingTodoCount:E.userTodos.filter(e=>e.goalId===i.goalId&&e.blocking).length,goals:[i],openUserTodoCount:E.userTodos.filter(e=>e.goalId===i.goalId).length,userTodos:E.userTodos.filter(e=>e.goalId===i.goalId),visibleUserTodos:E.userTodos.filter(e=>e.goalId===i.goalId)}:E,s=Ae.current++;if(_e(e=>({...e,[r]:[...e[r]??[],{attachments:t?.attachments,id:s,lines:[],role:`user`,text:n}]})),he(``),xe(r),a.agentId===`status-only`||!i&&r!==`manager`){let e=zC(O,o,n),t=a.agentId===`status-only`;Je(r,{agentLabel:t?`仅查状态`:`LoopX 管家`,lines:e.lines.slice(0,3),sourceLabel:t?`LoopX 状态投影 · 仅查状态`:`LoopX 状态投影`,text:e.text}),Jh({answer:[e.text,...e.lines.slice(0,3)].filter(Boolean).join(` -`),contextKind:r===`manager`?`manager`:`goal`,goalId:r===`manager`?void 0:r,question:n}).catch(()=>{}),xe(null);return}let c=`${r}:${a.agentId}`,l=null;try{let e=je.current.get(c);if(!e){let t=Me.current.has(c)?`new`:`resume_latest`,n=r===`manager`?I[r]:a.agentId,o=await Yh(r===`manager`?``:i.goalId,n,t,r===`manager`?`manager`:`goal`);r===`manager`&&o.session.manager_runtime&&C(o.session.manager_runtime),e=o.session_id,je.current.set(c,e),qe(r,{agentId:o.agent_id||a.agentId,resumable:!0,sessionId:e,status:`ready`}),Me.current.delete(c)}let o=``;l=Je(r,{activity:[r===`manager`?`正在连接管家`:`正在连接 Agent`],agentLabel:Ve(r,a.label),lines:[],pending:!0,sourceLabel:r===`manager`?`${_(`header.manager`)} · 跨 Goal`:`${a.label} Agent · ${uC(i.goalId)}`,text:``});let s=(await ig(e,n,{attachments:t?.attachments,signal:(()=>{let e=new AbortController;return Pe.current.set(r,e),e.signal})(),onDelta:e=>{o+=e,l!==null&&Ye(r,l,{text:o})},onActivity:e=>{l!==null&&_e(t=>({...t,[r]:(t[r]??[]).map(t=>t.id===l?{...t,activity:[...new Set([...t.activity??[],e])].slice(-6)}:t)}))},onPhase:(t,n)=>{Ne.current.set(r,n),qe(r,{agentId:a.agentId,resumable:!0,sessionId:e,status:`running`,turnId:n})}})).response;Ye(r,l,{lines:s.gate?[s.gate.summary,s.gate.next_action].filter(Boolean).slice(0,2):[],pending:!1,text:dC(s.message||o.trim())||`${Ve(r,a.label)} 已完成分析。`});let u=s.proposals.filter(_h);if(u.length>0&&!i&&Ye(r,l,{lines:[`请进入要修改的 Goal,预览并确认具体变更。`]}),u.length>0&&i){let e=u.map(e=>({goalId:i.goalId,id:R.current++,previewId:null,proposal:e,receiptLabel:null,state:`candidate`,statusMessage:null}));ye(t=>({...t,[r]:[...t[r]??[],...e]}))}if(r!==`manager`&&s.protected_action){let e=KS(r,n,s.protected_action);if(e)return e}}catch(e){if(Fe.current.delete(r)){let e={agentLabel:Ve(r,a.label),lines:[],pending:!1,sourceLabel:r===`manager`?`${_(`header.manager`)}会话`:`${a.label} 会话`,text:`已中断。你可以在当前会话继续发送消息。`};l===null?Je(r,e):Ye(r,l,e);return}let t=e instanceof Fh?e.payload:null;t&&yh(t)&&je.current.delete(c),t?.error_code===`resume_failed`&&(je.current.delete(c),Me.current.add(c),qe(r,{agentId:a.agentId,resumable:!1,sessionId:Se[r]?.sessionId??`resume-failed`,status:`resume_failed`}));let n=t?.gate,i=n&&typeof n==`object`?String(n.summary??``):``,o={agentLabel:Ve(r,a.label),lines:i?[i]:[],pending:!1,reconnect:t?.reconnectable===!0,sourceLabel:`LoopX Chat 本地后端`,text:t?.error_code===`resume_failed`?`原 ${Ve(r,a.label)} 会话无法恢复。本地历史已经保留,请在运行详情里选择“重试恢复”或“开始新 Session”。`:e instanceof Error?e.message:`${Ve(r,a.label)} 会话暂时不可用。`};l===null?Je(r,o):Ye(r,l,o)}finally{Ne.current.delete(r),Pe.current.delete(r);let e=je.current.get(c);e&&qe(r,{agentId:a.agentId,resumable:!0,sessionId:e,status:`ready`}),xe(e=>e===r?null:e)}}async function Ze(e){let t=e?.goalId??N,n=Se[t],r=e?.agentId??n?.agentId??L.agentId,i=`${t}:${r}`,a=e?.sessionId??n?.sessionId??je.current.get(i),o=e?.turnId??n?.turnId??Ne.current.get(t);if(!(!a||!o))try{Fe.current.add(t),await rg(a,o),Pe.current.get(t)?.abort()}catch(e){throw Fe.current.delete(t),e}finally{Ne.current.delete(t),qe(t,{agentId:r,resumable:!0,sessionId:a,status:`ready`}),Pe.current.delete(t),xe(e=>e===t?null:e)}}async function Qe(e){let t=e.goalId,n=`${t}:${e.agentId}`,r=e.sessionId??Se[t]?.sessionId??je.current.get(n);if(r)try{let i=await cg(r);je.current.set(n,r),Me.current.delete(n),qe(t,{agentId:e.agentId,resumable:i.session.resumable,sessionId:r,status:i.session.status})}catch{qe(t,{agentId:e.agentId,resumable:!1,sessionId:r,status:`resume_failed`})}}function $e(e){let t=`${e.goalId}:${e.agentId}`;je.current.delete(t),Me.current.add(t),qe(e.goalId,{agentId:e.agentId,resumable:!0,sessionId:`new-session-pending`,status:`ready`})}async function et(e){let t=`${e.goalId}:${e.agentId}`,n=e.sessionId??Se[e.goalId]?.sessionId??je.current.get(t);n&&n!==`new-session-pending`&&await sg(n),je.current.delete(t),Me.current.add(t),qe(e.goalId,null)}function tt(e){re.some(t=>t.agentId===e&&t.available)&&(se(t=>({...t,[N]:e})),le(!1))}function nt(){i(``),pe(`chat`)}function rt(e){i(e),pe(`chat`)}D&&lC[D.state],D&&(`${L.label}${D.state}`,Ue.length>0&&`${Ge}`,He.length>0&&`${He.length}`),D?.state===`需修复`||!D&&!c.ok?(D&&mC(D.agentId),D?.nextSentence,D?.agentSentence):D?.state===`等你`?(D.needsYouBlocking,D.needsYouBlocking,D.needsYou??D.nextSentence,D.needsYou):(D&&mC(D.agentId),D?.nextSentence);let it=[...!D&&Se.manager?.status===`resume_failed`?[{id:`run:manager:resume-failed`,kind:`run`,run:{agentId:Se.manager.agentId,agentLabel:mC(Se.manager.agentId),canInterrupt:!1,completedSteps:0,goalId:`manager`,goalTitle:`LoopX 管家`,latestActivity:`本地聊天记录已保留,点我查看恢复方式。`,resumable:!1,runId:`manager:resume-failed`,sessionId:Se.manager.sessionId,sessionStatus:`resume_failed`,status:`failed`,title:`上次会话需要恢复`,totalSteps:1,outputs:[]}}]:[],...D?we.map(e=>{let t=e.channel_id?.startsWith(`task.`)?e.channel_id.slice(5):void 0,n=D.agentTodos.find(e=>e.todoId===t),r=!!e.active_turn_id,i=Oe[e.session_id],a=i?.messages.some(e=>fC(e.role,e.text))===!0;return{id:`run:task:${e.session_id}`,kind:`run`,run:{agentId:e.agent_id,agentLabel:mC(e.agent_id),canInterrupt:r,completedSteps:n?.done||a?1:0,goalId:D.goalId,goalTitle:D.title,latestActivity:r?`Agent 正在执行,可进入 Session 查看过程或发送纠偏。`:a?`Agent 已返回结果,点击查看结果与完整运行记录。`:`执行 Session 已保留,可继续纠偏或恢复。`,resumable:e.resumable,runId:e.session_id,sessionId:e.session_id,sessionMessages:i?.messages.map(e=>({createdAt:e.created_at,messageId:e.message_id,role:e.role===`user`?`user`:fC(e.role,e.text)?`assistant`:`error`,text:e.role===`user`?e.text:dC(e.text)})),sessionStatus:a?`completed`:e.status,status:n?.done||a?`completed`:r?`running`:e.status===`resume_failed`?`failed`:`waiting`,title:n?.text??`Agent 执行任务`,todoId:t,totalSteps:1,turnId:e.active_turn_id??void 0}}}):[],...D?[{id:`run:${D.goalId}`,kind:`run`,run:{agentId:Se[D.goalId]?.agentId??D.agentId,agentLabel:mC(Se[D.goalId]?.agentId??D.agentId),canInterrupt:!!Se[D.goalId]?.turnId,completedSteps:D.agentTodos.filter(e=>e.done).length,goalId:D.goalId,goalTitle:D.title,latestActivity:D.agentSentence,resumable:Se[D.goalId]?.resumable??!0,runId:`goal:${D.goalId}`,sessionId:Se[D.goalId]?.sessionId,sessionStatus:Se[D.goalId]?.status,status:Se[D.goalId]?.turnId?`running`:D.state===`需修复`?`failed`:`waiting`,title:D.nextSentence,totalSteps:D.agentTodos.length||1,turnId:Se[D.goalId]?.turnId,outputs:D.runEvidence?[{createdAt:D.runEvidence.generatedAt,kind:`evidence`,outputId:`${D.goalId}:latest-evidence`,title:D.runEvidence.label}]:[]}}]:[],...Be.map(e=>({id:`message:${e.id}`,kind:`message`,message:{agentLabel:e.agentLabel,attachments:e.attachments,id:String(e.id),pending:e.pending,returnDelivery:e.returnDelivery,role:e.role,text:e.text||(e.pending?`Agent 正在处理…`:e.lines.join(` -`))}})),...(D?[D]:E.goals).flatMap(e=>e.runEvidence?[{id:`output:${e.goalId}:${e.runEvidence.generatedAt||`latest`}`,kind:`output`,output:{agentLabel:mC(e.agentId),createdAt:e.runEvidence.generatedAt,goalId:e.goalId,goalTitle:e.title,kind:`evidence`,outputId:`${e.goalId}:latest-evidence`,runId:e.runEvidence.runId??void 0,safePreview:e.runEvidence.safePreview,summary:e.runEvidence.summary,title:e.runEvidence.label,todoId:e.runEvidence.todoId??void 0}}]:[]),...D&&k?[{id:`output:${D.goalId}:report:${k.publication.publication_id}`,kind:`output`,output:{agentId:k.agent_id,agentLabel:mC(k.agent_id),createdAt:k.publication.delivered_at,goalId:D.goalId,goalTitle:D.title,kind:`report`,outputId:k.publication.publication_id,report:{addedCount:k.delta.added_count,changedCount:k.delta.changed_count,deliveredAt:k.publication.delivered_at,generationId:k.generation_id,items:k.delta.items.map(e=>({changeKind:e.change_kind,previousStatus:e.previous_status,sourceRef:e.source_ref,status:e.status,summary:e.summary,title:e.title})),periodEndAt:k.period_window.end_at,periodStartAt:k.period_window.start_at,predecessorPublicationId:k.publication.predecessor_publication_id,publicationId:k.publication.publication_id},safePreview:k.delta.items.map(e=>`${e.change_kind===`added`?`+`:`~`} ${e.title}\n${e.summary}`).join(` +`)});continue}let o=e.match(/^\s{0,3}#{1,4}\s+(.*)$/);if(o){i();let t=e.trimStart().match(/^#+/)?.[0].length??1;n.push({type:`heading`,level:t,text:o[1].trim()}),a+=1;continue}if(ab.test(e)||ob.test(e)){i();let r=ob.test(e),o=r?ob:ab,s=[];for(;a{let n=`b${t}`;if(e.type===`code`)return(0,B.jsx)(`pre`,{className:`personal-md-pre`,children:(0,B.jsx)(`code`,{children:e.text})},n);if(e.type===`heading`)return(0,B.jsx)(`p`,{className:`personal-md-heading is-h${e.level}`,children:ib(e.text,n)},n);if(e.type===`list`){let t=e.items.map((e,t)=>(0,B.jsx)(`li`,{children:ib(e,`${n}-${t}`)},`${n}-${t}`));return e.ordered?(0,B.jsx)(`ol`,{className:`personal-md-list`,children:t},n):(0,B.jsx)(`ul`,{className:`personal-md-list`,children:t},n)}return(0,B.jsx)(`p`,{children:e.lines.map((e,t)=>(0,B.jsxs)(z.Fragment,{children:[t>0?(0,B.jsx)(`br`,{}):null,ib(e,`${n}-${t}`)]},`${n}-${t}`))},n)})})}function lb({onSelect:e,output:t}){let{t:n}=Ji(),r=t.kind===`report`?xm:bm;return(0,B.jsxs)(`button`,{className:`personal-timeline-row personal-output-row`,"data-output-kind":t.kind,"data-testid":`personal-browse-row`,onClick:e,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-row-icon is-output`,children:(0,B.jsx)(r,{size:18})}),(0,B.jsxs)(`span`,{className:`personal-row-copy`,children:[(0,B.jsxs)(`small`,{children:[t.goalTitle??t.goalId,` · `,t.agentLabel??`LoopX`]}),(0,B.jsx)(`strong`,{children:t.title}),t.summary?(0,B.jsx)(`span`,{children:t.summary}):null,t.report?(0,B.jsxs)(`small`,{children:[n(`files.reportDelta`,{added:t.report.addedCount,changed:t.report.changedCount}),` · `,n(`files.verifiedReport`)]}):null]}),t.createdAt?(0,B.jsx)(`time`,{children:t.createdAt}):null,(0,B.jsx)(sm,{size:17})]})}var ub={completed:`runs.completed`,failed:`runs.failed`,interrupted:`runs.interrupted`,queued:`runs.queued`,running:`runs.running`,waiting:`runs.waiting`};function db({onSelect:e,run:t}){let{t:n}=Ji(),r=t.totalSteps>0?Math.min(100,t.completedSteps/t.totalSteps*100):0;return(0,B.jsxs)(`button`,{"aria-label":`${n(`tasks.viewExecution`)}:${t.title}`,className:`personal-timeline-row personal-run-row`,"data-testid":`personal-browse-row`,onClick:e,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-row-icon is-run`,children:(0,B.jsx)(nm,{size:18})}),(0,B.jsxs)(`span`,{className:`personal-run-identity`,children:[(0,B.jsx)(`small`,{children:t.goalTitle}),(0,B.jsx)(`strong`,{children:t.agentLabel})]}),(0,B.jsxs)(`span`,{className:`personal-row-copy`,children:[(0,B.jsx)(`strong`,{children:t.title}),(0,B.jsx)(`small`,{children:t.latestActivity})]}),(0,B.jsxs)(`span`,{className:`personal-run-progress`,"aria-label":`${t.completedSteps}/${t.totalSteps}`,children:[(0,B.jsxs)(`small`,{children:[t.completedSteps,`/`,t.totalSteps]}),(0,B.jsx)(`i`,{children:(0,B.jsx)(`b`,{style:{width:`${r}%`}})})]}),(0,B.jsxs)(`span`,{className:`personal-row-status is-${t.status}`,children:[t.status===`running`?(0,B.jsx)(km,{className:`personal-spin`,size:14}):null,n(ub[t.status])]}),t.sessionId?(0,B.jsx)(`span`,{className:`personal-run-open-label`,children:n(`tasks.viewExecution`)}):null,(0,B.jsx)(sm,{size:17})]})}function fb({onSelect:e,schedule:t}){let{t:n}=Ji(),r=t.scheduleKind===`heartbeat`;return(0,B.jsxs)(`button`,{"aria-label":`${r?`Heartbeat`:n(`tasks.scheduled`)}:${t.label};${t.status??`active`}`,className:`personal-schedule-row`,onClick:e,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-schedule-icon`,children:r?(0,B.jsx)(Vm,{size:17}):(0,B.jsx)(im,{size:17})}),(0,B.jsxs)(`span`,{className:`personal-schedule-copy`,children:[(0,B.jsx)(`small`,{children:n(r?`schedule.heartbeat`:`schedule.monitor`)}),(0,B.jsx)(`strong`,{children:t.label}),(0,B.jsx)(`p`,{children:t.schedule??n(`schedule.summary`)})]}),(0,B.jsx)(`span`,{className:`personal-schedule-status is-${t.status??`active`}`,children:t.status===`paused`?n(`schedule.paused`):n(`schedule.active`)}),(0,B.jsx)(sm,{size:16})]})}function pb({delivery:e}){let{t}=Ji();if(!e)return null;let n=e.status===`delivered`?e.verification===`reconciled_after_restart`?t(`returnDelivery.reconciled`):t(`returnDelivery.delivered`):e.status===`verification_required`?t(`returnDelivery.verifying`):e.status===`explicit_unverified`?t(`returnDelivery.unverified`):t(`returnDelivery.queued`),r=e.status===`delivered`?`delivered`:e.status===`verification_required`?`verification_required`:e.status===`explicit_unverified`?`explicit_unverified`:`queued`;return(0,B.jsx)(`small`,{className:`personal-return-delivery is-${r}`,role:`status`,children:n})}function mb({items:e,onSelect:t,selectedGoal:n}){let{t:r}=Ji();if(e.length===0)return(0,B.jsxs)(`div`,{className:`personal-timeline-empty`,children:[(0,B.jsx)(`span`,{children:(0,B.jsx)(Qm,{size:20})}),(0,B.jsx)(`strong`,{children:r(n?`timeline.emptyGoal`:`timeline.emptyWorkspace`)}),(0,B.jsx)(`p`,{children:r(n?`timeline.emptyGoalDescription`:`timeline.emptyWorkspaceDescription`)})]});let i=[...e].reverse().find(e=>e.kind===`message`&&e.message.role!==`user`||e.kind===`proposal`&&[`applied`,`stale`,`error`,`gated`].includes(e.proposal.status)||e.kind===`run`&&e.run.status===`completed`),a=i?.kind===`message`?`${i.message.agentLabel??r(`header.manager`)}:${i.message.pending?r(`timeline.pending`):i.message.text}`:i?.kind===`proposal`?`${i.proposal.title}:${i.proposal.status}`:i?.kind===`run`?r(`timeline.runCompleted`,{run:i.run.title}):``,o=e.filter(e=>e.kind===`proposal`&&e.proposal.status===`gated`),s=e.filter(e=>e.kind!==`proposal`),c=e.filter(e=>e.kind===`proposal`&&e.proposal.status!==`gated`);function l(e){return e.kind===`attention`?(0,B.jsx)(nb,{attention:e.attention,onSelect:()=>t({item:e.attention,kind:`attention`})},e.id):e.kind===`run`?(0,B.jsx)(db,{onSelect:()=>t({item:e.run,kind:`run`}),run:e.run},e.id):e.kind===`output`?(0,B.jsx)(lb,{onSelect:()=>t({item:e.output,kind:`output`}),output:e.output},e.id):e.kind===`schedule`?(0,B.jsx)(fb,{onSelect:()=>t({item:e.schedule,kind:`schedule`}),schedule:e.schedule},e.id):e.kind===`proposal`?(0,B.jsxs)(`button`,{className:`personal-proposal-row is-${e.proposal.status}`,onClick:()=>t({item:e.proposal,kind:`proposal`}),type:`button`,children:[(0,B.jsx)(`span`,{children:(0,B.jsx)(Qm,{size:17})}),(0,B.jsxs)(`span`,{children:[(0,B.jsxs)(`small`,{children:[e.proposal.actionKind,` · `,e.proposal.status]}),(0,B.jsx)(`strong`,{children:e.proposal.title}),(0,B.jsx)(`p`,{children:e.proposal.impact})]}),(0,B.jsx)(`b`,{children:e.proposal.status===`gated`&&e.proposal.actionKind!==`operation.execute`?r(`timeline.review`):e.proposal.primaryLabel??r(`timeline.reviewAndConfirm`)})]},e.id):(0,B.jsxs)(`article`,{className:`personal-message is-${e.message.role}`,children:[e.message.role===`user`?null:(0,B.jsx)(`span`,{className:`personal-message-avatar`,children:(0,B.jsx)(nm,{size:17})}),(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:e.message.role===`user`?r(`common.you`):e.message.agentLabel??r(`header.manager`)}),e.message.time?(0,B.jsx)(`time`,{children:e.message.time}):null]}),e.message.attachments?.length?(0,B.jsx)(`div`,{className:`personal-message-images`,children:e.message.attachments.map(e=>(0,B.jsx)(`img`,{alt:e.name,src:e.dataUrl},e.id))}):null,e.message.role===`user`?(0,B.jsx)(`p`,{children:e.message.text}):(0,B.jsx)(cb,{text:e.message.text}),e.message.pending?(0,B.jsx)(`span`,{className:`personal-message-pending`,children:r(`timeline.pending`)}):null,(0,B.jsx)(pb,{delivery:e.message.returnDelivery})]})]},e.id)}return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{"aria-atomic":`true`,"aria-live":`polite`,className:`personal-live-region`,role:`status`,children:a}),(0,B.jsxs)(`div`,{className:`personal-channel-timeline`,children:[s.map(l),o.length?(0,B.jsxs)(`details`,{className:`personal-gated-summary`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(`span`,{children:(0,B.jsx)(Qm,{size:16})}),(0,B.jsx)(`strong`,{children:r(`timeline.waitingConfirmation`)}),(0,B.jsx)(`small`,{children:r(`timeline.gateHistory`,{count:o.length})})]}),(0,B.jsx)(`div`,{children:o.map(l)})]}):null,c.map(l)]})]})}function hb({goal:e}){let{t,locale:n}=Ji(),r=n===`zh-CN`?{checkpoint_satisfied:`检查点满足`,checkpoint_fresh:`检查点有效`,path_outcome_valid:`路径决策有效`,evidence_refs_present:`证据引用齐全`,final_outcome_claim_present:`最终成果声明齐全`,no_reported_outcome_gap:`无已报告成果缺口`}:{checkpoint_satisfied:`Checkpoint satisfied`,checkpoint_fresh:`Checkpoint current`,path_outcome_valid:`Valid path decision`,evidence_refs_present:`Evidence refs present`,final_outcome_claim_present:`Final outcome claim present`,no_reported_outcome_gap:`No reported outcome gap`},i={connected:t(`acceptance.connected`),mapped:t(`acceptance.mapped`),refreshed:t(`acceptance.refreshed`),adapter_inspected:t(`acceptance.inspected`),run_recorded:t(`acceptance.recorded`),reward_judged:t(`acceptance.judged`),operator_approved:t(`acceptance.approved`),controller_ready:t(`acceptance.ready`),attention_queue:t(`acceptance.attentionSource`),agent_vision:t(`acceptance.visionSource`),todo_projection:t(`acceptance.todoSource`),current_run:t(`acceptance.runSource`)},a=e=>i[e]??t(`acceptance.unknown`),o=e.acceptanceObservation,s=e.loadState||!o||o.goal_id!==e.goalId||o.coverage===`unavailable`;return(0,B.jsxs)(`section`,{className:`personal-detail-card personal-goal-acceptance`,"aria-label":t(`acceptance.title`),children:[(0,B.jsxs)(`div`,{className:`personal-detail-card-title`,children:[(0,B.jsx)(`h3`,{children:t(`acceptance.title`)}),(0,B.jsx)(`em`,{children:t(`common.readOnly`)})]}),(0,B.jsx)(`p`,{role:`status`,children:t(s?`acceptance.unavailable`:`acceptance.partial`)}),!s&&o?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`h4`,{children:t(`acceptance.gaps`)}),o.acceptance_gaps.length?o.acceptance_gaps.map((e,i)=>(0,B.jsxs)(`div`,{className:`personal-acceptance-observation`,children:[(0,B.jsx)(`p`,{children:e.reason??t(`acceptance.reasonUnknown`)}),e.resolution_hint?(0,B.jsx)(`p`,{children:e.resolution_hint}):null,e.component_checks?(0,B.jsx)(`div`,{children:Object.entries(e.component_checks).map(([e,t])=>(0,B.jsxs)(`p`,{children:[r[e],`: `,n===`zh-CN`?t?`通过`:`未通过`:t?`Passed`:`Failed`]},e))}):null,(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`common.owner`)}),(0,B.jsx)(`dd`,{children:e.owner??t(`acceptance.unknown`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`acceptance.required`)}),(0,B.jsx)(`dd`,{children:e.evidence_required??t(`acceptance.unknown`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`acceptance.observed`)}),(0,B.jsx)(`dd`,{children:e.observed_at??t(`acceptance.unknown`)})]})]})]},`${e.kind}:${e.owner}:${i}`)):(0,B.jsx)(`p`,{children:t(`acceptance.noGaps`)}),(0,B.jsx)(`h4`,{children:t(`acceptance.guards`)}),o.guards.length?o.guards.map((e,n)=>(0,B.jsxs)(`div`,{className:`personal-acceptance-observation`,children:[(0,B.jsx)(`p`,{children:e.reason??t(`acceptance.reasonUnknown`)}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`common.owner`)}),(0,B.jsx)(`dd`,{children:e.owner??t(`acceptance.unknown`)})]}),e.blocks_agent?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`common.agent`)}),(0,B.jsx)(`dd`,{children:e.blocks_agent})]}):null,e.todo_id?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`common.task`)}),(0,B.jsx)(`dd`,{children:e.todo_id})]}):null,(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`acceptance.required`)}),(0,B.jsx)(`dd`,{children:e.evidence_required??t(`acceptance.unknown`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`acceptance.scope`)}),(0,B.jsx)(`dd`,{children:e.decision_scope??t(`acceptance.unknown`)})]})]})]},`${e.todo_id}:${n}`)):(0,B.jsx)(`p`,{children:t(`acceptance.noGuards`)}),(0,B.jsx)(`h4`,{children:t(`acceptance.next`)}),(0,B.jsx)(`p`,{children:o.next_action??t(`acceptance.unknown`)}),(0,B.jsxs)(`details`,{children:[(0,B.jsxs)(`summary`,{children:[t(`acceptance.historical_progress`),` · `,o.historical_progress.length]}),(0,B.jsx)(`p`,{children:t(`acceptance.historical`)}),o.historical_progress.map(e=>(0,B.jsxs)(`p`,{children:[(0,B.jsx)(`strong`,{children:a(e.kind)}),` · `,e.observed_at??t(`acceptance.unknown`),` `,e.evidence_refs.join(`, `)]},e.kind))]}),o.missing_sources.length?(0,B.jsxs)(`p`,{children:[t(`acceptance.missing`),` `,o.missing_sources.map(a).join(`, `)]}):null,o.truncated?(0,B.jsx)(`p`,{children:t(`acceptance.truncated`)}):null]}):null]})}function gb({item:e,successor:t,onSelect:n}){let{t:r}=Ji(),i=e.details;return(0,B.jsxs)(`section`,{className:`personal-detail-card`,"aria-label":r(`attentionDetail.title`),children:[(0,B.jsx)(`h3`,{children:r(`attentionDetail.title`)}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`attentionDetail.request`)}),(0,B.jsx)(`dd`,{children:r(i?.interaction===`decision`?`attentionDetail.decision`:`attentionDetail.unknownRequest`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`common.status`)}),(0,B.jsx)(`dd`,{children:r(`attentionDetail.${i?.lifecycle??`unknown`}`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`drawer.reason`)}),(0,B.jsx)(`dd`,{children:i?.reason??e.explanation??r(`attentionDetail.unknownReason`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Todo`}),(0,B.jsx)(`dd`,{children:e.todoId})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`attentionDetail.targetTodo`)}),(0,B.jsx)(`dd`,{children:i?.unblocksTodoId??r(`attentionDetail.notProvided`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`attentionDetail.targetAgent`)}),(0,B.jsx)(`dd`,{children:i?.blocksAgent??r(`attentionDetail.notProvided`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`attentionDetail.scope`)}),(0,B.jsx)(`dd`,{children:i?.decisionScope?`${i.decisionScope.kind} · ${i.decisionScope.granularity} · ${i.decisionScope.scopeKey}`:r(`attentionDetail.notProvided`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`drawer.evidence`)}),(0,B.jsx)(`dd`,{children:i?.evidence??e.evidence??r(`drawer.decisionDefaultEvidence`)})]})]}),i?.supersededBy?(0,B.jsxs)(`p`,{children:[r(`attentionDetail.replacement`),`: `,i.supersededBy]}):null,t&&n?(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:()=>n(t),type:`button`,children:r(`attentionDetail.openReplacement`)}):null,(0,B.jsx)(`p`,{children:r(`attentionDetail.boundary`)})]})}function _b({proposal:e,t}){let n=e.teamPlanOutcome?.kind===`already_present`;return(0,B.jsxs)(`section`,{className:`personal-proposal-card personal-team-plan-result`,children:[(0,B.jsx)(`h3`,{children:Wy(e.teamPlanOutcome??null,t)}),(0,B.jsxs)(`dl`,{className:`personal-team-plan-assignments`,children:[e.teamPlanAssignments?.map(e=>(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:e.agentId||e.laneId}),(0,B.jsx)(`dd`,{children:e.task})]},e.laneId)),e.teamPlanGapLanes?.map(e=>(0,B.jsxs)(`div`,{className:`is-pending`,children:[(0,B.jsx)(`dt`,{children:e.agentId||e.laneId}),(0,B.jsxs)(`dd`,{children:[e.task||e.laneId,(0,B.jsx)(`br`,{}),(0,B.jsxs)(`small`,{children:[t(`proposal.teamPlan.pending`),` · `,Hy(e.reasonCode,t)]})]})]},e.laneId))]}),(0,B.jsx)(`p`,{children:t(n?`proposal.teamPlan.recoveredHint`:`proposal.teamPlan.assignedHint`)}),(0,B.jsxs)(`details`,{children:[(0,B.jsx)(`summary`,{children:t(`proposal.teamPlan.originalPlan`)}),(0,B.jsx)(`dl`,{children:e.fields.map(e=>(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:e.label}),(0,B.jsx)(`dd`,{children:e.value})]},e.key))})]})]})}function vb(e){return e.replace(/\s+/gu,` `).trim()}function yb(e,t){let n=RegExp(`(?:不要|不需要|无需|禁止|别|暂不|do not\\b|don't\\b|without\\b).{0,10}(?:${t.source})`,`iu`),r=RegExp(`(?:${t.source}).{0,10}(?:不要|不需要|无需|禁止|关闭)`,`iu`),i=RegExp(`disable\\b.{0,10}(?:${t.source})|(?:turn|switch|set)\\b.{0,10}(?:${t.source}).{0,10}\\boff\\b|(?:${t.source})\\s+(?:is\\s+)?disabled\\b`,`iu`);return n.test(e)||r.test(e)||i.test(e)}function bb(e){return/(我现在该做什么|下一步|哪些\s*Goal\s*在等我|需要我|谁在等我|Agent\s*在做什么|当前进度|总结(?:今天)?进展)/iu.test(e)}function xb(e){let t=/(怎么|如何|为什么|给.*建议|分析一下|解释|只读)/u.test(e),n=/(解决一下|修复一下|处理一下|执行一下|改一下|跑(?:一下)?测试|rebase|push|提交|推送)/iu.test(e);return!t&&n&&/(帮我|请|给我|直接|现在|开始|bytedcli|codebase|git|rebase|push|提交|推送)/iu.test(e)}function Sb(e){return vb(e).toLowerCase().match(/(?:^|[\s,,;;:((:]|到|至)(?todo_done:todo_[a-z0-9_-]{3,64}|pr_merged:(?:(?:[a-z0-9_.-]{1,80})\/(?:[a-z0-9_.-]{1,100}))?#[1-9][0-9]{0,8}|capacity_available:[a-z][a-z0-9_:-]{0,63}|resume_at:[1-9][0-9]{3}-[0-9]{2}-[0-9]{2}t[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\.[0-9]{1,3})?(?:z|[+-][0-9]{2}:[0-9]{2}))(?=$|[\s,,。;;))])/iu)?.groups?.condition??null}function Cb(e,t){let n=vb(e),r=[],i=t.agents.find(e=>{let t=n.toLowerCase();return t.includes(e.agentId.toLowerCase())||t.includes(e.label.toLowerCase())}),a=t.todos.find(e=>n.includes(e.todoId)||n.includes(e.text)),o=/(刚刚|已经|已)(?:经)?\s*(新增|创建|添加)(?:的)?\s*(todo|待办|任务)/iu.test(n),s=!!t.goalId&&!yb(n,/heartbeat|心跳/iu)&&/(heartbeat|心跳|每天推进|持续推进|daily progress)/iu.test(n);if(!t.goalId&&!yb(n,/goal|目标/iu)&&/(创建|新建|设置|create|start|set up).{0,24}(goal|目标)/iu.test(n)&&r.push({actionKind:`goal.create`,confidence:.97,normalizedParameters:{heartbeat_enabled:!yb(n,/heartbeat|心跳/iu)&&/(heartbeat|心跳|每天推进|持续推进|daily progress)/iu.test(n)}}),t.goalId&&s&&r.push({actionKind:`heartbeat.bind`,confidence:.96,normalizedParameters:{goal_id:t.goalId}}),t.goalId&&!s&&!yb(n,/定时|监控|监测|持续观察|scheduled check|monitor/iu)&&/(定时|监控|监测|每.{0,8}(分钟|小时|天)|持续观察|scheduled check|monitor|every.{0,12}(minute|hour|day)|daily)/iu.test(n)&&r.push({actionKind:`monitor.create`,confidence:.94,normalizedParameters:{goal_id:t.goalId}}),t.goalId&&i&&!yb(n,/绑定|负责|接管|管理/iu)&&/((让|交给).{0,20}(管理|负责|接管).{0,8}(goal|目标)|(绑定).{0,12}(goal|目标)|(goal|目标).{0,12}(交给|绑定|负责|接管))/iu.test(n)&&r.push({actionKind:`agent.bind`,confidence:.96,normalizedParameters:{agent_id:i.agentId,goal_id:t.goalId}}),t.goalId&&!o&&!yb(n,RegExp(`todo|待办|任务`,`iu`))&&/(创建|新建|新增|添加|加一个|记一个).{0,16}(todo|待办|任务)|(todo|待办|任务).{0,12}(创建|新建|新增|添加)|(?:create|add)(?:\s+(?:a|an|new))?\s+(?:todo|task)|(?:todo|task).{0,12}(?:create|add)/iu.test(n)&&r.push({actionKind:`todo.create`,confidence:.94,normalizedParameters:{goal_id:t.goalId}}),t.goalId&&xb(n)&&r.push({actionKind:`todo.create`,confidence:.9,normalizedParameters:{goal_id:t.goalId,start_execution:!0}}),t.goalId&&a){let e=!yb(n,/完成|做完|关闭/u)&&/完成|做完|关闭/u.test(n)?`complete`:!yb(n,/阻塞|卡住/u)&&/阻塞|卡住/u.test(n)?`block`:!yb(n,/暂缓|稍后|推迟/u)&&/暂缓|稍后|推迟/u.test(n)?`defer`:i&&!yb(n,/交给|分配给|改派/u)&&/交给|分配给|改派/u.test(n)?`reassign`:null;if(e){let i=e===`defer`?Sb(n):null;if(e===`defer`&&!i)return{actionKind:`todo.update`,confidence:.97,missingFields:[`resume_when`],normalizedParameters:{goal_id:t.goalId,operation:e,todo_id:a.todoId},route:`clarify`};r.push({actionKind:`todo.update`,confidence:.97,normalizedParameters:{goal_id:t.goalId,operation:e,...i?{resume_when:i}:{},todo_id:a.todoId}})}}let c=[...new Map(r.map(e=>[e.actionKind,e])).values()];return c.length>1?{actionKind:null,confidence:.4,missingFields:[`single_intent`],normalizedParameters:{},route:`clarify`}:c.length===1?{...c[0],missingFields:[],route:`typed_action`}:!t.goalId&&bb(n)?{actionKind:null,confidence:.98,missingFields:[],normalizedParameters:{},route:`projection`}:{actionKind:null,confidence:.75,missingFields:[],normalizedParameters:{},route:`agent_chat`}}function wb(e,t,n){if(!e)return{};if(!t.trim())return{modelConfig:null};let r={model:t.trim()};return n&&(r.reasoning_effort=n),{modelConfig:r}}var Tb=[`a[href]`,`button:not([disabled])`,`textarea:not([disabled])`,`select:not([disabled])`,`input:not([disabled])`,`[tabindex]:not([tabindex='-1'])`].join(`,`),Eb=[{key:`drawer.taskBlock`,operation:`block`},{key:`drawer.taskSuccessor`,operation:`successor_create`}],Db=[{key:`drawer.decisionReject`,resolution:`reject`},{key:`drawer.decisionDefer`,resolution:`defer`}],Ob=Array.from({length:32},(e,t)=>t+1),kb=/^[a-z][a-z0-9_.-]{0,63}$/u;function Ab(e){let t=String(e??``).trim().toLowerCase();return kb.test(t)?t:null}function jb(e,t){return e.enabled===t.enabled&&e.maxChildren===t.maxChildren&&JSON.stringify(e.modelConfig??null)===JSON.stringify(t.modelConfig??null)&&[...e.allowedDomains].sort((e,t)=>e.localeCompare(t)).join(`\0`)===[...t.allowedDomains].sort((e,t)=>e.localeCompare(t)).join(`\0`)}function Mb({agents:e,attentionHistory:t=[],onSelectAttention:n,callbacks:r,goalNotifications:i=[],goals:a=[],inspectorExpanded:o=!1,larkConnections:s=[],onClose:c,onToggleInspectorSize:l,readOnly:u=!1,runs:d=[],selection:f}){let{locale:p,t:m}=Ji(),[h,g]=(0,z.useState)(``),[_,v]=(0,z.useState)(!1),[y,b]=(0,z.useState)(`idle`),[x,S]=(0,z.useState)(`record`),[C,w]=(0,z.useState)([]),[T,E]=(0,z.useState)(null),[D,O]=(0,z.useState)(2),[k,ee]=(0,z.useState)(``),[te,A]=(0,z.useState)(``),[j,M]=(0,z.useState)(`idle`),[ne,N]=(0,z.useState)(null),[P,re]=(0,z.useState)(null),ie=(0,z.useRef)(null),ae=(0,z.useRef)(null),[F,oe]=(0,z.useState)(e.find(e=>e.available)?.agentId??`codex`),[I,se]=(0,z.useState)(``),L=(0,z.useRef)(null),ce=(0,z.useRef)(null),le=(0,z.useRef)(null),ue=(0,z.useRef)(null),de=f.kind===`run`?`run:${f.item.runId}`:f.kind===`proposal`?`proposal:${f.item.previewId}`:f.kind===`todo`?`todo:${f.item.todoId}`:f.kind===`attention`?`attention:${f.item.todoId}`:f.kind===`output`?`output:${f.item.outputId}`:f.kind===`schedule`?`schedule:${f.item.scheduleId}`:`goal:${f.item.goalId}`;(0,z.useEffect)(()=>{b(`idle`),v(!1),S(`record`),se(``);let e=f.kind===`goal`?f.item.subagentExecution:void 0;w(e?.allowedDomains??[]),ee(e?.modelConfig?.model??``),A(e?.modelConfig?.reasoning_effort??``),O(e?.maxChildren?Math.min(e.maxChildren,32):2),E(null),M(`idle`),N(null),re(null),ie.current=e??null,ae.current=null},[de]);let fe=f.kind===`goal`?f.item.subagentExecution:void 0;(0,z.useEffect)(()=>{let e=ie.current,t=fe?!e||!jb(e,fe):e!==null;if(ie.current=fe??null,!P){t&&fe&&(w(fe.allowedDomains),ee(fe.modelConfig?.model??``),A(fe.modelConfig?.reasoning_effort??``),O(fe.maxChildren||2),E(null),M(`idle`),N(null));return}let n=ae.current;(!fe||jb(P,fe)||n&&!jb(n,fe))&&(fe&&(w(fe.allowedDomains),ee(fe.modelConfig?.model??``),A(fe.modelConfig?.reasoning_effort??``),O(fe.maxChildren||2)),ae.current=null,re(null))},[fe,P]),(0,z.useEffect)(()=>{let e=document.activeElement;e instanceof HTMLElement&&!ce.current?.contains(e)&&(le.current=e);let t=window.requestAnimationFrame(()=>ue.current?.focus());return()=>window.cancelAnimationFrame(t)},[de]);let pe=(0,z.useCallback)(()=>{let e=le.current;c(),window.requestAnimationFrame(()=>e?.focus())},[c]);(0,z.useEffect)(()=>{function e(e){if(e.key===`Escape`){e.preventDefault(),pe();return}if(e.key===`Tab`&&f.kind!==`todo`){let t=Array.from(ce.current?.querySelectorAll(Tb)??[]).filter(e=>!e.hasAttribute(`disabled`)&&e.getAttribute(`aria-hidden`)!==`true`);if(t.length===0)return;let n=t[0],r=t[t.length-1];e.shiftKey&&document.activeElement===n?(e.preventDefault(),r.focus()):!e.shiftKey&&document.activeElement===r&&(e.preventDefault(),n.focus())}}return document.addEventListener(`keydown`,e),()=>{document.removeEventListener(`keydown`,e)}},[pe,f.kind]);let me=f.kind===`attention`?m(`drawer.titleAttention`):f.kind===`todo`?m(`drawer.taskDetails`):f.kind===`run`?m(`drawer.runDetails`):f.kind===`output`?m(`drawer.titleOutput`):f.kind===`proposal`&&f.item.actionKind===`team.plan`&&f.item.status===`applied`?m(`proposal.teamPlan.resultTitle`):f.kind===`proposal`?m(f.item.status===`applied`?`drawer.titleProposalApplied`:`drawer.titleProposalConfirm`):f.kind===`schedule`?f.item.scheduleKind===`heartbeat`?`Heartbeat`:m(`drawer.titleSchedule`):m(`drawer.goalDetails`),he=f.kind===`proposal`?f.item.goalId??`manager`:f.item.goalId,ge=f.kind===`attention`?f.item.goalTitle??m(`drawer.currentGoal`):f.kind===`todo`||f.kind===`run`?f.item.goalTitle:f.kind===`output`?f.item.goalTitle??m(`drawer.currentGoal`):f.kind===`goal`?f.item.title:f.kind===`schedule`?m(`drawer.goalAutoRun`):f.kind===`proposal`&&f.item.status===`applied`&&f.item.actionKind===`team.plan`?f.item.goalId??m(`drawer.currentGoal`):f.item.goalId?m(`drawer.goalChanges`):m(`drawer.managerChanges`),_e=f.kind===`goal`?d.find(e=>e.goalId===f.item.goalId&&!!e.sessionId)??d.find(e=>e.goalId===f.item.goalId):null,ve=f.kind===`run`&&(f.item.completedSteps>0||!!f.item.latestActivity||!!f.item.outputs?.length),ye=f.kind===`attention`?Zi(f.item.updatedAt,m):null,be=Sb(I);async function xe(){f.kind!==`run`||!h.trim()||(await r.onCorrectRun?.(f.item,h.trim()),g(``))}async function Se(e,t,n,i){if(t===`successor_create`){await r.onPreviewAction?.({actionKind:`todo.create`,context:{goal_id:e.goalId,kind:`todo`,todo_id:e.todoId},idempotencyKey:`workspace-todo-successor-${e.todoId}-${Date.now().toString(36)}`,normalizedParameters:{goal_id:e.goalId,text:m(`drawer.taskSuccessorText`,{task:e.text})},summary:m(`drawer.taskSuccessorSummary`,{task:e.text})});return}await r.onPreviewAction?.({actionKind:`todo.update`,context:{goal_id:e.goalId,kind:`todo`,todo_id:e.todoId},idempotencyKey:`workspace-todo-${e.todoId}-${t}-${Date.now().toString(36)}`,normalizedParameters:{agent_id:e.claimedBy??F,goal_id:e.goalId,operation:t,...t===`block`?{note:m(`drawer.taskSuccessorNote`)}:{},...t===`defer`&&i?{resume_when:i}:{},todo_id:e.todoId},summary:`${n}:${e.text}`})}async function Ce(e,t,n){u||!Xd(e)||await r.onPreviewAction?.({actionKind:`gate.resolve`,context:{goal_id:e.goalId,kind:`todo`,todo_id:e.todoId},idempotencyKey:`workspace-decision-${e.todoId}-${t}-${Date.now().toString(36)}`,normalizedParameters:{goal_id:e.goalId,decision:t,todo_id:e.todoId},summary:`${n}:${e.text}`})}let we=f.kind===`goal`?P??f.item.subagentExecution??{allowedDomains:[],domainCandidates:[],enabled:!1,maxChildren:0}:{allowedDomains:[],domainCandidates:[],enabled:!1,maxChildren:0},Te=j===`previewing`||j===`applying`,Ee=(()=>{if(f.kind!==`goal`)return[];let e=new Map;for(let t of we.allowedDomains){let n=Ab(t);n&&e.set(n,{matchingTodoCount:0,value:n})}if(we.domainCandidates)for(let t of we.domainCandidates){let n=Ab(t.domain);if(!n)continue;let r=e.get(n);e.set(n,{matchingTodoCount:(r?.matchingTodoCount??0)+t.matchingTodoCount,value:n})}else for(let t of f.item.agentTodos){if(t.done||t.taskClass!==`advancement_task`)continue;let n=Ab(t.taskDomain);if(!n)continue;let r=e.get(n);e.set(n,{matchingTodoCount:(r?.matchingTodoCount??0)+1,value:n})}return[...e.values()]})();function De(){w(we.allowedDomains),ee(we.modelConfig?.model??``),A(we.modelConfig?.reasoning_effort??``),O(we.maxChildren||2),E(null),M(`idle`),N(null)}function Oe(){let e=[...new Set(C.map(e=>Ab(e)))];return e.every(e=>!!e)?e:null}function ke(e,t){w(n=>t?[...n,e].filter((e,t,n)=>n.indexOf(e)===t):n.filter(t=>t!==e)),N(null),M(`idle`),E(null)}async function Ae(e,t=e){if(f.kind!==`goal`||!r.onPreviewGoalSubagentConfiguration)return;let n=e?Oe():[];if(t&&!k.trim()&&te){M(`error`),E(m(`drawer.subagentModelRequired`));return}if(e&&!n){M(`error`),E(m(`drawer.subagentDomainInvalid`)),N(null);return}let i={allowedDomains:n??[],enabled:e,goalId:f.item.goalId,maxChildren:e?D:0,...wb(t,k,te)};M(`previewing`),E(m(`drawer.subagentPreviewing`)),N(null);try{let e=await r.onPreviewGoalSubagentConfiguration(i);if(!e.changed){ae.current=fe??null,re({...e.configuration,domainCandidates:we.domainCandidates}),w(e.configuration.allowedDomains),ee(e.configuration.modelConfig?.model??``),A(e.configuration.modelConfig?.reasoning_effort??``),O(e.configuration.maxChildren||2),M(`success`),E(m(`drawer.subagentNoChange`));return}N({...i,changed:e.changed,previewId:e.previewId}),M(`ready`),E(m(`drawer.subagentPreviewReady`))}catch(e){M(`error`),E(e instanceof Error?e.message:m(`drawer.subagentPreviewFailed`))}}async function R(){if(!(!ne||!r.onApplyGoalSubagentConfiguration)){M(`applying`),E(m(`drawer.subagentApplying`));try{let e=await r.onApplyGoalSubagentConfiguration({allowedDomains:ne.allowedDomains,enabled:ne.enabled,goalId:ne.goalId,maxChildren:ne.maxChildren,modelConfig:ne.modelConfig,previewId:ne.previewId});ae.current=fe??null,re({...e,domainCandidates:we.domainCandidates}),w(e.allowedDomains),ee(e.modelConfig?.model??``),A(e.modelConfig?.reasoning_effort??``),O(e.maxChildren||2),M(`success`),E(m(`drawer.subagentApplied`)),N(null);try{await r.onRefresh?.()}catch{M(`warning`),E(m(`drawer.subagentAppliedRefreshFailed`))}}catch(e){M(`error`),E(e instanceof Error?e.message:m(`drawer.subagentApplyFailed`))}}}return(0,B.jsxs)(`div`,{"aria-labelledby":`personal-drawer-title`,"aria-modal":f.kind===`todo`?void 0:`true`,className:`personal-context-drawer`,"data-context-kind":f.kind,ref:ce,role:`dialog`,children:[(0,B.jsxs)(`header`,{className:`personal-drawer-header${f.kind===`todo`?` is-task-inspector`:``}`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`h2`,{id:`personal-drawer-title`,ref:ue,tabIndex:-1,children:me}),(0,B.jsx)(`p`,{children:ge})]}),(0,B.jsxs)(`div`,{className:`personal-drawer-header-actions`,children:[f.kind===`todo`&&l?(0,B.jsx)(`button`,{"aria-label":m(o?`drawer.inspectorHalf`:`drawer.inspectorFull`),className:`personal-icon-button personal-inspector-size`,onClick:l,title:m(o?`drawer.inspectorHalfView`:`drawer.inspectorFullView`),type:`button`,children:o?(0,B.jsx)(Pm,{size:17}):(0,B.jsx)(Am,{size:17})}):null,(0,B.jsxs)(`button`,{"aria-label":m(`drawer.closeDetail`,{context:ge}),className:`personal-icon-button personal-drawer-close`,onClick:pe,ref:L,type:`button`,children:[(0,B.jsx)(Xp,{className:`personal-mobile-back`,size:18}),(0,B.jsx)(ah,{className:`personal-desktop-close`,size:18})]})]})]}),(0,B.jsxs)(`div`,{className:`personal-drawer-body`,children:[f.kind===`attention`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-detail-card is-attention`,children:[(0,B.jsx)(`small`,{children:f.item.blocking?m(`drawer.attentionBlocking`):m(`drawer.attentionWaiting`)}),(0,B.jsx)(`h3`,{children:f.item.text}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Goal`}),(0,B.jsx)(`dd`,{children:f.item.goalTitle??f.item.goalId})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.priority`)}),(0,B.jsx)(`dd`,{children:f.item.priority??`medium`})]}),ye?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`common.waiting`)}),(0,B.jsx)(`dd`,{children:m(`tasks.waitingAge`,{age:ye})})]}):null]})]}),(0,B.jsx)(gb,{item:f.item,onSelect:n,successor:Yd(f.item,t)}),!u&&Xd(f.item)?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>void Ce(f.item,`approve`,m(`common.confirm`)),type:`button`,children:[(0,B.jsx)(am,{size:17}),m(`drawer.decisionReview`)]}),(0,B.jsxs)(`details`,{className:`personal-compact-menu`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(gm,{size:17}),m(`drawer.decisionMore`)]}),(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`button`,{onClick:()=>void r.onExplainDecision?.(f.item),type:`button`,children:[(0,B.jsx)(Mm,{size:16}),m(`drawer.explainDecision`)]}),Db.map(e=>(0,B.jsx)(`button`,{onClick:()=>void Ce(f.item,e.resolution,m(e.key)),type:`button`,children:m(e.key)},e.resolution))]})]})]}):null]}):null,f.kind===`todo`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-task-inspector-summary`,children:[(0,B.jsxs)(`div`,{className:`personal-task-inspector-status`,children:[(0,B.jsxs)(`span`,{className:f.item.done?`is-done`:f.item.status===`blocked`?`is-blocked`:`is-open`,children:[(0,B.jsx)(`i`,{}),f.item.done?m(`drawer.taskStatusCompleted`):f.item.status===`deferred`?m(`drawer.taskStatusDeferred`):f.item.status===`blocked`?m(`drawer.taskStatusBlocked`):m(`drawer.taskStatusOpen`)]}),f.item.priority?(0,B.jsx)(`span`,{children:f.item.priority}):null,(0,B.jsx)(`span`,{children:f.item.taskClass===`advancement_task`?m(`drawer.taskAdvancement`):f.item.taskClass??m(`drawer.taskOrdinary`)})]}),(0,B.jsx)(`h3`,{children:f.item.text})]}),(0,B.jsxs)(`section`,{"aria-label":m(`drawer.taskInfo`),className:`personal-task-inspector-fields`,children:[(0,B.jsx)(`h4`,{children:m(`drawer.taskInfo`)}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Goal`}),(0,B.jsx)(`dd`,{children:f.item.goalTitle})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`common.owner`)}),(0,B.jsx)(`dd`,{children:f.item.ownerLabel??f.item.claimedBy??m(`drawer.notAssigned`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`common.status`)}),(0,B.jsx)(`dd`,{children:f.item.done?m(`drawer.taskStatusCompleted`):f.item.status===`deferred`?m(`drawer.taskStatusDeferred`):f.item.status===`blocked`?m(`drawer.taskStatusBlocked`):m(`drawer.taskStatusOpen`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.priority`)}),(0,B.jsx)(`dd`,{children:f.item.priority??m(`drawer.notSet`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.dependencies`)}),(0,B.jsx)(`dd`,{children:f.item.dependencies?.join(` · `)||m(`common.none`)})]}),f.item.status===`deferred`||f.item.resumeWhen?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.resumeWhen`)}),(0,B.jsx)(`dd`,{children:f.item.resumeWhen||m(`drawer.notSet`)})]}):null,f.item.resumeWhen?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.resumeState`)}),(0,B.jsx)(`dd`,{children:f.item.resumeReady?m(`drawer.resumeReady`):m(`drawer.resumePending`)})]}):null,f.item.resumeReceiptId?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.resumeReceipt`)}),(0,B.jsx)(`dd`,{children:f.item.resumeReceiptId})]}):null,(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.nextTransition`)}),(0,B.jsx)(`dd`,{children:f.item.nextTransition??(f.item.done?m(`drawer.taskNextCompleted`):f.item.resumeReady?m(`drawer.taskNextResumeReady`):f.item.status===`deferred`?m(`drawer.taskNextDeferred`):m(`drawer.taskNextOpen`))})]})]})]}),!u&&!f.item.done?(0,B.jsxs)(`div`,{className:`personal-task-inspector-actions`,"aria-label":m(`drawer.taskActions`),children:[(0,B.jsxs)(`details`,{className:`personal-task-management`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(gm,{size:16}),m(`drawer.taskManage`)]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:m(`drawer.reassign`)}),(0,B.jsxs)(`label`,{className:`personal-inline-agent-select`,children:[m(`drawer.reassign`),(0,B.jsx)(`select`,{"aria-label":m(`drawer.reassign`),onChange:e=>oe(e.target.value),value:F,children:e.filter(e=>e.available).map(e=>(0,B.jsx)(`option`,{value:e.agentId,children:e.label},e.agentId))}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onPreviewAction?.({actionKind:`todo.update`,context:{goal_id:f.item.goalId,kind:`todo`,todo_id:f.item.todoId},idempotencyKey:`workspace-todo-${f.item.todoId}-reassign-${F}-${Date.now().toString(36)}`,normalizedParameters:{agent_id:F,goal_id:f.item.goalId,operation:`reassign`,todo_id:f.item.todoId},summary:m(`drawer.reassignSummary`,{task:f.item.text})}),type:`button`,children:m(`timeline.review`)})]}),(0,B.jsx)(`strong`,{children:m(`drawer.taskDeferUntil`)}),(0,B.jsxs)(`label`,{className:`personal-inline-agent-select personal-inline-resume-when`,children:[m(`drawer.taskDeferUntil`),(0,B.jsx)(`input`,{"aria-label":m(`drawer.taskDeferCondition`),"aria-invalid":!!I.trim()&&!be,onChange:e=>se(e.target.value),placeholder:m(`drawer.taskDeferPlaceholder`),value:I}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,disabled:!be,onClick:()=>void Se(f.item,`defer`,m(`drawer.taskDefer`),be??void 0),type:`button`,children:m(`drawer.taskDeferReview`)}),(0,B.jsx)(`small`,{children:I.trim()&&!be?m(`drawer.taskDeferInvalid`):m(`drawer.taskDeferSupported`)})]}),(0,B.jsx)(`div`,{className:`personal-task-management-secondary`,children:Eb.map(e=>(0,B.jsx)(`button`,{onClick:()=>void Se(f.item,e.operation,m(e.key)),type:`button`,children:m(e.key)},e.operation))})]})]}),(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>void Se(f.item,`complete`,m(`drawer.taskComplete`)),type:`button`,children:[(0,B.jsx)(am,{size:17}),m(`drawer.taskComplete`)]})]}):null,f.item.done?(0,B.jsxs)(`div`,{className:`personal-task-completed-note`,children:[(0,B.jsx)(am,{size:16}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:m(`drawer.taskCompletedTitle`)}),(0,B.jsx)(`small`,{children:m(`drawer.taskCompletedNote`)})]})]}):null]}):null,f.kind===`goal`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-detail-card`,children:[(0,B.jsx)(`small`,{children:Yi(f.item.state,p)}),(0,B.jsx)(`h3`,{children:f.item.title}),(0,B.jsx)(`p`,{children:f.item.agentSentence}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.tokens`)}),(0,B.jsxs)(`dd`,{children:[Zy(f.item.usage?.tokens24h,m(`drawer.usageNotMeasured`),Jy),` / `,Zy(f.item.usage?.tokens7d,m(`drawer.usageNotMeasured`),Jy)]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.cost`)}),(0,B.jsxs)(`dd`,{children:[Zy(f.item.usage?.costUsd24h,m(`drawer.usageNotMeasured`),Yy),` / `,Zy(f.item.usage?.costUsd7d,m(`drawer.usageNotMeasured`),Yy)]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.duration`)}),(0,B.jsxs)(`dd`,{children:[Zy(f.item.usage?.durationMs24h,m(`drawer.usageNotMeasured`),Xy),` / `,Zy(f.item.usage?.durationMs7d,m(`drawer.usageNotMeasured`),Xy)]})]})]})]}),(0,B.jsx)(hb,{goal:f.item}),(()=>{let e=i.find(e=>e.goalId===f.item.goalId),t=s.find(e=>e.goal_id===f.item.goalId);return(0,B.jsxs)(B.Fragment,{children:[f.item.repository?(0,B.jsxs)(`section`,{className:`personal-detail-card personal-goal-repository`,children:[(0,B.jsxs)(`div`,{className:`personal-detail-card-title`,children:[(0,B.jsx)(`small`,{children:m(`drawer.repository`)}),(0,B.jsx)(`em`,{children:m(`common.readOnly`)})]}),(0,B.jsxs)(`h3`,{children:[(0,B.jsx)(Sm,{size:16}),f.item.repository.label]}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.branch`)}),(0,B.jsx)(`dd`,{children:f.item.repository.branch||`detached`})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Role`}),(0,B.jsx)(`dd`,{children:m(`drawer.repositoryRole`)})]})]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>{let e=navigator.clipboard?.writeText(f.item.repository?.identity??``);if(!e){b(`error`);return}e.then(()=>b(`copied`)).catch(()=>b(`error`))},type:`button`,children:[(0,B.jsx)(pm,{size:15}),m(y===`copied`?`drawer.copyRepositoryDone`:`drawer.copyRepository`)]}),y===`error`?(0,B.jsx)(`p`,{className:`personal-copy-feedback is-error`,role:`status`,children:m(`drawer.copyRepositoryError`)}):y===`copied`?(0,B.jsx)(`p`,{className:`personal-copy-feedback`,role:`status`,children:m(`drawer.copyRepositorySuccess`)}):null]}):null,u?(0,B.jsxs)(`section`,{className:`personal-detail-card personal-goal-notification`,children:[(0,B.jsx)(`small`,{children:m(`drawer.larkConnection`)}),(0,B.jsx)(`h3`,{children:m(`drawer.remoteDetailsUnavailable`)}),(0,B.jsx)(`p`,{children:m(`drawer.remoteDetailsDescription`)})]}):(0,B.jsxs)(`section`,{className:`personal-detail-card personal-goal-notification`,children:[(0,B.jsx)(`small`,{children:m(`drawer.larkConnection`)}),t?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`h3`,{children:[t.app_label,(0,B.jsx)(`span`,{className:`personal-connection-status`,children:m(`drawer.connected`)})]}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.group`)}),(0,B.jsx)(`dd`,{children:t.chat_name})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.topic`)}),(0,B.jsxs)(`dd`,{children:[`# `,t.topic_name]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.trigger`)}),(0,B.jsx)(`dd`,{children:t.incoming_mode===`mentions`?m(`lark.someoneMentions`):m(`lark.allMessages`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.replyMode`)}),(0,B.jsx)(`dd`,{children:m(`lark.topicReply`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.autoNotify`)}),(0,B.jsx)(`dd`,{children:e?.humanGateAutoNotifyEnabled?m(`common.on`):m(`common.off`)})]}),e?.lastNotifiedAt?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.lastNotification`)}),(0,B.jsx)(`dd`,{children:e.lastNotifiedAt})]}):null]})]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`h3`,{children:m(`drawer.larkNotConfigured`)}),(0,B.jsx)(`p`,{children:m(`drawer.larkNotConfiguredDescription`)})]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>r.onOpenNotificationSettings?.(f.item.goalId),type:`button`,children:[(0,B.jsx)(tm,{size:16}),m(t?`drawer.larkConfigure`:`drawer.larkConnect`)]})]})]})})(),(0,B.jsxs)(`section`,{className:`personal-detail-card personal-goal-session`,children:[(0,B.jsx)(`small`,{children:m(`drawer.runDetails`)}),_e?.sessionId?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`h3`,{children:Xi(_e.sessionStatus??_e.status,m)}),(0,B.jsx)(`p`,{children:_e.title}),r.onOpenRunSession?(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>void r.onOpenRunSession?.(_e),type:`button`,children:[(0,B.jsx)(zm,{size:16}),m(`drawer.runLatest`)]}):null]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`h3`,{children:m(`drawer.noRun`)}),(0,B.jsx)(`p`,{children:m(`drawer.noRunDescription`)})]})]}),u?null:(0,B.jsxs)(`div`,{className:`personal-drawer-action-grid`,children:[(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>r.onRequestScheduleConfig?.(`heartbeat`,f.item.goalId),type:`button`,children:[(0,B.jsx)(Vm,{size:16}),m(`drawer.setupHeartbeat`)]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>r.onRequestScheduleConfig?.(`monitor`,f.item.goalId),type:`button`,children:[(0,B.jsx)(im,{size:16}),m(`drawer.scheduleAdd`)]})]}),f.item.subagentExecution?(0,B.jsxs)(`section`,{className:`personal-detail-card personal-goal-subagents`,children:[(0,B.jsxs)(`div`,{className:`personal-subagent-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`small`,{children:m(`drawer.subagentLabel`)}),(0,B.jsxs)(`h3`,{children:[(0,B.jsx)(nm,{size:16}),m(`drawer.subagentTitle`)]})]}),(0,B.jsxs)(`button`,{"aria-checked":we.enabled,"aria-label":m(ne&&j===`ready`?`drawer.subagentPending`:we.enabled?`drawer.subagentDisable`:`drawer.subagentEnable`),className:`personal-subagent-switch`,"data-pending":ne&&j===`ready`?`true`:void 0,disabled:u||Te||!!ne||!r.onPreviewGoalSubagentConfiguration,onClick:()=>void Ae(!we.enabled),role:`switch`,type:`button`,children:[(0,B.jsx)(`span`,{}),m(ne&&j===`ready`?`drawer.subagentPending`:we.enabled?`common.on`:`common.off`)]})]}),(0,B.jsx)(`p`,{children:m(`drawer.subagentDescription`)}),ne&&j===`ready`?(0,B.jsxs)(`div`,{className:`personal-subagent-preview`,children:[(0,B.jsx)(`strong`,{children:m(ne.enabled?`drawer.subagentConfirmEnable`:`drawer.subagentConfirmDisable`)}),(0,B.jsx)(`p`,{children:ne.enabled?m(`drawer.subagentPreviewSummary`,{count:ne.maxChildren,domains:ne.allowedDomains.join(` · `)||m(`drawer.subagentDomainsUnrestricted`)}):m(`drawer.subagentDisableSummary`)}),ne.modelConfig===void 0?null:(0,B.jsxs)(`p`,{children:[m(`drawer.subagentModel`),`: `,ne.modelConfig?.model||m(`drawer.subagentModelDefault`),` · `,ne.modelConfig?.reasoning_effort||m(`drawer.subagentModelDefault`)]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`button`,{className:`personal-primary-action`,onClick:()=>void R(),type:`button`,children:m(`common.confirm`)}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:De,type:`button`,children:m(`common.cancel`)})]})]}):null,T?(0,B.jsxs)(`p`,{className:`personal-subagent-feedback is-${j}`,role:`status`,children:[j===`previewing`||j===`applying`?(0,B.jsx)(Um,{className:`personal-spin`,size:13}):null,T]}):null,(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.subagentModel`)}),(0,B.jsx)(`dd`,{children:we.modelConfig?.model||m(`drawer.subagentModelDefault`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.subagentEffort`)}),(0,B.jsx)(`dd`,{children:we.modelConfig?.reasoning_effort||m(`drawer.subagentModelDefault`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.subagentCurrentBoundary`)}),(0,B.jsx)(`dd`,{children:we.allowedDomains.join(` · `)||m(`drawer.subagentDomainsUnrestricted`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.subagentChildLimit`)}),(0,B.jsx)(`dd`,{children:we.maxChildren||0})]})]}),u?(0,B.jsx)(`p`,{className:`personal-subagent-read-only`,children:m(`drawer.subagentRemoteReadOnly`)}):(0,B.jsxs)(`div`,{className:`personal-subagent-fields`,children:[(0,B.jsxs)(`fieldset`,{className:`personal-subagent-domain-picker`,disabled:Te,children:[(0,B.jsx)(`legend`,{children:m(`drawer.subagentDomains`)}),Ee.length>0?(0,B.jsx)(`div`,{className:`personal-subagent-domain-options`,children:Ee.map(e=>{let t=C.includes(e.value);return(0,B.jsxs)(`label`,{className:`personal-subagent-domain-option${t?` is-selected`:``}`,children:[(0,B.jsx)(`input`,{"aria-label":e.value,checked:t,onChange:t=>ke(e.value,t.target.checked),type:`checkbox`}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.value}),(0,B.jsx)(`small`,{children:m(`drawer.subagentDomainTodoCount`,{count:e.matchingTodoCount})})]})]},e.value)})}):(0,B.jsx)(`p`,{className:`personal-subagent-domain-empty`,children:m(`drawer.subagentDomainsEmpty`)}),(0,B.jsx)(`small`,{children:m(`drawer.subagentDomainsHint`)})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:m(`drawer.subagentModel`)}),(0,B.jsx)(`input`,{"aria-label":m(`drawer.subagentModel`),disabled:Te,value:k,placeholder:`gpt-5.6-luna`,onChange:e=>{ee(e.target.value),N(null),M(`idle`),E(null)}})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:m(`drawer.subagentEffort`)}),(0,B.jsxs)(`select`,{"aria-label":m(`drawer.subagentEffort`),disabled:Te,value:te,onChange:e=>{A(e.target.value),N(null),M(`idle`),E(null)},children:[(0,B.jsx)(`option`,{value:``,children:m(`drawer.subagentModelDefault`)}),[`none`,`minimal`,`low`,`medium`,`high`,`xhigh`,`max`,`ultra`].map(e=>(0,B.jsx)(`option`,{value:e,children:e},e))]})]}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,disabled:Te,type:`button`,onClick:()=>{ee(`gpt-5.6-luna`),A(`max`),N(null),M(`idle`),E(null)},children:m(`drawer.subagentLunaPreset`)}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,disabled:Te,type:`button`,onClick:()=>{ee(``),A(``),N(null),M(`idle`),E(null)},children:m(`drawer.subagentClearModel`)}),(0,B.jsx)(`p`,{children:m(`drawer.subagentModelHint`)}),(0,B.jsxs)(`label`,{className:`personal-subagent-limit-field`,children:[(0,B.jsx)(`span`,{children:m(`drawer.subagentMaxChildren`)}),(0,B.jsx)(`select`,{"aria-label":m(`drawer.subagentMaxChildren`),disabled:Te,onChange:e=>{O(Number(e.target.value)),N(null),M(`idle`),E(null)},value:D,children:Ob.map(e=>(0,B.jsx)(`option`,{value:e,children:e},e))})]}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,disabled:Te,onClick:()=>void Ae(we.enabled,!0),type:`button`,children:m(`drawer.subagentPreviewBoundary`)})]})]}):null]}):null,f.kind===`run`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`div`,{"aria-label":m(`drawer.runView`),className:`personal-run-drawer-tabs`,role:`tablist`,children:[(0,B.jsx)(`button`,{"aria-selected":x===`record`,onClick:()=>S(`record`),role:`tab`,type:`button`,children:m(`drawer.executionRecordAndResult`)}),(0,B.jsx)(`button`,{"aria-selected":x===`details`,onClick:()=>S(`details`),role:`tab`,type:`button`,children:m(`drawer.detailsAndActions`)})]}),x===`record`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-detail-card personal-session-summary`,children:[(0,B.jsxs)(`small`,{children:[f.item.agentLabel,` · `,Xi(f.item.sessionStatus??f.item.status,m)]}),(0,B.jsx)(`h3`,{children:f.item.title}),(0,B.jsx)(`p`,{children:f.item.latestActivity}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Goal`}),(0,B.jsx)(`dd`,{children:f.item.goalTitle})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.progress`)}),(0,B.jsxs)(`dd`,{children:[f.item.completedSteps,`/`,f.item.totalSteps]})]})]})]}),(0,B.jsxs)(`section`,{"aria-label":m(`drawer.executionRecord`),className:`personal-session-message-record`,children:[(0,B.jsx)(`h3`,{children:m(`drawer.executionRecord`)}),f.item.sessionMessages?.length?(0,B.jsx)(`ol`,{children:f.item.sessionMessages.map(e=>(0,B.jsxs)(`li`,{className:`is-${e.role}`,children:[(0,B.jsx)(`i`,{}),(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:e.role===`user`?m(`drawer.runRoleUser`):e.role===`assistant`?m(`drawer.runRoleAssistant`):m(`drawer.runRoleSystem`)}),e.createdAt?(0,B.jsx)(`time`,{children:new Date(e.createdAt).toLocaleTimeString(p,{hour:`2-digit`,minute:`2-digit`,hour12:!1})}):null]}),(0,B.jsx)(`p`,{children:e.text})]})]},e.messageId))}):(0,B.jsx)(`p`,{className:`personal-session-empty`,children:ve?m(`drawer.runRecordProjected`,{completed:f.item.completedSteps,outputs:f.item.outputs?.length?m(`drawer.runRecordProjectedOutputs`,{count:f.item.outputs.length}):``,total:f.item.totalSteps}):m(`drawer.runRecordEmpty`)}),f.item.status===`running`?(0,B.jsxs)(`div`,{className:`personal-session-active-step`,children:[(0,B.jsx)(`i`,{}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:m(`drawer.analysis`)}),(0,B.jsx)(`small`,{children:m(`drawer.agentWorking`)})]})]}):null]}),f.item.outputs?.length?(0,B.jsxs)(`section`,{className:`personal-execution-history`,"aria-labelledby":`personal-run-outputs-title`,children:[(0,B.jsx)(`h3`,{id:`personal-run-outputs-title`,children:m(`drawer.outputs`)}),(0,B.jsx)(`ol`,{children:f.item.outputs.map(e=>(0,B.jsx)(`li`,{children:(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.title}),(0,B.jsx)(`small`,{children:e.createdAt??e.kind??m(`files.emptySummary`)})]})},e.outputId))})]}):null]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-detail-card`,children:[(0,B.jsxs)(`small`,{children:[f.item.agentLabel,` · `,Xi(f.item.status,m)]}),(0,B.jsx)(`h3`,{children:f.item.title}),(0,B.jsx)(`p`,{children:f.item.latestActivity}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Goal`}),(0,B.jsx)(`dd`,{children:f.item.goalTitle})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.progress`)}),(0,B.jsxs)(`dd`,{children:[f.item.completedSteps,`/`,f.item.totalSteps]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.sessionStatus`)}),(0,B.jsx)(`dd`,{children:Xi(f.item.sessionStatus??f.item.status,m)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.sessionRecoverable`)}),(0,B.jsx)(`dd`,{children:f.item.resumable===!1?m(`drawer.resumeNo`):m(`drawer.resumeYes`)})]})]})]}),f.item.sessionStatus===`resume_failed`&&!u?(0,B.jsxs)(`section`,{className:`personal-recovery-panel`,"aria-label":m(`drawer.recoveryFailed`),children:[(0,B.jsx)(`strong`,{children:m(`drawer.recoveryFailed`)}),(0,B.jsx)(`p`,{children:m(`drawer.recoveryDescription`)}),(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>void r.onRetryResumeRun?.(f.item),type:`button`,children:[(0,B.jsx)(Um,{size:16}),m(`drawer.recoveryRetry`)]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onStartNewRunSession?.(f.item),type:`button`,children:[(0,B.jsx)(zm,{size:16}),m(`drawer.recoveryNewSession`)]})]}):null,u?null:(0,B.jsxs)(`section`,{className:`personal-correction-panel`,children:[(0,B.jsx)(`header`,{children:(0,B.jsxs)(`span`,{children:[(0,B.jsx)(nm,{size:16}),m(`drawer.correctionLabel`,{agent:f.item.agentLabel})]})}),(0,B.jsx)(`p`,{children:m(`drawer.correctionDescription`)}),(0,B.jsxs)(`div`,{className:`personal-correction-composer`,children:[(0,B.jsx)(`textarea`,{"aria-label":m(`drawer.correctionTextarea`,{agent:f.item.agentLabel,goal:f.item.goalTitle,run:f.item.title}),onChange:e=>g(e.target.value),placeholder:m(`drawer.correctionPlaceholder`),rows:3,value:h}),(0,B.jsx)(`button`,{"aria-label":m(`drawer.correctionSend`),disabled:!h.trim(),onClick:()=>void xe(),type:`button`,children:(0,B.jsx)(Km,{size:16})})]})]}),u?null:(0,B.jsxs)(`details`,{className:`personal-compact-menu personal-run-more`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(gm,{size:17}),m(`drawer.moreRunActions`)]}),(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`button`,{disabled:!f.item.canInterrupt,onClick:()=>void r.onInterruptRun?.(f.item),type:`button`,children:[(0,B.jsx)(Rm,{size:16}),m(`drawer.runInterrupt`)]}),(0,B.jsxs)(`button`,{disabled:f.item.resumable===!1,onClick:()=>void r.onRetryResumeRun?.(f.item),type:`button`,children:[(0,B.jsx)(Um,{size:16}),m(`drawer.recoveryRetry`)]}),(0,B.jsxs)(`button`,{onClick:()=>void r.onStartNewRunSession?.(f.item),type:`button`,children:[(0,B.jsx)(zm,{size:16}),m(`drawer.runNewSession`)]}),(0,B.jsxs)(`button`,{onClick:()=>void r.onCloseRunSession?.(f.item),type:`button`,children:[(0,B.jsx)($m,{size:16}),m(`drawer.runCloseSession`)]})]})]})]})]}):null,f.kind===`output`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-detail-card`,children:[(0,B.jsx)(`small`,{children:f.item.kind??`output`}),(0,B.jsx)(`h3`,{children:f.item.title}),(0,B.jsx)(`p`,{children:f.item.summary??m(`drawer.outputRecorded`)}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Goal`}),(0,B.jsx)(`dd`,{children:f.item.goalTitle??f.item.goalId})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.outputTodo`)}),(0,B.jsx)(`dd`,{children:f.item.todoId??m(`drawer.notLinked`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.outputRun`)}),(0,B.jsx)(`dd`,{children:f.item.runId??m(`drawer.notLinked`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Agent`}),(0,B.jsx)(`dd`,{children:f.item.agentLabel??f.item.agentId??`LoopX`})]})]})]}),f.item.report?(0,B.jsxs)(`section`,{className:`personal-report-detail`,"data-testid":`personal-periodic-report-detail`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsxs)(`span`,{children:[(0,B.jsxs)(`strong`,{children:[`+`,f.item.report.addedCount]}),m(`files.reportAdded`)]}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:f.item.report.changedCount}),m(`files.reportChanged`)]})]}),(0,B.jsxs)(`p`,{children:[f.item.report.periodStartAt,` → `,f.item.report.periodEndAt]}),(0,B.jsx)(`ol`,{children:f.item.report.items.map(e=>(0,B.jsxs)(`li`,{"data-change-kind":e.changeKind,children:[(0,B.jsxs)(`small`,{children:[e.changeKind,` · `,e.status]}),(0,B.jsx)(`strong`,{children:e.title}),(0,B.jsx)(`p`,{children:e.summary})]},e.sourceRef))}),(0,B.jsxs)(`footer`,{children:[(0,B.jsxs)(`span`,{children:[m(`files.reportPublication`),`: `,f.item.report.publicationId]}),(0,B.jsxs)(`span`,{children:[m(`files.reportGeneration`),`: `,f.item.report.generationId]})]})]}):null,f.item.safePreview?(0,B.jsx)(`pre`,{"aria-label":m(`drawer.outputSafePreview`),className:`personal-safe-preview`,children:f.item.safePreview}):(0,B.jsx)(`p`,{className:`personal-preview-unavailable`,children:m(`drawer.previewUnavailable`)}),(0,B.jsxs)(`div`,{className:`personal-drawer-action-grid`,children:[(0,B.jsxs)(`button`,{className:`personal-primary-action`,disabled:!r.onOpenOutput,onClick:()=>{r.onOpenOutput?.(f.item),c()},type:`button`,children:[(0,B.jsx)(_m,{size:16}),m(`files.openConversation`)]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,disabled:!r.onExportOutput,onClick:()=>void r.onExportOutput?.(f.item),type:`button`,children:[(0,B.jsx)(hm,{size:16}),m(`files.exportSummary`)]})]})]}):null,f.kind===`proposal`?(0,B.jsxs)(B.Fragment,{children:[f.item.actionKind===`team.plan`&&f.item.status===`applied`?(0,B.jsx)(_b,{proposal:f.item,t:m}):(0,B.jsxs)(`section`,{className:`personal-proposal-card`,children:[(0,B.jsxs)(`small`,{children:[f.item.actionKind,` · `,f.item.status]}),(0,B.jsx)(`h3`,{children:f.item.title}),(0,B.jsx)(`p`,{children:f.item.impact}),f.item.reviewPlan&&f.item.actionKind!==`team.plan`?(0,B.jsx)(`p`,{className:`personal-proposal-explainer`,"data-action-review":f.item.reviewPlan.interaction,children:f.item.actionKind===`operation.execute`&&f.item.status===`gated`?m(`actionReview.operation_group_confirmation`):f.item.actionKind===`operation.execute`&&f.item.reviewPlan.reason===`readback_unverified`?m(`actionReview.operation_result_delivery_pending`):m(`actionReview.${f.item.reviewPlan.reason}`)}):null,f.item.status===`ready`&&f.item.actionKind!==`team.plan`?(0,B.jsx)(`p`,{className:`personal-proposal-explainer`,children:m(`drawer.proposalExplainer`)}):null,(0,B.jsx)(`dl`,{children:f.item.fields.map(e=>(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:e.label}),(0,B.jsx)(`dd`,{children:e.value})]},e.key))})]}),f.item.status===`applied`&&f.item.actionKind!==`team.plan`?(0,B.jsxs)(`p`,{className:`personal-proposal-state ${f.item.actionKind===`operation.execute`&&f.item.reviewPlan?.reason===`readback_unverified`?`is-gated`:`is-applied`}`,children:[(0,B.jsx)(am,{size:16}),f.item.actionKind===`operation.execute`?f.item.primaryLabel:m(`drawer.proposalApplied`)]}):null,f.item.status===`applied`&&f.item.actionKind!==`operation.execute`&&f.item.goalId?(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>{let e=f.item.goalId;c(),r.onOpenGoal?.(e)},type:`button`,children:[(0,B.jsx)(_m,{size:16}),f.item.actionKind===`goal.create`?m(`drawer.proposalEnterGoal`):m(f.item.actionKind===`team.plan`?`proposal.teamPlan.openGoal`:`drawer.proposalViewGoal`)]}):null,f.item.status===`stale`?(0,B.jsx)(`p`,{className:`personal-proposal-state is-stale`,children:m(`drawer.proposalStale`)}):null,f.item.status===`error`?(0,B.jsxs)(`div`,{className:`personal-proposal-state is-error`,children:[(0,B.jsx)(`span`,{children:f.item.reviewPlan?.reason===`readback_unverified`?m(`actionReview.readback_unverified`):m(`drawer.proposalApplyFailed`)}),f.item.errorMessage?(0,B.jsx)(`small`,{children:f.item.errorMessage}):null,(0,B.jsx)(`small`,{children:m(f.item.actionKind===`team.plan`?`proposal.teamPlan.retryHint`:`drawer.proposalApplyFailedHint`)})]}):null,f.item.status===`rejected`?(0,B.jsx)(`p`,{className:`personal-proposal-state is-error`,children:m(`drawer.proposalRejected`)}):null,f.item.status===`deferred`?(0,B.jsx)(`p`,{className:`personal-proposal-state is-gated`,children:m(`drawer.proposalDeferred`)}):null,f.item.status===`gated`?(0,B.jsxs)(`div`,{className:`personal-proposal-state is-gated`,children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:f.item.actionKind===`operation.execute`?f.item.primaryLabel:m(`drawer.gateRequiresHost`)}),f.item.actionKind===`operation.execute`?f.item.impact:m(`drawer.gateRequiresHostDescription`)]}),f.item.gate?.nextAction?(0,B.jsx)(`small`,{children:f.item.gate.nextAction}):null]}):null,f.item.status===`gated`&&f.item.actionKind===`gate.resolve`?(()=>{let e=e=>f.item.fields.find(t=>t.key===e)?.value,t=e(`goal_id`),n=e(`todo_id`);return!t||!n?null:(0,B.jsxs)(`section`,{className:`personal-detail-card personal-gate-cli-hint`,children:[(0,B.jsx)(`small`,{children:m(`drawer.gateApproveHint`)}),(0,B.jsxs)(`code`,{children:[`loopx todo complete --goal-id `,t,` --todo-id `,n,` --decision-outcome approve`]}),(0,B.jsx)(`small`,{children:m(`drawer.gateRejectHint`)})]})})():null,!u&&f.item.workspaceCandidates?.length?(0,B.jsx)(`div`,{className:`personal-workspace-candidates`,"aria-label":m(`drawer.workspaceCandidates`),children:f.item.workspaceCandidates.map(e=>(0,B.jsxs)(`button`,{onClick:()=>void r.onSelectWorkspaceCandidate?.(f.item,e.workspaceRef),type:`button`,children:[(0,B.jsx)(`strong`,{children:e.label}),(0,B.jsx)(`small`,{children:e.workspaceRef})]},e.workspaceRef))}):null,!u&&f.item.actionKind!==`operation.execute`&&f.item.status===`error`?(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>void(f.item.actionKind===`team.plan`?r.onApplyProposal?.(f.item):r.onTransitionProposal?.(f.item,`regenerate`)),type:`button`,children:[(0,B.jsx)(Um,{size:17}),m(f.item.actionKind===`team.plan`?`proposal.teamPlan.retry`:`drawer.proposalRegenerate`)]}):!u&&f.item.actionKind!==`operation.execute`&&f.item.status!==`gated`&&(f.item.actionKind!==`team.plan`||f.item.status!==`applied`)?(0,B.jsxs)(`button`,{className:`personal-primary-action`,disabled:![`ready`,`deferred`].includes(f.item.status)||f.item.reviewPlan?.canApply===!1,onClick:()=>void r.onApplyProposal?.(f.item),type:`button`,children:[(0,B.jsx)(am,{size:17}),f.item.status===`applying`?m(`drawer.applying`):f.item.primaryLabel??m(`drawer.apply`)]}):null,!u&&f.item.actionKind!==`operation.execute`&&([`stale`,`gated`,`rejected`].includes(f.item.status)||f.item.status===`ready`&&f.item.reviewPlan?.canApply===!1)?(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onTransitionProposal?.(f.item,`regenerate`),type:`button`,children:[(0,B.jsx)(Um,{size:16}),m(`drawer.proposalRecheck`)]}):null,!u&&f.item.actionKind!==`operation.execute`&&[`ready`,`gated`].includes(f.item.status)?(0,B.jsxs)(`div`,{className:`personal-drawer-action-grid`,children:[(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onTransitionProposal?.(f.item,`defer`),type:`button`,children:m(`drawer.proposalDefer`)}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onTransitionProposal?.(f.item,`reject`),type:`button`,children:m(`drawer.decisionReject`)})]}):null,[`applied`,`applying`].includes(f.item.status)?null:(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:c,type:`button`,children:m(`drawer.proposalClose`)})]}):null,f.kind===`schedule`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`section`,{className:`personal-detail-card`,children:[(0,B.jsxs)(`small`,{children:[f.item.scheduleKind===`heartbeat`?`Goal Heartbeat`:`continuous_monitor`,` · `,f.item.status??`active`]}),(0,B.jsx)(`h3`,{children:f.item.label}),(0,B.jsx)(`p`,{children:f.item.target??f.item.schedule??m(`drawer.scheduleDefaultTarget`)}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.scheduleTimezone`)}),(0,B.jsx)(`dd`,{children:f.item.timezone??m(`drawer.scheduleLocalTimezone`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.scheduleNext`)}),(0,B.jsx)(`dd`,{children:f.item.nextRunAt??m(`drawer.schedulePending`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.scheduleLast`)}),(0,B.jsx)(`dd`,{children:f.item.previousRunAt??m(`drawer.scheduleNeverRun`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.scheduleNotification`)}),(0,B.jsx)(`dd`,{children:f.item.notificationRule??m(`drawer.scheduleDefaultNotification`)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:m(`drawer.scheduleStopCondition`)}),(0,B.jsx)(`dd`,{children:f.item.stopCondition??m(`drawer.scheduleDefaultStop`)})]})]})]}),!u&&f.item.scheduleKind===`monitor`?(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:()=>void r.onUpdateSchedule?.(f.item,`run_now`),type:`button`,children:[(0,B.jsx)(zm,{size:16}),m(`drawer.scheduleRunNow`)]}):null,u?null:(0,B.jsxs)(`div`,{className:`personal-drawer-action-grid`,children:[(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onUpdateSchedule?.(f.item,f.item.status===`paused`?`resume`:`pause`),type:`button`,children:[f.item.status===`paused`?(0,B.jsx)(zm,{size:16}):(0,B.jsx)(Rm,{size:16}),f.item.status===`paused`?m(`drawer.scheduleResume`):m(`drawer.schedulePause`)]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,onClick:()=>void r.onUpdateSchedule?.(f.item,`edit`),type:`button`,children:[(0,B.jsx)(im,{size:16}),m(`drawer.scheduleEdit`)]})]}),u?null:(0,B.jsxs)(`button`,{className:`personal-danger-action`,onClick:()=>void r.onUpdateSchedule?.(f.item,`stop`),type:`button`,children:[(0,B.jsx)($m,{size:16}),m(`drawer.scheduleStop`,{kind:f.item.scheduleKind===`heartbeat`?` Heartbeat`:m(`drawer.titleSchedule`)})]}),(0,B.jsxs)(`section`,{className:`personal-execution-history`,"aria-labelledby":`personal-execution-history-title`,children:[(0,B.jsx)(`h3`,{id:`personal-execution-history-title`,children:m(`drawer.executionHistory`)}),f.item.executionHistory?.length?(0,B.jsx)(`ol`,{children:f.item.executionHistory.map((e,t)=>(0,B.jsxs)(`li`,{children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.label}),(0,B.jsx)(`small`,{children:e.timestamp})]}),(0,B.jsx)(`em`,{className:`is-${e.status}`,children:e.status})]},`${e.timestamp}:${e.runId??t}`))}):(0,B.jsx)(`p`,{children:m(`drawer.noExecutionHistory`)})]})]}):null,f.kind===`run`||f.kind===`proposal`||f.kind===`schedule`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`button`,{"aria-expanded":_,className:`personal-diagnostics-trigger`,onClick:()=>v(e=>!e),type:`button`,children:[(0,B.jsx)(`span`,{children:m(`drawer.advancedDiagnostics`)}),(0,B.jsx)(om,{className:_?`is-open`:``,size:16})]}),_?(0,B.jsxs)(`div`,{className:`personal-diagnostics`,children:[(0,B.jsxs)(`code`,{children:[`goal_id: `,he]}),(0,B.jsxs)(`code`,{children:[`kind: `,f.kind]}),f.kind===`run`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`code`,{children:[`session_id: `,f.item.sessionId??m(`drawer.notLinked`)]}),(0,B.jsxs)(`code`,{children:[`turn_id: `,f.item.turnId??m(`common.none`)]}),(0,B.jsxs)(`code`,{children:[`adapter: `,f.item.agentId]}),(0,B.jsxs)(`code`,{children:[`status: `,f.item.sessionStatus??f.item.status]})]}):f.kind===`proposal`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`code`,{children:[`action: `,f.item.actionKind]}),(0,B.jsxs)(`code`,{children:[`status: `,f.item.status]})]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`code`,{children:[`schedule_id: `,f.item.scheduleId]}),(0,B.jsxs)(`code`,{children:[`status: `,f.item.status??`active`]})]})]}):null]}):null]})]})}var Nb=[`checking`,`connecting`,`downloading`,`installing_app`,`installing_runtime`],Pb={desktop_status_unavailable:[`无法读取 App 更新状态。请重启 App 后再试;若仍失败,请重新安装最新 App。`,`Cannot read the App update status. Restart the App; if this persists, reinstall the latest App.`],update_feed_unavailable:[`此通道的更新源尚未就绪或暂时不可用。可稍后重新检查,当前版本仍可继续使用。`,`This channel's update feed is not ready or temporarily unavailable. Check again later; you can keep using this version.`],update_feed_invalid:[`更新源格式异常。请稍后重新检查。`,`The update feed is invalid. Check again later.`],update_platform_unavailable:[`此通道尚无适用于本机的更新包。`,`This channel has no update package for this platform.`],update_check_timeout:[`检查更新超时。请稍后重试。`,`The update check timed out. Try again later.`],update_network_failed:[`无法连接更新服务器。请检查网络后重试。`,`Cannot reach the update server. Check your connection and retry.`],update_download_or_signature_failed:[`更新包下载或签名校验失败,尚未安装。请重新检查更新。`,`Download or signature verification failed; the update was not installed. Check for updates again.`]};function Fb(e,t=`update_failed`){return{phase:`error`,details:{code:typeof e==`string`&&Object.hasOwn(Pb,e)?e:t}}}function Ib(){let{locale:e}=Ji(),t=e===`zh-CN`,[n,r]=(0,z.useState)(!1),i=(0,z.useRef)(null),[a,o]=(0,z.useState)(`stable`),[s,c]=(0,z.useState)({phase:`idle`}),[l,u]=(0,z.useState)(``),[d,f]=(0,z.useState)(!1),p=(0,z.useRef)(!1),m=window.__TAURI__?.core.invoke,h=Nb.includes(s.phase);(0,z.useEffect)(()=>{let e=i.current;if(!e)return;let t=()=>r(e.matches(`:popover-open`));return e.addEventListener(`toggle`,t),()=>e.removeEventListener(`toggle`,t)},[]),(0,z.useEffect)(()=>{if(!m)return;let e=!0;return m(`desktop_update_status`).then(t=>{if(!e)return;u(t.app_version),f(t.rollback_available===!0),t.state?.phase&&c(t.state);let n=t.state?.details?.channel??(t.app_version.includes(`-main.`)?`main`:`stable`);o(n),t.state?.phase||m(`desktop_update`,{action:`check`,channel:n}).then(t=>{e&&c(t)}).catch(t=>{e&&c(Fb(t))})}).catch(()=>{e&&c(Fb(null,`desktop_status_unavailable`))}),()=>{e=!1}},[m]),(0,z.useEffect)(()=>{if(!m||!h)return;let e=window.setInterval(()=>{m(`desktop_update_status`).then(e=>{e.state?.phase&&c(e.state)}).catch(()=>{})},1e3);return()=>window.clearInterval(e)},[m,h]);async function g(e){if(!(!m||p.current)){p.current=!0,c({phase:e===`check`?`checking`:e===`repair`?`installing_runtime`:`downloading`});try{if(!l){let e=await m(`desktop_update_status`);u(e.app_version),f(e.rollback_available===!0)}c(await m(`desktop_update`,{action:e,channel:a}))}catch(e){c(Fb(e,l?`update_failed`:`desktop_status_unavailable`))}finally{p.current=!1}}}let _={service_error:t?`运行时已安装,但服务尚未连接。可重试更新、修复或恢复上版。`:`Runtime installed, but services are unavailable. Retry updates, repair, or restore the previous version.`,runtime_pairing_required:t?`本机 CLI 运行时与 App 自带运行时不一致。回到 App 启动界面可「更新 App 与运行时」或「回退 CLI」。`:`This host's CLI runtime and the App's bundled runtime differ. On the App boot screen, update both or use the App's runtime.`,idle:t?`App 会检查可用更新,不会自动安装。`:`Updates are checked automatically, never installed without confirmation.`,runtime_required:t?`请完成匹配组件安装,或检查 App 更新。`:`Install matching components or check for an App update.`,connecting:t?`正在连接更新后的服务…`:`Connecting to updated services…`,checking:t?`正在检查更新…`:`Checking for updates…`,available:t?`新版本已就绪,一次更新 App 与匹配的运行时。`:`Update the App and its matching runtime together.`,up_to_date:t?`当前通道暂无更新。`:`No newer update on this channel.`,downloading:t?`正在下载并校验签名…`:`Downloading and verifying signature…`,installing_app:t?`正在安装 App,请保持窗口打开。`:`Installing the App. Keep this window open.`,installing_runtime:t?`正在安装匹配的运行时,请稍候…`:`Installing the matching runtime…`,restart_required:t?`重启后将自动完成运行时安装与服务连接。`:`Restart to finish runtime installation and reconnect services.`,ready:t?`更新完成,服务已就绪。`:`Update completed; services are ready.`,error:Pb[s.details?.code??``]?.[+!t]??(t?`更新未完成。请重试;启动失败可尝试修复当前版本。`:`Update incomplete. Retry; repair this version if startup fails.`)},v=h?t?`正在更新…`:`Updating…`:s.phase===`available`?t?`有可用更新`:`Update available`:s.phase===`restart_required`?t?`重启完成更新`:`Restart to finish`:s.phase===`error`?t?`更新需重试`:`Retry update`:t?`更新 LoopX`:`Update LoopX`;return(0,B.jsxs)(`div`,{className:`personal-desktop-update`,children:[(0,B.jsxs)(`button`,{className:`personal-update-trigger`,type:`button`,"aria-expanded":n,"aria-controls":`desktop-update-panel`,onClick:e=>{i.current?.style.setProperty(`bottom`,`${window.innerHeight-e.currentTarget.getBoundingClientRect().top+8}px`),i.current?.togglePopover()},children:[(0,B.jsx)(hm,{size:16,"aria-hidden":`true`}),(0,B.jsx)(`span`,{children:v}),(0,B.jsx)(cm,{size:14,"aria-hidden":`true`})]}),(0,B.jsxs)(`section`,{ref:i,popover:`auto`,id:`desktop-update-panel`,className:`personal-update-panel`,"aria-label":t?`LoopX 更新`:`LoopX updates`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:t?`LoopX 更新`:`LoopX updates`}),(0,B.jsx)(`button`,{type:`button`,"aria-label":t?`关闭更新面板`:`Close updates`,onClick:()=>i.current?.hidePopover(),children:(0,B.jsx)(ah,{size:16,"aria-hidden":`true`})})]}),(0,B.jsxs)(`small`,{children:[l,` · `,a===`main`?t?`main 预览版`:`main preview`:t?`稳定版`:`Stable`]}),s.details?.version?(0,B.jsxs)(`p`,{children:[t?`目标版本:`:`Target: `,s.details.version]}):null,(0,B.jsxs)(`p`,{role:`status`,"aria-live":`polite`,children:[h?(0,B.jsx)(Hm,{className:`is-spinning`,size:14,"aria-hidden":`true`}):null,_[s.phase]]}),s.phase===`downloading`&&s.details?.total?(0,B.jsx)(`progress`,{"aria-label":t?`下载进度`:`Download progress`,max:s.details.total,value:s.details.received??0}):null,m?(0,B.jsx)(`div`,{className:`personal-update-actions`,children:s.phase===`restart_required`?(0,B.jsx)(`button`,{type:`button`,onClick:()=>void g(`restart`),children:t?`重启完成更新`:`Restart to finish`}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`button`,{type:`button`,disabled:h,onClick:()=>void g(`check`),children:t?`检查更新`:`Check for updates`}),s.phase===`available`?(0,B.jsx)(`button`,{type:`button`,onClick:()=>void g(`apply`),children:t?`更新并准备重启`:`Install update`}):null]})}):(0,B.jsx)(`p`,{children:t?`请在 LoopX App 中更新;浏览器自身无需安装包。`:`Update from the LoopX App; the browser needs no installer.`}),(0,B.jsxs)(`details`,{children:[(0,B.jsx)(`summary`,{children:t?`高级选项`:`Advanced options`}),(0,B.jsxs)(`label`,{children:[t?`更新通道`:`Update channel`,(0,B.jsxs)(`select`,{disabled:h||s.phase===`restart_required`,value:a,onChange:e=>{o(e.target.value),c({phase:`idle`})},children:[(0,B.jsx)(`option`,{value:`stable`,children:t?`稳定版(推荐)`:`Stable (recommended)`}),(0,B.jsx)(`option`,{value:`main`,children:t?`main 预览版`:`main preview`})]})]}),(0,B.jsx)(`p`,{children:t?`App 与匹配的 CLI 一起更新,服务可能短暂断开。不删除 Goal 数据。`:`Updates the App and matching CLI. Services may briefly disconnect. Goal data is not deleted.`}),m?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{children:t?`启动失败时,可重装当前 App 随附的运行时。`:`If startup fails, reinstall this App's bundled runtime.`}),(0,B.jsx)(`button`,{disabled:h||s.phase===`restart_required`,type:`button`,onClick:()=>void g(`repair`),children:t?`修复当前版本`:`Repair this version`})]}):null,m&&d?(0,B.jsxs)(`details`,{children:[(0,B.jsx)(`summary`,{children:t?`恢复上个版本`:`Restore previous version`}),(0,B.jsx)(`p`,{children:t?`将恢复已保留的 App 和它的运行时,需要重启。`:`Restore the retained App and its runtime, then restart.`}),(0,B.jsx)(`button`,{disabled:h,type:`button`,onClick:()=>void g(`rollback`),children:t?`确认恢复上版`:`Restore previous version`})]}):null]})]})]})}var Lb=e=>`loopx-sidebar-goal-order-v1:${encodeURIComponent(e)}`;function Rb(e){try{let t=JSON.parse(e??`null`);return Array.isArray(t)&&t.every(e=>typeof e==`string`)?[...new Set(t)]:[]}catch{return[]}}function zb(e,t){let n=new Map(t.map((e,t)=>[e,t]));return[...e].sort((e,t)=>(n.get(e.goalId)??1/0)-(n.get(t.goalId)??1/0))}function Bb(e,t,n,r,i){if(n===r||!t.includes(n)||!t.includes(r))return e;let a=[...new Set([...e,...t])].filter(e=>e!==n);return a.splice(a.indexOf(r)+Number(i),0,n),a}function Vb(e,t){let n=Lb(t),[r,i]=(0,z.useState)(()=>{try{return Rb(localStorage.getItem(n))}catch{return[]}}),[a,o]=(0,z.useState)(!1),[s,c]=(0,z.useState)(null),[l,u]=(0,z.useState)(null),d=(0,z.useRef)(null),f=(0,z.useRef)(!1),p=zb(e,r),m=p.map(e=>e.goalId);function h(t,a,s){let l=Bb(r,m,t,a,s);if(l===r)return;i(l);let u=zb(e,l),d=u.findIndex(e=>e.goalId===t),f=u[d];f&&c({title:f.title,position:d+1});try{localStorage.setItem(n,JSON.stringify(l)),o(!1)}catch{o(!0)}}function g(){d.current=null,u(null)}return{sorted:p,target:l,saveFailed:a,lastMoved:s,move:h,moveBy(e,t){let n=p[m.indexOf(e)+t];n&&h(e,n.goalId,t===1)},pointerProps:e=>({onPointerDown(t){f.current=!1,t.pointerType===`mouse`&&t.button===0&&(d.current={id:e,x:t.clientX,y:t.clientY,dragging:!1},t.currentTarget.setPointerCapture(t.pointerId))},onPointerMove(e){let t=d.current;if(!t||!t.dragging&&Math.hypot(e.clientX-t.x,e.clientY-t.y)<6)return;t.dragging=!0,f.current=!0;let n=document.elementFromPoint(e.clientX,e.clientY)?.closest(`[data-reorder-goal]`),r=e.currentTarget.closest(`.personal-goal-list`),i=n?.dataset.reorderGoal;if(!n||!i||!r?.contains(n)||i===t.id){u(null);return}let a=n.getBoundingClientRect();u({id:i,after:e.clientY>a.top+a.height/2})},onPointerUp(){d.current?.dragging&&l&&h(d.current.id,l.id,l.after),g()},onPointerCancel:g,onLostPointerCapture:g,onKeyDown(e){e.key===`Escape`&&g()},onClickCapture(e){f.current&&=(e.preventDefault(),e.stopPropagation(),!1)}})}}var Hb=`/ssh-hosts`,Ub=/^[A-Za-z0-9][A-Za-z0-9._-]{0,254}$/;function Wb(e){return typeof e==`string`&&Ub.test(e.trim())}function Gb(e){if(!e||typeof e!=`object`||Array.isArray(e))throw Error(`SSH Host 列表响应无效。`);let t=e;if(t.ok!==!0||t.schema_version!==`ssh_host_catalog_v0`||!Array.isArray(t.hosts))throw Error(`SSH Host 列表协议不兼容,请更新本机 LoopX 服务。`);let n=new Set;return{hosts:t.hosts.flatMap(e=>{if(!e||typeof e!=`object`||Array.isArray(e))return[];let t=String(e.alias??``).trim();return!Wb(t)||n.has(t)?[]:(n.add(t),[{alias:t}])}),schemaVersion:`ssh_host_catalog_v0`}}async function Kb(e=fetch,t=Hb){let n=await e(t,{cache:`no-store`});if(!n.ok)throw Error(`无法读取本机 SSH Host(HTTP ${n.status})。`);return Gb(await n.json())}function qb(e,t){let n=e.trim();if(!Wb(n))return{error:`请选择有效的 SSH Host。`};let r=Number(t);return!Number.isInteger(r)||r<1024||r>65535?{error:`本地端口必须是 1024–65535 之间的整数。`}:{command:`ssh -N -L ${r}:127.0.0.1:8766 ${n}`,hostAlias:n,label:n,statusUrl:`http://127.0.0.1:${r}/status.json`}}var Jb=`/api/ssh-source/ensure`,Yb=`/api/ssh-source/goal-lifecycle`;async function Xb(e,t){let n=await fetch(Jb,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({host_alias:e,local_port:Number(t)})}),r=await n.json().catch(()=>null);if(!n.ok)throw Error(r?.error??`无法建立 SSH 隧道来源。`);if(!r?.ok)throw Error(`无法建立 SSH 隧道来源。`);return r}async function Zb(e,t,n,r,i=fetch){let a=await i(Yb,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({goal_id:t,host_alias:e,operation:n,reason:r})}),o=await a.json().catch(()=>null);if(!a.ok)throw Error(o?.error??`无法更新远端 Goal 生命周期。`);if(!o?.ok||o.schema_version!==`loopx_remote_goal_lifecycle_v1`||o.goal_id!==t||o.host_alias!==e||o.operation!==n||o.activation_state!==(n===`stop`?`stopped`:`active`)||o.projection_verified!==!0)throw Error(`远端 Goal 生命周期回读未验证。`);return o}function Qb({activeSource:e,connectionState:t,errorMessage:n,onAdd:r,onConfiguredHostsLoaded:i,onRemove:a,onSelect:o,sources:s}){let{t:c}=Ji(),[l,u]=(0,z.useState)(!1),[d,f]=(0,z.useState)(null),[p,m]=(0,z.useState)(`configured`),[h,g]=(0,z.useState)([]),[_,v]=(0,z.useState)(null),[y,b]=(0,z.useState)(!1),[x,S]=(0,z.useState)(!1),[C,w]=(0,z.useState)(``),[T,E]=(0,z.useState)(``),[D,O]=(0,z.useState)(`8876`),[k,ee]=(0,z.useState)(``),te=`configured:`,A=[...s.map(e=>({label:e.label,value:e.id})),...h.filter(e=>!s.some(t=>t.label===e.alias)).map(e=>({group:c(`source.configuredGroup`,{count:h.length}),label:e.alias,value:`${te}${e.alias}`}))],j=(0,z.useMemo)(()=>h.some(e=>e.alias===C)?qb(C,D):{error:c(`source.selectHost`)},[h,C,D,c]);(0,z.useEffect)(()=>{M()},[]);async function M(){b(!0),v(null);try{let e=await Kb();g(e.hosts),i?.(e.hosts.map(e=>e.alias)),w(t=>t||e.hosts[0]?.alias||``),e.hosts.length||v(c(`source.hostEmpty`))}catch(e){v(e instanceof Error?e.message:c(`source.hostLoadError`))}finally{b(!1)}}function ne(){u(!0),m(`configured`),f(null),M()}function N(){u(!1),m(`configured`),v(null),S(!1),w(``),f(null),E(``),O(`8876`),ee(``)}function P(){let e=r({label:T,statusUrl:k});if(e.error){f(e.error);return}N()}function re(){if(`error`in j){f(j.error??c(`source.invalid`));return}let e=r({ensureTunnel:!0,hostAlias:j.hostAlias,label:j.label,statusUrl:j.statusUrl});if(e.error){f(e.error);return}N()}function ie(e){let t=new Set;for(let e of s)try{t.add(new URL(e.statusUrl).port)}catch{}let n=`8877`;for(let e=8877;e<9077;e+=1)if(!t.has(String(e))){n=String(e);break}let i=qb(e,n);if(`error`in i){f(i.error??c(`source.invalid`));return}let a=r({ensureTunnel:!0,hostAlias:i.hostAlias,label:i.label,statusUrl:i.statusUrl});a.error?f(a.error):f(null),O(n)}async function ae(){if(`error`in j){f(j.error??c(`source.invalid`));return}try{await navigator.clipboard.writeText(j.command),S(!0),f(null)}catch{f(c(`source.copyError`))}}return(0,B.jsxs)(`section`,{"aria-label":c(`source.controlPlane`),className:`personal-status-source`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`span`,{children:`Control plane`}),(0,B.jsx)(`button`,{"aria-label":c(`source.addSsh`),onClick:ne,title:c(`source.add`),type:`button`,children:(0,B.jsx)(Bm,{size:14})})]}),(0,B.jsx)(eb,{ariaLabel:c(`source.select`),className:`personal-status-source-select`,icon:(0,B.jsx)(Jm,{size:15}),onChange:e=>{if(e.startsWith(te)){ie(e.slice(11));return}o(e)},options:A,value:e.id}),(0,B.jsxs)(`div`,{className:`personal-status-source-meta`,children:[(0,B.jsxs)(`span`,{className:`is-${t}`,children:[(0,B.jsx)(`i`,{}),c(t===`loading`?`source.connecting`:t===`error`?`source.notAvailable`:`source.connected`)]}),(0,B.jsx)(`small`,{children:e.readOnly?c(`source.readOnly`):c(`source.localInteractive`)}),e.kind===`ssh_tunnel`?(0,B.jsx)(`button`,{"aria-label":c(`source.remove`,{source:e.label}),onClick:()=>a(e.id),title:c(`source.removeCurrent`),type:`button`,children:(0,B.jsx)(nh,{size:12})}):null]}),n?(0,B.jsx)(`p`,{className:`personal-status-source-error`,role:`alert`,children:n}):null,l?(0,B.jsxs)(`div`,{className:`personal-status-source-form`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:c(`source.addSsh`)}),(0,B.jsx)(`button`,{"aria-label":c(`source.closeForm`),onClick:N,type:`button`,children:(0,B.jsx)(ah,{size:13})})]}),(0,B.jsxs)(`div`,{"aria-label":c(`source.addMethod`),className:`personal-status-source-modes`,role:`tablist`,children:[(0,B.jsx)(`button`,{"aria-selected":p===`configured`,onClick:()=>{m(`configured`),f(null)},role:`tab`,type:`button`,children:c(`source.configured`)}),(0,B.jsx)(`button`,{"aria-selected":p===`manual`,onClick:()=>{m(`manual`),f(null)},role:`tab`,type:`button`,children:c(`source.manual`)})]}),p===`configured`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:c(`source.configuredCount`,{count:h.length})}),(0,B.jsxs)(`span`,{className:`personal-status-source-field-row`,children:[(0,B.jsx)(`input`,{"aria-label":c(`source.host`),disabled:y||!h.length,list:`loopx-configured-ssh-hosts`,onChange:e=>{w(e.target.value),S(!1)},placeholder:c(y?`source.loadingHosts`:`source.hostPlaceholder`),value:C}),(0,B.jsx)(`datalist`,{id:`loopx-configured-ssh-hosts`,children:h.map(e=>(0,B.jsx)(`option`,{value:e.alias},e.alias))}),(0,B.jsx)(`button`,{"aria-label":c(`source.refreshHosts`),disabled:y,onClick:()=>void M(),title:c(`source.refreshHosts`),type:`button`,children:(0,B.jsx)(Wm,{size:13})})]})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:c(`source.localPort`)}),(0,B.jsx)(`input`,{"aria-label":c(`source.localPort`),inputMode:`numeric`,onChange:e=>{O(e.target.value),S(!1)},value:D})]}),(0,B.jsxs)(`div`,{className:`personal-status-source-command`,children:[(0,B.jsx)(`code`,{children:`error`in j?c(`source.tunnelCommandPending`):j.command}),(0,B.jsxs)(`button`,{"aria-label":c(`source.copyCommand`),disabled:`error`in j,onClick:()=>void ae(),type:`button`,children:[(0,B.jsx)(pm,{size:12}),c(x?`source.copied`:`source.copy`)]})]}),_?(0,B.jsx)(`p`,{className:`is-error`,children:_}):null,(0,B.jsx)(`p`,{children:c(`source.description`)}),(0,B.jsx)(`button`,{className:`personal-status-source-add`,disabled:`error`in j,onClick:re,type:`button`,children:c(`source.addConfigured`)})]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:c(`source.name`)}),(0,B.jsx)(`input`,{autoFocus:!0,maxLength:48,onChange:e=>E(e.target.value),placeholder:c(`source.namePlaceholder`),value:T})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:c(`source.statusUrl`)}),(0,B.jsx)(`input`,{onChange:e=>ee(e.target.value),placeholder:`http://127.0.0.1:8876/status.json`,value:k})]}),(0,B.jsx)(`p`,{children:(0,B.jsx)(`code`,{children:`ssh -N -L 8876:127.0.0.1:8766 `})}),(0,B.jsx)(`p`,{children:c(`source.manualDescription`)}),(0,B.jsx)(`button`,{className:`personal-status-source-add`,onClick:P,type:`button`,children:c(`source.addConfigured`)})]}),d?(0,B.jsx)(`p`,{className:`is-error`,role:`alert`,children:d}):null]}):null]})}var $b={需修复:`is-danger`,等你:`is-warning`,等待条件:`is-info`,推进中:`is-success`,安静运行:`is-quiet`,已完成:`is-quiet`,已停止:`is-stopped`};function ex({attentionCount:e,goals:t,goalArchiveLoadState:n={error:null,phase:`ready`},lifecycleBusyGoalIds:r,goalLifecycleOperations:i,onRequestGoalCreate:a,onOpenSettings:o,onRetryGoalArchive:s,onRequestGoalLifecycle:c,onSelectGoal:l,selectedGoalId:u,statusSourceControl:d}){let{locale:f,t:p}=Ji(),[m,h]=(0,z.useState)(!1),g=Vb(t.filter(e=>e.activationState!==`stopped`),d?.activeSource.statusUrl??`/status.json`),_=g.sorted,v=t.filter(e=>e.activationState===`stopped`),y=e=>!!c&&(!i||i.includes(e)),b=(e,t)=>(0,B.jsxs)(`div`,{className:`personal-goal-row${g.target?.id===e.goalId?g.target.after?` is-drop-after`:` is-drop-before`:``}`,"data-reorder-goal":t?void 0:e.goalId,"data-load-error":e.loadError,children:[(0,B.jsxs)(`button`,{...t?{}:g.pointerProps(e.goalId),title:t?void 0:p(`sidebar.dragGoal`),"aria-current":u===e.goalId?`page`:void 0,className:`personal-goal-link`,onClick:()=>l(e.goalId),type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-goal-state-dot ${e.loadState?``:$b[e.state]}`}),(0,B.jsxs)(`span`,{className:`personal-goal-link-copy`,children:[(0,B.jsx)(`strong`,{children:e.title}),(0,B.jsxs)(`small`,{children:[e.loadState&&(!t||u===e.goalId)?p(e.loadState===`error`?`startup.goalError`:`startup.goalLoading`):Yi(e.state,f),e.needsYou&&!t?` · ${p(`home.lane.needsYou`)}`:``]})]}),(0,B.jsx)(sm,{size:15})]}),!t&&m?(0,B.jsxs)(`div`,{className:`personal-goal-move-actions`,children:[(0,B.jsx)(`button`,{type:`button`,"aria-label":p(`sidebar.moveUp`,{goal:e.title}),disabled:_[0]?.goalId===e.goalId,onClick:()=>g.moveBy(e.goalId,-1),children:(0,B.jsx)($p,{"aria-hidden":`true`,size:13})}),(0,B.jsx)(`button`,{type:`button`,"aria-label":p(`sidebar.moveDown`,{goal:e.title}),disabled:_.at(-1)?.goalId===e.goalId,onClick:()=>g.moveBy(e.goalId,1),children:(0,B.jsx)(Yp,{"aria-hidden":`true`,size:13})})]}):null,c&&y(t?`resume`:`stop`)?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`button`,{"aria-label":`${p(t?`sidebar.resume`:`sidebar.stop`)} ${e.title}`,"aria-busy":r?.has(e.goalId)||void 0,className:`personal-goal-lifecycle${r?.has(e.goalId)?` is-pending`:``}`,disabled:r?.has(e.goalId),onClick:()=>c(e,t?`resume`:`stop`),title:p(t?`sidebar.resumeGoal`:`sidebar.stopGoal`),type:`button`,children:r?.has(e.goalId)?(0,B.jsx)(km,{size:13}):t?(0,B.jsx)(Um,{size:13}):(0,B.jsx)(Rm,{size:13})}),t&&y(`delete`)?(0,B.jsx)(`button`,{"aria-label":`${p(`sidebar.delete`)} ${e.title}`,className:`personal-goal-lifecycle personal-goal-delete`,onClick:()=>c(e,`delete`),title:p(`sidebar.deleteGoal`),type:`button`,children:(0,B.jsx)(nh,{size:13})}):null]}):null]},e.goalId);return(0,B.jsxs)(`div`,{className:`personal-goal-directory`,children:[(0,B.jsxs)(`div`,{className:`personal-sidebar-brand`,children:[(0,B.jsx)(`span`,{className:`personal-brand-mark`,children:(0,B.jsx)(nm,{size:18})}),(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:`LoopX`})})]}),d?(0,B.jsx)(Qb,{...d}):null,(0,B.jsxs)(`nav`,{"aria-label":p(`home.workspace`),className:`personal-sidebar-nav`,children:[(0,B.jsxs)(`button`,{"aria-current":u===null?`page`:void 0,className:`personal-manager-link`,onClick:()=>l(null),type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-manager-icon`,children:(0,B.jsx)(nm,{size:17})}),(0,B.jsx)(`span`,{children:p(`sidebar.manager`)}),e>0?(0,B.jsx)(`span`,{className:`personal-sidebar-count`,children:e}):null,(0,B.jsx)(sm,{size:15})]}),(0,B.jsxs)(`div`,{className:`personal-sidebar-section-title`,children:[(0,B.jsx)(`span`,{children:`Goals`}),(0,B.jsxs)(`span`,{className:`personal-sidebar-title-actions`,children:[(0,B.jsx)(`small`,{children:_.length}),(0,B.jsx)(`button`,{"aria-label":p(`sidebar.sortGoals`),title:p(`sidebar.sortGoals`),"aria-pressed":m,onClick:()=>h(!m),type:`button`,children:(0,B.jsx)(Qp,{"aria-hidden":`true`,size:15})}),a?(0,B.jsx)(`button`,{"aria-label":p(`sidebar.createGoal`),onClick:a,type:`button`,children:(0,B.jsx)(Bm,{size:15})}):null]})]}),g.saveFailed?(0,B.jsx)(`p`,{role:`status`,children:p(`sidebar.orderNotSaved`)}):null,(0,B.jsx)(`span`,{className:`personal-sr-only`,role:`status`,children:g.lastMoved?p(`sidebar.goalMoved`,{goal:g.lastMoved.title,position:g.lastMoved.position}):``}),(0,B.jsx)(`div`,{className:`personal-goal-list`,children:_.map(e=>b(e,!1))}),v.length||n.phase===`loading`||n.phase===`error`?(0,B.jsxs)(`details`,{className:`personal-stopped-goals`,open:n.phase===`error`||void 0,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(om,{size:13}),(0,B.jsx)(`span`,{children:p(`sidebar.stopped`)}),n.phase===`loading`?(0,B.jsx)(km,{"aria-label":p(`sidebar.stoppedLoading`),className:`is-spinning`,size:13}):(0,B.jsx)(`small`,{children:v.length})]}),(0,B.jsxs)(`div`,{className:`personal-goal-list is-stopped`,children:[n.phase===`error`?(0,B.jsxs)(`div`,{className:`personal-stopped-goal-error`,role:`alert`,children:[(0,B.jsx)(`span`,{children:p(`sidebar.stoppedLoadFailed`)}),s?(0,B.jsx)(`button`,{onClick:s,type:`button`,children:p(`sidebar.retryStopped`)}):null]}):null,v.map(e=>b(e,!0))]})]}):null]}),(0,B.jsxs)(`div`,{className:`personal-sidebar-footer`,children:[(0,B.jsx)(Ib,{}),o?(0,B.jsxs)(`button`,{"aria-label":p(`settings.open`),className:`personal-sidebar-utility`,onClick:o,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-sidebar-utility-icon`,children:(0,B.jsx)(Ym,{size:17})}),(0,B.jsx)(`span`,{className:`personal-sidebar-utility-copy`,children:(0,B.jsx)(`strong`,{children:p(`settings.open`)})}),(0,B.jsx)(sm,{"aria-hidden":`true`,size:15})]}):null]})]})}var tx=J({ok:X(!0),total:G().int().nonnegative(),next_cursor:W().nullable(),items:q(J({todo_id:W(),text:W(),claimed_by:W().nullable(),evidence:W().nullable(),priority:W().nullable(),task_class:W().nullable()})).max(40)});function nx({goal:e,agentId:t,seed:n,enabled:r,listView:i=!1,onSelect:a}){let{t:o}=Ji(),s=(0,z.useId)(),[c,l]=(0,z.useState)(!1),u=!i||c,d=i?96:148,[f,p]=(0,z.useState)(n),[m,h]=(0,z.useState)(t===`all`?e.doneTodoCount??n.length:n.length),[g,_]=(0,z.useState)(void 0),[v,y]=(0,z.useState)(!1),[b,x]=(0,z.useState)(!1),[S,C]=(0,z.useState)(!1),[w,T]=(0,z.useState)({top:0,height:600}),[E,D]=(0,z.useState)(null),O=(0,z.useRef)(null),k=(0,z.useRef)(null),[ee,te]=(0,z.useState)(0);(0,z.useEffect)(()=>{let e=O.current;if(!e)return;let t=new ResizeObserver(()=>T({top:e.scrollTop,height:e.clientHeight}));return t.observe(e),()=>{t.disconnect(),k.current?.abort()}},[]);let A=g===void 0||w.top+w.height>=f.length*d-d*2;(0,z.useEffect)(()=>{if(!r||!u||!A||g===null||b||k.current)return;let n=new AbortController;k.current=n,y(!0);let i=new URLSearchParams({goal_id:e.goalId});t!==`all`&&i.set(`agent_id`,t),g&&i.set(`cursor`,g),fetch(`/api/chat/completed-todos?${i}`,{signal:n.signal}).then(async e=>{if(e.status===409&&C(!0),!e.ok)throw Error(`history unavailable`);let t=tx.parse(await e.json());if(n.signal.aborted)return;let r=t.items.map(e=>({todoId:e.todo_id,text:e.text,claimedBy:e.claimed_by,evidence:e.evidence,priority:e.priority,taskClass:e.task_class,done:!0,status:`done`}));p(e=>g===void 0?r:[...e,...r.filter(t=>!e.some(e=>e.todoId===t.todoId))]),h(t.total),_(t.next_cursor)}).catch(()=>{n.signal.aborted||x(!0)}).finally(()=>{n.signal.aborted||(k.current=null,y(!1))})},[r,u,A,g,b,ee,e.goalId,t,v]),(0,z.useEffect)(()=>{O.current&&(O.current.scrollTop=0),T({top:0,height:O.current?.clientHeight??600}),D(null)},[i]);let j=Math.max(0,Math.floor(w.top/d)-3),M=Math.min(f.length,Math.ceil((w.top+w.height)/d)+3),ne=Array.from({length:Math.max(0,M-j)},(e,t)=>j+t);return E!==null&&El(e=>!e),children:[(0,B.jsx)(`span`,{"aria-hidden":`true`,children:c?`▾`:`▸`}),` `,o(`tasks.completed`)]}):(0,B.jsxs)(`strong`,{children:[(0,B.jsx)(`i`,{"aria-hidden":`true`,className:`personal-kanban-dot tone-done`}),o(`tasks.completed`)]}),(0,B.jsx)(`span`,{children:m})]}),(0,B.jsxs)(`div`,{id:s,hidden:!u,"aria-label":o(`tasks.completed`),className:`personal-task-lane-scroll`,ref:O,role:`region`,tabIndex:0,onScroll:e=>T({top:e.currentTarget.scrollTop,height:e.currentTarget.clientHeight}),children:[(0,B.jsx)(`div`,{className:`personal-completed-window`,style:{height:f.length*d},children:ne.map(t=>{let n=f[t];return(0,B.jsx)(`div`,{className:`personal-task-card personal-completed-row`,style:{top:t*d,height:d},children:(0,B.jsxs)(`button`,{type:`button`,onFocus:()=>D(t),onBlur:()=>D(null),onClick:()=>a({kind:`todo`,item:{...n,goalId:e.goalId,goalTitle:e.title,ownerLabel:n.claimedBy??e.agentLabel??e.agentId}}),children:[(0,B.jsx)(`span`,{className:`is-done`,children:`✓`}),(0,B.jsx)(`strong`,{children:n.text}),(0,B.jsx)(`small`,{children:n.claimedBy??e.agentLabel??e.agentId})]})},n.todoId)})}),(0,B.jsx)(`div`,{className:`personal-completed-footer`,role:`status`,children:v?o(`tasks.historyLoading`):b?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`span`,{children:o(S?`tasks.historyExpired`:`tasks.historyError`)}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>{S&&(_(void 0),O.current&&(O.current.scrollTop=0)),C(!1),x(!1),te(e=>e+1)},children:o(`tasks.historyRetry`)})]}):r?g===null?o(`tasks.historyEnd`):(0,B.jsx)(`button`,{type:`button`,onClick:()=>{O.current&&(O.current.scrollTop=f.length*d)},children:o(`tasks.historyMore`)}):o(`tasks.historyLocalOnly`)})]})]})}function rx({children:e,count:t,label:n,tone:r,listView:i=!1}){let a=(0,z.useId)(),o=(0,z.useRef)(null),s=(0,z.useRef)([]),c=(0,z.useRef)(null),[l,u]=(0,z.useState)({after:!1,before:!1}),d=(0,z.useCallback)(()=>{let e=o.current;if(!e)return;let t={after:Math.max(0,e.scrollHeight-e.clientHeight)-e.scrollTop>1,before:e.scrollTop>1};u(e=>e.after===t.after&&e.before===t.before?e:t)},[]);return(0,z.useEffect)(()=>{let e=o.current;if(!e)return;let t=new ResizeObserver(d);return c.current=t,t.observe(e),e.addEventListener(`scroll`,d,{passive:!0}),d(),()=>{t.disconnect(),c.current=null,s.current=[],e.removeEventListener(`scroll`,d)}},[i,d]),(0,z.useEffect)(()=>{let e=o.current,t=c.current;if(!e||!t)return;for(let e of s.current)t.unobserve(e);let n=Array.from(e.children).filter(e=>e instanceof HTMLElement);for(let e of n)t.observe(e);s.current=n,d()},[e,t,i,d]),i?!t&&r!==`done`?null:(0,B.jsxs)(`details`,{className:`personal-task-group tone-${r}`,open:!0,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(om,{size:16}),(0,B.jsx)(`strong`,{children:n}),(0,B.jsx)(`span`,{children:t})]}),(0,B.jsx)(`div`,{className:`personal-task-list-rows`,children:e})]}):(0,B.jsxs)(`section`,{className:`personal-object-list personal-task-lane`,children:[(0,B.jsxs)(`header`,{id:a,children:[(0,B.jsxs)(`strong`,{children:[(0,B.jsx)(`i`,{"aria-hidden":`true`,className:`personal-kanban-dot tone-${r}`}),n]}),(0,B.jsx)(`span`,{children:t})]}),(0,B.jsx)(`div`,{"aria-labelledby":a,className:`personal-task-lane-scroll${l.before?` has-overflow-before`:``}${l.after?` has-overflow-after`:``}`,ref:o,role:`region`,tabIndex:t>0?0:-1,children:e})]})}function ix({historyEnabled:e=!1,goal:t,items:n,onDraftTaskFromMessage:r,onOpenChat:i,onQuickComplete:a,quickCompletingTodoIds:o,onSelect:s,selectedTodoId:c=null,userTodos:l}){let{t:u}=Ji(),[d,f]=(0,z.useState)(!1),[p,m]=(0,z.useState)({goalId:``,laneId:`all`}),h=(0,z.useRef)(null);(0,z.useEffect)(()=>{if(!c)return;let e=window.requestAnimationFrame(()=>h.current?.scrollIntoView({block:`nearest`,inline:`nearest`}));return()=>window.cancelAnimationFrame(e)},[c]);let g=l.filter(e=>e.goalId===t.goalId).map(e=>({...e,goalTitle:t.title})),_=e=>e.priority===`P0`?0:e.priority===`P1`?1:e.priority===`P2`?2:3,v=(0,z.useMemo)(()=>{let e=new Map((t.agentLanes??[]).map(e=>[e.agentId,e]));for(let n of t.agentTodos)n.claimedBy&&!e.has(n.claimedBy)&&e.set(n.claimedBy,{agentId:n.claimedBy,label:n.claimedBy});return[...e.values()]},[t.agentLanes,t.agentTodos]),y=p.goalId===t.goalId&&v.some(e=>e.agentId===p.laneId)?p.laneId:`all`,b=e=>y===`all`||e===y,x=t.agentTodos.filter(e=>e.taskClass!==`continuous_monitor`&&!e.done).filter(e=>b(e.claimedBy)).sort((e,t)=>_(e)-_(t)),S=t.agentTodos.filter(e=>e.taskClass!==`continuous_monitor`&&e.done).filter(e=>b(e.claimedBy)),C=n.filter(e=>e.kind===`schedule`&&b(e.schedule.agentId)),w=n.filter(e=>e.kind===`run`&&!!e.run.todoId&&b(e.run.agentId)),T=!g.length&&!x.length&&!S.length&&!C.length,E=n.filter(e=>e.kind===`message`&&(e.message.role===`user`||e.message.role===`assistant`)),D=E.reduce((e,t,n)=>t.message.role===`user`?n:e,-1),O=D>=0?E[D]?.message:null,k=D>=0?E.slice(D+1).reverse().find(e=>e.message.role===`assistant`)?.message:null,ee=D>=0&&E.slice(D+1).some(e=>e.message.role===`assistant`&&e.message.pending);return(0,B.jsxs)(`section`,{"aria-label":u(`header.tasks`),className:`personal-task-board${d?` is-list-view`:``}`,children:[(0,B.jsxs)(`header`,{className:`personal-task-view-toolbar`,children:[(0,B.jsx)(`div`,{children:(0,B.jsx)(`strong`,{children:u(`header.tasks`)})}),(0,B.jsxs)(`div`,{className:`personal-task-view-switch`,role:`group`,"aria-label":u(`tasks.viewLabel`),children:[(0,B.jsx)(`button`,{type:`button`,"aria-pressed":d,onClick:()=>f(!0),children:u(`tasks.listView`)}),(0,B.jsx)(`button`,{type:`button`,"aria-pressed":!d,onClick:()=>f(!1),children:u(`tasks.boardView`)})]})]}),v.length>1?(0,B.jsxs)(`section`,{"aria-label":u(`tasks.agentLaneFilter`),className:`personal-task-lane-filter`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(nm,{size:15}),(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:u(`tasks.agentLane`)})})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{className:`sr-only`,children:u(`tasks.agentLaneFilter`)}),(0,B.jsxs)(`select`,{"aria-label":u(`tasks.agentLaneFilter`),onChange:e=>m({goalId:t.goalId,laneId:e.target.value}),value:y,children:[(0,B.jsx)(`option`,{value:`all`,children:u(`tasks.allAgentLanes`,{count:v.length})}),v.map(e=>(0,B.jsx)(`option`,{value:e.agentId,children:e.label},e.agentId))]}),(0,B.jsx)(om,{"aria-hidden":!0,size:14})]})]}):null,O?(0,B.jsxs)(`section`,{"aria-label":u(`tasks.chatRecent`),className:`personal-task-chat-receipt`,children:[(0,B.jsx)(`span`,{className:`personal-task-chat-icon`,children:(0,B.jsx)(Nm,{size:18})}),(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:u(ee?`tasks.chatPending`:k?`tasks.chatAgentReplied`:`tasks.chatRecent`)}),(0,B.jsx)(`small`,{children:t.agentLabel??t.agentId})]}),(0,B.jsxs)(`p`,{className:`is-user`,children:[(0,B.jsx)(`b`,{children:u(`common.you`)}),O.text]}),k&&!k.pending?(0,B.jsxs)(`p`,{className:`is-assistant`,children:[(0,B.jsx)(`b`,{children:u(`common.agent`)}),k.text]}):null,(0,B.jsx)(`small`,{children:u(ee?`tasks.chatPendingDescription`:`tasks.chatUnchangedDescription`)})]}),(0,B.jsxs)(`footer`,{children:[(0,B.jsxs)(`button`,{onClick:i,type:`button`,children:[(0,B.jsx)(Nm,{size:14}),u(`tasks.chatViewReply`)]}),k&&!ee&&r?(0,B.jsxs)(`button`,{onClick:()=>r(k.text),type:`button`,children:[(0,B.jsx)(Om,{size:14}),u(`tasks.convertToTask`)]}):null]})]}):null,(0,B.jsxs)(`div`,{className:d?`personal-task-grouped-list`:`personal-task-kanban`,children:[(0,B.jsxs)(rx,{listView:d,count:g.length,label:u(`timeline.waitingConfirmation`),tone:`attention`,children:[g.map(e=>{let t=Zi(e.updatedAt,u);return(0,B.jsxs)(`button`,{onClick:()=>s({item:e,kind:`attention`}),type:`button`,children:[(0,B.jsx)(`span`,{"aria-hidden":`true`,className:`is-attention`,children:`!`}),(0,B.jsx)(`strong`,{children:e.text}),(0,B.jsxs)(`small`,{children:[(0,B.jsx)(`span`,{className:`personal-row-status ${e.blocking?`is-blocking`:`is-pending`}`,children:e.blocking?u(`tasks.blocked`):u(`tasks.pending`)}),t?(0,B.jsx)(`span`,{className:`personal-task-age`,children:u(`tasks.waitingAge`,{age:t})}):null]})]},e.todoId)}),g.length?null:(0,B.jsx)(`p`,{className:`personal-task-empty`,children:u(`tasks.emptyConfirm`)})]}),(0,B.jsxs)(rx,{listView:d,count:x.length,label:u(`tasks.pendingAndRunning`),tone:`progress`,children:[x.map(e=>{let n={...e,goalId:t.goalId,goalTitle:t.title,ownerLabel:e.claimedBy??t.agentLabel??t.agentId},r=w.find(t=>t.run.todoId===e.todoId)?.run;return(0,B.jsxs)(`div`,{className:`personal-task-card${r?` has-session`:``}${c===e.todoId?` is-selected`:``}`,ref:c===e.todoId?e=>{h.current=e}:void 0,children:[(0,B.jsxs)(`button`,{"aria-pressed":c===e.todoId,onClick:()=>s({item:n,kind:`todo`}),type:`button`,children:[(0,B.jsx)(`span`,{children:`○`}),(0,B.jsx)(`strong`,{children:e.text}),(0,B.jsxs)(`small`,{children:[e.priority?(0,B.jsx)(`span`,{className:`personal-priority-badge is-${e.priority.toLowerCase()}`,children:e.priority}):null,e.status===`blocked`?(0,B.jsx)(`span`,{className:`personal-priority-badge is-blocked`,children:u(`tasks.blocked`)}):null,r?(0,B.jsx)(`span`,{className:`personal-task-session-status`,children:r.status===`running`||r.status===`queued`?u(`runs.running`):r.status===`failed`?u(`tasks.sessionError`):u(`common.waiting`)}):null,e.status===`deferred`?(0,B.jsx)(`span`,{className:`personal-task-session-status`,children:u(`drawer.taskStatusDeferred`)}):r?null:(0,B.jsx)(`span`,{className:`personal-task-session-status`,children:u(`tasks.waiting`)}),e.claimedBy??t.agentLabel??t.agentId]})]}),(0,B.jsxs)(`div`,{className:`personal-task-card-actions`,children:[r?(0,B.jsxs)(`button`,{className:`personal-task-session-link`,"aria-label":u(`tasks.openExecution`,{name:e.text}),onClick:()=>s({item:r,kind:`run`}),title:r.status===`completed`?u(`tasks.viewResult`):u(`tasks.viewExecution`),type:`button`,children:[(0,B.jsx)(_m,{size:14}),(0,B.jsx)(`span`,{children:r.status===`completed`?u(`tasks.viewResult`):u(`tasks.viewExecution`)})]}):null,a?(0,B.jsx)(`button`,{"aria-busy":o?.has(e.todoId)||void 0,"aria-label":u(`tasks.markComplete`,{name:e.text}),disabled:o?.has(e.todoId),onClick:()=>void a(n),title:u(`tasks.completed`),type:`button`,children:o?.has(e.todoId)?(0,B.jsx)(km,{className:`personal-spin`,size:14}):(0,B.jsx)(am,{size:14})}):null,(0,B.jsx)(`button`,{"aria-label":u(`tasks.moreActions`,{name:e.text}),onClick:()=>s({item:n,kind:`todo`}),title:u(`common.actions`),type:`button`,children:(0,B.jsx)(gm,{size:14})})]})]},e.todoId)}),x.length?null:(0,B.jsx)(`p`,{className:`personal-task-empty`,children:u(`tasks.emptyRunning`)})]}),(0,B.jsxs)(rx,{listView:d,count:C.length,label:u(`tasks.scheduled`),tone:`schedule`,children:[C.map(e=>(0,B.jsxs)(`button`,{onClick:()=>s({item:e.schedule,kind:`schedule`}),type:`button`,children:[(0,B.jsx)(`span`,{children:`◷`}),(0,B.jsx)(`strong`,{children:e.schedule.label}),(0,B.jsx)(`small`,{children:e.schedule.status===`paused`?u(`schedule.paused`):u(`schedule.active`)})]},e.id)),C.length?null:(0,B.jsx)(`p`,{className:`personal-task-empty`,children:u(`tasks.emptySchedules`)})]}),(0,B.jsx)(nx,{goal:t,agentId:y,seed:S,enabled:e,listView:d,onSelect:s},`${t.goalId}:${y}:${e}`)]}),T?(0,B.jsx)(`p`,{className:`personal-task-empty`,children:u(`tasks.emptyGoal`)}):null]})}function ax(e,t){return{live_steering:{label:t(`lark.ingressSteering`),detail:t(`lark.ingressSteeringDescription`)},session_queue:{label:t(`lark.ingressQueue`),detail:t(`lark.ingressQueueDescription`)},async_inbox:{label:t(`lark.ingressAsync`),detail:t(`lark.ingressAsyncDescription`)},direct_session:{label:t(`lark.ingressLegacy`),detail:t(`lark.ingressLegacyDescription`)}}[e]}function ox(e,t){return e.listener_status===`starting`?{label:t(`lark.health.starting`),detail:t(`lark.health.startingDetail`),state:`not_ready`}:e.listener_status===`retrying`&&e.listener_error_code===`lark_event_source_disconnected`?{label:t(`lark.health.sourceDisconnected`),detail:t(`lark.health.sourceDisconnectedDetail`),state:`not_ready`}:e.listener_status===`retrying`?{label:t(`lark.health.retrying`),detail:t(`lark.health.retryingDetail`),state:`not_ready`}:e.listener_status===`stopped`||e.listener_status===null?{label:t(`lark.health.notStarted`),detail:t(`lark.health.notStartedDetail`),state:`not_ready`}:e.last_event_status===`message_context_permission_required`?{label:t(`lark.health.messageContextPermission`),detail:t(`lark.health.messageContextPermissionDetail`),state:`not_ready`}:e.last_event_status===`processing_failed`?{label:t(`lark.health.processingFailed`),detail:t(`lark.health.processingFailedDetail`),state:`not_ready`}:e.health_error_code===`invalid_routing_state`?{label:t(`lark.health.invalidRouting`),detail:t(`lark.health.invalidRoutingDetail`),state:`not_ready`}:e.last_event_status===`queued_for_agent`?{label:t(`lark.health.queued`),detail:t(`lark.health.queuedDetail`,{agent:e.agent_id??t(`lark.targetAgent`)}),state:`ready`}:e.last_event_status===`context_only_captured`||e.last_event_status===`context_only_already_captured`?{label:t(`lark.health.contextCaptured`),detail:t(`lark.health.contextCapturedDetail`),state:`ready`}:e.last_event_status===`ignored`&&e.last_event_reason===`not_addressed`?{label:t(`lark.health.notAddressed`),detail:t(`lark.health.notAddressedDetail`),state:`ready`}:e.last_event_status===`ignored`&&e.last_event_reason===`self_message`?{label:t(`lark.health.listening`),detail:t(`lark.health.ignoredSelf`),state:`ready`}:e.health_error_code===`lark_event_route_mismatch`||[`chat_mismatch`,`topic_mismatch`,`route_ambiguous`].includes(e.last_event_reason??``)?{label:e.last_event_reason===`route_ambiguous`?t(`lark.health.routeAmbiguous`):t(`lark.health.routeMismatch`),detail:e.last_event_reason===`route_ambiguous`?t(`lark.health.routeAmbiguousDetail`):t(`lark.health.routeMismatchDetail`),state:`not_ready`}:[`invalid_event`,`binding_unavailable`].includes(e.last_event_reason??``)?{label:t(`lark.health.routeUnavailable`),detail:t(`lark.health.routeUnavailableDetail`),state:`not_ready`}:e.last_event_status===`replied_and_acknowledged`?{label:t(`lark.health.listening`),detail:t(`lark.health.eventProcessed`,{events:e.event_count,replies:e.replied_count}),state:`ready`}:e.health_error_code===`lark_event_delivery_unverified`||e.event_count===0?{label:t(`lark.health.eventUnverified`),detail:t(`lark.health.eventUnverifiedDetail`),state:`unverified`}:{label:e.reply_ready?t(`lark.health.listening`):t(`lark.health.unavailable`),detail:t(`lark.health.lastStatus`,{status:e.last_event_status??t(`lark.health.waiting`)}),state:e.reply_ready?`ready`:`not_ready`}}function sx(e){return e.history_permission_guidance?.api_document_url??null}function cx(e,t,n){if(e instanceof Fh){let t=String(e.payload.error_code??``);return{lark_cli_not_installed:n(`lark.error.cliMissing`),lark_cli_not_executable:n(`lark.error.cliExecutable`),lark_cli_start_failed:n(`lark.error.cliStart`),lark_message_permissions_required:n(`lark.error.messagePermissions`),lark_app_required:n(`lark.error.appRequired`),invalid_lark_app:n(`lark.error.invalidApp`),lark_group_lookup_failed:n(`lark.error.groupLookup`),provider_api_failed:n(`lark.error.provider`)}[t]??e.message}return e instanceof Error?e.message:t}function lx({embedded:e=!1,focusGoalConnection:t=!1,goals:n,initialGoalId:r,onChanged:i,onClose:a}){let{t:o}=Ji(),[s,c]=(0,z.useState)(`connections`),[l,u]=(0,z.useState)([]),[d,f]=(0,z.useState)([]),[p,m]=(0,z.useState)(!0),[h,g]=(0,z.useState)(null),[_,v]=(0,z.useState)(``),[y,b]=(0,z.useState)(t),[x,S]=(0,z.useState)(``),[C,w]=(0,z.useState)(r??n[0]?.goalId??``),[T,E]=(0,z.useState)(``),[D,O]=(0,z.useState)([]),[k,ee]=(0,z.useState)(``),[te,A]=(0,z.useState)(!1),[j,M]=(0,z.useState)(null),[ne,N]=(0,z.useState)(`addressed_only`),[P,re]=(0,z.useState)(t&&r?`goal`:`manager`),[ie,ae]=(0,z.useState)(`async_inbox`),[F,oe]=(0,z.useState)(`topic_reply`),[I,se]=(0,z.useState)(``),[L,ce]=(0,z.useState)(!1),[le,ue]=(0,z.useState)({}),[de,fe]=(0,z.useState)(!1),[pe,me]=(0,z.useState)(null),[he,ge]=(0,z.useState)(null),[_e,ve]=(0,z.useState)(null),[ye,be]=(0,z.useState)(null),[xe,Se]=(0,z.useState)(!1),[Ce,we]=(0,z.useState)(`loopx-workspace-bot`),[Te,Ee]=(0,z.useState)(`feishu`),[De,Oe]=(0,z.useState)(null),[ke,Ae]=(0,z.useState)(!1),[R,je]=(0,z.useState)(null),Me=(0,z.useRef)(null),Ne=(0,z.useRef)(null),Pe=(0,z.useRef)(!1);async function Fe(){m(!0),g(null);try{let[e,t]=await Promise.all([Qg(),s_()]);u(e),f(t),S(t=>t||e.find(e=>e.reply_ready)?.app_ref||e.find(e=>e.ready)?.app_ref||e[0]?.app_ref||``)}catch(e){g(cx(e,o(`lark.error.configuration`),o))}finally{m(!1)}}(0,z.useEffect)(()=>{Fe()},[]),(0,z.useEffect)(()=>{if(!t||p||Pe.current||!r)return;Pe.current=!0;let e=d.find(e=>e.goal_id===r);e?Je(e):qe(n.find(e=>e.goalId===r))},[d,t,n,r,p]),(0,z.useEffect)(()=>{if(!y||!x||_e){O([]),ee(``),A(!1),M(null);return}let e=!1;A(!0),M(null);let t=window.setTimeout(()=>{a_(x,T).then(t=>{e||(O(t),ee(e=>t.some(t=>t.chat_id===e)?e:t[0]?.chat_id??``))}).catch(t=>{e||(O([]),ee(``),M(cx(t,o(`lark.error.groupLoad`),o)))}).finally(()=>{e||A(!1)})},180);return()=>{e=!0,window.clearTimeout(t)}},[x,T,y,_e]),(0,z.useEffect)(()=>{if(!xe||!De||[`ready`,`failed`,`cancelled`].includes(De.status))return;let e=!1,t=window.setTimeout(()=>{t_(De.setup_id).then(async t=>{e||(Oe(t),t.verification_url&&Ne.current!==t.verification_url&&(Ne.current=t.verification_url,Me.current&&!Me.current.closed&&(Me.current.location.href=t.verification_url)),t.status===`ready`&&(await Fe(),S(t.app_ref),ue({}),Se(!1)),t.status===`failed`&&je(t.error??o(`lark.error.appCreate`)))}).catch(t=>{e||je(cx(t,o(`lark.error.setupPoll`),o))})},650);return()=>{e=!0,window.clearTimeout(t)}},[xe,De]);let Ie=n.find(e=>e.goalId===C),Le=Ie?.agentId?[{agentId:Ie.agentId,label:Ie.agentLabel??Ie.agentId}]:[],Re=Ie?.agentLanes?.length?Ie.agentLanes:Le,ze=Re.some(e=>e.agentId===I),V=[];L?V=Re.map(e=>({agentId:e.agentId,appRef:le[e.agentId]??x})):ze&&(V=[{agentId:I,appRef:x}]);let Be=V.map(e=>e.agentId),Ve=!!_e||V.length>0&&V.every(e=>l.some(t=>t.app_ref===e.appRef&&t.reply_ready)),He=o(`lark.connect`);he?He=o(`lark.saveConnection`):L&&(He=o(`lark.connectAllAgentsAction`,{count:Be.length}));let Ue=l.find(e=>e.app_ref===x),We=D.find(e=>e.chat_id===k),Ge=(0,z.useMemo)(()=>{let e=_.trim().toLocaleLowerCase();return e?d.filter(t=>[t.app_label,t.chat_name,t.goal_title,t.topic_name].some(t=>t.toLocaleLowerCase().includes(e))):d},[d,_]),Ke=(0,z.useMemo)(()=>d.filter(e=>ox(e,o).state===`unverified`).length,[d,o]);function qe(e){let i=e??n.find(e=>e.goalId===r)??n[0];ge(null),ve(null),re(e||t?`goal`:`manager`),S(l.some(e=>e.app_ref===x)?x:l.find(e=>e.reply_ready)?.app_ref??l[0]?.app_ref??``),ee(``),w(i?.goalId??``),se(i?.agentId??``),ce(!1),ue({}),N(`addressed_only`),ae(`async_inbox`),oe(`topic_reply`),E(``),me(null),b(!0)}function Je(e){ge(e.goal_id),ve(e),re(e.conversation_kind??`goal`),S(e.app_ref),w(e.goal_id);let t=n.find(t=>t.goalId===e.goal_id),r=t?.agentLanes?.length?t.agentLanes:t?.agentId?[{agentId:t.agentId}]:[];se(e.agent_id??(r.length===1?r[0].agentId:``)),ce(!1),ue({}),N(e.capture_scope),ae(e.ingress_mode===`direct_session`?`async_inbox`:e.ingress_mode),oe(e.reply_mode),E(e.chat_name),me(null),b(!0)}function Ye(){Oe(null),je(null),Ne.current=null,Se(!0)}async function Xe(){if(!(ke||!/^[A-Za-z0-9][A-Za-z0-9._-]{0,99}$/.test(Ce))){Ae(!0),je(null),Ne.current=null,Me.current=window.open(window.location.href,`_blank`);try{let e=await e_({appRef:Ce,brand:Te});Oe(e)}catch(e){Me.current?.close(),je(cx(e,o(`lark.error.setupStart`),o))}finally{Ae(!1)}}}async function Ze(){let e=De;if(Se(!1),Me.current?.close(),e&&![`ready`,`failed`,`cancelled`].includes(e.status))try{await n_(e.setup_id)}catch{}}async function Qe(){if(!(!x||!C||!_e&&!We||P===`goal`&&Be.length===0||de)){fe(!0),me(null);try{let e={...P===`manager`?{..._e?{connectionId:_e.connection_id}:{appRef:x,chatId:We.chat_id,chatName:We.chat_name}}:_e?{connectionId:_e.connection_id,agentId:I}:{agentBindings:V,chatId:We.chat_id,chatName:We.chat_name},conversationKind:P,captureScope:P===`manager`?`addressed_only`:ne,goalId:C,incomingMode:ne===`configured_chat_all`?`all`:`mentions`,ingressMode:P===`manager`?`session_queue`:ie,replyMode:F},t=await c_({...e,execute:!1});if(!t.ok)throw new Fh(t.public_summary??t.blocker??o(`lark.error.bindPreview`),{error_code:t.blocker??`provider_api_failed`});let n=await c_({...e,execute:!0});if(!n.ok)throw new Fh(n.public_summary??n.blocker??o(`lark.error.bind`),{error_code:n.blocker??`provider_api_failed`});b(!1),await Fe(),i?.()}catch(e){me(cx(e,o(`lark.error.bind`),o))}finally{fe(!1)}}}async function $e(e,t){if(ye!==t){be(t);return}try{await l_(e,t),be(null),await Fe(),i?.()}catch(e){g(cx(e,o(`lark.error.disconnect`),o))}}return(0,B.jsxs)(`section`,{className:`personal-lark-settings${e?` is-embedded`:``}`,"aria-label":o(`lark.configuration`),children:[e?null:(0,B.jsxs)(`header`,{className:`personal-lark-header`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`small`,{children:o(`settings.goalConnections`)}),(0,B.jsx)(`h1`,{children:`Lark`})]}),(0,B.jsx)(`button`,{"aria-label":o(`lark.closeSettings`),className:`personal-icon-button`,onClick:a,type:`button`,children:(0,B.jsx)(ah,{size:18})})]}),(0,B.jsxs)(`nav`,{className:`personal-lark-tabs`,"aria-label":o(`lark.management`),children:[(0,B.jsxs)(`button`,{"aria-current":s===`apps`?`page`:void 0,onClick:()=>c(`apps`),type:`button`,children:[o(`lark.apps`),` `,(0,B.jsx)(`span`,{children:p?`…`:l.length})]}),(0,B.jsxs)(`button`,{"aria-current":s===`connections`?`page`:void 0,onClick:()=>c(`connections`),type:`button`,children:[o(`lark.connections`),` `,(0,B.jsx)(`span`,{children:p?`…`:d.length})]})]}),h?(0,B.jsx)(`p`,{className:`personal-notification-error`,children:h}):null,p?(0,B.jsxs)(`div`,{className:`personal-lark-loading`,children:[(0,B.jsx)(km,{className:`is-spinning`,size:18}),o(`lark.loading`)]}):null,!p&&s===`apps`?(0,B.jsxs)(`div`,{className:`personal-lark-apps`,children:[(0,B.jsxs)(`div`,{className:`personal-lark-app-toolbar`,children:[(0,B.jsx)(`span`,{children:o(`lark.reusableApps`,{count:l.length})}),(0,B.jsxs)(`button`,{className:`personal-primary-action`,onClick:Ye,type:`button`,children:[(0,B.jsx)(Bm,{size:16}),o(`lark.newApp`)]})]}),(0,B.jsxs)(`div`,{className:`personal-lark-app-grid`,children:[l.map(e=>(0,B.jsxs)(`article`,{className:`personal-lark-app-card`,children:[(0,B.jsx)(`span`,{className:`personal-lark-app-avatar`,children:(0,B.jsx)(nm,{size:19})}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:e.label}),(0,B.jsxs)(`small`,{children:[e.brand,` · lark-cli profile`]})]}),(0,B.jsx)(`em`,{className:e.reply_ready?`is-ready`:`is-off`,children:e.reply_ready?o(`lark.autoReplyReady`):e.ready?o(`lark.needsMessagePermissions`):o(`lark.needsSetup`)}),(0,B.jsxs)(`p`,{children:[o(`lark.goalConnections`,{count:d.filter(t=>t.app_ref===e.app_ref).length}),e.ready&&!e.reply_ready?` · ${o(`lark.autoReplyUnavailable`)}`:``]})]},e.app_ref)),l.length===0?(0,B.jsx)(`p`,{className:`personal-lark-empty`,children:o(`lark.noProfiles`)}):null]})]}):null,!p&&s===`connections`?(0,B.jsxs)(`div`,{className:`personal-lark-connections`,children:[Ke>0?(0,B.jsxs)(`p`,{className:`personal-lark-route-readiness`,role:`status`,children:[(0,B.jsx)(Nm,{size:15}),o(`lark.routesUnverified`,{count:Ke})]}):null,(0,B.jsxs)(`div`,{className:`personal-lark-toolbar`,children:[(0,B.jsxs)(`label`,{children:[(0,B.jsx)(Gm,{size:16}),(0,B.jsx)(`input`,{"aria-label":o(`lark.searchConnections`),onChange:e=>v(e.target.value),placeholder:o(`lark.searchPlaceholder`),type:`search`,value:_})]}),(0,B.jsxs)(`button`,{className:`personal-primary-action`,disabled:l.length===0||n.length===0,onClick:()=>qe(),type:`button`,children:[(0,B.jsx)(Bm,{size:16}),o(`lark.connectApp`)]})]}),(0,B.jsxs)(`div`,{className:`personal-lark-table`,role:`table`,"aria-label":o(`lark.goalTopicConnections`),children:[(0,B.jsxs)(`div`,{className:`personal-lark-table-head`,role:`row`,children:[(0,B.jsx)(`span`,{children:o(`lark.connection`)}),(0,B.jsx)(`span`,{children:o(`common.goal`)}),(0,B.jsx)(`span`,{children:o(`lark.capture`)}),(0,B.jsx)(`span`,{children:o(`lark.processing`)}),(0,B.jsx)(`span`,{children:o(`common.actions`)})]}),Ge.map(e=>{let t=ox(e,o);return(0,B.jsxs)(`div`,{className:`personal-lark-table-row`,role:`row`,children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.chat_name}),(0,B.jsxs)(`small`,{children:[e.app_label,` · `,t.label]}),(0,B.jsx)(`small`,{children:t.detail}),t.state===`unverified`?(0,B.jsxs)(`a`,{href:`https://open.feishu.cn/document/server-docs/im-v1/message/events/receive?lang=zh-CN`,rel:`noreferrer`,target:`_blank`,children:[(0,B.jsx)(_m,{size:12}),o(`lark.openEventSettings`)]}):null,sx(e)?(0,B.jsxs)(`a`,{href:sx(e)??void 0,rel:`noreferrer`,target:`_blank`,children:[(0,B.jsx)(_m,{size:12}),o(`lark.historyPermission`)]}):null]}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.goal_title}),(0,B.jsxs)(`small`,{children:[`# `,e.topic_name]})]}),(0,B.jsx)(`span`,{children:e.capture_scope===`addressed_only`?o(`lark.mentionsOnly`):o(`lark.allTopicMessages`)}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.conversation_kind===`manager`?o(`lark.managerConversation`):ax(e.ingress_mode,o).label}),(0,B.jsx)(`small`,{children:e.conversation_kind===`manager`?o(`lark.managerConversationDescription`):e.agent_id??ax(e.ingress_mode,o).detail})]}),(0,B.jsxs)(`span`,{className:`personal-lark-row-actions`,children:[(0,B.jsx)(`button`,{"aria-label":o(`lark.settingsConfigure`,{goal:e.goal_title}),onClick:()=>Je(e),type:`button`,children:(0,B.jsx)(Ym,{size:15})}),(0,B.jsxs)(`button`,{"aria-label":o(`lark.settingsDisconnect`,{goal:e.goal_title}),className:ye===e.connection_id?`is-confirm`:``,onClick:()=>void $e(e.goal_id,e.connection_id),type:`button`,children:[(0,B.jsx)(ih,{size:15}),ye===e.connection_id?o(`common.confirm`):null]})]})]},e.connection_id)}),Ge.length===0?(0,B.jsx)(`p`,{className:`personal-lark-empty`,children:o(`lark.noConnections`)}):null]})]}):null,y?(0,B.jsx)(`div`,{className:`personal-lark-modal-backdrop`,role:`presentation`,children:(0,B.jsxs)(`section`,{"aria-labelledby":`connect-lark-title`,"aria-modal":`true`,className:`personal-lark-modal`,role:`dialog`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`small`,{children:`Goal Topic connection`}),(0,B.jsx)(`h2`,{id:`connect-lark-title`,children:o(he?`lark.editConnection`:`lark.connectApp`)})]}),(0,B.jsx)(`button`,{"aria-label":o(`lark.closeConnection`),onClick:()=>b(!1),type:`button`,children:(0,B.jsx)(ah,{size:18})})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.conversationKind`)}),(0,B.jsxs)(`select`,{"aria-label":o(`lark.conversationKind`),disabled:!!_e,value:P,onChange:e=>re(e.target.value),children:[(0,B.jsx)(`option`,{value:`manager`,children:o(`lark.managerConversation`)}),(0,B.jsx)(`option`,{value:`goal`,children:o(`lark.workerConversation`)})]})]}),P===`manager`?(0,B.jsx)(`p`,{children:o(`lark.managerConversationDescription`)}):null,_e?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.appProfile`)}),(0,B.jsx)(`div`,{children:_e.app_label})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.groupChat`)}),(0,B.jsx)(`div`,{children:_e.chat_name})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.bindGoal`)}),(0,B.jsx)(`div`,{children:_e.goal_title})]}),(0,B.jsx)(`small`,{children:o(`lark.editPreservesIdentity`)})]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.appProfile`)}),(0,B.jsx)(`select`,{"aria-label":o(`lark.appProfile`),disabled:p,onChange:e=>{e.target.value===`__register__`?Ye():(S(e.target.value),ue({}))},value:x,children:p?(0,B.jsx)(`option`,{value:``,children:o(`lark.appLoading`)}):(0,B.jsxs)(B.Fragment,{children:[l.map(e=>(0,B.jsxs)(`option`,{disabled:!e.ready,value:e.app_ref,children:[e.label,e.reply_ready?``:e.ready?` · ${o(`lark.needsMessagePermissions`)}`:` · ${o(`lark.needsSetup`)}`]},e.app_ref)),(0,B.jsx)(`option`,{value:`__register__`,children:o(`lark.registerAnother`)})]})}),(0,B.jsx)(`small`,{children:o(`lark.defaultAgentAppDescription`)})]}),Ue?.ready&&!Ue.reply_ready?(0,B.jsx)(`div`,{className:`personal-lark-group-state is-error`,role:`alert`,children:o(`lark.appPermissions`)}):null,(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.groupChat`)}),(0,B.jsx)(`input`,{"aria-label":o(`lark.groupSearch`),onChange:e=>E(e.target.value),placeholder:o(`lark.groupSearch`),type:`search`,value:T}),te?(0,B.jsxs)(`div`,{className:`personal-lark-group-state`,role:`status`,children:[(0,B.jsx)(km,{className:`is-spinning`,size:15}),o(`lark.groupLoading`)]}):null,!te&&j?(0,B.jsx)(`div`,{className:`personal-lark-group-state is-error`,role:`alert`,children:j}):null,!te&&!j&&D.length===0?(0,B.jsx)(`div`,{className:`personal-lark-group-state`,role:`status`,children:o(`lark.groupEmpty`)}):null,!te&&!j&&D.length>0?(0,B.jsx)(`select`,{"aria-label":o(`lark.groupChat`),onChange:e=>ee(e.target.value),value:k,children:D.map(e=>(0,B.jsx)(`option`,{value:e.chat_id,children:e.chat_name},e.chat_id))}):null]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.bindGoal`)}),(0,B.jsx)(`select`,{"aria-label":o(`lark.bindGoal`),onChange:e=>{let t=e.target.value;w(t),se(n.find(e=>e.goalId===t)?.agentId??``),ue({})},value:C,children:n.map(e=>(0,B.jsx)(`option`,{value:e.goalId,children:e.title},e.goalId))})]})]}),(0,B.jsxs)(`label`,{className:`personal-lark-check`,children:[(0,B.jsx)(`input`,{checked:!0,readOnly:!0,type:`checkbox`}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:o(`lark.createAutomatically`)}),(0,B.jsx)(`small`,{children:o(`lark.createAutomaticallyDescription`)})]})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.topicPreview`)}),(0,B.jsxs)(`div`,{className:`personal-lark-topic-preview`,children:[(0,B.jsx)(Nm,{size:15}),`# `,Ie?.title??Ie?.goalId??`Goal`]})]}),P===`goal`?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.captureScope`)}),(0,B.jsxs)(`select`,{"aria-label":o(`lark.captureScope`),disabled:_e?.ingress_mode===`direct_session`,onChange:e=>N(e.target.value),value:ne,children:[(0,B.jsx)(`option`,{value:`addressed_only`,children:o(`lark.captureAddressed`)}),(0,B.jsx)(`option`,{value:`configured_chat_all`,children:o(`lark.captureAll`)})]}),(0,B.jsx)(`small`,{children:o(`lark.captureScopeDescription`)})]}),(0,B.jsxs)(`fieldset`,{"aria-label":o(`lark.agentIngress`),className:`personal-lark-ingress`,children:[(0,B.jsx)(`legend`,{children:o(`lark.agentIngress`)}),(0,B.jsx)(`div`,{children:[`live_steering`,`session_queue`,`async_inbox`].map(e=>{let t=ax(e,o);return(0,B.jsxs)(`label`,{className:ie===e?`is-active`:``,children:[(0,B.jsx)(`input`,{"aria-label":t.label,checked:ie===e,name:`lark-agent-ingress`,onChange:()=>ae(e),type:`radio`,value:e}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:t.label}),(0,B.jsx)(`small`,{children:t.detail})]})]},e)})})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.targetAgent`)}),(0,B.jsxs)(`select`,{"aria-label":o(`lark.targetAgent`),disabled:!!_e?.agent_id,onChange:e=>se(e.target.value),value:I,children:[ze?null:(0,B.jsx)(`option`,{disabled:!0,value:I,children:I?o(`lark.agentUnavailable`,{agent:I}):o(`lark.noAgentConfigured`)}),Re.map(e=>(0,B.jsx)(`option`,{value:e.agentId,children:e.label===e.agentId?e.agentId:`${e.label} · ${e.agentId}`},e.agentId))]}),(0,B.jsx)(`small`,{children:o(`lark.targetAgentDescription`)})]}),!he&&Re.length>1?(0,B.jsxs)(`label`,{"aria-label":o(`lark.connectAllAgents`),className:`personal-lark-check`,children:[(0,B.jsx)(`input`,{checked:L,onChange:e=>ce(e.target.checked),type:`checkbox`}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:o(`lark.connectAllAgents`)}),(0,B.jsx)(`small`,{children:o(`lark.connectAllAgentsDescription`,{count:Re.length})})]})]}):null,!he&&L&&Re.length>1?(0,B.jsxs)(`fieldset`,{"aria-label":o(`lark.agentApps`),className:`personal-lark-agent-apps`,children:[(0,B.jsx)(`legend`,{children:o(`lark.agentApps`)}),(0,B.jsx)(`small`,{children:o(`lark.agentAppsDescription`)}),(0,B.jsx)(`div`,{children:Re.map(e=>(0,B.jsxs)(`label`,{children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:e.label}),(0,B.jsx)(`small`,{children:e.agentId})]}),(0,B.jsx)(`select`,{"aria-label":o(`lark.agentAppSelection`,{agent:e.label}),onChange:t=>ue(n=>({...n,[e.agentId]:t.target.value})),value:le[e.agentId]??x,children:l.map(e=>(0,B.jsxs)(`option`,{disabled:!e.ready,value:e.app_ref,children:[e.label,e.reply_ready?``:e.ready?` · ${o(`lark.needsMessagePermissions`)}`:` · ${o(`lark.needsSetup`)}`]},e.app_ref))})]},e.agentId))})]}):null,L&&V.length>0&&!Ve?(0,B.jsx)(`div`,{className:`personal-lark-group-state is-error`,role:`alert`,children:o(`lark.agentAppPermissions`)}):null,Be.length===0?(0,B.jsx)(`p`,{className:`personal-notification-error`,role:`alert`,children:o(`lark.selectRegisteredAgent`)}):null]}):null,(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.replyMode`)}),(0,B.jsx)(`select`,{"aria-label":o(`lark.replyMode`),onChange:e=>oe(e.target.value),value:F,children:(0,B.jsx)(`option`,{value:`topic_reply`,children:o(`lark.topicReply`)})}),(0,B.jsx)(`small`,{children:o(`lark.replyModeDescription`)})]}),(0,B.jsxs)(`p`,{className:`personal-lark-cardinality`,children:[(0,B.jsx)(am,{size:15}),o(`lark.cardinality`)]}),pe?(0,B.jsx)(`p`,{className:`personal-notification-error`,role:`alert`,children:pe}):null,(0,B.jsxs)(`footer`,{children:[(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:()=>b(!1),type:`button`,children:o(`lark.cancel`)}),(0,B.jsxs)(`button`,{className:`personal-primary-action`,disabled:p||!x||!_e&&(!Ue?.reply_ready||!k)||P===`goal`&&(!Ve||Be.length===0)||!C||de,onClick:()=>void Qe(),type:`button`,children:[de?(0,B.jsx)(km,{className:`is-spinning`,size:15}):null,He]})]})]})}):null,xe?(0,B.jsx)(`div`,{className:`personal-lark-modal-backdrop is-setup`,role:`presentation`,children:(0,B.jsxs)(`section`,{"aria-labelledby":`new-lark-app-title`,"aria-modal":`true`,className:`personal-lark-modal personal-lark-setup-modal`,role:`dialog`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`small`,{children:o(`lark.reusableWorkspaceApp`)}),(0,B.jsx)(`h2`,{id:`new-lark-app-title`,children:o(`lark.newApp`)})]}),(0,B.jsx)(`button`,{"aria-label":o(`lark.closeCreate`),onClick:()=>void Ze(),type:`button`,children:(0,B.jsx)(ah,{size:18})})]}),De?(0,B.jsxs)(`div`,{className:`personal-lark-setup-progress`,children:[(0,B.jsx)(`span`,{className:`personal-lark-setup-icon is-${De.status}`,children:De.status===`ready`?(0,B.jsx)(am,{size:22}):(0,B.jsx)(km,{className:De.status===`failed`?``:`is-spinning`,size:22})}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:De.status===`ready`?o(`lark.appCreated`):De.status===`failed`?o(`lark.appCreateFailed`):o(`lark.waitingFeishu`)}),(0,B.jsx)(`p`,{children:De.status===`waiting_for_feishu`?o(`lark.waitingFeishuDescription`):De.status===`starting`?o(`lark.waitingLink`):De.error})]}),De.verification_url?(0,B.jsxs)(`a`,{href:De.verification_url,rel:`noreferrer`,target:`_blank`,children:[(0,B.jsx)(_m,{size:15}),o(`lark.reopenFeishu`)]}):null]}):(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{className:`personal-lark-setup-copy`,children:o(`lark.setupCopy`)}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.profileName`)}),(0,B.jsx)(`input`,{"aria-label":o(`lark.profileName`),autoComplete:`off`,onChange:e=>we(e.target.value),placeholder:`loopx-workspace-bot`,value:Ce})]}),(0,B.jsxs)(`label`,{children:[(0,B.jsx)(`span`,{children:o(`lark.region`)}),(0,B.jsxs)(`select`,{"aria-label":o(`lark.region`),onChange:e=>Ee(e.target.value),value:Te,children:[(0,B.jsx)(`option`,{value:`feishu`,children:`Feishu`}),(0,B.jsx)(`option`,{value:`lark`,children:`Lark`})]})]}),Ce&&!/^[A-Za-z0-9][A-Za-z0-9._-]{0,99}$/.test(Ce)?(0,B.jsx)(`p`,{className:`personal-notification-error`,children:o(`lark.profileValidation`)}):null]}),R?(0,B.jsx)(`p`,{className:`personal-notification-error`,children:R}):null,(0,B.jsxs)(`footer`,{children:[(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:()=>void Ze(),type:`button`,children:o(`lark.cancel`)}),De?null:(0,B.jsxs)(`button`,{className:`personal-primary-action`,disabled:ke||!/^[A-Za-z0-9][A-Za-z0-9._-]{0,99}$/.test(Ce),onClick:()=>void Xe(),type:`button`,children:[ke?(0,B.jsx)(km,{className:`is-spinning`,size:15}):(0,B.jsx)(_m,{size:15}),o(`lark.continueFeishu`)]})]})]})}):null]})}function ux(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function dx(e,t,n){let r=ux(t),i=ux(n);return Object.fromEntries(e.fields.flatMap(({key:e,nullable:t})=>{let n=r[e],a=i[e];return Object.hasOwn(r,e)&&(n!=null||t&&n===null)?[[e,n]]:Object.hasOwn(i,e)&&a!=null?[[e,a]]:[]}))}function fx(e,t){let n;try{n=JSON.parse(t)}catch{return null}if(!n||typeof n!=`object`||Array.isArray(n))return null;let r=new Set(e.fields.map(e=>e.key));return Object.keys(n).some(e=>!r.has(e))?null:n}function px(e,t,n){let r={...e,[t]:n},i=e.schedule;return t===`timezone`&&i&&typeof i==`object`&&`schema_version`in i&&i.schema_version===`periodic_report_schedule_v0`&&(r.schedule={...i,timezone:n}),r}function mx({id:e,value:t,timezone:n,onChange:r}){let{locale:i}=Ji(),a=i===`zh-CN`,o=t&&typeof t==`object`&&!Array.isArray(t)?t:null,s=String(o?.rrule??``).split(`;`).map(e=>e.split(`=`)),c=Object.fromEntries(s.filter(e=>e.length===2)),l=[`MO`,`TU`,`WE`,`TH`,`FR`,`SA`,`SU`],u=(e,t)=>e!==void 0&&/^\d+$/.test(e)&&Number(e)<=t,d=!o||o.schema_version===`periodic_report_schedule_v0`&&[`DAILY`,`WEEKLY`].includes(c.FREQ)&&o.timezone===n&&s.every(e=>e.length===2&&[`FREQ`,`BYDAY`,`BYHOUR`,`BYMINUTE`,`INTERVAL`].includes(e[0]))&&new Set(s.map(([e])=>e)).size===s.length&&u(c.BYHOUR,23)&&u(c.BYMINUTE??`0`,59)&&(c.FREQ===`WEEKLY`?l.includes(c.BYDAY):!c.BYDAY)&&(!c.INTERVAL||c.INTERVAL===`1`),f=a?[`星期一`,`星期二`,`星期三`,`星期四`,`星期五`,`星期六`,`星期日`]:[`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`,`Sunday`];function p(e){let t={FREQ:`WEEKLY`,BYDAY:`MO`,BYHOUR:`9`,BYMINUTE:`0`,...c,...e};r?.({schema_version:`periodic_report_schedule_v0`,schedule_id:o?.schedule_id??`report-schedule`,timezone:n,rrule:[`FREQ=${t.FREQ}`,...t.FREQ===`WEEKLY`?[`BYDAY=${t.BYDAY}`]:[],`BYHOUR=${t.BYHOUR}`,`BYMINUTE=${t.BYMINUTE}`].join(`;`)})}return(0,B.jsxs)(`div`,{className:`personal-report-schedule`,children:[(0,B.jsxs)(`label`,{className:`is-boolean`,htmlFor:e,children:[(0,B.jsx)(`span`,{children:a?`按日历汇报`:`Calendar reports`}),(0,B.jsx)(`input`,{id:e,type:`checkbox`,role:`switch`,checked:!!o,disabled:!r,onChange:e=>e.target.checked?p({}):r?.(null)})]}),o?(0,B.jsxs)(B.Fragment,{children:[d?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{htmlFor:`${e}-frequency`,children:[(0,B.jsx)(`span`,{children:a?`频率`:`Frequency`}),(0,B.jsxs)(`select`,{id:`${e}-frequency`,value:c.FREQ,disabled:!r,onChange:e=>p({FREQ:e.target.value}),children:[(0,B.jsx)(`option`,{value:`DAILY`,children:a?`每天`:`Daily`}),(0,B.jsx)(`option`,{value:`WEEKLY`,children:a?`每周`:`Weekly`})]})]}),c.FREQ===`WEEKLY`&&(0,B.jsxs)(`label`,{htmlFor:`${e}-day`,children:[(0,B.jsx)(`span`,{children:a?`星期`:`Weekday`}),(0,B.jsx)(`select`,{id:`${e}-day`,value:c.BYDAY,disabled:!r,onChange:e=>p({BYDAY:e.target.value}),children:l.map((e,t)=>(0,B.jsx)(`option`,{value:e,children:f[t]},e))})]}),(0,B.jsxs)(`label`,{htmlFor:`${e}-time`,children:[(0,B.jsxs)(`span`,{children:[a?`当地时间`:`Local time`,` (`,n,`)`]}),(0,B.jsx)(`input`,{id:`${e}-time`,type:`time`,required:!0,disabled:!r,value:`${(c.BYHOUR??`9`).padStart(2,`0`)}:${(c.BYMINUTE??`0`).padStart(2,`0`)}`,onChange:e=>{if(!/^\d{2}:\d{2}$/.test(e.target.value))return;let[t,n]=e.target.value.split(`:`);p({BYHOUR:t,BYMINUTE:n})}})]})]}):(0,B.jsx)(`p`,{role:`alert`,children:a?`此计划需在 JSON 模式中编辑;当前内容已保留。`:`Edit this schedule in JSON mode; its current value is preserved.`}),(0,B.jsx)(`p`,{children:a?`由现有唤醒检查到期计划;实际送达以回执为准。`:`Existing wakes check the schedule; delivery is confirmed by its receipt.`})]}):(0,B.jsx)(`p`,{children:a?`未设置日历计划;保持阶段结束时汇报。`:`No calendar schedule; report at validated stage boundaries.`})]})}function hx({copy:e,field:t,id:n,onChange:r,value:i,timezone:a}){let o=e[t.key]?.label??t.label,s=!r;if(t.input_kind===`periodic_report_schedule`)return(0,B.jsx)(mx,{id:n,value:i,timezone:a,onChange:r?e=>r(t.key,e):void 0});if(t.input_kind===`boolean`)return(0,B.jsxs)(`label`,{className:`is-boolean`,htmlFor:n,children:[(0,B.jsx)(`span`,{children:o}),(0,B.jsx)(`input`,{checked:i===!0,id:n,onChange:r?e=>r(t.key,e.target.checked):void 0,readOnly:s,role:`switch`,type:`checkbox`})]});if(t.input_kind===`select`)return(0,B.jsxs)(`label`,{htmlFor:n,children:[(0,B.jsx)(`span`,{children:o}),(0,B.jsxs)(`select`,{id:n,onChange:r?e=>r(t.key,e.target.value):void 0,value:typeof i==`string`?i:``,children:[(0,B.jsx)(`option`,{value:``}),(t.options??[]).map(e=>(0,B.jsx)(`option`,{value:e,children:e},e))]})]});if(t.input_kind===`string_list`)return(0,B.jsxs)(`label`,{htmlFor:n,children:[(0,B.jsx)(`span`,{children:o}),(0,B.jsx)(`textarea`,{id:n,onChange:r?e=>r(t.key,e.target.value.split(/\r?\n/u).filter(Boolean)):void 0,readOnly:s,rows:4,value:Array.isArray(i)?i.join(` +`):``})]});let c=t.input_kind===`number`;return(0,B.jsxs)(`label`,{htmlFor:n,children:[(0,B.jsx)(`span`,{children:o}),(0,B.jsx)(`input`,{id:n,max:t.maximum,min:t.minimum,onChange:r?e=>r(t.key,c?Number(e.target.value):e.target.value):void 0,readOnly:s,required:t.required,type:c?`number`:`text`,value:typeof i==`number`||typeof i==`string`?i:``})]})}function gx({copy:e={},disabled:t=!1,editor:n,enabledAction:r,omitKeys:i=[],onChange:a,value:o}){let s=(0,z.useId)(),c=new Set(i);return(0,B.jsx)(`fieldset`,{className:`personal-capability-fields`,disabled:t,children:n.fields.filter(e=>!c.has(e.key)).map(t=>{let n=(0,B.jsx)(hx,{copy:e,field:t,id:`${s}-${t.key.replace(/[^a-z0-9_-]/gi,`-`)}`,onChange:a,value:o[t.key],timezone:String(o.timezone??`UTC`)},t.key);return t.key===`enabled`&&t.input_kind===`boolean`?(0,B.jsxs)(`div`,{className:`personal-capability-enabled-row`,children:[n,r]},t.key):n})})}var _x={en:{manager_runtime:{displayName:`Manager runtime`,description:`Selects the persistent host-tool profile used by owner manager conversations.`},steward_executor:{displayName:`Steward executor`,description:`Selects the executor, model, and reasoning effort the steward channel answers on for this machine, ahead of the Chat service environment.`},todo_replan_cadence:{displayName:`Goal review cadence`,description:`Configures the Goal review cadence.`},change_quality_qualification:{displayName:`Change quality qualification`,description:`Prepares a provider-neutral review packet, allows at most one policy-authorized safe-fix pass, and can require an exact-diff receipt.`},explore_graph:{displayName:`Explore Graph`,description:`Organizes bounded exploration as a typed evidence graph so branches, findings, and synthesis remain inspectable.`},explore_harness:{displayName:`Explore Harness`,description:`Selects a capability-owned planning and research harness profile for bounded multi-step exploration.`},lark_event_inbox:{displayName:`Lark event inbox`,description:`Receives provider events through a local-private inbox binding before LoopX projects them into governed work.`,readOnlyReason:`This capability requires a local-private inbox binding. Manage it in Lark settings or through the capability CLI.`},lark_kanban_heartbeat_sync:{displayName:`Lark Kanban heartbeat sync`,description:`Synchronizes accepted LoopX work state to the configured Lark Kanban heartbeat surface.`},local_authority_shadow:{displayName:`Local authority shadow`,description:`Observes post-commit Todo and task-lease state through the shared authority contract without taking write authority.`},multi_subagent:{displayName:`Adaptive child capacity`,description:`Sets bounded child-agent capacity and the public-safe responsibility domains in which parallel work may be delegated.`},peer_task_coordination:{displayName:`Registered-peer task coordination`,description:`Routes explicitly scoped peer-owned work to one registered coordinator without granting cross-owner mutation authority.`},periodic_report:{displayName:`Periodic reports`,description:`Turns validated Goal stage progress into a frozen report and automatically delivers it through the configured Goal Channel with exact readback.`},pull_request_review:{displayName:`Pull-request review`,description:`Ranks the public GitHub PR review queue with a machine-level default; it never grants GitHub, Todo, push, or merge authority.`},reward_memory:{displayName:`Reward Memory experiment`,description:`Configures a reviewed local-private provider binding for Goal-scoped Agent recall and evidence-backed outcome learning.`}},"zh-CN":{manager_runtime:{displayName:`管家 Runtime`,description:`选择管家会话持续生效的宿主工具模式。`},steward_executor:{displayName:`管家执行器`,description:`选择本机管家通道使用的执行器、模型与推理档位,优先级高于服务环境变量。`},todo_replan_cadence:{displayName:`Goal 复核周期`,description:`配置 Goal 的复核周期。`},change_quality_qualification:{displayName:`变更质量验证`,description:`生成与 Provider 无关的审阅包,最多允许一次策略授权的安全修复,并可要求精确 diff 回执。`},explore_graph:{displayName:`探索图谱`,description:`把有界探索组织为 typed 证据图,让探索分支、发现与综合结论都可检查、可追溯。`},explore_harness:{displayName:`探索 Harness`,description:`为有界的多步探索选择由能力负责的规划与研究 Harness profile。`},lark_event_inbox:{displayName:`飞书事件收件箱`,description:`通过本机私有收件箱接收 Provider 事件,再由 LoopX 将其投影为受治理的工作。`,readOnlyReason:`此能力依赖本机私有的收件箱绑定,请在飞书设置或 capability CLI 中管理。`},lark_kanban_heartbeat_sync:{displayName:`飞书看板心跳同步`,description:`把 LoopX 已接受的工作状态同步到配置好的飞书看板心跳界面。`},local_authority_shadow:{displayName:`本地 Authority 影子观测`,description:`通过共享 Authority contract 观测提交后的 Todo 与 task lease 状态,但不取得写入权。`},multi_subagent:{displayName:`自适应子 Agent 容量`,description:`限定子 Agent 容量与可公开的职责域,只有落在这些边界内的工作才能并行委派。`},peer_task_coordination:{displayName:`已注册 Peer 任务协调`,description:`把明确限定的 Peer 工作路由给一个已注册协调者,不授予跨 Owner 修改权限。`},periodic_report:{displayName:`周期报告`,description:`把经过验证的 Goal 阶段进展整理为冻结报告,并通过配置的 Goal Channel 自动发送和精确回读。`},pull_request_review:{displayName:`Pull-request Review`,description:`配置公开 GitHub PR 审阅队列的本机默认排序;不会授予 GitHub、Todo、push 或 merge 权限。`},reward_memory:{displayName:`Reward Memory 实验`,description:`为 Goal 内 Agent 的召回与证据化结果学习配置经过审阅的本机私有 Provider 绑定。`}}},vx={en:{runtime_profile:{label:`Runtime profile`,description:`Restricted keeps scoped LoopX reads only. Trusted owner enables normal host tools while protected operations retain separate checks.`},executor_endpoint:{label:`Steward executor`,description:`The executor this machine's steward channel answers on. The choice outranks the Chat service environment and the shipped default.`},executor_model:{label:`Model`,description:`Optional model for the selected executor. Leave blank to keep the executor's own default.`},executor_reasoning_effort:{label:`Reasoning effort`,description:`Optional reasoning effort for the selected executor. Leave blank to keep the executor's own default.`},completed_todos:{label:`Completed Todos between Goal reviews`,description:`Machine default or explicit Goal override, from 1 to 5.`},allowed_domains:{label:`Allowed responsibility domains`,description:`Enter one bounded, public-safe domain per line.`},coordinator_agent_id:{label:`Coordinator Agent`,description:`Use an already registered Agent id; leave blank to disable coordination.`},enabled:{label:`Enabled`},model:{label:`Child model`,description:`For example gpt-5.6-luna. Blank clears the child model preference.`},reasoning_effort:{label:`Child reasoning effort`,description:`For example max; the host must support this model and effort.`},max_children:{label:`Maximum children`,description:`Hard upper bound for concurrently delegated child work.`},profile:{label:`Planner profile`,description:`Select one registered Explore Harness profile.`},profile_preset:{label:`Report profile`,description:`Capability-owned report profile, such as weekly-progress.`},wait_for_ci:{label:`Wait for CI`,description:`Disable to use local validation without querying or waiting for CI. Merge authority is unchanged.`},review_priority:{label:`Review priority`,description:`Choose whether other developers' PRs or the authenticated reviewer's own PRs are ranked first.`},route_ref:{label:`Goal Channel route`,description:`Public route alias only; credentials and provider identifiers stay outside this form.`},safe_fix:{label:`Allow one bounded safe-fix pass`},strict_receipt:{label:`Require an exact-diff receipt`},timezone:{label:`Timezone`,description:`Use an IANA timezone, for example Asia/Shanghai.`},schedule:{label:`Calendar reports`,description:`Optional daily or weekly reports; no schedule preserves stage-only delivery.`},config_path:{label:`Local-private configuration path`,description:`Repo-relative ignored JSON under .loopx/config/. Leave blank to retain the current binding; the path is never returned.`},enabled_agents:{label:`Enabled Goal Agents`,description:`Enter one registered Goal-local Agent id per line. A private binding currently accepts exactly one Agent.`}},"zh-CN":{runtime_profile:{label:`运行模式`,description:`restricted 仅使用受限 LoopX 读取;trusted_owner 开放常规宿主工具,但受保护操作仍单独校验。`},executor_endpoint:{label:`管家执行器`,description:`本机管家通道使用的执行器;优先级高于 Chat 服务环境变量与出货默认值。`},executor_model:{label:`模型`,description:`所选执行器使用的模型,可留空;留空表示沿用执行器自身的默认模型。`},executor_reasoning_effort:{label:`推理档位`,description:`所选执行器使用的推理档位,可留空;留空表示沿用执行器自身的默认档位。`},completed_todos:{label:`两次 Goal 复核间的已完成 Todo 数`,description:`可设置 1–5;机器默认值可被 Goal 显式覆盖。`},allowed_domains:{label:`允许的职责域`,description:`每行填写一个有边界、可公开的职责域。`},coordinator_agent_id:{label:`协调 Agent`,description:`填写一个已经注册的 Agent ID;留空表示关闭协调。`},enabled:{label:`启用`},model:{label:`子 Agent 模型`,description:`例如 gpt-5.6-luna;留空清除模型偏好。`},reasoning_effort:{label:`子 Agent 推理档位`,description:`例如 max;宿主须支持所选模型与档位。`},max_children:{label:`最大子 Agent 数`,description:`可同时委派的子任务硬上限。`},profile:{label:`规划 Profile`,description:`选择一个已注册的 Explore Harness profile。`},profile_preset:{label:`报告 Profile`,description:`由该能力管理的报告 profile,例如 weekly-progress。`},wait_for_ci:{label:`等待 CI`,description:`关闭后使用本地验证,不查询或等待 CI;不改变合并权限。`},review_priority:{label:`审阅优先级`,description:`选择先排其他开发者的 PR,还是先排当前已认证审阅者自己的 PR。`},route_ref:{label:`Goal Channel 路由`,description:`只填写公开 route alias;凭据与 Provider 标识不会进入此表单。`},safe_fix:{label:`允许一次有界安全修复`},strict_receipt:{label:`要求精确 diff 回执`},timezone:{label:`时区`,description:`使用 IANA 时区,例如 Asia/Shanghai。`},schedule:{label:`日历汇报`,description:`可选每日或每周计划;未设置时保持阶段结束汇报。`},config_path:{label:`本机私有配置路径`,description:`填写 .loopx/config/ 下、相对仓库且被忽略的 JSON;留空保留当前绑定,路径不会被回传。`},enabled_agents:{label:`已启用的 Goal Agent`,description:`每行填写一个已注册的 Goal 内 Agent ID;私有绑定当前只接受一个 Agent。`}}};function yx(e,t){let n=_x[t][e.capability_id];return n?{...e,display_name:n.displayName,description:n.description,configuration_editor:{...e.configuration_editor,...n.readOnlyReason?{read_only_reason:n.readOnlyReason}:{}}}:e}function bx(e){return vx[e]}Object.freeze(Object.keys(_x.en).sort());function xx(e,t){return e.available_scopes.includes(t)&&(t!==`machine`||!!e.machine_namespace)&&e.configuration_editor.editable&&e.configuration_editor.writable_scopes.includes(t)}function Sx({values:e,t}){return(0,B.jsxs)(`details`,{className:`personal-capability-raw-values`,children:[(0,B.jsx)(`summary`,{children:t(`capabilities.rawJson`)}),(0,B.jsx)(`div`,{className:`personal-capability-value-grid`,children:e.map(({label:e,value:t})=>(0,B.jsxs)(`section`,{children:[(0,B.jsx)(`strong`,{children:e}),(0,B.jsx)(`pre`,{children:t?JSON.stringify(t,null,2):`—`})]},e))})]})}function Cx({source:e,t}){return e?(0,B.jsxs)(`p`,{className:`personal-capability-effective-source`,children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:15}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:t(`capabilities.effectiveSource`)}),t(`capabilities.source.${e}`)]})]}):null}function wx({available:e,description:t,t:n}){return e?null:(0,B.jsxs)(`section`,{className:`personal-capability-editor-status is-read-only`,children:[(0,B.jsx)(rh,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:n(`capabilities.readOnly`)}),(0,B.jsx)(`p`,{children:t})]})]})}function Tx(e){return e.availability?.includes(`experimental`)?4:e.capability_id===`multi_subagent`?3:e.configuration_editor.writable_scopes.length===0||e.availability===`supported_explicit_opt_in`?2:e.availability===`supported_explicit_override`?0:1}function Ex(e,t){return[...e].sort((e,n)=>{let r=Tx(e)-Tx(n);if(r!==0)return r;let i=yx(e,t),a=yx(n,t);return i.display_name.localeCompare(a.display_name,t)||e.capability_id.localeCompare(n.capability_id)})}function Dx({capabilities:e,locale:t,onSelect:n,scope:r,selectedCapabilityId:i,t:a}){return(0,B.jsx)(`nav`,{"aria-label":a(r===`goal`?`capabilities.catalog`:`machine.capabilityCatalog`),className:`personal-capability-list`,tabIndex:0,children:Ex(e,t).map(e=>{let o=yx(e,t);return(0,B.jsxs)(`button`,{"aria-current":i===o.capability_id?`page`:void 0,onClick:()=>n(o.capability_id),type:`button`,children:[(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:o.display_name})}),(0,B.jsx)(`em`,{children:a(o.available_scopes.includes(r)?r===`goal`?`capabilities.goalScope`:`capabilities.machineScope`:r===`machine`?`capabilities.goalScope`:`capabilities.machineScope`)})]},o.capability_id)})})}function Ox({capability:e,locale:t,source:n}){let{t:r}=Ji(),i=yx(e,t);return(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`span`,{className:`personal-settings-icon`,children:(0,B.jsx)(Zm,{"aria-hidden":!0,size:18})}),(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`div`,{className:`personal-capability-heading-row`,children:[(0,B.jsx)(`h2`,{children:i.display_name}),(0,B.jsx)(Cx,{source:n,t:r})]}),e.context_contribution&&(0,B.jsxs)(`details`,{className:`personal-capability-help`,"data-testid":`capability-context-phases`,children:[(0,B.jsx)(`summary`,{children:t===`zh-CN`?`主 Agent 协作指导`:`Coordinator workflow guidance`}),(0,B.jsx)(`p`,{children:t===`zh-CN`?`随能力开启。支持以下阶段;此处展示能力范围,不能证明某次运行已读取或采纳。`:`Enabled with this capability. These are supported phases, not proof that a run read or adopted the guidance.`}),(0,B.jsx)(`dl`,{children:e.context_contribution.supported_phases.map(e=>(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:(0,B.jsx)(`code`,{children:e})}),(0,B.jsx)(`dd`,{children:kx[e][t===`zh-CN`?`zh`:`en`]})]},e))}),(0,B.jsx)(`p`,{children:t===`zh-CN`?`LoopX Turn 在请求与结果中提供上下文;原生工具入口由 LoopX skill 调用同一只读接口。执行与采纳需另看运行证据。`:`LoopX Turn includes context in requests and results. For native tools, the LoopX skill reads the same interface. Execution and adoption require run evidence.`})]}),(0,B.jsxs)(`details`,{className:`personal-capability-help`,children:[(0,B.jsx)(`summary`,{children:t===`zh-CN`?`配置说明`:`Configuration help`}),(0,B.jsx)(`p`,{children:i.description}),(0,B.jsx)(`dl`,{children:e.configuration_editor.fields.map(e=>{let n=bx(t)[e.key],r=n?.description??e.description;return r?(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:n?.label??e.label}),(0,B.jsx)(`dd`,{children:r})]},e.key):null})})]},e.capability_id)]})]})}var kx={before_plan:{zh:`规划前:识别独立问题并保留主 Agent 的核验与整合职责。`,en:`Before planning: identify independent questions and retain coordinator validation and integration.`},before_delegate:{zh:`委派前:明确子任务边界、模型偏好及预期证据。`,en:`Before delegation: specify task boundaries, model preferences and expected evidence.`},after_delegate_result:{zh:`回收后:核验结果,说明采纳决定并关联计划与成果。`,en:`After results: validate evidence, explain acceptance and link plans and deliverables.`}};function Ax({callbacks:e,goalId:t,notification:n,onChanged:r}){let{t:i}=Ji(),[a,o]=(0,z.useState)(!1),[s,c]=(0,z.useState)(null);async function l(n){if(e.onToggleGoalAutoNotify){o(!0),c(null);try{let a=await e.onToggleGoalAutoNotify({autoNotify:n,goalId:t});if(!a.ok){c(a.public_summary??a.blocker??i(`notifications.setupFailed`));return}r()}catch(e){c(e instanceof Error?e.message:i(`notifications.setupFailed`))}finally{o(!1)}}}return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsxs)(`label`,{className:`personal-notification-toggle`,children:[(0,B.jsx)(`input`,{checked:n?.humanGateAutoNotifyEnabled??!1,disabled:a||n?.configured!==!0||!e.onToggleGoalAutoNotify,onChange:e=>void l(e.target.checked),type:`checkbox`}),(0,B.jsx)(`span`,{children:i(`notifications.autoNotify`)}),a?(0,B.jsx)(km,{"aria-hidden":!0,className:`is-spinning`,size:14}):null]}),s?(0,B.jsx)(`p`,{className:`personal-notification-error`,role:`alert`,children:s}):null]})}function jx({goalId:e,onApplied:t,selected:n,t:r}){let[i,a]=(0,z.useState)({busy:null,draft:{},partialWrite:null,preview:null}),[o,s]=(0,z.useState)(null),[c,l]=(0,z.useState)(`guided`),[u,d]=(0,z.useState)(``),f=(0,z.useMemo)(()=>n?fx(n.configuration_editor,u):null,[n,u]),p=c===`guided`||f!==null;(0,z.useEffect)(()=>{l(`guided`),d(``),a({busy:null,draft:dx(n?.configuration_editor??{fields:[]},n?.current??n?.effective_configuration?.configuration??n?.default,n?.default),partialWrite:null,preview:null}),s(null)},[n]);async function m(t){if(!(!n||i.busy||!p)){a(e=>({...e,busy:`preview`,partialWrite:null})),s(null);try{let r=await Vg(e,n.capability_id,t);a(e=>({...e,preview:r}))}catch(e){s(e instanceof Error?e.message:r(`capabilities.previewFailed`))}finally{a(e=>({...e,busy:null}))}}}async function h(){if(!(!n||!i.preview||i.busy||!p)){a(e=>({...e,busy:`apply`})),s(null);try{let r=dx(n.configuration_editor,i.draft,n.default),o=await Hg(e,n.capability_id,i.preview.action===`delete`?null:r,i.preview.plan_revision);a(e=>({...e,partialWrite:o.status===`partial_write`?o:null,preview:null})),o.status!==`partial_write`&&t()}catch(e){a(e=>({...e,preview:null})),s(e instanceof Error?e.message:r(`capabilities.applyFailed`))}finally{a(e=>({...e,busy:null}))}}}function g(e,t){a(r=>({...r,draft:n?.capability_id===`periodic_report`?px(r.draft,e,t):{...r.draft,[e]:t},preview:null})),s(null)}function _(e){if(!n||i.busy)return;d(e);let t=fx(n.configuration_editor,e);a(e=>({...e,preview:null,draft:t?dx(n.configuration_editor,t,n.default):e.draft})),s(null)}function v(){i.busy||!p||(c===`guided`&&d(JSON.stringify(i.draft,null,2)),l(c===`guided`?`json`:`guided`),a(e=>({...e,preview:null})))}return{apply:h,changeDraft:g,changeJson:_,changeMode:v,editorMode:c,jsonDraft:u,jsonValid:p,error:o,mutation:i,preview:m}}function Mx({mutationError:e,onApplied:t,partialWrite:n,preview:r}){let{t:i}=Ji();return(0,B.jsxs)(B.Fragment,{children:[e?(0,B.jsx)(`p`,{className:`personal-machine-error`,role:`alert`,children:e}):null,n?(0,B.jsxs)(`section`,{"aria-live":`polite`,className:`personal-capability-recovery`,children:[(0,B.jsx)(rh,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:i(`capabilities.partialWrite`)}),(0,B.jsx)(`p`,{children:i(`capabilities.partialWriteDescription`)}),(0,B.jsx)(`small`,{children:n.recommended_action})]}),(0,B.jsxs)(`button`,{onClick:t,type:`button`,children:[(0,B.jsx)(Hm,{"aria-hidden":!0,size:15}),i(`capabilities.refreshSource`)]})]}):null,r?(0,B.jsxs)(`section`,{className:`personal-capability-preview`,"aria-label":i(`capabilities.preview`),children:[(0,B.jsx)(`strong`,{children:i(`capabilities.preview`)}),(0,B.jsx)(`span`,{children:i(`machine.action.${r.action}`)}),(0,B.jsx)(`small`,{children:i(`capabilities.previewLocked`)})]}):null]})}function Nx({callbacks:e,catalog:t,goalId:n,notification:r,onApplied:i,onNotificationChanged:a}){let{locale:o,t:s}=Ji(),c=(0,z.useMemo)(()=>Ex(t.capabilities,o),[t.capabilities,o]),[l,u]=(0,z.useState)(()=>c[0]?.capability_id??``),d=(0,z.useMemo)(()=>c.find(e=>e.capability_id===l)??c[0],[c,l]),f=(0,z.useMemo)(()=>d?yx(d,o):void 0,[o,d]),{apply:p,changeDraft:m,changeJson:h,changeMode:g,editorMode:_,jsonDraft:v,jsonValid:y,error:b,mutation:x,preview:S}=jx({goalId:n,onApplied:i,selected:f,t:s}),{busy:C,draft:w,partialWrite:T,preview:E}=x;if(!d||!f)return(0,B.jsx)(`p`,{className:`personal-capability-empty`,children:s(`capabilities.empty`)});let D=f.available_scopes.includes(`goal`),O=xx(f,`goal`),k=f.configuration_editor.read_only_reason??s(D?`capabilities.previewOnly`:`capabilities.machineOnly`);async function ee(){if(!f||!O||C||!y)return;let e=dx(f.configuration_editor,w,f.default);await S(e)}async function te(){!O||C||await S(null)}return(0,B.jsxs)(`div`,{className:`personal-capability-layout`,children:[(0,B.jsx)(Dx,{capabilities:t.capabilities,locale:o,onSelect:u,scope:`goal`,selectedCapabilityId:f.capability_id,t:s}),(0,B.jsxs)(`article`,{"aria-label":f.display_name,className:`personal-capability-detail`,tabIndex:0,children:[(0,B.jsx)(Ox,{capability:d,locale:o,source:f.effective_configuration?.source}),(0,B.jsx)(wx,{available:O,t:s,description:k}),f.capability_id===`lark_event_inbox`?(0,B.jsxs)(`section`,{className:`personal-capability-linked-setting`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:s(`capabilities.larkInboxNotificationSetting`)}),(0,B.jsx)(`p`,{children:s(`capabilities.larkInboxNotificationDescription`)})]}),(0,B.jsx)(Ax,{callbacks:e,goalId:n,notification:r,onChanged:a})]}):null,O?(0,B.jsxs)(B.Fragment,{children:[_===`json`||!f.configuration_editor.fields.some(e=>e.key===`enabled`&&e.input_kind===`boolean`)?(0,B.jsx)(`div`,{className:`personal-capability-editor-mode`,children:(0,B.jsxs)(`button`,{disabled:!!C||!y,onClick:g,type:`button`,children:[(0,B.jsx)(fm,{"aria-hidden":!0,size:14}),s(_===`guided`?`machine.editJson`:`machine.backToForm`)]})}):null,_===`guided`?(0,B.jsx)(`section`,{className:`personal-capability-field-summary`,children:(0,B.jsx)(gx,{disabled:!!C,copy:bx(o),editor:f.configuration_editor,onChange:m,value:w,enabledAction:(0,B.jsxs)(`button`,{className:`personal-capability-edit-json`,onClick:g,type:`button`,children:[(0,B.jsx)(fm,{"aria-hidden":!0,size:14}),s(`machine.editJson`)]})})}):(0,B.jsxs)(`label`,{className:`personal-capability-json-editor`,htmlFor:`goal-configuration-json`,children:[(0,B.jsx)(`span`,{children:s(`capabilities.jsonConfiguration`)}),(0,B.jsx)(`textarea`,{id:`goal-configuration-json`,"aria-describedby":`goal-configuration-json-help`,disabled:!!C,onChange:e=>h(e.target.value),rows:12,spellCheck:!1,value:v}),(0,B.jsx)(`small`,{id:`goal-configuration-json-help`,children:s(`capabilities.jsonHelp`)}),y?null:(0,B.jsx)(`span`,{className:`personal-machine-validation`,role:`alert`,children:s(`capabilities.jsonInvalid`)})]})]}):null,(0,B.jsx)(Mx,{mutationError:b,onApplied:i,partialWrite:T,preview:E}),O?(0,B.jsxs)(`footer`,{className:`personal-capability-actions`,children:[f.current&&f.available_scopes.includes(`machine`)?(0,B.jsx)(`button`,{disabled:!!C||!y,onClick:()=>void te(),type:`button`,children:s(`capabilities.restoreInheritance`)}):null,(0,B.jsx)(`button`,{disabled:!!C||!y,onClick:()=>void ee(),type:`button`,children:s(C===`preview`?`common.loading`:`capabilities.previewChanges`)}),(0,B.jsx)(`button`,{className:`is-primary`,disabled:!!C||!E||!y,onClick:()=>void p(),type:`button`,children:s(C===`apply`?`common.loading`:`capabilities.applyPreview`)})]}):null,(0,B.jsx)(Sx,{values:[{label:s(`capabilities.goalValue`),value:f.current},{label:s(f.machine_current?`capabilities.machineValue`:`capabilities.defaultValue`),value:f.machine_current??f.default}],t:s},d.capability_id)]})]})}function Px({callbacks:e,goalId:t,notification:n,onChanged:r}){let{t:i}=Ji(),[a,o]=(0,z.useState)(null),[s,c]=(0,z.useState)(null),[l,u]=(0,z.useState)(!1);function d(){t&&(u(!0),c(null),Bg(t).then(o).catch(e=>c(e instanceof Error?e.message:i(`capabilities.loadFailed`))).finally(()=>u(!1)))}return(0,z.useEffect)(d,[t]),t?l&&!a?(0,B.jsxs)(`p`,{"aria-live":`polite`,className:`personal-capability-empty`,children:[(0,B.jsx)(km,{className:`personal-spin`,size:18}),i(`capabilities.loading`)]}):s?(0,B.jsxs)(`section`,{className:`personal-capability-error`,role:`alert`,children:[(0,B.jsx)(rh,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`strong`,{children:i(`capabilities.loadFailed`)}),(0,B.jsx)(`small`,{children:s})]}),(0,B.jsxs)(`button`,{onClick:d,type:`button`,children:[(0,B.jsx)(Hm,{"aria-hidden":!0,size:15}),i(`capabilities.retry`)]})]}):a?(0,B.jsxs)(`section`,{className:`personal-capability-settings`,"data-revision":a.revision,children:[(0,B.jsxs)(`details`,{className:`personal-capability-scope-note`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:17}),i(`capabilities.atomicOverride`)]}),(0,B.jsx)(`p`,{children:i(`capabilities.atomicOverrideDescription`)})]}),(0,B.jsx)(Nx,{callbacks:e,catalog:a.capability_catalog,goalId:t,notification:n,onApplied:d,onNotificationChanged:r})]}):null:(0,B.jsx)(`p`,{className:`personal-capability-empty`,children:i(`capabilities.chooseGoal`)})}function Fx(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:{}}function Ix(e,t){let n=t?.machine_namespace;return n?e?.machine_configuration?.namespaces[n]:void 0}function Lx(e,t,n){return{...Fx(e.default),...Fx(t),...n}}function Rx(e,t){for(let n of e.configuration_editor.fields){let e=t[n.key];if(n.required&&(e==null||e===``))return!1}return e.capability_id===`periodic_report`&&t.enabled===!0?!!(String(t.profile_preset??``).trim()&&String(t.route_ref??``).trim()&&String(t.timezone??``).trim()):!0}function zx(e){try{let t=JSON.parse(e);return t&&typeof t==`object`&&!Array.isArray(t)?t:null}catch{return null}}function Bx(e){return e?e===`absent`?e:e.replace(/^sha256:/,``).slice(0,12):`—`}function Vx(){let{locale:e,t}=Ji(),[n,r]=(0,z.useState)(null),[i,a]=(0,z.useState)(``),[o,s]=(0,z.useState)({}),[c,l]=(0,z.useState)(`{}`),[u,d]=(0,z.useState)(`guided`),[f,p]=(0,z.useState)(null),[m,h]=(0,z.useState)(`upsert`),[g,_]=(0,z.useState)(null),[v,y]=(0,z.useState)(null),[b,x]=(0,z.useState)(`load`),[S,C]=(0,z.useState)(null),[w,T]=(0,z.useState)(null),E=(0,z.useMemo)(()=>Ex(n?.capability_catalog.capabilities??[],e),[n,e]),D=n?.invalid_namespaces[0],O=E.find(e=>e.capability_id===i)??(D?E.find(e=>e.machine_namespace===D):void 0)??E.find(e=>xx(e,`machine`))??E[0],k=O?yx(O,e):void 0,ee=Ix(n,k),te=!!(k?.machine_namespace&&ee),A=!!(k&&xx(k,`machine`)),j=(0,z.useMemo)(()=>zx(c),[c]),M=k?u===`json`?j:Lx(k,ee,o):null,ne=!!(k&&(u===`json`?j:Rx(k,M??{})));async function N(){r(await zg())}(0,z.useEffect)(()=>{let e=!0;return zg().then(t=>{e&&r(t)}).catch(n=>{e&&C(n instanceof Error?n.message:t(`machine.loadError`))}).finally(()=>{e&&x(null)}),()=>{e=!1}},[t]),(0,z.useEffect)(()=>{if(!k)return;let e=Ix(n,k),t=dx(k.configuration_editor,e??k.default,k.default),r=Lx(k,e,t);s(t),l(JSON.stringify(r,null,2)),d(A?`guided`:`json`),p(null),h(`upsert`),y(null)},[n,i,e]);function P(e,t){s(n=>k?.capability_id===`periodic_report`?px(n,e,t):{...n,[e]:t}),p(null),h(`upsert`),C(null),T(null)}function re(e){if(k){if(e===`json`)l(JSON.stringify(Lx(k,ee,o),null,2));else if(j)s(dx(k.configuration_editor,j,k.default));else{C(t(`machine.jsonInvalid`));return}d(e),p(null),h(`upsert`),C(null)}}async function ie(){if(!(!A||!k?.machine_namespace||!M||!ne||b)){x(`preview`),C(null),T(null);try{h(`upsert`),p(await Ug(k.machine_namespace,M))}catch(e){C(e instanceof Error?e.message:t(`machine.previewError`))}finally{x(null)}}}async function ae(){if(!(!A||!k?.machine_namespace||!te||b)){x(`preview`),C(null),T(null);try{h(`remove`),p(await Gg(k.machine_namespace))}catch(e){C(e instanceof Error?e.message:t(`machine.previewError`))}finally{x(null)}}}async function F(){if(!A||!k?.machine_namespace||!f||b||m===`upsert`&&!M)return;x(`apply`),C(null);let e=m;try{let n=e===`remove`?await Kg(k.machine_namespace,f.plan_revision):await Wg(k.machine_namespace,M,f.plan_revision);_(n),p(null),h(`upsert`),y(null),await N(),T(n.status===`applied`?t(e===`remove`?`machine.removed`:`machine.applied`):t(`machine.unchanged`))}catch(e){p(null),h(`upsert`),C(e instanceof Error?e.message:t(`machine.applyError`))}finally{x(null)}}async function oe(){if(!(!g?.transaction_id||b)){x(`rollback-preview`),C(null);try{y(await qg(g.transaction_id))}catch(e){C(e instanceof Error?e.message:t(`machine.rollbackError`))}finally{x(null)}}}async function I(){if(!(!g?.transaction_id||!v||b)){x(`rollback`),C(null);try{await Jg(g.transaction_id,v.plan_revision),_(null),y(null),p(null),await N(),T(t(`machine.rolledBack`))}catch(e){y(null),C(e instanceof Error?e.message:t(`machine.rollbackError`))}finally{x(null)}}}return b===`load`?(0,B.jsx)(`div`,{className:`personal-machine-loading`,role:`status`,children:t(`common.loading`)}):k?(0,B.jsxs)(`section`,{className:`personal-capability-settings`,"data-revision":n?.revision,children:[(0,B.jsxs)(`details`,{className:`personal-capability-scope-note`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:17}),t(`machine.liveDefault`)]}),(0,B.jsx)(`p`,{children:t(`machine.liveDefaultDescription`)})]}),(0,B.jsxs)(`div`,{className:`personal-capability-body`,children:[n?.status===`invalid`?(0,B.jsxs)(`section`,{className:`personal-machine-error`,"data-testid":`machine-invalid-repair`,role:`alert`,children:[(0,B.jsx)(`strong`,{children:t(`machine.invalidStoredConfiguration`)}),(0,B.jsx)(`p`,{children:t(`machine.invalidStoredConfigurationDescription`)})]}):null,(0,B.jsxs)(`div`,{className:`personal-capability-layout`,children:[(0,B.jsx)(Dx,{capabilities:E,locale:e,onSelect:a,scope:`machine`,selectedCapabilityId:k.capability_id,t}),(0,B.jsxs)(`article`,{"aria-label":k.display_name,className:`personal-capability-detail`,tabIndex:0,children:[(0,B.jsx)(Ox,{capability:O,locale:e,source:k.available_scopes.includes(`machine`)?te?`machine_default`:`capability_default`:void 0}),(0,B.jsx)(wx,{available:A,t,description:k.available_scopes.includes(`machine`)?t(`machine.editorUnavailableDescription`):t(`machine.goalOnly`)}),k.capability_id===`periodic_report`?(0,B.jsxs)(`section`,{className:`personal-capability-behavior-note`,children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:ee?.schedule?e===`zh-CN`?`日历与阶段汇报`:`Calendar and stage reports`:t(`machine.periodicReportActivation`)}),(0,B.jsx)(`p`,{children:ee?.schedule?ee.enabled===!0?e===`zh-CN`?`已配置日历计划,由现有唤醒检查;是否送达请核对报告回执。`:`A calendar schedule is configured and checked by existing wakes. Verify delivery in the report receipt.`:e===`zh-CN`?`日历计划已保存;启用此能力后才会检查和投递。`:`The schedule is saved; enable this capability to check and deliver reports.`:t(`machine.periodicReportActivationDescription`)})]})]}):null,k.capability_id===`change_quality_qualification`?(0,B.jsxs)(`section`,{className:`personal-capability-behavior-note`,children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:t(`machine.changeQualityActivation`)}),(0,B.jsx)(`p`,{children:t(`machine.changeQualityActivationDescription`)})]})]}):null,k.capability_id===`todo_replan_cadence`?(0,B.jsxs)(`section`,{className:`personal-capability-behavior-note`,children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:t(`machine.replanCadenceActivation`)}),(0,B.jsx)(`p`,{children:t(`machine.replanCadenceActivationDescription`)})]})]}):null,k.capability_id===`pull_request_review`?(0,B.jsxs)(`section`,{className:`personal-capability-behavior-note`,children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:18}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:e===`zh-CN`?`只改变队列排序`:`Queue ordering only`}),(0,B.jsx)(`p`,{children:e===`zh-CN`?`默认先审阅其他开发者的 PR;选择 owner-first 才会优先当前已认证审阅者自己的 PR。此配置不会发布 review、写 Todo、push 或 merge。`:`The default reviews other developers' PRs first; choose owner-first only when the authenticated reviewer's own PRs should lead. This setting never posts a review, writes Todos, pushes, or merges.`})]})]}):null,A?(0,B.jsxs)(B.Fragment,{children:[u===`json`||!k.configuration_editor.fields.some(e=>e.key===`enabled`&&e.input_kind===`boolean`)?(0,B.jsx)(`div`,{className:`personal-capability-editor-mode`,children:(0,B.jsxs)(`button`,{onClick:()=>re(u===`guided`?`json`:`guided`),type:`button`,children:[(0,B.jsx)(fm,{"aria-hidden":!0,size:14}),t(u===`guided`?`machine.editJson`:`machine.backToForm`)]})}):null,u===`guided`?(0,B.jsxs)(`section`,{className:`personal-capability-field-summary`,children:[(0,B.jsx)(gx,{copy:bx(e),disabled:!!b,editor:k.configuration_editor,onChange:P,value:o,enabledAction:(0,B.jsxs)(`button`,{className:`personal-capability-edit-json`,onClick:()=>re(`json`),type:`button`,children:[(0,B.jsx)(fm,{"aria-hidden":!0,size:14}),t(`machine.editJson`)]})}),ne?null:(0,B.jsx)(`p`,{className:`personal-machine-validation`,role:`alert`,children:t(`machine.requiredFields`)})]}):(0,B.jsxs)(`label`,{className:`personal-capability-json-editor`,htmlFor:`machine-configuration-json`,children:[(0,B.jsx)(`span`,{children:t(`machine.jsonConfiguration`)}),(0,B.jsx)(`textarea`,{"aria-describedby":`machine-configuration-json-help`,disabled:!!b,id:`machine-configuration-json`,onChange:e=>{l(e.target.value),p(null),C(null)},rows:12,spellCheck:!1,value:c}),(0,B.jsx)(`small`,{id:`machine-configuration-json-help`,children:t(`machine.jsonConfigurationHelp`)}),j?null:(0,B.jsx)(`span`,{className:`personal-machine-validation`,role:`alert`,children:t(`machine.jsonInvalid`)})]})]}):null,S?(0,B.jsx)(`p`,{className:`personal-machine-error`,role:`alert`,children:S}):null,w?(0,B.jsxs)(`p`,{className:`personal-machine-notice`,role:`status`,"aria-live":`polite`,children:[(0,B.jsx)(am,{"aria-hidden":!0,size:16}),w]}):null,f?(0,B.jsxs)(`section`,{"aria-label":t(`machine.preview`),className:`personal-machine-preview`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:t(`machine.preview`)}),(0,B.jsx)(`span`,{children:t(`machine.action.${f.action}`)})]}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`machine.currentRevision`)}),(0,B.jsx)(`dd`,{title:f.current_revision,children:Bx(f.current_revision)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`machine.desiredRevision`)}),(0,B.jsx)(`dd`,{title:f.desired_revision,children:Bx(f.desired_revision)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:t(`machine.changedNamespaces`)}),(0,B.jsx)(`dd`,{children:f.changed_namespaces.join(`, `)||t(`common.none`)})]})]}),(0,B.jsx)(`p`,{children:t(`machine.previewLocked`)})]}):null,g?.rollback_available&&g.transaction_id?(0,B.jsxs)(`section`,{className:`personal-machine-rollback`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:t(`machine.rollbackAvailable`)}),(0,B.jsx)(`p`,{children:t(v?`machine.rollbackPreviewDescription`:`machine.rollbackDescription`)})]}),(0,B.jsxs)(`button`,{className:`personal-secondary-action`,disabled:!!b||!!(v&&!v.rollback_allowed),onClick:()=>void(v?I():oe()),type:`button`,children:[(0,B.jsx)(Um,{"aria-hidden":!0,size:15}),t(b===`rollback`||b===`rollback-preview`?`common.loading`:v?`machine.confirmRollback`:`machine.previewRollback`)]})]}):null,A?(0,B.jsxs)(`footer`,{className:`personal-capability-actions`,children:[te?(0,B.jsxs)(`button`,{className:`is-danger`,disabled:!!b,onClick:()=>void ae(),type:`button`,children:[(0,B.jsx)(nh,{"aria-hidden":!0,size:15}),t(`machine.previewRemoval`)]}):null,(0,B.jsx)(`button`,{disabled:!!b||!ne,onClick:()=>void ie(),type:`button`,children:t(b===`preview`?`common.loading`:`machine.previewChanges`)}),(0,B.jsx)(`button`,{className:`is-primary`,disabled:!!b||!f,onClick:()=>void F(),type:`button`,children:t(b===`apply`?`common.loading`:`machine.applyPreview`)})]}):null,k.available_scopes.includes(`machine`)?(0,B.jsx)(Sx,{values:[{label:t(`machine.currentValue`),value:ee},{label:t(`capabilities.defaultValue`),value:k.default}],t},k.capability_id):null]})]})]})]}):(0,B.jsx)(`p`,{className:`personal-capability-empty`,children:t(`machine.capabilityEmpty`)})}function Hx(e,t){return t(e===`invalid`?`machine.credentialInvalid`:e===`configured`?`machine.credentialConfigured`:`machine.credentialAbsent`)}function Ux(e,t){return t(e===`machine_store`?`machine.credentialSourceMachine`:e===`service_environment`?`machine.credentialSourceEnvironment`:`machine.credentialSourceUnset`)}function Wx(){let{t:e}=Ji(),[t,n]=(0,z.useState)(null),[r,i]=(0,z.useState)(``),[a,o]=(0,z.useState)(``),[s,c]=(0,z.useState)(``),[l,u]=(0,z.useState)(null),[d,f]=(0,z.useState)(null),p=(0,z.useCallback)(async()=>{c(`load`);try{let e=await Lg();n(e),o(String(e.base_url.value??``))}catch(t){u(t instanceof Error?t.message:e(`machine.credentialError`))}finally{c(``)}},[e]);(0,z.useEffect)(()=>{p()},[p]);async function m(t,r){c(`store`),u(null),f(null);try{let e=await Rg(t);n(e),o(String(e.base_url.value??``)),i(``),f(r)}catch(t){u(t instanceof Error?t.message:e(`machine.credentialError`))}finally{c(``)}}if(!t&&s===`load`)return(0,B.jsx)(`div`,{className:`personal-machine-loading`,role:`status`,children:e(`common.loading`)});let h=t?`${Hx(t.provider_key.configured?`configured`:`absent`,e)} · ${Ux(t.provider_key.source,e)}`:``,g=t?`${t.base_url.value??e(`machine.credentialAbsent`)} · ${Ux(t.base_url.source,e)}`:``;return(0,B.jsxs)(`section`,{className:`personal-operator-credential`,"data-testid":`operator-credential-settings`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(Tm,{"aria-hidden":!0,size:17}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:e(`machine.credentialTitle`)}),(0,B.jsx)(`p`,{children:e(`machine.credentialDescription`)})]}),(0,B.jsx)(`span`,{className:`personal-operator-credential-status`,children:t?Hx(t.status,e):e(`common.loading`)})]}),t?(0,B.jsxs)(`dl`,{className:`personal-operator-credential-readback`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:e(`machine.credentialApiKey`)}),(0,B.jsx)(`dd`,{children:h})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:e(`machine.credentialFingerprint`)}),(0,B.jsx)(`dd`,{children:(0,B.jsx)(`code`,{children:t.provider_key.fingerprint??e(`common.none`)})})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:e(`machine.credentialBaseUrl`)}),(0,B.jsx)(`dd`,{children:g})]})]}):null,t?.status===`invalid`&&t.repair?(0,B.jsx)(`p`,{className:`personal-machine-error`,role:`alert`,children:t.repair}):null,(0,B.jsxs)(`label`,{htmlFor:`operator-credential-api-key`,children:[(0,B.jsx)(`span`,{children:e(`machine.credentialApiKey`)}),(0,B.jsx)(`input`,{autoComplete:`off`,disabled:!!s,id:`operator-credential-api-key`,onChange:e=>i(e.target.value),placeholder:e(`machine.credentialApiKeyPlaceholder`),type:`password`,value:r})]}),(0,B.jsxs)(`label`,{htmlFor:`operator-credential-base-url`,children:[(0,B.jsx)(`span`,{children:e(`machine.credentialBaseUrl`)}),(0,B.jsx)(`input`,{autoComplete:`off`,disabled:!!s,id:`operator-credential-base-url`,onChange:e=>o(e.target.value),placeholder:e(`machine.credentialBaseUrlPlaceholder`),type:`text`,value:a})]}),l?(0,B.jsx)(`p`,{className:`personal-machine-error`,role:`alert`,children:l}):null,d?(0,B.jsxs)(`p`,{className:`personal-machine-notice`,role:`status`,"aria-live":`polite`,children:[(0,B.jsx)(am,{"aria-hidden":!0,size:16}),d]}):null,(0,B.jsxs)(`footer`,{className:`personal-operator-credential-actions`,children:[(0,B.jsx)(`button`,{className:`is-primary`,disabled:!!s||!r.trim()&&!a.trim(),onClick:()=>void m({...r.trim()?{provider_key:r}:{},...a.trim()?{base_url:a}:{}},e(`machine.credentialStored`)),type:`button`,children:e(s===`store`?`common.loading`:`machine.credentialStore`)}),(0,B.jsxs)(`button`,{disabled:!!s||t?.provider_key.configured!==!0,onClick:()=>void m({clear_provider_key:!0},e(`machine.credentialCleared`)),type:`button`,children:[(0,B.jsx)(nh,{"aria-hidden":!0,size:15}),e(`machine.credentialClearKey`)]}),(0,B.jsxs)(`button`,{disabled:!!s||t?.base_url.configured!==!0,onClick:()=>void m({clear_base_url:!0},e(`machine.credentialCleared`)),type:`button`,children:[(0,B.jsx)(nh,{"aria-hidden":!0,size:15}),e(`machine.credentialClearUrl`)]})]}),(0,B.jsxs)(`details`,{className:`personal-capability-scope-note`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(Xm,{"aria-hidden":!0,size:17}),e(`machine.credentialTitle`)]}),(0,B.jsx)(`p`,{children:e(`machine.credentialBoundary`)})]})]})}var Gx={appearance:Im,capabilities:Zm,language:Em,lark:Ym,machine:qm,provider:Tm};function Kx({callbacks:e,focusGoalConnection:t=!1,goals:n,initialGoalId:r,initialTab:i=`lark`,goalNotifications:a,onChanged:o,onClose:s,onThemeChange:c,theme:l}){let{locale:u,setLocale:d,t:f}=Ji(),[p,m]=(0,z.useState)(i),h=[...r?[{key:`capabilities`,label:f(`capabilities.title`)}]:[],{key:`provider`,label:f(`settings.modelProvider`)},{key:`machine`,label:f(`settings.globalCapabilities`)},{key:`lark`,label:`Lark`},{key:`appearance`,label:f(`settings.appearance`)},{key:`language`,label:f(`settings.language`)}],g=[{label:f(`settings.languageEnglish`),value:`en`},{label:f(`settings.languageSimplifiedChinese`),value:`zh-CN`}],_={appearance:{title:f(`settings.appearance`)},capabilities:{title:f(`capabilities.title`)},language:{title:f(`settings.language`)},lark:{title:`Lark`},machine:{title:f(`settings.globalCapabilities`)},provider:{title:f(`settings.modelProvider`)}}[p];return(0,B.jsxs)(`section`,{"aria-label":f(`settings.title`),className:`personal-settings-page`,"data-pw-theme":l,children:[(0,B.jsxs)(`aside`,{className:`personal-settings-sidebar`,children:[(0,B.jsxs)(`button`,{className:`personal-settings-back`,onClick:s,type:`button`,children:[(0,B.jsx)(Xp,{size:17}),(0,B.jsx)(`span`,{children:f(`settings.back`)})]}),(0,B.jsxs)(`div`,{className:`personal-settings-title`,children:[(0,B.jsx)(`small`,{children:f(`settings.eyebrow`)}),(0,B.jsx)(`strong`,{children:f(`settings.title`)})]}),(0,B.jsx)(`nav`,{"aria-label":f(`settings.categories`),className:`personal-settings-tabs`,children:h.map(e=>{let t=Gx[e.key];return(0,B.jsxs)(`button`,{"aria-current":p===e.key?`page`:void 0,onClick:()=>m(e.key),type:`button`,children:[(0,B.jsx)(t,{size:17}),(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:e.label})})]},e.key)})})]}),(0,B.jsxs)(`main`,{className:`personal-settings-body`,children:[(0,B.jsx)(`header`,{className:`personal-settings-header`,children:(0,B.jsx)(`div`,{children:(0,B.jsx)(`h1`,{children:_.title})})}),p===`lark`?(0,B.jsx)(lx,{embedded:!0,focusGoalConnection:t,goals:n,initialGoalId:r,onChanged:o,onClose:s}):null,p===`provider`?(0,B.jsx)(`div`,{className:`personal-provider-settings`,children:(0,B.jsx)(Wx,{})}):null,p===`machine`?(0,B.jsx)(Vx,{}):null,p===`capabilities`?(0,B.jsx)(Px,{callbacks:e,goalId:r,notification:a.find(e=>e.goalId===r),onChanged:o}):null,p===`appearance`?(0,B.jsxs)(`section`,{className:`personal-detail-card personal-appearance-settings`,children:[(0,B.jsx)(`small`,{children:f(`settings.workspaceDisplay`)}),(0,B.jsx)(`h3`,{children:f(`settings.appearance`)}),(0,B.jsxs)(`div`,{className:`personal-settings-choice-group`,role:`radiogroup`,"aria-label":f(`settings.workspaceTheme`),children:[(0,B.jsxs)(`button`,{"aria-checked":l===`loopx`,onClick:()=>c(`loopx`),role:`radio`,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-settings-theme-swatch is-loopx`}),(0,B.jsx)(`strong`,{children:f(`settings.themeLoopx`)})]}),(0,B.jsxs)(`button`,{"aria-checked":l===`paper`,onClick:()=>c(`paper`),role:`radio`,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-settings-theme-swatch is-paper`}),(0,B.jsx)(`strong`,{children:f(`settings.themeDefault`)})]}),(0,B.jsxs)(`button`,{"aria-checked":l===`brutal`,onClick:()=>c(`brutal`),role:`radio`,type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-settings-theme-swatch is-brutal`}),(0,B.jsx)(`strong`,{children:f(`settings.themeHighContrast`)})]})]})]}):null,p===`language`?(0,B.jsxs)(`section`,{className:`personal-settings-card`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`span`,{className:`personal-settings-icon`,children:(0,B.jsx)(Em,{size:18})}),(0,B.jsx)(`div`,{children:(0,B.jsx)(`h2`,{children:f(`settings.language`)})})]}),(0,B.jsx)(`div`,{"aria-label":f(`settings.language`),className:`personal-language-options`,role:`radiogroup`,children:g.map(e=>(0,B.jsxs)(`button`,{"aria-checked":u===e.value,className:u===e.value?`is-selected`:``,onClick:()=>d(e.value),role:`radio`,type:`button`,children:[(0,B.jsx)(`span`,{children:(0,B.jsx)(`strong`,{children:e.label})}),u===e.value?(0,B.jsx)(am,{"aria-hidden":!0,size:17}):null]},e.value))})]}):null]})]})}var qx=`loopx-pw-theme`,Jx=`loopx`;function Yx(){try{let e=window.localStorage.getItem(qx);return e===`loopx`||e===`paper`||e===`brutal`?e:Jx}catch{return Jx}}function Xx(e){try{window.localStorage.setItem(qx,e)}catch{}}function Zx({drawer:e,drawerMode:t=`panel`,drawerOpen:n,main:r,mobileSidebarOpen:i=!1,onCloseMobileSidebar:a,sidebar:o,theme:s=`loopx`}){let{t:c}=Ji(),l=(0,z.useRef)(null),u=(0,z.useRef)(null);return(0,z.useEffect)(()=>{if(!i)return;u.current=document.activeElement instanceof HTMLElement?document.activeElement:null;let e=l.current?.querySelectorAll(`button:not([disabled]), a[href], select:not([disabled]), textarea:not([disabled]), input:not([disabled]), [tabindex]:not([tabindex="-1"])`);e?.[0]?.focus();function t(t){if(t.key!==`Tab`||!e?.length)return;let n=e[0],r=e[e.length-1];t.shiftKey&&document.activeElement===n?(t.preventDefault(),r.focus()):!t.shiftKey&&document.activeElement===r&&(t.preventDefault(),n.focus())}return document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`keydown`,t),u.current?.focus(),u.current=null}},[i]),(0,B.jsxs)(`section`,{className:`personal-workspace-shell${n?` has-drawer`:``}${n&&t.startsWith(`inspector`)?` has-task-inspector`:``}${t===`inspector-full`?` is-task-inspector-full`:``}${i?` mobile-sidebar-open`:``}`,"data-pw-theme":s,children:[i?(0,B.jsx)(`button`,{"aria-hidden":!0,className:`personal-sidebar-backdrop`,onClick:a,tabIndex:-1,type:`button`}):null,(0,B.jsx)(`aside`,{"aria-label":i?c(`header.goalNavigation`):void 0,"aria-modal":i?!0:void 0,className:`personal-workspace-sidebar`,"data-workspace-sidebar":!0,ref:l,role:i?`dialog`:void 0,children:(0,B.jsxs)(`div`,{className:`personal-workspace-sidebar-inner`,children:[i?(0,B.jsxs)(`button`,{className:`personal-sr-only`,onClick:a,type:`button`,children:[c(`common.close`),` `,c(`header.goalNavigation`)]}):null,o]})}),(0,B.jsx)(`main`,{"aria-hidden":i||void 0,className:`personal-workspace-main`,inert:i||void 0,children:r}),n?(0,B.jsx)(`aside`,{className:`personal-workspace-drawer`,"data-context-drawer":!0,"data-drawer-mode":t,children:e}):null]})}function Qx(e){let t=e.match(/(?:下一步|建议|行动项|待办)[::\s]*([^\n]+)/u),n=t?t[1]:e;n=n.replace(/```[\s\S]*?```/g,``).replace(/`([^`]+)`/g,`$1`).replace(/\[([^\]]+)\]\([^)]+\)/g,`$1`).replace(/[#*~_>]/g,``).replace(/^[-*•\d+.\s]+/u,``).replace(/^(好的|没问题|收到|建议如下|任务如下|分析如下|结论[::])[\s,,::]*/u,``);let r=(n.split(/\r?\n/).map(e=>e.trim()).filter(Boolean)[0]||n).replace(/\s+/gu,` `).trim();return Array.from(r).slice(0,120).join(``)}function $x(e){let t=new Map;return e.forEach(e=>{let n=e.fields.find(e=>e.key===`todo_id`)?.value??``,r=[e.actionKind,e.goalId??``,n,e.title].join(`:`);t.set(r,e)}),[...t.values()]}function eS(e,t,n){if(!e)return n(`home.noFirstActivity`);let r=new Date(e);if(Number.isNaN(r.getTime()))return e;let i=new Date,a=new Intl.DateTimeFormat(t,{hour:`2-digit`,minute:`2-digit`,hour12:!1}).format(r);return r.toDateString()===i.toDateString()?n(`home.todayAt`,{time:a}):new Intl.DateTimeFormat(t,{month:`numeric`,day:`numeric`,hour:`2-digit`,minute:`2-digit`,hour12:!1}).format(r)}function tS({goals:e,onSelectGoal:t,onRetry:n,systemHealth:r}){let{locale:i,t:a}=Ji(),o=e.filter(e=>e.activationState===`active`),s=o.filter(e=>e.loadState===`error`).length,c=[{key:`needs_you`,label:a(`home.lane.needsYou`)},{key:`running`,label:a(`home.lane.running`)},{key:`observing`,label:a(`home.lane.observing`)},{key:`scheduled`,label:a(`home.lane.scheduled`)}],l=Object.fromEntries(c.map(e=>[e.key,[]])),u=[],d=[];e.filter(e=>!e.loadState).forEach(e=>{let t=qy(e);t===`history`?u.push(e):t===`stopped`?d.push(e):l[t].push(e)});let f=e=>(0,B.jsxs)(`button`,{className:`personal-home-goal-card`,"data-goal-state":e.loadState??e.state,"data-load-error":e.loadError,onClick:()=>t(e.goalId),type:`button`,children:[(0,B.jsxs)(`span`,{className:`personal-home-goal-meta`,children:[(0,B.jsx)(`i`,{}),e.agentLaneCount&&e.agentLaneCount>1?a(`header.workAgentCount`,{count:e.agentLaneCount}):e.agentLabel??e.agentId]}),(0,B.jsx)(`strong`,{children:e.title}),(0,B.jsx)(`p`,{children:e.loadError?a(`startup.error.${e.loadError}`):e.needsYou??e.nextSentence}),(0,B.jsxs)(`footer`,{children:[(0,B.jsx)(`span`,{children:e.loadState?a(e.loadState===`error`?`startup.goalError`:`startup.goalLoading`):Yi(e.state,i)}),(0,B.jsx)(`small`,{title:e.latestActivity,children:e.loadState?``:e.latestActivity?eS(e.latestActivity,i,a):e.agentTodos.length?a(`home.taskCount`,{count:e.agentTodos.length}):a(`home.noActivity`)})]})]},e.goalId);return(0,B.jsxs)(`section`,{"aria-label":a(`home.workspace`),className:`personal-home-board`,children:[r&&(!r.ok||r.issues.length>0||r.freshnessWarning)?(0,B.jsxs)(`div`,{className:`personal-system-health-banner`,role:`alert`,children:[(0,B.jsxs)(`div`,{className:`personal-system-health-header`,children:[(0,B.jsx)(lm,{size:15}),(0,B.jsx)(`strong`,{children:a(`home.systemHealth`,{summary:r.summary})}),r.freshnessWarning?(0,B.jsxs)(`small`,{children:[`(`,r.freshnessWarning,`)`]}):null]}),r.issues.length>0?(0,B.jsx)(`ul`,{className:`personal-system-health-issues`,children:r.issues.map((e,t)=>(0,B.jsx)(`li`,{children:e},t))}):null]}):null,o.some(e=>e.loadState)?(0,B.jsxs)(`section`,{className:`personal-home-lane`,"aria-live":`polite`,children:[(0,B.jsx)(`header`,{children:a(`startup.progress`,{loaded:o.filter(e=>!e.loadState).length,total:o.length})}),s?(0,B.jsxs)(`div`,{className:`personal-stopped-goal-error`,role:`status`,children:[(0,B.jsx)(`span`,{children:a(`startup.failedCount`,{count:s})}),(0,B.jsx)(`button`,{className:`min-h-11 rounded-md border px-3 py-2 text-sm`,onClick:n,type:`button`,children:a(`startup.retryFailed`)})]}):null,o.filter(e=>e.loadState).map(f)]}):null,(0,B.jsx)(`div`,{className:`personal-home-lanes`,children:c.map(e=>(0,B.jsxs)(`section`,{className:`personal-home-lane is-${e.key}`,"data-testid":`personal-home-lane-${e.key}`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`i`,{}),e.label]}),(0,B.jsx)(`b`,{children:l[e.key].length})]}),(0,B.jsx)(`div`,{className:`personal-home-lane-list`,children:l[e.key].length?l[e.key].map(f):(0,B.jsx)(`span`,{className:`personal-home-empty`,children:a(`home.empty`)})})]},e.key))}),(0,B.jsxs)(`details`,{className:`personal-home-history`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(`span`,{children:a(`home.history`)}),(0,B.jsx)(`b`,{children:u.length}),(0,B.jsx)(`small`,{children:a(`home.completedGoals`)})]}),(0,B.jsx)(`div`,{children:u.length?u.map(f):(0,B.jsx)(`span`,{className:`personal-home-empty`,children:a(`home.noCompletedGoals`)})})]}),d.length?(0,B.jsxs)(`details`,{className:`personal-home-history is-stopped`,children:[(0,B.jsxs)(`summary`,{children:[(0,B.jsx)(`span`,{children:a(`home.stopped`)}),(0,B.jsx)(`b`,{children:d.length}),(0,B.jsx)(`small`,{children:a(`home.preservedState`)})]}),(0,B.jsx)(`div`,{children:d.map(f)})]}):null]})}function nS({items:e,onSelect:t,reportState:n}){let{locale:r,t:i}=Ji();return(0,B.jsxs)(`section`,{className:`personal-object-list personal-files-list`,"data-testid":`personal-goal-outputs`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsx)(`strong`,{children:i(`files.title`)}),(0,B.jsx)(`span`,{children:e.length})]}),n?.loading?(0,B.jsxs)(`p`,{className:`personal-object-list-state`,role:`status`,children:[(0,B.jsx)(Hm,{className:`is-spinning`,size:14}),i(`files.loadingReports`)]}):null,n?.error?(0,B.jsxs)(`p`,{className:`personal-object-list-state is-error`,role:`alert`,children:[(0,B.jsx)(lm,{size:14}),i(`files.reportLoadFailed`),`: `,n.error]}):null,!n?.loading&&!n?.error&&e.length===0?(0,B.jsxs)(`p`,{className:`personal-object-list-state`,children:[(0,B.jsx)(xm,{size:14}),i(`files.empty`)]}):null,e.map(e=>(0,B.jsxs)(`button`,{"data-output-kind":e.output.kind,onClick:()=>t({item:e.output,kind:`output`}),type:`button`,children:[(0,B.jsx)(`span`,{className:`personal-file-icon`,children:(0,B.jsx)(xm,{size:16})}),(0,B.jsx)(`strong`,{children:e.output.title}),e.output.report?(0,B.jsx)(`em`,{children:i(`files.reportDelta`,{added:e.output.report.addedCount,changed:e.output.report.changedCount})}):null,(0,B.jsx)(`p`,{children:e.output.summary??e.output.safePreview??e.output.kind??i(`files.emptySummary`)}),(0,B.jsx)(`small`,{title:e.output.createdAt,children:[e.output.goalTitle,e.output.kind===`report`?i(`files.verifiedReport`):null,e.output.todoId?`${i(`common.task`)} ${e.output.todoId}`:null,eS(e.output.createdAt,r,i)].filter(Boolean).join(` · `)})]},e.id))]})}function rS({agentLabel:e,messages:t,onClose:n,onDraftTask:r,onOpenConversation:i,title:a}){let{t:o}=Ji(),s=t.reduce((e,t,n)=>t.role===`user`?n:e,0),c=t.slice(Math.max(0,s)).slice(-3),l=c.filter(e=>e.role===`assistant`&&!e.pending).at(-1);return(0,z.useEffect)(()=>{if(!n)return;let e=e=>{e.key===`Escape`&&n()};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[n]),(0,B.jsxs)(`aside`,{"aria-label":o(`conversation.receipt`),className:`personal-manager-conversation-tray`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(nm,{size:16}),(0,B.jsx)(`strong`,{children:a??o(`conversation.title`)}),(0,B.jsx)(`small`,{children:t.at(-1)?.pending?o(`conversation.replying`):o(`common.recently`)})]}),(0,B.jsxs)(`div`,{className:`personal-manager-conversation-actions`,children:[r&&l?(0,B.jsxs)(`button`,{className:`personal-manager-conversation-btn`,onClick:()=>r(l.text),title:o(`conversation.convertHint`),type:`button`,children:[(0,B.jsx)(Om,{size:13}),(0,B.jsx)(`span`,{children:o(`conversation.toTask`)})]}):null,(0,B.jsx)(`button`,{className:`personal-manager-conversation-link`,onClick:i,type:`button`,children:o(`conversation.full`)}),n?(0,B.jsx)(`button`,{"aria-label":o(`conversation.close`),className:`personal-manager-conversation-close`,onClick:n,title:o(`conversation.close`),type:`button`,children:(0,B.jsx)(ah,{size:14})}):null]})]}),(0,B.jsx)(`div`,{"aria-live":`polite`,className:`personal-manager-conversation-messages`,children:c.map(t=>(0,B.jsxs)(`article`,{className:`is-${t.role}`,children:[(0,B.jsx)(`strong`,{children:t.role===`user`?o(`common.you`):t.agentLabel??e??o(`header.manager`)}),(0,B.jsxs)(`div`,{className:`personal-manager-conversation-bubble`,children:[t.role===`user`?(0,B.jsx)(`p`,{children:t.text}):(0,B.jsx)(cb,{text:t.text}),t.pending?(0,B.jsx)(`small`,{children:o(`conversation.agentPending`)}):null,(0,B.jsx)(pb,{delivery:t.returnDelivery})]})]},t.id))})]})}function iS({onClose:e,onOpenDetails:t,run:n}){let{t:r}=Ji();return(0,B.jsxs)(`section`,{"aria-label":r(`session.record`),className:`personal-session-record`,children:[(0,B.jsxs)(`header`,{children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(nm,{size:17}),r(`session.record`)]}),(0,B.jsx)(`button`,{"aria-label":r(`session.closeRecord`),onClick:e,type:`button`,children:(0,B.jsx)(ah,{size:15})})]}),(0,B.jsx)(`div`,{children:(0,B.jsx)(`strong`,{children:n.title})}),(0,B.jsxs)(`dl`,{children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Agent`}),(0,B.jsx)(`dd`,{children:n.agentLabel})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:r(`common.status`)}),(0,B.jsx)(`dd`,{children:Xi(n.sessionStatus??n.status,r)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Session`}),(0,B.jsx)(`dd`,{title:n.sessionId,children:n.sessionId})]})]}),(0,B.jsx)(`button`,{className:`personal-secondary-action`,onClick:t,type:`button`,children:r(`session.details`)})]})}function aS(e,t,n){let r=[];if(t===null)return e.userTodos.slice(0,4).forEach(t=>r.push({attention:{...t,goalTitle:t.goalTitle??Ky(e,t.goalId)},id:`attention:${t.todoId}`,kind:`attention`})),e.goals.filter(e=>qy(e)===`running`).slice(0,4).forEach(e=>r.push({id:`run:${e.goalId}`,kind:`run`,run:{agentId:e.agentId,agentLabel:e.agentLabel??e.agentId,completedSteps:e.doneTodoCount??e.agentTodos.filter(e=>e.done).length,goalId:e.goalId,goalTitle:e.title,latestActivity:e.agentSentence,runId:`goal:${e.goalId}`,status:`running`,title:e.nextSentence,totalSteps:Math.max((e.doneTodoCount??0)+e.agentTodos.filter(e=>!e.done).length,1)}})),r;let i=e.goals.find(e=>e.goalId===t);if(!i)return r;if(i.needsYou){let t=e.userTodos.find(e=>e.goalId===i.goalId);r.push({attention:t?{...t,goalTitle:i.title}:{blocking:i.needsYouBlocking??!1,goalId:i.goalId,goalTitle:i.title,text:i.needsYou,todoId:`${i.goalId}:attention`},id:`attention:${i.goalId}`,kind:`attention`})}r.push({id:`run:${i.goalId}`,kind:`run`,run:{agentId:i.agentId,agentLabel:i.agentLabel??i.agentId,completedSteps:i.doneTodoCount??i.agentTodos.filter(e=>e.done).length,goalId:i.goalId,goalTitle:i.title,latestActivity:i.agentSentence,runId:`goal:${i.goalId}`,status:i.state===`推进中`?`running`:i.state===`需修复`?`failed`:`waiting`,title:i.nextSentence,totalSteps:Math.max((i.doneTodoCount??0)+i.agentTodos.filter(e=>!e.done).length,1)}}),i.agentTodos.filter(e=>e.taskClass===`continuous_monitor`).forEach(t=>{let a=e.timeline?.find(e=>e.kind===`run`&&e.run.goalId===i.goalId&&e.run.todoId===t.todoId&&!!e.run.sessionId);r.push({id:`schedule:${i.goalId}:${t.todoId}`,kind:`schedule`,schedule:{agentId:i.agentId,executionHistory:a?[{label:a.run.latestActivity||a.run.title,runId:a.run.runId,status:a.run.status===`waiting`||a.run.status===`queued`?`running`:a.run.status,timestamp:i.latestActivity||n(`common.recently`)}]:[],goalId:i.goalId,label:t.text,schedule:t.evidence??n(`schedule.summary`),scheduleId:t.todoId,scheduleKind:`monitor`,sessionId:a?.run.sessionId,status:t.done||t.status===`paused`?`paused`:`active`,stopCondition:n(`drawer.scheduleDefaultStop`),target:t.text,timezone:`Asia/Shanghai`}})});let a=e.timeline?.find(e=>e.kind===`proposal`&&e.proposal.actionKind===`heartbeat.bind`&&e.proposal.goalId===i.goalId);if(a){let e=e=>a.proposal.fields.find(t=>t.key===e)?.value;r.push({id:`schedule:${i.goalId}:heartbeat`,kind:`schedule`,schedule:{agentId:i.agentId,executionHistory:[],goalId:i.goalId,label:`${n(`schedule.heartbeat`)} · ${i.title}`,nextRunAt:n(`drawer.schedulePending`),notificationRule:n(`drawer.scheduleDefaultNotification`),schedule:e(`cadence`)??n(`schedule.summary`),scheduleId:`${i.goalId}:heartbeat`,scheduleKind:`heartbeat`,status:a.proposal.status===`applied`?`active`:`draft`,stopCondition:e(`stop_condition`)??n(`drawer.scheduleDefaultStop`),timezone:e(`timezone`)??`Asia/Shanghai`}})}return r}function oS(e){return e===`preview_ready`?`ready`:e===`cancelled`?`draft`:e===`failed`?`error`:e}function sS(e,t){let n={agent_id:t(`proposal.field.agentId`),cadence:t(`proposal.field.cadence`),completion_criteria:t(`proposal.field.completionCriteria`),execution_boundary:t(`proposal.field.executionBoundary`),goal_id:t(`proposal.field.goalId`),heartbeat:t(`proposal.field.heartbeat`),initial_todos:t(`proposal.field.initialTodos`),objective:t(`proposal.field.objective`),operation:t(`proposal.field.operation`),permission:t(`proposal.field.permission`),reason:t(`proposal.field.reason`),stop_condition:t(`proposal.field.stopCondition`),target:t(`proposal.field.target`),timezone:t(`proposal.field.timezone`),title:t(`proposal.field.title`),workspace_ref:t(`proposal.field.workspace`)},r=[`title`,`objective`,`completion_criteria`,`execution_boundary`,`permission`,`agent_id`,`workspace_ref`,`initial_todos`,`heartbeat`,`stop_condition`,`goal_id`];return Object.entries(e).sort(([e],[t])=>{let n=r.indexOf(e),i=r.indexOf(t);return(n<0?r.length:n)-(i<0?r.length:i)}).slice(0,10).map(([e,r])=>({key:e,label:n[e]??e.replaceAll(`_`,` `),value:e===`workspace_ref`?r===`current`?t(`proposal.workspace.current`):t(`proposal.workspace.named`,{workspace:String(r??`current`)}):Array.isArray(r)?r.join(` · `):typeof r==`object`&&r?JSON.stringify(r):String(r??`—`)}))}function cS(e,t,n){let r=t.operationFrame,i=r?.content.fields.map((e,t)=>({key:`projection:${t}`,label:e.label,value:e.value})).slice(0,8)??[];return[{key:`operation_state`,label:n(`proposal.field.operationState`),value:r?.lifecycleState??e.status},...r?.kind===`result`?[{key:`result_delivery`,label:n(`proposal.field.resultDelivery`),value:r.resultDeliveryVerified?n(`proposal.resultDelivery.verified`):n(`proposal.resultDelivery.pending`)}]:[],...i,...r?[{key:`warning`,label:n(`proposal.field.confirmationBoundary`),value:r.content.warning}]:[],...r?[{key:`expires_at`,label:n(`proposal.field.expiresAt`),value:r.expiresAt}]:[]].slice(0,10)}function lS(e){if(e.action_kind!==`goal.lifecycle`)return;let t=e.normalized_parameters.operation;return t===`stop`||t===`resume`||t===`delete`?t:void 0}function uS(e,t){let n=lS(e),r=Ny(e),i=typeof e.normalized_parameters.title==`string`?e.normalized_parameters.title:typeof e.normalized_parameters.goal_id==`string`?e.normalized_parameters.goal_id:``,a=typeof e.normalized_parameters.target==`string`?e.normalized_parameters.target:``,o=r.operationFrame,s=o?.content.title??e.summary,c=e.action_kind===`operation.execute`?s:e.action_kind===`team.plan`?e.status===`applied`?Wy(Uy(e.receipt),t):t(`proposal.summary.teamPlan`,{goal:zy(e.normalized_parameters),count:Ry(e.normalized_parameters)}):e.action_kind===`goal.create`?t(`proposal.summary.goalCreate`,{title:i}):e.action_kind===`heartbeat.bind`?t(`proposal.summary.heartbeat`):e.action_kind===`monitor.create`?t(`proposal.summary.monitor`,{target:a}):e.action_kind===`goal.lifecycle`&&n===`stop`?t(`proposal.summary.lifecycleStop`,{title:i}):e.action_kind===`goal.lifecycle`&&n===`delete`?t(`proposal.summary.lifecycleDelete`,{title:i}):e.action_kind===`goal.lifecycle`?t(`proposal.summary.lifecycleResume`,{title:i}):e.summary;return{actionKind:e.action_kind,reviewPlan:r,fields:e.action_kind===`operation.execute`?cS(e,r,t):e.action_kind===`team.plan`?Ly(e.normalized_parameters,t):sS(e.normalized_parameters,t),goalId:typeof e.normalized_parameters.goal_id==`string`?e.normalized_parameters.goal_id:void 0,impact:e.action_kind===`operation.execute`?t(`proposal.impact.operation`):e.action_kind===`team.plan`?e.status===`applied`?t(`proposal.teamPlan.assignedHint`):t(`proposal.impact.teamPlan`):e.action_kind===`goal.create`?t(`proposal.impact.goalCreate`):e.action_kind===`goal.lifecycle`&&n===`stop`?t(`proposal.impact.lifecycleStop`):e.action_kind===`goal.lifecycle`&&n===`delete`?t(`proposal.impact.lifecycleDelete`):e.action_kind===`goal.lifecycle`?t(`proposal.impact.lifecycleResume`):e.permission_classification===`protected`?t(`proposal.impact.protected`):t(`proposal.impact.default`),previewId:e.proposal_id,lifecycleOperation:n,gate:e.gate?{kind:String(e.gate.kind??`protected_action`),nextAction:typeof e.gate.next_action==`string`?e.gate.next_action:void 0,summary:String(e.gate.summary??t(`proposal.gate.default`))}:void 0,primaryLabel:e.action_kind===`operation.execute`?o?.kind===`result`?o.resultDeliveryVerified?t(`proposal.primary.operationResultVerified`):t(`proposal.primary.operationResultPending`):t(`proposal.primary.operationGroup`):e.action_kind===`team.plan`?t(e.status===`applied`?`proposal.teamPlan.viewResult`:`proposal.primary.teamPlan`):e.action_kind===`goal.create`?t(`proposal.primary.goalCreate`):e.action_kind===`goal.lifecycle`&&n===`stop`?t(`proposal.primary.lifecycleStop`):e.action_kind===`goal.lifecycle`&&n===`delete`?t(`proposal.primary.lifecycleDelete`):e.action_kind===`goal.lifecycle`?t(`proposal.primary.lifecycleResume`):e.action_kind===`todo.create`&&e.normalized_parameters.start_execution===!0?t(`proposal.primary.todoStart`):t(`proposal.primary.apply`),status:e.status===`applied`&&e.action_kind!==`operation.execute`&&r.interaction!==`completed`?`error`:oS(e.status),teamPlanOutcome:e.action_kind===`team.plan`?Uy(e.receipt)??void 0:void 0,teamPlanAssignments:e.action_kind===`team.plan`?By(e.receipt,e.normalized_parameters):void 0,teamPlanGapLanes:e.action_kind===`team.plan`?Vy(e.receipt,e.normalized_parameters):void 0,title:c}}function dS(e){let t=e.toLowerCase().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,42);if(t)return t;let n=2166136261;for(let t of e)n^=t.codePointAt(0)??0,n=Math.imul(n,16777619);return`goal-${(n>>>0).toString(36)}`}function fS(e,t){let n=e.match(/[「“"]([^」”"]{2,80})[」”"]/u)?.[1];return n?n.trim():e.replace(/^(请|帮我|我想|给我|创建|新建|设置|please|i want to|create|set up)+/iu,``).replace(/(一个|新的)?\s*(goal|目标)/giu,``).replace(/[,。!?].*$/u,``).trim().slice(0,80)||t(`goal.defaultTitle`)}function pS(e,t){for(let n of e.split(/\r?\n/u)){let e=n.trim();for(let n of t){let t=e.match(RegExp(`^${n.replace(/[.*+?^${}()|[\]\\]/gu,`\\$&`)}\\s*[::]\\s*(.*)$`,`iu`));if(t?.[1]?.trim())return t[1].trim()}}return``}function mS(e,t){let n=pS(e,[`目标`,`Objective`]),r=pS(e,[`完成标准`,`Completion criteria`]),i=pS(e,[`执行边界(可选)`,`执行边界`,`边界`,`Execution boundary (optional)`,`Execution boundary`,`Boundary`]),a=(n||fS(e,t)).split(/[。;;\n]/u)[0].trim().slice(0,80)||t(`goal.defaultTitle`),o=[n||a,r?t(`goal.objectiveCompletion`,{criteria:r}):``,i?t(`goal.objectiveBoundary`,{boundary:i}):``].filter(Boolean).join(` +`),s=/(只读|不调用外部工具|不修改(?:仓库|代码|状态)|read.?only|do not (?:call|use) external tools|do not modify (?:repositories|repository|code|state))/iu.test(i||e);return{completionCriteria:r,executionBoundary:i,initialTodos:r?[t(`goal.initialTodo`,{criteria:r})]:[],objective:o,permission:s?`read_only`:`workspace_write_on_confirmation`,title:a}}function hS(e){let t=e.match(/(?:每|every)\s*(\d{1,3})\s*(?:分钟|minutes?)/iu)?.[1];if(t)return`${t}m`;let n=e.match(/(?:每|every)\s*(\d{1,2})\s*(?:小时|hours?)/iu)?.[1];return n?`${n}h`:/每小时|every hour|hourly/iu.test(e)?`1h`:(/每天|每日|早上|上午|daily|every day/iu.test(e),`1d`)}function gS(e,t){return/(每周|星期|周[一二三四五六日天]|weekly|every\s+(?:mon|tues|wednes|thurs|fri|satur|sun)day|\d{1,2}\s*[::]\s*\d{2})/iu.test(e)?t(`schedule.unsupportedCalendar`):null}function _S(e,t){return pS(e,[`检查内容`,`监控内容`,`目标`,`Check target`,`Monitor target`,`Target`])||e.replace(/^(?:为当前 Goal |for the current Goal )?(?:添加|配置|创建|add|configure|create)?\s*(?:定时检查|监控|scheduled check|monitor)[::]?/iu,``).split(/\r?\n/u)[0].trim()||t(`schedule.defaultTarget`)}function vS(e){return/(mr|pr).{0,8}(合并|merge)/iu.test(e)?`pr_merged`:/发布完成|上线完成|release (?:is )?complete|deployment (?:is )?complete/iu.test(e)?`release_complete`:`goal_complete`}function yS(e,t){let n=e.toLowerCase();return t.find(e=>n.includes(e.agentId.toLowerCase())||n.includes(e.label.toLowerCase()))}function bS(e){let t=pS(e,[`标题`,`任务标题`,`Todo 标题`]),n=pS(e,[`内容`,`任务内容`,`Todo 内容`]);if(t)return[t,n].filter(Boolean).join(`:`).slice(0,400);let r=e.match(/[「“"]([^」”"]{2,200})[」”"]/u)?.[1];return r?r.trim():e.replace(/^(请|帮我|给我|为当前 Goal |新增|新建|创建|添加|加上|加一个|记一个)+/u,``).replace(/^(一个\s*)?(普通\s*)?(todo|待办|任务)(?:\s*到\s*Tasks?)?[::\s]*/iu,``).replace(/[。;;,,]\s*(?:不要|不需要|无需|禁止|别|暂不).{0,80}(?:heartbeat|心跳|定时|监控|执行).*$/iu,``).replace(/[,,]\s*(并且|然后|再)?\s*(交给|分配给|让).+$/u,``).replace(/\s*(交给|分配给|让)\s+.+$/u,``).trim().slice(0,400)||`推进当前 Goal 的下一项工作`}var xS=new Set([`image/png`,`image/jpeg`,`image/webp`,`image/gif`]),SS=5242880,CS=4;function wS(e,t){return new Promise((n,r)=>{let i=new FileReader;i.onerror=()=>r(Error(t(`composer.imageReadError`,{name:e.name}))),i.onload=()=>n({dataUrl:String(i.result??``),id:crypto.randomUUID(),mimeType:e.type,name:e.name,size:e.size}),i.readAsDataURL(e)})}function TS({agents:e=[{agentId:`codex`,available:!0,capability:`代码与项目执行`,label:`Codex`}],callbacks:t={},goalArchiveLoadState:n={error:null,phase:`ready`},managerChannelBinding:r,managerRuntime:i,model:a,readOnly:o=!1,selectedAgentId:s,selectedGoalId:c,statusSourceControl:l}){let{locale:u,t:d}=Ji(),[f,p]=(0,z.useState)(c??null),[m,h]=(0,z.useState)(s??e.find(e=>e.available)?.agentId??`codex`),[g,_]=(0,z.useState)(null),[v,y]=(0,z.useState)(!1),[b,x]=(0,z.useState)(null),[S,C]=(0,z.useState)({}),[w,T]=(0,z.useState)(`chat`),[E,D]=(0,z.useState)(!1),[O,k]=(0,z.useState)(!1),[ee,te]=(0,z.useState)(!1),[A,j]=(0,z.useState)(()=>{try{let e=window.sessionStorage.getItem(`loopx-pw-composer-drafts`),t=e?JSON.parse(e):{};return t&&typeof t==`object`&&!Array.isArray(t)?t:{}}catch{return{}}}),[M,ne]=(0,z.useState)(!1),[N,P]=(0,z.useState)([]),[re,ie]=(0,z.useState)(null),[ae,F]=(0,z.useState)(null),[oe,I]=(0,z.useState)(()=>new Set),[se,L]=(0,z.useState)(()=>new Set),[ce,le]=(0,z.useState)(`idle`),[ue,de]=(0,z.useState)([]),[fe,pe]=(0,z.useState)([]),[me,he]=(0,z.useState)(!1),[ge,_e]=(0,z.useState)(Yx),[ve,ye]=(0,z.useState)({}),[be,xe]=(0,z.useState)([]),Se=(0,z.useRef)(!1),Ce=(0,z.useRef)(NaN),we=(0,z.useRef)(null),Te=(0,z.useRef)(null),Ee=(0,z.useRef)(null),De=(0,z.useRef)(new Set),Oe=(0,z.useRef)(new Set),[ke,Ae]=(0,z.useState)(null),R=c===void 0?f:c,je=s??m,Me=`${R??`manager`}:${je}`,Ne=A[Me]??``;(0,z.useEffect)(()=>{P([]),ie(null)},[Me]);function Pe(e,t){j(n=>{let r={...n};t?r[e]=t:delete r[e];try{window.sessionStorage.setItem(`loopx-pw-composer-drafts`,JSON.stringify(r))}catch{}return r})}function Fe(e){Pe(Me,e)}function Ie(e){return vh.find(t=>t.id===e)?.prompt??``}(0,z.useEffect)(()=>{let e=we.current;e&&(e.style.height=`auto`,e.style.height=`${Math.min(e.scrollHeight,120)}px`)},[Ne]);let Le=(0,z.useMemo)(()=>a.goals.map(e=>{let t=ve[e.goalId];return t?{...e,repository:{branch:t.branch,identity:t.identity,label:t.label,readOnly:!0}}:e}),[ve,a.goals]),Re=(0,z.useMemo)(()=>Le.filter(e=>qy(e)===`needs_you`).length,[Le]),ze=(0,z.useMemo)(()=>Le.filter(e=>qy(e)===`needs_you`&&(e.needsYouBlocking||e.state===`等你`)).length,[Le]),V=Le.find(e=>e.goalId===R)??null,Be=g?.kind===`settings`,Ve=R,He=(0,z.useMemo)(()=>{let e=Object.values(S).filter(e=>e.actionKind===`heartbeat.bind`&&e.goalId&&e.status===`applied`).map(e=>({id:`schedule:${e.goalId}:heartbeat`,kind:`schedule`,schedule:{agentId:je,executionHistory:[],goalId:e.goalId,label:e.title,nextRunAt:d(`drawer.schedulePending`),notificationRule:d(`drawer.scheduleDefaultNotification`),schedule:e.fields.find(e=>e.key===`cadence`)?.value??d(`schedule.summary`),scheduleId:`${e.goalId}:heartbeat`,scheduleKind:`heartbeat`,status:e.status===`applied`?`active`:`draft`,stopCondition:e.fields.find(e=>e.key===`stop_condition`)?.value??d(`drawer.scheduleDefaultStop`),timezone:e.fields.find(e=>e.key===`timezone`)?.value??`Asia/Shanghai`}})),t=[...aS(a,Ve,d),...a.timeline??[],...e,...$x(Object.values(S)).filter(e=>e.actionKind!==`heartbeat.bind`||e.status!==`applied`).map(e=>({id:`proposal:${e.previewId}`,kind:`proposal`,proposal:e}))];return[...new Map(t.map(e=>[e.id,e])).values()].filter(e=>e.kind!==`proposal`||![`stale`,`error`].includes(e.proposal.status)||ue.includes(e.proposal.previewId)).filter(e=>!R||e.kind===`message`?!0:e.kind===`proposal`?!e.proposal.goalId||e.proposal.goalId===R:e.kind===`attention`?e.attention.goalId===R:e.kind===`run`?e.run.goalId===R:e.kind===`schedule`?e.schedule.goalId===R:e.output.goalId===R)},[Ve,a,S,je,R,ue,d]),Ue=(0,z.useMemo)(()=>b?He.filter(e=>e.kind===`message`?!0:e.kind===`run`?e.run.runId===b.runId:e.kind===`output`&&e.output.runId===b.runId):He,[b,He]);(0,z.useEffect)(()=>{if(!b)return;let e=He.find(e=>e.kind===`run`&&e.run.runId===b.runId);!e||e.kind!==`run`||JSON.stringify({completedSteps:b.completedSteps,latestActivity:b.latestActivity,messages:b.sessionMessages,sessionStatus:b.sessionStatus,status:b.status,totalSteps:b.totalSteps})!==JSON.stringify({completedSteps:e.run.completedSteps,latestActivity:e.run.latestActivity,messages:e.run.sessionMessages,sessionStatus:e.run.sessionStatus,status:e.run.status,totalSteps:e.run.totalSteps})&&x(e.run)},[b,He]);let We=(0,z.useMemo)(()=>He.flatMap(e=>e.kind===`message`?[e.message]:[]),[He]),Ge=(0,z.useMemo)(()=>V?He.flatMap(e=>e.kind===`message`?[e.message]:[]):[],[He,V]);(0,z.useEffect)(()=>{V||E||We.some(e=>e.pending)&&k(!0)},[E,We,V]),(0,z.useEffect)(()=>{!V||w===`chat`||Ge.some(e=>e.pending)&&te(!0)},[Ge,V,w]);let Ke=(0,z.useMemo)(()=>He.filter(e=>e.kind===`message`||e.kind===`proposal`&&(ue.includes(e.proposal.previewId)||fe.includes(e.proposal.previewId))),[He,ue,fe]),qe=Ke[Ke.length-1],Je=qe?.kind===`message`?qe.message.text.length:0;(0,z.useEffect)(()=>{if(!E||!Te.current)return;let e=window.requestAnimationFrame(()=>{Te.current&&(Te.current.scrollTop=Te.current.scrollHeight)});return()=>window.cancelAnimationFrame(e)},[Ke.length,E,Je]);let Ye=(0,z.useMemo)(()=>{if(g?.kind===`settings`)return null;if(g?.kind===`attention`)return{kind:`attention`,item:Jd(g.item,a.attentionHistory??a.userTodos)};if(g?.kind===`goal`){let e=Le.find(e=>e.goalId===g.item.goalId);return e?{item:e,kind:`goal`}:g}if(g?.kind!==`run`)return g;let e=He.find(e=>e.kind===`run`&&e.run.runId===g.item.runId);return e?{item:e.run,kind:`run`}:g},[He,g,Le,a.attentionHistory,a.userTodos]);(0,z.useEffect)(()=>{if(o){ye({}),xe([]);return}let e=!1;return Promise.all([Xg(),s_()]).then(([t,n])=>{e||(ye(Object.fromEntries(t.map(e=>[e.goal_id,e.repository]))),xe(n))}).catch(()=>{}),()=>{e=!0}},[o]),(0,z.useEffect)(()=>{if(!me)return;function e(e){e.key===`Escape`&&he(!1)}return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[me]),(0,z.useEffect)(()=>{if(R||!He.length)return;if(!Se.current){Se.current=!0;try{Ce.current=Date.parse(window.localStorage.getItem(`loopx-pw-last-visit`)??``),window.localStorage.setItem(`loopx-pw-last-visit`,new Date().toISOString())}catch{Ce.current=NaN}}let e=Ce.current,t=He.filter(e=>e.kind===`run`).map(e=>e.run),n=t=>{let n=Date.parse(t??``);return!Number.isNaN(e)&&!Number.isNaN(n)&&n>e},r={attention:Re,done:t.filter(e=>e.status===`completed`&&n(e.latestActivity)).length,failed:t.filter(e=>(e.status===`failed`||e.status===`interrupted`)&&n(e.latestActivity)).length};Ae(e=>e?.attention===r.attention&&e.done===r.done&&e.failed===r.failed?e:r)},[He,Re,R]),(0,z.useEffect)(()=>{if(o){C({});return}let e=!1;return Hh(R?{goalId:R}:{contextKind:`manager`}).then(t=>{if(e)return;let n=t.filter(e=>[`preview_ready`,`gated`,`deferred`,`applying`].includes(e.status)||e.action_kind===`operation.execute`&&e.status===`applied`).map(e=>uS(e,d)),r=Object.fromEntries(n.map(e=>[e.previewId,e]));C(e=>({...e,...r})),R||pe(n.map(e=>e.previewId))}).catch(()=>{}),()=>{e=!0}},[o,R,d]);async function Xe(e,n={}){if(o)throw Error(d(`source.readOnlyWriteError`));let r;try{r=t.onPreviewAction?await t.onPreviewAction(e):uS(await Bh(e),d)}catch(t){if(!(t instanceof Fh)||t.payload.error_code!==`action_preview_gate`)throw t;let n=t.payload.gate&&typeof t.payload.gate==`object`?t.payload.gate:{},i=(Array.isArray(n.candidates)?n.candidates:[]).flatMap(e=>{if(!e||typeof e!=`object`)return[];let t=e;return typeof t.workspace_ref==`string`&&typeof t.label==`string`?[{label:t.label,workspaceRef:t.workspace_ref}]:[]}),a=String(n.kind??`workspace_selection_required`),o=a===`agent_binding_required`||a===`agent_identity_selection_required`;r={actionKind:e.actionKind,fields:i.map(e=>({key:`workspace_ref:${e.workspaceRef}`,label:e.label,value:e.workspaceRef})),gate:{kind:a,nextAction:typeof n.next_action==`string`?n.next_action:void 0,summary:String(n.summary??d(`proposal.workspaceGate.defaultSummary`))},impact:d(o?`proposal.workspaceGate.agentImpact`:`proposal.workspaceGate.selectionImpact`),previewId:`workspace-choice-${Date.now().toString(36)}`,sourceRequest:e,status:`gated`,title:d(o?`proposal.workspaceGate.agentTitle`:`proposal.workspaceGate.selectionTitle`),workspaceCandidates:i}}return de(e=>e.includes(r.previewId)?e:[...e,r.previewId]),C(e=>({...e,[r.previewId]:r})),n.select!==!1&&_({item:r,kind:`proposal`}),r}function Ze(){ot(null),Pe(`manager:${je}`,d(`composer.createGoalTemplate`)),window.requestAnimationFrame(()=>we.current?.focus())}async function Qe(e,n){he(!1);let r={delete:`Deleted from the owner workspace`,resume:`Resumed from the owner workspace`,stop:`Stopped from the owner workspace`},i={delete:d(`proposal.summary.lifecycleDelete`,{title:e.title}),resume:d(`proposal.summary.lifecycleResume`,{title:e.title}),stop:d(`proposal.summary.lifecycleStop`,{title:e.title})},a=null,o=!1;try{if(n===`stop`){if(De.current.has(e.goalId))return;De.current.add(e.goalId),I(new Set(De.current)),_(null),a={goalId:e.goalId,next:`stopped`,optimisticApplied:!0,previous:e.activationState},F(d(`feedback.applying`,{title:i.stop})),t.onGoalActivationStateChange?.(e.goalId,`stopped`)}if(t.onExecuteGoalLifecycle){if(n===`delete`)throw Error(`The selected status source does not authorize Goal deletion.`);let a=await t.onExecuteGoalLifecycle({goalId:e.goalId,operation:n,reason:r[n]});if(!a.projectionVerified)throw Error(`Goal lifecycle projection did not verify.`);o=!0,t.onGoalActivationStateChange?.(e.goalId,a.activationState),F(d(`feedback.completed`,{title:i[n]})),n===`stop`&&ot(null),await nt([e.goalId]);return}let s=await Xe({actionKind:`goal.lifecycle`,context:{kind:`goal_directory`,goal_id:e.goalId},idempotencyKey:`workspace-goal-${n}-${e.goalId}-${Date.now().toString(36)}`,normalizedParameters:{goal_id:e.goalId,operation:n,reason:r[n]},summary:i[n]},{select:n!==`stop`});if(s.goalId!==e.goalId||s.lifecycleOperation!==n)throw _(null),Error(d(`actionReview.targetChanged`));n===`stop`&&(s.reviewPlan?.interaction===`direct`?(o=!0,await rt(s,{lifecycleProjection:a??void 0,presentation:`feedback`})):(a&&t.onGoalActivationStateChange?.(a.goalId,a.previous),F(s.gate?d(`feedback.gateRequired`,{summary:s.gate.summary}):d(`feedback.notCompleted`,{status:s.status})),_({item:s,kind:`proposal`})))}catch(e){a&&!o&&t.onGoalActivationStateChange?.(a.goalId,a.previous),F(d(`feedback.executionFailed`,{error:e instanceof Error?e.message:String(e)}))}finally{n===`stop`&&(De.current.delete(e.goalId),I(new Set(De.current)))}}function $e(e,t){Fe(d(t?e===`heartbeat`?`composer.heartbeatTemplate`:`composer.monitorTemplate`:e===`heartbeat`?`composer.heartbeatTemplateWithoutGoal`:`composer.monitorTemplateWithoutGoal`)),_(null),window.requestAnimationFrame(()=>we.current?.focus())}async function et(e,n,r=``){let i=await t.onRequestScheduleConfig?.(e,n);if(i){de(e=>e.includes(i.previewId)?e:[...e,i.previewId]),C(e=>({...e,[i.previewId]:i})),_({item:i,kind:`proposal`});return}if(!n){Fe(d(e===`heartbeat`?`composer.heartbeatGoalQuestion`:`composer.monitorGoalQuestion`));return}let a=Date.now().toString(36);await Xe({actionKind:e===`heartbeat`?`heartbeat.bind`:`monitor.create`,context:{kind:`schedule`,goal_id:n},idempotencyKey:`workspace-${e}-${n}-${a}`,normalizedParameters:e===`heartbeat`?{agent_id:je,cadence:hS(r),goal_id:n,stop_condition:vS(r),timezone:`Asia/Shanghai`}:{agent_id:je,cadence:hS(r),goal_id:n,stop_condition:vS(r),target:_S(r,d),target_key:`goal-${n}`,timezone:`Asia/Shanghai`},summary:e===`heartbeat`?d(`proposal.summary.heartbeat`):d(`proposal.summary.monitor`,{target:_S(r,d)})})}async function tt(e){if(!Oe.current.has(e.todoId)){Oe.current.add(e.todoId),L(new Set(Oe.current)),F(d(`feedback.preparingPreview`,{title:e.text}));try{await Xe({actionKind:`todo.update`,context:{goal_id:e.goalId,kind:`todo`,todo_id:e.todoId},idempotencyKey:`workspace-todo-${e.todoId}-complete-${Date.now().toString(36)}`,normalizedParameters:{goal_id:e.goalId,operation:`complete`,todo_id:e.todoId},summary:d(`tasks.markComplete`,{name:e.text})}),F(null)}catch(e){F(d(`feedback.previewFailed`,{error:e instanceof Error?e.message:String(e)}))}finally{Oe.current.delete(e.todoId),L(new Set(Oe.current))}}}function nt(e){let n=t.onReconcileStatus,r=n?n({invalidateGoalIds:e}):t.onRefresh?.();return Promise.resolve(r).catch(()=>{F(d(`feedback.goalRefreshFailed`))})}async function rt(e,n={}){let r=e.actionKind===`team.plan`&&e.status===`error`&&[`apply_failed`,`readback_unverified`].includes(e.reviewPlan?.reason??``);if(e.reviewPlan&&!e.reviewPlan.canApply&&!r)return;let i=n.presentation!==`feedback`,o=e.actionKind===`goal.lifecycle`&&e.goalId&&(e.lifecycleOperation===`stop`||e.lifecycleOperation===`resume`)?{goalId:e.goalId,next:e.lifecycleOperation===`stop`?`stopped`:`active`,optimisticApplied:!1,previous:a.goals.find(t=>t.goalId===e.goalId)?.activationState??(e.lifecycleOperation===`stop`?`active`:`stopped`)}:null,s=n.lifecycleProjection??o;F(d(`feedback.applying`,{title:e.title}));let c={...e,reviewPlan:e.reviewPlan?{...e.reviewPlan,interaction:`pending`,reason:`apply_pending`,canApply:!1}:void 0,status:`applying`};C(t=>({...t,[e.previewId]:c})),i&&_({item:c,kind:`proposal`}),s&&!s.optimisticApplied&&t.onGoalActivationStateChange?.(s.goalId,s.next);try{if(t.onApplyProposal){await t.onApplyProposal(e);let n={...e,status:`applied`};C(t=>({...t,[e.previewId]:n})),i&&_({item:n,kind:`proposal`}),F(d(`feedback.completed`,{title:e.title})),e.actionKind===`goal.lifecycle`&&((e.lifecycleOperation===`stop`||e.lifecycleOperation===`delete`)&&ot(null),e.lifecycleOperation===`delete`&&e.goalId&&t.onGoalDeleted?.(e.goalId),nt(e.goalId?[e.goalId]:void 0));return}let n=await Uh(e.previewId);if(n.proposal.proposal_id!==e.previewId||n.proposal.action_kind!==e.actionKind||e.actionKind===`goal.lifecycle`&&(n.proposal.normalized_parameters.goal_id!==e.goalId||lS(n.proposal)!==e.lifecycleOperation))throw new Fh(d(`actionReview.targetChanged`),{error_code:`action_response_mismatch`});let r=uS(n.proposal,d);if(C(t=>({...t,[e.previewId]:r})),i&&_({item:r,kind:`proposal`}),r.reviewPlan?.interaction!==`completed`){s&&t.onGoalActivationStateChange?.(s.goalId,s.previous),_({item:r,kind:`proposal`}),F(n.proposal.status===`stale`?d(`feedback.stale`):d(`actionReview.${r.reviewPlan.reason}`));return}F(d(`feedback.completed`,{title:r.title})),r.actionKind===`todo.create`&&await t.onRefresh?.(),r.actionKind===`goal.lifecycle`&&(r.lifecycleOperation===`stop`||r.lifecycleOperation===`delete`)&&ot(null),r.actionKind===`goal.lifecycle`&&r.lifecycleOperation===`delete`&&r.goalId&&t.onGoalDeleted?.(r.goalId),r.actionKind===`goal.lifecycle`&&nt(r.goalId?[r.goalId]:void 0)}catch(n){if(s&&t.onGoalActivationStateChange?.(s.goalId,s.previous),n instanceof Fh&&n.payload.error_code===`protected_action`){let r=n.payload.gate,i=r&&typeof r==`object`?r:{},a={...e,reviewPlan:e.reviewPlan?{...e.reviewPlan,interaction:`gated`,reason:`authority_gate`,canApply:!1}:void 0,gate:{kind:String(i.kind??`protected_action`),nextAction:typeof i.next_action==`string`?i.next_action:void 0,summary:String(i.summary??n.message)},status:`gated`};C(t=>({...t,[e.previewId]:a})),_({item:a,kind:`proposal`}),F(d(`feedback.gateRequired`,{summary:a.gate.summary})),e.actionKind===`goal.create`&&e.goalId&&(t.onRefresh?.(),ot(e.goalId));return}let r=n instanceof Fh&&Py(n.payload),i=n instanceof Fh&&n.payload.error_code===`action_response_mismatch`,a={...e,reviewPlan:e.reviewPlan?{...e.reviewPlan,interaction:r?`refresh`:`repair`,reason:i?`readback_unverified`:r?`stale_proposal`:`apply_failed`,canApply:!1}:void 0,errorMessage:n instanceof Error?n.message:String(n),status:r?`stale`:`error`};C(t=>({...t,[e.previewId]:a})),_({item:a,kind:`proposal`}),F(d(`feedback.executionFailed`,{error:a.errorMessage}))}}let it={...t,onOpenRunSession:async e=>{e.goalId!==R&&ot(e.goalId),T(`chat`),await t.onOpenRunSession?.(e),x(e),_(null)},onOpenGoal:e=>{ot(e),nt([e])},onOpenGoalView:e=>{T(e),e===`chat`&&x(null),_(null)},onOpenOutput:e=>{e.goalId!==R&&ot(e.goalId),T(`files`),t.onOpenOutput?.(e)},onApplyProposal:rt,onCancelProposal:async e=>{_(null),C(t=>{let n={...t};return delete n[e.previewId],n});try{t.onCancelProposal?.(e),t.onCancelProposal||await Wh(e.previewId)}catch(t){C(t=>({...t,[e.previewId]:e})),F(d(`feedback.cancelFailed`,{error:t instanceof Error?t.message:String(t)}))}},onTransitionProposal:async(e,t)=>{let n=uS(await Gh(e.previewId,t),d);de(e=>e.includes(n.previewId)?e:[...e,n.previewId]),C(r=>{let i={...r};return t===`regenerate`&&delete i[e.previewId],i[n.previewId]=n,i}),_({item:n,kind:`proposal`})},onSelectWorkspaceCandidate:async(e,t)=>{e.sourceRequest&&(C(t=>{let n={...t};return delete n[e.previewId],n}),await Xe({...e.sourceRequest,idempotencyKey:`${e.sourceRequest.idempotencyKey}-${t}`,normalizedParameters:{...e.sourceRequest.normalizedParameters,workspace_ref:t}}))},onPreviewAction:Xe,onRequestScheduleConfig:(e,t)=>$e(e,t),onOpenNotificationSettings:e=>_({goalId:e,kind:`settings`,tab:`lark`}),onFetchNotificationTargets:()=>mg(),onSetupGoalChannel:e=>gg(e),onToggleGoalAutoNotify:e=>_g(e),onUpdateSchedule:async(e,t)=>{let n=Date.now().toString(36),r=e.scheduleKind===`heartbeat`;await Xe({actionKind:r?`heartbeat.bind`:`monitor.update`,context:{kind:`schedule`,goal_id:e.goalId},idempotencyKey:`workspace-monitor-${e.scheduleId}-${t}-${n}`,normalizedParameters:{agent_id:e.agentId??je,...!r&&t===`run_now`?{endpoint_id:je}:{},...t===`edit`?{cadence:`2h`,...r?{timezone:e.timezone??`Asia/Shanghai`}:{}}:{},goal_id:e.goalId,operation:t,...!r&&t===`run_now`&&e.sessionId?{session_id:e.sessionId}:{},...r?{}:{todo_id:e.scheduleId}},summary:t===`pause`?`暂停自动运行:${e.label}`:t===`resume`?`恢复自动运行:${e.label}`:t===`run_now`?`立即运行:${e.label}`:t===`stop`?`停止自动运行:${e.label}`:`编辑自动运行生命周期:${e.label}`})}},at=o?{onOpenGoal:it.onOpenGoal,onOpenGoalView:it.onOpenGoalView,onOpenOutput:it.onOpenOutput}:it;function ot(e){p(e),D(!1),k(!1),te(!1),x(null),_(null),T(`tasks`),he(!1),t.onSelectGoal?.(e)}function st(e){h(e),t.onSelectAgent?.(e)}function ct(e){_e(e),Xx(e)}async function lt(n){let r=n?[]:N,i=(n??Ne).trim()||(r.length?d(`composer.imageAnalysisPrompt`):``);if(!(!i||M)){n||(Fe(``),P([])),ie(null),ne(!0);try{if(r.length){R?w!==`chat`&&te(!0):k(!0);let e=await t.onSendMessage?.(i,je,R,r);e&&await Xe(e);return}let n=Cb(i,{agents:e.map(e=>({agentId:e.agentId,label:e.label})),goalId:R,todos:(V?.agentTodos??[]).map(e=>({text:e.text,todoId:e.todoId}))});if(n.route===`clarify`){Fe(i);let e=d(`composer.clarifySingleAction`);n.missingFields.includes(`resume_when`)&&(e=d(`composer.clarifyDefer`)),F(e);return}if(n.actionKind===`goal.create`){let e=mS(i,d),t=dS(e.title);await Xe({actionKind:`goal.create`,context:{kind:`manager`,goal_id:null,natural_language:i},idempotencyKey:`workspace-goal-intent-${t}-${Date.now().toString(36)}`,normalizedParameters:{agent_id:je,completion_criteria:e.completionCriteria,execution_boundary:e.executionBoundary,goal_id:t,heartbeat:{cadence:hS(i),enabled:n.normalizedParameters.heartbeat_enabled===!0,timezone:`Asia/Shanghai`},initial_todos:e.initialTodos,objective:e.objective,permission:e.permission,stop_condition:vS(i),title:e.title,workspace_ref:`current`},summary:d(`proposal.summary.goalCreate`,{title:e.title})});return}if(R&&n.actionKind===`heartbeat.bind`){await et(`heartbeat`,R,i);return}if(R&&n.actionKind===`monitor.create`){let e=gS(i,d);if(e){Fe(i),F(e);return}await et(`monitor`,R,i);return}let a=yS(i,e);if(R&&a&&n.actionKind===`agent.bind`){await Xe({actionKind:`agent.bind`,context:{kind:`goal`,goal_id:R,natural_language:i},idempotencyKey:`workspace-agent-bind-${R}-${a.agentId}-${Date.now().toString(36)}`,normalizedParameters:{agent_id:a.agentId,goal_id:R},summary:`将 ${a.label} 绑定到 ${V?.title??R}`});return}if(R&&n.actionKind===`todo.create`){if(n.normalizedParameters.start_execution===!0){await Xe({actionKind:`todo.create`,context:{kind:`goal`,goal_id:R,natural_language:i},idempotencyKey:`workspace-task-start-${R}-${Date.now().toString(36)}`,normalizedParameters:{endpoint_id:a?.agentId??je,goal_id:R,start_execution:!0,text:i},summary:`交给 Agent 执行:${i.slice(0,120)}`});return}let e=a?.agentId??(/(交给|分配给|让).{0,24}(agent|codex|claude|kiro|kimi)/iu.test(i)?je:null);await Xe({actionKind:`todo.create`,context:{kind:`goal`,goal_id:R,natural_language:i},idempotencyKey:`workspace-todo-create-${R}-${Date.now().toString(36)}`,normalizedParameters:{...e?{endpoint_id:e}:{},goal_id:R,text:bS(i)},summary:`创建 Todo:${bS(i)}`});return}let o=V?.agentTodos.find(e=>i.includes(e.todoId)||i.includes(e.text)),s=typeof n.normalizedParameters.operation==`string`?n.normalizedParameters.operation:null;if(R&&o&&n.actionKind===`todo.update`&&s){await Xe({actionKind:`todo.update`,context:{kind:`todo`,goal_id:R,todo_id:o.todoId,natural_language:i},idempotencyKey:`workspace-todo-update-${o.todoId}-${s}-${Date.now().toString(36)}`,normalizedParameters:{agent_id:je,...s===`reassign`&&a?{endpoint_id:a.agentId}:{},...s===`block`?{note:i}:{},...s===`defer`&&typeof n.normalizedParameters.resume_when==`string`?{resume_when:n.normalizedParameters.resume_when}:{},goal_id:R,operation:s,todo_id:o.todoId},summary:`更新 Todo:${o.text}`});return}R?w!==`chat`&&te(!0):k(!0);let c=await t.onSendMessage?.(i,je,R);c&&await Xe(c)}catch(e){n||(Fe(i),P(r));let t=e instanceof Error?e.message:d(`feedback.sendGenericError`);F(d(`feedback.sendFailed`,{error:t}))}finally{ne(!1)}}}let ut=e.find(e=>e.agentId===je)?.label??je,dt=!V&&Ne.startsWith(d(`composer.createGoalDraftLead`)),ft=He.filter(e=>e.kind===`run`&&!!e.run.sessionId&&!!e.run.canInterrupt&&(e.run.status===`running`||e.run.status===`queued`)).length;async function pt(e){if(!e?.length)return;let t=CS-N.length,n=Array.from(e).slice(0,Math.max(0,t)),r=n.find(e=>!xS.has(e.type)),i=n.find(e=>e.size>SS);if(t<=0){ie(d(`composer.imageCountError`,{count:CS}));return}if(r){ie(d(`composer.imageTypeError`));return}if(i){ie(d(`composer.imageSizeError`,{size:SS/1024/1024}));return}try{let t=await Promise.all(n.map(e=>wS(e,d)));P(e=>[...e,...t].slice(0,CS)),ie(e.length>n.length?d(`composer.imageCountError`,{count:CS}):null)}catch(e){ie(e instanceof Error?e.message:d(`composer.imageReadGenericError`))}finally{Ee.current&&(Ee.current.value=``)}}function mt(e){let t=Array.from(e.clipboardData.items).filter(e=>e.kind===`file`&&e.type.startsWith(`image/`)).flatMap(e=>{let t=e.getAsFile();return t?[t]:[]});t.length&&(e.preventDefault(),pt(t))}async function ht(){let e=await s_();xe(e)}async function gt(){await Promise.all([ht(),t.onRefresh?.()])}async function _t(){if(!(!t.onRefresh||ce===`loading`)){le(`loading`);try{await t.onRefresh(),le(`done`)}catch{le(`error`)}window.setTimeout(()=>le(`idle`),1800)}}return Be?(0,B.jsx)(Kx,{callbacks:at,focusGoalConnection:!!(g?.kind===`settings`&&g.goalId),goalNotifications:a.goalNotifications??[],goals:Le,initialGoalId:g?.kind===`settings`?g.goalId??R:R,initialTab:g?.kind===`settings`?g.tab??`lark`:`lark`,onChanged:()=>void gt(),onClose:()=>_(null),onThemeChange:ct,theme:ge}):(0,B.jsx)(Zx,{drawer:Ye?(0,B.jsx)(Mb,{agents:e,attentionHistory:a.attentionHistory??a.userTodos,onSelectAttention:e=>_({kind:`attention`,item:e}),callbacks:at,goalNotifications:a.goalNotifications??[],goals:Le,inspectorExpanded:v,larkConnections:o?[]:be,onClose:()=>{Ye.kind===`proposal`&&[`applied`,`rejected`].includes(Ye.item.status)&&(Ye.item.actionKind!==`heartbeat.bind`||Ye.item.status!==`applied`)&&C(e=>{let t={...e};return delete t[Ye.item.previewId],t}),y(!1),_(null)},onToggleInspectorSize:()=>y(e=>!e),readOnly:o,runs:He.flatMap(e=>e.kind===`run`?[e.run]:[]),selection:Ye}):null,drawerMode:Ye?.kind===`todo`?v?`inspector-full`:`inspector`:`panel`,drawerOpen:Ye!==null,mobileSidebarOpen:me,onCloseMobileSidebar:()=>he(!1),theme:ge,main:(0,B.jsxs)(`div`,{className:`personal-channel`,children:[(0,B.jsx)(tb,{agents:e,managerChatOpen:E,managerChannelBinding:r,managerRuntime:i,mobileNavigationOpen:me,onOpenGoalCapabilities:V?()=>_({goalId:V.goalId,kind:`settings`,tab:`capabilities`}):void 0,onOpenGoalDetail:V&&!V.loadState?()=>_({item:V,kind:`goal`}):void 0,onRefresh:t.onRefresh?()=>void _t():void 0,onOpenNavigation:()=>he(!0),onOpenManagerChat:()=>{k(!1),D(!0)},onSelectGoalTab:e=>{T(e),e===`chat`&&(x(null),te(!1))},onSelectAgent:st,onReturnManagerHome:()=>{D(!1),k(!1),window.requestAnimationFrame(()=>Te.current?.scrollTo({behavior:`smooth`,top:0}))},selectedAgentId:je,refreshState:ce,readOnlySourceLabel:o?l?.activeSource.label:void 0,selectedGoal:V,selectedGoalTab:w}),(0,B.jsxs)(`div`,{className:`personal-channel-scroll`,ref:Te,children:[!V&&!E&&ke&&ke.done+ke.failed+ke.attention>0?(0,B.jsxs)(`section`,{className:`personal-digest-card`,"aria-label":d(`digest.away`),children:[(0,B.jsx)(`strong`,{children:d(`digest.away`)}),(0,B.jsxs)(`div`,{className:`personal-digest-stats`,children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`b`,{children:ke.done}),d(`digest.completed`)]}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`b`,{children:ke.failed}),d(`digest.failed`)]}),(0,B.jsxs)(`span`,{children:[(0,B.jsx)(`b`,{children:ke.attention}),d(`digest.needsYou`)]})]})]}):null,!V&&!E?(0,B.jsxs)(`section`,{className:`personal-manager-greeting`,children:[(0,B.jsx)(`span`,{children:(0,B.jsx)(nm,{size:20})}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:d(`home.greeting`)}),(0,B.jsx)(`p`,{children:a.goals.some(e=>e.activationState===`active`&&e.loadState)?d(`startup.partial`):(0,B.jsxs)(B.Fragment,{children:[d(`home.waitingCount`,{count:Re}),` `,d(`home.blockingSummary`,{count:ze})]})})]})]}):null,V?.loadState?(0,B.jsx)(`section`,{className:`personal-manager-greeting`,role:`status`,"data-testid":`goal-status-loading`,children:(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`strong`,{children:d(V.loadState===`error`?`startup.goalError`:`startup.goalLoading`)}),(0,B.jsx)(`p`,{children:d(V.loadError?`startup.error.${V.loadError}`:`startup.independent`)}),V.loadState===`error`?(0,B.jsx)(`button`,{className:`min-h-11 rounded-md border px-3 py-2 text-sm`,type:`button`,onClick:()=>void t.onRefresh?.(),children:d(`startup.retry`)}):null]})}):V&&w===`tasks`?(0,B.jsx)(ix,{historyEnabled:!o,goal:V,items:He,onDraftTaskFromMessage:o?void 0:e=>{Fe(`创建一个 Task:${Qx(e)}`),F(d(`feedback.taskDraftCreated`)),window.requestAnimationFrame(()=>we.current?.focus())},onOpenChat:()=>T(`chat`),onQuickComplete:o?void 0:tt,onSelect:_,quickCompletingTodoIds:se,selectedTodoId:Ye?.kind===`todo`?Ye.item.todoId:null,userTodos:a.userTodos}):V&&w===`files`?(0,B.jsx)(nS,{items:He.filter(e=>e.kind===`output`),onSelect:_,reportState:a.periodicReports}):!V&&!E?(0,B.jsx)(tS,{goals:Le,onRetry:()=>void t.onRefresh?.(),onSelectGoal:ot,systemHealth:a.systemHealth}):V?(0,B.jsxs)(B.Fragment,{children:[V&&b?.goalId===V.goalId?(0,B.jsx)(iS,{onClose:()=>x(null),onOpenDetails:()=>_({item:b,kind:`run`}),run:b}):null,(0,B.jsx)(mb,{items:Ue,onSelect:_,selectedGoal:V})]}):(0,B.jsx)(mb,{items:Ke,onSelect:_,selectedGoal:null})]}),(0,B.jsx)(`div`,{className:`personal-composer-wrap`,children:o?(0,B.jsxs)(`div`,{className:`personal-read-only-notice`,children:[(0,B.jsx)(`strong`,{children:d(`source.readOnlyNoticeTitle`)}),(0,B.jsx)(`span`,{children:d(`source.readOnlyNoticeDescription`)})]}):(0,B.jsxs)(B.Fragment,{children:[!V&&!E&&O&&We.length?(0,B.jsx)(rS,{messages:We,onClose:()=>k(!1),onOpenConversation:()=>{k(!1),D(!0)}}):null,V&&w!==`chat`&&ee&&Ge.length?(0,B.jsx)(rS,{agentLabel:ut,messages:Ge,onClose:()=>te(!1),onDraftTask:w===`tasks`?e=>{Fe(`创建一个 Task:${Qx(e)}`),F(d(`feedback.taskDraftCreated`)),window.requestAnimationFrame(()=>we.current?.focus())}:void 0,onOpenConversation:()=>{te(!1),T(`chat`)},title:`${V.title} · ${ut}`}):null,ae?(0,B.jsxs)(`div`,{className:`personal-action-feedback`,role:`status`,children:[(0,B.jsx)(`span`,{children:ae}),(0,B.jsx)(`button`,{"aria-label":d(`common.closeActionReceipt`),onClick:()=>F(null),type:`button`,children:(0,B.jsx)(ah,{size:14})})]}):null,(0,B.jsx)(`p`,{className:`personal-composer-hint`,children:V?ft>0?d(`composer.goalRunningHint`,{agent:ut,count:ft}):d(`composer.goalMessageHint`,{agent:ut}):d(`composer.managerMessageHint`)}),V?(0,B.jsxs)(`div`,{className:`personal-quick-prompts`,children:[(0,B.jsxs)(`button`,{"aria-label":d(`composer.nextAction`),disabled:M,onClick:()=>void lt(d(`composer.nextActionPrompt`)),title:d(`composer.sendMessageHint`),type:`button`,children:[(0,B.jsx)(Mm,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.nextAction`)})]}),(0,B.jsxs)(`button`,{"aria-label":d(`composer.agentProgress`),disabled:M,onClick:()=>void lt(d(`composer.agentProgressPrompt`)),title:d(`composer.sendMessageHint`),type:`button`,children:[(0,B.jsx)(Km,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.agentProgress`)})]}),(0,B.jsxs)(`button`,{"aria-label":d(`composer.monitor`),disabled:M,onClick:()=>void lt(d(`composer.monitorShortcutTemplate`,{target:d(`schedule.defaultTarget`)})),title:d(`composer.sendMessageHint`),type:`button`,children:[(0,B.jsx)(im,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.monitor`)})]}),(0,B.jsxs)(`button`,{"aria-label":d(`composer.blockers`),disabled:M||!Ie(`gate`),onClick:()=>void lt(Ie(`gate`)),title:d(`composer.sendMessageHint`),type:`button`,children:[(0,B.jsx)(lm,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.blockers`)})]}),(0,B.jsxs)(`button`,{"aria-label":d(`composer.evidence`),disabled:M||!Ie(`evidence`),onClick:()=>void lt(Ie(`evidence`)),title:d(`composer.sendMessageHint`),type:`button`,children:[(0,B.jsx)(xm,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.evidence`)})]})]}):(0,B.jsxs)(`div`,{className:`personal-quick-prompts`,children:[(0,B.jsxs)(`button`,{"aria-label":d(`composer.globalTasks`),disabled:M,onClick:()=>void lt(d(`composer.globalTasksPrompt`)),title:d(`composer.sendMessageHint`),type:`button`,children:[(0,B.jsx)(Mm,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.globalTasks`)})]}),(0,B.jsxs)(`button`,{"aria-label":d(`composer.globalProgress`),disabled:M,onClick:()=>void lt(d(`composer.globalProgressPrompt`)),title:d(`composer.sendMessageHint`),type:`button`,children:[(0,B.jsx)(Km,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.globalProgress`)})]}),(0,B.jsxs)(`button`,{"aria-label":d(`composer.createGoal`),onClick:Ze,title:d(`composer.createGoalHint`),type:`button`,children:[(0,B.jsx)(Bm,{size:13}),(0,B.jsx)(`span`,{children:d(`composer.createGoal`)})]})]}),dt?(0,B.jsxs)(`div`,{className:`personal-goal-draft-status`,role:`status`,children:[(0,B.jsx)(`strong`,{children:d(`composer.createGoalDraft`)}),(0,B.jsx)(`span`,{children:d(`composer.createGoalDraftDescription`)})]}):null,N.length?(0,B.jsx)(`div`,{className:`personal-composer-images`,"aria-label":d(`composer.imagesPending`),children:N.map(e=>(0,B.jsxs)(`figure`,{children:[(0,B.jsx)(`img`,{alt:e.name,src:e.dataUrl}),(0,B.jsx)(`button`,{"aria-label":d(`composer.sentImageAlt`,{name:e.name}),onClick:()=>P(t=>t.filter(t=>t.id!==e.id)),type:`button`,children:(0,B.jsx)(ah,{size:13})})]},e.id))}):null,re?(0,B.jsx)(`p`,{className:`personal-composer-error`,role:`alert`,children:re}):null,(0,B.jsxs)(`div`,{className:`personal-channel-composer`,onDragOver:e=>{[...e.dataTransfer.items].some(e=>e.kind===`file`&&e.type.startsWith(`image/`))&&e.preventDefault()},onDrop:e=>{let t=[...e.dataTransfer.files].filter(e=>e.type.startsWith(`image/`));t.length&&(e.preventDefault(),pt(t))},children:[(0,B.jsxs)(`span`,{children:[(0,B.jsx)(nm,{size:17}),e.find(e=>e.agentId===je)?.label??je]}),(0,B.jsx)(`button`,{"aria-label":d(`composer.addImage`),className:`personal-composer-attach`,disabled:M||N.length>=CS,onClick:()=>Ee.current?.click(),title:d(`composer.attachImageHint`),type:`button`,children:(0,B.jsx)(Lm,{size:17})}),(0,B.jsx)(`input`,{accept:`image/png,image/jpeg,image/webp,image/gif`,"aria-label":d(`composer.imagePicker`),className:`personal-composer-file-input`,disabled:M||N.length>=CS,multiple:!0,onChange:e=>void pt(e.target.files),ref:Ee,type:`file`}),(0,B.jsx)(`textarea`,{"aria-label":d(`composer.sendMessage`),onChange:e=>Fe(e.target.value),onKeyDown:e=>{e.key===`Enter`&&!e.shiftKey&&!e.nativeEvent.isComposing&&(e.preventDefault(),lt())},onPaste:mt,placeholder:V?d(`composer.goalPlaceholder`,{goal:V.title}):d(`composer.managerPlaceholder`),ref:we,rows:1,value:Ne}),(0,B.jsx)(`button`,{"aria-label":d(dt?`composer.createGoal`:`composer.send`),disabled:!Ne.trim()&&N.length===0||M,onClick:()=>void lt(),title:d(dt?`composer.createGoalHint`:`composer.sendMessageHint`),type:`button`,children:(0,B.jsx)(Km,{size:18})})]})]})})]}),sidebar:(0,B.jsx)(ex,{attentionCount:Re,goals:Le,goalArchiveLoadState:n,goalLifecycleOperations:t.onExecuteGoalLifecycle?[`stop`,`resume`]:void 0,lifecycleBusyGoalIds:oe,onRequestGoalCreate:o?void 0:Ze,onRequestGoalLifecycle:o&&!t.onExecuteGoalLifecycle?void 0:(e,t)=>void Qe(e,t),onRetryGoalArchive:t.onRetryGoalArchive||t.onRefresh?()=>void(t.onRetryGoalArchive??t.onRefresh)?.():void 0,onOpenSettings:o?void 0:()=>_({kind:`settings`}),onSelectGoal:ot,selectedGoalId:R,statusSourceControl:l},l?.activeSource.statusUrl??`/status.json`)})}function ES(e){return(e??``).replace(/\s+/gu,` `).trim()}function DS(e,t=120){let n=Array.from(e);return n.length<=t?e:`${n.slice(0,t-1).join(``)}…`}function OS(e,t,n){let r=ES(e);return!r||r===`暂无`?n?t(n):``:/refresh-state|latest_run|latest run-derived/iu.test(r)?t(`projection.refreshState`):/first read-only adapter tick|read-only adapter/iu.test(r)?t(`projection.firstReadOnlyAdapterCheck`):/todo update recorded for/iu.test(r)?t(`projection.todoStatusUpdated`):/^(loopx|python3|npm|git|run)\s|\s--[a-z0-9-]+|\b[a-z]+_[a-z_]+\b/iu.test(r)?t(n??`projection.agentPreparingNextStep`):DS(r)}function kS(e,t){return t({advancing:`projection.agentAdvancingGoal`,idle:`projection.agentIdle`,needs_you:`projection.agentNeedsDecision`,stopped:`projection.agentStopped`,waiting_external:`projection.agentWaitingExternal`}[e])}function AS({eventCount:e,hasArtifact:t,hasLatestValidation:n},r){return{label:r(n?`projection.latestValidation`:`projection.latestRun`),metadata:e>0?r(`projection.events24h`,{count:e}):r(t?`projection.runEvidenceAvailable`:`projection.publicSafeProjection`)}}var jS=`/status.json`,MS=`loopx-status-source-catalog-v1`,NS={id:`local`,kind:`local`,label:`本机`,readOnly:!1,statusUrl:jS};function PS(e,t){let n=uh(e,t).source;if(!n||!n.isLoopback||n.isRelative)return{error:`SSH 隧道来源必须使用显式的 localhost、127.0.0.1 或 ::1 URL。`};let r=new URL(n.url,t);return[`http:`,`https:`].includes(r.protocol)?{url:r.toString()}:{error:`状态来源只支持 HTTP 或 HTTPS。`}}function FS(e){let t=2166136261;for(let n of e)t^=n.codePointAt(0)??0,t=Math.imul(t,16777619);return`ssh-${(t>>>0).toString(36)}`}function IS(e,t){if(!e||typeof e!=`object`||Array.isArray(e))return null;let n=e;if(n.kind!==`ssh_tunnel`||typeof n.label!=`string`||typeof n.statusUrl!=`string`)return null;let r=n.label.trim(),i=PS(n.statusUrl,t);if(!r||r.length>48||!(`url`in i))return null;let a=Wb(n.hostAlias)?n.hostAlias.trim():void 0;return{...a?{hostAlias:a}:{},id:FS(i.url),kind:`ssh_tunnel`,label:r,readOnly:!0,statusUrl:i.url}}function LS(){return{schemaVersion:1,sources:[NS]}}function RS(e,t){try{let n=e.getItem(MS);if(!n)return LS();let r=JSON.parse(n);if(r.schemaVersion!==1||!Array.isArray(r.sources))return LS();let i=new Set([NS.statusUrl]);return{schemaVersion:1,sources:[NS,...r.sources.flatMap(e=>{let n=IS(e,t);return!n||i.has(n.statusUrl)?[]:(i.add(n.statusUrl),[n])})]}}catch{return LS()}}function zS(e,t){e.setItem(MS,JSON.stringify({schemaVersion:1,sources:t.sources.filter(e=>e.kind===`ssh_tunnel`)}))}function BS(e,t){let n=new Set(t.filter(Wb).map(e=>e.trim())),r=!1,i=e.sources.map(e=>e.kind!==`ssh_tunnel`||e.hostAlias||!n.has(e.label)?e:(r=!0,{...e,hostAlias:e.label}));return r?{...e,sources:i}:e}function VS(e,t,n){let r=t.label.trim();if(!r)return{error:`请填写来源名称。`};if(r.length>48)return{error:`来源名称不能超过 48 个字符。`};let i=PS(t.statusUrl,n);if(!(`url`in i))return i;if(e.sources.some(e=>e.statusUrl===i.url))return{error:`这个状态 URL 已经在来源目录中。`};if(t.hostAlias!==void 0&&!Wb(t.hostAlias))return{error:`请选择有效的 SSH Host。`};let a=t.hostAlias?.trim(),o={...a?{hostAlias:a}:{},id:FS(i.url),kind:`ssh_tunnel`,label:r,readOnly:!0,statusUrl:i.url};return{catalog:{...e,sources:[...e.sources,o]},source:o}}function HS(e,t){return{...e,sources:e.sources.filter(e=>e.kind===`local`||e.id!==t)}}function US(e,t,n){if(!t.trim()||uh(t,n).source?.isRelative)return NS;let r=t.trim();try{r=new URL(r,n).toString()}catch{return null}return e.sources.find(e=>e.statusUrl===r)??null}function WS(e,t,n){return US(e,t,n)||(uh(t,n).source?.isRelative?NS:{id:`temporary`,kind:`ssh_tunnel`,label:`临时来源`,readOnly:!0,statusUrl:t.trim()})}function GS(e,t,n,r){return WS(e,t??n,r)}var KS={delete:`删除`,deploy:`部署`,merge:`合并`,payment:`付款`,release:`发布`};function qS(e,t,n){let r=t.replace(/\s+/gu,` `).trim().toLowerCase(),i=n.target.replace(/\s+/gu,` `).trim().toLowerCase();return!i||!r.includes(i)?null:{actionKind:`goal.update`,context:{goal_id:e,kind:`goal`,natural_language:t,semantic_proposal:{operation:n.operation,target:n.target}},idempotencyKey:`workspace-semantic-protected-${e}-${Date.now().toString(36)}`,normalizedParameters:{goal_id:e,status:`operator_gate_requested`},summary:`请求受保护操作:${KS[n.operation]} · ${n.target}`}}var JS=jS;async function YS(e){let t=await fetch(e,{cache:`no-store`,signal:AbortSignal.timeout(3e4)});if(!t.ok)throw Error(`HTTP ${t.status} while loading ${e}`);return kp(await t.json())}function XS(e,t){if(t?.controller_readiness?.decision_advisor_ready||t?.controller_readiness?.write_controller_ready)return`controller_ready`;if(t?.controller_readiness)return`controller_gated`;if(t?.human_reward)return`reward_judged`;if(t?.operator_gate?.decision===`approve`)return`operator_approved`;if(t?.operator_gate)return`operator_gated`;let n=e||t?.classification||``;return n===`connected_without_run`?`connected`:n===`read_only_project_map`||t?.project_map?`mapped`:n===`state_refreshed`?`refreshed`:n&&n!==`no_status`?`adapter_inspected`:`registered`}function ZS(e,t){let n=new Map(t.map(e=>[e.goal_id,e])),r=new Set,i=e.map(e=>{r.add(e.id);let t=n.get(e.id),i=e.latest_runs[0],a=t?.lifecycle_phase??e.lifecycle_phase??i?.lifecycle_phase??XS(t?.status??i?.classification??e.status,i),o=t?.lifecycle_flags?.length?t.lifecycle_flags:e.lifecycle_flags?.length?e.lifecycle_flags:i?.lifecycle_flags?.length?i.lifecycle_flags:[a];return{goal:e,queueItem:t,latestRun:i,status:t?.status??i?.classification??e.status??`no_status`,waitingOn:t?.waiting_on??`clear`,severity:t?.severity??`clear`,lifecyclePhase:a,lifecycleFlags:o}});for(let e of t)r.has(e.goal_id)||i.push({goal:{activation_state:e.activation_state,id:e.goal_id,status:e.status,display_name:e.goal_id,latest_runs:[],lifecycle_flags:[e.lifecycle_phase??`registered`],registry_member:!0,legacy_runtime_goal:!1,index_exists:!1,raw_index_records:0,unique_runs:0},queueItem:e,status:e.status,waitingOn:e.waiting_on,severity:e.severity,lifecyclePhase:e.lifecycle_phase??`registered`,lifecycleFlags:e.lifecycle_flags??[`registered`]});return i}function QS(e){return(e??``).replace(/\s+/g,` `).trim()}function $S(e,t=132){let n=QS(e);return n.length<=t?n:`${n.slice(0,Math.max(0,t-1))}…`}function eC(e){let t=new Map;for(let n of e?.goals??[])t.set(n.goal_id,n);return t}function tC(e,t){return e===void 0||t===void 0?void 0:e+t}function nC(e,t){if(!e)return null;let n=t===`user`?e.queueItem?.project_asset?.user_todos:e.queueItem?.project_asset?.agent_todos;if(n?.items?.length)return{done_count:n.done??n.items.filter(e=>e.done).length,items:n.items,open_count:n.open??n.items.filter(e=>!e.done).length,total_count:n.total??n.items.length};let r=t===`user`?e.queueItem?.user_todos:e.queueItem?.agent_todos;return r?.items?.length?r:null}function rC(e){return e?.items.find(e=>!e.done)}function iC(e,t,n=`todos`){return e?.items?.length?{advancement_done_count:e.advancement_done_count??t?.advancement_done_count,done_count:e.done??e.items.filter(e=>e.done).length,items:e.items,open_count:e.open??e.items.filter(e=>!e.done).length,total_count:e.total??e.items.length}:t??null}function aC(e){return e?.queueItem?.project_asset?.quota?.state??e?.queueItem?.quota?.state??e?.goal.quota?.state??`waiting`}function oC(e,t,n){let r=[];for(let t of e){let e=nC(t,`agent`);for(let n of e?.items??[])r.push({goalId:t.goal.id,role:`agent`,todo:n})}let i=new Map;for(let e of r){let t=e.todo.claimed_by||`codex`,n=i.get(t)??[];n.push(e),i.set(t,n)}let a=new Map((n?.agents??[]).map(e=>[e.agent_id,e]));return Array.from(new Set([...i.keys(),...a.keys()])).map(e=>{let t=i.get(e)??[],n=a.get(e),r=Array.from(new Set([...t.map(e=>e.goalId),n?.current_todo?.goal_id,...n?.goal_ids??[]].filter(Boolean))),o=(t.filter(e=>!e.todo.done)[0]??t[0])?.goalId??n?.current_todo?.goal_id??r[0]??``,s=n?.last_activity_at??null;return{agentId:e,claimedTodos:t,currentTodo:n?.current_todo??null,evidenceRefs:[],goalIds:r,handoffNote:null,lastActivity:s,nextSafeAction:n?.next_action?.trim()||`Inspect status projection before taking work`,primaryGoalId:o,quotaHints:[],staleClaimHint:null,status:{label:`可用`,summary:`正常运行`,variant:`success`},workspaceRef:null}})}function sC(e){return e?.map(e=>({dataUrl:e.data_url,id:e.id,mimeType:e.mime_type,name:e.name,size:e.size}))}var cC=`loopx.personal-agent-selection.v1`;function lC(){if(typeof window>`u`)return{};try{let e=JSON.parse(window.localStorage.getItem(cC)??`{}`);return!e||typeof e!=`object`||Array.isArray(e)?{}:Object.fromEntries(Object.entries(e).filter(e=>typeof e[0]==`string`&&typeof e[1]==`string`))}catch{return{}}}var uC={需修复:`danger`,等你:`warning`,等待条件:`info`,推进中:`success`,安静运行:`neutral`,已停止:`neutral`,已完成:`neutral`};function dC(e,t){return QS(t)||e.replace(/^loopx[-_]/i,`LoopX `).split(/[-_]+/).filter(Boolean).map((e,t)=>t===0?`${e.slice(0,1).toUpperCase()}${e.slice(1)}`:e).join(` `)}function fC(e){return e.split(/\r?\n/u).filter(e=>!/^\s*GOAL_(STATUS|PROGRESS)\s*:/u.test(e)).map(e=>/^\s*GOAL_EVIDENCE\s*:/u.test(e)?e.replace(/^\s*GOAL_EVIDENCE\s*:/u,`验证依据:`):/^\s*NEXT_ACTION\s*:/u.test(e)?e.replace(/^\s*NEXT_ACTION\s*:/u,`下一步:`):e).join(` +`).trim()}function pC(e,t){return[`agent`,`assistant`].includes(e.trim().toLowerCase())&&t.trim().length>0}var mC=`已发现的项目 Agent`;function hC(e){switch(Sy(e)){case`codex`:return`Codex`;case`claude`:return`Claude Code`;case`kiro`:return`Kiro CLI`;case`trae`:return`Trae CLI Agent`;case`coco`:return`Coco Agent`;default:return dC(e)}}function gC(e,t){switch(Cy(e,t)){case`codex`:return`代码与项目执行`;case`claude`:return`复杂分析与长任务`;case`openai`:case`anthropic`:return`管家问答 · 无工具`;case`kiro`:return`终端编码 · 原生 /goal 循环`;case`trae`:return`前端与交互实现`;case`coco`:return`通用任务`;default:return mC}}function _C(e,t){let n=e.project_asset;return t===`user`?iC(n?.user_todos,e.user_todos,`project_asset.user_todos`):iC(n?.agent_todos,e.agent_todos,`project_asset.agent_todos`)}function vC(e){return $S(e.title??e.text,112)}function yC(e){let t=e.resume_condition?.resume_receipt;if(!t||typeof t!=`object`||Array.isArray(t))return null;let n=t.receipt_id;return typeof n==`string`&&n.trim()?n.trim():null}function bC(e,t){return{resumeWhen:e.resume_when??null,resumeReady:e.resume_ready??null,resumeReceiptId:yC(e),claimedBy:e.claimed_by??null,done:e.status!==`deferred`&&e.done,evidence:e.evidence?$S(e.evidence,96):null,index:e.index,priority:e.priority??null,status:e.status??null,taskClass:e.task_class??null,taskDomain:e.task_domain??null,text:vC(e),todoId:e.todo_id?.trim()||`${t.goal.id}:agent:${e.index}`}}function xC(e){let t=e.queueItem?.agent_todos,n=t?.items??e.queueItem?.project_asset?.agent_todos?.items??[],r=new Map(n.map(t=>[t.todo_id?.trim()||`${e.goal.id}:agent:${t.index}`,t]));for(let n of t?.deferred_items??[]){let t=n.todo_id?.trim()||`${e.goal.id}:agent:${n.index}`;r.has(t)||r.set(t,n)}return[...r.values()]}function SC(e){return xC(e).map(t=>bC(t,e))}function CC(e,t,n){let r=new Map;for(let n of e.todo_index?.items??[]){if(n.goal_id!==t.goal.id||n.role!==`agent`)continue;let e=bC(n,t);r.set(e.todoId,e)}for(let e of n)r.has(e.todoId)||r.set(e.todoId,e);let i=new Map;for(let e of r.values()){if(e.done||e.taskClass!==`advancement_task`)continue;let t=e.taskDomain?.trim();t&&i.set(t,(i.get(t)??0)+1)}return[...i].map(([e,t])=>({domain:e,matchingTodoCount:t}))}function wC(e,t){return{claimedBy:e.claimed_by??null,done:e.status===`done`||e.status===`completed`,index:-1,priority:e.priority??null,status:e.status??null,taskClass:e.task_class??null,text:$S(e.title,112),todoId:e.todo_id?.trim()||`${t.goal.id}:agent:${e.claimed_by??`unknown`}:current`}}function TC(e,t,n){let r=new Map(e.map(e=>[e.todoId,e]));for(let e of t){let t=e.currentTodo;if(!t||t.goal_id!==n.goal.id)continue;let i=wC(t,n);r.has(i.todoId)||r.set(i.todoId,i)}return[...r.values()]}function EC(e){let t=e.queueItem?.project_asset?.agent_todos,n=e.queueItem?.agent_todos,r=xC(e),i=t?.advancement_done_count??n?.advancement_done_count??t?.done??n?.done_count??null,a=r.filter(e=>e.done&&e.status!==`deferred`).length,o=Math.max(i??0,a),s=new Set(r.map(e=>e.todo_id?.trim()).filter(e=>!!e)),c=(t?.recent_completed_advancement_items??[]).filter(e=>!e.todo_id?.trim()||!s.has(e.todo_id.trim())).map(t=>bC(t,e)),l=r.find(e=>!e.done);return{doneTodoCount:o,nextTodoText:QS(t?.next??``)||(l?QS(l.title??``)||QS(l.text??``):``)||null,recentCompleted:c}}function DC(e,t){let n=QS(e);return n?/\b(state_file|registry_goal|authority_sources|source_registry)\b|\b[a-z_]+\s+\d+\/\d+/i.test(n)?t(`projection.goalVerified`):OS(n,t,`projection.validationRecorded`):``}function OC(e,t=4){if(e.length<=t)return e;let n=e.findIndex(e=>!e.done);if(n<0)return e.slice(-t);let r=Math.max(0,Math.min(n-2,e.length-t));return e.slice(r,r+t)}function kC(e,t,n){let r=t.queueItem?.project_asset?.latest_validation,i=t.latestRun,a=e.event_ledger_summary?.goals.find(e=>e.goal_id===t.goal.id);if(!r&&!i&&!a)return null;let o=[DC(r?.summary,n),OS(i?.health_check,n),OS(i?.recommended_action,n)].find(e=>e!==``&&e!==`暂无`)??n(`projection.runRecorded`),s=AS({eventCount:a?.events_24h??0,hasArtifact:!!(i?.json_exists||i?.markdown_exists),hasLatestValidation:!!r},n);return{generatedAt:r?.generated_at??i?.generated_at??a?.latest_event_at??``,label:s.label,metadata:s.metadata,runId:i?`${t.goal.id}:${i.generated_at}`:null,safePreview:[o,s.metadata].filter(Boolean).join(` +`),summary:o,todoId:t.queueItem?.project_asset?.agent_todos?.items.find(e=>!e.done)?.todo_id??null}}function AC(e){return[e.status,e.goal.status,e.latestRun?.classification,e.lifecyclePhase].filter(Boolean).some(e=>/(^|[_\s-])(done|complete|completed|finished|terminal|closed|success)([_\s-]|$)/i.test(e??``))}function jC(e,t){return e.global_registry?.findings?.find(e=>e.severity===`high`&&(e.goal_id===t.goal.id||e.goal_ids.includes(t.goal.id)))}function MC(e){return[e.status,e.goal.status,e.latestRun?.classification,e.lifecyclePhase].filter(Boolean).some(e=>/(^|[_\s-])(failure|failed|error|broken|unhealthy|blocked[_\s-]?health|health[_\s-]?blocked)([_\s-]|$)/i.test(e??``))}function NC(e,t){let n=t.queueItem?.stale_latest_run_warning;return t.severity===`high`||!!jC(e,t)||!!(n?.requires_refresh_state||n?.severity===`high`)||MC(t)}function PC(e,t){let n=jC(e,t);return t.queueItem?.stale_latest_run_warning?.recommended_action??t.queueItem?.stale_latest_run_warning?.reason??n?.recommended_action??n?.message??t.queueItem?.recommended_action??t.latestRun?.recommended_action??null}function FC(e){let t=e.latestRun?.operator_gate,n=t?.decision?.trim().toLowerCase()??``,r=new Set([`approve`,`approved`,`reject`,`rejected`,`defer`,`deferred`,`cancel`,`cancelled`]),i=[e.queueItem?.recommended_action,e.latestRun?.recommended_action].filter(Boolean).join(` `),a=/(?:等待|需要)(?:用户|你|owner).{0,24}(?:批准|确认|授权|补充|选择|决定)|(?:批准|确认|授权).{0,16}(?:后|才能|方可)/i.test(i);return!!(t&&!r.has(n))||e.lifecyclePhase===`operator_gated`&&!r.has(n)||a}function IC(e,t){let n=e.latestRun?.operator_gate;return OS(n?.operator_question??n?.reason_summary??n?.follow_up??e.queueItem?.recommended_action??e.latestRun?.recommended_action,t,`projection.confirmAgentDecision`)}function LC(e,t){if(t.goal.activation_state===`stopped`)return`已停止`;let n=nC(t,`user`),r=nC(t,`agent`),i=!!rC(n),a=!!rC(r);return[`user_or_controller`,`controller`].includes(t.waitingOn)||i||FC(t)?`等你`:NC(e,t)?`需修复`:t.waitingOn===`external_evidence`?`等待条件`:aC(t)===`eligible`||a?`推进中`:AC(t)?`已完成`:`安静运行`}function RC(e,t,n,r){if(n===`已停止`)return kS(`stopped`,r);if(n===`需修复`)return OS(PC(e,t),r,`projection.statusRefreshNeeded`);if(n===`等你`)return kS(`needs_you`,r);if(n===`推进中`){let e=[(nC(t,`agent`)?.items??[]).filter(e=>!e.done).flatMap(e=>[e.title,e.text]).map(e=>QS(e)).find(e=>e!==``&&e!==`暂无`),t.queueItem?.recommended_action,t.latestRun?.recommended_action].map(e=>QS(e)).find(e=>e!==``&&e!==`暂无`);return e?OS(e,r,`projection.agentAdvancingGoal`):kS(`advancing`,r)}return kS(n===`等待条件`?`waiting_external`:`idle`,r)}function zC(e,t){return t.some(t=>e.includes(t))}function BC(e,t,n){if(t.goals.some(e=>e.activationState===`active`&&e.loadState))return{text:`Goal 状态尚未全部加载,暂不能给出完整统计。可先打开已加载的 Goal,失败项可重试。`,lines:[]};if(zC(n,[`Agent`,`agent`,`推进`,`在做`])){let e=t.goals.filter(e=>![`安静运行`,`已完成`,`已停止`].includes(e.state)),n=(e.length>0?e:t.goals).slice(0,3);return n.length===0?{text:`当前状态里还没有 Goal 可供汇总。`,lines:[]}:{text:e.length>0?`Agent 当前关注这些 Goal:`:`当前 Goal 都比较安静:`,lines:n.map(e=>`${e.title} · ${e.state} · ${e.agentSentence}`)}}if(zC(n,[`现在`,`下一步`,`我该`,`该做什么`,`优先处理`])){let e=t.userTodos[0];if(e)return{text:e.blocking?`先处理「${dC(e.goalId)}」:${e.text}`:`当前最先处理「${dC(e.goalId)}」:${e.text}`,lines:[]};let n=t.goals.find(e=>e.state===`需修复`);if(n)return{text:`没有待办,但这个 Goal 需要先修复。`,lines:[`${n.title} · ${n.agentSentence}`]};let r=t.goals.find(e=>e.state===`推进中`);return r?{text:`目前不需要你介入,Agent 正在推进。`,lines:[`${r.title} · ${r.agentSentence}`]}:{text:`当前系统很安静,没有需要你立即处理的事项。`,lines:[]}}if(zC(n,[`等我`,`阻塞`,`需要我`,`全局待办`]))return t.userTodos.length===0?{text:`目前没有 Goal 在等你,开放用户待办为 0。`,lines:[]}:{text:`有 ${t.userTodos.length} 项开放用户待办,阻塞项优先:`,lines:t.userTodos.slice(0,3).map(e=>`${dC(e.goalId)} · ${e.blocking?`阻塞`:`待处理`} · ${e.text}`)};if(zC(n,[`状态`,`异常`,`修复`,`健康`])){let n=t.systemHealth?!t.systemHealth.ok:!e.ok||!e.contract?.ok||!e.global_registry?.ok||(e.global_registry?.summary?.high??0)>0,r=t.goals.filter(e=>e.state===`需修复`),i=r.slice(0,n?2:3).map(e=>`${e.title} · ${e.agentSentence}`);return n&&i.push(`全局状态、契约或注册表健康检查未通过,请进入管理页检查。`),i.length===0?{text:`当前没有发现 Goal 级或全局健康异常。`,lines:[]}:{text:r.length>0?`当前需要关注这些健康问题:`:`Goal 状态正常,但全局健康需要检查:`,lines:i}}return{text:`当前管家支持三类问题:下一步、等待你的事项、Agent 与健康状态。`,lines:[`问“我现在该做什么?”`,`问“哪些 Goal 在等我?”`,`问“Agent 在做什么?”或当前健康状态`]}}function VC(e,t,n,r=!1){let i=new Map(t.map(e=>[e.goal.id,e])),a=new Set(e.run_history.goals.filter(e=>e.activation_state===`stopped`).map(e=>e.id)),o=eC(e.usage_summary),s=oC(t,e.todo_index,e.agent_management_projection),c=e.attention_queue.items.flatMap((e,t)=>{if(a.has(e.goal_id))return[];let n=[`user_or_controller`,`controller`].includes(e.waiting_on);return(_C(e,`user`)?.items??[]).map((r,i)=>({projectedDone:r.done,details:Kd(r),actionKind:r.action_kind??null,blocking:n,goalId:e.goal_id,sourceOrder:t,taskClass:r.task_class??null,text:vC(r),todoId:r.todo_id?.trim()||`${e.goal_id}:user:${r.index}`,todoOrder:i,updatedAt:r.updated_at??null}))}),l=c.filter(e=>!e.projectedDone),u=new Set(l.map(e=>e.goalId)),d=t.flatMap((t,r)=>a.has(t.goal.id)||u.has(t.goal.id)||!FC(t)?[]:[{details:Kd({task_class:`user_gate`,status:`open`,note:t.latestRun?.operator_gate?.reason_summary}),actionKind:`gate.resolve`,blocking:!0,goalId:t.goal.id,sourceOrder:e.attention_queue.items.length+r,taskClass:`user_gate`,text:IC(t,n),todoId:`${t.goal.id}:operator-gate`,todoOrder:0,updatedAt:t.latestRun?.operator_gate?.recorded_at??t.latestRun?.generated_at??null}]),f=[...l,...d].sort((e,t)=>Number(t.blocking)-Number(e.blocking)||e.sourceOrder-t.sourceOrder||e.todoOrder-t.todoOrder),p=e.run_history.goals.flatMap(t=>{if(t.registry_member===!1)return[];let a=i.get(t.id);if(!a)return[];let c=LC(e,a),l=f.find(e=>e.goalId===t.id),u=l?.text??null,d=EC(a),p=t.coordination?.registered_agents??[],m=new Set(p),h=[...s.filter(e=>e.goalIds.includes(t.id)&&!/unassigned|unknown/i.test(e.agentId)&&(m.size===0||m.has(e.agentId))&&(e.currentTodo?.goal_id===t.id||e.claimedTodos.some(e=>e.goalId===t.id)))].sort((e,t)=>(t.lastActivity??``).localeCompare(e.lastActivity??``)),g=new Set(h.map(e=>e.agentId)),_=[...h.map(e=>({agentId:e.agentId,label:e.agentId,lastActivityAt:e.lastActivity,state:e.status.label})),...p.filter(e=>!g.has(e)).map(e=>({agentId:e,label:e,lastActivityAt:null,state:`registered`}))],v=h[0],y=TC(SC(a),h,a),b=[d.nextTodoText,a.queueItem?.recommended_action,a.latestRun?.recommended_action,RC(e,a,c,n)].map(e=>OS(e,n)).find(e=>e!==``&&e!==`暂无`)??n(`projection.nextUpdatePending`);return[{activationState:t.activation_state,agentId:v?.agentId??p[0]??`codex`,agentLaneCount:_.length,agentLanes:_,agentLabel:v?.agentId,agentSentence:RC(e,a,c,n),agentTodos:[...y,...d.recentCompleted],doneTodoCount:d.doneTodoCount,acceptanceObservation:t.acceptance_observation,goalId:t.id,latestActivity:a.latestRun?.generated_at??``,needsYou:u,needsYouActionKind:l?.actionKind??null,needsYouBlocking:l?.blocking??!1,needsYouTaskClass:l?.taskClass??null,needsYouTodoId:l?.todoId??null,nextSentence:b,runEvidence:kC(e,a,n),state:c,...r?{subagentExecution:{allowedDomains:t.spawn_policy?.allowed_domains??[],domainCandidates:CC(e,a,y),enabled:t.spawn_policy?.mode===`multi_subagent`&&t.spawn_policy.spawn_allowed===!0&&t.spawn_policy.max_children>0,maxChildren:t.spawn_policy?.max_children??0,modelConfig:t.spawn_policy?.model_config}}:{},title:dC(t.id,t.display_name),usage:(()=>{let e=o.get(t.id);return e?{costUsd24h:e.cost_usd_24h,costUsd7d:e.cost_usd_7d,durationMs24h:e.duration_ms_24h,durationMs7d:e.duration_ms_7d,tokens24h:tC(e.input_tokens_24h,e.output_tokens_24h),tokens7d:tC(e.input_tokens_7d,e.output_tokens_7d)}:null})()}]}),m=[];if(e.ok||m.push(`状态载荷未标记为正常 (payload.ok === false)`),e.contract&&!e.contract.ok){let t=e.contract.summary,n=t?`${t.errors} 项错误 / ${t.warnings} 项警告`:e.contract.errors?.[0]||`请检查控制面契约`;m.push(`契约检查未通过: ${n}`)}if(e.global_registry){e.global_registry.ok||m.push(`注册表状态异常: ${e.global_registry.summary.high} 项高危`);for(let t of e.global_registry.findings||[])t.severity===`high`&&m.push(`[${t.kind}] ${t.message}`)}let h=e.decision_freshness_summary?.summary?.stale_count?`${e.decision_freshness_summary.summary.stale_count} 项决策状态已过期`:null,g=m.length===0&&!h,_={ok:g,summary:g?`所有控制面契约与注册表检查均正常`:`发现 ${m.length+ +!!h} 项系统健康关注点`,issues:m,freshnessWarning:h};return{blockingTodoCount:f.filter(e=>e.blocking).length,goalNotifications:(e.goal_channel_notification_projection?.goals??[]).map(e=>({goalId:e.goal_id,configured:e.configured,enabled:e.enabled,humanGateAutoNotifyEnabled:e.human_gate_auto_notify_enabled,lastNotifiedAt:e.last_notified_at??null,receiptCount:e.receipt_count,targetRef:e.target_ref??null})),goals:p,openUserTodoCount:f.length,systemHealth:_,attentionHistory:[...c,...d],userTodos:f,visibleUserTodos:f.slice(0,5),workers:(e.agent_management_projection?.agents??[]).map(e=>({agentId:e.agent_id,currentTodoGoalId:e.current_todo?.goal_id??null,currentTodoText:e.current_todo?.title?$S(e.current_todo.title,96):null,lastActivityAt:e.last_activity_at??null,state:e.state??null}))}}function HC({goalArchiveLoadState:e,isLoading:t,onGoalActivationStateChange:n,onGoalDeleted:r,onSelectGoal:i,onReconcileStatus:a,onRefresh:o,onRetryGoalArchive:s,payload:c,progress:l,rows:u,selectedGoalId:d,statusSourceControl:f,theme:p,toggleTheme:m}){let h=f.activeSource.readOnly,g=f.activeSource.kind===`ssh_tunnel`?f.activeSource.hostAlias:void 0,{t:_}=Ji(),[v,y]=(0,z.useState)([]),[b,x]=(0,z.useState)(!1),[S,C]=(0,z.useState)(null),[w,T]=(0,z.useState)(null),E=(0,z.useMemo)(()=>{let e=VC(c,u,_,b);if(!l)return e;let t=Object.values(l.snapshots).map(e=>VC(e,ZS(e.run_history.goals,e.attention_queue.items),_,b)),n=new Map(t.flatMap(e=>e.goals).map(e=>[e.goalId,e])),r=e.goals.map(e=>n.get(e.goalId)??{...e,loadError:l.errors[e.goalId],loadState:l.errors[e.goalId]?`error`:`loading`,agentId:``,agentSentence:``,nextSentence:``,subagentExecution:void 0}),i=t.flatMap(e=>e.userTodos),a=r.some(e=>e.activationState===`active`&&e.loadState),o=[...new Set(t.flatMap(e=>e.systemHealth?.issues??[]))];return{...e,goals:r,userTodos:i,attentionHistory:t.flatMap(e=>e.attentionHistory??e.userTodos),visibleUserTodos:i.slice(0,5),openUserTodoCount:i.length,blockingTodoCount:i.filter(e=>e.blocking).length,workers:[...new Map(t.flatMap(e=>e.workers??[]).map(e=>[e.agentId,e])).values()],goalNotifications:t.flatMap(e=>e.goalNotifications??[]),systemHealth:a||t.length===0?void 0:{ok:t.every(e=>e.systemHealth?.ok),issues:o,summary:o.length?`发现 ${o.length} 项系统健康关注点`:`状态检查已完成`,freshnessWarning:t.map(e=>e.systemHealth?.freshnessWarning).filter(Boolean).join(`;`)||null}}},[c,u,l,b,_]),D=E.goals.find(e=>e.goalId===d)??null,O=l?.snapshots[d]??c,[k,ee]=(0,z.useState)(null),[te,A]=(0,z.useState)(null),[j,M]=(0,z.useState)(!1),ne=E.goals.some(e=>e.activationState===`active`&&e.loadState===`loading`)?`loading`:E.goals.map(e=>`${e.goalId}:${e.agentId}`).join(`|`),N=D?.goalId??`manager`;E.goals.some(e=>e.activationState===`active`&&e.loadState)||(E.systemHealth?!E.systemHealth.ok:!c.ok)||E.openUserTodoCount>0&&`${E.openUserTodoCount}${E.blockingTodoCount}`;let P=v.length>0?v.map(e=>({agentId:e.agent_id,adapterKind:e.adapter_kind,available:e.available,capability:gC(e.agent_id,e.adapter_kind),interrupt:e.interrupt,label:e.display_name,location:e.location,resume:e.resume,source:e.source,statusLabel:e.available?`可用`:`需要配置`,streaming:e.streaming,toolCalls:e.tool_calls,trustScope:e.trust_scope})):[{agentId:`codex`,available:!0,capability:gC(`codex`),label:`Codex`,statusLabel:`正在检测`}],re=[...P,{agentId:`status-only`,available:!0,capability:`不调用模型`,adapterKind:`status_projection`,interrupt:!1,label:`仅查状态`,resume:!0,statusLabel:`只读`,streaming:!1,toolCalls:!1,trustScope:`read_only`}],ie=P.find(e=>e.label===`Codex`&&e.available)?.agentId??P.find(e=>e.available)?.agentId??`status-only`,ae=w?.executor_endpoint?.trim()??``,F=ae?P.find(e=>e.agentId===ae)?.agentId:void 0,oe=e=>e===`manager`?F??ie:ie,[I,se]=(0,z.useState)(lC),L=gh(re,I[N]??oe(N),ie),[ce,le]=(0,z.useState)(!1),[ue,de]=(0,z.useState)(!1),[fe,pe]=(0,z.useState)(`chat`),[me,he]=(0,z.useState)(``),[ge,_e]=(0,z.useState)({}),[ve,ye]=(0,z.useState)({}),[be,xe]=(0,z.useState)(null),[Se,Ce]=(0,z.useState)({}),[we,Te]=(0,z.useState)([]),[Ee,De]=(0,z.useState)(null),[Oe,ke]=(0,z.useState)({}),Ae=(0,z.useRef)(1),R=(0,z.useRef)(1),je=(0,z.useRef)(new Map),Me=(0,z.useRef)(new Set),Ne=(0,z.useRef)(new Map),Pe=(0,z.useRef)(new Map),Fe=(0,z.useRef)(new Set),Ie=(0,z.useRef)(new Set),Le=(0,z.useRef)(null),Re=(0,z.useRef)(null),ze=(0,z.useRef)(null),V=(0,z.useRef)(null);(0,z.useRef)(null);let Be=ge[N]??[];ve[N];let Ve=(e,t)=>e===`manager`?_(`header.manager`):t,He=D?E.userTodos.filter(e=>e.goalId===D.goalId):E.userTodos,Ue=D?.agentTodos??[];OC(Ue,D?.needsYou?3:4);let We=Ue.filter(e=>e.done).length,Ge=Ue.length>0?`${We}/${Ue.length}`:`暂无计划`;D&&({...E},He.filter(e=>e.blocking).length,He.length),(0,z.useEffect)(()=>{let e=lh(f.activeSource.statusUrl,window.location.href),t=e.source?ph(O,e.source):null;if(!D||!t?.indexUrl||!t.detailUrl){ee(null),A(null),M(!1);return}let{detailUrl:n,indexUrl:r}=t,i=!1;return ee(null),A(null),M(!0),mh(r,D.goalId).then(async e=>{let t=e.items[0]?.detail_ref;return t?hh(n,t):null}).then(e=>{i||ee(e)}).catch(e=>{i||A(Ap(e))}).finally(()=>{i||M(!1)}),()=>{i=!0}},[O,D?.goalId,f.activeSource.statusUrl]);let Ke=D?void 0:Se[N]?.sessionId;(0,z.useEffect)(()=>{if(h||!Ke)return;let e=!1,t,n=async()=>{try{let t=await Xh(Ke);if(e)return;let n=t.messages.filter(e=>e.origin===`manager_followup`);_e(e=>{let t=e[N]??[],r=new Set(t.map(e=>e.sourceMessageId)),i=n.filter(e=>!r.has(e.message_id)),a=new Map(n.map(e=>[e.message_id,e.return_delivery])),o=!1,s=t.map(e=>{let t=e.sourceMessageId?a.get(e.sourceMessageId):void 0;return JSON.stringify(t)===JSON.stringify(e.returnDelivery)?e:(o=!0,{...e,returnDelivery:t})});return!i.length&&!o?e:{...e,[N]:[...s,...i.map(e=>({id:Ae.current++,sourceMessageId:e.message_id,role:`assistant`,agentLabel:Ve(N,L.label),sourceLabel:`管家交接回执`,text:fC(e.text),lines:[],returnDelivery:e.return_delivery}))]}})}catch{}finally{e||(t=setTimeout(n,3e3))}};return n(),()=>{e=!0,t&&clearTimeout(t)}},[h,Ke,N,L.label]);function qe(e,t){Ce(n=>{if(t===null){let t={...n};return delete t[e],t}return{...n,[e]:t}})}(0,z.useEffect)(()=>{if(h){y([]),x(!1),C(null),T(null);return}let e=!1;return qh().then(t=>{if(!e){y(t.adapters??[]);let e=t.manager?.runtime;T(t.manager?.channel_binding??null),C(e?{schema_version:`manager_runtime_session_readback_v0`,runtime_profile:e.runtime_profile,configuration_revision:e.configuration_revision,status:e.status,sandbox:e.sandbox,standing_grant:e.standing_grant,tool_classes:e.tool_classes}:null),x(t.goal_subagent_configuration===`preview_locked`)}}).catch(()=>{e||x(!1)}),()=>{e=!0}},[h]),(0,z.useEffect)(()=>{try{window.localStorage.setItem(cC,JSON.stringify(I))}catch{}},[I]),(0,z.useEffect)(()=>{if(h||!L.available)return;let e=N,t=`${e}:${L.agentId}`,n=D?`goal`:`manager`,r=D?`goal.${D.goalId}`:`manager`,i=!1,a=null,o=null;return(async()=>{try{let s=await $h({agentId:n===`manager`?void 0:L.agentId,channelId:r,goalId:D?.goalId});if(i||(_e(t=>(t[e]?.length??0)>0?t:{...t,[e]:s.messages.map(t=>({sourceMessageId:t.message_id,agentLabel:t.role===`user`?void 0:Ve(e,L.label),attachments:sC(t.attachments),id:Ae.current++,lines:[],role:t.role===`user`?`user`:`assistant`,returnDelivery:t.return_delivery,sourceLabel:t.role===`user`?void 0:t.role===`error`?`本地会话记录`:e===`manager`?`恢复的${_(`header.manager`)}会话`:`恢复的 ${L.label} 会话`,text:t.role===`user`?t.text:fC(t.text)}))}),L.agentId===`status-only`))return;let c=s.sessions[0];if(o=c?.session_id??null,c&&!c.resumable){Me.current.add(t),qe(e,{agentId:L.agentId,resumable:!1,sessionId:c.session_id,status:`resume_failed`});return}let l=n===`manager`?``:D?.goalId??``;if(n===`goal`&&!l)return;let u=await Yh(l,n===`manager`?I[e]:L.agentId,`resume_latest`,n);if(i)return;n===`manager`&&u.session.manager_runtime&&C(u.session.manager_runtime),je.current.set(t,u.session_id);let d=s.snapshots.find(e=>e.session.session_id===u.session_id),f=d?.session.active_turn_id??``;if(qe(e,{agentId:u.agent_id||L.agentId,resumable:!0,sessionId:u.session_id,status:f?`running`:`ready`,turnId:f||void 0}),Me.current.delete(t),!f)return;let p=`${u.session_id}:${f}`;if(Ie.current.has(p))return;Ie.current.add(p),Ne.current.set(e,f),qe(e,{agentId:L.agentId,resumable:!0,sessionId:u.session_id,status:`running`,turnId:f}),xe(e),a=new AbortController,Pe.current.set(e,a);let m=``,h=Je(e,{activity:[`正在恢复进行中的 Agent 回合`],agentLabel:Ve(e,L.label),lines:[],pending:!0,sourceLabel:e===`manager`?`恢复的${_(`header.manager`)}会话`:`恢复的 ${L.label} 会话`,text:``});try{let t=await og(u.session_id,f,{signal:a.signal,onDelta:t=>{m+=t,Ye(e,h,{text:m})},onActivity:t=>{_e(n=>({...n,[e]:(n[e]??[]).map(e=>e.id===h?{...e,activity:[...new Set([...e.activity??[],t])].slice(-6)}:e)}))}});if(i)return;Ye(e,h,{lines:t.response.gate?[t.response.gate.summary,t.response.gate.next_action].filter(Boolean).slice(0,2):[],pending:!1,text:t.response.message||m.trim()||`${Ve(e,L.label)} 已完成分析。`});let n=E.goals.find(e=>e.goalId===d?.session.goal_id)??D??E.goals[0]??null;if(n&&t.response.proposals.length>0){let r=t.response.proposals.filter(_h).map(e=>({goalId:n.goalId,id:R.current++,previewId:null,proposal:e,receiptLabel:null,state:`candidate`,statusMessage:null}));r.length>0&&ye(t=>({...t,[e]:[...t[e]??[],...r]}))}}catch(t){if(i)return;Ye(e,h,{activity:[],lines:[],pending:!1,reconnect:t instanceof Fh&&t.payload.reconnectable===!0,sourceLabel:`LoopX Chat 本地后端`,text:t instanceof Error?t.message:`无法恢复进行中的 Agent 回合。`})}finally{Ie.current.delete(p),Ne.current.get(e)===f&&Ne.current.delete(e),qe(e,{agentId:L.agentId,resumable:!0,sessionId:u.session_id,status:`ready`}),Pe.current.get(e)===a&&Pe.current.delete(e),i||xe(t=>t===e?null:t)}}catch(n){if(i)return;n instanceof Fh&&n.payload.error_code===`resume_failed`&&(Me.current.add(t),o&&qe(e,{agentId:L.agentId,resumable:!1,sessionId:o,status:`resume_failed`}))}})(),()=>{i=!0,a?.abort()}},[N,E.goals[0]?.goalId,h,D?.goalId,L.agentId,L.available,L.label,I]),(0,z.useEffect)(()=>{if(h||D||E.goals.length===0||ne===`loading`)return;let e=!1;return Promise.all(E.goals.filter(e=>!e.loadState).map(async e=>{let t=await Zh({agentId:e.agentId,channelId:`goal.${e.goalId}`,goalId:e.goalId});return{goalId:e.goalId,session:t.sessions[0]??null}})).then(t=>{e||Ce(e=>{let n={...e};for(let e of t)e.session&&(n[e.goalId]={agentId:e.session.agent_id,resumable:e.session.resumable,sessionId:e.session.session_id,status:e.session.active_turn_id?`running`:e.session.status,turnId:e.session.active_turn_id??void 0});return n})}).catch(()=>{}),()=>{e=!0}},[h,ne,D?.goalId]),(0,z.useEffect)(()=>{if(De(null),h){Te([]),ke({});return}if(!D){Te([]),ke({});return}let e=!1,t=0,n=0;Te([]),ke({});let r=async()=>{if(!e){if(document.hidden){t=window.setTimeout(()=>void r(),1e4);return}try{let t=await Zh({goalId:D.goalId});if(!e){let r=t.sessions.filter(e=>e.channel_id?.startsWith(`task.`));Te(r);let i=await Promise.allSettled(r.map(e=>Xh(e.session_id)));if(!e){let e=i.some(e=>e.status===`rejected`);n=e?n+1:0,De(e?`partial`:null),ke(Object.fromEntries(i.flatMap((e,t)=>e.status===`fulfilled`?[[r[t].session_id,e.value]]:[])))}}}catch{n+=1,e||De(`offline`)}e||(t=window.setTimeout(()=>void r(),Math.min(3e4,2e3*2**Math.min(n,4))))}};return r(),()=>{e=!0,window.clearTimeout(t)}},[h,D?.goalId]),(0,z.useEffect)(()=>{if(!ce)return;let e=window.requestAnimationFrame(()=>{Le.current?.querySelector(`[role="menuitem"]:not(:disabled)`)?.focus()});return()=>{window.cancelAnimationFrame(e),Re.current?.focus()}},[ce]),(0,z.useEffect)(()=>{if(!ue)return;let e=window.requestAnimationFrame(()=>ze.current?.focus());return()=>{window.cancelAnimationFrame(e),V.current?.focus()}},[ue]),(0,z.useEffect)(()=>{if(!ce&&!ue)return;let e=e=>{e.key===`Escape`&&(le(!1),de(!1))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[ce,ue]);function Je(e,t){let n=Ae.current++;return _e(r=>({...r,[e]:[...r[e]??[],{...t,id:n,role:`assistant`}]})),n}function Ye(e,t,n){_e(r=>({...r,[e]:(r[e]??[]).map(e=>e.id===t?{...e,...n}:e)}))}async function Xe(e,t){let n=e.trim();if(!n)return;let r=t&&`goalId`in t?t.goalId??`manager`:N,i=r===`manager`?null:E.goals.find(e=>e.goalId===r)??null,a=t?.agentId?gh(re,t.agentId,ie):L,o=r===`manager`?E:i?{...E,blockingTodoCount:E.userTodos.filter(e=>e.goalId===i.goalId&&e.blocking).length,goals:[i],openUserTodoCount:E.userTodos.filter(e=>e.goalId===i.goalId).length,userTodos:E.userTodos.filter(e=>e.goalId===i.goalId),visibleUserTodos:E.userTodos.filter(e=>e.goalId===i.goalId)}:E,s=Ae.current++;if(_e(e=>({...e,[r]:[...e[r]??[],{attachments:t?.attachments,id:s,lines:[],role:`user`,text:n}]})),he(``),xe(r),a.agentId===`status-only`||!i&&r!==`manager`){let e=BC(O,o,n),t=a.agentId===`status-only`;Je(r,{agentLabel:t?`仅查状态`:`LoopX 管家`,lines:e.lines.slice(0,3),sourceLabel:t?`LoopX 状态投影 · 仅查状态`:`LoopX 状态投影`,text:e.text}),Jh({answer:[e.text,...e.lines.slice(0,3)].filter(Boolean).join(` +`),contextKind:r===`manager`?`manager`:`goal`,goalId:r===`manager`?void 0:r,question:n}).catch(()=>{}),xe(null);return}let c=`${r}:${a.agentId}`,l=null;try{let e=je.current.get(c);if(!e){let t=Me.current.has(c)?`new`:`resume_latest`,n=r===`manager`?I[r]:a.agentId,o=await Yh(r===`manager`?``:i.goalId,n,t,r===`manager`?`manager`:`goal`);r===`manager`&&o.session.manager_runtime&&C(o.session.manager_runtime),e=o.session_id,je.current.set(c,e),qe(r,{agentId:o.agent_id||a.agentId,resumable:!0,sessionId:e,status:`ready`}),Me.current.delete(c)}let o=``;l=Je(r,{activity:[r===`manager`?`正在连接管家`:`正在连接 Agent`],agentLabel:Ve(r,a.label),lines:[],pending:!0,sourceLabel:r===`manager`?`${_(`header.manager`)} · 跨 Goal`:`${a.label} Agent · ${dC(i.goalId)}`,text:``});let s=(await ig(e,n,{attachments:t?.attachments,signal:(()=>{let e=new AbortController;return Pe.current.set(r,e),e.signal})(),onDelta:e=>{o+=e,l!==null&&Ye(r,l,{text:o})},onActivity:e=>{l!==null&&_e(t=>({...t,[r]:(t[r]??[]).map(t=>t.id===l?{...t,activity:[...new Set([...t.activity??[],e])].slice(-6)}:t)}))},onPhase:(t,n)=>{Ne.current.set(r,n),qe(r,{agentId:a.agentId,resumable:!0,sessionId:e,status:`running`,turnId:n})}})).response;Ye(r,l,{lines:s.gate?[s.gate.summary,s.gate.next_action].filter(Boolean).slice(0,2):[],pending:!1,text:fC(s.message||o.trim())||`${Ve(r,a.label)} 已完成分析。`});let u=s.proposals.filter(_h);if(u.length>0&&!i&&Ye(r,l,{lines:[`请进入要修改的 Goal,预览并确认具体变更。`]}),u.length>0&&i){let e=u.map(e=>({goalId:i.goalId,id:R.current++,previewId:null,proposal:e,receiptLabel:null,state:`candidate`,statusMessage:null}));ye(t=>({...t,[r]:[...t[r]??[],...e]}))}if(r!==`manager`&&s.protected_action){let e=qS(r,n,s.protected_action);if(e)return e}}catch(e){if(Fe.current.delete(r)){let e={agentLabel:Ve(r,a.label),lines:[],pending:!1,sourceLabel:r===`manager`?`${_(`header.manager`)}会话`:`${a.label} 会话`,text:`已中断。你可以在当前会话继续发送消息。`};l===null?Je(r,e):Ye(r,l,e);return}let t=e instanceof Fh?e.payload:null;t&&yh(t)&&je.current.delete(c),t?.error_code===`resume_failed`&&(je.current.delete(c),Me.current.add(c),qe(r,{agentId:a.agentId,resumable:!1,sessionId:Se[r]?.sessionId??`resume-failed`,status:`resume_failed`}));let n=t?.gate,i=n&&typeof n==`object`?String(n.summary??``):``,o={agentLabel:Ve(r,a.label),lines:i?[i]:[],pending:!1,reconnect:t?.reconnectable===!0,sourceLabel:`LoopX Chat 本地后端`,text:t?.error_code===`resume_failed`?`原 ${Ve(r,a.label)} 会话无法恢复。本地历史已经保留,请在运行详情里选择“重试恢复”或“开始新 Session”。`:e instanceof Error?e.message:`${Ve(r,a.label)} 会话暂时不可用。`};l===null?Je(r,o):Ye(r,l,o)}finally{Ne.current.delete(r),Pe.current.delete(r);let e=je.current.get(c);e&&qe(r,{agentId:a.agentId,resumable:!0,sessionId:e,status:`ready`}),xe(e=>e===r?null:e)}}async function Ze(e){let t=e?.goalId??N,n=Se[t],r=e?.agentId??n?.agentId??L.agentId,i=`${t}:${r}`,a=e?.sessionId??n?.sessionId??je.current.get(i),o=e?.turnId??n?.turnId??Ne.current.get(t);if(!(!a||!o))try{Fe.current.add(t),await rg(a,o),Pe.current.get(t)?.abort()}catch(e){throw Fe.current.delete(t),e}finally{Ne.current.delete(t),qe(t,{agentId:r,resumable:!0,sessionId:a,status:`ready`}),Pe.current.delete(t),xe(e=>e===t?null:e)}}async function Qe(e){let t=e.goalId,n=`${t}:${e.agentId}`,r=e.sessionId??Se[t]?.sessionId??je.current.get(n);if(r)try{let i=await cg(r);je.current.set(n,r),Me.current.delete(n),qe(t,{agentId:e.agentId,resumable:i.session.resumable,sessionId:r,status:i.session.status})}catch{qe(t,{agentId:e.agentId,resumable:!1,sessionId:r,status:`resume_failed`})}}function $e(e){let t=`${e.goalId}:${e.agentId}`;je.current.delete(t),Me.current.add(t),qe(e.goalId,{agentId:e.agentId,resumable:!0,sessionId:`new-session-pending`,status:`ready`})}async function et(e){let t=`${e.goalId}:${e.agentId}`,n=e.sessionId??Se[e.goalId]?.sessionId??je.current.get(t);n&&n!==`new-session-pending`&&await sg(n),je.current.delete(t),Me.current.add(t),qe(e.goalId,null)}function tt(e){re.some(t=>t.agentId===e&&t.available)&&(se(t=>({...t,[N]:e})),le(!1))}function nt(){i(``),pe(`chat`)}function rt(e){i(e),pe(`chat`)}D&&uC[D.state],D&&(`${L.label}${D.state}`,Ue.length>0&&`${Ge}`,He.length>0&&`${He.length}`),D?.state===`需修复`||!D&&!c.ok?(D&&hC(D.agentId),D?.nextSentence,D?.agentSentence):D?.state===`等你`?(D.needsYouBlocking,D.needsYouBlocking,D.needsYou??D.nextSentence,D.needsYou):(D&&hC(D.agentId),D?.nextSentence);let it=[...!D&&Se.manager?.status===`resume_failed`?[{id:`run:manager:resume-failed`,kind:`run`,run:{agentId:Se.manager.agentId,agentLabel:hC(Se.manager.agentId),canInterrupt:!1,completedSteps:0,goalId:`manager`,goalTitle:`LoopX 管家`,latestActivity:`本地聊天记录已保留,点我查看恢复方式。`,resumable:!1,runId:`manager:resume-failed`,sessionId:Se.manager.sessionId,sessionStatus:`resume_failed`,status:`failed`,title:`上次会话需要恢复`,totalSteps:1,outputs:[]}}]:[],...D?we.map(e=>{let t=e.channel_id?.startsWith(`task.`)?e.channel_id.slice(5):void 0,n=D.agentTodos.find(e=>e.todoId===t),r=!!e.active_turn_id,i=Oe[e.session_id],a=i?.messages.some(e=>pC(e.role,e.text))===!0;return{id:`run:task:${e.session_id}`,kind:`run`,run:{agentId:e.agent_id,agentLabel:hC(e.agent_id),canInterrupt:r,completedSteps:n?.done||a?1:0,goalId:D.goalId,goalTitle:D.title,latestActivity:r?`Agent 正在执行,可进入 Session 查看过程或发送纠偏。`:a?`Agent 已返回结果,点击查看结果与完整运行记录。`:`执行 Session 已保留,可继续纠偏或恢复。`,resumable:e.resumable,runId:e.session_id,sessionId:e.session_id,sessionMessages:i?.messages.map(e=>({createdAt:e.created_at,messageId:e.message_id,role:e.role===`user`?`user`:pC(e.role,e.text)?`assistant`:`error`,text:e.role===`user`?e.text:fC(e.text)})),sessionStatus:a?`completed`:e.status,status:n?.done||a?`completed`:r?`running`:e.status===`resume_failed`?`failed`:`waiting`,title:n?.text??`Agent 执行任务`,todoId:t,totalSteps:1,turnId:e.active_turn_id??void 0}}}):[],...D?[{id:`run:${D.goalId}`,kind:`run`,run:{agentId:Se[D.goalId]?.agentId??D.agentId,agentLabel:hC(Se[D.goalId]?.agentId??D.agentId),canInterrupt:!!Se[D.goalId]?.turnId,completedSteps:D.agentTodos.filter(e=>e.done).length,goalId:D.goalId,goalTitle:D.title,latestActivity:D.agentSentence,resumable:Se[D.goalId]?.resumable??!0,runId:`goal:${D.goalId}`,sessionId:Se[D.goalId]?.sessionId,sessionStatus:Se[D.goalId]?.status,status:Se[D.goalId]?.turnId?`running`:D.state===`需修复`?`failed`:`waiting`,title:D.nextSentence,totalSteps:D.agentTodos.length||1,turnId:Se[D.goalId]?.turnId,outputs:D.runEvidence?[{createdAt:D.runEvidence.generatedAt,kind:`evidence`,outputId:`${D.goalId}:latest-evidence`,title:D.runEvidence.label}]:[]}}]:[],...Be.map(e=>({id:`message:${e.id}`,kind:`message`,message:{agentLabel:e.agentLabel,attachments:e.attachments,id:String(e.id),pending:e.pending,returnDelivery:e.returnDelivery,role:e.role,text:e.text||(e.pending?`Agent 正在处理…`:e.lines.join(` +`))}})),...(D?[D]:E.goals).flatMap(e=>e.runEvidence?[{id:`output:${e.goalId}:${e.runEvidence.generatedAt||`latest`}`,kind:`output`,output:{agentLabel:hC(e.agentId),createdAt:e.runEvidence.generatedAt,goalId:e.goalId,goalTitle:e.title,kind:`evidence`,outputId:`${e.goalId}:latest-evidence`,runId:e.runEvidence.runId??void 0,safePreview:e.runEvidence.safePreview,summary:e.runEvidence.summary,title:e.runEvidence.label,todoId:e.runEvidence.todoId??void 0}}]:[]),...D&&k?[{id:`output:${D.goalId}:report:${k.publication.publication_id}`,kind:`output`,output:{agentId:k.agent_id,agentLabel:hC(k.agent_id),createdAt:k.publication.delivered_at,goalId:D.goalId,goalTitle:D.title,kind:`report`,outputId:k.publication.publication_id,report:{addedCount:k.delta.added_count,changedCount:k.delta.changed_count,deliveredAt:k.publication.delivered_at,generationId:k.generation_id,items:k.delta.items.map(e=>({changeKind:e.change_kind,previousStatus:e.previous_status,sourceRef:e.source_ref,status:e.status,summary:e.summary,title:e.title})),periodEndAt:k.period_window.end_at,periodStartAt:k.period_window.start_at,predecessorPublicationId:k.publication.predecessor_publication_id,publicationId:k.publication.publication_id},safePreview:k.delta.items.map(e=>`${e.change_kind===`added`?`+`:`~`} ${e.title}\n${e.summary}`).join(` -`),summary:k.summary,title:k.title}}]:[]],at=f.connectionState===`connected`,ot=new Map(E.goals.map(e=>[e.goalId,e.title])),st=e=>qd(e,f.activeSource.statusUrl,at&&!l?.errors[e.goalId],ot.get(e.goalId)),ct={...Gy(E),userTodos:E.userTodos.map(st),attentionHistory:(E.attentionHistory??E.userTodos).map(st),periodicReports:{error:te,loading:j},timeline:it};return(0,B.jsxs)(`div`,{className:p===`dark`?`dark`:``,"data-testid":`personal-goal-home`,children:[Ee?(0,B.jsx)(`p`,{role:`status`,className:`m-0 bg-amber-50 px-4 py-2 text-sm text-amber-900`,children:_(Ee===`partial`?`runs.discoveryPartial`:`runs.discoveryOffline`)}):null,(0,B.jsx)(wS,{agents:re.map(e=>({adapterKind:e.adapterKind,agentId:e.agentId,available:e.available,capability:e.capability,interrupt:e.interrupt,label:e.label,location:e.location,resume:e.resume,source:e.source,streaming:e.streaming,toolCalls:e.toolCalls,trustScope:e.trustScope,workspaceCompatibility:e.available?`当前 Goal 写入前验证`:`不可用,需先修复 Endpoint`})),callbacks:{onApplyAttention:e=>rt(e.goalId),onCorrectRun:async(e,t)=>{if(!e.sessionId)throw Error(`这个 Run 还没有可纠偏的执行 Session。`);let n=await Uh((await Bh({actionKind:`run.correct`,context:{kind:`run`,goal_id:e.goalId,todo_id:e.todoId},idempotencyKey:`workspace-run-correct-${e.sessionId}-${Date.now().toString(36)}`,normalizedParameters:{goal_id:e.goalId,message:t,session_id:e.sessionId},summary:`纠偏执行任务:${e.title}`})).proposal_id),r=typeof n.turn?.turn_id==`string`?n.turn.turn_id:void 0;if(qe(e.goalId,{agentId:e.agentId,resumable:!0,sessionId:e.sessionId,status:r?`running`:`ready`,turnId:r}),r){Ne.current.set(e.goalId,r);let t=new AbortController;Pe.current.set(e.goalId,t);let n=``,i=Je(e.goalId,{activity:[`正在把纠偏送入原执行 Session`],agentLabel:e.agentLabel,lines:[],pending:!0,sourceLabel:`${e.agentLabel} · 执行 Session`,text:``});try{let a=await og(e.sessionId,r,{signal:t.signal,onDelta:t=>{n+=t,Ye(e.goalId,i,{text:n})}});Ye(e.goalId,i,{activity:[],pending:!1,text:dC(a.response.message||n.trim())||`${e.agentLabel} 已完成纠偏。`})}catch(t){let n=Fe.current.delete(e.goalId);Ye(e.goalId,i,{activity:[],pending:!1,text:n?`已中断。你可以在当前会话继续发送消息。`:t instanceof Error?t.message:`纠偏回合失败。`})}finally{Ne.current.delete(e.goalId),Pe.current.delete(e.goalId),qe(e.goalId,{agentId:e.agentId,resumable:!0,sessionId:e.sessionId,status:`ready`})}}},onCloseRunSession:et,onInterruptRun:async e=>Ze(e),onOpenGoal:rt,onOpenRunSession:async e=>{if(!e.sessionId)return;let t=e.sessionId,n=await Xh(t);ke(e=>({...e,[t]:n})),rt(e.goalId),_e(t=>({...t,[e.goalId]:n.messages.map(t=>({agentLabel:t.role===`user`?void 0:e.agentLabel,attachments:oC(t.attachments),id:Ae.current++,lines:[],role:t.role===`user`?`user`:`assistant`,sourceLabel:t.role===`user`?void 0:`${e.agentLabel} · 执行 Session`,text:t.role===`user`?t.text:dC(t.text)}))})),qe(e.goalId,{agentId:e.agentId,resumable:n.session.resumable,sessionId:t,status:n.session.active_turn_id?`running`:n.session.status,turnId:n.session.active_turn_id??void 0})},onOpenOutput:e=>rt(e.goalId),...b?{onPreviewGoalSubagentConfiguration:async e=>{let t=await dg(e);return{changed:t.changed,configuration:{allowedDomains:t.after.orchestration.allowed_domains,enabled:t.feature_summary.multi_subagent===`enabled`,maxChildren:t.after.orchestration.max_children,modelConfig:t.after.orchestration.model_config},previewId:t.preview_id}},onApplyGoalSubagentConfiguration:async({previewId:e,...t})=>{let n=await fg(t,e);return{allowedDomains:n.after.orchestration.allowed_domains,enabled:n.feature_summary.multi_subagent===`enabled`,maxChildren:n.after.orchestration.max_children,modelConfig:n.after.orchestration.model_config}}}:{},...g?{onExecuteGoalLifecycle:async({goalId:e,operation:t,reason:n})=>{let r=await Xb(g,e,t,n);return{activationState:r.activation_state,projectionVerified:r.projection_verified}}}:{},onGoalActivationStateChange:n,onGoalDeleted:r,onReconcileStatus:a,onRetryGoalArchive:s,onExportOutput:async e=>{let t=[`# ${e.title}`,``,e.summary??``,``,e.safePreview??`此产出没有可用的公开安全预览。`,``,`Goal: ${e.goalId}`,`Todo: ${e.todoId??`unlinked`}`,`Run: ${e.runId??`unlinked`}`].join(` -`),n=URL.createObjectURL(new Blob([t],{type:`text/markdown;charset=utf-8`})),r=document.createElement(`a`);r.href=n,r.download=`${e.outputId.replace(/[^a-z0-9._-]+/gi,`-`)}.md`,r.click(),URL.revokeObjectURL(n)},onRefresh:o,onRetryResumeRun:Qe,onSelectAgent:tt,onSelectGoal:e=>e?rt(e):nt(),onSendMessage:async(e,t,n,r)=>Xe(e,{agentId:t,goalId:n,attachments:r}),onStartNewRunSession:$e},goalArchiveLoadState:e,managerChannelBinding:w,managerRuntime:S,model:ct,readOnly:h,selectedAgentId:L.agentId,selectedGoalId:D?.goalId??null,statusSourceControl:f})]})}function HC({error:e,isLoading:t,onRetry:n,requestedUrl:r,theme:i,toggleTheme:a}){let o=!!(e&&/failed to fetch|networkerror|load failed/i.test(e)&&r.includes(`status.json`));return(0,B.jsx)(`div`,{className:i===`dark`?`dark`:``,children:(0,B.jsxs)(`main`,{className:`min-h-screen bg-[#f6f7f9] text-slate-950 dark:bg-[#09090b] dark:text-zinc-50`,children:[(0,B.jsxs)(`header`,{className:`flex min-h-16 flex-wrap items-center justify-between gap-3 border-b border-slate-200 bg-white px-4 py-3 dark:border-zinc-800 dark:bg-zinc-950 sm:px-6`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`h1`,{className:`text-xl font-semibold`,children:`LoopX Workspace`}),(0,B.jsx)(`p`,{className:`mt-1 break-all text-sm text-slate-500 dark:text-zinc-400`,children:`Personal Workspace`})]}),(0,B.jsx)(_y,{"aria-label":`切换主题`,onClick:a,size:`icon`,variant:`secondary`,children:i===`dark`?(0,B.jsx)(eh,{className:`h-4 w-4`}):(0,B.jsx)(Fm,{className:`h-4 w-4`})})]}),(0,B.jsxs)(`div`,{className:`grid min-h-[calc(100vh-80px)] sm:grid-cols-[240px_1fr]`,children:[(0,B.jsxs)(`aside`,{className:`hidden border-r border-slate-200 p-6 dark:border-zinc-800 sm:block`,"aria-label":`Workspace`,children:[(0,B.jsx)(`strong`,{children:`LoopX`}),(0,B.jsx)(`p`,{className:`mt-6 text-sm`,children:`Workspace`}),(0,B.jsx)(`p`,{className:`mt-8 text-xs text-slate-500`,children:`Goals`}),[1,2,3].map(e=>(0,B.jsx)(`div`,{className:`mt-4 h-8 rounded bg-slate-100 dark:bg-zinc-900`},e))]}),(0,B.jsx)(`div`,{className:`p-4 sm:p-8`,children:(0,B.jsx)(vy,{"data-testid":`initial-status-state`,children:(0,B.jsx)(yy,{className:`flex min-h-64 items-center justify-center p-6`,children:(0,B.jsxs)(`div`,{className:`max-w-xl text-center`,children:[e?(0,B.jsx)(lm,{className:`mx-auto h-6 w-6 text-rose-600 dark:text-rose-300`}):(0,B.jsx)(Hm,{className:`mx-auto h-6 w-6 animate-spin text-slate-500 dark:text-zinc-400`}),(0,B.jsx)(`p`,{className:`mt-3 text-sm font-medium`,children:e?`无法加载实时状态`:`正在加载实时状态`}),e?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{className:`mt-2 break-words text-sm leading-6 text-slate-500 dark:text-zinc-400`,children:o?`本地状态服务暂时未连接。升级或启动期间可能短暂断开,请重试;仍失败时重新打开 LoopX App,或运行 loopx doctor。`:e}),o?(0,B.jsx)(`p`,{className:`mt-2 text-xs leading-5 text-slate-400 dark:text-zinc-500`,children:`重新加载不会执行任务,也不会改变 Goal 配置。`}):null,(0,B.jsx)(`div`,{className:`mt-4 flex flex-wrap justify-center gap-2`,children:(0,B.jsxs)(_y,{disabled:t,onClick:n,children:[(0,B.jsx)(Hm,{className:`h-4 w-4`}),`重试`]})})]}):(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-500 dark:text-zinc-400`,role:`status`,children:`正在连接 Workspace,Goal 列表将先出现,详细状态会逐个补齐。 / Connecting to your Workspace. Goals load independently.`})]})})})})]})]})})}function UC(){let e=Bw.useSearch(),t=Bw.useNavigate(),[n,r]=(0,z.useState)(`light`),[i,a]=(0,z.useState)(null),o=(0,z.useRef)(null),s=(0,z.useRef)(e.goalId);s.current=e.goalId;let[c,l]=(0,z.useState)(jp),[u,d]=(0,z.useState)({kind:`example`,label:`bundled example`}),[f,p]=(0,z.useState)(()=>LS(window.localStorage,window.location.href)),m=(0,z.useRef)(f);m.current=f;let[h,g]=(0,z.useState)(e.statusUrl),[_,v]=(0,z.useState)(null),[y,b]=(0,z.useState)(!1),[x,S]=(0,z.useState)({error:null,phase:`idle`}),[C,w]=(0,z.useState)(e.statusUrl.trim()||null),[T,E]=(0,z.useState)(!1),D=(0,z.useRef)(null),O=(0,z.useRef)(u_(e.statusUrl.trim()||null)),k=!T&&u.kind===`example`?e.statusUrl.trim():``,ee=C??k,te=u.kind===`url`?u.label:qS,A=!!(_&&C),j=WS(f,C,te,window.location.href),M=u.kind===`example`&&!T,ne=c.attention_queue,N=c.run_history,P=(0,z.useMemo)(()=>XS(N.goals,ne.items),[N.goals,ne.items]);function re(e,t,n=0){S({error:null,phase:`loading`}),JS(dh(e,`stopped`,window.location.href)).then(r=>{if(!m_(O.current,t))return;let i=r.goal_projection?.registry_revision??null,a=t.registryRevision!==null&&t.registryRevision!==void 0&&i!==null&&t.registryRevision!==i;if(l(e=>L_(e,r)),a&&n<1){F(e,{background:!0,resyncAttempt:n+1});return}S(a?{error:`Goal 状态在加载历史时发生变化,请重试。`,phase:`error`}:{error:null,phase:`ready`})}).catch(e=>{m_(O.current,t)&&S({error:Ap(e),phase:`error`})})}function ie(){let e=u.kind===`url`?u.label:h||qS,t=f_(O.current,e,{background:!0});if(i){F(e);return}t&&re(e,t)}async function ae(e,n,r){if(r.background)return l(e=>L_(e,n)),!0;let i={kind:`url`,label:e};return O.current.loadedUrl=e,l(n),d(i),g(e),await t({search:t=>({...t,statusUrl:e})}),p_(O.current,r)?(O.current.requestedUrl=null,w(null),!0):!1}async function F(e,t={}){let n=e.trim(),r=t.background===!0;if(!n){r||v(`状态地址不能为空`);return}let c=f_(O.current,n,{background:r,selectionRevision:t.selectionRevision});if(!c)return;o.current?.abort();let d=new AbortController;o.current=d,r||(D.current=null,E(!1),w(n),b(!0),v(null),S({error:null,phase:`idle`}));try{let e=await Fp(n,window.location.href).catch(()=>null);if(!m_(O.current,c))return;if(e){let o=(t.retryOnly||t.reuseSnapshots)&&u.kind===`url`&&u.label===n?Np(i,e,{invalidateGoalIds:t.invalidateGoalIds}):{};a({directory:e,snapshots:o,errors:{}});let f={...e,goals:e.goals.filter(e=>!o[e.id])},p=!1,m=Ip(e);if(r)l(m);else if(!await ae(n,m,c))return;if(S({error:null,phase:`loading`}),await Rp(n,window.location.href,f,(e,t,n)=>{n===`revision`&&(p=!0),a(r=>r&&{...r,snapshots:t?{...r.snapshots,[e]:t}:r.snapshots,errors:n?{...r.errors,[e]:n}:r.errors})},()=>m_(O.current,c),()=>s.current,d.signal),p&&(t.resyncAttempt??0)<1&&m_(O.current,c)){await F(n,{resyncAttempt:1});return}m_(O.current,c)&&S({error:null,phase:`ready`});return}let o=await JS(dh(n,`active`,window.location.href));if(!m_(O.current,c)||(a(null),c.registryRevision=o.goal_projection?.registry_revision??null,!await ae(n,o,c)))return;if(o.goal_projection?.scope!==`active`||o.goal_projection.complete){S({error:null,phase:`ready`});return}re(n,c,t.resyncAttempt??0)}catch(e){if(!p_(O.current,c))return;r||v(Ap(e))}finally{!r&&p_(O.current,c)&&b(!1)}}function oe(e,t={}){o.current?.abort();let n=d_(O.current,e.statusUrl);D.current=null,E(!1),w(e.statusUrl),b(!0),v(null),(async()=>{if(t.ensureTunnel&&e.kind===`ssh_tunnel`){let t=new URL(e.statusUrl,window.location.href).port;if(t)try{await Yb(e.label,t)}catch{}}O.current.selectionRevision===n&&await F(e.statusUrl,{selectionRevision:n})})()}function I(e){m.current=e,p(e);try{RS(window.localStorage,e)}catch{}}let se={activeSource:j,connectionState:y?`loading`:A?`error`:`connected`,errorMessage:A?`未切换到 ${C??`所选来源`}:${_}`:null,onAdd:e=>{let t=BS(f,e,window.location.href);return`error`in t?{error:t.error}:(I(t.catalog),oe(t.source,{ensureTunnel:e.ensureTunnel}),{})},onConfiguredHostsLoaded:e=>{let t=m.current,n=zS(t,e);n!==t&&I(n)},onRemove:e=>{I(VS(f,e)),j.id===e&&oe(MS)},onSelect:e=>{let t=f.sources.find(t=>t.id===e);t&&oe(t,{ensureTunnel:t.kind===`ssh_tunnel`})},sources:j.id===`temporary`?[...f.sources,j]:f.sources};(0,z.useEffect)(()=>{let t=e.statusUrl.trim();if(t){if(D.current===t||C&&C!==t)return;(u.kind!==`url`||u.label!==t)&&F(t);return}D.current=null,!T&&(C||u.kind===`example`&&F(qS))},[T,C,e.statusUrl,u.kind,u.label]),(0,z.useEffect)(()=>{if(e.statusUrl&&u.kind===`example`)return;let n=new Set(P.map(e=>e.goal.id));if(P.length===0){e.goalId&&t({search:e=>({...e,goalId:``})});return}e.goalId&&!n.has(e.goalId)&&x.phase!==`loading`&&t({search:e=>({...e,goalId:``})})},[x.phase,P,t,e.goalId,e.statusUrl,u.kind]),(0,z.useEffect)(()=>{if(!i||y||!e.goalId||u.kind!==`url`)return;let t=i.directory.goals.find(t=>t.id===e.goalId);t?.activation_state===`stopped`&&!i.snapshots[t.id]&&!i.errors[t.id]&&F(u.label,{retryOnly:!0})},[e.goalId,y,i,u]);function L(e){t({search:t=>({...t,goalId:e})})}return M?(0,B.jsx)(HC,{error:_,isLoading:y,onRetry:()=>void F(ee||qS),requestedUrl:ee||qS,theme:n,toggleTheme:()=>r(n===`dark`?`light`:`dark`)}):(0,B.jsx)(VC,{goalArchiveLoadState:x,isLoading:y,onGoalActivationStateChange:(e,t)=>{O.current.projectionRevision+=1,l(n=>Dp(n,e,t)),a(n=>n&&{...n,snapshots:Object.fromEntries(Object.entries(n.snapshots).map(([n,r])=>[n,Dp(r,e,t)]))})},onGoalDeleted:e=>{O.current.projectionRevision+=1,l(t=>Op(t,e)),a(t=>t&&{...t,snapshots:Object.fromEntries(Object.entries(t.snapshots).filter(([t])=>t!==e))})},onSelectGoal:L,onReconcileStatus:e=>F(u.kind===`url`?u.label:h||qS,{background:!0,invalidateGoalIds:e?.invalidateGoalIds,reuseSnapshots:!0}),onRetryGoalArchive:ie,onRefresh:()=>F(u.kind===`url`?u.label:h||qS,{retryOnly:!!(i&&Object.keys(i.errors).length)}),payload:c,progress:i,rows:P,selectedGoalId:e.goalId,statusSourceControl:se,theme:n,toggleTheme:()=>r(n===`dark`?`light`:`dark`)})}var WC=H_(`inline-flex items-center gap-1 rounded-md border px-2 py-0.5 text-xs font-medium`,{variants:{variant:{neutral:`border-slate-200 bg-white text-slate-700 dark:border-zinc-800 dark:bg-zinc-950 dark:text-zinc-300`,success:`border-emerald-200 bg-emerald-50 text-emerald-800 dark:border-emerald-900 dark:bg-emerald-950 dark:text-emerald-200`,warning:`border-amber-200 bg-amber-50 text-amber-800 dark:border-amber-900 dark:bg-amber-950 dark:text-amber-200`,info:`border-sky-200 bg-sky-50 text-sky-800 dark:border-sky-900 dark:bg-sky-950 dark:text-sky-200`,danger:`border-rose-200 bg-rose-50 text-rose-800 dark:border-rose-900 dark:bg-rose-950 dark:text-rose-200`}},defaultVariants:{variant:`neutral`}});function GC({className:e,variant:t,...n}){return(0,B.jsx)(`span`,{className:hy(WC({variant:t}),e),...n})}var KC=[{label:`status payload`,source:`apps/presentation/dashboard/src/data/status.ts`,detail:`status_contract, attention_queue, local_dashboard_api, run_history`},{label:`channel projection`,source:`apps/presentation/dashboard/src/data/goal-channel-frontstage.ts`,detail:`decision_frame, todos, gates, leases, artifacts, truth_contract`},{label:`public showcase catalog`,source:`docs/showcases/showcase-catalog.json`,detail:`case metadata, visual hints, evidence boundaries, story beats`},{label:`route smoke`,source:`apps/presentation/dashboard/smoke/frontstage-route-smoke.ts`,detail:`static route contract, source guards, component expectations`}],qC=[{axis:`schema`,current:`goal_channel_projection_v0`,proposed:`new optional projection field`,gate:`parser default plus route smoke assertion`},{axis:`truth`,current:`event ledger and active state remain source of truth`,proposed:`derived UI state only`,gate:`truth_contract must stay read-only`},{axis:`privacy`,current:`compact source refs and warnings`,proposed:`public-safe fixture field`,gate:`loopx check and browser fake-private fixture`},{axis:`interaction`,current:`render, filter, select, inspect`,proposed:`no browser write by default`,gate:`write affordance requires explicit loopback capability`}],JC=[{title:`Fixture sources`,body:`Use examples/status.example.json, browser-smoke fixtures, and docs/showcases/showcase-catalog.json.`},{title:`Required proof`,body:`Every projection addition needs parser coverage, route smoke assertions, and one browser or bundle check when UI output changes.`},{title:`Never include`,body:`Raw task text, trajectories, transcripts, local paths, private registry state, credentials, or internal document links.`}],YC=[`npm --prefix apps/presentation/dashboard run smoke:frontstage-route`,`npm --prefix apps/presentation/dashboard run smoke:frontstage-browser`,`npm --prefix apps/presentation/dashboard run smoke:frontstage-share-bundle`,`npm --prefix apps/presentation/dashboard run build`,`loopx check --scan-path apps/presentation/dashboard --scan-path docs/status-data-contract.md`],XC=[{name:`Projection lane`,badges:[`read-only`,`schema v0`],body:`Summarizes one compact projection lane without mutating the underlying LoopX state.`},{name:`Capability badge`,badges:[`loopback`,`dry-run`],body:`Shows an advertised local capability only after the status feed declares it.`},{name:`Boundary warning`,badges:[`public-safe`,`omitted`],body:`Names omitted private material and points contributors back to compact source references.`}];function ZC({children:e,icon:t,title:n}){return(0,B.jsxs)(`section`,{className:`rounded-lg border border-slate-200 bg-white shadow-sm`,children:[(0,B.jsx)(`div`,{className:`flex items-center justify-between gap-3 border-b border-slate-200 px-4 py-3`,children:(0,B.jsxs)(`h2`,{className:`flex items-center gap-2 text-sm font-semibold text-slate-950`,children:[(0,B.jsx)(t,{className:`h-4 w-4 text-slate-500`}),n]})}),e]})}function QC(){return(0,B.jsx)(ZC,{icon:rm,title:`Status Contract Explorer`,children:(0,B.jsx)(`div`,{className:`grid gap-3 p-4 lg:grid-cols-2`,"data-testid":`developer-contract-explorer`,children:KC.map(e=>(0,B.jsxs)(`div`,{className:`rounded-md border border-slate-200 bg-slate-50 px-3 py-3`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,B.jsx)(GC,{variant:`info`,children:e.label}),(0,B.jsx)(GC,{variant:`neutral`,children:`public contract`})]}),(0,B.jsx)(`div`,{className:`mt-2 break-words font-mono text-xs text-slate-700`,children:e.source}),(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600`,children:e.detail})]},e.label))})})}function $C(){return(0,B.jsx)(ZC,{icon:Cm,title:`Projection Diffing`,children:(0,B.jsx)(`div`,{className:`overflow-x-auto`,"data-testid":`developer-projection-diffing`,children:(0,B.jsxs)(`table`,{className:`min-w-full border-separate border-spacing-0 text-left text-sm`,children:[(0,B.jsx)(`thead`,{children:(0,B.jsxs)(`tr`,{className:`bg-slate-50 text-xs uppercase tracking-normal text-slate-500`,children:[(0,B.jsx)(`th`,{className:`border-b border-slate-200 px-4 py-3 font-semibold`,children:`Axis`}),(0,B.jsx)(`th`,{className:`border-b border-slate-200 px-4 py-3 font-semibold`,children:`Current`}),(0,B.jsx)(`th`,{className:`border-b border-slate-200 px-4 py-3 font-semibold`,children:`Proposed`}),(0,B.jsx)(`th`,{className:`border-b border-slate-200 px-4 py-3 font-semibold`,children:`Gate`})]})}),(0,B.jsx)(`tbody`,{children:qC.map(e=>(0,B.jsxs)(`tr`,{className:`align-top`,children:[(0,B.jsx)(`td`,{className:`border-b border-slate-100 px-4 py-3 font-semibold text-slate-950`,children:e.axis}),(0,B.jsx)(`td`,{className:`border-b border-slate-100 px-4 py-3 text-slate-600`,children:e.current}),(0,B.jsx)(`td`,{className:`border-b border-slate-100 px-4 py-3 text-slate-600`,children:e.proposed}),(0,B.jsx)(`td`,{className:`border-b border-slate-100 px-4 py-3 text-slate-600`,children:e.gate})]},e.axis))})]})})})}function ew(){return(0,B.jsx)(ZC,{icon:ym,title:`Fixture Generation`,children:(0,B.jsx)(`div`,{className:`grid gap-3 p-4 md:grid-cols-3`,"data-testid":`developer-fixture-generation`,children:JC.map(e=>(0,B.jsxs)(`div`,{className:`rounded-md border border-slate-200 bg-slate-50 px-3 py-3`,children:[(0,B.jsx)(`div`,{className:`text-sm font-semibold text-slate-950`,children:e.title}),(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600`,children:e.body})]},e.title))})})}function tw(){return(0,B.jsx)(ZC,{icon:dm,title:`Smoke Checklist`,children:(0,B.jsx)(`div`,{className:`space-y-2 p-4`,"data-testid":`developer-smoke-checklist`,children:YC.map(e=>(0,B.jsxs)(`div`,{className:`flex items-start gap-3 rounded-md border border-slate-200 bg-slate-50 px-3 py-2`,children:[(0,B.jsx)(em,{className:`mt-0.5 h-4 w-4 shrink-0 text-emerald-600`}),(0,B.jsx)(`code`,{className:`break-all text-xs font-semibold leading-5 text-slate-700`,children:e})]},e))})})}function nw(){return(0,B.jsx)(ZC,{icon:fm,title:`Component Examples`,children:(0,B.jsx)(`div`,{className:`grid gap-3 p-4 lg:grid-cols-3`,"data-testid":`developer-component-examples`,children:XC.map(e=>(0,B.jsxs)(`article`,{className:`rounded-md border border-slate-200 bg-slate-50 p-3`,children:[(0,B.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:e.badges.map(e=>(0,B.jsx)(GC,{variant:e===`read-only`||e===`public-safe`?`success`:`neutral`,children:e},e))}),(0,B.jsx)(`h3`,{className:`mt-3 text-sm font-semibold leading-6 text-slate-950`,children:e.name}),(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600`,children:e.body})]},e.name))})})}function rw(){return(0,B.jsx)(`main`,{className:`min-h-screen bg-[#f7f7f4] px-4 py-4 text-slate-950 sm:px-5`,"data-testid":`frontstage-developer-cockpit`,children:(0,B.jsxs)(`div`,{className:`mx-auto grid max-w-[1500px] gap-4 xl:grid-cols-[260px_minmax(0,1fr)]`,children:[(0,B.jsxs)(`aside`,{className:`rounded-lg border border-slate-200 bg-white p-4 shadow-sm xl:sticky xl:top-4 xl:self-start`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(`div`,{className:`flex h-9 w-9 items-center justify-center rounded-md border border-slate-200 bg-slate-950 text-white`,children:(0,B.jsx)(th,{className:`h-4 w-4`})}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`text-sm font-semibold`,children:`Developer Cockpit`}),(0,B.jsx)(`div`,{className:`text-xs text-slate-500`,children:`Projection extension`})]})]}),(0,B.jsxs)(`div`,{className:`mt-4 grid gap-2`,children:[(0,B.jsxs)(`a`,{className:`flex items-center gap-2 rounded-md border border-slate-200 px-3 py-2 text-sm font-medium`,href:`https://huangruiteng.github.io/loopx/`,children:[(0,B.jsx)(Dm,{className:`h-4 w-4`}),`LoopX home`]}),(0,B.jsxs)(`a`,{className:`flex items-center gap-2 rounded-md border border-slate-200 px-3 py-2 text-sm font-medium`,href:`https://huangruiteng.github.io/loopx/docs/showcases/index.en.html`,children:[(0,B.jsx)(_m,{className:`h-4 w-4`}),`Public cases`]}),(0,B.jsxs)(`a`,{className:`flex items-center gap-2 rounded-md bg-slate-950 px-3 py-2 text-sm font-medium text-white`,href:`/chat/developers/projections/`,children:[(0,B.jsx)(fm,{className:`h-4 w-4`}),`Developer cockpit`]})]}),(0,B.jsxs)(`div`,{className:`mt-5 space-y-2 rounded-md border border-emerald-200 bg-emerald-50 p-3 text-xs leading-5 text-emerald-950`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,B.jsx)(GC,{variant:`success`,children:`read-only`}),(0,B.jsx)(GC,{variant:`neutral`,children:`public fixtures`})]}),(0,B.jsx)(`p`,{children:`This route uses static public contracts only; live status feeds, registry files, and browser write APIs stay outside the cockpit.`})]})]}),(0,B.jsxs)(`section`,{className:`space-y-4`,children:[(0,B.jsx)(`div`,{className:`rounded-lg border border-slate-200 bg-white px-5 py-5 shadow-sm`,children:(0,B.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-4`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,B.jsx)(GC,{variant:`info`,children:`developers/projections`}),(0,B.jsx)(GC,{variant:`success`,children:`public-safe`}),(0,B.jsx)(GC,{variant:`neutral`,children:`no browser writes`})]}),(0,B.jsx)(`h1`,{className:`mt-3 text-3xl font-semibold tracking-normal text-slate-950`,children:`LoopX Projection Developer Cockpit`}),(0,B.jsx)(`p`,{className:`mt-2 max-w-3xl text-sm leading-6 text-slate-600`,children:`A read-only contributor workbench for adding dashboard/frontstage projections without reverse-engineering the large operator page.`})]}),(0,B.jsxs)(`div`,{className:`grid min-w-[260px] gap-2 text-sm`,children:[(0,B.jsxs)(`div`,{className:`rounded-md border border-slate-200 bg-slate-50 px-3 py-2`,children:[(0,B.jsx)(`div`,{className:`text-[11px] font-semibold uppercase tracking-normal text-slate-500`,children:`Source of truth`}),(0,B.jsx)(`div`,{className:`mt-1 font-semibold text-slate-950`,children:`status contract + compact fixtures`})]}),(0,B.jsxs)(`div`,{className:`rounded-md border border-slate-200 bg-slate-50 px-3 py-2`,children:[(0,B.jsx)(`div`,{className:`text-[11px] font-semibold uppercase tracking-normal text-slate-500`,children:`Boundary`}),(0,B.jsx)(`div`,{className:`mt-1 font-semibold text-slate-950`,children:`read-only extension surface`})]})]})]})}),(0,B.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,B.jsx)(QC,{}),(0,B.jsx)($C,{})]}),(0,B.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[minmax(0,1fr)_420px]`,children:[(0,B.jsx)(ew,{}),(0,B.jsx)(tw,{})]}),(0,B.jsx)(nw,{}),(0,B.jsx)(ZC,{icon:Xm,title:`Extension Boundary`,children:(0,B.jsxs)(`div`,{className:`grid gap-3 p-4 md:grid-cols-3`,"data-testid":`developer-extension-boundary`,children:[(0,B.jsxs)(`div`,{className:`rounded-md border border-emerald-200 bg-emerald-50 px-3 py-3`,children:[(0,B.jsx)(`div`,{className:`text-sm font-semibold text-slate-950`,children:`Allowed`}),(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600`,children:`Versioned parser defaults, public fixtures, read-only route panels, and focused smoke assertions.`})]}),(0,B.jsxs)(`div`,{className:`rounded-md border border-amber-200 bg-amber-50 px-3 py-3`,children:[(0,B.jsx)(`div`,{className:`text-sm font-semibold text-slate-950`,children:`Review`}),(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600`,children:`New dashboard dependencies, status contract fields, loopback capability display, and browser-visible workflows.`})]}),(0,B.jsxs)(`div`,{className:`rounded-md border border-rose-200 bg-rose-50 px-3 py-3`,children:[(0,B.jsx)(`div`,{className:`text-sm font-semibold text-slate-950`,children:`Stop`}),(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600`,children:`Credentials, private registry material, raw logs, transcripts, production actions, or default browser write authority.`})]})]})})]})]})})}var iw=J({value:G().finite(),total:G().finite().positive().optional(),unit:W().optional(),higher_is_better:K()}).passthrough(),aw=yd(W(),G().finite()).default({}),ow=J({outcome_status:W().optional(),failure_class:W(),causal_summary:W(),expectedness:W(),implication:W(),next_probe:W(),confidence:W(),evidence_refs:q(W()).optional()}).passthrough(),sw=J({arm_id:W(),selected_run_id:W().nullable(),score_countable:K(),metrics:yd(W(),iw),effort:aw,insight:ow.nullable().optional()}),cw=J({run_id:W(),case_id:W(),arm_id:W(),arm_role:W(),status:W(),protocol_id:W(),runner_revision:W().optional(),observed_at:W(),metrics:yd(W(),iw),countability:J({integrity_qualified:K(),official_result_present:K(),score_countable:K()}).passthrough(),treatment_fidelity:W(),effort:aw,redacted_insight:ow.nullable().optional(),upload_provenance:J({producer_id:W(),producer_version:W(),observed_at:W(),source_revision:W()}).passthrough()}).passthrough(),lw=J({case_denominator:G().int().nonnegative(),value_sum:G().finite(),value_mean:G().finite().nullable(),value_median:G().finite().nullable(),value_min:G().finite().nullable(),value_max:G().finite().nullable(),case_macro_rate:G().finite().optional(),suite_micro_rate:G().finite().optional(),suite_micro_numerator:G().finite().optional(),suite_micro_denominator:G().finite().positive().optional()}).passthrough(),uw=J({arm_id:W(),arm_role:W(),factor_assignments:yd(W(),W()),protocol_counts:yd(W(),G().int().nonnegative()).default({}),runner_revision_counts:yd(W(),G().int().nonnegative()).default({}),orchestrator_runtime_counts:yd(W(),G().int().nonnegative()).default({}),intended_case_count:G().int().positive(),run_count:G().int().nonnegative(),terminal_run_count:G().int().nonnegative(),selected_score_countable_case_count:G().int().nonnegative(),coverage_rate:G().finite().min(0).max(1),metrics:yd(W(),lw),binary_outcomes:yd(W(),J({success_count:G().int().nonnegative(),case_denominator:G().int().nonnegative(),success_rate:G().finite().min(0).max(1).nullable()})),effort:yd(W(),J({denominator:G().int().nonnegative(),mean:G().finite().nullable(),median:G().finite().nullable()})),failure_class_counts:yd(W(),G().int().nonnegative())}).passthrough(),dw=J({baseline_value:G().finite(),candidate_value:G().finite(),delta:G().finite(),direction:Y([`improved`,`flat`,`regressed`]).optional()}).passthrough(),fw=J({comparison_id:W(),comparison_anchor_run_id:W(),candidate_run_id:W(),candidate_arm_id:W(),primary_metric:W(),matched_pair_countable:X(!0),metric_deltas:yd(W(),dw)}).passthrough(),pw=J({ok:X(!0),schema_version:X(`benchmark_study_dashboard_v0`),benchmark_id:W(),study_id:W(),status:Y([`complete`,`provisional`]),design:J({protocol_id:W(),comparison_protocol_id:W(),baseline_arm_id:W(),case_set:J({case_set_id:W(),case_ids:q(W())}),metric_catalog:q(J({metric_name:W(),role:Y([`primary`,`guardrail`,`supporting`]),unit:W().optional(),higher_is_better:K(),binary:K()})),labels:yd(W(),W())}).passthrough(),campaign:J({intended_case_count:G().int().positive(),intended_arm_count:G().int().positive(),intended_cell_denominator:G().int().positive(),selected_score_countable_cell_count:G().int().nonnegative(),selected_score_countable_coverage_rate:G().finite().min(0).max(1),complete_declared_design_case_count:G().int().nonnegative(),ambiguous_score_countable_cell_count:G().int().nonnegative(),in_flight_run_count:G().int().nonnegative(),matched_pair_countable_count:G().int().nonnegative(),factorial_contrast_count:G().int().nonnegative(),factorial_contrast_countable_count:G().int().nonnegative(),runtime_observation_count:G().int().nonnegative(),runtime_classification_counts:yd(W(),G().int().nonnegative())}),arms:q(uw),contrasts:yd(W(),J({matched_pair_denominator:G().int().nonnegative(),primary_metric_directions:J({improved:G().int().nonnegative(),flat:G().int().nonnegative(),regressed:G().int().nonnegative()}),binary_metric_transitions:yd(W(),J({"0_to_1":G().int().nonnegative(),"1_to_0":G().int().nonnegative(),same:G().int().nonnegative()}))})),cases:q(J({case_id:W(),complete_declared_design:K(),arms:q(sw),eligible_comparisons:q(fw),largest_eligible_primary_contrast:fw.nullable()})),runs:q(cw),authority:J({score_source:W(),matched_comparison_source:W(),factorial_comparison_source:W().nullable(),manifest_changes_scores:X(!1),dashboard_is_execution_authority:X(!1)}),public_boundary:J({raw_task_recorded:X(!1),raw_trajectory_recorded:X(!1),hidden_evaluation_recorded:X(!1),raw_verifier_output_recorded:X(!1),credentials_recorded:X(!1),local_paths_recorded:X(!1)}),write_performed:X(!1),network_access_performed:X(!1)});function mw(e){return pw.parse(e)}function hw(e,t){let n=new URL(t),r=new URL(e||`/benchmark-study.example.json`,n);if(!new Set([`http:`,`https:`]).has(r.protocol))throw Error(`Benchmark dashboard source must use HTTP or HTTPS`);if(r.origin!==n.origin)throw Error(`Benchmark dashboard source must use same-origin local readback`);return r.toString()}var gw=[{id:`campaign`,label:`Campaign`},{id:`arms`,label:`Arms`},{id:`cases`,label:`Cases`},{id:`runs`,label:`Runs`}];function _w(e){return e==null?`—`:`${(e*100).toFixed(e>=.995?0:1)}%`}function vw(e){return e==null?`—`:new Intl.NumberFormat(`en`,{maximumFractionDigits:2,notation:`compact`}).format(e)}function yw(e){if(e==null)return`—`;let t=e/6e4;return t>=120?`${(t/60).toFixed(1)} h`:`${vw(t)} min`}function bw(e){let t=Object.entries(e);return t.length?t.map(([e,t])=>`${e} (${t})`).join(`, `):`—`}function xw(e){if(!e)return`—`;let t=e.total==null?vw(e.value):`${vw(e.value)}/${vw(e.total)}`;return e.unit?`${t} ${e.unit}`:t}function Sw(e,t){let n=e.metrics[t];return!n||n.case_denominator===0?`—`:n.suite_micro_rate==null?`${vw(n.value_mean)} mean`:`${_w(n.suite_micro_rate)} · ${vw(n.suite_micro_numerator)}/${vw(n.suite_micro_denominator)}`}function Cw(e,t){let n=e.largest_eligible_primary_contrast,r=n?.metric_deltas[t];if(!n||!r)return null;let i=r.delta>0?`+`:``;return{direction:r.direction,text:`${n.candidate_arm_id}: ${i}${vw(r.delta)}`}}function ww({children:e,tone:t=`neutral`}){return(0,B.jsx)(`span`,{className:`benchmark-state benchmark-state-${t}`,children:e})}function Tw({packet:e,primaryMetric:t}){return(0,B.jsxs)(`div`,{className:`benchmark-view-stack`,children:[(0,B.jsxs)(`section`,{"aria-labelledby":`arm-summary-title`,children:[(0,B.jsxs)(`div`,{className:`benchmark-section-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`benchmark-kicker`,children:`ARM SUMMARY`}),(0,B.jsx)(`h2`,{id:`arm-summary-title`,children:`Comparable outcomes, denominator first`})]}),(0,B.jsx)(`p`,{children:`Only one score-countable run per declared case × arm cell is selected.`})]}),(0,B.jsx)(`div`,{className:`benchmark-arm-grid`,children:e.arms.map(e=>{let n=Object.values(e.binary_outcomes)[0];return(0,B.jsxs)(`article`,{className:`benchmark-arm-card`,children:[(0,B.jsxs)(`div`,{className:`benchmark-card-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`span`,{className:`benchmark-mono`,children:e.arm_role}),(0,B.jsx)(`h3`,{children:e.arm_id})]}),(0,B.jsx)(ww,{tone:e.coverage_rate===1?`success`:`warning`,children:e.coverage_rate===1?`Complete`:`Provisional`})]}),(0,B.jsxs)(`dl`,{className:`benchmark-stat-list`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`dt`,{children:[`Primary · `,t]}),(0,B.jsx)(`dd`,{children:Sw(e,t)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Score-countable coverage`}),(0,B.jsxs)(`dd`,{children:[e.selected_score_countable_case_count,`/`,e.intended_case_count]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Binary success`}),(0,B.jsx)(`dd`,{children:n?`${n.success_count}/${n.case_denominator}`:`Not declared`})]})]})]},e.arm_id)})})]}),(0,B.jsxs)(`section`,{"aria-labelledby":`contrast-title`,children:[(0,B.jsxs)(`div`,{className:`benchmark-section-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`benchmark-kicker`,children:`MATCHED CONTRASTS`}),(0,B.jsx)(`h2`,{id:`contrast-title`,children:`Direction counts on eligible pairs`})]}),(0,B.jsx)(`p`,{children:`Raw run volume is never used as a comparison denominator.`})]}),(0,B.jsx)(`div`,{className:`benchmark-table-shell`,children:(0,B.jsxs)(`table`,{children:[(0,B.jsx)(`thead`,{children:(0,B.jsxs)(`tr`,{children:[(0,B.jsx)(`th`,{children:`Candidate arm`}),(0,B.jsx)(`th`,{children:`Matched denominator`}),(0,B.jsx)(`th`,{children:`Improved`}),(0,B.jsx)(`th`,{children:`Flat`}),(0,B.jsx)(`th`,{children:`Regressed`}),(0,B.jsx)(`th`,{children:`Binary transitions`})]})}),(0,B.jsxs)(`tbody`,{children:[Object.entries(e.contrasts).map(([e,t])=>(0,B.jsxs)(`tr`,{children:[(0,B.jsx)(`td`,{children:(0,B.jsx)(`strong`,{children:e})}),(0,B.jsx)(`td`,{children:t.matched_pair_denominator}),(0,B.jsx)(`td`,{className:`benchmark-positive`,children:t.primary_metric_directions.improved}),(0,B.jsx)(`td`,{children:t.primary_metric_directions.flat}),(0,B.jsx)(`td`,{className:`benchmark-negative`,children:t.primary_metric_directions.regressed}),(0,B.jsx)(`td`,{children:Object.entries(t.binary_metric_transitions).map(([e,t])=>`${e}: 0→1 ${t[`0_to_1`]}, 1→0 ${t[`1_to_0`]}, same ${t.same}`).join(` · `)||`—`})]},e)),Object.keys(e.contrasts).length===0&&(0,B.jsx)(`tr`,{children:(0,B.jsx)(`td`,{colSpan:6,children:`No matched comparisons are countable yet.`})})]})]})})]}),(0,B.jsxs)(`section`,{"aria-labelledby":`runtime-health-title`,children:[(0,B.jsxs)(`div`,{className:`benchmark-section-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`benchmark-kicker`,children:`RUNTIME HEALTH`}),(0,B.jsx)(`h2`,{id:`runtime-health-title`,children:`Qualified observations, without execution authority`})]}),(0,B.jsxs)(`p`,{children:[e.campaign.runtime_observation_count,` public-safe runtime observations.`]})]}),(0,B.jsxs)(`div`,{className:`benchmark-runtime-list`,children:[Object.entries(e.campaign.runtime_classification_counts).map(([e,t])=>(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`span`,{children:e}),(0,B.jsx)(`strong`,{children:t})]},e)),e.campaign.runtime_observation_count===0&&(0,B.jsx)(`p`,{className:`benchmark-muted`,children:`No runtime observations uploaded.`})]})]})]})}function Ew({packet:e}){return(0,B.jsx)(`div`,{className:`benchmark-detail-grid`,children:e.arms.map(t=>(0,B.jsxs)(`article`,{className:`benchmark-detail-card`,children:[(0,B.jsxs)(`div`,{className:`benchmark-card-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`span`,{className:`benchmark-mono`,children:t.arm_role}),(0,B.jsx)(`h2`,{children:t.arm_id})]}),(0,B.jsxs)(ww,{tone:t.coverage_rate===1?`success`:`warning`,children:[t.selected_score_countable_case_count,`/`,t.intended_case_count,` countable`]})]}),(0,B.jsx)(`div`,{className:`benchmark-factor-row`,children:Object.entries(t.factor_assignments).map(([e,t])=>(0,B.jsxs)(`span`,{children:[e,`: `,(0,B.jsx)(`strong`,{children:t})]},e))}),(0,B.jsxs)(`dl`,{className:`benchmark-stat-list`,children:[e.design.metric_catalog.map(e=>(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`dt`,{children:[e.role,` · `,e.metric_name]}),(0,B.jsx)(`dd`,{children:Sw(t,e.metric_name)})]},e.metric_name)),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Runs terminal / observed`}),(0,B.jsxs)(`dd`,{children:[t.terminal_run_count,`/`,t.run_count]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Median duration`}),(0,B.jsx)(`dd`,{children:yw(t.effort.duration_ms?.median)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Protocols`}),(0,B.jsx)(`dd`,{children:bw(t.protocol_counts)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Runner revisions`}),(0,B.jsx)(`dd`,{children:bw(t.runner_revision_counts)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Orchestrator runtimes`}),(0,B.jsxs)(`dd`,{children:[Object.keys(t.orchestrator_runtime_counts).length||0,` distinct`]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Failure classes`}),(0,B.jsx)(`dd`,{children:bw(t.failure_class_counts)})]})]})]},t.arm_id))})}function Dw({packet:e,primaryMetric:t,onOpenRun:n}){return(0,B.jsx)(`div`,{className:`benchmark-table-shell benchmark-wide-table`,children:(0,B.jsxs)(`table`,{children:[(0,B.jsx)(`thead`,{children:(0,B.jsxs)(`tr`,{children:[(0,B.jsx)(`th`,{children:`Case`}),(0,B.jsx)(`th`,{children:`Design status`}),(0,B.jsx)(`th`,{children:`Largest eligible delta`}),e.arms.map(e=>(0,B.jsx)(`th`,{children:e.arm_id},e.arm_id))]})}),(0,B.jsx)(`tbody`,{children:e.cases.map(r=>{let i=Cw(r,t);return(0,B.jsxs)(`tr`,{children:[(0,B.jsx)(`td`,{children:(0,B.jsx)(`strong`,{children:r.case_id})}),(0,B.jsx)(`td`,{children:(0,B.jsx)(ww,{tone:r.complete_declared_design?`success`:`warning`,children:r.complete_declared_design?`Complete`:`Provisional`})}),(0,B.jsx)(`td`,{className:i?.direction===`improved`?`benchmark-positive`:i?.direction===`regressed`?`benchmark-negative`:void 0,children:i?.text??`—`}),r.arms.map(r=>(0,B.jsx)(`td`,{children:r.selected_run_id&&r.score_countable?(0,B.jsxs)(`button`,{className:`benchmark-cell-link`,onClick:()=>n(r.selected_run_id),type:`button`,children:[(0,B.jsxs)(`span`,{children:[t,`: `,xw(r.metrics[t])]}),e.design.metric_catalog.filter(e=>e.metric_name!==t).map(e=>(0,B.jsxs)(`small`,{className:`benchmark-cell-metric`,children:[e.metric_name,`: `,xw(r.metrics[e.metric_name])]},e.metric_name)),(0,B.jsxs)(`small`,{children:[`Countable · `,yw(r.effort.duration_ms),` `,(0,B.jsx)(Zp,{"aria-hidden":`true`,size:12})]}),r.insight&&(0,B.jsxs)(`small`,{children:[r.insight.failure_class,` · `,r.insight.confidence]})]}):(0,B.jsx)(`span`,{className:`benchmark-muted`,children:`Not countable`})},r.arm_id))]},r.case_id)})})]})})}function Ow({run:e,packet:t}){return(0,B.jsxs)(`aside`,{"aria-label":`Run detail for ${e.run_id}`,className:`benchmark-run-detail`,children:[(0,B.jsxs)(`div`,{className:`benchmark-card-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`span`,{className:`benchmark-mono`,children:`RUN DETAIL`}),(0,B.jsx)(`h2`,{children:e.run_id})]}),(0,B.jsx)(ww,{tone:e.countability.score_countable?`success`:`warning`,children:e.countability.score_countable?`Score-countable`:`Diagnostic only`})]}),(0,B.jsxs)(`dl`,{className:`benchmark-stat-list benchmark-run-facts`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Case / arm`}),(0,B.jsxs)(`dd`,{children:[e.case_id,` · `,e.arm_id]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Lifecycle`}),(0,B.jsxs)(`dd`,{children:[e.status,` · `,e.observed_at]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Protocol`}),(0,B.jsx)(`dd`,{children:e.protocol_id})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Qualification`}),(0,B.jsxs)(`dd`,{children:[`Integrity `,e.countability.integrity_qualified?`qualified`:`not qualified`,` · result `,e.countability.official_result_present?`present`:`missing`]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Treatment fidelity`}),(0,B.jsx)(`dd`,{children:e.treatment_fidelity})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Effort`}),(0,B.jsxs)(`dd`,{children:[yw(e.effort.duration_ms),` · `,vw(e.effort.agent_steps),` steps · `,vw(e.effort.token_count),` tokens`]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Runner revision`}),(0,B.jsx)(`dd`,{children:e.runner_revision??`—`})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Upload provenance`}),(0,B.jsxs)(`dd`,{children:[e.upload_provenance.producer_id,` · `,e.upload_provenance.source_revision]})]})]}),(0,B.jsx)(`div`,{className:`benchmark-run-metrics`,children:t.design.metric_catalog.map(t=>(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`span`,{children:t.metric_name}),(0,B.jsx)(`strong`,{children:xw(e.metrics[t.metric_name])})]},t.metric_name))}),e.redacted_insight&&(0,B.jsxs)(`div`,{className:`benchmark-insight`,children:[(0,B.jsxs)(`span`,{className:`benchmark-mono`,children:[`REDACTED CASE INSIGHT · `,e.redacted_insight.confidence]}),(0,B.jsx)(`p`,{children:e.redacted_insight.causal_summary}),(0,B.jsxs)(`small`,{children:[`Implication: `,e.redacted_insight.implication]}),(0,B.jsx)(`br`,{}),(0,B.jsxs)(`small`,{children:[`Next probe: `,e.redacted_insight.next_probe]}),!!e.redacted_insight.evidence_refs?.length&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`br`,{}),(0,B.jsxs)(`small`,{children:[`Evidence: `,e.redacted_insight.evidence_refs.join(`, `)]})]})]})]})}function kw({packet:e,selectedRunId:t,onSelectRun:n}){let r=e.runs.find(e=>e.run_id===t)??e.runs[0];return(0,B.jsxs)(`div`,{className:`benchmark-runs-layout`,children:[(0,B.jsx)(`div`,{className:`benchmark-table-shell`,children:(0,B.jsxs)(`table`,{children:[(0,B.jsx)(`thead`,{children:(0,B.jsxs)(`tr`,{children:[(0,B.jsx)(`th`,{children:`Run`}),(0,B.jsx)(`th`,{children:`Case`}),(0,B.jsx)(`th`,{children:`Arm`}),(0,B.jsx)(`th`,{children:`Status`}),(0,B.jsx)(`th`,{children:`Countability`})]})}),(0,B.jsx)(`tbody`,{children:e.runs.map(e=>(0,B.jsxs)(`tr`,{"aria-selected":e.run_id===r?.run_id,children:[(0,B.jsx)(`td`,{children:(0,B.jsx)(`button`,{className:`benchmark-run-link`,onClick:()=>n(e.run_id),type:`button`,children:e.run_id})}),(0,B.jsx)(`td`,{children:e.case_id}),(0,B.jsx)(`td`,{children:e.arm_id}),(0,B.jsx)(`td`,{children:e.status}),(0,B.jsx)(`td`,{children:e.countability.score_countable?`Score-countable`:`Diagnostic only`})]},e.run_id))})]})}),r&&(0,B.jsx)(Ow,{packet:e,run:r})]})}function Aw(){let e=Gw.useSearch(),t=Gw.useNavigate(),[n,r]=(0,z.useState)(null),[i,a]=(0,z.useState)(null),[o,s]=(0,z.useState)(0),c=(0,z.useMemo)(()=>{let t=e.dashboardUrl||`/chat/benchmark-study.example.json`;try{return{url:hw(t,window.location.href),error:null}}catch(e){return{url:``,error:e instanceof Error?e.message:`Invalid dashboard source`}}},[e.dashboardUrl]);if((0,z.useEffect)(()=>{let e=!0;return r(null),a(null),c.error?(a(c.error),()=>{e=!1}):(fetch(c.url,{cache:`no-store`}).then(async e=>{if(!e.ok)throw Error(`HTTP ${e.status} while loading the dashboard packet`);return mw(await e.json())}).then(t=>{e&&r(t)}).catch(t=>{e&&a(t instanceof Error?t.message:`Unable to load dashboard packet`)}),()=>{e=!1})},[o,c]),(0,z.useEffect)(()=>{n&&(document.title=`${n.design.labels.title??n.study_id} · LoopX Benchmark`)},[n]),i)return(0,B.jsxs)(`main`,{className:`benchmark-page benchmark-loading`,children:[(0,B.jsx)(lm,{"aria-hidden":`true`}),(0,B.jsx)(`h1`,{children:`Dashboard packet unavailable`}),(0,B.jsx)(`p`,{children:i}),(0,B.jsxs)(`button`,{onClick:()=>s(e=>e+1),type:`button`,children:[(0,B.jsx)(Hm,{"aria-hidden":`true`,size:16}),` Retry readback`]})]});if(!n)return(0,B.jsxs)(`main`,{"aria-busy":`true`,className:`benchmark-page benchmark-loading`,children:[(0,B.jsx)(Jp,{"aria-hidden":`true`}),(0,B.jsx)(`h1`,{children:`Reading benchmark study`}),(0,B.jsx)(`p`,{children:`Validating the public-safe dashboard packet…`})]});let l=n.design.metric_catalog.find(e=>e.role===`primary`)?.metric_name??`primary`,u=(n,r=e.runId)=>t({search:e=>({...e,view:n,runId:r})}),d=new URL(c.url).pathname;return(0,B.jsxs)(`main`,{className:`benchmark-page`,children:[(0,B.jsxs)(`header`,{className:`benchmark-hero`,children:[(0,B.jsxs)(`div`,{className:`benchmark-hero-topline`,children:[(0,B.jsx)(`a`,{className:`benchmark-wordmark`,href:`/chat/`,children:`LoopX`}),(0,B.jsxs)(`div`,{className:`benchmark-readonly`,children:[(0,B.jsx)(Xm,{"aria-hidden":`true`,size:15}),` Derived read-only projection`]})]}),(0,B.jsxs)(`div`,{className:`benchmark-hero-grid`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`p`,{className:`benchmark-kicker`,children:[`BENCHMARK STUDY / `,n.benchmark_id]}),(0,B.jsxs)(`div`,{className:`benchmark-title-row`,children:[(0,B.jsx)(`h1`,{children:n.design.labels.title??n.study_id}),(0,B.jsx)(ww,{tone:n.status===`complete`?`success`:`warning`,children:n.status})]}),(0,B.jsx)(`p`,{className:`benchmark-lead`,children:`One declared study, explicit denominators, and the same countability rules from campaign summary to exact run.`})]}),(0,B.jsxs)(`dl`,{className:`benchmark-identity`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Study`}),(0,B.jsx)(`dd`,{children:n.study_id})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Protocol`}),(0,B.jsx)(`dd`,{children:n.design.protocol_id})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Case set`}),(0,B.jsx)(`dd`,{children:n.design.case_set.case_set_id})]})]})]}),(0,B.jsxs)(`div`,{className:`benchmark-kpi-grid`,children:[(0,B.jsxs)(`article`,{children:[(0,B.jsx)(mm,{"aria-hidden":`true`}),(0,B.jsx)(`span`,{children:`Score-countable cells`}),(0,B.jsxs)(`strong`,{children:[n.campaign.selected_score_countable_cell_count,(0,B.jsxs)(`small`,{children:[` / `,n.campaign.intended_cell_denominator]})]}),(0,B.jsxs)(`p`,{children:[_w(n.campaign.selected_score_countable_coverage_rate),` declared coverage`]})]}),(0,B.jsxs)(`article`,{children:[(0,B.jsx)(um,{"aria-hidden":`true`}),(0,B.jsx)(`span`,{children:`Complete designs`}),(0,B.jsxs)(`strong`,{children:[n.campaign.complete_declared_design_case_count,(0,B.jsxs)(`small`,{children:[` / `,n.campaign.intended_case_count]})]}),(0,B.jsx)(`p`,{children:`Cases with every declared arm`})]}),(0,B.jsxs)(`article`,{children:[(0,B.jsx)(Zp,{"aria-hidden":`true`}),(0,B.jsx)(`span`,{children:`Matched comparisons`}),(0,B.jsx)(`strong`,{children:n.campaign.matched_pair_countable_count}),(0,B.jsx)(`p`,{children:`Eligible pairs only`})]}),(0,B.jsxs)(`article`,{children:[(0,B.jsx)(Jp,{"aria-hidden":`true`}),(0,B.jsx)(`span`,{children:`In flight`}),(0,B.jsx)(`strong`,{children:n.campaign.in_flight_run_count}),(0,B.jsx)(`p`,{children:n.status===`provisional`?`Coverage remains provisional`:`Declared coverage complete`})]})]})]}),(0,B.jsxs)(`nav`,{"aria-label":`Benchmark dashboard views`,className:`benchmark-tabs`,children:[gw.map(t=>(0,B.jsx)(`button`,{"aria-current":e.view===t.id?`page`:void 0,onClick:()=>u(t.id),type:`button`,children:t.label},t.id)),(0,B.jsxs)(`button`,{className:`benchmark-refresh`,onClick:()=>s(e=>e+1),type:`button`,children:[(0,B.jsx)(Hm,{"aria-hidden":`true`,size:14}),` Refresh local readback`]})]}),(0,B.jsxs)(`div`,{className:`benchmark-content`,children:[e.view===`campaign`&&(0,B.jsx)(Tw,{packet:n,primaryMetric:l}),e.view===`arms`&&(0,B.jsx)(Ew,{packet:n}),e.view===`cases`&&(0,B.jsx)(Dw,{onOpenRun:e=>u(`runs`,e),packet:n,primaryMetric:l}),e.view===`runs`&&(0,B.jsx)(kw,{onSelectRun:e=>u(`runs`,e),packet:n,selectedRunId:e.runId})]}),(0,B.jsxs)(`footer`,{className:`benchmark-footer`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(Xm,{"aria-hidden":`true`,size:16}),(0,B.jsxs)(`span`,{children:[`Scores: `,n.authority.score_source]}),(0,B.jsx)(`span`,{children:`Dashboard cannot launch, grade, or mutate runs.`})]}),(0,B.jsxs)(`code`,{title:d,children:[`local`,d]})]})]})}var jw=J({goalId:W().optional().default(``),statusUrl:W().optional().default(``)}),Mw=J({goalId:W().optional().default(``),mode:Y([`showcase`,`developer`,`ops`]).optional().default(`showcase`),statusUrl:W().optional().default(``),todoLane:Y([`all`,`user`,`agent`]).optional().default(`all`),todoQuery:W().optional().default(``)}),Nw=Mw.omit({mode:!0}),Pw=J({dashboardUrl:W().optional().default(``),view:Y([`campaign`,`arms`,`cases`,`runs`]).optional().default(`campaign`),runId:W().optional().default(``)});function Fw(){let e=`https://huangruiteng.github.io/loopx/docs/showcases/index.en.html`;return(0,z.useEffect)(()=>{window.location.replace(e)},[]),(0,B.jsx)(`a`,{href:e,children:`Open LoopX cases / 浏览案例`})}function Iw({goalId:e,statusUrl:t}){let n=t?lh(t,window.location.href):null;return n?.error?(0,B.jsx)(`main`,{role:`alert`,children:n.error}):(0,B.jsx)(ii,{replace:!0,to:`/`,search:{goalId:e,statusUrl:t}})}function Lw(){let e=Vw.useSearch();return e.mode===`ops`?(0,B.jsx)(Iw,{...e}):e.mode===`developer`?(0,B.jsx)(ii,{replace:!0,to:`/developers/projections`}):(0,B.jsx)(Fw,{})}function Rw(){return(0,B.jsx)(Iw,{...Hw.useSearch()})}var zw=Ci({component:()=>(0,B.jsx)(Mi,{}),errorComponent:()=>(0,B.jsxs)(`main`,{role:`alert`,className:`p-8`,children:[(0,B.jsx)(`h1`,{children:`页面暂时无法显示 / Page unavailable`}),(0,B.jsx)(`p`,{children:`请重新加载页面;这不会执行任务。 / Reloading does not execute tasks.`}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>window.location.reload(),children:`重新加载 / Reload`})]})}),Bw=xi({getParentRoute:()=>zw,path:`/`,validateSearch:e=>jw.parse(e),component:UC}),Vw=xi({getParentRoute:()=>zw,path:`/frontstage`,validateSearch:e=>Mw.parse(e),component:Lw}),Hw=xi({getParentRoute:()=>zw,path:`/deprecated/frontstage/ops`,validateSearch:e=>Nw.parse(e),component:Rw}),Uw=xi({getParentRoute:()=>zw,path:`/frontstage/developer`,component:()=>(0,B.jsx)(ii,{replace:!0,to:`/developers/projections`})}),Ww=xi({getParentRoute:()=>zw,path:`/developers/projections`,component:rw}),Gw=xi({getParentRoute:()=>zw,path:`/benchmarks/study`,validateSearch:e=>Pw.parse(e),component:Aw}),Kw=zw.addChildren([Bw,Vw,Hw,Uw,Ww,Gw]);function qw(e){return!e||e===`/`||e===`./`?`/`:(e.startsWith(`/`)?e:`/${e}`).replace(/\/+$/,``)||`/`}var Jw=Li({routeTree:Kw,basepath:qw(`/chat/`),trailingSlash:`preserve`}),Yw=document.getElementById(`root`);if(!Yw)throw Error(`Root element not found`);var Xw=new R({defaultOptions:{queries:{refetchOnWindowFocus:!1,retry:1,staleTime:1e4}}});(0,Vi.createRoot)(Yw).render((0,B.jsx)(Pe,{client:Xw,children:(0,B.jsx)(qi,{children:(0,B.jsx)(Bi,{router:Jw})})})); \ No newline at end of file +`),summary:k.summary,title:k.title}}]:[]],at=f.connectionState===`connected`,ot=new Map(E.goals.map(e=>[e.goalId,e.title])),st=e=>qd(e,f.activeSource.statusUrl,at&&!l?.errors[e.goalId],ot.get(e.goalId)),ct={...Gy(E),userTodos:E.userTodos.map(st),attentionHistory:(E.attentionHistory??E.userTodos).map(st),periodicReports:{error:te,loading:j},timeline:it};return(0,B.jsxs)(`div`,{className:p===`dark`?`dark`:``,"data-testid":`personal-goal-home`,children:[Ee?(0,B.jsx)(`p`,{role:`status`,className:`m-0 bg-amber-50 px-4 py-2 text-sm text-amber-900`,children:_(Ee===`partial`?`runs.discoveryPartial`:`runs.discoveryOffline`)}):null,(0,B.jsx)(TS,{agents:re.map(e=>({adapterKind:e.adapterKind,agentId:e.agentId,available:e.available,capability:e.capability,interrupt:e.interrupt,label:e.label,location:e.location,resume:e.resume,source:e.source,streaming:e.streaming,toolCalls:e.toolCalls,trustScope:e.trustScope,workspaceCompatibility:e.available?`当前 Goal 写入前验证`:`不可用,需先修复 Endpoint`})),callbacks:{onApplyAttention:e=>rt(e.goalId),onCorrectRun:async(e,t)=>{if(!e.sessionId)throw Error(`这个 Run 还没有可纠偏的执行 Session。`);let n=await Uh((await Bh({actionKind:`run.correct`,context:{kind:`run`,goal_id:e.goalId,todo_id:e.todoId},idempotencyKey:`workspace-run-correct-${e.sessionId}-${Date.now().toString(36)}`,normalizedParameters:{goal_id:e.goalId,message:t,session_id:e.sessionId},summary:`纠偏执行任务:${e.title}`})).proposal_id),r=typeof n.turn?.turn_id==`string`?n.turn.turn_id:void 0;if(qe(e.goalId,{agentId:e.agentId,resumable:!0,sessionId:e.sessionId,status:r?`running`:`ready`,turnId:r}),r){Ne.current.set(e.goalId,r);let t=new AbortController;Pe.current.set(e.goalId,t);let n=``,i=Je(e.goalId,{activity:[`正在把纠偏送入原执行 Session`],agentLabel:e.agentLabel,lines:[],pending:!0,sourceLabel:`${e.agentLabel} · 执行 Session`,text:``});try{let a=await og(e.sessionId,r,{signal:t.signal,onDelta:t=>{n+=t,Ye(e.goalId,i,{text:n})}});Ye(e.goalId,i,{activity:[],pending:!1,text:fC(a.response.message||n.trim())||`${e.agentLabel} 已完成纠偏。`})}catch(t){let n=Fe.current.delete(e.goalId);Ye(e.goalId,i,{activity:[],pending:!1,text:n?`已中断。你可以在当前会话继续发送消息。`:t instanceof Error?t.message:`纠偏回合失败。`})}finally{Ne.current.delete(e.goalId),Pe.current.delete(e.goalId),qe(e.goalId,{agentId:e.agentId,resumable:!0,sessionId:e.sessionId,status:`ready`})}}},onCloseRunSession:et,onInterruptRun:async e=>Ze(e),onOpenGoal:rt,onOpenRunSession:async e=>{if(!e.sessionId)return;let t=e.sessionId,n=await Xh(t);ke(e=>({...e,[t]:n})),rt(e.goalId),_e(t=>({...t,[e.goalId]:n.messages.map(t=>({agentLabel:t.role===`user`?void 0:e.agentLabel,attachments:sC(t.attachments),id:Ae.current++,lines:[],role:t.role===`user`?`user`:`assistant`,sourceLabel:t.role===`user`?void 0:`${e.agentLabel} · 执行 Session`,text:t.role===`user`?t.text:fC(t.text)}))})),qe(e.goalId,{agentId:e.agentId,resumable:n.session.resumable,sessionId:t,status:n.session.active_turn_id?`running`:n.session.status,turnId:n.session.active_turn_id??void 0})},onOpenOutput:e=>rt(e.goalId),...b?{onPreviewGoalSubagentConfiguration:async e=>{let t=await dg(e);return{changed:t.changed,configuration:{allowedDomains:t.after.orchestration.allowed_domains,enabled:t.feature_summary.multi_subagent===`enabled`,maxChildren:t.after.orchestration.max_children,modelConfig:t.after.orchestration.model_config},previewId:t.preview_id}},onApplyGoalSubagentConfiguration:async({previewId:e,...t})=>{let n=await fg(t,e);return{allowedDomains:n.after.orchestration.allowed_domains,enabled:n.feature_summary.multi_subagent===`enabled`,maxChildren:n.after.orchestration.max_children,modelConfig:n.after.orchestration.model_config}}}:{},...g?{onExecuteGoalLifecycle:async({goalId:e,operation:t,reason:n})=>{let r=await Zb(g,e,t,n);return{activationState:r.activation_state,projectionVerified:r.projection_verified}}}:{},onGoalActivationStateChange:n,onGoalDeleted:r,onReconcileStatus:a,onRetryGoalArchive:s,onExportOutput:async e=>{let t=[`# ${e.title}`,``,e.summary??``,``,e.safePreview??`此产出没有可用的公开安全预览。`,``,`Goal: ${e.goalId}`,`Todo: ${e.todoId??`unlinked`}`,`Run: ${e.runId??`unlinked`}`].join(` +`),n=URL.createObjectURL(new Blob([t],{type:`text/markdown;charset=utf-8`})),r=document.createElement(`a`);r.href=n,r.download=`${e.outputId.replace(/[^a-z0-9._-]+/gi,`-`)}.md`,r.click(),URL.revokeObjectURL(n)},onRefresh:o,onRetryResumeRun:Qe,onSelectAgent:tt,onSelectGoal:e=>e?rt(e):nt(),onSendMessage:async(e,t,n,r)=>Xe(e,{agentId:t,goalId:n,attachments:r}),onStartNewRunSession:$e},goalArchiveLoadState:e,managerChannelBinding:w,managerRuntime:S,model:ct,readOnly:h,selectedAgentId:L.agentId,selectedGoalId:D?.goalId??null,statusSourceControl:f})]})}function UC({error:e,isLoading:t,onRetry:n,requestedUrl:r,theme:i,toggleTheme:a}){let o=!!(e&&/failed to fetch|networkerror|load failed/i.test(e)&&r.includes(`status.json`));return(0,B.jsx)(`div`,{className:i===`dark`?`dark`:``,children:(0,B.jsxs)(`main`,{className:`min-h-screen bg-[#f6f7f9] text-slate-950 dark:bg-[#09090b] dark:text-zinc-50`,children:[(0,B.jsxs)(`header`,{className:`flex min-h-16 flex-wrap items-center justify-between gap-3 border-b border-slate-200 bg-white px-4 py-3 dark:border-zinc-800 dark:bg-zinc-950 sm:px-6`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`h1`,{className:`text-xl font-semibold`,children:`LoopX Workspace`}),(0,B.jsx)(`p`,{className:`mt-1 break-all text-sm text-slate-500 dark:text-zinc-400`,children:`Personal Workspace`})]}),(0,B.jsx)(_y,{"aria-label":`切换主题`,onClick:a,size:`icon`,variant:`secondary`,children:i===`dark`?(0,B.jsx)(eh,{className:`h-4 w-4`}):(0,B.jsx)(Fm,{className:`h-4 w-4`})})]}),(0,B.jsxs)(`div`,{className:`grid min-h-[calc(100vh-80px)] sm:grid-cols-[240px_1fr]`,children:[(0,B.jsxs)(`aside`,{className:`hidden border-r border-slate-200 p-6 dark:border-zinc-800 sm:block`,"aria-label":`Workspace`,children:[(0,B.jsx)(`strong`,{children:`LoopX`}),(0,B.jsx)(`p`,{className:`mt-6 text-sm`,children:`Workspace`}),(0,B.jsx)(`p`,{className:`mt-8 text-xs text-slate-500`,children:`Goals`}),[1,2,3].map(e=>(0,B.jsx)(`div`,{className:`mt-4 h-8 rounded bg-slate-100 dark:bg-zinc-900`},e))]}),(0,B.jsx)(`div`,{className:`p-4 sm:p-8`,children:(0,B.jsx)(vy,{"data-testid":`initial-status-state`,children:(0,B.jsx)(yy,{className:`flex min-h-64 items-center justify-center p-6`,children:(0,B.jsxs)(`div`,{className:`max-w-xl text-center`,children:[e?(0,B.jsx)(lm,{className:`mx-auto h-6 w-6 text-rose-600 dark:text-rose-300`}):(0,B.jsx)(Hm,{className:`mx-auto h-6 w-6 animate-spin text-slate-500 dark:text-zinc-400`}),(0,B.jsx)(`p`,{className:`mt-3 text-sm font-medium`,children:e?`无法加载实时状态`:`正在加载实时状态`}),e?(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`p`,{className:`mt-2 break-words text-sm leading-6 text-slate-500 dark:text-zinc-400`,children:o?`本地状态服务暂时未连接。升级或启动期间可能短暂断开,请重试;仍失败时重新打开 LoopX App,或运行 loopx doctor。`:e}),o?(0,B.jsx)(`p`,{className:`mt-2 text-xs leading-5 text-slate-400 dark:text-zinc-500`,children:`重新加载不会执行任务,也不会改变 Goal 配置。`}):null,(0,B.jsx)(`div`,{className:`mt-4 flex flex-wrap justify-center gap-2`,children:(0,B.jsxs)(_y,{disabled:t,onClick:n,children:[(0,B.jsx)(Hm,{className:`h-4 w-4`}),`重试`]})})]}):(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-500 dark:text-zinc-400`,role:`status`,children:`正在连接 Workspace,Goal 列表将先出现,详细状态会逐个补齐。 / Connecting to your Workspace. Goals load independently.`})]})})})})]})]})})}function WC(){let e=Vw.useSearch(),t=Vw.useNavigate(),[n,r]=(0,z.useState)(`light`),[i,a]=(0,z.useState)(null),o=(0,z.useRef)(null),s=(0,z.useRef)(e.goalId);s.current=e.goalId;let[c,l]=(0,z.useState)(jp),[u,d]=(0,z.useState)({kind:`example`,label:`bundled example`}),[f,p]=(0,z.useState)(()=>RS(window.localStorage,window.location.href)),m=(0,z.useRef)(f);m.current=f;let[h,g]=(0,z.useState)(e.statusUrl),[_,v]=(0,z.useState)(null),[y,b]=(0,z.useState)(!1),[x,S]=(0,z.useState)({error:null,phase:`idle`}),[C,w]=(0,z.useState)(e.statusUrl.trim()||null),[T,E]=(0,z.useState)(!1),D=(0,z.useRef)(null),O=(0,z.useRef)(u_(e.statusUrl.trim()||null)),k=!T&&u.kind===`example`?e.statusUrl.trim():``,ee=C??k,te=u.kind===`url`?u.label:JS,A=!!(_&&C),j=GS(f,C,te,window.location.href),M=u.kind===`example`&&!T,ne=c.attention_queue,N=c.run_history,P=(0,z.useMemo)(()=>ZS(N.goals,ne.items),[N.goals,ne.items]);function re(e,t,n=0){S({error:null,phase:`loading`}),YS(dh(e,`stopped`,window.location.href)).then(r=>{if(!m_(O.current,t))return;let i=r.goal_projection?.registry_revision??null,a=t.registryRevision!==null&&t.registryRevision!==void 0&&i!==null&&t.registryRevision!==i;if(l(e=>L_(e,r)),a&&n<1){F(e,{background:!0,resyncAttempt:n+1});return}S(a?{error:`Goal 状态在加载历史时发生变化,请重试。`,phase:`error`}:{error:null,phase:`ready`})}).catch(e=>{m_(O.current,t)&&S({error:Ap(e),phase:`error`})})}function ie(){let e=u.kind===`url`?u.label:h||JS,t=f_(O.current,e,{background:!0});if(i){F(e);return}t&&re(e,t)}async function ae(e,n,r){if(r.background)return l(e=>L_(e,n)),!0;let i={kind:`url`,label:e};return O.current.loadedUrl=e,l(n),d(i),g(e),await t({search:t=>({...t,statusUrl:e})}),p_(O.current,r)?(O.current.requestedUrl=null,w(null),!0):!1}async function F(e,t={}){let n=e.trim(),r=t.background===!0;if(!n){r||v(`状态地址不能为空`);return}let c=f_(O.current,n,{background:r,selectionRevision:t.selectionRevision});if(!c)return;o.current?.abort();let d=new AbortController;o.current=d,r||(D.current=null,E(!1),w(n),b(!0),v(null),S({error:null,phase:`idle`}));try{let e=await Fp(n,window.location.href).catch(()=>null);if(!m_(O.current,c))return;if(e){let o=(t.retryOnly||t.reuseSnapshots)&&u.kind===`url`&&u.label===n?Np(i,e,{invalidateGoalIds:t.invalidateGoalIds}):{};a({directory:e,snapshots:o,errors:{}});let f={...e,goals:e.goals.filter(e=>!o[e.id])},p=!1,m=Ip(e);if(r)l(m);else if(!await ae(n,m,c))return;if(S({error:null,phase:`loading`}),await Rp(n,window.location.href,f,(e,t,n)=>{n===`revision`&&(p=!0),a(r=>r&&{...r,snapshots:t?{...r.snapshots,[e]:t}:r.snapshots,errors:n?{...r.errors,[e]:n}:r.errors})},()=>m_(O.current,c),()=>s.current,d.signal),p&&(t.resyncAttempt??0)<1&&m_(O.current,c)){await F(n,{resyncAttempt:1});return}m_(O.current,c)&&S({error:null,phase:`ready`});return}let o=await YS(dh(n,`active`,window.location.href));if(!m_(O.current,c)||(a(null),c.registryRevision=o.goal_projection?.registry_revision??null,!await ae(n,o,c)))return;if(o.goal_projection?.scope!==`active`||o.goal_projection.complete){S({error:null,phase:`ready`});return}re(n,c,t.resyncAttempt??0)}catch(e){if(!p_(O.current,c))return;r||v(Ap(e))}finally{!r&&p_(O.current,c)&&b(!1)}}function oe(e,t={}){o.current?.abort();let n=d_(O.current,e.statusUrl);D.current=null,E(!1),w(e.statusUrl),b(!0),v(null),(async()=>{if(t.ensureTunnel&&e.kind===`ssh_tunnel`){let t=new URL(e.statusUrl,window.location.href).port;if(t)try{await Xb(e.label,t)}catch{}}O.current.selectionRevision===n&&await F(e.statusUrl,{selectionRevision:n})})()}function I(e){m.current=e,p(e);try{zS(window.localStorage,e)}catch{}}let se={activeSource:j,connectionState:y?`loading`:A?`error`:`connected`,errorMessage:A?`未切换到 ${C??`所选来源`}:${_}`:null,onAdd:e=>{let t=VS(f,e,window.location.href);return`error`in t?{error:t.error}:(I(t.catalog),oe(t.source,{ensureTunnel:e.ensureTunnel}),{})},onConfiguredHostsLoaded:e=>{let t=m.current,n=BS(t,e);n!==t&&I(n)},onRemove:e=>{I(HS(f,e)),j.id===e&&oe(NS)},onSelect:e=>{let t=f.sources.find(t=>t.id===e);t&&oe(t,{ensureTunnel:t.kind===`ssh_tunnel`})},sources:j.id===`temporary`?[...f.sources,j]:f.sources};(0,z.useEffect)(()=>{let t=e.statusUrl.trim();if(t){if(D.current===t||C&&C!==t)return;(u.kind!==`url`||u.label!==t)&&F(t);return}D.current=null,!T&&(C||u.kind===`example`&&F(JS))},[T,C,e.statusUrl,u.kind,u.label]),(0,z.useEffect)(()=>{if(e.statusUrl&&u.kind===`example`)return;let n=new Set(P.map(e=>e.goal.id));if(P.length===0){e.goalId&&t({search:e=>({...e,goalId:``})});return}e.goalId&&!n.has(e.goalId)&&x.phase!==`loading`&&t({search:e=>({...e,goalId:``})})},[x.phase,P,t,e.goalId,e.statusUrl,u.kind]),(0,z.useEffect)(()=>{if(!i||y||!e.goalId||u.kind!==`url`)return;let t=i.directory.goals.find(t=>t.id===e.goalId);t?.activation_state===`stopped`&&!i.snapshots[t.id]&&!i.errors[t.id]&&F(u.label,{retryOnly:!0})},[e.goalId,y,i,u]);function L(e){t({search:t=>({...t,goalId:e})})}return M?(0,B.jsx)(UC,{error:_,isLoading:y,onRetry:()=>void F(ee||JS),requestedUrl:ee||JS,theme:n,toggleTheme:()=>r(n===`dark`?`light`:`dark`)}):(0,B.jsx)(HC,{goalArchiveLoadState:x,isLoading:y,onGoalActivationStateChange:(e,t)=>{O.current.projectionRevision+=1,l(n=>Dp(n,e,t)),a(n=>n&&{...n,snapshots:Object.fromEntries(Object.entries(n.snapshots).map(([n,r])=>[n,Dp(r,e,t)]))})},onGoalDeleted:e=>{O.current.projectionRevision+=1,l(t=>Op(t,e)),a(t=>t&&{...t,snapshots:Object.fromEntries(Object.entries(t.snapshots).filter(([t])=>t!==e))})},onSelectGoal:L,onReconcileStatus:e=>F(u.kind===`url`?u.label:h||JS,{background:!0,invalidateGoalIds:e?.invalidateGoalIds,reuseSnapshots:!0}),onRetryGoalArchive:ie,onRefresh:()=>F(u.kind===`url`?u.label:h||JS,{retryOnly:!!(i&&Object.keys(i.errors).length)}),payload:c,progress:i,rows:P,selectedGoalId:e.goalId,statusSourceControl:se,theme:n,toggleTheme:()=>r(n===`dark`?`light`:`dark`)})}var GC=H_(`inline-flex items-center gap-1 rounded-md border px-2 py-0.5 text-xs font-medium`,{variants:{variant:{neutral:`border-slate-200 bg-white text-slate-700 dark:border-zinc-800 dark:bg-zinc-950 dark:text-zinc-300`,success:`border-emerald-200 bg-emerald-50 text-emerald-800 dark:border-emerald-900 dark:bg-emerald-950 dark:text-emerald-200`,warning:`border-amber-200 bg-amber-50 text-amber-800 dark:border-amber-900 dark:bg-amber-950 dark:text-amber-200`,info:`border-sky-200 bg-sky-50 text-sky-800 dark:border-sky-900 dark:bg-sky-950 dark:text-sky-200`,danger:`border-rose-200 bg-rose-50 text-rose-800 dark:border-rose-900 dark:bg-rose-950 dark:text-rose-200`}},defaultVariants:{variant:`neutral`}});function KC({className:e,variant:t,...n}){return(0,B.jsx)(`span`,{className:hy(GC({variant:t}),e),...n})}var qC=[{label:`status payload`,source:`apps/presentation/dashboard/src/data/status.ts`,detail:`status_contract, attention_queue, local_dashboard_api, run_history`},{label:`channel projection`,source:`apps/presentation/dashboard/src/data/goal-channel-frontstage.ts`,detail:`decision_frame, todos, gates, leases, artifacts, truth_contract`},{label:`public showcase catalog`,source:`docs/showcases/showcase-catalog.json`,detail:`case metadata, visual hints, evidence boundaries, story beats`},{label:`route smoke`,source:`apps/presentation/dashboard/smoke/frontstage-route-smoke.ts`,detail:`static route contract, source guards, component expectations`}],JC=[{axis:`schema`,current:`goal_channel_projection_v0`,proposed:`new optional projection field`,gate:`parser default plus route smoke assertion`},{axis:`truth`,current:`event ledger and active state remain source of truth`,proposed:`derived UI state only`,gate:`truth_contract must stay read-only`},{axis:`privacy`,current:`compact source refs and warnings`,proposed:`public-safe fixture field`,gate:`loopx check and browser fake-private fixture`},{axis:`interaction`,current:`render, filter, select, inspect`,proposed:`no browser write by default`,gate:`write affordance requires explicit loopback capability`}],YC=[{title:`Fixture sources`,body:`Use examples/status.example.json, browser-smoke fixtures, and docs/showcases/showcase-catalog.json.`},{title:`Required proof`,body:`Every projection addition needs parser coverage, route smoke assertions, and one browser or bundle check when UI output changes.`},{title:`Never include`,body:`Raw task text, trajectories, transcripts, local paths, private registry state, credentials, or internal document links.`}],XC=[`npm --prefix apps/presentation/dashboard run smoke:frontstage-route`,`npm --prefix apps/presentation/dashboard run smoke:frontstage-browser`,`npm --prefix apps/presentation/dashboard run smoke:frontstage-share-bundle`,`npm --prefix apps/presentation/dashboard run build`,`loopx check --scan-path apps/presentation/dashboard --scan-path docs/status-data-contract.md`],ZC=[{name:`Projection lane`,badges:[`read-only`,`schema v0`],body:`Summarizes one compact projection lane without mutating the underlying LoopX state.`},{name:`Capability badge`,badges:[`loopback`,`dry-run`],body:`Shows an advertised local capability only after the status feed declares it.`},{name:`Boundary warning`,badges:[`public-safe`,`omitted`],body:`Names omitted private material and points contributors back to compact source references.`}];function QC({children:e,icon:t,title:n}){return(0,B.jsxs)(`section`,{className:`rounded-lg border border-slate-200 bg-white shadow-sm`,children:[(0,B.jsx)(`div`,{className:`flex items-center justify-between gap-3 border-b border-slate-200 px-4 py-3`,children:(0,B.jsxs)(`h2`,{className:`flex items-center gap-2 text-sm font-semibold text-slate-950`,children:[(0,B.jsx)(t,{className:`h-4 w-4 text-slate-500`}),n]})}),e]})}function $C(){return(0,B.jsx)(QC,{icon:rm,title:`Status Contract Explorer`,children:(0,B.jsx)(`div`,{className:`grid gap-3 p-4 lg:grid-cols-2`,"data-testid":`developer-contract-explorer`,children:qC.map(e=>(0,B.jsxs)(`div`,{className:`rounded-md border border-slate-200 bg-slate-50 px-3 py-3`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,B.jsx)(KC,{variant:`info`,children:e.label}),(0,B.jsx)(KC,{variant:`neutral`,children:`public contract`})]}),(0,B.jsx)(`div`,{className:`mt-2 break-words font-mono text-xs text-slate-700`,children:e.source}),(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600`,children:e.detail})]},e.label))})})}function ew(){return(0,B.jsx)(QC,{icon:Cm,title:`Projection Diffing`,children:(0,B.jsx)(`div`,{className:`overflow-x-auto`,"data-testid":`developer-projection-diffing`,children:(0,B.jsxs)(`table`,{className:`min-w-full border-separate border-spacing-0 text-left text-sm`,children:[(0,B.jsx)(`thead`,{children:(0,B.jsxs)(`tr`,{className:`bg-slate-50 text-xs uppercase tracking-normal text-slate-500`,children:[(0,B.jsx)(`th`,{className:`border-b border-slate-200 px-4 py-3 font-semibold`,children:`Axis`}),(0,B.jsx)(`th`,{className:`border-b border-slate-200 px-4 py-3 font-semibold`,children:`Current`}),(0,B.jsx)(`th`,{className:`border-b border-slate-200 px-4 py-3 font-semibold`,children:`Proposed`}),(0,B.jsx)(`th`,{className:`border-b border-slate-200 px-4 py-3 font-semibold`,children:`Gate`})]})}),(0,B.jsx)(`tbody`,{children:JC.map(e=>(0,B.jsxs)(`tr`,{className:`align-top`,children:[(0,B.jsx)(`td`,{className:`border-b border-slate-100 px-4 py-3 font-semibold text-slate-950`,children:e.axis}),(0,B.jsx)(`td`,{className:`border-b border-slate-100 px-4 py-3 text-slate-600`,children:e.current}),(0,B.jsx)(`td`,{className:`border-b border-slate-100 px-4 py-3 text-slate-600`,children:e.proposed}),(0,B.jsx)(`td`,{className:`border-b border-slate-100 px-4 py-3 text-slate-600`,children:e.gate})]},e.axis))})]})})})}function tw(){return(0,B.jsx)(QC,{icon:ym,title:`Fixture Generation`,children:(0,B.jsx)(`div`,{className:`grid gap-3 p-4 md:grid-cols-3`,"data-testid":`developer-fixture-generation`,children:YC.map(e=>(0,B.jsxs)(`div`,{className:`rounded-md border border-slate-200 bg-slate-50 px-3 py-3`,children:[(0,B.jsx)(`div`,{className:`text-sm font-semibold text-slate-950`,children:e.title}),(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600`,children:e.body})]},e.title))})})}function nw(){return(0,B.jsx)(QC,{icon:dm,title:`Smoke Checklist`,children:(0,B.jsx)(`div`,{className:`space-y-2 p-4`,"data-testid":`developer-smoke-checklist`,children:XC.map(e=>(0,B.jsxs)(`div`,{className:`flex items-start gap-3 rounded-md border border-slate-200 bg-slate-50 px-3 py-2`,children:[(0,B.jsx)(em,{className:`mt-0.5 h-4 w-4 shrink-0 text-emerald-600`}),(0,B.jsx)(`code`,{className:`break-all text-xs font-semibold leading-5 text-slate-700`,children:e})]},e))})})}function rw(){return(0,B.jsx)(QC,{icon:fm,title:`Component Examples`,children:(0,B.jsx)(`div`,{className:`grid gap-3 p-4 lg:grid-cols-3`,"data-testid":`developer-component-examples`,children:ZC.map(e=>(0,B.jsxs)(`article`,{className:`rounded-md border border-slate-200 bg-slate-50 p-3`,children:[(0,B.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:e.badges.map(e=>(0,B.jsx)(KC,{variant:e===`read-only`||e===`public-safe`?`success`:`neutral`,children:e},e))}),(0,B.jsx)(`h3`,{className:`mt-3 text-sm font-semibold leading-6 text-slate-950`,children:e.name}),(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600`,children:e.body})]},e.name))})})}function iw(){return(0,B.jsx)(`main`,{className:`min-h-screen bg-[#f7f7f4] px-4 py-4 text-slate-950 sm:px-5`,"data-testid":`frontstage-developer-cockpit`,children:(0,B.jsxs)(`div`,{className:`mx-auto grid max-w-[1500px] gap-4 xl:grid-cols-[260px_minmax(0,1fr)]`,children:[(0,B.jsxs)(`aside`,{className:`rounded-lg border border-slate-200 bg-white p-4 shadow-sm xl:sticky xl:top-4 xl:self-start`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(`div`,{className:`flex h-9 w-9 items-center justify-center rounded-md border border-slate-200 bg-slate-950 text-white`,children:(0,B.jsx)(th,{className:`h-4 w-4`})}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`text-sm font-semibold`,children:`Developer Cockpit`}),(0,B.jsx)(`div`,{className:`text-xs text-slate-500`,children:`Projection extension`})]})]}),(0,B.jsxs)(`div`,{className:`mt-4 grid gap-2`,children:[(0,B.jsxs)(`a`,{className:`flex items-center gap-2 rounded-md border border-slate-200 px-3 py-2 text-sm font-medium`,href:`https://huangruiteng.github.io/loopx/`,children:[(0,B.jsx)(Dm,{className:`h-4 w-4`}),`LoopX home`]}),(0,B.jsxs)(`a`,{className:`flex items-center gap-2 rounded-md border border-slate-200 px-3 py-2 text-sm font-medium`,href:`https://huangruiteng.github.io/loopx/docs/showcases/index.en.html`,children:[(0,B.jsx)(_m,{className:`h-4 w-4`}),`Public cases`]}),(0,B.jsxs)(`a`,{className:`flex items-center gap-2 rounded-md bg-slate-950 px-3 py-2 text-sm font-medium text-white`,href:`/chat/developers/projections/`,children:[(0,B.jsx)(fm,{className:`h-4 w-4`}),`Developer cockpit`]})]}),(0,B.jsxs)(`div`,{className:`mt-5 space-y-2 rounded-md border border-emerald-200 bg-emerald-50 p-3 text-xs leading-5 text-emerald-950`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,B.jsx)(KC,{variant:`success`,children:`read-only`}),(0,B.jsx)(KC,{variant:`neutral`,children:`public fixtures`})]}),(0,B.jsx)(`p`,{children:`This route uses static public contracts only; live status feeds, registry files, and browser write APIs stay outside the cockpit.`})]})]}),(0,B.jsxs)(`section`,{className:`space-y-4`,children:[(0,B.jsx)(`div`,{className:`rounded-lg border border-slate-200 bg-white px-5 py-5 shadow-sm`,children:(0,B.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-4`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,B.jsx)(KC,{variant:`info`,children:`developers/projections`}),(0,B.jsx)(KC,{variant:`success`,children:`public-safe`}),(0,B.jsx)(KC,{variant:`neutral`,children:`no browser writes`})]}),(0,B.jsx)(`h1`,{className:`mt-3 text-3xl font-semibold tracking-normal text-slate-950`,children:`LoopX Projection Developer Cockpit`}),(0,B.jsx)(`p`,{className:`mt-2 max-w-3xl text-sm leading-6 text-slate-600`,children:`A read-only contributor workbench for adding dashboard/frontstage projections without reverse-engineering the large operator page.`})]}),(0,B.jsxs)(`div`,{className:`grid min-w-[260px] gap-2 text-sm`,children:[(0,B.jsxs)(`div`,{className:`rounded-md border border-slate-200 bg-slate-50 px-3 py-2`,children:[(0,B.jsx)(`div`,{className:`text-[11px] font-semibold uppercase tracking-normal text-slate-500`,children:`Source of truth`}),(0,B.jsx)(`div`,{className:`mt-1 font-semibold text-slate-950`,children:`status contract + compact fixtures`})]}),(0,B.jsxs)(`div`,{className:`rounded-md border border-slate-200 bg-slate-50 px-3 py-2`,children:[(0,B.jsx)(`div`,{className:`text-[11px] font-semibold uppercase tracking-normal text-slate-500`,children:`Boundary`}),(0,B.jsx)(`div`,{className:`mt-1 font-semibold text-slate-950`,children:`read-only extension surface`})]})]})]})}),(0,B.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-2`,children:[(0,B.jsx)($C,{}),(0,B.jsx)(ew,{})]}),(0,B.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[minmax(0,1fr)_420px]`,children:[(0,B.jsx)(tw,{}),(0,B.jsx)(nw,{})]}),(0,B.jsx)(rw,{}),(0,B.jsx)(QC,{icon:Xm,title:`Extension Boundary`,children:(0,B.jsxs)(`div`,{className:`grid gap-3 p-4 md:grid-cols-3`,"data-testid":`developer-extension-boundary`,children:[(0,B.jsxs)(`div`,{className:`rounded-md border border-emerald-200 bg-emerald-50 px-3 py-3`,children:[(0,B.jsx)(`div`,{className:`text-sm font-semibold text-slate-950`,children:`Allowed`}),(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600`,children:`Versioned parser defaults, public fixtures, read-only route panels, and focused smoke assertions.`})]}),(0,B.jsxs)(`div`,{className:`rounded-md border border-amber-200 bg-amber-50 px-3 py-3`,children:[(0,B.jsx)(`div`,{className:`text-sm font-semibold text-slate-950`,children:`Review`}),(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600`,children:`New dashboard dependencies, status contract fields, loopback capability display, and browser-visible workflows.`})]}),(0,B.jsxs)(`div`,{className:`rounded-md border border-rose-200 bg-rose-50 px-3 py-3`,children:[(0,B.jsx)(`div`,{className:`text-sm font-semibold text-slate-950`,children:`Stop`}),(0,B.jsx)(`p`,{className:`mt-2 text-sm leading-6 text-slate-600`,children:`Credentials, private registry material, raw logs, transcripts, production actions, or default browser write authority.`})]})]})})]})]})})}var aw=J({value:G().finite(),total:G().finite().positive().optional(),unit:W().optional(),higher_is_better:K()}).passthrough(),ow=yd(W(),G().finite()).default({}),sw=J({outcome_status:W().optional(),failure_class:W(),causal_summary:W(),expectedness:W(),implication:W(),next_probe:W(),confidence:W(),evidence_refs:q(W()).optional()}).passthrough(),cw=J({arm_id:W(),selected_run_id:W().nullable(),score_countable:K(),metrics:yd(W(),aw),effort:ow,insight:sw.nullable().optional()}),lw=J({run_id:W(),case_id:W(),arm_id:W(),arm_role:W(),status:W(),protocol_id:W(),runner_revision:W().optional(),observed_at:W(),metrics:yd(W(),aw),countability:J({integrity_qualified:K(),official_result_present:K(),score_countable:K()}).passthrough(),treatment_fidelity:W(),effort:ow,redacted_insight:sw.nullable().optional(),upload_provenance:J({producer_id:W(),producer_version:W(),observed_at:W(),source_revision:W()}).passthrough()}).passthrough(),uw=J({case_denominator:G().int().nonnegative(),value_sum:G().finite(),value_mean:G().finite().nullable(),value_median:G().finite().nullable(),value_min:G().finite().nullable(),value_max:G().finite().nullable(),case_macro_rate:G().finite().optional(),suite_micro_rate:G().finite().optional(),suite_micro_numerator:G().finite().optional(),suite_micro_denominator:G().finite().positive().optional()}).passthrough(),dw=J({arm_id:W(),arm_role:W(),factor_assignments:yd(W(),W()),protocol_counts:yd(W(),G().int().nonnegative()).default({}),runner_revision_counts:yd(W(),G().int().nonnegative()).default({}),orchestrator_runtime_counts:yd(W(),G().int().nonnegative()).default({}),intended_case_count:G().int().positive(),run_count:G().int().nonnegative(),terminal_run_count:G().int().nonnegative(),selected_score_countable_case_count:G().int().nonnegative(),coverage_rate:G().finite().min(0).max(1),metrics:yd(W(),uw),binary_outcomes:yd(W(),J({success_count:G().int().nonnegative(),case_denominator:G().int().nonnegative(),success_rate:G().finite().min(0).max(1).nullable()})),effort:yd(W(),J({denominator:G().int().nonnegative(),mean:G().finite().nullable(),median:G().finite().nullable()})),failure_class_counts:yd(W(),G().int().nonnegative())}).passthrough(),fw=J({baseline_value:G().finite(),candidate_value:G().finite(),delta:G().finite(),direction:Y([`improved`,`flat`,`regressed`]).optional()}).passthrough(),pw=J({comparison_id:W(),comparison_anchor_run_id:W(),candidate_run_id:W(),candidate_arm_id:W(),primary_metric:W(),matched_pair_countable:X(!0),metric_deltas:yd(W(),fw)}).passthrough(),mw=J({ok:X(!0),schema_version:X(`benchmark_study_dashboard_v0`),benchmark_id:W(),study_id:W(),status:Y([`complete`,`provisional`]),design:J({protocol_id:W(),comparison_protocol_id:W(),baseline_arm_id:W(),case_set:J({case_set_id:W(),case_ids:q(W())}),metric_catalog:q(J({metric_name:W(),role:Y([`primary`,`guardrail`,`supporting`]),unit:W().optional(),higher_is_better:K(),binary:K()})),labels:yd(W(),W())}).passthrough(),campaign:J({intended_case_count:G().int().positive(),intended_arm_count:G().int().positive(),intended_cell_denominator:G().int().positive(),selected_score_countable_cell_count:G().int().nonnegative(),selected_score_countable_coverage_rate:G().finite().min(0).max(1),complete_declared_design_case_count:G().int().nonnegative(),ambiguous_score_countable_cell_count:G().int().nonnegative(),in_flight_run_count:G().int().nonnegative(),matched_pair_countable_count:G().int().nonnegative(),factorial_contrast_count:G().int().nonnegative(),factorial_contrast_countable_count:G().int().nonnegative(),runtime_observation_count:G().int().nonnegative(),runtime_classification_counts:yd(W(),G().int().nonnegative())}),arms:q(dw),contrasts:yd(W(),J({matched_pair_denominator:G().int().nonnegative(),primary_metric_directions:J({improved:G().int().nonnegative(),flat:G().int().nonnegative(),regressed:G().int().nonnegative()}),binary_metric_transitions:yd(W(),J({"0_to_1":G().int().nonnegative(),"1_to_0":G().int().nonnegative(),same:G().int().nonnegative()}))})),cases:q(J({case_id:W(),complete_declared_design:K(),arms:q(cw),eligible_comparisons:q(pw),largest_eligible_primary_contrast:pw.nullable()})),runs:q(lw),authority:J({score_source:W(),matched_comparison_source:W(),factorial_comparison_source:W().nullable(),manifest_changes_scores:X(!1),dashboard_is_execution_authority:X(!1)}),public_boundary:J({raw_task_recorded:X(!1),raw_trajectory_recorded:X(!1),hidden_evaluation_recorded:X(!1),raw_verifier_output_recorded:X(!1),credentials_recorded:X(!1),local_paths_recorded:X(!1)}),write_performed:X(!1),network_access_performed:X(!1)});function hw(e){return mw.parse(e)}function gw(e,t){let n=new URL(t),r=new URL(e||`/benchmark-study.example.json`,n);if(!new Set([`http:`,`https:`]).has(r.protocol))throw Error(`Benchmark dashboard source must use HTTP or HTTPS`);if(r.origin!==n.origin)throw Error(`Benchmark dashboard source must use same-origin local readback`);return r.toString()}var _w=[{id:`campaign`,label:`Campaign`},{id:`arms`,label:`Arms`},{id:`cases`,label:`Cases`},{id:`runs`,label:`Runs`}];function vw(e){return e==null?`—`:`${(e*100).toFixed(e>=.995?0:1)}%`}function yw(e){return e==null?`—`:new Intl.NumberFormat(`en`,{maximumFractionDigits:2,notation:`compact`}).format(e)}function bw(e){if(e==null)return`—`;let t=e/6e4;return t>=120?`${(t/60).toFixed(1)} h`:`${yw(t)} min`}function xw(e){let t=Object.entries(e);return t.length?t.map(([e,t])=>`${e} (${t})`).join(`, `):`—`}function Sw(e){if(!e)return`—`;let t=e.total==null?yw(e.value):`${yw(e.value)}/${yw(e.total)}`;return e.unit?`${t} ${e.unit}`:t}function Cw(e,t){let n=e.metrics[t];return!n||n.case_denominator===0?`—`:n.suite_micro_rate==null?`${yw(n.value_mean)} mean`:`${vw(n.suite_micro_rate)} · ${yw(n.suite_micro_numerator)}/${yw(n.suite_micro_denominator)}`}function ww(e,t){let n=e.largest_eligible_primary_contrast,r=n?.metric_deltas[t];if(!n||!r)return null;let i=r.delta>0?`+`:``;return{direction:r.direction,text:`${n.candidate_arm_id}: ${i}${yw(r.delta)}`}}function Tw({children:e,tone:t=`neutral`}){return(0,B.jsx)(`span`,{className:`benchmark-state benchmark-state-${t}`,children:e})}function Ew({packet:e,primaryMetric:t}){return(0,B.jsxs)(`div`,{className:`benchmark-view-stack`,children:[(0,B.jsxs)(`section`,{"aria-labelledby":`arm-summary-title`,children:[(0,B.jsxs)(`div`,{className:`benchmark-section-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`benchmark-kicker`,children:`ARM SUMMARY`}),(0,B.jsx)(`h2`,{id:`arm-summary-title`,children:`Comparable outcomes, denominator first`})]}),(0,B.jsx)(`p`,{children:`Only one score-countable run per declared case × arm cell is selected.`})]}),(0,B.jsx)(`div`,{className:`benchmark-arm-grid`,children:e.arms.map(e=>{let n=Object.values(e.binary_outcomes)[0];return(0,B.jsxs)(`article`,{className:`benchmark-arm-card`,children:[(0,B.jsxs)(`div`,{className:`benchmark-card-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`span`,{className:`benchmark-mono`,children:e.arm_role}),(0,B.jsx)(`h3`,{children:e.arm_id})]}),(0,B.jsx)(Tw,{tone:e.coverage_rate===1?`success`:`warning`,children:e.coverage_rate===1?`Complete`:`Provisional`})]}),(0,B.jsxs)(`dl`,{className:`benchmark-stat-list`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`dt`,{children:[`Primary · `,t]}),(0,B.jsx)(`dd`,{children:Cw(e,t)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Score-countable coverage`}),(0,B.jsxs)(`dd`,{children:[e.selected_score_countable_case_count,`/`,e.intended_case_count]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Binary success`}),(0,B.jsx)(`dd`,{children:n?`${n.success_count}/${n.case_denominator}`:`Not declared`})]})]})]},e.arm_id)})})]}),(0,B.jsxs)(`section`,{"aria-labelledby":`contrast-title`,children:[(0,B.jsxs)(`div`,{className:`benchmark-section-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`benchmark-kicker`,children:`MATCHED CONTRASTS`}),(0,B.jsx)(`h2`,{id:`contrast-title`,children:`Direction counts on eligible pairs`})]}),(0,B.jsx)(`p`,{children:`Raw run volume is never used as a comparison denominator.`})]}),(0,B.jsx)(`div`,{className:`benchmark-table-shell`,children:(0,B.jsxs)(`table`,{children:[(0,B.jsx)(`thead`,{children:(0,B.jsxs)(`tr`,{children:[(0,B.jsx)(`th`,{children:`Candidate arm`}),(0,B.jsx)(`th`,{children:`Matched denominator`}),(0,B.jsx)(`th`,{children:`Improved`}),(0,B.jsx)(`th`,{children:`Flat`}),(0,B.jsx)(`th`,{children:`Regressed`}),(0,B.jsx)(`th`,{children:`Binary transitions`})]})}),(0,B.jsxs)(`tbody`,{children:[Object.entries(e.contrasts).map(([e,t])=>(0,B.jsxs)(`tr`,{children:[(0,B.jsx)(`td`,{children:(0,B.jsx)(`strong`,{children:e})}),(0,B.jsx)(`td`,{children:t.matched_pair_denominator}),(0,B.jsx)(`td`,{className:`benchmark-positive`,children:t.primary_metric_directions.improved}),(0,B.jsx)(`td`,{children:t.primary_metric_directions.flat}),(0,B.jsx)(`td`,{className:`benchmark-negative`,children:t.primary_metric_directions.regressed}),(0,B.jsx)(`td`,{children:Object.entries(t.binary_metric_transitions).map(([e,t])=>`${e}: 0→1 ${t[`0_to_1`]}, 1→0 ${t[`1_to_0`]}, same ${t.same}`).join(` · `)||`—`})]},e)),Object.keys(e.contrasts).length===0&&(0,B.jsx)(`tr`,{children:(0,B.jsx)(`td`,{colSpan:6,children:`No matched comparisons are countable yet.`})})]})]})})]}),(0,B.jsxs)(`section`,{"aria-labelledby":`runtime-health-title`,children:[(0,B.jsxs)(`div`,{className:`benchmark-section-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`benchmark-kicker`,children:`RUNTIME HEALTH`}),(0,B.jsx)(`h2`,{id:`runtime-health-title`,children:`Qualified observations, without execution authority`})]}),(0,B.jsxs)(`p`,{children:[e.campaign.runtime_observation_count,` public-safe runtime observations.`]})]}),(0,B.jsxs)(`div`,{className:`benchmark-runtime-list`,children:[Object.entries(e.campaign.runtime_classification_counts).map(([e,t])=>(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`span`,{children:e}),(0,B.jsx)(`strong`,{children:t})]},e)),e.campaign.runtime_observation_count===0&&(0,B.jsx)(`p`,{className:`benchmark-muted`,children:`No runtime observations uploaded.`})]})]})]})}function Dw({packet:e}){return(0,B.jsx)(`div`,{className:`benchmark-detail-grid`,children:e.arms.map(t=>(0,B.jsxs)(`article`,{className:`benchmark-detail-card`,children:[(0,B.jsxs)(`div`,{className:`benchmark-card-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`span`,{className:`benchmark-mono`,children:t.arm_role}),(0,B.jsx)(`h2`,{children:t.arm_id})]}),(0,B.jsxs)(Tw,{tone:t.coverage_rate===1?`success`:`warning`,children:[t.selected_score_countable_case_count,`/`,t.intended_case_count,` countable`]})]}),(0,B.jsx)(`div`,{className:`benchmark-factor-row`,children:Object.entries(t.factor_assignments).map(([e,t])=>(0,B.jsxs)(`span`,{children:[e,`: `,(0,B.jsx)(`strong`,{children:t})]},e))}),(0,B.jsxs)(`dl`,{className:`benchmark-stat-list`,children:[e.design.metric_catalog.map(e=>(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`dt`,{children:[e.role,` · `,e.metric_name]}),(0,B.jsx)(`dd`,{children:Cw(t,e.metric_name)})]},e.metric_name)),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Runs terminal / observed`}),(0,B.jsxs)(`dd`,{children:[t.terminal_run_count,`/`,t.run_count]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Median duration`}),(0,B.jsx)(`dd`,{children:bw(t.effort.duration_ms?.median)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Protocols`}),(0,B.jsx)(`dd`,{children:xw(t.protocol_counts)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Runner revisions`}),(0,B.jsx)(`dd`,{children:xw(t.runner_revision_counts)})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Orchestrator runtimes`}),(0,B.jsxs)(`dd`,{children:[Object.keys(t.orchestrator_runtime_counts).length||0,` distinct`]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Failure classes`}),(0,B.jsx)(`dd`,{children:xw(t.failure_class_counts)})]})]})]},t.arm_id))})}function Ow({packet:e,primaryMetric:t,onOpenRun:n}){return(0,B.jsx)(`div`,{className:`benchmark-table-shell benchmark-wide-table`,children:(0,B.jsxs)(`table`,{children:[(0,B.jsx)(`thead`,{children:(0,B.jsxs)(`tr`,{children:[(0,B.jsx)(`th`,{children:`Case`}),(0,B.jsx)(`th`,{children:`Design status`}),(0,B.jsx)(`th`,{children:`Largest eligible delta`}),e.arms.map(e=>(0,B.jsx)(`th`,{children:e.arm_id},e.arm_id))]})}),(0,B.jsx)(`tbody`,{children:e.cases.map(r=>{let i=ww(r,t);return(0,B.jsxs)(`tr`,{children:[(0,B.jsx)(`td`,{children:(0,B.jsx)(`strong`,{children:r.case_id})}),(0,B.jsx)(`td`,{children:(0,B.jsx)(Tw,{tone:r.complete_declared_design?`success`:`warning`,children:r.complete_declared_design?`Complete`:`Provisional`})}),(0,B.jsx)(`td`,{className:i?.direction===`improved`?`benchmark-positive`:i?.direction===`regressed`?`benchmark-negative`:void 0,children:i?.text??`—`}),r.arms.map(r=>(0,B.jsx)(`td`,{children:r.selected_run_id&&r.score_countable?(0,B.jsxs)(`button`,{className:`benchmark-cell-link`,onClick:()=>n(r.selected_run_id),type:`button`,children:[(0,B.jsxs)(`span`,{children:[t,`: `,Sw(r.metrics[t])]}),e.design.metric_catalog.filter(e=>e.metric_name!==t).map(e=>(0,B.jsxs)(`small`,{className:`benchmark-cell-metric`,children:[e.metric_name,`: `,Sw(r.metrics[e.metric_name])]},e.metric_name)),(0,B.jsxs)(`small`,{children:[`Countable · `,bw(r.effort.duration_ms),` `,(0,B.jsx)(Zp,{"aria-hidden":`true`,size:12})]}),r.insight&&(0,B.jsxs)(`small`,{children:[r.insight.failure_class,` · `,r.insight.confidence]})]}):(0,B.jsx)(`span`,{className:`benchmark-muted`,children:`Not countable`})},r.arm_id))]},r.case_id)})})]})})}function kw({run:e,packet:t}){return(0,B.jsxs)(`aside`,{"aria-label":`Run detail for ${e.run_id}`,className:`benchmark-run-detail`,children:[(0,B.jsxs)(`div`,{className:`benchmark-card-heading`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`span`,{className:`benchmark-mono`,children:`RUN DETAIL`}),(0,B.jsx)(`h2`,{children:e.run_id})]}),(0,B.jsx)(Tw,{tone:e.countability.score_countable?`success`:`warning`,children:e.countability.score_countable?`Score-countable`:`Diagnostic only`})]}),(0,B.jsxs)(`dl`,{className:`benchmark-stat-list benchmark-run-facts`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Case / arm`}),(0,B.jsxs)(`dd`,{children:[e.case_id,` · `,e.arm_id]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Lifecycle`}),(0,B.jsxs)(`dd`,{children:[e.status,` · `,e.observed_at]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Protocol`}),(0,B.jsx)(`dd`,{children:e.protocol_id})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Qualification`}),(0,B.jsxs)(`dd`,{children:[`Integrity `,e.countability.integrity_qualified?`qualified`:`not qualified`,` · result `,e.countability.official_result_present?`present`:`missing`]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Treatment fidelity`}),(0,B.jsx)(`dd`,{children:e.treatment_fidelity})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Effort`}),(0,B.jsxs)(`dd`,{children:[bw(e.effort.duration_ms),` · `,yw(e.effort.agent_steps),` steps · `,yw(e.effort.token_count),` tokens`]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Runner revision`}),(0,B.jsx)(`dd`,{children:e.runner_revision??`—`})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Upload provenance`}),(0,B.jsxs)(`dd`,{children:[e.upload_provenance.producer_id,` · `,e.upload_provenance.source_revision]})]})]}),(0,B.jsx)(`div`,{className:`benchmark-run-metrics`,children:t.design.metric_catalog.map(t=>(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`span`,{children:t.metric_name}),(0,B.jsx)(`strong`,{children:Sw(e.metrics[t.metric_name])})]},t.metric_name))}),e.redacted_insight&&(0,B.jsxs)(`div`,{className:`benchmark-insight`,children:[(0,B.jsxs)(`span`,{className:`benchmark-mono`,children:[`REDACTED CASE INSIGHT · `,e.redacted_insight.confidence]}),(0,B.jsx)(`p`,{children:e.redacted_insight.causal_summary}),(0,B.jsxs)(`small`,{children:[`Implication: `,e.redacted_insight.implication]}),(0,B.jsx)(`br`,{}),(0,B.jsxs)(`small`,{children:[`Next probe: `,e.redacted_insight.next_probe]}),!!e.redacted_insight.evidence_refs?.length&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`br`,{}),(0,B.jsxs)(`small`,{children:[`Evidence: `,e.redacted_insight.evidence_refs.join(`, `)]})]})]})]})}function Aw({packet:e,selectedRunId:t,onSelectRun:n}){let r=e.runs.find(e=>e.run_id===t)??e.runs[0];return(0,B.jsxs)(`div`,{className:`benchmark-runs-layout`,children:[(0,B.jsx)(`div`,{className:`benchmark-table-shell`,children:(0,B.jsxs)(`table`,{children:[(0,B.jsx)(`thead`,{children:(0,B.jsxs)(`tr`,{children:[(0,B.jsx)(`th`,{children:`Run`}),(0,B.jsx)(`th`,{children:`Case`}),(0,B.jsx)(`th`,{children:`Arm`}),(0,B.jsx)(`th`,{children:`Status`}),(0,B.jsx)(`th`,{children:`Countability`})]})}),(0,B.jsx)(`tbody`,{children:e.runs.map(e=>(0,B.jsxs)(`tr`,{"aria-selected":e.run_id===r?.run_id,children:[(0,B.jsx)(`td`,{children:(0,B.jsx)(`button`,{className:`benchmark-run-link`,onClick:()=>n(e.run_id),type:`button`,children:e.run_id})}),(0,B.jsx)(`td`,{children:e.case_id}),(0,B.jsx)(`td`,{children:e.arm_id}),(0,B.jsx)(`td`,{children:e.status}),(0,B.jsx)(`td`,{children:e.countability.score_countable?`Score-countable`:`Diagnostic only`})]},e.run_id))})]})}),r&&(0,B.jsx)(kw,{packet:e,run:r})]})}function jw(){let e=Kw.useSearch(),t=Kw.useNavigate(),[n,r]=(0,z.useState)(null),[i,a]=(0,z.useState)(null),[o,s]=(0,z.useState)(0),c=(0,z.useMemo)(()=>{let t=e.dashboardUrl||`/chat/benchmark-study.example.json`;try{return{url:gw(t,window.location.href),error:null}}catch(e){return{url:``,error:e instanceof Error?e.message:`Invalid dashboard source`}}},[e.dashboardUrl]);if((0,z.useEffect)(()=>{let e=!0;return r(null),a(null),c.error?(a(c.error),()=>{e=!1}):(fetch(c.url,{cache:`no-store`}).then(async e=>{if(!e.ok)throw Error(`HTTP ${e.status} while loading the dashboard packet`);return hw(await e.json())}).then(t=>{e&&r(t)}).catch(t=>{e&&a(t instanceof Error?t.message:`Unable to load dashboard packet`)}),()=>{e=!1})},[o,c]),(0,z.useEffect)(()=>{n&&(document.title=`${n.design.labels.title??n.study_id} · LoopX Benchmark`)},[n]),i)return(0,B.jsxs)(`main`,{className:`benchmark-page benchmark-loading`,children:[(0,B.jsx)(lm,{"aria-hidden":`true`}),(0,B.jsx)(`h1`,{children:`Dashboard packet unavailable`}),(0,B.jsx)(`p`,{children:i}),(0,B.jsxs)(`button`,{onClick:()=>s(e=>e+1),type:`button`,children:[(0,B.jsx)(Hm,{"aria-hidden":`true`,size:16}),` Retry readback`]})]});if(!n)return(0,B.jsxs)(`main`,{"aria-busy":`true`,className:`benchmark-page benchmark-loading`,children:[(0,B.jsx)(Jp,{"aria-hidden":`true`}),(0,B.jsx)(`h1`,{children:`Reading benchmark study`}),(0,B.jsx)(`p`,{children:`Validating the public-safe dashboard packet…`})]});let l=n.design.metric_catalog.find(e=>e.role===`primary`)?.metric_name??`primary`,u=(n,r=e.runId)=>t({search:e=>({...e,view:n,runId:r})}),d=new URL(c.url).pathname;return(0,B.jsxs)(`main`,{className:`benchmark-page`,children:[(0,B.jsxs)(`header`,{className:`benchmark-hero`,children:[(0,B.jsxs)(`div`,{className:`benchmark-hero-topline`,children:[(0,B.jsx)(`a`,{className:`benchmark-wordmark`,href:`/chat/`,children:`LoopX`}),(0,B.jsxs)(`div`,{className:`benchmark-readonly`,children:[(0,B.jsx)(Xm,{"aria-hidden":`true`,size:15}),` Derived read-only projection`]})]}),(0,B.jsxs)(`div`,{className:`benchmark-hero-grid`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`p`,{className:`benchmark-kicker`,children:[`BENCHMARK STUDY / `,n.benchmark_id]}),(0,B.jsxs)(`div`,{className:`benchmark-title-row`,children:[(0,B.jsx)(`h1`,{children:n.design.labels.title??n.study_id}),(0,B.jsx)(Tw,{tone:n.status===`complete`?`success`:`warning`,children:n.status})]}),(0,B.jsx)(`p`,{className:`benchmark-lead`,children:`One declared study, explicit denominators, and the same countability rules from campaign summary to exact run.`})]}),(0,B.jsxs)(`dl`,{className:`benchmark-identity`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Study`}),(0,B.jsx)(`dd`,{children:n.study_id})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Protocol`}),(0,B.jsx)(`dd`,{children:n.design.protocol_id})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`dt`,{children:`Case set`}),(0,B.jsx)(`dd`,{children:n.design.case_set.case_set_id})]})]})]}),(0,B.jsxs)(`div`,{className:`benchmark-kpi-grid`,children:[(0,B.jsxs)(`article`,{children:[(0,B.jsx)(mm,{"aria-hidden":`true`}),(0,B.jsx)(`span`,{children:`Score-countable cells`}),(0,B.jsxs)(`strong`,{children:[n.campaign.selected_score_countable_cell_count,(0,B.jsxs)(`small`,{children:[` / `,n.campaign.intended_cell_denominator]})]}),(0,B.jsxs)(`p`,{children:[vw(n.campaign.selected_score_countable_coverage_rate),` declared coverage`]})]}),(0,B.jsxs)(`article`,{children:[(0,B.jsx)(um,{"aria-hidden":`true`}),(0,B.jsx)(`span`,{children:`Complete designs`}),(0,B.jsxs)(`strong`,{children:[n.campaign.complete_declared_design_case_count,(0,B.jsxs)(`small`,{children:[` / `,n.campaign.intended_case_count]})]}),(0,B.jsx)(`p`,{children:`Cases with every declared arm`})]}),(0,B.jsxs)(`article`,{children:[(0,B.jsx)(Zp,{"aria-hidden":`true`}),(0,B.jsx)(`span`,{children:`Matched comparisons`}),(0,B.jsx)(`strong`,{children:n.campaign.matched_pair_countable_count}),(0,B.jsx)(`p`,{children:`Eligible pairs only`})]}),(0,B.jsxs)(`article`,{children:[(0,B.jsx)(Jp,{"aria-hidden":`true`}),(0,B.jsx)(`span`,{children:`In flight`}),(0,B.jsx)(`strong`,{children:n.campaign.in_flight_run_count}),(0,B.jsx)(`p`,{children:n.status===`provisional`?`Coverage remains provisional`:`Declared coverage complete`})]})]})]}),(0,B.jsxs)(`nav`,{"aria-label":`Benchmark dashboard views`,className:`benchmark-tabs`,children:[_w.map(t=>(0,B.jsx)(`button`,{"aria-current":e.view===t.id?`page`:void 0,onClick:()=>u(t.id),type:`button`,children:t.label},t.id)),(0,B.jsxs)(`button`,{className:`benchmark-refresh`,onClick:()=>s(e=>e+1),type:`button`,children:[(0,B.jsx)(Hm,{"aria-hidden":`true`,size:14}),` Refresh local readback`]})]}),(0,B.jsxs)(`div`,{className:`benchmark-content`,children:[e.view===`campaign`&&(0,B.jsx)(Ew,{packet:n,primaryMetric:l}),e.view===`arms`&&(0,B.jsx)(Dw,{packet:n}),e.view===`cases`&&(0,B.jsx)(Ow,{onOpenRun:e=>u(`runs`,e),packet:n,primaryMetric:l}),e.view===`runs`&&(0,B.jsx)(Aw,{onSelectRun:e=>u(`runs`,e),packet:n,selectedRunId:e.runId})]}),(0,B.jsxs)(`footer`,{className:`benchmark-footer`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(Xm,{"aria-hidden":`true`,size:16}),(0,B.jsxs)(`span`,{children:[`Scores: `,n.authority.score_source]}),(0,B.jsx)(`span`,{children:`Dashboard cannot launch, grade, or mutate runs.`})]}),(0,B.jsxs)(`code`,{title:d,children:[`local`,d]})]})]})}var Mw=J({goalId:W().optional().default(``),statusUrl:W().optional().default(``)}),Nw=J({goalId:W().optional().default(``),mode:Y([`showcase`,`developer`,`ops`]).optional().default(`showcase`),statusUrl:W().optional().default(``),todoLane:Y([`all`,`user`,`agent`]).optional().default(`all`),todoQuery:W().optional().default(``)}),Pw=Nw.omit({mode:!0}),Fw=J({dashboardUrl:W().optional().default(``),view:Y([`campaign`,`arms`,`cases`,`runs`]).optional().default(`campaign`),runId:W().optional().default(``)});function Iw(){let e=`https://huangruiteng.github.io/loopx/docs/showcases/index.en.html`;return(0,z.useEffect)(()=>{window.location.replace(e)},[]),(0,B.jsx)(`a`,{href:e,children:`Open LoopX cases / 浏览案例`})}function Lw({goalId:e,statusUrl:t}){let n=t?lh(t,window.location.href):null;return n?.error?(0,B.jsx)(`main`,{role:`alert`,children:n.error}):(0,B.jsx)(ii,{replace:!0,to:`/`,search:{goalId:e,statusUrl:t}})}function Rw(){let e=Hw.useSearch();return e.mode===`ops`?(0,B.jsx)(Lw,{...e}):e.mode===`developer`?(0,B.jsx)(ii,{replace:!0,to:`/developers/projections`}):(0,B.jsx)(Iw,{})}function zw(){return(0,B.jsx)(Lw,{...Uw.useSearch()})}var Bw=Ci({component:()=>(0,B.jsx)(Mi,{}),errorComponent:()=>(0,B.jsxs)(`main`,{role:`alert`,className:`p-8`,children:[(0,B.jsx)(`h1`,{children:`页面暂时无法显示 / Page unavailable`}),(0,B.jsx)(`p`,{children:`请重新加载页面;这不会执行任务。 / Reloading does not execute tasks.`}),(0,B.jsx)(`button`,{type:`button`,onClick:()=>window.location.reload(),children:`重新加载 / Reload`})]})}),Vw=xi({getParentRoute:()=>Bw,path:`/`,validateSearch:e=>Mw.parse(e),component:WC}),Hw=xi({getParentRoute:()=>Bw,path:`/frontstage`,validateSearch:e=>Nw.parse(e),component:Rw}),Uw=xi({getParentRoute:()=>Bw,path:`/deprecated/frontstage/ops`,validateSearch:e=>Pw.parse(e),component:zw}),Ww=xi({getParentRoute:()=>Bw,path:`/frontstage/developer`,component:()=>(0,B.jsx)(ii,{replace:!0,to:`/developers/projections`})}),Gw=xi({getParentRoute:()=>Bw,path:`/developers/projections`,component:iw}),Kw=xi({getParentRoute:()=>Bw,path:`/benchmarks/study`,validateSearch:e=>Fw.parse(e),component:jw}),qw=Bw.addChildren([Vw,Hw,Uw,Ww,Gw,Kw]);function Jw(e){return!e||e===`/`||e===`./`?`/`:(e.startsWith(`/`)?e:`/${e}`).replace(/\/+$/,``)||`/`}var Yw=Li({routeTree:qw,basepath:Jw(`/chat/`),trailingSlash:`preserve`}),Xw=document.getElementById(`root`);if(!Xw)throw Error(`Root element not found`);var Zw=new R({defaultOptions:{queries:{refetchOnWindowFocus:!1,retry:1,staleTime:1e4}}});(0,Vi.createRoot)(Xw).render((0,B.jsx)(Pe,{client:Zw,children:(0,B.jsx)(qi,{children:(0,B.jsx)(Bi,{router:Yw})})})); \ No newline at end of file diff --git a/loopx/web/chat/assets/index-Cc8RYr9k.css b/loopx/web/chat/assets/index-Cc8RYr9k.css new file mode 100644 index 000000000..a1929eaf8 --- /dev/null +++ b/loopx/web/chat/assets/index-Cc8RYr9k.css @@ -0,0 +1 @@ +.personal-workspace-shell{--pw-bg:#fbfaf7;--pw-card:#fff;--pw-line:#eceae3;--pw-line-strong:#e0ddd4;--pw-muted:#82889a;--pw-faint:#aab0bf;--pw-text:#23262e;--pw-blue:#2f66e9;--pw-blue-ink:#2456c8;--pw-blue-soft:#ebf1fe;--pw-amber:#a86a12;--pw-amber-bg:#fbf2df;--pw-red:#c2402f;--pw-red-bg:#fcecea;--pw-green:#2e7d5b;--pw-green-bg:#e6f3ec;background:var(--pw-bg);min-height:100vh;color:var(--pw-text);grid-template-columns:272px minmax(520px,1fr);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;display:grid}.personal-workspace-shell.has-drawer{grid-template-columns:256px minmax(500px,1fr) minmax(340px,404px)}.personal-workspace-shell.has-task-inspector{grid-template-columns:minmax(520px,1fr) minmax(520px,50vw)}.personal-workspace-shell.has-task-inspector .personal-workspace-sidebar{display:none}.personal-workspace-shell.has-task-inspector.is-task-inspector-full{grid-template-columns:minmax(600px,1fr)}.personal-workspace-shell.is-task-inspector-full .personal-workspace-main{display:none}.personal-workspace-sidebar{border-right:1px solid var(--pw-line);background:#f5f3ee;min-width:0}.personal-workspace-sidebar-inner{width:100%;height:100%}.personal-sr-only{clip:rect(0, 0, 0, 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.personal-workspace-main{min-width:0}.personal-workspace-drawer{border-left:1px solid var(--pw-line);background:#fff;min-width:0;position:relative;box-shadow:-14px 0 36px #1e1c140d}.personal-workspace-drawer[data-drawer-mode=inspector]{z-index:3;width:auto;position:relative;box-shadow:-8px 0 24px #1e284014}.personal-workspace-drawer[data-drawer-mode=inspector-full]{min-width:0;box-shadow:none;grid-column:1}.personal-sidebar-backdrop{display:none}.personal-workspace-shell :focus-visible:not(textarea):not(input){outline-offset:2px;outline:2px solid #5f87ed}.personal-goal-directory{flex-direction:column;width:100%;height:100vh;display:flex;position:sticky;top:0}.personal-sidebar-brand{border-bottom:1px solid var(--pw-line);align-items:center;gap:11px;height:74px;padding:0 18px;display:flex}.personal-sidebar-brand>span:last-child{gap:1px;display:grid}.personal-sidebar-brand strong{letter-spacing:.01em;font-size:16px}.personal-sidebar-brand small{color:var(--pw-muted);font-size:11px}.personal-brand-mark,.personal-manager-icon{color:#fff;background:linear-gradient(135deg,#2f66e9,#6f9bff);border-radius:10px;place-items:center;display:grid;box-shadow:0 2px 6px #2f66e947}.personal-brand-mark{width:34px;height:34px}.personal-manager-icon{width:30px;height:30px;color:var(--pw-blue-ink);background:var(--pw-blue-soft);box-shadow:none}.personal-status-source{border-bottom:1px solid var(--pw-line);gap:7px;padding:12px 14px;display:grid;position:relative}.personal-status-source>header{color:var(--pw-faint);letter-spacing:.08em;text-transform:uppercase;justify-content:space-between;align-items:center;padding:0 3px;font-size:10px;font-weight:700;display:flex}.personal-status-source>header button,.personal-status-source-meta button,.personal-status-source-form header button{width:25px;height:25px;color:var(--pw-muted);cursor:pointer;background:0 0;border:0;border-radius:7px;place-items:center;padding:0;display:grid}.personal-status-source>header button:hover,.personal-status-source-meta button:hover,.personal-status-source-form header button:hover{color:var(--pw-text);background:#fff;box-shadow:0 1px 3px #1e1c141a}.personal-status-source-select{width:100%}.personal-status-source-meta{min-width:0;color:var(--pw-muted);align-items:center;gap:7px;padding:0 3px;font-size:10.5px;display:flex}.personal-status-source-meta>span{white-space:nowrap;align-items:center;gap:5px;display:inline-flex}.personal-status-source-meta>span i{background:#3fbf82;border-radius:50%;width:6px;height:6px}.personal-status-source-meta>span.is-loading i{background:#e5a33d}.personal-status-source-meta>span.is-error i{background:#dd5b47}.personal-status-source-meta small{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.personal-status-source-meta button{width:22px;height:22px;color:var(--pw-faint);margin-left:auto}.personal-status-source-error{color:var(--pw-red);overflow-wrap:anywhere;margin:0 3px;font-size:10px;line-height:1.4}.personal-status-source-form{z-index:12;border:1px solid var(--pw-line-strong);background:#fff;border-radius:12px;gap:10px;padding:13px;display:grid;position:absolute;top:calc(100% - 4px);left:12px;right:12px;box-shadow:0 12px 32px #1e1c1424}.personal-status-source-form>header{justify-content:space-between;align-items:center;font-size:12.5px;display:flex}.personal-status-source-form label{color:var(--pw-muted);gap:5px;font-size:10.5px;display:grid}.personal-status-source-form input,.personal-status-source-form select{border:1px solid var(--pw-line-strong);width:100%;min-width:0;height:34px;color:var(--pw-text);background:#fff;border-radius:8px;outline:0;padding:0 9px;font:12px/1.2 inherit}.personal-status-source-form input:focus,.personal-status-source-form select:focus{border-color:#8aa7ed;box-shadow:0 0 0 2px #2f66e91a}.personal-status-source-form input:disabled,.personal-status-source-form select:disabled{color:var(--pw-faint);background:#f6f5f2}.personal-status-source-form p{color:var(--pw-muted);overflow-wrap:anywhere;margin:0;font-size:10px;line-height:1.45}.personal-status-source-form p.is-error{color:var(--pw-red)}.personal-status-source-form code{font:9.5px/1.5 SF Mono,ui-monospace,Menlo,Consolas,monospace}.personal-status-source-add{background:var(--pw-blue);color:#fff;cursor:pointer;border:0;border-radius:8px;min-height:34px;font-size:11.5px;font-weight:650}.personal-status-source-add:hover{background:var(--pw-blue-ink)}.personal-status-source-add:disabled{cursor:not-allowed;opacity:.48}.personal-status-source-modes{background:#f2f1ed;border-radius:9px;grid-template-columns:1fr 1fr;gap:3px;padding:3px;display:grid}.personal-status-source-modes button{min-height:28px;color:var(--pw-muted);cursor:pointer;background:0 0;border:0;border-radius:7px;padding:0 8px;font-size:10.5px;font-weight:650}.personal-status-source-modes button[aria-selected=true]{color:var(--pw-text);background:#fff;box-shadow:0 1px 3px #1e1c141a}.personal-status-source-field-row{grid-template-columns:minmax(0,1fr) 34px;gap:6px;display:grid}.personal-status-source-field-row>button{border:1px solid var(--pw-line-strong);width:34px;height:34px;color:var(--pw-muted);cursor:pointer;background:#fff;border-radius:8px;place-items:center;padding:0;display:grid}.personal-status-source-field-row>button:hover{color:var(--pw-text);background:#f8f7f4}.personal-status-source-field-row>button:disabled{cursor:wait;opacity:.45}.personal-status-source-command{background:#f6f5f2;border-radius:8px;gap:7px;padding:8px 9px;display:grid}.personal-status-source-command code{color:#4e5668;overflow-wrap:anywhere}.personal-status-source-command button{border:1px solid var(--pw-line-strong);min-height:25px;color:var(--pw-blue-ink);cursor:pointer;background:#fff;border-radius:7px;justify-content:center;justify-self:end;align-items:center;gap:5px;padding:0 8px;font-size:10px;font-weight:650;display:inline-flex}.personal-status-source-command button:disabled{color:var(--pw-faint);cursor:not-allowed}.personal-sidebar-nav{flex:1;padding:12px;overflow:auto}.personal-manager-link,.personal-goal-link,.personal-sidebar-utility{width:100%;color:inherit;cursor:pointer;text-align:left;background:0 0;border:0}.personal-manager-link{border-radius:11px;grid-template-columns:30px 1fr auto auto;align-items:center;gap:10px;padding:8px 10px;font-weight:650;display:grid}.personal-manager-link:hover,.personal-goal-link:hover{background:#ffffffa6}.personal-manager-link[aria-current=page],.personal-goal-link[aria-current=page]{background:#fff;box-shadow:0 1px 4px #1e1c141a}.personal-sidebar-count{background:var(--pw-amber-bg);min-width:22px;color:var(--pw-amber);text-align:center;border-radius:99px;padding:2px 7px;font-size:11px;font-weight:650}.personal-sidebar-section-title{color:var(--pw-faint);letter-spacing:.08em;text-transform:uppercase;justify-content:space-between;padding:20px 10px 7px;font-size:11px;font-weight:650;display:flex}.personal-sidebar-title-actions{align-items:center;gap:6px;display:flex}.personal-sidebar-title-actions button{width:28px;height:28px;color:var(--pw-muted);cursor:pointer;background:0 0;border:0;border-radius:7px;place-items:center;padding:0;display:grid}.personal-sidebar-title-actions button:hover{color:var(--pw-text);background:#fff;box-shadow:0 1px 3px #1e1c141f}.personal-goal-list{gap:2px;display:grid}.personal-goal-row{border-radius:11px;grid-template-columns:minmax(0,1fr) 28px 28px;align-items:center;gap:2px;display:grid}.personal-goal-row:has(.personal-goal-move-actions){grid-template-columns:minmax(0,1fr) 52px 28px}.personal-goal-row[data-reorder-goal]>.personal-goal-link{cursor:grab;-webkit-user-select:none;user-select:none}.personal-goal-row[data-reorder-goal]>.personal-goal-link:active{cursor:grabbing}.personal-goal-row.is-drop-before{box-shadow:0 -2px var(--color-link,#0070f3)}.personal-goal-row.is-drop-after{box-shadow:0 2px var(--color-link,#0070f3)}.personal-goal-move-actions{display:flex}.personal-goal-move-actions button{min-width:26px;min-height:44px;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;place-items:center;display:grid}.personal-goal-move-actions button:disabled{opacity:.35;cursor:default}.personal-goal-move-actions button:not(:disabled):hover{background:var(--color-surface-soft,#f2f2f2)}.personal-goal-link{border-radius:11px;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:10px;min-height:44px;padding:7px 5px 7px 10px;display:grid}.personal-goal-lifecycle{width:26px;height:26px;color:var(--pw-faint);cursor:pointer;background:0 0;border:0;border-radius:7px;place-items:center;padding:0;display:grid}.personal-goal-lifecycle:hover{color:var(--pw-text);background:#fff;box-shadow:0 1px 3px #1e1c141f}.personal-goal-lifecycle:disabled{opacity:.45;cursor:wait}.personal-goal-lifecycle.is-pending svg{animation:.8s linear infinite personal-goal-lifecycle-spin}@keyframes personal-goal-lifecycle-spin{to{transform:rotate(360deg)}}.personal-goal-delete:hover{color:var(--pw-danger)}.personal-goal-link-copy{gap:2px;min-width:0;display:grid}.personal-goal-link-copy strong,.personal-goal-link-copy small{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.personal-goal-link-copy strong{font-size:13px;font-weight:600}.personal-goal-link-copy small{color:var(--pw-muted);align-items:center;gap:5px;font-size:11px;display:flex}.personal-goal-state-dot{background:#e8ecf1;border-radius:9px;width:30px;height:30px;position:relative}.personal-goal-state-dot:after{content:"";background:#9aa3b2;border-radius:50%;width:7px;height:7px;position:absolute;bottom:3px;right:3px;box-shadow:0 0 0 2px #ffffffd9}.personal-goal-row:nth-child(5n+1) .personal-goal-state-dot{background:#e3ebfd}.personal-goal-row:nth-child(5n+2) .personal-goal-state-dot{background:#eee7fb}.personal-goal-row:nth-child(5n+3) .personal-goal-state-dot{background:#e2f2e4}.personal-goal-row:nth-child(5n+4) .personal-goal-state-dot{background:#fbf0dc}.personal-goal-row:nth-child(5n) .personal-goal-state-dot{background:#e8ecf1}.personal-goal-state-dot.is-danger:after{background:#dd5b47}.personal-goal-state-dot.is-warning:after{background:#e5a33d}.personal-goal-state-dot.is-info:after{background:#54a5e8}.personal-goal-state-dot.is-success:after{background:#3fae7c}.personal-goal-state-dot.is-quiet:after{background:#b6bcc9}.personal-goal-state-dot.is-stopped:after{background:#8f96a4}.personal-stopped-goals{border-top:1px solid var(--pw-line);margin-top:14px;padding-top:8px}.personal-stopped-goals>summary{min-height:34px;color:var(--pw-muted);cursor:pointer;letter-spacing:.04em;border-radius:9px;grid-template-columns:16px minmax(0,1fr) auto;align-items:center;gap:6px;padding:5px 10px;font-size:11px;font-weight:650;list-style:none;display:grid}.personal-stopped-goals>summary::-webkit-details-marker{display:none}.personal-stopped-goals>summary:hover{color:var(--pw-text);background:#ffffff8c}.personal-stopped-goals>summary>svg:first-child{transition:transform .14s}.personal-stopped-goals[open]>summary>svg:first-child{transform:rotate(180deg)}.personal-stopped-goals>summary small{text-align:center;background:#ebe9e3;border-radius:99px;min-width:22px;padding:2px 6px}.personal-goal-list.is-stopped{opacity:.82;margin-top:2px}.personal-stopped-goal-error{background:var(--pw-red-bg);color:var(--pw-red);border:1px solid #edc1ba;border-radius:9px;gap:7px;margin:6px 8px;padding:9px 10px;font-size:11px;line-height:1.45;display:grid}.personal-stopped-goal-error button{min-height:28px;color:inherit;cursor:pointer;font:inherit;background:0 0;border:1px solid;border-radius:7px;justify-self:start;padding:0 9px;font-weight:650}.personal-priority-dot{background:#aab2bf;border-radius:50%;width:7px;height:7px}.personal-priority-dot.is-high{background:#dd5b47}.personal-priority-dot.is-medium{background:#e5a33d}.personal-priority-dot.is-low{background:#3fae7c}.personal-sidebar-footer{border-top:1px solid var(--pw-line);flex-shrink:0;padding:12px}.personal-update-trigger{width:100%;min-height:44px;color:var(--pw-text);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;gap:8px;padding:0 9px;font-size:13px;display:flex}.personal-update-trigger span{text-align:left;flex:1}.personal-update-trigger:hover{background:var(--pw-card)}.personal-update-trigger:focus-visible{outline-offset:2px;outline:2px solid #0070f3}.personal-update-panel{box-sizing:border-box;width:min(320px,100vw - 24px);max-height:calc(100dvh - 104px);color:var(--pw-text);background:var(--pw-card,#fff);font:inherit;border:1px solid var(--pw-line);border-radius:12px;margin:0;padding:16px;font-size:13px;line-height:1.6;position:fixed;inset:auto auto 80px 12px;overflow-y:auto;box-shadow:0 8px 28px #0000001f}.personal-update-panel header{justify-content:space-between;align-items:center;display:flex}.personal-update-panel button{min-height:44px;color:inherit;background:var(--pw-card,#fff);border:1px solid var(--pw-line);cursor:pointer;border-radius:6px;padding:6px 10px}.personal-update-panel header button{border:0;place-items:center;min-width:44px;display:grid}.personal-update-panel summary{cursor:pointer;align-content:center;min-height:44px}.personal-update-panel p{margin:10px 0}.personal-update-panel label,.personal-update-panel small,.personal-update-panel code{display:block}.personal-update-panel select{width:100%;min-height:44px;color:inherit;background:var(--pw-card);border:1px solid var(--pw-line);border-radius:6px;margin-top:6px}.personal-update-actions{flex-wrap:wrap;gap:8px;display:flex}.personal-update-actions button{border:1px solid var(--pw-line);border-radius:6px;min-height:44px;padding:6px 10px}.personal-update-panel a{text-decoration:underline}.personal-update-panel :focus-visible{outline-offset:2px;outline:2px solid #0070f3}.personal-sidebar-utility{border:1px solid var(--pw-line-strong);background:#fff;border-radius:10px;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;gap:10px;min-height:54px;padding:7px 9px;font-size:13px;display:grid;box-shadow:0 1px 4px #1e1c1412}.personal-sidebar-utility:hover{background:#fff;border-color:#d6d2c8;box-shadow:0 2px 7px #1e1c141a}.personal-sidebar-utility-icon{background:var(--pw-blue-soft);width:32px;height:32px;color:var(--pw-blue-ink);border-radius:9px;place-items:center;display:grid}.personal-sidebar-utility-copy{gap:2px;min-width:0;display:grid}.personal-sidebar-utility-copy strong,.personal-sidebar-utility-copy small{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.personal-sidebar-utility-copy strong{font-size:13px;font-weight:700}.personal-sidebar-utility-copy small{color:var(--pw-muted);font-size:10.5px}.personal-sidebar-utility>svg{color:var(--pw-faint)}.personal-owner-row{min-height:40px;color:var(--pw-muted);border-radius:10px;align-items:center;gap:10px;margin-top:2px;padding:8px 10px;font-size:13px;display:flex}.personal-channel{grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);min-width:0;height:100vh;display:grid}.personal-channel-header{z-index:8;border-bottom:1px solid var(--pw-line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fbfaf7eb;justify-content:space-between;align-items:center;gap:16px;min-height:72px;padding:12px 26px;display:flex;position:relative;overflow:visible}.personal-goal-tabs{background:#f2f1ed;border-radius:10px;align-self:center;align-items:center;gap:2px;margin-left:auto;padding:3px;display:flex}.personal-goal-tabs button{min-height:30px;color:var(--pw-muted);cursor:pointer;background:0 0;border:0;border-radius:8px;padding:0 13px;font-size:12.5px;font-weight:600}.personal-goal-tabs button:hover{color:var(--pw-text)}.personal-goal-tabs button[aria-current=page]{color:var(--pw-text);background:#fff;box-shadow:0 1px 3px #1e1c141a}.personal-channel-title{min-width:0}.personal-channel-title h1{letter-spacing:-.015em;margin:0;font-size:17.5px;font-weight:700;line-height:1.25}.personal-channel-title p{color:var(--pw-muted);white-space:nowrap;text-overflow:ellipsis;margin:3px 0 0;font-size:12px;overflow:hidden}.personal-channel-title p.personal-manager-execution{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.personal-execution-chip{border:1px solid var(--pw-line);background:var(--pw-card);border-radius:999px;flex:none;align-items:center;gap:6px;padding:0 8px;font-family:SFMono-Regular,Consolas,monospace;font-size:11px;line-height:18px;display:inline-flex}.personal-execution-chip-endpoint{color:var(--pw-text);font-weight:650}.personal-execution-chip-kind{color:var(--pw-faint)}.personal-execution-chip-model{color:var(--pw-muted)}.personal-execution-chip.is-unavailable{border-color:var(--pw-amber);background:var(--pw-amber-bg)}.personal-execution-chip.is-unavailable .personal-execution-chip-endpoint,.personal-execution-chip.is-unavailable .personal-execution-chip-kind,.personal-execution-chip.is-unavailable .personal-execution-chip-model{color:var(--pw-amber)}.personal-execution-note{color:var(--pw-muted);text-overflow:ellipsis;font-size:11px;overflow:hidden}.personal-execution-rule-note{color:var(--pw-faint);text-overflow:ellipsis;font-size:11px;overflow:hidden}.personal-workspace-shell[data-pw-theme=brutal] .personal-execution-chip{border-color:#141414;border-radius:4px}.personal-channel-actions{flex:none;align-items:center;gap:9px;display:flex}.personal-goal-tools{flex:none;position:relative}.personal-goal-tools-trigger{background:var(--pw-blue-soft);min-height:38px;color:var(--pw-blue-ink);cursor:pointer;font:inherit;white-space:nowrap;border:1px solid #b8c9f5;border-radius:10px;justify-content:center;align-items:center;gap:7px;padding:0 11px;font-size:12px;font-weight:720;display:inline-flex}.personal-goal-tools-trigger:hover,.personal-goal-tools-trigger[aria-expanded=true]{color:#1948b5;background:#e5edff;border-color:#7f9fe9}.personal-goal-tools-trigger:focus-visible{outline-offset:2px;outline:3px solid #2f66e947}.personal-goal-tools-trigger>svg:last-child{transition:transform .16s}.personal-goal-tools-trigger[aria-expanded=true]>svg:last-child{transform:rotate(180deg)}.personal-goal-tools-menu{z-index:30;border:1px solid var(--pw-line-strong);background:#fff;border-radius:12px;gap:4px;width:min(300px,100vw - 28px);padding:6px;display:grid;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 16px 44px #1e284029}.personal-goal-tools-menu>button{width:100%;min-height:52px;color:var(--pw-text);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:9px;grid-template-columns:34px minmax(0,1fr);align-items:center;gap:9px;padding:7px 9px;display:grid}.personal-goal-tools-menu>button:hover,.personal-goal-tools-menu>button:focus-visible{background:var(--pw-blue-soft);outline:none}.personal-goal-tools-menu>button>svg{color:var(--pw-blue);justify-self:center}.personal-goal-tools-menu>button>span{gap:2px;min-width:0;display:grid}.personal-goal-tools-menu strong{font-size:12.5px}.personal-goal-tools-menu small{color:var(--pw-muted);font-size:10.5px;line-height:1.35}.personal-icon-button.personal-mobile-menu{display:none}.personal-select{min-width:0;position:relative}.personal-select-trigger{border:1px solid var(--pw-line-strong);width:100%;min-height:36px;color:var(--pw-text);cursor:pointer;text-align:left;background:#fff;border-radius:10px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:7px;padding:0 9px;font-size:12px;font-weight:500;line-height:16px;display:grid}.personal-select-trigger:hover,.personal-select-trigger[aria-expanded=true]{border-color:var(--pw-faint)}.personal-select-trigger:focus-visible{border-color:var(--pw-blue);outline-offset:1px;outline:2px solid #0070f329}.personal-select-trigger>svg{color:var(--pw-muted);transition:transform .15s}.personal-select-trigger>svg.is-open{transform:rotate(180deg)}.personal-select-icon{color:var(--pw-muted);place-items:center;display:grid}.personal-select-value{white-space:nowrap;align-items:center;gap:6px;min-width:0;display:flex}.personal-select-value>small{color:var(--pw-faint);flex:none;font-size:10px;font-weight:500}.personal-select-value>span{text-overflow:ellipsis;min-width:0;overflow:hidden}.personal-select-listbox{z-index:50;border:1px solid var(--pw-line);background:#fff;border-radius:12px;min-width:max(100%,204px);max-width:min(300px,80vw);max-height:260px;padding:4px;display:grid;position:absolute;top:calc(100% + 5px);left:0;overflow:auto;box-shadow:0 10px 24px #00000017}.personal-agent-select .personal-select-listbox{min-width:216px;left:auto;right:0}.personal-select-option-wrap{display:grid}.personal-select-group-label{color:var(--pw-faint);letter-spacing:0;text-transform:uppercase;padding:8px 8px 4px;font:500 10px/14px Geist Mono Variable,Geist Mono,monospace}.personal-select-option{width:100%;min-height:32px;color:var(--pw-text);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:8px;grid-template-columns:minmax(0,1fr) 16px;align-items:center;gap:10px;padding:6px 8px;font-size:12px;font-weight:400;line-height:16px;display:grid}.personal-select-option:hover,.personal-select-option:focus-visible{background:#f2f2f2;outline:0}.personal-select-option[aria-selected=true]{font-weight:600}.personal-select-option[disabled]{color:var(--pw-faint);cursor:not-allowed}.personal-select-option>svg{color:var(--pw-text);justify-self:end}.personal-agent-select{width:188px}.personal-read-only-source{border:1px solid var(--pw-line-strong);max-width:190px;height:38px;color:var(--pw-text);white-space:nowrap;background:#fff;border-radius:10px;align-items:center;gap:7px;padding:0 10px;font-size:12.5px;font-weight:600;display:inline-flex;overflow:hidden}.personal-read-only-source>svg{color:var(--pw-muted);flex:none}.personal-read-only-source>small{color:var(--pw-muted);background:#f2f1ed;border-radius:99px;padding:2px 6px;font-size:9.5px;font-weight:650}.personal-live-indicator{color:var(--pw-muted);white-space:nowrap;flex:none;align-items:center;gap:6px;padding:7px 4px;font-size:12px;display:inline-flex}.personal-live-indicator i{background:#3fbf82;border-radius:50%;width:7px;height:7px}.personal-composer-attach{cursor:pointer;border:0;flex:none;place-items:center;display:grid;position:relative;overflow:hidden}.personal-composer-attach:disabled{cursor:not-allowed;opacity:.45}.personal-composer-file-input{opacity:0;pointer-events:none;width:1px;height:1px;position:fixed;overflow:hidden}.personal-action-feedback{border:1px solid var(--pw-line);background:var(--pw-blue-soft);color:var(--pw-blue-ink);border-radius:10px;justify-content:space-between;align-items:center;gap:12px;margin:0 0 8px;padding:9px 12px;font-size:13px;font-weight:650;display:flex}.personal-action-feedback button{color:inherit;cursor:pointer;background:0 0;border:0;place-items:center;display:grid}.personal-refresh-control{flex:none;align-items:center;gap:6px;display:inline-flex}.personal-refresh-control small{color:var(--pw-muted);white-space:nowrap;font-size:11px}.personal-refresh-control.is-error small{color:var(--pw-danger)}.personal-icon-button{border:1px solid var(--pw-line);width:36px;min-width:36px;height:36px;min-height:36px;color:var(--pw-muted);cursor:pointer;background:#fff;border-radius:10px;flex:0 0 36px;place-items:center;padding:0;display:inline-grid}.personal-icon-button:hover{border-color:var(--pw-line-strong);color:var(--pw-text)}.personal-channel-scroll{min-width:0;min-height:0;padding:22px max(26px,50% - 410px);overflow:auto}.personal-channel-scroll:has(.personal-task-kanban){padding-inline:max(26px,50vw - 770px)}.personal-channel-scroll:has(.personal-task-board){overflow:hidden}.personal-manager-greeting{align-items:center;gap:14px;margin-bottom:16px;padding:18px 20px;display:flex}.personal-home-lanes{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}.personal-system-health-banner{color:#991b1b;background:#fef2f2;border:1px solid #fecaca;border-radius:12px;margin-bottom:16px;padding:12px 16px}.personal-system-health-header{align-items:center;gap:8px;font-size:13px;font-weight:600;display:flex}.personal-system-health-header small{color:#b91c1c;font-size:11.5px;font-weight:400}.personal-system-health-issues{color:#b91c1c;margin:6px 0 0 24px;padding:0;font-size:12px;line-height:1.5}.personal-home-lane{border:1px solid var(--pw-line);background:#fff;border-radius:16px;flex-direction:column;min-width:0;min-height:100%;display:flex;box-shadow:0 1px 4px #1e1c140a}.personal-manager-greeting>span{background:var(--pw-blue-soft);width:38px;height:38px;color:var(--pw-blue);border-radius:12px;place-items:center;display:grid}.personal-manager-greeting div{gap:3px;display:grid}.personal-manager-greeting strong{letter-spacing:-.01em}.personal-manager-greeting p{color:var(--pw-muted);margin:0;font-size:13px}.personal-proposal-explainer{background:var(--pw-blue-soft);color:var(--pw-text);border-radius:10px;padding:10px 12px;font-size:12px;line-height:1.55}.personal-home-board{gap:12px;min-width:0;display:grid}.personal-home-lanes{grid-template-columns:repeat(4,minmax(170px,1fr));gap:10px;min-width:0;display:grid}.personal-home-lane{border:1px solid var(--pw-line);background:#ffffff85;border-radius:15px;align-content:start;min-width:0;min-height:260px;padding:12px;display:grid}.personal-home-lane>header{justify-content:space-between;align-items:center;gap:10px;display:flex}.personal-home-lane>header span{align-items:center;gap:7px;font-size:13px;font-weight:700;display:inline-flex}.personal-home-lane>header i,.personal-home-goal-meta i{background:var(--pw-faint);border-radius:50%;width:8px;height:8px}.personal-home-lane>header b{min-width:24px;color:var(--pw-muted);font-variant-numeric:tabular-nums;text-align:right;font-size:12px}.personal-home-lane>p{min-height:34px;color:var(--pw-muted);margin:7px 0 10px;font-size:10.5px;line-height:1.55}.personal-home-lane.is-needs_you>header i,.personal-home-lane.is-needs_you .personal-home-goal-meta i{background:var(--pw-amber)}.personal-home-lane.is-running>header i,.personal-home-lane.is-running .personal-home-goal-meta i{background:var(--pw-green)}.personal-home-lane.is-observing>header i,.personal-home-lane.is-observing .personal-home-goal-meta i{background:var(--pw-blue)}.personal-home-lane.is-scheduled>header i,.personal-home-lane.is-scheduled .personal-home-goal-meta i{background:#8b6bd8}.personal-home-lane-list{align-content:start;gap:9px;display:grid}.personal-home-goal-card{border:1px solid var(--pw-line);width:100%;min-width:0;color:inherit;cursor:pointer;text-align:left;background:#fff;border-radius:12px;gap:7px;padding:12px;transition:border-color .14s,transform .14s,box-shadow .14s;display:grid;box-shadow:0 1px 4px #1e1c140f}.personal-home-goal-card:hover{border-color:var(--pw-line-strong);transform:translateY(-1px);box-shadow:0 4px 12px #1e1c1414}.personal-home-goal-card:focus-visible{outline-offset:2px;outline:2px solid #7da2ff}.personal-home-goal-meta{min-width:0;color:var(--pw-muted);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:6px;font-size:10.5px;display:flex;overflow:hidden}.personal-home-goal-card>strong{text-overflow:ellipsis;font-size:13px;line-height:1.45;overflow:hidden}.personal-home-goal-card>p{color:var(--pw-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:11px;line-height:1.55;display:-webkit-box;overflow:hidden}.personal-home-goal-card>footer{justify-content:space-between;align-items:center;gap:8px;padding-top:2px;display:flex}.personal-home-goal-card>footer span{color:var(--pw-muted);background:#f2f1ed;border-radius:99px;flex:none;padding:2px 7px;font-size:9.5px}.personal-home-goal-card>footer small{color:var(--pw-faint);text-overflow:ellipsis;white-space:nowrap;font-size:9.5px;overflow:hidden}.personal-home-empty{border:1px dashed var(--pw-line-strong);min-height:96px;color:var(--pw-faint);border-radius:11px;place-items:center;font-size:11px;display:grid}.personal-home-history{border:1px solid var(--pw-line);background:#fff9;border-radius:13px}.personal-home-history>summary{cursor:pointer;align-items:center;gap:9px;min-height:44px;padding:0 14px;list-style:none;display:flex}.personal-home-history>summary::-webkit-details-marker{display:none}.personal-home-history>summary span{font-size:12.5px;font-weight:700}.personal-home-history>summary b{color:var(--pw-muted);font-size:11px}.personal-home-history>summary small{color:var(--pw-faint);margin-left:auto;font-size:10.5px}.personal-home-history>div{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:9px;padding:0 12px 12px;display:grid}.personal-session-record{background:var(--pw-blue-soft);border:1px solid #cfdcf9;border-radius:14px;grid-template-columns:minmax(0,1fr) auto;gap:10px 16px;margin-bottom:12px;padding:14px 16px;display:grid}.personal-session-record>header{grid-column:1/-1;justify-content:space-between;align-items:center;gap:12px;display:flex}.personal-session-record>header span{color:var(--pw-blue-ink);align-items:center;gap:7px;font-size:12px;font-weight:700;display:inline-flex}.personal-session-record>header button{width:28px;height:28px;color:var(--pw-muted);cursor:pointer;background:0 0;border:0;border-radius:8px;place-items:center;padding:0;display:grid}.personal-session-record>header button:hover{color:var(--pw-text);background:#ffffffb3}.personal-session-record>div{min-width:0}.personal-session-record>div strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;display:block;overflow:hidden}.personal-session-record>div p{color:var(--pw-muted);margin:4px 0 0;font-size:11px}.personal-session-record dl{grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0;display:grid}.personal-session-record dl div{background:#ffffff9e;border-radius:9px;gap:2px;min-width:0;padding:8px 10px;display:grid}.personal-session-record dt{color:var(--pw-faint);font-size:9.5px}.personal-session-record dd{color:var(--pw-text);text-overflow:ellipsis;white-space:nowrap;margin:0;font:10.5px/1.4 SF Mono,ui-monospace,Menlo,Consolas,monospace;overflow:hidden}.personal-session-record>.personal-secondary-action{grid-area:2/2;align-self:center}.personal-channel-timeline{gap:10px;display:grid}.personal-live-region{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:fixed;overflow:hidden}.personal-timeline-row{border:1px solid var(--pw-line);background:var(--pw-card);width:100%;min-height:64px;color:inherit;cursor:pointer;text-align:left;border-radius:14px;grid-template-columns:38px minmax(0,1fr) auto auto 16px;align-items:center;gap:12px;padding:11px 15px;transition:border-color .14s,box-shadow .14s;display:grid}.personal-timeline-row:hover{border-color:var(--pw-line-strong);box-shadow:0 2px 8px #1e1c140f}.personal-timeline-row:focus-visible{outline-offset:2px;outline:2px solid #7da2ff}.personal-row-icon{border-radius:11px;place-items:center;width:34px;height:34px;display:grid}.personal-row-icon.is-attention{color:var(--pw-amber);background:var(--pw-amber-bg)}.personal-row-icon.is-run{color:var(--pw-blue-ink);background:var(--pw-blue-soft)}.personal-row-icon.is-output{color:var(--pw-green);background:var(--pw-green-bg)}.personal-row-copy,.personal-run-identity{gap:3px;min-width:0;display:grid}.personal-row-copy strong,.personal-row-copy small,.personal-row-copy span,.personal-run-identity strong,.personal-run-identity small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.personal-row-copy strong{font-size:13.5px;font-weight:600}.personal-row-copy small,.personal-run-identity small,.personal-row-copy span{color:var(--pw-muted);font-size:11px}.personal-row-status{color:var(--pw-muted);white-space:nowrap;background:#f2f1ed;border-radius:99px;align-items:center;gap:5px;padding:2.5px 10px;font-size:11px;font-weight:600;display:inline-flex}.personal-row-status.is-running{background:var(--pw-green-bg);color:var(--pw-green)}.personal-run-row{grid-template-columns:38px minmax(90px,.65fr) minmax(160px,1.4fr) 90px auto auto 16px}.personal-run-open-label{color:var(--pw-blue-ink);white-space:nowrap;font-size:10.5px;font-weight:650}.personal-run-identity strong{font-size:12px}.personal-run-progress{gap:5px;display:grid}.personal-run-progress small{color:var(--pw-muted);font-variant-numeric:tabular-nums;font-size:10px}.personal-run-progress i{background:#f0efeb;border-radius:99px;height:4px;display:block;overflow:hidden}.personal-run-progress b{border-radius:inherit;background:var(--pw-blue);height:100%;display:block}.personal-output-row time{color:var(--pw-muted);font-size:11px}.personal-spin{animation:1.2s linear infinite pw-spin}@keyframes pw-spin{to{transform:rotate(360deg)}}.personal-message{gap:11px;max-width:84%;padding:6px 2px;display:flex}.personal-message.is-user{background:var(--pw-blue-soft);color:var(--pw-text);border:1px solid #dbe7fd;border-radius:16px 16px 4px;justify-self:end;padding:11px 15px}.personal-message-avatar{background:var(--pw-blue-soft);height:34px;color:var(--pw-blue-ink);border-radius:11px;flex:0 0 34px;place-items:center;display:grid}.personal-message header{align-items:baseline;gap:8px;display:flex}.personal-message header strong{font-size:12px}.personal-message time{color:var(--pw-faint);font-size:10px}.personal-message p{white-space:pre-wrap;margin:6px 0 0;font-size:13.5px;line-height:1.7}.personal-message-pending{color:var(--pw-muted);font-size:11px}.personal-return-delivery{color:var(--pw-muted);margin-top:7px;font-size:11px;font-weight:600;display:inline-block}.personal-return-delivery.is-delivered{color:var(--pw-green)}.personal-return-delivery.is-verification_required{color:var(--pw-blue-ink)}.personal-return-delivery.is-explicit_unverified{color:var(--pw-amber)}.personal-message-images{flex-wrap:wrap;gap:7px;margin-top:8px;display:flex}.personal-message-images img{object-fit:cover;border:1px solid var(--pw-line-strong);background:#fff;border-radius:10px;width:min(220px,100%);max-height:180px}.personal-md{overflow-wrap:anywhere;font-size:13.5px;line-height:1.7}.personal-md>*+*{margin-top:8px}.personal-md p{margin:0}.personal-md-heading.is-h1,.personal-md-heading.is-h2{font-size:14.5px}.personal-md-code{color:#4d5361;background:#f0efe9;border-radius:5px;padding:1px 5px;font-family:SF Mono,ui-monospace,Menlo,Consolas,monospace;font-size:.86em}.personal-md-pre{color:#e8ecf3;white-space:pre;background:#23262e;border-radius:10px;margin:0;padding:12px 14px;font:12px/1.65 SF Mono,ui-monospace,Menlo,Consolas,monospace;overflow-x:auto}.personal-md-pre code{font:inherit}.personal-md-link{color:var(--pw-blue-ink);text-underline-offset:2px;word-break:break-all;text-decoration:underline}.personal-agent-avatar{color:#fff;background:linear-gradient(135deg,#2f66e9,#6f9bff);border-radius:13px;flex:none;place-items:center;width:44px;height:44px;font-size:18px;font-weight:700;display:grid;box-shadow:0 2px 6px #2f66e947}.personal-agent-health.is-off{color:var(--pw-muted);background:#f2f1ed}.personal-agent-persona dl{border-top:1px solid var(--pw-line);margin-top:14px;padding-top:13px}.personal-detail-card-title{justify-content:space-between;align-items:center;gap:10px;display:flex}.personal-detail-card-title em{color:var(--pw-muted);background:#f1f1ee;border-radius:99px;padding:2px 8px;font-size:10px;font-style:normal;font-weight:650}.personal-goal-repository h3{align-items:center;gap:8px;display:flex}.personal-goal-notification h3{justify-content:space-between;align-items:center;gap:8px;display:flex}.personal-connection-status{background:var(--pw-green-bg);color:var(--pw-green);border-radius:99px;padding:2px 8px;font-size:10px;font-weight:650}.personal-subagent-heading{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.personal-subagent-heading h3{align-items:center;gap:7px;margin-bottom:0;display:flex}.personal-subagent-switch{border:1px solid var(--pw-line-strong);min-height:32px;color:var(--pw-muted);cursor:pointer;background:#f2f1ed;border-radius:99px;flex:none;align-items:center;gap:7px;padding:4px 9px 4px 5px;font-size:11px;font-weight:700;display:inline-flex}.personal-subagent-switch>span{background:#c8c8c2;border-radius:99px;width:30px;height:18px;transition:background .18s;position:relative}.personal-subagent-switch>span:after{content:"";background:#fff;border-radius:50%;width:12px;height:12px;transition:transform .18s;position:absolute;top:3px;left:3px}.personal-subagent-switch[aria-checked=true]{background:var(--pw-green-bg);color:var(--pw-green);border-color:#b9dccb}.personal-subagent-switch[aria-checked=true]>span{background:var(--pw-green)}.personal-subagent-switch[aria-checked=true]>span:after{transform:translate(12px)}.personal-subagent-switch[data-pending=true]{color:#8a6b00;opacity:1;background:#fffbed;border-color:#d8c67a}.personal-subagent-switch:disabled{cursor:default;opacity:.55}.personal-subagent-switch[data-pending=true]:disabled{opacity:1}.personal-subagent-fields{border-top:1px solid var(--pw-line);grid-template-columns:minmax(0,1fr) 112px;gap:10px;margin-top:14px;padding-top:13px;display:grid}.personal-subagent-fields label{color:var(--pw-text);align-content:start;gap:6px;font-size:11.5px;font-weight:650;display:grid}.personal-subagent-fields input:not([type=checkbox]),.personal-subagent-fields select{border:1px solid var(--pw-line-strong);min-width:0;min-height:38px;color:var(--pw-text);font:inherit;background:#fff;border-radius:9px;padding:0 10px;font-size:12px}.personal-subagent-fields label small{color:var(--pw-faint);font-size:10.5px;font-weight:450;line-height:1.45}.personal-subagent-domain-picker{border:0;grid-column:1/-1;min-width:0;margin:0;padding:0}.personal-subagent-domain-picker>legend{color:var(--pw-text);margin-bottom:7px;padding:0;font-size:11.5px;font-weight:650}.personal-subagent-domain-picker>small{color:var(--pw-faint);margin-top:7px;font-size:10.5px;line-height:1.45;display:block}.personal-subagent-domain-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;display:grid}.personal-subagent-domain-option{border:1px solid var(--pw-line-strong);cursor:pointer;background:#fff;border-radius:9px;grid-template-columns:auto minmax(0,1fr);min-height:44px;padding:8px 9px;align-items:center!important;display:grid!important}.personal-subagent-domain-option:hover{border-color:#b9c9dc}.personal-subagent-domain-option:has(input:focus-visible){outline:2px solid var(--pw-blue);outline-offset:2px}.personal-subagent-domain-option.is-selected{background:var(--pw-blue-soft);border-color:#9fc4ed}.personal-subagent-domain-option input{width:15px;height:15px;accent-color:var(--pw-blue);margin:0}.personal-subagent-domain-option>span{gap:1px;min-width:0;display:grid}.personal-subagent-domain-option strong{text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;overflow:hidden}.personal-subagent-domain-option small{font-size:9.5px!important;font-weight:450!important}.personal-subagent-domain-empty{border:1px dashed var(--pw-line-strong);background:var(--pw-bg);color:var(--pw-muted);border-radius:9px;grid-column:1/-1;margin:0;padding:10px;font-size:10.5px;line-height:1.5}.personal-subagent-limit-field{grid-column:1/-1;width:112px}.personal-subagent-fields .personal-secondary-action{grid-column:1/-1;margin-top:0}.personal-subagent-preview{background:#fffbed;border:1px solid #d8c67a;border-radius:10px;margin-top:10px;padding:12px}.personal-subagent-preview>strong{font-size:12.5px}.personal-subagent-preview>p{margin:5px 0 0}.personal-subagent-preview>div{grid-template-columns:1fr 1fr;gap:8px;display:grid}.personal-subagent-preview .personal-primary-action,.personal-subagent-preview .personal-secondary-action{min-height:38px;margin-top:10px}.personal-subagent-feedback{align-items:flex-start;gap:7px;display:flex;margin:10px 0 0!important}.personal-subagent-feedback.is-success{color:var(--pw-green)!important}.personal-subagent-feedback.is-warning{color:#8a6b00!important}.personal-subagent-feedback.is-error{color:var(--pw-red)!important}.personal-subagent-read-only{margin-bottom:0}.personal-settings-page{--pw-bg:#fbfaf7;--pw-card:#fff;--pw-line:#eceae3;--pw-line-strong:#e0ddd4;--pw-muted:#82889a;--pw-faint:#aab0bf;--pw-text:#23262e;--pw-blue:#2f66e9;--pw-blue-ink:#2456c8;--pw-blue-soft:#ebf1fe;--pw-red:#c2402f;--pw-red-bg:#fcecea;--pw-green:#2e7d5b;--pw-green-bg:#e6f3ec;background:var(--pw-bg);height:100dvh;min-height:0;color:var(--pw-text);grid-template-rows:minmax(0,1fr);grid-template-columns:268px minmax(0,1fr);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;display:grid;overflow:hidden}.personal-settings-sidebar{overscroll-behavior:contain;scrollbar-gutter:stable;border-right:1px solid var(--pw-line);background:#f5f3ee;flex-direction:column;gap:14px;min-width:0;height:100%;min-height:0;padding:18px 14px;display:flex;position:relative;overflow-y:auto}.personal-settings-page :focus-visible{outline-offset:2px;outline:2px solid #5f87ed}.personal-settings-back{width:100%;min-height:40px;color:var(--pw-muted);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:10px;align-items:center;gap:8px;padding:0 10px;font-size:13px;font-weight:650;display:inline-flex}.personal-settings-back:hover{color:var(--pw-text);background:#ffffffa6}.personal-settings-title{border-bottom:1px solid var(--pw-line);gap:3px;padding:8px 10px 10px;display:grid}.personal-settings-title small{color:var(--pw-faint);letter-spacing:.08em;text-transform:uppercase;font-size:10px;font-weight:700}.personal-settings-title strong{letter-spacing:-.02em;font-size:18px}.personal-settings-header{justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:24px;display:flex}.personal-settings-header small{color:var(--pw-blue);letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:700}.personal-settings-header h1{letter-spacing:-.035em;margin:4px 0 2px;font-size:28px}.personal-settings-tabs{gap:3px;display:grid}.personal-settings-tabs button{width:100%;min-height:54px;color:var(--pw-muted);cursor:pointer;text-align:left;background:0 0;border:0;border-radius:11px;grid-template-columns:32px minmax(0,1fr);align-items:center;gap:9px;padding:8px 10px;display:grid}.personal-settings-tabs button:hover{color:var(--pw-text);background:#ffffffa6}.personal-settings-tabs button[aria-current=page]{color:var(--pw-text);background:#fff;box-shadow:0 1px 4px #1e1c141a}.personal-settings-tabs button>span{gap:2px;min-width:0;display:grid}.personal-settings-tabs strong{font-size:13px}.personal-settings-body{overscroll-behavior:contain;scrollbar-gutter:stable;min-width:0;min-height:0;padding:30px clamp(24px,5vw,72px);overflow:auto}.personal-settings-body:has(>.personal-capability-settings){grid-template-rows:auto minmax(0,1fr);display:grid;overflow:hidden}.personal-settings-body>.personal-settings-header{min-width:0}.personal-settings-page *,.personal-settings-page :before,.personal-settings-page :after{box-sizing:border-box}.personal-appearance-settings{max-width:680px}.personal-settings-choice-group{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px;display:grid}.personal-settings-choice-group button{border:1px solid var(--pw-line);min-height:60px;color:inherit;cursor:pointer;text-align:left;background:#fff;border-radius:12px;grid-template-columns:34px minmax(0,1fr);align-items:center;gap:10px;padding:13px;display:grid}.personal-settings-choice-group button:hover{border-color:var(--pw-line-strong);box-shadow:0 2px 8px #1e1c140f}.personal-settings-choice-group button[aria-checked=true]{background:#f7f9ff;border-color:#9fb9f4;box-shadow:0 0 0 3px #2f66e91a}.personal-settings-choice-group strong{align-self:center;font-size:13px}.personal-settings-theme-swatch{border:1px solid var(--pw-line-strong);border-radius:10px;width:34px;height:34px;display:block}.personal-settings-theme-swatch.is-loopx{background:linear-gradient(135deg,#171717 0 44%,#0070f3 44% 54%,#fafafa 54% 76%,#fff 76%);border-radius:6px}.personal-settings-theme-swatch.is-paper{background:linear-gradient(135deg,#fbfaf7 0 48%,#2f66e9 48% 58%,#fff 58%)}.personal-settings-theme-swatch.is-brutal{background:linear-gradient(135deg,#ffd91a 0 45%,#ff8fd0 45% 70%,#8fdcff 70%);border:2px solid #141414;border-radius:5px;box-shadow:2px 2px #141414}.personal-lark-settings{background:var(--pw-bg);min-height:100vh;color:var(--pw-text);padding:30px clamp(24px,5vw,72px);position:relative}.personal-lark-settings.is-embedded{background:0 0;min-height:0;padding:0}.personal-lark-header{justify-content:space-between;align-items:flex-start;gap:24px;max-width:1180px;margin:0 auto;display:flex}.personal-lark-header small{color:var(--pw-blue);letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:700}.personal-lark-header h1{letter-spacing:-.035em;margin:4px 0 2px;font-size:28px}.personal-lark-header p{color:var(--pw-muted);margin:0;font-size:13px}.personal-lark-tabs{border-bottom:1px solid var(--pw-line);gap:24px;max-width:1180px;margin:28px auto 20px;display:flex}.personal-lark-settings.is-embedded .personal-lark-tabs{margin-top:0}.personal-lark-tabs button{min-height:42px;color:var(--pw-muted);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;align-items:center;gap:8px;padding:0 2px;font-weight:650;display:flex}.personal-lark-tabs button[aria-current=page]{border-color:var(--pw-blue);color:var(--pw-text)}.personal-lark-tabs span{min-width:20px;height:20px;color:var(--pw-muted);background:#efeee9;border-radius:99px;place-items:center;padding:0 5px;font-size:10px;display:inline-grid}.personal-lark-section-heading{max-width:1180px;margin:0 auto 18px}.personal-lark-section-heading small{color:var(--pw-blue);letter-spacing:.07em;text-transform:uppercase;font-size:10px;font-weight:700}.personal-lark-section-heading h2{letter-spacing:-.025em;margin:4px 0;font-size:21px}.personal-lark-section-heading p{color:var(--pw-muted);margin:0;font-size:12px;line-height:1.6}.personal-lark-subtabs{margin-top:0}.personal-settings-content{max-width:1180px;margin:0 auto}.personal-settings-card{border:1px solid var(--pw-line);background:var(--pw-card);border-radius:16px;max-width:720px;overflow:hidden;box-shadow:0 8px 30px #1e1c140a}.personal-settings-card>header{border-bottom:1px solid var(--pw-line);align-items:center;gap:13px;padding:20px;display:flex}.personal-settings-card>header h2{letter-spacing:-.02em;margin:0;font-size:17px}.personal-settings-card>header p{color:var(--pw-muted);margin:4px 0 0;font-size:12px;line-height:1.5}.personal-settings-icon{background:var(--pw-blue-soft);width:40px;height:40px;color:var(--pw-blue);border-radius:12px;flex:none;place-items:center;display:grid}.personal-language-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:18px 20px;display:grid}.personal-language-options>button{border:1px solid var(--pw-line);min-height:66px;color:var(--pw-text);cursor:pointer;text-align:left;background:#fff;border-radius:12px;justify-content:space-between;align-items:center;gap:18px;padding:13px 15px;transition:border-color .15s,background-color .15s,box-shadow .15s;display:flex}.personal-language-options>button:hover{border-color:var(--pw-line-strong);background:#fcfbf8}.personal-language-options>button.is-selected{background:var(--pw-blue-soft);color:var(--pw-blue-ink);border-color:#9bb5f0;box-shadow:0 0 0 1px #2f66e814}.personal-language-options>button>span{gap:4px;display:grid}.personal-language-options strong{font-size:13px}.personal-settings-card>footer{border-top:1px solid var(--pw-line);color:var(--pw-faint);background:#faf9f6;padding:13px 20px;font-size:11px}.personal-machine-loading{min-height:220px;color:var(--pw-muted);place-items:center;font-size:13px;display:grid}.personal-machine-layout{grid-template-columns:210px minmax(0,1fr);gap:22px;max-width:1080px;display:grid}.personal-machine-namespaces{min-width:0}.personal-machine-namespaces>div{gap:3px;margin-bottom:10px;padding:0 4px;display:grid}.personal-machine-namespaces>div small,.personal-machine-editor>header small,.personal-machine-editor-bar small{color:var(--pw-blue);letter-spacing:.07em;text-transform:uppercase;font-size:10px;font-weight:700}.personal-machine-namespaces>div strong{font-size:13px}.personal-machine-namespaces nav{gap:5px;display:grid}.personal-machine-namespaces button{width:100%;min-height:52px;color:var(--pw-muted);cursor:pointer;text-align:left;background:0 0;border:1px solid #0000;border-radius:10px;gap:3px;padding:9px 11px;display:grid}.personal-machine-namespaces button:hover{border-color:var(--pw-line);background:#fff9}.personal-machine-namespaces button[aria-current=page]{border-color:var(--pw-line-strong);color:var(--pw-text);background:#fff;box-shadow:0 2px 8px #1e1c140d}.personal-machine-namespaces button span{overflow-wrap:anywhere;font-size:12px;font-weight:650}.personal-machine-namespaces button small{color:var(--pw-muted);font-size:10px}.personal-machine-content{min-width:0}.personal-machine-summary{border:1px solid var(--pw-line);background:#fff;border-radius:14px;justify-content:space-between;align-items:center;gap:20px;margin-bottom:14px;padding:14px 16px;display:flex}.personal-machine-summary>div{align-items:center;gap:11px;min-width:0;display:flex}.personal-machine-summary>div>span:last-child{gap:3px;display:grid}.personal-machine-summary>div small{color:var(--pw-muted);text-transform:uppercase;font-size:10px;font-weight:650}.personal-machine-summary>div strong{font-size:13px}.personal-machine-summary dl{gap:22px;margin:0;display:flex}.personal-machine-summary dl div{gap:3px;display:grid}.personal-machine-summary dt{color:var(--pw-muted);font-size:10px}.personal-machine-summary dd{margin:0;font-family:SFMono-Regular,Consolas,monospace;font-size:11px;font-weight:650}.personal-machine-editor-bar{justify-content:space-between;align-items:center;gap:14px;margin-bottom:10px;padding:0 2px;display:flex}.personal-machine-editor-mode{border:1px solid var(--pw-line);background:#f5f4f0;border-radius:9px;flex:none;gap:3px;padding:3px;display:flex}.personal-machine-editor-mode button{min-height:44px;color:var(--pw-muted);cursor:pointer;font:inherit;background:0 0;border:0;border-radius:6px;padding:0 12px;font-size:11px;font-weight:650}.personal-machine-editor-mode button[aria-pressed=true]{color:var(--pw-text);background:#fff;box-shadow:0 1px 4px #1e1c1414}.personal-machine-editor{border:1px solid var(--pw-line);background:#fff;border-radius:16px;overflow:hidden;box-shadow:0 8px 30px #1e1c140a}.personal-machine-editor>header{border-bottom:1px solid var(--pw-line);justify-content:space-between;align-items:flex-start;gap:20px;padding:20px;display:flex}.personal-machine-editor>header h2{letter-spacing:-.02em;margin:4px 0 3px;font-size:18px}.personal-machine-editor>header p{max-width:610px;color:var(--pw-muted);margin:0;font-size:12px;line-height:1.55}.personal-machine-switch{min-height:44px;color:var(--pw-muted);cursor:pointer;white-space:nowrap;flex:none;align-items:center;gap:9px;font-size:12px;font-weight:650;display:flex}.personal-machine-switch input{width:42px;height:24px;accent-color:var(--pw-blue);cursor:pointer;margin:0}.personal-machine-scope-note{color:var(--pw-blue-ink);background:#f6f8fd;border:1px solid #cfdaf3;border-radius:12px;align-items:flex-start;gap:10px;margin:18px 20px 0;padding:13px 14px;display:flex}.personal-machine-scope-note svg{flex:none;margin-top:1px}.personal-machine-scope-note strong{font-size:12px}.personal-machine-scope-note p{color:#52627f;margin:3px 0 0;font-size:11px;line-height:1.55}.personal-machine-editor fieldset{border:0;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:0;padding:20px;display:grid}.personal-machine-editor fieldset label{align-content:start;gap:6px;min-width:0;display:grid}.personal-machine-editor fieldset label:last-child{grid-column:1/-1}.personal-machine-editor fieldset label>span{font-size:12px;font-weight:650}.personal-machine-editor fieldset label>small{color:var(--pw-muted);font-size:10.5px;line-height:1.45}.personal-machine-editor input[type=text],.personal-machine-editor fieldset input{border:1px solid var(--pw-line-strong);width:100%;min-width:0;min-height:42px;color:var(--pw-text);font:inherit;background:#fff;border-radius:9px;padding:0 11px;font-size:13px}.personal-machine-editor fieldset:disabled{opacity:.58}.personal-machine-editor fieldset:disabled input{cursor:not-allowed}.personal-machine-json-editor>label{gap:7px;padding:20px;display:grid}.personal-machine-json-editor>label>span{font-size:12px;font-weight:650}.personal-machine-json-editor>label>small{color:var(--pw-muted);font-size:10.5px;line-height:1.5}.personal-machine-json-editor textarea{resize:vertical;border:1px solid var(--pw-line-strong);width:100%;min-width:0;color:var(--pw-text);tab-size:2;background:#fafafa;border-radius:9px;padding:12px 13px;font:12px/1.6 SFMono-Regular,Consolas,monospace}.personal-machine-json-editor textarea:focus-visible{outline:2px solid var(--pw-blue);outline-offset:2px}.personal-machine-validation,.personal-machine-error,.personal-machine-notice{border-radius:9px;margin:0 20px 16px;padding:10px 12px;font-size:11px;line-height:1.5}.personal-machine-validation,.personal-machine-error{background:var(--pw-red-bg);color:var(--pw-red);border:1px solid #edc1ba}.personal-machine-notice{background:var(--pw-green-bg);color:var(--pw-green);border:1px solid #bcdacb;align-items:center;gap:8px;display:flex}.personal-machine-preview{background:#f8faff;border:1px solid #aebfec;border-radius:12px;margin:0 20px 18px;padding:14px}.personal-machine-preview header{justify-content:space-between;align-items:center;gap:12px;display:flex}.personal-machine-preview header strong{font-size:12px}.personal-machine-preview header span{background:var(--pw-blue-soft);color:var(--pw-blue-ink);border-radius:99px;padding:3px 8px;font-size:10px;font-weight:650}.personal-machine-preview dl{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:12px 0;display:grid}.personal-machine-preview dl div{background:#fff;border:1px solid #dfe5f3;border-radius:8px;min-width:0;padding:8px}.personal-machine-preview dt{color:var(--pw-muted);font-size:9.5px}.personal-machine-preview dd{overflow-wrap:anywhere;margin:4px 0 0;font-family:SFMono-Regular,Consolas,monospace;font-size:10.5px;font-weight:650}.personal-machine-preview p{color:#52627f;margin:0;font-size:10.5px;line-height:1.5}.personal-machine-rollback{border:1px solid var(--pw-line);background:#faf9f6;border-radius:12px;justify-content:space-between;align-items:center;gap:18px;margin:0 20px 18px;padding:13px 14px;display:flex}.personal-machine-rollback strong{font-size:12px}.personal-machine-rollback p{color:var(--pw-muted);margin:3px 0 0;font-size:10.5px;line-height:1.45}.personal-machine-rollback .personal-secondary-action{flex:none;width:auto;min-height:40px;margin:0;padding:0 13px}.personal-machine-editor>footer{border-top:1px solid var(--pw-line);background:#faf9f6;justify-content:flex-end;gap:10px;padding:15px 20px;display:flex}.personal-machine-editor>footer .personal-primary-action,.personal-machine-editor>footer .personal-secondary-action,.personal-machine-editor>footer .personal-danger-action{width:auto;min-height:42px;margin:0;padding:0 15px}.personal-machine-unavailable{border:1px dashed var(--pw-line-strong);min-height:180px;color:var(--pw-muted);background:#fff;border-radius:14px;justify-items:start;gap:8px;padding:26px;display:grid}.personal-machine-unavailable strong{color:var(--pw-text);font-size:13px}.personal-machine-unavailable p{max-width:540px;margin:0;font-size:11px;line-height:1.6}.personal-lark-loading,.personal-lark-empty{min-height:130px;color:var(--pw-muted);justify-content:center;align-items:center;gap:8px;font-size:13px;display:flex}.personal-lark-apps{max-width:1180px;margin:0 auto}.personal-lark-app-toolbar{color:var(--pw-muted);justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;font-size:11px;display:flex}.personal-lark-app-toolbar .personal-primary-action{width:auto;min-height:40px;margin:0;padding:0 16px}.personal-lark-app-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;display:grid}.personal-lark-app-card{border:1px solid var(--pw-line);background:var(--pw-card);border-radius:15px;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:11px;padding:18px;display:grid}.personal-lark-app-avatar{background:var(--pw-blue-soft);width:42px;height:42px;color:var(--pw-blue);border-radius:12px;place-items:center;display:grid}.personal-lark-app-card div{gap:3px;display:grid}.personal-lark-app-card small,.personal-lark-app-card p{color:var(--pw-muted);font-size:11px}.personal-lark-app-card em{border-radius:99px;padding:3px 9px;font-size:10px;font-style:normal;font-weight:650}.personal-lark-app-card em.is-ready{background:var(--pw-green-bg);color:var(--pw-green)}.personal-lark-app-card em.is-off{color:var(--pw-muted);background:#f1f1ee}.personal-lark-app-card p{grid-column:2/-1;margin:0}.personal-lark-connections{max-width:1180px;margin:0 auto}.personal-lark-route-readiness{background:var(--pw-amber-bg);color:var(--pw-amber);border:1px solid #ead49a;border-radius:10px;align-items:center;gap:8px;margin:0 0 12px;padding:10px 12px;font-size:12px;font-weight:650;line-height:1.5;display:flex}.personal-lark-route-readiness svg{flex:none}.personal-lark-toolbar{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.personal-lark-toolbar>label{border:1px solid var(--pw-line);max-width:680px;height:40px;color:var(--pw-faint);background:#fff;border-radius:10px;flex:1;align-items:center;gap:8px;padding:0 12px;display:flex}.personal-lark-toolbar input{width:100%;font:inherit;background:0 0;border:0;outline:0}.personal-lark-toolbar .personal-primary-action{flex:none;width:auto;min-height:40px;margin-top:0;padding:0 16px}.personal-lark-table{border:1px solid var(--pw-line);background:var(--pw-card);border-radius:14px;overflow:hidden}.personal-lark-table-head,.personal-lark-table-row{grid-template-columns:1.35fr 1.35fr .72fr .72fr 100px;align-items:center;gap:16px;padding:12px 16px;display:grid}.personal-lark-table-head{border-bottom:1px solid var(--pw-line);min-height:42px;color:var(--pw-faint);letter-spacing:.04em;text-transform:uppercase;font-size:10px;font-weight:700}.personal-lark-table-row{border-bottom:1px solid var(--pw-line);min-height:70px;font-size:12px}.personal-lark-table-row:last-of-type{border-bottom:0}.personal-lark-table-row>span{gap:3px;min-width:0;display:grid}.personal-lark-table-row strong,.personal-lark-table-row small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.personal-lark-table-row small{color:var(--pw-muted);font-size:10px}.personal-lark-row-actions{justify-content:flex-end;display:flex!important}.personal-lark-row-actions button,.personal-lark-modal header button{border:1px solid var(--pw-line);min-height:30px;color:var(--pw-muted);cursor:pointer;background:#fff;border-radius:8px;align-items:center;gap:4px;padding:0 8px;font-size:10px;display:inline-flex}.personal-lark-row-actions button.is-confirm{background:var(--pw-red-bg);color:var(--pw-red);border-color:#e6b0aa}.personal-lark-modal-backdrop{z-index:80;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#1e1f2361;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.personal-lark-modal{border:1px solid var(--pw-line);background:#fff;border-radius:18px;gap:14px;width:min(560px,100%);max-height:calc(100vh - 48px);padding:22px;display:grid;overflow:auto;box-shadow:0 24px 70px #14182340}.personal-lark-modal header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.personal-lark-modal header small{color:var(--pw-muted);font-size:10px}.personal-lark-modal h2{letter-spacing:-.02em;margin:3px 0 0;font-size:20px}.personal-lark-modal>label{color:var(--pw-muted);gap:7px;font-size:11px;font-weight:650;display:grid}.personal-lark-modal>label>small{color:var(--pw-faint);font-size:10px;font-weight:450;line-height:1.45}.personal-lark-modal input[type=search],.personal-lark-modal input[type=text],.personal-lark-modal input:not([type]),.personal-lark-modal select{border:1px solid var(--pw-line-strong);width:100%;min-height:40px;color:var(--pw-text);font:inherit;background:#fff;border-radius:9px;padding:0 11px}.personal-lark-modal label:has(input[type=search]){grid-template-columns:1fr}.personal-lark-modal label:has(input[type=search]) input{margin-bottom:2px}.personal-lark-group-state{border:1px dashed var(--pw-line-strong);min-height:40px;color:var(--pw-muted);background:#fafaf8;border-radius:9px;align-items:center;gap:7px;padding:9px 11px;font-size:11px;font-weight:500;line-height:1.45;display:flex}.personal-lark-group-state.is-error{background:var(--pw-red-bg);color:var(--pw-red);border-style:solid;border-color:#efc3bd}.personal-lark-check{border:1px solid var(--pw-line);background:#fafaf8;border-radius:10px;align-items:flex-start;padding:12px;gap:10px!important;display:flex!important}.personal-lark-check input{accent-color:var(--pw-blue);margin-top:2px}.personal-lark-check span{gap:2px;display:grid}.personal-lark-check strong{color:var(--pw-text)}.personal-lark-check small{font-weight:400}.personal-lark-agent-apps{color:var(--pw-muted);border:0;gap:7px;margin:0;padding:0;display:grid}.personal-lark-agent-apps legend{margin-bottom:1px;font-size:11px;font-weight:650}.personal-lark-agent-apps>small{color:var(--pw-faint);font-size:10px;line-height:1.45}.personal-lark-agent-apps>div{gap:8px;display:grid}.personal-lark-agent-apps label{border:1px solid var(--pw-line);background:#fafaf8;border-radius:10px;grid-template-columns:minmax(0,1fr) minmax(180px,1fr);align-items:center;gap:12px;padding:10px 11px;display:grid}.personal-lark-agent-apps label>span{gap:2px;min-width:0;display:grid}.personal-lark-agent-apps label strong{color:var(--pw-text);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.personal-lark-agent-apps label small{color:var(--pw-faint);text-overflow:ellipsis;white-space:nowrap;font-size:9px;overflow:hidden}.personal-lark-agent-apps select{min-width:0}.personal-lark-ingress{color:var(--pw-muted);border:0;gap:7px;margin:0;padding:0;display:grid}.personal-lark-ingress legend{margin-bottom:1px;font-size:11px;font-weight:650}.personal-lark-ingress>div{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.personal-lark-ingress label{border:1px solid var(--pw-line-strong);cursor:pointer;background:#fff;border-radius:10px;min-height:84px;padding:11px;display:block;position:relative}.personal-lark-ingress label.is-active{border-color:var(--pw-blue);background:#2f69eb0f;box-shadow:0 0 0 1px #2f69eb24}.personal-lark-ingress input{opacity:0;width:1px;height:1px;position:absolute}.personal-lark-ingress span{gap:5px;display:grid}.personal-lark-ingress strong{color:var(--pw-text);font-size:11px}.personal-lark-ingress small{color:var(--pw-faint);font-size:9px;font-weight:450;line-height:1.35}.personal-lark-topic-preview{border:1px solid var(--pw-line);min-height:40px;color:var(--pw-text);background:#f7f7f4;border-radius:9px;align-items:center;gap:8px;padding:0 11px;font-size:12px;font-weight:500;display:flex}.personal-lark-topic-preview.is-locked{color:var(--pw-muted)}.personal-lark-cardinality{background:var(--pw-blue-soft);color:var(--pw-blue-ink);border-radius:9px;align-items:center;gap:8px;margin:0;padding:10px 12px;font-size:11px;display:flex}.personal-lark-modal footer{z-index:2;border-top:1px solid var(--pw-line);background:#fff;justify-content:flex-end;gap:9px;margin:0 -22px -22px;padding:12px 22px 22px;display:flex;position:sticky;bottom:-22px}.personal-lark-modal footer button{width:auto;min-width:96px;margin-top:0;padding:0 16px}@media (width<=640px){.personal-lark-agent-apps label{grid-template-columns:1fr}}.personal-lark-modal-backdrop.is-setup{z-index:90}.personal-lark-setup-modal{width:min(620px,100%)}.personal-lark-setup-copy{color:var(--pw-muted);margin:0;font-size:12px;line-height:1.6}.personal-lark-setup-progress{border:1px solid var(--pw-line);background:#fafaf8;border-radius:13px;grid-template-columns:46px minmax(0,1fr);align-items:center;gap:13px;min-height:132px;padding:18px;display:grid}.personal-lark-setup-progress>div{gap:5px;display:grid}.personal-lark-setup-progress p{color:var(--pw-muted);margin:0;font-size:11px;line-height:1.5}.personal-lark-setup-progress a{width:fit-content;color:var(--pw-blue);grid-column:2;align-items:center;gap:6px;font-size:11px;font-weight:650;text-decoration:none;display:inline-flex}.personal-lark-setup-icon{background:var(--pw-blue-soft);width:46px;height:46px;color:var(--pw-blue);border-radius:13px;place-items:center;display:grid}.personal-lark-setup-icon.is-ready{background:var(--pw-green-bg);color:var(--pw-green)}.personal-lark-setup-icon.is-failed,.personal-row-status.is-blocking{background:var(--pw-red-bg);color:var(--pw-red)}.personal-proposal-row{width:100%;color:inherit;cursor:pointer;text-align:left;background:#f5f8ff;border:1px solid #c3d3f9;border-radius:14px;grid-template-columns:36px minmax(0,1fr) auto;align-items:center;gap:12px;padding:14px;display:grid}.personal-proposal-row:hover{border-color:#8fabe9;box-shadow:0 2px 10px #2f66e814}.personal-proposal-row>span:first-child{color:#315fc8;background:#e4ebff;border-radius:11px;place-items:center;width:36px;height:36px;display:grid}.personal-proposal-row>span:nth-child(2){gap:3px;min-width:0;display:grid}.personal-proposal-row small{color:#5f74ad;font-size:10px}.personal-proposal-row strong{font-size:13px}.personal-proposal-row p{color:#686f7c;margin:0;font-size:11px}.personal-proposal-row>b{color:#315fc8;font-size:11px}.personal-proposal-row.is-applied{background:#f3fbf7;border-color:#b5ddcc}.personal-proposal-row.is-error,.personal-proposal-row.is-stale{background:#fff7f7;border-color:#efc3c3}.personal-proposal-row.is-gated{background:#fffaf0;border-color:#ead39c}.personal-gated-summary{background:#fffaf0;border:1px solid #ead39c;border-radius:14px}.personal-gated-summary>summary{color:#6d5620;cursor:pointer;align-items:center;gap:9px;padding:12px 14px;list-style:none;display:flex}.personal-gated-summary>summary::-webkit-details-marker{display:none}.personal-gated-summary>summary>span{color:#9a741d;background:#fff1c9;border-radius:9px;place-items:center;width:30px;height:30px;display:grid}.personal-gated-summary>summary small{color:#927d4c;margin-left:auto}.personal-gated-summary>div{gap:8px;padding:0 8px 8px;display:grid}.personal-gated-summary .personal-proposal-row{background:#fffdf7}.personal-schedule-row{border:1px solid var(--pw-line);background:var(--pw-card);width:100%;color:inherit;cursor:pointer;text-align:left;border-radius:14px;grid-template-columns:36px minmax(0,1fr) auto 16px;align-items:center;gap:12px;padding:13px 15px;display:grid}.personal-schedule-row:hover{border-color:var(--pw-line-strong);box-shadow:0 2px 8px #1e1c140f}.personal-schedule-icon{width:34px;height:34px;color:var(--pw-muted);background:#f2f1ed;border-radius:11px;place-items:center;display:grid}.personal-schedule-copy{gap:2px;min-width:0;display:grid}.personal-schedule-copy small,.personal-schedule-copy p{color:var(--pw-muted);margin:0;font-size:10px}.personal-schedule-copy strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;overflow:hidden}.personal-schedule-status{background:var(--pw-green-bg);color:var(--pw-green);border-radius:99px;align-items:center;padding:2.5px 10px;font-size:11px;font-weight:600;display:inline-flex}.personal-schedule-status.is-paused{color:var(--pw-muted);background:#f2f1ed}.personal-timeline-empty{text-align:center;place-items:center;padding:70px 20px;display:grid}.personal-timeline-empty>span{background:var(--pw-blue-soft);width:44px;height:44px;color:var(--pw-blue);border-radius:14px;place-items:center;margin-bottom:14px;display:grid}.personal-timeline-empty p{max-width:420px;color:var(--pw-muted);font-size:13px}.personal-object-list{border:1px solid var(--pw-line);background:#fff;border-radius:14px;overflow:hidden}.personal-object-list>header,.personal-object-list>button{border:0;border-bottom:1px solid var(--pw-line);width:100%;min-height:52px;color:inherit;text-align:left;background:0 0;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 15px;display:grid}.personal-object-list>header{min-height:46px;color:var(--pw-faint);letter-spacing:.06em;grid-template-columns:minmax(0,1fr) auto;font-size:12px;font-weight:650}.personal-object-list>button{cursor:pointer}.personal-object-list>button:hover{background:#faf9f6}.personal-object-list>button:last-child{border-bottom:0}.personal-object-list>button>p{color:var(--pw-muted);text-overflow:ellipsis;white-space:nowrap;grid-column:2/-1;margin:-3px 0 0;font-size:12px;line-height:1.45;overflow:hidden}.personal-object-list>button>em{background:var(--pw-blue-soft);color:var(--pw-blue-ink);border-radius:999px;justify-self:end;padding:2px 7px;font-size:10px;font-style:normal;font-weight:700}.personal-object-list small{color:var(--pw-muted)}.personal-object-list>button>small{white-space:nowrap;align-items:center;gap:8px;display:inline-flex}.personal-object-list-state{border-bottom:1px solid var(--pw-line);color:var(--pw-muted);align-items:center;gap:8px;margin:0;padding:14px 15px;font-size:12px;line-height:1.5;display:flex}.personal-object-list-state.is-error{color:var(--pw-red);background:var(--pw-red-bg)}.personal-object-list .is-done{color:var(--pw-green)}.personal-object-list .is-attention{color:var(--pw-amber);font-weight:700}.personal-task-age{color:var(--pw-faint);font-size:11px}.personal-task-empty{color:var(--pw-muted);margin:0;padding:4px 15px 16px;font-size:12.5px}.personal-task-lane-filter{border:1px solid var(--pw-line);background:#fff;border-radius:10px;justify-content:space-between;align-items:center;gap:16px;min-height:50px;padding:8px 12px;display:flex}.personal-capability-settings{grid-template-rows:auto minmax(0,1fr);gap:16px;width:100%;min-width:0;max-width:1050px;min-height:0;display:grid;overflow:hidden}.personal-capability-body{flex-direction:column;gap:16px;min-width:0;min-height:0;display:flex;overflow:hidden}.personal-capability-body>.personal-capability-layout{flex:auto}.personal-provider-settings{width:100%;min-width:0;max-width:1050px}.personal-provider-settings>.personal-operator-credential{margin-top:0}.personal-capability-scope-note{overscroll-behavior:contain;max-height:120px;color:var(--pw-muted);padding:12px 0;overflow:auto}.personal-capability-scope-note summary{cursor:pointer;align-items:center;gap:8px;font-size:12px;display:flex}.personal-capability-scope-note p{padding:10px 0 0 25px}.personal-capability-scope-note svg{flex:none;margin-top:2px}.personal-operator-credential{border:1px solid var(--pw-border);background:var(--pw-surface);border-radius:10px;gap:12px;margin:16px 0 24px;padding:16px;display:grid}.personal-operator-credential>header{grid-template-columns:auto 1fr auto;align-items:start;gap:10px;display:grid}.personal-operator-credential>header strong{font-size:13px;display:block}.personal-operator-credential>header p{color:var(--pw-muted);margin:4px 0 0;font-size:12px;line-height:1.5}.personal-operator-credential-status{color:var(--pw-muted);font-family:var(--pw-font-mono);font-size:11px}.personal-operator-credential-readback{gap:6px;margin:0;font-size:12px;display:grid}.personal-operator-credential-readback>div{grid-template-columns:140px 1fr;gap:10px;display:grid}.personal-operator-credential-readback dt{color:var(--pw-muted)}.personal-operator-credential-readback dd{overflow-wrap:anywhere;margin:0}.personal-operator-credential label{gap:4px;font-size:12px;display:grid}.personal-operator-credential input{border:1px solid var(--pw-border);background:var(--pw-canvas);color:inherit;border-radius:8px;padding:7px 9px;font-size:12px}.personal-operator-credential input:disabled{opacity:.6}.personal-capability-scope-note p{margin:0;font-size:12px;line-height:1.55}.personal-capability-scope-note strong{color:var(--pw-text);display:block}.personal-capability-layout{grid-template-columns:220px minmax(0,1fr);align-items:stretch;gap:24px;min-width:0;min-height:0;display:grid;overflow:hidden}.personal-capability-list{overscroll-behavior:contain;scrollbar-gutter:stable;align-content:start;gap:6px;min-height:0;padding:3px;display:grid;overflow-y:auto}.personal-capability-list button{min-height:44px;color:var(--pw-text);cursor:pointer;text-align:left;background:#fff;border:1px solid #0000;border-radius:6px;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;display:flex}.personal-capability-list button:hover{border-color:#b8c9f5}.personal-capability-list button[aria-current=page]{background:#f4f7ff;border-color:#8cacf0;box-shadow:0 0 0 3px #2f66e914}.personal-capability-list button>span{gap:2px;min-width:0;display:grid}.personal-capability-list em{background:var(--pw-blue-soft);color:var(--pw-blue-ink);border-radius:999px;flex:none;padding:3px 6px;font-size:9px;font-style:normal;font-weight:750}.personal-capability-list strong{overflow-wrap:anywhere;font-size:13px;font-weight:500;line-height:1.5}.personal-capability-detail{overscroll-behavior:contain;scrollbar-gutter:stable;border:1px solid var(--pw-line);background:#fff;border-radius:14px;align-self:start;min-width:0;min-height:0;max-height:100%;overflow:auto}.personal-capability-detail>header{border-bottom:1px solid var(--pw-line);align-items:flex-start;gap:12px;padding:24px;display:flex}.personal-capability-detail>header>div{flex:1;min-width:0}.personal-capability-help{color:var(--pw-muted);margin-top:8px;font-size:12px}.personal-capability-help summary{cursor:pointer}.personal-capability-help p{padding-top:12px}.personal-capability-help dl{gap:12px;margin-bottom:0;display:grid}.personal-capability-help dt{color:var(--pw-text);font-weight:500}.personal-capability-help dd{margin:4px 0 0;line-height:1.6}.personal-capability-detail h2{margin:2px 0 4px;font-size:17px}.personal-capability-detail p{color:var(--pw-muted);margin:0;font-size:12px;line-height:1.55}.personal-capability-value-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:16px 18px;display:grid}.personal-capability-raw-values{border-top:1px solid var(--pw-line)}.personal-capability-raw-values>summary{cursor:pointer;color:var(--pw-text);padding:16px 18px;font-size:12px}.personal-capability-raw-values>summary:focus-visible{outline:2px solid var(--pw-blue);outline-offset:-2px}.personal-capability-value-grid section{min-width:0}.personal-capability-value-grid strong,.personal-capability-field-summary>strong{font-size:11px}.personal-capability-value-grid pre{border:1px solid var(--pw-line);min-height:72px;max-height:220px;color:var(--pw-text);background:#faf9f6;border-radius:9px;margin:7px 0 0;padding:11px;font-size:10.5px;line-height:1.5;overflow:auto}.personal-capability-editor-status{border-radius:10px;align-items:flex-start;gap:10px;margin:20px 24px;padding:12px;display:flex}.personal-capability-heading-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;display:flex}.personal-capability-heading-row .personal-capability-effective-source{color:var(--pw-muted);align-items:center;gap:6px;margin:0;display:flex}.personal-capability-effective-source span{color:var(--pw-muted);flex-wrap:wrap;gap:6px;font-size:11px;display:flex}.personal-capability-effective-source strong{color:var(--pw-text)}.personal-capability-editor-status svg{flex:none;margin-top:1px}.personal-capability-editor-status strong{font-size:12px}.personal-capability-editor-status p{margin-top:3px}.personal-capability-editor-status.is-preview{background:var(--pw-blue-soft);color:var(--pw-blue-ink)}.personal-capability-editor-status.is-read-only{color:#9a5a10;background:#fff5e8}.personal-capability-linked-setting{border:1px solid var(--pw-line);background:var(--pw-bg);border-radius:10px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;margin:0 24px 20px;padding:14px;display:grid}.personal-capability-linked-setting>div{gap:4px;display:grid}.personal-capability-linked-setting strong{font-size:12px}.personal-capability-linked-setting .personal-notification-toggle{justify-self:end;min-height:44px}.personal-capability-linked-setting .personal-notification-error{grid-column:1/-1}.personal-capability-behavior-note{border:1px solid var(--pw-line);background:var(--pw-amber-bg);color:var(--pw-amber);border-radius:6px;align-items:flex-start;gap:10px;margin:16px 24px;padding:12px;display:flex}.personal-capability-behavior-note svg{flex:none;margin-top:1px}.personal-capability-behavior-note strong{font-size:12px}.personal-capability-behavior-note p{color:inherit;margin-top:3px}.personal-capability-editor-mode{color:var(--pw-muted);justify-content:flex-end;align-items:center;gap:12px;margin:8px 24px 0;font-size:11px;display:flex}.personal-capability-editor-mode button{min-height:44px;color:var(--pw-muted);cursor:pointer;font:inherit;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;gap:6px;padding:0 12px;font-size:11px;font-weight:650;display:inline-flex}.personal-capability-editor-mode button:hover{background:var(--pw-blue-soft);color:var(--pw-text)}.personal-capability-editor-mode button:disabled{cursor:not-allowed;opacity:.45}.personal-capability-field-summary{padding:20px 24px 24px}.personal-capability-field-summary .personal-capability-fields{margin-top:0}.personal-capability-fields{border:0;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0;padding:0;display:grid}.personal-report-schedule{grid-column:1/-1;grid-template-columns:repeat(auto-fit,minmax(min(180px,100%),1fr));gap:12px;min-width:0;display:grid}.personal-report-schedule p{color:var(--pw-muted);overflow-wrap:anywhere;grid-column:1/-1;margin:0;font-size:12px}.personal-capability-fields label{align-content:start;gap:6px;min-width:0;display:grid}.personal-capability-fields label>span{font-size:12px;font-weight:650}.personal-capability-fields input:not([type=checkbox]),.personal-capability-fields select,.personal-capability-fields textarea{border:1px solid var(--pw-line-strong);width:100%;min-width:0;min-height:42px;color:var(--pw-text);font:inherit;background:#fff;border-radius:9px;padding:8px 11px;font-size:13px}.personal-capability-fields .is-boolean{border-bottom:1px solid var(--pw-line);grid-column:1/-1;grid-template-columns:minmax(0,1fr) auto;align-items:center;min-height:48px;padding-bottom:12px}.personal-capability-enabled-row{border-bottom:1px solid var(--pw-line);grid-column:1/-1;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:16px;min-width:0;min-height:60px;padding-bottom:12px;display:grid}.personal-capability-enabled-row>.is-boolean{display:contents}.personal-capability-enabled-row>.is-boolean>span{grid-area:1/1}.personal-capability-enabled-row>.is-boolean>input{grid-area:1/3}.personal-capability-enabled-row>.personal-capability-edit-json{grid-area:1/2}.personal-capability-edit-json{min-height:44px;color:var(--pw-muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;align-items:center;gap:6px;padding:0 8px;font-size:11px;display:inline-flex}.personal-capability-edit-json:hover{background:var(--pw-blue-soft);color:var(--pw-text)}.personal-capability-edit-json:disabled{cursor:not-allowed;opacity:.45}.personal-capability-fields .is-boolean input{appearance:none;border:1px solid var(--pw-line-strong);background:var(--pw-line);cursor:pointer;border-radius:999px;width:40px;height:24px;margin:0;padding:2px}.personal-capability-fields .is-boolean input:before{content:"";background:#fff;border-radius:50%;width:18px;height:18px;display:block}.personal-capability-fields .is-boolean input:checked{background:var(--pw-text)}.personal-capability-fields .is-boolean input:checked:before{transform:translate(16px)}.personal-capability-fields .is-boolean input:focus-visible{outline:2px solid var(--pw-blue);outline-offset:3px}.personal-capability-fields:disabled{opacity:.62}.personal-capability-json-editor{gap:7px;margin:0;padding:0 18px 18px;display:grid}.personal-capability-json-editor>span{font-size:11px;font-weight:650}.personal-capability-json-editor>small{color:var(--pw-muted);font-size:10.5px;line-height:1.5}.personal-capability-json-editor textarea{resize:vertical;border:1px solid var(--pw-line-strong);width:100%;min-width:0;color:var(--pw-text);tab-size:2;background:#fafafa;border-radius:9px;padding:12px 13px;font:12px/1.6 SFMono-Regular,Consolas,monospace}.personal-capability-json-editor textarea:focus-visible{outline:2px solid var(--pw-blue);outline-offset:2px}.personal-capability-preview{background:#f4f7ff;border:1px solid #9fb9f4;border-radius:10px;grid-template-columns:minmax(0,1fr) auto;gap:3px 12px;margin:0 18px 16px;padding:12px;display:grid}.personal-capability-preview strong{font-size:12px}.personal-capability-preview span{color:var(--pw-blue-ink);font-size:11px;font-weight:700}.personal-capability-preview small{color:var(--pw-muted);grid-column:1/-1;font-size:10.5px}.personal-capability-actions,.personal-operator-credential-actions{border-top:1px solid var(--pw-line);background:0 0;justify-content:flex-end;gap:9px;padding:14px 18px;display:flex}.personal-capability-actions button,.personal-operator-credential-actions button{border:1px solid var(--pw-line-strong);min-height:44px;color:var(--pw-text);cursor:pointer;font:inherit;background:#fff;border-radius:9px;padding:0 14px;font-size:12px;font-weight:700}.personal-capability-actions button.is-primary,.personal-operator-credential-actions button.is-primary{border-color:var(--pw-blue);background:var(--pw-blue);color:#fff}.personal-capability-actions button.is-danger,.personal-operator-credential-actions button.is-danger{color:var(--pw-red);align-items:center;gap:6px;margin-right:auto;display:inline-flex}.personal-capability-actions button:disabled,.personal-operator-credential-actions button:disabled{cursor:not-allowed;opacity:.5}.personal-capability-empty,.personal-capability-error{border:1px solid var(--pw-line);max-width:720px;min-height:56px;color:var(--pw-muted);background:#fff;border-radius:11px;align-items:center;gap:9px;margin:0;padding:14px;font-size:12px;display:flex}.personal-capability-error{color:var(--pw-red);border-color:#efc1ba}.personal-capability-error span{gap:2px;display:grid}.personal-capability-error small{color:var(--pw-muted)}.personal-capability-error button{min-height:44px;color:inherit;cursor:pointer;background:0 0;border:1px solid;border-radius:9px;align-items:center;gap:6px;margin-left:auto;padding:0 12px;display:inline-flex}.personal-capability-recovery{color:#74530d;background:#fffaf0;border:1px solid #dfc98d;border-radius:10px;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:9px;margin:0 20px 16px;padding:12px;font-size:11px;line-height:1.5;display:grid}.personal-capability-recovery div{gap:3px;display:grid}.personal-capability-recovery p{margin:0}.personal-capability-recovery small{color:var(--pw-muted);overflow-wrap:anywhere}.personal-capability-recovery button{min-height:40px;color:inherit;cursor:pointer;background:0 0;border:1px solid;border-radius:8px;align-items:center;gap:6px;padding:0 10px;display:inline-flex}.personal-task-lane-filter>div{min-width:0;color:var(--pw-muted);align-items:center;gap:9px;display:flex}.personal-task-lane-filter>div>span{gap:1px;display:grid}.personal-task-lane-filter strong{color:var(--pw-text);font-size:12px}.personal-task-lane-filter small{color:var(--pw-faint);font-size:10.5px}.personal-task-lane-filter label{border:1px solid var(--pw-line-strong);background:var(--pw-bg);border-radius:8px;align-items:center;gap:6px;min-height:34px;padding:0 9px;display:flex}.personal-task-lane-filter select{max-width:300px;color:var(--pw-text);font:inherit;appearance:none;background:0 0;border:0;outline:0;font-size:11.5px;font-weight:600}.personal-task-board{flex-direction:column;gap:12px;height:100%;min-height:0;display:flex}.personal-channel-scroll:has(.personal-task-board.is-list-view){overflow-y:auto}.personal-task-board.is-list-view{gap:24px;height:auto;min-height:100%}.personal-task-view-toolbar{flex:none;justify-content:space-between;align-items:center;gap:16px;display:flex}.personal-task-view-toolbar>div:first-child{gap:4px;display:grid}.personal-task-view-toolbar strong{font-size:16px;font-weight:600}.personal-task-view-toolbar span{color:var(--pw-muted);font-size:12px}.personal-task-view-switch{border:1px solid var(--pw-line);background:var(--pw-bg);border-radius:8px;flex:none;padding:3px;display:flex}.personal-task-view-switch button{min-height:36px;color:var(--pw-muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:5px;padding:0 14px;font-size:13px}.personal-task-view-switch button[aria-pressed=true]{background:var(--pw-text);color:var(--pw-bg)}.personal-task-grouped-list{gap:24px;padding-bottom:24px;display:grid}.personal-completed-list{border:1px solid var(--pw-line);background:var(--pw-card);border-radius:12px}.personal-completed-list>header{min-height:48px;color:var(--pw-text);padding:2px 16px}.personal-completed-list>header>button{color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;min-height:44px;padding:0}.personal-completed-list .personal-task-lane-scroll{height:480px;max-height:60vh;overflow-y:auto}.personal-completed-list .personal-task-lane-scroll[hidden]{display:none}.personal-completed-list .personal-completed-row>button{border:0;border-bottom:1px solid var(--pw-line);text-align:left;background:0 0;grid-template-columns:20px minmax(0,1fr);gap:8px 12px;width:100%;height:100%;padding:16px;display:grid}.personal-completed-list .personal-completed-row>button>strong{-webkit-line-clamp:2}.personal-completed-list .personal-completed-row>button>small{grid-column:2}.personal-task-group{border:1px solid var(--pw-line);background:var(--pw-card);border-radius:12px;min-width:0}.personal-task-group>summary{cursor:pointer;align-items:center;gap:8px;min-height:48px;padding:10px 16px;list-style:none;display:flex}.personal-task-group>summary::-webkit-details-marker{display:none}.personal-task-group>summary strong{font-size:12px;font-weight:600;line-height:18px}.personal-task-group>summary span{background:var(--pw-line);color:var(--pw-muted);border-radius:6px;padding:2px 7px;font-size:12px}.personal-task-group>summary svg{color:var(--pw-muted);transform:rotate(-90deg)}.personal-task-group[open]>summary svg{transform:none}.personal-task-group.tone-attention>summary{color:var(--pw-amber)}.personal-task-list-rows{padding:0 16px 8px}.personal-task-list-rows>button,.personal-task-list-rows>.personal-task-card>button{border:0;border-top:1px solid var(--pw-line);width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border-radius:0;grid-template-columns:20px minmax(0,1fr);gap:8px 12px;padding:16px 4px;display:grid}.personal-task-list-rows>button:hover,.personal-task-list-rows>.personal-task-card>button:hover{background:var(--pw-line)}.personal-task-list-rows>button>strong,.personal-task-list-rows>.personal-task-card>button>strong{-webkit-line-clamp:2;overflow-wrap:anywhere;-webkit-box-orient:vertical;font-size:14px;font-weight:500;line-height:20px;display:-webkit-box;overflow:hidden}.personal-task-list-rows>button>small,.personal-task-list-rows>.personal-task-card>button>small{color:var(--pw-muted);overflow-wrap:anywhere;flex-wrap:wrap;grid-column:2;align-items:center;gap:8px;font-size:12px;line-height:16px;display:flex}.personal-task-list-rows .personal-task-card-actions{background:var(--pw-card);top:auto;bottom:12px}@media (width>=721px){.personal-channel-header:has(~.personal-channel-scroll .is-list-view){flex-wrap:wrap}.personal-channel-header:has(~.personal-channel-scroll .is-list-view) .personal-channel-title{flex-basis:100%}}.personal-task-kanban{flex:1;grid-template-columns:repeat(auto-fit,minmax(172px,1fr));align-items:stretch;gap:12px;min-height:0;display:grid}.personal-task-chat-receipt{background:#f8faff;border:1px solid #d8e2f8;border-radius:10px;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 12px;display:grid;box-shadow:0 1px 3px #2f66e90a}.personal-task-chat-icon{background:var(--pw-blue-soft);width:28px;height:28px;color:var(--pw-blue-ink);border-radius:8px;place-items:center;display:grid}.personal-task-chat-receipt>div{min-width:0}.personal-task-chat-receipt header{align-items:center;gap:8px;display:flex}.personal-task-chat-receipt header strong{font-size:12px;font-weight:650}.personal-task-chat-receipt header small{color:var(--pw-faint);font-size:10px}.personal-task-chat-receipt p{color:var(--pw-text);text-overflow:ellipsis;white-space:nowrap;grid-template-columns:36px minmax(0,1fr);gap:5px;margin:3px 0;font-size:12px;line-height:1.4;display:grid;overflow:hidden}.personal-task-chat-receipt p b{color:var(--pw-faint);font-size:10px;font-weight:650}.personal-task-chat-receipt p.is-assistant{max-height:2.8em;color:var(--pw-muted);white-space:normal}.personal-task-chat-receipt>div>small{color:var(--pw-muted);font-size:10.5px;line-height:1.4}.personal-task-chat-receipt footer{gap:6px;display:flex}.personal-task-chat-receipt footer button{min-height:26px;color:var(--pw-blue-ink);cursor:pointer;white-space:nowrap;background:#fff;border:1px solid #b9c9ee;border-radius:7px;align-items:center;gap:4px;padding:3px 8px;font-size:10.5px;font-weight:650;display:inline-flex}.personal-task-chat-receipt footer button:hover{border-color:var(--pw-blue);background:var(--pw-blue-soft)}.personal-task-kanban .personal-object-list{background:#f6f4ee;flex-direction:column;min-height:0;padding:0;display:flex}.personal-task-kanban .personal-object-list>header{background:#f6f4ee;border-bottom:1px solid #e0ddd4b8;flex:none;align-items:center;gap:8px;min-height:38px;padding:10px 16px 7px;display:flex}.personal-task-kanban .personal-object-list>header>strong{align-items:center;gap:7px;min-width:0;font-size:12px;display:inline-flex}.personal-task-kanban .personal-object-list>header>span{margin-left:auto}.personal-task-lane-scroll{overscroll-behavior-y:contain;scrollbar-color:#bebbb2 transparent;scrollbar-gutter:stable;scrollbar-width:thin;-webkit-overflow-scrolling:touch;flex-direction:column;flex:auto;gap:8px;min-height:0;padding:8px;scroll-padding-block:8px;display:flex;overflow-y:auto}.personal-task-lane-scroll:focus-visible{outline:2px solid var(--pw-blue);outline-offset:-3px}.personal-task-lane-scroll.has-overflow-before{box-shadow:inset 0 12px 10px -13px #34312b94}.personal-task-lane-scroll.has-overflow-after{box-shadow:inset 0 -16px 12px -15px #34312bb3}.personal-task-lane-scroll.has-overflow-before.has-overflow-after{box-shadow:inset 0 12px 10px -13px #34312b94,inset 0 -16px 12px -15px #34312bb3}.personal-task-lane-scroll::-webkit-scrollbar{width:10px}.personal-task-lane-scroll::-webkit-scrollbar-track{background:0 0}.personal-task-lane-scroll::-webkit-scrollbar-thumb{background:#bebbb2 padding-box padding-box;border:3px solid #0000;border-radius:999px;min-height:40px}.personal-task-lane-scroll::-webkit-scrollbar-thumb:hover{background:#97938a padding-box padding-box}.personal-kanban-dot{background:var(--pw-faint);border-radius:50%;width:8px;height:8px}.personal-kanban-dot.tone-attention{background:var(--pw-amber)}.personal-kanban-dot.tone-progress{background:var(--pw-blue)}.personal-kanban-dot.tone-schedule{background:#8a6fd6}.personal-kanban-dot.tone-done{background:var(--pw-green)}.personal-task-kanban .personal-task-lane-scroll>button,.personal-task-kanban .personal-task-card>button{border:1px solid var(--pw-line);width:100%;min-height:0;color:inherit;text-align:left;cursor:pointer;background:#fff;border-radius:10px;grid-template-columns:18px minmax(0,1fr);align-items:center;gap:6px 8px;padding:10px 12px;display:grid;box-shadow:0 1px 3px #1e1c140f}.personal-task-kanban .personal-task-lane-scroll>button:hover,.personal-task-kanban .personal-task-card>button:hover{border-color:var(--pw-line-strong);background:#fff;box-shadow:0 2px 8px #1e1c1417}.personal-task-kanban .personal-task-lane-scroll>button>small,.personal-task-kanban .personal-task-card>button>small{white-space:normal;text-align:left;flex-wrap:wrap;grid-column:1/-1;justify-content:flex-start;align-items:center;gap:8px;display:inline-flex}.personal-task-kanban .personal-task-lane-scroll>button:last-child{border-bottom:1px solid var(--pw-line)}.personal-task-kanban .personal-task-lane-scroll>button:last-child:hover{border-color:var(--pw-line-strong)}.personal-task-lane-scroll>button,.personal-task-card{flex:none;min-width:0}.personal-task-lane-scroll>button>small,.personal-task-card>button>small{font-size:12px;line-height:16px}.personal-task-lane-scroll>button>strong,.personal-task-card>button>strong{-webkit-line-clamp:3;overflow-wrap:anywhere;-webkit-box-orient:vertical;font-size:14px;font-weight:500;line-height:20px;display:-webkit-box;overflow:hidden}.personal-task-card{position:relative}.personal-completed-window{flex-shrink:0;position:relative}.personal-completed-row{padding-bottom:8px;position:absolute;inset-inline:0}.personal-completed-row>button{width:100%;height:100%}.personal-completed-row>button>strong{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.personal-completed-footer{color:var(--pw-muted);text-align:center;flex-shrink:0;padding:12px 4px;font-size:12px}.personal-completed-footer button{border:1px solid var(--pw-line);min-height:32px;color:inherit;cursor:pointer;background:0 0;border-radius:6px}.personal-task-card>button{width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:start;display:grid}.personal-task-card-actions{opacity:0;gap:4px;transition:opacity .12s;display:flex;position:absolute;top:6px;right:6px}.personal-task-card:hover .personal-task-card-actions,.personal-task-card:focus-within .personal-task-card-actions,.personal-task-card.has-session .personal-task-card-actions{opacity:1}.personal-task-card.is-selected>button,.personal-task-kanban .personal-task-lane-scroll>button.is-selected{background:#f5f8ff;border-color:#7c9df1;box-shadow:0 0 0 2px #2f66e91f,0 4px 14px #1e34681a}.personal-task-card.is-selected:before{z-index:2;background:var(--pw-blue);content:"";border-radius:0 3px 3px 0;width:3px;position:absolute;top:8px;bottom:8px;left:0}.personal-task-card-actions button{border:1px solid var(--pw-line-strong);width:28px;height:28px;color:var(--pw-muted);cursor:pointer;background:#fff;border-radius:7px;place-items:center;padding:0;display:grid;box-shadow:0 1px 3px #1e1c141f}.personal-task-card-actions button:hover{color:var(--pw-text);border-color:var(--pw-text)}.personal-task-card-actions button:disabled{cursor:wait;opacity:.72}.personal-task-card-actions .personal-task-session-link{width:auto;color:var(--pw-blue-ink);opacity:1;gap:5px;padding:0 8px;display:flex}.personal-task-session-link span{white-space:nowrap;font-size:10.5px;font-weight:650}.personal-task-session-status{color:var(--pw-blue-ink);font-weight:650}.personal-task-kanban .personal-task-empty{border:1px dashed var(--pw-line-strong);text-align:center;border-radius:10px;margin:2px 0 4px;padding:16px 10px;font-size:12px}.personal-workspace-shell.has-drawer .personal-task-kanban{grid-template-columns:repeat(2,minmax(0,1fr))}.personal-workspace-shell.has-task-inspector .personal-channel-scroll:has(.personal-task-kanban){padding-inline:20px}.personal-workspace-shell.has-task-inspector .personal-task-kanban{grid-template-columns:repeat(4,260px);width:max-content;min-width:100%}.personal-workspace-shell[data-pw-theme=brutal] .personal-task-chat-receipt{background:#fff;border:2px solid #141414;border-radius:4px;box-shadow:3px 3px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-task-chat-icon{color:#141414;background:#ffe23f;border:2px solid #141414;border-radius:4px}.personal-workspace-shell[data-pw-theme=brutal] .personal-task-chat-receipt footer button{color:#141414;border:2px solid #141414;border-radius:4px;box-shadow:2px 2px #141414}.personal-composer-wrap{background:linear-gradient(transparent, var(--pw-bg) 22%);padding:10px max(26px,50% - 410px) 20px}.personal-read-only-notice{border:1px solid var(--pw-line);min-height:46px;color:var(--pw-muted);background:#f5f4f1;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:10px 16px;font-size:11.5px;display:flex}.personal-read-only-notice strong{color:var(--pw-text);white-space:nowrap}.personal-manager-conversation-tray{width:100%;max-height:320px;color:inherit;font:inherit;text-align:left;background:#fffffff7;border:1px solid #bfcdf1;border-radius:14px;gap:9px;margin-bottom:10px;padding:12px 14px;animation:.16s cubic-bezier(.16,1,.3,1) pw-tray-in;display:grid;overflow:hidden;box-shadow:0 5px 20px #223e781a}@keyframes pw-tray-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.personal-manager-conversation-tray:hover{border-color:#8fa9ee;box-shadow:0 7px 24px #223e7824}.personal-manager-conversation-tray:focus-within{border-color:var(--pw-blue);box-shadow:0 0 0 3px #2f66e921,0 5px 20px #223e781a}.personal-manager-conversation-tray>header{justify-content:space-between;align-items:center;gap:12px;display:flex}.personal-manager-conversation-tray>header>span{color:var(--pw-blue-ink);align-items:center;gap:7px;display:flex}.personal-manager-conversation-tray>header strong{font-size:16px;font-weight:600;line-height:24px}.personal-manager-conversation-tray>header small{color:var(--pw-faint);font-size:12px;font-weight:500;line-height:16px}.personal-manager-conversation-actions{align-items:center;gap:8px;display:flex}.personal-manager-conversation-btn{min-height:32px;color:var(--pw-blue-ink);cursor:pointer;background:#f4f7fe;border:1px solid #b9c9ee;border-radius:8px;align-items:center;gap:5px;padding:5px 10px;font-size:12px;font-weight:600;line-height:16px;transition:all .12s;display:inline-flex}.personal-manager-conversation-btn:hover{background:var(--pw-blue-soft);border-color:var(--pw-blue)}.personal-manager-conversation-link{min-height:32px;color:var(--pw-blue);cursor:pointer;background:0 0;border:0;border-radius:7px;align-items:center;padding:5px 8px;font-size:14px;font-weight:500;line-height:20px;transition:background .12s;display:inline-flex}.personal-manager-conversation-link:hover{background:var(--pw-blue-soft)}.personal-manager-conversation-close{width:32px;height:32px;color:var(--pw-faint);cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;padding:0;transition:all .12s;display:inline-flex}.personal-manager-conversation-close:hover{color:#ef4444;background:#fee2e2}.personal-manager-conversation-messages{gap:7px;max-height:220px;display:grid;overflow-y:auto}.personal-manager-conversation-messages article{background:#f5f7fc;border-radius:10px;grid-template-columns:86px minmax(0,1fr);gap:10px;padding:10px 12px;font-size:14px;line-height:20px;display:grid}.personal-manager-conversation-messages article.is-user{background:#edf3ff}.personal-manager-conversation-messages article strong{color:var(--pw-muted);font-size:12px;font-weight:500;line-height:16px}.personal-manager-conversation-bubble{min-width:0}.personal-manager-conversation-bubble p{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.personal-manager-conversation-bubble .personal-md{font-size:14px;line-height:20px}.personal-manager-conversation-bubble small{color:var(--pw-blue);margin-top:4px;font-size:12px;line-height:16px;display:inline-block}.personal-quick-prompts{flex-wrap:wrap;gap:8px;margin-bottom:9px;display:flex}.personal-quick-prompts button{border:1px solid var(--pw-line-strong);min-height:32px;color:var(--pw-muted);cursor:pointer;background:#fff;border-radius:99px;align-items:center;gap:6px;padding:5px 12px;font-size:12.5px;transition:all .14s;display:inline-flex}.personal-quick-prompts button:hover{border-color:var(--pw-blue);color:var(--pw-blue-ink)}.personal-quick-prompts button:disabled{opacity:.45;cursor:default}.personal-goal-draft-status{color:var(--pw-muted);background:#f5f7ff;border:1px solid #cfd9f5;border-radius:10px;align-items:center;gap:8px;margin-bottom:9px;padding:8px 11px;font-size:11px;display:flex}.personal-goal-draft-status strong{color:var(--pw-text)}.personal-channel-composer{border:1px solid var(--pw-line-strong);background:#fff;border-radius:16px;grid-template-columns:auto 36px minmax(0,1fr) 40px;align-items:center;min-height:56px;padding:7px 7px 7px 14px;transition:border-color .15s,box-shadow .15s;display:grid;box-shadow:0 2px 10px #1e1c1412}.personal-channel-composer:focus-within{border-color:var(--pw-blue);box-shadow:0 0 0 3px #2f66e921,0 2px 10px #1e1c1412}.personal-channel-composer>span{color:#535b68;align-items:center;gap:7px;padding-right:12px;font-size:12.5px;font-weight:650;display:flex}.personal-channel-composer textarea{resize:none;border:0;border-left:1px solid var(--pw-line);width:100%;max-height:120px;color:inherit;font:inherit;background:0 0;outline:0;padding:9px 12px;line-height:1.4}.personal-channel-composer>button,.personal-correction-composer button{background:var(--pw-blue);color:#fff;cursor:pointer;border:0;border-radius:12px;place-items:center;width:40px;height:40px;display:grid;box-shadow:0 2px 6px #2f66e952}.personal-channel-composer>button:hover{background:var(--pw-blue-ink)}.personal-channel-composer>button:disabled,.personal-correction-composer button:disabled{opacity:.4;cursor:default;box-shadow:none}.personal-channel-composer>.personal-composer-attach{width:34px;height:34px;color:var(--pw-muted);box-shadow:none;background:0 0;border-radius:9px}.personal-channel-composer>.personal-composer-attach:hover{background:var(--pw-blue-soft);color:var(--pw-blue-ink)}.personal-composer-images{gap:8px;margin:0 0 8px;display:flex;overflow-x:auto}.personal-composer-images figure{flex:0 0 74px;height:58px;margin:0;position:relative}.personal-composer-images img{object-fit:cover;border:1px solid var(--pw-line-strong);background:#fff;border-radius:10px;width:100%;height:100%}.personal-composer-images button{border:1px solid var(--pw-line-strong);width:20px;height:20px;color:var(--pw-text);cursor:pointer;background:#fff;border-radius:50%;place-items:center;padding:0;display:grid;position:absolute;top:-5px;right:-5px;box-shadow:0 1px 4px #1e1c142e}.personal-composer-error{color:var(--pw-red);margin:0 0 7px;font-size:11.5px}.personal-context-drawer{grid-template-rows:auto minmax(0,1fr);height:100vh;display:grid}.personal-drawer-header{border-bottom:1px solid var(--pw-line);justify-content:space-between;align-items:flex-start;min-height:84px;padding:20px 18px 16px;display:flex}.personal-drawer-header h2{letter-spacing:-.01em;margin:0;font-size:15.5px;font-weight:700}.personal-drawer-header p{color:var(--pw-faint);letter-spacing:.07em;text-transform:uppercase;margin:4px 0 0;font-size:11px;font-weight:650}.personal-drawer-close{flex:0 0 44px;width:44px;height:44px;margin-top:2px}.personal-drawer-body{padding:18px;overflow:auto}.personal-context-drawer[data-context-kind=todo]{background:#fbfbfc}.personal-context-drawer[data-context-kind=todo] .personal-drawer-header{background:#fff;min-height:68px;padding:11px 22px}.personal-context-drawer[data-context-kind=todo] .personal-drawer-header h2{font-size:14px}.personal-context-drawer[data-context-kind=todo] .personal-drawer-header p{text-overflow:ellipsis;white-space:nowrap;max-width:330px;overflow:hidden}.personal-drawer-header-actions{align-items:center;gap:6px;display:flex}.personal-drawer-header-actions .personal-icon-button{flex:none}.personal-context-drawer[data-context-kind=todo] .personal-drawer-body{padding:0}.personal-task-inspector-summary{border-bottom:1px solid var(--pw-line);background:#fff;padding:24px 24px 20px}.personal-task-inspector-summary h3{letter-spacing:-.015em;overflow-wrap:anywhere;margin:14px 0 0;font-size:18px;font-weight:680;line-height:1.55}.personal-task-inspector-status{flex-wrap:wrap;align-items:center;gap:7px;display:flex}.personal-task-inspector-status>span{color:#62697a;background:#f1f2f5;border-radius:6px;align-items:center;gap:6px;min-height:24px;padding:2px 8px;font-size:11px;font-weight:650;display:inline-flex}.personal-task-inspector-status>span:first-child{padding-left:7px}.personal-task-inspector-status i{background:var(--pw-blue);border-radius:50%;width:7px;height:7px}.personal-task-inspector-status .is-done{background:var(--pw-green-bg);color:var(--pw-green)}.personal-task-inspector-status .is-done i{background:var(--pw-green)}.personal-task-inspector-status .is-blocked{background:var(--pw-red-bg);color:var(--pw-red)}.personal-task-inspector-status .is-blocked i{background:var(--pw-red)}.personal-task-inspector-fields{background:#fff;padding:20px 24px 22px}.personal-task-inspector-fields h4{color:var(--pw-text);margin:0 0 9px;font-size:12px;font-weight:700}.personal-task-inspector-fields dl{border-top:1px solid var(--pw-line);margin:0}.personal-task-inspector-fields dl div{border-bottom:1px solid var(--pw-line);grid-template-columns:92px minmax(0,1fr);gap:14px;min-height:44px;padding:11px 0;font-size:12px;line-height:1.55;display:grid}.personal-task-inspector-fields dt{color:var(--pw-muted)}.personal-task-inspector-fields dd{color:var(--pw-text);overflow-wrap:anywhere;margin:0}.personal-task-inspector-actions{border-top:1px solid var(--pw-line-strong);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fffffff5;grid-template-columns:auto minmax(170px,1fr);gap:10px;padding:13px 18px;display:grid;position:sticky;bottom:0;box-shadow:0 -8px 26px #1e284012}.personal-task-inspector-actions>.personal-primary-action{min-height:40px;margin:0}.personal-task-management{position:relative}.personal-task-management>summary{border:1px solid var(--pw-line-strong);min-width:128px;min-height:40px;color:var(--pw-text);cursor:pointer;background:#fff;border-radius:9px;justify-content:center;align-items:center;gap:7px;padding:0 14px;font-size:12px;font-weight:650;list-style:none;display:flex}.personal-task-management>summary::-webkit-details-marker{display:none}.personal-task-management[open]>summary{color:var(--pw-blue-ink);border-color:#9db3e9}.personal-task-management>div{border:1px solid var(--pw-line-strong);background:#fff;border-radius:12px;gap:9px;width:390px;padding:14px;display:grid;position:absolute;bottom:calc(100% + 9px);left:0;box-shadow:0 16px 38px #1e284029}.personal-task-management>div>strong{color:var(--pw-muted);font-size:10.5px;font-weight:650}.personal-task-management-secondary{border-top:1px solid var(--pw-line);grid-template-columns:1fr 1fr;gap:7px;padding-top:4px;display:grid}.personal-task-management-secondary button{border:1px solid var(--pw-line-strong);min-height:34px;color:var(--pw-text);cursor:pointer;background:#fff;border-radius:8px;font-size:11.5px}.personal-task-management-secondary button:hover{background:#f6f7fa}.personal-task-completed-note{background:var(--pw-green-bg);color:var(--pw-green);border:1px solid #cde4d8;border-radius:10px;align-items:center;gap:10px;margin:12px 24px 24px;padding:12px 14px;display:flex}.personal-task-completed-note>span{gap:2px;display:grid}.personal-task-completed-note strong{font-size:12px}.personal-task-completed-note small{color:#5d786c;font-size:10.5px}.personal-detail-card,.personal-correction-panel{border:1px solid var(--pw-line);background:#fff;border-radius:14px;padding:15px}.personal-proposal-card{background:#f5f8ff;border:1px solid #c3d3f9;border-radius:14px;padding:16px}.personal-proposal-card>small{color:#5270bd;letter-spacing:.05em;font-size:11px;font-weight:650}.personal-proposal-card h3{margin:8px 0;font-size:15.5px}.personal-proposal-card p{color:#5f6570;font-size:12px;line-height:1.55}.personal-proposal-card dl{gap:8px;margin:14px 0 0;display:grid}.personal-proposal-card dl div{grid-template-columns:82px minmax(0,1fr);gap:10px;font-size:11.5px;display:grid}.personal-proposal-card dt{color:var(--pw-faint)}.personal-proposal-card dd{overflow-wrap:anywhere;margin:0}.personal-context-drawer .personal-team-plan-result{border-color:var(--pw-line);background:var(--pw-card)}.personal-context-drawer .personal-team-plan-result h3{margin:0;font-size:18px;font-weight:600}.personal-context-drawer .personal-team-plan-result>p{color:var(--pw-muted);margin:16px 0 0;font-weight:400}.personal-team-plan-result .personal-team-plan-assignments{gap:16px;margin:20px 0}.personal-team-plan-result .personal-team-plan-assignments>div{grid-template-columns:minmax(0,1fr);gap:4px;font-size:13px}.personal-team-plan-result .personal-team-plan-assignments dt{color:var(--pw-muted);font-size:12px}.personal-team-plan-result .is-pending dd{color:var(--pw-muted)}.personal-team-plan-result details{border-top:1px solid var(--pw-line);margin-top:16px;padding-top:12px}.personal-team-plan-result summary{cursor:pointer;color:var(--pw-muted);font-size:12px}.personal-proposal-state{border-radius:9px;align-items:center;gap:7px;margin:10px 0 0;padding:10px 12px;font-size:11px;display:flex}.personal-proposal-state.is-applied{background:var(--pw-green-bg);color:var(--pw-green)}.personal-proposal-state.is-stale,.personal-proposal-state.is-error{background:var(--pw-red-bg);color:var(--pw-red)}.personal-proposal-state.is-gated{color:#825a00;background:#fff6df;gap:6px;display:grid}.personal-proposal-state.is-gated>span{gap:3px;display:grid}.personal-proposal-state.is-gated small{line-height:1.5}.personal-workspace-candidates{gap:8px;margin-top:10px;display:grid}.personal-workspace-candidates button{color:#263e76;cursor:pointer;text-align:left;background:#fff;border:1px solid #c3d3f9;border-radius:10px;gap:3px;min-height:48px;padding:9px 12px;display:grid}.personal-workspace-candidates small{color:var(--pw-muted)}.personal-detail-card.is-attention{background:#fffdf7;border-color:#f1d8ac}.personal-detail-card small{color:var(--pw-muted);font-size:11px}.personal-detail-card h3{margin:7px 0;font-size:14.5px;line-height:1.5}.personal-detail-card p,.personal-correction-panel p{color:var(--pw-muted);font-size:12px;line-height:1.55}.personal-detail-card dl{gap:9px;margin:14px 0 0;display:grid}.personal-detail-card dl div{grid-template-columns:74px minmax(0,1fr);gap:10px;font-size:12px;display:grid}.personal-detail-card dt{color:var(--pw-faint)}.personal-detail-card dd{overflow-wrap:anywhere;margin:0}.personal-run-drawer-tabs{background:#efefec;border-radius:11px;grid-template-columns:1fr 1fr;gap:4px;padding:4px;display:grid}.personal-run-drawer-tabs button{min-height:36px;color:var(--pw-muted);cursor:pointer;background:0 0;border:0;border-radius:8px;padding:0 8px;font-size:12px;font-weight:650}.personal-run-drawer-tabs button[aria-selected=true]{color:var(--pw-text);background:#fff;box-shadow:0 1px 4px #1e1c141f}.personal-session-summary{margin-top:12px}.personal-session-message-record{margin-top:14px}.personal-session-message-record>h3{color:var(--pw-faint);letter-spacing:.06em;text-transform:uppercase;margin:0 0 10px;font-size:11px}.personal-session-message-record ol{gap:0;margin:0;padding:0;list-style:none;display:grid}.personal-session-message-record li{grid-template-columns:13px minmax(0,1fr);gap:9px;padding-bottom:15px;display:grid}.personal-session-message-record li>i,.personal-session-active-step>i{background:var(--pw-green);width:9px;height:9px;box-shadow:0 0 0 3px var(--pw-green-bg);border-radius:50%;margin-top:5px}.personal-session-message-record li.is-user>i{background:var(--pw-blue);box-shadow:0 0 0 3px var(--pw-blue-soft)}.personal-session-message-record li.is-error>i{background:var(--pw-red);box-shadow:0 0 0 3px var(--pw-red-bg)}.personal-session-message-record li>div{border-bottom:1px solid var(--pw-line);gap:5px;min-width:0;padding:0 0 15px;display:grid}.personal-session-message-record li header{justify-content:space-between;align-items:center;gap:8px;display:flex}.personal-session-message-record li strong{font-size:12px}.personal-session-message-record time{color:var(--pw-faint);font-size:10px}.personal-session-message-record li p{max-height:180px;color:var(--pw-muted);white-space:pre-wrap;margin:0;font-size:11.5px;line-height:1.6;overflow:auto}.personal-session-empty{border:1px dashed var(--pw-line-strong);color:var(--pw-muted);text-align:center;border-radius:10px;margin:0;padding:18px 12px;font-size:11.5px}.personal-session-active-step{grid-template-columns:13px minmax(0,1fr);align-items:start;gap:9px;padding-top:4px;display:grid}.personal-session-active-step>i{background:var(--pw-blue);box-shadow:0 0 0 3px var(--pw-blue-soft);animation:1.4s ease-in-out infinite personal-session-pulse}.personal-session-active-step>span{gap:3px;display:grid}.personal-session-active-step strong{font-size:12px}.personal-session-active-step small{color:var(--pw-muted);font-size:10.5px}@keyframes personal-session-pulse{50%{opacity:.35}}.personal-todo-actions{grid-template-columns:1fr 1fr;gap:8px;margin-top:12px;display:grid}.personal-todo-actions>button{margin-top:0}.personal-todo-actions-title{color:var(--pw-faint);letter-spacing:.06em;grid-column:1/-1;font-size:11px;font-weight:650}.personal-todo-actions .personal-primary-action,.personal-todo-actions .personal-compact-menu{grid-column:1/-1;margin-top:0}.personal-inline-agent-select{border:1px solid var(--pw-line);color:var(--pw-muted);border-radius:10px;grid-column:1/-1;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;padding:8px;font-size:11px;display:grid}.personal-inline-agent-select select{border:1px solid var(--pw-line-strong);color:#333;background:#fff;border-radius:8px;min-width:0;min-height:36px;padding:0 8px}.personal-inline-agent-select .personal-secondary-action{width:auto;min-height:36px;margin:0;padding:0 12px}.personal-inline-resume-when input{border:1px solid var(--pw-line-strong);color:#333;background:#fff;border-radius:8px;min-width:0;min-height:36px;padding:0 8px}.personal-inline-resume-when small{color:var(--pw-faint);grid-column:2/-1}.personal-primary-action,.personal-secondary-action,.personal-danger-action{cursor:pointer;border-radius:11px;justify-content:center;align-items:center;gap:8px;width:100%;min-height:42px;margin-top:12px;font-size:13.5px;font-weight:650;display:flex}.personal-primary-action{border:1px solid var(--pw-blue);background:var(--pw-blue);color:#fff;box-shadow:0 2px 6px #2f66e947}.personal-primary-action:hover{background:var(--pw-blue-ink)}.personal-secondary-action{border:1px solid var(--pw-line-strong);color:var(--pw-text);background:#fff}.personal-secondary-action:hover{border-color:var(--pw-faint)}.personal-danger-action{color:var(--pw-red);background:#fff;border:1px solid #efd2cd}.personal-danger-action:hover{background:var(--pw-red-bg)}.personal-primary-action:disabled,.personal-secondary-action:disabled,.personal-danger-action:disabled{opacity:.46;cursor:default;box-shadow:none}.personal-drawer-action-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.personal-correction-panel{margin-top:12px}.personal-correction-panel header{justify-content:space-between;align-items:center;display:flex}.personal-correction-panel header span{align-items:center;gap:7px;font-size:12px;font-weight:700;display:flex}.personal-correction-panel header button{color:var(--pw-muted);cursor:pointer;background:0 0;border:0}.personal-correction-composer{border:1px solid var(--pw-line-strong);border-radius:12px;position:relative;overflow:hidden}.personal-correction-composer:focus-within{border-color:var(--pw-blue)}.personal-correction-composer textarea{resize:vertical;width:100%;min-height:84px;font:inherit;border:0;outline:0;padding:10px 56px 10px 12px;font-size:12.5px}.personal-correction-composer button{border-radius:10px;width:34px;height:34px;position:absolute;bottom:6px;right:6px}.personal-recovery-panel{background:#fffaf0;border:1px solid #eccf94;border-radius:12px;margin-top:12px;padding:14px}.personal-recovery-panel>strong{font-size:13px}.personal-recovery-panel>p,.personal-preview-unavailable{color:var(--pw-muted);font-size:12px;line-height:1.5}.personal-compact-menu{margin-top:12px;position:relative}.personal-compact-menu>summary{border:1px solid var(--pw-line-strong);cursor:pointer;background:#fff;border-radius:11px;justify-content:center;align-items:center;gap:8px;min-height:42px;padding:0 12px;font-size:12.5px;font-weight:650;list-style:none;display:flex}.personal-compact-menu>summary::-webkit-details-marker{display:none}.personal-compact-menu[open]>summary{border-color:var(--pw-faint)}.personal-compact-menu>div{border:1px solid var(--pw-line);background:#fff;border-radius:11px;margin-top:6px;padding:6px;display:grid;box-shadow:0 8px 24px #1e1c141a}.personal-compact-menu>div button{min-height:40px;color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;border-radius:8px;align-items:center;gap:8px;padding:0 10px;display:flex}.personal-compact-menu>div button:hover{background:#f5f4f1}.personal-compact-menu>div button:disabled{color:var(--pw-faint);cursor:default;opacity:.55}.personal-safe-preview{border:1px solid var(--pw-line);color:#333943;white-space:pre-wrap;overflow-wrap:anywhere;background:#f7f6f3;border-radius:11px;max-height:280px;margin:12px 0 0;padding:14px;font:12px/1.6 Geist Mono,SFMono-Regular,Consolas,monospace;overflow:auto}.personal-report-detail{border:1px solid var(--pw-line);background:#fff;border-radius:14px;margin-top:12px;padding:14px}.personal-report-detail>header{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.personal-report-detail>header span{background:var(--pw-blue-soft);color:var(--pw-blue-ink);border-radius:10px;flex-direction:column;gap:2px;padding:10px;font-size:10px;font-weight:650;display:flex}.personal-report-detail>header strong{font-size:18px}.personal-report-detail>p{color:var(--pw-muted);margin:10px 0;font-size:11px}.personal-report-detail ol{gap:8px;margin:0;padding:0;list-style:none;display:grid}.personal-report-detail li{border:1px solid var(--pw-line);border-radius:10px;gap:4px;padding:10px;display:grid}.personal-report-detail li[data-change-kind=changed]{background:#fffaf0;border-color:#e8d3a5}.personal-report-detail li small{color:var(--pw-muted);text-transform:uppercase;font-size:10px}.personal-report-detail li strong{font-size:12px;line-height:1.45}.personal-report-detail li p{color:var(--pw-muted);margin:0;font-size:11px;line-height:1.5}.personal-report-detail>footer{color:var(--pw-faint);overflow-wrap:anywhere;gap:4px;margin-top:10px;font:10px/1.5 Geist Mono,SFMono-Regular,Consolas,monospace;display:grid}.personal-execution-history{margin-top:18px}.personal-execution-history h3{letter-spacing:.07em;text-transform:uppercase;color:var(--pw-faint);margin:0 0 10px;font-size:11.5px;font-weight:650}.personal-execution-history>p{color:var(--pw-muted);font-size:12px}.personal-execution-history ol{border-top:1px solid var(--pw-line);margin:0;padding:0;list-style:none}.personal-execution-history li{border-bottom:1px solid var(--pw-line);justify-content:space-between;align-items:center;gap:12px;min-height:50px;display:flex}.personal-execution-history li>span{gap:3px;display:grid}.personal-execution-history li strong{font-size:12px}.personal-execution-history li small{color:var(--pw-muted);font-size:10px}.personal-execution-history li em{color:var(--pw-muted);font-size:10px;font-style:normal}.personal-execution-history li em.is-completed{color:var(--pw-green)}.personal-execution-history li em.is-failed{color:var(--pw-red)}.personal-mobile-back{display:none}.personal-message:not(.is-user)>div{border:1px solid var(--pw-line);background:var(--pw-card);border-radius:4px 16px 16px;flex:1;min-width:0;padding:10px 14px}.personal-md{gap:8px;margin-top:5px;font-size:13.5px;line-height:1.7;display:grid}.personal-md p{white-space:normal;overflow-wrap:anywhere;margin:0}.personal-md-heading{letter-spacing:-.01em;font-weight:700}.personal-md-heading.is-h1{font-size:15.5px}.personal-md-heading.is-h2{font-size:14.5px}.personal-md-heading.is-h3,.personal-md-heading.is-h4{font-size:13.5px}.personal-md-list{gap:4px;margin:0;padding-left:20px;display:grid}.personal-md ul.personal-md-list{list-style-type:disc}.personal-md ol.personal-md-list{list-style-type:decimal}.personal-md-list li{overflow-wrap:anywhere;padding-left:2px}.personal-md-list li::marker{color:var(--pw-faint)}.personal-md-code{border:1px solid var(--pw-line);overflow-wrap:anywhere;background:#f5f4f1;border-radius:6px;padding:1px 5px;font:12px/1.5 SF Mono,ui-monospace,Menlo,Consolas,monospace}.personal-md-pre{border:1px solid var(--pw-line);background:#f7f6f3;border-radius:11px;margin:0;padding:12px 14px;overflow-x:auto}.personal-md-pre code{color:#333943;white-space:pre;font:12px/1.65 SF Mono,ui-monospace,Menlo,Consolas,monospace}.personal-md-link{color:var(--pw-blue-ink);border-bottom:1px solid #c3d3f9;text-decoration:none}.personal-md-link:hover{border-bottom-color:var(--pw-blue-ink)}.personal-agent-persona-head{align-items:center;gap:12px;display:flex}.personal-agent-avatar{color:#fff;background:linear-gradient(135deg,#2f66e9,#6f9bff);border-radius:14px;flex:0 0 46px;place-items:center;height:46px;font-size:19px;font-weight:700;display:grid;box-shadow:0 2px 8px #2f66e942}.personal-agent-persona-id{flex:1;min-width:0}.personal-agent-persona-id h3{margin:0}.personal-agent-persona-id p{margin:2px 0 0}.personal-agent-health{border-radius:99px;flex:none;padding:2.5px 10px;font-size:11px;font-weight:650}.personal-agent-health.is-ok{background:var(--pw-green-bg);color:var(--pw-green)}.personal-agent-health.is-off,.personal-row-status.is-blocking{background:var(--pw-red-bg);color:var(--pw-red)}.personal-row-status.is-pending{background:var(--pw-amber-bg);color:var(--pw-amber)}.personal-row-status.is-failed{background:var(--pw-red-bg);color:var(--pw-red)}.personal-row-status.is-completed{background:var(--pw-green-bg);color:var(--pw-green)}.personal-row-status.is-queued,.personal-row-status.is-waiting,.personal-row-status.is-interrupted{color:var(--pw-muted);background:#f2f1ed}.personal-diagnostics-trigger{border:0;border-top:1px solid var(--pw-line);width:100%;color:var(--pw-muted);cursor:pointer;background:0 0;justify-content:space-between;align-items:center;margin-top:18px;padding:12px 0;font-size:12.5px;display:flex}.personal-diagnostics-trigger svg{transition:transform .16s}.personal-diagnostics-trigger svg.is-open{transform:rotate(180deg)}.personal-diagnostics{color:var(--pw-muted);overflow-wrap:anywhere;background:#f5f4f1;border-radius:10px;gap:7px;padding:12px;font-size:10.5px;display:grid}.personal-copy-feedback{color:var(--pw-green);margin:7px 0 0;font-size:11px}.personal-copy-feedback.is-error{color:var(--pw-red)}@media (width<=1300px){.personal-workspace-shell.has-drawer .personal-live-indicator{display:none}.personal-workspace-shell.has-drawer .personal-channel-title p{max-width:260px}.personal-home-lanes{grid-template-columns:repeat(2,minmax(190px,1fr))}}@media (width<=1100px){.personal-machine-layout{grid-template-columns:1fr;gap:14px}.personal-machine-namespaces nav{overscroll-behavior-x:contain;scroll-snap-type:x proximity;display:flex;overflow-x:auto}.personal-machine-namespaces button{scroll-snap-align:start;flex:0 0 180px}.personal-machine-summary{flex-wrap:wrap;align-items:flex-start}.personal-machine-editor-bar{flex-direction:column;align-items:stretch}.personal-machine-editor-mode{width:100%}.personal-machine-editor-mode button{flex:1 1 0}.personal-machine-editor fieldset{grid-template-columns:1fr}.personal-machine-editor fieldset label:last-child{grid-column:auto}.personal-machine-preview dl{grid-template-columns:1fr}}@media (width<=1050px){.personal-workspace-shell,.personal-workspace-shell.has-drawer{grid-template-columns:minmax(0,1fr)}.personal-workspace-sidebar{z-index:40;width:min(310px,86vw);display:none;position:fixed;inset:0 auto 0 0;box-shadow:18px 0 50px #1e1c1429}.personal-workspace-shell.mobile-sidebar-open .personal-workspace-sidebar{display:block}.personal-sidebar-backdrop{z-index:35;cursor:default;background:#14182047;border:0;display:block;position:fixed;inset:0}.personal-icon-button.personal-mobile-menu{flex:0 0 36px;display:inline-grid}.personal-workspace-drawer{z-index:30;width:min(410px,90vw);position:fixed;inset:0 0 0 auto}.personal-workspace-drawer[data-drawer-mode=inspector],.personal-workspace-drawer[data-drawer-mode=inspector-full]{width:min(520px,92vw);position:fixed;inset:0 0 0 auto;box-shadow:-18px 0 44px #1e284024}.personal-run-row{grid-template-columns:36px minmax(0,1fr) auto 16px}.personal-run-identity,.personal-run-progress{display:none}.personal-home-lanes{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=720px){.personal-workspace-shell,.personal-workspace-shell.has-drawer{grid-template-columns:1fr}.personal-workspace-shell,.personal-workspace-main,.personal-channel{width:100%;max-width:100vw;overflow-x:hidden}.personal-workspace-sidebar{z-index:40;width:min(310px,86vw);display:none;position:fixed;inset:0 auto 0 0;box-shadow:18px 0 50px #1e1c1429}.personal-workspace-shell.mobile-sidebar-open .personal-workspace-sidebar{display:block}.personal-icon-button.personal-mobile-menu{flex:0 0 36px;display:inline-grid}.personal-channel-header{grid-template-columns:36px minmax(0,1fr) auto;gap:10px;min-height:60px;padding:10px 14px;display:grid}.personal-channel-title p{display:none}.personal-channel-title p.personal-manager-execution{display:flex}.personal-channel-actions{min-width:0}.personal-agent-select{min-width:0;max-width:132px}.personal-channel-actions>.personal-icon-button{display:none}.personal-goal-tools-trigger{width:40px;height:40px;padding:0}.personal-goal-tools-trigger span,.personal-goal-tools-trigger>svg:last-child{display:none}.personal-goal-tools-menu{position:fixed;top:60px;right:14px}.personal-goal-tabs{order:4;grid-column:1/-1;align-self:auto;margin-left:0;overflow-x:auto}.personal-channel-actions .personal-live-indicator{display:none}.personal-channel-scroll,.personal-composer-wrap{padding-left:14px;padding-right:14px}.personal-channel-scroll:has(.personal-task-board){overflow-y:auto}.personal-task-board{height:auto;min-height:100%}.personal-task-kanban,.personal-workspace-shell.has-drawer .personal-task-kanban,.personal-workspace-shell.has-task-inspector .personal-task-kanban{grid-template-columns:minmax(0,1fr);width:100%;height:auto}.personal-task-kanban .personal-object-list{min-height:auto}.personal-task-lane-scroll,.personal-task-lane-scroll.has-overflow-before,.personal-task-lane-scroll.has-overflow-after{min-height:auto;box-shadow:none;scrollbar-gutter:auto;flex:none;padding-right:8px;overflow:visible}.personal-quick-prompts{overflow-x:auto}.personal-quick-prompts button{flex:none;min-height:36px}.personal-manager-conversation-tray>header{flex-wrap:wrap;align-items:flex-start}.personal-manager-conversation-actions{justify-content:flex-end;width:100%}.personal-manager-conversation-messages article{grid-template-columns:minmax(0,1fr);gap:4px}.personal-timeline-row,.personal-output-row{grid-template-columns:34px minmax(0,1fr) 14px;gap:9px;padding:10px 12px}.personal-timeline-row>time,.personal-timeline-row>.personal-row-status,.personal-timeline-row .personal-priority-dot{display:none}.personal-channel-composer{grid-template-columns:40px 36px minmax(0,1fr) 40px}.personal-task-chat-receipt{grid-template-columns:32px minmax(0,1fr);padding:11px}.personal-task-lane-filter{flex-direction:column;align-items:stretch;gap:8px}.personal-task-lane-filter label,.personal-task-lane-filter select{width:100%;max-width:none}.personal-capability-layout,.personal-capability-value-grid,.personal-capability-fields,.personal-capability-linked-setting{grid-template-columns:minmax(0,1fr)}.personal-capability-linked-setting .personal-notification-toggle{justify-self:start}.personal-capability-layout{grid-template-rows:auto minmax(0,1fr)}.personal-capability-list{min-width:0;max-height:90px;padding:3px;display:flex;overflow-x:auto}.personal-capability-list button{flex:0 0 180px}.personal-task-chat-icon{width:32px;height:32px}.personal-task-chat-receipt footer{grid-column:1/-1;justify-content:flex-end}.personal-channel-composer>span{justify-content:center;min-width:0;padding:0;font-size:0}.personal-composer-wrap{max-width:100vw}.personal-workspace-drawer,.personal-workspace-drawer[data-drawer-mode=inspector],.personal-workspace-drawer[data-drawer-mode=inspector-full]{width:100vw}.personal-inspector-size{display:none!important}.personal-context-drawer{height:100dvh}.personal-drawer-body{padding-bottom:max(18px, env(safe-area-inset-bottom))}.personal-composer-wrap{padding-bottom:max(16px, env(safe-area-inset-bottom))}.personal-mobile-back{display:block}.personal-desktop-close{display:none}.personal-goal-tabs button{min-height:34px}.personal-correction-composer{padding-bottom:2px}.personal-correction-composer textarea{min-height:84px;padding-right:56px;padding-bottom:max(14px, env(safe-area-inset-bottom))}.personal-correction-composer button{width:40px;height:40px}.personal-todo-actions{grid-template-columns:1fr}.personal-task-management>div{width:calc(100vw - 28px)}.personal-home-lanes{grid-template-columns:1fr}.personal-home-lane{min-height:0}.personal-session-record,.personal-session-record dl{grid-template-columns:1fr}.personal-session-record>.personal-secondary-action{grid-area:auto/1}.personal-settings-page{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr)}.personal-settings-sidebar{border-right:0;border-bottom:1px solid var(--pw-line);gap:10px;height:auto;max-height:30dvh;padding:12px 14px;position:static;overflow:auto}.personal-settings-title{display:none}.personal-settings-tabs{display:flex;overflow-x:auto}.personal-settings-tabs button{flex:0 0 180px}.personal-settings-body{padding:20px 14px}.personal-settings-header{align-items:center;gap:14px}.personal-settings-header h1{font-size:24px}.personal-machine-layout{grid-template-columns:1fr;gap:14px}.personal-machine-namespaces nav{overscroll-behavior-x:contain;scroll-snap-type:x proximity;display:flex;overflow-x:auto}.personal-machine-namespaces button{scroll-snap-align:start;flex:0 0 180px}.personal-machine-summary{align-items:flex-start}.personal-machine-editor-bar{flex-direction:column;align-items:stretch}.personal-machine-editor-mode{width:100%}.personal-machine-editor-mode button{flex:1 1 0}.personal-machine-summary dl{flex-direction:column;gap:8px}.personal-machine-editor fieldset{grid-template-columns:1fr}.personal-machine-editor fieldset label:last-child{grid-column:auto}.personal-machine-preview dl{grid-template-columns:1fr}.personal-machine-rollback{flex-direction:column;align-items:stretch}.personal-machine-rollback .personal-secondary-action{width:100%}.personal-lark-settings.is-embedded .personal-lark-tabs{overflow-x:auto}.personal-lark-settings.is-embedded .personal-lark-tabs button{flex:none}}@media (prefers-reduced-motion:reduce){.personal-timeline-row,.personal-diagnostics-trigger svg,.personal-workspace-sidebar,.personal-stopped-goals>summary>svg:first-child,.personal-subagent-switch>span,.personal-subagent-switch>span:after{transition:none}.personal-goal-lifecycle.is-pending svg,.personal-spin{animation:none}}.personal-workspace-shell[data-pw-theme=loopx],.personal-settings-page[data-pw-theme=loopx]{--pw-bg:#fafafa;--pw-card:#fff;--pw-line:#ebebeb;--pw-line-strong:#dedede;--pw-muted:#6b6b6b;--pw-faint:#8f8f8f;--pw-text:#171717;--pw-blue:#0070f3;--pw-blue-ink:#0060d1;--pw-blue-soft:#edf6ff;--pw-amber:#9a6200;--pw-amber-bg:#fff7df;--pw-red:#d90000;--pw-red-bg:#fff0f0;--pw-green:#197342;--pw-green-bg:#edf9f1;font-family:Geist Variable,Geist,Inter,Helvetica Neue,Arial,PingFang SC,Microsoft YaHei,sans-serif}.personal-workspace-shell[data-pw-theme=loopx] .personal-workspace-sidebar,.personal-settings-page[data-pw-theme=loopx] .personal-settings-sidebar{background:#fff}.personal-workspace-shell[data-pw-theme=loopx] .personal-channel-header{box-shadow:none;background:#fafafaf0}.personal-workspace-shell[data-pw-theme=loopx] .personal-channel-title h1{letter-spacing:0;font-size:20px;font-weight:600;line-height:28px}.personal-workspace-shell[data-pw-theme=loopx] .personal-sidebar-section-title{letter-spacing:0;font-size:12px;font-weight:500;line-height:16px}.personal-workspace-shell[data-pw-theme=loopx] .personal-goal-link-copy strong,.personal-workspace-shell[data-pw-theme=loopx] .personal-home-lane>header span,.personal-workspace-shell[data-pw-theme=loopx] .personal-home-goal-card>strong{font-size:14px;font-weight:600;line-height:20px}.personal-workspace-shell[data-pw-theme=loopx] .personal-goal-link-copy small,.personal-workspace-shell[data-pw-theme=loopx] .personal-home-lane>p,.personal-workspace-shell[data-pw-theme=loopx] .personal-home-goal-card>p{font-size:12px;line-height:16px}.personal-workspace-shell[data-pw-theme=loopx] .personal-select-trigger,.personal-workspace-shell[data-pw-theme=loopx] .personal-select-option{border-radius:6px}.personal-workspace-shell[data-pw-theme=loopx] .personal-workspace-drawer{box-shadow:none}.personal-workspace-shell[data-pw-theme=loopx] .personal-brand-mark{box-shadow:none;background:#171717;border-radius:6px}.personal-workspace-shell[data-pw-theme=loopx] .personal-manager-icon{color:#171717;background:#f2f2f2;border-radius:6px}.personal-workspace-shell[data-pw-theme=loopx] .personal-manager-greeting>span{color:#171717;background:#fff;border:1px solid #ebebeb;border-radius:6px}.personal-workspace-shell[data-pw-theme=loopx] .personal-manager-link,.personal-workspace-shell[data-pw-theme=loopx] .personal-goal-link,.personal-workspace-shell[data-pw-theme=loopx] .personal-sidebar-utility,.personal-settings-page[data-pw-theme=loopx] .personal-settings-back,.personal-settings-page[data-pw-theme=loopx] .personal-settings-tabs button{border-radius:6px}.personal-workspace-shell[data-pw-theme=loopx] .personal-manager-link:hover,.personal-workspace-shell[data-pw-theme=loopx] .personal-goal-link:hover,.personal-workspace-shell[data-pw-theme=loopx] .personal-sidebar-utility:hover,.personal-settings-page[data-pw-theme=loopx] .personal-settings-back:hover,.personal-settings-page[data-pw-theme=loopx] .personal-settings-tabs button:hover{background:#f2f2f2}.personal-workspace-shell[data-pw-theme=loopx] .personal-manager-link[aria-current=page],.personal-workspace-shell[data-pw-theme=loopx] .personal-goal-link[aria-current=page],.personal-settings-page[data-pw-theme=loopx] .personal-settings-tabs button[aria-current=page]{box-shadow:none;background:#f2f2f2}.personal-workspace-shell[data-pw-theme=loopx] .personal-goal-tabs,.personal-workspace-shell[data-pw-theme=loopx] .personal-status-source-modes{background:#f2f2f2;border-radius:6px}.personal-workspace-shell[data-pw-theme=loopx] .personal-goal-tabs button,.personal-workspace-shell[data-pw-theme=loopx] .personal-status-source-modes button{border-radius:4px}.personal-workspace-shell[data-pw-theme=loopx] .personal-goal-tabs button[aria-current=page],.personal-workspace-shell[data-pw-theme=loopx] .personal-status-source-modes button[aria-selected=true]{box-shadow:0 1px 2px #0000000f}.personal-workspace-shell[data-pw-theme=loopx] .personal-goal-tabs{background:0 0;border-radius:0;align-self:stretch;gap:20px;padding:0}.personal-workspace-shell[data-pw-theme=loopx] .personal-goal-tabs button{border-radius:0;min-height:46px;padding:0 1px;font-size:12px;font-weight:500;position:relative}.personal-workspace-shell[data-pw-theme=loopx] .personal-goal-tabs button[aria-current=page]{box-shadow:none;color:#171717;background:0 0}.personal-workspace-shell[data-pw-theme=loopx] .personal-goal-tabs button[aria-current=page]:after{content:"";background:#171717;height:2px;position:absolute;bottom:-1px;left:0;right:0}.personal-workspace-shell[data-pw-theme=loopx] .personal-sidebar-count{color:#4d4d4d;background:#f2f2f2}.personal-workspace-shell[data-pw-theme=loopx] .personal-goal-state-dot,.personal-workspace-shell[data-pw-theme=loopx] .personal-goal-row:nth-child(n) .personal-goal-state-dot{background:#f2f2f2;border:1px solid #ebebeb;border-radius:6px}.personal-workspace-shell[data-pw-theme=loopx] .personal-agent-select .personal-select-trigger,.personal-workspace-shell[data-pw-theme=loopx] .personal-read-only-source,.personal-workspace-shell[data-pw-theme=loopx] .personal-icon-button,.personal-workspace-shell[data-pw-theme=loopx] .personal-status-source-select .personal-select-trigger,.personal-settings-page[data-pw-theme=loopx] .personal-primary-action,.personal-settings-page[data-pw-theme=loopx] .personal-secondary-action{border-radius:6px}.personal-workspace-shell[data-pw-theme=loopx] .personal-home-lane,.personal-workspace-shell[data-pw-theme=loopx] .personal-timeline-row,.personal-workspace-shell[data-pw-theme=loopx] .personal-detail-card,.personal-settings-page[data-pw-theme=loopx] .personal-detail-card,.personal-settings-page[data-pw-theme=loopx] .personal-settings-card,.personal-settings-page[data-pw-theme=loopx] .personal-lark-app-card,.personal-settings-page[data-pw-theme=loopx] .personal-lark-table,.personal-settings-page[data-pw-theme=loopx] .personal-lark-topic-panel{box-shadow:none;border-radius:12px}.personal-workspace-shell[data-pw-theme=loopx] .personal-home-lanes{border-block:1px solid #ebebeb;gap:0}.personal-workspace-shell[data-pw-theme=loopx] .personal-home-lane{border:0;background:0 0;border-left:1px solid #ebebeb;border-radius:0;min-height:260px;padding:16px}.personal-workspace-shell[data-pw-theme=loopx] .personal-home-lane:first-child{border-left:0}.personal-workspace-shell[data-pw-theme=loopx] .personal-home-goal-card{box-shadow:none;border-radius:12px;transform:none}.personal-workspace-shell[data-pw-theme=loopx] .personal-home-goal-card:hover{box-shadow:none;border-color:#a1a1a1;transform:none}.personal-workspace-shell[data-pw-theme=loopx] .personal-channel-timeline{gap:8px}.personal-workspace-shell[data-pw-theme=loopx] .personal-timeline-row,.personal-workspace-shell[data-pw-theme=loopx] .personal-schedule-row{box-shadow:none;border-radius:12px}.personal-workspace-shell[data-pw-theme=loopx] .personal-timeline-row:hover,.personal-workspace-shell[data-pw-theme=loopx] .personal-schedule-row:hover{box-shadow:none;border-color:#a1a1a1}.personal-workspace-shell[data-pw-theme=loopx] .personal-row-icon{color:#4d4d4d;background:#f2f2f2;border:1px solid #ebebeb;border-radius:6px}.personal-workspace-shell[data-pw-theme=loopx] .personal-run-open-label{color:#4d4d4d}.personal-workspace-shell[data-pw-theme=loopx] .personal-run-progress b{background:#171717}.personal-workspace-shell[data-pw-theme=loopx] .personal-message.is-user{background:#f2f2f2;border-color:#dedede;border-radius:12px 12px 4px;padding:10px 12px}.personal-workspace-shell[data-pw-theme=loopx] .personal-message-avatar{color:#171717;background:#fff;border:1px solid #ebebeb;border-radius:6px}.personal-workspace-shell[data-pw-theme=loopx] .personal-message:not(.is-user)>div{box-shadow:none;border-radius:4px 12px 12px}.personal-workspace-shell[data-pw-theme=loopx] .personal-message p,.personal-workspace-shell[data-pw-theme=loopx] .personal-md{font-size:13px;line-height:1.65}.personal-workspace-shell[data-pw-theme=loopx] .personal-timeline-empty>span{color:#171717;background:#fff;border:1px solid #ebebeb;border-radius:12px}.personal-workspace-shell[data-pw-theme=loopx] .personal-proposal-row{box-shadow:none;background:#fff;border-color:#dedede;border-radius:12px}.personal-workspace-shell[data-pw-theme=loopx] .personal-proposal-row:hover{box-shadow:none;border-color:#a1a1a1}.personal-workspace-shell[data-pw-theme=loopx] .personal-proposal-row>span:first-child{color:#171717;background:#f2f2f2;border:1px solid #ebebeb;border-radius:6px}.personal-workspace-shell[data-pw-theme=loopx] .personal-proposal-row small,.personal-workspace-shell[data-pw-theme=loopx] .personal-proposal-row>b{color:#4d4d4d}.personal-workspace-shell[data-pw-theme=loopx] .personal-session-record{background:#fff;border-color:#dedede;border-radius:12px}.personal-workspace-shell[data-pw-theme=loopx] .personal-session-record>header span{color:#171717}.personal-workspace-shell[data-pw-theme=loopx] .personal-session-record dl div{background:#fafafa;border:1px solid #ebebeb;border-radius:6px}.personal-workspace-shell[data-pw-theme=loopx] .personal-task-chat-receipt{box-shadow:none;background:#fff;border-color:#dedede;border-radius:12px}.personal-workspace-shell[data-pw-theme=loopx] .personal-task-chat-icon{color:#171717;background:#f2f2f2;border:1px solid #ebebeb;border-radius:6px}.personal-workspace-shell[data-pw-theme=loopx] .personal-task-chat-receipt footer button{color:#171717;border-color:#dedede;border-radius:6px}.personal-workspace-shell[data-pw-theme=loopx] .personal-task-chat-receipt footer button:hover{background:#f2f2f2;border-color:#a1a1a1}.personal-workspace-shell[data-pw-theme=loopx] .personal-task-kanban{border-block:1px solid #ebebeb;gap:0}.personal-workspace-shell[data-pw-theme=loopx] .personal-task-kanban .personal-object-list{border:0;background:0 0;border-left:1px solid #ebebeb;border-radius:0;gap:8px;padding:12px}.personal-workspace-shell[data-pw-theme=loopx] .personal-task-kanban .personal-object-list:first-child{border-left:0}.personal-workspace-shell[data-pw-theme=loopx] .personal-task-kanban .personal-object-list>header{padding:4px 2px 8px}.personal-workspace-shell[data-pw-theme=loopx] .personal-task-kanban .personal-object-list>header>strong{font-size:12px;font-weight:600}.personal-workspace-shell[data-pw-theme=loopx] .personal-task-kanban .personal-object-list>button,.personal-workspace-shell[data-pw-theme=loopx] .personal-task-kanban .personal-task-card>button{box-shadow:none;border-radius:12px}.personal-workspace-shell[data-pw-theme=loopx] .personal-task-kanban .personal-task-lane-scroll>button>strong,.personal-workspace-shell[data-pw-theme=loopx] .personal-task-kanban .personal-task-card>button>strong{overflow-wrap:anywhere;font-size:14px;font-weight:500;line-height:20px}.personal-workspace-shell[data-pw-theme=loopx] .personal-task-kanban .personal-object-list>button>small,.personal-workspace-shell[data-pw-theme=loopx] .personal-task-kanban .personal-task-card>button>small{color:#6b6b6b;font-size:12px;line-height:16px}.personal-workspace-shell[data-pw-theme=loopx] .personal-task-kanban .personal-object-list>button:hover,.personal-workspace-shell[data-pw-theme=loopx] .personal-task-kanban .personal-task-card>button:hover{box-shadow:none;border-color:#a1a1a1}.personal-workspace-shell[data-pw-theme=loopx] .personal-task-card.is-selected>button,.personal-workspace-shell[data-pw-theme=loopx] .personal-task-kanban .personal-object-list>button.is-selected{background:#fff;border-color:#171717;box-shadow:0 0 0 1px #171717}.personal-workspace-shell[data-pw-theme=loopx] .personal-task-card.is-selected:before{background:#171717}.personal-workspace-shell[data-pw-theme=loopx] .personal-task-card-actions button{box-shadow:none;border-radius:6px}.personal-workspace-shell[data-pw-theme=loopx] .personal-task-card-actions .personal-task-session-link,.personal-workspace-shell[data-pw-theme=loopx] .personal-task-session-status{color:#4d4d4d}.personal-workspace-shell[data-pw-theme=loopx] .personal-task-kanban .personal-task-empty{border-radius:12px}.personal-workspace-shell[data-pw-theme=loopx] .personal-files-list{box-shadow:none;border-radius:12px}.personal-workspace-shell[data-pw-theme=loopx] .personal-files-list>header{letter-spacing:0;min-height:44px;padding:8px 14px;font-weight:500}.personal-workspace-shell[data-pw-theme=loopx] .personal-files-list>button{min-height:58px;padding:10px 14px}.personal-workspace-shell[data-pw-theme=loopx] .personal-files-list>button:hover{background:#f2f2f2}.personal-workspace-shell[data-pw-theme=loopx] .personal-file-icon{color:#4d4d4d;background:#fafafa;border:1px solid #ebebeb;border-radius:6px;place-items:center;width:28px;height:28px;display:grid}.personal-workspace-shell[data-pw-theme=loopx] .personal-files-list>button>strong{font-size:13px;font-weight:600}.personal-workspace-shell[data-pw-theme=loopx] .personal-files-list>button>p,.personal-workspace-shell[data-pw-theme=loopx] .personal-files-list>button>small{font-size:12px;line-height:16px}.personal-workspace-shell[data-pw-theme=loopx] .personal-primary-action,.personal-settings-page[data-pw-theme=loopx] .personal-primary-action{box-shadow:none;background:#171717;border-color:#171717;border-radius:6px}.personal-workspace-shell[data-pw-theme=loopx] .personal-primary-action:hover,.personal-settings-page[data-pw-theme=loopx] .personal-primary-action:hover{background:#333;border-color:#333}.personal-workspace-shell[data-pw-theme=loopx] .personal-md-code,.personal-workspace-shell[data-pw-theme=loopx] .personal-safe-preview,.personal-workspace-shell[data-pw-theme=loopx] .personal-diagnostics{background:#f2f2f2}.personal-workspace-shell[data-pw-theme=loopx] .personal-md-pre{color:#fafafa;background:#171717;border:1px solid #242424}.personal-workspace-shell[data-pw-theme=loopx] .personal-digest-card{background:#fff;border-radius:12px}.personal-workspace-shell[data-pw-theme=loopx] .personal-action-feedback{color:#171717;background:#f2f2f2}.personal-workspace-shell[data-pw-theme=loopx] .personal-quick-prompts button{color:#171717;box-shadow:none;background:#fff;border-color:#dedede;border-radius:6px}.personal-workspace-shell[data-pw-theme=loopx] .personal-quick-prompts button:hover,.personal-workspace-shell[data-pw-theme=loopx] .personal-quick-prompts button:hover{color:#171717;box-shadow:none;background:#f2f2f2;border-color:#a1a1a1}.personal-workspace-shell[data-pw-theme=loopx] .personal-goal-draft-status{color:#6b6b6b;background:#f2f2f2;border-color:#dedede;border-radius:6px}.personal-workspace-shell[data-pw-theme=loopx] .personal-goal-draft-status strong{color:#171717}.personal-workspace-shell[data-pw-theme=loopx] .personal-channel-composer{box-shadow:none;border-radius:6px}.personal-workspace-shell[data-pw-theme=loopx] .personal-channel-composer:focus-within{border-color:#0070f3;box-shadow:0 0 0 2px #0070f31f}.personal-workspace-shell[data-pw-theme=loopx] .personal-channel-composer>button,.personal-workspace-shell[data-pw-theme=loopx] .personal-correction-composer button{box-shadow:none;background:#171717;border-radius:6px}.personal-workspace-shell[data-pw-theme=loopx] .personal-channel-composer>button:hover,.personal-workspace-shell[data-pw-theme=loopx] .personal-correction-composer button:hover{background:#333}.personal-workspace-shell[data-pw-theme=loopx] .personal-channel-composer>.personal-composer-attach{color:#6b6b6b;background:0 0}.personal-settings-theme-swatch.is-loopx{background:linear-gradient(135deg,#171717 0 48%,#fafafa 48% 78%,#fff 78%)}.personal-settings-page[data-pw-theme=loopx] .personal-settings-header small,.personal-settings-page[data-pw-theme=loopx] .personal-lark-header small,.personal-settings-page[data-pw-theme=loopx] .personal-lark-section-heading small{color:#0070f3;font-family:Geist Mono Variable,Geist Mono,JetBrains Mono,SFMono-Regular,monospace;font-weight:500}.personal-settings-page[data-pw-theme=loopx] .personal-settings-choice-group button{box-shadow:none;border-radius:12px}.personal-settings-page[data-pw-theme=loopx] .personal-settings-choice-group button:hover{box-shadow:none;border-color:#c8c8c8}.personal-settings-page[data-pw-theme=loopx] .personal-settings-choice-group button[aria-checked=true]{background:#fff;border-color:#171717;box-shadow:0 0 0 1px #171717}@media (width<=720px){.personal-workspace-shell[data-pw-theme=loopx] .personal-home-lane,.personal-workspace-shell[data-pw-theme=loopx] .personal-task-kanban .personal-object-list{border-top:1px solid #ebebeb;border-left:0}.personal-workspace-shell[data-pw-theme=loopx] .personal-home-lane:first-child,.personal-workspace-shell[data-pw-theme=loopx] .personal-task-kanban .personal-object-list:first-child{border-top:0}}.personal-workspace-shell[data-pw-theme=brutal],.personal-settings-page[data-pw-theme=brutal]{--pw-bg:#fdf8e7;--pw-card:#fff;--pw-line:#141414;--pw-line-strong:#141414;--pw-muted:#3f3f3f;--pw-faint:#666;--pw-text:#141414;--pw-blue:#141414;--pw-blue-ink:#141414;--pw-blue-soft:#ffe23f;--pw-amber:#141414;--pw-amber-bg:#ffd23f;--pw-red:#141414;--pw-red-bg:#ff9d8a;--pw-green:#141414;--pw-green-bg:#8fe6a4}.personal-workspace-shell[data-pw-theme=brutal] :focus-visible:not(textarea):not(input),.personal-settings-page[data-pw-theme=brutal] :focus-visible:not(textarea):not(input){outline-color:#141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-workspace-sidebar{background:#ffd91a;border-right:2px solid #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-sidebar-brand{border-bottom:2px solid #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-brand-mark{color:#ffd91a;box-shadow:none;background:#141414;border:2px solid #141414;border-radius:4px}.personal-workspace-shell[data-pw-theme=brutal] .personal-manager-icon{color:#141414;background:#fff;border:2px solid #141414;border-radius:4px}.personal-workspace-shell[data-pw-theme=brutal] .personal-manager-link:hover,.personal-workspace-shell[data-pw-theme=brutal] .personal-goal-link:hover,.personal-workspace-shell[data-pw-theme=brutal] .personal-sidebar-utility:hover{background:#ffffff8c}.personal-workspace-shell[data-pw-theme=brutal] .personal-manager-link[aria-current=page],.personal-workspace-shell[data-pw-theme=brutal] .personal-goal-link[aria-current=page]{background:#ff8fd0;border:2px solid #141414;border-radius:4px;font-weight:700;box-shadow:3px 3px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-sidebar-count{color:#141414;background:#fff;border:2px solid #141414;box-shadow:2px 2px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-sidebar-section-title{color:#141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-sidebar-title-actions button:hover{box-shadow:none;background:#fff;border:2px solid #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-sidebar-footer{border-top:2px solid #141414}.personal-settings-page[data-pw-theme=brutal] .personal-settings-sidebar{background:#ffd91a;border-right:2px solid #141414}.personal-settings-page[data-pw-theme=brutal] .personal-settings-title{border-bottom:2px solid #141414}.personal-settings-page[data-pw-theme=brutal] .personal-settings-title small,.personal-settings-page[data-pw-theme=brutal] .personal-settings-header small,.personal-settings-page[data-pw-theme=brutal] .personal-settings-back,.personal-settings-page[data-pw-theme=brutal] .personal-settings-tabs button{color:#141414}.personal-settings-page[data-pw-theme=brutal] .personal-settings-back:hover,.personal-settings-page[data-pw-theme=brutal] .personal-settings-tabs button:hover{background:#ffffff8c}.personal-settings-page[data-pw-theme=brutal] .personal-settings-tabs button[aria-current=page]{color:#141414;background:#ff8fd0;border:2px solid #141414;border-radius:4px;box-shadow:3px 3px #141414}.personal-settings-page[data-pw-theme=brutal] .personal-detail-card,.personal-settings-page[data-pw-theme=brutal] .personal-machine-editor,.personal-settings-page[data-pw-theme=brutal] .personal-machine-summary,.personal-settings-page[data-pw-theme=brutal] .personal-lark-app-card,.personal-settings-page[data-pw-theme=brutal] .personal-lark-table,.personal-settings-page[data-pw-theme=brutal] .personal-lark-topic-panel{background:#fff;border:2px solid #141414;border-radius:4px;box-shadow:3px 3px #141414}.personal-settings-page[data-pw-theme=brutal] .personal-settings-choice-group button{background:#fff;border:2px solid #141414;border-radius:4px;box-shadow:2px 2px #141414}.personal-settings-page[data-pw-theme=brutal] .personal-machine-namespaces button[aria-current=page],.personal-settings-page[data-pw-theme=brutal] .personal-machine-preview,.personal-settings-page[data-pw-theme=brutal] .personal-machine-scope-note,.personal-settings-page[data-pw-theme=brutal] .personal-machine-rollback{color:#141414;background:#fff;border:2px solid #141414;border-radius:4px;box-shadow:2px 2px #141414}.personal-settings-page[data-pw-theme=brutal] .personal-settings-choice-group button:hover{background:#fff8d6;border-color:#141414;transform:translate(-1px,-1px);box-shadow:4px 4px #141414}.personal-settings-page[data-pw-theme=brutal] .personal-settings-choice-group button[aria-checked=true]{background:#ffe23f;border-color:#141414;box-shadow:3px 3px #141414}.personal-settings-page[data-pw-theme=brutal] .personal-primary-action,.personal-settings-page[data-pw-theme=brutal] .personal-secondary-action,.personal-settings-page[data-pw-theme=brutal] .personal-lark-toolbar label{color:#141414;background:#fff;border:2px solid #141414;border-radius:4px;box-shadow:2px 2px #141414}.personal-settings-page[data-pw-theme=brutal] .personal-primary-action{background:#ffe23f}.personal-settings-page[data-pw-theme=brutal] .personal-lark-tabs{border-bottom:2px solid #141414}.personal-settings-page[data-pw-theme=brutal] .personal-lark-tabs button[aria-current=page]{color:#141414;border-color:#141414}.personal-settings-page[data-pw-theme=brutal] .personal-lark-tabs span,.personal-settings-page[data-pw-theme=brutal] .personal-lark-app-card em,.personal-settings-page[data-pw-theme=brutal] .personal-connection-status{color:#141414;background:#ffe23f;border:1.5px solid #141414;border-radius:3px}.personal-workspace-shell[data-pw-theme=brutal] .personal-channel-header{background:#fdf8e7;border-bottom:2px solid #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-goal-tabs{background:0 0;gap:6px;padding:0}.personal-workspace-shell[data-pw-theme=brutal] .personal-goal-tabs button{color:#141414;background:#fff;border:2px solid #141414;border-radius:4px;box-shadow:2px 2px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-goal-tabs button[aria-current=page]{background:#ffe23f;font-weight:700;box-shadow:2px 2px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-agent-select .personal-select-trigger,.personal-workspace-shell[data-pw-theme=brutal] .personal-icon-button{color:#141414;background:#fff;border:2px solid #141414;border-radius:4px;box-shadow:2px 2px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-live-indicator i{border:1.5px solid #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-message.is-user{background:#8fdcff;border:2px solid #141414;border-radius:8px 8px 2px;box-shadow:3px 3px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-message-avatar{color:#141414;background:#ffe23f;border:2px solid #141414;border-radius:4px}.personal-workspace-shell[data-pw-theme=brutal] .personal-md-pre{color:#fdf8e7;background:#141414;border:2px solid #141414;border-radius:4px}.personal-workspace-shell[data-pw-theme=brutal] .personal-md-code{color:#141414;background:#ffe23f;border:1.5px solid #141414;border-radius:3px}.personal-workspace-shell[data-pw-theme=brutal] .personal-md-link{color:#141414;text-decoration-thickness:2px}.personal-workspace-shell[data-pw-theme=brutal] .personal-object-list{background:#fff;border:2px solid #141414;border-radius:4px;box-shadow:3px 3px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-object-list>button:hover{background:#fff8d6}.personal-workspace-shell[data-pw-theme=brutal] .personal-row-status{border:2px solid #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-task-kanban .personal-object-list{background:#fff}.personal-workspace-shell[data-pw-theme=brutal] .personal-task-kanban .personal-object-list>header{background:#fff;border-bottom:2px solid #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-task-kanban .personal-task-lane-scroll>button,.personal-workspace-shell[data-pw-theme=brutal] .personal-task-kanban .personal-task-card>button{border:2px solid #141414;border-radius:4px;box-shadow:2px 2px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-task-kanban .personal-task-lane-scroll>button:hover,.personal-workspace-shell[data-pw-theme=brutal] .personal-task-kanban .personal-task-card:hover>button{background:#fff;border-color:#141414;transform:translate(-1px,-1px);box-shadow:4px 4px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-task-kanban .personal-object-list>header>span{color:#fff;background:#141414;border-radius:3px;padding:1px 7px}.personal-workspace-shell[data-pw-theme=brutal] .personal-kanban-dot{border:2px solid #141414;border-radius:2px;width:10px;height:10px}.personal-workspace-shell[data-pw-theme=brutal] .personal-kanban-dot.tone-attention{background:#ff9d5c}.personal-workspace-shell[data-pw-theme=brutal] .personal-kanban-dot.tone-progress{background:#35c5f0}.personal-workspace-shell[data-pw-theme=brutal] .personal-kanban-dot.tone-schedule{background:#b49bf0}.personal-workspace-shell[data-pw-theme=brutal] .personal-kanban-dot.tone-done{background:#7ddb8a}.personal-workspace-shell[data-pw-theme=brutal] .personal-task-kanban .personal-task-empty{border:2px dashed #141414;border-radius:4px}.personal-workspace-shell[data-pw-theme=brutal] .personal-task-card-actions button{color:#141414;border:2px solid #141414;border-radius:4px;box-shadow:2px 2px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-composer-wrap{background:linear-gradient(transparent, var(--pw-bg) 22%)}.personal-workspace-shell[data-pw-theme=brutal] .personal-system-health-banner{color:#141414;background:#fee2e2;border:2px solid #141414;border-radius:6px;box-shadow:3px 3px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-system-health-header{color:#141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-system-health-header small{color:#555}.personal-workspace-shell[data-pw-theme=brutal] .personal-system-health-issues{color:#141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-manager-conversation-tray{background:#fff;border:2px solid #141414;border-radius:6px;box-shadow:4px 4px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-manager-conversation-tray:hover,.personal-workspace-shell[data-pw-theme=brutal] .personal-manager-conversation-tray:focus-within{border-color:#141414;box-shadow:5px 5px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-manager-conversation-btn{color:#141414;background:#ffe23f;border:2px solid #141414;border-radius:4px;box-shadow:2px 2px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-manager-conversation-btn:hover{background:#ffd91a}.personal-workspace-shell[data-pw-theme=brutal] .personal-manager-conversation-link{color:#141414;text-decoration:underline}.personal-workspace-shell[data-pw-theme=brutal] .personal-manager-conversation-close{color:#141414;border:1.5px solid #141414;border-radius:4px}.personal-workspace-shell[data-pw-theme=brutal] .personal-manager-conversation-messages article{background:#fdf8e7;border:1.5px solid #141414;border-radius:4px}.personal-workspace-shell[data-pw-theme=brutal] .personal-manager-conversation-messages article.is-user{background:#8fdcff}.personal-workspace-shell[data-pw-theme=brutal] .personal-quick-prompts button{color:#141414;background:#fff;border:2px solid #141414;box-shadow:2px 2px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-quick-prompts button:hover{color:#141414;background:#ffe23f;border-color:#141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-channel-composer{border:2px solid #141414;border-radius:6px;box-shadow:3px 3px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-channel-composer:focus-within{border-color:#141414;box-shadow:5px 5px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-channel-composer textarea{border-left:2px solid #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-channel-composer>button,.personal-workspace-shell[data-pw-theme=brutal] .personal-channel-composer>.personal-composer-attach,.personal-workspace-shell[data-pw-theme=brutal] .personal-correction-composer button{color:#141414;background:#ffe23f;border:2px solid #141414;border-radius:4px;box-shadow:2px 2px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-channel-composer>button:hover{background:#ffd91a;transform:translate(1px,1px);box-shadow:1px 1px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-correction-composer{border:2px solid #141414;border-radius:4px}.personal-workspace-shell[data-pw-theme=brutal] .personal-correction-composer:focus-within{border-color:#141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-workspace-drawer{box-shadow:none;border-left:2px solid #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-detail-card,.personal-workspace-shell[data-pw-theme=brutal] .personal-correction-panel{border:2px solid #141414;border-radius:4px;box-shadow:3px 3px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-detail-card.is-attention{background:#fff3c9;border-color:#141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-primary-action{color:#141414;background:#ffe23f;border:2px solid #141414;border-radius:4px;box-shadow:3px 3px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-primary-action:hover{background:#ffd91a;transform:translate(1px,1px);box-shadow:2px 2px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-secondary-action{color:#141414;background:#fff;border:2px solid #141414;border-radius:4px;box-shadow:2px 2px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-secondary-action:hover{border-color:#141414;transform:translate(1px,1px);box-shadow:1px 1px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-danger-action{color:#141414;background:#ff9d8a;border:2px solid #141414;border-radius:4px;box-shadow:2px 2px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-compact-menu>summary{border:2px solid #141414;border-radius:4px;box-shadow:2px 2px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-compact-menu>div{border:2px solid #141414;border-radius:4px;box-shadow:3px 3px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-compact-menu>div button:hover{background:#fff8d6}.personal-workspace-shell[data-pw-theme=brutal] .personal-inline-agent-select{border:2px solid #141414;border-radius:4px}.personal-workspace-shell[data-pw-theme=brutal] .personal-inline-agent-select select,.personal-workspace-shell[data-pw-theme=brutal] .personal-inline-resume-when input,.personal-workspace-shell[data-pw-theme=brutal] .personal-subagent-switch,.personal-workspace-shell[data-pw-theme=brutal] .personal-subagent-fields input:not([type=checkbox]),.personal-workspace-shell[data-pw-theme=brutal] .personal-subagent-fields select,.personal-workspace-shell[data-pw-theme=brutal] .personal-subagent-domain-option,.personal-workspace-shell[data-pw-theme=brutal] .personal-subagent-preview{color:#141414;border:2px solid #141414;border-radius:4px}.personal-workspace-shell[data-pw-theme=brutal] .personal-subagent-switch{background:#fff;box-shadow:2px 2px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-subagent-switch[aria-checked=true]{background:#baf2c7}.personal-workspace-shell[data-pw-theme=brutal] .personal-subagent-switch>span{background:#777}.personal-workspace-shell[data-pw-theme=brutal] .personal-subagent-switch[aria-checked=true]>span{background:#141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-subagent-preview{background:#fff3c9;box-shadow:2px 2px #141414}.personal-digest-card{border:1px solid var(--pw-line);background:linear-gradient(135deg,#fff,#fbf7ee);border-radius:14px;justify-content:space-between;align-items:center;gap:14px;margin-bottom:12px;padding:13px 16px;display:flex}.personal-digest-card>strong{letter-spacing:.01em;font-size:13px}.personal-digest-stats{gap:8px;display:flex}.personal-digest-stats span{border:1px solid var(--pw-line-strong);color:var(--pw-muted);background:#fff;border-radius:99px;align-items:baseline;gap:6px;padding:6px 13px;font-size:12px;display:inline-flex}.personal-digest-stats b{color:var(--pw-text);font-size:14px}.personal-composer-hint{color:var(--pw-faint);margin:0 0 8px;font-size:11.5px}.personal-priority-badge{color:var(--pw-muted);background:#f2f1ed;border-radius:6px;padding:1px 7px;font-size:10.5px;font-weight:700}.personal-priority-badge.is-p0{background:var(--pw-red-bg);color:var(--pw-red)}.personal-priority-badge.is-p1{background:var(--pw-amber-bg);color:var(--pw-amber)}.personal-priority-badge.is-blocked{background:var(--pw-red-bg);color:var(--pw-red)}.personal-workspace-shell[data-pw-theme=brutal] .personal-digest-card{background:#fff;border:2px solid #141414;border-radius:4px;box-shadow:3px 3px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-digest-stats span{color:#141414;border:2px solid #141414;border-radius:99px;box-shadow:2px 2px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-priority-badge{border:1.5px solid #141414;border-radius:3px}.personal-goal-notification code{border:1px solid var(--pw-line);background:var(--pw-bg,#f7f6f2);word-break:break-all;border-radius:5px;padding:1px 5px;font-size:11px}.personal-workspace-shell[data-pw-theme=brutal] .personal-goal-notification code{background:#fff;border:1.5px solid #141414;border-radius:3px}.personal-proposal-state.is-error:has(small){align-items:start;gap:4px;display:grid}.personal-proposal-state.is-error small{word-break:break-all;line-height:1.5}.personal-gate-cli-hint{gap:6px;margin-top:10px;display:grid}.personal-gate-cli-hint code{border:1px solid var(--pw-line);background:var(--pw-bg,#f7f6f2);-webkit-user-select:all;user-select:all;word-break:break-all;border-radius:7px;padding:8px 10px;font-size:11.5px;line-height:1.5;display:block}.personal-gate-cli-hint small{color:var(--pw-muted);line-height:1.5}.personal-notification-list{gap:0;margin:12px 0 0;padding:0;list-style:none;display:grid}.personal-notification-row{border-top:1px solid var(--pw-line);gap:8px;padding:12px 0;display:grid}.personal-notification-row:first-child{border-top:0;padding-top:4px}.personal-notification-row-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.personal-notification-row-head strong{font-size:13px}.personal-notification-badge{border-radius:99px;flex:none;padding:2px 8px;font-size:11px;font-weight:650}.personal-notification-badge.is-on{background:var(--pw-green-bg);color:var(--pw-green)}.personal-notification-badge.is-off{background:var(--pw-bg,#f5f4ef);color:var(--pw-muted)}.personal-notification-meta{color:var(--pw-muted);flex-wrap:wrap;gap:4px 12px;font-size:11.5px;display:flex}.personal-notification-toggle{color:var(--pw-text);cursor:pointer;align-items:center;gap:8px;font-size:12.5px;display:flex}.personal-notification-toggle input{accent-color:var(--pw-blue);cursor:pointer;width:15px;height:15px}.personal-notification-bind{gap:8px;display:flex}.personal-notification-bind select{border:1px solid var(--pw-line-strong);min-width:0;height:34px;color:var(--pw-text);background:#fff;border-radius:8px;flex:1;padding:0 10px;font-size:12.5px}.personal-notification-bind .personal-secondary-action{flex:none}.personal-notification-confirm{border:1px solid var(--pw-line);background:var(--pw-bg,#faf9f5);border-radius:9px;gap:8px;padding:10px 12px;display:grid}.personal-notification-confirm p{color:var(--pw-muted);margin:0;font-size:12px;line-height:1.6}.personal-notification-actions{gap:8px;display:flex}.personal-notification-error{color:var(--pw-red);margin:0;font-size:12px;line-height:1.5}.personal-notification-hint{color:var(--pw-muted);margin:0;font-size:12px;line-height:1.6}.personal-notification-hint code{border:1px solid var(--pw-line);background:var(--pw-bg,#f7f6f2);-webkit-user-select:all;user-select:all;border-radius:5px;margin-top:4px;padding:2px 7px;font-size:11px;display:inline-block}.is-spinning{animation:.9s linear infinite personal-notification-spin}@keyframes personal-notification-spin{to{transform:rotate(360deg)}}.personal-workspace-shell[data-pw-theme=brutal] .personal-notification-badge{border:1.5px solid #141414;border-radius:3px}.personal-workspace-shell[data-pw-theme=brutal] .personal-notification-bind select{border:2px solid #141414;border-radius:4px;box-shadow:2px 2px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-notification-confirm{background:#fff;border:2px solid #141414;border-radius:4px;box-shadow:2px 2px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-settings-card{border:2px solid #141414;border-radius:4px;box-shadow:4px 4px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-settings-icon{color:#141414;background:#ffe23f;border:2px solid #141414;border-radius:4px}.personal-workspace-shell[data-pw-theme=brutal] .personal-language-options>button{border:2px solid #141414;border-radius:4px;box-shadow:2px 2px #141414}.personal-workspace-shell[data-pw-theme=brutal] .personal-language-options>button.is-selected{color:#141414;background:#8fdcff}@media (width<=720px){.personal-lark-settings{padding:20px 16px calc(24px + env(safe-area-inset-bottom))}.personal-lark-header h1{font-size:24px}.personal-lark-tabs{gap:18px;margin-top:20px}.personal-settings-card>header,.personal-language-options{padding-left:15px;padding-right:15px}}.personal-goal-acceptance h4{margin:16px 0 8px;font-size:14px}.personal-goal-acceptance .personal-acceptance-observation{border-top:1px solid var(--color-border,#ebebeb);padding:8px 0}.personal-goal-acceptance dd,.personal-goal-acceptance p{overflow-wrap:anywhere}.personal-goal-acceptance details{margin-top:16px}.benchmark-page{--benchmark-ink:#171717;--benchmark-body:#4d4d4d;--benchmark-muted:#767676;--benchmark-canvas:#fafafa;--benchmark-surface:#fff;--benchmark-soft:#f2f2f2;--benchmark-border:#e5e5e5;--benchmark-link:#0068d7;width:100%;max-width:100vw;min-height:100vh;color:var(--benchmark-ink);background:var(--benchmark-canvas);font-family:Geist,Inter,Helvetica Neue,Arial,sans-serif;overflow-x:clip}.benchmark-page,.benchmark-page *{box-sizing:border-box}.benchmark-hero{border-bottom:1px solid var(--benchmark-border);background:var(--benchmark-surface);padding:24px max(24px,50vw - 600px)}.benchmark-hero-topline,.benchmark-title-row,.benchmark-card-heading,.benchmark-footer>div{align-items:center;display:flex}.benchmark-hero-topline{justify-content:space-between;margin-bottom:64px}.benchmark-wordmark{color:var(--benchmark-ink);letter-spacing:-.04em;font-weight:650;text-decoration:none}.benchmark-readonly{color:var(--benchmark-muted);align-items:center;gap:8px;font-size:12px;display:inline-flex}.benchmark-hero-grid{grid-template-columns:minmax(0,1.5fr) minmax(260px,.5fr);align-items:end;gap:64px;display:grid}.benchmark-kicker,.benchmark-mono{color:var(--benchmark-muted);letter-spacing:.08em;text-transform:uppercase;margin:0 0 8px;font:500 11px/16px Geist Mono,JetBrains Mono,monospace}.benchmark-title-row{align-items:baseline;gap:16px}.benchmark-title-row h1{letter-spacing:-.05em;max-width:780px;margin:0;font-size:clamp(32px,4.5vw,48px);font-weight:600;line-height:1}.benchmark-lead{max-width:680px;color:var(--benchmark-body);margin:20px 0 0;font-size:16px;line-height:24px}.benchmark-identity,.benchmark-stat-list{margin:0}.benchmark-identity>div{border-top:1px solid var(--benchmark-border);grid-template-columns:80px minmax(0,1fr);gap:16px;padding:10px 0;display:grid}.benchmark-identity dt,.benchmark-stat-list dt{color:var(--benchmark-muted);font-size:12px}.benchmark-identity dd{text-overflow:ellipsis;white-space:nowrap;margin:0;font:500 12px/18px Geist Mono,monospace;overflow:hidden}.benchmark-kpi-grid{border:1px solid var(--benchmark-border);border-radius:12px;grid-template-columns:repeat(4,minmax(0,1fr));margin-top:64px;display:grid;overflow:hidden}.benchmark-kpi-grid article{border-right:1px solid var(--benchmark-border);min-width:0;padding:20px 24px}.benchmark-kpi-grid article:last-child{border-right:0}.benchmark-kpi-grid svg{color:var(--benchmark-muted)}.benchmark-kpi-grid span{color:var(--benchmark-muted);margin-top:16px;font-size:12px;display:block}.benchmark-kpi-grid strong{letter-spacing:-.04em;font-variant-numeric:tabular-nums;margin-top:6px;font-size:30px;font-weight:600;display:block}.benchmark-kpi-grid strong small{color:var(--benchmark-muted);letter-spacing:0;font-size:14px;font-weight:400}.benchmark-kpi-grid p{color:var(--benchmark-body);margin:8px 0 0;font-size:12px}.benchmark-state{border:1px solid var(--benchmark-border);width:fit-content;color:var(--benchmark-body);background:var(--benchmark-soft);text-transform:capitalize;border-radius:999px;align-items:center;padding:3px 8px;font:500 11px/16px Geist Mono,monospace;display:inline-flex}.benchmark-state-success{color:#087a44;background:#ecf9f2;border-color:#b8e7ce}.benchmark-state-warning{color:#8a5100;background:#fff8e8;border-color:#f0d2a3}.benchmark-state-info{color:#0057b8;background:#eef6ff;border-color:#b9d7f5}.benchmark-tabs{z-index:3;border-bottom:1px solid var(--benchmark-border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fafafaf0;align-items:center;gap:4px;padding:12px max(24px,50vw - 600px);display:flex;position:sticky;top:0}.benchmark-tabs button,.benchmark-loading button{min-height:40px;color:var(--benchmark-body);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:0 14px;font-size:13px;font-weight:500}.benchmark-tabs button[aria-current=page]{color:#fff;background:var(--benchmark-ink)}.benchmark-tabs .benchmark-refresh{border:1px solid var(--benchmark-border);background:var(--benchmark-surface);align-items:center;gap:7px;margin-left:auto;display:inline-flex}.benchmark-tabs button:focus-visible,.benchmark-cell-link:focus-visible,.benchmark-run-link:focus-visible,.benchmark-loading button:focus-visible{outline:2px solid var(--benchmark-link);outline-offset:2px}.benchmark-content{width:min(100vw - 48px,1200px);min-width:0;margin:0 auto;padding:40px 0 64px}.benchmark-view-stack{gap:48px;min-width:0;display:grid}.benchmark-view-stack>section{min-width:0}.benchmark-section-heading{justify-content:space-between;align-items:end;gap:24px;margin-bottom:16px;display:flex}.benchmark-section-heading h2,.benchmark-detail-card h2,.benchmark-run-detail h2{letter-spacing:-.02em;margin:0;font-size:20px;line-height:28px}.benchmark-section-heading>p{max-width:420px;color:var(--benchmark-muted);text-align:right;margin:0;font-size:12px;line-height:18px}.benchmark-arm-grid,.benchmark-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.benchmark-arm-card,.benchmark-detail-card,.benchmark-run-detail{border:1px solid var(--benchmark-border);background:var(--benchmark-surface);border-radius:12px;padding:24px}.benchmark-card-heading{justify-content:space-between;align-items:start;gap:24px}.benchmark-card-heading h3{letter-spacing:-.02em;margin:0;font-size:16px;line-height:24px}.benchmark-stat-list{margin-top:24px}.benchmark-stat-list>div{border-top:1px solid var(--benchmark-border);grid-template-columns:minmax(0,1fr) auto;gap:16px;padding:11px 0;display:grid}.benchmark-stat-list dd{font-variant-numeric:tabular-nums;text-align:right;margin:0;font:500 12px/18px Geist Mono,monospace}.benchmark-factor-row{flex-wrap:wrap;gap:8px;margin-top:20px;display:flex}.benchmark-factor-row span{color:var(--benchmark-muted);background:var(--benchmark-soft);border-radius:6px;padding:5px 8px;font-size:11px}.benchmark-runtime-list{flex-wrap:wrap;gap:8px;display:flex}.benchmark-runtime-list>div{border:1px solid var(--benchmark-border);background:var(--benchmark-surface);border-radius:6px;align-items:center;gap:20px;padding:9px 11px;font:500 11px/16px Geist Mono,monospace;display:inline-flex}.benchmark-runtime-list>div span{color:var(--benchmark-muted)}.benchmark-runtime-list>div strong{font-weight:600}.benchmark-table-shell{border:1px solid var(--benchmark-border);background:var(--benchmark-surface);border-radius:12px;width:100%;max-width:100%;overflow:auto}.benchmark-table-shell table{border-collapse:collapse;width:100%;font-size:12px}.benchmark-table-shell th,.benchmark-table-shell td{border-bottom:1px solid var(--benchmark-border);text-align:left;white-space:nowrap;padding:14px 16px}.benchmark-table-shell tr:last-child td{border-bottom:0}.benchmark-table-shell th{color:var(--benchmark-muted);background:var(--benchmark-soft);letter-spacing:.03em;text-transform:uppercase;font-size:11px;font-weight:500}.benchmark-table-shell td{color:var(--benchmark-body)}.benchmark-positive{color:#087a44!important}.benchmark-negative{color:#b42318!important}.benchmark-muted{color:var(--benchmark-muted)}.benchmark-wide-table{min-height:300px}.benchmark-cell-link,.benchmark-run-link{color:var(--benchmark-ink);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0}.benchmark-cell-link span{font-family:Geist Mono,monospace;display:block}.benchmark-cell-link small{color:var(--benchmark-link);align-items:center;gap:4px;margin-top:5px;display:flex}.benchmark-cell-link small+small{color:var(--benchmark-muted)}.benchmark-cell-link .benchmark-cell-metric{color:var(--benchmark-body);font-family:Geist Mono,monospace}.benchmark-run-link{max-width:280px;color:var(--benchmark-link);text-overflow:ellipsis;overflow:hidden}.benchmark-runs-layout{grid-template-columns:minmax(0,1.3fr) minmax(340px,.7fr);align-items:start;gap:16px;display:grid}.benchmark-table-shell tr[aria-selected=true] td{background:#f3f7fb}.benchmark-run-detail{position:sticky;top:82px}.benchmark-run-detail h2{overflow-wrap:anywhere;max-width:340px}.benchmark-run-facts dd{overflow-wrap:anywhere;white-space:normal;max-width:310px}.benchmark-run-metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:20px;display:grid}.benchmark-run-metrics>div{background:var(--benchmark-soft);border-radius:6px;padding:10px}.benchmark-run-metrics span,.benchmark-run-metrics strong{display:block}.benchmark-run-metrics span{color:var(--benchmark-muted);font-size:10px}.benchmark-run-metrics strong{margin-top:5px;font:600 12px/18px Geist Mono,monospace}.benchmark-insight{border-left:2px solid var(--benchmark-link);margin-top:20px;padding:4px 0 4px 14px}.benchmark-insight p{color:var(--benchmark-body);margin:8px 0;font-size:13px;line-height:20px}.benchmark-insight small{color:var(--benchmark-muted);line-height:18px}.benchmark-footer{border-top:1px solid var(--benchmark-border);color:var(--benchmark-muted);background:var(--benchmark-surface);justify-content:space-between;gap:24px;padding:20px max(24px,50vw - 600px);font-size:11px;display:flex}.benchmark-footer>div{flex-wrap:wrap;gap:12px}.benchmark-footer code{text-overflow:ellipsis;white-space:nowrap;max-width:360px;overflow:hidden}.benchmark-loading{text-align:center;place-content:center;min-height:100vh;display:grid}.benchmark-loading svg{color:var(--benchmark-muted);margin:0 auto}.benchmark-loading h1{margin:18px 0 0;font-size:24px}.benchmark-loading p{max-width:520px;color:var(--benchmark-muted);margin:8px auto 0}.benchmark-loading button{border:1px solid var(--benchmark-border);background:var(--benchmark-surface);align-items:center;gap:8px;margin:20px auto 0;display:inline-flex}@media (width<=900px){.benchmark-hero-grid,.benchmark-runs-layout{grid-template-columns:1fr}.benchmark-hero-grid{gap:32px}.benchmark-kpi-grid{grid-template-columns:repeat(2,1fr)}.benchmark-kpi-grid article:nth-child(2){border-right:0}.benchmark-kpi-grid article:nth-child(-n+2){border-bottom:1px solid var(--benchmark-border)}.benchmark-run-detail{position:static}}@media (width<=640px){.benchmark-hero{padding-inline:20px}.benchmark-hero-topline{margin-bottom:40px}.benchmark-title-row,.benchmark-section-heading,.benchmark-footer{flex-direction:column;align-items:flex-start}.benchmark-title-row h1{font-size:34px}.benchmark-kpi-grid,.benchmark-arm-grid,.benchmark-detail-grid{grid-template-columns:1fr}.benchmark-kpi-grid article{border-right:0;border-bottom:1px solid var(--benchmark-border)}.benchmark-kpi-grid article:last-child{border-bottom:0}.benchmark-tabs{padding-inline:20px;overflow-x:auto}.benchmark-tabs .benchmark-refresh{display:none}.benchmark-content{width:calc(100vw - 40px);padding-top:28px}.benchmark-section-heading>p{text-align:left}.benchmark-footer code{max-width:100%}}@media (prefers-reduced-motion:reduce){.benchmark-page *,.benchmark-page :before,.benchmark-page :after{scroll-behavior:auto!important;transition:none!important}}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/chat/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/chat/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/chat/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/chat/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/chat/assets/geist-latin-wght-normal-BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/chat/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/chat/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/chat/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/chat/assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/chat/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/chat/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-amber-50:oklch(98.7% .022 95.277);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-amber-950:oklch(27.9% .077 45.635);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-300:oklch(84.5% .143 164.978);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-emerald-800:oklch(43.2% .095 166.913);--color-emerald-900:oklch(37.8% .077 168.94);--color-emerald-950:oklch(26.2% .051 172.552);--color-sky-50:oklch(97.7% .013 236.62);--color-sky-200:oklch(90.1% .058 230.902);--color-sky-800:oklch(44.3% .11 240.79);--color-sky-900:oklch(39.1% .09 240.876);--color-sky-950:oklch(29.3% .066 243.157);--color-rose-50:oklch(96.9% .015 12.422);--color-rose-100:oklch(94.1% .03 12.58);--color-rose-200:oklch(89.2% .058 10.001);--color-rose-300:oklch(81% .117 11.638);--color-rose-600:oklch(58.6% .253 17.585);--color-rose-700:oklch(51.4% .222 16.935);--color-rose-800:oklch(45.5% .188 13.697);--color-rose-900:oklch(41% .159 10.272);--color-rose-950:oklch(27.1% .105 12.094);--color-slate-50:oklch(98.4% .003 247.858);--color-slate-100:oklch(96.8% .007 247.896);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-slate-950:oklch(12.9% .042 264.695);--color-zinc-50:oklch(98.5% 0 0);--color-zinc-100:oklch(96.7% .001 286.375);--color-zinc-200:oklch(92% .004 286.32);--color-zinc-300:oklch(87.1% .006 286.286);--color-zinc-400:oklch(70.5% .015 286.067);--color-zinc-500:oklch(55.2% .016 285.938);--color-zinc-700:oklch(37% .013 285.805);--color-zinc-800:oklch(27.4% .006 286.033);--color-zinc-900:oklch(21% .006 285.885);--color-zinc-950:oklch(14.1% .005 285.823);--color-white:#fff;--spacing:.25rem;--container-xl:36rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--font-weight-medium:500;--font-weight-semibold:600;--tracking-tight:-.025em;--tracking-normal:0em;--radius-md:.375rem;--radius-lg:.5rem;--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.\!visible{visibility:visible!important}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fixed{position:fixed}.relative{position:relative}.static{position:static}.m-0{margin:calc(var(--spacing) * 0)}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-5{margin-top:calc(var(--spacing) * 5)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-16{min-height:calc(var(--spacing) * 16)}.min-h-64{min-height:calc(var(--spacing) * 64)}.min-h-\[calc\(100vh-80px\)\]{min-height:calc(100vh - 80px)}.min-h-screen{min-height:100vh}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-9{width:calc(var(--spacing) * 9)}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.max-w-\[1500px\]{max-width:1500px}.max-w-xl{max-width:var(--container-xl)}.min-w-\[260px\]{min-width:260px}.min-w-full{min-width:100%}.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.border-separate{border-collapse:separate}.border-spacing-0{--tw-border-spacing-x:calc(var(--spacing) * 0);--tw-border-spacing-y:calc(var(--spacing) * 0);border-spacing:var(--tw-border-spacing-x) var(--tw-border-spacing-y)}.animate-spin{animation:var(--animate-spin)}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-slate-100>:not(:last-child)){border-color:var(--color-slate-100)}.overflow-x-auto{overflow-x:auto}.rounded{border-radius:.25rem}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-amber-200{border-color:var(--color-amber-200)}.border-emerald-200{border-color:var(--color-emerald-200)}.border-rose-200{border-color:var(--color-rose-200)}.border-sky-200{border-color:var(--color-sky-200)}.border-slate-100{border-color:var(--color-slate-100)}.border-slate-200{border-color:var(--color-slate-200)}.border-slate-200\/80{border-color:#e2e8f0cc}@supports (color:color-mix(in lab, red, red)){.border-slate-200\/80{border-color:color-mix(in oklab, var(--color-slate-200) 80%, transparent)}}.border-slate-300{border-color:var(--color-slate-300)}.border-slate-900{border-color:var(--color-slate-900)}.border-transparent{border-color:#0000}.bg-\[\#f6f7f9\]{background-color:#f6f7f9}.bg-\[\#f7f7f4\]{background-color:#f7f7f4}.bg-amber-50{background-color:var(--color-amber-50)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-rose-50{background-color:var(--color-rose-50)}.bg-sky-50{background-color:var(--color-sky-50)}.bg-slate-50{background-color:var(--color-slate-50)}.bg-slate-100{background-color:var(--color-slate-100)}.bg-slate-950{background-color:var(--color-slate-950)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/70{background-color:#ffffffb3}@supports (color:color-mix(in lab, red, red)){.bg-white\/70{background-color:color-mix(in oklab, var(--color-white) 70%, transparent)}}.bg-white\/95{background-color:#fffffff2}@supports (color:color-mix(in lab, red, red)){.bg-white\/95{background-color:color-mix(in oklab, var(--color-white) 95%, transparent)}}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.pt-0{padding-top:calc(var(--spacing) * 0)}.text-center{text-align:center}.text-left{text-align:left}.align-middle{vertical-align:middle}.align-top{vertical-align:top}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[11px\]{font-size:11px}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.12em\]{--tw-tracking:.12em;letter-spacing:.12em}.tracking-\[0\.14em\]{--tw-tracking:.14em;letter-spacing:.14em}.tracking-normal{--tw-tracking:var(--tracking-normal);letter-spacing:var(--tracking-normal)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.text-amber-700{color:var(--color-amber-700)}.text-amber-800{color:var(--color-amber-800)}.text-amber-900{color:var(--color-amber-900)}.text-amber-950{color:var(--color-amber-950)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-700{color:var(--color-emerald-700)}.text-emerald-800{color:var(--color-emerald-800)}.text-emerald-950{color:var(--color-emerald-950)}.text-rose-600{color:var(--color-rose-600)}.text-rose-700{color:var(--color-rose-700)}.text-rose-800{color:var(--color-rose-800)}.text-rose-900{color:var(--color-rose-900)}.text-sky-800{color:var(--color-sky-800)}.text-slate-400{color:var(--color-slate-400)}.text-slate-500{color:var(--color-slate-500)}.text-slate-600{color:var(--color-slate-600)}.text-slate-700{color:var(--color-slate-700)}.text-slate-800{color:var(--color-slate-800)}.text-slate-900{color:var(--color-slate-900)}.text-slate-950{color:var(--color-slate-950)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_1px_2px_rgba\(15\,23\,42\,0\.04\)\]{--tw-shadow:0 1px 2px var(--tw-shadow-color,#0f172a0a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}@media (hover:hover){.hover\:bg-slate-50:hover{background-color:var(--color-slate-50)}.hover\:bg-slate-100:hover{background-color:var(--color-slate-100)}.hover\:bg-slate-800:hover{background-color:var(--color-slate-800)}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-slate-400:focus{--tw-ring-color:var(--color-slate-400)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-slate-400:focus-visible{--tw-ring-color:var(--color-slate-400)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}@media (width>=40rem){.sm\:block{display:block}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-\[240px_1fr\]{grid-template-columns:240px 1fr}.sm\:p-8{padding:calc(var(--spacing) * 8)}.sm\:px-5{padding-inline:calc(var(--spacing) * 5)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}}@media (width>=48rem){.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width>=64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width>=80rem){.xl\:sticky{position:sticky}.xl\:top-4{top:calc(var(--spacing) * 4)}.xl\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-\[260px_minmax\(0\,1fr\)\]{grid-template-columns:260px minmax(0,1fr)}.xl\:grid-cols-\[minmax\(0\,1\.35fr\)_minmax\(360px\,0\.65fr\)\]{grid-template-columns:minmax(0,1.35fr) minmax(360px,.65fr)}.xl\:grid-cols-\[minmax\(0\,1fr\)_420px\]{grid-template-columns:minmax(0,1fr) 420px}.xl\:self-start{align-self:flex-start}}:where(.dark\:divide-zinc-900:where(.dark,.dark *)>:not(:last-child)){border-color:var(--color-zinc-900)}.dark\:border-amber-900:where(.dark,.dark *){border-color:var(--color-amber-900)}.dark\:border-emerald-900:where(.dark,.dark *){border-color:var(--color-emerald-900)}.dark\:border-rose-900:where(.dark,.dark *){border-color:var(--color-rose-900)}.dark\:border-sky-900:where(.dark,.dark *){border-color:var(--color-sky-900)}.dark\:border-zinc-100:where(.dark,.dark *){border-color:var(--color-zinc-100)}.dark\:border-zinc-700:where(.dark,.dark *){border-color:var(--color-zinc-700)}.dark\:border-zinc-800:where(.dark,.dark *){border-color:var(--color-zinc-800)}.dark\:bg-\[\#09090b\]:where(.dark,.dark *){background-color:#09090b}.dark\:bg-amber-950:where(.dark,.dark *){background-color:var(--color-amber-950)}.dark\:bg-amber-950\/40:where(.dark,.dark *){background-color:#46190166}@supports (color:color-mix(in lab, red, red)){.dark\:bg-amber-950\/40:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-amber-950) 40%, transparent)}}.dark\:bg-emerald-950:where(.dark,.dark *){background-color:var(--color-emerald-950)}.dark\:bg-rose-950:where(.dark,.dark *){background-color:var(--color-rose-950)}.dark\:bg-sky-950:where(.dark,.dark *){background-color:var(--color-sky-950)}.dark\:bg-zinc-50:where(.dark,.dark *){background-color:var(--color-zinc-50)}.dark\:bg-zinc-900:where(.dark,.dark *){background-color:var(--color-zinc-900)}.dark\:bg-zinc-950:where(.dark,.dark *){background-color:var(--color-zinc-950)}.dark\:bg-zinc-950\/40:where(.dark,.dark *){background-color:#09090b66}@supports (color:color-mix(in lab, red, red)){.dark\:bg-zinc-950\/40:where(.dark,.dark *){background-color:color-mix(in oklab, var(--color-zinc-950) 40%, transparent)}}.dark\:text-amber-100:where(.dark,.dark *){color:var(--color-amber-100)}.dark\:text-amber-200:where(.dark,.dark *){color:var(--color-amber-200)}.dark\:text-amber-300:where(.dark,.dark *){color:var(--color-amber-300)}.dark\:text-emerald-200:where(.dark,.dark *){color:var(--color-emerald-200)}.dark\:text-emerald-300:where(.dark,.dark *){color:var(--color-emerald-300)}.dark\:text-rose-100:where(.dark,.dark *){color:var(--color-rose-100)}.dark\:text-rose-200:where(.dark,.dark *){color:var(--color-rose-200)}.dark\:text-rose-300:where(.dark,.dark *){color:var(--color-rose-300)}.dark\:text-sky-200:where(.dark,.dark *){color:var(--color-sky-200)}.dark\:text-zinc-50:where(.dark,.dark *){color:var(--color-zinc-50)}.dark\:text-zinc-100:where(.dark,.dark *){color:var(--color-zinc-100)}.dark\:text-zinc-200:where(.dark,.dark *){color:var(--color-zinc-200)}.dark\:text-zinc-300:where(.dark,.dark *){color:var(--color-zinc-300)}.dark\:text-zinc-400:where(.dark,.dark *){color:var(--color-zinc-400)}.dark\:text-zinc-500:where(.dark,.dark *){color:var(--color-zinc-500)}.dark\:text-zinc-950:where(.dark,.dark *){color:var(--color-zinc-950)}@media (hover:hover){.dark\:hover\:bg-zinc-200:where(.dark,.dark *):hover{background-color:var(--color-zinc-200)}.dark\:hover\:bg-zinc-900:where(.dark,.dark *):hover{background-color:var(--color-zinc-900)}}.dark\:focus\:ring-zinc-500:where(.dark,.dark *):focus,.dark\:focus-visible\:ring-zinc-500:where(.dark,.dark *):focus-visible{--tw-ring-color:var(--color-zinc-500)}}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:Geist Variable,Geist,Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{-webkit-font-smoothing:antialiased;text-rendering:geometricprecision;margin:0}button,input,select{font:inherit}.personal-home{--personal-accent:#2563eb;--personal-border:#e2ded6;color:#23272d;background:#f8f7f3;grid-template-columns:196px minmax(0,1fr);width:100%;min-height:100vh;display:grid;overflow-x:clip}.personal-sidebar{border-right:1px solid var(--personal-border);background:#fcfbf8;flex-direction:column;height:100vh;padding:1.5rem 1rem;display:flex;position:sticky;top:0}.personal-wordmark{color:#181d24;letter-spacing:-.01em;align-items:center;gap:.625rem;padding-inline:.5rem;font-size:.9375rem;font-weight:700;text-decoration:none;display:flex}.personal-wordmark-mark,.personal-manager-icon{color:#fff;background:#1e40af;border-radius:.625rem;flex:none;place-items:center;width:1.875rem;height:1.875rem;display:grid;box-shadow:0 1px 2px #0f172a24}.personal-nav{gap:.25rem;margin-top:2rem;display:grid}.personal-nav-item{color:#646971;text-align:left;background:0 0;border:0;border-radius:.625rem;align-items:center;gap:.625rem;width:100%;padding:.625rem .75rem;font-size:.875rem;font-weight:500;text-decoration:none;display:flex}.personal-nav-item-active{color:#1e40af;background:#e8eefc}.personal-nav-item:disabled{cursor:default;opacity:.72}.personal-health{color:#71717a;align-items:center;gap:.5rem;margin-top:auto;padding:.75rem .5rem 0;font-size:.75rem;display:flex}.personal-health-dot,.personal-state-dot{background:#94a3b8;border-radius:9999px;flex:none;width:.5rem;height:.5rem}.personal-health-dot.is-healthy{background:#22c55e;box-shadow:0 0 0 3px #22c55e1f}.personal-health-dot.is-unhealthy{background:#e11d48;box-shadow:0 0 0 3px #e11d481f}.personal-main{min-width:0;padding-bottom:6rem;position:relative}.personal-header{border-bottom:1px solid var(--personal-border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fcfbf8eb;justify-content:space-between;align-items:center;gap:1.5rem;min-height:7rem;padding:1.5rem clamp(1.5rem,5vw,4.5rem);display:flex}.personal-header h1{color:#181d24;letter-spacing:-.035em;margin:0;font-size:clamp(1.625rem,2.5vw,2rem);font-weight:650}.personal-header p{color:#71717a;margin:.375rem 0 0;font-size:.875rem}.personal-primary-link,.personal-row-action{color:#fff;background:var(--personal-accent);border-radius:.625rem;flex:none;justify-content:center;align-items:center;gap:.375rem;font-size:.8125rem;font-weight:600;text-decoration:none;display:inline-flex;box-shadow:0 1px 2px #2563eb33}.personal-primary-link{min-height:2.375rem;padding-inline:.875rem}.personal-content{width:min(100%,70rem);margin-inline:auto;padding:2rem clamp(1.5rem,5vw,4.5rem)}.personal-manager-summary{background:#ffffffb8;border:1px solid #dbe0e8;border-radius:.75rem;align-items:center;gap:.875rem;padding:.875rem 1rem;display:flex;box-shadow:0 1px 2px #0f172a09}.personal-manager-summary p{color:#474f5b;margin:0;font-size:.875rem;line-height:1.5}.personal-manager-icon{color:#1e40af;width:1.75rem;height:1.75rem;box-shadow:none;background:#e2e9f9}.personal-section{margin-top:2.25rem}.personal-section-heading{justify-content:space-between;align-items:end;gap:1rem;margin-bottom:.75rem;display:flex}.personal-section-heading h2{color:#23272d;letter-spacing:-.01em;margin:0;font-size:1rem;font-weight:650}.personal-section-heading p{color:#7d7d85;margin:.25rem 0 0;font-size:.75rem}.personal-section-heading>span{color:#7d7d85;font-variant-numeric:tabular-nums;font-size:.75rem}.personal-list{border:1px solid var(--personal-border);background:#ffffffdb;border-radius:.75rem;overflow:hidden;box-shadow:0 2px 8px #1d232b09}.personal-list-row{border-bottom:1px solid #ebe8e2;align-items:center;gap:1rem;min-width:0;padding:1rem;display:grid}.personal-list-row:last-child{border-bottom:0}.personal-needs-row{grid-template-columns:auto minmax(0,1fr) auto auto}.personal-goal-row{color:inherit;grid-template-columns:minmax(0,1fr) auto auto;text-decoration:none;transition:background-color .12s}.personal-goal-row:hover{background:#f8fafc}.personal-goal-meta{align-items:center;gap:.75rem;display:inline-flex}.personal-state-dot.is-blocking{background:#d97706;box-shadow:0 0 0 3px #d977061f}.personal-row-copy{min-width:0}.personal-row-copy strong,.personal-row-copy span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.personal-row-copy strong{color:#2a2f36;font-size:.875rem;font-weight:580}.personal-row-copy span{color:#7d7d85;margin-top:.3125rem;font-size:.75rem}.personal-row-action{color:#1e40af;min-height:2rem;box-shadow:none;background:#e8eefc;padding-inline:.75rem}.personal-empty{color:#7d7d85;text-align:center;padding:1.5rem 1rem;font-size:.8125rem}.personal-source-tools{color:#94949c;justify-content:flex-end;align-items:center;gap:.25rem;margin-top:1rem;font-size:.6875rem;display:flex}.personal-source-tools button{min-height:1.75rem;color:inherit;background:0 0;border:0;border-radius:.375rem;align-items:center;gap:.25rem;padding-inline:.375rem;display:inline-flex}.personal-source-tools button:not(:disabled):hover{color:#475569;background:#f1efea}.personal-manager-input{color:#7d7d85;text-align:left;cursor:pointer;background:#fffffff0;border:1px solid #d8d6d0;border-radius:9999px;align-items:center;gap:.625rem;min-width:12rem;padding:.75rem 1rem;font-size:.8125rem;transition:border-color .12s,box-shadow .12s,color .12s;display:inline-flex;position:fixed;bottom:1.5rem;right:1.5rem;box-shadow:0 8px 24px #0f172a14}.personal-manager-input:hover{color:#475569;border-color:#bfc9da;box-shadow:0 10px 28px #0f172a1f}.personal-manager-backdrop{z-index:50;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);background:#0f172a33;justify-content:flex-end;display:flex;position:fixed;inset:0}.personal-manager-drawer{color:#23272d;background:#fcfbf8;grid-template-rows:auto auto minmax(0,1fr) auto;width:min(26.25rem,100vw);min-width:0;height:100%;display:grid;box-shadow:-12px 0 36px #0f172a29}.personal-manager-drawer-header{border-bottom:1px solid var(--personal-border);grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:.75rem;padding:1rem;display:grid}.personal-manager-drawer-header h2,.personal-manager-drawer-header p{margin:0}.personal-manager-drawer-header h2{color:#181d24;font-size:.9375rem;font-weight:650}.personal-manager-drawer-header p{color:#7d7d85;margin-top:.125rem;font-size:.6875rem}.personal-manager-source{color:#475569;background:#f1efea;border-radius:9999px;padding:.25rem .5rem;font-size:.6875rem}.personal-manager-drawer-header button,.personal-manager-composer button{color:#646971;cursor:pointer;background:0 0;border:0;border-radius:.5rem;flex:none;place-items:center;width:2rem;height:2rem;display:inline-grid}.personal-manager-drawer-header button:hover{color:#23272d;background:#f1efea}.personal-manager-quick-actions{border-bottom:1px solid #ebe8e2;gap:.5rem;padding:.75rem 1rem;display:flex;overflow-x:auto}.personal-manager-thread{min-width:0;padding:1rem;overflow-y:auto}.personal-message-answer{white-space:pre-wrap;color:#323944;line-height:1.7}.personal-message-pending{color:#64748b}.personal-message-activity{color:#646a74;border-top:1px solid #d6d3cc;margin-top:.625rem;padding-top:.5rem}.personal-message-activity summary{cursor:pointer;width:fit-content;font-size:.6875rem;font-weight:600}.personal-message-activity ol{gap:.25rem;margin:.5rem 0 0;padding-left:1.125rem;font-size:.6875rem;display:grid}.personal-message-reconnect{color:#1e40af;background:#fff;border:1px solid #cbd5e1;border-radius:.5rem;margin-top:.625rem;padding:.35rem .65rem;font-size:.6875rem;font-weight:700}.personal-message-reconnect:hover{background:#eff6ff;border-color:#93c5fd}.personal-manager-composer{border-top:1px solid var(--personal-border);padding:.875rem 1rem max(.875rem, env(safe-area-inset-bottom));background:#fcfbf8;align-items:center;gap:.5rem;display:flex}.personal-manager-composer input{color:#23272d;background:#fff;border:1px solid #d8d6d0;border-radius:.625rem;outline:none;width:100%;min-width:0;height:2.5rem;padding-inline:.75rem}.personal-manager-composer input:focus{border-color:#60a5fa;box-shadow:0 0 0 3px #3b82f61f}.personal-manager-composer button{color:#fff;background:var(--personal-accent)}.personal-manager-composer button:disabled{cursor:default;opacity:.42}@media (width<=760px){.personal-home{display:block}.personal-sidebar{border-right:0;border-bottom:1px solid var(--personal-border);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.75rem;height:auto;padding:.75rem 1rem;display:grid;position:static}.personal-nav{justify-content:flex-end;min-width:0;margin-top:0;display:flex}.personal-nav-item{width:auto;padding:.5rem}.personal-nav-item:not(.personal-nav-item-active){font-size:0}.personal-health{margin-top:0;padding:0;font-size:0}.personal-header{min-height:auto;padding:1.25rem 1rem}.personal-content{padding:1.5rem 1rem}.personal-list{box-shadow:none;background:0 0;border:0;overflow:visible}.personal-list-row{border:1px solid var(--personal-border);background:#ffffffe6;border-radius:.75rem;margin-bottom:.625rem}.personal-needs-row{grid-template-columns:auto minmax(0,1fr) auto}.personal-needs-row .personal-row-action{grid-column:2/-1;justify-self:start}.personal-manager-input{bottom:1rem;right:1rem}}@media (width<=640px){.personal-manager-backdrop{align-items:flex-end}.personal-manager-drawer{width:100%;max-width:none;height:100dvh}}@media (width<=420px){.personal-wordmark-mark{display:none}.personal-sidebar{grid-template-columns:auto minmax(0,1fr) auto;padding-inline:.75rem}.personal-nav{gap:0}.personal-nav-item{gap:.25rem;padding-inline:.375rem}.personal-header{align-items:flex-start}.personal-primary-link{padding-inline:.625rem}.personal-primary-link svg{display:none}.personal-needs-row,.personal-goal-row{grid-template-columns:minmax(0,1fr) auto}.personal-needs-row .personal-state-dot{display:none}.personal-manager-input{min-width:0;max-width:calc(100vw - 2rem)}.personal-goal-meta svg{display:none}.personal-manager-drawer-header{grid-template-columns:auto minmax(0,1fr) auto auto}}.personal-workspace{--workspace-accent:#2563eb;--workspace-border:#e5e2dc;--workspace-muted:#70747e;color:#1e2228;background:#faf9f6;grid-template-columns:4.5rem 20rem minmax(0,1fr);height:100vh;min-height:42rem;display:grid;overflow:hidden}.personal-global-rail{border-right:1px solid var(--workspace-border);background:#fcfbf8;flex-direction:column;align-items:center;min-height:0;padding:1.125rem .75rem;display:flex}.personal-rail-logo{color:#fff;background:#1e40af;border-radius:.75rem;place-items:center;width:2.5rem;height:2.5rem;display:grid;box-shadow:0 4px 12px #1e40af2e}.personal-global-rail nav{gap:.5rem;margin-top:2rem;display:grid}.personal-global-rail nav button,.personal-global-rail>button{color:#80848c;cursor:pointer;background:0 0;border:0;border-radius:.625rem;place-items:center;width:2.5rem;height:2.5rem;display:grid}.personal-global-rail nav button.is-active{color:#1e40af;background:#e8eefc}.personal-global-rail nav button:disabled{cursor:default;opacity:.42}.personal-global-rail .personal-health-dot{margin-top:auto}.personal-goal-sidebar{border-right:1px solid var(--workspace-border);background:#fcfbf8;grid-template-rows:auto auto minmax(0,1fr) auto;min-width:0;min-height:0;display:grid}.personal-goal-sidebar>header{justify-content:space-between;align-items:center;height:4.75rem;padding:0 1.25rem;display:flex}.personal-goal-sidebar>header h1{letter-spacing:-.02em;margin:0;font-size:1rem;font-weight:680}.personal-goal-sidebar>header button,.personal-goal-sidebar>footer button{color:#70747e;background:0 0;border:0;border-radius:.5rem;place-items:center;width:2rem;height:2rem;display:grid}.personal-goal-sidebar>header button:disabled{opacity:.4}.personal-manager-row,.personal-goal-list-row{width:calc(100% - 1.5rem);min-width:0;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:.75rem;align-items:center;gap:.75rem;margin:0 .75rem;padding:.75rem;display:grid}.personal-manager-row{grid-template-columns:auto minmax(0,1fr);margin-bottom:.5rem}.personal-manager-row.is-selected,.personal-goal-list-row.is-selected{background:#e9eefa}.personal-goal-icon{color:#2563eb;background:#ffffffe6;border-radius:.625rem;place-items:center;width:2.25rem;height:2.25rem;display:grid;box-shadow:0 1px 2px #0f172a0f}.personal-manager-row strong,.personal-manager-row small,.personal-goal-list-copy strong,.personal-goal-list-copy small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.personal-manager-row strong,.personal-goal-list-copy strong{font-size:.8125rem;font-weight:620}.personal-manager-row small,.personal-goal-list-copy small{color:var(--workspace-muted);margin-top:.25rem;font-size:.6875rem}.personal-goal-scroll{min-height:0;padding-bottom:1rem;overflow-y:auto}.personal-goal-list-row{grid-template-columns:auto minmax(0,1fr) auto;margin-bottom:.25rem}.personal-goal-list-row:hover{background:#f5f3ef}.personal-goal-list-row.is-selected:hover{background:#e9eefa}.personal-goal-list-row .personal-state-dot{width:.4375rem;height:.4375rem}.personal-state-dot.is-progressing{background:#10b981}.personal-state-dot.is-repair{background:#f43f5e}.personal-goal-list-row .rounded-full{padding-inline:.45rem;font-size:.625rem}.personal-goal-sidebar>footer{border-top:1px solid var(--workspace-border);min-height:3.25rem;color:var(--workspace-muted);justify-content:space-between;align-items:center;padding:0 1.25rem;font-size:.6875rem;display:flex}.personal-chat-pane{background:#faf9f6;grid-template-rows:auto minmax(0,1fr) auto;min-width:0;min-height:0;display:grid}.personal-chat-header{z-index:20;border-bottom:1px solid var(--workspace-border);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#fcfbf8f0;justify-content:space-between;align-items:center;gap:1rem;min-width:0;min-height:4.75rem;padding:.75rem clamp(1rem,2.5vw,2rem);display:flex;position:relative}.personal-chat-title,.personal-chat-actions{align-items:center;gap:.75rem;min-width:0;display:flex}.personal-chat-title{flex:auto;overflow:hidden}.personal-chat-title>div{min-width:0}.personal-chat-actions{flex:none}.personal-chat-title h2,.personal-chat-title p{margin:0}.personal-chat-title h2{color:#181d24;letter-spacing:-.02em;text-overflow:ellipsis;white-space:nowrap;font-size:1rem;font-weight:680;overflow:hidden}.personal-chat-title p{max-width:28rem;color:var(--workspace-muted);text-overflow:ellipsis;white-space:nowrap;margin-top:.15rem;font-size:.6875rem;overflow:hidden}.personal-chat-back,.personal-mobile-goals-button,.personal-chat-actions>button{color:#5b606a;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:.625rem;flex:none;place-items:center;width:2.25rem;height:2.25rem;display:grid}.personal-mobile-goals-button,.personal-agent-menu-backdrop{display:none}.personal-chat-back:hover,.personal-chat-actions>button:hover{border-color:var(--workspace-border);background:#fff}.personal-chat-actions>button.personal-progress-trigger{border-color:var(--workspace-border);color:#3c434e;background:#fffc;gap:.4rem;width:auto;padding-inline:.75rem;font-size:.6875rem;font-weight:620;display:inline-flex}.personal-agent-picker{position:relative}.personal-agent-trigger{color:#292e36;cursor:pointer;background:#fff;border:1px solid #dadadc;border-radius:.625rem;align-items:center;gap:.45rem;min-height:2.25rem;padding:0 .75rem;font-size:.75rem;font-weight:600;display:inline-flex}.personal-agent-menu{z-index:40;border:1px solid var(--workspace-border);background:#fffffffa;border-radius:.875rem;width:min(21rem,100vw - 2rem);padding:.5rem;position:absolute;top:calc(100% + .5rem);right:0;box-shadow:0 18px 48px #0f172a29}.personal-agent-menu-title,.personal-agent-menu-footer{color:var(--workspace-muted);padding:.5rem .625rem;font-size:.6875rem}.personal-agent-menu-title{color:#23272d;font-weight:650}.personal-agent-menu-footer{border-top:1px solid var(--workspace-border);margin-top:.375rem}.personal-agent-menu>button{width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:.625rem;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:.625rem;padding:.625rem;display:grid}.personal-agent-menu>button:hover,.personal-agent-menu>button.is-selected{background:#eff3fc}.personal-agent-menu>button:disabled{cursor:not-allowed;opacity:.52}.personal-agent-menu strong,.personal-agent-menu small{display:block}.personal-agent-menu strong{font-size:.75rem}.personal-agent-menu small{color:var(--workspace-muted);margin-top:.125rem;font-size:.65rem}.personal-agent-avatar{color:#1e40af;background:#e2e9f9;border-radius:.625rem;flex:none;place-items:center;width:2rem;height:2rem;font-size:.75rem;font-weight:700;display:grid}.personal-agent-online{background:#10b981;border-radius:9999px;width:.4375rem;height:.4375rem}.personal-agent-online.is-offline{background:#94a3b8}.personal-live-badge{color:#33634e;background:#f5fcf8;border:1px solid #d1eddf;border-radius:9999px;align-items:center;gap:.375rem;padding:.35rem .625rem;font-size:.65rem;display:inline-flex}.personal-live-badge>span{background:#10b981;border-radius:9999px;width:.375rem;height:.375rem}.personal-chat-scroll{width:100%;min-height:0;padding:2rem clamp(1rem,5vw,5rem) 1.5rem;overflow-y:auto}.personal-chat-scroll>*{width:min(100%,56rem);margin-inline:auto}.personal-chat-welcome{background:#f1efea;border-radius:1rem;align-items:flex-start;gap:.875rem;margin-top:clamp(4rem,14vh,9rem);padding:1rem 1.125rem;display:flex}.personal-chat-welcome h3,.personal-chat-welcome p{margin:0}.personal-chat-welcome h3{font-size:.875rem;font-weight:650}.personal-chat-welcome p{color:#474f5b;margin-top:.25rem;font-size:.8125rem;line-height:1.55}.personal-manager-quick-actions{border:0;justify-content:center;gap:.625rem;padding:1rem 0;display:flex;overflow-x:auto}.personal-manager-quick-actions button{color:#3c434e;cursor:pointer;background:#ffffffc7;border:1px solid #d7dae1;border-radius:.625rem;flex:none;padding:.625rem .875rem;font-size:.75rem}.personal-manager-quick-actions button:hover{color:#1e40af;border-color:#a3b5dc}.personal-goal-summary{border:1px solid var(--workspace-border);background:#ffffffd1;border-radius:.875rem;overflow:hidden;box-shadow:0 2px 8px #0f172a08}.personal-goal-summary>div{border-bottom:1px solid #ebe8e2;grid-template-columns:7rem minmax(0,1fr);gap:1rem;padding:.8rem 1rem;font-size:.75rem;display:grid}.personal-goal-summary>div:last-child{border-bottom:0}.personal-goal-summary span{color:var(--workspace-muted)}.personal-goal-summary strong{min-width:0;font-weight:560}.personal-goal-summary .is-attention{background:#fffbeb}.personal-goal-summary .is-attention span,.personal-goal-summary .is-attention strong{color:#92400e}.personal-goal-projection{gap:.75rem;display:grid}.personal-projection-author{align-items:center;gap:.75rem;padding:0 .125rem .25rem;display:flex}.personal-projection-author strong,.personal-projection-author small{display:block}.personal-projection-author strong{color:#23272d;font-size:.8125rem;font-weight:660}.personal-projection-author small{color:var(--workspace-muted);margin-top:.15rem;font-size:.65rem}.personal-plan-card{border:1px solid var(--workspace-border);background:#ffffffdb;border-radius:.875rem;overflow:hidden;box-shadow:0 2px 8px #0f172a06}.personal-plan-card>header{border-bottom:1px solid #ebe8e2;justify-content:space-between;align-items:center;gap:1rem;min-height:3.25rem;padding:.75rem 1rem;display:flex}.personal-plan-card>header strong,.personal-plan-card>header small{display:block}.personal-plan-card>header strong{font-size:.75rem;font-weight:660}.personal-plan-card>header small{color:var(--workspace-muted);margin-top:.2rem;font-size:.625rem}.personal-plan-card>header>span{color:#5a5e65;background:#faf9f6;border:1px solid #e0ddd7;border-radius:.5rem;flex:none;padding:.25rem .45rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.65rem}.personal-plan-row{color:#343a43;border-bottom:1px solid #f0eee9;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.75rem;min-height:2.625rem;padding:.625rem 1rem;font-size:.75rem;display:grid}.personal-plan-row svg{color:#2563eb}.personal-plan-row.is-done svg{color:#059669}.personal-plan-row.is-done>span{color:#5c626b}.personal-plan-row small{color:var(--workspace-muted);font-size:.625rem}.personal-plan-card>button{color:#545b66;cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;gap:.25rem;width:100%;min-height:2.625rem;font-size:.6875rem;display:flex}.personal-plan-card>button:hover{color:#1e40af;background:#f8f9fc}.personal-plan-card.is-empty>header{border-bottom:0}.personal-plan-card.is-empty>p{color:var(--workspace-muted);margin:-.25rem 0 0;padding:0 1rem 1rem;font-size:.75rem;line-height:1.55}.personal-run-evidence-card{border:1px solid var(--workspace-border);width:100%;min-height:3.75rem;color:inherit;text-align:left;cursor:pointer;background:#ffffffd1;border-radius:.875rem;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:.75rem;padding:.75rem 1rem;display:grid}.personal-run-evidence-card:hover{background:#fff;border-color:#c7ccd6}.personal-evidence-icon{color:#059669;background:#ecfdf5;border-radius:.625rem;place-items:center;width:2rem;height:2rem;display:grid}.personal-run-evidence-card strong,.personal-run-evidence-card small{display:block}.personal-run-evidence-card strong{font-size:.75rem;font-weight:650}.personal-run-evidence-card small{max-width:38rem;color:var(--workspace-muted);text-overflow:ellipsis;white-space:nowrap;margin-top:.2rem;font-size:.65rem;overflow:hidden}.personal-run-evidence-card em{color:var(--workspace-muted);white-space:nowrap;font-size:.625rem;font-style:normal}.personal-decision-card{background:#fffaee;border:1px solid #f5c068;border-radius:.875rem;justify-content:space-between;align-items:center;gap:1.5rem;margin-top:1rem;padding:1rem;display:flex}.personal-decision-card span{color:#b45309;text-transform:uppercase;font-size:.6875rem;font-weight:700}.personal-decision-card h3,.personal-decision-card p{margin:0}.personal-decision-card h3{margin-top:.25rem;font-size:.9375rem;font-weight:650}.personal-decision-card p{color:var(--workspace-muted);margin-top:.25rem;font-size:.75rem}.personal-decision-actions{flex:none;gap:.5rem;display:flex}.personal-decision-actions button,.personal-execution-card button,.personal-ops-link{color:#1e40af;cursor:pointer;background:#fff;border:1px solid #bbc9ea;border-radius:.625rem;justify-content:center;align-items:center;min-height:2.25rem;padding:0 .75rem;font-size:.75rem;font-weight:600;text-decoration:none;display:inline-flex}.personal-decision-actions button:last-child{border-color:var(--workspace-accent);color:#fff;background:var(--workspace-accent)}.personal-manager-thread{min-width:0;padding:1.25rem 0 0;overflow:visible}.personal-manager-message{color:#474f5b;background:#f1efea;border-radius:.875rem;width:fit-content;max-width:min(88%,43rem);margin-bottom:1rem;padding:.75rem .875rem;font-size:.8125rem;line-height:1.55}.personal-manager-message.is-user{color:#fff;background:#2563eb;margin-left:auto}.personal-message-author{color:#1e40af;margin-bottom:.25rem;font-size:.6875rem;font-weight:700;display:block}.personal-manager-message p,.personal-manager-message ul{margin:0}.personal-manager-message ul{gap:.375rem;margin-top:.5rem;padding-left:1rem;display:grid}.personal-manager-message small{color:#7d7d85;margin-top:.5rem;font-size:.625rem;display:block}.personal-manager-message.is-user small{color:#dbeafe}.personal-manager-message.is-pending{color:#64748b;background:#f8fafc}.personal-proposal-list{gap:.75rem;width:min(100%,43rem);margin:0 0 1.25rem;display:grid}.personal-proposal-card{background:#f9fbff;border:1px solid #d3dcee;border-radius:.875rem;gap:.625rem;padding:.875rem;display:grid}.personal-proposal-card>header{align-items:center;gap:.5rem;display:flex}.personal-proposal-card>header span{color:#1e40af;background:#dbeafe;border-radius:999px;padding:.125rem .5rem;font-size:.625rem;font-weight:700}.personal-proposal-card>header strong{font-size:.75rem}.personal-proposal-card>header small{color:var(--workspace-muted);margin-left:auto;font-size:.625rem}.personal-proposal-card>p,.personal-proposal-card>small{margin:0}.personal-proposal-card>p{color:#1e293b;font-size:.8125rem;font-weight:600;line-height:1.5}.personal-proposal-card>small,.personal-proposal-status{color:#64748b;font-size:.6875rem;line-height:1.5}.personal-proposal-card>code{color:#475569;background:#f1f5f9;border-radius:.375rem;width:fit-content;padding:.25rem .375rem;font-size:.625rem}.personal-proposal-card.is-approved{background:#f7fefa;border-color:#a7f3d0}.personal-proposal-card.is-stale,.personal-proposal-card.is-error{background:#fffbeb;border-color:#fdba74}.personal-proposal-actions{flex-wrap:wrap;gap:.5rem;display:flex}.personal-proposal-actions button{color:#475569;cursor:pointer;background:#fff;border:1px solid #cbd5e1;border-radius:.625rem;min-height:2.25rem;padding:0 .75rem;font-size:.6875rem;font-weight:650}.personal-proposal-actions button:first-child{border-color:var(--workspace-accent);color:#fff;background:var(--workspace-accent)}.personal-proposal-actions button:disabled{cursor:wait;opacity:.55}.personal-execution-card{border:1px solid var(--workspace-border);background:#fffc;border-radius:.875rem;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:.75rem;margin-top:1.25rem;padding:.875rem;display:grid}.personal-execution-card strong,.personal-execution-card p{margin:0}.personal-execution-card strong{font-size:.8125rem}.personal-execution-card p{color:var(--workspace-muted);text-overflow:ellipsis;white-space:nowrap;margin-top:.25rem;font-size:.6875rem;overflow:hidden}.personal-manager-composer{background:#fffffff5;border:1px solid #d5d5d6;border-radius:1rem;grid-template-rows:1fr;grid-template-columns:auto minmax(0,1fr) auto;gap:.5rem;width:min(100% - 2rem,58rem);min-height:4rem;margin:0 auto 1rem;padding:.5rem .625rem;display:grid;position:relative;box-shadow:0 10px 30px #0f172a14}.personal-manager-composer input{color:#23272d;background:0 0;border:0;outline:none;grid-area:1/2;height:2.75rem;padding:0 .25rem}.personal-manager-composer input:focus{box-shadow:none;border:0}.personal-composer-tools{grid-area:1/1;align-self:center;align-items:center;min-width:0;display:flex}.personal-composer-tools button{color:#334155;cursor:pointer;background:#f5f3ef;border:0;border-radius:.75rem;align-items:center;gap:.35rem;width:auto;min-width:0;height:2.5rem;min-height:2.5rem;padding:0 .625rem;font-size:.6875rem;font-weight:620;display:inline-flex}.personal-composer-tools button span{text-overflow:ellipsis;white-space:nowrap;max-width:8rem;display:block;overflow:hidden}.personal-manager-composer .personal-send-button{color:#fff;background:var(--workspace-accent);cursor:pointer;border:0;border-radius:.75rem;grid-area:1/3;align-self:center;place-items:center;width:2.5rem;height:2.5rem;display:grid}.personal-manager-composer .personal-send-button:disabled{cursor:default;opacity:.34}.personal-details-backdrop{z-index:70;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);background:#0f172a2e;justify-content:flex-end;display:flex;position:fixed;inset:0}.personal-running-details{background:#fcfbf8;width:min(28rem,100vw);height:100%;padding:1rem;overflow-y:auto;box-shadow:-12px 0 36px #0f172a29}.personal-running-details>header{justify-content:space-between;align-items:center;gap:1rem;padding-bottom:1rem;display:flex}.personal-running-details h2,.personal-running-details header p{margin:0}.personal-running-details h2{font-size:1rem;font-weight:680}.personal-running-details header p{color:var(--workspace-muted);margin-top:.25rem;font-size:.6875rem}.personal-running-details header button{cursor:pointer;background:#f1efea;border:0;border-radius:.625rem;place-items:center;width:2.25rem;height:2.25rem;display:grid}.personal-diagnosis-card{border:1px solid var(--workspace-border);background:#fff;border-radius:.875rem;padding:1rem}.personal-diagnosis-card>span{color:#059669;font-size:.6875rem;font-weight:700}.personal-diagnosis-card h3{margin:.375rem 0 1rem;font-size:.875rem;line-height:1.5}.personal-diagnosis-card dl,.personal-diagnosis-card dd{margin:0}.personal-diagnosis-card dl{gap:.625rem;display:grid}.personal-diagnosis-card dl>div{grid-template-columns:3.5rem minmax(0,1fr);gap:.75rem;font-size:.75rem;display:grid}.personal-diagnosis-card dt{color:var(--workspace-muted)}.personal-running-details details{border-bottom:1px solid var(--workspace-border);padding:1rem .25rem}.personal-running-details summary{cursor:pointer;font-size:.8125rem;font-weight:620}.personal-running-details details p{color:var(--workspace-muted);margin:.75rem 0 0;font-size:.75rem;line-height:1.55}.personal-details-todo-list{gap:.375rem;margin:.75rem 0 0;padding:0;list-style:none;display:grid}.personal-details-todo-list li{color:#484f59;padding-left:1rem;font-size:.71875rem;line-height:1.45;position:relative}.personal-details-todo-list li:before{content:"";background:#2563eb;border-radius:9999px;width:.375rem;height:.375rem;position:absolute;top:.45em;left:0}.personal-details-todo-list li.is-done{color:#7e838b}.personal-details-todo-list li.is-done:before{background:#059669}.personal-ops-link{gap:.375rem;width:100%;margin-top:1rem}.dark .personal-workspace,.dark .personal-chat-pane{color:#f4f4f5;background:#131417}.dark .personal-global-rail,.dark .personal-goal-sidebar,.dark .personal-chat-header,.dark .personal-running-details{color:#f4f4f5;background:#191a1e}.dark .personal-plan-card,.dark .personal-run-evidence-card,.dark .personal-projection-author strong{color:#f4f4f5;background:#1e1f23}.dark .personal-plan-card>header,.dark .personal-plan-row{border-color:#3f3f46}.dark .personal-plan-row,.dark .personal-plan-row.is-done>span{color:#d4d4d8}.dark .personal-decision-card{background:#45290d;border-color:#92400e}@media (width<=1000px){.personal-workspace{grid-template-columns:3.75rem 16.5rem minmax(0,1fr)}.personal-live-badge{display:none}.personal-chat-scroll{padding-inline:1.25rem}}@media (width<=720px){.personal-workspace{grid-template-rows:minmax(0,1fr);grid-template-columns:1fr;height:100dvh;min-height:100dvh;overflow:hidden}.personal-global-rail{display:none}.personal-goal-sidebar{border-right:0;height:100dvh;display:none}.personal-workspace.mobile-goals-visible .personal-goal-sidebar{display:grid}.personal-workspace.mobile-goals-visible .personal-chat-pane{display:none}.personal-chat-pane{height:100dvh;min-height:0}.personal-chat-header{-webkit-backdrop-filter:none;backdrop-filter:none;gap:.5rem;min-height:4.25rem;padding-inline:.75rem}.personal-mobile-goals-button{display:grid}.personal-goal-sidebar>header button,.personal-goal-sidebar>footer button{width:2.75rem;height:2.75rem}.personal-chat-title p,.personal-chat-title>span,.personal-chat-actions>button:first-of-type,.personal-chat-actions>button.personal-progress-trigger span{display:none}.personal-chat-actions>button.personal-progress-trigger{width:2.75rem;padding:0}.personal-chat-back,.personal-mobile-goals-button,.personal-chat-actions>button{width:2.75rem;height:2.75rem}.personal-agent-trigger{min-height:2.75rem;padding-inline:.5rem}.personal-agent-menu-backdrop{z-index:35;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);background:#0f172a33;border:0;display:block;position:fixed;inset:0}.personal-agent-menu{z-index:40;border-radius:1rem;width:auto;max-height:calc(100dvh - 1.5rem);position:fixed;inset:auto .75rem .75rem;overflow-y:auto}.personal-agent-menu>button{min-height:3.5rem}.personal-chat-scroll{padding:1rem .75rem}.personal-chat-welcome{margin-top:1rem}.personal-manager-quick-actions{grid-template-columns:repeat(2,minmax(0,1fr));display:grid;overflow:visible}.personal-manager-quick-actions button{white-space:normal;width:100%}.personal-manager-quick-actions button:last-child{grid-column:1/-1}.personal-goal-summary>div{grid-template-columns:5.5rem minmax(0,1fr)}.personal-decision-card{flex-direction:column;align-items:stretch}.personal-run-evidence-card{grid-template-columns:auto minmax(0,1fr) auto}.personal-run-evidence-card em,.personal-plan-row small{display:none}.personal-decision-actions{grid-template-columns:1fr 1fr;display:grid}.personal-decision-actions button,.personal-manager-quick-actions button,.personal-execution-card button,.personal-ops-link,.personal-running-details header button{min-height:2.75rem}.personal-running-details header button{width:2.75rem;height:2.75rem}.personal-execution-card{grid-template-columns:auto minmax(0,1fr) auto}.personal-execution-card .rounded-full{display:none}.personal-execution-card button{grid-column:2/-1;justify-self:start}.personal-manager-composer{margin-bottom:.5rem;position:sticky;bottom:.5rem}.personal-composer-tools button,.personal-send-button{min-width:2.75rem;min-height:2.75rem}}.chat-shell{background:radial-gradient(circle at 48% 0,#ffffffeb,#0000 30rem),#f7f8f6}.chat-goal-map{isolation:isolate;position:relative;overflow:hidden}.chat-goal-map:before{z-index:0;content:"";opacity:.44;background-image:radial-gradient(#94a3b83b .7px,#0000 .7px);background-size:18px 18px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#0000,#000 18% 84%,#0000);mask-image:linear-gradient(#0000,#000 18% 84%,#0000)}.chat-map-goal:after{content:"";background:#cbd5e1;width:1px;height:3rem;position:absolute;top:100%;left:50%}.chat-map-branches:before{content:"";background:#cbd5e1;height:1px;position:absolute;top:-1.5rem;left:16.666%;right:16.666%}.chat-map-branches>div{position:relative}.chat-map-branches>div:before{content:"";background:#cbd5e1;width:1px;height:1.5rem;position:absolute;bottom:100%;left:50%}.chat-map-branches:after{content:"";background:#cbd5e1;width:1px;height:2.5rem;position:absolute;top:100%;left:50%}@media (width<=767px){.chat-map-goal:after,.chat-map-branches:before,.chat-map-branches:after,.chat-map-branches>div:before{display:none}}@property --tw-border-spacing-x{syntax:"";inherits:false;initial-value:0}@property --tw-border-spacing-y{syntax:"";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}} diff --git a/loopx/web/chat/index.html b/loopx/web/chat/index.html index bd5279fc4..870a7a074 100644 --- a/loopx/web/chat/index.html +++ b/loopx/web/chat/index.html @@ -18,8 +18,8 @@ content="LoopX 个人 Agent 工作区:在同一个频道里查看、纠偏并推进 Goal。" /> LoopX 个人 Agent 工作区 - - + +

From fd4ea85afd971f5a6b527ead1c1b07b05b90dd09 Mon Sep 17 00:00:00 2001 From: huangruiteng <14976749+huangruiteng@users.noreply.github.com> Date: Thu, 17 Sep 2026 15:54:56 +0800 Subject: [PATCH 6/9] test(work-items): preserve declared gaps through commit recovery Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com> --- tests/control_plane_ts/team_plan.test.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/control_plane_ts/team_plan.test.ts b/tests/control_plane_ts/team_plan.test.ts index 47246cf76..ab19bad3e 100644 --- a/tests/control_plane_ts/team_plan.test.ts +++ b/tests/control_plane_ts/team_plan.test.ts @@ -99,6 +99,24 @@ for (const provider of providers) { assert.equal((await commitTeamPlan(store, {...request(), current_state_fingerprint: "now changed"})).status, "replayed"); assert.deepEqual(await store.loadAuthority(), progressed); }); + test(`${provider}: declared capability and audience gaps survive commit and recovery`, options, async t => { + const store = await fixture(t, provider); await seed(store); + for (const reason of ["agent_not_registered", "capability_not_granted", "audience_not_authorized"]) { + const input = request(); + const plan = input.plan as JsonObject; + plan.proposal_id = `declared-${reason}`; + const lanes = plan.lanes as JsonObject[]; + delete lanes[1]!.first_todo; + lanes[1]!.staffing_gap = {reason_code: reason, note: "Required admission is unavailable"}; + const result = await commitTeamPlan(store, input); + assert.equal(result.status, "applied"); + const expected = [{lane_id: "lane-beta", agent_id: "beta", reason_code: reason}]; + assert.deepEqual((result.result as JsonObject).gap_lanes, expected); + const replay = await commitTeamPlan(store, input); + assert.equal(replay.status, "replayed"); + assert.deepEqual((replay.result as JsonObject).gap_lanes, expected); + } + }); test(`${provider}: commit outage cannot publish a successful partial batch`, options, async t => { const store = await fixture(t, provider); await seed(store); const before = await store.loadAuthority(); From 52c44017461ff7a4f825f8af2ec696ac10c4ddd4 Mon Sep 17 00:00:00 2001 From: huangruiteng <14976749+huangruiteng@users.noreply.github.com> Date: Thu, 17 Sep 2026 16:00:05 +0800 Subject: [PATCH 7/9] docs: show the immediate pre-cleanup assignment card in the visual comparison Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com> --- .../team-plan-assignment-before.png | Bin 252327 -> 273780 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/assets/personal-workspace/team-plan-assignment-before.png b/docs/assets/personal-workspace/team-plan-assignment-before.png index d298eb4d6a6b90d39d39246f999df3b1b4c7a027..cdd4979363f1762994d64655252bf38ff0c2e455 100644 GIT binary patch literal 273780 zcmc$G^;eW(*Df)@&_j23cXy{qw{(d}gCK}>H;9x-OGyhz&(H`+mmpn&bPDRZeZTd7 z=llnUHOn6uXPBAi-g{rQCr(#K4Ht_N3keAcS3_M{9|;L<9|;L{9*P2fLkv0LK|+Ed zX(%fg2IL>TL$f5&q8faQhsmO>s35PxOpM)s?A{<%x4KI6esy&ErDHa<4>(9oE5FaOJXXl%viSCO|qUoijC2EC-G-XxQs;Vk)hyo1U`rj+K zxz$8RqpQInXIcy+1po8v|M|C!kkB0(PXE6*O%CRje-HZaEmL2;jp2Xqg@&`2rFts; z@4YaHo+iUa^#6T0v^Y}{f%|_S4pZicilq8~ov zoSdA@%*w*5W@cuOA3s)Ajph<)Y;2U4mWEAkZiH}KSy>$%925)W=H@OhFR!$2ZEa=b z=EidwfA)3+k3XT8W|flVkdmc%Z+1XItry@>D&eT2;fRJwqJlZzNJ#xZm*T4`qm)!0 zQ>%X+`)lz78z@;M0 zG0V?;T^`<Oq$If7VNSSudjG@WxgxQ?)_MEEU+Iu%SjyTarsq~txCgXTVW ze0)62jF~0D86Dm9kv0zELuaQns0fANuhe1+3JP68H_0x@5D{Q-WxV!6rwAer^^O9arS~_^4_6fMs za*-7Qyr(`bZz@qLMF-Hfsj4Zlkl#1;5ZCTTyD~8`p*qVhHkxqrCxsfDz?{`;rRYin|4 z2fF!IMMER*ZpQU2_~G_!EJujnOIk+ee#Z(fA>x$qi8I4Xo*2)y4h{1QRkhcWtg(EvSo+= z&$F!|a5z5I*Y{ezlX?*?!^RwnPc%31*=J8S_!fx?p9Q=r=MOsXl!XGXe$4&(egFI6 z!G_DEQh#7<%OZcfw9z&%TFg`*J}+LC-#=_)X13LC4YFQh1oA%NVf&?6u%zl-bwr^a4p$MMac1 z^$OO)7-LG{0BS-8`eHWLO6h5v8?CiiJFx=hUi-#0N`UUIE zn#y4ZTU&jMQ4(Z@j+e))RM91#+{|quzkhx23i9G+=SD_GMjX3YvsYPegnp$!!O|hU z+ln0{h#@j-bcjnuM+=RQ?EB=tD%lg9in`6VuX)6UqFti!yZ48zWz1BG+FHAx)*{+K z^cdv1%UqQa_b#Z`t)Ub$!pO+Tm5vwqchpk;i3hsYGFS?kA>TW{^4BtdAz(qR{h0Uq z<)f`|$th-5)<2?K*0Jg6=@4qno@URCtgLI)(Ufw$!-YODT!`r~F)=5f>Bf<4@qc}Q z(fq+&kTo%kH`Nr5Y$M#opbn=GA$R^-;28Gu>POt*$x_qM;GolNh2HaTEdv+QHoZtL z0{jN_o{QhU)me2>cGnaZ7RtW*RjAQ>Hj3wqRYAgydl{7@{2O zPM%1nkpf3)uIKgZ{+^KEFAt{6pf#oqirIT@j$g7c0mxL`ALN>M!tsZNPmL;l5;PNN1 z9xi`6%;K>yy#?iU)Dj~cAtsEHm6a86pr{e}_m7NKFHE;U_SNXGBl$zyr>=8VQNrI^ zo^N%dxljuT2vD!>49(AzA_xDvzu#h?Q~;g$j6`#2`O~w8O25N-abGya%a<>83ZyBJ zD;C7f$cdmPHKtxWqi?w3aYSt5Rx(RnL1NFo&DNMTxv#dTR`Wh-XI_?2UmwpC8_wD? z`9djR2SIUiauRq$coU zS9>O`KY~zkUg6D?;Sx`XUVGf*(X4b%uPz6K3fIw_}7l_x|Y7U?Yy?byk|oxX$ThDN;-RfKT`n>G@m z)=ZUAwFim2RcAohrxT@s_B269E7EkgNBscQae zfrGkK!4(}A2Jd)rLjP_%=Yyw$u1*nlf$rD#jt-?*im|@4N36pZZvGBgp@Ds#lH!^+ zHicbXUESTXwI4oz{=A?5GfDzW4OT`4#iDd&UdiOf!b;b(7L*95k9{2~h)Be(kN{my z32A~>JSh_5X)P0c3**G6HgwDCTgib69mAjdpKYoHe8IuRRZ>zy6NtT%AY>+QJ0|5e z?L`26CXjG3s0Jn*^|HqFX z;1K9OKRP-xeGAi5{?OpC`h2~fz+S_IlP%<|bIio} znza&?^YLm28G454o>Gy)8R#zSTj99P$rz2qiABh$==GodumZuT8SiIvG@54ED0kps z;-kpUjKa!hf^Mcjbm~CMZV+$>bF4t*+5C^W>Lt(83~8u*uB|54Y!-!(6Fp&psOULm z`Fa>C2G%fLoPoZ6>h0adUj5Cl>z`k^M*xfq3<|=wezs7{a}-{}XVH>)KeQWoeME83 znYhgeRZM&@wRU%d^OqSwaLvfR7{V1%<8|b?OZm*7p!+B{XH0!~{NByYO?N^j=-O?y z-N?eiLSJ8yiwk>K>n-mS?~{TLo_#twTWl*MJV|-k*`5#Cbq)4I-obP^U_AAeM1A>Q zqJ}?(rd&iVAtlw93ukj++E><*zSte75^~bEO;&`J=+mrqQAU%$8uoqS-ekjgW!-woiSfqiLH!R zBvghfu*lvN3eY6igdQ>gJ7MQBH8X2K>PJ&(3(Jc_%Z?}mlj(>{7^=`lkhfw&zR!Hg zf{afmODr{CZBkc=b$5GfSZ$o7qVrz%_ru)ga!OZUZ}nSm|9>0G=-_N z6DDu&?2r%>L$*}aqXm11L%Y(Q(Ks(T^^J^3wrMl(z!d{UpzUcZ1bOP>QaDzlL^R8; zH#fMpMz;Xtt!#PzO|f$07Egg4HJwJv9|!U1-^T|yQ~wRp3j$%hPAd@+5kFtw(-CUX zdfZdOA(Pr!)NeT56{{UDl-j~nQQwj<0(^98_Q`c_{-Z_H4h^|@B`OA9^Rop!+H!0% z-rm;cfHOPD`549gR5UJ?sThUBJ!n1vem`mVJpeE#Ht^RahpcTMzx`8qI9mPV#pL>> z#l)DnxVRU`D*_@Sj@EUSpAk+}%+Sr&B8R9vP!_%?-`_>)85QO9lZb%^9`m;o06Ho$ z_w5j9MdL<}8WKtCSienAtRU6b=}AcQ!3Xl(>(d!WzqHWlZ)&mpAB!X;>+u!oQ@7DVj}5RWA!kX z>CzE^3JDg6BOZ!K8z`(iq2IArr}12VN1HVHitrUw33Q7k2UA3+G@ybA z-{G1YLAyor3Nk*c^^JiXtcZ~%#V7x1m_2-9X-}nS80RnNcc9_7Nxg^o9t|s9X0N3K zKK9iEc%%@xzJQ61t+X^dC&gV#^j|Gt&bABGRIhSa(R7pZb^-V~Ja2`#T}8=qC#)9iNag)RqKd-pFQn z7y6`7io`R;GKRHY0dR_ePm9BYE{H4Se(E}O_>be%9Aa2X2H4hFwDQu^_k!8K3C&Cc z6ltixKNc_X$IOSX;OyEMHG8bl4nm0I0XvG-p32^AL@Z72I1Vn&UbWht5L~5q)oA-^ z3RHAUzVb&MZC>U9?Ssc_VY8=kl5a?!pk~~xCL9?auFa*7U2PkY^vGstx%jr1$2TV$ zHi%%~tfrjfXjs{QNC%@%^ZaF4x36DGWIxt4efqbhm7IU0s;fD8J#l6g)yVGPz3* z+j8Uads(l}A~c()@{;g{M#qbaU>mz6DlxohSS0zP$-BTs)_jpjs^*l)yDRh4buML! z`5IHWfxNA5Qa#0U@epsj+Y2y^PnobV|2R-Z(}&1u8n;Od_MNRhZ(Boa!=7|gMa8d; z`1!51BxI#4=!K^z|MyszZI zDXB*U1x*#J=nB(!_tyR@7sv^hh|NNR&UYC!FQ z4$tm*buY@y=3k?lM5$l|$J`7L{_~Ktx* zBC~KEg4+<;qQ&^5`GDXg&haQtyJ+2DRlmsYXwmlU2EV|;uN92wo+&Bttb zO+!VR$H2uh)!aT^%kTz^=`wcOr@AM@1X1nC`exQKYB)Ko>I3a-iuRknvmP8p`)MM5 zp@r-Dp#8U={X1(88b~z&2{`gl}{_mCA#*mR}w7O9($}_@w;t?5KP)QarIdC zgwR|O-Xs;iRAz~LnV3Uekw2CFFd-s%YPt0@Vw3`b+stg3QjF?!u{B$10OlqsRjt;8 zvhD@6OH(4mcN)BTGxAS2V19aCDCV?RXB_nl8bdi=i{%Fy<$XI{^ zMwWG>1Ew0RzwU8d13~9a^8SS%kE$^J-r6dZw$({ZJiAPJ^`btga_Fg*?iV53pd~> zNYI1`av z2!dEtSEIj?5+2dQlBveTRI)N?0FeIF?lxAW2E*r^F(zY9QD&@MVoN0wE@NV0;^8|$7bWY9eSLlV zac06(&OZp)58~XaGiWyjzB?m%p%?PPtw27-qB}US0V>9?Z^p+jOu#U<;k>C#`j|&% zJsBaTcpJ~w3P!j}!Ry+{?3o6XKLd;r-K83u>dJ0>M-D#{cq5NH=p6O*Le!P6FhVd} zWj14uetUYQGu*5ivU9z1teV*-zqPS}Vk(*Gm0>f{pFoi=Fy+-12)bpX}kv>M|CYFK~wRKR6q>s45LE8yNP;l+XYkGoBcw82?T zvAnySmOYyLkePk%UG?)5chLU)mkZS)3m|fO@$&NCegu3kzLhrjEcL0l)r{>^8_`0> zsKS4`@JpjbvKOq%q%Ox%C*~IX^$vJ+vN#^86|Q}~TtNT~*UV7F6Hro){>JL%RPvz* zn&1ScI_I)zT)g6~N?aUE%kE7?)$;-aao zAi->v3kBlM6lmh5%04K#B+2ygn4Kp*?FDK45?&#hTN~Zc>FLw>R#I_Gl55S_Zp7t( zcVqb9HOU_%?>PpxorsUVN9yms*!$XdfI-L6?SC+hhAZK+qTQz8C+5Aa-i$>l?1JQo z@lmb6Fzm&}?jzF}eg_~2E(0#nOgflC*JIlk{jJqwkCd(lQ-wD9t)ge0AQds;w=%7_ zD=RCf5eSW5WuN_&7boANF44_C06JM;AEm83(pQ(TOv|g;3_I7lmZ29DxF^STTUXvnv~_gb^qzulipn%YYJGdT{i?ViSNkuzs}j|YZ-;XRW8;*wQ-&3QukdIjw_By$y~$15l9ufKPQJ^q-v-F9yA2T`qhTbMN&5Zp3}!k7 za~S}v0K+~6A~k($jWQ7L%W}IPmwDn?*jj}ilQ{b1dcK4Y>+z4ng}Od9G%8FI6!Sj; zn>GaFxgyvp(v%rBSvEkVE75^sVTCJU4-&c`frbSRFV%DPSx%^uj2cnqeOKsybZg4~ z!>@|xHj>7b`cYi6ypghNB<9;y$Q0l(n~R4`a5Wx=D@X6gVnL9j~!FBcURZKJPWTeMG@$I8RN zfIjE4>;(=$qq;caWaTqz1IhQsf0`qXo}OMn+>E+&`0Y4*T3J2)cAw}#b^E>C;yKj1 z0TVNOt2r{%1j`ueOELSZLPM{l=qc6?+Vi+NcaqRoDUSdicX~nst_JhiB;Gg2v(14O zIif;did2~q6Q0Ks7B_eqln~4A<}r9&IIkiwN?+hA0uzLOo|o6pH4Fm zFZ~nZrQM7T(^+OQ{(vFE&W499^lP!fek`@idk0HaueI-Cwdb|m#f~7aWgC(ZB_r{& z2^#Y~?RvcWAB;{*@sJ7i09lop!bjNHRL97|c2l`_C1g{*s^6$`$vQXpCf+H1$>$2B z?a^{;_;F%IJ1P6akoO2@#huRED)1+_Vc{}8JG3l6fXR}?gBQ>8DhPi*ikXBaL?LGF4Fsjg1fGGhv&HR(A5u`i# zE*yiXLk>t%2&@`1C{`Q5^tkV(1H&!w9*Jk$damzH5INx#;O&bj;+PllPZuut{sF3t zb`qt?Wa$tQ##GkUhvpddNYaDJBBiCvJL;Y`2D?-_^Ax}l6wAU^ZBG>1G_(|!AUN?b^j7&v)fa$tUC_>5>0TIp7L0*>;1Sn{@hRe9dW-}RBT=9`Hc#j1- zrv|RVnV`kOx{NaJx-?BY=2%FWn!X=NJL4A}ssSr@oBV-~+72C9rWkp8Uc+UDox<}Rw=PiZ=!h?T-_FC;?j%Kyn~UDPx* zxUZ#@^SfW&7pFzDvK+p*CS3O=kK$I_A%u6J#snqBR!E5kzoCaiIXtO#UOYH>s&e)s&A8Q&V9;_Q=HG zW9odhxa`W(pYvgAh<2y*o^ea)6(U{5UYTNAy({Ql=Y4q>_SdOW-_f0YFI}T#>067a zoW=6s0Lzy)4$GnFu6Y>ychP0b+*cCk{8iQw-lT7cTW}^1?LU%IW`qogTo*qZOYCHw ztn@HM|BL-~FEKk-Yl8aKY03V4i0DoW-b0W`R^G9f_cYY6H$wB$Am48$? zSyRY=sO9zxOxOGH=!A_LdwI5Q(>g}38&{)Sbgs=UhmLJUeuB%UknT7?JSJ6%W7q&^ zplkeB^2W{qo%w&Y04G&ENl8gmbR78-JX((7s93|z5g%G=<_IyauVG0p-0- z^1)(4LPS4>4K3G=`(Itn@k$4H70U9-82FOOgUbuVSsNSrp&OHMHdIL`07;|Zx&c_a z4SjQATDfbu_yTAqR6GO?0VXCUD_X!GcIF}OTsOrS6LOyD3^)rfgU^g+ibDW9^1C~C zl+FfqtjMLBt$}euaEtWM_TV8&VL(}J_uB%B$`wb*2D%?<70x_<)RuE@FV_Yz2C3^J z3JGn~`K_M1kkdB+QOE=ZY7jD8Wt4!np1pJ1E$ZS1jd*&o!l^xn{+b)RcQtZBD9=A~ zVEs88cN8j2)n|t+*E)$F%J_J_I3+&b?pas^xjNzLWMjc!1d_~R<`_jqU0q5G&^b&d ziz8&PD8jh{Coj8R|COb_cOftQ?u7mfNTfCb|5}cd@77>a4t0bv*LOicA`os%fvoo- zli~!dexr5c(Ol?Hw0%eLEiLxNJ*Si|!@hn7LkTTq_g=ukVOL7z@y@x#D;e2=ZEe*2 ztQ?YzdFb&ofl47zRNFJ zHJx}}UCH>H$%tyD0yvCI(zo%XWJ7C7#kMUYK#%0qF8C;Wdx0huxi$2tS5QI9vMtH$ zq@gn5OdaU*jK5754#O%VoS2ux6zedKP_B?2Pp_^%0#`J_;X1vwRcyizIHKJ8*<;^_ zhA_r;Y%A?UtB{hefgW^yxZrWR4lkbh{#U0EB@!+6T9m3a{4lf*k;putB9SAw@$~OO z_Xm~_xl$C`28M~$eA^185fw>N5V`nuZIz^$T&&hCX8a*OCZsv?U&;I20|P4e*FTHW z$@0;~_&EpD4ek=iRvxrV;P(V%r047o#D?pLnfNTcQfg^gv>NnJo*Re~wUow~cjI4s zd;LOPX9^V}{)uOeaH+SrZ^Cidwo|&YJtNd;eR^ohSLf zKuizD0QX97xta{(>|(KrTuV!911EEu&hRl%Ew|#Sim-9CsmptyEqJ1s ztU3i2QQDD}fi}OIqMk%?-~e$8g^tfve>VG+8=e`q&QnvO4UGQ;#C&p87rS;d@@uJX z#e-oXnIB!-+uH!{*s0l4hiLemZ)?nsxZoB)9c@P~90*?+oi5X|HSNnt^q&RZp2YV% z{200KA}&yMYD|S+G^h4RQV8XLs~-RamZ!gv0PPdDKAu%Bkj+kgwDZLq+R9f) zaJNYwm`(-xpPrxDOl2$D6}>I_vf`a$v1rs`|H$a!h3Ve{4ngz>VSy95J>L<`gb{W1 z@u~@YOG=;pKBb=iH(kEwIhD<(Ki}qGzp1?kFj&{nJSMm5{#fmK2Ngk1s-E7XmV~+2 zxs{IFrOk$ae$RC?hxC~vv^#QqL>-LyR_T@&SjEN3{ZYoyD>$h=STU0X7{*9vBf^l` zK36~)3qO8*2L{3d@xz_&?*i#SM#(RUNMoEUNgvHW*Y z{!C2V0br*U38d_4Wrq~xXt0wgTiA*^!nF|_HWM3g;>H1jrO&3Orj~7<$lik|k{X;f zmeMVNN$lL>Ef3T#ht8Yt4u$_QK>g-wI4)E+*@cF{g}j)}uzo^Q13EFVQ+Y8r&|5J& zi;ltzZ30Kr0(d>&LzAcVb%4vhH=Y+0M5RgefUK5Gt?}p)36HeQ9Q_LR033)0lul#&>x(Bo&T3@KLuYys4>aUxq+Ph&Vsjpn*aN0m;MX`E-Jdjy`u4 zuC`ChF&}Cj#-eZqLbn45{g{Igt0!*4d^Ipb|M~*#Mb7OAF^bMYO-)UJ3+)9?CpU@o zB_{}w4bzxZ6MH$RC4Hf|NX&CJXMN`W6RZ_z?iAssn>!oB4{ zzeH3giu!=-IC(t&uBKE@n_}~`%ikUfsX3=GkdekSqF3xL#gw1tv%e6Zx&VUA?h!8|F#OP zwN$02=Wma&O{E& zE_?rdg5f$c@K~a0<8toF%A<}s%APT|<6pvOl|x*WBf>SmPO=+IXKP9?J+eoUUye^O z$h8;6ek0)=ygl2>iDGLXEQ1ZQ3V-vg+kJ~!pn1FKvD%KtKvIr<{1e#fI|XEzKbXx^ zK*B{|PcO^}^{o_TNL$Bx)ToaaT;PoX5rAUuh;yr5jXQOjPt(MXZd_V?bprLF^`UIoj{A{?jKCR|)n37pHaO z#FUhwy0NoEa*$5R<3jetKrB1k&a>%hzfnDN|K1rlEWHQkh+03(=eG?%75O@cqaC1Z zzrIQG+jSr#XlTWQQ99l3zIciuav)RJc0)(6oAVn1Vu4cOdti|Sj|;5rse6Mx$>tM!)Y&i>I*4F`_h^D5C2_+8mI%*O%m_Q3j;ybLgR) z7)?Ot9j0&@hPUEdz}gclDml@m$3TGsMk|)f>r(L1x`);dk{=0m`_?kPupsvJsYo|b z0Bcc;l!Qc44up)w3K>X;Ak4A{&_S(rPcl=nA1B}Ynbn9Kgo{w$SuED;!90N?;qc`(2E)vwEqTR(CF)H0kCyi)G(11?yPt3QP(QC5Eaaq9QQ{<+8M z<=7FG$ENXe49Bo~&3f4cv-rSK{AE9QCS4Ln7lT8A!U1dLrTU4| z+F4I3o+n3+LnVsSN|856K5j28zQoKOI1LzeY%El|{z%qszJ|hqvVY5eKq+Y$NJ^$= zz#>)K2IL1M?l68=fEZXnZuVOBlMa8tbqAW>XJE#8pJ13z!`Ql+T zpVu-8ui7}(N0KK!;{PI;ljGxG0*?~s2q?NmhIn{*x|_O6o1*q&I3WZp{QqKA*PQO@ zb|y&-L-L3Scw!LW4dGU5Y9Xeg43Gq6K>$$C9R7@K0uw4+@ktqjR&ib)?OU-*0$q8k zCcnTR3xc0n=~Rn_r*xz%&a{6RO)=emjyw#@c$v7La@r9Lf9AlJvM*v%%OZnja2t|cG`{8T6BRaA%+S>RPU-g z$OO$aLKoaMHRH1jqIP+gH&nWPlk27rb6JH&*nrEYGfUQb}Zd zCEWsIPOZm9FqW$}9#3KBG)@ybZvT~$x6?E>SM`@*sf>Ek zd~f=?Z@A85=W~$$h56m}*YKvj>b@0v+w~m6C!Zb>laY}HT(9G9h7f|_WxY@TthTf@ z%sp}-jyz!7$k4E#6Qi_0Lxpc%kq`zuojZH82FWDLE{AFUIE7ZH!1b{Fr1<$^=$ts_ z#tqm(477@(oGcHy2<0bH$S+jj-XzW5a&mIRV*I5=no6ESUbfy_vhdIErC#8%gn9F{ z7n>CjcYL~@ODBSyQ5iJDAA!iNm%o3sc3(42J?;5T{F!Q;dI7{_Kb9z_44!Tu8khN!&W z;pTO|1G_YsHIA^u+)(@YkuJPNlY$}oJ}@{@bB6bxPJ^ABRmn(C(>z{FgKO9&?d_Xk z142&TZtJ#x=|uiZ zjRd`XSs>}hDJf|V(z-m*#kt9B5Cj34Qo{D!zt8U1R# zhWep_A%-b7y$FfVKI9b+2r>5cZNBH0e7Z=2O zr)Otp=jK=rA^~c^mXeZ6e(ToQ)C4@;yRC(1Tm&2F#eeWzmj)6z*vf3_U zF@=5xf^dNSh5KU~v2b(a#Hpm%J%7$~*$?8~UVs?`KN={NEV<~sB1%eq52HD0X&XmJ z)D#qP>9e&@^0vr2wY9aCHGr?}MG9Q-w{PAIQj5#~R|`-Xi@?A?A1eY7!HqGlu#jF9 zS7PXETtXA+go%bmCGaiU=mBQfJRh2!&3uClayx$elSS-#AV-mu^ys*M`1S8!S0L8m zXiY>&czv`a=3@vl$ApAini z|Mms?->V%j#lG(JR}zIPJUC3emjhkxuCBJ~)CdI?l>rWo7%Z}+mJQC1Dzawh;!2?q zLPsDQlCZOaH3V)?aF{_}QIX{{Fj|! zx@i%X%kQ}^4*^d^MnJ&eONEJ#-{ZM~GE}F8L&G2}eEH=qA4uVY1%p&(dU#t$he?Gl zvN@{7cqxb@fh(ySC@3U!b#>)K2mKLUU400W^Ir6*sHgy?6@|5jF)6YrXxQ1?7fq}e zf=txyC?UO4zdY%`#Fqd!H&hG-_>ZpBrI?0nksy+^*k<4W_6=~;(5i?csn`YobjC=o_(altaRV z%Zt@t<^HD(@lkl7rsn|i|ClaIaFK4NY9_9)1QT7(38jt^OU#pFt>Z-smxi*;9^|Y# z)cGFp+OV)NnC!ot+@)G93ZHd%W_r3S2oZy8EzvDBd@%C?6$PbG4JtGx&n@n=ixY`1 z{V?gyPzlax8<3bl^@1S^qU}-Ywsv;uYeiA+QmKTsmY=7A<77)@n7%un=hImj(N~le zHi(R@Vqrn0c6NCgxfy{Xw1MuZrLHb-M;rih@ijK;DRtbfXxOCkU&y8Wxtke+g6@Ih zZ==?LXa?zxP+J91`iceO2CrN9jPp~lGLi5e$7B~c&frADufl{Q5>PQK zfywR0NUP58@x9Zm-IpUi{(Tz=N{Q?G`d)%;-l-Bc5qg}Riwm?1eSxT_aWPgXoZTvu zXk5`JYH<2Si!XM;INtm%}(HlqWUTSMn^em{t<%D`y_6}$u}I54ct zn_a??A``*7!d8??s4FUHy94OAg*&HUNP-p^$I`n|I3d3ps?B7+i$mM_;mln}M<=@A z{MXepb!mY3t$_VM?FJ;${#b%Z5nc3acU3%b8W&P=g9>I{0aN!1QqNzoM_3_IO2=Wv z$aARiICzn(MUOW|>8k~$)gzR!4X)Rdy4{upr_5Fu`WF`$wR43zn3*BJ$n3xXv|-rj zkBEp!GXmT?s&B)Wz9K3nW(%=NsG_2>;Y`>P9TmlZEKK9@z2k)kwHCi!As3*>X;FYB zMpZ}lZJbwCRM6ud@z2fz;=Bs*HRw;ex4`G`9~=bZsR%?(7SZ;i4nxo7f5VNF=`|D2 z9a$ongzUG3DrX*H5)i%3$;~aRG@sm2`9v={L#jY5fADmKjG}Y>)SUaEi9M11lnE|` zcZjCLw5WCT6F&nf8lp|yd>rXOCl?ag;R2=#j0rfdHcmL?{Dnwq*h>iL$b}tgeI>Lv zX?t&P0mRlKH)_H+*j)L%I&lL*`ZqfPwEu{*n3>3t_!(sio00X_&?1&GH|R51bbdyL zK?FLkr+>XuP9LEOsxf=;>1lpLCV#XSBj^T%c#sIJyC!}&rz2=Y{HrK<97-Xxr}OR$ z#^D@4LN>4(R8Tc;B1R&mQiBDSjAF7hMxKg2Uv7poh=<>n^#)P$qRr37G$LW3;UvH1 zvj&;|#HTC)pSGT3FraS^cLrVnJaU#B!`^pRJ_6ijG9GhCiM4?N(MdfRvG(>`z$lfU zJiEC8rcvX51AVZ(=0508lO$;Id{*`WX2&4L23n4r4Z-)!fD4hQ(~(;k)C~WU!i8R* zos`ocp$@Q*LsSWf#nHp)=&WPZ_LES~P}ooec0jmtI3KqM5k#p5Kd9$$g4m-Gk~nbC zy!%_jb+o@9`?hP}w+E2aL2TN$*mhX7{$R;(V~#ge3y$KJPe#lboJ=cYu8w532i!pF zwS(v_9wcfqHbl3ixOi`9uVV~N@3rDmYB@j#ig;sNkP_GR-Y|Z=Q<8z+K!J$pt-Z62 zTg*h;=kz#c7;mv{^>(VkL}nkEt2X(0bW}L>FNO)0CQ{w#*T5zVa$YLps0UsG?5 zDxR|MY!)~fMKB`>H+~N_4`x{l)A~uh}l9de%2Q zN>vB#j*5T)`5rlo!4Ti}NOb6CH(Cm76YYWonO&1#as5Kc_MA)FKWu61_!#eS_{$gU zUr+?KoB(6q3`{K&8*7(^8|*ZZk%z=OppK;pahq0fddeV9ppF=OvBF>k)R;8d$QFV8 z;(QzN>2|{x#LKf-QgpQ#rlhTL>BSuJM*-)fZ~4BSaY+~2w7G!(6YkwV-Dj+vlamxv zlg*(8drhpeP``mRgqk=S%jIr!S!4bQ#3rqAJMGYxNcc#uIR~oMv)4?lt?77PcUIWc zVhXj?w-Tpsd>nk)#t%c?KnIHf7kddh<6lDaP^LrogIjCru(nBJIke4sza0-Gkby2w za6N!cUMDGP&G-G7R2oF~qGCbbZO1l>0L?>Fw6hx6Za^k<{)H{f1SQoLyWCP;sUscS$SGxk2!J@V zpYbgJr(i&fBNdns)9OD~V}$L0TYpQk#tOV)_*CAIxxG+o!anN;DdP{5RM;K?m1z1G z?bsyxsx9oduD2aaUSF-@RU5$1VM6G#JT0!sLsa~?92?U1);^W(kR0++fFHno+`T4A^ zIl4u^f10T%vnC1=rIoM)n!Uv=z8dT`RHY89==0{8Y|u4#UJq&t#my^uC)F?Y;N5_1 z+a_RHkiqs-`t^_K9PqI*obTxDWZ{w#H#za~nvD2CBnlj%_Q)frt^jj?&UQWk05a7O zG-2}=w>X-p08<=9`)u+0D|CfDkfy_>6z+|{JWv?ZjE#$f=cR9rqY)p0Hy1#*IsSWp zs$}I^K;N@SA;q*p+4aDfGL$>i6Rm(qn3?(p>*FPqXp{+aa{GZ$T8Nplp)}$^-h@)Z zo4JOxf!Zc;{ammFdA;WB*U(Z!-Ra2sRf;NcEmb!o(LP@rE47C$$h%R@cZJ@?~Hn-i1F|{jdIqC+jcwPRCEhi#+t_qmya<}unrl=C977tUs0hW&0+<7&hF6B z&={GTA}B}U#vl&>6ZHDxB4PzKDD=)x*+)sX?WN}j%vI0S?5DQ6>^AIJd5gdDQlGAS z^qEwMvPXaVBr=LxsWO(!iPSc<{_Pv^QS+T$`~^DpdGLo?2Xt-r`6~K7#Z5oD)d7FT zyK~_q*whr~#lkdzm2((!nu-sf0=>&K0-o+b;{etNaM@Uz1Ypzd`)41FXliXW%bfImF?m?o`x6n4muDc{b$X1}`Q!AwuNtj* z1W=u4^EH@pL>_{j8>dwf4|*STX!b<{aulvY$}=}hNA&y9#KK+dC{ZU6@z^SLX&f_d^gz$B!DwGE2}c*(qhB3(<{OrmPsn&mu<}brqqr;Q@T^{r@GExE(TpTQFygFLrZf+brcRUODMvyA{VX+Doz1QB5 zGyH&`jRIeKW)6`&lvaL>q4r151K?-=L9QaR9xs>wc z7l($__6wNM4?p&mQdr7s(U!lqCGv(rXtqPE!_-+<4-T=wAEVX*{D5k2YQ0j9>L~$+RBp z1DywN8=EoK4wX+Y7OHD%bJDkKQ>+n#N0Uq~@h{k{jF^H))8JBzpMnknbEMydevf8Q zil!F#MB>D>$`9Dvp!p15CD_Vicm(|HGul^w9we-$(cU7TOn@9lX{0GqAj)S2*RW*z z#EtN{UUdDgkl&Pp$lud+#ppTXc)$5>_G5M`gJ>>}nX%hJN4Ry?nnQDup&hpR#x$m_ zcrIA=gQSduU1n39?@MDXp+1QK46&+~g>eS~Twk zIV%Yrx1LewWMq}%<&gTJH!w8VZ%X-ZNAYlGk!s+b+%Vd(3oOt4(=r zqcAr7aN?mn(;Da2++0e{foZ11n#c&n9fcg*Sg_LH4Td~7;dQC!D4=+@$hQ~tYxUjJ zDB^0=XhXmlL`f7@SN!+A5C6o+0nG0XT3Or*7EdM>PS2@C-N==ZJN+PE&tniCYmX99b=Xe|e*(gL|8>Gqh+`e#SOI9A!Qz5G>Drz7Od82r)pa+eSP-_S_o81$cFe zd=Un)74_Pqm%xw*k|2Nywk=RzJVuj`=26dLk$9hmEFmUBKQUCW0deB|>PlrpkG}$_ zWln9`w6wHfuO?D-7Dx|pd-T3)u=NFc1UtzXy=a+0N22&9fTX}gNU>XQjc~XC@ei=j zv`(fx!LOEzvjC$N&HA^c8}<2Hnhgj|QLiy*8SXR05~?)SK>pm(C*?4LFG!$eWMTpv z0R>W4V;@NUnUY{P$UY;H2PbI8gTT&affLnvbXde6Y5czPBe!*YFd zLv|6lgHfX(Y8byo_9-;%5^OPuuJI2^(Sy_~*3amzg|yIDvHkqq8!pNM*(b1WcBlZi z*nDNGAHk?kA+-fD&Yk=xcrx%S>b1-?`}-0CK@$uH)P+N~h!LJi;)J~!(1(K-DiMz~ zX1_RHf9CnoWnJRTnNiPjl@fFFEvm=bntkeL`H*U-#-hgoKNUhl@gdy=?05l>nFLT^ zg34_8s&?B3*ks4u2>n};YiAmzaOzIXxODZbZ+0D2Gzxvo-z2V2C)7b+) z1^8Nva9;F7476UpgzyH3hK2@l-GUFOWte%3dW)Az{Fa`U{$BmeRwH z764l;%)yF6h=aZewBHp#1ORFpwH!9Sw5j+Gh;(cy>zXqwovr^O{3(rhfRVFBrXXRf zy1AkvlS?h9c?iT7agN0xwS4nb)IL>fs!Iz$=-0Ricf5Tr{QDJdyIB&DUh`(5n)JpXgvPv_GaV)N}BGN!;EMZeE}UJlM7Y=de6 z?oKoz@Cc(zb&2hi?m%#D7itypK8sZ$ZF}Q#dvy__Q7v&^XC%`kG`-Qca`3n(b>6SW z#uBXXf>=QYVTaj+l18Kj6GdVTRI7lw+W4g0Xk*L^^r~1?ktUwX%gckBD8&V>Vth)S zZ{?BvK+o+C^t?Ntu=a59#JLJI^6^IKZ2Clh(MVhz{p%NVp#rdeE#9qo(tmK$W&xPK z5t;koK2QDFK?gW5dJYOzenLV5lueSI-A>3anQ&pcAMgrcT(WTB;k|dDEaZ}r9b}G; zi|hE_&%bPJg-)e~{opg)zO%ElLAkNAu>;>h3Ao;m!i{g=B8D}-Ue{W@+b0teyz#R@ zlhyJ8=*LXxd!i?AG-gC^mF@;^|N27g62KCGZ}Gcxa1h6{j6(@X;Q?rY37~|ROp*ZV z+||`padEL)AS9r$B4BP9e^H(l5|{Tl-bzhQCcj7f3_nB|U}*@w3WI9Q^8-uAD}E-(SI@P+^OlPsYF>|{(XCq)kD?sy-hC}S zzGm81_akAVY5r#1rPGdutR?=;@=^uo2|0C|%h{N}TMW`Tfe3iCX@lv9BIv_f4l`JX z|2Xqp1rZS4Ofyaxv)uwpfYF`OMPnCf?pn+N+pf7IXIbkt6gmu?O#bOVF`%#i-) zyUl`wD$q>f;p5j*V43B=hxiL*ym9}TBwgL@vbxa> zq5WUKtpAf+QuhB`Y>1fuKW_m%V&48Q52h;u9v+^5SiI6_>vZ7b(fiwGu?vLk&TGyY3@56cWD#p;ZIRaEazb{G`eW~FE0S1qcmo=@7aMBjNWW*ZKG{~@CPqiqWjj~-F=pz)9asK}_21Qt$9 zkZ=bjq6Fz+1ZN0-1w;Ol%6_^2vA`brz9s+uv9NHxNO+h@*$?%5Fyh%@h_(2ct$-Gu zdwsAv48x7+R|hLY%2DW;n4)0(5E+Tpdkvwl3*UGs1^4{`1WO0$JF^Q5{^_Cr>&~Oi zV`nq9s;H?A!Z7g$C9ihY(i#PQFYRch-87j8I!`Rqh>s`2SA-}W_#-p4)L*i_th7}80)R`0LSPL` znVwqv>HdXMf{DeHF_yMD_RpU`gO*@G02qdawKYq-RMYO>UIAeAP;eqei`BHzO3ZVA zK#igPCrv<;n>w1~c8`H!?xUIa{vCJ@AB53OfmzV(@Yonh`e#GhrqUBQlbM2SItd{h+8kL=sHs4^aVi=ks2 z@G%Z1;NYYV2A}vKA|n22^6qUtG1v(;3h?f*Zwcy(d-Xg7H1rD()HO9hc77AHLY{rg zWaw>cYQ0cZR@TtaAV}_e14Di6Jf_x&++4=am#mQ9DQ2={$*Z6~V|yebl2Y{r7YC0U z@+<%f;QeyhN|AK~1*=0vb*DBPY7#OsvMkiTRCfgNa6iMR)i%0l{K$8UUMRMJ9(GLI z-rhbFAJdQulbo*sa5=+!S(^?(hb3dt#0ycqcy^+agDQesDgxJnlpp+%#S<42>E3F#AoUFDs@mU~@2f(3*CgbGv^nsrgSg<{QybaJo6dwTrK}u@sZfJYf zIe0P*w6!gK2^M$y7~%I;xeY~u)`DWBr6m)TqmWR5X)gD!^ysOjB~w^S>-X>9U(ksj zq)rVF-`Z$>GS4KC)!Zz0kQzqFO7|Ux`x-R}YM-LmzzI&H=5%i<++hmwY!7E9j1(I~ z3ZZ3SBvT4?ix{Cm1vL2|$ZpOfe8#P}lPP31Oik}mJRjM<$!h8Zb11JAU~C1A^Xs`* zWXm}iEaQ8mIFL}pk8B3%JM-_Q6cr^URP`jZ6eSGx47C)sauZNJeLh~$zSF?- zFIwx2yUUP`ikm|;v;?wXn?CzByMNsUcT>M%qC_Kq*R)F8U=*ciy+_B)%l=eV3tfd* zlc9FcI_&2Y9${>W3rAB^^Gp_bmEIG)k3DNhjeBO;E|3Q}ap z=T}`NJ-8$Y$Q{s!XdeB0yI&xf69$kMA4I42od$nz%Qw{3j?(~-!&mg2_iaCaNs5Ul z1bLnT#i#oUHMD@eR3rb_@vuX3mB4Ng1p_TY`)TxVji-xndiL@fl3oZB3XYJ>luZBA zzoY!mkITT1ztSMrbeC}_jfBVcWk#`hgrA51`6Do840%BhNrGn}{ohEri-AzVB3$oW zG)O@Df#p7{N&ysOfvCJeh3}j-lv$1`)#yL``?$div1VJC%5>yf#y_2fOK1w*vqq0D zV;$Lf$|nqNAqCXJP%k_`SjV zi%1}MCZ(lu5HYi|(%(O}UH+#PMTE1rN;+N{1h#E5QiiHRym@5ZG0_}~+oS~^X!G~+ z!H+3A+RwZiQn)Gc)_K=o1yxnqHcegKMEWa|{*-!$`H|YvfpmQQ4|dZo&!d%y`lsu! z)x>9m-%GTZX=-K`J8w^r?gmGuiF^6z>gpwIj+Ofbek{>*T^LP8jPyLcP%xoy^G1Dd zGgJHVoGh&*z5HAK@s-nGPSQut&)rq}G+**h)jP3^&HYW=_m@%9PD-RA3`jmdrcM!Y zGSsLMbeZQdWhT;!`pBuTb@-z;{Ke_Pwh6!M5f9w-9A6A^2hpIoJQ{y z5a{hvw~g4+T4!iL-_|2JPxea%X|8QGtvBzn@#WbOUiF&g%ZhKyI}Ts;;)(w92B@s_ z+g8~=kC+M|k(b1=t8=zCnk--puXWh%`C!30TC8`rGV~Np$kWv>Iwl^EmEDw{)N0jG zv`!_R7u!hKr2>E2+So3rQRk#-|F+j3N9R|sTqK^4?9e{r*g;ZIP?Vg1kRR0hJb=Xe zGK@8z?b&{Fgs$$mleucDs6FmKr+P->i6RQwjisWrdURZzvTC0O^UpU*Py^5BwFJo# zezK-VFAsD9!L?q%94$VhGL&=D;syrOJv{}Gv;t>-!(Sa8X5b7Ms6c^_k55W!1y+k> zweU>Ky_D1C6ShTVhm5_{n}(+flM!R3v0%;7qaLe~;`>%`2HXC;W2#yIQ5Uy*&lD)_SSO z+`R13>F}uv=C4AHfbGgzVvE|N11O*e%T?X9@+qj)q z20=C*7!csVaQhW74~)0mnB)Y`0GjBHXZM7h7s-UA_CSl%h{y3Fp}e2~FDAyrqfT$B z*Y{)xH~qV85H_{g>xS)TwdDwlT%Tz}=>oj3-WlLsE5&rB4ww2x6ofszBImWCVQ05B zXy!Nv!L-3A+1IqXD|uX>`OaPK*T2(S_H;B!U0saHDCen*e-7wtlr4 z|2Z*1#!M~Z=CIsPS-A$kFx~`=a5CT!{X|7ZuC1v#SpUt*%X1lUh7bb^ACIA-Zj00#J{=t4~v z+YGbDpr9ZyE&`vt_RQ$}Shl970si3XCj=%#bI>wmq)c%}`ijryeEE%sk0*u_EMBVL zWNk}G|EcnzGLmw_d3EGZ%PQ3f2~yPFUffGKLd27eX|_&7C3QkVUrUTCE4hSy+>9V* z+ELl#T0JRZ>73EtV69B9`Vv29L3p&cw@3QO!%Iy~-c*AC5jR>;)K2z&DoJ`2Q?_p1 z3l(SOyC3)0V%GmueR$nichZQ2{PeN*^0%~2!b4}=$an818f=LXsUM+eezCroom;Ro z5GprC-`h(fTf0Pw(D~}23z>$~ptkzO;WbXPT^kW<-gz9$THI6C$>x%2(PdP%5S%X2 zrGF3#FMLRKKc6h_GeSJgz+&DDn+4b7_Q$t{x{e2ApWW)Z5dN4Cz13?cr*(kel18KK zzekYgm6Tkc?3ysqK&7mrs5sH+`L(#1LvI@VR8Q7RnrWJ7WF;j0dUfwIk=dFfjoApJ z0UJqHQ}Z=2gn>OH0z>9@Gol78LJsPO!q6Zp<#ou>nSL{)SPOJ zD7uUjNfY(-mWH_>zQ{89`y)lGxNvQ8)hV7mjWfQyPN8boM6Qg>C#g;DF`xa!Nzq6C zSC%uyyy4n&7IKo0?u3T!y?S-~{IEY%L!ESRK-Hj#;+%zn;qU=dLT{qseG9$Bv%|Gm z^&ZlS@NjB8vap%y)~UPKAwz#_3N#~h)9UJkh8f=nw*smzYP_*xD}2PJSG_lpQ$gX| zshT3Bq^@q<8&q{t=l%Q9)EyzA39QItcu0T#{8?yyDH;)(9Xm3rvL5t4jmv$)=3L2w zMf2y&$-1RLCG8)5%H-n{;wu0peR(;|6G$9~Bd@BEZ}b)GKV2eDGmQ+c9iH2)nOV`p zwM;CNNb|!=#=+p9MNufmV?a;QBi|4qfOHB7@Zz7Z)`~>F9b( zU+s0TH%^r}?Tu7aBG3t62{A-aJ>U^y{JXkOJVD6vx!`kYEF+`l?m+9&Z@YP?wZ+|i zB932!YS%AEd>QZ8+4y?@PP=U+T3Nro5d1#P)Z9#Kx#E)G>`pr0=%I$j6*vD8rCeU* z=A>$x03XjHkUWW2oo8xg4}ClJ$0tT+nw&U&9!}k#u55me%imjBs%~x8{Jeg zp#Mi#&*_gJJuELi?!A!4dr}t5^C&yV4Ch}KdGLN;tIEBZL&_o=o?kmu3y@S|x(C$5 zs)Zhbl3XxLpevEaWm>3Ae$G8OjqWa+q_|G+Gd9xa6C6JDN1D!-B+iM50m(4$TwPzM z-+?RxT%x;FA|&UM_g{P%0txA3XSEQN!S|WkN!oy7Y74`id$rhIL~&Zq+)^ZW-*3Aju!8UANIT2 zRv(R@NgVp*YQq`_2_>a35Hv|P$UW}&hU*IAqjRC3B| za9odE5M5TM4+`s$%J1&!|M_dE1^eJEVsgVhT;^+JI*-A@`uK<7-jBbZef1zsS+JZw zpcbK{rJZXXUl1%B2H)#_;%3Kv0oOe=a+w?&PR_dR+VGE#Xd&S9ppmUec$l(PFJ3cu z((<%RPU*`<=X;6idYAdV`@*ct<~7bs6Z^!)Lk}LD5b#y4$5!mPH`Y~QZ%w!0O5gFX zTLSE+P&)(W3nQkv&h%75ui&8vXi^=(!b$oZ6z^ZBG#rJ-8yv#%uaZGP|+#)43t znj3?#kBD8*K`ajB?>99TgnsDuE!{NopCCtrsk$NUc9qb7u>c_cPW7r;j6Kl;V{$?7 zGaer-0|SF<6R0|1dVDzBa+~Kl@TDu;HMK}!`(3TjE8F?Z~Z^$xoaxD%B=G9f6E;dKM8i|UhP1F=DbkZZClbN|U_02nbZ-C$qk~%u1^t)uI z&AX=jQA#_fw*!*l&V+Y}6DRY&B*Kt7eDl*!3swJRqKxDNtC=QIQ{2pD-+$G__k~1& zfcDU@@ODu^#D~@`pg^5I@U1U91J6lWsfdUsHK4TU5(-gYlshO@$RK9Z ziGnVXXJZgv1}3G6D~8ROl#^dqp`6xPj9K~;=vOOx93|cG*V?{js*n=MD&XBkaW>{*xrfjjLpzv!ovVI$dR|~ zW_48+`n9X(SOc6#piVVB7(D1enas`3?&-bW{3f><4N$|Rsf-$9Im>5yiY$*a^MfCa-z~aphyp>H z871Ok=4bHuTU0-IQKy`ssdbBG!-;1xa%_8^0WpY2gp){4PfPoe+l0P0UY+Oj%}zv2 z^4o_$b^uMF?t1!8pS~;LFr$SEp9Cv%*VZoBbHzDyo2(7K8eWcTk1FNdvYU1sE4Tev zSxL}K%OqerSUNN}C+Odwf%NN(zQx(%oe1(t5BJk&4KJEKw_75Tzq)P=y7YxHNMb>? zZtGF?ja&b#1UDb&d#gk1lftLKNLHW_5-8p%rT{11;v^8&lns={B zn|Q%*nEkV0tF}G$O!u&PIFaUw$KHxhbq^t!XW#7P!1tVE?F>h>RFy(l4ru^1isgC0 zNaHyNfa%slBAsGJWm$jx{N5zz>ClN;CM{A>Xn(yGF!9b0^bw8U&V>3ag=APAL{FuyKs>; z{h1uBtz#OzGAGgnwm>+lL&6ad5)uMBg0d1d*_(jNiHNuO!;g)9b9>t!s4cKEqof3z zG?2lcV_|;2H6R(JHw%r7EK{>vdN zdnWT14v*xHE{AYh6bpEvVGWNy+5XdHwWKI$Kk&85&own2*%!UUyl|$#u~D&3&xV+F z-?~J^YiE7zwcYB@Y{&VVj0vJ&=gzha9x|y^P0l`h6ScOg=T3LI4yopkC-sF?sLwF)8C$!Xq=$sr`?z1oMK?OH^Ea?U2Gu5!y0?NllZbL z+iamO-)c3FV|sTFLpncca@0zVe>wgN58rk1$6-_{8f%4h{MW{wY4v{ z^X5eD?Iix!>ldAK<$qTWrEnvlki`89Mh0Whb6+ z`isx>#4)9vgS*7EZ3y)(y#`uZS~dzG#E|^~;WO~tDWZwTb#)SX43*8+=IvN;>;tdMp!ORp zAOJ65_|ewZ_MTEWh|4)0SYW_M%z$AI=6fCnsr$e;%GOc`7NbdFL%cjv+aN=mk~6+VDrNI5)ZVp{cOpY6P^ z%ho?8oEWC+TU*8U{`fIbcdaa_85e!KZp!zuy$Ilwf?5yvxGY}GgoF&GY zDl)*Qzuky&q`JJ33TpBnMs@DTYhx6xgP|B-@3OAO{=OIxA(xLzNO=p4Hh%9*e-vl? zecHwSU5u|hyggd^&vwUZlcUN!oGl|idO2^DJn)L4@wr=>f*=w5gbMH~@SA~=bf$KQ zPN%(2u{?NJ4(Fp-gu0CDI^KtJue3ieHwa_bk47 zAs6kP$UT34{V0nWfa!%j2?@g{r_Q5Rupib8#=3G%5Puro9om8O>y5O8u(T2NHKCJz zD}JWL@HmbbHV`r^wG%&`0Q2vLS16`>vq=aJd7>^UvJH%!K5Lh#hX3t@EgUbcjIU-} zK2c5A_jGsH)iv3Hip83{z0Gszv#~$4%g$?KRM%8g_UVs2u?T|}gnj0RuO=`7@sX0c z4W8fMBgh`PoqX0E{?4w?M;wW$iFPM8HtvznU39Geq3J;{gKqy+$k}$S<)@;r|S!7Z2M^?52hUD*5i^%iiG_k@%%A5Cbl0tINnw`FB{v4jD zbVe`trp94oW#7Cyq6{Ff&e#0p5zkxDaCET0he6QC{(#wRsIGCe>gC;yan%qC(bAW0 zrtb#Mu|vD_)x!Uv25E2?1h`=`Nklk3^jer(Kfn4E)g;qaXU-U;=F7MB=#Ya;N4ds$ z7I%MVm$O8D%VfpEN8VF)nV#Oe@t9iDI!UuC|HH88=xQ`8&~n6X=4v^y0LN-T_?Vqj z2l9p7!+)4Gig$qa2(Zxg`OGzr>@6dh5e#_|#-qrYc!HI<<$b9ctC7#RF9ol=P0b1J zO@027FHxdf?M2ucWit4!?f#^xm6dwt+xR%mKJbYL66(xgm&4G!?@R)l&C8d=Wm5H9 z(?W96(r2hhxj8vf?a{qfeD~{XJxNxy-@5HyHD0#`zt2>IomjHaiN3k=Hf(kbZa4YO znzt?0B6_HH(yFXpSX>-AGttuG_d3{*q5^bqN=g`OFvi7e0(C&1*XdrAo^;1Y zVDPnz=lcoE0VzgAghIa;4B1`gPPV>RnDUb~=HVax zX`;!AiFbCjV)Au=fITdckOhJ|JoO8P}b8_wl(wUhri%#8< z)YLMsUKIPZCR}a(*}#y}@#I7Fm9Rc@x7cMhEt>kx^z?}$Sk|?0)4vk*ms_;5!h?zS z6B!_m4$>@NC1Tv&^XN;ujx-F2tpE?b$dlk7Ki&o;16tceWMJi zVw@iTL`tV`YS`Q9Xxr-->&g!ED-G`*{w+kvLz&{lGuq=JlqG|wg%BKM_Dq*pFhMJy z0-xA-cr`TIk4l=!z*Ys@-Z%Z2nx5{{ho@cb3?aTZqi;p}(x1=2-5K@++DJ2$DLcPu zFF>sVOsI~EN2=a@A|kn&8^zWJ1Ek@Z>!$F`GyTW2T_w&;pgQQ zXX<%m9%KfFoS`p1Z(!hrWJ+yW4b~57?Jlg(ur+YMC>bv1BRb#l>5dR>Ka4kUT+6Uy_(e znmmUk$Ir({ROd{noTC`WXE*g3Ho~<-NtY_({u8!32+oGw>`|aV*+rXIg*j;y_c5h- zy`!tEoE0t09L^NAtU>Qu+M_FS*Yvfq9wO_mgci}r)cPjVOP{K87TaW9);M*hPfYeN z3VknH`?$3!qiFazT2|+JsVI|(QZ`>cHbQ&w)&ZZCvcmjaU32N7zsFaLuP?auS@VL6 zH8ELrbrVE9R+~)saF%O-2WWq;E|1?*4W3K%&-riMu z=}Hmz@k3ix!4qBV=*#-Aq^naJ?k?G+r+`Q2W7U!0WPx)$3YY2ZRX z^-uz*$UY}Z)&`RuyK`#`q_-zBe!tLiP!PtNy>MFt zOZ6MZO;)VLUqys(j8IT=h}V}@a(#@6Rg}LNpvZw`daNb+x;bHGfq~=80|1?2Pc>RJ z$Hr=;{}H{s_>-Kxtc>HdGdMI_qzCI~2!D%-(l4Y2->0iMQK$X$sOe#Y#|ujh(uZMO zz7%X@H79OJF;AZiaz#djFI+v4+rJ%nof~08 z4~eT;x8(>}7zMI&;Pb;?4LHwJV2uys!HtQkFK-rF`{>_=_^CRBPY19qB|jN=SpI1c z?78(T7skP0L4uBjC3^x8RMdBH^#10J3g$WzWl#s5rJi17S;lE6^Ipw_F2BQcCVouK zJh6_%KM*k22p4K*W(o@s^m&VW?S?kL9HL zE(HqXCPmV$v!(IT(K6S*dy80IZK*+w$%GV8m=QCZeomG;$z%Pym64S@`49!KZj)vb zfD#6VJaIofm6@)(zc}?+PkzSyyndI1#~$P0OlT&vkrtB_H2m?xLL)X!^>nF1F5Hme zEe%Nr2R4v#3g`e6jTb9rBU~ z=H|d^y1Sb>?3&H#rnsZT$ETop^3~3ky=ZS}NDzZ76B7ynpS1%)cJ@9f?y^V=Gc)_o zvMVkB9PEC`!+FET-bc)-J2Y9G_hI;QEtm0yfz{4*fYHTP_prs*R$8Nn%QCvUTQLq0 z1i>>-*O}MuxwSQVB1%6=!ze^IYI5@4%iqS#$~1`M479XzbzzZ_kKFg}X;5KcU}QHy z_XSY@ehTBAkMd|>{s0!pdJ+=GfM}J*6A}`dym$d#KX5A9DGWeAkL(}Ywi_O)J?FkN z>j&esyYE0O2KZaCym(cjfFqqoGSK{gQt%_z9-<+i`o5;fx35)$u)U^}w8%!0s}?21 zR)`G^=^^3Z9=+W9Mc%Kj#RTi`XNifrOeLSKKV@Zy(B-qlovyv%L^y5mxD{3(fd36|Zq%9}@6QyuFzoIS}knzI56- zKGxRKqJr_P;T;&WFQd)7W`dnYR=5{zVw6SWpEWkNq9VJ0LzKSAl2=g7b3#6}_S@K- z4_pU?$>f@>``r)kb8IdC2W3@NxJtU!g=5K4O;qJ^8f~7aRLL3$)NT`d)|f`FX(Jr$Mha zF$lz#K-OFJNrKWaotOjJjX3zDgfmV>S?}NeY^FtcJ@r`9hJ`{laBofO+!^R-ObB5W zotS?p+%hM?U#E4TBEC~A8}~J02p$m;AGpB~1%0E2kqw+%j8qI4@LPAc1nHfF05mG7 zB@f(g&oY&km*Y_uDuE*^%ue49#Z$W_wU4548ou@SHzpu*mr%PQ(J>{oI_u>>?Obzm zb8~inmt5c3=-Cg@ZC?^!H+N2xPtF3=0m43t1}ZAr9}i{vRu>=IZCGNz|H^MaEzuAb z_V8XBZd-7jh+AxQ^sXp34qkE02d2;`L(0;Qey8;}X8bkq~caH0$Me8H^{&iQNCINtg;EyPHa0DD-8-Ipz2mrg! zU>YNL;R3u>&@((R2}IyVe#9j3u}18Ul2R}1FZq$o|5!qTb^r+os^DbfQ0Um9Vs8Ey z8VFb|feWrsB@SD*e;R7J)?Yd_><^BOoxm0S!%g?XR8U~N-8VETe07Hdv~Ebl@W%VR#D}%g;*2<&uwk{{wPCl1(>_J z(w&EpUxbt=1{mnd{$F79Yaj7-S zn8;<^3cmr~Hv{I$vfp}pUqT}BjkRvuEv`oN;QdGe=kl%fZP#%i{LfW^aVh};MZ36I zAU6(O|Iy~8sECO5XrUljdF7`6seAnrWR5^?NCarhQVS$_{@=+634cM!2P0s~SDQ1< zH0-B%3hQq$>3xLoD-?k&=UBWHqN&R|5D|vv2GS-?eZQs z0ps7a;@+&B#cKhiVdyh6*>8gV)2B~2w$|5^jSyfBRD!uP_;%mJx_dXE+S24hCyATJ zUg@gti+jL8O600#q;lbFNsNhk0zBzzbWgzTVJlr2Y)bqp_2h}7VWzU;E5zgVH;Bu> zPXqtqJf^;Qd8cieDv`@cc5s#%0Frij0&FPGAbp8!;Jv`R<1lIxX(i@( z_NL}(*Bp5}CsMX(7tf&G7>zA8HMJMJ&Nh7*E*OYsM;7=ilI94OUYNyV$@&D)>aODFkTbzp7cpa~fea-kR?RNdqn2EdGmi zpaYei!zBRW0L-4G3sfBaCh*YpAX;bEuB@!YvT9=$j7QN*L8lnNqxNll&-7#t=m)GL z>B@wd*x1BGoJz{d0V1e}awlPrKXc*q;ktpc+Q-ssy4(z79k;t=HF-Fck(c+^zyS8! z1$Z=Qr$l@%5|(a7Q}SbXKK?;KMuuL7V(jGPR95lEnVf(CtaJk=|3Yn#<4+@>lam7_ z7`7|M9e(N6`=X+}41z$H{cv6}S4AR2n%K&L2}l|%ZDwpt3RB(IlU1Z&lp5q#Rvzv* zR&QdF^Bb+VZePMAvUFl!>CF+5N@2^B*Mgd=z4D_}JJA0b7;Cx}mv;%Oo^MoV@l^_8+C0+C!rkFX(&UJ~NZvOL}p= zeK9X-0uI{yZr=dIipaZ*xe5nes!2joBmqL?Gnh_({HP7sh0Z)6zv9E=RWCon~!K5E$Tq4;Xve&nF}Q6kdugK|8x&?laZc2m9=R09gVz1_O^q`mgHrAXPDK`a8~KEWCbh@p4VMV`pY$k4{H<6!ac0cQ-T zOqmqgp&1CMgA8HaLI_eO_mbn`I-5|^ZE1VTo(NlNS~kn!baJ2k2D%r z3AsslWCNBF&EDtn3l=Iwk01)`eo6KwWQ+nXBe=NBc(}tdo$G*)Fjn37cws; zCugxWRSOuy;7b~p1^kDYYi&2{Qydjeasp0cN(q})y}TMqg-t1$*v61GSwC{${>$7TS= zN;mci?4GZ?ZcY&L39yoq!2^E8i1S1*b)Ku2&)lAk+1vT7QDr>392r^tb{ile>XPXvA#2!gNhD9 zXOz7fgQ9{$S=cTZf1Kdzz6ha-nozez_jbsr01I=6i^l`IQj0(i3`l2w@BlXqJKHJ# z?(WGPK!!lhi>6&9^y(<1nRoE|+6j@2{uZyC#<^4tz#VAfwsJu}K0aY#VK_l!lJ^BT zDl-9>#-tKC0XUG!ixHboB3P2tfdB~{wg{uN)v{Ijr^KXkYUmIgrSkO1-B zfg|+59N5Dwqf?uhzA0uj&TuSE0<4lZaRU=MJ2Pw>Ku8k%#a-n24(x4zAh3O4s%zFzuT|FoLzD;Lg8On7IhsyT6%)-}*`K_vzE8 zC~Ox&pjX0&1Do&1v;IQpZZov3qetbL#-HV6kAu$u<4a=U^ucqbI|d?HGMwZT0UDZFxTqS|j9Ky2 zWw$$2s4q-DApv_aDoDlfQ*N%y-yfv%J~sHTLf*d*&c*&^4r>g-Uti`m`#}pr7rHCj zUhtOxEs9$;zM!t7m888pha!YK90Z5}1mk0s1^*isHV7>g%kJ>wXzASd8Wnvc7L^<2 z6ipO00N1v(xHy|hSayy|_DF=y~?ume%2!W{Dv0DDk1gjp29 z9PDO;hBBCa5W(jTDGq`wI7$N1|FDofLJn_E(CP2N_KcCv3g+6~q$#Kd0=%9=v;}$> z_%v8SNP`I?r2ohA@^4&jH4<7!t~@MmKb{2(O{2bV-)_Ak?+oXpn8DA3!CO{$8nBv; z?j3JI5%LA(-{c1YWSX#xPfjk__UG^4!5fG}>~wU9^Sw|Gf>9*+i=pLrban>6{?)Q2 z$tj2?3lB5C*4r2q#|6*FkM`;d@ut%42=)e?$@R zS&?*@qu%U(W-o&(fM^g!iky(Bxl~!9g@B8?Xz*+L=qFkqE1Ie7{Za(_4vgOTqTP!k zpa)!T`(8ucI1TO*L(atPe@N0mK{(`R0}dzT;C2+C0TR-U4!W}6P_(Mu5>rb=P)8Le;-2{)!;7~vpjPPM^>+?=1{=nfZI505Ng&m3#(+q%X z&rVMzGJwoyY+#d7lgY>rmYE5!U|tEM956o!r$qKh`HXYh%mSo#%2h4icqAlf5;(0d zw&uYR(3tgJ9>~WxHf$)+mQ3mMG9)FHVA1={IRO#hr?G(Khh{x&dX;FS&4U<>{G}sv z*)odo=}?)OEdf~lnS4<3o?Fc}eKKm%vlYg!lyfY#go}gWsbTEyy+u{#wl-Wbbb0dX z>gucqS%`oq55O>r*JVTJg6YJ2T%?_%qynrK`~#uYx!KGN_8~Bay4mraZc|6<2f0vU z=w_2I=>9TBf`fylrtv>)s1J~nkT_gmhCa6Bfbt*OADlNXTT{AFF0O139u^iAWnP6~ z)xL6d<>%qqfW)mIK_%k8hg3qycm_@O&7XE^dB-D>-ytM`D)^ko$K&)^vhIKV{N|pcn?8&PUKEiaN~RdJ&+|dFv0dz$g?wAQAOESn(q{ zTHV-ym9^Y_`6A?8peC&XIdWkkn+PHp7UD^#KteKT^oTo`J99tXV|Y~Wyh^7${;zgT z0t~ougDgqrSzSh+;WBs_VVkXTB4MpI^4 zesJLYnWgX=W8LG!^1I();mW3>r$^=zd^e!YSPmpsG08s3aOY1pnMFsFI?q=M&X#U; z+}q!dr79EE)vfW8)%M=?Xb{zY(+%JBXKe%>3Io`7hT))2wb)9{s{HKuZMIa<9Kw@ELxs#;M*Yez;jz*&+N zWUgYafo>pe5z!W4{P%U52op4U)XCsB9;>uQK(!A$E#LznoJyamy>;XYEQ7e{=$4xt z0e@yNU+2Q_J@-m>0DkQ0QZF&QEOiaHqi;O(Q*g=t*Es?l+MoUNZ!IU)-J!r1hAkNM zbaX(@`s}9|i{d~%Z`UpwDvW=8|M;ojE9n8`e_mUc4{eFyxvg7!0AkoeiUzg0<%PKL_O*Lw*JUEcpY2Df!^d zzo*j+o9i=(2y1R0!z;JXEcZg@rD5I%w^vj&^*Hsb&_9V4UpX*mPMu2I-SjWC)J#2Z2TlP9fT^dNR#O^#nA`h1TYypXD_*|hpFuA>FYgVqTw!vox|VxS##g=6 z3YEbkefZs z`*eP9YpM*SfRB6-EE!JEPAYANq(dn9edY_top3|mg$OuatXv?63rHftoyt175xH4^ zh>b;B@c&y6cMFa((_JV;A<%GT`Cy06`I7UwZjFr&4u1B0pC-U*wVFP@XFXi!o~LTS zsGRbHFche@Q2KwoIbwDmF56Ff3yvC2F>0y%S00!IV^X_cU5tOFqS91RzL;rD=C()h z`IuO-j6N+2MEbvLXHUkKriH~q(B3-Gqwvj@FESSbqRMH|u+tuD!e#-|Gs^m-(E_tL zi$_shvXLZ+m|f-O?8ZIFuC8B+2hyvoK71WJhTGlL=;?8OcKxQw>T$Y=-9%yS4j~zS zKgWPmcTW$QfWyv4?S2QHBPk3dzwZvXQLy^2ngx+4A}1;P9}NzP`o8LE;GY1pCKYnV&#-}p5{ zV#!k)3)t`2@^)p=NK6MtYU*|w7ugOD+SK$P3ZWV!o`~Aoj@-Wa1;zP=h0DtseZA4U zSXeHe`x6B&sQ@jYB|kz!NlHwHnSFa_2Pqk;;{_Y7ot-^hYumd1B$NPQ=74t}9(0=+ zh>CJ^JJCMm;UPFje|76;Ku|z}z7Eu|&-;*%Nb{_f7~!*G7!6`kJyc$quQcC0tE*y97xn&GuK98(){>H9tl719lrrRa z{}2`|*L+$qsH6c`_x_Z|&pA1oD<*%vYj^6ibF){-NdSaEYZkVP0f;dEd-=ynlAOfTJ^SCUSg3ybm$o& zjl;wYL{g2!vNvq*X{6U{kV3^K5i|aIJzC^yag z@>fgu*;!nB&XOi?4`83MFf)5Y8@U&2bz*U9Gv45Mc|8iyG0~brn`}g8LFoy8=leg+ z%g%=rDo2DxyK$`XO^(O&C&p}-X9un70O>&3E-JEh+4_Tu`C{-*6NOmw9uVhgWJ`5D z+r_H~lQXDAz0XYNvKZ)PVTdw+(okEGA(5S%%fiZ<{>TYIF>1^ZN6lmM_3^>Zn?(Y^ zn0t} zOL_D<#thjVL$2MiBNAfu z4K3!qSKR;7@cobUH?wWuzs0%=0|Kqa7RHQ_ptPoy4q%9Fz4l0Se|z0 zPESER;W`6q;;VsTO15`<;@pzYXVMJJVq^Jirs(3uvcK#v_opwO`Sxt!)x#H z&f-qLOV8l?zB`w|E9nwe%(%s#i(%s$N-3{Mz@ArA$_c!y+>~Z!Vdym{V*LALQ z9a+7gmIq6z7dw0ej+5^*jX+4pO|RA9^tg$ow&2e(Hpb)Dhx!u$US)q z0ffo|4Kdm+FjRQ02%4OqHqS`9nDn9EV^+C!nNZS#InC#?IXZ|XZ!I7Ncq45CKBv>s zM^R*StNPg!AAn*)#li~Dv|jMj#VXH-nF>dZ&xMhCjw9iNUR z?ok9NM6B*J+rUq7t1VF2BVh=RAggf1e@B6xb*avn1}BtE6vXI@A)o&4$~=O%hjj_g z%GxYWWG_4EmD43O2LgSNkNj4|-q8_d2%3)1=pAsO`@ivu;eQi5Z9WfXVu(5Lh~0FG z%UhX%yGirIWrrLDBm{@%6t$LS$d!-)5fLEbTcNua@q-X!5N zGcno365J^iWQD`+Zft&oHeSqKD!=%|I`^6hS4=U6n~i-o1wHQc*3I#->So9nCQy+#F%F%-R>*Jsoc%11q)5Mx1 zViMv8hrQGL)Mp)|?H%^B>tVcwcD{g6Joa?2U*Hyaxwqh%+-stR#D&9B26BpM#R6r& z@>&4eFq!*9_#F7uoSLXSfItCF761{zL_yiu*$I%Q1(hYkb=(TLU}-Ft&kbvCb_bmV zva%5Y0no>Spzt1WM%Mox5a7>Nh;Ra4P%q^dTtKawJC9a1heXZd`R*H6Pu6{FW^e+F zaf88?gm!f3$CIGO1stH7pTK4n{>oO_n!tSAy>MWj*)0tghHpH=Nu^<2XQx&H)RT4A z@=3RmD|fP9+`~8)wAoB_GA*(QW zGn|abz~%^A7M9K}Z{`7NUOMQ{uj+dYlldJDE~fEj^|ykv@sBN;x9FFEvU8T@JF*__Ts<4-6fkMqci+6ArxR+Jt4<&`l^qxV_ z=bL-Fk0je&7ls@qdELsz3E~S5NA-_Xt2W*MCVaQ0EUzr{NcIt}rt|a1 zxd}0_Ycy%HIrmoqJKl2BQC?1tf3q*Q^ksjMdJF2WEx!=uR<5PnORUNwlLYBxJ{0T~ zu%0wEHy=0hSgh1+C9;>&(V5!3kr9Vw2gK;_s3?@gd0oIk(|!jyoXRl3P`m-Q4@CB8 zf_RBiaE?;|9VOs(@m(35n5YE!9{^TP7HS!)@bh?p;#Z58r78vRErH7f0Oqf=2SI~2 zz&-C){H;90ulG^S=_3dQDi1;0*xp9}@PRm{xSSDxhx&gmT_8hZ4PbngAs0^*hV+=2 zm_;g$9_LwSv8C#zU#qEoak3v{hyPYHwi^|vY5#7#3UNT0=P+V}W3DIf?4dc8wsU^# zcl$#BowTk`z(8rcb#1VmBo12Tv6<7-%YvL7kLS6sOXbv`fv&Hyjsq^1l6}_qjWYr~ zhyvPMET^M?XcH3ak|2X(L1nW?*pQ#ios359Wf%OJo-WtcF0HPv?h#AF|E}&<#}T{2 ze6bD|A_x{%s_u2B=nIG%AW?t8Y)DA0QTlAu7<; zUvLf90*wX-?lMn?FExUG@1CIFbJ?$Rz_LRC6Lw1$*`bT)%^ilP??C}p7^6u(IgREX z!27d-4F4@Au#@CM1KjO3R+K%OEH^)F8PKmU7u2kBB!32pKeGI^Hfx&|qgCGr7b$tir!Zo8|` zXob^h&Kc?H@hf4a>RK7R?d>-wobhoABgx&1?M#e}XMhfZ$DXagG{Tx@<4jhUk~TeD zs)ReD$|-nr``~$Z?w8H@G4JttiMuK>Zt-HXj|5$7sPoMc9)(zd>dW9Mlk4_n+-#gi zqb=7=AlvqDr#c9bmbO^wnrq%6dj7aSFUx2F1lG?hXns-!%00+LAFDARYx}KUo_X1{ zgP*2oB6!sC`Sf+IaF3UfOLh)bCV)+FEZ-L6G1GdcDCo!!ZYPZ_K2go>@m3(>b5nB@ z56@y(%-s5|xX-Nmz}u^{cJ-r%Y~F!1!Hcm)+8k}B`$bdF6o9qZqvd4-IiL69z#Sr2T8AtHYfmyUcn z!QPkX@Bb0-9*5D!4&$=A_Wt?fm9|QV<`K3zk^2Rg*W=w8Bs6?^ zb^b!Syx~|-#ETwCbTe~xTwq*`^0V}G80j5WHA?6)KU!UlSRrvg-|PdZ23XJi0|H2_ zfSUtkxdG9IkQuO}B6%nS&3;Wcw*uy*3P_eSi=gE(5ZY%m_oe$;68ggx7Xy^#UJAif_{edQd5XLPr3UtEP*f=;soYz-Z zeie{YP#Kw=3}!<4-ai8hf`afEl<@RNodWop46G)jvx-NDR382Ly7J65C;tXU z!(+ERy84MU@5-0e$iArVo5Pfen@+GAvNWj-v?c`g#T0Xc_hKTrh5!m(}(~78TZj*5Cm~x(5wDRiK#K}ctK}K z(wZB!0;k>)x83ILo;?yKOPVEcBw(AGzSN!_#>-!95AXATU-b`Fv+76begU|zcaHkY zGbGWc@3A#U^9&j-HapkF3$^Cn(LZnvMv_w-zZ*>l(Z3#63KGO&=D0m+lNiNLtGTQ= zAjz65cP}J#ZQkw*3B`G)*o@iPd$@J7eRS&s3vU1to71W67^eEZu{_0{lWQ`!XMFJl z>H8)Cqm||OlYhBh;%?2KFbKqJZy*1#GYisS)-oyH)v2pLZ#tfJeUf}!tWPSZLS9?b z;Wd43AurWZEWSU%HYqP>H2a0uU1RPUB0$S@^NnXw_mHjQV*TjIUO*4z!?B`f_o4LQ z@p=?QXn1?*lG-qkzbJCm6-f_1I!@|iQPrD<8U$wp-Io1%QCkg$Cej%*i75&^YZMT=J}#ZA%WidB-<5ZzAIKKQxnvc7oIgMn<-h3X7*4pv`%AX0$q(%#0!teDUNe zoxrwGXKZ@x4mSJIT1Od6El+hMjxrI)5yaaRV0`UV-~Kr|Dhu}U_?IsN?PnT-gj}1> zRNt!wy8x0%6O+0DKBti)+TyQv$kEWri}uK=mvGXrDw@TmT8Rc*S>D1 z(8q4LU)YC2B-B+afd3Ps8Bm?eGp6in;Y<@`V^^e}C){nPi zGZvOp&y6ikYuhIxC}X3I&4K&2z%ArAlR@k!E{KSx7}W10R(bFQQ6dcUT5 zz_N_?$pa%5IJ+*WqA2QkdiP?s_SVjJ$9_a+c9%&H58oi-EfSz%?QLC6?>!4m$MkG* z+1!4At^8w2!{dY>T=fCIJ$nV(`vPt&4ZoDCG_SXlxt6b>vRgH>(On;MQ*sqwF@&B3 z7%^wIPm^YV{8^RzYoCt_?^qbLNN!~FAAJ)6;V+XAZHpm@)t21pPabpyk}R|(Kn9W5 zFMw!566F9o7G&omS%5CYIyVlNOQXMzfQ=0xzcrmIc` z?~4OOiJ)4toO*C+=?Q2M!K#kd9cjZ!oiFo;pC+#vC`0J{MIH?vU#&si6H-f0ri{Ow zLec`y48Y$5wIH@vbkY=kroF!r-0AG}z_6I$wEI+SXRZX@ z7smz%gByq*d&2P1v!Jau?yHl~j0%+esN1-HQ2v%Hi1dt-e{V!47LE&shir<5+&f6y zg9?vtwV(s})M{pWdT+8mWH*|Gqkkm90!@Z8EM;d-;Fs&;E)o7W(?lpiV*o>jGMh}) zXn0@=>iO0&d$tiL**H0IWTnPeZd*N4D*zWow{!8^OCYLxB$vEHyGw7ECZeF|KAFi9 zM;QZTH;^C#7?j0h8_+Bp&w!u#0W~;MaMc7fKp9l&Gax#|Dc&3?y*@*lXM-RmgTEHdc#8 zOu9S3`i%|P05J{FiZk)Q5_=Sl&a?Vqf^Y)0$gGvz6#5TU=d*g-awls=_$_*|ERcYF z5fuwFZzP3JV50Wp5*eTbt8c-F(Eb!^`*d%w(2^0E=ciU>Bv-D}1q8*PCIo(yJ@&S(yYLrm6H84iU$4y4lUjO|7Nmf79 z670|Wml%Kl`{VZ_a>%9^|LIc|Opcap1!lZXOR0Pmi+AKV_osK>P-RBN8n<|`>xIz~ zRzDKaZAhg({)u&bBggVRtL?SY2Lt}UnV65l!L*ByNqcPXwBSOFkFw@L84k!~Ao#e$ z_|MVWdGbyn5zuvi}??`r=+GUaIhB`?!N$w7=Lh#C9mCqc#d=iff&MT#SJi8?sc z%tBoM`y&dEd8xeJ0K!P0+l_Sa|NLid0M}P4zyA~F3|_pi@BT>&)uI6LK#Yu$|KW9g zZp%k;!PgbY4E$Yy2z&!t?uv_wK!A_REf6rfYpAP(^gYeEPT&Is6felP%82~i!V7XN z{;CLlg~8JSw&l{StZ3I2AjMHpRZU1tv?Y^raJUXaq2S@=1q*`Q-@Yv%wL)teVApu_ z&mj0a3m^!=w+3Sk4jyor{rCh(6rfuMijI=P!hzqf01FGGC`c$49GaX!6(S=pUJtyB zesCB-0@nG&1H$n@J#7rF3c%MlPEI^`M~Q$PQP&8gXf1?umBCvlNElTqEz<=0`gT;AZ`5LDEG&7P7CnKW5J2Z&dv^I z`DdaCOJKQpGqnLUsj{DPfb*t$3y6tF^$C4G`D1e0Y=Sus)`ZUM(6F%K{(iw%8R8&| z2?F?WKsvMrm=56l2ihow8ne09=len+`~Zp}GIpCqP-ogvH<*TyPle!)@-md z2Ff7Nb54`MagzfC@1H@eule3+dIz{XA$Oq00I!7*Z@t~#hs`)}IRn>seAjf$z`m1r zpXTJiD~DG&1@fTs*!-Gcbo4v+0IEX}2?%ZAB5A++8-n}qKktOOn3#Tn#~6tS#6AM? z91QTI0U_(i`1m0hw-2P7dg;n>8^vhYz9{F#}jZ z1bEtu%FE9{!6T?BIH&moehWYn3&7L}sPlK+AbE<;4%b)CG-wzl$rYs&IU1`A1_9w2 zpdVkvL`3|I$-wrX%x10%PL0hhLi|7uAczyR;7A6h6$@Yra2KiI5fec>C*GvTX#syV zsAw|kayk3&i;C)1NtM!=_NepSOREuA{&(jrddwFwv+W`nz zfF}pENCR~lkvH)1RpA6u0XdUT6YvXZpr(P|>e;ucQV}`|Mc=Id7Fa8T+`2%e2ut5z zAUsk`Oe{A7gJ?u&<9~TJFnP3os3L$wOC0djj>;1%0$H3Oahq}=Em$SYcqV~CNQH@) zw;9x8z5(yQ%6q+Npcf-V0)b$_V;YDp%K~(8?>Nv&e*>crI#@ydSA9C}?(X^q25cYS zusB-?p3R?sDiX*qyK47?qm%+hG4SiX0OCeKxvthx5?z0ll?@CHMGMQz%lnosfwo4o ziAFk-y-S3Sg8U683g!SKtClDgNF9_D>mMwwJ z{C=$iI;V-nWHPW1_isj4gB@^HQcuQjZt8WifNdHC=mQ+SJy-!y0zgtc1GM~v371C; z$`TUq8oK{C8S9gZ3MV~1!t1P_7ElliKA%Q|9Z-}4`wjq{GHPlZj-|nW+(Qn&P+YvX zwpLa~qiJnm+C@UCfnfm6X)s%+4LYtPcCfhYj9%|70OcDPrgZ9cNKEn|`92uT<2gai zH{})J5{l&)4+5ViiNRC@4>}O(NBwu0_Y%NvSC9wtM*xjlReAk72^-t>2$n0%nMkl$ zpty`o04*^Wi4+if?4D9Wp~4%Hz5N+Q{pt{|FY{xfY$cJXoLr>e+!|2JM2KFFzSX0I z`a%jijY3O4P!5XR=4Af!)DlVTl~42hv()#1GTh2^KuQsaK?iq2qYU)_+=^Kw!mH8olQT4H$~26?tJ*5uLr#`k=4p(z z7dLyWXj+S@RH9IG=qc&})OjoRcKJGwClIl~F-J3PQIe*pDI`SK`p698{`lOloenN` z&n^yXfw3f>X`N#0e0OeK5oh4H;#6rCMa|w?6o!O8DjMqMN;905`_US~soW)j2(=cU zAW#?D4W*5)EwtbN65?7K**&PIAWFe7~YJ_Q-O@79^+?ZV=qc6*iHFNQsLtRa|_U zq81H)=gE)#ve3lMM&A-Fr+*xPk{VH`Glaev;s5(eWW(`@8~c`Mw#r2@>1yZnvl{@W z^G{3E+?`)p|rl=W&=EF!*Nw<`juc&bpbkGU;Lq%bcR=pVyfioVw;53K zeR7SDk6dptF}zQ%`1>|@qxmHuRP9DJE}oit`;0I*C!0>CWx4N8t^?{yI9GtuAwx&L zzYr~(neYFUpHQ;7JuW*Q@k-sg7>(qFD3@d+Kkwd2a(X0Pc_-sg8*No};GOU%F`1qj zS+?#)iB@)6pTYLXXqhcnrHixb5w%k>mj*kVrL#@ARm^0^d$KT2h`BbD&rD!)2K>-6`gKV3-Hn=DPwSfns9jo0r$m$4M`IeFp13H`+6b{?*bEp2vt zoVL7E*5`J$t8Hq+?K#l0T;yqfTGnXYqog8()hPDhrLkOb9nxb5Uloz1_-m zdM1UTzWy59#p&hORn|G2*zke=-cM4#%M_c3_wz$b6Eu8`;(?3>MV6)-(B9z!={xkA z2TPgEA+1NdkGJ`Sz-0$FPZ5$3?Kpa#%9tUl!bf> z1_AW_5)wx72fGTg{ZnI5^+$YGb^~FMaNAP&qm2(^@;iof-;nRA%q~w~7ZJSXLp+}2 zFdLklgHys?ZglQ_)!0EXd^GP`CoY8ZaNrn2AGe%qh(QW8OuRLg2di>X=(G=7(zX-I z7AfsSf`aW9%l1CcOeRJzTuSJHDwS^dc1ik$?C$rtEmxj2K7xYw)ihQ6lRL-N6E0k6 z5rov#E=S#XxUG6`gmLve&IifLf0e4$mtDfJL*8FI-CmN>FZoY}oGD5$oxqBINveM{ zm17@5j@wEZFsq~upB6DXB5z1%71@;l?a<>oe z4WVa~N0e>#)$?9Hi<{L-EQm|yX(rlPJE&Ge2sJ-2JzG+|#^ZWjPejc{elB?lqTh*X zSuITpiN|kt`X*vg3~3k7TlJ4r**Ag{{RU>5owgkAPfOVGQ*`&hV=6qgiKoF+Qq*8O4HTl6EOK~WXMH$w zlz;R8JY%S+n-k*`V}ytE`Q{Q5`}aeQK=^gcRZmJv-t0;cD7q2Ynq&UF!ZZz=VVcWE zm&pEsG_ErXca41Hx2JRg*1_H*Zxal}P)|5fJGn;kyMls#M0|d&7K4eNvdV#0;K-$6rh(2;ovMs;Dg&4et*)@kF?stm2-E=(x;i;Aj zWe|~QRV?8Ivp~#hztE;)S2s~Ob4;xtjg)yhBAYzKeNDjY46LS;Vm3paTDHhhrfX9g?gSCokaVn|-j3L!l=b3sq z<@6a`9v7GIttrg8k7Sn<;MdyhxhkgZsLo}%asy7b_2<1gPgI>RT4e!NQE}0BBU@+b zONpXkiP}mXZ-U>m+3&MvIisk-5QFiN$gN9!BQ#sSb2u8G*(!w=hGANfZm@n zSlZLuy^vZ>zGUty2hW42HC?M_u45q0s9vhp7 zppXQ3^R;qgzNKvB3=W)F;V3Z#hlQ%um}G+Kbr~x{GrgfTTTop5mdNDC5SbfFGY__Q( zHJfyvLX<6bWDfE8^-~<)()E5)E?EN3;m1dnC|NdAr@MZ5!4908T9CVZb+QESgH4?7 zo|pf-*u>1K?-?BxdhA&8ukD}zIbC$kG@dCqP&?6L*}6cp_+2MN7gO*OSFK`16gXrS zfz$$8CS|7TqvF>=WNXbvXP2g{c(${XHOm8K1_?}1t?8*t7h`S@UrB!=ni*wwh~tQ5<07ba}u^0&!;NzKp9 zO(x*0&ev)bPsGRNkC(KvqAUq-YErM|>p(nQ{H~Xmy5nxMw@()+K$&RITX?K7&u+Tt zr4i7s#R6rKE5Ac;nit#XJOlf}sZ2{!SzxUXD}IJ78lGB@&uNYDz{SDq^=4!etyi|RZWun2hE7qfc>-^d5hha>I`>69n-r>09)VS-G+ zVZnWaZ!yz=C13jIv^A%^184UD5HvbF%OtdX^n9-!tA9knJ>1Xq3Xu3;{wQhCIf~KE zrQcN^=dSP!`JFx2)Wu2G#%%NWXBsq9T7&N#dT?RF6ub`-iK)@fBkVJflbIJ&lT8noqll)O4P?-GI zw=OL|J!J=(m8HL{i;R?<6oFv;W-erAZ7niGZECWAZnDYu0niXndP;i(O)Yg;5S z04$mZC&-T<{8uLvy!33xlXnB@sU41%D)3}o&p9BY_vV>Ev#vp0LIOZ%G&Hg0VDx2( z+HTp{x1`aJ;e@U*sjokR{cmg5%Guc8me|<221E0r*%l7$QHj}<8 zo273jz9m@n-hLYV75RMAM6EdKjnv&pF;H@iB-^O`Rvz;maZ?PGFy?%hX58G>U^puB>GU8CN~;mV|&11=CXf-d5f z>O#j*>sC5GO~4s-`@5Obi)^O zI~oUkg8Qb9! zBSihN!cvU>ZRKFbhQ*fkB^sD)V#P*)IP@Lz>1m2|JLw$O-kzM6&aYoKIjvZ1W#J`Z z*J=#>6Z?v@^zDl*b!foY5JMM76?5dHZ#p;eh7+px=CsY7A{?iUDLgn#+t_5LqKx0s zY2w;FwSz=r#Ea@bmJhH{28T}UlzgflE0Ohh=>EO*5cWMXAT0F`6&++JpYffZh<`Ix zC=Gs5b36$;ewZFm7E^<3_x1cE*3tj_8>xfuXSs=t?)s2xV=OG4fXaMRzisyC^f$cj zDVZ2XCcy{XvbJXC`!PT#+aQASD3jdm+a*Nujmh&qlY#+!K%YMyVk7kGK+Zb}t~8G$ zakaF(ygODjv4eY~?yLUAt_EkiX`SC{t#`OAC?JYeS@35|4FdpEgwI1yM(5|iN^EaW zanAkX~;yzf%Y_a9K;$Y_YqB}2&J zYfm^)@AoPPGIKd%eLFkFWKs_HO@vyEhYzq{jgN0vOU@>!P>g7{XE%B*FcL8uPhVP3 z6<`X$*T1axbrrJ5L%sHcfe=nHLEY%9j0F%~mwj1P9%GuLBfa7AZi=9h@d}jdy&l5Nb}j70D!!pNr_4O@KgfLo=&O|anDkDp}*o+%JANW@&i21 z$@S&&AeHCcgC__)MoW$OlPdXP^M}fX@~2b5SFUSF-UL4q*^MbxQ=Xd}r%H@dm@&=I zwPc@&i8CFJd4DFt6ZdxXjBp-1w=OR!C`MoKV5mnWCn`-B%fnSjnz`{rmvSS}o2~C# zHW)ZLWM(sI%8`OHBq$qQq&0 zHQ#kYmNeoh9cpL2bwYH$LkD{iQlsY)5<-2>wR8Nj;yS$V!sDCgRJv^GkrZGE%4kh) zl9HVbxA{XwcM!;d^k7SWD=B4$AxXW)CB(w^2w4c~l0fN!UZmdn4w1mQ^c&C3at8&H zU7GsnGgZFvxeZfO6HlXg_`2-p(}NFLmxHv4@HD&dU5>}xA22UVO4O^FMjP$7SYi!T zobM{864SNPge195j$fq9UH4pTErCw6kaZg`QTgW3;$0VXvmLT_I%s2pXLAh>mL#P7 ziOJ=qGxR!AbibyNU8`xGl!UCWes{aC62lo}Mk9*~3vYNPPD5Q1q0+#xuSJeEyH@z( zP@;~wxw$%={7Ol=JM>E}U>Z0Mzr*kr($M(L)&e+NRUZWaGGn(@$a6byD{n9mv<#j_ zDn}HGRfGC~CnR)Eq2m!}fFek1hav7aTHY zyM2|HMCO)Ghtc)GGJoPDlrAvY)cMd=SfatT=x~--P=d{qR~i?$d)*u$8jdL?Bl=lN zLhkEhQ;gnT24_@H=wpJ?Ln)4TDpvzW^LkvJZ_q?>41E%_i?4{abss=mC}c3Rv(uFh zG7x)NuEnnTT#pZ&_Q-Kl5L3B08>dt$UGfp`ySs30(T#k4-;8zfx?fksKFKP?y`SDy*l))kx2M;mRnsxS)R=(zwlc?-kYjPmGXLZezB8<-^o!l#Kgj^UUb~o zLc_Z&wT8^EUoR5kYC7u8t*67IjeN&xw6}2}V6*!Z;q49z0G#-onDpCsyWnVJOO_#c zbvpLD?06=~L$OA4l|}T)2pCS__+M~pPXzTTY3b3;$p1`4i}^P{(h)Nm4CUY<^r#rP z2=V!Dh#oFhU{@EX=SYZs_<%iD;WymJjFC1Za85}>r`9}Jpml;@S){b7x1$6&`(p$( zl>CrFc8!`NE*O>5&UB6PGuWhz!BU0!1ZnPcHi^KHDHk|G`T6n96)8O)pjtbdAAaVghg(iwL|317jpb4o|j^JU*?I^_8hhh@=auYa`cR4Xui z-t!bDBRE9nHprBjxpKJ$ZkT~GZGR}&xwTDcdLX6svY5YSM!*v3Hfe)we?+%o>k%QR zdAFG~vd>Ra=~;ng@?jM*Qf_S0)9>Y*_1|ao)Dyz@z1*Z_hw8tpRu54OG0Mj0`4DPS#l7k!-;A7r(z$h>lKs`>Cbg zsVl#}h8*uF>jq?-%|%?xaalQY!wpV+T+;mdg1aXnqDJ$cx~69N%CWGSdi&Z2f;>fN zWTe3!a^p3@RozP*^T*D&q(g2JoDMJAM!I@1-rM8V3o}XTMyFJSE-u$s^7eSgtRLB!W;aDf|vG)J8~S{8~9)ZChE zG@Kbd?WN;3-}^cd`E6JW9rM!T`-*06_|b*?x`8?Cg~sQ&cWT1}gTtap96HXyQaNW&}ga5fxPQuha2ZFE!@A^z^jp8vES&!Ou*gOWO8pOUg>bMveg_Oy3~ zxmfQY`t5UGRTI!pz3y&p${?m?N;r@oR;qgz?fr=Z;r&NiPR`o?ieg}|Xs#Y$gEA?1 zQgJ$aPTP7kLQko|;q7s+u;Hsn&ob*)8e3gg+BO2r8|_)M_lFG~z6>*`Vt^h;J~t~% zV8}TLhL=X#%xY>%y1$6yv)55lVr!-$Wm5V2RqzQl#umdUuMoH)!|r8H31|?&Y(;wZ z?Cl+_(QJ7gCMM%f3w4Rblvi5#0NG2NlguSMxuX#^#^rMJ3>h7{#AX^>GDl51X*Myh zkGg;h%k{^U?FiRoEHxn4*hXT07CCh*1*7G)ezsN@!f*>$LtW!FKI}8n@V?~ASuaSr z?(bh)+Y99ekwyS5b z)%#hpWWJ1-m^ue`O7A#>6(IUkW7D|2Iv?k$3#cWE;jc0?HvZ0E9Y9*Fe6O65ZS^}U z36(`BRD*$iHyqCidskFYp8qsMn|fCR_Ddu zc=?_w6#Opm_wKBboG_Bm`XgeUa!R(h6B7&89xwW_q-ACbxW*_eFu8g_+Sh1fFHT^z zJkuqZ7E)ItME#nGDVaz8fL?Apfc@DROJ&aP`=XI#;T8$SAdiccq1uKL$YvFSx~9`k z%mP3!VPsV0-kbbQsgYFvr2!C02St0*8aJvU{$^?_y|gPM+sI!0$G?^j2r z&1x@|IbA3fikN_w$$ zp@3is$}a-1zAD{64z3oy=0#R4$So9lSZ!M{cP*-_iXL-3MWdvqhYb%53w_{lE5k&= z!4GHbpsQng+&2Gsi??HJ+GyN0(3JwMiZYZ8L*+Ga)rQGF5 z;sY-X`vJSU1aZRU*T&6d!JTD91kLB**XT&B+2c1v|zZv$1ZIPW}~OagGoOcDA;X8O_h*t?^d%iYBsuX z3Idz#E9tz|2-&RJuQHASL*!2Q{ClUj@gM{+;QDBLI3axqU%aEZ(@FBhqZx4)udt*9 zn^k9aagKQx73XV`CU2uQ=}_0u#_Dr&Z+PW^h9O36U~e9qXtCj!)Spb_;vkN9B#vvZ z*V?t}!sTkW#c9mV<;YRVfi3uDe1u@bH7A*yPLm^ClcXE#A_u;3x@e(Y5jPl&9vI)& z*Ov;32S%D)wr_rj0!Xnsg*)n6Y{KaFHh%Z(xGl|S1SY!+<(tSuGZvI{dM@0UrwX#s zUTw(aQ-8^oWhY1_7&YbZ>+-AHy1e}e_8~sg3CDQW=*cSMRrJVT6 z@`}s#C#MCW+!7o$Eg5r77Ahka8ieqJP9D6P?AOTj$ICks>^W@8$}wYOYM@Ft1cPO*{s!V|J>=WY6uH;lNrU z8g;t(v0-&LtHUpG_!!ew=)iO%flSm4k_HWJ%lYkF}`a}KydB%1?A-$V>DcT1>>YD zQ(e2Y;3(tL^h+WO7aZLV?+$XZvK!gdk($xXi}T+lVcUHqu9|O~>W}u6V)GWEx!^n43#>8cbj0h80fJhEw?DG(xj|VBfvFKA6yb84f)WYRBhy{{ro0 zH(UNd=!P8O{o1{?1Xoy)X2x=-pZStu|0Jt#rLjNc)2#>-Gjms0SAI7M1A`3kt=|ir z@`?7~v=&Iu%C>e>utj92!vqEgKdX~I(TPUK{N{DGisftaxVVlnZ`>X!uS#Gy-5;!H zWGs4(E^J}WnwwT;wUrRMuA{Tm7|(m@qOK|DvEJJ@oXm9#-IT((P+&Yk4takS>hlK) zLs?aI+vNcp6$^4B494odQ@iv1lJ>#%671F+u1nA5cUEu zcYpuDbdlka3n2;JRB_>46%|TVHOoQ&4rFOhNNlnHX}QJK`R?v)&;;$B(;cDIn`UPW zZ1fh_9;FcPC(S$PFR84aV?Onjbh#L@(Nghz(DgsEe#NHV3_f(_Aq%lvev?;M=lOp6 z+35QZXm}WeJFkkt1V;PvD>q6Q-Un5X9s3@SX}1HqiLObGC@-dAe7)#vw5o!_oB61` zz}_fBzC7=&&FE|M1*b(<*{`Z#@Sp`!$r}uMCtR?tzQs$)&mLmqw&dX4kd+f?+gNtD zhp&b+JRK~E=0%$J+I*=BftBBUyD0)O z9qDlN*6D_?PI4!#2a&+b1Wc!EI-GPw8?*poB$zktFDRa$P2t~&?d%pve&v75f>lL8 z=^*og1Ra(j3ZOP77Ee)8i4;_4(%NHvxie!Qa|v^H5B8WErC-N3-hiEXQuf6R_U)3g z3u_+8yB`WQ5JI6;`WNH%$%xnatKe(2C@1HKJCPIE}TEo#iZ4$^nt=i zYM?g@MX;<6j51EF1{jt|xpJ@{M3C;j8gYjlEns1qEM*;eK{t{#)HCSo^SDS#qwUK# zmUw3)r8q-M#Ywk&~m)dK;No~4dzna_i_(J`IG?RpXMD;^8Oekz0ry}lZgpcd3u)Zies!4zCl zX-T@#G6{(Rj?~w|8Y~7uxC9KP5fOw}rk!1$v{Y0RW7FTIq=ocDBtIXnl{IkLF{+`Z7PBj84bhCkuD(V4A!PGQh@L3lTmhjuyacg=(#(`YU;!W~zYOfUNB4 z#5}x*&q-aw1}`!`@}5I1D}wHPHi|p-roPzyf3N^<3d5T)x?STAcyGw~8!KBM2WHD* zDO~(oN3Tw+t$XRFj4)h1*w?$+YVYynRTDHlg9E~nJ}KNRS_FlJ2<%}o=`0Q{IDWz7 z_Z`b!dO(;r)6}xfN2R2t>{Q_ZimGOJO`wS%j^lz2*r8Xar=)DMX-l`K5mFFwyzr(t z#H*WxE)|nWlb}`66B&4YQ5-8spaLu^>gsMi2uEV?ao($>XH<+=xoYj=Az7sGT>0lf z)|;GnTIXQ}3SSCu`Dclg2TT%no?cwY#4%lDpV0I$Q!FH478VrX^4Pua_p7NfD4v3N z4Oh=}Fuu3RI8E&c*0biCfE2z9Mq^!6Buu^K!iS13xK##XYFr$gk&zL@O6R4g0L=*F z)$fXuE?f#YdWY+ru1&JZ7L8_$6;IvLs8OsjU?_O5@3xiXB)e<99ZWL6q9#PTDfI60 z#&ld+im!R^xH&6MX)(i)+~YMn+6LJp73XkvekFaNEO(gGz3z7b1-~1R(8((T6+^GO zdhtl6kO*A+bXpZi+DfGhhb}WDA1U*69~{&fZP5b$J?D{Ct6z_Qr47)=n>MLazzJ@i z{&5i9<+ZG?4a~*^&fj7o+Vj}Fju1omy>vKlMwfC$QPEG$jf>2*gBFJl^m#gJ z>I%ahC9r5-5-s!MahGw;?p{;4N%`Ktn)26?zEzNumw!4XdjCsWPmhJ^6Ew;PR2DXi zE$5ZOl+6~=u9~!*?0n?Q{zf8J`LC+`PG|3IIZQS`&NK1bz23ccpR-mhx&o(ft}w6Vr~6%m=5loXZU)YweOj_ykJlLM#6_?oWH z2bN?!Hk`dFUi<8>dPRyZmr&!2O2h1S@7^obGHf9iIyy3B9E}6cghH9K5UaCA^*I1egmM=RL zIVc(^DRqSC8l}mY($qQTApy0jIXC}_ZBP|Qu}Y%7Hd!zSx4ltp#3>^+*ETOVq{a}J zC&Kr6takVc2{?AC!GG{RFnuAsO=#DkB;cE4!tbf9oXK!5ncu#B`;zxG4(q!D?TaJo z^@5l7@{?hE1Y{A)n%x}x3dw0|N=y4)sP$pG=Eib`1P6Z1UHt+mFbpi0cXoCj&m;Yk zm6jKOj2Z_O782xGWk-HR#@N)`!-qZkKm=5VAz7>L?;(_9ep65oE_blKeaxI}!7~-L z&=w%tsTS!f8lvS_RGw&KVP!e>Zi$GDtT&pYHlp!|q6<~62I9rRp+1pUAX0iDESJd8 ziPyyjTtR@Ee1UhNF~L5chK@e_2Ng2i%BO-HY}vt#b>fEM-CGf1VJJlGG(v`OikBwTd_MppTff5RnYL%((AG^Wb`lg578z67wR(K0Iy4ZP1HT=S~S zd<=ZP{z4C4QYhHyZR)_dg`9dC>ClRZkk49Bba-eTWq?_0QSBHDUu-_57y&xe#-r>` zJ?Eo?*prg9?(c=_7(W`t$3^ovUcYyt?+c0bkal(gqF2sZQuawp=Y_dySN6&=k^s3w zW7>F?Ie(~oK*W2Q*xvq00e29Ri{q4=z0(n`dte)7^9WLPTCMO`!CJR8O{ zupuGc=iQR`OO6t$uKV-LPGL0gj=+70LdM<2j#;hA3O_n0-WDB~fA6FH`I}xE0KgSL zp8t^2IzA!bFh742+>FB|q4(|N_&dKUuE<+wDsge1LGD`fb`oVx&EunsUvqF?I?6>s zjHUySFJ3dZ;f5rfoLe!K1BG5Q_jFg^p1o;3C*6wAY|;OjdVjz9TmCF$(Feu`%_*m1 z6Jf=(8HH`F5P>}BK?h@%PrMnyH25FG)?(Xi|)8{+hWB>CX z+<31wuQ{$U&au((J2?0{rCvBvjmu}G+si8!smC&p* zc$@^>e2!OJ{dRGn5Dn#Md0s{cG^1)n$LGtZVck7MY%c|P+{`CApVSynSGi9-V1t{z zqOzLPUVq4c8BEViQQo*q+zLjW*7T?-o7uWyDXCD}{`54BFodvpMjf_Q_oUFO3Gndj z!)vk?$j;cz+mF8ZDTtGG5b;_r<~j5=lce)HpWbc z=sJIZnx!}M&EYZeHdj7N;PL7N9)GVKi2DcWX^hhR2p9G@eaA{ae?<}13+}o$iiPcf zusseob`iV%$cDoIUQ?Z~q!I7Qq9WZlBM)*4$bpdd{QM6j(b#ysH!dnI9d_>d`r-xt z(?B`|G&@!!&w;#QSXfwr%)MxRyH&6r1qn&I;JoR0ds_$P2ZeSB0wo(zLFMMgT|hI% ziisHqQ(pPw$Bl!B_6u66EGF9ri}HM5I1N=*%6lUkXgPa_OG@*__BV=oc_#gX0~|93 zaY;$Q&#l(Zlm*U-DH?vSz)8%ctYc;smFkl(o$OLxqg8R45S>#N`vpNEaDP*prqsqHP`ZS1m}bF&Mk zAakQk2~u}g0r#V4`_VcZjmM|}<4n|L&vy`HVdEIvz*mI{Wq zq#{`r#OkYL`m8NtOYhiO?~QkdUy7S9>O8C;a`4 z`??p%r<6rs&Ik4I)z*eh(yp1A8<{%4lEC^NNVq)gJD38H^>TM%LT2c`7dT{h zuPpxtI?u*+1?FB)o>dp^>!=_*_ltYtiRtLuGtuT1loewiYwG~k;VA$3F-g?1$4|5ib0f~*zwJa< zx7sc*H`jGH-4CC%qIp(6tr6}xa0P3k>vh%sZx1YF%H2g+Sw6vPMHzf3Q%=^YO1KTHFhi;|Bgk;J< zQp(LPReCO30OIp~wp%pi(Wv$(m#^tsW}WXkuW%N;Au1T!w3y!zQ&KZ$mA9A`m(ch7 zSU)$d`uuzrD-=mfZFcqAOwM!C!UHQvfAh}T>4yrxCFfJls+afj{AoY2)IR)mSpA-7 zQI~0y82!_+)0&fo1=YVGF|h%M$uUv=!0Ozs?P-L`LZpi#gU=%-E(JDg_^^_b4`|68 z77tK7Lb_wTi(NO-a{|<00gb)cIQ;i-V7K2Nu(VkAE-dYi?!!&=jJ^;DG$<3E{}nFevgW;OauIKsYA2-KRg3m*ZAO|w5%-hJ4A|n08idqsI^cy z$q@7z;U+t~JKqH5kQBD6s)-pHItk2LW9JTzj{fF=NOlQGjiB!VL>Ah z!jeO*ml|RQ3oK^KU(0PLg{A|2QDkaTNTKDiNKie!ptzkcL!zSEL1ZX3mB>(-?*;$} zv3$=8^y_^%)jml6lWAW?tE%j8h`7WngOJFDEe!tq>C?4Z!W05bV_lOMgz) zH}kq$lS5|5{tPo|%(ByDcwQ`fejcKke)vt@L6)QlzWZ%=i_!B1yg}eJX;oo^YQss= z?`-|-6%OEs(<{sNt@p~0SQp2HW=7#kZU9F_&Bu-BXgCLO6f9`{r8(lxuC zjcmP9_#?kSL~7whRE!AP>3>=PO)@;3<9pV8uT-s5VXFP{GQO|2GObKN&qsgBG~Tbxwv>80`y6cZ+{)~-}k zmlBcws->i4xV)oU~aJX87{@8zAUi9Y{h9%sIjp|q_1w+wV6Qq;=@-(J zEcIB|J7RrH_FAU;5%q(txjRg#eG+U+M1}pU9^JVG_Fa@K>9a zfMCyk8dQQY3Au07G@Pg>J3Q*Cn4X}3p;f2lho3{(C{EJ?6W2zcgZKFY(^R6`E(&j5 zY5p~eD^FvC#&8l!D;X0%qyXaX@ONiX9SmYZLF>PKT%ONw$z@XO>;3Mkocermqcmw} z%5#=y1IS3>5w zz2nP(bLl$27`8S}qwManUUL4bqSAW!A|$H}FDM~NS9E_5{o-rGR3N*CW$lf5muGO` zufO{DDtzcTMa9AWt?P*T@3-!MBZo_}XwvywOuFxq9#PY_%>H&^>&4~Ej%YX38TuLl z2k*u&#-6g8TqMD6Ge!m{H#RnAzaDJ7E&s(U z=(rxGUM18ca!J7F`d;h~r)2?qD9VA5mz2hf?G5+0i;C!%5;k4R3@kPImDU3}e zv6-N#e?Ze8W9}>@8PSK*2XqIgfZVxnuVdl<1uZR4rE1mY3o9anAndB*%ALI*Pyz)7 z_4n^zxpclHFmq^WS?TJ&vC1~?jc)SugTxTS9R#|7fy4|Nv$`qh-1}EI1yZE|LlGl? zH+DY{`hni+cB9~1k7tXOiLGsccLHcQiPj|xlgSX!0&VZW> z8YHqa_&vlk#9qe3OOt$0G0@R{>+&ipSOQ@}oG*D@pE>4kqWMX(D&uzT9|-F?8tl#~ z3!;_R8mO)aiY7sI%T*q44>T88cD5awmA#|+S!4XqEVR6Ogn=c(pH3QkiQ%A{7V9XF$v zs4yn-og5ZtAST#QQ&KLs9OGaRcpJWQsNBNFUnb19eACwcrX~#5OkOob3G6A(Yl1(a z%XN*l7DR8|2%jLVgHd8P^obX0@pMET&&Ji@k$x3%o-57)=sW=FP9ZNvh0H|LYP zn0=94w%sJef0DlT$|i9o>kmvSE2w6MVBugn9qCqiProbTnHl75UTJo}L?Qa{1tTi` z?xRiluxf_e-5d=&lc<=a-FBc=O;m`T#S>8bY~^FLTfKSh0ll7@j@?C(fi8Cr_ zywWagN8??P*Kl)=wW12cOqDUsz`#sB6bl{qu<FJoP+&ExhYxk#tc9-1D>A^4Wzc&^@tROK_s_rh_;&1p8+`f961XJllg zrXmG_w#?S|2!aog^9rvd%9aN_z%kKaK248>7W++W_5(~Mfe3hxjYre1Y;5Ff2w~jy zanmuu>G;6@CU3O2H}Ky&>g{?Ilx)YwhCULTkgD(@95P!?>6rKr1V3Z!1sIUCM}~tl z1<02&^7Rnka!~pqT=(4s+-U%4f_oDHB=`x8Q#h-gXB?cITEV9PM7oMQbSO{oF{14WP}WsUIP3C9KMS9r3})Bh-ibdixk zdM9DL*H~VQ;~PSnjQ-Z(k35K{kEipxprB`Ko{|1D7oZTEmzAh*ma-QMThi8<`}wA3 zSjg3zO~U;0Qy1C9M9E(M$V{Gv?toj~S!P*OV9@Nqw&}BfP_{N^TmENq*OUG6&2iuZ z`bopGPOV;ZNKDprs@bef<4Cpk@t!SQ5EyNI-?JJj=oE4Td$>WT%|hMj0~2Q$L@PO} zFnc10#dui>3dRvK6b$N-pZxQ{ub=S?#Qa*b^Uuv3tS7CoZECdNQ>QfPdwLEzJ1kVx z9f~>rd7qu;_R0mwf_$ zXE@RRIhs)Rq&M{Pn8hK_mOGKZExXk&dlD*3w37D z(~LAMsMep~Pan}CI(b!tK{lau35v;J*xsW3`)o8@vW127iEiw#U(W)RM-#OgKvHV6 z8=N+-*8iq}dESvKb-U-zkYq0g)KLjS%bSfI5!lkg;ws*g z=wH7aR#xOR!r0j?p7ye)Gm7gi>(jWLxmZY7Hwy%M%aC!0lAO=rZuw(At zsgN8uS2yiD7=WC`#=-`y5%^_U#TcWr@$)K7;)cRPJXGvsl(68TQ5Ibk4Z^)fcRnmE zOL4?VERU7=+2zCA*7S1K`UnO^o!40tq6#@YHbxp6)QqPeo!#AAs96~axk4#%@eifS zPNo)~2YV}K)d^%Yy!E9W^}XE<(+k*$W$~q=5J_-^7oT65p2XK-o~=Hkf(uVU2F;UY zKtRB{mUL9y+8HRqf%7{@JK%itUyYG#(z-?}08L^X`t z=m0T0OGtihpec53wXdkZaJ02<5KY!tCYu1sAR;&_qe7yd zxfM1-tK|;{g0vI1v~VGCRmPYOK5UPLEB(aIEM98ynw@?Y@F#pYy6CxVa z&R;`aFD{m<*E&sd+Slc_;v2~~G0t#oK*J`MkUzdB(leXCS$0-Q({#T*2%YMaP3r6G z+H^e_OARQo#T`lg&2CyWxL_z6Z}in|KD#mdUFQH@krVa-I8edel!9g?HZFmQf$7+I z;rw3uHTS2IdwRl8E@`3t`7#G!AB|S{CU-)zm~$2I>sRUcLm98&Yc#VK7on5&LgVw4 zS_bkS8S2}&PqofwS*+`?KrBpXpY!MOSSJvuNf}JVBq?4))oUGYo(P(L{e>KPu)!(y z##KW9dp1dR2M9rd*0UUM)V*U-Sv+?0DRA4fcK}SEv_~*bw+yn%*sXU$7jgj95nvYe zcn|~uEK~1iMC}_G7?`VV1#_~rHKPy}xncGe~go@L9xfYV-1)^r+uVh~Yg9YO1RvAnyTc4W313QKdm2AjyCRY>YA-!<|3A zkN}|r@Jape(;|EVn*3A1GgzqA&wc$hVYch#nX&5{;Fb#HGhW)KtwDDq*xZpVjq%3F zrt$pZ4(LnyzY`iY-|LZuL)gF|>yu16A2;aw)As!I$Usj&K_ELEZM*ripn&FWPM$wC zrZ`k%-JCQ?`R9r>ldonPf$VPoJJSMon~{Zj=xkKa2KxY0ZW=fWm_3RO%L5FSXjrJ6 z)GNPPVLZ!qrvKht7%3X)O(GA%WP7=DAxj|t_=e+P#X;zWhum5szq5$vlb za4S|25TismvC~!_Un3LMq2iT4O8yFbPu>v=#NH9vl)1 zkQdPj&?ON$@ssBF1{~DH*0agl-@LB2ypsJHRq4>y!6YVBK@Q1IZeC=3_l}YJVO|xR z=Vl#!94N^Js8l}P2qb^2Onb!D%!;T=IE8oqP=u23{>&-iJP{%|oL+X^KNyupK_zwo ze$sU#6%e0GAvda1p(ZK%-{C8p&J(J-9TVWPq%YB%acN%`CPZw9Ne zvw^t2C?ZZ{JbT1438lLfBa2;@WuXJB2-QPaK$J?=;`a}L%F);7E)!t?Z$_rsvEJI< z1r36xbH7J9hSE|~$zp)f_G>#bEwQV{*P~yu7?zoSLJjb6y7PEG*P%u@h-rFYs^tPZ zq&k~bffj-FQ8-R6v3ipCHB}~~BuME(iMm*rTFayId@Dt7*_HGN-034)`3D>7)6$6f zbGyE;V^MOZARqhPesq+8B4pM71jbZQR0%x|Q}If|?>_beE->m_x#qw}*%$1CFWR=8 zoK_24+uKe%LrED8E#8^Sz`D((QFrwEtzleG6#c)rh09x}O>nM(R$u^U|3rZh@zD`4 zvD%i6cgzmlY%wIkIK9U~s4h{V(;mnJ854klIu0>w-y7Hq;|YkO;)G$s6!eUYNFQK7 zp&7TJAv1yK)8!c2LDNz&GV%B7dC}ca{R%k%)COoUamn$QPjT4UNDJ9m7KM#B=0yzj zSpQlt@rs|W8|MneKRPNJm|A5A$e?@UU#*PJ`=o!OD zN!&$V%^U_aqu7Rn&H({pq;X&5h?j4lwo7^#IIUEx4VMbZuXFQ&CUFd7k0eM+`Y{sJ zlgY}m8&N^0>bsxH)T_xVH-hWQI=bSOo+;O0R!@5B+ix~=FGr25_g|g0cxD>!P7Lfr z-w66h9qhtACIZ@Wga4-mra`@khToadE3bq+(m+os-NzKKM&8hD-`?5sOfY{>i%u%2 z^T;7?B^xe4O;yjy>W+Qa`}~sAz4h~`r6qRaiyTF<0~3w3)aO#o_T#p}?R5ha4oYt| z{Gwf!=NM%zVkTM&!r7-Y>z>fi3m`6r3$Z!;Z2%)VY%8Log05^?cD;5n{LfOgZwxTk zob6sc!eVOU-8F5;06zT_05-1<+;usn^XQrBI^-b=ipWxp=5KgvKs_*9xkU;)CYPP- zZDeZ@cYSXTt)B!)abGp@#nA&bl7P);UK@Hbx#lHbnTO`}JbFOTYVlzT|MPp` z4GBj@*3L#H;mfSZ2Hqe85ZgRCAt5G~CGG9&6aAaDT!T+s!*no;`U#d<)ZJBMb_stS zK*d}wR@%Hgfa0mpe1;VrRf=mWtsZ5>qw;+ptCM0YMLXlC+bw|w*$4OG7BIlOB zdq38AFp-Do1?L;6jTkt~$zK3-5eIN{Ta?BevRZaC*wa7|$}(Y>+C)_7Kz;SBE;d%BQ zT6$JCjZ0ihHt7MK?6$kR7Z=xOr4zbcFkytK_cbW0#cu9sQP10sl{FXzcsi@9)dqh! z*04h-!yoZFR)L%sKSRn&bP08*h{&=GuYlXl#RaknG1IlyV-x@jHZD6F)(!ulby(e& z(u%95r0Tu}v6lTw5tYZ0+G+*u57pJD4a=N|6T;VvUJ1S7MD};xYJ0?gLlJ6*_ph#G zp2S&i3Q|5kC(XOX^+x_FD6cMzzYm*rJem8ZBcE{Yk7Ul8IjVW64AN5urLqLw;8D00$fjWOHlrV69njc;)8%$M+|DkUvZI_ z6fEg(ca4YNCwvuzQ%V7Qg(ty^xa>AY@ErJKNd4c@(YLw3A7Tu8>~)aE0c{V;z!*$^ zKmZa7I|uqFS1CK?_i}VBtSNvrtT_b2kKfH3{-k91?+_eFXF`KQQP6gE*2@Ga;k{YI z;1}Vfr2u5(L~aM_EsT*~JpM_1D?VD@Xb*s=G#*L>DnwK0n|bK6PvD)D0@Sb|9MiVwz94+(A?qa z&aO)Cz$G&)zjNLMq!K=lrQ8mYJ7NNz4K^y3fY<)>a1p*#=xV(ko55eMtDA~tM`6Cb zjRi~1`D#Mx@70UVPAePJ633$O`^l@&| zKPc^@Sf#*o98TwqsHyDZC!O4q5Oe=dGk?PnKg4EuI_bFnR~96uXJDA5rKHA-B11#A z-6s$b)GTb@SWPA{q=WhB(CAQ*I&bfg9Tho>r@^EINPGt3Na8hM)8ggfHJD98M0Tw`wIVFFwaQ1zNKHEP{j)4eUMWqs-dI7~$q}wa70hFzBY{<0GO+?WuzadX0>X1R`L8EY@Zj zD3}ee29J@y5C6T}`3Cf^BMHo&)K%by<5T}7SQ}8wrP9*VhgRkTVPo<*wxOXxEDQ(G zcu9Dj!?k^%Y~ zLGw6xl=(s1(#`SWc)96#HZ)dzlL%Cbq0%7iK*-M$k_Ykr=HCNz1`gpZ3Dt}&AU9Hhzn^j(JU1m2!fQ=zi1XeAw zCcR^0(H!tsIcU>68Bjc(AmvkC1qdQg3|U3DXP7M0SyeS}^+I zkXsseWMt@X%=Y_{?EGTK*#YzcNvU9ALD6RO4p-5D2|C?VbZ2sDRBVL@$sn?4JcV>$g^?ON%W zcvmF+&Y}E&EuMN_Q2c&JuO-HS!jl8s3-YI<01HiCP~+)<-h`wT%}No3w^#pJ&RDkM zH{MvY#4K}bQ%aMEfO?xVgC__U85-pR>_0hGAw9$O>0))#_wRjvG_z@%y-_6Mr&%b< zrgsha0xa6=_MxrzCJ$Sc?1&A!e^?hFA|NF*>IDmDMRxD#B#hJhLnd+e)a0Uv8p@AB z4nUyh5y(6JsBN<~teNKqfjNwR4=Fa<_2Iz&Tg2~B5fI=nN3x*&O*@jl%tG)w@H>5H zYbGwk_)xOI`blfh6^Xp7<(6S?))+KQYxQy?ysu5Ot7e-WF9ihy4JWCfY><3vUImYr zrH)IroD8MW9cs=0v;gmy3Ptmsu^Y5OUAUhe;BJqa6+=OzzTrY>Px8fAeh`NzY-co; z)re1tFjx&GQpK(~;AB^BtVua6*C-e7k$rzZ$%VhwTs$Q`zJqSb^ET!s%=BVEVVDIM z91{ntB`Pc}(PTnXPV3-CLY~P7%Gr15T1E?D-n*XZhF2BtR=#ZM zDs=cCu+rB3{HaNPvx=>McT4>z~<#R;%g3zl^a+w_vR*(}S=^~Zsn z!rT*Zby;b4K|TG~N{@?;&7@Z4Z>=n}D(vwVrRDe^Fq?+QhHO3g1T>SyqN3U?SkxDRt<78e#GMTPgOAv-D0yCXw_L=DB8sq&T9Ch~f) zM*$F}fTgaayeLUJn-v(g6d_z}+@L@)_H8rs%mR%P+4!j%Bw&4bVOizUEH5597{tQD zF*4bmX|kjjAea2|C6%>R6H_zgj8#%xT}u08)huXtYX`LCwy2;^s5U(^$FzU$Z?XJM(x{QW1BCVB+E_j;~X;~$b)QY z>HF~s_Ur=WrQ|$FF^coD@)uj;k5kAWlvGrvTSE2a7ll!hSd>Ib_I(nA?}$W?Nnfb4 zyi4r#P2ZK5m+zI#HVMJhBm4~jE#uR8wkN?d42U&Nz9crF^Yw$Sp&?XJfOZ2S@;_uZ zSR!@lLjR-yL*11xs1+YBq6;VFWaj5zUS1}i)u)7=fJdkT4jB9xmZ+ zu<*h1IG>t}X}6fG@+P>Td@2MHlAD?bOFpbvS>CuAcF42yb9-eGt+6VUU1lwI-kWGG z)9rwNS^k+%_zhUFJL-z)dYC}HU03DQ=fL!lK+j zp(!&_42h-z#+X8#H=PRnCcD3VU)~M}91a6~xaakOGSUcWc6L}GHx_b55)j&yp!lvP z5g~0JxHKAAoB(d6imN%`W*F@c)D>>eJKL5-8ks~i0)ph&*dHpql;ojcvx3j%dH0^* z=4SQnuK~Ka=dl2+^#U^Ky#F3#vX4BbCnL%1VgLQTNk?t4tU(`#C0Jt81FE@G+7H^V zCFWgchZZt5H8q*?vgv${#v;HBFab2ec4>hB2CEQmB4AaZM^lL)VJj?s7{}stEQVf zDyEqcDXYHq^)4Wp3ci*5WjOG)UqD(+U47yA@6rfDf-2AFj9t`vJ4|%+N}wXUha)H+ zxygVL#_&e6489U%&HlRypKjaK|M&0IrxXrrP{9aw9mF7Vu$sd_7^=X6rtj+JmPI$! zK7fUaiux0}%JyORJCOq@`btd1>o=^0S=-&6otSvg$p0{1gDn1P`Lr~74y#T;@k9h# zeoLn#>HhDx23!!>3E;#KKjn;NXZL~Lv-mf5EsDw)>NRQGuA!xK1-!|1d1es0H(zOK z^d{ch+k2W}8SL=uv$Bf%5+Mu-fIGvyX7wp4yDP0ho}Sw7?gE}qbIs%lq}=xO0P{UF z_ww=GyX;K3DW{pq%b5CG>4V#^+S(-8*q6(?V^9FOF8l1^A1I#6>w+Jdn!2>LrL=(Q zw72J4n_iMA_0sqRvgN>5Xf&D*3RTjU+Fw5d=rgL;$Wk{VZh5QEtM7xIH|wiY$2I#s zxw+Q|!e={K85!|yaJ$;A7XI%q>3jAnNpbaXcYj|bo;OZG`6NI_H1;6^_+)7bxlHMT z;B0-^_vp?qFTp3zt`K|v05o<)+$s+D!BLjGGjc$J4=^@P17Dh@qOTeUeR}$jkao^( z8eb;Hl>OULr`VuA97IWIXc%- z?p0^%864Dznnrz_g-*xJ9N7DbodjIgkXPq_>TBTk&hFmIN_Ey(f#!vvs_wIm9tJTn zH$a|*;~Z{ZHaQ=sIK8?;!p5cw<-hM)c}cCbD+vw#yI8-hsl^ZeV?aAY<{EH>-#x+# z=exZMb*`(`n}t;6|3H7Yw)rC zLqnj10`tC#g2LMtP2=%~8qD*%BUZH&|L~>2mv6UY>3X5|Cts zL5++3;^_GC+~f1^(%@lHL4gY3Ak@`SgNMcoH=0yaT2Xe-!|r&2X~|k;)&or*sJ^IX zYtN6U4J?2!FJn(muE)%La(gN$uGG}D;0h|XwJ$CaHJcotj~8{Zv5iI$uFhORw_agZ z);GXMdAJGyQ-3CXG%FU73z6I4@G!5>OK6NDC~CH7MEqD-e{@7dMKv>$TyNdD@ol1~ z-DR{SGZSrkZx{DZ*W^_%vI!O@elO(r$1q1l6xnbdS`hY==kZU!}-cCoVi3blw- z_U{EQbMFx;LpK1iSM+a(sqfF9hH7e!)zv9sgRQ@R!%0fQd(y_6qxsQ5Tt_{0SN|Ox z>{{w>XmDj`S7v1$r;+zO`?JRIRqHvVy3S&Tk|aH2P;eG<=>EypOE&qRn7M(}MvV1{ zJJ7KX-j!Agqn~l9S{?dYtuzdpmXbB4$NH9iB zM1{VuEp>}f%&ZBzlmzXK`M{x1<@n7&708D(SK4xpp6$5kAo0kkve0Nipc| z0-m|TLRxnhP|2|OtgbF6EP?y{(c+LBa1(a+#=B%RG$6T!D=?ChKAH_pm&kq1568r^ zyg8ajgn*d&fqoU=SYB3K+~#~-7b1BWLlMO1a}wlDtkQ@^c>MYEUGNDJv+o(iJ}61q z|9m@9Qd4(TIuJoR8pYpvPCmXNilYJU!oD z(ODeMpZVgAx3_Z(;IdTBbmHOT&$vqt=LR7Y*0`LK|BO7j6crU#@w_=I+8fKZk(Xy$ z|4|*k)@HwLTp)K0gL)G6x6x_Ps?%Sw|Gq@Uw*kj)rTO;kTc@{WFJ{@8% zd%(k2;xHwPiu=;*S+5YYsBA%eKzMODSaW4+Y;=nx;m2Cma`YOP1g%n{Mn=k@x2H3p znw-j3ne2qu{i1*3XnrzlnUba;Q$ErIyd1G{Z_)LMcy9Fd^&3#xOMXaVVM9y4U4Yoa z+xuGBRIb(hhZI#cg~I?utj>M2$3fE#96oK#@87nTmYSB9eDo0YZ|*-Sg9?qXkm!MKpjYg4TDu#kZ z^Uq((Q|h#QTU|jK;D=+%V+n``BI#mumicBvk}g>rUTjOhj-)NJnH;(kD1PL5bA`+2 zL5m*x2EW|NLiDp@t-##br}X_2GR5_vol9G@=s2HtLych~ilwK$iK)$XA?Qg~7Vy zamRHhItSbewg-1+60hGmyI@iOF!*Iep=J*N_7})BmC@8GcEKJmRrT)Xy?(us(*DR~ zz1;C$!`;-C(&YU|m3%q8fO^B8gy}=v@+GC{gn+9qe55kXbry`3@i>!l-_e2Lu;9=R zL^#rZQedz|D=63D(wmaXkUQxQVY3QHPN=9YO5$9~)P0p0((AI(+^jO5ERPD2#A^2S zJpjvU@c;*yKM?{>junrs63wVY$Y(dM+P0*-|I-3)mQ+5e7M4j`q-eoPOG(>(hSjj< zF955iP^NnRGk1=mY#nci+bhEn1j|phxC-~`1m>|Ag1WynC8Q^J?-?ZR&W8`%K`YCXy-Wg$mPo1JzR+@?5Y7CG ztHU#fhIqipML<~J<}!-d&TksIMibnI^EytP#~Td}TlXUfd{b6_4`=0X#>0qXv$Ke( zQ6iFddO;}1@6)5Sw>SG%Kxy2ObaFv~$&?d#LCiBi2aKZ!K$?*EfzBfkdg`8Q_~q9X z(BzGmr2a#jjFE8)RQEWKc+4%3_e^3r(g$$6@>**s{Y6PhMsUL2y-81R zJq&kLVnU&gIR8WZkI!+0EZgxG}4cXbPl z;(7V4j7x}}V8J3^9n8?Ycgl$=x8Rl_Dq1%qvVU0rU3`GgIJFbGZKq+MN&UBT1snS@ zR7b$qhN45Wt+zV1Ka(#HbuK%~-LPk?eecd0gasGlsNva9djH#Y!`k@7jzAO)nc>@mQ=!gXGT$4|mSr^L-#lN8A}v z(2GL5I-N9F%vUC?J25lSSJF~uqJQT(d=7O*P!7+6EaN!y0~?&*H8fZe=$lMQ?=kZ= z*4wLMpW-~^E{$c0In8Mu4qmznZcJFLR$H2S67ZR?5+&T-cX*xA-{lyP6M+O|>*LH8 z5txkpD=$y@S$f&{-Zhn(`Hbi`4cDIVRPvmS{Yrm?AzCnrOG!xR`WBOk9D&E9JGTY_ z2yS>*8{=`ibVd6GCbEaC%`_%_z!XYD%xt+@6FOPF&Uq39+#cmR42_OE{VDYw6Cb|B zU&gD+rDc}&nB%~-BI2`|Mc(=?DpZ)an(wZ3DOdrFC$Lt3-i;L;nir4DpTaZ&VvkKk77>HFu-MTTr=#J2SA!wrhO+0Fkg zT=3n|elw7b7!`#(fRI)exEF+UP_$$LAQHmR$S6mn!DdyD8p*S}`xD_i!fAJ=TpZ(t zw@vv9!3RyL+=#;g-y+yPR3%zu!MW^D#5l7h34bq9Nz25W4BD%hI46VQ8Y{wi_@IGd z9sYLO0bXSyHLhSRqHi0_(lIgPK-A95qf)4|V0tUj`vLg(tt@Ze7l8fZBo(l9?upV$ zC}@nGi+d+tf3WrU!8a{#?;KwOMQO)bqBK8$Vktr`38<6hNJDUMNkbdke{0Lmej97C zqWO65&@Pw8v&PtT1*!`su;fPriVEnXse(1pC^GMax_#BrfeT1U$sg`;fW9n5!7?eo zTx&X!Xl4i;w%`cY)6YMp>xmBn(SkE13J*B2ob5J67)w+z2Rd9K=$tDDPc8)|iiPo; zPO6%yRu5FLP#4Pjx|aA^(?Zt1?8Hp>rD(z0`r9`-$aZSSHw*9NwE}*SiSVAe3TYZR z@;8yW_GbD{1c|K5(Uc#WJu$PB9-V4Wv^MY8TGW$c3-_9@uK0iC{`Wj#0)nn=I1=FR zaWQp-g@lQOt>1r;ab0@R{J2Q}I^q?i!k8}4DMvQEwY4MYzQJa;^!XRdSKhuzqNS`d zbe=P?5nC_&{kVwCP`W#6*@Lr67`u0kNb?N2`rc$b)^c?w(HT&Rni~aE1)PYMK(5F9 z=(>)KgL(bpdJ*hTBk}b*lx05C-*tCWBayH>Js*hqJ>2dfkp0!xwBfg*4*jaA*64YS z(~=&~lC1GuL{K63Q2}}mMtPr;OuJ3Pd4Znp@9p6-F+QQ7yQ-TQv{G3**buwC*V|wO z2t=PdN-2a!SQZO+8R-7MQj_}MqO7$FSHnvl{qjocj}|Lq(z%rx&f!A_XXnq(FUmE| zp{IM#Cn6vveV31ORUwJtyNX9B~cd33UD<>t*184N@fwA++#`V(D6aV6Dj>um1 z6!C3?K?PPk?)NypplZE7As40S=9nIGdm@> zo!xlyEMP?RHu4q!K7;+H|4wC3(wh#Efxi6Q2WoG1H8sgu*iHtnm}Z2uHMi+uGKmcr zSbWF9Am73bE|?PRWV?GoAd-_bn4uPoAc?qaqtxK*5P>-BIRVNV-KH=jsNur zs;fU7FIq=avwxgYSP4SSmkkV?k zRWCb?b(CMWi!lZWa(>cIEj6+MwePG|!0E4DPiVlWW^xcPVysw&$yq#lq*u`RnxnIt z9@mS~Cx5k$X)^w-ZOq?yGH2G}@{s7FQ$2*x?(KBXR!J!V3OzX5pdAl0km z>1Cu&WXvNFW7$9IsRP%6fFm`MevD-_87Vn_b06zvslz}TdP>@0tRzvSOQ=Ud9@niJ zH~H#`s;aPAYo>Bwpg%ovh-+S& zzTvO^B>fdR1KboHE-zTPhyr;j*gQ6_pbH{T*p8K3R2vfFygoQitMa_2AwFet4!B(b75CT)bN*(P}m|D~urK{uveZtL8a| zAFRjLw;$=zb90S^cE9ZYuIN*6c#-3$O5=67kTt0X;A%NynVB+8N*0>034)l54mz() zyeN$6Hr&4jrOlcgk8j-e6q-2+Yo?4khcftUjeA>kT9S=wH@dTyJv~=Vi3M16j=61R zV#*}3w{St3CUXzRv#G4+Ra6)ovvN0Y#i2Oc zgP52YJ)E^^XF#?Emf^&-G|YkYbC7p_e7q&KD`OT9dYUeo-6I8C@HBo8I=-jJw_m$h zgoh`W6&?N1=lc86Hs33>&AF?ycUK%795j`S6@C3Ofq{XsE{-vDQ0#Ila&d{SL1ixa z^($m3+y$Wb&jL>(NM7ZvTJ zxksCP+Vo8tNG1G_C^1tQDo*RnGAGLh`C?pudOLy z1sxWvBZ^f{e?gL5&+0J%ub0riaJr)W{NBe~@&-RRkJlFiPcDk7(qpq+W%AHxkIp9o zICw9I1PhPf(`P?78pRygE(V88MocyrYBjvQA?|v>a)&*JuviUD(VCiX|1I}@@S;fo zm==o!zty<0wy7x;m_WQCO6h2#i^s_YU5~ErSi8pb1bogPvNlZ)&Q11~Dw*Ckta`w? z0J5zT3BWqM@N`>%ERRn6SvPECll>k28S+oKTaPFJNrbkL84LXEPjdIb)C@Es!0IS0 zrd^M~e>_LIeuAi^lrudboE|sjN9eh-Sz*m^_F2(wr#hzN~@G~ zmw;d(-3_83Eg-FwbazUL($Xc}DcztTB_Q2h(%tYRen1e$q3nb*59c5^P#-Wn1XN;}rQ-BzK9^ej*PZ=%5 z{^dt)Hk*Gnd&QKWmH+a%OxqNFo8)*!Udm6n`zReuE*w`G5kAQ=qx^&qp76dYbNEv2jts z^yw~*U)cqbki^lMR)@c#INPrGH_G;$YxUq4O}-5g6s_fWaiS$OoPudFWhJqntbdOz zS8IM=@R?SzRsYFX{u=vSCuL3Pmd;IL0S&b|?c4t_{La~QMK6hFTTI{eh7F*s-RI+W z8DHs3K_JCFu-_QPF2f{MDV%h@nj}D&<#&$x;_siH&i4GLT4Ba0hj2o|&itIbf`Xg@ z<}-FIn1uJG`SI}1fD-m;^7$uSyvNcY(}2!nX5xZ)7SYf^{w8qyt|)qAy3O)YG}8=Z z+rP0H1$uf;!y$He3+kj>X;-!?%*`wpK9yEg#eggyHJC6n)Ur7%HSgVQrz{b0nogM^{h9>BNit{yo%FH~`dZhn075 zt|Zz->qb)Ogux6YDdjCPB{Dp&`*@$Vij&{5BBr7LT3K7Gs-7Zg(Q*yW?p^-Sbv7K5 znkr&$E>O=I`}y187;SVRA zxsWpZO`eYrgkO0|9!|wwL|)i<@eQ7_GqZ2{h#?^&s+Ak74)9esxCg}froR2_b0C{! z?_){x>=}DXX0aw)SejTW-gliL!)1`RU8i=-fz*vS0ExPhbrc0 z4XXk8-5JI%-&cbwF-W=mCCZkfciH}Y(4GC!@OijxnYKZ>oi8F8x|rwQ|7GElhDG6; zCqrLJ>E@@-`cHm z=7TT~%K_@eC(MFwwowQ0-aF!9A+`;w20*s_W1+BBVe4h;UyAV$2<1)LiWF4?11!%E zSS*Ds4*U?jrp3kEG%dNrF1h4Nb_(-7-alE4(a)hoI7V_j%gamqf{H%&xPp(5!fd+1V(k|*^qFNW|4EL*f1)0;i?&a00NsU> zJzc3I;8?GS*4nSt?Tq6nK<6k@$0s5qIrv*&y3XJJ{d|N zP_8^h7F;Raa0@-nLGFrZGcoUKr^+@?Q$B-hu#Cf2P1TIH-r?Bqo>6&GgPxd(ud!|* z&yD-<1gRH>J(!2uwHJAW3Vj<$k16=w1R{0geVu=ZJ~-IBO3}rTb#rw&-ZQ-jQ0t7CFy^c@E0*hu=<}EK5`4~tw_~|+eMXITt7P726n<^NO@h4Y=_kf4!T|! zwF$iHFgiR}H0>~wyPoa^dz+1FRG^nAw$mj}8kTkNA)~&&Z=}@UA!15yTC=|wOQsTx zhn2zr@%G$7_eQbl;o6+4bt(ACC7Oz0s?UCpNw-xG+1ah^i?+YnEt7>8QQaH>H3dby zjDBFV$m!{GW@Z)+b4}Q%2fm}?kSrvR)!04V1pC*iKVCPpWY1gw&9>q=g6;7yI18IdjH@rl;LeB=-u*|1xk>>s&8PcMP4FqU4gRzUzy3CB z|5iI#St&uL&;NT!`V4c=zEO?)MNG)4=*YpHE8q70_iPZfhO@(gIG> zS~k`>>=P0)iM*~CfnIeRkY@;eV>tIo$KuS};ip%|x>RQ;Se&nSiaFPo-Clx+@24HT z3Qw2fcC=0^HDr|__AV^?%jA`=BXSqG`V<`z`%Q21_pLk98X_W>S8Un#d~e7x$sBDzs*@Lfzgwz$ixqYWMx&w}Yy6|||EG-C2LaarIy?3auX0s_yQ$bY~PBlM` zY7sRLW_x!s0{%J*xcX}`n_1|WWE?J)whg|CBo12{$xhY1cQ;`E!P>^t4+aM4D-$+w zK%3W@T)#YzbI@*dE`Boc+zQo)Aoq$WDmwV&x!zaSo+%#g zSh3Er0xasHr@iau0Q>zXg0ZI9fTi4isNYV?C{x=Rf~Z?O$A{wl{DWd|UUj0i?wC?G z$`wuiId=BJFhvE5>Y0xiUK8?iZ+;DaT38|hKr(bPnC;$?T65`D)Rg&F|GGG+W!Bz? zU*`V%_xYMg7-TkYYv)O7#b0&g)IV( zTQ2InoG*+5)mBYRazKO1FU;*XE6h-t;K_kh2p&Ej1)ueAfVM!#Ly;O!Qlt5~1Kgfy z8b_t5Z=M+V)dk6X8&?F!4aVL(9DwI=9LR9;jK|&SMudvpF9K%H%JzSv&Cn~iN;D1l zkLPGCUZO2XczjcrA4sY=ao_$K{R z+1c6g6Rpo=wV6-ox|oI>ZVp_IOA|QsNT~dwU}e@ZTkTCVA%I;nu)hxrs8W=VY3h5n zs+=%O2bQ0Sb~7963nexEke%QtV18E$eLJv{ZW9!h*w{=E617W8X;sfnW|pU9X2uOH zDY7pN%Bk2LIzDQ9FCIh3`nWbRERoCYwzZay!d_Zdk6ju2;828UGqv%dtPYdTo*SN_ z&g9)aTK>NK0&o^7h>eA7yS_=KD{9a$u3qek%}Zl-+8?hpE+huDk}4CjjwP=H{#gh9 zalXJWmyP)H`~V7B940eClc2B&xa=Ehx# zq8y6)*$-5>fkBwDy;J5J7tidWx~i%XP^8##e6dQedpp$jy%o#S;4FXH8SF!1c7%_M z8$`k%7!sl)sc`3VH2lLe$(Nr+%THq>SjMbV;^ImI+T7ZCa)0}ij65q|nW-&H&wmw8 zSHa7gsmBqevUpFI$u8)ART@r(+a z`c6w?r1y1Copxq=N&0OxX6C}6;-cxQ{V!*4I%@dy5{M&d5RSl9S(NV2AFZ+RAehHBUexKrU_m6wP)23Mdq2fmPk?jEwC=iv3gw z=lK(L_r6k&Bk*!EADtVYIT+7m#v8SPV}h==z)$Uf%%E?(e@GoBqxcACmKkrAl*)Cc zIH-h$aeob6{`BqSgiOXmu#`JFVet<_ESN=x0VT3`5x04}PTGnRD#y!@5wt0?;{M1ggISrs4GmSQBale=GWZP5V z@?VzmwoQtYZBPlSH9YnK>%i$3?&A2=uKqZmX^i4)cX~Fn^cp%@y5%G zi}u6gt@o4NDi)^|M>++w_o>wIS)C(NhN$YR#5~jlPV<)e>VSeLHsEERiaR^r^nA19 zBj)~!Ohk0Cw#cQp=q-!I>3sDVw^P5u%rB?I%zF_LTKunbYGOHD(9-K0Ov~p*4Hv5z z_ANVx_S>k=G;F!}jQ%!>N|13BsMok|Do?smQT_ah;LKDKNBfvYe>`WZ@KRzoWmKw; z*I{w`q-nkQSn`NN>6Tj9(1sDaVo`ZIkaN>U&qn^*byD?O;^k%v9^m>doEtePSQ9s} z0C>xObu?;PKM+UznvxHMY7MVUG;m^U3e@6+*5~dl7I&Mb4JLf@Pk!ldNvQDoi}dsL z?zj<-53PD@7Rj%GAo~FI+Ufu5!T7JWk`38I#^fm%kA#Y5*cp4pHn;6%)OxrJr;$t9 z%;7TP-mh=9iDnaoW1D0B`9zi6&rx}>nDo+3dfpo-WBj7LecRpEc7N~Qf%@9s{%%VP zy|pTKtLh57bQ~K)QTEH8_SDT;IaA*9vFhqbyvWzlghWEib)H|SIYw$RYvSzE1>F3< zNIhpZ_Z`HReb;*q088`(TN8G?;{<+TG%t~EMVLtf#ONvVf#>4aXq6pC%9mnq(t&@f zp{yd;54+~U_LQiGMno>jBh|4nZvNU4`p+MKBs;XwW@y&BmZOmo;gLWLH#(%!44A2W z$LhjC?5Bw>VxQT2rRDH!%{>+WCnFH~LcGmtOEvLp>{B{A>K{E6Nud!j3H=QP*je0! z*$)p2b0j7A*t>s$0hTT+o!w|$OiSj)$D}0V=l=pv%w~?z-MVVoepiS=lgZrz`mZB%u zzNnlx7Wy0gjOCj7rVa5TX@8(eTJfK{od5jQjp0M$rZnk)KE&|veFSl-CvOan|NkFe zq+tE?75IRh4$GC@x65Cj>{V1$1|U})rp;EMq^70@K3YiO2{sNns~i$^x_aQYKTz!W zpD!{eh%knc0N=!YIawG2Xf?PpFftk&8a{gXFd{CFn20DgCI;3ZsH$e5q{RAZurvD; z)xyF;&}v=`QNVh!y+psW!2~ZU08SW9O(NrDzy>5I7XSq7-~76Z4<Je#>L;i?;IavqNBH@l$4Z!*T~wMg~do;KLd~&C=dj4ygXw! zW_tYCWcG*WON{6r+A1oQ>XkiFM_&;cD+~nA57#9Ka57%Ld?{2;iTMZ@=iN$gN?6#h z80!DNtvi)XHxWfJg*75hEf{pi$p=XQ(~M_r&?5p!Y`eR=%p}a|85#U;XAqAiC_%zS zL1l)YX9KW?fWN4qU|3HpOnBL3(;j?GKroGJYlWJ63w{&&g z&%z=U2h+*=R4r#e9zOnyKOiF0JboPi?OTwSc8x6>aa3t3s}Ggh50R%%&dwMV0;D=P zVWQ%ztE(xv*@X~=95}6mYygn!tUhmi`TQ9cc9gC3^oM%noV37Tb;g>P@Xw~s7W`bN zl&AcNcQ0@UyofgsI@Qe*#Gmy>O(gV8@k_vUmHT>Pg<0Sotwyl9!;_kPMJPa*vABfy zIUqp5bFDHGI9-K9PLx(OQkQ6m^B_FBXe_rN zgNpvKrb>*rgv|&I3z;W&+WQwa?lL;ERIS$rWa5 z`pb(AcU^IkLfc(`OLhWrrV7~c>lItV%)aYxP3uLKkU(K({tEj)kCv75--U@{H3nLLpoO0eK4{;R?dG{ z=zM)u@8{PRNW_|5<9Tw&4bd4ViyjxN6}|g&QWC``pWZDV>^nWNtSEku4kH*84QYXV z2;Yd)9aA|3Sbq$085!L#t=itddq>Fb!Ra%^t|+@1=RWvly0&@NyRwJrf0Et{5Q>ZU9frb__{lYH8Z zLUqyT=m(2S?gk{*zp!wklQUB27-g8BxgrXzP@lEwJs41k4@4I+3c&Ub8Q>&t4lnCYe*Bw4Kdw+ya8ovqVhy9E*Pq2 zC1hgk_IeAo_`B*7Pf*eB1(R}wKF$SGNXof%ZJwZ;^ZX?XKdYkB>H7V3t294mkypL7 zp+Me-C#0pV$76MTQ(QSpL?j=B)p->NJqdlOM^BcS6qOaY91m=D6n?j|OL664d^-x_ zI5(f#<#M*6h^f$Evn!=iipoMG1V$z=1ymFvyVEI0nZ;}KYoc<2(vh+^|F)zBp zc^wcvptunAK$r6CB)%wa=;>4p)#idr>xwE62-nMdQ}WgTb}8_8>ey5r<#_DgNN9Ku zo`RAub=$92DM{DJ&5e)^Y#cnJclD7`QPLG<9NX_J?3(v_zkePav|T&CWwvX!gQ99= z#6Gm$6I|psSQaSY-8MvlTwVi+-(AIJ(c)bC(do@~KlClxV)8$|WA~JEa~L?y_6~{K zySu|9BC58nW6zHNxt?VECMQ#(LSg*zCla*|A2b~E>ADUgN-i!!1sOxbY+&aP5~1GR z;d9s`b%U^;j}M~WXJ8e#W8u0ODS;sy7roH_g)}$<(u#_%SNdpVdLWqwLAo0{kBur$ z1TL(EzzGqG6TYCAP4o%<8QAIM;zDC*VzPcFu_oYlhKq&ugLcx=%h_;yC^s`S_@E~tZSR6_W3qm^Wwgcn<hi0J!2S>oE|T zNeo?NJWtk#n1IFho^KU?hp6%rHeWXI5yqI!9QhY z=4R%;!E;@-tRFBC5g9EKVX&<+GO9jqqe;`DNz;YaODuxuo!PI)aslqPFAZMb8)|T? z{3a|l)z^%|e~kW)@0g;*p?clve2r+8DLkx>{QQY_?ND9T7?8MUkUW6gqV&SxDEMh! zON-d*EkKAw_mF=pf9JdGokjBrBRdZn=nv1HFsjw*goA^iS2ddnpZpx1NOswH^X~e4 zZ`IQ}%ORtYX_`7dKH%jmt0;MfSufStXt;`WGO-2%hOds?DJwIbAUaA!FNMkP*3ag| ze)q%H5%r|dP#=z+K!zu~O@gyQ5oL=%8tPXRL1lqUh|xj_dj8Ecb?4pd_{^8dS+kLGzp0lbLvm07t_G$U-I%!mBa*Rfeyw@-MwndmJaK2pQxv{ zgtF{P`WJ%E?*L!Mz2G#v!+=;JSR*kj#T$#!`n)SuP>=oZPD|&<#X+_;?SBq{DfoKh>;(Jai$2CaAWj8JrihSd55Q|F zwcu!ilGp(u0o~b=0s)401A_u{!)+N3=t6#m@Q&sV>N4Ri_6Mz2?+cg zeeOUEq|A8e?kgtE8rbc#0@28ceIU1%4b-(zD$z$3uMF5U78e(>(0s_-`Qh**`d8l1 z7UT5fWW`tI1TzUvB0qyp)XNNi{yJUkz!3{@46TO*xbS2O)BEyLnI*Za2VW-uB`^OmQ%$NKIY$i%aK8lZnh zWp(5gDS>HfQCOg=q}tNlNkjL$UT*x{m*Ne{a9Bp$w6AzeLZ_=c8No41FRJlf&TWyV zUa7`~zo!RdouAuBo4isX!`zz{5sAxTHY4aT90A?pu-r~TV;&Rz{z@@si&|JxUzw5O z2NhYK^uj{?r<3_=26ii>v6C8xvh{zsGPlPnw&KD~48;Z`(9)m`yUK0f*sP$(ED<;! z4Q|(SUd>bnTd(Dx(eDF>cta;Zy(vAZ#FJbQmWEef63RId422ENE|K~75P>x!u? z3u&pMz4rl(9X<^jjrumS(Vd4Qgd$sj2p6D&7@YBCt~i!}qmycr#0vv_meTg$B|+FG zM%U|=KY5QxOX67h8F`K%4sK)c+Ify3G(6s>d)LR@<|$7uu!i)Wa57yh9%cb0ZeGnX zGd**^SlxjTL+^ojx6daDYUHYIL05P(o3icThV|68yk*p;nB=Vm#&VI5xEN9SaHGpM z+-yi5Sv?*edv3J5zf1M-kpIDha8jljHfD3B5X*tLsCPNm`*ZkNO&Az_GYZN$dT}mT zKKZNPO!_eRF&I#^yOtZSN;73wdWWkDV{ELgx!VN#!m_T+;Ce)f)iBo*K(IX~w}D2s zvVXii(`fMh;K0_w;W#yw`Vj+68chd2mETbYu-ltAxJ`m@NdEi)zTA?A>tL;e1w&5J zx-}*#S8`F&3~-^Gt&x^cQ(x=pJzPE@;^pOiNd>F4pG%Vu+5y8$4uE<p>0A&rcLl#`wPQc8-3YEUqpdd2XOd=`jmkMVy;gka`b zc^h6{TqGaPX7t0QU}tAX*c;i&$*DVmd!VmRUSu9qZAs>4S7^FMfJ_;^jJDyx_`8YL zNLyVYnHSDSO_5BOcZ}x#4wHqLaBhpW{3>VZjpsJI6LHUfN|M|4q6^1j2H@M%{M~ec zM8Uxh1-qRur7*}?>ub)|3z0aPzGc3>d@G!dEGi+(TjrtO-TI|;g8!g?q)4L-G^QRD z*%;rK&m6XSxwKx%_CW2kAd{frv#W(jo3>dB!h@}tOQ&`UXa>P)!^k2C>nc%8$)*gs zdS0j?7wRq2ms8&{+F?UOt^4TcHAU&4P0m8qriZ`VnoGOl%G2Ag57qArpi}UKh8)L} zXY;xA4NrTw+1T8hH0REJ#L$}qN38M9vEM|{8sIoNcnTi)TGL_heOM;;55I{H#iihW zKm4;^-Pv~2_2kzWYp}{(QASFuPb`m%yt~%VSe%LjwcOdz@63vS??Mdm*nOe}fr3u& zm5~v2EQ4g3g50XPwv+u|UqA?vz=VJKeQjx_rK6#NgfGvu%8Q8vO=`-9CRgFWFMQWC zKFeqTVh$;LK&^8DuJfcYbVk6orCgfTzo~#j(=4&Y2~9HMzP_&7NaQ^3$cgO_)=)5S zm62#Xenz*p-|N)(I|%92xBdI^yXrJOr2PtEAeS>3t(Fs0IbZ(e$87USD?14Em3pz%Oiq$oi&|PfFT1~j3*!dB>^If9U-AHjz2el%0lJn52XW|rWXq>j z`6Q|l@z_4<_sYI4jQGIO+IkN*9GAm0KC%dG+vEZvU(cvt8mOAy@|Lqg{RzV#)@~Dr z#>K_?`Xc$?T19L^XGC%8?d^ptAt;`?O8u!nE%-->X%P^-KYqLgh@H>U?9HNlBBs4{ z&(+usx(GQrIR_c}R?$oM_V=k~X0PGyz3P^koX>2NEcYm|UT7Dxqac{>9UXo0LY5Ai zp1Vh&@UIMVB`hLB(>uFrHXS4{+pFrfwklQ&Y$YHP^YZL~AqXscJU!0kY0XrmS~c$H z?Hx9-eD%Ij;dPyVt!KNjR4TD9Nln9Q0=Tl3Y(H@^?u15aI=cS+SRrNQBeM~goK>RV zrl;QFO{qFCRG6xbAl7ZOzVht`C0Au`^u(*C5r!#?IZTG=$szpqUY!j2= zvD>u&o5qYn;1ny;1-{6bbGOQ1cYWyr$fCWyl3Yf~yr`!;?pq}I*xh(9WGkx)UAQA7 z(h<#%;qm|s*W_HGs@3s~wDA2Y`EUb^xAlvAc2Q1bHBaNBRlXbS%Ru<3+UXQ7PjGA{ zW45JS#QdNV@|4%KPY(|pKTgnvIPo^mm-(>%<%ZilYQz&<_=tz=1B#-WzV-{%O(;kk z2IGDEbKyUdE3wd3_a<}20|okjID6BFo4X6oO}S`ADbhceYTgMX<97W2%Y5~=yb573dVG&|OP^1Zn zA9;K)R7>4br1_d_wUe>S?S zhrdRJ#%C86@+4-3L=kH`fK~%rK?})?nvary}$2XpwM7BhRcMsA@3^F)H`PBui zZcibK^aI#5Fer!$SyfHVx&SYAlo2`l=9Kp$kWjdDkxNQ8+z1tJN01Iaf+Jgsn-G=A zZK|=V+FDE^7N2MLmM3Ea1Mf3271gBrhlE`3%!xwGp6Z?O{ydKh5V}B{1Jo8xIQ;Ly zfdTJ@i_`rZHZuaG8v1ZPSSk|kHzzRLZcp<+eCT6SjqmTeHpuW<=U<`6$0KUgF$$Z9 z7AfjQ=(q4%=LMN@SYw?oCD+$wp1Hc#eUK%`dhmd4b8uQ`aFDm~7#d;vM|kaQwL=QO z_11gf5iV}5#U>~usiJ3dG$S9otkDF^uw&pY0=~+|oM&be3SZI@3x6bHCPLmo{a`yt z%Z*~+ymHGiJyZWtd#AHAzqn$zLGxW0Uae#_9-NzE0OgRzkUuX0h*~m97zB;eyjJ7)D#Y0@d73AZ?ae zre&spL}-KYM+giw7;(F|f$6SiORX z-hYjcR#B{q<+Uk^`a43zFT2If?|!5+*MDdU0$!p(g+=8iv)=2ENglsKd-hN+@D}y5 zq{$I9)1*zxc5IGNtOjO0P+g9%M1hzS8L4ztG}HP|@y!^ohT|N;+fqrY zr9d)nLY>K+(rAAvsh#ZPpeYfREZ<;!mJmNlQB6BwikF?ne;OqDuy{M)P66nP84Fq6 zf=)5|(^YkKUXSlP?sL3VP^g2r-6L~wAQ^g#-u7|yi%a5je^_5rFq{=<^R6n9zF=(ab6uixX$mA>!R$wezSY-#`CfOuk zqxwN^H&B>-6B6J#L-J}aay<~$Zblwh<32KDq2=0pyZ*0 zA=M~7|C7d|Y^KX4uJ3XWW~VUr5y~=b+R7Gv1mwjoDBxHnE!2G9-PT!a+-yHSf1kcm zlRtPY2{e&G-bO#$R~}x2WnCe!^3869fTL0Ji8^y4{wgl#lUaG356nL;?XRg^YSSqz3$Fe=T@(oS*%$w9FJl?>zEA&@ zmVt(*Ag7SSb@INZS;2yRZT|pkeWIgDZk|YiE@JfAdJs+$!Bwvg);`EIog?E3d}a4G z)z7{x>FtkaOxRBxZV2A(S6>b`BT((mRmCh97>Xm68eMbhC%%U&n#XB+3}JgW^)zpn z%HJKX!>e*6BqL9L>V~u-NIMvEPH>hQaHOQFtyap(g-+P)RMq(JfnP8tdr(O!+XL<2 z&qK09^`z)V9-i*O9Wv#rLyw4)?qt)++cE0OjXrs zwcjGJOVHzLa%4nBTbtrbFd?&-PB(k^{_%06+c{`rN3iNwbJTONu+&&BAP-{IoqTO} zevP~E=KAUqJEr2I=hj!GE9p^ot+nF*J-r73{!+qQ|N!XHP+J8vprg@J3Ks`ZRVV3=bXgk zZzf0N1OnX_P)1uSUc)4a#<`JkXJd?Y5kk>JDJdziQRyCK{5#{^!F-pT6)-)kDOToCc~C5-k$b|G3g+l+jpMFxuDWe z5;r>Sy6Rz@{L*H z+@F+^>I@AsA&|ul%X63@|Hf_R z+U~b==_gaD!ID($setnoz1%OP9xh4}$MH72R1b@7yQ477f>ytMr%EH`X^qn?`7pur z$5%?wry}YMGz9wY?`wj#I%>`aaN65EGB-OJj0sRl5cBah<0$-L*7RZIDhHw8x+qnV$kdlsgHGkZYrwc+!{tMw#lQ=`mgUhBRlg~Uc$#- zevO-zPPo+j0726LiV11_FhtzUXLS8|3zHvJIu8UxJ!#+LCLxpNsMle`=TZOF0?Gg$ z7_O+WFuK02r!Lc9h(w2@~Ca7Osu^?TZ7mhe|C^mEqZ^T1^}YM^!Dr|9FaHa5j@ zD7uKwAI~o=D|_v)Fy|0OIqoxcsz!9H^UX zyFzc@X2W`~mSoIFB^Mw<8vccq;QrQ3{Pdf3m5-mDE}PI2dF(kQY@ETt z*p+gr8kN%J^XuUmmcP2W*3~k#in9DQxmXn>^#n0lm3+S98N(g88V|Q6(Ou+{@=!MR z{Up2e^aa{;f4mRM+=uQbtlJN!Eh^QLy@%9X|BPT#w8^23G-ZD>{rr#MbSK3smc`1} z>eXt{L?NK~e^Bvs*cixEJ08+avStQ$c68U;543bIq6(fHP6S` z+lwAR--217n(&k(!2=%a_GPki^IAtJa`fk&zr0YgmyrQe%~kV^@h)*R$?~F}pcEeD zU{>leNhSqppCYIR1?d_+0uZGfEAGVEcBru1whRAM!}0fA|M^b^E`L>J$a^cJL%(CK zAwFeBwE+mW-}7?u97SwSD4>L z>h3NuNV3TNh*Htusn^-3an|jQlIuNY266FMw@cc|DqZB1c2K|Z)n&OfVq4~`Helgd zPjnBYHgYeLDCxH#50j9$ck>>JCRRbD6WP z7>mflkwVaYYozrZ)y|nWTr%if+X@+0ogVSAF-NvGI+G#^!>%pnP_PRMW15qA|F<;l-P` zg!RhLJPw*DaRw9Y!lDw_JOkL4kEJLDkW_4EL+hsmNZ=O9y8H~?nScdu zQ!q`INB;rHlhh>=gDSj z2JqgmdEZjrQt2|j-6Q_hSyZy+F0=_4G919Uknsh-JUV&rhbhMO2Jg14^bFCum9gf0 z6$iyf1WR~$Sg0EO6{b$wDtiPfGLq?^W3E`JM`Jc-N zeQr+=ZD$jCOtAMT85o{1Fi<^ZNJ*y5%1_VE&$c`mtQO#}?d$yd1I8VY%Wn%J?zdR+ z+1Su1tYcv4n5nk6Um0EfHeRV&t(OSNHxT?6mk2D8z-|AzJ2Mh~vBJ`CD~N37%-lqmhx`-6kQAMSBXRm-k3mSLG;yhY zOB2XGx~{fACs#LLt2LJ@V&3~KSNh>~Q~1Khnp5lUT`^Lz=}_m1?*_XcQ*e}&B2vR;zHh@wed9zs>8D8P|8i-{2< zafJZeUGxC9UW-1V9HehQb+i5?)muJgDiRWV+g_JN^oHbp$_rK&uev^EPi>@z)!yNl z^$ow?mzPo9ImkE!*O2FktFTfJAFV>PvSN0YfPBsq3yMbJ%kJ1yY`I>>$BZdtkbGo` zY}O08cQ8SvG+5@RfLVoDgPf)4FeayVcKi8X7o>3-MC5Y8T!azcq~T$OqUzdV%$pR^oS)G_rjWZk zw6!i`UjD-QkEhKT$!#zpA)!?h>U65I^xV?7tC@r z$ItKGyJw>0^?OvV@m8vMQB3=5A3-8;MHv?VD@DOzJzBUl*E5O%wJ|s*8&%#6)dQnn z;lVZk5HKc57k-5{Q}8?El96dDC^WUTjX-Azgb(|(ARX-L>e@drz;N`30dlj%#Kc{` z(BJ@FL#q>&Or_f$AYwz0r}NQ92N4)(iW(a|l$7v5P6Grt4ma5Lgzs@)TyL<6{A<(m zxqkT1E{z!1ifv9V=uS#O0nOwdp!7XrPfSb%MgVj%!|WA!t-uf=Wi!O`0&`e(b#)LC z>kBAj(COp{r#o~}%+1Xmn!W`VAo5%$=4TeL5`ED3H^9KX5%%hx4`I@3F`Q4d7zq$=NJ-2OLNge+hg^;}82)5} zEe%|C7SnYpOg_U1o5&wh4kJo9Me-syHcSuv4i64aPEO$UcOpR(9y;Xu zzg|?Y^(JH>7sRsgNeejxBF87TYlC0x0f!7zW9!1GH}djd0s_*e;0FS=AE*TI9(?`! zwLq;rm)#vv$m0aqjZiBL*Fp1B?Fs_3vGByIqsnRl zSSe6Wqi12Uy|g5*oOTfogKRk;WEx7!kISX0sb2r{TDSmt{O9Fv>IG8deMr#IzChul z+UvQ61!#r?i;NMBJ=_=t1(R5xzaepK!X_aJ_+thy?Gpo=3b0P`@$iNs5#Pjv5v2>J z``2lysg`KsClXwMLWimmFE1}H{^N}?#gN{k$FAUV0S(FH+?WQ;euZs`|L8q;JbNvB zBSgIY&pK71DN*~!i1L9ML5RLdg|%<>_F-9e6&F2cPxHQfK@#AK5g$K#a@X;4t4S&A z>4e#1#yze~T+Rk&$Uhm+n0x8)OlnsDyJlT{laX2pso*j2kU z8r+8_fqG0dU5u|uk?WNHeC z{{Sh{BCZs*N3in(LYI;D@nflC^kG926O&?q%ZrPM+;O`b47qmaC>owcuJmRxz{{ZL$MB!e;3puaVhq8=_(1SGdwFSI z))%XFI0r&kePFPhqu%{rU!iJP%ttlu&2izk$9cK-+k%Xb9#%OvELovQIJ#fNboF>K z(bLOH1?Yd#8R|zG8><#=lgSzl>WXsa0niFX6ScC%uZs-mfb;(YzN{?5ikND#}{raS{vjcvP^wj(} zz>$gk?%Ky^#XL+Mh!T>NGBQ%+;GnFG^8kkWH8-;d=Ls{HgDw6d$T^IW3oJRVA}{B_ z*02R-<*-Un1W`^xPZS_!&u+@OKY&*-c^2Beg=Sh9P?>@8+?->-IX>q{M@dNu;Vp}q z29Q3XK@qNJuym!!Lx6KChi^2VgMdp4hkcL_gDECgR}UXD z@?61WxR(V&ghXrWLFDh{-@dV3iSbsA#;~n{)e`$FGxP|J$f>}4fQ^R@UrJsI|<3dKfW;aiqy?Ku+6;^nvj*hpW&y2Ob$2C=c zS^oV!oIh)oh64KYhCGX3!jN^Pv~`@Q$Y|M z026mKlXm9i(BL4A6t4X<3MuLRa)p}J zm6ds(@-F~%ObWkCvZq}{CGUGSm!RNG^Zr*KpA+cE0(1*pAHOAR3yI|`{#Of-lzR0i zPT(u69o+UAB_+#hOG+52sJ?J#Klcl|dA{?!OP zg+wvUcXxJrudi7b)GwVK+OmADDq%w18ch0R@U@(xXt(p}C$o6v`Ft<0$rLvZNB}ck z+%aH!TipfcC8F?0!#v1TTGQ5sMAXzx-H3?48aH+2lzAukO&N zO=YQJs&T0gA^z^Xm`GQ4`d#)TnHZaIhcS~;h}J4s{&y>Og>NCp1=#V3_>C~OIw2sH zax(dU*Kr3zMC(6w+*o0jRR%aF$kJIybmht~w|_3c1Uys4j$6x$$MVtp>pwxABj(*q zC#Gv< zNL0ebBP?^Uv;(OSI*!1EB;d5CSBIM;7zhSf6cm*4pi1n-RA8mE?CWN|j_pqoMOm}R zWFYx(`eVoAg|%dEe4A)ebkQV#eRAE8%Z+LZx4V)`FzAF2K*3B&ZLR8Z1>FlYv?o%{ zFjIvdC55mD;0w@{R_&hsiEwTU^r8u!e4tc}kStRO9Bob7yeu`ifQR!T9j%0zSPuAY ztfC^L7p_5+gC-D@?vTJhz4ug|D;EED7{9=us4yCWVQE4g-}nS4nyPzMCHC0t$(p9o`L$cOhiG z6^9u6B{?*~q&pa2LvIXB;KWGRFw-Df5P<(QbqY?OFYBsZ*OeI&y@!MIaIO%8!(zN;_J{Y)MZ)Q_@>div$L#EB~cglm;QV%CV- z^8Aj?q@;CYDa5Tcu>Yrq*1JyOhw@uCwztTUMht%8^Yae?J#$far>&E-)W#Ytv@cI$ z@-s6pP7k8dRsr9@y37<5{AJr-&BoNvlIsrd_D_ZlWtbsGQgO&?Bd= zp)m>7AaGtaq;BNWhjb4kAD=6XY!2pNBm`|Zwa}J$NnBS~*Tr&EDsnM0I0$Ez%>UfU zpu#5<+Plfh1u^FgekK?NK0 z3tMT`ynLvxS;rl!1z_TlO_Vb*KI@ZH;kLPw)X|Z&G^{eWDd?kla`*1tZwXWEL#k<| z5FLleI1E&4%|hlwZ6u|f4Wha~;dMpC>Y~{H;J0cOQD*#Kot`%Ocv4%!_pNrn1Sp$E zL`JEVIEP1lat^1HmLr|ejE7~DhKXq+ua@Dih=kor3<67QCplw-V+(9v|I~>hal7os zP06E(u~?7(*o?pFQNkqQWCdF$EI*NvPvY;`e$S41>vMBshnv8Rh)?`A3zit*jG>YU zSmk{cX6kSQTO$A^08%mJFt9Z{Z*6V{Hj3weub`env+scVp(}yD2`iSD7avAa<3Uk& zHhA^ZvMC*)+h^`lJF5_}{$BOwd`i(sLhPO9FH_8Zssr@+(Gdq5=D9hAM@^jXdMXa- zdo-RfGEO%*m4~IelF)b)*+fZ7ehwk&E|G|hiAYU9aT*)!7q_7cA?Xm)AH5=}eg1D# zBbMPxbF5-3)RBMfw6T)X#ShVBmOQc!8>ZUm)EQV@`m z79=GkB?LtU6{VF@I;BB6B_)S$7$imFzd7%D-{1GmaxK?72b`JbdG7n(``TCZhpidn zdw57mNnOi+h{v1=Gh1I7pS;-;aarad6TiL_`? z{uj`xARPUj-aS__uqb1c@d>VY+m_ibb9QoA6)-J+OXA6|XTP8lmw3V-LJCp{;1_#O z9x(lQt54nY4jX6jld)lUxzGq0+Q$~*cy>R%M0`r^cH4j3d|W_ z+}3&?oCY0t&_}`%WwO2oHfNL!!Ga zD-_@cXX43Il_K6#Q#*UVQJWJr6(uF>zspU*t|dN2jEk4IB4CgqP(~&X0aB*|qXr%h z-oU2KwVeB~UJDhSKA#_vk&~Y|j9^ETe37Q;r4SgnhG^$e8r-~+9`2+Ii~-6h1o-!m{EKpDX$iYGZt!q%->iQ;rl*uV;*EvyE0V6&0^73>UhMxOuDFwgEz(dx=!1&UHhNCSaH@84K zowTSn1KokDcnhhd)Hco}E*#K-23iMNhtB1R_h1e&!xv!in(C2?>KLmH-M2Vn7(W4i zRqeN3wKbPGVqs`PhI{d#BbHv_DR>w=gTK-cXe~qtsJW37y>-RGs!DGy{s{?$ruy8G zEyF4z?jypXMZ4h#*qId0dg$pVd=P!q)pKJZCi-s0X4yyUx)Z=_Gcv5Ah(mGqWdgf& zV7Kd0o19y)y?X5n^aX=p?&tp9ynEDX?Pu;s9j>Pw%RhgXJRkZBegH5(_HKP*YEkj& z_aA+=ODZZ**jHPE8!PALbb5Yu@jbSAFXW8=W3l#39x6`Ndyvd{DC>UG3^EQk04SL* z!oxA!V;Q7uv>Osg=Ir>)5);pCyLvhWX?%U&voS^2@%G3yD0_I&O;Ka`9j#7e19S{F z2Hj&No5ylKuim^2Je-Q3(Wos?p8;gDe0XH^o0016k&%MLXDQrS`Jj4!G-{)Jhi;#J zB3KhrvSJ%5Dn2L1d=EwgZ(#Ia4R25vaumF~ui!{#1$_M*(I(!%=j??vL`7X_9yk|2JIk`7GJG)xjt}W6~R)BU-T>09uqS&KJj%X;um6Cr)M}O9M55J39 z8+gyyz`<$?Y&`V!&A7R*Dp`;-QouxLvi_@%zJ5VUZ9%d<&-WLLi_2>ct1zJPD!Z6=}Njj0C}X+_uPtY5{Jy{={OKC`j0?e0<)|30%Zolh?j|8KODS+h9F zD!?7!D;$b*m`?I?Z=fjWKSE^ILZFc~kl-aIB^ekPw&u>y>ne4a5u`qQ#)jofZ#o(a|sHhi6kp1{JRyiT4~IRRjk0^1X~kO zM?%u)fA>dJH@szHLQ80AcL!thALWNmGfbutv>+;9Xcm6jVxV(6$DtURid0GWp2b}8^ z@ZHXDz1P+s;-Dls`y;y9`@i>xpCk<=(01&~GkOK6#<72sX!7WNgqHBN#+IM%=W0>z zR{uUX@RxnS&Ai|+Uqx4FTr2Sxuqqn zcNj0g^dpW=cpWv@A}=owN_3#P(U6lz$HjTMxpj1P(Fxf@ew;G2Fp-hBAxbvv6O;iG z;^IwqfPeyLBHP*@g_KuOX^WxZdoSWF0U~mCc6JU{X696SQ5VQb06V|I@$oCLGYOKB ze}RDJ?2HWEM~5#M#GmN_IyDU-;YUe0ji(@Ik($>mios)vD5TJ=dVXy!H!sh`;K$F# zF+iH#7gT_kbp1A@Vye6E|Ea`5v6ig(sS3wqmL^`JN(N3TzP5$zCbJ$ zB6ADa=hxX2#5cFLhzJSOJdvAA-AU=C;}a8r_m<`4vgv4K^b_+qhwNH;xbMThnjQT;u*#xj?^ql;B9Bl07xs{bKnVJ7d zREJxndGk4FY))rU{XJFxJhVvcJJD%r$WR=Tv^QZ95xSddTrdEcnVCs&QczGpW`6ks zNz#Ifii*eG9Ua$i+;BHeTpRuRAt6BXbjAc%$nJ3veVqpVb{7N;>_QFo#cp1%w6;@>M`ZfW)PGOfg`HvskwL*B9b=(VJ z>A|OllV`0I-elkrHIK z)dKok0qZu18ASO9k5tjTa_wlE|Bgw$OhtBXo zxlGs0iG~>8{Q(yDSGl>>iyIDPj~?q78b<68u%8U~&4gRzHg*8Nu zj{|g@aw`7+D~HTWLP7|*=qL*^GJe|r-FCOWy;kY;^5r`!GN#Uy`Gu98ftfHtl>B#V z2#e9Zr)OMen;5Qqu|3^WW!2r&qhgWwt<2`(qZ{QbPYbAJd$r_m|#MS{%cEks&AGf=hf9ID0o;L#Fb+{?vY2Pi5^j_*Bg3um- znVLQ(zYh4F)iSS409F8mLeD)hR$S4@; zF9cq4CD*1DfEnwL37L_xj*d(Bf3C)K#dg!xwZn}^n#@3{toK>7o5`1?V394f+&)#N z7b$Sb{c`sVw+dygOa9otu}{U_y|ZG=U!u%a(kU71ab7{e>ARynnL7WBPc7_hk5sbr z3b;9D(p5vx!bI^&{GxS_iT61VwlnX2hOYtu3SP0UB)zJQFS0S5rj~6d{9hfVBZcfUw9Vytkzuc2VZ-%H0I*V9?*guYf1O2vNW-Pb4Lh=p{t! zI(34nhCudcX_@0tV~%4u*YbPcg&rx-448C4w6V^=$7K+qfq}udZ%ooP-r;V09IIO= zL?RJijWQHnc=xkwBah7AC4e*Q3L~HQ`nU`S$6@+dA`DH2W1XkMa*d6}y|SrRF9^>7 z2UVcC=iRpV#-dR$m1f?`3X}w~D+B4&Yz&cvd`~UBwj53Ljmj*WZgGCO+jS>eKeTCJ zqIltpkw?EOAT^(3ozF;hiO<1iVXh(L*|XQLl>lm#%Ddnv>|b$ncFRPC3Uy`-P-TZ(NG+w;sv>FKis z(TD2=pEZo;hcj<`hlhtn#3v`Dr0Cw8fs)g8wq}$0*zZrYR~ZRrrk&Pyll#P+R9HHv zRvjE2EPNNgnln>VFY-p{6~Dj^_Fyxs^Q|!ZRHe7%m$ypCnf76{qA-oQGVo12=bTIK zyZqRPc*W%C@UU&H047ZvqhB*Q4Ut@xP#)lrFlBxItPmrA zyRWe^*s4Dh%rzAF&0wBB4FCIJV{9l%t^i~MFTi%AuI}m1OdVMZoDS7tL1r%~!6Kv7 zYs1jk_!peJkWS5GRD`BO1R^~7P zF)dIQN}X5k!}WE)$;P(cIb@g8+`zp%))-B!BfKy?`xA$HH0lipKm2iYOeujYuMC~&%~ z!a2^`dLfC|G&Ez5+(PzZ`a8)$Gtn&(?{jjRl}F!?n1bD`OT)8`(=@dOJN_KdS6bBW z*9Ghn;!FCjZ$1kcy&@|_mK8N8y&o_#qQ6G@L3C{9yB)pxRzxcQtQy!&mTd3C@`&Bvpkb2yx12g1v)NY$8%4h5e1jrDx` zveE+O!T0JJxpaV0`M5XhKZt%4&rs6)+$ZCHnzryGf1u%TXHxS>r71KLJg8;D3LFm4|wkFS16fpsAZl}gz1RNp>A!&3Bl26oc-;Shq**`d7oszqd@LH$b&jeD80-iz* z9RG*AyAPbcU-o?e^b=tXA4$^ZaJF7F&27$qX5kzA9JiZ>I0KUZjnUDRfR+d%TZN3$ zv)@bkz4T*18c|5UBJDUH_n~i;V8zkVaR5O`Xrj9rzR3HHX=9Xk<<4~ujJx9b^nlIw{$mCem9ml zSYMWBmI<8yn3#BXY*Jc_PgRpT6q_>XH8@n7i@9n=hMapWZ(>b8{r=c^t4p5aDs#i`s4v#tnWc$ z0+X#zqxO*D`@B27bRUe=7du{-bKr+}jE+{^g&m;MC7eMJ5{boF2;;5@G|$d5Hxp52 zAdyHoW4{`gV$Z#-gP&o=z@-MG32u4v=1PKDqYh~x)=xGB$qsV?2`cLxEF;=Fi2r%q zE}y#N$+eME)1*E|$q(;cCyKDoa(xX`N5cN>*)mE7Mq6o|dIurbQj%ZSj@Z%=r&~Bp zSL9o_A5w6{hPYWf4Nr7*B%D~epuac{Q~F}+?TAmB0&E8oX4?>^^B!YEeWJt7iYDW} zgJt#zk_VqHtE#HFZe9mfI!KlTRmDyrz$=75*N&H@Tn;BiA>0RIp zJh-h!(SBq<%=dvDFe6Yg(3ar#O#6v&aceFb3GBc=3mwB)#BU%* zN#mprUmw8#mE&Wa+U@aN=|zz$2w!`=*5xGzWHPB%tF-j=`nt1sP{P0w4yX&%sFHre zpQsn?0YqxoN+AxVA%u@;l?4XC$)g1z_$EN}JVQkE2QcM1usO)Nho8i5C z?PEJ5;RN^APMR*DK{4t5fR&BM`qV-y0~Z3dU5@K{%f@bgkY?KU0J69`*&$?6l}7(xlxx%I5^|U97DWQ&WQ=QhTv? zY>ej9{{a}64_5!~uC=C{wEPr8=w4#)zZ!PTMYTi1WFfQLD*4&uG9zJ8smSpr?R z<%0)88eiA@TP3yJ3@9Vi#<1M%` zTs&R9N3-{M4?5A#_9KlilLe1x#C@x++qIIC-p;)UP*+zX8MfWv#kz*282T109Z0LM zUai^^H~a3PsjPfMK)@F@AdqsNGXjh-&|2CDNc($E);n8o7)F5CBbebyNPtsbc!F1~ z2`vW)=Up|m`&B;K1!b{Z%dM?hzaAT5=T-i4N=Qu1#tpg}=a9Tif|$TRkBJHpSpthk z75|^-vAxz3Xj^J6PKuhTH+gun$M>GUHWhnwO*W_a@| zedEKz;t2|pGU#X3<&cW@<3AtfXJ;81`uFzw@2~%I{yqGQQL>CtJRk~akY-YM*OEoY zbj?2szfsg*{6G}D++SKCEbf=~apr06H*Rq~?tF=TCrZBqMc2Jg+A+NMt$KIt(tWAan#a|UhL$a-YE0{Z*$43I>r*GL#q2`abN{MYyRZ*k(Oo?S+#BJ05yVVa zId~_kAO8jXjO!*>T%3vdcfXmv8Aa%3)QH`)&iytc%#!u4{^3J?3H|fu&tS+qg4sI%vHW{{(GM#=3ioHj(R3U%-})R{N64|J^6QNxVP;@p zh#+Cs)XMq83II()J}^cBtc$nOYV7Rk$y!JcB3{Llhg>_TvkVOkyu7_5r3lGz9LbcA zwe-5MGiC}+@xL@tV9gcM{vX9-Wp{N~@PqUBIiqST_sBzMRz+>@yVsj&c<)bFc(F5n zF3PzgeL6KIb&@c|uMtV?oG$P70)l?1X~e%1KW+;F4O8T^GV{h0JtqXzx(}hVyXqG z_ay?7e>mHTUf0{FNl)Y!Z@Orti}2gF8QQIcJ6fUH-}A!0)NtEMO-0Jrv8HZ2AmTHXnBFG7Ia<)oA#804%?*6eh>=ZG^E_X;OOX!n3zeJ7RSc+Oq4$&^MOVWYFtGR z;2Iz6l*)L1d%+})e*oaC51>OGRP*UZvRoW6fkc2c5M!!`!M&R?*S%J-)y9YrrZ_ zBW+lK`Fg$MJ)NMNr9}?w{JfQZi|U;_^(%i!qt!Gu`>KjFhsQ-MG=DLVTDi9Qo%H;H z3)=GFX9ZE+a(-=w)zK#mjSoU0vEhU*c0ZzjlsTI#U;B}hlN=snsHz$zzn#8tRJ#*y z#$)ct$i(C|`O7PPgkj>Mu_<$B76%q$`&_{S1>e!%`|*jox)m<>X&4zLA5NrfO^OgR z3>kr+6e`MuX?(mD!eu^jpJZ+)*!XAbu}TIQvs%o=!A2 zBH<|^wHV;4_t~`q>>&M>({v3LqlvxfM+q;hd0N>(sWN(13~gNiH4u2zbVS3cK%yP^ zpu&y-f-Om=d1I>`?qdu=p8rjG39aTces2EIwmds|voZP&a+{b0{i>3a?E&lU z@jpQA25KicVyJ)jWDv?>mLW1Oha}ze(`wh5q<4~({sv?wu_|AyS2nqgYfj#YKB`l& zHwuf+>*_PFkbJUjU}&}VqRgdb6jtKs>H%k$-yl9sh0X)WIK!3GO8qmOSo8L6#P<)0 z?dD&ox~cEpRa5v7`~}|p^=nL-*j;O~2kFbb<$th_kG7?+^YYd_t2?4N&s0ES1f?h^ z7omWMw4}!wFLzfVxTj~6{kGQO#u)ti3*vy@TRiw*7tb;HK6_}7(++VcmiQjY zEVgN^xR`6e-hX87PnmK6ET4C;Ug7`1cPT3)+CShYj6W1v{P1WjrL0^=D?*{B^F}UI zX+8QUcocSoSA@tvLA_$Ot5~$KwB-9|iXioQqS5j@)@WZpu?4p_ni1@dE>*>q`O}Wh z!0DeeYZcvbA1WW(WUbcKgoTIKJlSHPrj~K-Q%A_uM@M^5Bo^LP=WirFaXi)e^;p%?p|vy-lRAoD5LLS6T`X@xp5Op zbQq{9?1kW4EoDguuQ4}JtG zD=SacUj$Dx`}yi;?sT-_F>kcjWWea!@X?)ebn{mtMMSj4(DYGLQ&XlF0}%}$7Z`Y2-E7o|fn`ptM` zf4Yhsaj-Lc+cFP)cyF2X6?K|cl##kYEfL*-%`JwuR^`_8XW-?6A~p$&B$qI0VQO;1 z>(?pID%u}kH1e8nLN0ZxEJ?D+Lj@BFS49ZJ&MaQ|%)yy0*7M%)G;E=;;VV7?!PxM8 zud3g>zvQaTKbGE_x8H1U=H$4RDmJ%z)FTVV4Ix#>DdM$c0=#3c(Cm1)TaWX+JKUCB zUH5A+9n%adxX;9#8kK0}^+V*e^vU!rJq`)&(0A|ncSD>|78m;;@e<8^Z7bQe_~amB zJ#qDPYpie#5WBa$f6w-F+0)bc?$`Hh4So5tqPLUL%r+)@1dtuHzuspjTaS1};~6HT zt%h4UwQ8N5zbdPXy5%R2SBVM~hhv4q$W&n;IaiiT5f@7+?-m47doA zHblKV%K|ORJ$tHdJoWQl;drg{)ch>?(UcooH#xywfOV56NY#q1WWIDDKdy)0(bLmQ z{QKwWSN-2BsX?&jdXfb&hA(qk2o0#vtNx%Lu*@j9yB9|xIr#aDF7d`ETQCYGy@0%BuX{)SjhksfP} znhCyfUuu?%i%UdA1n7?7qhuo^Kr$G;KB=#+J_UW^0G*JC3po>0vHyzgqm7D2Q9@Ty zs&|Sw-mVj6<_5~jo+PH_Wve5llXZXN(QaV!3fr?FuBYXupU*2Vt`;ZK3z4QuIZSy{ zKaty-Ft(`osIv%~!6z?TH?1i0Ih>kpOmqMK#IUtVJre7flv(ykZ98om+H z0rv46i`o0);(Yn8L(5A`p_m|?dH^*ob#JepuAZp#jQi0HhI>VB;>R~%n_jHu`W)Q6 zdev!TIY{D3*-`^&{N@YG8!$Lw*opBKi|6Y_1uM==JX}JvVkbOp+?ERev5Puv65Mqg zYv=0YB;Oi|2|3wFDor$zm!?SD)+p9sD+%@gVgYG9eMt0ua-4*uO!z6Sy}1E1_sEL@ZO_rHPdf%eF& zfpcLc?#;OBje!)}@8*?48_p31Ab(*Rw zj(YK+aCE*#!~hSA!52~hb(D_MM8LY}aDRVuB%j8~KTCX189Zh4fKCF+TnAVX!Zl<@ z_-z1}Y<^iR1OG8V!-XG>#&Sy@JS_8Ax$I{`FgT``}RunZfS+aR z#g4m^(kXbrt0cH2uX(eEbT;^Qq|E;Q{%^eF z^rg7(5Np7Yq;S_$fnf4` zfgfghH}iHh!M1QU+R{rKA~%AQt-+Ad{kCR$*acF>(@JW zQ{{CZ6G&yo-%*&iRv#O$@{yjtFeHeGRQ~a!kn8^AJv99heY&Wa$Z%zpmRk!rp!KhK zM~r*i=q%F9udRFfwO|5O*@RXU8~Z-E6fHWPAaz!nlZ7>^TS}mK7sL!Bd|})*!GWmz zeut|!PwuG5R@*3jQX*qYvUWiUTsykWbSYsuvxu^rw^@x*(k3r)q9~%1=b7p< zKIM7!-Vqu)Iaa98ONxt|HZUTa-vyofx;7~cknS6%hoQScVNd5~2Np`{##tPh>1G|hJT54)GqIUo2COwKeSLUGP2F%dpE7ya+MMn_GKuNu2V zTo7JdK0{qSe|P6zl$VzuZcQ6zj>eR|)(1SiI`!nl?}Ee~J+3e`hlN92;9T57nRFq zo}NM}&@QPXpNFxB&SZ%{US{C{An%9o`NM}|@acdG(AV0E>GKcQ-eprU#cmBH?k<7iPXtQEaZ5EDuXGIQ7vCrTd1R8)wF zVomj2)17=Sl~nss%$Y577u_ZED4ZrV2lVw!Njj$A;f02J_7vw zsJ1wI%j;=^{CO~=Cv*!YY}w(d6eCb~mm>-eE-EUTYl)BN+3{gd%;L>=dz7Oivmav zK^_u;L_j?f_XVv05s!uj;kF|%GDn1x+9ljUVGWR?5f|MAwmd8|h_9gy+6`uu@I;bC zeH?O$#TgzPlz-0>4o1>^r@F!Y+oe|Hx{t643boJ1{0 zN=T&-U(^WLO`%Q_axrbQV5^xwn>RNyF=6Ahv9nvaazinKVlR}wl{Sc-jV*$Z_L*Je z0z9JlwUV`bAi{HbO~ioVHRmpeO?$b<|9R!@7+TOyHCke1UhDPzIoG58bVcFlFUTb> z!O7g-BQCJJ1ql?AURJgNNRGEQ-|L~@%_dF91;!n*o4m3z*3`=SNIt+Uh|sQDA_8*$|5|*PETNLKR^HL z8cYxDK88kGG(<3QHC7h3QHbm<0KL$X5F3BCDrc{}#X_oKRlLP{1q3ZPi#v~Z7YOk2 z8yS(DjYQggz|89H?FFSMsSp#s=V!Q|S0|9T&@@J2ljHlWf;*SkpD~M|cVGpOoE-cq zI2kwi1KjI5YUC&A@F?UWio{yw(gT~es2MZlxw44RqDIOLOd@HPLERcU%uEe8lnr7 zRaSC}KY^hrF4+zp!wRfp$|>#3P5kopbnL_tiCr5JRC=|D-rdk9-X>!GJJm_$qepyh z5#^(>Uqai~=|*y@0rf%M$>VQs#HK>GZjnnpqjwDX{p!O9(~S+s(2B-r@ZB@152$|k zj+W2?(|pZ?6|N2@SD91i2b^vV%3J*WEGrlo7}fcUXh@Fh*Q3T4r+mWeq7khn`aAFU3CT4M3uviWF&{9xOAJ}E=-I^B2gVp)|!^uk)XkENTH z0^K*52F(}kC}9(4J~ULg;PM$YV)X;!Z5x7?3H{Cw-;JFeK9o|&Bq)Uy39E(eA#RA& zE>N@zvrH*s92fVW&Fi%B0iz~NOc;e7DXZ{U?tuY zQ>V%k!m7$g$`iU0OSziJ_)w(b1@v`xvKGeP#YDJ0UhE*Vwzh6$X8=PJjJtC$p(nbt z9OJH7I7gK*09%hvF^ec0-J3Sj?T|?kr*Sm5$4gyQZk0e8M(negvXSsZgcrOl?yQ;~ z51&~80k@vw>7l`0!`(F^!%EGL#JtZcXRVRe3A}XSbMgCGH{gi zwzOnIv_T|s-E9Trm+qdmsU zccQLL_+(6}W=o^t;!rnM+RNg9Z^Y+Ag*^!Ad&^^bWriAW4Tb66rsw8DDvF8O&Ab_^ zL};S~d=atV{jwME6wiWu4Yplcqp&V~-`_v8??(LuauXSIBb^fYCp0v3*hq1LAN~6E zt9ju~qj$&nJBVZvTWAPVhZ$*`4iDJ@%vG)uI95XyA6ya#Q<0H8gAV?vs~7c17QRO2 ztYxKTcTdl$Vr!f$I8!Xb`gt=?C=-;$u*C3&9WY-5m3X=#h&d^k2IiyT(m2OMV`D4p zZdY+{m4c;81h(rJtzGX&%<~_gDIzvNVh)}T=#4o)>(*aBKp{J%aETvcqR3PMgnZg? zasC%h^@c_hOI6dVZtOT0JV_*7R%=Ow-WGbYP@C-5l;!Z)S)65$(M$EN7Nzdljz>ESPn z#-hN_0-cm4KQp-ifZ8a8w&nV8Zcz@G@WV$pp-u1+hAl>${?rVZ9|P%%2r@Z2fG5JI zGu!3%`}kBru$L9?Xz(o%D}n<}0~93?=S2`}M3w-xB$(kgOZcGD zppHdSqBTJkLw2o|M?&HRDpy?GRr~~W1N=UuB~XQYBubj7Ga@l(YrME#Aozm4kW6WR zQiIOr%R-`q9kg8u8N^7Dws6?1s!;}@UJ}uZs3-Hoc>$%4fisg<9wUn8GeyHF6 zTuM(82LcI?I+X)tR+@Q1in*VI6B|54hXngsVw_`TZrHmyFH@|rFsC#utC``z%`3bfzE6wN4V}Mua(3qx z*Vmmx4*F0Cwln4oTra+7jg^YWl*LP_H17TN(+q6aX0cZ)UY`1z9@6{C)5QA5!s9|cnuU63IX*rh1D zxZepb0bOWkCqCHC3ru!Y1FGVmKSyXPUf%aA5=3l>7GHEJOo zTZ(v=r>4x7%_Zq8Ij>#~4n=aJm%y3b7u>VlpW0tXOv;6>9ab4*H9n{dlR2Dd^x)9Q z98=Ys?&uEa_KF%<(Q!T=k^u;*kYIKMA}?V$#UG93>Ww_@;rutBgHe?HnrYUm252;L zY}z-&uGjhr&D@ybP{Uy>3BBTiP?*P7#m2-WRm2*10d0EP+m3I+l4AWklMt15e!M{P zno@}>Iim4nU;#>DmnuhyVg>BoH(e+*99luX+lsc%DstsL4r&A_qMY#PSo}v zs!R=&J=N7U=<4aA{J2f=l23m9-FDB$(MDO#!H7!De9(9Xzs_-kL38sMK^q>S@)cGT zDUsh5Ru-03|Msn-G%-8=E0)aLGj;T~>YxsBr(&#FEkSFYm%J=*;Qcjl^A=L>aAIbdLcvIU$3r3h-4k2!hp36_Y<;{Xjx z>Fnwvf5BvVy($8=&O3YKj_#FmO6DNtYEHK<*G?=0kM2JSz@}lrpt*_wvi0s8_;)4wv z{juZU9v0O5GV|T5i;H2O3D$)IItI>xB+8vEmggySOHWsKpg@@@o(1hPdQv-R-ZVnH zquC8;W%3^oM3(!aX-Viv?8>y09|pszS$+F^dl-1nQnO}M`iW%Jrdn;-q;MTwAtj}~ zC@31G+)~P4&KW?dJ>g!xWnnnMrV#d!3b+K=dnvu^5O|?hoyf>G^YdwZk4=T>qMAx93R7p z5GilX>%o!WbH{NWW2Qu@u zi-ZLn@2}~F{L!{YKir8gT{ z#>HMo?6$vUj=^Q8&$yFIgjrze;-VRVq3-+V_d_5fsJviMquyxZ;@DHm_ieC`ftDOU zlQu%5E^l;RnOeabwwuet9xW@>>@u2wXSXTb^70A7Ou4rvVqm}hn2UKAV;=^BhdZ;( zYY{K(J+K?GJk>1yx!IBh((Z}L;RriX{T>#RTi=z%m7zWs(tnc)m2-|vKMko4)eecXtD} zT^Wx~%=`xrz*mHB>2SSznHS6ldMYJpJU7LFMou)*XYo70uj-&blQ>=_ebNBDd^jp= zs;kpWDQ4M)+(UlP31-B}s79=3US(~whJ#jLw&H62Fn&!rnhQ#Yl|^OW6prtK_esM$ z2Bbc*7XcVNGrzB)iL&|Oio#W6YqyCb3~5SPHI)lx`dEC7YCLC^o?Iknjnqvw?g8iPpha~MpcoDuhiE^2$df?!ISMjXx72sneSNPF*R01~YYHK^Lp3DaR zjoXY=rCvKaI$Fu|D`7c zo|7PjS=KB?R~z<0FM*gKM==wbm*8JP9YK3Q7IJa669lId+T97LVh&=a)9A?un70s0 z81Wb;VW|KtS*oC^*xzeZY{j3>w!aBRGxiP+tP{<3^0HY2B(rj{H?lu0>FS(SDbN=F z&3@kxH!xVx5#I$QdI*;+jobBLn5E(OJCCLMQ`!5fn(Wv=J`s%E_$0DbXB3VXP|iM< z9emhZ+pyvSW&fb_BtY;W(pbn3-C2S?tL1iN>iqL#0p z5LB0&fc28R+CbdxLmkL99fihnB8Bk#b$@_@0mvHcP_pA>z}Vp5lrk1_@BF!GABa(c z7M1+&ow%4-qcMQNe%`^ZSEzSEv7SIR`+UF+O9Wj|fxe}sC6xR6bBqY{cE%Ydz>KEs zfL3RNdA%mQ;Op1v>1iO(1$%`x5lJZtCKD31X&v`Cmqqt+memX@Awm=i-0DGIsfy#7 z$);WA1~RptQ-){eoQ9F@E;m>GF8hb**7bnFVi6@+79BEEIRk%=*iX|?j0%P5#^bNl zE7*i^a8UTE-$=G!MImeJ>UIT4#o~7cpa&hiHvm+i^S$GBlxf8=-E^&QBJt_;Jk>S;08+17D1H3~SOVa32~oh?DSk;`n_xDyGWDG0e|^Y(g< z2DtJMD#*nXzn^!D2c_L)WvBW$)b_wbnWuKyKogPyxX~WG*};=jCLQiQ=e27uM{l{@ zHl@5bh`NO^x@X zwMdgFP^u;{5I6RV`-?Y6fM8>v_rp9sL}H+!(sOe=KL+g1V;#q!9U*!V%PX@ySRa{S zqRPCe0d@`WJtDdxlJ;`00E{pgQMMd;04K}l*%jmam``brS+KCNGlnpxS@^55-a4?L zPmx{ujh{FRs|mfNsXjv<&KQ5chMovw%-fFS!rHtwn~o`%2`DIcNePIp&Db%!t%I z-W@b+=K%_X4=E;*<<;7biGCI%KMOm(E6{#3E0i0C1W&&%LVtQu#nYzNkFhyI@}hhW z(~{%};9#tmbB7FwsKKEjiq)n@Z?aS_M23xn!}I3}BcqVYQ@Lkk&;2L{{J#M_<-Bs47PakciV@2G&GfmX-iJJBEy` z|6u`a@~bjo7pP1A2Vf_P?RJ2VLr^v;+XXid8e@qX*PaWO8iLgjLguIHpGwv`LiYE> z9IOOpLE9c+0797Z4XO9opDuRWnSo%1B?6P;EBuydZul-2PXDU~MYyT!_|K~%MsK;TXFRAyq4&Wh}5$J4R(%nOs87B-@broB# z!<+(g=nHh!|DjMRADH7#2Ob_C!m;3YdMse`xX+&MZ%+eDaT?^j z!h(X<<7>*GK3b(wikyY=)7jbi4^I3ZK_z<>@B@S#ezpz{lC=vIxOEN;kRpVgCxqD8 zo)rY0f(af>`5PI9K6E}4LyFm0--s|*!7+X9jon=&&Vb`tc?(Xgm z=~hytyK9StbZxpz8bK-PZWQTmB&0(+lr))fI z8qng;IHJ0MHa*-?2Z#n5y~#~Ry zoOJLuAqho*YwLoh+W}6rw5SMCA3kS;)2|e)vsz>)a-@BjPjSn&O0XJd={kStC)t|S zHhPoW*5yfibZ6!^gaM4jgMpD01g1V-9b7G z2w!H+u8d@WvsKOKmW$P$|0$TB_1|_Qlh81=@FJlSk7iIBUOSj9Sk&rOcF7tiXQhxooPd`&RU{bL{*a`;E<0(`6-LlFEIU z4zLND<%CA-$lX4bR4=Q9qc}>Y4VFi*3b8}rAFU)q5kBY?k!Et(>dle{D-%|xWkel9 zyZTFt8v}V!OW;cqMzr&1mZ0=C9kU2`1ZT`lRHvEctB8Frq<$0Oq$)ZO^=M9wpt-7Hv@;nMie_IGZE zH;cLUh2$wZ^rIJH;X3p<-Y*0SecH7J|6doga-vCL8l*)69L4mAfh z_Hb_t-$7it6tJmjxc-_=9ZC6FUpo6T_SY=?dhT@i#{4M;0d5aiV&iGzuV30w5GB8z zz7G8&W_Vy@d!9o~Tmzy66yx14&Kr+KEf;^i)Kdt}nw*U&ji>vZ-^v?X#L%NZ z65G^x6^B{Ih6uT`mgbMZiAqk(uJS-h6!bW+aFcoxk%6RQYev(HqMg|MpPo92ys=ljB> z9t{caYgc2x&25+77c=YzpJ7G(Myh*9h{aII}Q#VRSGTJMhvcxtl7 zi#W@6btbLiqVYsT(6cY-T(3sGnUIjUq|lm1qUu+@jb-Uz?Xug*c<&cc!<`*sG}(ff zmB4QeKTVoe$IDamf~$kbXLcTqBVF*{}}z@*}fxbsb~i2S)Xubpp?|V^;_3^YxjO)yyZKK%zqcC{+t@l zpbLxpF*(UAD5wi|RV!xOqhR0#J9BV)llGHF2^FS(sPvTb>C&u-21%S3fJ zYpe4(WD`l{*{X!A2anzp@{Sh|Hp!{c9pme-dqAlo>6B{eOpyf~lWo~|6Erq9Bz{aUJDth-rA zLG9hb*Bmn889qNpd(1`_nw$Rg*&d7z5?*r%`U1cfFPJw$QC`0PQ)=f|$0fKrL|kFF zzihsGzyV+tSP|cC&9z2S3L{>;MI5=?9Y%*y1F%$#&fMgO?U1B|o!?aH0MN1cSxreo zhn-7U ziM|&8Ri=X2(Wj$Q`WiA^Y)q!gT1Rz}3Hc#@Z#bNkiQQ@J?aSaPd&CFSq{I9pRkvW& zFlFW96%t5j*e^U|8E8U2B)@!KHMya7$r80d*u@h`xNVg>>xYG5j6zr^dxq~3c3MzJ z8t~hR7mT=X;UVkJPONZ2wKX~`5Ahy!@XJQbc4>KSshU01;nW!4@JWY}@*Lg|N#4Sa ztBZA;$Q45}q;mt8cbj<%Z5_$8#<(DY?Z<~wv{=k586$NP7edtRFTF+u^&opYV?Tub z9=<2vaCdd_)5h2s$17I&fbeIr8_M}9^^Z<7r$eaBZS)Wg=k!)=@g91sv%=c+4ZJjx zh!=c8E&EHVe@j+>CdEA)cT#HDtyOc1W1xAT{kh5n=B+W-ObEKw&t3^UYO)q)9euFK zAdG9Z1GaPmCXejEPGa-78~gb+!2i1on~Zd;7u(Jo7x8p{8WL)>h-PFpLaW_~O{C!u zzK+Hej5eM$D=EFMKUsR3G1x)1iU47!;A(wk{Ohb3bv@Y&oX$g6WT#G330^)rED>sR zjU2siXReg5F-;}P4ceF>RtzKSugQ^&V{;Q-(?3VViu*e)9&*1pFAJ`^iIZ~7V7Tbt ztR?;$;>l$@Y$~6J6zaIYd1)=^q$!`UUAVfe+GqE+*%n`6)pvKXwe?Ff z-gz;{ppg^_!v6sESF+te-)&?MJ{tyDbBR*M{-iZ)w&zuH1tEXG@V-5F3X8e z;lsh6r`u<}KUT*`fzjlne@+Y{`9|Fri}f%gri{z%`uRf4>8*T)%- zt+)s%s5aAAwD%P*6oiy!z!mPVpMETW!WVYSIJ2cN<9rcBJ-4MvJVx~hF|;qA!1LXE z^NNFA3>k?>$mW%v5q=piE-Cpr-B%BEw~ad{iI!6$;mFjlC#SX~zO~9{9Wc7tcaa=v z5~x`r!r#6-Vj{eX2bLgcXdl+!Sya>a4F8sofzbXLGpfS$(N`F zKp+%?`(bi{_bldJK*Dp3pp3W>r_okZz-QX6mGSq>K{jk?fDT{9=7F0mwY%(I)LSi!IMpMod49BkTxBDUqp!q8Vj-;232z=mra8yM&pg zRN^p)gR`rNx`?_kd$By}t%QI(ZS-Dz%0^@+41}hTMPa42o|*UNGQfI%b!w2CM~HiE zw0^iW?R zVu3fOe~>v?nBJ1pC@rTIN{NxN2Ag|?ord?Px~&yw`J)wh-JEX83bG$RXmo%X>1tahd^id{^8M|({LV_t z!)AoY7=%|&E5%O@bqr|$%}9-fB}e-0vCBd!*;IHM#lE0f@4c~$sWtD~oT z)t3CD??psob#UzH65_W_{N%|obm!2hu`F?)la1+uh{ax^SMU-zM8eV~Pp#RfEuEuZ z42?D6*blBvgxq_Ccqfz<-z23Z((qvY6-P%2=ZxDj@}erQkH-98Enou|6e&BK(zn*u zplg@YEO?x)SV30x+&6D`xY1~v*q*t>%)Ch!v7wK+WPF-^gmVf>N>5A)xuqei72!5% zzUn4eckFaqGwH0uN{)YgKR1H_jb95SsTgA8(LIQczS^CGJ%pKok473o%tox7{_tH7 zG-z|J3d{nt&!4QMw@Xw>&c==C#Wgfscvp#!DHl$Tx~ii}^&Jci|JC2GmIX#^qi49i##QPFE^QiM*F=n~T$y$EkLTO@EyibvbDBMI15_eQkM zPM>B_e5o!hc}M#(fm$Lhc1|YAcD4Qotw!xj4bdT9FKO8!rrvzDVK3!=S`~^#TsxN6 zf}c1M{d$M}BPk*=k3%^IB_xyU>#9BNd?{{Z!imdVHqNV-m)k}U zDa5tGt%R%V2`8RZu9+8sn>q1}oaR*Wz0a?`z4SL9NLoZiB-W4Le>&<2V2p|83 z1#6HM&zILLp_e9|PvF`UhLjLjy6)H43!Z(_WiBq$z+Zj1iu&52gOuF)4c)vr%u~E$89g-Ux^yF zg`?vNZ7X%jxORAXi9rY%#LDJgE5FtVWMgNAvBpKdZCY=Jsl;U$&uA$2k@$4C2@h-B zpFm%M7V=*$g8c)~D%sew&8c!7;sV~2uuU_?v9PgWp~gw8(f>`Rn)lSLI>qKRJpNQ4 z%kiSgLfP4Wgy%hsO-mg=6B}l}9RIibs{?~}qqAU?m;~8|Hn2_>$q|LVW@rFXUs4Ndj45w^zyhR|ETAwKj^^HwX z^f;wM$Sb-;GG*d1>3T3BA-xC9_Lke7Wn@o&ew@)w@AUwDPpNa7plbDGp#4X9`0oz= z-+-Imw8dPH4a3Kg{peX`)!!}%U-NOMn(L}RL7#ktPQ>l3t=}&Wgk+-0FdYsJ3%s9P zem|MTx|eQHtCa2YVCLCOZ`%1cD}8Hm=^*j@`^1@Z*En{?~I;X5I+9$*9&acK6@)M4Rk0!1#$=ogV}3}ZM6fcp2q(rxiL z9BNTNi&mC-ALpa@k`Gvpl6L+6U32~QV^!3QcFKw5sj%y&_*b;i`JzszzFs(l#CeU> zAbx4Z`D)`Zzt)|uVUIu#&x=zTEQ1E<95565yI4P{Zbp3PH{Y=pdgyDImbvQe@7!}X zHOgABNWr+&Qsk{8SwKJ`=AT6Jj2Ir?g|H2)H9htG*9z4o^qld@5mTFz6Z7jX_Ef_g z8-cUW&3Cyx6yGftmic_|n}XJfRmNi1MPe>u(Q`12_GC-`I!CQ!NmdDMZ-f<_J*p&iEG=(~G$kd&e* z#PBN*CduMzXo>Y3D$E}d=VJEzX`O<{?rA?NY7*~Y88t+2Pf}Cf!_c@M4VdKWKyLMZ z*Fe1`#Y!9w{tSr>>E+h7%?_TU%Pf!*A^rYMOegCqChRM(D|o{No(zsQxiQH@)Cgj@zq5o!+XxU)1Dser9A2srj>0&W9Sm$VSY))kLW| zFxEB>iG2O$b@#g%t0dW>)7uW3raLVBGk#V^&Yibhl4vL{0}u3n%d!9G!BG(f9vtO0 z^!md2??>;V@gz_d$m7UJ~%F!d!t+Rc2Rz{^nUl>pBzV(+)aw>~$A2sG#Ao2hdA z(^~Ji`P&e^X3r8h%Fz-h_0`ZZ5R2(M_4@mZcCC@WZH!6V&SF?E-3Q)aP%dPW9PP?? z+)P*-X17od@t!0xSF*uD7Wf~X}&mt-?;&JyBoXz)6WBae0>qK$VU{z9HuHoT? zuA389u&{#&2b#rKy#uC6<*!py5P!^9{u1uje5tH-d~b=>EcZafsO6is;pFDW=Kd@p)4bR?5Qw}M6T1lk0=;7X)S99d+72PSou6~5O&U2 zdzo2n_k>}7W{AASFqn&E5oLl!!1mu;Coq?9#m?&T{p^!-+tqgIEmh-M(PG$#*b>Hlhr}{>X?Z!o$A9=qicfk(KZvx)XZG1OsO9*{V0OZH?}eZ&GAn zUN2{+q@a1CGRYwsB~8BB6MxSp|3}~B0MhDuWQ~jN+wNm|VSN@skeA!f%ye_KNIGbI zY`K6c@XK%?IX#CzKGfvf6?L zWfNt?WuZ$i%uM2UU|*ORo@mk?fskKSUWvjNt~n5jo4%NB`ZE|RZJHR^gy=r$y}&QqINsA5nz9QbXQ+8=zZ!#N58dxo zMu6;H3!X!cP33j5f@S)Ug9yzjy9CzFbKbR4AV%=nrAauM6h_mdd`0M>jhS30L>Yt) zf-%7AgWU)@%}=BI8QCG7{Z2aW>Z%@=7>h#UA;P=Wi0I*_^UJqWl#hehI|D*G<@Z_S-|FVc2PmAvO8uUo(!xbZy6iMDcSCRCGx1L_mJ$ z@5#}6)bw*CS2UL4U~&esD7+w=TE26)BKu&yqM+Pbh2zyG%6@zpELoCnS`J51?p4-W zf+?ct2#!c;Ai_O?S<;-B}SUDBsXbHVab|n1l=mx-G=>yE)T?j~!{K7R-g^mnh?5b#aJd>B2(f zTSD5hoEel~kG$-q`>3foIYd-rMs0yQn5UMY8kHw4B|fAGM5G$i&WijVehkpXTa1Rf z<2V;o6bSeZKrj1xNDVwv6`_5Y?_JNl*x5tbH%c_{{Z9*;!XOJ8oEhn+p3U%WJ)FC} zRnu>XNFp90&iVSx4}ieRk(kyb%UkzD$XiadYauik`QrW0ZY}h8YDnK`(5G{^h>M59 zM;eRO$h@yZ(1kPN-YOSfgP9~ST_|-KYosJ`MWm^)kb#-`gw@`bU);Bh@r>d`PE7%z z?v&S3q?divJ`ne;&k2EsK1{2W7$x&eNOYzw3kPO_^8cYW!~>+~>o$#{66u~FAN zojZNmUF*0U0E296n{FN+M>Y)Rz8-YAXFguO^&8l}$Zet^^FGhpbxD@&(>%S#cu0I2 z3tU||v&$hJQ|*F`^m5LvjlHe5AyN_t(ESmWWO1cQIeZ)WK11P6GcFu0ssh`P99PV6 zK8X4$N1sTz8!EpdluPbpo1W4p7tj4%Fsgc_M3mc%$ZtDRC{xtVyIZm`I7$R?uxpOTvQxAmz!DUy95HTAEUR;T21 zA`!&gkJt}-QT~H-slN0@RPvOjcCs*V6l?T#((0M#%*agkiETvq8`s+PwaQ5Fl_S9^ ztVcYNGHo|LF1~h9sngy3WDOe%=)3=eucJAF4`KWS1f&F&8#QuWh=l8czrsQmE?`b2 z97;l&ZPU-hRFeNTp;L~7V14_#Pr*c`|HL~{p!H99SzULPSi-~g=G9VYGE4?frAN2J zw>T`%UvJ)2X}oQ?u6{^ zv<-Esa7YAQZ2}kMd|C{Fi(#XUHJazg>?9pSLqV`JDCVQ3DMU)&bw3|{3p=eXUF#|! zpdC#rRT_w`PV%@lkV->?KuMW7(NffW@-6qEkt$6{fQyT@KYgIZP%$i^y%h?*x3jlb zRDK>^de%^k;{Byh)1MT6U;J3_8%A?AK z*TmBg=IBW_Qy-cX3U1u`vv)CgjtCBvp{cQ_XtVi6FitAewtK-(zBKCY=j<181v3AB z`&0b9R#Pees|9?+wGc#M;uqVQN?i&P94dW3$xl& zi=oA$H2?;eHOKb4N z+qu)!gssX5I!&0F3AO-Y9!v}XcTRBTK=7-FA zC-Wm>B0^3ebuN+Ew97|iQcsoL7(GV;At6{@l=UP@)9gV~*J$bqKlLsPgm2w62yVBD9i_fWk!Set ze=W_Mb=C>GTt{$<&3)p;qLR=%YXLi;vsB5IDLMYTz~uBc40Jmne|>D90#QNUZXHP1 zaEyJ!xrxrCwyX^FWgX(}*;j|FxV8`HZ&&l1wVvQ#-B3z`acC6z|C8MI4^Y;Nvvi)y zj~dko&W!WzVifgvxLRsQOoy&^r>KyqTFP2I8W3A)^}5x~ogmiMy*$b)BMf3a?)&E7 zEk-2u;dbfekj3gu`M$X}5mF#re~}2>Yw=%m4C3Z_Z6Qxawo4`KW4)0z+=n4;)dI98 zAc%cTRrgqYYw%HPiaE|#OuZ-FWb%6S&YovO|57WqGxXtxL2ptEZNL6Gsvx`CQ|w^w z9e2~NjeTOC5Nlc6y0G&_H?9y^{tgZ>R~xn>Y8=_vD+yZE@d!z{o{JkyAPmuPh?kdl zKi2YN=QtaF_x#q>BrIBALB9ua76#vt(qQIO$9zlNAQMuIc#?p*#bbc%TGttk? z2uHWo^_W!TGe$&Vy?9*b-g-!r|)lf zXt%kv=;7C?JgpVtwAN=U&=w4Zh5e5|=qwT84`OU!l3BzFIaB0fK8C{z0SA0d zaSb72>Ga&fhpADR_c(wENAqMwIK>xR0(IX0-IeDoIf;`9x7*!2We+*zrS>TSb0#Bbie2s=~oVWTCVzdwEC(2`SZrKc?QoovBw)74C zJz>g(k^n_dKE~R-O81|Rl&6~8WP*L{00e00I;y^*qNn*fs`dUcFw-GebEAL7-G5;! ze-EhDx(;v_^1|;@1hZ8X2ZUA9i6Mr%%`DFvf-*3iO2!~8U6+*2@@99jaE4v-&4J%KaTsr5Ar zt=hsk7k_ppPZ9XLd3`^&G#~ad?3c&(L;xh8O9WNZ@9|R3`P11?LvA@nT~|}qlFp~+ z+iQ)+NQD8EtkE5#uPq^z#-W;S{lBr)ec@ePW}c(O_0y_6?6(`?6~<|<+&wU6b-Z^! z9%`dBVT8zM?}q;W`{`K*cJ@pF*n2XJ28q6Ola@4uOd(`k*+|f%OgaG+4dGB-M+2^7 z???4}xJ!|c-TG65s6$%-{7GaV1=G2$DJ#7rir96jplzWF$ z+3Kc_l6!iQ(r#V$$5MW9FtqIKzl**Rz^w?IIU3)c^M z{Hv>J4+%MMVa}-*yv1_IgFf_|gZN6yS#LL%Ij+l=zxlSCr{r@4$Cd*2X1vhf?z--a40+HC++S$FM!l$@1cbowiNATZwHco0!OiUg1M~8|oKym4CACKnyw z*`xj_C}hFTM3b*f&JS6_r&bz90+SBC{otP+VoB&@ip9GhHnwezm8dWX7C8RCo=Cq! z_afbo*GkyWGn>;Vk+p)%x=g_y3jURhyxjS|O&PVgry%=7Q9}cgcb?+ALVa_^+u!!p za&rB(d|t<5fA0mHG_WBr5xrL>Wfg-#B6`dD5kByd=L@1tft}-rNUIgTf@o)nAEe2# zm3&Zs{cyG4(;T?@o0#e<`-`r+{-|GN_WdpR1Du97q7pkjtv@k$8$>BR$~c&IhETk) zV`+VVRtYx3Sjg+CV_!sI-stpWdbx4G?5z_By}a$l~7?T^OLrgV34=&?<~&h$0cbTxszb`Y_J2KE!;i=7+IZ zA(s!1Gzk_SZ?YZR9=F{eqHVu6%{lTNZ4`m&`J$%E#5)wop zojSGu#Q0IMatK!6wC0$SkZ@bWbci$&g~trizPkubLVY!IbeWTembu|%$!khU3(tl`Ng2p_K?3VH&SU}+<0 zj=(~ryl;?d)fZdjL-efNHT0(0Pr?WKjEw}G6u|3>@XD+vh9xBY?t_EM%q|xj8(sYe z^So~9CqJtcxtTMtzq1K%s=Tezm;kPaI*z-R zYoP@F3bhw2-pbDC4lz7vZ?=tK+mw`)l`9%7j9j*jf{hX{*4hH-vvSs|9htVJ490G@ zG^tV$mJJk?L&f0t5t1Es`Zw1AHZY>79NOxC8B@*nF_HVQF(@>1&5lJLMte^&kwuXZ}Ago$q+4%PF5fcM^HCtFy6bAb4u+ z*?s=+k@)}po+XPYgh8m|5c7xqKZDf&ek6Ijgb0nk>i<^O`4eSJ%AXxB5JG-!Zpj`3|wevOLZ09$fG_L3T+uBZjnn z$|?`p2NN6Jrsw0~dyiwl>@(o^awU8;G4r$8?5y75oU80C^yQ{{J5)?s*XT_-o9qx0 z_+99%=;&bKP9U%8UF~(%o;{a+n)U5(tf0aA@If*_%_l#hR0oGkPi8|}_zAJR<~6&w zr~T1~^6^urY{kfBaG(xevx;17Zbbal*%>Pi$OViyb?=pmiN)>hQip zyrF_>dsu;(Rj_qVloxs5Ft&uvX(S%A7Tm>D8L1|Wxxerua76-;*EM3CvAfccjGUbZBdIf3w21F}SNJEF?Hi z&d7Lua_mWKfy*~F#S;p=>L0H6{dy)1kQ(XYHw)z;%>fQw7G$ zJZ`$dcnTK3y+2_ zH7jjGK1~uAZ^Mm`-1i1fyZym#mVhwT{n)1cp=%hRloe%cZjMyq*DogKXXmsB84GED zzF<&e6{nwy6K(UP%WE^OY>(B}6zQZ9|Ld38YFy+I?wSfzhrp@PexorpUmLN; zoV0P)N?3;^+B$gOB-*p(v=HrEKFRpY-c-3P=j}e zVD_P^HJ&4bU+zsM*QNnDv@G17sXeu!bchSe<=I4a<*P1w2gw_t;rNL=@HTZKZO?=SSqvr+#M>uFq(9+rLb0)SqULP}4ud2<; z*K`-`O{@Ra0cF37CaG94!%5gwUOS8$#Z!!OLP#*JIL>KX$={y2%%C^3tnhmIa}L`<`#Z(tH(dc z;Or9s-;9i$+mCBE0X=%#tr8GG8(V!D`-UOB&95L`OMXPaZYYXo;ldaDi($t?u$bFJ zwh>hJ#m%?2N1fM(_b!7mymhEx&zvMYr2HsJA+kY$^JuyCYfTvC+~q@zS~B!zJ*#VF zC=pnaZUgdpqdk^v?st*tIZP$_)yqX$`cZT&OT$Wo373p*i=r_);1$)Z*udpa;B*&I-J` zHz7G<|0E2i2 zLQ*ONf7Wth88RQduV`cx`dDd}Fds5CJIUabXkoV49K-c-0JCC*j~L60u0OHo9|hia zb%8CPHOwo96)x0+`1WYq;2lrKe9hY7g6|{dg}i|VY$4v8!O1-~nhX4?lm|R zq_Mr3yl=^L+{nN;E)*e8lnk`mTV-o;OW3|1jjtSKBV5u1KLwGO#Bd4fR;e=xywLuw z9snu4wGcH;Z*+ojl_bGOxuwTGQKhU@Uv@@qBE?22OioMr@B@LAkW>jQl{++ErHGx< z%VHQKnT4GW>4$~O1}VGo)29#^7}#EUttUkKLalsE;Ysq|+U$37|Ju5&ea3YGI zY+{aceQ|as#K3{~2j_kNSpo6}bEOu2?*PvyVKo?=`WLgQ1cVS^0aMP*gft>0&L`is z`qw=e(ye*)tIVWG&w?de^npap!rBtWeg}XrV0C`ge^7AH8uKMCItjMZN=Pkd@1uNA zVe{U-&EXL2vLZ4~iQ|{|ljxl5&0R1>Kbf6zs5@a?F|5dI2$6xv4xY*Y{pmkDYE6j5 z+Ly53Cvil=G!-3{Q)>8}jgN=+<#AW}#8L=%u=-{>KD({f{F>oU!Ax_ghr-fxr7`5? zEt2}n0JO^~`e}LD{t)&%1RSE(9cJi-ooyr#2?{MHP+1Gy)EsajPpw=9gFvC*DtUPuFu*E7`ZPl)URRiz5w! z4vB~UKAudWldXO35bdfX$QC1Fwc-QMfQ!%NR`_ z+huh=)*8*c)A4LcEKdQa6a~tG*rKd)Jtq)REu)#Nr~T8|d2&V_01bbR$QMf9m1I_9 zD_|ZVlgT+M3^aM{xVYMhZraW^Ac7bg>X3_}3yN$Wo63iM!UX3#gfdAM4BQ%^MVKet3EI$$y_IS%VQp? zIsW`HF7qYA3wf~O^H~322)PS<#&8ZC^i4|2dLoKBYgY#d^|NVGRekjdzEb9#?rK6P zx1tJ{G83e~{ErpcS@eH-oC!NAz@HmltPAka`nVqevuey+y2;$&l6n4G)N#gNmxHQi zvI;MJWZ^?!O&kLA$hcc9K?kt-J^9*xpzfj+-BSJoK<^e~Jy3Lv09ty^*_I*^uI@eo z-l?6~-nO=otrBkCX^29}Q}~Dw=hEqbf2H9!(gw^!v`grP*IRTHqJHprwb;-=A-kr1 zUk(~L03`zTj>p4%IQN8X+&mE+EZr=$I4HYDSnQbU{B{6(E|nRmR8Ir7JGj(aO!s5R zdCJe2U6`AwLVyReh=V|W+t`((xxes2+!q8!KXB0#@uzfQmX`xB z`&Onu3pwVu>xfn8o<6r-cr5I5(^Gy8LmBY|=M6l3797Jr6fql4X8Y6=mSf^? zBqCKg)1@#2I()9|w&tFM|Hv1^i0`$L%Sa>i9)fBG|KPDBMM^^O=RsWGByQe2KH!!S zy%?PV<$eLgl%Z_Dlr|At>dDa~B#dIfffv27ptuIOB2mWa7SBt#$)&m*lJ1aGhskAD zsKC$%ujAH&!0bR9!rn|rBBVES#X1*}j%uh)-Ak~$O0QL6Uw0kB-+RFC;Y0h|+P3}R zvTO>A_V${}bPA4#q2-6=D zyZJ&QiaRA&&p(9pKx>c{xcP}FJ~>_MTLAQy##!*J>--{9c zhRCn@UWQRG)A+*N%l7w$=EYL{Qj;;o8jinE8ZMh=ikI!^$&~W}ns~6^@W_+UAv#u9 z=czi#rw6d>R@SE`P+Zr=&Au_ zGBI7ldlMFH+>&Bha3Mu$Mqbpg#i8aPYEy+wj3A-e{#mJ_fe4H(r-QJ29FIYYkZn_n zuE2Fe?NpXbn2^G8aROygm3%hNIs2r*CJE^H zn0*H$?NYed3ErUF;nP7g!$b%x@!h}3GVU+9I#?l`v3^*!GCBGce15uyuKVzNNAbUN zpubkRiZlF27?lMz0~aDQM_ye}d1vQwMm=~CNxCrXw_l{B&ISl6M5D~zZfvOneXYZL zCrMv|w{u5kcRhSqrWz?SqF}P~?@vaS5zYl~9WcUyvy|XeMT%T>O8+6{z;qqk-QCDY zkBsCDDhe`KC(_l41no2jh%E*sXI$aKD^tpfw1ASkq3Afb^M%~iX;(?=>*uSFdfa58f!^hr__&Is$i|>cq*xE2~Epw1`7t^g_eV;)3~$f z;d`HF%ooy8y~r0xhfwjWR}-D1nMh5wJ6)`80t@DF30g`oOgn*$oy{NmPR()oD|X<) zTv=$n+_7O#q;^!B-;>O-G)%&m7LdIg3z6~|Af0fSo0$YhR$|vwgG<3rtfwD5JnF$r z3shmzRX(c49fL%VB_fHIdOZz|uiqWVPNWQ?QK2Zj2_NF=nfv?ul^PUG0g^Z>RV^d^ z^()^ra{_|M5ASs3nJE5Sbn)P1fwzx5;M9r$r!RO^2L3HN1{U~p&*8UfyA-3bge)}4 z@$-}H>z=5EzGVH@@ILwx!;0!r+1!=Rw2?G3rm%={gZ2Z}5F8JtWAj6o)lINg6#u&g z_yLn)y!1#k5*lpWChh&4nL6!> z$?Gz?z{vhezPR0Iiwh1ee%mWFE4n;l2A)OC7dtzH*ZakWSCmw?%T!Yy+-eUgmx~kW z3(Qd=IyNRjE+rkE;h$1bS;!|av#u@f@bO?z5=PK)U><%^$YWPpw#jWe7{U1f<0Fs# zO~D}uzE%}T2uYH^{64gVDqg!z%$JjSH$$c(@!?tj3#D6jCo5BnI2fosmIG zEA>J^U^6F4fk+ju1ZiX-j>VlNp%kh2mWDo%<(37;mp1a0UL0ixNvHlpa(-DIY?`o0 zH2)V-eYcO3|1`GzwW_2KgQVo3%X57X+#eJ;pn8~)o;ouy%KtE++-_ULA~zNcMP1w2_3TI08qqin63KnF7qxISTzvfIRpvF%A@t)8EbZ=jYSO1{ zF*iT3`3mBMk-fbZ>h4~$%93SqIa8YbNCw;eCY%r)m%iX-W#pnwKOBNTNO3;|1n`!H zg>q0ySL{3eUvRwz_uiy9_XED}M=)-U>CG-O8%yJEvh~#yJrq?&85hEz4+>0I#FCHg z|5jZ4x1cr+vf~8Jm$SX*={1#=4VB2Vj*5-f(bEc7Q5+EUsIzZ8|Ea>kgBMDPbwKR@ z_bVTtlAk>cEv~eXdEh1~r;!nl4obA!c`UzELr8q_=~<(x#s6vnI(=CjotnCf)$;51 zSNrX8*XL4yZ@{uGrIBppaDq7LsM2UeAh}=ae=tM5aB78x-VgJHJd}&@t4j(!Na11d zO(-0`81_VqcmpD)booa+)UmQC2_F!rUh;(mCRuQp+rib4tRsC!$?P?Qz!%$r=V&j7 zf*_#Z3Gpk?8GrOI6<-id-V9MpU}t3jk9p z&mcA2#ga01e4^X0tEEE~R5|p?c)fFar#j!J(as`15D&92HH9G2<3#El1jK{u)@F|# z-UAMhzLJ?*ZXg1sD@0|3mCgq+Blb;>tb91*bGQ4tWqfVoc=gRn5d))n zJ-t0@?m)y>KAHwV#mB{6h9d|5;~h)qrymSlUz4?Mc44}rw84#ZNu_)~jUp))M3DNK z)%n2?y)q6`3xpeR@^K=yDeSR{a#~|Abo~2w=gLcV?oOEZSYa`bvLc8Wu7R7Onn7Wd ze7T<+itmqn6BMu;0mG;;AYUXi*Rnq!Bb12|JK8(_S<3yJMjNeE$Inn{HR%w5?4g@R zzkz~1rfeBZe?b#ukDK4ygYUsLAxr$ZWwU)O58NBef`ngX!`EnDG&_);HgT5$?>{M% z&TsZ#B!0cUEew8Y?Tm_ooxXt@CM72`fiU-~vIq=*+hv~9OJ>ub|M10I@IG`c-WdtA z>?KI}sV^1$kwqlL&x|UkYMj}CU2JrWryXbAt1`@$j&?biE3l!t(S?`)FSi$fH;dIo zJM#x$FPxzd*&)SMH~&^wT|G!}t=_f`YXKxxDe)hs>G-Nn++p63ym@YP79=L<=iapG9x1b zey6u(r;L|KIi4+iRzGa&hnhdKe5>UJ!VA0@nrC?LB{(D%3$Ds)?xIh%xqSDwbGhw; zC;sS{Q8#Q$>tra}g%zpTuDp3U!Miq>Z$;)(xxQI}x2Prcm!odPHNEaBpPjU?;CcTB z=gm7w*-VbU>8y(nE5SB6P0pl~(Z!W#<{yRUlgI9R0kiIL;9LO1MtHnG{f*zC zAOBjDSS&NGDeQGVF2M)p-)1+=+%;We(+XV%K&`I*i8$vBd-}_Fw;mi14z&E@Nf=q| zXWj2CSn7J`l-5YD=*D~&^q6_xL)7BA#r3ACbhil%cs!}BlDv1IXKQcqsI3o5sh zU(U74fwv2Mu0sgat6q%NPa5{x7H5GE(7hLi>j?#{lBlT3+f_`chK`2(_{Lgf)DS?m z3L&B2cD(N}cM+h76tbH6G66E+{!1MteNtoN(>$O>tVI#GS|zYmp-C~U{ixly-aLeTv~cN(>&sN#HkdqvJ;@-KmA731<#L#f`R#Jd||qvG^rS;0=D- zISx>hn=pSQg@*b8yPpT&3(gi`!fCE>L``w>G4W=;f8=z{t*m?@tSaH@!4|<71PJHk zqkPOukHlGvCHk`pHDuKwOD1_FfWA4dx+oec!>7r=+-%2#Jw;1HM04)FqGf@(;fktm zT8@rZd%rqEawY$ADsUu#9-D?H8TnMN^J}V&unWNUu3Aiwc*Fo9r!j zlclEzhC?I1^rF0YJU!D|rn;v4F;G4Wj-X4+*|5o%kugxXC#6_03{aF*2Ks}VN3-}M zTAy}@FBFNUmj4f1ZylA@y1jo>(%nddAS$6WNJB< z-GX#U*E`wg?DHGnG2ZouZuc^pPLy07i~Qu4!kUvpr#Ncl_zJh>N!ej zwE<@rps4yz$B+*u^LB^;+7BOM*)Cz2H6+&)vKvo$}P`^Zw9Sa21vDVIFy zW3!~)XvixpuQ7&sryEpE-&D1>Op=3jjy#9`+m<)rj!{ceAxUsQxM6x)`t4gJ;J^J` zI**jcE|ZriF>Vhse52A(#-1np%%Q5u7x5rDJ|iPCail^m^E&LJJ(qS}m*ZAZl*sGQ4e8K#} zW)Tb<5`fWj4=@R|8eBfx_C}uEIR0dtnwd?EkI&aueQ~Akd|J>Rj0Y^>Yw&eMMMbS4 z)1;X7d#{b41!g+oVPO(kA+>?G%2M^?$_u>A5qn#D`g(e{!NGw{5oX3<4v08I++Rq@ zY7za4E!x46+grE$0d6@dF10A1vw1{UnWr*(WXaE#a#dd=bNZzqwzP*k8YYd0@^=h;w_|!4qZ5zdm597>%#s145qB6UG_8CvCuf31ps64A&S>vdYEf&U;#L9wjHzWQE?RfYLA%&15 zP{d5ayzc-C1`_hXs;e?I%ZyLwGe6W>Kw(-IMTqR#he|U2l$6^eM4X408EF3KE!LU5 zc6YA*=#XFp4kzlJ+3b5aM0(~$p{!iL92jlIJ6Vo?QE9a*Ao3&MQ2P^h{TFT!` zoNL1FWd8>7)(1r@L`zy(GRnlH=%m4d?C`oGPVAra1L)LNIM#>+4Rm?;wJlIkcLzr( z?Ghu*9%M<7*TIQ6TmJMzie?YT9_nJ-JdK^p^7fY(-`_k;>Bx(7yq+?f`O0*?$c#OA zB@R$B=qcp~I!S11EL!0?{23Sc$x8}tqxRsxpBylBeUJDCsXjdBXYQHFStNwvQE)nu zS@db$60s%RkvDQ?izXJjEvoaIjF3WVzGg{^ivJny-La>n&rG{!O;|p$jD?UhB)^Y0 znW%G>RAaSmhl)7c6!%@r>G@0W!k+P*_g#W0LEj2Tl95%YuDl!_SBwGSXGnHNO3D>0 zomxYa3srqVZ6vSFU(ym!f+56098(1HcR46kaVZI*{y`NxjU2N9x6Pzrc0+Ld>rBJa z!;2;aU6^DW$Wsdr2(_qF;Foo9Y^jZ2t zJ)>-E2DKzE=4So3-9M+A|IYZ_8z!9p^(Mx`H=b@9Ce;WDRlh5m!hCe|+e`N62xUpS z2k6UKqVe%0Zx0T@i(F;IN9zzOQ2P2Hs9g93l?&3BuQ`&s{U&1V%;$_{j7FjCy88H8 zhpUfcMLm(Wc3PMz4;$aPh`vf0^T!WFyMpeMTGL?{{x$)nUzyQyGm!oe-3dX?Vu=?M zc#3n&DJM2OocMTlF9{;mm-@}}UP$s_9YFA%hB{VRS#>7{1^apx0{+F%zSS-z51XJR*SlR9u^$lU z^y*v`4aBqaYRE5J&CORvw%2k) z6;Dcb&RK%m<9X?hWQ80o8l>rmJjC}og2puFc}$5237<$v0LL)mPir2cD`H-BOw9Up zE!S=rShaygH!@~ya`M{zyiYTbo1}BS!NxkxW?^9=CdNh=6i_6cA!pDqIiD zeRaLAFOR|FiarKxtfAG}mg|e}TS5ES3HwzcSZ0GETix5=nDf5?`3c-0U`yG7Cl+8U z{P4j}9DK9(04XD$CWR5U{&Mt0#oxFtc1`HdXsKqI$o~D>fVX#^S=GqLXOy{I)(sw% zxhx_Y#-&$O>=QZ-k!p47CGue7wY`|%{Nyhvbk?$iaaL7pvY@Er|84RQnsrIBmDL2H zISsa=7J-!xuYKdrhoT(Td2+g}MuiR0Q7iw(PoVUo(zR!Q>wmSfOB4U;m-dN-fuEXEXu-nd6-y_3?uXzqYtxY(%%ghUB$A&#teV zLgC957AC$glew+QOU$&CpHiqXa(&#LBrRXeFI(BI6WIe(5_ClX9TOEo+@htiLfP`zhmD*Y-Y%e3t9u?RWe18@+<75tB>5;?%D{ zeD-7fq(j}ZI?E4~tP>r|O4`~g^LC`Y>3*bl>2RyNq z(%x{Qt~<-BnE^~{jD3#s82`~W-4#`RFQ!Yi84^+i^}<4m7cU$G4IgQX>4<^Z56xp& zU)ENMzU7tQv;qs<#y$9^6OWH)a&wj@wu+y;mwNoQI_`bKi)y~Bs6!a7KxipCwl0Zq z@$~3jZ&lEH^7c>I(>v5UX^x%iesPaB*T>q-KC;_*bW9QOi4|DvIH`(wuL&yOYItHT zQ-Y1-0M*;d8|NG3KK~)#MI4F&$}-f?Y~Gp`_$-)YET|z<(3Pok{K|wi`f#)5-NaB= z%v+rDK;l$EUr+_gSdQeZwVJG=9&IR2H+%Iy#uyS7V8UsIDZ;O>%;iv{9&Wy4!|CYU za{`G6%(~RtZFnu8VkO%6HdI;7q>Udz?yNUkb0ZPlu=SCaOULlJdPTuIKkBf}fC@-5s5v+xx=96a5N#j+UWA9xxci za?7N*YNf^LIcyOGkt6-{#LT5--zUT%4g4Azd}Z|-H|JyN2RAT}!pKEKo}inP?(86< zjh=!K@cr-=B7NA(Gx}FBq=~0(O;yYA-iDZvf<(#zRIv>|dioX^qGTj+??e;ZfvNX; zFx0Pw>m6N4@fpU->30WyTUO7xCybTp?+8naGj=~tn6Zxt@gRs+fxw%6YnGs2OXKRt z;r7yWgCEU~`4+~zs6T%CXQyb$-8px1SOHPei#c)o-&(-jS7lObz2?CpbzN1i+2sx3 z{dTE#RXIBRa(g*$L3)vIoGX3de>jhNS(rmd?&=z7-0qrrRaK?7^HE7?nr6ar`-jKD zA`V&acNJyjkjQs~1H*Af6YTgTlgRwijFJhRe*yD)V$_`A`T(nDBY0#}a@WTCx%dRrh8e26y zT=Z?fLsI5JaREMZY)H?$dA?&n)-Am-SwMbCthsZSWJIQb)CY?%p`Nr;(Vg`5dlTX} zckkY%0?aL9;d~ZYYcCW2xCS4=v!mZ^(HPxGqP{}P-*R$u#km31hihvOv7mD5f2gmzZ(LfGl)9KKaB{sUH^vL_l!-#tO+w!uhawjf+l=m`?WjQ%Wm`f`wL0y2^mBhkUkvcRsHAN8>uUK4KdVnMEqC!)YseMc<>^mW3 zGb+g>71-XDK9G%x9A8*#q?V;SHU8A_gb>@LLI<;b%98mqJC&?m*SQ_loL3;UX}^g3NA!4@2(KKuCYjkFRfr{H}#I8$~r6sKd}IaajHT4m5o#n{0CI*?KsW zYl%i)^}EbqPf7K8bYihX0_m^hgR$p>oG`lA9xzoGR-H@af>?;nVNfgl;^|x^nI4$R zwNS4JJPV-kw_f+IrWQ-Z{uE*Cf41u$pC0QD1IZON=SEG!*`dp~zn5M(;%YyL6M}kO zTwF(mq4^$%HKqd9<7LNA%Ou?nG+@ zo=yTQvMka??C)*)*o)BUz<5ZUhu5t6aNR5UF-f^kb=5<|l6mjf+S-lISp8U{xG&B( z&L6~ARa)R2q*AprM1(1&?L554_`rR&i3sL^p6@&}3#c*Pvbo@kr23(2J-Tw>PC!pW!E9pjSfdXWi;|~GG=umKl8R1+tso6b=)v&$ z>8QTU2SsuN4TEiuk$8K<;6nf7zRS(wRyl*FUodowb9l(wqu}PWn6^r&=Q-irNtWr2fvv8jW&uCEZjx6{`3;cz-BrHeZj9>oWnnV^d&#G zd;&5WAM|96+@c(A7)^)iB|5yjck<`&DN{uow@@LCszNOkqwXF59}CMCy`5iQ z7^{84$ZdSrMY@aeXoP+Dq5_IUsBiPcc`k1^8XcL|Ixl7GSq+Y2LBVxtZsZHEoHU8C!u_+SHFJ>vCFzU?u5kbhtK>@H}(xX7?}#W zL$7y2g-~!SSbF%AZZNAz;ASwfllP)Y_ja50tAe{4)$EH=cb=?30_MNOc(;#{?`VCL z05|%TOV1InRa)5$stv=}2uNHkn&rqw+7A5e7+39=mXs$LUUATRtE-zqTAZq>Va|L- z2u7EeKN`>e-W^o{kZkXUrnuEx!=}yY{CZzwqJg90M2VIZgV40=*Q0Ss_U34^(Twr~hdhCH_8Y4s7`7!N7=UJp+ z?IBOkhF@BPzkUh7-Ml0C>ssf0^*d2lc!YwOQiy0x=g8scsMTY;2Fq2a=&Zsab0OEo zN1p3>-y#l8UgRW}oiw^fW$a=)EpBQLz3fk)D;#o1{w{+}`^IEu`}0)p0U3Lyosi?7 zc`rvC9IeRJH1@&K z-31A>;gR8`rKL!k$7XL{RM>ZYExG`3$g9u}nf-%<;#$m(6M+v?A&Z~V)2XvikBQ9O zfs)oj%1;9>=4E9&kkBiuAZ_dD=%gek16?Y)2BiY}a;@rgcmvS@E^yfRw$UhHx7d-w zW9fByI0j6o)TAUWEv+=s{;Ak~fXZ2pm0r$WUj^eY#1|H>#Xqq5BuD%-AdFW7U^nXX z=HFwOfYf*K65ki>biu@(o*!lMvxy87lhdu<5cG#+V)+26vL!&ULGpcaVHac^d_4`I z$<6W4#hPX2F8&1v2zE$FNZ_p9nzz!I{@7+#D2qZYnUqauz7~9&Us_v7l53D?KpdZ3 zc1K%Vdu0Qor_^b+jG394*LphX)LLCxt0TEX9VcfYK*XC|r)~8B3sV-4t)zmlY;Lz~ z{Rs#o4NFzxcc`77$i7Z?7-^q(?M)!(;y*xujgx#G_t2iHjj_3>=TS#%YCBD z_UG!y-@M-$HBP(EM&m^A6?ii<)kCK5NnNFs0|p(HkS5kb4|gVgu7)fLs349i&wZx1AHRqtdl4T4K2$ zXjnY$BIfsgXpWp}bl_X2oEGmN*{^b|$pDLWgjHH`G>gFHkY9C81lu$%OHBXH86$ex z_T7t7Thu(QnmYGhOzyn1dFAg!_hkYG*$#2NLRn6t&=KbF_uJU1FAdWVprrvK^NLAL zLj`PCiAN6%Vm~q>bJ_LmkoUva%lhC!ukz)yccGyRJAD@pzgJdb5^NPn{?UeWud*;Oz)KE9K3!fnxEwNIack>Tuc zYi;fK>h{seoHyTejjPO)CyU+hC7iA21Ra+7Es_GUR{UoE{+Y167*}!L5&iZ6nQG#z zW2LuI!Ot(nR5cSd#==SQ%CGKPaWXF*C#IH{RCP{aWYo z+fDz`=W8oHJidao)n3Q)YTEHn?onSqv9TLAW@l&HO`Ja0(Xj}|b!zkCR8!j_zQN?u zStzuX>0~Va{T;~g*=mZHs-U=-^7d`as?w*FA>NoI1TNxFo*<3mC!-?8$n|LkzTz&J3j8!gs7HtN+m2a3Q z`YS$E+yyzSA8*6vD!e*4!fv1(MRH6;+gJ8w9I-i+$tXBFGc$DZVZ(iSIiE=}a2hTA z(U|Saex>fV=Fh8}U$!LA9@tHr5VF9q^FEaR3(JC;k0lcUzmiBFDTy#{jxuGC=d*jV zpOx@Fe@Je=ZzJlgDB-AfN%}U#XScZQ{-Xz-T{)tDyB8sH=7Z{w%)YP}ZBbo^VLg`Gp`?p6j2kqO(IeZ}qX_M}q{YW;Ki8Ws zamDiV%=m(2;eUYn?%h5nCI!XX8EO!Cog-fL+hQNwVdIgKQdj8k=|&eJcyL3wdu64!Ta8)NFth1$^ZTPD^rsO;DLOLsiYQfwn<94$HadEDUmr6ThP@x;KE-qf(!?Up)ztVcf^>NO0b62XS?nmpH zF^>lbge!z36o_5s3aQC_l`QvJiR~KEbMo>ewP=yfl{_ok4&JtJ*BA#;(Z1xfb*Voh zeZ~el-7>GW`jHxb{Gh2?Pr|3P9*t**c0mUeGY1#)%jBs^R03`>RQ8RBjuT=8RVhU& zmo4IYC?_UinNCjWBid#2(n@7^9v&A-zkmTx`KwsTFi&8Oc&^qGn1}t)9Iv*Sy7;*` zS9BcvZaw$Vb6`Sg4BV)dH@m_q?Dv7jfM$7>^cC+7)!vj=$2)!iZJLDhw$+KW9oQa=%{R~u>@^Yfi|_HC0QBO?O>I^uu!b*#1` zyJF3LfBG}}w}{b3VPkB|eH^PP9Uvh4bXQrvq@*QVUFy|!BnVZSPl^Ac;BtcX;K9a9 zFB|UWT$rSjv-|W1g(=qqvc(;ko^*YT+(P(fgi7S%Y^p*w_G4SH+$97}4wtO+=0I{F zx~qu7ba~J(TKBSQ>)%?y(9jSy6;=2446q%%FAw1>#MTPR&0T`tOO0*|kB>Y8KhQ03 zG#EBVfaWDG3y%KM4Hg4gh%T7py|CXZNH?i5!b+KS+vhNZ)r>@0SX5*^S+#bGJ9bGn-8B7iP(gcX8ic-ogQ~=k^5S_0{4zP{5c&sd5o3(q~eKK}f7~3^fU75D@ z&}3-E>HyzEvSOr!LY2>E##fDplXrA@aNWq#@qDzmXwk&z)ydQ#$>rJK zKLfL8i?=>zx4ZoO?7TkcxElG1hGyGx^y;#wf9zY4<4%VDV~0N>B8LWz=LkQ>VF0$- zug5U9!`t|;;B@g#0*4Pe=AENIYzs~e5AGv%aV+!p z7prK|ve_2r%0vOPQ6Y{eO0qFHyKzP=PuaIkyv zzg4L{x3<`k2ETk47Iq8$)`3@8I(pw7rslp1PeW-4eLdZskN@tsBlaX0X*BrZgh(z` zs{+Ky7{#tKEyQREJ*jZXHo;|_2S|52Jm>3U-)6KO$6lgwjT(N1b{={7?Y4YJt^?0b) z8wfIj!t>*KaEVEZr?ymTR+~f~_{O#k2N`P;n^~}vtB&B4E?Aqh6GsZuCt{9=kDSX& z9TJ>re~?r0l!ZQk^`C)kDAzXv(f5E0gZ7RC`hOY2Fc6r@%3a)1Jf0V`UQdLMK0}@g zo3~Ue&d5uGaRnfdLGk|PHf<1Y0p;gE*B1uv;(%bC8?p9fK#sj&fk>Fo8vu(qZI0jk z)+xWK%IN=m8u&b_0p{_$aSZTv6lE$qfXI9cYj_2EvRS;MQ@8ox8JV7o{r9W8U!*h) z>-&$|y_^5BQXEwyuFuNMtWj;PpHvTxS76P)ENHU-WY|3W{rhWRG>B4u@rCiku`F?a zz*(%5>F56A6AM2S8Gz*OmBue&+MD&8REBQdVtEoQ;x`jgdH>!$kd7D?H0c6iC8UO| zh6P9$iqg{3#>Vs$stDey&!5B1H%+jinwpy8FVK2P$o%*Iiu&(z=L1?Eyn_A#ofnne zvNnn!vLMQg%ZQFsQPaDBkG?cNyX51icR*vFYjABJRvt7+?jK+Vtyx%eQ1uhPYr@^aX`P-pc4O_Xe-4mXe`55TqmOqIY;sCsXFN=i|7 zcI!V1`Oig+m<-?H99*$@{rX;)q$DxLF?nJ%DQR+x_v}-{;?Jd%kQK^ldk##+#1L)+ z%5MmWEYLk(zWc^~+CWQ-oQeuUzxe3r0XQ6~sj1V1Z0CJGfBp==+Y7vAkT-51DZnxD zIYS>F8j2MS0im32CXUup6s;(Yh{p+J!zV8t5qWuRX4A5ZYN27BT=wz5Q^c9#-R-Yz z3knN=+5PX0$-(mc3`n7(qN2>#F={~8Dna#5i5CwpPyf4Wo1*7NPAz?4I`)z z2v4-(sNBJ#=#i{Iv41Qe0HY1>rrT)0+c-_)j*NkG#6DpN{lG#O5AMxNa&vj{W_L!e z2&NoYIV!-|bZ1!^ullM*q?H)?OKv$g-~OKe$7zK|BL77KX+A75HirH^R1|=idexK10%Gb`}R#NyIwy! z_L*LVqdktqM!7jJFZ{Y8?~aXi+#kyOz|`}hg8G1AR>BUXIalAhx{wE2%$dFSto}eJ zk52K;8&;Nn&__OY+6>u2>1+Ay=hp^cGmJGEs+v$8M(OYtO;ZTjU{V7j-R-IB9cV71 zycn!7lLv?mRF*uycXtCyOTe!oF*P*|xz3RP-^pcyYEg_y`6}-)xWl6RBZ|MDieWQW zzzS04uq?VK)yaI2si_iUqGikYG9!VVryWwWdQCs3>uAN0|WD zUH**db#WN#>P21e{tH6-@3v4>Ytfp4Qd@AZ<{k$}@VzN585{&A#s}2}HK0cFjd{X| zEIiBE(!!ME0@;D0Mp~`ik~I8_-}hTU3ubL?4N-;Z`0v*~`ig1%;tfbvz%A$pq?DKi zeBIF9)Oh|JY0<>ooY(8Z1=5H`wyfu{g}}xItelsHK{=b)cSkWz8y`?qhXs{$`u#6WA(+6uW4Ebmrl5U;>LF9;zq90Gom=q{A__&%{N@VuFX zG-1Dcs$gsTFlQJx0r1uS-?bjAuB@#5T(2arq~~V8Q7_g(;5%F&L7r#f;6RflxMZJ3 zB1UpTmVEMU6FlP0N3Wf&R&d)QjPy zfbM!ApFTjes;esKyOJr^UcW9x;JbJ4yI0d}8fDVcnY!Z_UNBPuy&b9BypIM)Mwnhg z4!75E@iV?nF+4QV`i1G8y6W-=OG}HlD|J!5agTYPdw4W}W}@1lD5Othu~2}d9Kd5H z1zvh1eS?%ne7{S?bl1xXf3wq(_z+%Y;#aWV=l?Z^@`#%|?Xfd^kq;<)`mxrPvE>#ryBfmKuhA1Q|0s>!tA&(PfadB}82@?Qo`S3V7Iq|%B{_lAT zKZ{llnQ^Ruiv96TV7t895w94C`#P_IQ&lp;= zr-_c$DNGGS&pUnHx}MnO*lYsz05^{f@7v*5eH3SXcNM5MRu&G$@%qz+O{|6#Wn@-= z|4hu4#y$MIZz8FxFf;ZPm+Pa|WJB+GN1k+Fk@q^pVlsHN;kSi93>Jf~&e^f?i{q4H z(0Z5pr%%b4RfxNYn+!kd+SD=P)glUTRNym+iHX7aqxJ07t3L^Bx}YeqFg6x161w1d z_^{=sKGVKUhpU6q5`f%?W@BSR90YVAFwA7rD)*VQuLxIEKZ^^_|M$d((SDU%OCeK( z0R=S$A&(=&!b0DLvv{l1(9oEh%_w$Epw5*URiyKK5gR>`l?A<~%Rq}4-uB!E^k!>Q zU@2rKe(cw=f{mt6vy`i(Fp$RCp+H7P>h&uNxu;Ke-IEd%o&OAYrAgiu{(NrqPFh;> z)yAJ)O1DS9e*L(ApOcd_{u`!9aba<+^;Pw@$qNvR1L^E3144!$I@jhIWr!0L3ykDr zvQaVi_JZIvJle21w-JjlI&FE2yFdv?4NwU2Co zeD(JHXbYAN?1!N>Z>DQLH#dtGA;%d%yv@PE;n`$o*F6BV;$$96(u$g}FsyZAPRB4~ zS%Lf0kme*qq#dxmwif!Fnu0=BgX6>hd(1hDajEC~g&!YZC&w(lSaU|nc0C~7v-^xg z$%FL8uIZ1Ofx%UftLish)VP-ksXQ>O(Liy49IB;N%VFr}|5Q$Hd;Igqt9qX25Z5^E zcYKZ+B&4REkqC}zrP>(#82mAj78ez7y)3&Fk&Er$X2Gdprl2(j4n{JU`-e*(U++?F zv?NaRVOu-9y_fwLku;(skaPmMi=Z8?9pRa*V#cE(~@*RxyGgSWd~kHVQL{3LBSuV6<7m< z5gY7SEB%jnS8y_2PdS58K11bS0`0ii@)g2|H2XRfZq-6AhO3V>B5$IL-dP}Hgtj1D zd!pfPtgj37q(oA2x{v;yuwN}^DelP-mM~Bh;d)^IJtqHh3(YnIjLvYWIgJ+DI+0Ov z331c2&oU0Fcb-o}I0}d@47`37P0h@Q#z>g-rvh*!T=1CR5}E*NHx+)6TtJ(U{YuYS zNfE8#5GV<8yLfG8rw0ZGW@j^K|NLjv=|6=aaUg3T$&c(R#sBF0@#Coy@+)*)Oe%gC z@^G>&6zA$-VfRC+e!B=>uT%Cr92|HJNSrxkHUs@$K8=@R*7}rxn+)r{u+To~Bz1l3 z;9l0` ze`^7UmDgr_WpFTDg6q(5ZCGKUc7Ffj($-;*DEYUgMMF}b&TuN8vqY%_JZgd2CePsc ztSphn`gWWw!kmSx4$31&@*jql*W(qA!R3{5Bm^`~p6Av=KV3iCXGuMF+P15kZ`jLh z?oV6#R8zM$7g4Nn`77VDIw>hh0GEs3R#i)j|8?8=chwKRljy-so?X^K>+Yk@*w#tT zKS$N>Tc_XU{2D>2eYaJv<#PxRV-e-H);khFIMKh)umAbuN4KEz2_e`2HtCYiNGJX^ zu}*OXvS%mX)YbHeNhn&qgS?|V4_2FcQ>w*&KD>8NTwLYR!};3yFKm5F32kkD37;k( zil!m(2jS2ztQ?L1o{VQpy>h+?$aUqKEyyXInPmw7pwJtu8gtr;gI%haF1XZEE=%Nz z>_0zGr#p2N?}nROcJHxl+jPSO$*Mg6?!lq&O!eQfPX2`V@Ar=>E#B=Kr% zOWi6d8XTY~+R+nL`~6hv@Y6j}QQB_Q2*PN|;o(>BFLsHN{-ez=D3ByRtNx({7+X?6 z05__Q=-iphMKHq*!#wS`rL2r*(}ojaXz+Rc@t>`uKfa-_Ro}|WXzr{W7K_rr>esAo^)ce!B?d4ZApB||8eVi!w-W@K#XM+~aG48E*DNe+a9Eb6Bl?z~Z`3_{uipWSELe?!&cKa3#AA~25f;Bx{x@wWUc&Q=tugHZAu zQ6Ez?Q%H7OulvitPxWSqqihN~GIceG^L-BmjqvivfPjFO*?Q5Ss;Vzhw2v3Jx23&6 zYX?kcuU&S0VLA*d7gu2gSw&th%OBqA(i&gqFMnsAnweP<(Ok9t_)+I-ABKE>jM;*9 z;<3;`gbPs)(c;oVy*C)XxE^)(?on?6fwYjWaSSLdmVyZZVwNvJK_V(HJ-cv)>3ZlK}bPK(Aj)Y5wT zL%u80>1RUOh4awpt%KE;eA_?RBhKva$0@6|I7rml)@5eaqK)gLAS6>)R}WnM{htl) zCcwN8PYD9NxHw|&950_oNVfuS`TAa6yxc$7uQ9PU4$kX9@${774mWJ3^vljICZi>@ zG=0-{A%>Lw*lF?aMJ=w&^YZ&}3Z>T{d+vf`Y`*H3p2 zKMA5mDL}d%9S`MJLp^eg++#@|S{7v$P%-Me{+b~pB{it^Xl=_Ox&GeJFuk~#)2Bbn zzD7t%l%9}aVK#&NscU||Wj+gmh^P`atGI*&Ki$g$#xFyIg9Bgg$uSB&cu;J!vz=k! z#Sek{NsZ#%#f67ha?w8FzC?Qv&Z%dRyB5nusNwVHewiaZgNuLnf6H5MnKFz|?nZl? zq{*d^sI_Q?kW{~PRlleD`j48S=0CVjo&s6^P{|6I=0t3U*&3aZsA?S%2r0jU&imhW zBXy|q9Nv>pr6naj9@Q~%ahqe_(NH|UmPNR2-Af$A=l)biA-x(2t46HSoD^D67>4tx zOBc~?KS_Quh2N5YU>QXHuG6Cg#lY7m;PidD`!AURtR-?f5@YNAP$-?L236)2EojFF zDITWF-3h-$CNeB4%XceDqE*bAJQ*FN_+Nld%chJso(~1f9_I&itqI2KNc*1@6a*6?>$PQRbip4Dh~K>PFAE5V6IM4|A6b} z*&Nyzn;#l^YCv&F-3+R2kqZBoy^2V(wF3N+pFc{&_liU>izI=H14zuq1_J6Z`^-l!` zjcyS5ncsXUFSlQX|9eLNo|AJ0EH{7c|GCbjp`iG0f#APCkMRBXKK}Q3;6IvF{;@gw zKN<01#6NVFB93e*uy8ayl7v~E2?_4IcUS${p>+07B@UkF%>^Bqe?Cm($mRL5VUx#q z4;rh93MMwTh*Q5hXg|Rugm0HA`~LmhHye?sdr{ZTuOIaQS-#q8D##ze zz_`?c4qcJdFb*;_Hf9Jj8gX%I&z|*UO9WR`RKSXzf=2Ca%dmAUFW&(qk$F!N$TM1?9l@-(IB3&+ z`5`}F{q^4fMubU1O3E;0$O9m2GE@jL_qT&(H1 z1ZBb(Ik~Ci6pwf`-P{BRKLYO_z;GG*b1hjAjXc9qZ;?|_h&Xk76057KN@QiOLbXKF z)z!%}I`&e;--w5<{pa`ZBg5JbYH=SDMrGpS`p@`z2&wJh&N@|L$aV_SRwz7!781S= zio;15iAm+Pa=SRO(-ZbQ`?QGQQA({OX5^7?Fpqh`UQ z9Ss%R3`FcuEk$B)T}?>iU}tY~*;@ori?1RTHFfCEtgI}BR9`W+XiI=g%wP+m{L>z3ExOBmB3#I#PY#hNEAu|NPWNN=Ay4 zNArnC+A0y>%22@3cqi6NDd#z8fVdt|k+LS4jJ28%cG!XRXZZrGWUmaWKcrClIx;Iz z{q%@)dNcKQsSfL4BH*K~kmtI8-|i;7%FlWacUv#LN3T0Q6s>0eiY~-vWGGF~%&kNh zsxpJkK35LLOdTZVW+G8X+Y^p!gMm@DEAtP9?>+kbylbSn_2!X2xALPTf8z2muDB

eL#7cUs- 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 z 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±xPjkNfL+1V)Wo3c{!1CJE=LWibHI3Zw`e* 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 Date: Thu, 17 Sep 2026 16:26:40 +0800 Subject: [PATCH 8/9] test(frontstage): align steward journey with assignment result UI Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com> --- .../steward-journey.mjs | 35 +++++++++++-------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/examples/personal-workspace-browser/steward-journey.mjs b/examples/personal-workspace-browser/steward-journey.mjs index d6ad24213..1c6e872a2 100644 --- a/examples/personal-workspace-browser/steward-journey.mjs +++ b/examples/personal-workspace-browser/steward-journey.mjs @@ -19,7 +19,7 @@ import { openWorkspacePage } from "./scenario-context.mjs"; const GOAL_ID = "product-release"; const GOAL_TITLE = "Product Release"; const PROPOSAL_ID = "proposal-steward-journey-fixture"; -const PLAN_SUMMARY = "为 product-release 配出 2 条 lane 的团队"; +const PLAN_SUMMARY = "为 product-release 分配 2 项任务"; const READY_TODO = "Implement the bounded intake"; const GAP_TODO = "Independently review the intake"; const STEWARD_PROMPT = "找下一步"; @@ -218,7 +218,8 @@ export const stewardJourneyScenario = { if (!turn) await page.waitForTimeout(50); } check(Boolean(turn), "the steward prompt reaches the Goal conversation as an accepted Turn"); - const row = page.locator(".personal-proposal-row", { hasText: PLAN_SUMMARY }); + const row = page.locator(".personal-proposal-row.is-ready", { hasText: "team.plan" }) + .filter({ hasText: GOAL_ID }); await row.waitFor({ state: "visible", timeout: 15_000 }); await row.click(); const drawer = page.locator('.personal-context-drawer[data-context-kind="proposal"]'); @@ -230,12 +231,12 @@ export const stewardJourneyScenario = { "a ready lane shows its first bounded Todo with priority and action kind", ); check( - previewText.includes("未配齐") && previewText.includes(GAP_TODO), + previewText.includes("待安排") && previewText.includes(GAP_TODO), "a gap lane says it is unstaffed and keeps the work it did not staff", ); check( - previewText.includes("确认后会通过既有 owner"), - "the card states that confirming is what creates the lanes", + previewText.includes("确认后分配可安排的任务"), + "the card states that confirmation assigns available tasks", ); record("2-ask-and-plan-card", { accepted_turn: turn?.turnId ?? null, @@ -253,7 +254,7 @@ export const stewardJourneyScenario = { // Beat 3: confirm, and record what the workspace actually reports after // the canonical owner ran. - const confirm = drawer.getByRole("button", { name: "确认并组建各 lane", exact: true }); + const confirm = drawer.getByRole("button", { name: "确认分配", exact: true }); check(await confirm.count() === 1, "exactly one confirmation control is offered"); await confirm.click(); for (let attempt = 0; attempt < 60 && api.actionApplies.length === 0; attempt += 1) { @@ -264,24 +265,30 @@ export const stewardJourneyScenario = { "confirming sends exactly one apply for the confirmed proposal", ); check(api.durableWriteCount === 1, "the confirmed apply performed exactly one durable write"); - const applied = drawer.getByText("已应用,LoopX 状态将刷新。", { exact: true }); + const applied = drawer.getByRole("heading", { name: "已分配 1 项,1 项待安排", exact: true }); await applied.waitFor({ state: "visible", timeout: 15_000 }); + const resultText = await drawer.locator(".personal-team-plan-result").innerText(); + const assignmentVisible = resultText.includes("agent-backend") && resultText.includes(READY_TODO); + const gapVisible = resultText.includes("agent-reviewer") && resultText.includes(GAP_TODO) + && resultText.includes("待安排 · 尚未加入此目标"); + check(assignmentVisible && gapVisible, "the result names assigned work and pending work with its reason"); + check(await confirm.count() === 0, "the completed result removes its confirmation control"); record("3-confirm", { applies: api.actionApplies.length, durable_writes: api.durableWriteCount, outcome_text: await applied.innerText(), - outcome_fidelity: "single applied sentence; no per-lane committed/partial/all-gap/stale/rejected", + outcome_fidelity: "assigned task and pending task with reason; execution remains unverified", }); gaps.push({ beat: "3-confirm", - need: "per-lane outcome after confirm (committed / partial / all-gap / stale / rejected)", - status: "gap", - probe: { selectors: [], phrases: ["部分", "缺人", "已提交", "未配齐"] }, + need: "partial assignment result names assigned and pending work with a reason", + status: assignmentVisible && gapVisible ? "present" : "gap", + probe: { selectors: [".personal-team-plan-result"], phrases: [READY_TODO, GAP_TODO, "尚未加入此目标"] }, observed: { - matched_phrases: (await drawer.innerText()).includes("部分") ? ["部分"] : [], - surface_text: await applied.innerText(), + matched_phrases: [READY_TODO, GAP_TODO, "尚未加入此目标"].filter((phrase) => resultText.includes(phrase)), + surface_text: resultText, }, - owner_hint: "steward R1 remainder (confirmation card outcome fidelity)", + owner_hint: "steward assignment result; receiver adoption and execution require separate evidence", }); await page.screenshot({ path: resolve(outputDir, "steward-journey-3-confirmed.png"), From a4c69218937a99413d0d7bdc41fec82ff03b5666 Mon Sep 17 00:00:00 2001 From: huangruiteng <14976749+huangruiteng@users.noreply.github.com> Date: Thu, 17 Sep 2026 16:43:05 +0800 Subject: [PATCH 9/9] fix(chat): preserve recovered assignment outcome with staffing gaps Signed-off-by: huangruiteng <14976749+huangruiteng@users.noreply.github.com> --- loopx/chat_actions.py | 12 +++++------- tests/test_chat_team_plan_action.py | 17 ++++++++++++++--- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/loopx/chat_actions.py b/loopx/chat_actions.py index 5dafc16b6..e76cddf7a 100644 --- a/loopx/chat_actions.py +++ b/loopx/chat_actions.py @@ -1074,14 +1074,12 @@ def _apply_team_plan( ), "turn": None, } - # The outcome is read from what the settlement actually produced, not - # from "the action was not a creation": a plan that created lanes beside - # a gap is a partial application, and reporting it as a full success - # told the owner the commitment was kept when part of it was not. - if gap_count: - outcome = "team_plan_partially_applied" - elif str(settlement.get("action") or "") == "reused": + # Recovery describes this attempt; original staffing gaps remain in the + # receipt so readback never implies that retry created the missing work. + if str(settlement.get("action") or "") == "reused": outcome = "team_plan_commit_recovered" + elif gap_count: + outcome = "team_plan_partially_applied" else: outcome = "team_plan_applied" receipt = { diff --git a/tests/test_chat_team_plan_action.py b/tests/test_chat_team_plan_action.py index 779e7a3d4..50ad7c70c 100644 --- a/tests/test_chat_team_plan_action.py +++ b/tests/test_chat_team_plan_action.py @@ -268,17 +268,21 @@ def fail(*args, **kwargs): assert _todos(project).count("loopx:todo ") == 2 -def test_lost_response_recovers_original_commit_after_work_changes(tmp_path: Path, monkeypatch) -> None: +@pytest.mark.parametrize("has_gap", [False, True]) +def test_lost_response_recovers_original_commit_after_work_changes(tmp_path: Path, monkeypatch, has_gap: bool) -> None: from loopx.control_plane.work_items import team_plan_adapter project, _, service = _fixture(tmp_path) - preview = _preview(service, _two_lane_plan()) + plan = _two_lane_plan() + if has_gap: + plan["lanes"][1]["agent_id"] = "unregistered-agent" + preview = _preview(service, plan) real = team_plan_adapter.write_captured_todo_state def lose_response(*args, **kwargs): real(*args, **kwargs) raise OSError("response lost after commit") monkeypatch.setattr(team_plan_adapter, "write_captured_todo_state", lose_response) assert service.apply(preview["proposal_id"])["proposal"]["status"] == "failed" - assert _todos(project).count("loopx:todo ") == 2 + assert _todos(project).count("loopx:todo ") == (1 if has_gap else 2) monkeypatch.undo() state = project / f".codex/goals/{GOAL_ID}/ACTIVE_GOAL_STATE.md" # A receiver's later edit must survive historical commit recovery. @@ -287,6 +291,13 @@ def lose_response(*args, **kwargs): recovered = service.apply(preview["proposal_id"])["proposal"] assert recovered["status"] == "applied" assert recovered["receipt"]["outcome"] == "team_plan_commit_recovered" + assert recovered["receipt"].get("gap_count", 0) == int(has_gap) + if has_gap: + assert recovered["receipt"]["gap_lanes"] == [{ + "lane_id": plan["lanes"][1]["lane_id"], + "agent_id": "unregistered-agent", + "reason_code": "agent_not_registered", + }] assert state.read_bytes() == before