cuelo 0.10.39 → 0.10.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +19 -19
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/required-server-files.js +2 -2
  6. package/.next/required-server-files.json +2 -2
  7. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/_global-error.html +1 -1
  9. package/.next/server/app/_global-error.rsc +1 -1
  10. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  14. package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  16. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  17. package/.next/server/app/_not-found.html +1 -1
  18. package/.next/server/app/_not-found.rsc +3 -3
  19. package/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  20. package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  21. package/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  22. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  23. package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  24. package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  25. package/.next/server/app/api/updates/route.js +1 -1
  26. package/.next/server/app/index.html +1 -1
  27. package/.next/server/app/index.rsc +8 -7
  28. package/.next/server/app/index.segments/__PAGE__.segment.rsc +6 -5
  29. package/.next/server/app/index.segments/_full.segment.rsc +8 -7
  30. package/.next/server/app/index.segments/_head.segment.rsc +1 -1
  31. package/.next/server/app/index.segments/_index.segment.rsc +3 -3
  32. package/.next/server/app/index.segments/_tree.segment.rsc +5 -4
  33. package/.next/server/app/page.js +19 -19
  34. package/.next/server/app/page_client-reference-manifest.js +1 -1
  35. package/.next/server/app/recover/page_client-reference-manifest.js +1 -1
  36. package/.next/server/app/recover.html +1 -1
  37. package/.next/server/app/recover.rsc +3 -3
  38. package/.next/server/app/recover.segments/_full.segment.rsc +3 -3
  39. package/.next/server/app/recover.segments/_head.segment.rsc +1 -1
  40. package/.next/server/app/recover.segments/_index.segment.rsc +3 -3
  41. package/.next/server/app/recover.segments/_tree.segment.rsc +2 -2
  42. package/.next/server/app/recover.segments/recover/__PAGE__.segment.rsc +1 -1
  43. package/.next/server/app/recover.segments/recover.segment.rsc +1 -1
  44. package/.next/server/app-paths-manifest.json +19 -19
  45. package/.next/server/middleware-build-manifest.js +1 -1
  46. package/.next/server/pages/404.html +1 -1
  47. package/.next/server/pages/500.html +1 -1
  48. package/.next/server/server-reference-manifest.json +1 -1
  49. package/.next/static/chunks/app/{layout-b55ad6b60182cd98.js → layout-3a8d6e5e94b4d26c.js} +1 -1
  50. package/.next/static/chunks/app/{page-b358723ff38b0fd2.js → page-5a03f570acef4dd9.js} +16 -16
  51. package/.next/static/chunks/{webpack-5e1ebce946df08c7.js → webpack-8422001893557aa4.js} +1 -1
  52. package/.next/static/css/{0ba64f0cec697983.css → 0452ed1fb2b62440.css} +1 -1
  53. package/.next/static/css/{f9ae9aa15286f229.css → 7467faea1ab68673.css} +1 -1
  54. package/.next/static/css/d516e7ea6ded8a37.css +1 -0
  55. package/.next/static/css/e8d6ee481361beec.css +1 -0
  56. package/.next/trace +107 -107
  57. package/.next/trace-build +1 -1
  58. package/README.md +2 -2
  59. package/Tools/CUELO_Setup/files/native-runtime-patch.js +9 -4
  60. package/Tools/OMP_Global_Config/agent/AGENTS.md +2 -0
  61. package/Tools/OMP_Global_Config/agent/prompt-copies/AGENTS.en.md +3 -1
  62. package/Tools/OMP_Global_Config/patches/apply-core-patch.mjs +115 -0
  63. package/package.json +7 -7
  64. package/.next/static/css/5d356cc2de2f8d4c.css +0 -1
  65. /package/.next/static/{Hnj-vLLVhpk85eE5EC5YJ → 8oQSeMbLkQN1eJXvRmb9Q}/_buildManifest.js +0 -0
  66. /package/.next/static/{Hnj-vLLVhpk85eE5EC5YJ → 8oQSeMbLkQN1eJXvRmb9Q}/_ssgManifest.js +0 -0
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-webpack","duration":112526253,"timestamp":741304,"id":14,"parentId":1,"tags":{},"startTime":1792418315748,"traceId":"149c6ec28f45fea2"},{"name":"run-typescript","duration":19849705,"timestamp":113633289,"id":10954,"parentId":1,"tags":{},"startTime":1792418428640,"traceId":"149c6ec28f45fea2"},{"name":"static-check","duration":4307052,"timestamp":133592769,"id":10957,"parentId":1,"tags":{},"startTime":1792418448600,"traceId":"149c6ec28f45fea2"},{"name":"static-generation","duration":14069821,"timestamp":138019663,"id":11125,"parentId":1,"tags":{},"startTime":1792418453027,"traceId":"149c6ec28f45fea2"},{"name":"collect-build-traces","duration":23733590,"timestamp":137978930,"id":11122,"parentId":1,"tags":{},"startTime":1792418452986,"traceId":"149c6ec28f45fea2"},{"name":"telemetry-flush","duration":82,"timestamp":161717301,"id":11134,"parentId":1,"tags":{},"startTime":1792418476725,"traceId":"149c6ec28f45fea2"},{"name":"next-build","duration":161087546,"timestamp":629859,"id":1,"tags":{"buildMode":"default","version":"16.2.12","bundler":"webpack","has-custom-webpack-config":"true","use-build-worker":"false"},"startTime":1792418315637,"traceId":"149c6ec28f45fea2"}]
1
+ [{"name":"run-webpack","duration":125721655,"timestamp":833453,"id":14,"parentId":1,"tags":{},"startTime":1792447873928,"traceId":"88bdcb952a355108"},{"name":"run-typescript","duration":18650445,"timestamp":126953329,"id":10959,"parentId":1,"tags":{},"startTime":1792448000042,"traceId":"88bdcb952a355108"},{"name":"static-check","duration":4752501,"timestamp":145728426,"id":10962,"parentId":1,"tags":{},"startTime":1792448018816,"traceId":"88bdcb952a355108"},{"name":"static-generation","duration":13716883,"timestamp":150600898,"id":11130,"parentId":1,"tags":{},"startTime":1792448023689,"traceId":"88bdcb952a355108"},{"name":"collect-build-traces","duration":24193555,"timestamp":150562647,"id":11127,"parentId":1,"tags":{},"startTime":1792448023650,"traceId":"88bdcb952a355108"},{"name":"telemetry-flush","duration":83,"timestamp":174761332,"id":11139,"parentId":1,"tags":{},"startTime":1792448047848,"traceId":"88bdcb952a355108"},{"name":"next-build","duration":174054280,"timestamp":707162,"id":1,"tags":{"buildMode":"default","version":"16.2.12","bundler":"webpack","has-custom-webpack-config":"true","use-build-worker":"false"},"startTime":1792447873802,"traceId":"88bdcb952a355108"}]
package/README.md CHANGED
@@ -16,7 +16,7 @@ Use the same `~/.omp/agent` sessions, credentials and model configuration from t
16
16
 
17
17
  **한국어:** CUELO는 omp(oh-my-pi)를 위한 오픈소스 AI 코딩 에이전트 작업 공간이자 하네스입니다. 웹 앱은 omp SDK를 서버 안에서 실행하고, `omp` CLI와 같은 `~/.omp/agent` 디렉터리를 씁니다. 터미널에서 하던 세션을 브라우저에서 이어 가고, 다시 터미널로 돌아가도 기록·계정·모델 설정을 공유합니다.
18
18
 
19
- 내장 OMP 코어는 **18.12.2**입니다. 별도로 설치한 `omp` CLI의 버전은 웹 업데이트와 독립적이며, 앱에 포함된 CLI를 `omp` 명령으로 사용하는 설치에서는 웹과 같은 코어를 사용합니다.
19
+ 내장 OMP 코어는 **18.12.3**입니다. 별도로 설치한 `omp` CLI의 버전은 웹 업데이트와 독립적이며, 앱에 포함된 CLI를 `omp` 명령으로 사용하는 설치에서는 웹과 같은 코어를 사용합니다.
20
20
 
21
21
  문서 하네스는 기존 Word·Excel·PowerPoint 문서를 열고 편집하거나 변환할 때 LibreOffice를 우선 사용합니다. 원본은 보존하고 출력 결과를 확인하며, 매크로·전용 기능·서식 호환성이 필요하거나 사용자가 지정하면 MS Office를 사용합니다.
22
22
 
@@ -98,7 +98,7 @@ Anthropic 구독 계정이 모두 주간 한도에 닿으면, 미리 둔 예비
98
98
  - 서브에이전트를 발주한 답변 안에 접힌 카드가 붙어, 맡긴 일마다 실행 상태와 Main의 검수 판정을 한 줄로 보여 줍니다. 펼치면 Maker별 시도가 재작업 순서대로 묶여 실행 상태·검사 수·판정과 함께 나오고, 지금 세션에서 실행한 Maker는 「자세히」로 바뀐 파일·검사·판정 사유를 연 뒤 뒤로 돌아올 수 있습니다. 이전 실행의 기록만 남은 Maker는 확인할 수 없다고 표시합니다. 실행이 끝났어도 Main이 판정을 남기지 않았으면 「검수 미기록」으로 표시하며, 끝난 것을 통과로 치지 않습니다. 서브에이전트가 실행 중이거나 판정을 기다리는 동안에는 입력창 위에 한 줄 요약이 고정되고, 누르면 그 카드로 스크롤해 강조합니다.
