ompgui 0.7.9 โ†’ 0.7.12

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 (304) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +7 -6
  3. package/.next/build-manifest.json +3 -3
  4. package/.next/prerender-manifest.json +5 -5
  5. package/.next/react-loadable-manifest.json +5 -5
  6. package/.next/required-server-files.js +3 -3
  7. package/.next/required-server-files.json +3 -3
  8. package/.next/routes-manifest.json +6 -0
  9. package/.next/server/app/_global-error/page.js +1 -1
  10. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  11. package/.next/server/app/_global-error.html +1 -1
  12. package/.next/server/app/_global-error.rsc +2 -2
  13. package/.next/server/app/_global-error.segments/_full.segment.rsc +2 -2
  14. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +2 -2
  15. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  16. package/.next/server/app/_not-found/page.js +1 -1
  17. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  18. package/.next/server/app/_not-found.html +1 -1
  19. package/.next/server/app/_not-found.rsc +2 -2
  20. package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  21. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
  22. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  23. package/.next/server/app/api/agent/[id]/bash-output/route.js +1 -1
  24. package/.next/server/app/api/agent/[id]/events/route.js +2 -2
  25. package/.next/server/app/api/agent/[id]/route.js +1 -1
  26. package/.next/server/app/api/agent/new/route.js +1 -1
  27. package/.next/server/app/api/agent/running/events/route.js +2 -2
  28. package/.next/server/app/api/agents/[name]/route.js +1 -1
  29. package/.next/server/app/api/agents/route.js +1 -1
  30. package/.next/server/app/api/agents/unpack/route.js +1 -1
  31. package/.next/server/app/api/app-update/route.js +1 -1
  32. package/.next/server/app/api/auth/all-providers/route.js +1 -1
  33. package/.next/server/app/api/auth/api-key/[provider]/route.js +1 -1
  34. package/.next/server/app/api/auth/login/[provider]/route.js +2 -2
  35. package/.next/server/app/api/auth/logout/[provider]/route.js +1 -1
  36. package/.next/server/app/api/auth/providers/route.js +1 -1
  37. package/.next/server/app/api/cwd/browse/route.js +1 -1
  38. package/.next/server/app/api/cwd/validate/route.js +1 -1
  39. package/.next/server/app/api/daemon/route.js +1 -1
  40. package/.next/server/app/api/daemon/route.js.nft.json +1 -1
  41. package/.next/server/app/api/default-cwd/route.js +1 -1
  42. package/.next/server/app/api/file-index/route.js +1 -1
  43. package/.next/server/app/api/files/[...path]/route.js +1 -1
  44. package/.next/server/app/api/git/diff/route.js +2 -2
  45. package/.next/server/app/api/git/status/route.js +1 -1
  46. package/.next/server/app/api/home/route.js +1 -1
  47. package/.next/server/app/api/mcp/route.js +2 -2
  48. package/.next/server/app/api/model-roles/route.js +1 -1
  49. package/.next/server/app/api/models/route.js +1 -1
  50. package/.next/server/app/api/models-config/catalog/route.js +1 -1
  51. package/.next/server/app/api/models-config/connectivity/route.js +1 -1
  52. package/.next/server/app/api/models-config/connectivity/route.js.nft.json +1 -1
  53. package/.next/server/app/api/models-config/route.js +1 -1
  54. package/.next/server/app/api/models-config/test/route.js +1 -1
  55. package/.next/server/app/api/omp-settings/route.js +1 -1
  56. package/.next/server/app/api/omp-update/route.js +2 -2
  57. package/.next/server/app/api/omp-version/route.js +1 -1
  58. package/.next/server/app/api/plugins/route.js +1 -1
  59. package/.next/server/app/api/projects/route.js +2 -2
  60. package/.next/server/app/api/providers/enable/route.js +1 -1
  61. package/.next/server/app/api/relay/devices/[id]/route.js +1 -1
  62. package/.next/server/app/api/relay/devices/[id]/route.js.nft.json +1 -1
  63. package/.next/server/app/api/relay/devices/route.js +1 -1
  64. package/.next/server/app/api/relay/devices/route.js.nft.json +1 -1
  65. package/.next/server/app/api/relay/pair/route.js +1 -1
  66. package/.next/server/app/api/relay/pair/route.js.nft.json +1 -1
  67. package/.next/server/app/api/sessions/[id]/archive/route.js +1 -1
  68. package/.next/server/app/api/sessions/[id]/auto-name/route.js +1 -1
  69. package/.next/server/app/api/sessions/[id]/context/route.js +1 -1
  70. package/.next/server/app/api/sessions/[id]/entries/[entryId]/media/route.js +1 -1
  71. package/.next/server/app/api/sessions/[id]/entries/[entryId]/thinking/route.js +1 -1
  72. package/.next/server/app/api/sessions/[id]/export/route.js +1 -1
  73. package/.next/server/app/api/sessions/[id]/route.js +1 -1
  74. package/.next/server/app/api/sessions/[id]/state/route.js +1 -1
  75. package/.next/server/app/api/sessions/[id]/subagents/[subagentId]/route.js +1 -1
  76. package/.next/server/app/api/sessions/[id]/subagents/route.js +1 -1
  77. package/.next/server/app/api/sessions/archive/route.js +1 -1
  78. package/.next/server/app/api/sessions/import/route.js +1 -1
  79. package/.next/server/app/api/sessions/route.js +1 -1
  80. package/.next/server/app/api/sessions/search/route.js +1 -1
  81. package/.next/server/app/api/skills/check/route.js +1 -1
  82. package/.next/server/app/api/skills/install/route.js +1 -1
  83. package/.next/server/app/api/skills/route.js +1 -1
  84. package/.next/server/app/api/skills/search/route.js +1 -1
  85. package/.next/server/app/api/skills/update/route.js +1 -1
  86. package/.next/server/app/api/usage/route.js +1 -1
  87. package/.next/server/app/api/web-auth/pair/route.js +1 -0
  88. package/.next/server/app/api/web-auth/pair/route.js.nft.json +1 -0
  89. package/.next/server/app/api/web-auth/pair/route_client-reference-manifest.js +1 -0
  90. package/.next/server/app/api/web-auth/session/route.js +1 -1
  91. package/.next/server/app/api/web-auth/session/route.js.nft.json +1 -1
  92. package/.next/server/app/api/worktrees/route.js +1 -1
  93. package/.next/server/app/apple-icon.png/route.js +1 -1
  94. package/.next/server/app/favicon.ico/route.js +1 -1
  95. package/.next/server/app/icon.svg/route.js +1 -1
  96. package/.next/server/app/index.html +1 -1
  97. package/.next/server/app/index.rsc +3 -3
  98. package/.next/server/app/index.segments/__PAGE__.segment.rsc +3 -3
  99. package/.next/server/app/index.segments/_full.segment.rsc +3 -3
  100. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  101. package/.next/server/app/login/page.js +1 -1
  102. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  103. package/.next/server/app/login.html +1 -1
  104. package/.next/server/app/login.rsc +3 -3
  105. package/.next/server/app/login.segments/_full.segment.rsc +3 -3
  106. package/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  107. package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +3 -3
  108. package/.next/server/app/manifest.webmanifest/route.js +2 -2
  109. package/.next/server/app/page.js +2 -2
  110. package/.next/server/app/page_client-reference-manifest.js +1 -1
  111. package/.next/server/app/pair/page.js +1 -1
  112. package/.next/server/app/pair/page_client-reference-manifest.js +1 -1
  113. package/.next/server/app/pair.html +1 -1
  114. package/.next/server/app/pair.rsc +3 -3
  115. package/.next/server/app/pair.segments/_full.segment.rsc +3 -3
  116. package/.next/server/app/pair.segments/_tree.segment.rsc +1 -1
  117. package/.next/server/app/pair.segments/pair/__PAGE__.segment.rsc +3 -3
  118. package/.next/server/app/relay/route.js +1 -1
  119. package/.next/server/app-paths-manifest.json +7 -6
  120. package/.next/server/chunks/3100.js +1 -1
  121. package/.next/server/chunks/4008.js +2 -2
  122. package/.next/server/chunks/4395.js +2 -0
  123. package/.next/server/chunks/474.js +1 -1
  124. package/.next/server/chunks/4980.js +1 -1
  125. package/.next/server/chunks/6337.js +1 -1
  126. package/.next/server/chunks/7077.js +1 -1
  127. package/.next/server/chunks/8015.js +13 -13
  128. package/.next/server/chunks/8501.js +1 -1
  129. package/.next/server/chunks/933.js +1 -1
  130. package/.next/server/chunks/9848.js +1 -1
  131. package/.next/server/functions-config-manifest.json +2 -2
  132. package/.next/server/instrumentation.js +1 -1
  133. package/.next/server/middleware-build-manifest.js +1 -1
  134. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  135. package/.next/server/middleware.js +6 -5
  136. package/.next/server/pages/404.html +1 -1
  137. package/.next/server/pages/500.html +1 -1
  138. package/.next/server/server-reference-manifest.json +1 -1
  139. package/.next/static/chunks/3274.f8f023fd73e607bc.js +2 -0
  140. package/.next/static/chunks/3944.2debfbacfd5e255f.js +1 -0
  141. package/.next/static/chunks/4315-ea1c0b248e80933c.js +1 -0
  142. package/.next/static/chunks/4996.c5525823b73ac947.js +1 -0
  143. package/.next/static/chunks/{6268.294dd515c545712d.js โ†’ 6268.be519bbc5c4347fe.js} +3 -3
  144. package/.next/static/chunks/{9668.a6deba4ff5761bbb.js โ†’ 9668.6c511d3f22a0d3ad.js} +1 -1
  145. package/.next/static/chunks/app/_global-error/page-ef9cf0833e5e0b87.js +1 -0
  146. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-ef9cf0833e5e0b87.js +1 -0
  147. package/.next/static/chunks/app/api/agent/[id]/events/route-ef9cf0833e5e0b87.js +1 -0
  148. package/.next/static/chunks/app/api/agent/[id]/route-ef9cf0833e5e0b87.js +1 -0
  149. package/.next/static/chunks/app/api/agent/new/route-ef9cf0833e5e0b87.js +1 -0
  150. package/.next/static/chunks/app/api/agent/running/events/route-ef9cf0833e5e0b87.js +1 -0
  151. package/.next/static/chunks/app/api/agents/[name]/route-ef9cf0833e5e0b87.js +1 -0
  152. package/.next/static/chunks/app/api/agents/route-ef9cf0833e5e0b87.js +1 -0
  153. package/.next/static/chunks/app/api/agents/unpack/route-ef9cf0833e5e0b87.js +1 -0
  154. package/.next/static/chunks/app/api/app-update/route-ef9cf0833e5e0b87.js +1 -0
  155. package/.next/static/chunks/app/api/auth/all-providers/route-ef9cf0833e5e0b87.js +1 -0
  156. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-ef9cf0833e5e0b87.js +1 -0
  157. package/.next/static/chunks/app/api/auth/login/[provider]/route-ef9cf0833e5e0b87.js +1 -0
  158. package/.next/static/chunks/app/api/auth/logout/[provider]/route-ef9cf0833e5e0b87.js +1 -0
  159. package/.next/static/chunks/app/api/auth/providers/route-ef9cf0833e5e0b87.js +1 -0
  160. package/.next/static/chunks/app/api/cwd/browse/route-ef9cf0833e5e0b87.js +1 -0
  161. package/.next/static/chunks/app/api/cwd/validate/route-ef9cf0833e5e0b87.js +1 -0
  162. package/.next/static/chunks/app/api/daemon/route-ef9cf0833e5e0b87.js +1 -0
  163. package/.next/static/chunks/app/api/default-cwd/route-ef9cf0833e5e0b87.js +1 -0
  164. package/.next/static/chunks/app/api/file-index/route-ef9cf0833e5e0b87.js +1 -0
  165. package/.next/static/chunks/app/api/files/[...path]/route-ef9cf0833e5e0b87.js +1 -0
  166. package/.next/static/chunks/app/api/git/diff/route-ef9cf0833e5e0b87.js +1 -0
  167. package/.next/static/chunks/app/api/git/status/route-ef9cf0833e5e0b87.js +1 -0
  168. package/.next/static/chunks/app/api/home/route-ef9cf0833e5e0b87.js +1 -0
  169. package/.next/static/chunks/app/api/mcp/route-ef9cf0833e5e0b87.js +1 -0
  170. package/.next/static/chunks/app/api/model-roles/route-ef9cf0833e5e0b87.js +1 -0
  171. package/.next/static/chunks/app/api/models/route-ef9cf0833e5e0b87.js +1 -0
  172. package/.next/static/chunks/app/api/models-config/catalog/route-ef9cf0833e5e0b87.js +1 -0
  173. package/.next/static/chunks/app/api/models-config/connectivity/route-ef9cf0833e5e0b87.js +1 -0
  174. package/.next/static/chunks/app/api/models-config/route-ef9cf0833e5e0b87.js +1 -0
  175. package/.next/static/chunks/app/api/models-config/test/route-ef9cf0833e5e0b87.js +1 -0
  176. package/.next/static/chunks/app/api/omp-settings/route-ef9cf0833e5e0b87.js +1 -0
  177. package/.next/static/chunks/app/api/omp-update/route-ef9cf0833e5e0b87.js +1 -0
  178. package/.next/static/chunks/app/api/omp-version/route-ef9cf0833e5e0b87.js +1 -0
  179. package/.next/static/chunks/app/api/plugins/route-ef9cf0833e5e0b87.js +1 -0
  180. package/.next/static/chunks/app/api/projects/route-ef9cf0833e5e0b87.js +1 -0
  181. package/.next/static/chunks/app/api/providers/enable/route-ef9cf0833e5e0b87.js +1 -0
  182. package/.next/static/chunks/app/api/relay/devices/[id]/route-ef9cf0833e5e0b87.js +1 -0
  183. package/.next/static/chunks/app/api/relay/devices/route-ef9cf0833e5e0b87.js +1 -0
  184. package/.next/static/chunks/app/api/relay/pair/route-ef9cf0833e5e0b87.js +1 -0
  185. package/.next/static/chunks/app/api/sessions/[id]/archive/route-ef9cf0833e5e0b87.js +1 -0
  186. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-ef9cf0833e5e0b87.js +1 -0
  187. package/.next/static/chunks/app/api/sessions/[id]/context/route-ef9cf0833e5e0b87.js +1 -0
  188. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/media/route-ef9cf0833e5e0b87.js +1 -0
  189. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-ef9cf0833e5e0b87.js +1 -0
  190. package/.next/static/chunks/app/api/sessions/[id]/export/route-ef9cf0833e5e0b87.js +1 -0
  191. package/.next/static/chunks/app/api/sessions/[id]/route-ef9cf0833e5e0b87.js +1 -0
  192. package/.next/static/chunks/app/api/sessions/[id]/state/route-ef9cf0833e5e0b87.js +1 -0
  193. package/.next/static/chunks/app/api/sessions/[id]/subagents/[subagentId]/route-ef9cf0833e5e0b87.js +1 -0
  194. package/.next/static/chunks/app/api/sessions/[id]/subagents/route-ef9cf0833e5e0b87.js +1 -0
  195. package/.next/static/chunks/app/api/sessions/archive/route-ef9cf0833e5e0b87.js +1 -0
  196. package/.next/static/chunks/app/api/sessions/import/route-ef9cf0833e5e0b87.js +1 -0
  197. package/.next/static/chunks/app/api/sessions/route-ef9cf0833e5e0b87.js +1 -0
  198. package/.next/static/chunks/app/api/sessions/search/route-ef9cf0833e5e0b87.js +1 -0
  199. package/.next/static/chunks/app/api/skills/check/route-ef9cf0833e5e0b87.js +1 -0
  200. package/.next/static/chunks/app/api/skills/install/route-ef9cf0833e5e0b87.js +1 -0
  201. package/.next/static/chunks/app/api/skills/route-ef9cf0833e5e0b87.js +1 -0
  202. package/.next/static/chunks/app/api/skills/search/route-ef9cf0833e5e0b87.js +1 -0
  203. package/.next/static/chunks/app/api/skills/update/route-ef9cf0833e5e0b87.js +1 -0
  204. package/.next/static/chunks/app/api/usage/route-ef9cf0833e5e0b87.js +1 -0
  205. package/.next/static/chunks/app/api/web-auth/pair/route-ef9cf0833e5e0b87.js +1 -0
  206. package/.next/static/chunks/app/api/web-auth/session/route-ef9cf0833e5e0b87.js +1 -0
  207. package/.next/static/chunks/app/api/worktrees/route-ef9cf0833e5e0b87.js +1 -0
  208. package/.next/static/chunks/app/login/page-7bf6a8dff8d8ec8a.js +1 -0
  209. package/.next/static/chunks/app/manifest.webmanifest/route-ef9cf0833e5e0b87.js +1 -0
  210. package/.next/static/chunks/app/{page-305a0dd341ec102d.js โ†’ page-8ddabaf903ef7161.js} +1 -1
  211. package/.next/static/chunks/app/pair/page-b038d0301aa512a0.js +1 -0
  212. package/.next/static/chunks/app/relay/route-ef9cf0833e5e0b87.js +1 -0
  213. package/.next/static/chunks/{main-354b27ede3eb835a.js โ†’ main-07954eb1fcf84ef7.js} +1 -1
  214. package/.next/static/chunks/next/dist/client/components/builtin/app-error-ef9cf0833e5e0b87.js +1 -0
  215. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-ef9cf0833e5e0b87.js +1 -0
  216. package/.next/static/chunks/next/dist/client/components/builtin/not-found-ef9cf0833e5e0b87.js +1 -0
  217. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-ef9cf0833e5e0b87.js +1 -0
  218. package/.next/static/chunks/{webpack-76f14942c1d852d7.js โ†’ webpack-6bfb3928a1f4ac15.js} +1 -1
  219. package/.next/static/u7dbGv9ZBD6miViUAEmi7/_buildManifest.js +1 -0
  220. package/README.ja.md +14 -13
  221. package/README.ko.md +14 -13
  222. package/README.md +14 -13
  223. package/README.zh-CN.md +14 -13
  224. package/bin/ompgui-options.js +2 -2
  225. package/bin/ompgui-pair.js +1 -0
  226. package/next.config.ts +3 -0
  227. package/package.json +1 -1
  228. package/.next/server/chunks/9145.js +0 -2
  229. package/.next/static/SAMSH7hMTmFI9vfMyiguw/_buildManifest.js +0 -1
  230. package/.next/static/chunks/3274.52c14cafa7f8a3ef.js +0 -2
  231. package/.next/static/chunks/3944.6215b78f025077b3.js +0 -1
  232. package/.next/static/chunks/4315-8575b9eecf54f2bb.js +0 -1
  233. package/.next/static/chunks/4996.5e04c050b0523d42.js +0 -1
  234. package/.next/static/chunks/app/_global-error/page-08a33f204a956c10.js +0 -1
  235. package/.next/static/chunks/app/api/agent/[id]/bash-output/route-08a33f204a956c10.js +0 -1
  236. package/.next/static/chunks/app/api/agent/[id]/events/route-08a33f204a956c10.js +0 -1
  237. package/.next/static/chunks/app/api/agent/[id]/route-08a33f204a956c10.js +0 -1
  238. package/.next/static/chunks/app/api/agent/new/route-08a33f204a956c10.js +0 -1
  239. package/.next/static/chunks/app/api/agent/running/events/route-08a33f204a956c10.js +0 -1
  240. package/.next/static/chunks/app/api/agents/[name]/route-08a33f204a956c10.js +0 -1
  241. package/.next/static/chunks/app/api/agents/route-08a33f204a956c10.js +0 -1
  242. package/.next/static/chunks/app/api/agents/unpack/route-08a33f204a956c10.js +0 -1
  243. package/.next/static/chunks/app/api/app-update/route-08a33f204a956c10.js +0 -1
  244. package/.next/static/chunks/app/api/auth/all-providers/route-08a33f204a956c10.js +0 -1
  245. package/.next/static/chunks/app/api/auth/api-key/[provider]/route-08a33f204a956c10.js +0 -1
  246. package/.next/static/chunks/app/api/auth/login/[provider]/route-08a33f204a956c10.js +0 -1
  247. package/.next/static/chunks/app/api/auth/logout/[provider]/route-08a33f204a956c10.js +0 -1
  248. package/.next/static/chunks/app/api/auth/providers/route-08a33f204a956c10.js +0 -1
  249. package/.next/static/chunks/app/api/cwd/browse/route-08a33f204a956c10.js +0 -1
  250. package/.next/static/chunks/app/api/cwd/validate/route-08a33f204a956c10.js +0 -1
  251. package/.next/static/chunks/app/api/daemon/route-08a33f204a956c10.js +0 -1
  252. package/.next/static/chunks/app/api/default-cwd/route-08a33f204a956c10.js +0 -1
  253. package/.next/static/chunks/app/api/file-index/route-08a33f204a956c10.js +0 -1
  254. package/.next/static/chunks/app/api/files/[...path]/route-08a33f204a956c10.js +0 -1
  255. package/.next/static/chunks/app/api/git/diff/route-08a33f204a956c10.js +0 -1
  256. package/.next/static/chunks/app/api/git/status/route-08a33f204a956c10.js +0 -1
  257. package/.next/static/chunks/app/api/home/route-08a33f204a956c10.js +0 -1
  258. package/.next/static/chunks/app/api/mcp/route-08a33f204a956c10.js +0 -1
  259. package/.next/static/chunks/app/api/model-roles/route-08a33f204a956c10.js +0 -1
  260. package/.next/static/chunks/app/api/models/route-08a33f204a956c10.js +0 -1
  261. package/.next/static/chunks/app/api/models-config/catalog/route-08a33f204a956c10.js +0 -1
  262. package/.next/static/chunks/app/api/models-config/connectivity/route-08a33f204a956c10.js +0 -1
  263. package/.next/static/chunks/app/api/models-config/route-08a33f204a956c10.js +0 -1
  264. package/.next/static/chunks/app/api/models-config/test/route-08a33f204a956c10.js +0 -1
  265. package/.next/static/chunks/app/api/omp-settings/route-08a33f204a956c10.js +0 -1
  266. package/.next/static/chunks/app/api/omp-update/route-08a33f204a956c10.js +0 -1
  267. package/.next/static/chunks/app/api/omp-version/route-08a33f204a956c10.js +0 -1
  268. package/.next/static/chunks/app/api/plugins/route-08a33f204a956c10.js +0 -1
  269. package/.next/static/chunks/app/api/projects/route-08a33f204a956c10.js +0 -1
  270. package/.next/static/chunks/app/api/providers/enable/route-08a33f204a956c10.js +0 -1
  271. package/.next/static/chunks/app/api/relay/devices/[id]/route-08a33f204a956c10.js +0 -1
  272. package/.next/static/chunks/app/api/relay/devices/route-08a33f204a956c10.js +0 -1
  273. package/.next/static/chunks/app/api/relay/pair/route-08a33f204a956c10.js +0 -1
  274. package/.next/static/chunks/app/api/sessions/[id]/archive/route-08a33f204a956c10.js +0 -1
  275. package/.next/static/chunks/app/api/sessions/[id]/auto-name/route-08a33f204a956c10.js +0 -1
  276. package/.next/static/chunks/app/api/sessions/[id]/context/route-08a33f204a956c10.js +0 -1
  277. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/media/route-08a33f204a956c10.js +0 -1
  278. package/.next/static/chunks/app/api/sessions/[id]/entries/[entryId]/thinking/route-08a33f204a956c10.js +0 -1
  279. package/.next/static/chunks/app/api/sessions/[id]/export/route-08a33f204a956c10.js +0 -1
  280. package/.next/static/chunks/app/api/sessions/[id]/route-08a33f204a956c10.js +0 -1
  281. package/.next/static/chunks/app/api/sessions/[id]/state/route-08a33f204a956c10.js +0 -1
  282. package/.next/static/chunks/app/api/sessions/[id]/subagents/[subagentId]/route-08a33f204a956c10.js +0 -1
  283. package/.next/static/chunks/app/api/sessions/[id]/subagents/route-08a33f204a956c10.js +0 -1
  284. package/.next/static/chunks/app/api/sessions/archive/route-08a33f204a956c10.js +0 -1
  285. package/.next/static/chunks/app/api/sessions/import/route-08a33f204a956c10.js +0 -1
  286. package/.next/static/chunks/app/api/sessions/route-08a33f204a956c10.js +0 -1
  287. package/.next/static/chunks/app/api/sessions/search/route-08a33f204a956c10.js +0 -1
  288. package/.next/static/chunks/app/api/skills/check/route-08a33f204a956c10.js +0 -1
  289. package/.next/static/chunks/app/api/skills/install/route-08a33f204a956c10.js +0 -1
  290. package/.next/static/chunks/app/api/skills/route-08a33f204a956c10.js +0 -1
  291. package/.next/static/chunks/app/api/skills/search/route-08a33f204a956c10.js +0 -1
  292. package/.next/static/chunks/app/api/skills/update/route-08a33f204a956c10.js +0 -1
  293. package/.next/static/chunks/app/api/usage/route-08a33f204a956c10.js +0 -1
  294. package/.next/static/chunks/app/api/web-auth/session/route-08a33f204a956c10.js +0 -1
  295. package/.next/static/chunks/app/api/worktrees/route-08a33f204a956c10.js +0 -1
  296. package/.next/static/chunks/app/login/page-a54174ed920300f7.js +0 -1
  297. package/.next/static/chunks/app/manifest.webmanifest/route-08a33f204a956c10.js +0 -1
  298. package/.next/static/chunks/app/pair/page-d72423ffc5654e29.js +0 -1
  299. package/.next/static/chunks/app/relay/route-08a33f204a956c10.js +0 -1
  300. package/.next/static/chunks/next/dist/client/components/builtin/app-error-08a33f204a956c10.js +0 -1
  301. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-08a33f204a956c10.js +0 -1
  302. package/.next/static/chunks/next/dist/client/components/builtin/not-found-08a33f204a956c10.js +0 -1
  303. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-08a33f204a956c10.js +0 -1
  304. /package/.next/static/{SAMSH7hMTmFI9vfMyiguw โ†’ u7dbGv9ZBD6miViUAEmi7}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4996],{4620:(e,o,t)=>{t.d(o,{o:()=>i});var a=t(12115),n=t(99030);function i(){return(0,a.useSyncExternalStore)(n.RX,n.Pg,()=>!1)}},12651:(e,o,t)=>{t.d(o,{A:()=>a});let a=(0,t(99537).A)("cpu",[["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M17 20v2",key:"1rnc9c"}],["path",{d:"M17 2v2",key:"11trls"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M2 17h2",key:"7oei6x"}],["path",{d:"M2 7h2",key:"asdhe0"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"M20 17h2",key:"1fpfkl"}],["path",{d:"M20 7h2",key:"1o8tra"}],["path",{d:"M7 20v2",key:"4gnj0m"}],["path",{d:"M7 2v2",key:"1i4yhu"}],["rect",{x:"4",y:"4",width:"16",height:"16",rx:"2",key:"1vbyd7"}],["rect",{x:"8",y:"8",width:"8",height:"8",rx:"1",key:"z9xiuo"}]])},34140:(e,o,t)=>{t.d(o,{NN:()=>i,RJ:()=>s});let a="ompgui-sound-enabled",n="omp-sound-enabled";function i(){try{let e=function(){let e=window.localStorage,o=e.getItem(a);if(null!==o)return o;let t=e.getItem(n);if(null===t)return null;if("true"===t||"false"===t)try{return e.setItem(a,t),e.removeItem(n),t}catch{return null}try{e.removeItem(n)}catch{}return null}();return null===e||"true"===e}catch{return!0}}function s(e){try{window.localStorage.setItem(a,String(e))}catch{}}},35893:(e,o,t)=>{t.d(o,{t_:()=>s,vR:()=>r,vz:()=>i});let a="omp-web:submit-during-run",n="ompgui:submit-during-run-change";function i(){try{let e=window.localStorage.getItem(a);if("steer"===e||"queue"===e)return e}catch{}return"steer"}function s(e){try{window.localStorage.setItem(a,e),window.dispatchEvent(new Event(n))}catch{}}function r(e){let o=o=>{o.key===a&&e()};return window.addEventListener(n,e),window.addEventListener("storage",o),()=>{window.removeEventListener(n,e),window.removeEventListener("storage",o)}}},54996:(e,o,t)=>{t.r(o),t.d(o,{SettingsConfig:()=>ea});var a=t(95155),n=t(12115),i=t(35893),s=t(37206),r=t(65377),l=t(99537);let d=(0,l.A)("monitor",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]);var p=t(47603),c=t(78890),u=t(82749),h=t(99314),g=t(92298);let m=(0,l.A)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);var b=t(31590),k=t(30808),f=t(34906);let y=(0,l.A)("smartphone",[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]]);var v=t(66763);let x=(0,l.A)("shield-check",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]);var w=t(12651);let S=(0,l.A)("key-round",[["path",{d:"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z",key:"1s6t7t"}],["circle",{cx:"16.5",cy:"7.5",r:".5",fill:"currentColor",key:"w0ekpg"}]]);var T=t(86272),C=t(90710);let A=(0,l.A)("cable",[["path",{d:"M17 19a1 1 0 0 1-1-1v-2a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2a1 1 0 0 1-1 1z",key:"trhst0"}],["path",{d:"M17 21v-2",key:"ds4u3f"}],["path",{d:"M19 14V6.5a1 1 0 0 0-7 0v11a1 1 0 0 1-7 0V10",key:"1mo9zo"}],["path",{d:"M21 21v-2",key:"eo0ou"}],["path",{d:"M3 5V3",key:"1k5hjh"}],["path",{d:"M4 10a2 2 0 0 1-2-2V6a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2a2 2 0 0 1-2 2z",key:"1dd30t"}],["path",{d:"M7 5V3",key:"1t1388"}]]);var M=t(4315);let R=[{id:"relay",label:"Connect Phone",description:"Pair ompgui Remote over Relay with a QR or link",Icon:y},{id:"general",label:"Interface & Behavior",description:"UI preferences, completion sound, submission mode",Icon:v.A},{id:"safety",label:"Safety & Approvals",description:"Tool safety rules, YOLO mode, terminal permissions",Icon:x},{id:"models",label:"AI Model Defaults",description:"Reasoning budget, verbosity, personality, scratchpad",Icon:w.A},{id:"providers",label:"API Keys & Providers",description:"Connected OAuth accounts, API keys, and model registry",Icon:S},{id:"intelligence",label:"Agent & Intelligence",description:"Advisor, memory, autolearn, compaction and retry",Icon:T.A},{id:"agents",label:"Agents & Subagents",description:"Configured subagents, model routing, prewalk, and advisor",Icon:C.A},{id:"extensions",label:"Extensions & Tools",description:"Optional tools, MCP servers, managed skills, and OMP plugins",Icon:A},{id:"system",label:"System & Updates",description:"App updates, runtime version, and active session restart",Icon:u.A}],V=[{id:"tools",label:"Optional Tools",description:"Toggle optional built-in tool capabilities"},{id:"mcp",label:"MCP Servers",description:"Configure global and project MCP servers"},{id:"skills",label:"Skills",description:"Manage reusable workspace skills"},{id:"plugins",label:"Plugins",description:"Manage OMP plugins for this workspace"}],P=e=>"tools"===e||"mcp"===e||"skills"===e||"plugins"===e||"extensions"===e?"extensions":e;function j({active:e,onSelect:o,layout:t="vertical"}){let{t:n}=(0,M.s9)(),i=P(e),s=(e,t)=>{let a=R.findIndex(e=>e.id===t);if(a<0||0===R.length)return;let n=null;("ArrowRight"===e.key||"ArrowDown"===e.key)&&(n=(a+1)%R.length),("ArrowLeft"===e.key||"ArrowUp"===e.key)&&(n=(a-1+R.length)%R.length),"Home"===e.key&&(n=0),"End"===e.key&&(n=R.length-1),null!==n&&(e.preventDefault(),o(R[n].id))};return"vertical"===t?(0,a.jsx)("nav",{"aria-label":"Settings sections",role:"tablist","aria-orientation":"vertical",style:{display:"flex",flexDirection:"column",gap:4,padding:"12px 8px",width:230,flexShrink:0,borderRight:"1px solid var(--border)",background:"var(--bg-panel)",overflowY:"auto"},children:R.map(({id:e,label:t,description:r,Icon:l})=>{let d=e===i,p=n(`settingsTabs.${e}`)||t,c=n(`settingsTabs.${e}Desc`)||r;return(0,a.jsxs)("button",{type:"button",role:"tab",id:`settings-tab-${e}`,"aria-selected":d,"aria-controls":`settings-panel-${e}`,tabIndex:d?0:-1,onClick:()=>o(e),onKeyDown:o=>s(o,e),style:{display:"flex",alignItems:"flex-start",gap:10,minHeight:"var(--control-touch, 44px)",padding:"8px 10px",border:d?"1px solid var(--accent)":"1px solid transparent",borderRadius:"var(--radius-control)",background:d?"var(--bg-selected)":"transparent",color:d?"var(--text)":"var(--text-muted)",cursor:"pointer",textAlign:"left",transition:"background var(--dur-fast) var(--ease-out-warm), color var(--dur-fast) var(--ease-out-warm), border-color var(--dur-fast) var(--ease-out-warm)",width:"100%",boxSizing:"border-box",touchAction:"manipulation"},children:[(0,a.jsx)(l,{size:16,"aria-hidden":"true",style:{marginTop:2,flexShrink:0,color:d?"var(--accent)":"currentColor"}}),(0,a.jsxs)("div",{style:{flex:1,minWidth:0,display:"flex",flexDirection:"column",gap:2},children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-base)",fontWeight:d?600:500,lineHeight:1.3,color:d?"var(--text)":"inherit"},children:p}),(0,a.jsx)("div",{style:{fontSize:"var(--text-sm)",color:"var(--text-dim)",lineHeight:1.3,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},children:c})]})]},e)})}):(0,a.jsx)("nav",{"aria-label":"Settings sections",role:"tablist",style:{display:"flex",gap:6,padding:"8px 12px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)",flexShrink:0,overflowX:"auto",WebkitOverflowScrolling:"touch"},children:R.map(({id:e,label:t,description:r,Icon:l})=>{let d=e===i,p=n(`settingsTabs.${e}`)||t,c=n(`settingsTabs.${e}Desc`)||r;return(0,a.jsxs)("button",{type:"button",role:"tab",id:`settings-tab-${e}`,"aria-selected":d,"aria-controls":`settings-panel-${e}`,"aria-label":`${p}: ${c}`,title:c,tabIndex:d?0:-1,onClick:()=>o(e),onKeyDown:o=>s(o,e),style:{display:"inline-flex",alignItems:"flex-start",gap:7,minHeight:"var(--control-touch, 44px)",padding:"6px 10px",border:d?"1px solid var(--accent)":"1px solid var(--border)",borderRadius:"var(--radius-control)",background:d?"var(--bg-selected)":"var(--bg)",color:d?"var(--text)":"var(--text-muted)",fontWeight:d?600:500,cursor:"pointer",fontSize:"var(--text-sm)",whiteSpace:"nowrap",textAlign:"left",flexShrink:0,boxSizing:"border-box",touchAction:"manipulation",transition:"all var(--dur-fast) var(--ease-out-warm)"},children:[(0,a.jsx)(l,{size:14,"aria-hidden":"true",style:{marginTop:2,flexShrink:0,color:d?"var(--accent)":"currentColor"}}),(0,a.jsxs)("span",{style:{display:"flex",flexDirection:"column",gap:1,minWidth:0},children:[(0,a.jsx)("span",{style:{fontWeight:d?600:500,fontSize:"var(--text-base)",color:d?"var(--text)":"inherit"},children:p}),(0,a.jsx)("span",{style:{fontSize:"var(--text-sm)",color:"var(--text-dim)",lineHeight:1.25,maxWidth:180,overflow:"hidden",textOverflow:"ellipsis"},children:c})]})]},e)})})}function L({active:e,onSelect:o}){let{t}=(0,M.s9)(),n=Math.max(0,V.findIndex(o=>o.id===e)),i=e=>{let t=null;("ArrowRight"===e.key||"ArrowDown"===e.key)&&(t=(n+1)%V.length),("ArrowLeft"===e.key||"ArrowUp"===e.key)&&(t=(n-1+V.length)%V.length),"Home"===e.key&&(t=0),"End"===e.key&&(t=V.length-1),null!==t&&(e.preventDefault(),o(V[t].id))};return(0,a.jsx)("div",{role:"tablist","aria-label":t("settingsConfig.extensionsTabsAria"),"aria-orientation":"horizontal",style:{display:"flex",gap:4,padding:4,border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"var(--bg-panel)",alignSelf:"flex-start",maxWidth:"100%",overflowX:"auto"},children:V.map(n=>{let s=n.id===e,r=t(`settingsConfig.extensionsTab.${n.id}`)||n.label,l=t(`settingsConfig.extensionsTab.${n.id}Desc`)||n.description;return(0,a.jsx)("button",{type:"button",role:"tab",id:`settings-extension-tab-${n.id}`,"aria-selected":s,"aria-controls":`settings-extension-panel-${n.id}`,"aria-label":`${r}: ${l}`,tabIndex:s?0:-1,onClick:()=>o(n.id),onKeyDown:i,style:{display:"inline-flex",alignItems:"center",justifyContent:"center",minHeight:"var(--control-touch, 44px)",padding:"6px 12px",border:s?"1px solid var(--accent)":"1px solid transparent",borderRadius:"calc(var(--radius-control) - var(--space-1))",background:s?"var(--bg-selected)":"transparent",color:s?"var(--text)":"var(--text-muted)",fontSize:"var(--text-sm)",fontWeight:s?600:500,cursor:"pointer",whiteSpace:"nowrap",boxSizing:"border-box",touchAction:"manipulation",transition:"all var(--dur-fast) var(--ease-out-warm)"},children:r},n.id)})})}var I=t(7834);function E(e){if("object"!=typeof e||null===e||!("supported"in e)||"boolean"!=typeof e.supported||!("installed"in e)||"boolean"!=typeof e.installed||!("running"in e)||"boolean"!=typeof e.running||!("autoStart"in e)||"boolean"!=typeof e.autoStart||!("label"in e)||"string"!=typeof e.label||!("pid"in e)||null!==e.pid&&("number"!=typeof e.pid||!Number.isSafeInteger(e.pid)||e.pid<=0)||!("logPath"in e)||null!==e.logPath&&"string"!=typeof e.logPath)throw Error("Invalid daemon status response");return{supported:e.supported,installed:e.installed,running:e.running,autoStart:e.autoStart,label:e.label,pid:e.pid,logPath:e.logPath,..."error"in e&&"string"==typeof e.error?{error:e.error}:{},..."accepted"in e&&!0===e.accepted?{accepted:!0}:{},..."cliAvailable"in e&&"boolean"==typeof e.cliAvailable?{cliAvailable:e.cliAvailable}:{}}}var D=t(96793),O=t(34140),U=t(4620),z=t(99030),B=t(76614);let H=["enabledModels","disabledProviders","modelProviderOrder","modelRoles"],G=["task.disabledAgents","task.agentModelOverrides","task.agentPrewalk","task.agentAdvisor"],W=()=>(0,a.jsx)("div",{role:"status",style:{flex:1,display:"flex",alignItems:"center",justifyContent:"center",color:"var(--text-muted)",fontSize:"var(--text-sm)"},children:"Loading settingsโ€ฆ"}),N=(0,s.default)(()=>t.e(5806).then(t.bind(t,55806)).then(e=>e.NativeSettingsEditor),{loadableGenerated:{webpack:()=>[55806]},loading:W}),F=(0,s.default)(()=>Promise.all([t.e(1441),t.e(3274)]).then(t.bind(t,33274)).then(e=>e.ModelsConfig),{loadableGenerated:{webpack:()=>[33274]},loading:W}),q=(0,s.default)(()=>t.e(9981).then(t.bind(t,99981)).then(e=>e.SkillsConfig),{loadableGenerated:{webpack:()=>[99981]},loading:W}),K=(0,s.default)(()=>t.e(2201).then(t.bind(t,42201)).then(e=>e.PluginsConfig),{loadableGenerated:{webpack:()=>[42201]},loading:W}),_=(0,s.default)(()=>t.e(4473).then(t.bind(t,24473)).then(e=>e.McpConfig),{loadableGenerated:{webpack:()=>[24473]},loading:W}),$=(0,s.default)(()=>t.e(9668).then(t.bind(t,79668)).then(e=>e.AgentsConfig),{loadableGenerated:{webpack:()=>[79668]},ssr:!1}),X=(0,s.default)(()=>Promise.all([t.e(587),t.e(3944)]).then(t.bind(t,63944)).then(e=>e.RelayPairPanel),{loadableGenerated:{webpack:()=>[63944]},loading:W}),J={fontSize:"var(--text-xs)",padding:"1px 6px",borderRadius:"calc(var(--radius-control) / 2)",background:"var(--bg-subtle)",color:"var(--text-muted)",fontWeight:500};function Y(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")}let Q=(0,n.createContext)(null),Z={models:"models",intelligence:"intelligence",agents:"agents",tools:"extensions",safety:"safety",system:"system"},ee=[{tab:"relay",section:"Connect Phone",label:"Pair phone via Relay",description:"Create a QR or link so ompgui Remote can connect over Relay.",scope:"UI",labelKey:"relayPair.title",descriptionKey:"relayPair.description",sectionKey:"settingsTabs.relay"},{tab:"general",section:"Appearance",label:"Color mode",description:"Choose between light, dark, or system color mode.",scope:"UI"},{tab:"general",section:"Appearance",label:"Theme palette",description:"Select the interface color palette.",scope:"UI"},{tab:"general",section:"Interface & Behavior",label:"Keep tool calls collapsed",description:"Show compact headers while tools execute.",scope:"UI"},{tab:"general",section:"Interface & Behavior",label:"Completion sound",description:"Play a tone when the agent completes a run.",scope:"UI"},{tab:"general",section:"Interface & Behavior",label:"Message during active run",description:"Choose whether a submission steers the current run or queues a follow-up.",scope:"UI"},{tab:"general",section:"Interface & Behavior",label:"Thinking Blocks",description:"Hide assistant reasoning on this device while keeping final answers visible.",scope:"UI",labelKey:"settingsConfig.hideThinking",descriptionKey:"settingsConfig.hideThinkingDesc"},{tab:"system",section:"System & Updates",label:"Background service",description:"Manage the background service and automatic start at login.",labelKey:"daemon.title",descriptionKey:"daemon.description",sectionKey:"settingsConfig.systemUpdates"},{tab:"system",section:"System & Updates",label:"Active session system prompt",description:"Inspect the system prompt used by the active session.",labelKey:"settingsConfig.sessionSystemPrompt",descriptionKey:"settingsConfig.sessionSystemPromptDescription",sectionKey:"settingsConfig.systemUpdates"}];function eo({results:e,query:o,onSelect:t}){return(0,a.jsxs)("div",{style:{flex:1,minHeight:0,overflowY:"auto",background:"var(--bg)",padding:16,display:"flex",flexDirection:"column",gap:10},children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-base)",color:"var(--text-muted)"},children:0===e.length?`No settings match โ€œ${o}โ€.`:`${e.length} result${1===e.length?"":"s"} for โ€œ${o}โ€.`}),e.map(e=>(0,a.jsxs)("button",{type:"button",onClick:()=>t(e),style:{textAlign:"left",display:"flex",flexDirection:"column",gap:4,padding:"10px 12px",border:"1px solid var(--border)",borderRadius:"var(--radius-card)",background:"var(--bg-panel)",color:"var(--text)",cursor:"pointer",transition:"border-color var(--dur-fast) var(--ease-out-warm), background var(--dur-fast) var(--ease-out-warm)"},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(0,a.jsx)("span",{style:{fontSize:"var(--text-base)",fontWeight:600},children:e.label}),"category"===e.kind&&(0,a.jsx)("span",{style:J,children:"Section"}),e.scope&&(0,a.jsx)("span",{style:J,children:e.scope})]}),(0,a.jsx)("div",{style:{fontSize:"var(--text-sm)",color:"var(--text-muted)",lineHeight:1.45},children:e.description}),e.section&&(0,a.jsx)("div",{style:{fontSize:"var(--text-xs)",color:"var(--text-dim)"},children:e.section})]},e.id))]})}function et({label:e,description:o,scope:t,compact:i=!1,hideDescription:s=!1,children:r}){let{t:l}=(0,M.s9)(),d=(0,n.useRef)(null),p=(0,n.useContext)(Q),c=null!==p&&p===Y(e);return(0,n.useEffect)(()=>{c&&d.current&&d.current.scrollIntoView({behavior:"smooth",block:"center"})},[c]),(0,a.jsxs)("div",{ref:d,"data-search-id":Y(e),style:{minWidth:0,padding:i?"8px 10px":"12px 14px",border:"1px solid var(--border)",borderRadius:"var(--radius-card)",background:"var(--bg-panel)",display:"flex",flexDirection:"column",gap:i?4:8,transition:"box-shadow var(--dur-fast) var(--ease-out-warm), border-color var(--dur-fast) var(--ease-out-warm)",...c?{borderColor:"var(--accent)",boxShadow:"0 0 0 2px var(--accent)"}:{}},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:10,flexWrap:"wrap"},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(0,a.jsx)("span",{style:{fontSize:"var(--text-base)",fontWeight:600,color:"var(--text)"},children:e}),t&&(0,a.jsx)("span",{style:J,children:"New sessions"===t?l("settingsConfig.newSessions"):t})]}),(0,a.jsx)("span",{style:{flexShrink:0},children:r})]}),!s&&(0,a.jsx)("span",{style:{color:"var(--text-muted)",fontSize:"var(--text-sm)",lineHeight:i?1.3:1.45},children:o})]})}function ea({activeTab:e,onAdvisorChange:o,toolCallsDefaultCollapsed:t,onToolCallsDefaultCollapsedChange:s,cwd:l,sessionId:y,systemPrompt:v,systemPromptLoading:x,onLoadSystemPrompt:w,onModelsSaved:S,onPluginsReloaded:T,onOmpSessionsRestarted:C,onOmpUpdateAvailabilityChange:A,onAppUpdateAvailabilityChange:V,onSelectTab:W,onClose:J,runtimeReady:en}){let{t:ei,locale:es}=(0,M.s9)(),er=(0,b.a)(),[el,ed]=(0,n.useState)(P(e)),[ep,ec]=(0,n.useState)(()=>"mcp"===e||"skills"===e||"plugins"===e?e:"tools"),[eu,eh]=(0,n.useState)(()=>new Set([P(e)])),[eg,em]=(0,n.useState)(!1),[eb,ek]=(0,n.useState)({}),ef=(0,n.useRef)(l),ey=eg||Object.keys(eb).length>0,[ev,ex]=(0,n.useState)(null),[ew,eS]=(0,n.useState)(!1),[eT,eC]=(0,n.useState)(0),[eA,eM]=(0,n.useState)(null),[eR,eV]=(0,n.useState)(!1),[eP,ej]=(0,n.useState)(null),[eL,eI]=(0,n.useState)(null),[eE,eD]=(0,n.useState)(null),[eO,eU]=(0,n.useState)(null),[ez,eB]=(0,n.useState)(!1),[eH,eG]=(0,n.useState)(null),[eW,eN]=(0,n.useState)(!1),[eF,eq]=(0,n.useState)(!1),[eK,e_]=(0,n.useState)(null),[e$,eX]=(0,n.useState)(!1),eJ=(0,n.useRef)(0),eY=(0,n.useRef)(0),eQ=(0,n.useRef)(!1),eZ=(0,n.useRef)(!1),[e0,e1]=(0,n.useState)(!1),[e2,e5]=(0,n.useState)("steer"),[e4,e6]=(0,n.useState)(""),[e3,e8]=(0,n.useState)(null),{preference:e9,setTheme:e7,palette:oe,setPalette:oo}=(0,D.DP)(),ot=(0,U.o)(),oa=(0,n.useRef)(!0),on=(0,n.useRef)(null);(0,n.useEffect)(()=>(oa.current=!0,()=>{oa.current=!1,on.current&&(clearTimeout(on.current),on.current=null)}),[]),(0,n.useEffect)(()=>{e1((0,O.NN)()),e5((0,i.vz)())},[]),(0,n.useEffect)(()=>{ef.current!==l&&(ef.current=l,ek({}))},[l]);let oi=(0,n.useCallback)(e=>{if(ey){ex(()=>e),eS(!0);return}e()},[ey]),os=(0,n.useCallback)(()=>{oi(()=>{J()})},[J,oi]),or=(0,n.useCallback)(e=>{"tools"===e||"mcp"===e||"skills"===e||"plugins"===e?oi(()=>{ed("extensions"),ec(e),eh(e=>new Set([...e,"extensions"])),W(e)}):oi(()=>{let o=P(e);ed(o),eh(e=>new Set([...e,o])),W(o)})},[W,oi]),ol=(0,n.useCallback)(()=>{em(!1),ek({}),eC(e=>e+1),eS(!1),ex(null),ev&&ev()},[ev]);(0,n.useEffect)(()=>{let o=P(e);ed(o),("tools"===e||"mcp"===e||"skills"===e||"plugins"===e)&&ec(e),eh(e=>new Set([...e,o]))},[e]);let od=(0,n.useCallback)(async(e=!1)=>{if(!e&&eQ.current)return;let o=++eJ.current;eQ.current=!0,eB(!0),e&&e_(null);try{let e=await fetch("/api/omp-update",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"check"})});if(!e.ok)throw Error("Failed to check OMP updates");let t=await e.json();if(o!==eJ.current||!oa.current)return;eU(t),A&&"boolean"==typeof t.updateAvailable&&A(t.updateAvailable),t.updateAvailable||e_(ei("settingsConfig.upToDate",{version:t.currentVersion??"current"}))}catch{if(o!==eJ.current||!oa.current)return;e_(ei("settingsConfig.updateCheckFailed"))}finally{o===eJ.current&&(eQ.current=!1,oa.current&&eB(!1))}},[A,ei]),op=(0,n.useCallback)(async(e=!1)=>{if(!e&&eZ.current)return;let o=++eY.current;eZ.current=!0,eN(!0),e&&(e_(null),eX(!1));try{let t=await fetch(e?"/api/app-update?force=1":"/api/app-update");if(!t.ok)throw Error("Failed to check ompgui updates");let a=await t.json();if(o!==eY.current||!oa.current)return;if(eG(a),a.lookupFailed){e&&(eX(!0),e_(ei("settingsConfig.appUpdateCheckFailed")));return}V&&"boolean"==typeof a.updateAvailable&&V(a.updateAvailable),eX(!1),e&&(a.updateAvailable?e_(null):e_(ei("settingsConfig.upToDate",{version:a.currentVersion??"current"})))}catch{if(o!==eY.current||!oa.current)return;e&&(eX(!0),e_(ei("settingsConfig.appUpdateCheckFailed")))}finally{o===eY.current&&(eZ.current=!1,oa.current&&eN(!1))}},[V,ei]);(0,n.useEffect)(()=>{"system"===el&&(od(),op(!1))},[el,od,op]);let oc=(0,n.useCallback)(async()=>{eV(!0),ej(null);try{let e=await fetch("/api/daemon",{cache:"no-store",signal:AbortSignal.timeout(5e3)});if(!e.ok)throw Error(ei("daemon.unavailable"));let o=E(await e.json());oa.current&&eM(o)}catch(e){oa.current&&ej(e instanceof Error?e.message:ei("daemon.unavailable"))}finally{oa.current&&eV(!1)}},[ei]);(0,n.useEffect)(()=>{"system"===el&&oc()},[el,oc]),(0,n.useEffect)(()=>{let e;if(!eL)return;let o=!1,t=async()=>{try{let e=await fetch("/api/daemon",{cache:"no-store",signal:AbortSignal.timeout(4e3)});if(e.ok){let t=E(await e.json());if(o)return;if(eM(t),"restart"===eL.action?t.running&&t.pid!==eL.pid:"uninstall"===eL.action?!t.installed:!t.running){eI(null),ej(t.error??null);return}}}catch{}if(!o){if(Date.now()>=eL.deadline){eI(null),eM(null),ej(ei("daemon.readbackFailed"));return}e=window.setTimeout(()=>void t(),2e3)}};return e=window.setTimeout(()=>void t(),2e3),()=>{o=!0,window.clearTimeout(e)}},[eL,ei]);let ou=(0,n.useCallback)(async e=>{eV(!0),ej(null),eD(null);let o="restart"===e||"stop"===e||"uninstall"===e,t=!1;try{let o=await fetch("/api/daemon",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:e}),signal:AbortSignal.timeout(2e4)});t=!o.ok;let a=await o.json();if(!o.ok)throw Error("object"==typeof a&&null!==a&&"error"in a&&"string"==typeof a.error?a.error:ei("daemon.actionFailed"));if("object"==typeof a&&null!==a&&"error"in a&&"string"==typeof a.error&&a.error)throw t=!0,Error(a.error);let n=E(a);if(!oa.current)return;eM(n),n.accepted?eI({action:e,pid:eA?.pid??null,deadline:Date.now()+6e4}):await oc()}catch(a){if(!oa.current)return;ej(a instanceof Error?a.message:ei("daemon.actionFailed")),o&&!t&&eI({action:e,pid:eA?.pid??null,deadline:Date.now()+6e4})}finally{oa.current&&eV(!1)}},[eA?.pid,oc,ei]),oh=(0,n.useCallback)(async()=>{eq(!0),e_(null);try{if(!(await fetch("/api/omp-update",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"restart"})})).ok)throw Error("Failed to restart sessions");e_(ei("settingsConfig.sessionsRestarted")),C()}catch{e_(ei("settingsConfig.restartFailed"))}finally{eq(!1)}},[C,ei]),og=(0,n.useMemo)(()=>{let e=e4.trim().toLowerCase();if(!e)return[];let o=[];for(let t of R){let a=ei(`settingsTabs.${t.id}`)||t.label,n=ei(`settingsTabs.${t.id}Desc`)||t.description;(a.toLowerCase().includes(e)||n.toLowerCase().includes(e)||t.id.toLowerCase().includes(e))&&o.push({id:`cat-${t.id}`,kind:"category",tab:t.id,label:a,description:n})}for(let t of ee){let a=(t.labelKey?ei(t.labelKey):null)||t.label,n=(t.descriptionKey?ei(t.descriptionKey):null)||t.description,i=(t.sectionKey?ei(t.sectionKey):null)||t.section;(a.toLowerCase().includes(e)||n.toLowerCase().includes(e)||i.toLowerCase().includes(e))&&o.push({id:`setting-${t.tab}-${Y(t.label)}`,kind:"setting",tab:t.tab,label:a,description:n,scope:t.scope,section:i})}for(let t of B.K){let a="ko"===es?"ko":"en",n=t.label[a],i=t.description[a];`${t.path} ${t.group} ${n} ${i}`.toLowerCase().includes(e)&&o.push({id:`catalog-${t.path}`,kind:"setting",tab:t.admin?"safety":H.some(e=>e===t.path)?"providers":Z[t.category],label:n,description:i,scope:"global"===t.scope?"Global":"Global / project",section:t.admin?"Administrator settings":t.group,path:t.path})}return o},[es,e4,ei]),om=(0,n.useCallback)(e=>{e6(""),or(e.tab),"extensions"===e.tab&&ec("tools"),"setting"===e.kind&&(e8(e.path??Y(e.label)),on.current&&clearTimeout(on.current),on.current=setTimeout(()=>{on.current=null,e8(null)},2500))},[or]);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(k.lG,{open:!0,onOpenChange:e=>{e||os()},children:(0,a.jsxs)(k.Cf,{ariaLabel:ei("settingsConfig.title"),style:{width:860,maxWidth:"96vw",height:er?"92dvh":"80vh",maxHeight:"92dvh",display:"flex",flexDirection:"column",overflow:"hidden",padding:0,borderRadius:"var(--radius-modal)",boxShadow:"var(--shadow-modal)",background:"var(--bg)"},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:er?"12px 14px":"16px 20px",borderBottom:"1px solid var(--border)",background:"var(--bg-panel)",gap:12},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8,minWidth:0},children:[(0,a.jsx)(k.L3,{style:{margin:0,fontSize:"var(--text-lg)",fontWeight:650,whiteSpace:"nowrap"},children:ei("settingsConfig.title")}),ey&&(0,a.jsx)("span",{style:{fontSize:"var(--text-xs)",padding:"2px 6px",borderRadius:"calc(var(--radius-control) / 2)",background:"var(--status-warning-bg)",color:"var(--status-warning)",border:"1px solid var(--status-warning-border)"},children:ei("settingsConfig.unsavedChanges")})]}),(0,a.jsxs)("div",{style:{position:"relative",flex:1,maxWidth:280,minWidth:120},children:[(0,a.jsx)(r.A,{size:13,"aria-hidden":"true",style:{position:"absolute",left:9,top:"50%",transform:"translateY(-50%)",color:"var(--text-dim)",pointerEvents:"none"}}),(0,a.jsx)("input",{type:"search",value:e4,onChange:e=>e6(e.target.value),placeholder:ei("settingsConfig.searchPlaceholder"),"aria-label":ei("settingsConfig.searchPlaceholder"),style:{width:"100%",height:28,padding:"0 8px 0 28px",borderRadius:"var(--radius-control)",border:"1px solid var(--border)",background:"var(--bg)",color:"var(--text)",fontSize:"var(--text-sm)",outline:"none",boxSizing:"border-box"}})]})]}),(0,a.jsx)("div",{style:{display:"flex",flex:1,minHeight:0,flexDirection:er?"column":"row"},children:e4.trim()?(0,a.jsx)(eo,{results:og,query:e4.trim(),onSelect:om}):(0,a.jsxs)(Q.Provider,{value:e3,children:[(0,a.jsx)(j,{active:el,onSelect:or,layout:er?"horizontal":"vertical"}),(0,a.jsxs)("div",{style:{flex:1,minWidth:0,overflowY:"auto",display:"flex",flexDirection:"column"},children:["relay"===el&&(0,a.jsx)("div",{role:"tabpanel",id:"settings-panel-relay","aria-labelledby":"settings-tab-relay",style:{padding:er?"12px 14px":20,display:"flex",flexDirection:"column",gap:16},children:(0,a.jsx)(X,{embedded:!0})}),"general"===el&&(0,a.jsxs)("div",{role:"tabpanel",id:"settings-panel-general","aria-labelledby":"settings-tab-general",style:{padding:er?"12px 14px":20,display:"flex",flexDirection:"column",gap:16},children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{style:{fontSize:"var(--text-base)",fontWeight:600,margin:0},children:ei("settingsConfig.generalTitle")}),(0,a.jsx)("p",{style:{margin:"4px 0 0",fontSize:"var(--text-sm)",color:"var(--text-muted)"},children:ei("settingsConfig.generalDescription")})]}),(0,a.jsxs)("div",{style:{display:"grid",gridTemplateColumns:er?"1fr":"repeat(2, minmax(0, 1fr))",gap:10},children:[(0,a.jsx)(et,{label:ei("settingsConfig.themeMode"),description:ei("settingsConfig.themeModeDesc"),scope:"UI",children:(0,a.jsx)("div",{style:{display:"inline-flex",padding:2,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",gap:2},children:["system","light","dark"].map(e=>{let o=e9===e,t="system"===e?d:"light"===e?p.A:c.A,n="system"===e?ei("settingsConfig.themeModeSystem"):"light"===e?ei("settingsConfig.themeModeLight"):ei("settingsConfig.themeModeDark");return(0,a.jsxs)("button",{type:"button","aria-label":n,"aria-pressed":o,onClick:()=>e7(e),title:n,className:"ui-focus-ring",style:{display:"inline-flex",alignItems:"center",gap:4,height:24,padding:"0 8px",border:"none",borderRadius:"calc(var(--radius-control) - var(--space-1))",background:o?"var(--bg-selected)":"transparent",color:o?"var(--text)":"var(--text-muted)",fontWeight:o?600:500,fontSize:"var(--text-sm)",cursor:"pointer",transition:"background var(--dur-fast) var(--ease-out-warm), color var(--dur-fast) var(--ease-out-warm)"},children:[(0,a.jsx)(t,{size:12,"aria-hidden":"true"}),(0,a.jsx)("span",{children:n})]},e)})})}),(0,a.jsx)(et,{label:ei("settingsConfig.themePalette"),description:ei("settingsConfig.themePaletteDesc"),scope:"UI",children:(0,a.jsx)("div",{style:{display:"inline-flex",padding:2,background:"var(--bg)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",gap:2},children:["warm","omp"].map(e=>{let o=oe===e,t="warm"===e?ei("settingsConfig.paletteWarm"):ei("settingsConfig.paletteOmp");return(0,a.jsxs)("button",{type:"button","aria-label":t,"aria-pressed":o,onClick:()=>oo(e),title:t,className:"ui-focus-ring",style:{display:"inline-flex",alignItems:"center",gap:5,height:24,padding:"0 8px",border:"none",borderRadius:"calc(var(--radius-control) - var(--space-1))",background:o?"var(--bg-selected)":"transparent",color:o?"var(--text)":"var(--text-muted)",fontWeight:o?600:500,fontSize:"var(--text-sm)",cursor:"pointer",transition:"background var(--dur-fast) var(--ease-out-warm), color var(--dur-fast) var(--ease-out-warm)"},children:[(0,a.jsxs)("span",{"aria-hidden":"true",style:{display:"inline-flex",alignItems:"center",gap:2.5,padding:"2px 3px",borderRadius:"calc(var(--radius-control) / 2)",background:"var(--bg-subtle)",flexShrink:0},children:[(0,a.jsx)("span",{style:{width:6,height:6,borderRadius:"50%",background:`var(--palette-${e}-preview-bg)`,border:"1px solid var(--border)",flexShrink:0}}),(0,a.jsx)("span",{style:{width:6,height:6,borderRadius:"50%",background:`var(--palette-${e}-preview-panel)`,border:"1px solid var(--border)",flexShrink:0}}),(0,a.jsx)("span",{style:{width:6,height:6,borderRadius:"50%",background:`var(--palette-${e}-preview-accent)`,flexShrink:0}})]}),(0,a.jsx)("span",{children:t})]},e)})})})]}),(0,a.jsxs)("div",{style:{display:"grid",gridTemplateColumns:er?"1fr":"repeat(2, minmax(0, 1fr))",gap:10},children:[(0,a.jsx)(et,{label:ei("settingsConfig.toolCallsCollapsed"),description:ei("settingsConfig.toolCallsCollapsedDesc"),scope:"UI",children:(0,a.jsx)(f.dO,{checked:t,onChange:e=>s(e),"aria-label":ei("settingsConfig.toolCallsCollapsed")})}),(0,a.jsx)(et,{label:ei("settingsConfig.hideThinking"),description:ei("settingsConfig.hideThinkingDesc"),scope:"UI",children:(0,a.jsx)(f.dO,{checked:ot,onChange:z.J9,"aria-label":ei("settingsConfig.hideThinking")})}),(0,a.jsx)(et,{label:ei("settingsConfig.completionSound"),description:ei("settingsConfig.completionSoundDesc"),scope:"UI",children:(0,a.jsx)(f.dO,{checked:e0,onChange:e=>{e1(e),(0,O.RJ)(e),window.dispatchEvent(new CustomEvent("omp-sound-pref-change",{detail:e}))},"aria-label":ei("settingsConfig.completionSound")})})]}),(0,a.jsx)(et,{label:ei("settingsConfig.submitBehavior"),description:ei("settingsConfig.submitBehaviorDesc"),scope:"UI",children:(0,a.jsx)(f.l6,{value:e2,onChange:e=>{(0,i.t_)(e),e5(e)},required:!0,options:[{value:"steer",label:ei("settingsConfig.steerCurrent")},{value:"queue",label:ei("settingsConfig.queueFollowUp")}],"aria-label":ei("settingsConfig.submitBehavior")})})]}),"agents"===el&&(0,a.jsxs)("div",{role:"tabpanel",id:"settings-panel-agents","aria-labelledby":"settings-tab-agents",style:{padding:er?"12px 14px":20,display:"flex",flexDirection:"column",gap:16,minHeight:0},children:[(0,a.jsx)(N,{drafts:eb,setDrafts:ek,categories:["agents"],cwd:l,focusPath:e3,excludeGlobalPaths:G,onApplied:(e,t)=>{"advisor.enabled"===e&&"boolean"==typeof t&&o(t)}}),(0,a.jsxs)("div",{style:{borderTop:"1px solid var(--border)",paddingTop:16},children:[(0,a.jsx)("div",{style:{marginBottom:10,color:"var(--text-muted)",fontSize:"var(--text-sm)"},children:ei("nativeSettings.agentManagerScope")}),(0,a.jsx)($,{cwd:l??void 0,onSaved:S})]})]}),"safety"===el&&(0,a.jsxs)("div",{role:"tabpanel",id:"settings-panel-safety","aria-labelledby":"settings-tab-safety",style:{padding:er?"12px 14px":20,display:"flex",flexDirection:"column",gap:18},children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{style:{fontSize:"var(--text-base)",fontWeight:600,margin:0},children:ei("settingsConfig.safetyTitle")}),(0,a.jsx)("p",{style:{margin:"4px 0 0",fontSize:"var(--text-sm)",color:"var(--text-muted)"},children:ei("settingsConfig.safetyDescription")})]}),(0,a.jsx)(N,{drafts:eb,setDrafts:ek,categories:["safety"],cwd:l,focusPath:e3}),(0,a.jsx)(N,{drafts:eb,setDrafts:ek,adminOnly:!0,cwd:l,focusPath:e3})]}),"models"===el&&(0,a.jsxs)("div",{role:"tabpanel",id:"settings-panel-models","aria-labelledby":"settings-tab-models",style:{padding:er?"12px 14px":20,display:"flex",flexDirection:"column",gap:16},children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{style:{fontSize:"var(--text-base)",fontWeight:600,margin:0},children:ei("settingsConfig.modelsTitle")}),(0,a.jsx)("p",{style:{margin:"4px 0 0",fontSize:"var(--text-sm)",color:"var(--text-muted)"},children:ei("settingsConfig.modelsDescription")})]}),(0,a.jsx)(N,{drafts:eb,setDrafts:ek,categories:["models"],cwd:l,focusPath:e3,excludeGlobalPaths:H})]}),(eu.has("providers")||eu.has("models"))&&(0,a.jsx)("div",{role:"tabpanel",id:"settings-panel-providers","aria-labelledby":"settings-tab-providers",style:{display:"providers"===el?"flex":"none",height:"100%",minHeight:0,flexDirection:"column"},children:(0,a.jsx)(F,{onSaved:()=>{em(!1),S()},onDirtyChange:em},eT)}),"intelligence"===el&&(0,a.jsx)("div",{role:"tabpanel",id:"settings-panel-intelligence","aria-labelledby":"settings-tab-intelligence",style:{padding:er?"12px 14px":20,display:"flex",flexDirection:"column",gap:16},children:(0,a.jsx)(N,{drafts:eb,setDrafts:ek,categories:["intelligence"],cwd:l,focusPath:e3})}),"extensions"===el&&(0,a.jsxs)("div",{role:"tabpanel",id:"settings-panel-extensions","aria-labelledby":"settings-tab-extensions",style:{display:"flex",height:"100%",minHeight:0,flexDirection:"column",overflowY:"hidden",padding:20,gap:16},children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{style:{fontSize:"var(--text-base)",fontWeight:600,margin:0},children:ei("settingsTabs.extensions")}),(0,a.jsx)("p",{style:{margin:"4px 0 0",fontSize:"var(--text-sm)",color:"var(--text-muted)"},children:ei("settingsTabs.extensionsDesc")})]}),(0,a.jsx)(L,{active:ep,onSelect:or}),"tools"===ep&&(0,a.jsx)("div",{role:"tabpanel",id:"settings-extension-panel-tools","aria-labelledby":"settings-extension-tab-tools",style:{display:"flex",flex:1,minHeight:0,flexDirection:"column",overflowY:"auto"},children:(0,a.jsx)(N,{drafts:eb,setDrafts:ek,categories:["tools"],cwd:l,focusPath:e3})}),"mcp"===ep&&(0,a.jsxs)("div",{role:"tabpanel",id:"settings-extension-panel-mcp","aria-labelledby":"settings-extension-tab-mcp",style:{display:"flex",flex:1,minHeight:0,flexDirection:"column",overflowY:"auto",gap:12},children:[(0,a.jsx)(_,{cwd:l??null,sessionId:y??void 0}),!l&&(0,a.jsx)("p",{role:"status",style:{margin:0,color:"var(--text-muted)",fontSize:"var(--text-sm)"},children:ei("settingsConfig.noWorkspaceMcpHint")})]}),"skills"===ep&&(0,a.jsx)("div",{role:"tabpanel",id:"settings-extension-panel-skills","aria-labelledby":"settings-extension-tab-skills",style:{display:"flex",flex:1,minHeight:0,flexDirection:"column",overflowY:"auto"},children:l?(0,a.jsx)(q,{cwd:l}):(0,a.jsx)("div",{role:"status",style:{padding:16,border:"1px solid var(--border)",borderRadius:"var(--radius-card)",color:"var(--text-muted)",fontSize:"var(--text-sm)"},children:ei("settingsConfig.workspaceRequired")})}),"plugins"===ep&&(0,a.jsx)("div",{role:"tabpanel",id:"settings-extension-panel-plugins","aria-labelledby":"settings-extension-tab-plugins",style:{display:"flex",flex:1,minHeight:0,flexDirection:"column",overflowY:"auto"},children:l?(0,a.jsx)(K,{cwd:l,sessionId:y??null,onReloaded:T,runtimeReady:en}):(0,a.jsx)("div",{role:"status",style:{padding:16,border:"1px solid var(--border)",borderRadius:"var(--radius-card)",color:"var(--text-muted)",fontSize:"var(--text-sm)"},children:ei("settingsConfig.workspaceRequired")})})]}),"system"===el&&(0,a.jsxs)("div",{role:"tabpanel",id:"settings-panel-system","aria-labelledby":"settings-tab-system",style:{padding:20,display:"flex",flexDirection:"column",gap:18},children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h3",{style:{fontSize:"var(--text-base)",fontWeight:600,margin:0},children:ei("settingsConfig.systemUpdates")}),(0,a.jsx)("p",{style:{margin:"4px 0 0",fontSize:"var(--text-sm)",color:"var(--text-muted)"},children:ei("settingsConfig.systemUpdatesDescription")})]}),(0,a.jsx)(N,{drafts:eb,setDrafts:ek,categories:["system"],cwd:l,focusPath:e3}),(0,a.jsxs)("section",{"data-search-id":Y("Background service"),"aria-label":ei("daemon.title"),style:{padding:14,border:"1px solid var(--border)",borderRadius:"var(--radius-card)",background:"var(--bg-panel)",display:"flex",flexDirection:"column",gap:12},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12},children:[(0,a.jsx)("h4",{style:{margin:0,fontSize:"var(--text-md)",fontWeight:600},children:ei("daemon.title")}),(0,a.jsx)("button",{type:"button",className:"ui-focus-ring",disabled:eR||!!eL,onClick:()=>void oc(),style:{padding:"6px 10px",minHeight:32,border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"transparent",color:"var(--text)",fontSize:"var(--text-sm)",cursor:eR||eL?"wait":"pointer"},children:ei("settingsConfig.refresh")})]}),(0,a.jsx)("div",{role:"status","aria-live":"polite",style:{fontSize:"var(--text-sm)",color:"var(--text-muted)"},children:eL?ei("restart"===eL.action?"daemon.reconnecting":"daemon.stopping"):eR?ei("daemon.loading"):eA?eA.supported?eA.cliAvailable?eA.installed?eA.running?ei("daemon.running",{pid:eA.pid??"โ€”"}):ei("daemon.stopped"):ei("daemon.notInstalled"):ei("daemon.cliMissing"):ei("daemon.unsupported"):ei("daemon.unknown")}),(0,a.jsx)("p",{style:{margin:0,fontSize:"var(--text-sm)",color:"var(--text-muted)",lineHeight:1.5},children:ei("daemon.description")}),eA?.supported&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12},children:[(0,a.jsx)("span",{style:{fontSize:"var(--text-sm)"},children:ei("daemon.autoStart")}),(0,a.jsx)(f.dO,{"aria-label":ei("daemon.autoStart"),checked:eA.autoStart,disabled:eR||!!eL||!eA.cliAvailable,onChange:e=>{e?ou(eA.installed?"enable":"install"):eD("disable")}})]}),(0,a.jsx)("div",{style:{display:"flex",gap:8,flexWrap:"wrap"},children:["start","stop","restart","uninstall"].map(e=>(0,a.jsx)("button",{type:"button",className:"ui-focus-ring",style:{padding:"6px 10px",minHeight:32,border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"transparent",color:"var(--text)",fontSize:"var(--text-sm)"},disabled:eR||!!eL||!eA.cliAvailable||!eA.installed||("start"===e?eA.running:("stop"===e||"restart"===e)&&!eA.running),onClick:()=>"start"===e?void ou(e):eD(e),children:ei(`daemon.${e}`)},e))}),eA.logPath&&(0,a.jsxs)("div",{style:{fontSize:"var(--text-sm)",overflowWrap:"anywhere"},children:[ei("daemon.logs"),": ",(0,a.jsx)("code",{children:eA.logPath})]}),!eA.cliAvailable&&(0,a.jsx)("code",{style:{fontSize:"var(--text-sm)",overflowWrap:"anywhere"},children:"npm install -g ompgui@latest"}),!eA.installed&&eA.cliAvailable&&(0,a.jsx)("code",{style:{fontSize:"var(--text-sm)",overflowWrap:"anywhere"},children:"ompgui service install"})]}),(eP||eA?.error)&&(0,a.jsx)("div",{role:"alert",style:{fontSize:"var(--text-sm)",color:"var(--danger)",overflowWrap:"anywhere"},children:eP||eA?.error}),(0,a.jsxs)("p",{style:{margin:0,fontSize:"var(--text-sm)",color:"var(--text-muted)",lineHeight:1.5},children:[ei("daemon.disconnectWarning")," ",(0,a.jsx)("code",{children:"ompgui start"})]})]}),(0,a.jsxs)("section",{"data-search-id":Y("Active session system prompt"),style:{padding:"var(--space-5)",border:"1px solid var(--border)",borderRadius:"var(--radius-card)",background:"var(--bg-panel)",display:"flex",flexDirection:"column",gap:"var(--space-4)",...e3===Y("Active session system prompt")?{borderColor:"var(--accent)",boxShadow:"0 0 0 2px var(--accent)"}:{}},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:"var(--space-4)",flexWrap:"wrap"},children:[(0,a.jsxs)("div",{style:{minWidth:0,flex:1},children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-md)",fontWeight:650},children:ei("settingsConfig.sessionSystemPrompt")}),(0,a.jsx)("div",{style:{marginTop:"var(--space-1)",color:"var(--text-muted)",fontSize:"var(--text-sm)",lineHeight:1.45},children:ei("settingsConfig.sessionSystemPromptDescription")})]}),(0,a.jsxs)("button",{type:"button",onClick:w,disabled:!y||x,"aria-label":ei("settingsConfig.systemPromptActionAria"),style:{display:"inline-flex",alignItems:"center",gap:"var(--space-2)",flexShrink:0,padding:"var(--space-3) var(--space-4)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"var(--bg)",color:"var(--text)",cursor:!y||x?"not-allowed":"pointer",opacity:!y||x?.65:1,fontSize:"var(--text-sm)"},children:[(0,a.jsx)(u.A,{size:13,"aria-hidden":"true",className:x?"icon-spin":void 0}),x?ei("settingsConfig.systemPromptLoading"):null===v?ei("settingsConfig.loadSystemPrompt"):ei("settingsConfig.reloadSystemPrompt")]})]}),(0,a.jsx)("div",{"aria-live":"polite","aria-busy":x,style:{minHeight:"var(--control-height-lg)",maxHeight:"45dvh",overflowY:"auto",padding:"var(--space-4)",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"var(--bg)",color:"var(--text-muted)",fontSize:"var(--text-sm)",lineHeight:1.5},children:x?(0,a.jsx)("div",{role:"status",children:ei("settingsConfig.systemPromptLoading")}):y?null===v?(0,a.jsx)("div",{style:{fontStyle:"italic"},children:ei("settingsConfig.systemPromptUnavailable")}):0===v.length?(0,a.jsx)("div",{style:{fontStyle:"italic"},children:ei("settingsConfig.systemPromptEmpty")}):(0,a.jsx)("pre",{"aria-label":ei("settingsConfig.sessionSystemPrompt"),style:{margin:0,color:"var(--text)",fontFamily:"var(--font-mono)",fontSize:"var(--text-sm)",lineHeight:1.5,whiteSpace:"pre-wrap",overflowWrap:"anywhere"},children:v}):(0,a.jsx)("div",{style:{fontStyle:"italic"},children:ei("settingsConfig.systemPromptNoSession")})})]}),(0,a.jsxs)("section",{style:{padding:14,border:"1px solid var(--border)",borderRadius:"var(--radius-card)",background:"var(--bg-panel)",display:"flex",flexDirection:"column",gap:10},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12},children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-md)",fontWeight:600},children:ei("settingsConfig.appLabel")}),(0,a.jsx)("div",{style:{marginTop:4,color:eH?.updateAvailable?"var(--accent)":"var(--text-muted)",fontFamily:"var(--font-mono)",fontSize:"var(--text-sm)"},children:eW?ei("settingsConfig.checkingUpdates"):eH?.updateAvailable?ei("appShell.updateVersion",{current:eH.currentVersion??"?",available:eH.availableVersion??"?"}):e$||eH?.lookupFailed?ei("settingsConfig.appUpdateCheckFailed"):eH?.currentVersion&&eH?.availableVersion?ei("settingsConfig.upToDate",{version:eH.currentVersion}):ei("settingsConfig.versionUnavailable")})]}),(0,a.jsxs)("button",{type:"button",onClick:()=>void op(!0),disabled:eW,"aria-label":ei("settingsConfig.checkAppUpdates"),style:{padding:"6px 10px",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"transparent",color:"var(--text)",cursor:eW?"wait":"pointer",fontSize:"var(--text-sm)",display:"inline-flex",alignItems:"center",gap:5},children:[(0,a.jsx)(u.A,{size:13,"aria-hidden":"true"})," ",ei("settingsConfig.refresh")]})]}),eH?.updateAvailable&&(0,a.jsxs)("div",{style:{marginTop:6,padding:"10px 12px",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"var(--bg)",display:"flex",flexDirection:"column",gap:6},children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-sm)",color:"var(--text-muted)"},children:ei("settingsConfig.runAppUpdateCommand")}),(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(0,a.jsx)("code",{style:{flex:1,fontFamily:"var(--font-mono)",fontSize:"var(--text-sm)",color:"var(--accent)",wordBreak:"break-all"},children:eH.updateCommand||"ompgui update"}),(0,a.jsxs)("button",{type:"button",onClick:()=>{(0,I.D)(eH.updateCommand||"ompgui update").then(()=>e_(ei("appShell.commandCopied"))).catch(()=>e_(ei("appShell.commandCopyFailed")))},style:{display:"inline-flex",alignItems:"center",gap:5,padding:"4px 8px",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"var(--bg-subtle)",color:"var(--text)",cursor:"pointer",fontSize:"var(--text-xs)"},children:[(0,a.jsx)(h.A,{size:12,"aria-hidden":"true"})," ",ei("appShell.copyCommand")]})]})]})]}),(0,a.jsxs)("section",{style:{padding:14,border:"1px solid var(--border)",borderRadius:"var(--radius-card)",background:"var(--bg-panel)",display:"flex",flexDirection:"column",gap:10},children:[(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12},children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-md)",fontWeight:600},children:ei("settingsConfig.ompLabel")}),(0,a.jsx)("div",{style:{marginTop:4,color:eO?.updateAvailable?"var(--accent)":"var(--text-muted)",fontFamily:"var(--font-mono)",fontSize:"var(--text-sm)"},children:ez?ei("settingsConfig.checkingUpdates"):eO?.updateAvailable?ei("appShell.updateVersion",{current:eO.currentVersion??"?",available:eO.availableVersion??"?"}):eO?.currentVersion?ei("settingsConfig.upToDate",{version:eO.currentVersion}):ei("settingsConfig.versionUnavailable")})]}),(0,a.jsxs)("button",{type:"button",onClick:()=>void od(!0),disabled:ez,"aria-label":ei("settingsConfig.checkOmpUpdates"),style:{padding:"6px 10px",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"transparent",color:"var(--text)",cursor:ez?"wait":"pointer",fontSize:"var(--text-sm)",display:"inline-flex",alignItems:"center",gap:5},children:[(0,a.jsx)(u.A,{size:13,"aria-hidden":"true"})," ",ei("settingsConfig.refresh")]})]}),eO?.updateAvailable&&(0,a.jsxs)("div",{style:{marginTop:6,padding:"10px 12px",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"var(--bg)",display:"flex",flexDirection:"column",gap:6},children:[(0,a.jsx)("div",{style:{fontSize:"var(--text-sm)",color:"var(--text-muted)"},children:ei("settingsConfig.runOmpUpdateCommand")}),(0,a.jsxs)("div",{style:{display:"flex",alignItems:"center",gap:8},children:[(0,a.jsx)("code",{style:{flex:1,fontFamily:"var(--font-mono)",fontSize:"var(--text-sm)",color:"var(--accent)",wordBreak:"break-all"},children:eO.updateCommand||"omp update"}),(0,a.jsxs)("button",{type:"button",onClick:()=>{(0,I.D)(eO.updateCommand||"omp update").then(()=>e_(ei("appShell.commandCopied"))).catch(()=>e_(ei("appShell.commandCopyFailed")))},style:{display:"inline-flex",alignItems:"center",gap:5,padding:"4px 8px",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"var(--bg-subtle)",color:"var(--text)",cursor:"pointer",fontSize:"var(--text-xs)"},children:[(0,a.jsx)(h.A,{size:12,"aria-hidden":"true"})," ",ei("appShell.copyCommand")]})]})]}),(0,a.jsxs)("div",{style:{display:"flex",flexWrap:"wrap",gap:8,marginTop:6},children:[(0,a.jsxs)("button",{type:"button",onClick:()=>void oh(),disabled:eF,style:{display:"inline-flex",alignItems:"center",gap:6,padding:"7px 12px",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",background:"var(--bg-subtle)",color:"var(--text)",cursor:eF?"wait":"pointer",fontSize:"var(--text-sm)"},children:[(0,a.jsx)(g.A,{size:13,"aria-hidden":"true"})," ",eF?ei("settingsConfig.restarting"):ei("settingsConfig.restartSessions")]}),(0,a.jsxs)("a",{href:"https://github.com/can1357/oh-my-pi/releases",target:"_blank",rel:"noreferrer",style:{display:"inline-flex",alignItems:"center",gap:6,padding:"7px 12px",border:"1px solid var(--border)",borderRadius:"var(--radius-control)",color:"var(--text-muted)",textDecoration:"none",fontSize:"var(--text-sm)"},children:[(0,a.jsx)(m,{size:13,"aria-hidden":"true"})," ",ei("settingsConfig.changelog")]})]}),eK&&(0,a.jsx)("p",{role:"status",style:{margin:"4px 0 0",color:"var(--text-muted)",fontSize:"var(--text-sm)",lineHeight:1.5},children:eK})]})]})]})]})})]})}),(0,a.jsx)(f.TM,{open:null!==eE,onOpenChange:e=>{e||eD(null)},title:eE?ei(`daemon.${eE}`):ei("daemon.title"),description:ei("disable"===eE?"daemon.disableConfirm":"daemon.disconnectConfirm"),confirmLabel:eE?ei(`daemon.${eE}`):ei("daemon.title"),cancelLabel:ei("settingsConfig.cancel"),danger:!0,onConfirm:()=>{eE&&ou(eE)}}),(0,a.jsx)(f.TM,{open:ew,onOpenChange:e=>{eS(e),e||ex(null)},title:ei("settingsConfig.unsavedChangesTitle"),description:ei("settingsConfig.unsavedChangesDescription"),confirmLabel:ei("settingsConfig.discardChanges"),cancelLabel:ei("settingsConfig.cancel"),danger:!0,onConfirm:ol})]})}},76614:(e,o,t)=>{t.d(o,{K:()=>a});let a=[{path:"defaultThinkingLevel",category:"models",group:"Thinking",label:{en:"Thinking Level",ko:"์‚ฌ๊ณ  ์ˆ˜์ค€"},description:{en:"Reasoning depth for thinking-capable models",ko:"์‚ฌ๊ณ  ์ง€์› ๋ชจ๋ธ์˜ ์ถ”๋ก  ๊นŠ์ด"},kind:"enum",scope:"both",defaultValue:"high",choices:["minimal","low","medium","high","xhigh","max","auto"]},{path:"externalThinking",category:"models",group:"Thinking",label:{en:"External Thinking",ko:"์™ธ๋ถ€ ์‚ฌ๊ณ "},description:{en:"Private scratchpad; not shown to user. Disables supported GPT, Claude, and Gemini reasoning",ko:"์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š” ๋น„๊ณต๊ฐœ ๋ฉ”๋ชจ์žฅ์ž…๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” GPT, Claude, Gemini ์ถ”๋ก ์„ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"model.loopGuard.checkAssistantContent",category:"models",group:"Thinking",label:{en:"Loop Guard Scan Prose",ko:"๋ฃจํ”„ ๊ฐ€๋“œ ๋ณธ๋ฌธ ๊ฒ€์‚ฌ"},description:{en:"Apply loop guard to assistant prose messages in addition to thinking logs",ko:"์‚ฌ๊ณ  ๋กœ๊ทธ๋ฟ ์•„๋‹ˆ๋ผ ์–ด์‹œ์Šคํ„ดํŠธ ๋ณธ๋ฌธ ๋ฉ”์‹œ์ง€์—๋„ ๋ฃจํ”„ ๊ฐ€๋“œ๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,appliesTo:{en:"Applies when model.loopGuard.enabled is on.",ko:"model.loopGuard.enabled๊ฐ€ ์ผœ์ง„ ๊ฒฝ์šฐ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"model.loopGuard.enabled",category:"models",group:"Thinking",label:{en:"Loop Guard",ko:"๋ฃจํ”„ ๊ฐ€๋“œ"},description:{en:"Enable automatic stream loop detection for model reasoning and prose",ko:"๋ชจ๋ธ์˜ ์ถ”๋ก  ๋ฐ ๋ณธ๋ฌธ์—์„œ ์ŠคํŠธ๋ฆผ ๋ฃจํ”„๋ฅผ ์ž๋™ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"model.loopGuard.toolCallReminder",category:"models",group:"Thinking",label:{en:"Loop Guard Tool-Call Reminder",ko:"๋ฃจํ”„ ๊ฐ€๋“œ ๋„๊ตฌ ํ˜ธ์ถœ ์•Œ๋ฆผ"},description:{en:"When a Gemini reasoning stream emits many consecutive planning headers without calling a tool, interrupt it and inject a reminder to issue a tool call (requires Loop Guard)",ko:"Gemini ์ถ”๋ก  ์ŠคํŠธ๋ฆผ์ด ๋„๊ตฌ ํ˜ธ์ถœ ์—†์ด ์—ฐ์†๋œ ๊ณ„ํš ํ—ค๋”๋ฅผ ๋งŽ์ด ์ƒ์„ฑํ•˜๋ฉด ์ค‘๋‹จํ•˜๊ณ  ๋„๊ตฌ ํ˜ธ์ถœ ์•Œ๋ฆผ์„ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค(Loop Guard ํ•„์š”)."},kind:"boolean",scope:"both",defaultValue:!0,appliesTo:{en:"Applies when model.loopGuard.enabled is on.",ko:"model.loopGuard.enabled๊ฐ€ ์ผœ์ง„ ๊ฒฝ์šฐ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"model.toolCallLoopGuard.enabled",category:"models",group:"Thinking",label:{en:"Tool-Call Loop Guard",ko:"๋„๊ตฌ ํ˜ธ์ถœ ๋ฃจํ”„ ๊ฐ€๋“œ"},description:{en:"Detect consecutive identical tool calls across turns and inject a corrective steer",ko:"ํ„ด ๊ฐ„์— ์—ฐ์†์œผ๋กœ ๋™์ผํ•œ ๋„๊ตฌ๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ๊ฐ์ง€ํ•˜์—ฌ ์ˆ˜์ • ์ง€์‹œ๋ฅผ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"model.toolCallLoopGuard.exemptTools",category:"models",group:"Thinking",label:{en:"Tool-Call Loop Exempt Tools",ko:"๋„๊ตฌ ํ˜ธ์ถœ ๋ฃจํ”„ ์ œ์™ธ ๋„๊ตฌ"},description:{en:"Tool names that may repeat consecutively without triggering the cross-turn loop guard",ko:"ํ„ด ๊ฐ„ ๋ฃจํ”„ ๊ฐ€๋“œ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜์ง€ ์•Š๊ณ  ์—ฐ์†์œผ๋กœ ๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค."},kind:"array",scope:"both",defaultValue:["wait"],items:"string",appliesTo:{en:"Applies when model.toolCallLoopGuard.enabled is on.",ko:"model.toolCallLoopGuard.enabled๊ฐ€ ์ผœ์ง„ ๊ฒฝ์šฐ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"model.toolCallLoopGuard.threshold",category:"models",group:"Thinking",label:{en:"Tool-Call Loop Threshold",ko:"๋„๊ตฌ ํ˜ธ์ถœ ๋ฃจํ”„ ์ž„๊ณ„๊ฐ’"},description:{en:"Consecutive identical tool calls required before the corrective steer is injected",ko:"์ˆ˜์ • ์ง€์‹œ๋ฅผ ์‚ฝ์ž…ํ•˜๊ธฐ ์ „๊นŒ์ง€ ํ—ˆ์šฉํ•  ์—ฐ์†๋œ ๋™์ผ ๋„๊ตฌ ํ˜ธ์ถœ ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:5,integer:!0,appliesTo:{en:"Applies when model.toolCallLoopGuard.enabled is on.",ko:"model.toolCallLoopGuard.enabled๊ฐ€ ์ผœ์ง„ ๊ฒฝ์šฐ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"omitThinking",category:"models",group:"Thinking",label:{en:"Omit Thinking summaries",ko:"์‚ฌ๊ณ  ์š”์•ฝ ์ƒ๋žต"},description:{en:"Instruct upstream providers to completely omit thinking summaries from responses (where supported)",ko:"์ง€์›๋˜๋Š” ๊ฒฝ์šฐ ์—…์ŠคํŠธ๋ฆผ ์ œ๊ณต์ž๊ฐ€ ์‘๋‹ต์—์„œ ์‚ฌ๊ณ  ์š”์•ฝ์„ ์™„์ „ํžˆ ์ƒ๋žตํ•˜๋„๋ก ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"providers.autoThinkingMaxEffort",category:"models",group:"Thinking",label:{en:"Auto Thinking Ceiling",ko:"์ž๋™ ์‚ฌ๊ณ  ์ƒํ•œ"},description:{en:"Highest effort the `auto` classifier may resolve. `xhigh` keeps the classifier one tier below the top, so only an explicit `ultrathink` reaches `max`; `max` lets a turn the classifier judges exceptional bill the top tier on models that expose it.",ko:"`auto` ๋ถ„๋ฅ˜๊ธฐ๊ฐ€ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๋…ธ๋ ฅ ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค. `xhigh`๋Š” ๋ถ„๋ฅ˜๊ธฐ๋ฅผ ์ตœ์ƒ์œ„๋ณด๋‹ค ํ•œ ๋‹จ๊ณ„ ์•„๋ž˜๋กœ ์ œํ•œํ•˜๋ฏ€๋กœ ๋ช…์‹œ์ ์ธ `ultrathink`๋งŒ `max`์— ๋„๋‹ฌํ•ฉ๋‹ˆ๋‹ค. `max`๋Š” ๋ถ„๋ฅ˜๊ธฐ๊ฐ€ ์˜ˆ์™ธ์ ์ด๋ผ๊ณ  ํŒ๋‹จํ•œ ํ„ด์— ํ•ด๋‹น ๋‹จ๊ณ„๋ฅผ ์ง€์›ํ•˜๋Š” ๋ชจ๋ธ์˜ ์ตœ์ƒ์œ„ ์š”๊ธˆ์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"xhigh",choices:["xhigh","max"],appliesTo:{en:"Applies when defaultThinkingLevel is auto.",ko:"defaultThinkingLevel์ด auto์ธ ๊ฒฝ์šฐ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"disabledProviders",category:"models",group:"Disabled Providers",label:{en:"Disabled Providers",ko:"๋น„ํ™œ์„ฑํ™”๋œ ์ œ๊ณต์ž"},description:{en:"Providers that are disabled.",ko:"๋น„ํ™œ์„ฑํ™”๋œ ์ œ๊ณต์ž ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค."},kind:"array",scope:"both",defaultValue:[],items:"string"},{path:"enabledProviders",category:"models",group:"Enabled Providers",label:{en:"Enabled Providers",ko:"ํ™œ์„ฑํ™”๋œ ์ œ๊ณต์ž"},description:{en:"Providers that are enabled.",ko:"ํ™œ์„ฑํ™”๋œ ์ œ๊ณต์ž ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค."},kind:"array",scope:"both",defaultValue:[],items:"string"},{path:"enabledModels",category:"models",group:"Enabled Models",label:{en:"Enabled Models",ko:"ํ™œ์„ฑํ™”๋œ ๋ชจ๋ธ"},description:{en:"Models that are enabled.",ko:"ํ™œ์„ฑํ™”๋œ ๋ชจ๋ธ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค."},kind:"array",scope:"both",defaultValue:[],items:"string"},{path:"extendedContext",category:"models",group:"General",label:{en:"Extended Context",ko:"ํ™•์žฅ ์ปจํ…์ŠคํŠธ"},description:{en:"Use larger context windows where supported; may incur premium pricing. Off keeps default or standard-pricing windows",ko:"์ง€์›๋˜๋Š” ๊ฒฝ์šฐ ๋” ํฐ ์ปจํ…์ŠคํŠธ ์ฐฝ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ฆฌ๋ฏธ์—„ ์š”๊ธˆ์ด ๋ถ€๊ณผ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„๋ฉด ๊ธฐ๋ณธ ๋˜๋Š” ํ‘œ์ค€ ์š”๊ธˆ ์ปจํ…์ŠคํŠธ ์ฐฝ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"images.autoResize",category:"models",group:"Images",label:{en:"Auto-Resize Images",ko:"์ด๋ฏธ์ง€ ์ž๋™ ํฌ๊ธฐ ์กฐ์ •"},description:{en:"Resize large images to 2000x2000 max for better model compatibility",ko:"๋ชจ๋ธ ํ˜ธํ™˜์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ํฐ ์ด๋ฏธ์ง€์˜ ์ตœ๋Œ€ ํฌ๊ธฐ๋ฅผ 2000x2000์œผ๋กœ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"images.blockImages",category:"models",group:"Images",label:{en:"Block Images",ko:"์ด๋ฏธ์ง€ ์ฐจ๋‹จ"},description:{en:"Prevent images from being sent to LLM providers",ko:"์ด๋ฏธ์ง€๊ฐ€ LLM ์ œ๊ณต์ž์—๊ฒŒ ์ „์†ก๋˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"images.urls.credentials",category:"models",group:"Images",label:{en:"Credentials",ko:"์ž๊ฒฉ ์ฆ๋ช…"},description:{en:"Write-only map from image URL backend ids to backend credential name/value objects.",ko:"์ด๋ฏธ์ง€ URL ๋ฐฑ์—”๋“œ ID๋ฅผ ํ•ด๋‹น ๋ฐฑ์—”๋“œ์˜ ์ž๊ฒฉ ์ฆ๋ช… ์ด๋ฆ„/๊ฐ’ ๊ฐ์ฒด์— ๋งคํ•‘ํ•˜๋Š” ์“ฐ๊ธฐ ์ „์šฉ ์„ค์ •์ž…๋‹ˆ๋‹ค."},kind:"object",scope:"global",recordValues:"json",secret:!0,admin:!0,confirmation:!0,appliesTo:{en:"Applies to images.urls.enabled.",ko:"images.urls.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"images.urls.options",category:"models",group:"Images",label:{en:"Options",ko:"์˜ต์…˜"},description:{en:"Maps each image URL backend id to that backend's structured option object.",ko:"๊ฐ ์ด๋ฏธ์ง€ URL ๋ฐฑ์—”๋“œ ID๋ฅผ ํ•ด๋‹น ๋ฐฑ์—”๋“œ์˜ ๊ตฌ์กฐํ™”๋œ ์˜ต์…˜ ๊ฐ์ฒด์— ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค."},kind:"object",scope:"global",defaultValue:{},recordValues:"json",admin:!0,confirmation:!0,appliesTo:{en:"Applies to images.urls.enabled.",ko:"images.urls.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"images.describeForTextModels",category:"models",group:"Vision",label:{en:"Describe Images for Text Models",ko:"ํ…์ŠคํŠธ ๋ชจ๋ธ์šฉ ์ด๋ฏธ์ง€ ์„ค๋ช…"},description:{en:"When an image is attached to a model without vision support, save it under local:// and inject a description from a vision-capable model instead of dropping it",ko:"๋น„์ „ ๋ฏธ์ง€์› ๋ชจ๋ธ์— ์ด๋ฏธ์ง€๊ฐ€ ์ฒจ๋ถ€๋˜๋ฉด ์ด๋ฏธ์ง€๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋Œ€์‹  local:// ์•„๋ž˜์— ์ €์žฅํ•˜๊ณ  ๋น„์ „ ์ง€์› ๋ชจ๋ธ์ด ์ƒ์„ฑํ•œ ์„ค๋ช…์„ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"images.urls.backends",category:"models",group:"Vision",label:{en:"Image URL Backends",ko:"์ด๋ฏธ์ง€ URL ๋ฐฑ์—”๋“œ"},description:{en:"Ordered destinations tried when publishing images for provider access",ko:"์ œ๊ณต์ž ์ ‘๊ทผ์„ ์œ„ํ•ด ์ด๋ฏธ์ง€๋ฅผ ๊ฒŒ์‹œํ•  ๋•Œ ์ˆœ์„œ๋Œ€๋กœ ์‹œ๋„ํ•  ๋Œ€์ƒ์ž…๋‹ˆ๋‹ค."},kind:"array",scope:"global",defaultValue:["provider-files","tailscale","cloudflared","litterbox"],choices:["imgur","imageshack","flickr","chevereto","vgyme","dropbox","ftp","onedrive","google-drive","puush","box","amazon-s3","google-cloud-storage","azure-storage","backblaze-b2","owncloud","mediafire","sendspace","localhostr","lambda","pomf","uguu","seafile","s-ul","lobfile","transfer-sh","plik","shared-folder","catbox","litterbox","0x0","tmpfiles","discord","provider-files","direct","cloudflared","ngrok","tailscale","ssh","command","localhost-run","pinggy","devtunnel","zrok","bore","named-cloudflared","r2","tigris","minio","garage"],items:"string",admin:!0,confirmation:!0,appliesTo:{en:"Applies to images.urls.enabled.",ko:"images.urls.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"images.urls.bindHost",category:"models",group:"Vision",label:{en:"Image URL Bind Host",ko:"์ด๋ฏธ์ง€ URL ๋ฐ”์ธ๋“œ ํ˜ธ์ŠคํŠธ"},description:{en:"Host the blob server binds to; loopback for tunnels, 0.0.0.0 for direct serving",ko:"๋ธ”๋กญ ์„œ๋ฒ„๊ฐ€ ๋ฐ”์ธ๋”ฉํ•  ํ˜ธ์ŠคํŠธ์ž…๋‹ˆ๋‹ค. ํ„ฐ๋„์—๋Š” loopback, ์ง์ ‘ ์ œ๊ณต์—๋Š” 0.0.0.0์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค."},kind:"string",scope:"global",defaultValue:"127.0.0.1",admin:!0,confirmation:!0,appliesTo:{en:"Applies to locally hosted direct and tunnel image URL backends.",ko:"๋กœ์ปฌ์—์„œ ํ˜ธ์ŠคํŒ…๋˜๋Š” direct ๋ฐ ํ„ฐ๋„ ์ด๋ฏธ์ง€ URL ๋ฐฑ์—”๋“œ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"images.urls.command",category:"models",group:"Vision",label:{en:"Image Upload Command",ko:"์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ๋ช…๋ น"},description:{en:"Argv template for the command backend; {file} is the image path, {mime}/{ext} optional. The last URL printed on stdout is used (e.g. pasta -b -f {file})",ko:"๋ช…๋ น ๋ฐฑ์—”๋“œ์šฉ Argv ํ…œํ”Œ๋ฆฟ์ž…๋‹ˆ๋‹ค. {file}์€ ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ์ด๋ฉฐ {mime}/{ext}๋Š” ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. stdout์— ์ถœ๋ ฅ๋œ ๋งˆ์ง€๋ง‰ URL์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: pasta -b -f {file})."},kind:"string",scope:"global",admin:!0,confirmation:!0,appliesTo:{en:"Applies when the command image URL backend is selected.",ko:"command ์ด๋ฏธ์ง€ URL ๋ฐฑ์—”๋“œ๋ฅผ ์„ ํƒํ•œ ๊ฒฝ์šฐ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"images.urls.enabled",category:"models",group:"Vision",label:{en:"Serve Images as URLs",ko:"์ด๋ฏธ์ง€๋ฅผ URL๋กœ ์ œ๊ณต"},description:{en:"Publish outgoing images through the configured backend chain and send URL-fetching providers short URLs instead of inline base64. Falls back to inline automatically when every backend or a provider fetch fails",ko:"์„ค์ •๋œ ๋ฐฑ์—”๋“œ ์ฒด์ธ์„ ํ†ตํ•ด ๋ฐœ์‹  ์ด๋ฏธ์ง€๋ฅผ ๊ฒŒ์‹œํ•˜๊ณ , URL์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ์ œ๊ณต์ž์—๊ฒŒ inline base64 ๋Œ€์‹  ์งง์€ URL์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฐฑ์—”๋“œ ๋˜๋Š” ์ œ๊ณต์ž์˜ ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์ž๋™์œผ๋กœ inline ๋ฐฉ์‹์œผ๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1,admin:!0,confirmation:!0},{path:"images.urls.publicBaseUrl",category:"models",group:"Vision",label:{en:"Image URL Public Base",ko:"์ด๋ฏธ์ง€ URL ๊ณต๊ฐœ ๋ฒ ์ด์Šค"},description:{en:"Externally reachable base URL fronting the blob server (required for ssh, optional for direct)",ko:"๋ธ”๋กญ ์„œ๋ฒ„ ์•ž๋‹จ์—์„œ ์™ธ๋ถ€ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ ๋ฒ ์ด์Šค URL์ž…๋‹ˆ๋‹ค(ssh์—๋Š” ํ•„์ˆ˜, ์ง์ ‘ ์ œ๊ณต์—๋Š” ์„ ํƒ ์‚ฌํ•ญ)."},kind:"string",scope:"global",admin:!0,confirmation:!0,appliesTo:{en:"Required by the ssh backend and optional for the direct backend.",ko:"ssh ๋ฐฑ์—”๋“œ์—๋Š” ํ•„์ˆ˜์ด๋ฉฐ direct ๋ฐฑ์—”๋“œ์—๋Š” ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค."}},{path:"images.urls.sshRemotePort",category:"models",group:"Vision",label:{en:"Image URL SSH Remote Port",ko:"์ด๋ฏธ์ง€ URL SSH ์›๊ฒฉ ํฌํŠธ"},description:{en:"Remote listen port of the ssh reverse forward that your web server proxies to",ko:"์›น ์„œ๋ฒ„๊ฐ€ ํ”„๋ก์‹œํ•˜๋Š” ssh ์—ญ๋ฐฉํ–ฅ ํฌ์›Œ๋”ฉ์˜ ์›๊ฒฉ ์ˆ˜์‹  ํฌํŠธ์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"global",defaultValue:8787,integer:!0,admin:!0,confirmation:!0,appliesTo:{en:"Applies when the ssh image URL backend is selected.",ko:"ssh ์ด๋ฏธ์ง€ URL ๋ฐฑ์—”๋“œ๋ฅผ ์„ ํƒํ•œ ๊ฒฝ์šฐ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"images.urls.sshTarget",category:"models",group:"Vision",label:{en:"Image URL SSH Target",ko:"์ด๋ฏธ์ง€ URL SSH ๋Œ€์ƒ"},description:{en:"user@host destination for the ssh reverse forward",ko:"ssh ์—ญ๋ฐฉํ–ฅ ํฌ์›Œ๋”ฉ์˜ user@host ๋Œ€์ƒ์ž…๋‹ˆ๋‹ค."},kind:"string",scope:"global",admin:!0,confirmation:!0,appliesTo:{en:"Applies when the ssh image URL backend is selected.",ko:"ssh ์ด๋ฏธ์ง€ URL ๋ฐฑ์—”๋“œ๋ฅผ ์„ ํƒํ•œ ๊ฒฝ์šฐ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"images.urls.ttlHours",category:"models",group:"Vision",label:{en:"Image URL Lifetime (hours)",ko:"์ด๋ฏธ์ง€ URL ์ˆ˜๋ช…(hours)"},description:{en:"Serving window for locally hosted image URLs, measured from the last time a conversation sent them; resuming a conversation re-arms the window at the same link. 0 keeps links alive while the broker runs",ko:"๋กœ์ปฌ ํ˜ธ์ŠคํŒ… ์ด๋ฏธ์ง€ URL์˜ ์ œ๊ณต ๊ธฐ๊ฐ„์œผ๋กœ, ๋Œ€ํ™”์—์„œ ๋งˆ์ง€๋ง‰์œผ๋กœ ์ „์†กํ•œ ์‹œ์ ๋ถ€ํ„ฐ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€ํ™”๋ฅผ ์žฌ๊ฐœํ•˜๋ฉด ๊ฐ™์€ ๋งํฌ์˜ ์ œ๊ณต ๊ธฐ๊ฐ„์ด ๋‹ค์‹œ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. 0์ด๋ฉด ๋ธŒ๋กœ์ปค๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ๋งํฌ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:72,admin:!0,confirmation:!0,appliesTo:{en:"Applies to images.urls.enabled.",ko:"images.urls.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"images.questionTimeoutMs",category:"models",group:"Execution",label:{en:"Image Question Timeout",ko:"์ด๋ฏธ์ง€ ์งˆ๋ฌธ ์ œํ•œ ์‹œ๊ฐ„"},description:{en:"Per-request timeout for the vision-model call behind read's ?q= image questions, in milliseconds. A stalled provider fails fast with a timeout error instead of blocking until manual abort. Set to 0 to disable the timeout.",ko:"read์˜ ?q= ์ด๋ฏธ์ง€ ์งˆ๋ฌธ์— ์‚ฌ์šฉ๋˜๋Š” ๋น„์ „ ๋ชจ๋ธ ํ˜ธ์ถœ์˜ ์š”์ฒญ๋ณ„ ์ œํ•œ ์‹œ๊ฐ„(ms)์ž…๋‹ˆ๋‹ค. ์ œ๊ณต์ž๊ฐ€ ์‘๋‹ตํ•˜์ง€ ์•Š์œผ๋ฉด ์ˆ˜๋™ ์ค‘๋‹จ๊นŒ์ง€ ์ฐจ๋‹จํ•˜๋Š” ๋Œ€์‹  ์ œํ•œ ์‹œ๊ฐ„ ์˜ค๋ฅ˜๋กœ ๋น ๋ฅด๊ฒŒ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ์ œํ•œ ์‹œ๊ฐ„์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด 0์œผ๋กœ ์„ค์ •ํ•˜์„ธ์š”."},kind:"number",scope:"both",defaultValue:3e5,integer:!0},{path:"includeModelInPrompt",category:"models",group:"Prompt",label:{en:"Include Model in Prompt",ko:"ํ”„๋กฌํ”„ํŠธ์— ๋ชจ๋ธ ํฌํ•จ"},description:{en:"Surface the active model identifier in the system prompt so the agent knows which model it is",ko:"์—์ด์ „ํŠธ๊ฐ€ ์‚ฌ์šฉ ์ค‘์ธ ๋ชจ๋ธ์„ ์•Œ ์ˆ˜ ์žˆ๋„๋ก ํ™œ์„ฑ ๋ชจ๋ธ ์‹๋ณ„์ž๋ฅผ ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ์— ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"inlineToolDescriptors",category:"models",group:"Prompt",label:{en:"Inline Tool Descriptors",ko:"์ธ๋ผ์ธ ๋„๊ตฌ ์„ค๋ช…์ž"},description:{en:"Render full tool descriptors in the system prompt and strip top-level/nested descriptions from provider tool schemas so descriptor text is sent once. Auto enables this for Gemini models and disables it otherwise",ko:"์ „์ฒด ๋„๊ตฌ ์„ค๋ช…์ž๋ฅผ ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ์— ๋ Œ๋”๋งํ•˜๊ณ  ์ œ๊ณต์ž ๋„๊ตฌ ์Šคํ‚ค๋งˆ์˜ ์ตœ์ƒ์œ„ ๋ฐ ์ค‘์ฒฉ ์„ค๋ช…์„ ์ œ๊ฑฐํ•˜์—ฌ ์„ค๋ช…์ž ํ…์ŠคํŠธ๊ฐ€ ํ•œ ๋ฒˆ๋งŒ ์ „์†ก๋˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. Gemini ๋ชจ๋ธ์—๋Š” ์ž๋™์œผ๋กœ ํ™œ์„ฑํ™”๋˜๊ณ  ๊ทธ ์™ธ ๋ชจ๋ธ์—๋Š” ๋น„ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"auto",choices:["auto","on","off"]},{path:"modelRoleStorage",category:"models",group:"Prompt",label:{en:"Model Role Storage",ko:"๋ชจ๋ธ ์—ญํ•  ์ €์žฅ ์œ„์น˜"},description:{en:"Where model selector role assignments are saved",ko:"๋ชจ๋ธ ์„ ํƒ๊ธฐ์˜ ์—ญํ•  ํ• ๋‹น์„ ์ €์žฅํ•  ์œ„์น˜์ž…๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"global",choices:["global","project"]},{path:"minP",category:"models",group:"Sampling",label:{en:"Min P",ko:"์ตœ์†Œ P"},description:{en:"Minimum probability threshold (0-1, -1 = provider default)",ko:"์ตœ์†Œ ํ™•๋ฅ  ์ž„๊ณ„๊ฐ’(0-1, -1 = ์ œ๊ณต์ž ๊ธฐ๋ณธ๊ฐ’)"},kind:"number",scope:"both",defaultValue:-1,integer:!1,min:-1,max:1,step:.01},{path:"presencePenalty",category:"models",group:"Sampling",label:{en:"Presence Penalty",ko:"์กด์žฌ ํŽ˜๋„ํ‹ฐ"},description:{en:"Penalty for introducing already-present tokens (-1 = provider default)",ko:"์ด๋ฏธ ์กด์žฌํ•˜๋Š” ํ† ํฐ์„ ๋„์ž…ํ•  ๋•Œ ์ ์šฉํ•˜๋Š” ํŽ˜๋„ํ‹ฐ์ž…๋‹ˆ๋‹ค(-1 = ์ œ๊ณต์ž ๊ธฐ๋ณธ๊ฐ’)."},kind:"number",scope:"both",defaultValue:-1,integer:!1},{path:"repetitionPenalty",category:"models",group:"Sampling",label:{en:"Repetition Penalty",ko:"๋ฐ˜๋ณต ํŽ˜๋„ํ‹ฐ"},description:{en:"Penalty for repeated tokens (-1 = provider default)",ko:"๋ฐ˜๋ณต ํ† ํฐ์— ์ ์šฉํ•  ํŽ˜๋„ํ‹ฐ(-1 = ์ œ๊ณต์ž ๊ธฐ๋ณธ๊ฐ’)"},kind:"number",scope:"both",defaultValue:-1,integer:!1},{path:"temperature",category:"models",group:"Sampling",label:{en:"Temperature",ko:"์˜จ๋„"},description:{en:"Sampling temperature (0 = deterministic, 1 = creative, -1 = provider default)",ko:"์ƒ˜ํ”Œ๋ง ์˜จ๋„(0 = ๊ฒฐ์ •์ , 1 = ์ฐฝ์˜์ , -1 = ์ œ๊ณต์ž ๊ธฐ๋ณธ๊ฐ’)"},kind:"number",scope:"both",defaultValue:-1,integer:!1},{path:"textVerbosity",category:"models",group:"Sampling",label:{en:"Text Verbosity",ko:"ํ…์ŠคํŠธ ์ƒ์„ธ๋„"},description:{en:"OpenAI Responses and Codex response verbosity (low, medium, or high)",ko:"OpenAI Responses ๋ฐ Codex ์‘๋‹ต ์ƒ์„ธ๋„(low, medium ๋˜๋Š” high)"},kind:"enum",scope:"both",defaultValue:"medium",choices:["low","medium","high"]},{path:"tier.advisor",category:"models",group:"Sampling",label:{en:"Service Tier โ€”\x80\x94 Advisor",ko:"์„œ๋น„์Šค ํ‹ฐ์–ด โ€” Advisor"},description:{en:"Service Tier for the advisor model. None = standard processing; Inherit = match the main agent's live per-family tiers; pick a value to apply it to the advisor model's family.",ko:"advisor ๋ชจ๋ธ์˜ Service Tier์ž…๋‹ˆ๋‹ค. None = ํ‘œ์ค€ ์ฒ˜๋ฆฌ, Inherit = ๊ธฐ๋ณธ ์—์ด์ „ํŠธ์˜ ์‹ค์‹œ๊ฐ„ ์ œํ’ˆ๊ตฐ๋ณ„ ํ‹ฐ์–ด์™€ ์ผ์น˜. ๊ฐ’์„ ์„ ํƒํ•˜๋ฉด advisor ๋ชจ๋ธ์˜ ์ œํ’ˆ๊ตฐ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"none",choices:["inherit","none","auto","default","flex","scale","priority","ultrafast"],appliesTo:{en:"Applies to advisor provider models.",ko:"advisor ์ œ๊ณต์ž ๋ชจ๋ธ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"tier.anthropic",category:"models",group:"Sampling",label:{en:"Service Tier โ€”\x80\x94 Anthropic",ko:"์„œ๋น„์Šค ํ‹ฐ์–ด โ€” Anthropic"},description:{en:'Processing tier for Claude requests. `priority` realizes fast mode (`speed: "fast"`) on supported direct Anthropic models; ignored on Bedrock/Vertex Claude and via OpenRouter.',ko:'Claude ์š”์ฒญ์˜ ์ฒ˜๋ฆฌ ํ‹ฐ์–ด์ž…๋‹ˆ๋‹ค. `priority`๋Š” ์ง€์›๋˜๋Š” Anthropic ์ง์ ‘ ์—ฐ๊ฒฐ ๋ชจ๋ธ์—์„œ ๋น ๋ฅธ ๋ชจ๋“œ(`speed: "fast"`)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Bedrock/Vertex Claude ๋ฐ OpenRouter๋ฅผ ํ†ตํ•œ ์š”์ฒญ์—์„œ๋Š” ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค.'},kind:"enum",scope:"both",defaultValue:"none",choices:["none","priority"],appliesTo:{en:"Applies to anthropic provider models.",ko:"anthropic ์ œ๊ณต์ž ๋ชจ๋ธ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"tier.google",category:"models",group:"Sampling",label:{en:"Service Tier โ€”\x80\x94 Google",ko:"์„œ๋น„์Šค ํ‹ฐ์–ด โ€” Google"},description:{en:"Processing tier for Gemini (Google AI Studio + Vertex) requests, and Google-family models routed via OpenRouter (none = omit). Sent as the top-level `serviceTier` field.",ko:"Gemini(Google AI Studio + Vertex) ์š”์ฒญ ๋ฐ OpenRouter๋ฅผ ํ†ตํ•ด ๋ผ์šฐํŒ…๋˜๋Š” Google ์ œํ’ˆ๊ตฐ ๋ชจ๋ธ์˜ ์ฒ˜๋ฆฌ ํ‹ฐ์–ด์ž…๋‹ˆ๋‹ค(none = ์ƒ๋žต). ์ตœ์ƒ์œ„ `serviceTier` ํ•„๋“œ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"none",choices:["none","flex","priority"],appliesTo:{en:"Applies to google provider models.",ko:"google ์ œ๊ณต์ž ๋ชจ๋ธ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"tier.openai",category:"models",group:"Sampling",label:{en:"Service Tier โ€”\x80\x94 OpenAI",ko:"์„œ๋น„์Šค ํ‹ฐ์–ด โ€” OpenAI"},description:{en:"Processing tier for OpenAI / OpenAI-Codex requests, and OpenAI-family models routed via OpenRouter (none = omit). Sent as `service_tier`.",ko:"OpenAI / OpenAI-Codex ์š”์ฒญ ๋ฐ OpenRouter๋ฅผ ํ†ตํ•ด ๋ผ์šฐํŒ…๋˜๋Š” OpenAI ์ œํ’ˆ๊ตฐ ๋ชจ๋ธ์˜ ์ฒ˜๋ฆฌ ํ‹ฐ์–ด์ž…๋‹ˆ๋‹ค(none = ์ƒ๋žต). `service_tier`๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"none",choices:["none","auto","default","flex","scale","priority","ultrafast"],appliesTo:{en:"Applies to openai provider models.",ko:"openai ์ œ๊ณต์ž ๋ชจ๋ธ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"tier.subagent",category:"models",group:"Sampling",label:{en:"Service Tier โ€”\x80\x94 Subagent",ko:"์„œ๋น„์Šค ํ‹ฐ์–ด โ€” ์„œ๋ธŒ์—์ด์ „ํŠธ"},description:{en:"Service Tier for spawned task/eval subagents. Inherit = match the main agent's live per-family tiers (tracks /fast); pick a value to apply it to whichever family the subagent's model belongs to.",ko:"์ƒ์„ฑ๋œ task/eval ์„œ๋ธŒ์—์ด์ „ํŠธ์˜ Service Tier์ž…๋‹ˆ๋‹ค. Inherit = ๊ธฐ๋ณธ ์—์ด์ „ํŠธ์˜ ์‹ค์‹œ๊ฐ„ ์ œํ’ˆ๊ตฐ๋ณ„ ํ‹ฐ์–ด์™€ ์ผ์น˜(/fast ์ถ”์ ). ๊ฐ’์„ ์„ ํƒํ•˜๋ฉด ์„œ๋ธŒ์—์ด์ „ํŠธ ๋ชจ๋ธ์ด ์†ํ•œ ์ œํ’ˆ๊ตฐ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"inherit",choices:["inherit","none","auto","default","flex","scale","priority","ultrafast"],appliesTo:{en:"Applies to subagent provider models.",ko:"subagent ์ œ๊ณต์ž ๋ชจ๋ธ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"topK",category:"models",group:"Sampling",label:{en:"Top K",ko:"Top K"},description:{en:"Sample from top-K tokens (-1 = provider default)",ko:"์ƒ์œ„ K๊ฐœ ํ† ํฐ์—์„œ ์ƒ˜ํ”Œ๋ง(-1 = ์ œ๊ณต์ž ๊ธฐ๋ณธ๊ฐ’)"},kind:"number",scope:"both",defaultValue:-1,integer:!0},{path:"topP",category:"models",group:"Sampling",label:{en:"Top P",ko:"Top P"},description:{en:"Nucleus sampling cutoff (0-1, -1 = provider default)",ko:"ํ•ต ์ƒ˜ํ”Œ๋ง ์ž„๊ณ„๊ฐ’(0-1, -1 = ์ œ๊ณต์ž ๊ธฐ๋ณธ๊ฐ’)"},kind:"number",scope:"both",defaultValue:-1,integer:!1,min:-1,max:1,step:.01},{path:"modelProviderOrder",category:"models",group:"Model Provider Order",label:{en:"Model Provider Order",ko:"๋ชจ๋ธ ์ œ๊ณต์ž ์ˆœ์„œ"},description:{en:"Sets the ordered list of model providers.",ko:"๋ชจ๋ธ ์ œ๊ณต์ž์˜ ์ˆœ์„œ ๋ชฉ๋ก์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค."},kind:"array",scope:"both",defaultValue:[],items:"string"},{path:"modelRoles",category:"models",group:"Model Roles",label:{en:"Model Roles",ko:"๋ชจ๋ธ ์—ญํ• "},description:{en:"Maps each model role name to a model selector.",ko:"๊ฐ ๋ชจ๋ธ ์—ญํ•  ์ด๋ฆ„์„ ๋ชจ๋ธ ์„ ํƒ์ž์— ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค."},kind:"object",scope:"both",defaultValue:{},recordValues:"model-role"},{path:"modelTags",category:"models",group:"Model Tags",label:{en:"Model Tags",ko:"๋ชจ๋ธ ํƒœ๊ทธ"},description:{en:"Maps each tag id to an object with a required name and optional color and hidden flag.",ko:"๊ฐ ํƒœ๊ทธ ID๋ฅผ ํ•„์ˆ˜ name๊ณผ ์„ ํƒ์  color ๋ฐ hidden ํ”Œ๋ž˜๊ทธ๊ฐ€ ์žˆ๋Š” ๊ฐ์ฒด์— ๋งคํ•‘ํ•ฉ๋‹ˆ๋‹ค."},kind:"object",scope:"both",defaultValue:{},recordValues:"json"},{path:"providers.fetch",category:"models",group:"Services",label:{en:"Fetch Provider",ko:"Fetch ์ œ๊ณต์ž"},description:{en:"Reader backend priority for the fetch/read URL tool",ko:"fetch/read URL ๋„๊ตฌ์˜ ๋ฆฌ๋” ๋ฐฑ์—”๋“œ ์šฐ์„ ์ˆœ์œ„์ž…๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"auto",choices:["auto","native","trafilatura","lynx","parallel","firecrawl","jina"],appliesTo:{en:"Applies to URL reads performed by the fetch/read tool.",ko:"fetch/read ๋„๊ตฌ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” URL ์ฝ๊ธฐ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"providers.maxInFlightRequests",category:"models",group:"Services",label:{en:"Max In-Flight Requests",ko:"์ตœ๋Œ€ ๋™์‹œ ์ฒ˜๋ฆฌ ์š”์ฒญ ์ˆ˜"},description:{en:'Maximum concurrent LLM requests per provider id (for example "openai" or "anthropic"), shared across local OMP processes with this config root. Omitted providers are unlimited.',ko:'์ œ๊ณต์ž id๋ณ„ ์ตœ๋Œ€ ๋™์‹œ LLM ์š”์ฒญ ์ˆ˜์ž…๋‹ˆ๋‹ค(์˜ˆ: "openai" ๋˜๋Š” "anthropic"). ์ด ๊ตฌ์„ฑ ๋ฃจํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋กœ์ปฌ OMP ํ”„๋กœ์„ธ์Šค ๊ฐ„์— ๊ณต์œ ๋ฉ๋‹ˆ๋‹ค. ์ƒ๋žต๋œ ์ œ๊ณต์ž๋Š” ๋ฌด์ œํ•œ์ž…๋‹ˆ๋‹ค.'},kind:"object",scope:"both",defaultValue:{},recordValues:"json",appliesTo:{en:"Applies to the matching model provider or provider feature.",ko:"ํ•ด๋‹น ๋ชจ๋ธ ์ œ๊ณต์ž ๋˜๋Š” ์ œ๊ณต์ž ๊ธฐ๋Šฅ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"providers.openai-codex.codeMode",category:"models",group:"Services",label:{en:"Codex Code Mode",ko:"Codex ์ฝ”๋“œ ๋ชจ๋“œ"},description:{en:"Route Codex code_mode_only models (GPT-5.6) through eval. The direct tools are eval, ask, todo, yield, think, checkpoint, and rewind. Use eval cells for other session tools. Mirrors codex-rs Code Mode. 'auto' follows the model catalog flag.",ko:"Codex code_mode_only ๋ชจ๋ธ(GPT-5.6)์„ eval์„ ํ†ตํ•ด ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ง์ ‘ ๋„๊ตฌ๋Š” eval, ask, todo, yield, think, checkpoint, rewind์ด๋ฉฐ ๊ทธ ๋ฐ–์˜ ์„ธ์…˜ ๋„๊ตฌ๋Š” eval ์…€์—์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. codex-rs Code Mode์™€ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•˜๋ฉฐ 'auto'๋Š” ๋ชจ๋ธ ์นดํƒˆ๋กœ๊ทธ ํ”Œ๋ž˜๊ทธ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"off",choices:["off","on","auto"],appliesTo:{en:"Applies to openai-codex provider models.",ko:"openai-codex ์ œ๊ณต์ž ๋ชจ๋ธ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"providers.anthropic.slowMode",category:"models",group:"Services",label:{en:"Anthropic Slow Mode",ko:"Anthropic ์ €์† ๋ชจ๋“œ"},description:{en:"When a Claude subscription hits its session limit and Anthropic offers low priority, continue at low priority after any wrap-up allowance (auto). Same setting as /slow on Anthropic.",ko:"Claude ๊ตฌ๋…์ด ์„ธ์…˜ ํ•œ๋„์— ๋„๋‹ฌํ•˜๊ณ  Anthropic์ด ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„ ์ฒ˜๋ฆฌ๋ฅผ ์ œ๊ณตํ•˜๋ฉด ๋งˆ๋ฌด๋ฆฌ ํ—ˆ์šฉ๋Ÿ‰์„ ์“ด ๋’ค ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„๋กœ ๊ณ„์† ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค(auto). Anthropic์—์„œ /slow์™€ ๊ฐ™์€ ์„ค์ •์ž…๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"off",choices:["off","auto"],appliesTo:{en:"Applies to first-party Anthropic Claude subscription accounts.",ko:"Anthropic ์ž์‚ฌ Claude ๊ตฌ๋… ๊ณ„์ •์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"providers.webSearchTimeoutSeconds",category:"models",group:"Services",label:{en:"Web Search Timeout",ko:"์›น ๊ฒ€์ƒ‰ ์‹œ๊ฐ„ ์ดˆ๊ณผ"},description:{en:"Hard timeout for each provider's search transport before web_search advances to the next fallback, in seconds (maximum 300)",ko:"web_search๊ฐ€ ๋‹ค์Œ ๋Œ€์ฒด ์ œ๊ณต์ž๋กœ ๋„˜์–ด๊ฐ€๊ธฐ ์ „๊นŒ์ง€ ๊ฐ ์ œ๊ณต์ž์˜ ๊ฒ€์ƒ‰ ์ „์†ก์— ์ ์šฉํ•  ๊ฐ•์ œ ์‹œ๊ฐ„ ์ œํ•œ(์ดˆ)์ž…๋‹ˆ๋‹ค(์ตœ๋Œ€ 300)."},kind:"number",scope:"both",defaultValue:60,max:300,appliesTo:{en:"Applies to each web search provider attempt.",ko:"๊ฐ ์›น ๊ฒ€์ƒ‰ ์ œ๊ณต์ž ์‹œ๋„์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"providers.streamFirstEventTimeoutSeconds",category:"models",group:"Timeouts",label:{en:"Stream First Event Timeout",ko:"์ŠคํŠธ๋ฆผ ์ฒซ ์ด๋ฒคํŠธ ์‹œ๊ฐ„ ์ดˆ๊ณผ"},description:{en:"Seconds to wait for the first model stream event; -1 uses provider/env defaults, 0 disables the watchdog",ko:"์ฒซ ๋ชจ๋ธ ์ŠคํŠธ๋ฆผ ์ด๋ฒคํŠธ๋ฅผ ๊ธฐ๋‹ค๋ฆด ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค. -1์€ ์ œ๊ณต์ž/env ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ณ , 0์€ ๊ฐ์‹œ ๊ธฐ๋Šฅ์„ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:-1,appliesTo:{en:"Applies to the matching model provider or provider feature.",ko:"ํ•ด๋‹น ๋ชจ๋ธ ์ œ๊ณต์ž ๋˜๋Š” ์ œ๊ณต์ž ๊ธฐ๋Šฅ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"providers.streamIdleTimeoutSeconds",category:"models",group:"Timeouts",label:{en:"Stream Idle Timeout",ko:"์ŠคํŠธ๋ฆผ ์œ ํœด ์‹œ๊ฐ„ ์ดˆ๊ณผ"},description:{en:"Seconds a model stream may stay silent between events; -1 uses provider/env defaults, 0 disables the watchdog",ko:"๋ชจ๋ธ ์ŠคํŠธ๋ฆผ์ด ์ด๋ฒคํŠธ ์‚ฌ์ด์— ์‘๋‹ต ์—†์ด ์œ ์ง€๋  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค. -1์€ ์ œ๊ณต์ž/env ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ณ , 0์€ ๊ฐ์‹œ ๊ธฐ๋Šฅ์„ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:-1,appliesTo:{en:"Applies to the matching model provider or provider feature.",ko:"ํ•ด๋‹น ๋ชจ๋ธ ์ œ๊ณต์ž ๋˜๋Š” ์ œ๊ณต์ž ๊ธฐ๋Šฅ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"providers.cacheRetention",category:"models",group:"Protocol",label:{en:"Prompt Cache Retention",ko:"ํ”„๋กฌํ”„ํŠธ ์บ์‹œ ๋ณด์กด"},description:{en:"Prompt-cache retention forwarded to providers that support it (Anthropic, Bedrock, OpenRouter, OpenAI)",ko:"์ง€์›ํ•˜๋Š” ์ œ๊ณต์ž(Anthropic, Bedrock, OpenRouter, OpenAI)์— ์ „๋‹ฌํ•  ํ”„๋กฌํ”„ํŠธ ์บ์‹œ ๋ณด์กด ๊ธฐ๊ฐ„์ž…๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"auto",choices:["auto","short","long","none"]},{path:"providers.cacheWarming",category:"models",group:"Protocol",label:{en:"Cache Warming",ko:"์บ์‹œ ์˜ˆ์—ด"},description:{en:"Re-send the last request with a one-token output budget shortly before its prompt-cache entry expires",ko:"ํ”„๋กฌํ”„ํŠธ ์บ์‹œ ํ•ญ๋ชฉ์ด ๋งŒ๋ฃŒ๋˜๊ธฐ ์ง์ „์— ์ถœ๋ ฅ ์˜ˆ์‚ฐ 1ํ† ํฐ์œผ๋กœ ๋งˆ์ง€๋ง‰ ์š”์ฒญ์„ ๋‹ค์‹œ ๋ณด๋ƒ…๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"idle",choices:["off","streaming","idle"]},{path:"provider.appendOnlyContext",category:"models",group:"Protocol",label:{en:"Append-Only Context",ko:"์ถ”๊ฐ€ ์ „์šฉ ์ปจํ…์ŠคํŠธ"},description:{en:"Cache system prompt + tool specs and keep an append-only message log so provider prefix caches (DeepSeek, Xiaomi/SGLang, Anthropic) hit at maximum rate. Auto enables for known prefix-cache providers.",ko:"์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ์™€ ๋„๊ตฌ ๋ช…์„ธ๋ฅผ ์บ์‹œํ•˜๊ณ  ๋ฉ”์‹œ์ง€ ๋กœ๊ทธ๋ฅผ ์ถ”๊ฐ€ ์ „์šฉ์œผ๋กœ ์œ ์ง€ํ•˜์—ฌ ์ œ๊ณต์ž ์ ‘๋‘์‚ฌ ์บ์‹œ(DeepSeek, Xiaomi/SGLang, Anthropic)์˜ ์ ์ค‘๋ฅ ์„ ์ตœ๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค. Auto๋Š” ์•Œ๋ ค์ง„ ์ ‘๋‘์‚ฌ ์บ์‹œ ์ œ๊ณต์ž์—์„œ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"auto",choices:["auto","on","off"]},{path:"providers.openaiWebsockets",category:"models",group:"Protocol",label:{en:"OpenAI WebSockets",ko:"OpenAI WebSocket"},description:{en:"Websocket policy for OpenAI Codex models (auto uses model defaults, on forces, off disables)",ko:"OpenAI Codex ๋ชจ๋ธ์˜ WebSocket ์ •์ฑ…์ž…๋‹ˆ๋‹ค(auto๋Š” ๋ชจ๋ธ ๊ธฐ๋ณธ๊ฐ’ ์‚ฌ์šฉ, on์€ ๊ฐ•์ œ ์‚ฌ์šฉ, off๋Š” ๋น„ํ™œ์„ฑํ™”)."},kind:"enum",scope:"both",defaultValue:"auto",choices:["auto","off","on"]},{path:"providers.openaiLiveSteering",category:"models",group:"Protocol",label:{en:"OpenAI Live Steering",ko:"OpenAI ์‹ค์‹œ๊ฐ„ ์กฐ์ •"},description:{en:"Deliver messages typed while a GPT-6 response streams into that response over the Codex WebSocket, instead of waiting for the next tool boundary",ko:"GPT-6 ์‘๋‹ต์ด ์ŠคํŠธ๋ฆฌ๋ฐ๋˜๋Š” ๋™์•ˆ ์ž…๋ ฅํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ๋‹ค์Œ ๋„๊ตฌ ๊ฒฝ๊ณ„๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  Codex WebSocket์„ ํ†ตํ•ด ํ•ด๋‹น ์‘๋‹ต์— ๋ฐ”๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,appliesTo:{en:"Applies to OpenAI Codex models over WebSocket.",ko:"WebSocket์„ ์‚ฌ์šฉํ•˜๋Š” OpenAI Codex ๋ชจ๋ธ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"thinkingBudgets.high",category:"models",group:"Thinking Budgets",label:{en:"High",ko:"๋†’์Œ"},description:{en:"Token budget for the high thinking level.",ko:"high ์‚ฌ๊ณ  ์ˆ˜์ค€์˜ ํ† ํฐ ์˜ˆ์‚ฐ์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:16384,integer:!0},{path:"thinkingBudgets.low",category:"models",group:"Thinking Budgets",label:{en:"Low",ko:"๋‚ฎ์Œ"},description:{en:"Token budget for the low thinking level.",ko:"low ์‚ฌ๊ณ  ์ˆ˜์ค€์˜ ํ† ํฐ ์˜ˆ์‚ฐ์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:2048,integer:!0},{path:"thinkingBudgets.max",category:"models",group:"Thinking Budgets",label:{en:"Max",ko:"์ตœ๋Œ€"},description:{en:"Token budget for the maximum thinking level.",ko:"maximum ์‚ฌ๊ณ  ์ˆ˜์ค€์˜ ํ† ํฐ ์˜ˆ์‚ฐ์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:32768,integer:!0},{path:"thinkingBudgets.medium",category:"models",group:"Thinking Budgets",label:{en:"Medium",ko:"์ค‘๊ฐ„"},description:{en:"Token budget for the medium thinking level.",ko:"medium ์‚ฌ๊ณ  ์ˆ˜์ค€์˜ ํ† ํฐ ์˜ˆ์‚ฐ์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:8192,integer:!0},{path:"thinkingBudgets.minimal",category:"models",group:"Thinking Budgets",label:{en:"Minimal",ko:"์ตœ์†Œ"},description:{en:"Token budget for the minimal thinking level.",ko:"minimal ์‚ฌ๊ณ  ์ˆ˜์ค€์˜ ํ† ํฐ ์˜ˆ์‚ฐ์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:1024,integer:!0},{path:"thinkingBudgets.xhigh",category:"models",group:"Thinking Budgets",label:{en:"Xhigh",ko:"๋งค์šฐ ๋†’์Œ"},description:{en:"Token budget for the xhigh thinking level.",ko:"xhigh ์‚ฌ๊ณ  ์ˆ˜์ค€์˜ ํ† ํฐ ์˜ˆ์‚ฐ์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:32768,integer:!0},{path:"autolearn.autoContinue",category:"intelligence",group:"Auto-Learn",label:{en:"Auto-run capture at stop",ko:"์ค‘์ง€ ์‹œ ์บก์ฒ˜ ์ž๋™ ์‹คํ–‰"},description:{en:"When on, auto-run one private capture turn at stop (uses extra tokens). When off, only standing auto-learn guidance remains.",ko:"์ผœ๋ฉด ์ค‘์ง€ ์‹œ ๋น„๊ณต๊ฐœ ์บก์ฒ˜ ํ„ด์„ ํ•œ ๋ฒˆ ์ž๋™ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค(์ถ”๊ฐ€ ํ† ํฐ ์‚ฌ์šฉ). ๋„๋ฉด ์ƒ์‹œ ์ž๋™ ํ•™์Šต ์ง€์นจ๋งŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"autolearn.enabled",category:"intelligence",group:"Auto-Learn",label:{en:"Auto-Learn (experimental)",ko:"์ž๋™ ํ•™์Šต(์‹คํ—˜์ )"},description:{en:"After the agent stops, nudge it to capture lessons to memory and create/enhance isolated managed skills",ko:"์—์ด์ „ํŠธ๊ฐ€ ์ค‘์ง€๋œ ํ›„ ํ•™์Šต ๋‚ด์šฉ์„ ๋ฉ”๋ชจ๋ฆฌ์— ๊ธฐ๋กํ•˜๊ณ  ๊ฒฉ๋ฆฌ๋œ ๊ด€๋ฆฌํ˜• ์Šคํ‚ฌ์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๊ฐœ์„ ํ•˜๋„๋ก ์œ ๋„ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"autolearn.minToolCalls",category:"intelligence",group:"Autolearn",label:{en:"Min Tool Calls",ko:"์ตœ์†Œ ๋„๊ตฌ ํ˜ธ์ถœ ์ˆ˜"},description:{en:"Minimum number of tool calls for automatic learning.",ko:"์ž๋™ ํ•™์Šต์„ ์œ„ํ•œ ์ตœ์†Œ ๋„๊ตฌ ํ˜ธ์ถœ ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:5,integer:!0},{path:"compaction.asyncEnabled",category:"intelligence",group:"Compaction",label:{en:"Async Compaction",ko:"๋น„๋™๊ธฐ ์••์ถ•"},description:{en:"Speculatively summarize in the background as context nears the compaction threshold, then splice the ready result in when the threshold is crossed",ko:"์ปจํ…์ŠคํŠธ๊ฐ€ ์••์ถ• ์ž„๊ณ—๊ฐ’์— ๊ฐ€๊นŒ์›Œ์ง€๋ฉด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋ฏธ๋ฆฌ ์š”์•ฝํ•˜๊ณ , ์ž„๊ณ—๊ฐ’์„ ๋„˜์„ ๋•Œ ์ค€๋น„๋œ ๊ฒฐ๊ณผ๋ฅผ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,appliesTo:{en:"Applies to compaction.enabled.",ko:"compaction.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"compaction.autoContinue",category:"intelligence",group:"Compaction",label:{en:"Auto Continue",ko:"์ž๋™ ๊ณ„์†"},description:{en:"Whether to continue automatically after compaction.",ko:"์••์ถ• ํ›„ ์ž๋™์œผ๋กœ ๊ณ„์†ํ• ์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,appliesTo:{en:"Applies to compaction.enabled.",ko:"compaction.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"compaction.dropUseless",category:"intelligence",group:"Compaction",label:{en:"Elide Uneventful Results",ko:"๋ฌด์˜๋ฏธํ•œ ๊ฒฐ๊ณผ ์ƒ๋žต"},description:{en:"Prune tool results flagged contextually useless (no matches, timed-out waits) once consumed (cache-aware)",ko:"์ปจํ…์ŠคํŠธ์ƒ ๋ถˆํ•„์š”ํ•˜๋‹ค๊ณ  ํ‘œ์‹œ๋œ ๋„๊ตฌ ๊ฒฐ๊ณผ(์ผ์น˜ ํ•ญ๋ชฉ ์—†์Œ, ๋Œ€๊ธฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ)๋ฅผ ์‚ฌ์šฉ ํ›„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค(์บ์‹œ ์ธ์‹)."},kind:"boolean",scope:"both",defaultValue:!0,appliesTo:{en:"Applies to compaction.enabled.",ko:"compaction.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"compaction.enabled",category:"intelligence",group:"Compaction",label:{en:"Auto-Compact",ko:"์ž๋™ ์••์ถ•"},description:{en:"Automatically compact context when it gets too large",ko:"์ปจํ…์ŠคํŠธ๊ฐ€ ๋„ˆ๋ฌด ์ปค์ง€๋ฉด ์ž๋™์œผ๋กœ ์••์ถ•ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"compaction.experimentalContextManagement",category:"intelligence",group:"Compaction",label:{en:"Notes-backed context windows (experimental)",ko:"๋ฉ”๋ชจ ๊ธฐ๋ฐ˜ ์ปจํ…์ŠคํŠธ ์ฐฝ(์‹คํ—˜์ )"},description:{en:"Keep persistent notes and searchable raw history across context windows. Restart to update available tools.",ko:"์ปจํ…์ŠคํŠธ ์ฐฝ์ด ๋ฐ”๋€Œ์–ด๋„ ์˜๊ตฌ ๋ฉ”๋ชจ์™€ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅํ•œ ์›์‹œ ๊ธฐ๋ก์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋„๊ตฌ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์„ธ์š”."},kind:"boolean",scope:"both",defaultValue:!1,appliesTo:{en:"Applies to compaction.enabled.",ko:"compaction.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"compaction.handoffSaveToDisk",category:"intelligence",group:"Compaction",label:{en:"Save Handoff Docs",ko:"์ธ๊ณ„ ๋ฌธ์„œ ์ €์žฅ"},description:{en:"Save generated handoff documents to markdown files for the auto-handoff flow",ko:"์ž๋™ ์ธ๊ณ„ ํ๋ฆ„์—์„œ ์ƒ์„ฑ๋œ ์ธ๊ณ„ ๋ฌธ์„œ๋ฅผ Markdown ํŒŒ์ผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1,appliesTo:{en:"Applies to compaction.enabled.",ko:"compaction.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"compaction.idleEnabled",category:"intelligence",group:"Compaction",label:{en:"Idle Compaction",ko:"์œ ํœด ์••์ถ•"},description:{en:"Compact context while idle when token count exceeds threshold",ko:"ํ† ํฐ ์ˆ˜๊ฐ€ ์ž„๊ณ—๊ฐ’์„ ์ดˆ๊ณผํ•˜๋ฉด ์œ ํœด ์ƒํƒœ์—์„œ ์ปจํ…์ŠคํŠธ๋ฅผ ์••์ถ•ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1,appliesTo:{en:"Applies to compaction.enabled.",ko:"compaction.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"compaction.idleThresholdTokens",category:"intelligence",group:"Compaction",label:{en:"Idle Compaction Threshold",ko:"์œ ํœด ์••์ถ• ์ž„๊ณ—๊ฐ’"},description:{en:"Token count above which idle compaction triggers",ko:"์œ ํœด ์••์ถ•์„ ์‹œ์ž‘ํ•  ํ† ํฐ ์ˆ˜ ์ž„๊ณ—๊ฐ’์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:2e5,integer:!0,appliesTo:{en:"Applies to compaction.enabled.",ko:"compaction.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"compaction.idleTimeoutSeconds",category:"intelligence",group:"Compaction",label:{en:"Idle Compaction Delay",ko:"์œ ํœด ์••์ถ• ์ง€์—ฐ ์‹œ๊ฐ„"},description:{en:"Seconds to wait while idle before compacting",ko:"์••์ถ• ์ „ ์œ ํœด ์ƒํƒœ๋กœ ๋Œ€๊ธฐํ•  ์‹œ๊ฐ„(์ดˆ)์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:300,integer:!0,appliesTo:{en:"Applies to compaction.enabled.",ko:"compaction.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"compaction.keepRecentTokens",category:"intelligence",group:"Compaction",label:{en:"Keep Recent Tokens",ko:"์ตœ๊ทผ ํ† ํฐ ์œ ์ง€"},description:{en:"Number of recent tokens to keep during compaction.",ko:"์••์ถ• ์ค‘ ์œ ์ง€ํ•  ์ตœ๊ทผ ํ† ํฐ ์ˆ˜์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:2e4,integer:!0,appliesTo:{en:"Applies to compaction.enabled.",ko:"compaction.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"compaction.methodOrder",category:"intelligence",group:"Compaction",label:{en:"Compaction Method Order",ko:"์••์ถ• ๋ฐฉ์‹ ์ˆœ์„œ"},description:{en:"Preferred fallback order for automatic context maintenance; unavailable or failed methods advance to the next choice",ko:"์ž๋™ ์ปจํ…์ŠคํŠธ ์œ ์ง€ ๊ด€๋ฆฌ์˜ ์„ ํ˜ธ ๋Œ€์ฒด ์ˆœ์„œ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์‹คํŒจํ•œ ๋ฐฉ์‹์€ ๊ฑด๋„ˆ๋›ฐ๊ณ  ๋‹ค์Œ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค."},kind:"array",scope:"both",defaultValue:["remote","snapcompact","handoff","shake","soft"],choices:["remote","snapcompact","handoff","soft","shake"],items:"string",appliesTo:{en:"Applies to compaction.enabled.",ko:"compaction.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"snapcompact.systemPrompt",category:"intelligence",group:"Compaction",label:{en:"Snapcompact System Prompt",ko:"Snapcompact ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ"},description:{en:"Experimental: render selected system prompt text as dense PNG image(s) and attach to the first user message (vision models only). Saves tokens; loses prompt caching for imaged text.",ko:"์‹คํ—˜ ๊ธฐ๋Šฅ: ์„ ํƒํ•œ ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ ํ…์ŠคํŠธ๋ฅผ ๊ณ ๋ฐ€๋„ PNG ์ด๋ฏธ์ง€๋กœ ๋ Œ๋”๋งํ•ด ์ฒซ ์‚ฌ์šฉ์ž ๋ฉ”์‹œ์ง€์— ์ฒจ๋ถ€ํ•ฉ๋‹ˆ๋‹ค(๋น„์ „ ๋ชจ๋ธ ์ „์šฉ). ํ† ํฐ์€ ์ ˆ์•ฝ๋˜์ง€๋งŒ ์ด๋ฏธ์ง€๋กœ ๋ฐ”๋€ ํ…์ŠคํŠธ๋Š” ํ”„๋กฌํ”„ํŠธ ์บ์‹œ๋ฅผ ์“ธ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"none",choices:["none","agents-md","all"],appliesTo:{en:"Vision-capable models only.",ko:"๋น„์ „ ์ง€์› ๋ชจ๋ธ์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"snapcompact.toolResults",category:"intelligence",group:"Compaction",label:{en:"Snapcompact Tool Results",ko:"Snapcompact ๋„๊ตฌ ๊ฒฐ๊ณผ"},description:{en:"Experimental: render large historical tool results as dense PNG image(s) instead of text (vision models only). Saves tokens on accumulated read/search output.",ko:"์‹คํ—˜ ๊ธฐ๋Šฅ: ์ด์ „์˜ ํฐ ๋„๊ตฌ ๊ฒฐ๊ณผ๋ฅผ ํ…์ŠคํŠธ ๋Œ€์‹  ๊ณ ๋ฐ€๋„ PNG ์ด๋ฏธ์ง€๋กœ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค(๋น„์ „ ๋ชจ๋ธ ์ „์šฉ). ๋ˆ„์ ๋œ read/๊ฒ€์ƒ‰ ์ถœ๋ ฅ์˜ ํ† ํฐ์„ ์ ˆ์•ฝํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1,appliesTo:{en:"Vision-capable models only.",ko:"๋น„์ „ ์ง€์› ๋ชจ๋ธ์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"snapcompact.shape",category:"intelligence",group:"Compaction",label:{en:"Snapcompact Shape",ko:"Snapcompact ํ˜•ํƒœ"},description:{en:"Frame shape snapcompact prints text with (compaction archive and inline imaging). Auto picks a shape tuned for the current model.",ko:"snapcompact๊ฐ€ ํ…์ŠคํŠธ๋ฅผ ์ถœ๋ ฅํ•  ํ”„๋ ˆ์ž„ ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค(์••์ถ• ์•„์นด์ด๋ธŒ ๋ฐ ์ธ๋ผ์ธ ์ด๋ฏธ์ง€ํ™”). auto๋Š” ํ˜„์žฌ ๋ชจ๋ธ์— ๋งž์ถ˜ ํ˜•ํƒœ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"auto",choices:["auto","8x8r-bw","8x8r-sent","8x8u-bw","8x8u-sent","6x6u-bw","6x6u-sent","5x8-bw","5x8-sent","6x12-dim","8x13-bw","8on16-bw","8on22-bw","11on16-bw","silver16-bw","doc-8on16-bw","doc-8on16-sent","doc-8on16-sent-dim"]},{path:"compaction.midTurnEnabled",category:"intelligence",group:"Compaction",label:{en:"Mid-Turn Compaction",ko:"ํ„ด ๋„์ค‘ ์••์ถ•"},description:{en:"Check thresholds at safe mid-turn tool-loop boundaries before the next provider request",ko:"๋‹ค์Œ ์ œ๊ณต์ž ์š”์ฒญ ์ „์— ์•ˆ์ „ํ•œ ํ„ด ๋„์ค‘ ๋„๊ตฌ ๋ฃจํ”„ ๊ฒฝ๊ณ„์—์„œ ์ž„๊ณ—๊ฐ’์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,appliesTo:{en:"Applies to compaction.enabled.",ko:"compaction.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"compaction.remoteEndpoint",category:"intelligence",group:"Compaction",label:{en:"Remote Endpoint",ko:"์›๊ฒฉ ์—”๋“œํฌ์ธํŠธ"},description:{en:"Remote endpoint used for compaction. The active model credential is sent to this endpoint.",ko:"์••์ถ•์— ์‚ฌ์šฉํ•˜๋Š” ์›๊ฒฉ ์—”๋“œํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค. ํ™œ์„ฑ ๋ชจ๋ธ์˜ ์ž๊ฒฉ ์ฆ๋ช…์ด ์ด ์—”๋“œํฌ์ธํŠธ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค."},kind:"string",scope:"global",admin:!0,confirmation:!0,appliesTo:{en:"Applies when compaction.methodOrder includes remote.",ko:"compaction.methodOrder์— remote๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"compaction.remoteStreamingV2Enabled",category:"intelligence",group:"Compaction",label:{en:"Remote Compaction V2",ko:"์›๊ฒฉ ์••์ถ• V2"},description:{en:"Use Responses streaming compaction for compatible remote compaction models",ko:"ํ˜ธํ™˜๋˜๋Š” ์›๊ฒฉ ์••์ถ• ๋ชจ๋ธ์— Responses ์ŠคํŠธ๋ฆฌ๋ฐ ์••์ถ• ์‚ฌ์šฉ"},kind:"boolean",scope:"both",defaultValue:!0,appliesTo:{en:"Applies when compaction.methodOrder includes remote.",ko:"compaction.methodOrder์— remote๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"compaction.reserveTokens",category:"intelligence",group:"Compaction",label:{en:"Reserve Tokens",ko:"์˜ˆ์•ฝ ํ† ํฐ"},description:{en:"Number of tokens to reserve during compaction.",ko:"์••์ถ• ์ค‘ ์˜ˆ์•ฝํ•  ํ† ํฐ ์ˆ˜์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",integer:!0,appliesTo:{en:"Applies to compaction.enabled.",ko:"compaction.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"compaction.supersedeReads",category:"intelligence",group:"Compaction",label:{en:"Supersede Stale Reads",ko:"์˜ค๋ž˜๋œ ์ฝ๊ธฐ ๋Œ€์ฒด"},description:{en:"Prune older read results when the same file is read again (cache-aware, runs every turn)",ko:"๊ฐ™์€ ํŒŒ์ผ์„ ๋‹ค์‹œ ์ฝ์„ ๋•Œ ์ด์ „ ์ฝ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค(์บ์‹œ ์ธ์‹, ๋งค ํ„ด ์‹คํ–‰)."},kind:"boolean",scope:"both",defaultValue:!0,appliesTo:{en:"Applies to compaction.enabled.",ko:"compaction.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"compaction.thresholdPercent",category:"intelligence",group:"Compaction",label:{en:"Compaction Threshold",ko:"์••์ถ• ์ž„๊ณ„๊ฐ’"},description:{en:"Percent threshold for context maintenance; set to Default to use legacy reserve-based behavior",ko:"์ปจํ…์ŠคํŠธ ์œ ์ง€๋ฅผ ์œ„ํ•œ ๋ฐฑ๋ถ„์œจ ์ž„๊ณ„๊ฐ’์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด ์˜ˆ์•ฝ ๊ธฐ๋ฐ˜ ๋™์ž‘์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Default๋กœ ์„ค์ •ํ•˜์„ธ์š”."},kind:"number",scope:"both",defaultValue:-1,appliesTo:{en:"Applies to compaction.enabled.",ko:"compaction.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"compaction.thresholdTokens",category:"intelligence",group:"Compaction",label:{en:"Compaction Token Limit",ko:"์••์ถ• ํ† ํฐ ํ•œ๋„"},description:{en:"Fixed token limit for context maintenance; overrides percentage if set",ko:"์ปจํ…์ŠคํŠธ ์œ ์ง€๋ฅผ ์œ„ํ•œ ๊ณ ์ • ํ† ํฐ ํ•œ๋„์ž…๋‹ˆ๋‹ค. ์„ค์ •ํ•˜๋ฉด ๋ฐฑ๋ถ„์œจ๋ณด๋‹ค ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:-1,integer:!0,appliesTo:{en:"Applies to compaction.enabled.",ko:"compaction.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"compaction.v2RetainedMessageBudget",category:"intelligence",group:"Compaction",label:{en:"V2 Retained Message Budget",ko:"V2 ๋ณด์กด ๋ฉ”์‹œ์ง€ ์˜ˆ์‚ฐ"},description:{en:"Retained message budget for compaction version 2.",ko:"์••์ถ• ๋ฒ„์ „ 2์˜ ๋ณด์กด ๋ฉ”์‹œ์ง€ ์˜ˆ์‚ฐ์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:64e3,integer:!0,appliesTo:{en:"Applies to compaction.enabled.",ko:"compaction.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"contextPromotion.enabled",category:"intelligence",group:"General",label:{en:"Auto-Promote Context",ko:"์ปจํ…์ŠคํŠธ ์ž๋™ ํ™•์žฅ"},description:{en:"Promote to a larger-context model on context overflow instead of compacting",ko:"์ปจํ…์ŠคํŠธ๊ฐ€ ์ดˆ๊ณผ๋˜๋ฉด ์••์ถ• ๋Œ€์‹  ๋” ํฐ ์ปจํ…์ŠคํŠธ ๋ชจ๋ธ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"memory.backend",category:"intelligence",group:"General",label:{en:"Memory Backend",ko:"๋ฉ”๋ชจ๋ฆฌ ๋ฐฑ์—”๋“œ"},description:{en:"Off, local summary pipeline, Mnemopi SQLite, Hindsight remote memory, or Sharpshooter",ko:"๋„๊ธฐ, ๋กœ์ปฌ ์š”์•ฝ ํŒŒ์ดํ”„๋ผ์ธ, Mnemopi SQLite, Hindsight ์›๊ฒฉ ๋ฉ”๋ชจ๋ฆฌ ๋˜๋Š” Sharpshooter"},kind:"enum",scope:"both",defaultValue:"off",choices:["off","local","hindsight","mnemopi","sharpshooter"]},{path:"goal.continuationModes",category:"intelligence",group:"Modes",label:{en:"Goal Continuation Modes",ko:"๋ชฉํ‘œ ๊ณ„์† ๋ชจ๋“œ"},description:{en:"Run modes where active goals may auto-continue between turns",ko:"ํ™œ์„ฑ ๋ชฉํ‘œ๊ฐ€ ํ„ด ์‚ฌ์ด์— ์ž๋™์œผ๋กœ ๊ณ„์†๋  ์ˆ˜ ์žˆ๋Š” ์‹คํ–‰ ๋ชจ๋“œ"},kind:"array",scope:"both",defaultValue:["interactive"],items:"string"},{path:"goal.enabled",category:"intelligence",group:"Modes",label:{en:"Goal Mode",ko:"๋ชฉํ‘œ ๋ชจ๋“œ"},description:{en:"Enable per-session goal mode and the hidden goal tool",ko:"์„ธ์…˜๋ณ„ ๋ชฉํ‘œ ๋ชจ๋“œ์™€ ์ˆจ๊ฒจ์ง„ goal ๋„๊ตฌ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"title.refreshOnReplan",category:"intelligence",group:"Modes",label:{en:"Refresh Title on Replan",ko:"์žฌ๊ณ„ํš ์‹œ ์ œ๋ชฉ ์ƒˆ๋กœ ๊ณ ์นจ"},description:{en:"Refresh generated session titles after todo init replans unless the title was set by the user",ko:"ํ•  ์ผ ์ดˆ๊ธฐํ™”๋กœ ์žฌ๊ณ„ํšํ•œ ๋’ค ์ž๋™ ์ƒ์„ฑ๋œ ์„ธ์…˜ ์ œ๋ชฉ์„ ์ƒˆ๋กœ ๊ณ ์นฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ง€์ •ํ•œ ์ œ๋ชฉ์€ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"hindsight.apiToken",category:"intelligence",group:"Hindsight",label:{en:"Hindsight API Token",ko:"Hindsight API ํ† ํฐ"},description:{en:"Bearer token for authenticated Hindsight servers",ko:"์ธ์ฆ๋œ Hindsight ์„œ๋ฒ„์šฉ Bearer ํ† ํฐ"},kind:"string",scope:"global",secret:!0,admin:!0,confirmation:!0,appliesTo:{en:"Applies to memory.backend = hindsight.",ko:"memory.backend = hindsight์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"hindsight.apiUrl",category:"intelligence",group:"Hindsight",label:{en:"Hindsight API URL",ko:"Hindsight API URL"},description:{en:"Hindsight server URL (Cloud or self-hosted)",ko:"Hindsight ์„œ๋ฒ„ URL(Cloud ๋˜๋Š” ์ž์ฒด ํ˜ธ์ŠคํŒ…)"},kind:"string",scope:"global",defaultValue:"http://localhost:8888",admin:!0,confirmation:!0,appliesTo:{en:"Applies to memory.backend = hindsight.",ko:"memory.backend = hindsight์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"hindsight.autoRecall",category:"intelligence",group:"Hindsight",label:{en:"Hindsight Auto Recall",ko:"Hindsight ์ž๋™ ํšŒ์ƒ"},description:{en:"Recall memories on the first turn of each session",ko:"๊ฐ ์„ธ์…˜์˜ ์ฒซ ๋ฒˆ์งธ ํ„ด์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšŒ์ƒํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,appliesTo:{en:"Applies to memory.backend = hindsight.",ko:"memory.backend = hindsight์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"hindsight.autoRetain",category:"intelligence",group:"Hindsight",label:{en:"Hindsight Auto Retain",ko:"Hindsight ์ž๋™ ๋ณด์กด"},description:{en:"Retain transcript every N turns and at session boundaries",ko:"Nํ„ด๋งˆ๋‹ค ๊ทธ๋ฆฌ๊ณ  ์„ธ์…˜ ๊ฒฝ๊ณ„์—์„œ ๋Œ€ํ™” ๊ธฐ๋ก์„ ๋ณด์กดํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,appliesTo:{en:"Applies to memory.backend = hindsight.",ko:"memory.backend = hindsight์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"hindsight.bankId",category:"intelligence",group:"Hindsight",label:{en:"Hindsight Bank ID",ko:"Hindsight Bank ID"},description:{en:"Memory bank identifier (default: project name)",ko:"๋ฉ”๋ชจ๋ฆฌ bank ์‹๋ณ„์ž(๊ธฐ๋ณธ๊ฐ’: ํ”„๋กœ์ ํŠธ ์ด๋ฆ„)"},kind:"string",scope:"both",appliesTo:{en:"Applies to memory.backend = hindsight.",ko:"memory.backend = hindsight์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"hindsight.bankIdPrefix",category:"intelligence",group:"Hindsight",label:{en:"Bank ID Prefix",ko:"Bank ID ์ ‘๋‘์‚ฌ"},description:{en:"Prefix for Hindsight bank IDs.",ko:"Hindsight ๋ฑ…ํฌ ID์˜ ์ ‘๋‘์‚ฌ์ž…๋‹ˆ๋‹ค."},kind:"string",scope:"both",appliesTo:{en:"Applies to memory.backend = hindsight.",ko:"memory.backend = hindsight์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"hindsight.bankMission",category:"intelligence",group:"Hindsight",label:{en:"Bank Mission",ko:"Bank ๋ฏธ์…˜"},description:{en:"Mission configured for the Hindsight bank.",ko:"Hindsight ๋ฑ…ํฌ์— ๊ตฌ์„ฑ๋œ ๋ฏธ์…˜์ž…๋‹ˆ๋‹ค."},kind:"string",scope:"both",appliesTo:{en:"Applies to memory.backend = hindsight.",ko:"memory.backend = hindsight์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"hindsight.mentalModelAutoSeed",category:"intelligence",group:"Hindsight",label:{en:"Hindsight Mental Model Auto-Seed",ko:"Hindsight ๋ฉ˜ํƒˆ ๋ชจ๋ธ ์ž๋™ ์‹œ๋“œ"},description:{en:"At session start, create any built-in mental models (project-conventions, project-decisions, user-preferences) that do not yet exist on the bank.",ko:"์„ธ์…˜ ์‹œ์ž‘ ์‹œ bank์— ์•„์ง ์—†๋Š” ๊ธฐ๋ณธ ์ œ๊ณต ๋ฉ˜ํƒˆ ๋ชจ๋ธ(project-conventions, project-decisions, user-preferences)์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,appliesTo:{en:"Applies to memory.backend = hindsight.",ko:"memory.backend = hindsight์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"hindsight.mentalModelMaxRenderChars",category:"intelligence",group:"Hindsight",label:{en:"Mental Model Max Render Chars",ko:"๋ฉ˜ํƒˆ ๋ชจ๋ธ ์ตœ๋Œ€ ๋ Œ๋”๋ง ๋ฌธ์ž ์ˆ˜"},description:{en:"Maximum number of characters for rendering the mental model.",ko:"๋ฉ˜ํƒˆ ๋ชจ๋ธ ๋ Œ๋”๋ง์˜ ์ตœ๋Œ€ ๋ฌธ์ž ์ˆ˜์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:16e3,integer:!0,appliesTo:{en:"Applies to memory.backend = hindsight.",ko:"memory.backend = hindsight์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"hindsight.mentalModelsEnabled",category:"intelligence",group:"Hindsight",label:{en:"Hindsight Mental Models",ko:"Hindsight ๋ฉ˜ํƒˆ ๋ชจ๋ธ"},description:{en:"Read curated reflect summaries (mental models) into developer instructions at boot. Loads existing models on the bank โ€” does not write. Pair with hindsight.mentalModelAutoSeed to also auto-create the built-in seed set.",ko:"๋ถ€ํŒ… ์‹œ ์„ ๋ณ„๋œ reflect ์š”์•ฝ(๋ฉ˜ํƒˆ ๋ชจ๋ธ)์„ ๊ฐœ๋ฐœ์ž ์ง€์นจ์— ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค. bank์˜ ๊ธฐ์กด ๋ชจ๋ธ๋งŒ ๋กœ๋“œํ•˜๋ฉฐ ์“ฐ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ œ๊ณต ์‹œ๋“œ ์„ธํŠธ๋„ ์ž๋™ ์ƒ์„ฑํ•˜๋ ค๋ฉด hindsight.mentalModelAutoSeed์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์„ธ์š”."},kind:"boolean",scope:"both",defaultValue:!0,appliesTo:{en:"Applies to memory.backend = hindsight.",ko:"memory.backend = hindsight์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"hindsight.recallBudget",category:"intelligence",group:"Hindsight",label:{en:"Recall Budget",ko:"ํšŒ์ƒ ์˜ˆ์‚ฐ"},description:{en:"Budget level selected for recall.",ko:"ํšŒ์ƒ์— ์„ ํƒ๋œ ์˜ˆ์‚ฐ ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"mid",choices:["low","mid","high"],appliesTo:{en:"Applies to memory.backend = hindsight.",ko:"memory.backend = hindsight์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"hindsight.recallContextTurns",category:"intelligence",group:"Hindsight",label:{en:"Recall Context Turns",ko:"ํšŒ์ƒ ์ปจํ…์ŠคํŠธ ํ„ด"},description:{en:"Number of context turns used for recall.",ko:"ํšŒ์ƒ์— ์‚ฌ์šฉํ•˜๋Š” ์ปจํ…์ŠคํŠธ ํ„ด ์ˆ˜์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:1,integer:!0,appliesTo:{en:"Applies to memory.backend = hindsight.",ko:"memory.backend = hindsight์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"hindsight.recallMaxQueryChars",category:"intelligence",group:"Hindsight",label:{en:"Recall Max Query Chars",ko:"ํšŒ์ƒ ์ฟผ๋ฆฌ ์ตœ๋Œ€ ๋ฌธ์ž ์ˆ˜"},description:{en:"Maximum number of characters in a recall query.",ko:"ํšŒ์ƒ ์ฟผ๋ฆฌ์˜ ์ตœ๋Œ€ ๋ฌธ์ž ์ˆ˜์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:800,integer:!0,appliesTo:{en:"Applies to memory.backend = hindsight.",ko:"memory.backend = hindsight์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"hindsight.recallMaxTokens",category:"intelligence",group:"Hindsight",label:{en:"Recall Max Tokens",ko:"ํšŒ์ƒ ์ตœ๋Œ€ ํ† ํฐ ์ˆ˜"},description:{en:"Maximum number of tokens for recall.",ko:"ํšŒ์ƒ์˜ ์ตœ๋Œ€ ํ† ํฐ ์ˆ˜์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:1024,integer:!0,appliesTo:{en:"Applies to memory.backend = hindsight.",ko:"memory.backend = hindsight์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"hindsight.recallTimeoutMs",category:"intelligence",group:"Hindsight",label:{en:"Recall Timeout Ms",ko:"ํšŒ์ƒ ์ œํ•œ ์‹œ๊ฐ„(Ms)"},description:{en:"Recall timeout in milliseconds.",ko:"ํšŒ์ƒ ์ œํ•œ ์‹œ๊ฐ„(๋ฐ€๋ฆฌ์ดˆ)์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:3e4,integer:!0,appliesTo:{en:"Applies to memory.backend = hindsight.",ko:"memory.backend = hindsight์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"hindsight.recallTypes",category:"intelligence",group:"Hindsight",label:{en:"Recall Types",ko:"ํšŒ์ƒ ์œ ํ˜•"},description:{en:"Types of information included in recall.",ko:"ํšŒ์ƒ์— ํฌํ•จํ•  ์ •๋ณด ์œ ํ˜•์ž…๋‹ˆ๋‹ค."},kind:"array",scope:"both",defaultValue:["world","experience"],items:"string",appliesTo:{en:"Applies to memory.backend = hindsight.",ko:"memory.backend = hindsight์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"hindsight.reflectTimeoutMs",category:"intelligence",group:"Hindsight",label:{en:"Reflect Timeout Ms",ko:"์„ฑ์ฐฐ ์ œํ•œ ์‹œ๊ฐ„(Ms)"},description:{en:"Reflection timeout in milliseconds.",ko:"์„ฑ์ฐฐ ์ œํ•œ ์‹œ๊ฐ„(๋ฐ€๋ฆฌ์ดˆ)์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:12e4,integer:!0,appliesTo:{en:"Applies to memory.backend = hindsight.",ko:"memory.backend = hindsight์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"hindsight.requestTimeoutMs",category:"intelligence",group:"Hindsight",label:{en:"Request Timeout Ms",ko:"์š”์ฒญ ์ œํ•œ ์‹œ๊ฐ„(Ms)"},description:{en:"Hindsight request timeout in milliseconds.",ko:"Hindsight ์š”์ฒญ ์ œํ•œ ์‹œ๊ฐ„(๋ฐ€๋ฆฌ์ดˆ)์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:3e4,integer:!0,appliesTo:{en:"Applies to memory.backend = hindsight.",ko:"memory.backend = hindsight์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"hindsight.retainContext",category:"intelligence",group:"Hindsight",label:{en:"Retain Context",ko:"์ปจํ…์ŠคํŠธ ๋ณด์กด"},description:{en:"Context value used for retention.",ko:"๋ณด์กด์— ์‚ฌ์šฉํ•˜๋Š” ์ปจํ…์ŠคํŠธ ๊ฐ’์ž…๋‹ˆ๋‹ค."},kind:"string",scope:"both",defaultValue:"omp",appliesTo:{en:"Applies to memory.backend = hindsight.",ko:"memory.backend = hindsight์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"hindsight.retainEveryNTurns",category:"intelligence",group:"Hindsight",label:{en:"Retain Every Nturns",ko:"Nํ„ด๋งˆ๋‹ค ๋ณด์กด"},description:{en:"Number of turns between retention operations.",ko:"๋ณด์กด ์ž‘์—… ์‚ฌ์ด์˜ ํ„ด ์ˆ˜์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:3,integer:!0,appliesTo:{en:"Applies to memory.backend = hindsight.",ko:"memory.backend = hindsight์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"hindsight.retainMission",category:"intelligence",group:"Hindsight",label:{en:"Retain Mission",ko:"๋ฏธ์…˜ ๋ณด์กด"},description:{en:"Mission used for retention.",ko:"๋ณด์กด์— ์‚ฌ์šฉํ•˜๋Š” ๋ฏธ์…˜์ž…๋‹ˆ๋‹ค."},kind:"string",scope:"both",appliesTo:{en:"Applies to memory.backend = hindsight.",ko:"memory.backend = hindsight์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"hindsight.retainMode",category:"intelligence",group:"Hindsight",label:{en:"Hindsight Retain Mode",ko:"Hindsight ๋ณด์กด ๋ชจ๋“œ"},description:{en:"full-session = upsert one document per session, last-turn = chunked",ko:"full-session = ์„ธ์…˜๋‹น ๋ฌธ์„œ ํ•˜๋‚˜๋ฅผ upsert, last-turn = ์ฒญํฌ ๋‹จ์œ„"},kind:"enum",scope:"both",defaultValue:"full-session",choices:["full-session","last-turn"],appliesTo:{en:"Applies to memory.backend = hindsight.",ko:"memory.backend = hindsight์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"hindsight.retainOverlapTurns",category:"intelligence",group:"Hindsight",label:{en:"Retain Overlap Turns",ko:"๋ณด์กด ์ค‘์ฒฉ ํ„ด"},description:{en:"Number of overlapping turns retained between retention operations.",ko:"๋ณด์กด ์ž‘์—… ๊ฐ„์— ์œ ์ง€ํ•  ์ค‘์ฒฉ ํ„ด ์ˆ˜์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:2,integer:!0,appliesTo:{en:"Applies to memory.backend = hindsight.",ko:"memory.backend = hindsight์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"hindsight.retainTimeoutMs",category:"intelligence",group:"Hindsight",label:{en:"Retain Timeout Ms",ko:"๋ณด์กด ์ œํ•œ ์‹œ๊ฐ„(Ms)"},description:{en:"Retention timeout in milliseconds.",ko:"๋ณด์กด ์ œํ•œ ์‹œ๊ฐ„(๋ฐ€๋ฆฌ์ดˆ)์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:6e4,integer:!0,appliesTo:{en:"Applies to memory.backend = hindsight.",ko:"memory.backend = hindsight์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"hindsight.scoping",category:"intelligence",group:"Hindsight",label:{en:"Hindsight Scoping",ko:"Hindsight ๋ฒ”์œ„"},description:{en:"global = one shared bank; per-project = isolated bank per cwd; per-project-tagged = shared bank with project tags so global + project memories merge on recall",ko:"global = ํ•˜๋‚˜์˜ ๊ณต์œ  ๋ฑ…ํฌ, per-project = cwd๋ณ„ ๊ฒฉ๋ฆฌ๋œ ๋ฑ…ํฌ, per-project-tagged = ํ”„๋กœ์ ํŠธ ํƒœ๊ทธ๊ฐ€ ์žˆ๋Š” ๊ณต์œ  ๋ฑ…ํฌ๋กœ, ํšŒ์ƒ ์‹œ ์ „์—ญ ๋ฉ”๋ชจ๋ฆฌ์™€ ํ”„๋กœ์ ํŠธ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ณ‘ํ•ฉ"},kind:"enum",scope:"both",defaultValue:"per-project-tagged",choices:["global","per-project","per-project-tagged"],appliesTo:{en:"Applies to memory.backend = hindsight.",ko:"memory.backend = hindsight์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"mnemopi.autoRecall",category:"intelligence",group:"Mnemopi",label:{en:"Mnemopi Auto Recall",ko:"Mnemopi ์ž๋™ ํšŒ์ƒ"},description:{en:"Recall local memories into the first turn of each session",ko:"๊ฐ ์„ธ์…˜์˜ ์ฒซ ๋ฒˆ์งธ ํ„ด์— ๋กœ์ปฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšŒ์ƒํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,appliesTo:{en:"Applies to memory.backend = mnemopi.",ko:"memory.backend = mnemopi์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"mnemopi.autoRetain",category:"intelligence",group:"Mnemopi",label:{en:"Mnemopi Auto Retain",ko:"Mnemopi ์ž๋™ ๋ณด์กด"},description:{en:"Retain completed conversation turns into local Mnemopi memory",ko:"์™„๋ฃŒ๋œ ๋Œ€ํ™” ํ„ด์„ ๋กœ์ปฌ Mnemopi ๋ฉ”๋ชจ๋ฆฌ์— ๋ณด์กดํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,appliesTo:{en:"Applies to memory.backend = mnemopi.",ko:"memory.backend = mnemopi์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"mnemopi.bank",category:"intelligence",group:"Mnemopi",label:{en:"Mnemopi Bank",ko:"Mnemopi ๋ฑ…ํฌ"},description:{en:"Optional shared bank base name. Per-project modes derive project-local banks from it.",ko:"์„ ํƒ ์‚ฌํ•ญ์ธ ๊ณต์œ  ๋ฑ…ํฌ ๊ธฐ๋ณธ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋ณ„ ๋ชจ๋“œ๋Š” ์ด ์ด๋ฆ„์—์„œ ํ”„๋กœ์ ํŠธ ๋กœ์ปฌ ๋ฑ…ํฌ๋ฅผ ํŒŒ์ƒํ•ฉ๋‹ˆ๋‹ค."},kind:"string",scope:"both",appliesTo:{en:"Applies to memory.backend = mnemopi.",ko:"memory.backend = mnemopi์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"mnemopi.dbPath",category:"intelligence",group:"Mnemopi",label:{en:"Mnemopi DB Path",ko:"Mnemopi DB ๊ฒฝ๋กœ"},description:{en:"Optional SQLite DB path. Defaults to the agent memories directory.",ko:"์„ ํƒ ์‚ฌํ•ญ์ธ SQLite DB ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ ์—์ด์ „ํŠธ ๋ฉ”๋ชจ๋ฆฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค."},kind:"string",scope:"both",appliesTo:{en:"Applies to memory.backend = mnemopi.",ko:"memory.backend = mnemopi์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"mnemopi.embeddingApiKey",category:"intelligence",group:"Mnemopi",label:{en:"Mnemopi Embedding API Key",ko:"Mnemopi ์ž„๋ฒ ๋”ฉ API ํ‚ค"},description:{en:"Optional embedding API key passed to Mnemopi",ko:"Mnemopi์— ์ „๋‹ฌํ•  ์„ ํƒ ์‚ฌํ•ญ์ธ ์ž„๋ฒ ๋”ฉ API ํ‚ค์ž…๋‹ˆ๋‹ค."},kind:"string",scope:"global",secret:!0,admin:!0,confirmation:!0,appliesTo:{en:"Applies when Mnemopi embeddings use an authenticated API.",ko:"Mnemopi ์ž„๋ฒ ๋”ฉ์ด ์ธ์ฆ๋œ API๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"mnemopi.embeddingApiUrl",category:"intelligence",group:"Mnemopi",label:{en:"Mnemopi Embedding API URL",ko:"Mnemopi ์ž„๋ฒ ๋”ฉ API URL"},description:{en:"Optional OpenAI-compatible embedding endpoint passed to Mnemopi",ko:"Mnemopi์— ์ „๋‹ฌํ•  ์„ ํƒ ์‚ฌํ•ญ์ธ OpenAI ํ˜ธํ™˜ ์ž„๋ฒ ๋”ฉ ์—”๋“œํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค."},kind:"string",scope:"global",admin:!0,confirmation:!0,appliesTo:{en:"Applies when Mnemopi uses a remote embedding endpoint.",ko:"Mnemopi๊ฐ€ ์›๊ฒฉ ์ž„๋ฒ ๋”ฉ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"mnemopi.embeddingModel",category:"intelligence",group:"Mnemopi",label:{en:"Mnemopi Embedding Model",ko:"Mnemopi ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ"},description:{en:"Advanced: explicit embedding model id that overrides the variant. Leave empty to use mnemopi.embeddingVariant.",ko:"๊ณ ๊ธ‰: variant๋ฅผ ์žฌ์ •์˜ํ•  ๋ช…์‹œ์  ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ id์ž…๋‹ˆ๋‹ค. mnemopi.embeddingVariant๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋น„์›Œ ๋‘์„ธ์š”."},kind:"string",scope:"both",appliesTo:{en:"Applies when Mnemopi embeddings are enabled.",ko:"Mnemopi ์ž„๋ฒ ๋”ฉ์ด ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"mnemopi.embeddingVariant",category:"intelligence",group:"Mnemopi",label:{en:"Embedding variant",ko:"์ž„๋ฒ ๋”ฉ ๋ณ€ํ˜•"},description:{en:"Local embedding model family. en = stronger English model; multilingual = cross-language model. Changing this rebuilds existing memory embeddings on next start.",ko:"๋กœ์ปฌ ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ ๊ณ„์—ด์ž…๋‹ˆ๋‹ค. en = ๋” ๊ฐ•๋ ฅํ•œ ์˜์–ด ๋ชจ๋ธ, multilingual = ์–ธ์–ด ๊ฐ„ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. ๋ณ€๊ฒฝํ•˜๋ฉด ๋‹ค์Œ ์‹œ์ž‘ ์‹œ ๊ธฐ์กด ๋ฉ”๋ชจ๋ฆฌ ์ž„๋ฒ ๋”ฉ์„ ์žฌ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"en",choices:["en","multilingual"],appliesTo:{en:"Applies when Mnemopi embeddings are enabled.",ko:"Mnemopi ์ž„๋ฒ ๋”ฉ์ด ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"mnemopi.enhancedRecall",category:"intelligence",group:"Mnemopi",label:{en:"Mnemopi Enhanced Recall",ko:"Mnemopi ํ–ฅ์ƒ๋œ ํšŒ์ƒ"},description:{en:"Enable the tiered query result cache for repeated and similar recall queries",ko:"๋ฐ˜๋ณต๋˜๊ฑฐ๋‚˜ ์œ ์‚ฌํ•œ ํšŒ์ƒ ์ฟผ๋ฆฌ์— ๊ณ„์ธตํ˜• ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1,appliesTo:{en:"Applies to memory.backend = mnemopi.",ko:"memory.backend = mnemopi์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"mnemopi.injectionTokenLimit",category:"intelligence",group:"Mnemopi",label:{en:"Injection Token Limit",ko:"์‚ฝ์ž… ํ† ํฐ ํ•œ๋„"},description:{en:"Token limit for Mnemopi injection.",ko:"Mnemopi ์ฃผ์ž…์˜ ํ† ํฐ ์ œํ•œ์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:5e3,integer:!0,appliesTo:{en:"Applies to memory.backend = mnemopi.",ko:"memory.backend = mnemopi์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"mnemopi.llmApiKey",category:"intelligence",group:"Mnemopi",label:{en:"Mnemopi LLM API Key",ko:"Mnemopi LLM API ํ‚ค"},description:{en:"Optional LLM API key for Mnemopi remote mode",ko:"Mnemopi ์›๊ฒฉ ๋ชจ๋“œ์šฉ ์„ ํƒ์  LLM API ํ‚ค์ž…๋‹ˆ๋‹ค."},kind:"string",scope:"global",secret:!0,admin:!0,confirmation:!0,appliesTo:{en:"Applies when mnemopi.llmMode uses an authenticated remote model.",ko:"mnemopi.llmMode๊ฐ€ ์ธ์ฆ๋œ ์›๊ฒฉ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•  ๋•Œ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"mnemopi.llmBaseUrl",category:"intelligence",group:"Mnemopi",label:{en:"Mnemopi LLM Base URL",ko:"Mnemopi LLM ๊ธฐ๋ณธ URL"},description:{en:"Optional OpenAI-compatible LLM endpoint for Mnemopi remote mode",ko:"Mnemopi ์›๊ฒฉ ๋ชจ๋“œ์šฉ ์„ ํƒ์  OpenAI ํ˜ธํ™˜ LLM ์—”๋“œํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค."},kind:"string",scope:"global",admin:!0,confirmation:!0,appliesTo:{en:"Applies when mnemopi.llmMode is remote.",ko:"mnemopi.llmMode๊ฐ€ remote์ธ ๊ฒฝ์šฐ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"mnemopi.llmMode",category:"intelligence",group:"Mnemopi",label:{en:"Mnemopi LLM Mode",ko:"Mnemopi LLM ๋ชจ๋“œ"},description:{en:"Use no LLM, the online tiny model (the TINY role from /models, else @smol), or a remote OpenAI-compatible endpoint",ko:"LLM์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฑฐ๋‚˜, ์˜จ๋ผ์ธ ์†Œํ˜• ๋ชจ๋ธ(/models์˜ TINY ์—ญํ• , ์—†์œผ๋ฉด @smol) ๋˜๋Š” ์›๊ฒฉ OpenAI ํ˜ธํ™˜ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"smol",choices:["none","smol","remote"],appliesTo:{en:"Applies to memory.backend = mnemopi.",ko:"memory.backend = mnemopi์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"mnemopi.llmModel",category:"intelligence",group:"Mnemopi",label:{en:"Mnemopi LLM Model",ko:"Mnemopi LLM ๋ชจ๋ธ"},description:{en:"Optional LLM model name for Mnemopi remote mode",ko:"Mnemopi ์›๊ฒฉ ๋ชจ๋“œ์šฉ ์„ ํƒ์  LLM ๋ชจ๋ธ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค."},kind:"string",scope:"both",appliesTo:{en:"Applies when Mnemopi LLM enrichment is enabled.",ko:"Mnemopi LLM ๋ณด๊ฐ•์ด ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"mnemopi.noEmbeddings",category:"intelligence",group:"Mnemopi",label:{en:"Mnemopi Disable Embeddings",ko:"Mnemopi ์ž„๋ฒ ๋”ฉ ๋น„ํ™œ์„ฑํ™”"},description:{en:"Force deterministic FTS-only recall instead of vector embeddings",ko:"๋ฒกํ„ฐ ์ž„๋ฒ ๋”ฉ ๋Œ€์‹  ๊ฒฐ์ •๋ก ์  FTS ์ „์šฉ ํšŒ์ƒ์„ ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1,appliesTo:{en:"Applies to memory.backend = mnemopi.",ko:"memory.backend = mnemopi์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"mnemopi.polyphonicRecall",category:"intelligence",group:"Mnemopi",label:{en:"Mnemopi Polyphonic Recall",ko:"Mnemopi ๋‹ค์ค‘ ํšŒ์ƒ"},description:{en:"Enable 4-voice recall (vector, graph, fact, temporal) fused with reciprocal rank fusion",ko:"์ƒํ˜ธ ์ˆœ์œ„ ์œตํ•ฉ์œผ๋กœ ๊ฒฐํ•ฉ๋œ 4๊ฐœ ๋ณด์ด์Šค ํšŒ์ƒ(๋ฒกํ„ฐ, ๊ทธ๋ž˜ํ”„, ์‚ฌ์‹ค, ์‹œ๊ฐ„)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1,appliesTo:{en:"Applies to memory.backend = mnemopi.",ko:"memory.backend = mnemopi์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"mnemopi.proactiveLinking",category:"intelligence",group:"Mnemopi",label:{en:"Mnemopi Proactive Linking",ko:"Mnemopi ์„ ์ œ์  ์—ฐ๊ฒฐ"},description:{en:"Ingest new memories into the episodic graph as they are stored, linking them to related entities and memories",ko:"์ƒˆ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ €์žฅํ•  ๋•Œ ์—ํ”ผ์†Œ๋“œ ๊ทธ๋ž˜ํ”„์— ์ˆ˜์ง‘ํ•˜์—ฌ ๊ด€๋ จ ์—”ํ„ฐํ‹ฐ ๋ฐ ๋ฉ”๋ชจ๋ฆฌ์™€ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1,appliesTo:{en:"Applies to memory.backend = mnemopi.",ko:"memory.backend = mnemopi์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"mnemopi.recallContextTurns",category:"intelligence",group:"Mnemopi",label:{en:"Recall Context Turns",ko:"ํšŒ์ƒ ์ปจํ…์ŠคํŠธ ํ„ด ์ˆ˜"},description:{en:"Number of context turns used for Mnemopi recall.",ko:"Mnemopi ํšŒ์ƒ์— ์‚ฌ์šฉํ•˜๋Š” ์ปจํ…์ŠคํŠธ ํ„ด ์ˆ˜์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:3,integer:!0,appliesTo:{en:"Applies to memory.backend = mnemopi.",ko:"memory.backend = mnemopi์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"mnemopi.recallLimit",category:"intelligence",group:"Mnemopi",label:{en:"Recall Limit",ko:"ํšŒ์ƒ ํ•œ๋„"},description:{en:"Limit on the number of Mnemopi recall results.",ko:"Mnemopi ํšŒ์ƒ ๊ฒฐ๊ณผ ์ˆ˜์˜ ์ œํ•œ์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:8,integer:!0,appliesTo:{en:"Applies to memory.backend = mnemopi.",ko:"memory.backend = mnemopi์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"mnemopi.recallMaxQueryChars",category:"intelligence",group:"Mnemopi",label:{en:"Recall Max Query Chars",ko:"ํšŒ์ƒ ์ฟผ๋ฆฌ ์ตœ๋Œ€ ๋ฌธ์ž ์ˆ˜"},description:{en:"Maximum number of characters in a Mnemopi recall query.",ko:"Mnemopi ํšŒ์ƒ ์ฟผ๋ฆฌ์˜ ์ตœ๋Œ€ ๋ฌธ์ž ์ˆ˜์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:4e3,integer:!0,appliesTo:{en:"Applies to memory.backend = mnemopi.",ko:"memory.backend = mnemopi์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"mnemopi.retainEveryNTurns",category:"intelligence",group:"Mnemopi",label:{en:"Retain Every Nturns",ko:"Nํ„ด๋งˆ๋‹ค ๋ณด์กด"},description:{en:"Sets the Mnemopi retention interval in turns.",ko:"Mnemopi ์œ ์ง€ ๊ฐ„๊ฒฉ์„ ํ„ด ๋‹จ์œ„๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:4,integer:!0,appliesTo:{en:"Applies to memory.backend = mnemopi.",ko:"memory.backend = mnemopi์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"mnemopi.scoping",category:"intelligence",group:"Mnemopi",label:{en:"Mnemopi Scoping",ko:"Mnemopi ๋ฒ”์œ„ ์ง€์ •"},description:{en:"global = one shared bank; per-project = isolated bank per cwd; per-project-tagged = project-local writes plus global recall visibility",ko:"global = ํ•˜๋‚˜์˜ ๊ณต์œ  ๋ฑ…ํฌ, per-project = cwd๋ณ„๋กœ ๊ฒฉ๋ฆฌ๋œ ๋ฑ…ํฌ, per-project-tagged = ํ”„๋กœ์ ํŠธ ๋กœ์ปฌ ์“ฐ๊ธฐ ๋ฐ ์ „์—ญ ํšŒ์ƒ ๊ฐ€์‹œ์„ฑ์ž…๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"per-project",choices:["global","per-project","per-project-tagged"],appliesTo:{en:"Applies to memory.backend = mnemopi.",ko:"memory.backend = mnemopi์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"sharpshooter.injectionTokenLimit",category:"intelligence",group:"Sharpshooter",label:{en:"Injection Token Limit",ko:"์ฃผ์ž… ํ† ํฐ ํ•œ๋„"},description:{en:"Sets the Sharpshooter injection limit in tokens.",ko:"Sharpshooter ์‚ฝ์ž… ํ•œ๋„๋ฅผ ํ† ํฐ ๋‹จ์œ„๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:15e3,integer:!0,appliesTo:{en:"Applies to memory.backend = sharpshooter.",ko:"memory.backend = sharpshooter์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"sharpshooter.intervalMinutes",category:"intelligence",group:"Sharpshooter",label:{en:"Interval Minutes",ko:"๊ฐ„๊ฒฉ(๋ถ„)"},description:{en:"Sets the Sharpshooter interval in minutes.",ko:"Sharpshooter ๊ฐ„๊ฒฉ์„ ๋ถ„ ๋‹จ์œ„๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:5,appliesTo:{en:"Applies to memory.backend = sharpshooter.",ko:"memory.backend = sharpshooter์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"sharpshooter.model",category:"intelligence",group:"Sharpshooter",label:{en:"Sharpshooter Model",ko:"Sharpshooter ๋ชจ๋ธ"},description:{en:"Model selector for extraction/consolidation, empty = smol role",ko:"์ถ”์ถœ/ํ†ตํ•ฉ์šฉ ๋ชจ๋ธ ์„ ํƒ์ž์ž…๋‹ˆ๋‹ค. ๋น„์–ด ์žˆ์œผ๋ฉด smol ์—ญํ• ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค."},kind:"string",scope:"both",appliesTo:{en:"Applies to memory.backend = sharpshooter.",ko:"memory.backend = sharpshooter์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"advisor.enabled",category:"agents",group:"Advisor",label:{en:"Enable Advisor",ko:"Advisor ํ™œ์„ฑํ™”"},description:{en:"Pair a second model (assigned to the 'advisor' role) that passively reviews each turn and injects notes.",ko:"'advisor' ์—ญํ• ์— ํ• ๋‹น๋œ ๋‘ ๋ฒˆ์งธ ๋ชจ๋ธ์„ ์—ฐ๊ฒฐํ•ด ๊ฐ ํ„ด์„ ์ˆ˜๋™์œผ๋กœ ๊ฒ€ํ† ํ•˜๊ณ  ๋ฉ”๋ชจ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"advisor.immuneTurns",category:"agents",group:"Advisor",label:{en:"Advisor Immune Turns",ko:"Advisor ์ค‘๋‹จ ๋ฉด์ œ ํ„ด"},description:{en:"After an advisor concern or blocker interrupts, route further concerns/blockers non-interruptingly for this many primary turns.",ko:"Advisor์˜ ์šฐ๋ ค ์‚ฌํ•ญ์ด๋‚˜ ์ฐจ๋‹จ ์š”์†Œ๋กœ ์ค‘๋‹จ๋œ ํ›„, ์ง€์ •ํ•œ ๊ธฐ๋ณธ ํ„ด ์ˆ˜ ๋™์•ˆ ์ถ”๊ฐ€ ์šฐ๋ ค ์‚ฌํ•ญ๊ณผ ์ฐจ๋‹จ ์š”์†Œ๋ฅผ ์ค‘๋‹จ ์—†์ด ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:3,integer:!0,appliesTo:{en:"Applies to advisor.enabled.",ko:"advisor.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"advisor.maxNotesPerUpdate",category:"agents",group:"Advisor",label:{en:"Advisor Max Notes Per Update",ko:"Advisor ์—…๋ฐ์ดํŠธ๋‹น ์ตœ๋Œ€ ๋ฉ”๋ชจ ์ˆ˜"},description:{en:"Maximum non-blocker advice notes accepted per advisor prompt update (1โ€“32; UI offers 1โ€“5 quick picks). Blockers are exempt.",ko:"Advisor ํ”„๋กฌํ”„ํŠธ ์—…๋ฐ์ดํŠธ๋‹น ํ—ˆ์šฉํ•  ๋น„์ฐจ๋‹จ ์กฐ์–ธ ๋ฉ”๋ชจ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜์ž…๋‹ˆ๋‹ค(1โ€“32; UI์—์„œ๋Š” 1โ€“5 ๋น ๋ฅธ ์„ ํƒ ์ œ๊ณต). ์ฐจ๋‹จ ์š”์†Œ๋Š” ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:4,integer:!0,min:1,max:32,step:1,appliesTo:{en:"Applies to advisor.enabled.",ko:"advisor.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"advisor.syncBacklog",category:"agents",group:"Advisor",label:{en:"Advisor Sync Backlog",ko:"Advisor ๋™๊ธฐํ™” ์ง€์—ฐ ํ„ด"},description:{en:"Pause the main agent for up to 30 seconds if the advisor falls behind by this many turns. Off disables catch-up delays.",ko:"Advisor๊ฐ€ ์ง€์ •ํ•œ ํ„ด ์ˆ˜๋งŒํผ ๋’ค์ฒ˜์ง€๋ฉด ๊ธฐ๋ณธ ์—์ด์ „ํŠธ๋ฅผ ์ตœ๋Œ€ 30์ดˆ ๋™์•ˆ ์ผ์‹œ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค. Off๋กœ ์„ค์ •ํ•˜๋ฉด ๋”ฐ๋ผ์žก๊ธฐ ์ง€์—ฐ์ด ๋น„ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"off",choices:["off","1","3","5"],appliesTo:{en:"Applies to advisor.enabled.",ko:"advisor.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"branchSummary.enabled",category:"agents",group:"General",label:{en:"Branch Summaries",ko:"๋ธŒ๋žœ์น˜ ์š”์•ฝ"},description:{en:"Prompt to summarize when leaving a branch",ko:"๋ธŒ๋žœ์น˜๋ฅผ ๋– ๋‚  ๋•Œ ์š”์•ฝํ•˜๋„๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"followUpMode",category:"agents",group:"Input",label:{en:"Follow-Up Mode",ko:"ํ›„์† ๋ชจ๋“œ"},description:{en:"How to drain follow-up messages after a turn completes",ko:"ํ„ด ์™„๋ฃŒ ํ›„ ํ›„์† ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹"},kind:"enum",scope:"both",defaultValue:"one-at-a-time",choices:["all","one-at-a-time"]},{path:"interruptMode",category:"agents",group:"Input",label:{en:"Interrupt Mode",ko:"์ค‘๋‹จ ๋ชจ๋“œ"},description:{en:"When steering messages interrupt tool execution",ko:"์ง€์‹œ ๋ฉ”์‹œ์ง€๊ฐ€ ๋„๊ตฌ ์‹คํ–‰์„ ์ค‘๋‹จํ•˜๋Š” ๋ฐฉ์‹์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"immediate",choices:["immediate","wait"]},{path:"steeringMode",category:"agents",group:"Input",label:{en:"Steering Mode",ko:"์กฐ์ • ๋ชจ๋“œ"},description:{en:"How to process queued messages while agent is working",ko:"์—์ด์ „ํŠธ๊ฐ€ ์ž‘์—… ์ค‘์ผ ๋•Œ ๋Œ€๊ธฐ์—ด์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"one-at-a-time",choices:["all","one-at-a-time"]},{path:"includeWorkspaceTree",category:"agents",group:"Prompt",label:{en:"Include Workspace Tree",ko:"์›Œํฌ์ŠคํŽ˜์ด์Šค ํŠธ๋ฆฌ ํฌํ•จ"},description:{en:"Render the workspace directory tree in the system prompt. WARNING: This can bust prompt caching across sessions when files are modified.",ko:"์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ์— ์›Œํฌ์ŠคํŽ˜์ด์Šค ๋””๋ ‰ํ„ฐ๋ฆฌ ํŠธ๋ฆฌ๋ฅผ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ๊ณ : ํŒŒ์ผ์ด ์ˆ˜์ •๋˜๋ฉด ์„ธ์…˜ ๊ฐ„ ํ”„๋กฌํ”„ํŠธ ์บ์‹ฑ์ด ๋ฌดํšจํ™”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"personality",category:"agents",group:"Prompt",label:{en:"Personality",ko:"์„ฑ๊ฒฉ"},description:{en:"Communication style rendered into the system prompt's personality block",ko:"์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ์˜ ์„ฑ๊ฒฉ ๋ธ”๋ก์— ๋ฐ˜์˜๋˜๋Š” ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์Šคํƒ€์ผ์ž…๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"default",choices:["default","friendly","pragmatic","none"]},{path:"prewalk.enabled",category:"agents",group:"Prewalk",label:{en:"Enable Prewalk",ko:"Prewalk ์‚ฌ์šฉ"},description:{en:"Start on the active model, then switch to a fast/cheap model (default the 'smol' role) at the first edit/write after the plan nudge's todo list exists โ€” the strong model plans, commits the todos, and starts the implementation before handing off. Overridable per session with --prewalk / --no-prewalk.",ko:"ํ™œ์„ฑ ๋ชจ๋ธ๋กœ ์‹œ์ž‘ํ•œ ํ›„ ๊ณ„ํš ์œ ๋„์˜ ํ•  ์ผ ๋ชฉ๋ก์ด ์ƒ์„ฑ๋œ ๋’ค ์ฒ˜์Œ ํŽธ์ง‘ํ•˜๊ฑฐ๋‚˜ ์“ธ ๋•Œ ๋น ๋ฅด๊ณ  ์ €๋ ดํ•œ ๋ชจ๋ธ(๊ธฐ๋ณธ๊ฐ’์€ 'smol' ์—ญํ• )๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ•๋ ฅํ•œ ๋ชจ๋ธ์ด ๊ณ„ํšํ•˜๊ณ  ํ•  ์ผ์„ ํ™•์ •ํ•œ ํ›„ ๊ตฌํ˜„์„ ์‹œ์ž‘ํ•˜๊ณ  ์ธ๊ณ„ํ•ฉ๋‹ˆ๋‹ค. ์„ธ์…˜๋ณ„๋กœ --prewalk / --no-prewalk๋ฅผ ์‚ฌ์šฉํ•ด ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"task.agentAdvisor",category:"agents",group:"Task",label:{en:"Agent Advisor",ko:"์—์ด์ „ํŠธ ์–ด๋“œ๋ฐ”์ด์ €"},description:{en:"Per-agent advisor overrides: use 'on', 'off', or an advisor model selector for each agent name.",ko:"์—์ด์ „ํŠธ ์ด๋ฆ„๋ณ„ ์–ด๋“œ๋ฐ”์ด์ € ์žฌ์ •์˜์ž…๋‹ˆ๋‹ค. ๊ฐ ๊ฐ’์— 'on', 'off' ๋˜๋Š” ์–ด๋“œ๋ฐ”์ด์ € ๋ชจ๋ธ ์„ ํƒ์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค."},kind:"object",scope:"both",defaultValue:{},recordValues:"boolean-string",appliesTo:{en:"Applies per named task agent.",ko:"์ด๋ฆ„์ด ์ง€์ •๋œ task ์—์ด์ „ํŠธ๋ณ„๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"task.agentModelOverrides",category:"agents",group:"Task",label:{en:"Agent Model Overrides",ko:"์—์ด์ „ํŠธ ๋ชจ๋ธ ์žฌ์ •์˜"},description:{en:"Configures task agent model overrides.",ko:"์ž‘์—… ์—์ด์ „ํŠธ์˜ ๋ชจ๋ธ ์žฌ์ •์˜๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค."},kind:"object",scope:"both",defaultValue:{},recordValues:"string-or-string-array",appliesTo:{en:"Applies per named task agent; each value is one model selector or an ordered selector list.",ko:"์ด๋ฆ„์ด ์ง€์ •๋œ task ์—์ด์ „ํŠธ๋ณ„๋กœ ์ ์šฉ๋˜๋ฉฐ ๊ฐ ๊ฐ’์€ ํ•˜๋‚˜์˜ ๋ชจ๋ธ ์„ ํƒ์ž ๋˜๋Š” ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ์„ ํƒ์ž ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค."}},{path:"task.agentPrewalk",category:"agents",group:"Task",label:{en:"Agent Prewalk",ko:"์—์ด์ „ํŠธ ์‚ฌ์ „ ํƒ์ƒ‰"},description:{en:"Per-agent prewalk overrides: use 'on', 'off', or a handoff model selector for each agent name.",ko:"์—์ด์ „ํŠธ ์ด๋ฆ„๋ณ„ prewalk ์žฌ์ •์˜์ž…๋‹ˆ๋‹ค. ๊ฐ ๊ฐ’์— 'on', 'off' ๋˜๋Š” ์ธ๊ณ„ํ•  ๋ชจ๋ธ ์„ ํƒ์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค."},kind:"object",scope:"both",defaultValue:{},recordValues:"boolean-string",appliesTo:{en:"Applies per named task agent.",ko:"์ด๋ฆ„์ด ์ง€์ •๋œ task ์—์ด์ „ํŠธ๋ณ„๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"task.disabledAgents",category:"agents",group:"Task",label:{en:"Disabled Agents",ko:"๋น„ํ™œ์„ฑํ™”๋œ ์—์ด์ „ํŠธ"},description:{en:"Sets the list of disabled task agents.",ko:"๋น„ํ™œ์„ฑํ™”ํ•  ์ž‘์—… ์—์ด์ „ํŠธ ๋ชฉ๋ก์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค."},kind:"array",scope:"both",defaultValue:[],items:"string"},{path:"task.agentIdleTtlMs",category:"agents",group:"Subagents",label:{en:"Agent Idle TTL",ko:"์—์ด์ „ํŠธ ์œ ํœด TTL"},description:{en:"How long an idle subagent stays live in memory before being parked to disk (ms). Parked agents are revived automatically when messaged or resumed. 0 keeps idle agents live until exit.",ko:"์œ ํœด ํ•˜์œ„ ์—์ด์ „ํŠธ๋ฅผ ๋””์Šคํฌ์— ๋ณด๊ด€ํ•˜๊ธฐ ์ „์— ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ™œ์„ฑ ์ƒํƒœ๋กœ ์œ ์ง€ํ•  ์‹œ๊ฐ„(ms)์ž…๋‹ˆ๋‹ค. ๋ณด๊ด€๋œ ์—์ด์ „ํŠธ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๊ฑฐ๋‚˜ ์žฌ๊ฐœ๋  ๋•Œ ์ž๋™์œผ๋กœ ๋ณต์›๋ฉ๋‹ˆ๋‹ค. 0์€ ์ข…๋ฃŒํ•  ๋•Œ๊นŒ์ง€ ์œ ํœด ์—์ด์ „ํŠธ๋ฅผ ํ™œ์„ฑ ์ƒํƒœ๋กœ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:42e4,integer:!0},{path:"task.batch",category:"agents",group:"Subagents",label:{en:"Batch Task Calls",ko:"์ž‘์—… ํ˜ธ์ถœ ์ผ๊ด„ ์ฒ˜๋ฆฌ"},description:{en:"Switch the task tool to its batch shape: one call carries { context, tasks[] } โ€” one subagent per item, with an optional per-item agent (defaulting to the session spawn-policy agent), per-item isolation, and a required shared context prepended to every assignment. With async.enabled=true, each spawn runs as an independent background agent with the normal idle/parked lifecycle; otherwise the call blocks for merged results. Disable to restore the flat single-spawn schema.",ko:"task ๋„๊ตฌ๋ฅผ ์ผ๊ด„ ์ฒ˜๋ฆฌ ํ˜•์‹์œผ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ์˜ ํ˜ธ์ถœ์— { context, tasks[] }๋ฅผ ์ „๋‹ฌํ•˜๋ฉฐ, ํ•ญ๋ชฉ๋งˆ๋‹ค ํ•˜๋‚˜์˜ ํ•˜์œ„ ์—์ด์ „ํŠธ์™€ ์„ ํƒ์  agent๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. agent์˜ ๊ธฐ๋ณธ๊ฐ’์€ ์„ธ์…˜ ์ƒ์„ฑ ์ •์ฑ…์˜ ์—์ด์ „ํŠธ์ด๋ฉฐ, ํ•ญ๋ชฉ๋ณ„ ๊ฒฉ๋ฆฌ์™€ ๋ชจ๋“  ํ• ๋‹น ์•ž์— ์ถ”๊ฐ€๋˜๋Š” ํ•„์ˆ˜ ๊ณต์œ  ์ปจํ…์ŠคํŠธ๊ฐ€ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. async.enabled=true์ด๋ฉด ๊ฐ ์ƒ์„ฑ ์ž‘์—…์ด ์ผ๋ฐ˜์ ์ธ ์œ ํœด/๋ณด๊ด€ ์ˆ˜๋ช… ์ฃผ๊ธฐ๋ฅผ ๋”ฐ๋ฅด๋Š” ๋…๋ฆฝ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์—์ด์ „ํŠธ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ณ‘ํ•ฉ๋œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ํ˜ธ์ถœ์ด ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค. ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ํ‰๋ฉดํ˜• ๋‹จ์ผ ์ƒ์„ฑ ์Šคํ‚ค๋งˆ๋กœ ๋ณต์›๋ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"task.speculativeLaunch",category:"agents",group:"Subagents",label:{en:"Speculative Task Launch",ko:"์ž‘์—… ์„ ํ–‰ ์‹คํ–‰"},description:{en:"Start each batch subagent as soon as its tasks[] item finishes streaming instead of waiting for the whole task call. Launched agents are aborted if the finished call fails validation, is blocked, or its arguments change. Requires auto-allowed task approval and no extension tool lifecycle handlers.",ko:"์ „์ฒด task ํ˜ธ์ถœ์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๊ฐ tasks[] ํ•ญ๋ชฉ์˜ ์ŠคํŠธ๋ฆฌ๋ฐ์ด ๋๋‚˜๋Š” ์ฆ‰์‹œ ํ•ด๋‹น ์ผ๊ด„ ํ•˜์œ„ ์—์ด์ „ํŠธ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์™„๋ฃŒ๋œ ํ˜ธ์ถœ์ด ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์— ์‹คํŒจํ•˜๊ฑฐ๋‚˜ ์ฐจ๋‹จ๋˜๊ฑฐ๋‚˜ ์ธ์ˆ˜๊ฐ€ ๋ฐ”๋€Œ๋ฉด ์ด๋ฏธ ์‹œ์ž‘๋œ ์—์ด์ „ํŠธ๋Š” ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. task ์Šน์ธ์ด ์ž๋™ ํ—ˆ์šฉ์ด์–ด์•ผ ํ•˜๋ฉฐ ํ™•์žฅ ๋„๊ตฌ ์ˆ˜๋ช… ์ฃผ๊ธฐ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,appliesTo:{en:"Applies when task.batch is on.",ko:"task.batch๊ฐ€ ์ผœ์ง„ ๊ฒฝ์šฐ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"task.eager",category:"agents",group:"Subagents",label:{en:"Prefer Task Delegation",ko:"์ž‘์—… ์œ„์ž„ ์šฐ์„ "},description:{en:"How strongly to push delegating work to subagents",ko:"ํ•˜์œ„ ์—์ด์ „ํŠธ์— ์ž‘์—…์„ ์œ„์ž„ํ•˜๋„๋ก ์œ ๋„ํ•  ๊ฐ•๋„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"default",choices:["default","preferred","always"]},{path:"task.enableEffort",category:"agents",group:"Subagents",label:{en:"Per-Task Effort",ko:"์ž‘์—…๋ณ„ ๋…ธ๋ ฅ ์ˆ˜์ค€"},description:{en:"Expose the optional effort parameter on task spawns, allowing callers to override each subagent's thinking level",ko:"์ž‘์—… ์ƒ์„ฑ ์‹œ ์„ ํƒ์  effort ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋…ธ์ถœํ•˜์—ฌ ํ˜ธ์ถœ์ž๊ฐ€ ๊ฐ ํ•˜์œ„ ์—์ด์ „ํŠธ์˜ ์‚ฌ๊ณ  ์ˆ˜์ค€์„ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"task.enableLsp",category:"agents",group:"Subagents",label:{en:"LSP in Subagents",ko:"ํ•˜์œ„ ์—์ด์ „ํŠธ์—์„œ LSP ์‚ฌ์šฉ"},description:{en:"Allow subagents spawned via the task tool to use the lsp tool. Off by default to keep subagents cheap; enable when LSP-aware delegation is worth the extra tokens.",ko:"task ๋„๊ตฌ๋กœ ์ƒ์„ฑ๋œ ํ•˜์œ„ ์—์ด์ „ํŠธ๊ฐ€ lsp ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์œ„ ์—์ด์ „ํŠธ์˜ ๋น„์šฉ์„ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๊บผ์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ถ”๊ฐ€ ํ† ํฐ์„ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ LSP ๊ธฐ๋ฐ˜ ์œ„์ž„์ด ์œ ์šฉํ•  ๋•Œ ํ™œ์„ฑํ™”ํ•˜์„ธ์š”."},kind:"boolean",scope:"both",defaultValue:!1},{path:"task.maxConcurrency",category:"agents",group:"Subagents",label:{en:"Max Concurrent Tasks",ko:"์ตœ๋Œ€ ๋™์‹œ ์ž‘์—… ์ˆ˜"},description:{en:"Maximum number of subagents running concurrently; 0 means unlimited.",ko:"๋™์‹œ์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ํ•˜์œ„ ์—์ด์ „ํŠธ ์ˆ˜์ž…๋‹ˆ๋‹ค. 0์€ ๋ฌด์ œํ•œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:32,integer:!0,min:0,step:1},{path:"task.maxEffort",category:"agents",group:"Subagents",label:{en:"Maximum Per-Spawn Effort",ko:"์ƒ์„ฑ๋‹น ์ตœ๋Œ€ ์ž‘์—…๋Ÿ‰"},description:{en:"Maximum reasoning effort allowed for the task tool's per-spawn effort hint. Lower values prevent callers from escalating subagents above this ceiling; the default preserves the model's full range.",ko:"task ๋„๊ตฌ์˜ ์ƒ์„ฑ๋‹น ์ž‘์—…๋Ÿ‰ ํžŒํŠธ์— ํ—ˆ์šฉ๋˜๋Š” ์ตœ๋Œ€ ์ถ”๋ก  ์ž‘์—…๋Ÿ‰์ž…๋‹ˆ๋‹ค. ๊ฐ’์„ ๋‚ฎ์ถ”๋ฉด ํ˜ธ์ถœ์ž๊ฐ€ ์„œ๋ธŒ์—์ด์ „ํŠธ์˜ ์ž‘์—…๋Ÿ‰์„ ์ด ํ•œ๋„๋ณด๋‹ค ๋†’์ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์€ ๋ชจ๋ธ์˜ ์ „์ฒด ๋ฒ”์œ„๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"max",choices:["minimal","low","medium","high","xhigh","max"]},{path:"task.maxRecursionDepth",category:"agents",group:"Subagents",label:{en:"Max Task Recursion",ko:"์ตœ๋Œ€ ์ž‘์—… ์žฌ๊ท€ ๊นŠ์ด"},description:{en:"How many levels deep subagents can spawn their own subagents",ko:"์„œ๋ธŒ์—์ด์ „ํŠธ๊ฐ€ ์ž์ฒด ์„œ๋ธŒ์—์ด์ „ํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๋‹จ๊ณ„ ์ˆ˜"},kind:"number",scope:"both",defaultValue:2,integer:!0},{path:"task.maxRuntimeMs",category:"agents",group:"Subagents",label:{en:"Max Subagent Runtime",ko:"์ตœ๋Œ€ ์„œ๋ธŒ์—์ด์ „ํŠธ ์‹คํ–‰ ์‹œ๊ฐ„"},description:{en:"Hard wall-clock limit per subagent (ms). 0 disables it. Defense-in-depth against provider-side stream hangs that escape the inference-layer watchdog; triggers a normal subagent abort with a 'timed out' reason.",ko:"์„œ๋ธŒ์—์ด์ „ํŠธ๋‹น ์—„๊ฒฉํ•œ ์‹ค์ œ ์‹œ๊ฐ„ ์ œํ•œ(ms)์ž…๋‹ˆ๋‹ค. 0์ด๋ฉด ๋น„ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค. ์ถ”๋ก  ๊ณ„์ธต ๊ฐ์‹œ๋ฅผ ๋ฒ—์–ด๋‚œ ์ œ๊ณต์ž ์ธก ์ŠคํŠธ๋ฆผ ์ค‘๋‹จ์— ๋Œ€๋น„ํ•œ ์‹ฌ์ธต ๋ฐฉ์–ด ๊ธฐ๋Šฅ์ด๋ฉฐ, 'timed out' ์‚ฌ์œ ๋กœ ์„œ๋ธŒ์—์ด์ „ํŠธ๋ฅผ ์ •์ƒ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:0,integer:!0},{path:"task.prewalk",category:"agents",group:"Subagents",label:{en:"Generic Task Prewalk",ko:"์ผ๋ฐ˜ ์ž‘์—… ์‚ฌ์ „ ์‹คํ–‰"},description:{en:"Arm prewalk for the bundled generic `task` subagent: it starts on its resolved model, plans and begins the implementation, then hands off to the 'smol' role at its first edit/write. Per-agent overrides (task.agentPrewalk, configured from the /agents hub) and user agent `prewalk` frontmatter apply regardless of this toggle.",ko:"๋ฒˆ๋“ค generic `task` ์„œ๋ธŒ์—์ด์ „ํŠธ์˜ ์‚ฌ์ „ ์‹คํ–‰์„ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค. ํ™•์ธ๋œ ๋ชจ๋ธ์—์„œ ์‹œ์ž‘ํ•ด ๊ณ„ํš์„ ์„ธ์šฐ๊ณ  ๊ตฌํ˜„์„ ์‹œ์ž‘ํ•œ ๋’ค, ์ฒ˜์Œ ํŽธ์ง‘/์“ฐ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ 'smol' ์—ญํ• ๋กœ ๋„˜๊น๋‹ˆ๋‹ค. ์—์ด์ „ํŠธ๋ณ„ ์žฌ์ •์˜(task.agentPrewalk, /agents ํ—ˆ๋ธŒ์—์„œ ๊ตฌ์„ฑ)์™€ ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ์˜ `prewalk` frontmatter๋Š” ์ด ์„ค์ •๊ณผ ๊ด€๊ณ„์—†์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"task.softRequestBudget",category:"agents",group:"Subagents",label:{en:"Soft Subagent Request Budget",ko:"์„œ๋ธŒ์—์ด์ „ํŠธ ์†Œํ”„ํŠธ ์š”์ฒญ ์˜ˆ์‚ฐ"},description:{en:"Soft per-subagent request budget (assistant requests per run). Crossing it injects a wrap-up steering notice (see task.softRequestBudgetNotice); at 1.5x the budget the run is force-stopped and the agent must yield its partial findings. 0 disables the guard. Bundled scout/sonic agents cap out at a lower built-in budget, so a value below that cap still applies to them.",ko:"์„œ๋ธŒ์—์ด์ „ํŠธ๋ณ„ ์†Œํ”„ํŠธ ์š”์ฒญ ์˜ˆ์‚ฐ(์‹คํ–‰๋‹น ์–ด์‹œ์Šคํ„ดํŠธ ์š”์ฒญ ์ˆ˜)์ž…๋‹ˆ๋‹ค. ์ดˆ๊ณผํ•˜๋ฉด ๋งˆ๋ฌด๋ฆฌ๋ฅผ ์œ ๋„ํ•˜๋Š” ์•ˆ๋‚ด๊ฐ€ ์‚ฝ์ž…๋ฉ๋‹ˆ๋‹ค(task.softRequestBudgetNotice ์ฐธ์กฐ). ์˜ˆ์‚ฐ์˜ 1.5x์— ๋„๋‹ฌํ•˜๋ฉด ์‹คํ–‰์ด ๊ฐ•์ œ ์ค‘์ง€๋˜๊ณ  ์—์ด์ „ํŠธ๋Š” ๋ถ€๋ถ„ ๊ฒฐ๊ณผ๋ฅผ ์ œ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 0์ด๋ฉด ๋ณดํ˜ธ ๊ธฐ๋Šฅ์ด ๋น„ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค. ๋ฒˆ๋“ค scout/sonic ์—์ด์ „ํŠธ์—๋Š” ๋” ๋‚ฎ์€ ๊ธฐ๋ณธ ์ œ๊ณต ํ•œ๋„๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ, ์ด ํ•œ๋„๋ณด๋‹ค ๋‚ฎ์€ ๊ฐ’๋„ ํ•ด๋‹น ์—์ด์ „ํŠธ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:200,integer:!0},{path:"task.softRequestBudgetNotice",category:"agents",group:"Subagents",label:{en:"Soft Request Budget Notice",ko:"์†Œํ”„ํŠธ ์š”์ฒญ ์˜ˆ์‚ฐ ์•Œ๋ฆผ"},description:{en:"Inject one steering notice when a subagent crosses its soft request budget, asking it to wrap up before the 1.5x forced-yield stop.",ko:"์„œ๋ธŒ์—์ด์ „ํŠธ๊ฐ€ ์†Œํ”„ํŠธ ์š”์ฒญ ์˜ˆ์‚ฐ์„ ์ดˆ๊ณผํ•˜๋ฉด 1.5x ๊ฐ•์ œ ์ œ์ถœ ์ค‘์ง€ ์ „์— ๋งˆ๋ฌด๋ฆฌํ•˜๋„๋ก ์œ ๋„ํ•˜๋Š” ์•ˆ๋‚ด๋ฅผ ํ•œ ๋ฒˆ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"task.isolation.apply",category:"agents",group:"Isolation",label:{en:"Apply Isolated Changes",ko:"๊ฒฉ๋ฆฌ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ ์šฉ"},description:{en:"Automatically apply successful isolated task changes to the parent checkout; disable to retain patch or branch artifacts",ko:"์„ฑ๊ณตํ•œ ๊ฒฉ๋ฆฌ ์ž‘์—…์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ƒ์œ„ ์ฒดํฌ์•„์›ƒ์— ์ž๋™ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ํŒจ์น˜ ๋˜๋Š” ๋ธŒ๋žœ์น˜ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"task.isolation.commits",category:"agents",group:"Isolation",label:{en:"Isolation Commit Style",ko:"๊ฒฉ๋ฆฌ ์ปค๋ฐ‹ ์Šคํƒ€์ผ"},description:{en:"Commit message style for nested repo changes (generic or AI-generated)",ko:"์ค‘์ฒฉ ์ €์žฅ์†Œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์˜ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์Šคํƒ€์ผ(generic ๋˜๋Š” AI-generated)"},kind:"enum",scope:"both",defaultValue:"generic",choices:["generic","ai"]},{path:"task.isolation.enabled",category:"agents",group:"Isolation",label:{en:"Isolate Subagents",ko:"์„œ๋ธŒ์—์ด์ „ํŠธ ๊ฒฉ๋ฆฌ"},description:{en:"Run subagents in an isolated copy of the checkout and integrate their changes afterwards",ko:"์ฒดํฌ์•„์›ƒ์˜ ๊ฒฉ๋ฆฌ๋œ ๋ณต์‚ฌ๋ณธ์—์„œ ์„œ๋ธŒ์—์ด์ „ํŠธ๋ฅผ ์‹คํ–‰ํ•œ ํ›„ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ†ตํ•ฉํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"task.isolation.merge",category:"agents",group:"Isolation",label:{en:"Isolation Merge Strategy",ko:"๊ฒฉ๋ฆฌ ๋ณ‘ํ•ฉ ์ „๋žต"},description:{en:"How isolated task changes are integrated (patch apply or branch merge)",ko:"๊ฒฉ๋ฆฌ ์ž‘์—…์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ†ตํ•ฉํ•˜๋Š” ๋ฐฉ์‹(ํŒจ์น˜ ์ ์šฉ ๋˜๋Š” ๋ธŒ๋žœ์น˜ ๋ณ‘ํ•ฉ)"},kind:"enum",scope:"both",defaultValue:"patch",choices:["patch","branch"]},{path:"todo.eager",category:"agents",group:"Todos",label:{en:"Create Todos Automatically",ko:"ํ•  ์ผ ์ž๋™ ์ƒ์„ฑ"},description:{en:"How strongly to push automatic todo-list creation after the first message",ko:"์ฒซ ๋ฉ”์‹œ์ง€ ํ›„ ํ•  ์ผ ๋ชฉ๋ก ์ž๋™ ์ƒ์„ฑ์„ ์–ผ๋งˆ๋‚˜ ๊ฐ•ํ•˜๊ฒŒ ์œ ๋„ํ• ์ง€ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"default",choices:["default","preferred","always"]},{path:"todo.reminders",category:"agents",group:"Todos",label:{en:"Todo Reminders",ko:"ํ•  ์ผ ์•Œ๋ฆผ"},description:{en:"Remind the agent to complete todos before stopping",ko:"์—์ด์ „ํŠธ๊ฐ€ ์ค‘์ง€ํ•˜๊ธฐ ์ „์— ํ•  ์ผ์„ ์™„๋ฃŒํ•˜๋„๋ก ์•Œ๋ฆฝ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"todo.remindersMax",category:"agents",group:"Todos",label:{en:"Todo Reminder Limit",ko:"ํ•  ์ผ ์•Œ๋ฆผ ํ•œ๋„"},description:{en:"Maximum number of todo reminders before giving up",ko:"ํฌ๊ธฐํ•˜๊ธฐ ์ „๊นŒ์ง€ ํ‘œ์‹œํ•  ์ตœ๋Œ€ ํ•  ์ผ ์•Œ๋ฆผ ์ˆ˜"},kind:"number",scope:"both",defaultValue:3,integer:!0},{path:"todo.enabled",category:"agents",group:"Available Tools",label:{en:"Todos",ko:"ํ•  ์ผ"},description:{en:"Enable the todo tool for task tracking",ko:"์ž‘์—… ์ถ”์ ์„ ์œ„ํ•œ todo ๋„๊ตฌ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"magicKeywords.enabled",category:"agents",group:"Magic Keywords",label:{en:"Magic Keywords",ko:"๋งค์ง ํ‚ค์›Œ๋“œ"},description:{en:"Enable hidden notices for standalone ultrathink, orchestrate, workflowz, jevify keywords",ko:"๋‹จ๋…์œผ๋กœ ์ž…๋ ฅํ•œ ultrathink, orchestrate, workflowz, jevify ํ‚ค์›Œ๋“œ์— ์ˆจ๊ฒจ์ง„ ์•ˆ๋‚ด๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"magicKeywords.ultrathink",category:"agents",group:"Magic Keywords",label:{en:"Ultrathink Keyword",ko:"Ultrathink ํ‚ค์›Œ๋“œ"},description:{en:"Let standalone ultrathink request maximum automatic thinking and append its hidden notice",ko:"๋‹จ๋…์œผ๋กœ ์ž…๋ ฅํ•œ ultrathink๊ฐ€ ์ตœ๋Œ€ ์ž๋™ ์‚ฌ๊ณ ๋ฅผ ์š”์ฒญํ•˜๊ณ  ์ˆจ๊ฒจ์ง„ ์•ˆ๋‚ด๋ฅผ ์ถ”๊ฐ€ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,appliesTo:{en:"Applies when magicKeywords.enabled is on.",ko:"magicKeywords.enabled๊ฐ€ ์ผœ์ง„ ๊ฒฝ์šฐ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"magicKeywords.orchestrate",category:"agents",group:"Magic Keywords",label:{en:"Orchestrate Keyword",ko:"Orchestrate ํ‚ค์›Œ๋“œ"},description:{en:"Let standalone orchestrate append its hidden multi-agent orchestration notice",ko:"๋‹จ๋…์œผ๋กœ ์ž…๋ ฅํ•œ orchestrate๊ฐ€ ์ˆจ๊ฒจ์ง„ ๋‹ค์ค‘ ์—์ด์ „ํŠธ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์•ˆ๋‚ด๋ฅผ ์ถ”๊ฐ€ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,appliesTo:{en:"Applies when magicKeywords.enabled is on and the task tool is available.",ko:"magicKeywords.enabled๊ฐ€ ์ผœ์ ธ ์žˆ๊ณ  task ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๋•Œ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"magicKeywords.workflow",category:"agents",group:"Magic Keywords",label:{en:"Workflow Keyword",ko:"Workflow ํ‚ค์›Œ๋“œ"},description:{en:"Let standalone workflowz append its hidden eval workflow notice",ko:"๋‹จ๋…์œผ๋กœ ์ž…๋ ฅํ•œ workflowz๊ฐ€ ์ˆจ๊ฒจ์ง„ eval ์›Œํฌํ”Œ๋กœ ์•ˆ๋‚ด๋ฅผ ์ถ”๊ฐ€ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,appliesTo:{en:"Applies when magicKeywords.enabled is on and the task and eval tools are available.",ko:"magicKeywords.enabled๊ฐ€ ์ผœ์ ธ ์žˆ๊ณ  task ๋ฐ eval ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๋•Œ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"magicKeywords.jevify",category:"agents",group:"Magic Keywords",label:{en:"Jevify Keyword",ko:"Jevify ํ‚ค์›Œ๋“œ"},description:{en:"Let standalone jevify append its hidden bulk-judge classification notice",ko:"๋‹จ๋…์œผ๋กœ ์ž…๋ ฅํ•œ jevify๊ฐ€ ์ˆจ๊ฒจ์ง„ ์ผ๊ด„ ํŒ์ • ๋ถ„๋ฅ˜ ์•ˆ๋‚ด๋ฅผ ์ถ”๊ฐ€ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,appliesTo:{en:"Applies when magicKeywords.enabled is on and the eval tool is available.",ko:"magicKeywords.enabled๊ฐ€ ์ผœ์ ธ ์žˆ๊ณ  eval ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๋•Œ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"ask.enabled",category:"tools",group:"Available Tools",label:{en:"Ask",ko:"์งˆ๋ฌธ"},description:{en:"Enable the ask tool for interactive user questions",ko:"๋Œ€ํ™”ํ˜• ์‚ฌ์šฉ์ž ์งˆ๋ฌธ์„ ์œ„ํ•œ ask ๋„๊ตฌ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"ask.timeout",category:"tools",group:"Notifications",label:{en:"Ask Timeout",ko:"์งˆ๋ฌธ ์ œํ•œ ์‹œ๊ฐ„"},description:{en:"Auto-select the recommended ask option after this many seconds (0 disables)",ko:"์ง€์ •ํ•œ ์‹œ๊ฐ„(์ดˆ)์ด ์ง€๋‚˜๋ฉด ask ๋„๊ตฌ์˜ ๊ถŒ์žฅ ์˜ต์…˜์„ ์ž๋™์œผ๋กœ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค(0์€ ๋น„ํ™œ์„ฑํ™”)."},kind:"number",scope:"both",defaultValue:0,integer:!0,appliesTo:{en:"Applies when ask.enabled is on; ignored in plan mode.",ko:"ask.enabled๊ฐ€ ์ผœ์ง„ ๊ฒฝ์šฐ ์ ์šฉ๋˜๋ฉฐ ๊ณ„ํš ๋ชจ๋“œ์—์„œ๋Š” ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค."}},{path:"astEdit.enabled",category:"tools",group:"Available Tools",label:{en:"AST Edit",ko:"AST ํŽธ์ง‘"},description:{en:"Enable the ast_edit tool for structural AST rewrites",ko:"๊ตฌ์กฐ์  AST ์žฌ์ž‘์„ฑ์„ ์œ„ํ•œ ast_edit ๋„๊ตฌ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"astGrep.enabled",category:"tools",group:"Available Tools",label:{en:"AST Grep",ko:"AST ๊ฒ€์ƒ‰"},description:{en:"Enable the ast_grep tool for structural AST search",ko:"๊ตฌ์กฐ์  AST ๊ฒ€์ƒ‰์„ ์œ„ํ•œ ast_grep ๋„๊ตฌ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"browser.enabled",category:"tools",group:"Available Tools",label:{en:"Browser",ko:"๋ธŒ๋ผ์šฐ์ €"},description:{en:"Enable the browser eval prelude for scripted Chromium automation (Puppeteer)",ko:"์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ฐ˜ Chromium ์ž๋™ํ™”(Puppeteer)๋ฅผ ์œ„ํ•œ ๋ธŒ๋ผ์šฐ์ € eval ํ”„๋ ๋ฅ˜๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,admin:!0,confirmation:!0},{path:"computer.enabled",category:"tools",group:"Available Tools",label:{en:"Computer",ko:"์ปดํ“จํ„ฐ"},description:{en:"Enable the scriptable host-desktop eval prelude (screenshots, input, accessibility)",ko:"์Šคํฌ๋ฆฝํŒ… ๊ฐ€๋Šฅํ•œ ํ˜ธ์ŠคํŠธ ๋ฐ์Šคํฌํ†ฑ eval ํ”„๋ ๋ฅ˜๋“œ(์Šคํฌ๋ฆฐ์ƒท, ์ž…๋ ฅ, ์ ‘๊ทผ์„ฑ)๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1,admin:!0,confirmation:!0},{path:"debug.enabled",category:"tools",group:"Available Tools",label:{en:"Debug",ko:"๋””๋ฒ„๊ทธ"},description:{en:"Enable the debug tool for DAP-based debugging",ko:"DAP ๊ธฐ๋ฐ˜ ๋””๋ฒ„๊น…์šฉ ๋””๋ฒ„๊ทธ ๋„๊ตฌ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"fetch.enabled",category:"tools",group:"Available Tools",label:{en:"Read URLs",ko:"URL ์ฝ๊ธฐ"},description:{en:"Allow the read tool to fetch and process URLs",ko:"read ๋„๊ตฌ๊ฐ€ URL์„ ๊ฐ€์ ธ์™€ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"generate_image.enabled",category:"tools",group:"Available Tools",label:{en:"Generate Image",ko:"์ด๋ฏธ์ง€ ์ƒ์„ฑ"},description:{en:"Enable the generate_image tool (text-to-image generation and editing). Exposed as an xd:// device when tools.xdev is on.",ko:"generate_image ๋„๊ตฌ(ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๋ฐ ํŽธ์ง‘)๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. tools.xdev๊ฐ€ ์ผœ์ ธ ์žˆ์œผ๋ฉด xd:// ์žฅ์น˜๋กœ ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"speechgen.enabled",category:"tools",group:"Available Tools",label:{en:"Speech Generation",ko:"์Œ์„ฑ ์ƒ์„ฑ"},description:{en:"Enable the tts tool for on-device (Kokoro) or xAI Grok Voice speech-file synthesis",ko:"์˜จ๋””๋ฐ”์ด์Šค(Kokoro) ๋˜๋Š” xAI Grok Voice๋กœ ์Œ์„ฑ ํŒŒ์ผ์„ ํ•ฉ์„ฑํ•˜๋Š” tts ๋„๊ตฌ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"speech.enabled",category:"tools",group:"Speech",label:{en:"Speech Vocalization",ko:"์Œ์„ฑ ์ฝ๊ธฐ"},description:{en:"Speak the assistant's output aloud through the speakers as it streams",ko:"์–ด์‹œ์Šคํ„ดํŠธ ์ถœ๋ ฅ์ด ์ŠคํŠธ๋ฆฌ๋ฐ๋˜๋Š” ๋™์•ˆ ์Šคํ”ผ์ปค๋กœ ์†Œ๋ฆฌ ๋‚ด์–ด ์ฝ์–ด ์ค๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1,appliesTo:{en:"In ompgui (RPC) sessions only ask-tool questions are spoken, on the host machine's speakers.",ko:"ompgui(RPC) ์„ธ์…˜์—์„œ๋Š” ask ๋„๊ตฌ ์งˆ๋ฌธ๋งŒ ํ˜ธ์ŠคํŠธ ๊ธฐ๊ธฐ์˜ ์Šคํ”ผ์ปค๋กœ ์ฝ์–ด ์ค๋‹ˆ๋‹ค."}},{path:"speech.voice",category:"tools",group:"Speech",label:{en:"Speech Vocalization Voice",ko:"์Œ์„ฑ ์ฝ๊ธฐ ๋ชฉ์†Œ๋ฆฌ"},description:{en:"Kokoro voice used when speaking the assistant's output aloud",ko:"์–ด์‹œ์Šคํ„ดํŠธ ์ถœ๋ ฅ์„ ์†Œ๋ฆฌ ๋‚ด์–ด ์ฝ์„ ๋•Œ ์‚ฌ์šฉํ•  Kokoro ๋ชฉ์†Œ๋ฆฌ์ž…๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"af_heart",choices:["af_heart","af_bella","af_nicole","af_aoede","af_kore","af_sarah","am_michael","am_fenrir","am_puck","bf_emma","bm_george","bm_fable"],appliesTo:{en:"Applies when speech.enabled is on.",ko:"speech.enabled๊ฐ€ ์ผœ์ง„ ๊ฒฝ์šฐ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"speech.enhanced",category:"tools",group:"Speech",label:{en:"Enhanced Speech Rewriting",ko:"ํ–ฅ์ƒ๋œ ์Œ์„ฑ ๋ณ€ํ™˜"},description:{en:"Rewrite assistant output into natural spoken prose with the tiny/smol model before synthesis (describes code, drops links and markdown). Falls back to mechanical cleanup on failure",ko:"ํ•ฉ์„ฑํ•˜๊ธฐ ์ „์— tiny/smol ๋ชจ๋ธ๋กœ ์–ด์‹œ์Šคํ„ดํŠธ ์ถœ๋ ฅ์„ ์ž์—ฐ์Šค๋Ÿฌ์šด ๊ตฌ์–ด์ฒด๋กœ ๋‹ค์‹œ ์”๋‹ˆ๋‹ค(์ฝ”๋“œ๋Š” ์„ค๋ช…ํ•˜๊ณ  ๋งํฌ์™€ ๋งˆํฌ๋‹ค์šด์€ ์ œ๊ฑฐ). ์‹คํŒจํ•˜๋ฉด ๊ธฐ๊ณ„์  ์ •๋ฆฌ๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1,appliesTo:{en:"Applies when speech.enabled is on.",ko:"speech.enabled๊ฐ€ ์ผœ์ง„ ๊ฒฝ์šฐ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"github.enabled",category:"tools",group:"Available Tools",label:{en:"GitHub CLI",ko:"GitHub CLI"},description:{en:"Enable the github tool (op-based dispatch for repository, issue, pull request, diff, search, checkout, push, and Actions watch workflows)",ko:"github ๋„๊ตฌ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค(์ €์žฅ์†Œ, ์ด์Šˆ, ํ’€ ๋ฆฌํ€˜์ŠคํŠธ, diff, ๊ฒ€์ƒ‰, checkout, push ๋ฐ Actions watch ์›Œํฌํ”Œ๋กœ๋ฅผ ์œ„ํ•œ ์ž‘์—… ๊ธฐ๋ฐ˜ ๋””์ŠคํŒจ์น˜)."},kind:"boolean",scope:"both",defaultValue:!1},{path:"github.cache.enabled",category:"tools",group:"GitHub",label:{en:"GitHub View Cache",ko:"GitHub ์กฐํšŒ ์บ์‹œ"},description:{en:"Cache rendered issue/PR view output in ~/.omp/cache/github-cache.db so repeated reads are free",ko:"๋ Œ๋”๋ง๋œ ์ด์Šˆ/PR ์กฐํšŒ ๊ฒฐ๊ณผ๋ฅผ ~/.omp/cache/github-cache.db์— ์บ์‹œํ•˜์—ฌ ๋ฐ˜๋ณต ์กฐํšŒ ๋น„์šฉ์„ ์—†์•ฑ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,appliesTo:{en:"Applies when github.enabled is on.",ko:"github.enabled๊ฐ€ ์ผœ์ง„ ๊ฒฝ์šฐ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"github.cache.softTtlSec",category:"tools",group:"GitHub",label:{en:"GitHub Cache Soft TTL",ko:"GitHub ์บ์‹œ ์†Œํ”„ํŠธ TTL"},description:{en:"Within this window, cached issue/PR view rows are returned directly (seconds; default 5 minutes)",ko:"์ด ๊ธฐ๊ฐ„ ์•ˆ์—๋Š” ์บ์‹œ๋œ ์ด์Šˆ/PR ์กฐํšŒ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค(์ดˆ ๋‹จ์œ„, ๊ธฐ๋ณธ๊ฐ’ 5๋ถ„)."},kind:"number",scope:"both",defaultValue:300,integer:!0,appliesTo:{en:"Applies when github.cache.enabled is on.",ko:"github.cache.enabled๊ฐ€ ์ผœ์ง„ ๊ฒฝ์šฐ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"github.cache.hardTtlSec",category:"tools",group:"GitHub",label:{en:"GitHub Cache Hard TTL",ko:"GitHub ์บ์‹œ ํ•˜๋“œ TTL"},description:{en:"Past the soft TTL the cached row is returned and refreshed in the background; past the hard TTL it is dropped (seconds; default 7 days)",ko:"์†Œํ”„ํŠธ TTL์ด ์ง€๋‚˜๋ฉด ์บ์‹œ ํ•ญ๋ชฉ์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด์„œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์ƒˆ๋กœ ๊ณ ์น˜๊ณ , ํ•˜๋“œ TTL์ด ์ง€๋‚˜๋ฉด ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค(์ดˆ ๋‹จ์œ„, ๊ธฐ๋ณธ๊ฐ’ 7์ผ)."},kind:"number",scope:"both",defaultValue:604800,integer:!0,appliesTo:{en:"Applies when github.cache.enabled is on.",ko:"github.cache.enabled๊ฐ€ ์ผœ์ง„ ๊ฒฝ์šฐ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"glob.enabled",category:"tools",group:"Available Tools",label:{en:"Glob",ko:"Glob"},description:{en:"Enable the glob tool for glob-based file lookup",ko:"glob ๊ธฐ๋ฐ˜ ํŒŒ์ผ ๊ฒ€์ƒ‰์šฉ glob ๋„๊ตฌ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"grep.enabled",category:"tools",group:"Available Tools",label:{en:"Grep",ko:"Grep"},description:{en:"Enable the grep tool for regex content search",ko:"์ •๊ทœ์‹ ์ฝ˜ํ…์ธ  ๊ฒ€์ƒ‰์šฉ grep ๋„๊ตฌ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"grep.contextBefore",category:"tools",group:"Grep & Browser",label:{en:"Grep Context Before",ko:"Grep ์•ž์ชฝ ์ปจํ…์ŠคํŠธ"},description:{en:"Lines of context before each grep match",ko:"๊ฐ grep ์ผ์น˜ ํ•ญ๋ชฉ ์•ž์— ํ‘œ์‹œํ•  ์ปจํ…์ŠคํŠธ ์ค„ ์ˆ˜์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:1,integer:!0},{path:"grep.contextAfter",category:"tools",group:"Grep & Browser",label:{en:"Grep Context After",ko:"Grep ๋’ค์ชฝ ์ปจํ…์ŠคํŠธ"},description:{en:"Lines of context after each grep match",ko:"๊ฐ grep ์ผ์น˜ ํ•ญ๋ชฉ ๋’ค์— ํ‘œ์‹œํ•  ์ปจํ…์ŠคํŠธ ์ค„ ์ˆ˜์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:3,integer:!0},{path:"find.enabled",category:"tools",group:"Available Tools",label:{en:"Find (semantic grep)",ko:"Find(์˜๋ฏธ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰)"},description:{en:"Enable the find tool: natural-language search for files and line ranges, judged by the judge model role. Auto enables it only when the judge role resolves to a native TypeSafe jev model",ko:"์ž์—ฐ์–ด๋กœ ํŒŒ์ผ๊ณผ ์ค„ ๋ฒ”์œ„๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  judge ๋ชจ๋ธ ์—ญํ• ์ด ํŒ์ •ํ•˜๋Š” find ๋„๊ตฌ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. auto๋Š” judge ์—ญํ• ์ด ๋„ค์ดํ‹ฐ๋ธŒ TypeSafe jev ๋ชจ๋ธ๋กœ ํ™•์ธ๋  ๋•Œ๋งŒ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"auto",choices:["auto","on","off"],appliesTo:{en:"Auto requires the judge model role to resolve to a native TypeSafe jev model.",ko:"auto๋Š” judge ๋ชจ๋ธ ์—ญํ• ์ด ๋„ค์ดํ‹ฐ๋ธŒ TypeSafe jev ๋ชจ๋ธ๋กœ ํ™•์ธ๋  ๋•Œ๋งŒ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค."}},{path:"async.enabled",category:"tools",group:"Execution",label:{en:"Async Execution",ko:"๋น„๋™๊ธฐ ์‹คํ–‰"},description:{en:"Enable async bash commands and background task execution",ko:"๋น„๋™๊ธฐ bash ๋ช…๋ น๊ณผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—… ์‹คํ–‰์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"tools.abortOnFabricatedResult",category:"tools",group:"Execution",label:{en:"Abort On Fabricated Tool Result",ko:"์กฐ์ž‘๋œ ๋„๊ตฌ ๊ฒฐ๊ณผ ๊ฐ์ง€ ์‹œ ์ค‘๋‹จ"},description:{en:"With in-band tool calls, stop the model immediately when it starts hallucinating a tool result mid-turn. Disable to let the model finish generating and discard the fabricated continuation instead.",ko:"์ธ๋ฐด๋“œ ๋„๊ตฌ ํ˜ธ์ถœ์—์„œ ๋ชจ๋ธ์ด ์‘๋‹ต ๋„์ค‘ ๋„๊ตฌ ๊ฒฐ๊ณผ๋ฅผ ํ™˜๊ฐํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ์ฆ‰์‹œ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ๋ชจ๋ธ์ด ์ƒ์„ฑ์„ ๋งˆ์น  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ ํ›„ ์กฐ์ž‘๋œ ํ›„์† ๋‚ด์šฉ์„ ํ๊ธฐํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"tools.intentTracing",category:"tools",group:"Execution",label:{en:"Intent Tracing",ko:"์˜๋„ ์ถ”์ "},description:{en:"Ask the agent to describe the intent of each tool call before executing it",ko:"๊ฐ ๋„๊ตฌ ํ˜ธ์ถœ์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ์—์ด์ „ํŠธ๊ฐ€ ํ˜ธ์ถœ ์˜๋„๋ฅผ ์„ค๋ช…ํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"tools.maxTimeout",category:"tools",group:"Execution",label:{en:"Max Tool Timeout",ko:"์ตœ๋Œ€ ๋„๊ตฌ ์‹œ๊ฐ„ ์ œํ•œ"},description:{en:"Maximum timeout in seconds the agent can set for any tool (0 = no limit)",ko:"์—์ด์ „ํŠธ๊ฐ€ ๋„๊ตฌ์— ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์‹œ๊ฐ„ ์ œํ•œ(์ดˆ)(0 = ์ œํ•œ ์—†์Œ)"},kind:"number",scope:"both",defaultValue:0,integer:!0},{path:"extensionHandlers.toolCallTimeoutMs",category:"tools",group:"Extensions",label:{en:"Tool Call Handler Timeout (ms)",ko:"๋„๊ตฌ ํ˜ธ์ถœ ํ•ธ๋“ค๋Ÿฌ ์ œํ•œ ์‹œ๊ฐ„(ms)"},description:{en:"Positive finite active-work timeout for extension tool_call handlers; invalid values use 30000ms, and time awaiting OMP-owned dialogs does not count",ko:"ํ™•์žฅ tool_call ํ•ธ๋“ค๋Ÿฌ์˜ ์‹ค์ œ ์ž‘์—… ์ œํ•œ ์‹œ๊ฐ„(์–‘์˜ ์œ ํ•œ๊ฐ’)์ž…๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ ๊ฐ’์€ 30000ms๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ OMP ๋Œ€ํ™” ์ƒ์ž๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„์€ ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:3e4,integer:!0},{path:"async.maxJobs",category:"tools",group:"Async",label:{en:"Max Jobs",ko:"์ตœ๋Œ€ ์ž‘์—… ์ˆ˜"},description:{en:"Maximum number of asynchronous jobs.",ko:"๋น„๋™๊ธฐ ์ž‘์—…์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:100,integer:!0},{path:"bash.allowCompoundCommands",category:"tools",group:"Bash",label:{en:"Allow Compound Commands",ko:"๋ณตํ•ฉ ๋ช…๋ น ํ—ˆ์šฉ"},description:{en:"Evaluate literal && chains per command; unmatched commands use normal bash approval policy and mode",ko:"๋ฆฌํ„ฐ๋Ÿด && ์ฒด์ธ์„ ๋ช…๋ น๋ณ„๋กœ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๋ช…๋ น์—๋Š” ์ผ๋ฐ˜ bash ์Šน์ธ ์ •์ฑ…๊ณผ ๋ชจ๋“œ๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1,admin:!0,confirmation:!0,appliesTo:{en:"Applies to bash.enabled.",ko:"bash.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"bash.autoBackground.enabled",category:"tools",group:"Bash",label:{en:"Bash Auto-Background",ko:"Bash ์ž๋™ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์‹คํ–‰"},description:{en:"Automatically background long-running bash commands and deliver the result later",ko:"์˜ค๋ž˜ ์‹คํ–‰๋˜๋Š” bash ๋ช…๋ น์„ ์ž๋™์œผ๋กœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋‚˜์ค‘์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,admin:!0,appliesTo:{en:"Applies to bash.enabled.",ko:"bash.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"bash.autoBackground.thresholdMs",category:"tools",group:"Bash",label:{en:"Threshold Ms",ko:"์ž„๊ณ—๊ฐ’(ms)"},description:{en:"Threshold in milliseconds for automatically backgrounding Bash execution.",ko:"Bash ์‹คํ–‰์„ ์ž๋™์œผ๋กœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ž„๊ณ„๊ฐ’(๋ฐ€๋ฆฌ์ดˆ)์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:6e4,integer:!0,admin:!0,appliesTo:{en:"Applies to bash.enabled.",ko:"bash.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"bash.direnv",category:"tools",group:"Bash",label:{en:"direnv Auto-Load",ko:"direnv ์ž๋™ ๋กœ๋“œ"},description:{en:"Auto-load a repo's direnv/devenv `.envrc` into the bash session so devenv tools and env vars are present without manual `direnv exec`. Honors direnv's allow list: an `.envrc` you haven't `direnv allow`ed is never executed",ko:"์ €์žฅ์†Œ์˜ direnv/devenv `.envrc`๋ฅผ bash ์„ธ์…˜์— ์ž๋™์œผ๋กœ ๋กœ๋“œํ•˜์—ฌ ์ˆ˜๋™ `direnv exec` ์—†์ด devenv ๋„๊ตฌ์™€ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. direnv ํ—ˆ์šฉ ๋ชฉ๋ก์„ ๋”ฐ๋ฅด๋ฏ€๋กœ `direnv allow`ํ•˜์ง€ ์•Š์€ `.envrc`๋Š” ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"auto",choices:["auto","off"],admin:!0,appliesTo:{en:"Applies to bash.enabled.",ko:"bash.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"bash.direnvLoadTimeoutMs",category:"tools",group:"Bash",label:{en:"direnv Load Timeout (ms)",ko:"direnv ๋กœ๋“œ ์ œํ•œ ์‹œ๊ฐ„(ms)"},description:{en:"Max wait for the first `direnv export` (a cold devenv shell can be slow); on timeout the session runs without the direnv env",ko:"์ฒซ `direnv export`๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ตœ๋Œ€ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค(์ดˆ๊ธฐ devenv ์…ธ์€ ๋А๋ฆด ์ˆ˜ ์žˆ์Œ). ์‹œ๊ฐ„ ์ดˆ๊ณผ ์‹œ direnv ํ™˜๊ฒฝ ์—†์ด ์„ธ์…˜์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:3e4,integer:!0,admin:!0,appliesTo:{en:"Applies to bash.enabled.",ko:"bash.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"bash.enabled",category:"tools",group:"Bash",label:{en:"Bash",ko:"Bash"},description:{en:"Enable the bash tool for shell command execution",ko:"์…ธ ๋ช…๋ น ์‹คํ–‰์„ ์œ„ํ•œ bash ๋„๊ตฌ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,admin:!0,confirmation:!0},{path:"bash.patterns",category:"tools",group:"Bash",label:{en:"Bash Approval Patterns",ko:"Bash ์Šน์ธ ํŒจํ„ด"},description:{en:"Ordered bash command approval rules. Each item has match and approval fields; only '*' wildcards are supported.",ko:"์ˆœ์„œ๋Œ€๋กœ ์ ์šฉ๋˜๋Š” bash ๋ช…๋ น ์Šน์ธ ๊ทœ์น™์ž…๋‹ˆ๋‹ค. ๊ฐ ํ•ญ๋ชฉ์—๋Š” match์™€ approval ํ•„๋“œ๊ฐ€ ์žˆ์œผ๋ฉฐ, '*' ์™€์ผ๋“œ์นด๋“œ๋งŒ ์ง€์›๋ฉ๋‹ˆ๋‹ค."},kind:"array",scope:"both",defaultValue:[],items:"object",admin:!0,confirmation:!0,appliesTo:{en:"Applies to bash.enabled.",ko:"bash.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"bashInterceptor.enabled",category:"tools",group:"Bash",label:{en:"Bash Interceptor",ko:"Bash ์ธํ„ฐ์…‰ํ„ฐ"},description:{en:"Block shell commands that have dedicated tools",ko:"์ „์šฉ ๋„๊ตฌ๊ฐ€ ์žˆ๋Š” ์…ธ ๋ช…๋ น์„ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1,admin:!0,confirmation:!0},{path:"shellMinimizer.enabled",category:"tools",group:"Bash",label:{en:"Shell Minimizer",ko:"์…ธ ์ถœ๋ ฅ ์ตœ์†Œํ™”"},description:{en:"Compress verbose shell output (git, npm, cargo, etc.) before returning it to the agent",ko:"์—์ด์ „ํŠธ์— ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์ „์— ์ƒ์„ธํ•œ ์…ธ ์ถœ๋ ฅ(git, npm, cargo ๋“ฑ)์„ ์••์ถ•ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,admin:!0},{path:"shellMinimizer.sourceOutlineLevel",category:"tools",group:"Bash",label:{en:"Shell Minimizer Source Outline",ko:"์…ธ ์ตœ์†Œํ™” ์†Œ์Šค ๊ฐœ์š”"},description:{en:"Source outline mode for cat/read of source files: default or aggressive",ko:"์†Œ์Šค ํŒŒ์ผ์„ cat/readํ•  ๋•Œ ์‚ฌ์šฉํ•  ์†Œ์Šค ๊ฐœ์š” ๋ชจ๋“œ: default ๋˜๋Š” aggressive"},kind:"enum",scope:"both",defaultValue:"default",choices:["default","aggressive"],admin:!0},{path:"bashInterceptor.patterns",category:"tools",group:"Bash Interceptor",label:{en:"Patterns",ko:"ํŒจํ„ด"},description:{en:"Patterns used by the Bash interceptor, with the corresponding tool and message for each pattern.",ko:"Bash ์ธํ„ฐ์…‰ํ„ฐ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด๊ณผ ๊ฐ ํŒจํ„ด์— ๋Œ€์‘ํ•˜๋Š” ๋„๊ตฌ ๋ฐ ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค."},kind:"array",scope:"both",defaultValue:[{pattern:"^\\s*(cat|head|tail|less|more)\\s+",tool:"read",message:"Use the `read` tool instead of cat/head/tail. It provides better context and handles binary files."},{pattern:"^\\s*(grep|rg|ripgrep|ag|ack)\\s+",tool:"grep",message:"Use the `grep` tool instead of grep/rg. It respects .gitignore and provides structured output."},{pattern:"^\\s*(find|fd|locate)\\s+.*(-name|-iname|-type|--type|-glob)",tool:"glob",message:"Use the `glob` tool instead of find/fd. It respects .gitignore and is faster for glob patterns."},{pattern:"^\\s*sed\\s+(-i|--in-place)",tool:"edit",message:"Use the `edit` tool instead of sed -i. It provides diff preview and fuzzy matching."},{pattern:"^\\s*perl\\s+.*-[pn]?i",tool:"edit",message:"Use the `edit` tool instead of perl -i. It provides diff preview and fuzzy matching."},{pattern:"^\\s*awk\\s+.*-i\\s+inplace",tool:"edit",message:"Use the `edit` tool instead of awk -i inplace. It provides diff preview and fuzzy matching."},{pattern:"^\\s*(echo|printf|cat\\s*<<)\\s+(?:(?:[^\"'>]|\"[^\"]*\"|'[^']*')|(?<!\\|)>{1,2}\\|?\\s*(?:\"/dev/(?:null|tty|stdout|stderr)\"|'/dev/(?:null|tty|stdout|stderr)'|/dev/(?:null|tty|stdout|stderr))(?:[\\s;&|]|$))*(?<!\\|)>{1,2}\\|?\\s*(?!(?:\"/dev/(?:null|tty|stdout|stderr)\"|'/dev/(?:null|tty|stdout|stderr)'|/dev/(?:null|tty|stdout|stderr))(?:[\\s;&|]|$))[$\\w./~\"'-]",tool:"write",message:"Use the `write` tool instead of echo/cat redirection. It handles encoding and provides confirmation."},{pattern:"^\\s*nohup\\s+|(?<!&)\\&\\s*$",tool:"bash",message:"Use `bash` with `name` instead of nohup or background shell syntax so the service stays observable and managed."},{pattern:"^\\s*(?:(?:bun|npm|pnpm|yarn)\\s+(?:run\\s+)?(?:dev|start)(?:\\s|$)|(?:vite|next\\s+dev|nuxt\\s+dev|nodemon|lldb|gdb|tail\\s+-f)(?:\\s|$)|docker\\s+compose\\s+up(?!.*(?:\\s-d(?:\\s|$)|--detach))(?:\\s|$))",tool:"bash",message:"Use `bash` with `name` for services, watchers, and debuggers; inspect with `read proc://<name>`."},{pattern:"^\\s*(?:(?:bun|npm|pnpm|yarn)\\s+(?:run\\s+)?\\S+|cargo\\s+watch|watchexec|pytest|vitest|jest|tsc)(?:.|\\n)*(?:--watch|-w)(?:\\s|$)",tool:"bash",message:"Use `bash` with `name` for watch mode so its output, input, and lifecycle stay managed."}],items:"object",admin:!0,confirmation:!0},{path:"browser.cdpUrl",category:"tools",group:"Grep & Browser",label:{en:"Browser CDP URL",ko:"๋ธŒ๋ผ์šฐ์ € CDP URL"},description:{en:"Default HTTP CDP discovery endpoint (for example http://127.0.0.1:9222) to attach to instead of launching a browser. Explicit app.cdp_url or app.path on the tool call take precedence.",ko:"๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋Œ€์‹  ์—ฐ๊ฒฐํ•  ๊ธฐ๋ณธ HTTP CDP ๊ฒ€์ƒ‰ ์—”๋“œํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค(์˜ˆ: http://127.0.0.1:9222). ๋„๊ตฌ ํ˜ธ์ถœ์— ๋ช…์‹œ๋œ app.cdp_url ๋˜๋Š” app.path๊ฐ€ ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค."},kind:"string",scope:"both",admin:!0,confirmation:!0,appliesTo:{en:"Applies when Browser Relay is off; attaches to the configured CDP host instead of launching Chromium.",ko:"๋ธŒ๋ผ์šฐ์ € ๋ฆด๋ ˆ์ด๊ฐ€ ๊บผ์ ธ ์žˆ์„ ๋•Œ ์ ์šฉ๋˜๋ฉฐ Chromium์„ ์‹คํ–‰ํ•˜๋Š” ๋Œ€์‹  ์„ค์ •๋œ CDP ํ˜ธ์ŠคํŠธ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค."}},{path:"browser.freezeOnTurnEnd",category:"tools",group:"Grep & Browser",label:{en:"Freeze Browser Tabs On Turn End",ko:"ํ„ด ์ข…๋ฃŒ ์‹œ ๋ธŒ๋ผ์šฐ์ € ํƒญ ์ •์ง€"},description:{en:"Freeze OMP-owned headless browser tabs when a turn settles so animated pages stop burning CPU/GPU while idle. Tabs unfreeze automatically on next use; pass persist:true on open to opt a tab out.",ko:"ํ„ด์ด ์™„๋ฃŒ๋˜๋ฉด OMP ์†Œ์œ ์˜ ํ—ค๋“œ๋ฆฌ์Šค ๋ธŒ๋ผ์šฐ์ € ํƒญ์„ ์ •์ง€ํ•˜์—ฌ ์œ ํœด ์ƒํƒœ์—์„œ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํŽ˜์ด์ง€๊ฐ€ CPU/GPU๋ฅผ ์†Œ๋ชจํ•˜์ง€ ์•Š๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์‚ฌ์šฉ ์‹œ ์ž๋™์œผ๋กœ ์žฌ๊ฐœ๋˜๋ฉฐ, open์— persist:true๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ํ•ด๋‹น ํƒญ์„ ์ œ์™ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,admin:!0,appliesTo:{en:"Applies only to OMP-launched headless browser tabs.",ko:"OMP๊ฐ€ ์‹คํ–‰ํ•œ ํ—ค๋“œ๋ฆฌ์Šค ๋ธŒ๋ผ์šฐ์ € ํƒญ์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"browser.headless",category:"tools",group:"Grep & Browser",label:{en:"Headless Browser",ko:"ํ—ค๋“œ๋ฆฌ์Šค ๋ธŒ๋ผ์šฐ์ €"},description:{en:"Launch browser in headless mode (disable to show browser UI)",ko:"๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ—ค๋“œ๋ฆฌ์Šค ๋ชจ๋“œ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค(๋ธŒ๋ผ์šฐ์ € UI๋ฅผ ํ‘œ์‹œํ•˜๋ ค๋ฉด ๋น„ํ™œ์„ฑํ™”)."},kind:"boolean",scope:"both",defaultValue:!0,admin:!0,confirmation:!0,appliesTo:{en:"Applies only when OMP launches Chromium itself.",ko:"OMP๊ฐ€ Chromium์„ ์ง์ ‘ ์‹คํ–‰ํ•  ๋•Œ๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"browser.idleCloseSec",category:"tools",group:"Grep & Browser",label:{en:"Browser Idle Close Timeout",ko:"๋ธŒ๋ผ์šฐ์ € ์œ ํœด ์ข…๋ฃŒ ์‹œ๊ฐ„"},description:{en:"Close OMP-owned headless browser tabs idle longer than this many seconds (0 = never; session dispose still reaps). Applies only to OMP-launched headless tabs, never relay/CDP/spawned browsers or other sessions' tabs.",ko:"์ง€์ •ํ•œ ์ดˆ๋ณด๋‹ค ์˜ค๋ž˜ ์œ ํœด ์ƒํƒœ์ธ OMP ์†Œ์œ ์˜ ํ—ค๋“œ๋ฆฌ์Šค ๋ธŒ๋ผ์šฐ์ € ํƒญ์„ ๋‹ซ์Šต๋‹ˆ๋‹ค(0 = ๋‹ซ์ง€ ์•Š์Œ, ์„ธ์…˜ ํ๊ธฐ ์‹œ์—๋Š” ์ •๋ฆฌ๋จ). OMP๊ฐ€ ์‹คํ–‰ํ•œ ํ—ค๋“œ๋ฆฌ์Šค ํƒญ์—๋งŒ ์ ์šฉ๋˜๋ฉฐ relay/CDP/๋ณ„๋„ ์ƒ์„ฑ ๋ธŒ๋ผ์šฐ์ €๋‚˜ ๋‹ค๋ฅธ ์„ธ์…˜์˜ ํƒญ์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:1800,admin:!0,appliesTo:{en:"Applies only to OMP-launched headless browser tabs.",ko:"OMP๊ฐ€ ์‹คํ–‰ํ•œ ํ—ค๋“œ๋ฆฌ์Šค ๋ธŒ๋ผ์šฐ์ € ํƒญ์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"browser.relay",category:"tools",group:"Grep & Browser",label:{en:"Browser Relay",ko:"๋ธŒ๋ผ์šฐ์ € ๋ฆด๋ ˆ์ด"},description:{en:"Drive your own Chrome tabs through the omp browser relay. Install the extension once (`omp browser-relay install`); the relay server auto-starts when the browser prelude needs it. Takes precedence over Browser CDP URL; set PI_BROWSER_RELAY=0 or PI_BROWSER_RELAY=1 to override.",ko:"omp ๋ธŒ๋ผ์šฐ์ € ๋ฆด๋ ˆ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ Chrome ํƒญ์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์„ ํ•œ ๋ฒˆ ์„ค์น˜ํ•˜์„ธ์š”(`omp browser-relay install`). ๋ธŒ๋ผ์šฐ์ € ํ”„๋ ๋ฅ˜๋“œ์—์„œ ํ•„์š”ํ•  ๋•Œ ๋ฆด๋ ˆ์ด ์„œ๋ฒ„๊ฐ€ ์ž๋™์œผ๋กœ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ € CDP URL๋ณด๋‹ค ์šฐ์„ ํ•˜๋ฉฐ, PI_BROWSER_RELAY=0 ๋˜๋Š” PI_BROWSER_RELAY=1๋กœ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1,admin:!0,confirmation:!0,appliesTo:{en:"Applies to browser automation and takes precedence over Browser CDP URL.",ko:"๋ธŒ๋ผ์šฐ์ € ์ž๋™ํ™”์— ์ ์šฉ๋˜๋ฉฐ ๋ธŒ๋ผ์šฐ์ € CDP URL๋ณด๋‹ค ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค."}},{path:"browser.relayUrl",category:"tools",group:"Grep & Browser",label:{en:"Browser Relay URL",ko:"๋ธŒ๋ผ์šฐ์ € ๋ฆด๋ ˆ์ด URL"},description:{en:"omp browser relay endpoint (default http://127.0.0.1:9224).",ko:"omp ๋ธŒ๋ผ์šฐ์ € ๋ฆด๋ ˆ์ด ์—”๋“œํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค(๊ธฐ๋ณธ๊ฐ’ http://127.0.0.1:9224)."},kind:"string",scope:"both",admin:!0,confirmation:!0,appliesTo:{en:"Applies when Browser Relay is enabled.",ko:"๋ธŒ๋ผ์šฐ์ € ๋ฆด๋ ˆ์ด๊ฐ€ ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"browser.screenshotDir",category:"tools",group:"Grep & Browser",label:{en:"Screenshot Directory",ko:"์Šคํฌ๋ฆฐ์ƒท ๋””๋ ‰ํ„ฐ๋ฆฌ"},description:{en:"Directory to save screenshots. If unset, screenshots go to a temp file. Supports ~. Examples: ~/Downloads, ~/Desktop, /sdcard/Download (Android)",ko:"์Šคํฌ๋ฆฐ์ƒท์„ ์ €์žฅํ•  ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์ž„์‹œ ํŒŒ์ผ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ~๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ: ~/Downloads, ~/Desktop, /sdcard/Download (Android)"},kind:"string",scope:"both",admin:!0,appliesTo:{en:"Applies to browser.enabled.",ko:"browser.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"computer.display",category:"tools",group:"Computer",label:{en:"Computer Display",ko:"์ปดํ“จํ„ฐ ๋””์Šคํ”Œ๋ ˆ์ด"},description:{en:"Composite all displays or select a native display id",ko:"๋ชจ๋“  ๋””์Šคํ”Œ๋ ˆ์ด๋ฅผ ํ•ฉ์„ฑํ•˜๊ฑฐ๋‚˜ ๋„ค์ดํ‹ฐ๋ธŒ ๋””์Šคํ”Œ๋ ˆ์ด id๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค."},kind:"string",scope:"both",defaultValue:"all",admin:!0,confirmation:!0,appliesTo:{en:"Applies to computer.enabled.",ko:"computer.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"computer.maxHeight",category:"tools",group:"Computer",label:{en:"Computer Screenshot Height",ko:"์ปดํ“จํ„ฐ ์Šคํฌ๋ฆฐ์ƒท ๋†’์ด"},description:{en:"Maximum composite screenshot height in pixels",ko:"ํ•ฉ์„ฑ ์Šคํฌ๋ฆฐ์ƒท์˜ ์ตœ๋Œ€ ๋†’์ด(ํ”ฝ์…€)"},kind:"number",scope:"both",defaultValue:2400,integer:!0,admin:!0,appliesTo:{en:"Applies to computer.enabled.",ko:"computer.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"computer.maxWidth",category:"tools",group:"Computer",label:{en:"Computer Screenshot Width",ko:"์ปดํ“จํ„ฐ ์Šคํฌ๋ฆฐ์ƒท ๋„ˆ๋น„"},description:{en:"Maximum composite screenshot width in pixels",ko:"ํ•ฉ์„ฑ ์Šคํฌ๋ฆฐ์ƒท์˜ ์ตœ๋Œ€ ๋„ˆ๋น„(ํ”ฝ์…€)"},kind:"number",scope:"both",defaultValue:3840,integer:!0,admin:!0,appliesTo:{en:"Applies to computer.enabled.",ko:"computer.enabled์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"edit.autoRepair.enabled",category:"tools",group:"Editing",label:{en:"Auto-Repair Parse Regressions",ko:"๊ตฌ๋ฌธ ๋ถ„์„ ์˜ค๋ฅ˜ ์ž๋™ ๋ณต๊ตฌ"},description:{en:"When an edit breaks a file's AST parse, ask the smol model to fix the broken region (validated by re-parse; falls back to a warning)",ko:"ํŽธ์ง‘์œผ๋กœ ํŒŒ์ผ์˜ AST ๊ตฌ๋ฌธ ๋ถ„์„์ด ๊นจ์ง€๋ฉด smol ๋ชจ๋ธ์— ์†์ƒ๋œ ์˜์—ญ์˜ ์ˆ˜์ •์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค(์žฌ๋ถ„์„์œผ๋กœ ๊ฒ€์ฆํ•˜๋ฉฐ, ์‹คํŒจ ์‹œ ๊ฒฝ๊ณ ๋กœ ๋Œ€์ฒด)."},kind:"boolean",scope:"both",defaultValue:!1},{path:"edit.blockAutoGenerated",category:"tools",group:"Editing",label:{en:"Block Auto-Generated Files",ko:"์ž๋™ ์ƒ์„ฑ ํŒŒ์ผ ์ฐจ๋‹จ"},description:{en:"Prevent editing of files that appear to be auto-generated (protoc, sqlc, swagger, etc.)",ko:"์ž๋™ ์ƒ์„ฑ๋œ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋Š” ํŒŒ์ผ(protoc, sqlc, swagger ๋“ฑ)์˜ ํŽธ์ง‘์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"edit.enforceSeenLines",category:"tools",group:"Editing",label:{en:"Enforce Seen-Line Guard",ko:"ํ™•์ธ๋œ ์ค„ ๋ณดํ˜ธ ์ ์šฉ"},description:{en:"Reject edits anchored on lines a prior read/search never displayed in full",ko:"์ด์ „ ์ฝ๊ธฐ/๊ฒ€์ƒ‰์—์„œ ์ „์ฒด๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์€ ์ค„์„ ๊ธฐ์ค€์œผ๋กœ ํ•œ ํŽธ์ง‘์„ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"edit.fuzzyMatch",category:"tools",group:"Editing",label:{en:"Fuzzy Match",ko:"ํผ์ง€ ์ผ์น˜"},description:{en:"Accept high-confidence fuzzy matches for whitespace differences",ko:"๊ณต๋ฐฑ ์ฐจ์ด์— ๋Œ€ํ•ด ์‹ ๋ขฐ๋„๊ฐ€ ๋†’์€ ํผ์ง€ ์ผ์น˜๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"edit.fuzzyThreshold",category:"tools",group:"Editing",label:{en:"Fuzzy Match Threshold",ko:"ํผ์ง€ ์ผ์น˜ ์ž„๊ณ„๊ฐ’"},description:{en:"Similarity threshold (0-1) for accepting fuzzy matches",ko:"ํผ์ง€ ์ผ์น˜๋ฅผ ํ—ˆ์šฉํ•  ์œ ์‚ฌ๋„ ์ž„๊ณ„๊ฐ’(0-1)"},kind:"number",scope:"both",defaultValue:.95,integer:!1,min:0,max:1,step:.01},{path:"edit.mode",category:"tools",group:"Editing",label:{en:"Edit Mode",ko:"ํŽธ์ง‘ ๋ชจ๋“œ"},description:{en:"Select the edit tool variant (replace, patch, hashline, or apply_patch)",ko:"ํŽธ์ง‘ ๋„๊ตฌ ๋ณ€ํ˜•์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค(replace, patch, hashline ๋˜๋Š” apply_patch)."},kind:"enum",scope:"both",defaultValue:"hashline",choices:["apply_patch","hashline","patch","replace","sloppy"]},{path:"edit.streamingAbort",category:"tools",group:"Editing",label:{en:"Abort on Failed Preview",ko:"๋ฏธ๋ฆฌ๋ณด๊ธฐ ์‹คํŒจ ์‹œ ์ค‘๋‹จ"},description:{en:"Abort streaming edit tool calls when patch preview fails",ko:"ํŒจ์น˜ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์ŠคํŠธ๋ฆฌ๋ฐ ์ค‘์ธ edit ๋„๊ตฌ ํ˜ธ์ถœ์„ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"edit.recoverInlineEdits",category:"tools",group:"Editing",label:{en:"Recover Inline Edit Payloads",ko:"์ธ๋ผ์ธ ํŽธ์ง‘ ๋‚ด์šฉ ๋ณต๊ตฌ"},description:{en:"Execute edit payloads the model emits as plain text by converting them into edit tool calls",ko:"๋ชจ๋ธ์ด ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋กœ ์ถœ๋ ฅํ•œ ํŽธ์ง‘ ๋‚ด์šฉ์„ edit ๋„๊ตฌ ํ˜ธ์ถœ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,appliesTo:{en:"Applies when edit.mode is sloppy.",ko:"edit.mode๊ฐ€ sloppy์ธ ๊ฒฝ์šฐ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"eval.autoBackground.enabled",category:"tools",group:"Eval & Runtimes",label:{en:"Eval Auto-Background",ko:"Eval ์ž๋™ ๋ฐฑ๊ทธ๋ผ์šด๋“œ"},description:{en:"Automatically background long-running eval cells and deliver the result later",ko:"์˜ค๋ž˜ ์‹คํ–‰๋˜๋Š” eval ์…€์„ ์ž๋™์œผ๋กœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์ „ํ™˜ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋‚˜์ค‘์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1,admin:!0,appliesTo:{en:"Applies to the matching eval backend.",ko:"ํ•ด๋‹น eval ๋ฐฑ์—”๋“œ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"eval.js",category:"tools",group:"Eval & Runtimes",label:{en:"JavaScript Eval Backend",ko:"JavaScript Eval ๋ฐฑ์—”๋“œ"},description:{en:"Allow the eval tool to dispatch JavaScript cells to the in-process runtime",ko:"eval ๋„๊ตฌ๊ฐ€ JavaScript ์…€์„ ์ธํ”„๋กœ์„ธ์Šค ๋Ÿฐํƒ€์ž„์œผ๋กœ ์ „๋‹ฌํ•˜๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,admin:!0,confirmation:!0},{path:"eval.py",category:"tools",group:"Eval & Runtimes",label:{en:"Python Eval Backend",ko:"Python Eval ๋ฐฑ์—”๋“œ"},description:{en:"Allow the eval tool to dispatch Python cells to the IPython kernel",ko:"eval ๋„๊ตฌ๊ฐ€ Python ์…€์„ IPython ์ปค๋„๋กœ ์ „๋‹ฌํ•˜๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,admin:!0,confirmation:!0},{path:"eval.tools.enabled",category:"tools",group:"Eval & Runtimes",label:{en:"Eval-Defined Tools",ko:"Eval ์ •์˜ ๋„๊ตฌ"},description:{en:"Let eval cells define tools (@tool in Python, tool(fn) in JS) that task, agent(), and workpool() subagents can call",ko:"eval ์…€์ด task, agent(), workpool() ํ•˜์œ„ ์—์ด์ „ํŠธ์—์„œ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ(Python์˜ @tool, JS์˜ tool(fn))๋ฅผ ์ •์˜ํ•˜๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,admin:!0,appliesTo:{en:"Applies to the matching eval backend.",ko:"ํ•ด๋‹น eval ๋ฐฑ์—”๋“œ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"eval.workpool.freshAgents",category:"tools",group:"Eval & Runtimes",label:{en:"Fresh Workpool Agents",ko:"์ƒˆ Workpool ์—์ด์ „ํŠธ"},description:{en:"Spawn a new subagent for every workpool item instead of reusing workers or batching queued items",ko:"์›Œ์ปค๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋Œ€๊ธฐ ํ•ญ๋ชฉ์„ ์ผ๊ด„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋Œ€์‹  ๊ฐ workpool ํ•ญ๋ชฉ๋งˆ๋‹ค ์ƒˆ ํ•˜์œ„ ์—์ด์ „ํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1,admin:!0,appliesTo:{en:"Applies to the matching eval backend.",ko:"ํ•ด๋‹น eval ๋ฐฑ์—”๋“œ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"python.interpreter",category:"tools",group:"Eval & Runtimes",label:{en:"Python Interpreter",ko:"Python ์ธํ„ฐํ”„๋ฆฌํ„ฐ"},description:{en:"Optional path to an exact Python executable. When set, automatic Python runtime discovery is skipped.",ko:"์ •ํ™•ํ•œ Python ์‹คํ–‰ ํŒŒ์ผ์˜ ์„ ํƒ์  ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ์„ค์ •ํ•˜๋ฉด Python ๋Ÿฐํƒ€์ž„ ์ž๋™ ๊ฒ€์ƒ‰์„ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค."},kind:"string",scope:"both",defaultValue:"",admin:!0,confirmation:!0},{path:"python.kernelMode",category:"tools",group:"Eval & Runtimes",label:{en:"Python Kernel Mode",ko:"Python ์ปค๋„ ๋ชจ๋“œ"},description:{en:"Keep the IPython kernel alive across eval calls or start fresh each time",ko:"eval ํ˜ธ์ถœ ๊ฐ„์— IPython ์ปค๋„์„ ์œ ์ง€ํ•˜๊ฑฐ๋‚˜ ๋งค๋ฒˆ ์ƒˆ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"session",choices:["session","per-call"]},{path:"eval.autoBackground.thresholdMs",category:"tools",group:"Eval",label:{en:"Threshold Ms",ko:"์ž„๊ณ„๊ฐ’ Ms"},description:{en:"Threshold in milliseconds for automatically backgrounding evaluation.",ko:"ํ‰๊ฐ€๋ฅผ ์ž๋™์œผ๋กœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ž„๊ณ„๊ฐ’(๋ฐ€๋ฆฌ์ดˆ)์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:6e4,integer:!0,admin:!0,appliesTo:{en:"Applies to the matching eval backend.",ko:"ํ•ด๋‹น eval ๋ฐฑ์—”๋“œ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"exa.enabled",category:"tools",group:"Services",label:{en:"Exa",ko:"Exa"},description:{en:"Enable the Exa web search provider",ko:"Exa ์›น ๊ฒ€์ƒ‰ ์ œ๊ณต์ž๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"exa.searchDelayMs",category:"tools",group:"Services",label:{en:"Exa Search Delay",ko:"Exa ๊ฒ€์ƒ‰ ์ง€์—ฐ"},description:{en:"Minimum delay between Exa web search requests in milliseconds; set 0 to disable pacing",ko:"Exa ์›น ๊ฒ€์ƒ‰ ์š”์ฒญ ์‚ฌ์ด์˜ ์ตœ์†Œ ์ง€์—ฐ ์‹œ๊ฐ„(๋ฐ€๋ฆฌ์ดˆ)์ž…๋‹ˆ๋‹ค. ์†๋„ ์ œํ•œ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด 0์œผ๋กœ ์„ค์ •ํ•˜์„ธ์š”."},kind:"number",scope:"both",defaultValue:1e3,integer:!0},{path:"searxng.endpoint",category:"tools",group:"Services",label:{en:"SearXNG Endpoint",ko:"SearXNG ์—”๋“œํฌ์ธํŠธ"},description:{en:"Base URL of a self-hosted SearXNG instance used for web search",ko:"์›น ๊ฒ€์ƒ‰์— ์‚ฌ์šฉํ•  ์ž์ฒด ํ˜ธ์ŠคํŒ… SearXNG ์ธ์Šคํ„ด์Šค์˜ ๊ธฐ๋ณธ URL์ž…๋‹ˆ๋‹ค."},kind:"string",scope:"global",admin:!0,confirmation:!0},{path:"lsp.diagnosticsDeduplicate",category:"tools",group:"LSP",label:{en:"Deduplicate Diagnostics",ko:"์ง„๋‹จ ์ค‘๋ณต ์ œ๊ฑฐ"},description:{en:"Suppress post-edit LSP diagnostics already shown for a file; only surface new or changed ones",ko:"ํŒŒ์ผ์— ๋Œ€ํ•ด ์ด๋ฏธ ํ‘œ์‹œ๋œ ํŽธ์ง‘ ํ›„ LSP ์ง„๋‹จ์„ ์ˆจ๊ธฐ๊ณ  ์ƒˆ ํ•ญ๋ชฉ์ด๋‚˜ ๋ณ€๊ฒฝ๋œ ํ•ญ๋ชฉ๋งŒ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"lsp.diagnosticsOnEdit",category:"tools",group:"LSP",label:{en:"Diagnostics on Edit",ko:"ํŽธ์ง‘ ์‹œ ์ง„๋‹จ"},description:{en:"Return LSP diagnostics after editing code files",ko:"์ฝ”๋“œ ํŒŒ์ผ์„ ํŽธ์ง‘ํ•œ ํ›„ LSP ์ง„๋‹จ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"lsp.diagnosticsOnWrite",category:"tools",group:"LSP",label:{en:"Diagnostics on Write",ko:"์“ฐ๊ธฐ ์‹œ ์ง„๋‹จ"},description:{en:"Return LSP diagnostics after writing code files",ko:"์ฝ”๋“œ ํŒŒ์ผ์„ ์“ด ํ›„ LSP ์ง„๋‹จ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"lsp.enabled",category:"tools",group:"LSP",label:{en:"LSP",ko:"LSP"},description:{en:"Enable the lsp tool for code intelligence (definitions, references, diagnostics, rename)",ko:"์ฝ”๋“œ ์ธํ…”๋ฆฌ์ „์Šค(์ •์˜, ์ฐธ์กฐ, ์ง„๋‹จ, ์ด๋ฆ„ ๋ณ€๊ฒฝ)๋ฅผ ์œ„ํ•œ lsp ๋„๊ตฌ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"lsp.formatOnWrite",category:"tools",group:"LSP",label:{en:"Format on Write",ko:"์“ฐ๊ธฐ ์‹œ ํฌ๋งท"},description:{en:"Automatically format code files using LSP after writing",ko:"์ฝ”๋“œ ํŒŒ์ผ์„ ์“ด ํ›„ LSP๋ฅผ ์‚ฌ์šฉํ•ด ์ž๋™์œผ๋กœ ํฌ๋งทํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"lsp.lazy",category:"tools",group:"LSP",label:{en:"Lazy LSP Startup",ko:"์ง€์—ฐ LSP ์‹œ์ž‘"},description:{en:"Start language servers on first use (lsp tool or editing a matching file type) instead of at session startup",ko:"์„ธ์…˜ ์‹œ์ž‘ ์‹œ๊ฐ€ ์•„๋‹ˆ๋ผ ์ฒ˜์Œ ์‚ฌ์šฉํ•  ๋•Œ(lsp ๋„๊ตฌ ์‚ฌ์šฉ ๋˜๋Š” ์ผ์น˜ํ•˜๋Š” ํŒŒ์ผ ํ˜•์‹ ํŽธ์ง‘ ์‹œ) ์–ธ์–ด ์„œ๋ฒ„๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"lsp.shared",category:"tools",group:"LSP",label:{en:"Shared Language Servers",ko:"๊ณต์œ  ์–ธ์–ด ์„œ๋ฒ„"},description:{en:"Share one language server per project across omp instances via the daemon broker (falls back to private servers when unavailable)",ko:"๋ฐ๋ชฌ ๋ธŒ๋กœ์ปค๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ omp ์ธ์Šคํ„ด์Šค๊ฐ€ ํ”„๋กœ์ ํŠธ๋‹น ํ•˜๋‚˜์˜ ์–ธ์–ด ์„œ๋ฒ„๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค(์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฉด ์ „์šฉ ์„œ๋ฒ„๋กœ ๋Œ€์ฒด)."},kind:"boolean",scope:"both",defaultValue:!0},{path:"read.defaultLimit",category:"tools",group:"Reading",label:{en:"Default Read Limit",ko:"๊ธฐ๋ณธ ์ฝ๊ธฐ ํ•œ๋„"},description:{en:"Default number of lines returned when agent calls read without a limit",ko:"์—์ด์ „ํŠธ๊ฐ€ ํ•œ๋„๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ  read๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๋ฐ˜ํ™˜ํ•  ๊ธฐ๋ณธ ์ค„ ์ˆ˜์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:300,integer:!0},{path:"read.summarize.enabled",category:"tools",group:"Read Summaries",label:{en:"Read Summaries",ko:"์ฝ๊ธฐ ์š”์•ฝ"},description:{en:"Return structural code summaries when read is called without an explicit selector",ko:"๋ช…์‹œ์ ์ธ ์„ ํƒ์ž ์—†์ด read๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ๊ตฌ์กฐํ™”๋œ ์ฝ”๋“œ ์š”์•ฝ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"read.summarize.minBodyLines",category:"tools",group:"Read Summaries",label:{en:"Read Summary Body Lines",ko:"์ฝ๊ธฐ ์š”์•ฝ ๋ณธ๋ฌธ ์ค„ ์ˆ˜"},description:{en:"Minimum multiline body or literal length before read summaries collapse it",ko:"์ฝ๊ธฐ ์š”์•ฝ์—์„œ ์—ฌ๋Ÿฌ ์ค„ ๋ณธ๋ฌธ ๋˜๋Š” ๋ฆฌํ„ฐ๋Ÿด์„ ์ ‘๊ธฐ ์œ„ํ•œ ์ตœ์†Œ ๊ธธ์ด์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:4,integer:!0},{path:"read.summarize.minCommentLines",category:"tools",group:"Read Summaries",label:{en:"Read Summary Comment Lines",ko:"์ฝ๊ธฐ ์š”์•ฝ ์ฃผ์„ ์ค„ ์ˆ˜"},description:{en:"Minimum multiline block comment length before read summaries collapse it",ko:"์ฝ๊ธฐ ์š”์•ฝ์—์„œ ์—ฌ๋Ÿฌ ์ค„ ๋ธ”๋ก ์ฃผ์„์„ ์ ‘๊ธฐ ์œ„ํ•œ ์ตœ์†Œ ๊ธธ์ด์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:6,integer:!0},{path:"read.summarize.minTotalLines",category:"tools",group:"Read Summaries",label:{en:"Read Summary Minimum File Length",ko:"์ฝ๊ธฐ ์š”์•ฝ ์ตœ์†Œ ํŒŒ์ผ ๊ธธ์ด"},description:{en:"Files with fewer total lines are read verbatim instead of structurally summarized",ko:"์ „์ฒด ์ค„ ์ˆ˜๊ฐ€ ์ด ๊ฐ’๋ณด๋‹ค ์ ์€ ํŒŒ์ผ์€ ๊ตฌ์กฐ์ ์œผ๋กœ ์š”์•ฝํ•˜์ง€ ์•Š๊ณ  ์›๋ฌธ ๊ทธ๋Œ€๋กœ ์ฝ์Šต๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:100,integer:!0},{path:"read.summarize.prose",category:"tools",group:"Read Summaries",label:{en:"Prose Summaries",ko:"๋ณธ๋ฌธ ์š”์•ฝ"},description:{en:"Return structural summaries for Markdown and plain text reads",ko:"Markdown ๋ฐ ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋ฅผ ์ฝ์„ ๋•Œ ๊ตฌ์กฐํ™”๋œ ์š”์•ฝ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"read.summarize.unfoldLimit",category:"tools",group:"Read Summaries",label:{en:"Read Summary Unfold Ceiling",ko:"์ฝ๊ธฐ ์š”์•ฝ ํŽผ์น˜๊ธฐ ์ƒํ•œ"},description:{en:"Hard ceiling on summary size while BFS-unfolding. An unfold whose revealed lines would exceed this is skipped (that span stays folded) and unfolding continues with the remaining spans.",ko:"BFS ๋ฐฉ์‹์œผ๋กœ ํŽผ์น  ๋•Œ์˜ ์š”์•ฝ ํฌ๊ธฐ ์ƒํ•œ์ž…๋‹ˆ๋‹ค. ํŽผ์ณ์„œ ํ‘œ์‹œ๋˜๋Š” ์ค„์ด ์ด ๊ฐ’์„ ์ดˆ๊ณผํ•˜๋ฉด ํ•ด๋‹น ๋ฒ”์œ„๋Š” ์ ‘ํžŒ ์ƒํƒœ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ณ  ๋‚˜๋จธ์ง€ ๋ฒ”์œ„๋ฅผ ๊ณ„์† ํŽผ์นฉ๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:100,integer:!0},{path:"read.summarize.unfoldUntil",category:"tools",group:"Read Summaries",label:{en:"Read Summary Unfold Target",ko:"์ฝ๊ธฐ ์š”์•ฝ ํŽผ์น˜๊ธฐ ๋ชฉํ‘œ"},description:{en:"BFS-unfold elidable spans until the summary is at least this many visible lines. 0 keeps only the outermost elisions.",ko:"์š”์•ฝ์˜ ํ‘œ์‹œ ์ค„ ์ˆ˜๊ฐ€ ์ตœ์†Œํ•œ ์ด ๊ฐ’์— ๋„๋‹ฌํ•  ๋•Œ๊นŒ์ง€ ์ƒ๋žต ๊ฐ€๋Šฅํ•œ ๋ฒ”์œ„๋ฅผ BFS ๋ฐฉ์‹์œผ๋กœ ํŽผ์นฉ๋‹ˆ๋‹ค. 0์€ ๊ฐ€์žฅ ๋ฐ”๊นฅ์ชฝ ์ƒ๋žต๋งŒ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:50,integer:!0},{path:"searxng.basicPassword",category:"tools",group:"Searxng",label:{en:"Basic Password",ko:"๊ธฐ๋ณธ ์ธ์ฆ ๋น„๋ฐ€๋ฒˆํ˜ธ"},description:{en:"Configures the password credential for SearXNG basic authentication.",ko:"SearXNG ๊ธฐ๋ณธ ์ธ์ฆ์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž๊ฒฉ ์ฆ๋ช…์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค."},kind:"string",scope:"global",secret:!0,admin:!0,confirmation:!0},{path:"searxng.basicUsername",category:"tools",group:"Searxng",label:{en:"Basic Username",ko:"๊ธฐ๋ณธ ์ธ์ฆ ์‚ฌ์šฉ์ž ์ด๋ฆ„"},description:{en:"Configures the username credential for SearXNG basic authentication.",ko:"SearXNG ๊ธฐ๋ณธ ์ธ์ฆ์˜ ์‚ฌ์šฉ์ž ์ด๋ฆ„ ์ž๊ฒฉ ์ฆ๋ช…์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค."},kind:"string",scope:"both"},{path:"searxng.categories",category:"tools",group:"Searxng",label:{en:"Categories",ko:"์นดํ…Œ๊ณ ๋ฆฌ"},description:{en:"Sets the SearXNG search categories.",ko:"SearXNG ๊ฒ€์ƒ‰ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค."},kind:"string",scope:"both"},{path:"searxng.engines",category:"tools",group:"Searxng",label:{en:"Engines",ko:"๊ฒ€์ƒ‰ ์—”์ง„"},description:{en:"Sets the SearXNG search engines.",ko:"SearXNG ๊ฒ€์ƒ‰ ์—”์ง„์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค."},kind:"string",scope:"both"},{path:"searxng.language",category:"tools",group:"Searxng",label:{en:"Language",ko:"์–ธ์–ด"},description:{en:"Sets the SearXNG search language.",ko:"SearXNG ๊ฒ€์ƒ‰ ์–ธ์–ด๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค."},kind:"string",scope:"both"},{path:"searxng.safesearch",category:"tools",group:"Searxng",label:{en:"Safe Search",ko:"์•ˆ์ „ ๊ฒ€์ƒ‰"},description:{en:"SearXNG safe-search level: 0 is off, 1 is moderate, and 2 is strict.",ko:"SearXNG ์•ˆ์ „ ๊ฒ€์ƒ‰ ์ˆ˜์ค€์ž…๋‹ˆ๋‹ค. 0์€ ๋„๊ธฐ, 1์€ ๋ณดํ†ต, 2๋Š” ์—„๊ฒฉ์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",integer:!0,min:0,max:2,step:1},{path:"searxng.token",category:"tools",group:"Searxng",label:{en:"Token",ko:"ํ† ํฐ"},description:{en:"Configures the SearXNG token credential.",ko:"SearXNG ํ† ํฐ ์ž๊ฒฉ ์ฆ๋ช…์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค."},kind:"string",scope:"global",secret:!0,admin:!0,confirmation:!0},{path:"shellMinimizer.except",category:"tools",group:"Shell Minimizer",label:{en:"Except",ko:"์ œ์™ธ ํ•ญ๋ชฉ"},description:{en:"Sets the shell minimizer exception list.",ko:"์…ธ ์ตœ์†Œํ™” ๋„๊ตฌ์˜ ์˜ˆ์™ธ ๋ชฉ๋ก์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค."},kind:"array",scope:"both",defaultValue:[],items:"string",admin:!0},{path:"shellMinimizer.maxCaptureBytes",category:"tools",group:"Shell Minimizer",label:{en:"Max Capture Bytes",ko:"์ตœ๋Œ€ ์บก์ฒ˜ ๋ฐ”์ดํŠธ"},description:{en:"Sets the maximum shell minimizer capture size in bytes.",ko:"์…ธ ์ตœ์†Œํ™” ๋„๊ตฌ์˜ ์ตœ๋Œ€ ์บก์ฒ˜ ํฌ๊ธฐ๋ฅผ ๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:4194304,integer:!0,admin:!0},{path:"shellMinimizer.only",category:"tools",group:"Shell Minimizer",label:{en:"Only",ko:"์ ์šฉ ๋Œ€์ƒ"},description:{en:"Sets the shell minimizer inclusion-only list.",ko:"์…ธ ์ตœ์†Œํ™” ๋„๊ตฌ์˜ ์ „์šฉ ํฌํ•จ ๋ชฉ๋ก์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค."},kind:"array",scope:"both",defaultValue:[],items:"string",admin:!0},{path:"skills.customDirectories",category:"tools",group:"Skills",label:{en:"Custom Directories",ko:"์‚ฌ์šฉ์ž ์ง€์ • ๋””๋ ‰ํ„ฐ๋ฆฌ"},description:{en:"Sets the custom skill directories.",ko:"์‚ฌ์šฉ์ž ์ง€์ • ์Šคํ‚ฌ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค."},kind:"array",scope:"both",defaultValue:[],items:"string"},{path:"skills.enableAgentsProject",category:"tools",group:"Skills",label:{en:"Enable Agents Project",ko:"Agents ํ”„๋กœ์ ํŠธ ํ™œ์„ฑํ™”"},description:{en:"Enables the Agents project skill source.",ko:"Agents ํ”„๋กœ์ ํŠธ ์Šคํ‚ฌ ์†Œ์Šค๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"skills.enableAgentsUser",category:"tools",group:"Skills",label:{en:"Enable Agents User",ko:"Agents ์‚ฌ์šฉ์ž ํ™œ์„ฑํ™”"},description:{en:"Enables the Agents user skill source.",ko:"Agents ์‚ฌ์šฉ์ž ์Šคํ‚ฌ ์†Œ์Šค๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"skills.enableClaudeProject",category:"tools",group:"Skills",label:{en:"Enable Claude Project",ko:"Claude ํ”„๋กœ์ ํŠธ ํ™œ์„ฑํ™”"},description:{en:"Enables the Claude project skill source.",ko:"Claude ํ”„๋กœ์ ํŠธ ์Šคํ‚ฌ ์†Œ์Šค๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"skills.enableClaudeUser",category:"tools",group:"Skills",label:{en:"Enable Claude User",ko:"Claude ์‚ฌ์šฉ์ž ํ™œ์„ฑํ™”"},description:{en:"Enables the Claude user skill source.",ko:"Claude ์‚ฌ์šฉ์ž ์Šคํ‚ฌ ์†Œ์Šค๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"skills.enableCodexUser",category:"tools",group:"Skills",label:{en:"Enable Codex User",ko:"Codex ์‚ฌ์šฉ์ž ํ™œ์„ฑํ™”"},description:{en:"Enables the Codex user skill source.",ko:"Codex ์‚ฌ์šฉ์ž ์Šคํ‚ฌ ์†Œ์Šค๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"skills.enablePiProject",category:"tools",group:"Skills",label:{en:"Enable Pi Project",ko:"Pi ํ”„๋กœ์ ํŠธ ํ™œ์„ฑํ™”"},description:{en:"Enables the Pi project skill source.",ko:"Pi ํ”„๋กœ์ ํŠธ ์Šคํ‚ฌ ์†Œ์Šค๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"skills.enablePiUser",category:"tools",group:"Skills",label:{en:"Enable Pi User",ko:"Pi ์‚ฌ์šฉ์ž ํ™œ์„ฑํ™”"},description:{en:"Enables the Pi user skill source.",ko:"Pi ์‚ฌ์šฉ์ž ์Šคํ‚ฌ ์†Œ์Šค๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"skills.enabled",category:"tools",group:"Skills",label:{en:"Enabled",ko:"ํ™œ์„ฑํ™”"},description:{en:"Enables skill support.",ko:"์Šคํ‚ฌ ์ง€์›์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"skills.ignoredSkills",category:"tools",group:"Skills",label:{en:"Ignored Skills",ko:"๋ฌด์‹œํ•  ์Šคํ‚ฌ"},description:{en:"Sets the list of ignored skills.",ko:"๋ฌด์‹œํ•  ์Šคํ‚ฌ ๋ชฉ๋ก์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค."},kind:"array",scope:"both",defaultValue:[],items:"string"},{path:"skills.includeSkills",category:"tools",group:"Skills",label:{en:"Include Skills",ko:"ํฌํ•จํ•  ์Šคํ‚ฌ"},description:{en:"Sets the list of included skills.",ko:"ํฌํ•จํ•  ์Šคํ‚ฌ ๋ชฉ๋ก์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค."},kind:"array",scope:"both",defaultValue:[],items:"string"},{path:"skills.enableSkillCommands",category:"tools",group:"Commands & Skills",label:{en:"Skill Commands",ko:"์Šคํ‚ฌ ๋ช…๋ น์–ด"},description:{en:"Register skills as /skill:name commands",ko:"์Šคํ‚ฌ์„ /skill:name ๋ช…๋ น์–ด๋กœ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"tools.approval",category:"tools",group:"Approvals",label:{en:"Tool Approval Policies",ko:"๋„๊ตฌ ์Šน์ธ ์ •์ฑ…"},description:{en:"Per-tool approval policies. Set to 'allow' to auto-approve, 'prompt' to require confirmation, or 'deny' to block. Overrides are honored in every approval mode.",ko:"๋„๊ตฌ๋ณ„ ์Šน์ธ ์ •์ฑ…์ž…๋‹ˆ๋‹ค. ์ž๋™ ์Šน์ธํ•˜๋ ค๋ฉด 'allow', ํ™•์ธ์„ ์š”๊ตฌํ•˜๋ ค๋ฉด 'prompt', ์ฐจ๋‹จํ•˜๋ ค๋ฉด 'deny'๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์žฌ์ •์˜๋Š” ๋ชจ๋“  ์Šน์ธ ๋ชจ๋“œ์—์„œ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."},kind:"object",scope:"both",defaultValue:{},recordValues:"approval",admin:!0,confirmation:!0},{path:"tools.approvalMode",category:"tools",group:"Approvals",label:{en:"Tool Approval",ko:"๋„๊ตฌ ์Šน์ธ"},description:{en:"Default approval behavior for tool calls. 'Always ask' auto-approves read-only tools only. 'Write' auto-approves read and workspace-write tools. 'Yolo' auto-approves all tiers; user policy may still prompt or block.",ko:"๋„๊ตฌ ํ˜ธ์ถœ์˜ ๊ธฐ๋ณธ ์Šน์ธ ๋™์ž‘์ž…๋‹ˆ๋‹ค. 'Always ask'๋Š” ์ฝ๊ธฐ ์ „์šฉ ๋„๊ตฌ๋งŒ ์ž๋™ ์Šน์ธํ•ฉ๋‹ˆ๋‹ค. 'Write'๋Š” ์ฝ๊ธฐ ๋ฐ ์›Œํฌ์ŠคํŽ˜์ด์Šค ์“ฐ๊ธฐ ๋„๊ตฌ๋ฅผ ์ž๋™ ์Šน์ธํ•ฉ๋‹ˆ๋‹ค. 'Yolo'๋Š” ๋ชจ๋“  ํ‹ฐ์–ด๋ฅผ ์ž๋™ ์Šน์ธํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž ์ •์ฑ…์— ๋”ฐ๋ผ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"yolo",choices:["always-ask","write","yolo"],admin:!0,confirmation:!0},{path:"tools.artifactHeadBytes",category:"tools",group:"Output Limits",label:{en:"Artifact Head Size (KB)",ko:"์•„ํ‹ฐํŒฉํŠธ ์•ž๋ถ€๋ถ„ ํฌ๊ธฐ(KB)"},description:{en:"Amount of head content kept inline alongside the tail when output spills to artifact (middle elision). 0 disables โ€” keep tail only.",ko:"์ถœ๋ ฅ์ด ์•„ํ‹ฐํŒฉํŠธ๋กœ ๋„˜์ณ ์ €์žฅ๋  ๋•Œ ๋๋ถ€๋ถ„๊ณผ ํ•จ๊ป˜ ์ธ๋ผ์ธ์œผ๋กœ ์œ ์ง€ํ•  ์•ž๋ถ€๋ถ„ ์ฝ˜ํ…์ธ ์˜ ์–‘์ž…๋‹ˆ๋‹ค(์ค‘๊ฐ„ ์ƒ๋žต). 0์ด๋ฉด ๋น„ํ™œ์„ฑํ™”๋˜์–ด ๋๋ถ€๋ถ„๋งŒ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:20,integer:!0},{path:"tools.artifactSpillThreshold",category:"tools",group:"Output Limits",label:{en:"Artifact Spill Threshold (KB)",ko:"์•„ํ‹ฐํŒฉํŠธ ๋ถ„๋ฆฌ ์ €์žฅ ์ž„๊ณ„๊ฐ’(KB)"},description:{en:"Tool output above this size is saved as an artifact; tail is kept inline",ko:"์ด ํฌ๊ธฐ๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ๋„๊ตฌ ์ถœ๋ ฅ์€ ์•„ํ‹ฐํŒฉํŠธ๋กœ ์ €์žฅํ•˜๊ณ  ๋๋ถ€๋ถ„์€ ์ธ๋ผ์ธ์œผ๋กœ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:50,integer:!0},{path:"tools.artifactTailBytes",category:"tools",group:"Output Limits",label:{en:"Artifact Tail Size (KB)",ko:"์•„ํ‹ฐํŒฉํŠธ ๋๋ถ€๋ถ„ ํฌ๊ธฐ(KB)"},description:{en:"Amount of tail content kept inline when output spills to artifact",ko:"์ถœ๋ ฅ์ด ์•„ํ‹ฐํŒฉํŠธ๋กœ ๋„˜์ณ ์ €์žฅ๋  ๋•Œ ์ธ๋ผ์ธ์œผ๋กœ ์œ ์ง€ํ•  ๋๋ถ€๋ถ„ ์ฝ˜ํ…์ธ ์˜ ์–‘"},kind:"number",scope:"both",defaultValue:20,integer:!0},{path:"tools.outputMaxColumns",category:"tools",group:"Output Limits",label:{en:"Output Column Cap",ko:"์ถœ๋ ฅ ์—ด ์ƒํ•œ"},description:{en:"Per-line byte cap for streaming tool outputs (bash, python, js eval) and `read`. Lines wider than this are ellipsis-truncated; remaining bytes up to the next newline are dropped. 0 disables.",ko:"์ŠคํŠธ๋ฆฌ๋ฐ ๋„๊ตฌ ์ถœ๋ ฅ(bash, python, js eval)๊ณผ `read`์˜ ์ค„๋‹น ๋ฐ”์ดํŠธ ์ƒํ•œ์ž…๋‹ˆ๋‹ค. ์ด๋ณด๋‹ค ๊ธด ์ค„์€ ๋ง์ค„์ž„ํ‘œ๋กœ ์ž˜๋ฆฌ๊ณ  ๋‹ค์Œ ์ค„๋ฐ”๊ฟˆ๊นŒ์ง€ ๋‚จ์€ ๋ฐ”์ดํŠธ๋Š” ๋ฒ„๋ ค์ง‘๋‹ˆ๋‹ค. 0์€ ๋น„ํ™œ์„ฑํ™”์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:768,integer:!0},{path:"tools.artifactTailLines",category:"tools",group:"Output Limits",label:{en:"Artifact Tail Lines",ko:"์•„ํ‹ฐํŒฉํŠธ ๋๋ถ€๋ถ„ ์ค„ ์ˆ˜"},description:{en:"Maximum lines of tail content kept inline when output spills to artifact",ko:"์ถœ๋ ฅ์ด ์•„ํ‹ฐํŒฉํŠธ๋กœ ๋„˜์–ด๊ฐˆ ๋•Œ ์ธ๋ผ์ธ์œผ๋กœ ์œ ์ง€ํ•  ๋๋ถ€๋ถ„์˜ ์ตœ๋Œ€ ์ค„ ์ˆ˜์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:500,integer:!0},{path:"tools.format",category:"tools",group:"Experimental",label:{en:"Tool Calling Mode",ko:"๋„๊ตฌ ํ˜ธ์ถœ ๋ชจ๋“œ"},description:{en:"Controls how tools are exposed to the model. Auto uses provider-native tool calls unless the selected model is marked as not supporting them, then falls back to the GLM owned dialect. Native forces provider-native tools; the other values force the named owned dialect. Applies on session start.",ko:"๋„๊ตฌ๊ฐ€ ๋ชจ๋ธ์— ์ œ๊ณต๋˜๋Š” ๋ฐฉ์‹์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. Auto๋Š” ์„ ํƒํ•œ ๋ชจ๋ธ์ด ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์œผ๋กœ ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š” ํ•œ ์ œ๊ณต์ž ๋„ค์ดํ‹ฐ๋ธŒ ๋„๊ตฌ ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฉด GLM ์ž์ฒด ๊ด€๋ฆฌ ๋ฐฉ์–ธ์œผ๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. Native๋Š” ์ œ๊ณต์ž ๋„ค์ดํ‹ฐ๋ธŒ ๋„๊ตฌ๋ฅผ ๊ฐ•์ œํ•˜๊ณ , ๋‹ค๋ฅธ ๊ฐ’์€ ํ•ด๋‹น ์ด๋ฆ„์˜ ์ž์ฒด ๊ด€๋ฆฌ ๋ฐฉ์–ธ์„ ๊ฐ•์ œํ•ฉ๋‹ˆ๋‹ค. ์„ธ์…˜ ์‹œ์ž‘ ์‹œ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"auto",choices:["auto","native","glm","hermes","kimi","xml","anthropic","deepseek","harmony","qwen3","gemini","gemma","minimax"]},{path:"tools.xdev",category:"tools",group:"Discovery & MCP",label:{en:"xd:// Tools",ko:"xd:// ๋„๊ตฌ"},description:{en:"Mount rarely-used (discoverable) tools under xd:// device URLs driven via read/write instead of shipping their schemas on every request. Sessions whose explicit tool list grants read but omits write mount devices through a device-only write transport (filesystem writes stay rejected). Disable to expose every enabled tool top-level.",ko:"์ž์ฃผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ ๋„๊ตฌ๋ฅผ ์š”์ฒญ๋งˆ๋‹ค ์Šคํ‚ค๋งˆ๋กœ ์ „์†กํ•˜๋Š” ๋Œ€์‹  read/write๋กœ ๊ตฌ๋™๋˜๋Š” xd:// ์žฅ์น˜ URL ์•„๋ž˜์— ๋งˆ์šดํŠธํ•ฉ๋‹ˆ๋‹ค. ๋ช…์‹œ์  ๋„๊ตฌ ๋ชฉ๋ก์—์„œ read๋Š” ํ—ˆ์šฉํ•˜์ง€๋งŒ write๋Š” ์ œ์™ธํ•œ ์„ธ์…˜์€ ์žฅ์น˜ ์ „์šฉ ์“ฐ๊ธฐ ์ „์†ก์„ ํ†ตํ•ด ์žฅ์น˜๋ฅผ ๋งˆ์šดํŠธํ•ฉ๋‹ˆ๋‹ค(ํŒŒ์ผ ์‹œ์Šคํ…œ ์“ฐ๊ธฐ๋Š” ๊ณ„์† ๊ฑฐ๋ถ€๋จ). ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ํ™œ์„ฑํ™”๋œ ๋ชจ๋“  ๋„๊ตฌ๋ฅผ ์ตœ์ƒ์œ„์— ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"tools.xdevDocs",category:"tools",group:"Discovery & MCP",label:{en:"xd:// Prompt Docs",ko:"xd:// ํ”„๋กฌํ”„ํŠธ ๋ฌธ์„œ"},description:{en:"Choose which mounted-device docs and schemas are inlined in the system prompt. Built-ins keeps core tools inline while MCP and extension tools stay on-demand.",ko:"์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ์— ์ธ๋ผ์ธ์œผ๋กœ ํฌํ•จํ•  ๋งˆ์šดํŠธ๋œ ์žฅ์น˜ ๋ฌธ์„œ์™€ ์Šคํ‚ค๋งˆ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. Built-ins๋Š” ํ•ต์‹ฌ ๋„๊ตฌ๋ฅผ ์ธ๋ผ์ธ์œผ๋กœ ์œ ์ง€ํ•˜๊ณ  MCP ๋ฐ ํ™•์žฅ ๋„๊ตฌ๋Š” ํ•„์š”ํ•  ๋•Œ๋งŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"catalog",choices:["inline","builtins","catalog"]},{path:"tools.xdevInlineDevices",category:"tools",group:"Discovery & MCP",label:{en:"xd:// Inline Devices",ko:"xd:// ์ธ๋ผ์ธ ์žฅ์น˜"},description:{en:"When xd:// Prompt Docs is Built-ins Only, inline dynamic devices whose names match these glob patterns (for example mcp__context_mode_*). Catalog Only ignores this setting.",ko:"xd:// Prompt Docs๊ฐ€ Built-ins Only์ผ ๋•Œ ์ด๋ฆ„์ด ์ด glob ํŒจํ„ด๊ณผ ์ผ์น˜ํ•˜๋Š” ๋™์  ์žฅ์น˜๋ฅผ ์ธ๋ผ์ธ์œผ๋กœ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: mcp__context_mode_*). Catalog Only์—์„œ๋Š” ์ด ์„ค์ •์„ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค."},kind:"array",scope:"both",defaultValue:[],items:"string"},{path:"ttsr.builtinRules",category:"tools",group:"Rules (TTSR)",label:{en:"Built-in Rules",ko:"๊ธฐ๋ณธ ์ œ๊ณต ๊ทœ์น™"},description:{en:"Load the default rules shipped with the agent (override individually with ttsr.disabledRules)",ko:"์—์ด์ „ํŠธ์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” ๊ธฐ๋ณธ ๊ทœ์น™์„ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค(ttsr.disabledRules๋กœ ๊ฐœ๋ณ„ ์žฌ์ •์˜)."},kind:"boolean",scope:"both",defaultValue:!0},{path:"ttsr.contextMode",category:"tools",group:"Rules (TTSR)",label:{en:"TTSR Context Mode",ko:"TTSR ์ปจํ…์ŠคํŠธ ๋ชจ๋“œ"},description:{en:"What to do with partial output when TTSR triggers",ko:"TTSR์ด ํŠธ๋ฆฌ๊ฑฐ๋  ๋•Œ ๋ถ€๋ถ„ ์ถœ๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹"},kind:"enum",scope:"both",defaultValue:"discard",choices:["discard","keep"]},{path:"ttsr.disabledRules",category:"tools",group:"Rules (TTSR)",label:{en:"Disabled Rules",ko:"๋น„ํ™œ์„ฑํ™”๋œ ๊ทœ์น™"},description:{en:"Rule names to ignore entirely (applies to bundled defaults and your own rules)",ko:"์™„์ „ํžˆ ๋ฌด์‹œํ•  ๊ทœ์น™ ์ด๋ฆ„(๋ฒˆ๋“ค ๊ธฐ๋ณธ ๊ทœ์น™๊ณผ ์‚ฌ์šฉ์ž ๊ทœ์น™์— ์ ์šฉ)"},kind:"array",scope:"both",defaultValue:[],items:"string"},{path:"ttsr.enabled",category:"tools",group:"Rules (TTSR)",label:{en:"TTSR",ko:"TTSR"},description:{en:"Interrupt the agent mid-stream when output matches rule patterns (Time-Traveling Stream Rules)",ko:"์ถœ๋ ฅ์ด ๊ทœ์น™ ํŒจํ„ด๊ณผ ์ผ์น˜ํ•˜๋ฉด ์ŠคํŠธ๋ฆฌ๋ฐ ๋„์ค‘ ์—์ด์ „ํŠธ๋ฅผ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค(Time-Traveling Stream Rules)."},kind:"boolean",scope:"both",defaultValue:!0},{path:"ttsr.judge",category:"tools",group:"Rules (TTSR)",label:{en:"Judged Rules",ko:"ํŒ์ • ๊ทœ์น™"},description:{en:"Ask the judge model role each `question` rule about completed replies, reasoning, and tool calls; a yes injects the rule as a warning",ko:"์™„๋ฃŒ๋œ ์‘๋‹ต, ์ถ”๋ก , ๋„๊ตฌ ํ˜ธ์ถœ์— ๋Œ€ํ•ด judge ๋ชจ๋ธ ์—ญํ• ์— ๊ฐ `question` ๊ทœ์น™์„ ๋ฌป๊ณ , ํ•ด๋‹น๋œ๋‹ค๊ณ  ํŒ์ •ํ•˜๋ฉด ๊ทœ์น™์„ ๊ฒฝ๊ณ ๋กœ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"auto",choices:["auto","on","off"],appliesTo:{en:"Auto requires the judge model role to resolve to a native TypeSafe jev model.",ko:"auto๋Š” judge ๋ชจ๋ธ ์—ญํ• ์ด ๋„ค์ดํ‹ฐ๋ธŒ TypeSafe jev ๋ชจ๋ธ๋กœ ํ™•์ธ๋  ๋•Œ๋งŒ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค."}},{path:"ttsr.interruptMode",category:"tools",group:"Rules (TTSR)",label:{en:"TTSR Interrupt Mode",ko:"TTSR ์ค‘๋‹จ ๋ชจ๋“œ"},description:{en:"When to interrupt mid-stream vs inject warning after completion",ko:"์ŠคํŠธ๋ฆฌ๋ฐ ๋„์ค‘ ์ค‘๋‹จํ•  ์‹œ์ ๊ณผ ์™„๋ฃŒ ํ›„ ๊ฒฝ๊ณ ๋ฅผ ์‚ฝ์ž…ํ•  ์‹œ์ ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"always",choices:["never","prose-only","tool-only","always"]},{path:"ttsr.repeatGap",category:"tools",group:"Rules (TTSR)",label:{en:"TTSR Repeat Gap",ko:"TTSR ๋ฐ˜๋ณต ๊ฐ„๊ฒฉ"},description:{en:"Messages before a rule can trigger again",ko:"๊ทœ์น™์ด ๋‹ค์‹œ ํŠธ๋ฆฌ๊ฑฐ๋˜๊ธฐ ์ „์— ํ•„์š”ํ•œ ๋ฉ”์‹œ์ง€ ์ˆ˜"},kind:"number",scope:"both",defaultValue:10,integer:!0},{path:"ttsr.repeatMode",category:"tools",group:"Rules (TTSR)",label:{en:"TTSR Repeat Mode",ko:"TTSR ๋ฐ˜๋ณต ๋ชจ๋“œ"},description:{en:"How rules can repeat: once per session or after a message gap",ko:"๊ทœ์น™ ๋ฐ˜๋ณต ๋ฐฉ์‹: ์„ธ์…˜๋‹น ํ•œ ๋ฒˆ ๋˜๋Š” ๋ฉ”์‹œ์ง€ ๊ฐ„๊ฒฉ ํ›„ ๋ฐ˜๋ณต"},kind:"enum",scope:"both",defaultValue:"once",choices:["once","after-gap"]},{path:"checkpoint.enabled",category:"safety",group:"Available Tools",label:{en:"Checkpoint/Rewind",ko:"์ฒดํฌํฌ์ธํŠธ/๋˜๋Œ๋ฆฌ๊ธฐ"},description:{en:"Enable the checkpoint and rewind tools for context checkpointing",ko:"์ปจํ…์ŠคํŠธ ์ฒดํฌํฌ์ธํŠธ๋ฅผ ์œ„ํ•œ checkpoint ๋ฐ rewind ๋„๊ตฌ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"security.enabled",category:"safety",group:"Available Tools",label:{en:"Security",ko:"๋ณด์•ˆ"},description:{en:"Enable OMP-native security scan planning, execution, and the read-only security:// resource namespace",ko:"OMP ๋„ค์ดํ‹ฐ๋ธŒ ๋ณด์•ˆ ๊ฒ€์‚ฌ์˜ ๊ณ„ํš ๋ฐ ์‹คํ–‰๊ณผ ์ฝ๊ธฐ ์ „์šฉ security:// ๋ฆฌ์†Œ์Šค ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"codexResets.autoRedeem",category:"safety",group:"Services",label:{en:"Codex Auto-Redeem Saved Resets",ko:"์ €์žฅ๋œ Codex ๋ฆฌ์…‹ ์ž๋™ ์‚ฌ์šฉ"},description:{en:"Spend saved Codex rate-limit resets automatically: restore an account blocked by an exhausted 5h or weekly window when a turn is stuck and no other account can take over, and salvage credits that are about to expire. unset asks before the first spend, yes spends without prompting, and no disables both checks.",ko:"์ €์žฅ๋œ Codex ์‚ฌ์šฉ๋Ÿ‰ ์ œํ•œ ๋ฆฌ์…‹์„ ์ž๋™์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ„ด์ด ๋ฉˆ์ถ”๊ณ  ๋Œ€์‹  ์‚ฌ์šฉํ•  ๊ณ„์ •์ด ์—†์„ ๋•Œ ์†Œ์ง„๋œ 5h ๋˜๋Š” ์ฃผ๊ฐ„ ์ œํ•œ์œผ๋กœ ์ฐจ๋‹จ๋œ ๊ณ„์ •์„ ๋ณต์›ํ•˜๊ณ , ๊ณง ๋งŒ๋ฃŒ๋  ํฌ๋ ˆ๋”ง์„ ํšŒ์ˆ˜ํ•ฉ๋‹ˆ๋‹ค. unset์€ ์ฒ˜์Œ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ํ™•์ธํ•˜๊ณ , yes๋Š” ํ™•์ธ ์—†์ด ์‚ฌ์šฉํ•˜๋ฉฐ, no๋Š” ๋‘ ๊ฒ€์‚ฌ๋ฅผ ๋ชจ๋‘ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"unset",choices:["unset","yes","no"],admin:!0,confirmation:!0},{path:"codexResets.keepCredits",category:"safety",group:"Services",label:{en:"Codex Auto-Redeem Reserve",ko:"Codex ์ž๋™ ์‚ฌ์šฉ ์˜ˆ๋น„๋Ÿ‰"},description:{en:"Never auto-spend below this many saved resets (0 = the last credit may be spent automatically). Credits about to expire are exempt โ€” a reserved credit that expires preserves nothing.",ko:"์ €์žฅ๋œ ๋ฆฌ์…‹์ด ์ง€์ •ํ•œ ๊ฐœ์ˆ˜ ๋ฏธ๋งŒ์ด ๋˜๋„๋ก ์ž๋™ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(0 = ๋งˆ์ง€๋ง‰ ํฌ๋ ˆ๋”ง๋„ ์ž๋™ ์‚ฌ์šฉ ๊ฐ€๋Šฅ). ๊ณง ๋งŒ๋ฃŒ๋  ํฌ๋ ˆ๋”ง์€ ์˜ˆ์™ธ์ž…๋‹ˆ๋‹ค. ๋งŒ๋ฃŒ๋˜๋Š” ํฌ๋ ˆ๋”ง์„ ๋‚จ๊ฒจ ๋‘์–ด๋„ ๋ณด์กด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:0,integer:!0},{path:"codexResets.minBlockedMinutes",category:"safety",group:"Services",label:{en:"Codex Auto-Redeem Min Block",ko:"Codex ์ž๋™ ์‚ฌ์šฉ ์ตœ์†Œ ์ฐจ๋‹จ ์‹œ๊ฐ„"},description:{en:"Only auto-redeem when the natural unblock โ€” the latest reset among the exhausted 5h/weekly windows โ€” is at least this many minutes away (don't spend a scarce credit to save a short wait). Raise it (e.g. 360) to ignore 5h-only blocks.",ko:"์ž์—ฐ ํ•ด์ œ ์‹œ์ , ์ฆ‰ ์†Œ์ง„๋œ 5h/์ฃผ๊ฐ„ ์ œํ•œ ์ค‘ ๊ฐ€์žฅ ๋Šฆ์€ ๋ฆฌ์…‹๊นŒ์ง€ ์ง€์ •ํ•œ ๋ถ„ ์ด์ƒ ๋‚จ์€ ๊ฒฝ์šฐ์—๋งŒ ์ž๋™ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(์งง์€ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์ค„์ด๋ ค๊ณ  ํฌ์†Œํ•œ ํฌ๋ ˆ๋”ง์„ ์“ฐ์ง€ ์•Š์Œ). 5h ์ œํ•œ๋งŒ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ๋ฅผ ๋ฌด์‹œํ•˜๋ ค๋ฉด ๊ฐ’์„ ๋†’์ด์„ธ์š”(์˜ˆ: 360)."},kind:"number",scope:"both",defaultValue:60},{path:"codexResets.salvageHorizonHours",category:"safety",group:"Services",label:{en:"Codex Reset Salvage Horizon",ko:"Codex ๋ฆฌ์…‹ ํšŒ์ˆ˜ ๊ธฐํ•œ"},description:{en:"Spend a saved Codex reset automatically when it would otherwise expire within this many hours and either chat window (5h or weekly) has meaningful usage to restore (0 disables expiry salvage).",ko:"์ €์žฅ๋œ Codex ๋ฆฌ์…‹์ด ์ง€์ •ํ•œ ์‹œ๊ฐ„ ๋‚ด์— ๋งŒ๋ฃŒ๋  ์˜ˆ์ •์ด๊ณ  ๋‘ ์ฑ„ํŒ… ์ œํ•œ(5h ๋˜๋Š” ์ฃผ๊ฐ„) ์ค‘ ํ•˜๋‚˜์— ๋ณต์›ํ•  ๋งŒํ•œ ์‚ฌ์šฉ๋Ÿ‰์ด ์žˆ์œผ๋ฉด ์ž๋™์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(0์€ ๋งŒ๋ฃŒ ํšŒ์ˆ˜ ๋น„ํ™œ์„ฑํ™”)."},kind:"number",scope:"both",defaultValue:12},{path:"claudeResets.autoRedeem",category:"safety",group:"Services",label:{en:"Claude Auto-Redeem Resets",ko:"Claude ๋ฆฌ์…‹ ์ž๋™ ์‚ฌ์šฉ"},description:{en:"Spend eligible Claude Cedar or Juniper resets automatically. Cedar is spent only for covered limits; Juniper can only recover a sole 5-hour block. unset asks before the first spend, yes spends without prompting, and no disables blocked recovery and expiry salvage.",ko:"์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ Claude Cedar ๋˜๋Š” Juniper ๋ฆฌ์…‹์„ ์ž๋™์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Cedar๋Š” ์ ์šฉ ๋Œ€์ƒ ํ•œ๋„์—๋งŒ ์‚ฌ์šฉ๋˜๋ฉฐ Juniper๋Š” ๋‹จ๋… 5์‹œ๊ฐ„ ์ฐจ๋‹จ๋งŒ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. unset์€ ์ฒ˜์Œ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ํ™•์ธํ•˜๊ณ , yes๋Š” ๋ฌป์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•˜๋ฉฐ, no๋Š” ์ฐจ๋‹จ ๋ณต๊ตฌ์™€ ๋งŒ๋ฃŒ ํšŒ์ˆ˜๋ฅผ ๋ชจ๋‘ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"unset",choices:["unset","yes","no"],admin:!0,confirmation:!0},{path:"claudeResets.keepCredits",category:"safety",group:"Services",label:{en:"Claude Auto-Redeem Reserve",ko:"Claude ์ž๋™ ์‚ฌ์šฉ ์˜ˆ๋น„๋Ÿ‰"},description:{en:"Keep at least this many Claude resets banked (0 allows the last eligible reset to be spent automatically). The reserve also applies to expiry salvage.",ko:"Claude ๋ฆฌ์…‹์„ ์ตœ์†Œ ์ง€์ •ํ•œ ๊ฐœ์ˆ˜๋งŒํผ ๋‚จ๊ฒจ ๋‘ก๋‹ˆ๋‹ค(0์ด๋ฉด ๋งˆ์ง€๋ง‰ ์‚ฌ์šฉ ๊ฐ€๋Šฅ ๋ฆฌ์…‹๋„ ์ž๋™ ์‚ฌ์šฉ). ์ด ์˜ˆ๋น„๋Ÿ‰์€ ๋งŒ๋ฃŒ ํšŒ์ˆ˜์—๋„ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:0,integer:!0},{path:"claudeResets.minBlockedMinutes",category:"safety",group:"Services",label:{en:"Claude Auto-Redeem Min Block",ko:"Claude ์ž๋™ ์‚ฌ์šฉ ์ตœ์†Œ ์ฐจ๋‹จ ์‹œ๊ฐ„"},description:{en:"Only auto-redeem when the natural unblock โ€” the latest reset among the exhausted covered windows โ€” is at least this many minutes away. A 5-hour-only reset is never used for a weekly or model-scoped block.",ko:"์ž์—ฐ ํ•ด์ œ ์‹œ์ , ์ฆ‰ ์†Œ์ง„๋œ ์ ์šฉ ๋Œ€์ƒ ์ œํ•œ ์ค‘ ๊ฐ€์žฅ ๋Šฆ์€ ๋ฆฌ์…‹๊นŒ์ง€ ์ง€์ •ํ•œ ๋ถ„ ์ด์ƒ ๋‚จ์€ ๊ฒฝ์šฐ์—๋งŒ ์ž๋™ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. 5์‹œ๊ฐ„ ์ „์šฉ ๋ฆฌ์…‹์€ ์ฃผ๊ฐ„ ๋˜๋Š” ๋ชจ๋ธ๋ณ„ ์ฐจ๋‹จ์— ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:60},{path:"claudeResets.salvageHorizonHours",category:"safety",group:"Services",label:{en:"Claude Reset Salvage Horizon",ko:"Claude ๋ฆฌ์…‹ ํšŒ์ˆ˜ ๊ธฐํ•œ"},description:{en:"Use a server-selected Cedar reset within this many hours of expiry only when its covered windows have meaningful usage to restore and the grant permits early use or a covered window is exhausted (0 disables salvage).",ko:"์„œ๋ฒ„๊ฐ€ ์„ ํƒํ•œ Cedar ๋ฆฌ์…‹์ด ์ง€์ •ํ•œ ์‹œ๊ฐ„ ๋‚ด์— ๋งŒ๋ฃŒ๋  ์˜ˆ์ •์ด๊ณ , ์ ์šฉ ๋Œ€์ƒ ์ œํ•œ์— ๋ณต์›ํ•  ๋งŒํ•œ ์‚ฌ์šฉ๋Ÿ‰์ด ์žˆ์œผ๋ฉฐ, ์กฐ๊ธฐ ์‚ฌ์šฉ์ด ํ—ˆ์šฉ๋˜๊ฑฐ๋‚˜ ์ ์šฉ ๋Œ€์ƒ ์ œํ•œ์ด ์†Œ์ง„๋œ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(0์€ ํšŒ์ˆ˜ ๋น„ํ™œ์„ฑํ™”)."},kind:"number",scope:"both",defaultValue:12},{path:"isolation.backend",category:"safety",group:"Isolation",label:{en:"Isolation Backend",ko:"๊ฒฉ๋ฆฌ ๋ฐฑ์—”๋“œ"},description:{en:"Backend used for subagent isolation and worktree cloning",ko:"ํ•˜์œ„ ์—์ด์ „ํŠธ ๊ฒฉ๋ฆฌ ๋ฐ worktree ๋ณต์ œ์— ์‚ฌ์šฉํ•  ๋ฐฑ์—”๋“œ์ž…๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"auto",choices:["auto","apfs","btrfs","zfs","reflink","overlayfs","projfs","block-clone","rcopy"],admin:!0,confirmation:!0},{path:"worktree.base",category:"safety",group:"Isolation",label:{en:"Worktree Base Directory",ko:"Worktree ๊ธฐ๋ณธ ๋””๋ ‰ํ„ฐ๋ฆฌ"},description:{en:"Base directory for agent-managed worktrees โ€” task-isolation copies, `github` PR checkouts, and `omp worktree` cleanup all live here. Unset uses ~/.omp/wt. Must be an absolute or ~-relative path; relative paths are ignored. The OMP_WORKTREE_DIR env var overrides this.",ko:"์—์ด์ „ํŠธ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” worktree์˜ ๊ธฐ๋ณธ ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ž‘์—… ๊ฒฉ๋ฆฌ ๋ณต์‚ฌ๋ณธ, `github` PR ์ฒดํฌ์•„์›ƒ ๋ฐ `omp worktree` ์ •๋ฆฌ๊ฐ€ ๋ชจ๋‘ ์—ฌ๊ธฐ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ~/.omp/wt๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ ˆ๋Œ€ ๊ฒฝ๋กœ ๋˜๋Š” ~ ๊ธฐ์ค€ ๊ฒฝ๋กœ์—ฌ์•ผ ํ•˜๋ฉฐ ์ƒ๋Œ€ ๊ฒฝ๋กœ๋Š” ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค. OMP_WORKTREE_DIR ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์ด ์„ค์ •์„ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค."},kind:"string",scope:"both",admin:!0,confirmation:!0},{path:"worktree.clone",category:"safety",group:"Isolation",label:{en:"Clone Checkout into Worktrees",ko:"์ฒดํฌ์•„์›ƒ์„ Worktree๋กœ ๋ณต์ œ"},description:{en:"New worktrees from `github pr_checkout` and `git worktree add` in bash start as a copy-on-write clone of the current checkout so ignored build artifacts (node_modules, target) carry over; falls back to a plain checkout when the filesystem cannot clone",ko:"bash์˜ `github pr_checkout` ๋ฐ `git worktree add`๋กœ ๋งŒ๋“œ๋Š” ์ƒˆ worktree๋ฅผ ํ˜„์žฌ ์ฒดํฌ์•„์›ƒ์˜ copy-on-write ๋ณต์ œ๋ณธ์œผ๋กœ ์‹œ์ž‘ํ•˜์—ฌ ๋ฌด์‹œ๋œ ๋นŒ๋“œ ์•„ํ‹ฐํŒฉํŠธ(node_modules, target)๋ฅผ ์ด์–ด๋ฐ›์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ๋ณต์ œํ•  ์ˆ˜ ์—†์œผ๋ฉด ์ผ๋ฐ˜ ์ฒดํฌ์•„์›ƒ์œผ๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,admin:!0,confirmation:!0},{path:"worktree.cleanSource",category:"safety",group:"Isolation",label:{en:"Clean Source Checkout on /wt",ko:"/wt ์‹คํ–‰ ์‹œ ์›๋ณธ ์ฒดํฌ์•„์›ƒ ์ •๋ฆฌ"},description:{en:"When creating a worktree with `/wt`, reset tracked changes and remove untracked files from the original checkout after carrying them over",ko:"`/wt`๋กœ worktree๋ฅผ ๋งŒ๋“ค ๋•Œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์˜ฎ๊ธด ๋’ค ์›๋ณธ ์ฒดํฌ์•„์›ƒ์˜ ์ถ”์  ์ค‘์ธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋˜๋Œ๋ฆฌ๊ณ  ์ถ”์ ๋˜์ง€ ์•Š์€ ํŒŒ์ผ์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1,admin:!0,confirmation:!0,appliesTo:{en:"Applies to the /wt (/worktree) slash command.",ko:"/wt(/worktree) ์Šฌ๋ž˜์‹œ ๋ช…๋ น์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"retry.baseDelayMs",category:"safety",group:"Retry",label:{en:"Base Delay Ms",ko:"๊ธฐ๋ณธ ์ง€์—ฐ ์‹œ๊ฐ„(ms)"},description:{en:"Sets the base retry delay in milliseconds.",ko:"์žฌ์‹œ๋„์˜ ๊ธฐ๋ณธ ์ง€์—ฐ ์‹œ๊ฐ„์„ ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:500,integer:!0},{path:"retry.enabled",category:"safety",group:"Retry",label:{en:"Enabled",ko:"ํ™œ์„ฑํ™”"},description:{en:"Enables retry handling.",ko:"์žฌ์‹œ๋„ ์ฒ˜๋ฆฌ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"retry.fallbackChains",category:"safety",group:"Retry & Fallback",label:{en:"Retry Fallback Chains",ko:"์žฌ์‹œ๋„ ๋Œ€์ฒด ์ฒด์ธ"},description:{en:'JSON object mapping model roles, model selectors ("provider/model-id"), or provider wildcards ("provider/*") to ordered fallback selectors, e.g. {"default":["openai/gpt-4o-mini"],"google-antigravity/*":["google/*","google-vertex/*"]}. Model-oriented keys apply whenever that model/provider is active, regardless of role; a "provider/*" entry keeps the failing model\'s id and swaps the provider. An id-prefixed wildcard ("openrouter/google/*") re-prefixes the failing model\'s bare id (google-antigravity/gemini-x -> openrouter/google/gemini-x) and, used as a key, matches only that provider\'s ids under the prefix.',ko:'๋ชจ๋ธ ์—ญํ• , ๋ชจ๋ธ ์„ ํƒ์ž("provider/model-id") ๋˜๋Š” ์ œ๊ณต์ž ์™€์ผ๋“œ์นด๋“œ("provider/*")๋ฅผ ์ˆœ์„œ๊ฐ€ ์ง€์ •๋œ ๋Œ€์ฒด ์„ ํƒ์ž์— ๋งคํ•‘ํ•˜๋Š” JSON ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ์˜ˆ: {"default":["openai/gpt-4o-mini"],"google-antigravity/*":["google/*","google-vertex/*"]}. ๋ชจ๋ธ ์ค‘์‹ฌ ํ‚ค๋Š” ์—ญํ• ๊ณผ ๊ด€๊ณ„์—†์ด ํ•ด๋‹น ๋ชจ๋ธ/์ œ๊ณต์ž๊ฐ€ ํ™œ์„ฑ ์ƒํƒœ์ผ ๋•Œ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. "provider/*" ํ•ญ๋ชฉ์€ ์‹คํŒจํ•œ ๋ชจ๋ธ์˜ id๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ์ œ๊ณต์ž๋งŒ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. id ์ ‘๋‘์‚ฌ ์™€์ผ๋“œ์นด๋“œ("openrouter/google/*")๋Š” ์‹คํŒจํ•œ ๋ชจ๋ธ์˜ ์ ‘๋‘์‚ฌ ์—†๋Š” id์— ์ƒˆ ์ ‘๋‘์‚ฌ๋ฅผ ๋ถ™์ด๋ฉฐ(google-antigravity/gemini-x -> openrouter/google/gemini-x), ํ‚ค๋กœ ์‚ฌ์šฉํ•˜๋ฉด ํ•ด๋‹น ์ œ๊ณต์ž์—์„œ ์ ‘๋‘์‚ฌ ์•„๋ž˜์˜ id๋งŒ ์ผ์น˜์‹œํ‚ต๋‹ˆ๋‹ค.'},kind:"object",scope:"both",defaultValue:{},recordValues:"string-array"},{path:"retry.fallbackRevertPolicy",category:"safety",group:"Retry & Fallback",label:{en:"Fallback Revert Policy",ko:"๋Œ€์ฒด ๋ชจ๋ธ ๋ณต๊ท€ ์ •์ฑ…"},description:{en:"When to return to the primary model after a fallback",ko:"๋Œ€์ฒด ๋ชจ๋ธ ์‚ฌ์šฉ ํ›„ ๊ธฐ๋ณธ ๋ชจ๋ธ๋กœ ๋Œ์•„๊ฐˆ ์‹œ์ ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"cooldown-expiry",choices:["cooldown-expiry","never"]},{path:"retry.maxDelayMs",category:"safety",group:"Retry & Fallback",label:{en:"Max Retry Delay",ko:"์ตœ๋Œ€ ์žฌ์‹œ๋„ ์ง€์—ฐ ์‹œ๊ฐ„"},description:{en:"Maximum wait between retries, in ms. When the provider asks us to wait longer than this and no credential or model fallback succeeds, the request fails fast instead of sleeping (e.g. 3-hour Anthropic rate-limit windows). 0 disables the ceiling โ€” to let the session auto-resume through provider-stated quota resets.",ko:"์žฌ์‹œ๋„ ์‚ฌ์ด์˜ ์ตœ๋Œ€ ๋Œ€๊ธฐ ์‹œ๊ฐ„(ms)์ž…๋‹ˆ๋‹ค. ์ œ๊ณต์ž๊ฐ€ ์ด๋ณด๋‹ค ๊ธด ๋Œ€๊ธฐ๋ฅผ ์š”์ฒญํ•˜๊ณ  ์ž๊ฒฉ ์ฆ๋ช…์ด๋‚˜ ๋ชจ๋ธ ๋Œ€์ฒด๊ฐ€ ์„ฑ๊ณตํ•˜์ง€ ์•Š์œผ๋ฉด, ๋Œ€๊ธฐํ•˜์ง€ ์•Š๊ณ  ์š”์ฒญ์ด ์ฆ‰์‹œ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: Anthropic์˜ 3-hour ์‚ฌ์šฉ๋Ÿ‰ ์ œํ•œ ๊ตฌ๊ฐ„). 0์€ ์ƒํ•œ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜์—ฌ ์ œ๊ณต์ž๊ฐ€ ๋ช…์‹œํ•œ ํ• ๋‹น๋Ÿ‰ ์ดˆ๊ธฐํ™” ํ›„ ์„ธ์…˜์ด ์ž๋™์œผ๋กœ ์žฌ๊ฐœ๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:3e5,integer:!0},{path:"retry.maxRetries",category:"safety",group:"Retry & Fallback",label:{en:"Retry Attempts",ko:"์žฌ์‹œ๋„ ํšŸ์ˆ˜"},description:{en:"Maximum retry attempts on API errors",ko:"API ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ์ตœ๋Œ€ ์žฌ์‹œ๋„ ํšŸ์ˆ˜์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:10,integer:!0},{path:"retry.modelFallback",category:"safety",group:"Retry & Fallback",label:{en:"Retry Model Fallback",ko:"์žฌ์‹œ๋„ ์‹œ ๋ชจ๋ธ ๋Œ€์ฒด"},description:{en:"Allow retry recovery to switch to configured fallback models",ko:"์žฌ์‹œ๋„ ๋ณต๊ตฌ ์ค‘ ์„ค์ •๋œ ๋Œ€์ฒด ๋ชจ๋ธ๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"providers.anthropic.serverSideFallback",category:"safety",group:"Retry & Fallback",label:{en:"Anthropic Server-Side Fallback (Fable 5)",ko:"Anthropic ์„œ๋ฒ„ ์ธก ๋Œ€์ฒด(Fable 5)"},description:{en:"When a Claude Fable 5 / Mythos 5 request is blocked by Anthropic's safety classifier, retry it on Claude Opus 5 server-side (Anthropic `server-side-fallback-2026-06-01` beta). Opt-in โ€” leaving this off preserves the pre-fallback behavior for every request.",ko:"Claude Fable 5 / Mythos 5 ์š”์ฒญ์ด Anthropic ์•ˆ์ „ ๋ถ„๋ฅ˜๊ธฐ์— ์˜ํ•ด ์ฐจ๋‹จ๋˜๋ฉด ์„œ๋ฒ„ ์ธก์—์„œ Claude Opus 5๋กœ ๋‹ค์‹œ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค(Anthropic `server-side-fallback-2026-06-01` ๋ฒ ํƒ€). ์„ ํƒ ์‚ฌํ•ญ์ด๋ฉฐ ๋„๋ฉด ๋ชจ๋“  ์š”์ฒญ์—์„œ ๊ธฐ์กด ๋™์ž‘์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1,appliesTo:{en:"Applies to Anthropic models that declare server-side fallback models.",ko:"์„œ๋ฒ„ ์ธก ๋Œ€์ฒด ๋ชจ๋ธ์„ ์„ ์–ธํ•œ Anthropic ๋ชจ๋ธ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"retry.usageAwareFallback",category:"safety",group:"Retry & Fallback",label:{en:"Usage-Aware Fallback",ko:"์‚ฌ์šฉ๋Ÿ‰ ๊ธฐ๋ฐ˜ ๋Œ€์ฒด"},description:{en:"Use reliable coding-plan quota reports to prefer same-provider accounts, then configured fallback models, before a hard usage limit. Ordinary configured API keys are excluded.",ko:"์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋”ฉ ํ”Œ๋žœ ํ• ๋‹น๋Ÿ‰ ๋ณด๊ณ ์„œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—„๊ฒฉํ•œ ์‚ฌ์šฉ๋Ÿ‰ ํ•œ๋„์— ๋„๋‹ฌํ•˜๊ธฐ ์ „์— ๋™์ผ ์ œ๊ณต์ž์˜ ๊ณ„์ •์„ ์šฐ์„ ํ•œ ๋‹ค์Œ ์„ค์ •๋œ ๋Œ€์ฒด ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์„ค์ •๋œ API ํ‚ค๋Š” ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"retry.usageReservePct",category:"safety",group:"Retry & Fallback",label:{en:"Reserve Margin",ko:"์˜ˆ๋น„ ์—ฌ์œ ์œจ"},description:{en:"Treat a coding-plan model as near its limit below this remaining percentage. Unknown or unmapped usage keeps the primary model.",ko:"์ฝ”๋”ฉ ํ”Œ๋žœ ๋ชจ๋ธ์˜ ๋‚จ์€ ๋น„์œจ์ด ์ด ๊ฐ’ ๋ฏธ๋งŒ์ด๋ฉด ํ•œ๋„์— ๊ฐ€๊นŒ์šด ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋Ÿ‰์„ ์•Œ ์ˆ˜ ์—†๊ฑฐ๋‚˜ ๋งคํ•‘๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ธฐ๋ณธ ๋ชจ๋ธ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:10},{path:"retry.usageReservePolicy",category:"safety",group:"Retry & Fallback",label:{en:"Reserve Policy",ko:"์˜ˆ๋น„ ์—ฌ์œ  ์ •์ฑ…"},description:{en:"What to do when every same-provider coding-plan account is inside the reserve margin.",ko:"๋™์ผ ์ œ๊ณต์ž์˜ ๋ชจ๋“  ์ฝ”๋”ฉ ํ”Œ๋žœ ๊ณ„์ •์ด ์˜ˆ๋น„ ์—ฌ์œ  ๋ฒ”์œ„์— ์žˆ์„ ๋•Œ ์ˆ˜ํ–‰ํ•  ์ž‘์—…์ž…๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"confirm",choices:["confirm","auto","fail-closed"]},{path:"retry.waitForUsageReset",category:"safety",group:"Retry & Fallback",label:{en:"Wait For Usage Reset",ko:"์‚ฌ์šฉ๋Ÿ‰ ์ดˆ๊ธฐํ™” ๋Œ€๊ธฐ"},description:{en:"When a provider reports usage-limit exhaustion with a reset time (5-hour or weekly quota windows on any provider), sleep until the reset instead of failing fast past retry.maxDelayMs. Waits are abortable (Esc) but also hold subagents, so leave off for unattended runs.",ko:"์ œ๊ณต์ž๊ฐ€ ์ดˆ๊ธฐํ™” ์‹œ๊ฐ„๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋Ÿ‰ ํ•œ๋„ ์†Œ์ง„์„ ๋ณด๊ณ ํ•˜๋ฉด(๋ชจ๋“  ์ œ๊ณต์ž์˜ 5-hour ๋˜๋Š” ์ฃผ๊ฐ„ ํ• ๋‹น๋Ÿ‰ ๊ตฌ๊ฐ„), retry.maxDelayMs๋ฅผ ์ดˆ๊ณผํ•˜์—ฌ ์ฆ‰์‹œ ์‹คํŒจํ•˜๋Š” ๋Œ€์‹  ์ดˆ๊ธฐํ™”๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๊ธฐ๋Š” ์ค‘๋‹จํ•  ์ˆ˜ ์žˆ์ง€๋งŒ(Esc) ํ•˜์œ„ ์—์ด์ „ํŠธ๋„ ๋Œ€๊ธฐ์‹œํ‚ค๋ฏ€๋กœ ๋ฌด์ธ ์‹คํ–‰์—์„œ๋Š” ๋น„ํ™œ์„ฑํ™”ํ•˜์„ธ์š”."},kind:"boolean",scope:"both",defaultValue:!1},{path:"secrets.enabled",category:"safety",group:"Privacy",label:{en:"Hide Secrets",ko:"๋น„๋ฐ€ ์ •๋ณด ์ˆจ๊ธฐ๊ธฐ"},description:{en:"Obfuscate configured secrets and redact credential-shaped tokens before sending to AI providers",ko:"์„ค์ •๋œ ๋น„๋ฐ€ ์ •๋ณด๋ฅผ ๋‚œ๋…ํ™”ํ•˜๊ณ  ์ž๊ฒฉ ์ฆ๋ช… ํ˜•ํƒœ์˜ ํ† ํฐ์„ AI ์ œ๊ณต์ž์—๊ฒŒ ๋ณด๋‚ด๊ธฐ ์ „์— ๊ฐ€๋ฆฝ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1,admin:!0,confirmation:!0},{path:"telemetry.otlpExportEnabled",category:"safety",group:"Privacy",label:{en:"OTLP Telemetry Export",ko:"OTLP ์›๊ฒฉ ์ธก์ • ๋‚ด๋ณด๋‚ด๊ธฐ"},description:{en:"Allow OMP to export traces, logs, and metrics using OTEL_* endpoints. Changes take effect on the next launch.",ko:"OMP๊ฐ€ OTEL_* ์—”๋“œํฌ์ธํŠธ๋กœ ํŠธ๋ ˆ์ด์Šค, ๋กœ๊ทธ, ๋ฉ”ํŠธ๋ฆญ์„ ๋‚ด๋ณด๋‚ด๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋‹ค์Œ ์‹คํ–‰๋ถ€ํ„ฐ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,admin:!0,confirmation:!0},{path:"auth.broker.token",category:"system",group:"Auth",label:{en:"Token",ko:"ํ† ํฐ"},description:{en:"Authentication token configured for the broker.",ko:"๋ธŒ๋กœ์ปค์— ๊ตฌ์„ฑ๋œ ์ธ์ฆ ํ† ํฐ์ž…๋‹ˆ๋‹ค."},kind:"string",scope:"global",secret:!0,admin:!0,confirmation:!0,appliesTo:{en:"Applies when auth.broker.url points to a broker that requires a token.",ko:"auth.broker.url์ด ํ† ํฐ์ด ํ•„์š”ํ•œ ๋ธŒ๋กœ์ปค๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ๋•Œ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค."}},{path:"auth.broker.url",category:"system",group:"Auth",label:{en:"URL",ko:"URL"},description:{en:"URL of the authentication broker.",ko:"์ธ์ฆ ๋ธŒ๋กœ์ปค์˜ URL์ž…๋‹ˆ๋‹ค."},kind:"string",scope:"global",admin:!0,confirmation:!0},{path:"commands.enableClaudeProject",category:"system",group:"Commands & Skills",label:{en:"Claude Project Commands",ko:"Claude ํ”„๋กœ์ ํŠธ ๋ช…๋ น"},description:{en:"Load commands from .claude/commands/",ko:".claude/commands/์—์„œ ๋ช…๋ น์„ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,admin:!0,confirmation:!0},{path:"commands.enableClaudeUser",category:"system",group:"Commands & Skills",label:{en:"Claude User Commands",ko:"Claude ์‚ฌ์šฉ์ž ๋ช…๋ น"},description:{en:"Load commands from ~/.claude/commands/",ko:"~/.claude/commands/์—์„œ ๋ช…๋ น์„ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1,admin:!0,confirmation:!0},{path:"commands.enableOpencodeProject",category:"system",group:"Commands & Skills",label:{en:"OpenCode Project Commands",ko:"OpenCode ํ”„๋กœ์ ํŠธ ๋ช…๋ น"},description:{en:"Load commands from .opencode/commands/",ko:".opencode/commands/์—์„œ ๋ช…๋ น์„ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,admin:!0,confirmation:!0},{path:"commands.enableOpencodeUser",category:"system",group:"Commands & Skills",label:{en:"OpenCode User Commands",ko:"OpenCode ์‚ฌ์šฉ์ž ๋ช…๋ น"},description:{en:"Load commands from ~/.config/opencode/commands/",ko:"~/.config/opencode/commands/์—์„œ ๋ช…๋ น์„ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1,admin:!0,confirmation:!0},{path:"features.unexpectedStopDetection",category:"system",group:"Agent",label:{en:"Unexpected Stops",ko:"์˜ˆ๊ธฐ์น˜ ์•Š์€ ์ค‘๋‹จ"},description:{en:"Automatically recover when the assistant stops without a visible message. Smart also classifies text-only stops with a small model.",ko:"์–ด์‹œ์Šคํ„ดํŠธ๊ฐ€ ํ‘œ์‹œ๋˜๋Š” ๋ฉ”์‹œ์ง€ ์—†์ด ์ค‘๋‹จ๋˜๋ฉด ์ž๋™์œผ๋กœ ๋ณต๊ตฌํ•ฉ๋‹ˆ๋‹ค. Smart๋Š” ์†Œํ˜• ๋ชจ๋ธ๋กœ ํ…์ŠคํŠธ๋งŒ ์žˆ๋Š” ์ค‘๋‹จ๋„ ๋ถ„๋ฅ˜ํ•ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"mechanical",choices:["none","mechanical","smart"]},{path:"gc.coldArchiveAfterDays",category:"system",group:"Gc",label:{en:"Cold Archive After Days",ko:"์ฝœ๋“œ ์•„์นด์ด๋ธŒ ์ „ํ™˜ ์ผ์ˆ˜"},description:{en:"Number of days after which items are cold-archived.",ko:"ํ•ญ๋ชฉ์„ ์ฝœ๋“œ ์•„์นด์ด๋ธŒํ•˜๊ธฐ๊นŒ์ง€์˜ ์ผ์ˆ˜์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:30,integer:!0},{path:"gc.retainNewestGlobal",category:"system",group:"Gc",label:{en:"Retain Newest Global",ko:"์ „์ฒด ์ตœ์‹  ํ•ญ๋ชฉ ๋ณด์กด"},description:{en:"Number of newest items to retain globally.",ko:"์ „์—ญ์ ์œผ๋กœ ์œ ์ง€ํ•  ์ตœ์‹  ํ•ญ๋ชฉ ์ˆ˜์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:20,integer:!0},{path:"gc.retainNewestPerCwd",category:"system",group:"Gc",label:{en:"Retain Newest Per Cwd",ko:"Cwd๋ณ„ ์ตœ์‹  ํ•ญ๋ชฉ ๋ณด์กด"},description:{en:"Number of newest items to retain per current working directory.",ko:"ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ๋ณ„๋กœ ์œ ์ง€ํ•  ์ตœ์‹  ํ•ญ๋ชฉ ์ˆ˜์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:10,integer:!0},{path:"launch.enabled",category:"system",group:"Available Tools",label:{en:"Launch",ko:"Launch"},description:{en:"Enable the launch tool for supervising shared long-running project processes",ko:"๊ณต์œ  ์žฅ๊ธฐ ์‹คํ–‰ ํ”„๋กœ์ ํŠธ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ๋…ํ•˜๋Š” launch ๋„๊ตฌ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,admin:!0,confirmation:!0},{path:"vault.enabled",category:"system",group:"Available Tools",label:{en:"Obsidian Vault",ko:"Obsidian Vault"},description:{en:"Enable the vault:// internal URL for reading and editing Obsidian vault content via the Obsidian CLI. When disabled, vault:// resolution is refused and the vault:// entry is omitted from the system prompt.",ko:"Obsidian CLI๋ฅผ ํ†ตํ•ด Obsidian vault ์ฝ˜ํ…์ธ ๋ฅผ ์ฝ๊ณ  ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๋„๋ก vault:// ๋‚ด๋ถ€ URL์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด vault:// ํ•ด์„์ด ๊ฑฐ๋ถ€๋˜๊ณ  ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ์—์„œ vault:// ํ•ญ๋ชฉ์ด ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"web_search.enabled",category:"system",group:"Available Tools",label:{en:"Web Search",ko:"์›น ๊ฒ€์ƒ‰"},description:{en:"Enable the web_search tool for live web results",ko:"์‹ค์‹œ๊ฐ„ ์›น ๊ฒฐ๊ณผ๋ฅผ ์œ„ํ•œ web_search ๋„๊ตฌ๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"mcp.enableProjectConfig",category:"system",group:"Discovery & MCP",label:{en:"MCP Project Config",ko:"MCP ํ”„๋กœ์ ํŠธ ์„ค์ •"},description:{en:"Load .mcp.json/mcp.json from project root",ko:"ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์—์„œ .mcp.json/mcp.json์„ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0,admin:!0,confirmation:!0},{path:"mcp.startupTimeoutMs",category:"system",group:"Discovery & MCP",label:{en:"MCP Startup Window",ko:"MCP ์‹œ์ž‘ ๋Œ€๊ธฐ ์‹œ๊ฐ„"},description:{en:"Wait this many milliseconds for initial MCP tool discovery; 0 waits until connections settle",ko:"์ดˆ๊ธฐ MCP ๋„๊ตฌ ๊ฒ€์ƒ‰์„ ๊ธฐ๋‹ค๋ฆด ์‹œ๊ฐ„(ms)์ž…๋‹ˆ๋‹ค. 0์ด๋ฉด ์—ฐ๊ฒฐ์ด ์•ˆ์ •๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:250,integer:!0},{path:"mcp.notificationDebounceMs",category:"system",group:"Discovery & MCP",label:{en:"MCP Notification Debounce",ko:"MCP ์•Œ๋ฆผ ๋””๋ฐ”์šด์Šค"},description:{en:"Debounce window in milliseconds for MCP resource updates before injecting them into the conversation",ko:"MCP ๋ฆฌ์†Œ์Šค ์—…๋ฐ์ดํŠธ๋ฅผ ๋Œ€ํ™”์— ์‚ฝ์ž…ํ•˜๊ธฐ ์ „ ์ ์šฉํ•  ๋””๋ฐ”์šด์Šค ์‹œ๊ฐ„(ms)์ž…๋‹ˆ๋‹ค."},kind:"number",scope:"both",defaultValue:500,integer:!0},{path:"mcp.notifications",category:"system",group:"Discovery & MCP",label:{en:"MCP Update Injection",ko:"MCP ์—…๋ฐ์ดํŠธ ์‚ฝ์ž…"},description:{en:"Inject MCP resource updates into the agent conversation",ko:"MCP ๋ฆฌ์†Œ์Šค ์—…๋ฐ์ดํŠธ๋ฅผ ์—์ด์ „ํŠธ ๋Œ€ํ™”์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"marketplace.autoUpdate",category:"system",group:"Startup & Updates",label:{en:"Marketplace Auto-Update",ko:"๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ์ž๋™ ์—…๋ฐ์ดํŠธ"},description:{en:"Check for plugin updates on startup",ko:"์‹œ์ž‘ํ•  ๋•Œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์—…๋ฐ์ดํŠธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"notify",choices:["off","notify","auto"],admin:!0,confirmation:!0,appliesTo:{en:"auto installs plugin updates without prompting.",ko:"auto๋Š” ํ™•์ธ ์—†์ด ํ”Œ๋Ÿฌ๊ทธ์ธ ์—…๋ฐ์ดํŠธ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค."}},{path:"update.channel",category:"system",group:"Startup & Updates",label:{en:"Update Channel",ko:"์—…๋ฐ์ดํŠธ ์ฑ„๋„"},description:{en:"Update channel used by omp update and the startup update check",ko:"omp update์™€ ์‹œ์ž‘ ์‹œ ์—…๋ฐ์ดํŠธ ํ™•์ธ์— ์‚ฌ์šฉํ•  ์—…๋ฐ์ดํŠธ ์ฑ„๋„์ž…๋‹ˆ๋‹ค."},kind:"enum",scope:"global",defaultValue:"stable",choices:["stable","canary"],admin:!0,confirmation:!0},{path:"share.serverUrl",category:"system",group:"Share",label:{en:"Share Server",ko:"๊ณต์œ  ์„œ๋ฒ„"},description:{en:"Share viewer/upload base used by /share (encrypted blob upload + viewer; links are <base>/<id>#<key>)",ko:"/share๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ณต์œ  ๋ทฐ์–ด/์—…๋กœ๋“œ ๊ธฐ๋ณธ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค(์•”ํ˜ธํ™”๋œ blob ์—…๋กœ๋“œ ๋ฐ ๋ทฐ์–ด, ๋งํฌ ํ˜•์‹์€ <base>/<id>#<key>)."},kind:"string",scope:"global",defaultValue:"https://my.omp.sh/s",admin:!0,confirmation:!0},{path:"share.store",category:"system",group:"Share",label:{en:"Share Store",ko:"๊ณต์œ  ์ €์žฅ์†Œ"},description:{en:"Where /share uploads the encrypted session blob",ko:"/share๊ฐ€ ์•”ํ˜ธํ™”๋œ ์„ธ์…˜ blob์„ ์—…๋กœ๋“œํ•  ์œ„์น˜์ž…๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"blob",choices:["blob","gist"]},{path:"share.redactSecrets",category:"system",group:"Share",label:{en:"Share Secret Redaction",ko:"๊ณต์œ  ์‹œ ๋น„๋ฐ€ ์ •๋ณด ๊ฐ€๋ฆฌ๊ธฐ"},description:{en:"Run the secret obfuscator over /share snapshots before upload (uses the secrets.* config)",ko:"/share ์Šค๋ƒ…์ƒท์„ ์—…๋กœ๋“œํ•˜๊ธฐ ์ „์— ๋น„๋ฐ€ ์ •๋ณด ๋‚œ๋…ํ™”๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค(secrets.* ์„ค์ • ์‚ฌ์šฉ)."},kind:"boolean",scope:"both",defaultValue:!0,admin:!0,confirmation:!0},{path:"plan.autosave",category:"system",group:"Plan",label:{en:"Autosave",ko:"์ž๋™ ์ €์žฅ"},description:{en:"Automatically save approved plans to disk when plan mode completes",ko:"๊ณ„ํš ๋ชจ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์Šน์ธ๋œ ๊ณ„ํš์„ ๋””์Šคํฌ์— ์ž๋™ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"plan.autosaveDir",category:"system",group:"Plan",label:{en:"Autosave Dir",ko:"์ž๋™ ์ €์žฅ ๋””๋ ‰ํ„ฐ๋ฆฌ"},description:{en:"Directory for autosaved plans. Supports ~, absolute, and cwd-relative paths. Empty uses <project>/.omp/plans/.",ko:"์ž๋™ ์ €์žฅ๋œ ๊ณ„ํš์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค. ~, ์ ˆ๋Œ€ ๊ฒฝ๋กœ ๋ฐ cwd ๊ธฐ์ค€ ์ƒ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋น„์›Œ ๋‘๋ฉด <project>/.omp/plans/๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค."},kind:"string",scope:"both",admin:!0},{path:"plan.defaultOnStartup",category:"system",group:"Modes",label:{en:"Start in Plan Mode",ko:"๊ณ„ํš ๋ชจ๋“œ๋กœ ์‹œ์ž‘"},description:{en:"Automatically enter plan mode at the start of every new session",ko:"์ƒˆ ์„ธ์…˜์„ ์‹œ์ž‘ํ•  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ๊ณ„ํš ๋ชจ๋“œ์— ์ง„์ž…ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"plan.enabled",category:"system",group:"Modes",label:{en:"Plan Mode",ko:"๊ณ„ํš ๋ชจ๋“œ"},description:{en:"Enable plan mode for read-only exploration and planning before execution",ko:"์‹คํ–‰ ์ „์— ์ฝ๊ธฐ ์ „์šฉ ํƒ์ƒ‰๊ณผ ๊ณ„ํš์„ ์œ„ํ•œ ๊ณ„ํš ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"power.sleepPrevention",category:"system",group:"Power",label:{en:"Sleep Prevention",ko:"์ ˆ์ „ ๋ฐฉ์ง€"},description:{en:"Prevent the system sleeping during active sessions. Each level is cumulative โ€” it adds the flags of all lower levels.",ko:"ํ™œ์„ฑ ์„ธ์…˜ ์ค‘ ์‹œ์Šคํ…œ์ด ์ ˆ์ „ ๋ชจ๋“œ๋กœ ์ „ํ™˜๋˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋‹จ๊ณ„๋Š” ๋ˆ„์ ๋˜๋ฉฐ ๋ชจ๋“  ํ•˜์œ„ ๋‹จ๊ณ„์˜ ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค."},kind:"enum",scope:"both",defaultValue:"idle",choices:["off","idle","display","system"],admin:!0,confirmation:!0},{path:"readLineNumbers",category:"system",group:"Reading",label:{en:"Line Numbers",ko:"์ค„ ๋ฒˆํ˜ธ"},description:{en:"Prepend line numbers to read tool output by default",ko:"๊ธฐ๋ณธ์ ์œผ๋กœ read ๋„๊ตฌ ์ถœ๋ ฅ ์•ž์— ์ค„ ๋ฒˆํ˜ธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!1},{path:"shellPath",category:"system",group:"Shell Path",label:{en:"Shell Path",ko:"์…ธ ๊ฒฝ๋กœ"},description:{en:"Sets the shell executable path.",ko:"์…ธ ์‹คํ–‰ ํŒŒ์ผ ๊ฒฝ๋กœ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค."},kind:"string",scope:"both",admin:!0,confirmation:!0},{path:"skillful",category:"system",group:"Prompt",label:{en:"List Skills in Prompt",ko:"ํ”„๋กฌํ”„ํŠธ์— ์Šคํ‚ฌ ๋ชฉ๋ก ํ‘œ์‹œ"},description:{en:"List available skills in the system prompt; disable to save context and toggle per-session with /skillful",ko:"์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์Šคํ‚ฌ์„ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค. ์ปจํ…์ŠคํŠธ๋ฅผ ์ ˆ์•ฝํ•˜๋ ค๋ฉด ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  ์„ธ์…˜๋ณ„๋กœ /skillful์„ ์‚ฌ์šฉํ•ด ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."},kind:"boolean",scope:"both",defaultValue:!0},{path:"workspace.additionalDirectories",category:"system",group:"General",label:{en:"Additional Workspace Dirs",ko:"์ถ”๊ฐ€ ์›Œํฌ์ŠคํŽ˜์ด์Šค ๋””๋ ‰ํ„ฐ๋ฆฌ"},description:{en:"Extra workspace directories added to every session as additional roots (multi-root workspace). Managed live via /add-dir and /remove-dir. Paths resolve relative to cwd; absolute paths recommended. The agent is told these roots exist and can read/grep/glob them.",ko:"๋ชจ๋“  ์„ธ์…˜์— ์ถ”๊ฐ€ ๋ฃจํŠธ๋กœ ํฌํ•จํ•  ์›Œํฌ์ŠคํŽ˜์ด์Šค ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค(๋‹ค์ค‘ ๋ฃจํŠธ ์›Œํฌ์ŠคํŽ˜์ด์Šค). /add-dir ๋ฐ /remove-dir๋กœ ์‹ค์‹œ๊ฐ„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ๋กœ๋Š” cwd๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•ด์„๋˜๋ฉฐ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. ์—์ด์ „ํŠธ๋Š” ์ด๋Ÿฌํ•œ ๋ฃจํŠธ์˜ ์กด์žฌ๋ฅผ ์•ˆ๋‚ด๋ฐ›๊ณ  read/grep/globํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."},kind:"array",scope:"both",defaultValue:[],items:"string",admin:!0,confirmation:!0}]},86272:(e,o,t)=>{t.d(o,{A:()=>a});let a=(0,t(99537).A)("sparkles",[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]])},90710:(e,o,t)=>{t.d(o,{A:()=>a});let a=(0,t(99537).A)("bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]])},99030:(e,o,t)=>{t.d(o,{J9:()=>r,Pg:()=>s,RX:()=>l});let a="ompgui:hide-thinking",n="ompgui:hide-thinking-change",i=!1;function s(){try{let e=window.localStorage.getItem(a);return("true"===e||"false"===e)&&(i="true"===e),i}catch{return i}}function r(e){i=e;try{window.localStorage.setItem(a,String(e))}catch{}window.dispatchEvent(new Event(n))}function l(e){let o=o=>{o.key===a&&e()};return window.addEventListener("storage",o),window.addEventListener(n,e),()=>{window.removeEventListener("storage",o),window.removeEventListener(n,e)}}},99314:(e,o,t)=>{t.d(o,{A:()=>a});let a=(0,t(99537).A)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]])}}]);