99
99
  - 실행 중인 서브에이전트는 패널 카드와 답변 카드 상세에 지금 단계(조사 › 구현 › 검증 › 보고)와 경과 시간이 몇 초마다 갱신되어 보입니다. 같은 모델의 과거 실행 가운데 지금보다 오래 걸린 실행들을 근거로 남은 시간 범위와 대략의 진행률을 함께 보여 주며, 표본 수도 표시합니다. 할 일 목록을 쓰는 서브에이전트는 그 진행 기준 추정을 따로 덧붙입니다. 과거 기록이 부족하면 남은 시간은 숨기고, 과거 실행 대부분보다 길어지면 그렇다고 알립니다. 추정이지 약속이 아닙니다.
100
100
  - 대화가 압축돼도 서브에이전트 카드·진행줄과 할 일 목록은 현재 분기의 기록을 이어서 보여 줍니다. 압축으로 원래 답변이 가려진 카드는 압축 지점에서 다시 열 수 있으며, 새로고침해도 복원됩니다. 이후 실행 상태와 검수 판정은 새 관측에 맞춰 갱신됩니다.
101
- - 끝난 턴의 마지막 답변 아래에 변경 파일·검사·실패·미확인 개수를 한 줄로 요약하고, 펼치면 파일과 검사 명령·결과를 봅니다.
101
+ - 끝난 턴의 마지막 답변 아래에 변경 파일·검사·실패·미확인 개수를 한 줄로 요약합니다. 펼치면 그 턴이 거친 작업 흐름(조사 → 수정 → 검사 → 교차리뷰 → 커밋·푸시 → CI → 배포)이 세로 단계로 나오고, 다음에 할 단계와 실패로 되돌아간 회차를 표시합니다. 뒤 단계로 이미 넘어가 거치지 않은 단계는 「건너뜀」, 문서 파일만 커밋한 턴의 배포는 「필요 없음」, 교차리뷰 모델 호출이 실패하거나 답을 읽지 못한 리뷰는 「리뷰 불가」로 표시합니다. 검사는 「타입 검사」·「테스트」 같은 이름과 판정(통과·실패·판정 미확인)이 먼저 보이고, 명령은 「자세히」에서 봅니다. 실행 중에는 입력창 위에 지금 단계와 회차가 보입니다.
102
102
  - 실행 중에 보낸 입력은 「지금 지시」와 「완료 후 요청」으로 나뉘어, 접수·전달 대기·대화에 들어감 단계를 따로 보여 줍니다. 전달을 확인하지 못하면 그렇다고 표시합니다. 스크린샷만 보낸 입력도 「이미지 N개」로 표시합니다. 기본 목록에는 최근 4개만 보이고, 「이전 N개 더 보기」로 나머지를 펼칠 수 있습니다. 실제 대기 중인 입력은 목록에서 숨겨져도 유지되며, 펼친 목록에서 거둘 수 있습니다.
103
103
  - 자식 에이전트의 발화가 해당 턴 아래 대화 흐름에 끼어들어 누가 무슨 말을 했는지 이어서 읽힙니다.
104
104
  - 공개 하네스는 시작을 기다리거나 재작업 중인 에이전트에게 같은 파일을 중복 배정하지 않도록 확인합니다. 잘못된 작업 유형은 발주 준비 단계에서 알려주며, 에이전트 역할을 생략하면 메이커를 사용합니다. 완료 결과와 Main이 검수한 결과의 출처를 구분하고, 재작업 이력과 최종 수용을 따로 남깁니다. 적용 경계는 [하네스 안내](./docs/harness.md#발주와-검수-계약)를 따릅니다.
@@ -9,9 +9,9 @@ const MEMORY_RE = /(const phase1Model = await resolveMemoryModel\(\{[^}]*?fallba
9
9
  const MEMORY_DONE = /const phase1Model = await resolveMemoryModel\(\{[^}]*?fallbackRole: "smol"/;
10
10
  const EXPECTED = {
11
11
  name: 'cuelo',
12
- version: '0.10.39',
12
+ version: '0.10.41',
13
13
  distribution: 'cuelo',
14
- coreVersion: '18.12.2',
14
+ coreVersion: '18.12.3',
15
15
  };
16
16
 
17
17
  // OMP core `src/sdk.ts`: session-scoped AsyncJobManager for a process that hosts
@@ -35,6 +35,8 @@ const SDK_UPSTREAM = [
35
35
  ].join('\n'),
36
36
  },
37
37
  {
38
+ // 18.12.3 puts the root manager's job-widget setup between the manager and the
39
+ // scoped line, so the two halves are verified separately.
38
40
  key: 'sessionAsyncOwnership',
39
41
  text: [
40
42
  '\tconst asyncJobManager = !options.parentTaskPrefix',
@@ -42,10 +44,13 @@ const SDK_UPSTREAM = [
42
44
  '\t\t\t\tmaxRunningJobs: () => Math.min(100, cfgAsyncMaxJobs.get(settings)),',
43
45
  '\t\t\t})',
44
46
  '\t\t: undefined;',
45
- '\tconst scopedAsyncJobManager = asyncJobManager ?? options.asyncJobManager;',
46
47
  '',
47
48
  ].join('\n'),
48
49
  },
50
+ {
51
+ key: 'sessionAsyncScope',
52
+ text: '\tconst scopedAsyncJobManager = asyncJobManager ?? options.asyncJobManager;\n',
53
+ },
49
54
  {
50
55
  key: 'sessionAsyncSingleton',
51
56
  text: '\t\t\tif (asyncJobManager && !AsyncJobManager.instance()) AsyncJobManager.setInstance(asyncJobManager);\n',
@@ -83,7 +88,7 @@ function readNativePackage(target) {
83
88
  throw new Error(`unexpected native package ${packageJson.name}@${packageJson.version}`);
84
89
  }
85
90
  if (!build || build.distribution !== EXPECTED.distribution || build.coreVersion !== EXPECTED.coreVersion) {
86
- throw new Error('native cueloBuild metadata does not match cuelo / core 18.12.2');
91
+ throw new Error('native cueloBuild metadata does not match cuelo / core 18.12.3');
87
92
  }
88
93
  return packageJson;
89
94
  }
@@ -71,6 +71,8 @@ Main은 확정 delta와 그 증거를 누적 검수하며, 최종 수용은 수
71
71
 
72
72
  실제 dependency/synthesis barrier에서만 Main 전용 `wait`를 쓰고(SubAgent에는 없다), 다른 일이 남으면 먼저 한다. 장기 job은 `read proc://<id>`와 산출물로 관측하며 침묵·`running`만으로 진행을 단정하지 않는다. peer 메시지는 `write agent://<id>`, 취소는 `write proc://<id>/kill`, 살아 있어야 하는 프로세스는 세션마다 고유한 이름의 `bash` `name` 서비스다. 결과 전달·취소·개입·yield 전 job 회수는 `rule://subagent` 「병렬과 대기」와 `harness-policy.json` `mainLane.waitContract`가 정본이다.
73
73
 
74
+ **Maker가 도는 동안 Main이 먼저 할 일:** 발주 직후 곧바로 `wait`로 넘어가지 않는다. Maker 소유 경로와 겹치지 않는 Main 몫을 먼저 끝낸다. 사용자에게 보일 문서(CHANGELOG·README·`docs/`), `HANDOFF.md`·`doc/README.md`와 작업 기록 초안, 확정된 delta의 읽기 전용 중간 검수, 다음 단계의 검사 명령·acceptance 준비가 여기에 든다. 남은 일이 모두 Maker 결과에 달렸을 때만 `wait`한다. 진행 감시 알림마다 상태만 확인하고 다시 `wait`하는 순환을 Main의 일로 삼지 않는다(2026-10-19 사용자 지적: Maker 구현 30분 넘게 Main이 wait·상태 확인만 반복했다). Maker 소유 경로는 대신 고치지 않으며, 떼어 오려면 그 Maker에게 먼저 넘겨받는다.
75
+
74
76
  **TODO는 실시간 작업 현황판이다.** Main은 착수·검증 완료·외부 대기·재개·실패/재작업의 상태 전환을 관측한 자리에서 해당 항목을 즉시 갱신한다. 다음 단계나 최종 보고까지 미루거나 채팅 설명으로 대신하지 않는다. 사용자 interjection에는 먼저 즉답한 뒤 같은 턴에서 필요한 갱신을 잇고, 진행 보고 때는 TODO와 실제 상태가 일치하는지 확인한다.
75
77
 
76
78
  - 완료 증거를 수용하면 바로 `done`한다. child의 종료만으로 완료 처리하지 않으며, 국소 구현·검증과 통합·배포 완료를 구분한다.
@@ -1,4 +1,4 @@
1
- <!-- source-fingerprint: a23e3904aee81900 -->
1
+ <!-- source-fingerprint: 3a3ea35f2d33ece5 -->
2
2
  # Global Agent Instructions
3
3
 
4
4
  (Model-facing English copy of the Korean source `AGENTS.md`. All user-facing prose stays Korean.)
@@ -74,6 +74,8 @@ The change owner runs verification; Main judges the evidence. A Maker runs the m
74
74
 
75
75
  Use Main-only `wait` (subagents have none) only at real dependency/synthesis barriers; do other remaining work first. Observe long jobs through `read proc://<id>` and artifacts; never conclude progress from silence or `running` alone. Peer messages are `write agent://<id>`, cancellation is `write proc://<id>/kill`, and processes that must stay up are `bash` `name` services with a session-unique name. Delivery, cancellation, intervention, collecting jobs before yield: `rule://subagent` 「병렬과 대기」 and `harness-policy.json` `mainLane.waitContract`.
76
76
 
77
+ **What Main does first while a Maker runs:** never move straight to `wait` after dispatching. First finish Main's own share that does not overlap the Maker's owned paths: user-visible docs (CHANGELOG, README, `docs/`), `HANDOFF.md`·`doc/README.md` and work-record drafts, read-only interim review of settled deltas, and the next step's check commands and acceptance. `wait` only when everything left depends on the Maker's result. Never treat "check status on each progress-supervision notice, then `wait` again" as Main's work (user feedback, 2026-10-19: for over 30 minutes of Maker implementation, Main only repeated wait and status checks). Never edit a Maker's owned paths on its behalf; to take a piece over, get it handed over by that Maker first.
78
+
77
79
  **TODO is a live work board.** Main updates the relevant item as soon as it observes a transition: starting, verified completion, external waiting, resuming, or failure/rework. Do not postpone updates until the next phase or final report, or substitute chat narration for them. On a user interjection, reply first and then make the needed update in the same turn. During progress reports, check that TODO matches the actual state.
78
80
 
79
81
  - Mark `done` immediately after accepting completion evidence. A child's termination alone is not acceptance; distinguish local implementation/verification from integrated release/deployment completion.
@@ -13119,6 +13119,12 @@ function parentSubagentServiceTiers(
13119
13119
  marker: 'if(!a.endsWith(".jsonl")||a.includes(".bak")||D_e(a))continue;let l=a.slice(0,-6),',
13120
13120
  anchor: 'if(!a.endsWith(".jsonl")||a.includes(".bak")||D_e(a))continue;let l=a.slice(0,-6),',
13121
13121
  patched: 'if(!a.endsWith(".jsonl")||a.includes(".bak")||D_e(a))continue;let l=a.slice(0,-6),',
13122
+ }, {
13123
+ // 2026-10-20 18.12.3: TPe는 같은 isAdvisorTranscriptName 함수다(`e===SPe||e.startsWith(...)`). minified 이름만 바뀌었다(RETIRE 유지).
13124
+ file: "dist/cli.js",
13125
+ marker: 'if(!a.endsWith(".jsonl")||a.includes(".bak")||TPe(a))continue;let l=a.slice(0,-6),',
13126
+ anchor: 'if(!a.endsWith(".jsonl")||a.includes(".bak")||TPe(a))continue;let l=a.slice(0,-6),',
13127
+ patched: 'if(!a.endsWith(".jsonl")||a.includes(".bak")||TPe(a))continue;let l=a.slice(0,-6),',
13122
13128
  }],
13123
13129
  },
13124
13130
  // 18.4.5 는 /ratchet 을 새로 넣으면서 `src/ratchet/prelude.ts`(코드)와 `prelude.js`(eval 텍스트 자산)를 같은 stem 으로
@@ -17482,6 +17488,115 @@ for (const update of EDITS.splice(watchFollowupStart, watchFollowupEnd - watchFo
17482
17488
  if (cutSchema === 0) throw new Error("isolated 마커 단축: schema 대상 후보가 없다");
17483
17489
  if (cutRequest === 0) throw new Error("isolated 마커 단축: 요청 no-op 후보가 없다");
17484
17490
  }
17491
+ // 2026-10-20 18.12.3 이식. 18.12.2 이하 후보는 한 바이트도 바꾸지 않고, 18.12.3 순정에서 앵커를 잃은 7개 항목마다 그 판에만 성립하는
17492
+ // 후보를 더한다. marker 를 공유하는 후보는 18.12.3 에만 있는 문자열로 requires(새 후보)·excludes(옛 후보)를 짝지어 서로 배타적으로 둔다.
17493
+ // - RETIRE: computer.md 의 control.acquire 줄은 upstream 이 반환 모양({active:false, reason})을 덧붙였을 뿐 takeover 안내는 이미 upstream 이
17494
+ // 맡는다(18.12.2 RETIRE 유지). 번들의 advisor transcript filter 는 minified 이름만 TPe 로 바뀌었다.
17495
+ // - ADAPT: upstream 이 #16305 로 "부모 mid-turn 요청이 소비된 뒤에야 그 turn 이 부모의 것"을 자기 방식(IrcBridge.#parentSteers·
17496
+ // session.isParentIrcSteer·ownerPrompted)으로 구현했다. CUELO 의 PARENT_REQUEST_STEER 표식(부모 요청 preemption)·입양(bracket) 장부는
17497
+ // 같은 의미 위에 그대로 올리고, upstream 의 broadcast 구분(광고 leg 는 부모의 요청이 아니다)을 따른다. 입양 bracket 의 첫 등록은
17498
+ // yield 시점으로 미룬다(consumed 등록은 upstream 의 ownerPrompted 가 맡는다).
17499
+ // computer worker 의 confirmControl 반환형이 boolean → ControlVerdict 로 바뀌었고 supervisor 가 그 타입을 import 한다.
17500
+ {
17501
+ const one = (predicate, label) => {
17502
+ const found = EDITS.filter(predicate);
17503
+ if (found.length !== 1) throw new Error(`18.12.3 후보를 만들 수 없다: ${label} ${found.length}/1`);
17504
+ return found[0];
17505
+ };
17506
+ const swap = (text, from, to) => {
17507
+ const found = text.split(from).length - 1;
17508
+ if (found !== 1) throw new Error(`18.12.3 후보를 만들 수 없다: ${JSON.stringify(from.slice(0, 80))} ${found}/1`);
17509
+ return text.replace(from, () => to);
17510
+ };
17511
+ const noop = (file, text, extra = {}) => ({ file, marker: text, anchor: text, patched: text, ...extra });
17512
+ const exclude = (candidate, text) => {
17513
+ candidate.excludes = candidate.excludes === undefined ? text : [candidate.excludes, text].flat().concat();
17514
+ };
17515
+
17516
+ // RETIRE: computer.md control.acquire 줄(반환 모양 설명만 늘었다).
17517
+ const acquireDoc = one(entry => entry.file === "src/prompts/tools/computer.md" && entry.marker === "NEVER acquire control to work around", "computer.md acquire");
17518
+ acquireDoc.alternates.push(noop(acquireDoc.file, "- `computer.control.acquire({reason})` requires live human confirmation for task-scoped control and returns `{active: true}` or `{active: false, reason}`:"));
17519
+
17520
+ // ADAPT: IrcBridge.deliver 의 부모 steer. upstream 은 steer 를 `#parentSteers` WeakSet 에 올린다(broadcast leg 제외).
17521
+ const PARENT_STEERS_18123 = "readonly #parentSteers = new WeakSet<AgentMessage>();";
17522
+ const bridge = one(entry => entry.file === "src/session/irc-bridge.ts" && entry.marker === "Reflect.set(steered, PARENT_REQUEST_STEER, true)", "irc-bridge parent steer");
17523
+ const bridgeLegacy = bridge.alternates[0];
17524
+ exclude(bridgeLegacy, PARENT_STEERS_18123);
17525
+ const BRIDGE_TAIL = bridgeLegacy.patched.slice(bridgeLegacy.patched.indexOf("\t\t\t\tthis.#host.agent.steer(steered);\n") + "\t\t\t\tthis.#host.agent.steer(steered);\n".length);
17526
+ const bridgeAnchor = "\t\t\t\t// A broadcast leg asks no one in particular: consuming it never makes the turn the parent's.\n\t\t\t\tif (msg.broadcast !== true) this.#parentSteers.add(steer);\n\t\t\t\tthis.#host.agent.steer(steer);\n";
17527
+ bridge.alternates.push({
17528
+ file: bridge.file,
17529
+ requires: PARENT_STEERS_18123,
17530
+ marker: "Reflect.set(steer, PARENT_REQUEST_STEER, true)",
17531
+ anchor: bridgeAnchor + "\t\t\t} else {",
17532
+ patched: swap(
17533
+ bridgeAnchor +
17534
+ swap(BRIDGE_TAIL, "\t\t\t\tif (msg.wakeRelay !== true) {\n", "\t\t\t\tif (parentRequest) {\n").replaceAll("{ steered, record }", "{ steered: steer, record }"),
17535
+ bridgeAnchor,
17536
+ "\t\t\t\t// A relay (wakeRelay) or a broadcast leg is no new request to the parent: only a direct parent request marks the steer.\n\t\t\t\tconst parentRequest = msg.wakeRelay !== true && msg.broadcast !== true;\n\t\t\t\tif (parentRequest) Reflect.set(steer, PARENT_REQUEST_STEER, true);\n" +
17537
+ bridgeAnchor,
17538
+ ),
17539
+ });
17540
+ {
17541
+ // patched 본문이 그 자리에 들어갔는지 방어한다(BRIDGE_TAIL 은 18.12.2 후보의 "steer 뒤" 구간 그대로다).
17542
+ const added = bridge.alternates.at(-1);
17543
+ if (!added.patched.includes("this.queueParentSteerRelay({ steered: steer, record });") || !added.patched.includes("if (parentRequest) {")) {
17544
+ throw new Error("18.12.3 irc-bridge 후보 본문이 기대와 다르다");
17545
+ }
17546
+ }
17547
+
17548
+ // ADAPT: 입양된 bracket(runningTurn)은 부모가 깨운 일이 아니다. 소비된 steer 는 upstream 의 ownerPrompted 가 등록하고,
17549
+ // 그 전에는 yield 시점 등록(onYieldAccepted)만 남긴다.
17550
+ const OWNER_PROMPTED = "let ownerPrompted = false;";
17551
+ const wakeJob = one(entry => entry.file === "src/task/executor.ts" && entry.marker === "if (bracket?.runningTurn !== true && wakeSources(records, id).some(source => source.from === ownerId)) {", "executor ownerWoken register");
17552
+ wakeJob.alternates.push({
17553
+ file: wakeJob.file,
17554
+ requires: OWNER_PROMPTED,
17555
+ marker: "if (bracket?.runningTurn !== true && ownerWoken) registerWakeJob();",
17556
+ anchor: "\t\tif (ownerWoken) registerWakeJob();\n",
17557
+ patched:
17558
+ "\t\t// A bracket opened over a turn that was already running (a parent steer\n\t\t// adopted mid-turn) is not parent-woken work: that turn may leave the steer\n\t\t// queued, and the continuation that consumes it owns the answer (ownerPrompted\n\t\t// registers it then). Keep the yield-time registration for it so a stranded turn\n\t\t// stays silent.\n\t\tif (bracket?.runningTurn !== true && ownerWoken) registerWakeJob();\n",
17559
+ });
17560
+
17561
+ // ADAPT: wake turn 마감의 ircWakeTurn 표식. upstream 의 publishMessageResult 줄이 ownerPrompted 를 품었다.
17562
+ const PUBLISH_18123 = "\t\t\t\t\tpublishMessageResult: ownerWoken || ownerPrompted || userPrompted,";
17563
+ const wakeFlag = one(entry => entry.file === "src/task/executor.ts" && entry.marker === "\t\t\t\t\tircWakeTurn: true,", "executor ircWakeTurn");
17564
+ exclude(wakeFlag, PUBLISH_18123);
17565
+ wakeFlag.alternates.push({
17566
+ file: wakeFlag.file,
17567
+ requires: PUBLISH_18123,
17568
+ marker: "\t\t\t\t\tircWakeTurn: true,",
17569
+ anchor: "\t\t\t\t\tfollowUpTurn: true,\n" + PUBLISH_18123 + "\n",
17570
+ patched: "\t\t\t\t\tfollowUpTurn: true,\n\t\t\t\t\tircWakeTurn: true,\n" + PUBLISH_18123 + "\n",
17571
+ });
17572
+
17573
+ // ADAPT: computer worker 의 ComputerRunContext. confirmControl 이 boolean 대신 ControlVerdict 를 돌려준다.
17574
+ const VERDICT_18123 = "confirmControl(reason: string): Promise<ControlVerdict>;";
17575
+ const runContext = one(entry => entry.file === "src/tools/computer/worker.ts" && entry.marker === "\tgoalProbe?: boolean;", "worker goalProbe");
17576
+ const runContextBool = runContext.alternates[0];
17577
+ exclude(runContext, VERDICT_18123);
17578
+ runContext.alternates.push({
17579
+ file: runContext.file,
17580
+ requires: VERDICT_18123,
17581
+ marker: runContextBool.marker,
17582
+ anchor: swap(runContextBool.anchor, "confirmControl(reason: string): Promise<boolean>;", VERDICT_18123),
17583
+ patched: swap(runContextBool.patched, "confirmControl(reason: string): Promise<boolean>;", VERDICT_18123),
17584
+ });
17585
+
17586
+ // ADAPT: computer supervisor import. upstream 이 `type ControlVerdict` 를 더했다. CUELO 가 더하는 두 이름은 그대로다.
17587
+ const VERDICT_IMPORT = "\ttype ControlVerdict,\n";
17588
+ const supervisorImport = one(entry => entry.file === "src/tools/computer/supervisor.ts" && entry.marker === "\tComputerFrameReader,\n\ttype ComputerRunOk,", "supervisor import");
17589
+ const supervisorEscape = supervisorImport.alternates[0];
17590
+ exclude(supervisorEscape, VERDICT_IMPORT);
17591
+ supervisorImport.alternates.push({
17592
+ file: supervisorImport.file,
17593
+ requires: VERDICT_IMPORT,
17594
+ marker: supervisorEscape.marker,
17595
+ anchor: swap(supervisorEscape.anchor, "\ttype ComputerWorkerOutbound,\n", "\ttype ComputerWorkerOutbound,\n" + VERDICT_IMPORT),
17596
+ patched: swap(supervisorEscape.patched, "\tencodeComputerFrame,\n", "\t" + "encodeComputerFrame,\n" + VERDICT_IMPORT),
17597
+ });
17598
+ }
17599
+
17485
17600
 
17486
17601
 
17487
17602
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cuelo",
3
- "version": "0.10.39",
3
+ "version": "0.10.41",
4
4
  "description": "CUELO — open-source AI coding agent workspace and harness for omp (oh-my-pi)",
5
5
  "homepage": "https://github.com/gim47656-ship-it/CUELO#readme",
6
6
  "repository": {
@@ -30,7 +30,7 @@
30
30
  "license": "MIT",
31
31
  "cueloBuild": {
32
32
  "distribution": "cuelo",
33
- "coreVersion": "18.12.2"
33
+ "coreVersion": "18.12.3"
34
34
  },
35
35
  "engines": {
36
36
  "node": ">=22.19.0",
@@ -89,11 +89,11 @@
89
89
  "test:coverage": "bun test --coverage ./app ./components ./hooks ./lib ./public ./bin ./install.test.mjs"
90
90
  },
91
91
  "dependencies": {
92
- "@oh-my-pi/pi-agent-core": "18.12.2",
93
- "@oh-my-pi/pi-ai": "18.12.2",
94
- "@oh-my-pi/pi-coding-agent": "18.12.2",
95
- "@oh-my-pi/pi-tui": "18.12.2",
96
- "@oh-my-pi/pi-utils": "18.12.2",
92
+ "@oh-my-pi/pi-agent-core": "18.12.3",
93
+ "@oh-my-pi/pi-ai": "18.12.3",
94
+ "@oh-my-pi/pi-coding-agent": "18.12.3",
95
+ "@oh-my-pi/pi-tui": "18.12.3",
96
+ "@oh-my-pi/pi-utils": "18.12.3",
97
97
  "@seed-design/css": "2.8.0",
98
98
  "@seed-design/react": "2.4.1",
99
99
  "@seed-design/tailwind4-theme": "2.4.0",
@@ -1 +0,0 @@
1
- .CloudProjectPicker_dialog__Dx2Dt{width:min(680px,calc(100vw - 24px));max-height:min(760px,calc(100dvh - 32px));padding:0;border:1px solid var(--border);border-radius:12px;background:var(--bg);color:var(--text);overflow:hidden}.CloudProjectPicker_dialog__Dx2Dt::backdrop{background:var(--seed-color-bg-overlay)}.CloudProjectPicker_form__MpEsn{display:flex;flex-direction:column;max-height:inherit}.CloudProjectPicker_header__UcYbB{padding:20px 24px 16px;flex-shrink:0}.CloudProjectPicker_header__UcYbB h2{margin:0;font-size:20px;font-weight:650;letter-spacing:-.025em}.CloudProjectPicker_header__UcYbB p{margin:8px 0 0;color:var(--text-muted);font-size:14px;line-height:1.5}.CloudProjectPicker_sources__6cl_0{display:flex;align-items:center;gap:8px;padding:0 24px 12px;border-bottom:1px solid var(--border);flex-shrink:0}.CloudProjectPicker_activeSource__NptfQ,.CloudProjectPicker_sources__6cl_0 button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:8px 14px;border:1px solid transparent;border-radius:7px;font-size:14px}.CloudProjectPicker_sources__6cl_0 button{background:none;color:var(--text-muted);cursor:pointer}.CloudProjectPicker_activeSource__NptfQ{background:var(--bg-selected);color:var(--text);font-weight:600}.CloudProjectPicker_body__vKMBC{padding:20px 24px;overflow-y:auto;min-height:0;display:flex;flex-direction:column;gap:20px}.CloudProjectPicker_account__gb9Qo{display:flex;align-items:center;justify-content:space-between;gap:16px}.CloudProjectPicker_account__gb9Qo>div{min-width:0}.CloudProjectPicker_account__gb9Qo strong{font-size:14px;overflow-wrap:anywhere}.CloudProjectPicker_account__gb9Qo p,.CloudProjectPicker_repositories__WSBt6 p{color:var(--text-muted);font-size:13px;line-height:1.5;margin:6px 0 0}.CloudProjectPicker_loginLink__Gu5XC,.CloudProjectPicker_primary__voWx5,.CloudProjectPicker_secondary__hlaFU{min-height:44px;padding:9px 14px;border-radius:7px;border:1px solid var(--border);font:inherit;font-size:14px;font-weight:550;cursor:pointer;white-space:nowrap;text-align:center}.CloudProjectPicker_secondary__hlaFU{color:var(--text);background:var(--bg-panel)}.CloudProjectPicker_primary__voWx5{color:var(--seed-color-fg-neutral-inverted);background:var(--seed-color-bg-neutral-inverted);border-color:transparent}.CloudProjectPicker_dialog__Dx2Dt button:hover:not(:disabled),.CloudProjectPicker_sources__6cl_0 button:hover:not(:disabled){background:var(--bg-hover);color:var(--text)}.CloudProjectPicker_dialog__Dx2Dt .CloudProjectPicker_primary__voWx5:hover:not(:disabled){background:var(--seed-color-bg-neutral-inverted-pressed);color:var(--seed-color-fg-neutral-inverted)}.CloudProjectPicker_dialog__Dx2Dt button:active:not(:disabled){opacity:.8}.CloudProjectPicker_dialog__Dx2Dt :is(button,input,a):focus-visible{outline:2px solid var(--seed-color-stroke-focus-ring);outline-offset:3px}.CloudProjectPicker_dialog__Dx2Dt button:disabled{opacity:.5;cursor:default}.CloudProjectPicker_login__c0qSl{display:flex;flex-direction:column;gap:12px;border:1px solid var(--border);padding:16px;border-radius:8px;background:var(--bg-panel)}.CloudProjectPicker_login__c0qSl p{font-size:14px;line-height:1.5;margin:0}.CloudProjectPicker_codeRow__jo8vy{display:flex;justify-content:space-between;gap:12px;align-items:center}.CloudProjectPicker_codeRow__jo8vy code{font-family:var(--font-mono);font-size:22px;letter-spacing:.06em;user-select:all}.CloudProjectPicker_loginLink__Gu5XC{display:block;color:var(--text);text-decoration:none;background:var(--bg-hover)}.CloudProjectPicker_login__c0qSl small,.CloudProjectPicker_repositoryInput__HWhvu small{font-size:12px;line-height:1.5;color:var(--text-muted)}.CloudProjectPicker_repositories__WSBt6,.CloudProjectPicker_repositoryInput__HWhvu{display:flex;flex-direction:column;gap:8px}.CloudProjectPicker_body__vKMBC label{font-size:13px;font-weight:600}.CloudProjectPicker_body__vKMBC input{width:100%;box-sizing:border-box;min-height:44px;border:1px solid var(--border);background:var(--bg-panel);color:var(--text);border-radius:7px;padding:10px 12px;font:inherit;font-size:16px}.CloudProjectPicker_body__vKMBC input::placeholder{color:var(--text-muted)}.CloudProjectPicker_list__0BSYU{padding:0;margin:4px 0 0;list-style:none;display:flex;flex-direction:column;gap:4px}.CloudProjectPicker_repo__L4VaW{display:flex;flex-direction:column;gap:6px;width:100%;min-height:56px;padding:12px;text-align:left;border:1px solid transparent;border-radius:7px;color:var(--text);background:none;cursor:pointer}.CloudProjectPicker_repo__L4VaW[aria-pressed=true]{border-color:var(--accent);background:var(--bg-selected)}.CloudProjectPicker_repoHeading__3Pnq1{display:flex;justify-content:space-between;gap:12px;width:100%;align-items:flex-start}.CloudProjectPicker_repoHeading__3Pnq1 strong{font-family:var(--font-mono);font-size:13px;overflow-wrap:anywhere;min-width:0}.CloudProjectPicker_repoHeading__3Pnq1 small{font-size:11px;color:var(--text-muted);flex-shrink:0;padding-top:1px}.CloudProjectPicker_repoDescription__YzPtB{color:var(--text-muted);font-size:13px;line-height:1.5;overflow-wrap:anywhere}.CloudProjectPicker_error__dAVsm{color:var(--danger);font-size:13px;line-height:1.5;overflow-wrap:anywhere}.CloudProjectPicker_error__dAVsm p{margin:6px 0 12px}.CloudProjectPicker_progress__OwvG9{font-size:13px;margin:0;color:var(--text-muted);line-height:1.5}.CloudProjectPicker_footer__mmrGI{display:flex;gap:10px;justify-content:flex-end;padding:16px 24px;border-top:1px solid var(--border);flex-shrink:0}@media (max-width:600px){.CloudProjectPicker_dialog__Dx2Dt{width:calc(100vw - 16px);max-height:calc(100dvh - 24px)}.CloudProjectPicker_body__vKMBC,.CloudProjectPicker_header__UcYbB{padding:16px}.CloudProjectPicker_sources__6cl_0{padding:0 16px 12px}.CloudProjectPicker_footer__mmrGI{padding:12px 16px max(12px,env(safe-area-inset-bottom))}.CloudProjectPicker_footer__mmrGI .CloudProjectPicker_primary__voWx5{flex:1}.CloudProjectPicker_account__gb9Qo{align-items:flex-start;flex-wrap:wrap;gap:12px}.CloudProjectPicker_codeRow__jo8vy{flex-wrap:wrap}}.answer-dispatch{margin:4px 0 8px;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--bg-panel);min-width:0;max-width:100%}.answer-dispatch-toggle,.answer-summary-toggle{display:flex;align-items:center;gap:8px;width:100%;min-height:44px;padding:6px 12px;border:none;background:transparent;color:var(--text);font:inherit;text-align:left;cursor:pointer;border-radius:var(--radius-control);touch-action:manipulation}.answer-dispatch-toggle:hover,.answer-summary-toggle:hover{background:var(--bg-hover)}.answer-delivery-remove:focus-visible,.answer-delivery-toggle:focus-visible,.answer-dispatch-toggle:focus-visible,.answer-link:focus-visible,.answer-summary-toggle:focus-visible{outline:2px solid var(--accent-ring,var(--accent));outline-offset:2px}.answer-dispatch-heading{flex-shrink:0;font-size:13px;font-weight:600}.answer-dispatch-tally{flex:1 1 auto;min-width:0;font-size:12px;color:var(--text-muted);overflow-wrap:anywhere}.answer-chevron{flex-shrink:0;color:var(--text-dim);transition:transform .15s}[aria-expanded=true]>.answer-chevron{transform:rotate(180deg)}.answer-dispatch-list{list-style:none;margin:0;padding:0 12px 8px;display:flex;flex-direction:column;gap:6px}.answer-dispatch-row{min-width:0;padding-top:6px;border-top:1px solid var(--border)}.answer-dispatch-line,.answer-summary-maker{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:10px;row-gap:4px;min-width:0}.answer-dispatch-name{flex:1 1 12rem;min-width:0;font-size:13px;color:var(--text);overflow-wrap:anywhere}.answer-dispatch-progress{margin-top:3px;font-size:12px;color:var(--text-muted);overflow-wrap:anywhere}.answer-status-pair{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:12px;min-width:0}.answer-status-arrow{color:var(--text-dim)}.answer-status-run,.answer-status-verdict{padding:1px 7px;border:1px solid var(--border);border-radius:var(--radius-control);white-space:nowrap;color:var(--text-muted)}.answer-status-run[data-state=dispatching],.answer-status-run[data-state=pending],.answer-status-run[data-state=running]{color:var(--accent);border-color:var(--accent-line,var(--border))}.answer-status-run[data-state=aborted],.answer-status-run[data-state=failed]{color:var(--danger);border-color:var(--danger-line)}.answer-status-run[data-state=unobserved],.answer-status-verdict[data-verdict=none]{border-style:dashed;color:var(--text-dim)}.answer-status-verdict[data-verdict=accepted]{color:var(--success);border-color:var(--success-line)}.answer-status-verdict[data-verdict=held],.answer-status-verdict[data-verdict=rework]{color:var(--warning);border-color:var(--warning-line)}.answer-dispatch-detail{display:grid;grid-template-columns:minmax(0,1fr);gap:3px;margin:6px 0 2px;font-size:12px}.answer-dispatch-detail>div{display:flex;flex-wrap:wrap;column-gap:8px;min-width:0}.answer-dispatch-detail dt{flex:0 0 6.5rem;color:var(--text-dim)}.answer-dispatch-detail dd{flex:1 1 12rem;min-width:0;margin:0;color:var(--text-muted);overflow-wrap:anywhere}.answer-check-command,.answer-mono{font-family:var(--font-mono)}.answer-dispatch-links{display:flex;flex-wrap:wrap;gap:8px;padding:0 12px 8px}.answer-link{min-height:44px;padding:0 12px;border:1px solid var(--border);border-radius:var(--radius-control);background:transparent;color:var(--text);font:inherit;font-size:12px;cursor:pointer;touch-action:manipulation}.answer-link:hover{background:var(--bg-hover)}.answer-dispatch-flash{animation:answer-dispatch-flash 1.8s ease-out}@keyframes answer-dispatch-flash{0%,35%{background-color:var(--accent-soft);box-shadow:0 0 0 2px var(--accent-line)}}.answer-dispatch-row[data-focused] .answer-dispatch-name{font-weight:600}.answer-dispatch-line.is-lane{align-items:center}.answer-dispatch-checks{white-space:nowrap;color:var(--text-muted);font-variant-numeric:tabular-nums}.answer-dispatch-checks[data-checks=failed]{color:var(--danger)}.answer-dispatch-checks[data-checks=loading],.answer-dispatch-checks[data-checks=unobserved],.answer-dispatch-unavailable{color:var(--text-dim)}.answer-dispatch-unavailable{font-size:12px;white-space:nowrap}.answer-link.answer-dispatch-open{min-height:28px;padding:0 10px}@media (pointer:coarse){.answer-link.answer-dispatch-open{min-height:44px}}.answer-dispatch-row[data-focused] .answer-dispatch-open{border-color:var(--accent-line,var(--border))}.answer-dispatch-attempts{display:flex;flex-wrap:wrap;column-gap:6px;margin:4px 0 0;padding:0;list-style:none;font-size:12px;color:var(--text-muted)}.answer-dispatch-attempts>li[data-verdict=accepted]{color:var(--success)}.answer-dispatch-attempts>li[data-verdict=held],.answer-dispatch-attempts>li[data-verdict=rework]{color:var(--warning)}.run-status-line.answer-dock-line{align-items:center;inline-size:100%;font-weight:inherit;line-height:inherit;text-align:start;cursor:pointer;touch-action:manipulation}.run-status-line.answer-dock-line:hover{background:var(--bg-hover)}.run-status-line.answer-dock-line:focus-visible{outline:2px solid var(--accent-ring,var(--accent));outline-offset:2px}.answer-dock-counts{display:inline-flex;flex-shrink:0;gap:6px}.answer-dock-count{padding:0 6px;border:1px solid var(--border);border-radius:var(--radius-control);white-space:nowrap}.answer-dock-count[data-phase=running]{color:var(--accent);border-color:var(--accent-line,var(--border))}.answer-dock-count[data-phase=awaiting]{border-style:dashed;color:var(--text-muted)}.answer-dock-title{flex:1;min-inline-size:0;overflow:hidden;color:var(--text);text-overflow:ellipsis;white-space:nowrap}.answer-dock-go{flex-shrink:0;color:var(--text-dim)}.answer-summary{margin-top:6px;min-width:0}.answer-summary-toggle{width:auto;max-width:100%;padding:6px 8px;margin-left:-8px}.answer-summary-text{min-width:0;font-size:12px;color:var(--text-muted);overflow-wrap:anywhere}.answer-summary-text[data-unverified]{color:var(--warning)}.answer-summary-body{display:flex;flex-direction:column;gap:10px;padding:6px 0 4px;min-width:0;container-name:answer-summary;container-type:inline-size}.answer-summary-heading{margin:0 0 4px;font-size:11px;font-weight:600;color:var(--text-dim)}.answer-summary-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--text-muted);min-width:0}.answer-summary-list>li{min-width:0;overflow-wrap:anywhere}.answer-check{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:10px}.answer-check-command{flex:1 1 14rem;min-width:0;font-size:12px;color:var(--text);overflow-wrap:anywhere}.answer-check-result{white-space:nowrap;color:var(--text-dim)}.answer-check[data-state=passed] .answer-check-result{color:var(--success)}.answer-check[data-state=failed] .answer-check-result{color:var(--danger)}.answer-maker-time{display:grid;grid-template-columns:minmax(0,12rem) minmax(3rem,1fr) auto;align-items:center;column-gap:10px;row-gap:2px}.answer-maker-time-name{min-width:0;overflow:hidden;color:var(--text);text-overflow:ellipsis;white-space:nowrap}.answer-maker-time-track{position:relative;height:6px;min-width:0;border-radius:3px;background:var(--bg-hover);overflow:hidden}.answer-maker-time-bar{position:absolute;top:0;bottom:0;min-width:2px;border-radius:3px;background:var(--text-dim)}.answer-maker-time[data-run=completed] .answer-maker-time-bar{background:var(--accent)}.answer-maker-time[data-run=aborted] .answer-maker-time-bar,.answer-maker-time[data-run=failed] .answer-maker-time-bar{background:var(--danger)}.answer-maker-time-value{white-space:nowrap;color:var(--text-muted);font-variant-numeric:tabular-nums}.answer-maker-time[data-run=aborted] .answer-maker-time-value,.answer-maker-time[data-run=failed] .answer-maker-time-value{color:var(--danger)}.answer-maker-time-missing{grid-column:2/-1;color:var(--text-dim)}@container answer-summary (max-width: 420px){.answer-maker-time{grid-template-columns:minmax(0,1fr) auto}.answer-maker-time-missing,.answer-maker-time-name{grid-column:1/-1}}.answer-remaining{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:8px}.answer-remaining-status{flex-shrink:0;white-space:nowrap;color:var(--text-dim)}.answer-remaining[data-status=in_progress] .answer-remaining-status{color:var(--accent)}.answer-remaining-blocker,.answer-remaining[data-status=blocked] .answer-remaining-status{color:var(--warning)}.answer-remaining-text{flex:1 1 12rem;min-width:0;color:var(--text)}.answer-remaining-blocker{flex-basis:100%}.answer-summary-empty{margin:0;font-size:12px;color:var(--text-dim)}.answer-delivery-list{list-style:none;margin:0;padding:0}.answer-delivery-row{display:flex;flex-wrap:wrap;align-items:center;column-gap:8px;row-gap:2px;min-height:32px;padding:3px 4px 3px 10px;font-size:12px;color:var(--text-muted);min-width:0}.answer-delivery-kind{flex-shrink:0;padding:1px 7px;border:1px solid var(--border);border-radius:var(--radius-control);font-size:11px;color:var(--text-dim)}.answer-delivery-row[data-kind=steer] .answer-delivery-kind{color:var(--accent);border-color:var(--accent-line,var(--border))}.answer-delivery-text{flex:1 1 8rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.answer-delivery-stage{flex-shrink:0;font-size:11px;color:var(--text-dim)}.answer-delivery-row[data-stage=delivered] .answer-delivery-stage{color:var(--success)}.answer-delivery-row[data-stage=failed] .answer-delivery-stage{color:var(--danger)}.answer-delivery-row[data-stage=unconfirmed] .answer-delivery-stage{color:var(--warning)}.answer-delivery-remove{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;border-radius:var(--radius-control);background:transparent;color:var(--text-dim);cursor:pointer;touch-action:manipulation}.answer-delivery-remove:hover{background:var(--bg-hover);color:var(--text)}.answer-delivery-toggle{display:block;min-height:32px;padding:3px 10px;border:none;border-radius:var(--radius-control);background:transparent;color:var(--text-dim);font-size:11px;text-align:left;cursor:pointer;touch-action:manipulation}.answer-delivery-toggle:hover{background:var(--bg-hover);color:var(--text)}@media (max-width:640px),(pointer:coarse){.answer-delivery-remove{width:44px;height:44px}.answer-delivery-toggle,.answer-summary-toggle{min-height:44px}.run-status-line.answer-dock-line{min-block-size:44px}}@media (prefers-reduced-motion:reduce){.answer-chevron{transition:none}.answer-dispatch-flash{animation:none;outline:2px solid var(--accent-line);outline-offset:2px}}.SearchableSelect_root__FMhaH{position:relative;width:100%;min-width:0;font-family:var(--font-mono)}.SearchableSelect_trigger__eqMdt{width:100%;min-width:0;height:34px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 9px 0 10px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);cursor:pointer;font:inherit;font-size:11px;text-align:left}.SearchableSelect_trigger__eqMdt:hover:not(:disabled){border-color:color-mix(in srgb,var(--accent) 55%,var(--border));background:var(--bg-hover)}.SearchableSelect_trigger__eqMdt:focus-visible{outline:none;border-color:var(--accent)}.SearchableSelect_trigger__eqMdt:disabled{cursor:wait;opacity:.55}.SearchableSelect_placeholder__Hkg33,.SearchableSelect_value__eJ2RU{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.SearchableSelect_placeholder__Hkg33{color:var(--text-dim)}.SearchableSelect_chevron__DSTnM{width:12px;height:12px;flex:0 0 auto;fill:none;stroke:var(--text-dim);stroke-linecap:round;stroke-linejoin:round;stroke-width:1.4}.SearchableSelect_popover__5VxMd{position:absolute;z-index:120;right:0;display:flex;flex-direction:column;width:max(100%,240px);overflow:hidden;border:1px solid color-mix(in srgb,var(--border) 82%,var(--accent));border-radius:8px;background:var(--bg-panel);box-shadow:0 14px 34px color-mix(in srgb,var(--bg) 72%,transparent)}.SearchableSelect_searchWrap__IoKKk{position:relative;flex:0 0 auto;padding:7px;border-bottom:1px solid var(--border)}.SearchableSelect_searchIcon__A6f0C{position:absolute;left:16px;top:50%;width:13px;height:13px;transform:translateY(-50%);fill:none;stroke:var(--text-dim);stroke-linecap:round;stroke-width:1.3;pointer-events:none}.SearchableSelect_search__W_1al{width:100%;height:31px;padding:0 9px 0 29px;border:1px solid var(--border);border-radius:5px;outline:none;background:var(--bg);color:var(--text);font:11px var(--font-mono)}.SearchableSelect_search__W_1al:focus{border-color:var(--accent)}.SearchableSelect_search__W_1al::placeholder{color:var(--text-dim)}.SearchableSelect_options__tjHyi{max-height:250px;overflow-y:auto;overscroll-behavior:contain;padding:5px}.SearchableSelect_option__LRRH9{width:100%;min-height:32px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 8px;border:0;border-radius:5px;background:transparent;color:var(--text-muted);cursor:pointer;font:11px/1.3 var(--font-mono);text-align:left}.SearchableSelect_option__LRRH9[data-active=true]{background:var(--bg-hover);color:var(--text)}.SearchableSelect_option__LRRH9[data-selected=true]{color:var(--accent)}.SearchableSelect_option__LRRH9:disabled{cursor:not-allowed;opacity:.45}.SearchableSelect_optionCopy__W87H8{min-width:0;display:flex;flex-direction:column;gap:2px}.SearchableSelect_optionDescription__cE_cC,.SearchableSelect_optionLabel__G7jIg{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.SearchableSelect_optionDescription__cE_cC{color:var(--text-dim);font-size:9.5px}.SearchableSelect_check__1Likw{width:12px;height:12px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8}.SearchableSelect_empty__vZzXQ{padding:18px 12px;color:var(--text-dim);font:10px var(--font-mono);text-align:center}.SettingsConfig_backdrop__i6KYG{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:18px;background:color-mix(in srgb,#000 48%,transparent);backdrop-filter:blur(8px)}.SettingsConfig_window__m7dcs{width:min(1180px,calc(100vw - 36px));height:min(860px,calc(100dvh - 36px));display:grid;grid-template-columns:238px minmax(0,1fr);overflow:hidden;border:1px solid var(--border);border-radius:14px;background:var(--bg);color:var(--text);box-shadow:0 24px 80px rgba(0,0,0,.34)}.SettingsConfig_sidebar__vEMEr{min-width:0;display:flex;flex-direction:column;border-right:1px solid var(--border);background:var(--bg-panel)}.SettingsConfig_brand__DlYlu{padding:20px 18px 13px}.SettingsConfig_eyebrow__uTa5R{margin-bottom:5px;color:var(--accent);font:700 10px/1 var(--font-mono);letter-spacing:.14em;text-transform:uppercase}.SettingsConfig_title__DWTnA{margin:0;font-size:20px;font-weight:760;letter-spacing:-.025em}.SettingsConfig_context__N0fl0{display:block;margin-top:6px;overflow:hidden;color:var(--text-muted);font:10px/1.35 var(--font-mono);text-overflow:ellipsis;white-space:nowrap}.SettingsConfig_searchWrap___PWrc{position:relative;padding:0 12px 10px}.SettingsConfig_searchIcon__8_YYE{position:absolute;top:9px;left:23px;width:13px;height:13px;color:var(--text-dim);pointer-events:none}.SettingsConfig_search__DUhSs{width:100%;height:32px;padding:0 10px 0 31px;border:1px solid var(--border);border-radius:8px;outline:none;background:var(--bg);color:var(--text);font:12px var(--font-mono)}.SettingsConfig_search__DUhSs::placeholder{color:var(--text-muted)}.SettingsConfig_search__DUhSs:focus{border-color:var(--accent)}.SettingsConfig_nav__V8P9S{flex:1;overflow-y:auto;padding:2px 8px 14px}.SettingsConfig_navLabel__M1wMP{padding:13px 10px 5px;color:var(--text-muted);font:700 9px/1 var(--font-mono);letter-spacing:.12em;text-transform:uppercase}.SettingsConfig_navButton__CUOqu{width:100%;height:34px;display:flex;align-items:center;gap:9px;padding:0 10px;border:0;border-radius:8px;background:transparent;color:var(--text-muted);cursor:pointer;font:500 12px/1 var(--font-mono);text-align:left;transition:background .12s ease,color .12s ease}.SettingsConfig_navButton__CUOqu:hover:not(:disabled){background:var(--bg-hover);color:var(--text)}.SettingsConfig_navButton__CUOqu[data-active=true]{background:var(--bg-selected);color:var(--text);font-weight:700}.SettingsConfig_navButton__CUOqu:disabled{cursor:not-allowed;opacity:.36}.SettingsConfig_navIcon__Wagpr{width:15px;height:15px;flex:0 0 auto}.SettingsConfig_closeRail__PW3pT{padding:10px 12px;border-top:1px solid var(--border)}.SettingsConfig_closeButton__5y_6F{width:100%;height:34px;border:1px solid var(--border);border-radius:8px;background:transparent;color:var(--text-muted);cursor:pointer;font:12px var(--font-mono)}.SettingsConfig_closeButton__5y_6F:hover{background:var(--bg-hover);color:var(--text)}.SettingsConfig_content__n_a5Z{min-width:0;min-height:0;position:relative;overflow:hidden;background:var(--bg)}.SettingsConfig_scrollContent__03BsO{height:100%;overflow-y:auto;padding:32px clamp(24px,5vw,56px) 56px}.SettingsConfig_contentHeader__tNmzv{max-width:820px;margin:0 auto 26px;padding-bottom:20px;border-bottom:1px solid var(--border)}.SettingsConfig_contentTitle__oiHOO{margin:0 0 7px;font-size:24px;font-weight:750;letter-spacing:-.035em}.SettingsConfig_contentDescription___l2QU{margin:0;max-width:700px;color:var(--text-muted);font-size:12px;line-height:1.6}.SettingsConfig_reloadNotice__enzeE{margin-top:14px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 10px;border:1px solid var(--border);border-radius:8px;background:var(--bg-panel);color:var(--text-muted);font:10px/1.4 var(--font-mono)}.SettingsConfig_reloadNotice__enzeE button{flex:0 0 auto;height:28px;padding:0 9px;border:0;border-radius:6px;background:var(--accent);color:var(--bg);cursor:pointer;font:700 10px var(--font-mono)}.SettingsConfig_reloadNotice__enzeE button:disabled{cursor:wait;opacity:.55}.SettingsConfig_settingsBody__QRFVu{max-width:820px;margin:0 auto}.SettingsConfig_group__JQ_dy{margin:0 0 30px}.SettingsConfig_groupTitle__0SrM9{margin:0 0 8px;color:var(--text-dim);font:700 10px/1 var(--font-mono);letter-spacing:.1em;text-transform:uppercase}.SettingsConfig_settingRow__Jy73r{min-height:62px;display:grid;grid-template-columns:minmax(0,1fr) minmax(170px,260px);align-items:center;gap:24px;padding:13px 0;border-bottom:1px solid color-mix(in srgb,var(--border) 70%,transparent)}.SettingsConfig_settingRow__Jy73r:first-of-type{border-top:1px solid color-mix(in srgb,var(--border) 70%,transparent)}.SettingsConfig_settingLabel__n8vtU{margin-bottom:4px;font-size:13px;font-weight:650}.SettingsConfig_settingDescription__TGWfP{color:var(--text-dim);font-size:11px;line-height:1.45}.SettingsConfig_settingControl__oz5Gn{min-width:0;display:flex;justify-content:flex-end}.SettingsConfig_jsonEditor__yTYDb,.SettingsConfig_numberInput__TVVeJ,.SettingsConfig_select__A5aGy,.SettingsConfig_textInput___NjZ2{width:100%;border:1px solid var(--border);border-radius:8px;outline:none;background:var(--bg-panel);color:var(--text);font:11px var(--font-mono)}.SettingsConfig_numberInput__TVVeJ,.SettingsConfig_select__A5aGy,.SettingsConfig_textInput___NjZ2{height:34px;padding:0 10px}.SettingsConfig_jsonEditor__yTYDb:focus,.SettingsConfig_numberInput__TVVeJ:focus,.SettingsConfig_select__A5aGy:focus,.SettingsConfig_textInput___NjZ2:focus{border-color:var(--accent)}.SettingsConfig_switch__5UYqz{width:38px;height:22px;position:relative;padding:0;border:1px solid var(--border);border-radius:999px;background:var(--bg-hover);cursor:pointer;transition:background .16s,border-color .16s}.SettingsConfig_switch__5UYqz:after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:var(--text-muted);transition:transform .16s,background .16s}.SettingsConfig_switch__5UYqz[data-on=true]{border-color:var(--accent);background:var(--accent)}.SettingsConfig_switch__5UYqz[data-on=true]:after{transform:translateX(16px);background:var(--bg)}.SettingsConfig_switch__5UYqz:disabled{cursor:wait;opacity:.55}.SettingsConfig_multiSelect__PTjyr{width:100%;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:5px}.SettingsConfig_choice__Os8WR{display:inline-flex;align-items:center;gap:5px;padding:5px 7px;border:1px solid var(--border);border-radius:6px;background:var(--bg-panel);color:var(--text-muted);font:10px var(--font-mono)}.SettingsConfig_choiceToggle__lyl75{padding:0;border:0;background:transparent;color:inherit;cursor:pointer;font:inherit}.SettingsConfig_choice__Os8WR[data-selected=true]{border-color:var(--accent);color:var(--accent)}.SettingsConfig_reorder__JR6tX{display:inline-flex;gap:2px}.SettingsConfig_reorder__JR6tX button{border:0;background:transparent;color:inherit;cursor:pointer;padding:0 2px}.SettingsConfig_error__j6wEj,.SettingsConfig_saveState__1tIL4{margin-top:5px;color:var(--danger);font:10px var(--font-mono)}.SettingsConfig_saveState__1tIL4{color:var(--text-dim)}.SettingsConfig_themeGrid__7Lw8A{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:30px}.SettingsConfig_themeCard__DQFsT{position:relative;overflow:visible;border:1px solid var(--border);border-radius:12px;background:var(--bg-panel)}.SettingsConfig_themeCard__DQFsT:focus-within{z-index:10}.SettingsConfig_themePreview__QzqXK{height:118px;overflow:hidden;padding:14px;border-radius:11px 11px 0 0;background:var(--seed-color-bg-layer-default)}.SettingsConfig_themePreviewBar__ZbchX{width:62%;height:7px;border-radius:var(--seed-radius-r1);background:var(--seed-color-fg-neutral);opacity:.9}.SettingsConfig_themePreviewPanel__YN9ty{height:62px;margin-top:12px;padding:10px;border:1px solid var(--seed-color-stroke-neutral-muted);border-radius:7px;background:var(--seed-color-bg-layer-floating)}.SettingsConfig_themePreviewLine__jP0qg{width:74%;height:5px;margin-bottom:7px;border-radius:3px;background:var(--seed-color-fg-neutral)}.SettingsConfig_themePreviewLine__jP0qg:last-child{width:44%;background:var(--seed-color-fg-neutral-muted)}.SettingsConfig_themeCardBody__xiOe6{padding:12px;border-top:1px solid var(--border)}.SettingsConfig_themeCardHeader__YPRN2{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.SettingsConfig_themeSlot__vGn9a{font:700 10px var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted)}.SettingsConfig_themeActive__PNmdk{font:9px var(--font-mono);color:var(--accent)}.SettingsConfig_mcpLayout__ek_Fi{display:grid;grid-template-columns:250px minmax(0,1fr);min-height:490px;border:1px solid var(--border);border-radius:12px;overflow:hidden}.SettingsConfig_mcpList__gZ9_o{display:flex;flex-direction:column;border-right:1px solid var(--border);background:var(--bg-panel)}.SettingsConfig_scopeTabs__9bybS{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:8px;border-bottom:1px solid var(--border)}.SettingsConfig_scopeButton__d4XPe{height:29px;border:0;border-radius:6px;background:transparent;color:var(--text-dim);cursor:pointer;font:10px var(--font-mono)}.SettingsConfig_scopeButton__d4XPe[data-active=true]{background:var(--bg-selected);color:var(--text)}.SettingsConfig_serverRows__JSJy0{flex:1;overflow-y:auto;padding:7px}.SettingsConfig_serverRow__6gJdE{width:100%;display:flex;align-items:center;gap:3px;padding:3px;border-radius:7px;background:transparent;color:var(--text-muted);font:11px var(--font-mono)}.SettingsConfig_serverRow__6gJdE[data-active=true]{background:var(--bg-selected);color:var(--text)}.SettingsConfig_serverSelect__cuYFx{min-width:0;flex:1;display:flex;align-items:center;gap:8px;padding:5px;border:0;background:transparent;color:inherit;cursor:pointer;font:inherit;text-align:left}.SettingsConfig_serverToggle__X5N_o{width:30px;height:23px;flex:0 0 auto;padding:0;border:1px solid var(--border);border-radius:5px;background:var(--bg);color:var(--text-dim);cursor:pointer;font:700 8px var(--font-mono)}.SettingsConfig_serverToggle__X5N_o[data-on=true]{border-color:color-mix(in srgb,var(--success) 55%,var(--border));color:var(--success)}.SettingsConfig_serverToggle__X5N_o:disabled{cursor:wait;opacity:.5}.SettingsConfig_serverName__lbfcK{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.SettingsConfig_sourceBadge__XDE2u{max-width:76px;overflow:hidden;text-overflow:ellipsis;padding:2px 4px;border:1px solid var(--border);border-radius:4px;color:var(--text-dim);font-size:8px;white-space:nowrap}.SettingsConfig_serverListEmpty___icit{padding:22px 10px;color:var(--text-dim);font:10px/1.5 var(--font-mono);text-align:center}.SettingsConfig_statusDot__dVcD4{width:7px;height:7px;border-radius:50%;background:var(--success)}.SettingsConfig_statusDot__dVcD4[data-off=true]{background:var(--text-dim)}.SettingsConfig_addServer__g0ivB{margin:8px;height:31px;border:1px dashed var(--border);border-radius:7px;background:transparent;color:var(--text-muted);cursor:pointer;font:11px var(--font-mono)}.SettingsConfig_mcpEditor__XGcLp{min-width:0;padding:20px}.SettingsConfig_editorHeader__qDvAk{display:flex;gap:8px;margin-bottom:14px}.SettingsConfig_jsonEditor__yTYDb{min-height:290px;resize:vertical;padding:12px;line-height:1.55}.SettingsConfig_readOnlyNotice__KNzML{margin:-5px 0 10px;color:var(--text-dim);font:10px var(--font-mono)}.SettingsConfig_jsonEditor__yTYDb:read-only,.SettingsConfig_textInput___NjZ2:read-only{background:var(--bg-subtle);color:var(--text-muted);cursor:default}.SettingsConfig_editorActions__h9p7Y{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px}.SettingsConfig_linkButton__0DH3I{display:inline-flex;align-items:center;height:33px;padding:0 13px;border:1px solid var(--border);border-radius:7px;color:var(--text);text-decoration:none;font:700 11px var(--font-mono)}.SettingsConfig_linkButton__0DH3I:hover{background:var(--bg-hover)}.SettingsConfig_dangerButton__XF_f_,.SettingsConfig_primaryButton__Eocwv{height:33px;padding:0 13px;border:0;border-radius:7px;background:var(--accent);color:var(--bg);cursor:pointer;font:700 11px var(--font-mono)}.SettingsConfig_dangerButton__XF_f_{border:1px solid var(--border);background:transparent;color:var(--danger)}.SettingsConfig_primaryButton__Eocwv:disabled{cursor:wait;opacity:.5}.SettingsConfig_empty__erg3A{height:100%;display:grid;place-items:center;padding:30px;color:var(--text-dim);font:12px/1.6 var(--font-mono);text-align:center}@media (max-width:760px){.SettingsConfig_backdrop__i6KYG{padding:8px}.SettingsConfig_window__m7dcs{width:calc(100vw - 16px);height:calc(100dvh - 16px);grid-template-columns:82px minmax(0,1fr);border-radius:10px}.SettingsConfig_brand__DlYlu{padding:14px 6px 9px;text-align:center}.SettingsConfig_closeButton__5y_6F span:first-child,.SettingsConfig_context__N0fl0,.SettingsConfig_eyebrow__uTa5R,.SettingsConfig_navLabel__M1wMP,.SettingsConfig_searchWrap___PWrc{display:none}.SettingsConfig_title__DWTnA{font-size:12px}.SettingsConfig_nav__V8P9S{padding-inline:6px}.SettingsConfig_navButton__CUOqu{height:45px;flex-direction:column;justify-content:center;gap:3px;padding:0 3px}.SettingsConfig_navButton__CUOqu span{display:block;width:100%;overflow:hidden;font-size:8px;text-align:center;text-overflow:ellipsis;white-space:nowrap}.SettingsConfig_closeButton__5y_6F{display:grid;place-items:center}.SettingsConfig_closeButton__5y_6F span:last-child{display:inline}.SettingsConfig_scrollContent__03BsO{padding:24px 16px 40px}.SettingsConfig_settingRow__Jy73r{grid-template-columns:1fr;gap:10px}.SettingsConfig_multiSelect__PTjyr,.SettingsConfig_settingControl__oz5Gn{justify-content:flex-start}.SettingsConfig_mcpLayout__ek_Fi,.SettingsConfig_themeGrid__7Lw8A{grid-template-columns:1fr}.SettingsConfig_mcpList__gZ9_o{min-height:180px;border-right:0;border-bottom:1px solid var(--border)}.SettingsConfig_closeButton__5y_6F,.SettingsConfig_content__n_a5Z button:not(.SettingsConfig_switch__5UYqz),.SettingsConfig_content__n_a5Z input:not([type=checkbox]):not([type=radio]),.SettingsConfig_content__n_a5Z select{min-height:44px}.SettingsConfig_closeButton__5y_6F,.SettingsConfig_content__n_a5Z button:not(.SettingsConfig_switch__5UYqz),.SettingsConfig_reorder__JR6tX button,.SettingsConfig_serverToggle__X5N_o{min-width:44px}.SettingsConfig_choice__Os8WR{padding-block:0}.SettingsConfig_switch__5UYqz:before{content:"";position:absolute;inset:-11px -3px}}