@kvman/kvcoder 0.1.5 → 0.1.7

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 (388) hide show
  1. package/dist/api.d.ts +49 -3
  2. package/dist/api.d.ts.map +1 -1
  3. package/dist/calls/run-shell.d.ts.map +1 -1
  4. package/dist/calls/run-shell.js +39 -9
  5. package/dist/calls/run-shell.js.map +1 -1
  6. package/dist/connector-call.d.ts +1 -1
  7. package/dist/connector-call.d.ts.map +1 -1
  8. package/dist/connector-call.js +4 -2
  9. package/dist/connector-call.js.map +1 -1
  10. package/dist/connectors/artifact.d.ts +1 -1
  11. package/dist/connectors/artifact.d.ts.map +1 -1
  12. package/dist/connectors/artifact.js +4 -4
  13. package/dist/connectors/artifact.js.map +1 -1
  14. package/dist/connectors/ask.d.ts +24 -0
  15. package/dist/connectors/ask.d.ts.map +1 -1
  16. package/dist/connectors/ask.js +20 -11
  17. package/dist/connectors/ask.js.map +1 -1
  18. package/dist/connectors/background.d.ts +14 -1
  19. package/dist/connectors/background.d.ts.map +1 -1
  20. package/dist/connectors/background.js +53 -23
  21. package/dist/connectors/background.js.map +1 -1
  22. package/dist/connectors/builtin-connectors.d.ts +111 -0
  23. package/dist/connectors/builtin-connectors.d.ts.map +1 -1
  24. package/dist/connectors/builtin-connectors.js +4 -1
  25. package/dist/connectors/builtin-connectors.js.map +1 -1
  26. package/dist/connectors/delegate.d.ts +9 -3
  27. package/dist/connectors/delegate.d.ts.map +1 -1
  28. package/dist/connectors/delegate.js +29 -10
  29. package/dist/connectors/delegate.js.map +1 -1
  30. package/dist/connectors/execution-map.d.ts +62 -0
  31. package/dist/connectors/execution-map.d.ts.map +1 -0
  32. package/dist/connectors/execution-map.js +142 -0
  33. package/dist/connectors/execution-map.js.map +1 -0
  34. package/dist/connectors/fs.d.ts +32 -1
  35. package/dist/connectors/fs.d.ts.map +1 -1
  36. package/dist/connectors/fs.js +76 -45
  37. package/dist/connectors/fs.js.map +1 -1
  38. package/dist/connectors/mcp.d.ts +18 -1
  39. package/dist/connectors/mcp.d.ts.map +1 -1
  40. package/dist/connectors/mcp.js +54 -6
  41. package/dist/connectors/mcp.js.map +1 -1
  42. package/dist/connectors/payload-fields.d.ts.map +1 -1
  43. package/dist/connectors/payload-fields.js +1 -1
  44. package/dist/connectors/payload-fields.js.map +1 -1
  45. package/dist/delegate/approved-run.d.ts +4 -6
  46. package/dist/delegate/approved-run.d.ts.map +1 -1
  47. package/dist/delegate/approved-run.js +74 -34
  48. package/dist/delegate/approved-run.js.map +1 -1
  49. package/dist/delegate/git-staging.d.ts +12 -0
  50. package/dist/delegate/git-staging.d.ts.map +1 -0
  51. package/dist/delegate/git-staging.js +54 -0
  52. package/dist/delegate/git-staging.js.map +1 -0
  53. package/dist/delegate/permission.d.ts +240 -0
  54. package/dist/delegate/permission.d.ts.map +1 -0
  55. package/dist/delegate/permission.js +78 -0
  56. package/dist/delegate/permission.js.map +1 -0
  57. package/dist/delegate/program-permission.d.ts +27 -0
  58. package/dist/delegate/program-permission.d.ts.map +1 -0
  59. package/dist/delegate/program-permission.js +53 -0
  60. package/dist/delegate/program-permission.js.map +1 -0
  61. package/dist/delegate/register-worker-run.d.ts.map +1 -1
  62. package/dist/delegate/register-worker-run.js +27 -11
  63. package/dist/delegate/register-worker-run.js.map +1 -1
  64. package/dist/delegate/run-program.d.ts.map +1 -1
  65. package/dist/delegate/run-program.js +29 -8
  66. package/dist/delegate/run-program.js.map +1 -1
  67. package/dist/delegate/runs.d.ts +14 -4
  68. package/dist/delegate/runs.d.ts.map +1 -1
  69. package/dist/delegate/runs.js +49 -19
  70. package/dist/delegate/runs.js.map +1 -1
  71. package/dist/delegate/staging-guard.d.ts +9 -0
  72. package/dist/delegate/staging-guard.d.ts.map +1 -0
  73. package/dist/delegate/staging-guard.js +55 -0
  74. package/dist/delegate/staging-guard.js.map +1 -0
  75. package/dist/delegate/start-background.d.ts +7 -0
  76. package/dist/delegate/start-background.d.ts.map +1 -0
  77. package/dist/delegate/start-background.js +32 -0
  78. package/dist/delegate/start-background.js.map +1 -0
  79. package/dist/delegate/start-pending.d.ts +5 -0
  80. package/dist/delegate/start-pending.d.ts.map +1 -0
  81. package/dist/delegate/start-pending.js +42 -0
  82. package/dist/delegate/start-pending.js.map +1 -0
  83. package/dist/delegate/workers.d.ts +5 -2
  84. package/dist/delegate/workers.d.ts.map +1 -1
  85. package/dist/delegate/workers.js +44 -8
  86. package/dist/delegate/workers.js.map +1 -1
  87. package/dist/files/file-change.d.ts +28 -0
  88. package/dist/files/file-change.d.ts.map +1 -0
  89. package/dist/files/file-change.js +125 -0
  90. package/dist/files/file-change.js.map +1 -0
  91. package/dist/files/file-parts.d.ts +18 -0
  92. package/dist/files/file-parts.d.ts.map +1 -0
  93. package/dist/files/file-parts.js +40 -0
  94. package/dist/files/file-parts.js.map +1 -0
  95. package/dist/files/read-file.d.ts +9 -1
  96. package/dist/files/read-file.d.ts.map +1 -1
  97. package/dist/files/read-file.js +35 -13
  98. package/dist/files/read-file.js.map +1 -1
  99. package/dist/files/search-text.d.ts +12 -2
  100. package/dist/files/search-text.d.ts.map +1 -1
  101. package/dist/files/search-text.js +87 -23
  102. package/dist/files/search-text.js.map +1 -1
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +4 -0
  105. package/dist/index.js.map +1 -1
  106. package/dist/jobs/job-rows.d.ts +11 -2
  107. package/dist/jobs/job-rows.d.ts.map +1 -1
  108. package/dist/jobs/job-rows.js +25 -14
  109. package/dist/jobs/job-rows.js.map +1 -1
  110. package/dist/jobs/process-handlers.d.ts.map +1 -1
  111. package/dist/jobs/process-handlers.js +12 -1
  112. package/dist/jobs/process-handlers.js.map +1 -1
  113. package/dist/jobs/process-report.d.ts.map +1 -1
  114. package/dist/jobs/process-report.js +2 -1
  115. package/dist/jobs/process-report.js.map +1 -1
  116. package/dist/jobs/process-run.d.ts.map +1 -1
  117. package/dist/jobs/process-run.js +2 -1
  118. package/dist/jobs/process-run.js.map +1 -1
  119. package/dist/jobs/register-jobs.d.ts.map +1 -1
  120. package/dist/jobs/register-jobs.js +1 -0
  121. package/dist/jobs/register-jobs.js.map +1 -1
  122. package/dist/maps/map-reminder.d.ts +7 -0
  123. package/dist/maps/map-reminder.d.ts.map +1 -0
  124. package/dist/maps/map-reminder.js +24 -0
  125. package/dist/maps/map-reminder.js.map +1 -0
  126. package/dist/maps/map-rules.d.ts +36 -0
  127. package/dist/maps/map-rules.d.ts.map +1 -0
  128. package/dist/maps/map-rules.js +86 -0
  129. package/dist/maps/map-rules.js.map +1 -0
  130. package/dist/maps/map-schema.d.ts +55 -0
  131. package/dist/maps/map-schema.d.ts.map +1 -0
  132. package/dist/maps/map-schema.js +27 -0
  133. package/dist/maps/map-schema.js.map +1 -0
  134. package/dist/maps/register-maps.d.ts +3 -0
  135. package/dist/maps/register-maps.d.ts.map +1 -0
  136. package/dist/maps/register-maps.js +21 -0
  137. package/dist/maps/register-maps.js.map +1 -0
  138. package/dist/mcp/connect.d.ts +2 -0
  139. package/dist/mcp/connect.d.ts.map +1 -1
  140. package/dist/mcp/connect.js +16 -4
  141. package/dist/mcp/connect.js.map +1 -1
  142. package/dist/mcp/oauth-provider.d.ts +8 -5
  143. package/dist/mcp/oauth-provider.d.ts.map +1 -1
  144. package/dist/mcp/oauth-provider.js +31 -22
  145. package/dist/mcp/oauth-provider.js.map +1 -1
  146. package/dist/mcp/secrets.d.ts +2 -0
  147. package/dist/mcp/secrets.d.ts.map +1 -1
  148. package/dist/mcp/secrets.js +6 -0
  149. package/dist/mcp/secrets.js.map +1 -1
  150. package/dist/mcp/sign-in.d.ts.map +1 -1
  151. package/dist/mcp/sign-in.js +12 -4
  152. package/dist/mcp/sign-in.js.map +1 -1
  153. package/dist/messages/receive-message.d.ts +2 -1
  154. package/dist/messages/receive-message.d.ts.map +1 -1
  155. package/dist/messages/receive-message.js +34 -9
  156. package/dist/messages/receive-message.js.map +1 -1
  157. package/dist/messages/register-messages.d.ts.map +1 -1
  158. package/dist/messages/register-messages.js +13 -8
  159. package/dist/messages/register-messages.js.map +1 -1
  160. package/dist/messages/send-receipt.d.ts +10 -0
  161. package/dist/messages/send-receipt.d.ts.map +1 -0
  162. package/dist/messages/send-receipt.js +14 -0
  163. package/dist/messages/send-receipt.js.map +1 -0
  164. package/dist/prompt/build-prompt.d.ts +1 -0
  165. package/dist/prompt/build-prompt.d.ts.map +1 -1
  166. package/dist/prompt/build-prompt.js +5 -1
  167. package/dist/prompt/build-prompt.js.map +1 -1
  168. package/dist/prompt/project-rules.d.ts +6 -0
  169. package/dist/prompt/project-rules.d.ts.map +1 -0
  170. package/dist/prompt/project-rules.js +37 -0
  171. package/dist/prompt/project-rules.js.map +1 -0
  172. package/dist/prompt/session-grants.d.ts +209 -0
  173. package/dist/prompt/session-grants.d.ts.map +1 -0
  174. package/dist/prompt/session-grants.js +50 -0
  175. package/dist/prompt/session-grants.js.map +1 -0
  176. package/dist/prompt/session-prompt.d.ts +3 -2
  177. package/dist/prompt/session-prompt.d.ts.map +1 -1
  178. package/dist/prompt/session-prompt.js +24 -40
  179. package/dist/prompt/session-prompt.js.map +1 -1
  180. package/dist/prompt/working-method.d.ts.map +1 -1
  181. package/dist/prompt/working-method.js +22 -16
  182. package/dist/prompt/working-method.js.map +1 -1
  183. package/dist/register-settings.d.ts +3 -1
  184. package/dist/register-settings.d.ts.map +1 -1
  185. package/dist/register-settings.js +5 -4
  186. package/dist/register-settings.js.map +1 -1
  187. package/dist/registry/register-connectors.d.ts +9 -0
  188. package/dist/registry/register-connectors.d.ts.map +1 -1
  189. package/dist/registry/register-connectors.js +20 -12
  190. package/dist/registry/register-connectors.js.map +1 -1
  191. package/dist/result-text.d.ts +4 -0
  192. package/dist/result-text.d.ts.map +1 -1
  193. package/dist/result-text.js +9 -0
  194. package/dist/result-text.js.map +1 -1
  195. package/dist/schemas/records.d.ts +142 -0
  196. package/dist/schemas/records.d.ts.map +1 -1
  197. package/dist/schemas/records.js +60 -2
  198. package/dist/schemas/records.js.map +1 -1
  199. package/dist/sessions/execution-root.d.ts +8 -0
  200. package/dist/sessions/execution-root.d.ts.map +1 -0
  201. package/dist/sessions/execution-root.js +25 -0
  202. package/dist/sessions/execution-root.js.map +1 -0
  203. package/dist/sessions/new-session.d.ts +5 -1
  204. package/dist/sessions/new-session.d.ts.map +1 -1
  205. package/dist/sessions/new-session.js +17 -4
  206. package/dist/sessions/new-session.js.map +1 -1
  207. package/dist/sessions/register-context.d.ts.map +1 -1
  208. package/dist/sessions/register-context.js +6 -5
  209. package/dist/sessions/register-context.js.map +1 -1
  210. package/dist/sessions/register-fork-export.d.ts.map +1 -1
  211. package/dist/sessions/register-fork-export.js +5 -3
  212. package/dist/sessions/register-fork-export.js.map +1 -1
  213. package/dist/sessions/register-lifecycle.d.ts.map +1 -1
  214. package/dist/sessions/register-lifecycle.js +14 -5
  215. package/dist/sessions/register-lifecycle.js.map +1 -1
  216. package/dist/sessions/register-sessions.d.ts.map +1 -1
  217. package/dist/sessions/register-sessions.js +0 -2
  218. package/dist/sessions/register-sessions.js.map +1 -1
  219. package/dist/sessions/session-view.d.ts +23 -0
  220. package/dist/sessions/session-view.d.ts.map +1 -1
  221. package/dist/sessions/session-view.js +4 -1
  222. package/dist/sessions/session-view.js.map +1 -1
  223. package/dist/store/all-docs.d.ts +4 -0
  224. package/dist/store/all-docs.d.ts.map +1 -0
  225. package/dist/store/all-docs.js +14 -0
  226. package/dist/store/all-docs.js.map +1 -0
  227. package/dist/store/collections.d.ts +230 -0
  228. package/dist/store/collections.d.ts.map +1 -1
  229. package/dist/store/collections.js +16 -1
  230. package/dist/store/collections.js.map +1 -1
  231. package/dist/turns/answer-fingerprint.d.ts +4 -0
  232. package/dist/turns/answer-fingerprint.d.ts.map +1 -0
  233. package/dist/turns/answer-fingerprint.js +18 -0
  234. package/dist/turns/answer-fingerprint.js.map +1 -0
  235. package/dist/turns/apply-answer.d.ts +19 -0
  236. package/dist/turns/apply-answer.d.ts.map +1 -0
  237. package/dist/turns/apply-answer.js +47 -0
  238. package/dist/turns/apply-answer.js.map +1 -0
  239. package/dist/turns/background.d.ts +3 -0
  240. package/dist/turns/background.d.ts.map +1 -1
  241. package/dist/turns/background.js +13 -12
  242. package/dist/turns/background.js.map +1 -1
  243. package/dist/turns/call-groups.d.ts +9 -0
  244. package/dist/turns/call-groups.d.ts.map +1 -0
  245. package/dist/turns/call-groups.js +18 -0
  246. package/dist/turns/call-groups.js.map +1 -0
  247. package/dist/turns/call-permission.d.ts +22 -0
  248. package/dist/turns/call-permission.d.ts.map +1 -0
  249. package/dist/turns/call-permission.js +49 -0
  250. package/dist/turns/call-permission.js.map +1 -0
  251. package/dist/turns/cancel-step-job.d.ts +14 -0
  252. package/dist/turns/cancel-step-job.d.ts.map +1 -0
  253. package/dist/turns/cancel-step-job.js +35 -0
  254. package/dist/turns/cancel-step-job.js.map +1 -0
  255. package/dist/turns/child-result.d.ts +7 -0
  256. package/dist/turns/child-result.d.ts.map +1 -0
  257. package/dist/turns/child-result.js +24 -0
  258. package/dist/turns/child-result.js.map +1 -0
  259. package/dist/turns/compaction.d.ts +15 -1
  260. package/dist/turns/compaction.d.ts.map +1 -1
  261. package/dist/turns/compaction.js +48 -18
  262. package/dist/turns/compaction.js.map +1 -1
  263. package/dist/turns/end-turn-state.d.ts +42 -0
  264. package/dist/turns/end-turn-state.d.ts.map +1 -0
  265. package/dist/turns/end-turn-state.js +64 -0
  266. package/dist/turns/end-turn-state.js.map +1 -0
  267. package/dist/turns/end-turn.d.ts +7 -8
  268. package/dist/turns/end-turn.d.ts.map +1 -1
  269. package/dist/turns/end-turn.js +52 -55
  270. package/dist/turns/end-turn.js.map +1 -1
  271. package/dist/turns/helper-calls.d.ts +6 -0
  272. package/dist/turns/helper-calls.d.ts.map +1 -0
  273. package/dist/turns/helper-calls.js +8 -0
  274. package/dist/turns/helper-calls.js.map +1 -0
  275. package/dist/turns/history.d.ts +3 -1
  276. package/dist/turns/history.d.ts.map +1 -1
  277. package/dist/turns/history.js +15 -7
  278. package/dist/turns/history.js.map +1 -1
  279. package/dist/turns/lost-reply.d.ts +7 -0
  280. package/dist/turns/lost-reply.d.ts.map +1 -1
  281. package/dist/turns/lost-reply.js +12 -0
  282. package/dist/turns/lost-reply.js.map +1 -1
  283. package/dist/turns/message-blocks.d.ts +2 -0
  284. package/dist/turns/message-blocks.d.ts.map +1 -1
  285. package/dist/turns/message-blocks.js +7 -0
  286. package/dist/turns/message-blocks.js.map +1 -1
  287. package/dist/turns/model-context.d.ts +2 -0
  288. package/dist/turns/model-context.d.ts.map +1 -1
  289. package/dist/turns/model-context.js +29 -5
  290. package/dist/turns/model-context.js.map +1 -1
  291. package/dist/turns/model-retry.d.ts +2 -1
  292. package/dist/turns/model-retry.d.ts.map +1 -1
  293. package/dist/turns/model-retry.js +5 -1
  294. package/dist/turns/model-retry.js.map +1 -1
  295. package/dist/turns/read-only.d.ts +6 -0
  296. package/dist/turns/read-only.d.ts.map +1 -0
  297. package/dist/turns/read-only.js +12 -0
  298. package/dist/turns/read-only.js.map +1 -0
  299. package/dist/turns/receipt-job.d.ts +5 -0
  300. package/dist/turns/receipt-job.d.ts.map +1 -0
  301. package/dist/turns/receipt-job.js +40 -0
  302. package/dist/turns/receipt-job.js.map +1 -0
  303. package/dist/turns/recover-workspace.d.ts +9 -0
  304. package/dist/turns/recover-workspace.d.ts.map +1 -0
  305. package/dist/turns/recover-workspace.js +79 -0
  306. package/dist/turns/recover-workspace.js.map +1 -0
  307. package/dist/turns/recovery-state.d.ts +19 -0
  308. package/dist/turns/recovery-state.d.ts.map +1 -0
  309. package/dist/turns/recovery-state.js +87 -0
  310. package/dist/turns/recovery-state.js.map +1 -0
  311. package/dist/turns/register-interruptions.d.ts.map +1 -1
  312. package/dist/turns/register-interruptions.js +19 -8
  313. package/dist/turns/register-interruptions.js.map +1 -1
  314. package/dist/turns/register-turns.d.ts.map +1 -1
  315. package/dist/turns/register-turns.js +42 -31
  316. package/dist/turns/register-turns.js.map +1 -1
  317. package/dist/turns/resolve.d.ts +4 -0
  318. package/dist/turns/resolve.d.ts.map +1 -1
  319. package/dist/turns/resolve.js +19 -17
  320. package/dist/turns/resolve.js.map +1 -1
  321. package/dist/turns/retry-turn.d.ts +4 -0
  322. package/dist/turns/retry-turn.d.ts.map +1 -0
  323. package/dist/turns/retry-turn.js +20 -0
  324. package/dist/turns/retry-turn.js.map +1 -0
  325. package/dist/turns/run-calls.d.ts +21 -4
  326. package/dist/turns/run-calls.d.ts.map +1 -1
  327. package/dist/turns/run-calls.js +157 -41
  328. package/dist/turns/run-calls.js.map +1 -1
  329. package/dist/turns/run-command.d.ts +5 -3
  330. package/dist/turns/run-command.d.ts.map +1 -1
  331. package/dist/turns/run-command.js +21 -12
  332. package/dist/turns/run-command.js.map +1 -1
  333. package/dist/turns/settle-calls.d.ts +2 -8
  334. package/dist/turns/settle-calls.d.ts.map +1 -1
  335. package/dist/turns/settle-calls.js +26 -35
  336. package/dist/turns/settle-calls.js.map +1 -1
  337. package/dist/turns/start-turn.d.ts +8 -83
  338. package/dist/turns/start-turn.d.ts.map +1 -1
  339. package/dist/turns/start-turn.js +35 -24
  340. package/dist/turns/start-turn.js.map +1 -1
  341. package/dist/turns/step-claim.d.ts +39 -0
  342. package/dist/turns/step-claim.d.ts.map +1 -0
  343. package/dist/turns/step-claim.js +72 -0
  344. package/dist/turns/step-claim.js.map +1 -0
  345. package/dist/turns/step-intents.d.ts +31 -0
  346. package/dist/turns/step-intents.d.ts.map +1 -0
  347. package/dist/turns/step-intents.js +101 -0
  348. package/dist/turns/step-intents.js.map +1 -0
  349. package/dist/turns/step-next.d.ts +17 -0
  350. package/dist/turns/step-next.d.ts.map +1 -0
  351. package/dist/turns/step-next.js +25 -0
  352. package/dist/turns/step-next.js.map +1 -0
  353. package/dist/turns/step.d.ts +1 -1
  354. package/dist/turns/step.d.ts.map +1 -1
  355. package/dist/turns/step.js +108 -88
  356. package/dist/turns/step.js.map +1 -1
  357. package/dist/turns/summary-facts.d.ts +25 -0
  358. package/dist/turns/summary-facts.d.ts.map +1 -0
  359. package/dist/turns/summary-facts.js +63 -0
  360. package/dist/turns/summary-facts.js.map +1 -0
  361. package/dist/turns/usage.d.ts +7 -0
  362. package/dist/turns/usage.d.ts.map +1 -0
  363. package/dist/turns/usage.js +18 -0
  364. package/dist/turns/usage.js.map +1 -0
  365. package/dist/ui/register-ui.js +3 -3
  366. package/dist/ui/register-ui.js.map +1 -1
  367. package/dist/web/components/approval.css +2 -0
  368. package/dist/web/components/approval.js +233 -0
  369. package/dist/web/components/call.css +1 -1
  370. package/dist/web/components/call.js +841 -131
  371. package/dist/web/components/connectors.css +1 -1
  372. package/dist/web/components/connectors.js +595 -592
  373. package/dist/web/components/conversation.css +1 -1
  374. package/dist/web/components/conversation.js +3341 -1418
  375. package/dist/web/components/mcp-sign-in.css +1 -1
  376. package/dist/web/components/model.css +1 -1
  377. package/dist/web/components/model.js +138 -134
  378. package/dist/web/components/question.css +1 -1
  379. package/dist/web/components/question.js +148 -78
  380. package/dist/web/components/sessions.css +1 -1
  381. package/docs/connectors.md +2 -2
  382. package/locales/ar.json +119 -12
  383. package/locales/en.json +119 -12
  384. package/package.json +6 -6
  385. package/dist/turns/cancel-turn.d.ts +0 -3
  386. package/dist/turns/cancel-turn.d.ts.map +0 -1
  387. package/dist/turns/cancel-turn.js +0 -31
  388. package/dist/turns/cancel-turn.js.map +0 -1
@@ -1,6 +1,6 @@
1
- import { Fragment as e, computed as t, createBlock as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, createTextVNode as o, createVNode as s, defineComponent as c, h as l, inject as u, isRef as d, mergeModels as f, mergeProps as p, nextTick as m, onBeforeUnmount as h, onMounted as g, onUnmounted as _, openBlock as v, reactive as y, ref as b, renderList as x, renderSlot as S, shallowRef as C, toDisplayString as w, unref as T, useModel as E, useTemplateRef as D, vModelCheckbox as O, vModelRadio as k, vModelSelect as A, vModelText as j, watch as M, withCtx as N, withDirectives as P, withKeys as F, withModifiers as I } from "vue";
1
+ import { Fragment as e, computed as t, createBlock as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, createTextVNode as o, createVNode as s, defineComponent as c, h as l, inject as u, mergeModels as d, mergeProps as f, nextTick as p, onBeforeUnmount as m, onMounted as h, onUnmounted as g, openBlock as _, reactive as v, ref as y, renderList as b, renderSlot as x, shallowRef as S, toDisplayString as C, unref as w, useModel as T, useTemplateRef as E, vModelCheckbox as D, vModelRadio as O, vModelSelect as k, vModelText as A, watch as j, withCtx as M, withDirectives as N, withKeys as P, withModifiers as F } from "vue";
2
2
  //#region ../../node_modules/.pnpm/@lucide+vue@1.49.0_vue@3.5.43_typescript@6.0.3_/node_modules/@lucide/vue/dist/esm/shared/src/build/defaultAttributes.mjs
3
- var L = {
3
+ var I = {
4
4
  xmlns: "http://www.w3.org/2000/svg",
5
5
  width: 24,
6
6
  height: 24,
@@ -10,25 +10,25 @@ var L = {
10
10
  "stroke-width": 2,
11
11
  "stroke-linecap": "round",
12
12
  "stroke-linejoin": "round"
13
- }, R = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim();
13
+ }, L = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim();
14
14
  //#endregion
15
15
  //#region ../../node_modules/.pnpm/@lucide+vue@1.49.0_vue@3.5.43_typescript@6.0.3_/node_modules/@lucide/vue/dist/esm/shared/src/build/buildLucideIconNode.mjs
16
- function z(e) {
16
+ function R(e) {
17
17
  return e != null;
18
18
  }
19
- function B(e, t = {}) {
20
- let n = t.attributeNames ?? {}, r = (e) => n[e] ?? e, i = e.size ?? e.width ?? L.width, a = e.size ?? e.height ?? L.height, o = e.aliases?.filter((e) => typeof e == "string" && e.trim() !== "").map((e) => `lucide-${e}`) ?? [], s = [...e.name ? [`lucide-${e.name}`] : [], ...o], c = t.className?.split(" ").filter(Boolean) ?? [], l = t.includeDefaultClasses === !1 ? R(...c) : R("lucide", ...s, ...c), u = t.absoluteStrokeWidth ? Number(t.strokeWidth ?? L["stroke-width"]) * Number(e.size ?? e.width ?? L.width) / Number(t.size ?? t.width ?? L.width) : t.strokeWidth ?? L["stroke-width"];
19
+ function ee(e, t = {}) {
20
+ let n = t.attributeNames ?? {}, r = (e) => n[e] ?? e, i = e.size ?? e.width ?? I.width, a = e.size ?? e.height ?? I.height, o = e.aliases?.filter((e) => typeof e == "string" && e.trim() !== "").map((e) => `lucide-${e}`) ?? [], s = [...e.name ? [`lucide-${e.name}`] : [], ...o], c = t.className?.split(" ").filter(Boolean) ?? [], l = t.includeDefaultClasses === !1 ? L(...c) : L("lucide", ...s, ...c), u = t.absoluteStrokeWidth ? Number(t.strokeWidth ?? I["stroke-width"]) * Number(e.size ?? e.width ?? I.width) / Number(t.size ?? t.width ?? I.width) : t.strokeWidth ?? I["stroke-width"];
21
21
  return [
22
22
  "svg",
23
23
  {
24
- ...Object.entries(L).reduce((e, [t, n]) => (e[r(t)] = n, e), {}),
24
+ ...Object.entries(I).reduce((e, [t, n]) => (e[r(t)] = n, e), {}),
25
25
  ..."color" in t && t.color && { [r("stroke")]: t.color },
26
- ..."size" in t && z(t.size) && {
26
+ ..."size" in t && R(t.size) && {
27
27
  [r("width")]: t.size,
28
28
  [r("height")]: t.size
29
29
  },
30
- ..."width" in t && z(t.width) && { [r("width")]: t.width },
31
- ..."height" in t && z(t.height) && { [r("height")]: t.height },
30
+ ..."width" in t && R(t.width) && { [r("width")]: t.width },
31
+ ..."height" in t && R(t.height) && { [r("height")]: t.height },
32
32
  [r("stroke-width")]: u,
33
33
  ...l && { [r("class")]: l },
34
34
  [r("viewBox")]: `0 0 ${i} ${a}`,
@@ -50,24 +50,24 @@ function B(e, t = {}) {
50
50
  }
51
51
  //#endregion
52
52
  //#region ../../node_modules/.pnpm/@lucide+vue@1.49.0_vue@3.5.43_typescript@6.0.3_/node_modules/@lucide/vue/dist/esm/shared/src/utils/hasA11yProp.mjs
53
- var V = (e) => {
53
+ var z = (e) => {
54
54
  for (let t in e) if (t.startsWith("aria-") || t === "role" || t === "title") return !0;
55
55
  return !1;
56
- }, H = (e) => e === "", U = (e) => e?.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), ee = /* @__PURE__ */ Symbol("lucide-icons");
57
- function te() {
58
- return u(ee, {});
56
+ }, B = (e) => e === "", V = (e) => e?.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), te = /* @__PURE__ */ Symbol("lucide-icons");
57
+ function ne() {
58
+ return u(te, {});
59
59
  }
60
60
  //#endregion
61
61
  //#region ../../node_modules/.pnpm/@lucide+vue@1.49.0_vue@3.5.43_typescript@6.0.3_/node_modules/@lucide/vue/dist/esm/Icon.mjs
62
- var ne = ({ name: e, iconNode: t, "icon-node": n, icon: r = {
63
- name: e && U(e),
62
+ var re = ({ name: e, iconNode: t, "icon-node": n, icon: r = {
63
+ name: e && V(e),
64
64
  node: t ?? n ?? [],
65
65
  size: 24,
66
66
  aliases: []
67
67
  }, absoluteStrokeWidth: i, "absolute-stroke-width": a, nonScalingStroke: o, "non-scaling-stroke": s, strokeWidth: c, "stroke-width": u, size: d, width: f = d, height: p = d, color: m, ...h }, { slots: g }) => {
68
- let { size: _, color: v, strokeWidth: y = 2, absoluteStrokeWidth: b = !1, nonScalingStroke: x = !1, class: S = "" } = te(), C = H(i) || H(a) || i === !0 || a === !0 || b === !0, w = H(o) || H(s) || o === !0 || s === !0 || x === !0;
68
+ let { size: _, color: v, strokeWidth: y = 2, absoluteStrokeWidth: b = !1, nonScalingStroke: x = !1, class: S = "" } = ne(), C = B(i) || B(a) || i === !0 || a === !0 || b === !0, w = B(o) || B(s) || o === !0 || s === !0 || x === !0;
69
69
  delete h.class;
70
- let T = g.default?.(), [, E, D = []] = B(r, {
70
+ let T = g.default?.(), [, E, D = []] = ee(r, {
71
71
  color: m ?? v,
72
72
  width: f ?? d ?? _,
73
73
  height: p ?? d ?? _,
@@ -75,38 +75,38 @@ var ne = ({ name: e, iconNode: t, "icon-node": n, icon: r = {
75
75
  absoluteStrokeWidth: C,
76
76
  nonScalingStroke: w,
77
77
  className: S,
78
- hasA11yProp: T != null && T.length > 0 || V(h),
78
+ hasA11yProp: T != null && T.length > 0 || z(h),
79
79
  attributes: h
80
80
  });
81
81
  return l("svg", E, [...D.map(([e, t]) => l(e, t)), ...T ?? []]);
82
82
  };
83
83
  //#endregion
84
84
  //#region ../../node_modules/.pnpm/@lucide+vue@1.49.0_vue@3.5.43_typescript@6.0.3_/node_modules/@lucide/vue/dist/esm/createLucideIcon.mjs
85
- function W(e, t = []) {
85
+ function H(e, t = []) {
86
86
  let n = typeof e == "string" ? {
87
87
  name: e,
88
88
  node: t
89
89
  } : e;
90
- return (e, { slots: t }) => l(ne, {
90
+ return (e, { slots: t }) => l(re, {
91
91
  ...e,
92
92
  icon: n
93
93
  }, t.default ? { default: t.default } : void 0);
94
94
  }
95
- var re = W({
95
+ var ie = H({
96
96
  name: "check",
97
97
  size: 24,
98
98
  node: [["path", {
99
99
  d: "M20 6 9 17l-5-5",
100
100
  key: "1gmf2c"
101
101
  }]]
102
- }), ie = W({
102
+ }), ae = H({
103
103
  name: "chevron-down",
104
104
  size: 24,
105
105
  node: [["path", {
106
106
  d: "m6 9 6 6 6-6",
107
107
  key: "qrunsl"
108
108
  }]]
109
- }), G = W({
109
+ }), U = H({
110
110
  name: "pencil",
111
111
  size: 24,
112
112
  node: [["path", {
@@ -116,7 +116,7 @@ var re = W({
116
116
  d: "m15 5 4 4",
117
117
  key: "1mk7zo"
118
118
  }]]
119
- }), K = W({
119
+ }), W = H({
120
120
  name: "plus",
121
121
  size: 24,
122
122
  node: [["path", {
@@ -126,7 +126,7 @@ var re = W({
126
126
  d: "M12 5v14",
127
127
  key: "s699le"
128
128
  }]]
129
- }), ae = W({
129
+ }), oe = H({
130
130
  name: "search",
131
131
  size: 24,
132
132
  node: [["path", {
@@ -138,7 +138,7 @@ var re = W({
138
138
  r: "8",
139
139
  key: "4ej97u"
140
140
  }]]
141
- }), oe = W({
141
+ }), G = H({
142
142
  name: "settings",
143
143
  size: 24,
144
144
  node: [["path", {
@@ -150,7 +150,7 @@ var re = W({
150
150
  r: "3",
151
151
  key: "1v7zrd"
152
152
  }]]
153
- }), se = W({
153
+ }), se = H({
154
154
  name: "trash",
155
155
  size: 24,
156
156
  node: [
@@ -176,7 +176,7 @@ var re = W({
176
176
  }]
177
177
  ],
178
178
  aliases: ["trash-2"]
179
- }), ce = W({
179
+ }), ce = H({
180
180
  name: "x",
181
181
  size: 24,
182
182
  node: [["path", {
@@ -189,7 +189,7 @@ var re = W({
189
189
  });
190
190
  //#endregion
191
191
  //#region web/src/kvman.ts
192
- function q() {
192
+ function K() {
193
193
  let e = u("kvman");
194
194
  if (e === void 0) throw Error("kvcoder components run inside kvwebui, which provides kvman.");
195
195
  return e;
@@ -212,7 +212,7 @@ function de(e) {
212
212
  function fe(e) {
213
213
  return Object.fromEntries(Object.entries(le(e)).map(([e, t]) => [e, typeof t == "string" ? t : JSON.stringify(t)]));
214
214
  }
215
- function J(e, t) {
215
+ function q(e, t) {
216
216
  let n = de(t);
217
217
  e.toast(n === void 0 ? "kvcoder.ui.failed" : ue(n.code), n?.params ?? {}, "error");
218
218
  }
@@ -229,42 +229,42 @@ var pe = ["aria-label"], me = { class: "kvc-dialog-head" }, he = { class: "kvc-c
229
229
  props: { name: {} },
230
230
  emits: ["close"],
231
231
  setup(e, { emit: t }) {
232
- let n = e, r = t, o = q(), c = D("dialog"), l = () => [...c.value?.querySelectorAll("button:not(:disabled), select:not(:disabled), input:not(:disabled), textarea:not(:disabled), a[href]") ?? []];
232
+ let n = e, r = t, o = K(), c = E("dialog"), l = () => [...c.value?.querySelectorAll("button:not(:disabled), select:not(:disabled), input:not(:disabled), textarea:not(:disabled), a[href]") ?? []];
233
233
  function u(e) {
234
234
  let t = l(), n = e.shiftKey ? t[0] : t.at(-1);
235
235
  (document.activeElement === n || document.activeElement === c.value) && (e.preventDefault(), (e.shiftKey ? t.at(-1) : t[0])?.focus());
236
236
  }
237
- return g(() => c.value?.focus()), (e, t) => (v(), i("div", {
237
+ return h(() => c.value?.focus()), (e, t) => (_(), i("div", {
238
238
  class: "kvc-dialog-backdrop",
239
239
  "data-test": "connector-dialog-backdrop",
240
- onClick: t[2] ||= I((e) => r("close"), ["self"])
240
+ onClick: t[2] ||= F((e) => r("close"), ["self"])
241
241
  }, [a("div", {
242
242
  ref_key: "dialog",
243
243
  ref: c,
244
244
  class: "kvc-dialog",
245
245
  role: "dialog",
246
246
  "aria-modal": "true",
247
- "aria-label": T(o).t("kvcoder.config.connectors.configure", { name: n.name }),
247
+ "aria-label": w(o).t("kvcoder.config.connectors.configure", { name: n.name }),
248
248
  tabindex: "-1",
249
249
  "data-test": "connector-dialog",
250
- onKeydown: [t[1] ||= F(I((e) => r("close"), ["stop"]), ["esc"]), F(u, ["tab"])]
251
- }, [a("div", me, [a("span", he, [a("span", ge, w(n.name), 1), a("span", _e, w(T(o).t(`kvcoder.config.dialog.scope.${T(o).scope.value}`, { name: T(o).workspace.value.name })), 1)]), a("button", {
250
+ onKeydown: [t[1] ||= P(F((e) => r("close"), ["stop"]), ["esc"]), P(u, ["tab"])]
251
+ }, [a("div", me, [a("span", he, [a("span", ge, C(n.name), 1), a("span", _e, C(w(o).t(`kvcoder.config.dialog.scope.${w(o).scope.value}`, { name: w(o).workspace.value.name })), 1)]), a("button", {
252
252
  type: "button",
253
253
  class: "kvc-button kvc-ghost kvc-icon-button",
254
- "aria-label": T(o).t("kvcoder.config.dialog.close"),
255
- title: T(o).t("kvcoder.config.dialog.close"),
254
+ "aria-label": w(o).t("kvcoder.config.dialog.close"),
255
+ title: w(o).t("kvcoder.config.dialog.close"),
256
256
  "data-test": "connector-dialog-close",
257
257
  onClick: t[0] ||= (e) => r("close")
258
- }, [s(T(ce), {
258
+ }, [s(w(ce), {
259
259
  size: 18,
260
260
  "aria-hidden": "true"
261
- })], 8, ve)]), S(e.$slots, "default")], 40, pe)]));
261
+ })], 8, ve)]), x(e.$slots, "default")], 40, pe)]));
262
262
  }
263
263
  });
264
264
  //#endregion
265
265
  //#region web/src/use-setting.ts
266
- function Y(e, n) {
267
- let r = C(null), i = b("default"), a = b(!1), o = async () => {
266
+ function J(e, n) {
267
+ let r = S(null), i = y("default"), a = y(!1), o = async () => {
268
268
  let t = (await e.exec("kernel.settings.list", {})).find((e) => e.key === n);
269
269
  r.value = t?.value ?? null, i.value = t?.source ?? "default";
270
270
  }, s = async (t) => {
@@ -272,12 +272,12 @@ function Y(e, n) {
272
272
  try {
273
273
  return await t(), await o(), !0;
274
274
  } catch (t) {
275
- return J(e, t), !1;
275
+ return q(e, t), !1;
276
276
  } finally {
277
277
  a.value = !1;
278
278
  }
279
279
  };
280
- return g(o), M(() => [e.scope.value, e.workspace.value.id], o), {
280
+ return h(o), j(() => [e.scope.value, e.workspace.value.id], o), {
281
281
  value: r,
282
282
  saving: a,
283
283
  locked: t(() => e.scope.value === "global" && i.value === "workspace"),
@@ -352,16 +352,17 @@ var Se = [
352
352
  "opencode",
353
353
  "pi",
354
354
  "claude"
355
- ], De = (e) => Array.isArray(e) && e.every((e) => typeof e == "string"), Oe = (e) => e === null || typeof e == "string", X = (e, t) => e.some((e) => e === t), Z = (e, ...t) => t.every((t) => t in e);
356
- function ke(e) {
357
- return typeof e != "object" || !e || !Z(e, "name", "description", "enabled", "kind", "instructions") || typeof e.name != "string" || typeof e.description != "string" || typeof e.enabled != "boolean" || typeof e.instructions != "string" ? !1 : e.kind === "subagent" ? Z(e, "connectors", "model", "thinking") && (e.connectors === null || De(e.connectors)) && Oe(e.model) && (e.thinking === null || X(Se, e.thinking)) : !Z(e, "approval", "timeoutMs", "model") || !X(["ask", "auto"], e.approval) || typeof e.timeoutMs != "number" || !Oe(e.model) ? !1 : e.kind === "opencode" ? Z(e, "agent", "autoApprove") && Oe(e.agent) && typeof e.autoApprove == "boolean" : e.kind === "pi" ? Z(e, "thinking", "tools") && (e.thinking === null || X(Ce, e.thinking)) && (e.tools === null || De(e.tools)) : e.kind === "claude" && Z(e, "effort", "permissionMode") && (e.effort === null || X(we, e.effort)) && X(Te, e.permissionMode);
355
+ ], De = (e) => Array.isArray(e) && e.every((e) => typeof e == "string"), Y = (e) => e === null || typeof e == "string", X = (e, t) => e.some((e) => e === t), Z = (e, ...t) => t.every((t) => t in e);
356
+ function Oe(e) {
357
+ return typeof e != "object" || !e || !Z(e, "name", "description", "enabled", "kind", "instructions") || typeof e.name != "string" || typeof e.description != "string" || typeof e.enabled != "boolean" || typeof e.instructions != "string" ? !1 : e.kind === "subagent" ? Z(e, "connectors", "model", "thinking") && (e.connectors === null || De(e.connectors)) && Y(e.model) && (e.thinking === null || X(Se, e.thinking)) : !Z(e, "approval", "timeoutMs", "model") || !X(["ask", "auto"], e.approval) || typeof e.timeoutMs != "number" || !Y(e.model) ? !1 : e.kind === "opencode" ? Z(e, "agent", "autoApprove") && Y(e.agent) && typeof e.autoApprove == "boolean" : e.kind === "pi" ? Z(e, "thinking", "tools") && (e.thinking === null || X(Ce, e.thinking)) && (e.tools === null || De(e.tools)) : e.kind === "claude" && Z(e, "effort", "permissionMode") && (e.effort === null || X(we, e.effort)) && X(Te, e.permissionMode);
358
358
  }
359
- var Ae = (e) => Array.isArray(e) ? e.filter(ke) : [], je = {
359
+ var ke = (e) => Array.isArray(e) ? e.filter(Oe) : [], Ae = {
360
360
  name: "",
361
361
  description: "",
362
362
  enabled: !0,
363
363
  instructions: "",
364
364
  kind: "subagent",
365
+ readOnly: !1,
365
366
  all: !0,
366
367
  connectors: [],
367
368
  model: null,
@@ -376,10 +377,10 @@ var Ae = (e) => Array.isArray(e) ? e.filter(ke) : [], je = {
376
377
  effort: "",
377
378
  permissionMode: "acceptEdits"
378
379
  };
379
- function Me(e) {
380
- if (e === void 0) return { ...je };
380
+ function je(e) {
381
+ if (e === void 0) return { ...Ae };
381
382
  let t = {
382
- ...je,
383
+ ...Ae,
383
384
  name: e.name,
384
385
  description: e.description,
385
386
  enabled: e.enabled,
@@ -388,6 +389,7 @@ function Me(e) {
388
389
  if (e.kind === "subagent") return {
389
390
  ...t,
390
391
  kind: "subagent",
392
+ readOnly: e.readOnly === !0,
391
393
  all: e.connectors === null,
392
394
  connectors: [...e.connectors ?? []],
393
395
  model: e.model,
@@ -417,7 +419,7 @@ function Me(e) {
417
419
  };
418
420
  }
419
421
  var Q = (e) => e === "" ? null : e;
420
- function Ne(e, t) {
422
+ function Me(e, t) {
421
423
  let n = {
422
424
  name: e.name.trim(),
423
425
  description: e.description.trim(),
@@ -429,6 +431,7 @@ function Ne(e, t) {
429
431
  return {
430
432
  ...n,
431
433
  kind: "subagent",
434
+ readOnly: e.readOnly,
432
435
  connectors: r,
433
436
  model: e.model,
434
437
  thinking: Q(e.thinking)
@@ -459,19 +462,19 @@ function Ne(e, t) {
459
462
  permissionMode: e.permissionMode
460
463
  };
461
464
  }
462
- var Pe = /^[a-z][a-z0-9]*(-[a-z0-9]+)*$/, Fe = 16384, Ie = /^(?:[1-9]|[1-9]\d|1[01]\d|120)$/, Le = [
465
+ var Ne = /^[a-z][a-z0-9]*(-[a-z0-9]+)*$/, Pe = 16384, Fe = /^(?:[1-9]|[1-9]\d|1[01]\d|120)$/, Ie = [
463
466
  "bypassPermissions",
464
467
  "auto",
465
468
  "dontAsk"
466
- ], Re = (e) => e.approval === "auto" && (e.kind === "opencode" && e.autoApprove || e.kind === "claude" && Le.includes(e.permissionMode));
467
- function ze(e, t) {
469
+ ], Le = (e) => e.approval === "auto" && (e.kind === "opencode" && e.autoApprove || e.kind === "claude" && Ie.includes(e.permissionMode));
470
+ function Re(e, t) {
468
471
  let n = e.name.trim(), r = {};
469
- return n === "" ? r.name = "kvcoder.config.workers.invalid.nameEmpty" : Pe.test(n) ? t.includes(n) && (r.name = "kvcoder.config.workers.invalid.nameTaken") : r.name = "kvcoder.config.workers.invalid.nameShape", e.description.trim() === "" && (r.description = "kvcoder.config.workers.invalid.descriptionEmpty"), new TextEncoder().encode(e.instructions).length > Fe && (r.instructions = "kvcoder.config.workers.invalid.instructionsLong"), e.kind === "subagent" && !e.all && e.connectors.length === 0 && (r.connectors = "kvcoder.config.workers.invalid.connectorsEmpty"), e.kind !== "subagent" && !Ie.test(e.minutes.trim()) && (r.minutes = "kvcoder.config.workers.invalid.minutes"), Re(e) && (r.approval = "kvcoder.config.workers.invalid.unattended"), r;
472
+ return n === "" ? r.name = "kvcoder.config.workers.invalid.nameEmpty" : Ne.test(n) ? t.includes(n) && (r.name = "kvcoder.config.workers.invalid.nameTaken") : r.name = "kvcoder.config.workers.invalid.nameShape", e.description.trim() === "" && (r.description = "kvcoder.config.workers.invalid.descriptionEmpty"), new TextEncoder().encode(e.instructions).length > Pe && (r.instructions = "kvcoder.config.workers.invalid.instructionsLong"), e.kind === "subagent" && !e.all && e.connectors.length === 0 && (r.connectors = "kvcoder.config.workers.invalid.connectorsEmpty"), e.kind !== "subagent" && !Fe.test(e.minutes.trim()) && (r.minutes = "kvcoder.config.workers.invalid.minutes"), Le(e) && (r.approval = "kvcoder.config.workers.invalid.unattended"), r;
470
473
  }
471
474
  //#endregion
472
475
  //#region web/src/use-workers.ts
473
- function Be(e) {
474
- let n = Y(e, "kvcoder.delegate.workers"), r = t(() => Ae(n.value.value)), i = b({});
476
+ function ze(e) {
477
+ let n = J(e, "kvcoder.delegate.workers"), r = t(() => ke(n.value.value)), i = y({});
475
478
  async function a(t) {
476
479
  i.value = {
477
480
  ...i.value,
@@ -481,14 +484,14 @@ function Be(e) {
481
484
  try {
482
485
  n = (await e.exec("kvcoder.delegate.worker.check", { name: t })).status;
483
486
  } catch (t) {
484
- J(e, t), n = "notFound";
487
+ q(e, t), n = "notFound";
485
488
  }
486
489
  i.value = {
487
490
  ...i.value,
488
491
  [t]: n
489
492
  };
490
493
  }
491
- return M(r, (e) => {
494
+ return j(r, (e) => {
492
495
  for (let t of e) t.kind !== "subagent" && !(t.name in i.value) && a(t.name);
493
496
  }), {
494
497
  workers: r,
@@ -515,32 +518,32 @@ function Be(e) {
515
518
  }
516
519
  //#endregion
517
520
  //#region web/src/ModelPicker.vue?vue&type=script&setup=true&lang.ts
518
- var Ve = { class: "kvc-picker" }, He = [
521
+ var Be = { class: "kvc-picker" }, Ve = [
519
522
  "aria-expanded",
520
523
  "aria-label",
521
524
  "disabled"
522
- ], Ue = { class: "kvc-picker-label" }, We = ["onKeydown"], Ge = { class: "kvc-search" }, Ke = [
525
+ ], He = { class: "kvc-picker-label" }, Ue = ["onKeydown"], We = { class: "kvc-search" }, Ge = [
523
526
  "placeholder",
524
527
  "aria-label",
525
528
  "onKeydown"
526
- ], qe = ["aria-label"], Je = ["aria-selected", "data-active"], Ye = { class: "kvc-model-name" }, Xe = {
529
+ ], Ke = ["aria-label"], qe = ["aria-selected", "data-active"], Je = { class: "kvc-model-name" }, Ye = {
527
530
  class: "kvc-group",
528
531
  role: "presentation",
529
532
  "data-test": "model-group"
530
- }, Ze = [
533
+ }, Xe = [
531
534
  "aria-selected",
532
535
  "data-active",
533
536
  "data-test",
534
537
  "onClick",
535
538
  "onMousemove"
536
- ], Qe = { class: "kvc-model-name" }, $e = {
539
+ ], Ze = { class: "kvc-model-name" }, Qe = {
537
540
  key: 1,
538
541
  class: "kvc-muted kvc-none",
539
542
  "data-test": "model-none"
540
- }, et = {
543
+ }, $e = {
541
544
  class: "kvc-muted kvc-count",
542
545
  "data-test": "model-count"
543
- }, tt = 24, nt = /* @__PURE__ */ c({
546
+ }, et = 24, tt = /* @__PURE__ */ c({
544
547
  __name: "ModelPicker",
545
548
  props: {
546
549
  groups: {},
@@ -551,149 +554,150 @@ var Ve = { class: "kvc-picker" }, He = [
551
554
  },
552
555
  emits: ["pick", "none"],
553
556
  setup(o, { emit: c }) {
554
- let l = o, u = c, d = q(), f = b(!1), p = b(""), g = b(0), _ = D("trigger"), y = D("search"), S = D("panel"), C = t(() => xe(l.groups, p.value)), E = t(() => C.value.groups.flatMap((e) => e.models)), O = t(() => l.groups.flatMap((e) => e.models).find((e) => e.id === l.current)?.name ?? l.current ?? l.empty ?? ""), k = t(() => l.none !== void 0 && p.value.trim() === ""), A = t(() => +!!k.value), N = t(() => E.value.length + A.value), L = (e) => {
555
- let t = E.value.findIndex((t) => t.id === e);
556
- return t < 0 ? -1 : t + A.value;
557
+ let l = o, u = c, d = K(), f = y(!1), h = y(""), g = y(0), v = E("trigger"), x = E("search"), S = E("panel"), T = t(() => xe(l.groups, h.value)), D = t(() => T.value.groups.flatMap((e) => e.models)), O = t(() => l.groups.flatMap((e) => e.models).find((e) => e.id === l.current)?.name ?? l.current ?? l.empty ?? ""), k = t(() => l.none !== void 0 && h.value.trim() === ""), M = t(() => +!!k.value), I = t(() => D.value.length + M.value), L = (e) => {
558
+ let t = D.value.findIndex((t) => t.id === e);
559
+ return t < 0 ? -1 : t + M.value;
557
560
  };
558
561
  function R() {
559
- f.value = !1, _.value?.focus();
562
+ f.value = !1, v.value?.focus();
560
563
  }
561
- async function z() {
562
- p.value = "", g.value = Math.max(L(l.current ?? ""), 0), B = 0, f.value = !0, await m(), H(), y.value?.focus(), ee();
564
+ async function ee() {
565
+ h.value = "", g.value = Math.max(L(l.current ?? ""), 0), z = 0, f.value = !0, await p(), V(), x.value?.focus(), ne();
563
566
  }
564
- let B = 0, V = 0;
565
- function H() {
566
- let e = S.value, t = _.value?.closest(".kvc-conversation")?.getBoundingClientRect();
567
+ let z = 0, B = 0;
568
+ function V() {
569
+ let e = S.value, t = v.value?.closest(".kvc-conversation")?.getBoundingClientRect();
567
570
  if (e === null || t === void 0) return;
568
- let n = e.getBoundingClientRect(), r = t.left + tt - (n.left - B), i = t.right - tt - (n.right - B), a = r > 0 ? r : i < 0 ? i : 0;
569
- a !== B && (B = a, e.style.translate = `${a}px 0`);
571
+ let n = e.getBoundingClientRect(), r = t.left + et - (n.left - z), i = t.right - et - (n.right - z), a = r > 0 ? r : i < 0 ? i : 0;
572
+ a !== z && (z = a, e.style.translate = `${a}px 0`);
570
573
  }
571
- function U() {
572
- H(), V = requestAnimationFrame(U);
574
+ function te() {
575
+ V(), B = requestAnimationFrame(te);
573
576
  }
574
- function ee() {
577
+ function ne() {
575
578
  S.value?.querySelector("[data-active=\"true\"]")?.scrollIntoView?.({ block: "nearest" });
576
579
  }
577
- async function te(e) {
578
- N.value !== 0 && (g.value = (g.value + e + N.value) % N.value, await m(), ee());
580
+ async function re(e) {
581
+ I.value !== 0 && (g.value = (g.value + e + I.value) % I.value, await p(), ne());
579
582
  }
580
- function ne(e) {
583
+ function H(e) {
581
584
  e !== void 0 && (u("pick", e), R());
582
585
  }
583
- function W() {
586
+ function U() {
584
587
  u("none"), R();
585
588
  }
586
- function G() {
587
- k.value && g.value === 0 ? W() : ne(E.value[g.value - A.value]?.id);
589
+ function W() {
590
+ k.value && g.value === 0 ? U() : H(D.value[g.value - M.value]?.id);
588
591
  }
589
- function K(e) {
590
- e.target instanceof Node && !_.value?.parentElement?.contains(e.target) && (f.value = !1);
592
+ function G(e) {
593
+ e.target instanceof Node && !v.value?.parentElement?.contains(e.target) && (f.value = !1);
591
594
  }
592
- return M(p, () => g.value = 0), M(f, (e) => {
593
- e ? (document.addEventListener("pointerdown", K), V = requestAnimationFrame(U)) : (document.removeEventListener("pointerdown", K), cancelAnimationFrame(V));
594
- }), h(() => {
595
- document.removeEventListener("pointerdown", K), cancelAnimationFrame(V);
596
- }), (t, o) => (v(), i("div", Ve, [a("button", {
595
+ return j(h, () => g.value = 0), j(f, (e) => {
596
+ e ? (document.addEventListener("pointerdown", G), B = requestAnimationFrame(te)) : (document.removeEventListener("pointerdown", G), cancelAnimationFrame(B));
597
+ }), m(() => {
598
+ document.removeEventListener("pointerdown", G), cancelAnimationFrame(B);
599
+ }), (t, o) => (_(), i("div", Be, [a("button", {
597
600
  ref_key: "trigger",
598
- ref: _,
601
+ ref: v,
599
602
  type: "button",
600
603
  class: "kvc-button",
601
604
  "aria-haspopup": "listbox",
602
605
  "aria-expanded": f.value,
603
- "aria-label": `${T(d).t("kvcoder.ui.model")}: ${O.value}`,
606
+ "aria-label": `${w(d).t("kvcoder.ui.model")}: ${O.value}`,
604
607
  disabled: l.disabled,
605
608
  "data-test": "model-picker",
606
- onClick: o[0] ||= (e) => f.value ? R() : z()
607
- }, [a("span", Ue, w(O.value), 1), s(T(ie), {
609
+ onClick: o[0] ||= (e) => f.value ? R() : ee()
610
+ }, [a("span", He, C(O.value), 1), s(w(ae), {
608
611
  size: 16,
609
612
  "aria-hidden": "true"
610
- })], 8, He), f.value ? (v(), i("div", {
613
+ })], 8, Ve), f.value ? (_(), i("div", {
611
614
  key: 0,
612
615
  ref_key: "panel",
613
616
  ref: S,
614
617
  class: "kvc-popover",
615
618
  "data-test": "model-popover",
616
- onKeydown: F(I(R, ["stop"]), ["esc"])
619
+ onKeydown: P(F(R, ["stop"]), ["esc"])
617
620
  }, [
618
- a("label", Ge, [s(T(ae), {
621
+ a("label", We, [s(w(oe), {
619
622
  size: 16,
620
623
  "aria-hidden": "true"
621
- }), P(a("input", {
624
+ }), N(a("input", {
622
625
  ref_key: "search",
623
- ref: y,
624
- "onUpdate:modelValue": o[1] ||= (e) => p.value = e,
626
+ ref: x,
627
+ "onUpdate:modelValue": o[1] ||= (e) => h.value = e,
625
628
  type: "search",
626
629
  role: "combobox",
627
630
  "aria-expanded": "true",
628
631
  "aria-controls": "kvc-models",
629
- placeholder: T(d).t("kvcoder.ui.searchModels"),
630
- "aria-label": T(d).t("kvcoder.ui.searchModels"),
632
+ placeholder: w(d).t("kvcoder.ui.searchModels"),
633
+ "aria-label": w(d).t("kvcoder.ui.searchModels"),
631
634
  "data-test": "model-search",
632
635
  onKeydown: [
633
- o[2] ||= F(I((e) => te(1), ["prevent"]), ["down"]),
634
- o[3] ||= F(I((e) => te(-1), ["prevent"]), ["up"]),
635
- F(I(G, ["prevent"]), ["enter"])
636
+ o[2] ||= P(F((e) => re(1), ["prevent"]), ["down"]),
637
+ o[3] ||= P(F((e) => re(-1), ["prevent"]), ["up"]),
638
+ P(F(W, ["prevent"]), ["enter"])
636
639
  ]
637
- }, null, 40, Ke), [[j, p.value]])]),
640
+ }, null, 40, Ge), [[A, h.value]])]),
638
641
  a("div", {
639
642
  id: "kvc-models",
640
643
  class: "kvc-options",
641
644
  role: "listbox",
642
- "aria-label": T(d).t("kvcoder.ui.model")
645
+ "aria-label": w(d).t("kvcoder.ui.model")
643
646
  }, [
644
- k.value ? (v(), i("div", {
647
+ k.value ? (_(), i("div", {
645
648
  key: 0,
646
649
  class: "kvc-model",
647
650
  role: "option",
648
651
  "aria-selected": l.current === null,
649
652
  "data-active": g.value === 0,
650
653
  "data-test": "model-none-entry",
651
- onClick: W,
654
+ onClick: U,
652
655
  onMousemove: o[4] ||= (e) => g.value = 0
653
- }, [a("span", Ye, w(l.none), 1), l.current === null ? (v(), n(T(re), {
656
+ }, [a("span", Je, C(l.none), 1), l.current === null ? (_(), n(w(ie), {
654
657
  key: 0,
655
658
  size: 16,
656
659
  "aria-hidden": "true"
657
- })) : r("v-if", !0)], 40, Je)) : r("v-if", !0),
658
- (v(!0), i(e, null, x(C.value.groups, (t) => (v(), i(e, { key: t.provider }, [a("div", Xe, w(t.title), 1), (v(!0), i(e, null, x(t.models, (e) => (v(), i("div", {
660
+ })) : r("v-if", !0)], 40, qe)) : r("v-if", !0),
661
+ (_(!0), i(e, null, b(T.value.groups, (t) => (_(), i(e, { key: t.provider }, [a("div", Ye, C(t.title), 1), (_(!0), i(e, null, b(t.models, (e) => (_(), i("div", {
659
662
  key: e.id,
660
663
  class: "kvc-model",
661
664
  role: "option",
662
665
  "aria-selected": e.id === l.current,
663
666
  "data-active": L(e.id) === g.value,
664
667
  "data-test": `model-${e.id}`,
665
- onClick: (t) => ne(e.id),
668
+ onClick: (t) => H(e.id),
666
669
  onMousemove: (t) => g.value = L(e.id)
667
- }, [a("span", Qe, w(e.name), 1), e.id === l.current ? (v(), n(T(re), {
670
+ }, [a("span", Ze, C(e.name), 1), e.id === l.current ? (_(), n(w(ie), {
668
671
  key: 0,
669
672
  size: 16,
670
673
  "aria-hidden": "true"
671
- })) : r("v-if", !0)], 40, Ze))), 128))], 64))), 128)),
672
- C.value.shown === 0 ? (v(), i("p", $e, w(T(d).t("kvcoder.ui.noModels")), 1)) : r("v-if", !0)
673
- ], 8, qe),
674
- a("p", et, w(T(d).t("kvcoder.ui.modelsCount", {
675
- shown: C.value.shown,
676
- total: C.value.total
674
+ })) : r("v-if", !0)], 40, Xe))), 128))], 64))), 128)),
675
+ T.value.shown === 0 ? (_(), i("p", Qe, C(w(d).t("kvcoder.ui.noModels")), 1)) : r("v-if", !0)
676
+ ], 8, Ke),
677
+ a("p", $e, C(w(d).t("kvcoder.ui.modelsCount", {
678
+ shown: T.value.shown,
679
+ total: T.value.total
677
680
  })), 1)
678
- ], 40, We)) : r("v-if", !0)]));
681
+ ], 40, Ue)) : r("v-if", !0)]));
679
682
  }
680
- }), rt = [
683
+ }), nt = [
681
684
  "shell",
682
685
  "fs",
683
686
  "artifact",
687
+ "execution-map",
684
688
  "background",
685
689
  "ask",
686
690
  "delegate",
687
691
  "mcp"
688
- ], it = [
692
+ ], rt = [
689
693
  "shell",
690
694
  "delegate",
691
695
  "mcp"
692
- ], at = (e) => Array.isArray(e) ? e.filter((e) => typeof e == "string") : [];
693
- function ot(e) {
694
- let n = b([]), r = Y(e, "kvcoder.connectors.disabled"), i = t(() => at(r.value.value)), a = async () => {
696
+ ], it = (e) => Array.isArray(e) ? e.filter((e) => typeof e == "string") : [];
697
+ function at(e) {
698
+ let n = y([]), r = J(e, "kvcoder.connectors.disabled"), i = t(() => it(r.value.value)), a = async () => {
695
699
  n.value = await e.exec("kvcoder.connector.list", {});
696
- }, o = t(() => [...rt.map((t) => ({
700
+ }, o = t(() => [...nt.map((t) => ({
697
701
  name: t,
698
702
  description: e.t(`kvcoder.config.connector.${t}`)
699
703
  })), ...n.value.map((e) => ({
@@ -702,9 +706,9 @@ function ot(e) {
702
706
  }))].map((e) => ({
703
707
  ...e,
704
708
  on: !i.value.includes(e.name),
705
- configurable: it.includes(e.name)
709
+ configurable: rt.includes(e.name)
706
710
  })));
707
- return g(a), M(() => e.workspace.value.id, a), {
711
+ return h(a), j(() => e.workspace.value.id, a), {
708
712
  items: o,
709
713
  locked: r.locked,
710
714
  changed: r.changed,
@@ -715,25 +719,25 @@ function ot(e) {
715
719
  }
716
720
  //#endregion
717
721
  //#region web/src/WorkerProgramFields.vue?vue&type=script&setup=true&lang.ts
718
- var st = { class: "kvc-form-choice" }, ct = { class: "kvc-form-label" }, lt = ["value", "data-test"], ut = {
722
+ var ot = { class: "kvc-form-choice" }, st = { class: "kvc-form-label" }, ct = ["value", "data-test"], lt = {
719
723
  key: 0,
720
724
  class: "kvc-form-error",
721
725
  role: "alert",
722
726
  "data-test": "worker-approval-error"
723
- }, dt = {
727
+ }, ut = {
724
728
  key: 1,
725
729
  class: "kvc-muted"
726
- }, ft = { class: "kvc-form-field" }, pt = { class: "kvc-form-label" }, mt = ["aria-invalid"], ht = {
730
+ }, dt = { class: "kvc-form-field" }, ft = { class: "kvc-form-label" }, pt = ["aria-invalid"], mt = {
727
731
  key: 0,
728
732
  class: "kvc-form-error",
729
733
  role: "alert",
730
734
  "data-test": "worker-minutes-error"
731
- }, gt = {
735
+ }, ht = {
732
736
  key: 1,
733
737
  class: "kvc-muted"
734
- }, _t = { class: "kvc-form-field" }, vt = { class: "kvc-form-label" }, yt = { class: "kvc-muted" }, bt = { class: "kvc-form-field" }, xt = { class: "kvc-form-label" }, St = { class: "kvc-muted" }, Ct = { class: "kvc-form-radio" }, wt = { class: "kvc-form-field" }, Tt = { class: "kvc-form-label" }, Et = { value: "" }, Dt = ["value"], Ot = { class: "kvc-form-field" }, kt = { class: "kvc-form-label" }, At = { class: "kvc-muted" }, jt = { class: "kvc-form-field" }, Mt = { class: "kvc-form-label" }, Nt = { value: "" }, Pt = ["value"], Ft = { class: "kvc-form-field" }, It = { class: "kvc-form-label" }, Lt = ["value"], Rt = { class: "kvc-muted" }, zt = /* @__PURE__ */ c({
738
+ }, gt = { class: "kvc-form-field" }, _t = { class: "kvc-form-label" }, vt = { class: "kvc-muted" }, yt = { class: "kvc-form-field" }, bt = { class: "kvc-form-label" }, xt = { class: "kvc-muted" }, St = { class: "kvc-form-radio" }, Ct = { class: "kvc-form-field" }, wt = { class: "kvc-form-label" }, Tt = { value: "" }, Et = ["value"], Dt = { class: "kvc-form-field" }, Ot = { class: "kvc-form-label" }, kt = { class: "kvc-muted" }, At = { class: "kvc-form-field" }, jt = { class: "kvc-form-label" }, Mt = { value: "" }, Nt = ["value"], Pt = { class: "kvc-form-field" }, Ft = { class: "kvc-form-label" }, It = ["value"], Lt = { class: "kvc-muted" }, Rt = /* @__PURE__ */ c({
735
739
  __name: "WorkerProgramFields",
736
- props: /*@__PURE__*/ f({
740
+ props: /*@__PURE__*/ d({
737
741
  minutesProblem: {},
738
742
  approvalProblem: {}
739
743
  }, {
@@ -742,25 +746,25 @@ var st = { class: "kvc-form-choice" }, ct = { class: "kvc-form-label" }, lt = ["
742
746
  }),
743
747
  emits: ["update:draft"],
744
748
  setup(t) {
745
- let n = E(t, "draft"), r = t, s = q(), c = (e) => s.t(`kvcoder.config.workers.form.${e}`);
746
- return (t, l) => (v(), i(e, null, [
747
- a("fieldset", st, [
748
- a("legend", ct, w(c("approval")), 1),
749
- (v(), i(e, null, x(["ask", "auto"], (e) => a("label", {
749
+ let n = T(t, "draft"), r = t, s = K(), c = (e) => s.t(`kvcoder.config.workers.form.${e}`);
750
+ return (t, l) => (_(), i(e, null, [
751
+ a("fieldset", ot, [
752
+ a("legend", st, C(c("approval")), 1),
753
+ (_(), i(e, null, b(["ask", "auto"], (e) => a("label", {
750
754
  key: e,
751
755
  class: "kvc-form-radio"
752
- }, [P(a("input", {
756
+ }, [N(a("input", {
753
757
  "onUpdate:modelValue": l[0] ||= (e) => n.value.approval = e,
754
758
  type: "radio",
755
759
  name: "kvc-worker-approval",
756
760
  value: e,
757
761
  "data-test": `worker-approval-${e}`
758
- }, null, 8, lt), [[k, n.value.approval]]), o(" " + w(c(`approval.${e}`)), 1)])), 64)),
759
- r.approvalProblem === void 0 ? (v(), i("span", dt, w(c("approvalHint")), 1)) : (v(), i("span", ut, w(T(s).t(r.approvalProblem)), 1))
762
+ }, null, 8, ct), [[O, n.value.approval]]), o(" " + C(c(`approval.${e}`)), 1)])), 64)),
763
+ r.approvalProblem === void 0 ? (_(), i("span", ut, C(c("approvalHint")), 1)) : (_(), i("span", lt, C(w(s).t(r.approvalProblem)), 1))
760
764
  ]),
761
- a("label", ft, [
762
- a("span", pt, w(c("minutes")), 1),
763
- P(a("input", {
765
+ a("label", dt, [
766
+ a("span", ft, C(c("minutes")), 1),
767
+ N(a("input", {
764
768
  "onUpdate:modelValue": l[1] ||= (e) => n.value.minutes = e,
765
769
  type: "text",
766
770
  inputmode: "numeric",
@@ -769,12 +773,12 @@ var st = { class: "kvc-form-choice" }, ct = { class: "kvc-form-label" }, lt = ["
769
773
  autocomplete: "off",
770
774
  "aria-invalid": r.minutesProblem !== void 0,
771
775
  "data-test": "worker-minutes"
772
- }, null, 8, mt), [[j, n.value.minutes]]),
773
- r.minutesProblem === void 0 ? (v(), i("span", gt, w(c("minutesHint")), 1)) : (v(), i("span", ht, w(T(s).t(r.minutesProblem)), 1))
776
+ }, null, 8, pt), [[A, n.value.minutes]]),
777
+ r.minutesProblem === void 0 ? (_(), i("span", ht, C(c("minutesHint")), 1)) : (_(), i("span", mt, C(w(s).t(r.minutesProblem)), 1))
774
778
  ]),
775
- a("label", _t, [
776
- a("span", vt, w(c("model")), 1),
777
- P(a("input", {
779
+ a("label", gt, [
780
+ a("span", _t, C(c("model")), 1),
781
+ N(a("input", {
778
782
  "onUpdate:modelValue": l[2] ||= (e) => n.value.programModel = e,
779
783
  type: "text",
780
784
  dir: "ltr",
@@ -782,12 +786,12 @@ var st = { class: "kvc-form-choice" }, ct = { class: "kvc-form-label" }, lt = ["
782
786
  spellcheck: "false",
783
787
  autocomplete: "off",
784
788
  "data-test": "worker-program-model"
785
- }, null, 512), [[j, n.value.programModel]]),
786
- a("span", yt, w(c("programDefault")), 1)
789
+ }, null, 512), [[A, n.value.programModel]]),
790
+ a("span", vt, C(c("programDefault")), 1)
787
791
  ]),
788
- n.value.kind === "opencode" ? (v(), i(e, { key: 0 }, [a("label", bt, [
789
- a("span", xt, w(c("agent")), 1),
790
- P(a("input", {
792
+ n.value.kind === "opencode" ? (_(), i(e, { key: 0 }, [a("label", yt, [
793
+ a("span", bt, C(c("agent")), 1),
794
+ N(a("input", {
791
795
  "onUpdate:modelValue": l[3] ||= (e) => n.value.agent = e,
792
796
  type: "text",
793
797
  dir: "ltr",
@@ -795,94 +799,94 @@ var st = { class: "kvc-form-choice" }, ct = { class: "kvc-form-label" }, lt = ["
795
799
  spellcheck: "false",
796
800
  autocomplete: "off",
797
801
  "data-test": "worker-agent"
798
- }, null, 512), [[j, n.value.agent]]),
799
- a("span", St, w(c("programDefault")), 1)
800
- ]), a("label", Ct, [P(a("input", {
802
+ }, null, 512), [[A, n.value.agent]]),
803
+ a("span", xt, C(c("programDefault")), 1)
804
+ ]), a("label", St, [N(a("input", {
801
805
  "onUpdate:modelValue": l[4] ||= (e) => n.value.autoApprove = e,
802
806
  type: "checkbox",
803
807
  "data-test": "worker-auto-approve"
804
- }, null, 512), [[O, n.value.autoApprove]]), o(" " + w(c("autoApprove")), 1)])], 64)) : n.value.kind === "pi" ? (v(), i(e, { key: 1 }, [a("label", wt, [a("span", Tt, w(c("thinking")), 1), P(a("select", {
808
+ }, null, 512), [[D, n.value.autoApprove]]), o(" " + C(c("autoApprove")), 1)])], 64)) : n.value.kind === "pi" ? (_(), i(e, { key: 1 }, [a("label", Ct, [a("span", wt, C(c("thinking")), 1), N(a("select", {
805
809
  "onUpdate:modelValue": l[5] ||= (e) => n.value.piThinking = e,
806
810
  class: "kvc-button",
807
811
  "data-test": "worker-pi-thinking"
808
- }, [a("option", Et, w(c("programDefault")), 1), (v(!0), i(e, null, x(T(Ce), (e) => (v(), i("option", {
812
+ }, [a("option", Tt, C(c("programDefault")), 1), (_(!0), i(e, null, b(w(Ce), (e) => (_(), i("option", {
809
813
  key: e,
810
814
  value: e
811
- }, w(e), 9, Dt))), 128))], 512), [[A, n.value.piThinking]])]), a("label", Ot, [
812
- a("span", kt, w(c("tools")), 1),
813
- P(a("textarea", {
815
+ }, C(e), 9, Et))), 128))], 512), [[k, n.value.piThinking]])]), a("label", Dt, [
816
+ a("span", Ot, C(c("tools")), 1),
817
+ N(a("textarea", {
814
818
  "onUpdate:modelValue": l[6] ||= (e) => n.value.tools = e,
815
819
  dir: "ltr",
816
820
  rows: "3",
817
821
  class: "kvc-field kvc-mono",
818
822
  spellcheck: "false",
819
823
  "data-test": "worker-tools"
820
- }, null, 512), [[j, n.value.tools]]),
821
- a("span", At, w(c("toolsHint")), 1)
822
- ])], 64)) : (v(), i(e, { key: 2 }, [a("label", jt, [a("span", Mt, w(c("effort")), 1), P(a("select", {
824
+ }, null, 512), [[A, n.value.tools]]),
825
+ a("span", kt, C(c("toolsHint")), 1)
826
+ ])], 64)) : (_(), i(e, { key: 2 }, [a("label", At, [a("span", jt, C(c("effort")), 1), N(a("select", {
823
827
  "onUpdate:modelValue": l[7] ||= (e) => n.value.effort = e,
824
828
  class: "kvc-button",
825
829
  "data-test": "worker-effort"
826
- }, [a("option", Nt, w(c("programDefault")), 1), (v(!0), i(e, null, x(T(we), (e) => (v(), i("option", {
830
+ }, [a("option", Mt, C(c("programDefault")), 1), (_(!0), i(e, null, b(w(we), (e) => (_(), i("option", {
827
831
  key: e,
828
832
  value: e
829
- }, w(e), 9, Pt))), 128))], 512), [[A, n.value.effort]])]), a("label", Ft, [
830
- a("span", It, w(c("permissionMode")), 1),
831
- P(a("select", {
833
+ }, C(e), 9, Nt))), 128))], 512), [[k, n.value.effort]])]), a("label", Pt, [
834
+ a("span", Ft, C(c("permissionMode")), 1),
835
+ N(a("select", {
832
836
  "onUpdate:modelValue": l[8] ||= (e) => n.value.permissionMode = e,
833
837
  class: "kvc-button",
834
838
  "data-test": "worker-permission-mode"
835
- }, [(v(!0), i(e, null, x(T(Te), (e) => (v(), i("option", {
839
+ }, [(_(!0), i(e, null, b(w(Te), (e) => (_(), i("option", {
836
840
  key: e,
837
841
  value: e
838
- }, w(e), 9, Lt))), 128))], 512), [[A, n.value.permissionMode]]),
839
- a("span", Rt, w(c("permissionModeHint")), 1)
842
+ }, C(e), 9, It))), 128))], 512), [[k, n.value.permissionMode]]),
843
+ a("span", Lt, C(c("permissionModeHint")), 1)
840
844
  ])], 64))
841
845
  ], 64));
842
846
  }
843
- }), Bt = {
847
+ }), zt = {
844
848
  class: "kvc-setting-title",
845
849
  "data-test": "worker-form-title"
846
- }, Vt = { class: "kvc-form-field" }, Ht = { class: "kvc-form-label" }, Ut = ["aria-invalid"], Wt = {
850
+ }, Bt = { class: "kvc-form-field" }, Vt = { class: "kvc-form-label" }, Ht = ["aria-invalid"], Ut = {
847
851
  key: 0,
848
852
  class: "kvc-form-error",
849
853
  role: "alert",
850
854
  "data-test": "worker-name-error"
851
- }, Gt = {
855
+ }, Wt = {
852
856
  key: 1,
853
857
  class: "kvc-muted"
854
- }, Kt = { class: "kvc-form-field" }, qt = { class: "kvc-form-label" }, Jt = ["aria-invalid"], Yt = {
858
+ }, Gt = { class: "kvc-form-field" }, Kt = { class: "kvc-form-label" }, qt = ["aria-invalid"], Jt = {
855
859
  key: 0,
856
860
  class: "kvc-form-error",
857
861
  role: "alert",
858
862
  "data-test": "worker-description-error"
859
- }, Xt = {
863
+ }, Yt = {
860
864
  key: 1,
861
865
  class: "kvc-muted"
862
- }, Zt = { class: "kvc-form-field" }, Qt = { class: "kvc-form-label" }, $t = ["value"], en = { class: "kvc-muted" }, tn = { class: "kvc-form-field" }, nn = { class: "kvc-form-label" }, rn = ["aria-invalid"], an = {
866
+ }, Xt = { class: "kvc-form-field" }, Zt = { class: "kvc-form-label" }, Qt = ["value"], $t = { class: "kvc-muted" }, en = { class: "kvc-form-field" }, tn = { class: "kvc-form-label" }, nn = ["aria-invalid"], rn = {
863
867
  key: 0,
864
868
  class: "kvc-form-error",
865
869
  role: "alert",
866
870
  "data-test": "worker-instructions-error"
867
- }, on = {
871
+ }, an = {
868
872
  key: 1,
869
873
  class: "kvc-muted"
870
- }, sn = { class: "kvc-form-choice" }, cn = { class: "kvc-form-label" }, ln = { class: "kvc-form-radio" }, un = ["checked"], dn = { class: "kvc-form-radio" }, fn = ["checked"], pn = [
874
+ }, on = { class: "kvc-form-field" }, sn = { class: "kvc-form-radio" }, cn = { class: "kvc-muted" }, ln = { class: "kvc-form-choice" }, un = { class: "kvc-form-label" }, dn = { class: "kvc-form-radio" }, fn = ["checked"], pn = { class: "kvc-form-radio" }, mn = ["checked"], hn = [
871
875
  "checked",
872
876
  "data-test",
873
877
  "onChange"
874
- ], mn = {
878
+ ], gn = {
875
879
  key: 1,
876
880
  class: "kvc-form-error",
877
881
  role: "alert",
878
882
  "data-test": "worker-connectors-error"
879
- }, hn = {
883
+ }, _n = {
880
884
  key: 2,
881
885
  class: "kvc-muted"
882
- }, gn = {
886
+ }, vn = {
883
887
  class: "kvc-form-field",
884
888
  "data-test": "worker-model"
885
- }, _n = { class: "kvc-form-label" }, vn = { class: "kvc-form-field" }, yn = { class: "kvc-form-label" }, bn = { value: "" }, xn = ["value"], Sn = { class: "kvc-actions" }, Cn = ["disabled"], wn = ["disabled"], Tn = /* @__PURE__ */ c({
889
+ }, yn = { class: "kvc-form-label" }, bn = { class: "kvc-form-field" }, xn = { class: "kvc-form-label" }, Sn = { value: "" }, Cn = ["value"], wn = { class: "kvc-actions" }, Tn = ["disabled"], En = ["disabled"], Dn = /* @__PURE__ */ c({
886
890
  __name: "WorkerForm",
887
891
  props: {
888
892
  entry: {},
@@ -891,336 +895,344 @@ var st = { class: "kvc-form-choice" }, ct = { class: "kvc-form-label" }, lt = ["
891
895
  },
892
896
  emits: ["save", "cancel"],
893
897
  setup(c, { emit: l }) {
894
- let u = c, f = l, p = q(), m = y(Me(u.entry)), h = b({}), _ = b([]), S = b([]), C = b([]), E = (e) => p.t(`kvcoder.config.workers.form.${e}`), D = u.entry !== void 0, O = t(() => [...rt.filter((e) => e !== "delegate"), ...C.value]), k = t(() => be(_.value, S.value, m.model));
895
- g(async () => {
898
+ let u = c, d = l, f = K(), p = v(je(u.entry)), m = y({}), g = y([]), x = y([]), S = y([]), T = (e) => f.t(`kvcoder.config.workers.form.${e}`), E = u.entry !== void 0, O = [
899
+ "delegate",
900
+ "ask",
901
+ "execution-map"
902
+ ], j = t(() => [...nt.filter((e) => !O.includes(e)), ...S.value]), M = t(() => be(g.value, x.value, p.model));
903
+ h(async () => {
896
904
  try {
897
905
  let [e, t, n] = await Promise.all([
898
- p.exec("kvai.provider.list", {}),
899
- p.exec("kvai.model.list", {}),
900
- p.exec("kvcoder.connector.list", {})
906
+ f.exec("kvai.provider.list", {}),
907
+ f.exec("kvai.model.list", {}),
908
+ f.exec("kvcoder.connector.list", {})
901
909
  ]);
902
- _.value = e, S.value = t, C.value = n.map((e) => e.name);
910
+ g.value = e, x.value = t, S.value = n.map((e) => e.name);
903
911
  } catch (e) {
904
- J(p, e);
912
+ q(f, e);
905
913
  }
906
914
  });
907
- function M(e, t) {
915
+ function P(e, t) {
908
916
  let n = t.target instanceof HTMLInputElement && t.target.checked;
909
- m.connectors = n ? [...m.connectors, e] : m.connectors.filter((t) => t !== e);
917
+ p.connectors = n ? [...p.connectors, e] : p.connectors.filter((t) => t !== e);
910
918
  }
911
- function N() {
912
- h.value = ze(m, u.taken), !(Object.keys(h.value).length > 0) && f("save", Ne(m, O.value));
919
+ function I() {
920
+ m.value = Re(p, u.taken), !(Object.keys(m.value).length > 0) && d("save", Me(p, j.value));
913
921
  }
914
- return (t, c) => (v(), i("form", {
922
+ return (t, c) => (_(), i("form", {
915
923
  class: "kvc-form",
916
924
  novalidate: "",
917
925
  "data-test": "worker-form",
918
- onSubmit: I(N, ["prevent"])
926
+ onSubmit: F(I, ["prevent"])
919
927
  }, [
920
- a("span", Bt, w(D ? T(p).t("kvcoder.config.workers.form.titleEdit", { name: T(m).name }) : E("titleNew")), 1),
921
- a("label", Vt, [
922
- a("span", Ht, w(E("name")), 1),
923
- P(a("input", {
924
- "onUpdate:modelValue": c[0] ||= (e) => T(m).name = e,
928
+ a("span", zt, C(E ? w(f).t("kvcoder.config.workers.form.titleEdit", { name: p.name }) : T("titleNew")), 1),
929
+ a("label", Bt, [
930
+ a("span", Vt, C(T("name")), 1),
931
+ N(a("input", {
932
+ "onUpdate:modelValue": c[0] ||= (e) => p.name = e,
925
933
  type: "text",
926
934
  dir: "ltr",
927
935
  class: "kvc-field kvc-mono",
928
- disabled: D,
936
+ disabled: E,
929
937
  spellcheck: "false",
930
938
  autocomplete: "off",
931
- "aria-invalid": h.value.name !== void 0,
939
+ "aria-invalid": m.value.name !== void 0,
932
940
  "data-test": "worker-name"
933
- }, null, 8, Ut), [[j, T(m).name]]),
934
- h.value.name === void 0 ? (v(), i("span", Gt, w(E("nameHint")), 1)) : (v(), i("span", Wt, w(T(p).t(h.value.name)), 1))
941
+ }, null, 8, Ht), [[A, p.name]]),
942
+ m.value.name === void 0 ? (_(), i("span", Wt, C(T("nameHint")), 1)) : (_(), i("span", Ut, C(w(f).t(m.value.name)), 1))
935
943
  ]),
936
- a("label", Kt, [
937
- a("span", qt, w(E("description")), 1),
938
- P(a("input", {
939
- "onUpdate:modelValue": c[1] ||= (e) => T(m).description = e,
944
+ a("label", Gt, [
945
+ a("span", Kt, C(T("description")), 1),
946
+ N(a("input", {
947
+ "onUpdate:modelValue": c[1] ||= (e) => p.description = e,
940
948
  type: "text",
941
949
  dir: "auto",
942
950
  class: "kvc-field",
943
951
  autocomplete: "off",
944
- "aria-invalid": h.value.description !== void 0,
952
+ "aria-invalid": m.value.description !== void 0,
945
953
  "data-test": "worker-description"
946
- }, null, 8, Jt), [[j, T(m).description]]),
947
- h.value.description === void 0 ? (v(), i("span", Xt, w(E("descriptionHint")), 1)) : (v(), i("span", Yt, w(T(p).t(h.value.description)), 1))
954
+ }, null, 8, qt), [[A, p.description]]),
955
+ m.value.description === void 0 ? (_(), i("span", Yt, C(T("descriptionHint")), 1)) : (_(), i("span", Jt, C(w(f).t(m.value.description)), 1))
948
956
  ]),
949
- a("label", Zt, [
950
- a("span", Qt, w(E("kind")), 1),
951
- P(a("select", {
952
- "onUpdate:modelValue": c[2] ||= (e) => T(m).kind = e,
957
+ a("label", Xt, [
958
+ a("span", Zt, C(T("kind")), 1),
959
+ N(a("select", {
960
+ "onUpdate:modelValue": c[2] ||= (e) => p.kind = e,
953
961
  class: "kvc-button",
954
- disabled: D,
962
+ disabled: E,
955
963
  "data-test": "worker-kind-select"
956
- }, [(v(!0), i(e, null, x(T(Ee), (e) => (v(), i("option", {
964
+ }, [(_(!0), i(e, null, b(w(Ee), (e) => (_(), i("option", {
957
965
  key: e,
958
966
  value: e
959
- }, w(T(p).t(`kvcoder.config.workers.kind.${e}`)), 9, $t))), 128))], 512), [[A, T(m).kind]]),
960
- a("span", en, w(E("kindHint")), 1)
967
+ }, C(w(f).t(`kvcoder.config.workers.kind.${e}`)), 9, Qt))), 128))], 512), [[k, p.kind]]),
968
+ a("span", $t, C(T("kindHint")), 1)
961
969
  ]),
962
- a("label", tn, [
963
- a("span", nn, w(E("instructions")), 1),
964
- P(a("textarea", {
965
- "onUpdate:modelValue": c[3] ||= (e) => T(m).instructions = e,
970
+ a("label", en, [
971
+ a("span", tn, C(T("instructions")), 1),
972
+ N(a("textarea", {
973
+ "onUpdate:modelValue": c[3] ||= (e) => p.instructions = e,
966
974
  dir: "auto",
967
975
  rows: "8",
968
976
  class: "kvc-field",
969
- "aria-invalid": h.value.instructions !== void 0,
977
+ "aria-invalid": m.value.instructions !== void 0,
970
978
  "data-test": "worker-instructions"
971
- }, null, 8, rn), [[j, T(m).instructions]]),
972
- h.value.instructions === void 0 ? (v(), i("span", on, w(E("instructionsHint")), 1)) : (v(), i("span", an, w(T(p).t(h.value.instructions)), 1))
979
+ }, null, 8, nn), [[A, p.instructions]]),
980
+ m.value.instructions === void 0 ? (_(), i("span", an, C(T("instructionsHint")), 1)) : (_(), i("span", rn, C(w(f).t(m.value.instructions)), 1))
973
981
  ]),
974
- T(m).kind === "subagent" ? (v(), i(e, { key: 1 }, [
975
- a("fieldset", sn, [
976
- a("legend", cn, w(E("connectors")), 1),
977
- a("label", ln, [a("input", {
982
+ p.kind === "subagent" ? (_(), i(e, { key: 1 }, [
983
+ a("label", on, [a("span", sn, [N(a("input", {
984
+ "onUpdate:modelValue": c[4] ||= (e) => p.readOnly = e,
985
+ type: "checkbox",
986
+ "data-test": "worker-read-only"
987
+ }, null, 512), [[D, p.readOnly]]), o(C(T("readOnly")), 1)]), a("span", cn, C(T("readOnlyHint")), 1)]),
988
+ a("fieldset", ln, [
989
+ a("legend", un, C(T("connectors")), 1),
990
+ a("label", dn, [a("input", {
978
991
  type: "radio",
979
992
  name: "kvc-worker-connectors",
980
- checked: T(m).all,
993
+ checked: p.all,
981
994
  "data-test": "worker-connectors-all",
982
- onChange: c[5] ||= (e) => T(m).all = !0
983
- }, null, 40, un), o(" " + w(E("connectors.all")), 1)]),
984
- a("label", dn, [a("input", {
995
+ onChange: c[5] ||= (e) => p.all = !0
996
+ }, null, 40, fn), o(" " + C(T("connectors.all")), 1)]),
997
+ a("label", pn, [a("input", {
985
998
  type: "radio",
986
999
  name: "kvc-worker-connectors",
987
- checked: !T(m).all,
1000
+ checked: !p.all,
988
1001
  "data-test": "worker-connectors-some",
989
- onChange: c[6] ||= (e) => T(m).all = !1
990
- }, null, 40, fn), o(" " + w(E("connectors.some")), 1)]),
991
- T(m).all ? r("v-if", !0) : (v(!0), i(e, { key: 0 }, x(O.value, (e) => (v(), i("label", {
1002
+ onChange: c[6] ||= (e) => p.all = !1
1003
+ }, null, 40, mn), o(" " + C(T("connectors.some")), 1)]),
1004
+ p.all ? r("v-if", !0) : (_(!0), i(e, { key: 0 }, b(j.value, (e) => (_(), i("label", {
992
1005
  key: e,
993
1006
  class: "kvc-form-radio kvc-mono"
994
1007
  }, [a("input", {
995
1008
  type: "checkbox",
996
- checked: T(m).connectors.includes(e),
1009
+ checked: p.connectors.includes(e),
997
1010
  "data-test": `worker-connector-${e}`,
998
- onChange: (t) => M(e, t)
999
- }, null, 40, pn), o(" " + w(e), 1)]))), 128)),
1000
- h.value.connectors === void 0 ? (v(), i("span", hn, w(E("connectorsHint")), 1)) : (v(), i("span", mn, w(T(p).t(h.value.connectors)), 1))
1011
+ onChange: (t) => P(e, t)
1012
+ }, null, 40, hn), o(" " + C(e), 1)]))), 128)),
1013
+ m.value.connectors === void 0 ? (_(), i("span", _n, C(T("connectorsHint")), 1)) : (_(), i("span", gn, C(w(f).t(m.value.connectors)), 1))
1001
1014
  ]),
1002
- a("div", gn, [a("span", _n, w(E("model")), 1), s(nt, {
1003
- groups: k.value,
1004
- current: T(m).model,
1005
- empty: E("sameModel"),
1006
- none: E("sameModel"),
1007
- onPick: c[7] ||= (e) => T(m).model = e,
1008
- onNone: c[8] ||= (e) => T(m).model = null
1015
+ a("div", vn, [a("span", yn, C(T("model")), 1), s(tt, {
1016
+ groups: M.value,
1017
+ current: p.model,
1018
+ empty: T("sameModel"),
1019
+ none: T("sameModel"),
1020
+ onPick: c[7] ||= (e) => p.model = e,
1021
+ onNone: c[8] ||= (e) => p.model = null
1009
1022
  }, null, 8, [
1010
1023
  "groups",
1011
1024
  "current",
1012
1025
  "empty",
1013
1026
  "none"
1014
1027
  ])]),
1015
- a("label", vn, [a("span", yn, w(E("thinking")), 1), P(a("select", {
1016
- "onUpdate:modelValue": c[9] ||= (e) => T(m).thinking = e,
1028
+ a("label", bn, [a("span", xn, C(T("thinking")), 1), N(a("select", {
1029
+ "onUpdate:modelValue": c[9] ||= (e) => p.thinking = e,
1017
1030
  class: "kvc-button",
1018
1031
  "data-test": "worker-thinking"
1019
- }, [a("option", bn, w(E("sameThinking")), 1), (v(!0), i(e, null, x(T(Se), (e) => (v(), i("option", {
1032
+ }, [a("option", Sn, C(T("sameThinking")), 1), (_(!0), i(e, null, b(w(Se), (e) => (_(), i("option", {
1020
1033
  key: e,
1021
1034
  value: e
1022
- }, w(T(p).t(`kvcoder.ui.thinkingLevels.${e}`)), 9, xn))), 128))], 512), [[A, T(m).thinking]])])
1023
- ], 64)) : (v(), n(zt, {
1035
+ }, C(w(f).t(`kvcoder.ui.thinkingLevels.${e}`)), 9, Cn))), 128))], 512), [[k, p.thinking]])])
1036
+ ], 64)) : (_(), n(Rt, {
1024
1037
  key: 0,
1025
- draft: T(m),
1026
- "onUpdate:draft": c[4] ||= (e) => d(m) ? m.value = e : m = e,
1027
- "minutes-problem": h.value.minutes,
1028
- "approval-problem": h.value.approval
1038
+ draft: p,
1039
+ "minutes-problem": m.value.minutes,
1040
+ "approval-problem": m.value.approval
1029
1041
  }, null, 8, [
1030
1042
  "draft",
1031
1043
  "minutes-problem",
1032
1044
  "approval-problem"
1033
1045
  ])),
1034
- a("div", Sn, [a("button", {
1046
+ a("div", wn, [a("button", {
1035
1047
  type: "button",
1036
1048
  class: "kvc-button",
1037
1049
  disabled: u.working,
1038
1050
  "data-test": "worker-cancel",
1039
- onClick: c[10] ||= (e) => f("cancel")
1040
- }, w(T(p).t("kvcoder.config.workers.cancel")), 9, Cn), a("button", {
1051
+ onClick: c[10] ||= (e) => d("cancel")
1052
+ }, C(w(f).t("kvcoder.config.workers.cancel")), 9, Tn), a("button", {
1041
1053
  type: "submit",
1042
1054
  class: "kvc-button kvc-primary",
1043
1055
  disabled: u.working,
1044
1056
  "data-test": "worker-save"
1045
- }, w(E("save")), 9, wn)])
1057
+ }, C(T("save")), 9, En)])
1046
1058
  ], 32));
1047
1059
  }
1048
- }), En = {
1060
+ }), On = {
1049
1061
  key: 1,
1050
1062
  class: "kvc-dialog-rows",
1051
1063
  "data-test": "workers"
1052
- }, Dn = { class: "kvc-muted" }, On = {
1064
+ }, kn = { class: "kvc-muted" }, An = {
1053
1065
  key: 0,
1054
1066
  class: "kvc-muted",
1055
1067
  "data-test": "workers-own-value"
1056
- }, kn = {
1068
+ }, jn = {
1057
1069
  key: 1,
1058
1070
  class: "kvc-connectors-state"
1059
- }, An = {
1071
+ }, Mn = {
1060
1072
  class: "kvc-chip",
1061
1073
  "data-test": "workers-changed"
1062
- }, jn = ["disabled"], Mn = {
1074
+ }, Nn = ["disabled"], Pn = {
1063
1075
  key: 2,
1064
1076
  class: "kvc-muted",
1065
1077
  "data-test": "workers-empty"
1066
- }, Nn = ["data-test"], Pn = { class: "kvc-connector-text" }, Fn = {
1078
+ }, Fn = ["data-test"], In = { class: "kvc-connector-text" }, Ln = {
1067
1079
  class: "kvc-mono kvc-connector-name",
1068
1080
  "data-test": "worker-name"
1069
- }, In = {
1081
+ }, Rn = {
1070
1082
  class: "kvc-muted",
1071
1083
  dir: "auto",
1072
1084
  "data-test": "worker-description"
1073
- }, Ln = {
1085
+ }, zn = {
1074
1086
  class: "kvc-chip",
1075
1087
  "data-test": "worker-kind"
1076
- }, Rn = {
1088
+ }, Bn = {
1077
1089
  key: 0,
1078
1090
  class: "kvc-server-state",
1079
1091
  "data-status": "checking",
1080
1092
  role: "status",
1081
1093
  "data-test": "worker-state"
1082
- }, zn = {
1094
+ }, Vn = {
1083
1095
  key: 1,
1084
1096
  class: "kvc-server-state",
1085
1097
  "data-status": "failed",
1086
1098
  role: "status",
1087
1099
  "data-test": "worker-state"
1088
- }, Bn = ["onClick"], Vn = ["aria-label"], Hn = { class: "kvc-muted" }, Un = ["disabled"], Wn = ["disabled", "onClick"], Gn = {
1100
+ }, Hn = ["onClick"], Un = ["aria-label"], Wn = { class: "kvc-muted" }, Gn = ["disabled"], Kn = ["disabled", "onClick"], qn = {
1089
1101
  key: 1,
1090
1102
  class: "kvc-connector-actions"
1091
- }, Kn = [
1103
+ }, Jn = [
1092
1104
  "disabled",
1093
1105
  "aria-label",
1094
1106
  "title",
1095
1107
  "onClick"
1096
- ], qn = [
1108
+ ], Yn = [
1097
1109
  "disabled",
1098
1110
  "aria-label",
1099
1111
  "title",
1100
1112
  "onClick"
1101
- ], Jn = [
1113
+ ], Xn = [
1102
1114
  "aria-checked",
1103
1115
  "aria-label",
1104
1116
  "disabled",
1105
1117
  "onClick"
1106
- ], Yn = { class: "kvc-actions" }, Xn = ["disabled"], Zn = /* @__PURE__ */ c({
1118
+ ], Zn = { class: "kvc-actions" }, Qn = ["disabled"], $n = /* @__PURE__ */ c({
1107
1119
  __name: "DelegateWorkers",
1108
1120
  setup(t) {
1109
- let c = q(), { workers: l, states: u, locked: d, changed: f, working: m, save: h, remove: g, toggle: _, reset: y, check: S } = Be(c), C = b(), E = b(), D = (e) => c.t(`${e}.${c.scope.value}`, { name: c.workspace.value.name }), O = (e, t) => c.t(`kvcoder.config.workers.${e}`, { name: t });
1121
+ let c = K(), { workers: l, states: u, locked: d, changed: p, working: m, save: h, remove: g, toggle: v, reset: x, check: S } = ze(c), T = y(), E = y(), D = (e) => c.t(`${e}.${c.scope.value}`, { name: c.workspace.value.name }), O = (e, t) => c.t(`kvcoder.config.workers.${e}`, { name: t });
1110
1122
  async function k(e) {
1111
- await h(e) && (C.value = void 0, c.toast("kvcoder.config.workers.saved", { name: e.name }, "success"));
1123
+ await h(e) && (T.value = void 0, c.toast("kvcoder.config.workers.saved", { name: e.name }, "success"));
1112
1124
  }
1113
1125
  async function A(e) {
1114
1126
  await g(e) && c.toast("kvcoder.config.workers.removed", { name: e }, "success"), E.value = void 0;
1115
1127
  }
1116
- return (t, h) => C.value === void 0 ? (v(), i("div", En, [
1117
- a("p", Dn, w(T(c).t("kvcoder.config.workers.intro")), 1),
1118
- T(d) ? (v(), i("p", On, w(T(c).t("kvcoder.config.connectors.ownValue", { name: T(c).workspace.value.name })), 1)) : T(f) ? (v(), i("div", kn, [a("span", An, w(D("kvcoder.config.connectors.changed")), 1), a("button", {
1128
+ return (t, h) => T.value === void 0 ? (_(), i("div", On, [
1129
+ a("p", kn, C(w(c).t("kvcoder.config.workers.intro")), 1),
1130
+ w(d) ? (_(), i("p", An, C(w(c).t("kvcoder.config.connectors.ownValue", { name: w(c).workspace.value.name })), 1)) : w(p) ? (_(), i("div", jn, [a("span", Mn, C(D("kvcoder.config.connectors.changed")), 1), a("button", {
1119
1131
  type: "button",
1120
1132
  class: "kvc-text-button",
1121
- disabled: T(m),
1133
+ disabled: w(m),
1122
1134
  "data-test": "workers-reset",
1123
- onClick: h[1] ||= (...e) => T(y) && T(y)(...e)
1124
- }, w(D("kvcoder.config.connectors.reset")), 9, jn)])) : r("v-if", !0),
1125
- T(l).length === 0 ? (v(), i("p", Mn, w(T(c).t("kvcoder.config.workers.empty")), 1)) : r("v-if", !0),
1126
- (v(!0), i(e, null, x(T(l), (e) => (v(), i("div", {
1135
+ onClick: h[1] ||= (...e) => w(x) && w(x)(...e)
1136
+ }, C(D("kvcoder.config.connectors.reset")), 9, Nn)])) : r("v-if", !0),
1137
+ w(l).length === 0 ? (_(), i("p", Pn, C(w(c).t("kvcoder.config.workers.empty")), 1)) : r("v-if", !0),
1138
+ (_(!0), i(e, null, b(w(l), (e) => (_(), i("div", {
1127
1139
  key: e.name,
1128
1140
  class: "kvc-connector",
1129
1141
  "data-test": `worker-${e.name}`
1130
- }, [a("span", Pn, [
1131
- a("span", Fn, w(e.name), 1),
1132
- a("span", In, w(e.description), 1),
1133
- a("span", null, [a("span", Ln, w(T(c).t(`kvcoder.config.workers.kind.${e.kind}`)), 1)]),
1134
- T(u)[e.name] === "checking" ? (v(), i("span", Rn, w(T(c).t("kvcoder.config.workers.checking")), 1)) : T(u)[e.name] === "notFound" ? (v(), i("span", zn, [o(w(T(c).t("kvcoder.config.workers.notFound", { program: e.kind })) + " ", 1), a("button", {
1142
+ }, [a("span", In, [
1143
+ a("span", Ln, C(e.name), 1),
1144
+ a("span", Rn, C(e.description), 1),
1145
+ a("span", null, [a("span", zn, C(w(c).t(`kvcoder.config.workers.kind.${e.kind}`)), 1)]),
1146
+ w(u)[e.name] === "checking" ? (_(), i("span", Bn, C(w(c).t("kvcoder.config.workers.checking")), 1)) : w(u)[e.name] === "notFound" ? (_(), i("span", Vn, [o(C(w(c).t("kvcoder.config.workers.notFound", { program: e.kind })) + " ", 1), a("button", {
1135
1147
  type: "button",
1136
1148
  class: "kvc-text-button",
1137
1149
  "data-test": "worker-check",
1138
- onClick: (t) => T(S)(e.name)
1139
- }, w(T(c).t("kvcoder.config.workers.recheck")), 9, Bn)])) : r("v-if", !0)
1140
- ]), E.value === e.name ? (v(), i("span", {
1150
+ onClick: (t) => w(S)(e.name)
1151
+ }, C(w(c).t("kvcoder.config.workers.recheck")), 9, Hn)])) : r("v-if", !0)
1152
+ ]), E.value === e.name ? (_(), i("span", {
1141
1153
  key: 0,
1142
1154
  class: "kvc-connector-actions",
1143
1155
  role: "alertdialog",
1144
1156
  "aria-label": O("removeConfirm", e.name),
1145
1157
  "data-test": "worker-remove-confirm"
1146
1158
  }, [
1147
- a("span", Hn, w(O("removeConfirm", e.name)), 1),
1159
+ a("span", Wn, C(O("removeConfirm", e.name)), 1),
1148
1160
  a("button", {
1149
1161
  type: "button",
1150
1162
  class: "kvc-button",
1151
- disabled: T(m),
1163
+ disabled: w(m),
1152
1164
  "data-test": "worker-remove-cancel",
1153
1165
  onClick: h[2] ||= (e) => E.value = void 0
1154
- }, w(T(c).t("kvcoder.config.workers.cancel")), 9, Un),
1166
+ }, C(w(c).t("kvcoder.config.workers.cancel")), 9, Gn),
1155
1167
  a("button", {
1156
1168
  type: "button",
1157
1169
  class: "kvc-button kvc-danger",
1158
- disabled: T(m),
1170
+ disabled: w(m),
1159
1171
  "data-test": "worker-remove-yes",
1160
1172
  onClick: (t) => A(e.name)
1161
- }, w(T(c).t("kvcoder.config.workers.removeYes")), 9, Wn)
1162
- ], 8, Vn)) : (v(), i("span", Gn, [
1173
+ }, C(w(c).t("kvcoder.config.workers.removeYes")), 9, Kn)
1174
+ ], 8, Un)) : (_(), i("span", qn, [
1163
1175
  a("button", {
1164
1176
  type: "button",
1165
1177
  class: "kvc-button kvc-ghost kvc-icon-button",
1166
- disabled: T(d) || T(m),
1178
+ disabled: w(d) || w(m),
1167
1179
  "aria-label": O("edit", e.name),
1168
1180
  title: O("edit", e.name),
1169
1181
  "data-test": "worker-edit",
1170
- onClick: (t) => C.value = { entry: e }
1171
- }, [s(T(G), {
1182
+ onClick: (t) => T.value = { entry: e }
1183
+ }, [s(w(U), {
1172
1184
  size: 16,
1173
1185
  "aria-hidden": "true"
1174
- })], 8, Kn),
1186
+ })], 8, Jn),
1175
1187
  a("button", {
1176
1188
  type: "button",
1177
1189
  class: "kvc-button kvc-ghost kvc-icon-button",
1178
- disabled: T(d) || T(m),
1190
+ disabled: w(d) || w(m),
1179
1191
  "aria-label": O("remove", e.name),
1180
1192
  title: O("remove", e.name),
1181
1193
  "data-test": "worker-remove",
1182
1194
  onClick: (t) => E.value = e.name
1183
- }, [s(T(se), {
1195
+ }, [s(w(se), {
1184
1196
  size: 16,
1185
1197
  "aria-hidden": "true"
1186
- })], 8, qn),
1198
+ })], 8, Yn),
1187
1199
  a("button", {
1188
1200
  type: "button",
1189
1201
  role: "switch",
1190
1202
  class: "kvc-switch",
1191
1203
  "aria-checked": e.enabled,
1192
1204
  "aria-label": O("use", e.name),
1193
- disabled: T(d) || T(m),
1205
+ disabled: w(d) || w(m),
1194
1206
  "data-test": "worker-switch",
1195
- onClick: (t) => T(_)(e.name)
1207
+ onClick: (t) => w(v)(e.name)
1196
1208
  }, [...h[4] ||= [a("span", {
1197
1209
  class: "kvc-switch-knob",
1198
1210
  "aria-hidden": "true"
1199
- }, null, -1)]], 8, Jn)
1200
- ]))], 8, Nn))), 128)),
1201
- a("div", Yn, [a("button", {
1211
+ }, null, -1)]], 8, Xn)
1212
+ ]))], 8, Fn))), 128)),
1213
+ a("div", Zn, [a("button", {
1202
1214
  type: "button",
1203
1215
  class: "kvc-button kvc-primary",
1204
- disabled: T(d) || T(m),
1216
+ disabled: w(d) || w(m),
1205
1217
  "data-test": "worker-add",
1206
- onClick: h[3] ||= (e) => C.value = {}
1207
- }, [s(T(K), {
1218
+ onClick: h[3] ||= (e) => T.value = {}
1219
+ }, [s(w(W), {
1208
1220
  size: 16,
1209
1221
  "aria-hidden": "true"
1210
- }), o(w(T(c).t("kvcoder.config.workers.add")), 1)], 8, Xn)])
1211
- ])) : (v(), n(Tn, p({ key: 0 }, C.value.entry === void 0 ? {} : { entry: C.value.entry }, {
1212
- taken: T(l).filter((e) => e.name !== C.value?.entry?.name).map((e) => e.name),
1213
- working: T(m),
1222
+ }), o(C(w(c).t("kvcoder.config.workers.add")), 1)], 8, Qn)])
1223
+ ])) : (_(), n(Dn, f({ key: 0 }, T.value.entry === void 0 ? {} : { entry: T.value.entry }, {
1224
+ taken: w(l).filter((e) => e.name !== T.value?.entry?.name).map((e) => e.name),
1225
+ working: w(m),
1214
1226
  onSave: k,
1215
- onCancel: h[0] ||= (e) => C.value = void 0
1227
+ onCancel: h[0] ||= (e) => T.value = void 0
1216
1228
  }), null, 16, ["taken", "working"]));
1217
1229
  }
1218
- }), Qn = "@kvman/kvcoder", $n = (e) => Array.isArray(e) && e.every((e) => typeof e == "string");
1219
- function er(e) {
1220
- return typeof e != "object" || !e || !("name" in e) || !("description" in e) || typeof e.name != "string" || typeof e.description != "string" ? !1 : "command" in e ? typeof e.command == "string" && "args" in e && $n(e.args) && "env" in e && $n(e.env) : "url" in e && typeof e.url == "string" && "headers" in e && $n(e.headers);
1230
+ }), er = "@kvman/kvcoder", tr = (e) => Array.isArray(e) && e.every((e) => typeof e == "string");
1231
+ function nr(e) {
1232
+ return typeof e != "object" || !e || !("name" in e) || !("description" in e) || typeof e.name != "string" || typeof e.description != "string" ? !1 : "command" in e ? typeof e.command == "string" && "args" in e && tr(e.args) && "env" in e && tr(e.env) : "url" in e && typeof e.url == "string" && "headers" in e && tr(e.headers);
1221
1233
  }
1222
- var tr = (e) => Array.isArray(e) ? e.filter(er) : [], nr = (e, t, n) => `mcp.${e}.${t}.${n}`, $ = (e) => `mcp.${e}.`, rr = (e) => e.kind === "command" ? "env" : "header";
1223
- function ir(e, t) {
1234
+ var rr = (e) => Array.isArray(e) ? e.filter(nr) : [], ir = (e, t, n) => `mcp.${e}.${t}.${n}`, $ = (e) => `mcp.${e}.`, ar = (e) => e.kind === "command" ? "env" : "header";
1235
+ function or(e, t) {
1224
1236
  if (e === void 0) return {
1225
1237
  name: "",
1226
1238
  description: "",
@@ -1233,7 +1245,7 @@ function ir(e, t) {
1233
1245
  let [n, r] = "command" in e ? ["env", e.env] : ["header", e.headers], i = r.map((r) => ({
1234
1246
  name: r,
1235
1247
  value: "",
1236
- set: t.includes(nr(e.name, n, r)),
1248
+ set: t.includes(ir(e.name, n, r)),
1237
1249
  replacing: !1
1238
1250
  }));
1239
1251
  return "command" in e ? {
@@ -1254,7 +1266,7 @@ function ir(e, t) {
1254
1266
  values: i
1255
1267
  };
1256
1268
  }
1257
- function ar(e) {
1269
+ function sr(e) {
1258
1270
  let t = {
1259
1271
  name: e.name.trim(),
1260
1272
  description: e.description.trim()
@@ -1270,93 +1282,101 @@ function ar(e) {
1270
1282
  env: n
1271
1283
  };
1272
1284
  }
1273
- var or = /^[a-z][a-z0-9]*(-[a-z0-9]+)*$/, sr = {
1285
+ var cr = /^[a-z][a-z0-9]*(-[a-z0-9]+)*$/, lr = {
1274
1286
  env: /^[A-Za-z_][A-Za-z0-9_]*$/,
1275
1287
  header: /^[A-Za-z0-9!#$%&'*+.^_`|~-]+$/
1276
- }, cr = (e) => URL.canParse(e) && ["http:", "https:"].includes(new URL(e).protocol);
1277
- function lr(e) {
1278
- let t = rr(e), n = e.values.map((e) => e.name.trim());
1279
- return n.some((e) => !sr[t].test(e)) ? `kvcoder.config.mcp.invalid.valueName.${t}` : new Set(n).size === n.length ? e.values.some((e) => (!e.set || e.replacing) && e.value === "") ? "kvcoder.config.mcp.invalid.valueEmpty" : void 0 : "kvcoder.config.mcp.invalid.valueRepeated";
1288
+ }, ur = (e) => URL.canParse(e) && ["http:", "https:"].includes(new URL(e).protocol);
1289
+ function dr(e) {
1290
+ let t = ar(e), n = e.values.map((e) => e.name.trim());
1291
+ return n.some((e) => !lr[t].test(e)) ? `kvcoder.config.mcp.invalid.valueName.${t}` : new Set(n).size === n.length ? e.values.some((e) => (!e.set || e.replacing) && e.value === "") ? "kvcoder.config.mcp.invalid.valueEmpty" : void 0 : "kvcoder.config.mcp.invalid.valueRepeated";
1280
1292
  }
1281
- function ur(e, t) {
1293
+ function fr(e, t) {
1282
1294
  let n = e.name.trim(), r = {};
1283
- n === "" ? r.name = "kvcoder.config.mcp.invalid.nameEmpty" : or.test(n) ? t.includes(n) && (r.name = "kvcoder.config.mcp.invalid.nameTaken") : r.name = "kvcoder.config.mcp.invalid.nameShape", e.description.trim() === "" && (r.description = "kvcoder.config.mcp.invalid.descriptionEmpty"), e.kind === "command" && e.command.trim() === "" && (r.command = "kvcoder.config.mcp.invalid.commandEmpty"), e.kind === "url" && !cr(e.url.trim()) && (r.url = "kvcoder.config.mcp.invalid.url");
1284
- let i = lr(e);
1295
+ n === "" ? r.name = "kvcoder.config.mcp.invalid.nameEmpty" : cr.test(n) ? t.includes(n) && (r.name = "kvcoder.config.mcp.invalid.nameTaken") : r.name = "kvcoder.config.mcp.invalid.nameShape", e.description.trim() === "" && (r.description = "kvcoder.config.mcp.invalid.descriptionEmpty"), e.kind === "command" && e.command.trim() === "" && (r.command = "kvcoder.config.mcp.invalid.commandEmpty"), e.kind === "url" && !ur(e.url.trim()) && (r.url = "kvcoder.config.mcp.invalid.url");
1296
+ let i = dr(e);
1285
1297
  return i !== void 0 && (r.values = i), r;
1286
1298
  }
1287
- function dr(e, t, n) {
1288
- let r = e.name.trim(), i = rr(e), a = new Set(e.values.map((e) => nr(r, i, e.name.trim())));
1299
+ function pr(e, t) {
1300
+ return t === void 0 ? !1 : "command" in t ? e.kind !== "command" || e.command.trim() !== t.command || e.args.split("\n").map((e) => e.trim()).filter((e) => e !== "").join("\n") !== t.args.join("\n") : e.kind !== "url" || e.url.trim() !== t.url;
1301
+ }
1302
+ function mr(e, t, n) {
1303
+ let r = e.name.trim(), i = ar(e), a = new Set(e.values.map((e) => ir(r, i, e.name.trim()))), o = Object.fromEntries(e.values.filter((e) => !e.set || e.replacing).map((e) => [ir(r, i, e.name.trim()), e.value])), s = t === void 0 ? [] : n.filter((e) => e.startsWith(`${$(r)}env.`) || e.startsWith(`${$(r)}header.`)), c = pr(e, t) ? n.filter((e) => e.startsWith(`${$(r)}oauth.`)) : [];
1289
1304
  return {
1290
- set: Object.fromEntries(e.values.filter((e) => !e.set || e.replacing).map((e) => [nr(r, i, e.name.trim()), e.value])),
1291
- remove: (t === void 0 ? [] : n.filter((e) => e.startsWith(`${$(r)}env.`) || e.startsWith(`${$(r)}header.`))).filter((e) => !a.has(e))
1305
+ set: o,
1306
+ remove: [...s.filter((e) => !a.has(e)), ...c]
1292
1307
  };
1293
1308
  }
1294
1309
  //#endregion
1295
1310
  //#region web/src/McpServerForm.vue?vue&type=script&setup=true&lang.ts
1296
- var fr = {
1311
+ var hr = {
1297
1312
  class: "kvc-setting-title",
1298
1313
  "data-test": "mcp-form-title"
1299
- }, pr = { class: "kvc-form-field" }, mr = { class: "kvc-form-label" }, hr = ["aria-invalid"], gr = {
1314
+ }, gr = { class: "kvc-form-field" }, _r = { class: "kvc-form-label" }, vr = ["aria-invalid"], yr = {
1300
1315
  key: 0,
1301
1316
  class: "kvc-form-error",
1302
1317
  role: "alert",
1303
1318
  "data-test": "mcp-name-error"
1304
- }, _r = {
1319
+ }, br = {
1305
1320
  key: 1,
1306
1321
  class: "kvc-muted"
1307
- }, vr = { class: "kvc-form-field" }, yr = { class: "kvc-form-label" }, br = ["aria-invalid"], xr = {
1322
+ }, xr = { class: "kvc-form-field" }, Sr = { class: "kvc-form-label" }, Cr = ["aria-invalid"], wr = {
1308
1323
  key: 0,
1309
1324
  class: "kvc-form-error",
1310
1325
  role: "alert",
1311
1326
  "data-test": "mcp-description-error"
1312
- }, Sr = {
1327
+ }, Tr = {
1313
1328
  key: 1,
1314
1329
  class: "kvc-muted"
1315
- }, Cr = { class: "kvc-form-choice" }, wr = { class: "kvc-form-label" }, Tr = [
1330
+ }, Er = { class: "kvc-form-choice" }, Dr = { class: "kvc-form-label" }, Or = [
1316
1331
  "value",
1317
1332
  "checked",
1318
1333
  "data-test",
1319
1334
  "onChange"
1320
- ], Er = { class: "kvc-form-field" }, Dr = { class: "kvc-form-label" }, Or = ["aria-invalid"], kr = {
1335
+ ], kr = { class: "kvc-form-field" }, Ar = { class: "kvc-form-label" }, jr = ["aria-invalid"], Mr = {
1321
1336
  key: 0,
1322
1337
  class: "kvc-form-error",
1323
1338
  role: "alert",
1324
1339
  "data-test": "mcp-command-error"
1325
- }, Ar = {
1340
+ }, Nr = {
1326
1341
  key: 1,
1327
1342
  class: "kvc-muted"
1328
- }, jr = { class: "kvc-form-field" }, Mr = { class: "kvc-form-label" }, Nr = { class: "kvc-muted" }, Pr = {
1343
+ }, Pr = { class: "kvc-form-field" }, Fr = { class: "kvc-form-label" }, Ir = { class: "kvc-muted" }, Lr = {
1329
1344
  key: 1,
1330
1345
  class: "kvc-form-field"
1331
- }, Fr = { class: "kvc-form-label" }, Ir = ["aria-invalid"], Lr = {
1346
+ }, Rr = { class: "kvc-form-label" }, zr = ["aria-invalid"], Br = {
1332
1347
  key: 0,
1333
1348
  class: "kvc-form-error",
1334
1349
  role: "alert",
1335
1350
  "data-test": "mcp-url-error"
1336
- }, Rr = {
1351
+ }, Vr = {
1337
1352
  class: "kvc-form-field",
1338
1353
  "data-test": "mcp-values"
1339
- }, zr = { class: "kvc-form-label" }, Br = { class: "kvc-muted" }, Vr = [
1354
+ }, Hr = { class: "kvc-form-label" }, Ur = { class: "kvc-muted" }, Wr = {
1355
+ key: 0,
1356
+ class: "kvc-muted",
1357
+ role: "status",
1358
+ "data-test": "mcp-moved"
1359
+ }, Gr = [
1340
1360
  "onUpdate:modelValue",
1341
1361
  "disabled",
1342
1362
  "placeholder",
1343
1363
  "aria-label"
1344
- ], Hr = {
1364
+ ], Kr = {
1345
1365
  key: 0,
1346
1366
  class: "kvc-form-set"
1347
- }, Ur = {
1367
+ }, qr = {
1348
1368
  class: "kvc-chip",
1349
1369
  "data-test": "mcp-value-set"
1350
- }, Wr = ["onClick"], Gr = [
1370
+ }, Jr = ["onClick"], Yr = [
1351
1371
  "onUpdate:modelValue",
1352
1372
  "placeholder",
1353
1373
  "aria-label"
1354
- ], Kr = ["aria-label", "onClick"], qr = {
1355
- key: 0,
1374
+ ], Xr = ["aria-label", "onClick"], Zr = {
1375
+ key: 1,
1356
1376
  class: "kvc-form-error",
1357
1377
  role: "alert",
1358
1378
  "data-test": "mcp-values-error"
1359
- }, Jr = { class: "kvc-actions" }, Yr = ["disabled"], Xr = ["disabled"], Zr = /* @__PURE__ */ c({
1379
+ }, Qr = { class: "kvc-actions" }, $r = ["disabled"], ei = ["disabled"], ti = /* @__PURE__ */ c({
1360
1380
  __name: "McpServerForm",
1361
1381
  props: {
1362
1382
  entry: {},
@@ -1366,38 +1386,42 @@ var fr = {
1366
1386
  },
1367
1387
  emits: ["save", "cancel"],
1368
1388
  setup(n, { emit: c }) {
1369
- let l = n, u = c, d = q(), f = y(ir(l.entry, l.secrets)), p = b({}), m = t(() => rr(f)), h = (e) => d.t(`kvcoder.config.mcp.form.${e}`), g = l.entry !== void 0;
1370
- function _() {
1371
- p.value = ur(f, l.taken), !(Object.keys(p.value).length > 0) && u("save", ar(f), dr(f, l.entry, l.secrets));
1389
+ let l = n, u = c, d = K(), f = v(or(l.entry, l.secrets)), p = y({}), m = t(() => ar(f)), h = (e) => d.t(`kvcoder.config.mcp.form.${e}`), g = t(() => pr(f, l.entry));
1390
+ j(g, (e) => {
1391
+ if (e) for (let e of f.values) e.set && (e.replacing = !0);
1392
+ });
1393
+ let x = l.entry !== void 0;
1394
+ function S() {
1395
+ p.value = fr(f, l.taken), !(Object.keys(p.value).length > 0) && u("save", sr(f), mr(f, l.entry, l.secrets));
1372
1396
  }
1373
- function S(e) {
1397
+ function T(e) {
1374
1398
  f.kind !== e && (f.kind = e, f.values = []);
1375
1399
  }
1376
- return (t, n) => (v(), i("form", {
1400
+ return (t, n) => (_(), i("form", {
1377
1401
  class: "kvc-form",
1378
1402
  novalidate: "",
1379
1403
  "data-test": "mcp-form",
1380
- onSubmit: I(_, ["prevent"])
1404
+ onSubmit: F(S, ["prevent"])
1381
1405
  }, [
1382
- a("span", fr, w(g ? T(d).t("kvcoder.config.mcp.form.titleEdit", { name: f.name }) : h("titleNew")), 1),
1383
- a("label", pr, [
1384
- a("span", mr, w(h("name")), 1),
1385
- P(a("input", {
1406
+ a("span", hr, C(x ? w(d).t("kvcoder.config.mcp.form.titleEdit", { name: f.name }) : h("titleNew")), 1),
1407
+ a("label", gr, [
1408
+ a("span", _r, C(h("name")), 1),
1409
+ N(a("input", {
1386
1410
  "onUpdate:modelValue": n[0] ||= (e) => f.name = e,
1387
1411
  type: "text",
1388
1412
  dir: "ltr",
1389
1413
  class: "kvc-field kvc-mono",
1390
- disabled: g,
1414
+ disabled: x,
1391
1415
  spellcheck: "false",
1392
1416
  autocomplete: "off",
1393
1417
  "aria-invalid": p.value.name !== void 0,
1394
1418
  "data-test": "mcp-name"
1395
- }, null, 8, hr), [[j, f.name]]),
1396
- p.value.name === void 0 ? (v(), i("span", _r, w(h("nameHint")), 1)) : (v(), i("span", gr, w(T(d).t(p.value.name)), 1))
1419
+ }, null, 8, vr), [[A, f.name]]),
1420
+ p.value.name === void 0 ? (_(), i("span", br, C(h("nameHint")), 1)) : (_(), i("span", yr, C(w(d).t(p.value.name)), 1))
1397
1421
  ]),
1398
- a("label", vr, [
1399
- a("span", yr, w(h("description")), 1),
1400
- P(a("input", {
1422
+ a("label", xr, [
1423
+ a("span", Sr, C(h("description")), 1),
1424
+ N(a("input", {
1401
1425
  "onUpdate:modelValue": n[1] ||= (e) => f.description = e,
1402
1426
  type: "text",
1403
1427
  dir: "auto",
@@ -1405,10 +1429,10 @@ var fr = {
1405
1429
  autocomplete: "off",
1406
1430
  "aria-invalid": p.value.description !== void 0,
1407
1431
  "data-test": "mcp-description"
1408
- }, null, 8, br), [[j, f.description]]),
1409
- p.value.description === void 0 ? (v(), i("span", Sr, w(h("descriptionHint")), 1)) : (v(), i("span", xr, w(T(d).t(p.value.description)), 1))
1432
+ }, null, 8, Cr), [[A, f.description]]),
1433
+ p.value.description === void 0 ? (_(), i("span", Tr, C(h("descriptionHint")), 1)) : (_(), i("span", wr, C(w(d).t(p.value.description)), 1))
1410
1434
  ]),
1411
- a("fieldset", Cr, [a("legend", wr, w(h("kind")), 1), (v(), i(e, null, x(["command", "url"], (e) => a("label", {
1435
+ a("fieldset", Er, [a("legend", Dr, C(h("kind")), 1), (_(), i(e, null, b(["command", "url"], (e) => a("label", {
1412
1436
  key: e,
1413
1437
  class: "kvc-form-radio"
1414
1438
  }, [a("input", {
@@ -1417,11 +1441,11 @@ var fr = {
1417
1441
  value: e,
1418
1442
  checked: f.kind === e,
1419
1443
  "data-test": `mcp-kind-${e}`,
1420
- onChange: (t) => S(e)
1421
- }, null, 40, Tr), o(" " + w(h(`kind.${e}`)), 1)])), 64))]),
1422
- f.kind === "command" ? (v(), i(e, { key: 0 }, [a("label", Er, [
1423
- a("span", Dr, w(h("command")), 1),
1424
- P(a("input", {
1444
+ onChange: (t) => T(e)
1445
+ }, null, 40, Or), o(" " + C(h(`kind.${e}`)), 1)])), 64))]),
1446
+ f.kind === "command" ? (_(), i(e, { key: 0 }, [a("label", kr, [
1447
+ a("span", Ar, C(h("command")), 1),
1448
+ N(a("input", {
1425
1449
  "onUpdate:modelValue": n[2] ||= (e) => f.command = e,
1426
1450
  type: "text",
1427
1451
  dir: "ltr",
@@ -1430,22 +1454,22 @@ var fr = {
1430
1454
  autocomplete: "off",
1431
1455
  "aria-invalid": p.value.command !== void 0,
1432
1456
  "data-test": "mcp-command"
1433
- }, null, 8, Or), [[j, f.command]]),
1434
- p.value.command === void 0 ? (v(), i("span", Ar, w(h("commandHint")), 1)) : (v(), i("span", kr, w(T(d).t(p.value.command)), 1))
1435
- ]), a("label", jr, [
1436
- a("span", Mr, w(h("args")), 1),
1437
- P(a("textarea", {
1457
+ }, null, 8, jr), [[A, f.command]]),
1458
+ p.value.command === void 0 ? (_(), i("span", Nr, C(h("commandHint")), 1)) : (_(), i("span", Mr, C(w(d).t(p.value.command)), 1))
1459
+ ]), a("label", Pr, [
1460
+ a("span", Fr, C(h("args")), 1),
1461
+ N(a("textarea", {
1438
1462
  "onUpdate:modelValue": n[3] ||= (e) => f.args = e,
1439
1463
  dir: "ltr",
1440
1464
  rows: "3",
1441
1465
  class: "kvc-field kvc-mono",
1442
1466
  spellcheck: "false",
1443
1467
  "data-test": "mcp-args"
1444
- }, null, 512), [[j, f.args]]),
1445
- a("span", Nr, w(h("argsHint")), 1)
1446
- ])], 64)) : (v(), i("label", Pr, [
1447
- a("span", Fr, w(h("url")), 1),
1448
- P(a("input", {
1468
+ }, null, 512), [[A, f.args]]),
1469
+ a("span", Ir, C(h("argsHint")), 1)
1470
+ ])], 64)) : (_(), i("label", Lr, [
1471
+ a("span", Rr, C(h("url")), 1),
1472
+ N(a("input", {
1449
1473
  "onUpdate:modelValue": n[4] ||= (e) => f.url = e,
1450
1474
  type: "url",
1451
1475
  dir: "ltr",
@@ -1455,18 +1479,19 @@ var fr = {
1455
1479
  placeholder: "https://",
1456
1480
  "aria-invalid": p.value.url !== void 0,
1457
1481
  "data-test": "mcp-url"
1458
- }, null, 8, Ir), [[j, f.url]]),
1459
- p.value.url === void 0 ? r("v-if", !0) : (v(), i("span", Lr, w(T(d).t(p.value.url)), 1))
1482
+ }, null, 8, zr), [[A, f.url]]),
1483
+ p.value.url === void 0 ? r("v-if", !0) : (_(), i("span", Br, C(w(d).t(p.value.url)), 1))
1460
1484
  ])),
1461
- a("div", Rr, [
1462
- a("span", zr, w(h(m.value)), 1),
1463
- a("span", Br, w(h("secretsHint")), 1),
1464
- (v(!0), i(e, null, x(f.values, (e, t) => (v(), i("div", {
1485
+ a("div", Vr, [
1486
+ a("span", Hr, C(h(m.value)), 1),
1487
+ a("span", Ur, C(h("secretsHint")), 1),
1488
+ g.value ? (_(), i("span", Wr, C(h("moved")), 1)) : r("v-if", !0),
1489
+ (_(!0), i(e, null, b(f.values, (e, t) => (_(), i("div", {
1465
1490
  key: t,
1466
1491
  class: "kvc-form-value",
1467
1492
  "data-test": "mcp-value"
1468
1493
  }, [
1469
- P(a("input", {
1494
+ N(a("input", {
1470
1495
  "onUpdate:modelValue": (t) => e.name = t,
1471
1496
  type: "text",
1472
1497
  dir: "ltr",
@@ -1477,34 +1502,34 @@ var fr = {
1477
1502
  spellcheck: "false",
1478
1503
  autocomplete: "off",
1479
1504
  "data-test": "mcp-value-name"
1480
- }, null, 8, Vr), [[j, e.name]]),
1481
- e.set && !e.replacing ? (v(), i("span", Hr, [a("span", Ur, w(h("set")), 1), a("button", {
1505
+ }, null, 8, Gr), [[A, e.name]]),
1506
+ e.set && !e.replacing ? (_(), i("span", Kr, [a("span", qr, C(h("set")), 1), a("button", {
1482
1507
  type: "button",
1483
1508
  class: "kvc-text-button",
1484
1509
  "data-test": "mcp-value-replace",
1485
1510
  onClick: (t) => e.replacing = !0
1486
- }, w(h("replace")), 9, Wr)])) : P((v(), i("input", {
1511
+ }, C(h("replace")), 9, Jr)])) : N((_(), i("input", {
1487
1512
  key: 1,
1488
1513
  "onUpdate:modelValue": (t) => e.value = t,
1489
1514
  type: "password",
1490
1515
  autocomplete: "off",
1491
1516
  class: "kvc-field",
1492
1517
  placeholder: h("value"),
1493
- "aria-label": T(d).t("kvcoder.config.mcp.form.valueOf", { name: e.name }),
1518
+ "aria-label": w(d).t("kvcoder.config.mcp.form.valueOf", { name: e.name }),
1494
1519
  "data-test": "mcp-value-secret"
1495
- }, null, 8, Gr)), [[j, e.value]]),
1520
+ }, null, 8, Yr)), [[A, e.value]]),
1496
1521
  a("button", {
1497
1522
  type: "button",
1498
1523
  class: "kvc-button kvc-ghost kvc-icon-button",
1499
- "aria-label": T(d).t("kvcoder.config.mcp.form.removeValue", { name: e.name }),
1524
+ "aria-label": w(d).t("kvcoder.config.mcp.form.removeValue", { name: e.name }),
1500
1525
  "data-test": "mcp-value-remove",
1501
1526
  onClick: (e) => f.values.splice(t, 1)
1502
- }, [s(T(ce), {
1527
+ }, [s(w(ce), {
1503
1528
  size: 16,
1504
1529
  "aria-hidden": "true"
1505
- })], 8, Kr)
1530
+ })], 8, Xr)
1506
1531
  ]))), 128)),
1507
- p.value.values === void 0 ? r("v-if", !0) : (v(), i("span", qr, w(T(d).t(p.value.values)), 1)),
1532
+ p.value.values === void 0 ? r("v-if", !0) : (_(), i("span", Zr, C(w(d).t(p.value.values)), 1)),
1508
1533
  a("button", {
1509
1534
  type: "button",
1510
1535
  class: "kvc-text-button kvc-form-add",
@@ -1515,31 +1540,31 @@ var fr = {
1515
1540
  set: !1,
1516
1541
  replacing: !1
1517
1542
  })
1518
- }, [s(T(K), {
1543
+ }, [s(w(W), {
1519
1544
  size: 14,
1520
1545
  "aria-hidden": "true"
1521
- }), o(w(h(`add.${m.value}`)), 1)])
1546
+ }), o(C(h(`add.${m.value}`)), 1)])
1522
1547
  ]),
1523
- a("div", Jr, [a("button", {
1548
+ a("div", Qr, [a("button", {
1524
1549
  type: "button",
1525
1550
  class: "kvc-button",
1526
1551
  disabled: l.working,
1527
1552
  "data-test": "mcp-cancel",
1528
1553
  onClick: n[6] ||= (e) => u("cancel")
1529
- }, w(T(d).t("kvcoder.config.mcp.cancel")), 9, Yr), a("button", {
1554
+ }, C(w(d).t("kvcoder.config.mcp.cancel")), 9, $r), a("button", {
1530
1555
  type: "submit",
1531
1556
  class: "kvc-button kvc-primary",
1532
1557
  disabled: l.working,
1533
1558
  "data-test": "mcp-save"
1534
- }, w(h("save")), 9, Xr)])
1559
+ }, C(h("save")), 9, ei)])
1535
1560
  ], 32));
1536
1561
  }
1537
1562
  });
1538
1563
  //#endregion
1539
1564
  //#region web/src/use-mcp-servers.ts
1540
- function Qr(e) {
1541
- let n = Y(e, "kvcoder.mcp.servers"), r = t(() => tr(n.value.value)), i = b({}), a = b([]), o = b(!1), s = /* @__PURE__ */ new Set(), c = async () => {
1542
- a.value = (await e.exec("kernel.secrets.list", {})).filter((e) => e.extension === Qn).map((e) => e.name);
1565
+ function ni(e) {
1566
+ let n = J(e, "kvcoder.mcp.servers"), r = t(() => rr(n.value.value)), i = y({}), a = y([]), o = y(!1), s = /* @__PURE__ */ new Set(), c = async () => {
1567
+ a.value = (await e.exec("kernel.secrets.list", {})).filter((e) => e.extension === er).map((e) => e.name);
1543
1568
  };
1544
1569
  async function l(t) {
1545
1570
  i.value = {
@@ -1573,14 +1598,14 @@ function Qr(e) {
1573
1598
  try {
1574
1599
  return await t();
1575
1600
  } catch (t) {
1576
- return J(e, t), !1;
1601
+ return q(e, t), !1;
1577
1602
  } finally {
1578
1603
  o.value = !1;
1579
1604
  }
1580
1605
  }
1581
1606
  let f = async (t) => {
1582
1607
  for (let n of t) await e.exec("kernel.secrets.delete", {
1583
- extension: Qn,
1608
+ extension: er,
1584
1609
  name: n
1585
1610
  });
1586
1611
  }, p = (t, i) => d(async () => {
@@ -1593,7 +1618,7 @@ function Qr(e) {
1593
1618
  try {
1594
1619
  if (!await n.set(u)) return !1;
1595
1620
  for (let [t, n] of Object.entries(i.set)) await e.exec("kernel.secrets.set", {
1596
- extension: Qn,
1621
+ extension: er,
1597
1622
  name: t,
1598
1623
  value: n
1599
1624
  });
@@ -1612,25 +1637,25 @@ function Qr(e) {
1612
1637
  let r = window.open(n, "_blank");
1613
1638
  return r === null ? "blocked" : (r.opener = null, "opened");
1614
1639
  }
1615
- let h = (e) => d(async () => (await f(a.value.filter((t) => t.startsWith(`${$(e)}oauth.`))), await c(), l(e), !0)), v = (e) => a.value.includes(`${$(e)}oauth.tokens`);
1616
- async function y() {
1640
+ let _ = (e) => d(async () => (await f(a.value.filter((t) => t.startsWith(`${$(e)}oauth.`))), await c(), l(e), !0)), v = (e) => a.value.includes(`${$(e)}oauth.tokens`);
1641
+ async function b() {
1617
1642
  let e = r.value.filter((e) => i.value[e.name]?.status === "signInNeeded");
1618
1643
  if (e.length !== 0) {
1619
1644
  await c();
1620
1645
  for (let t of e) l(t.name);
1621
1646
  }
1622
1647
  }
1623
- return g(async () => {
1624
- window.addEventListener("focus", y);
1648
+ return h(async () => {
1649
+ window.addEventListener("focus", b);
1625
1650
  try {
1626
1651
  await c();
1627
1652
  } catch (t) {
1628
- J(e, t);
1653
+ q(e, t);
1629
1654
  }
1630
- }), M(r, (e, t) => {
1655
+ }), j(r, (e, t) => {
1631
1656
  let n = new Set((t ?? []).map((e) => e.name));
1632
1657
  for (let t of e) !s.has(t.name) && (!n.has(t.name) || !(t.name in i.value)) && l(t.name);
1633
- }), _(() => window.removeEventListener("focus", y)), M(() => e.workspace.value.id, u), {
1658
+ }), g(() => window.removeEventListener("focus", b)), j(() => e.workspace.value.id, u), {
1634
1659
  servers: r,
1635
1660
  states: i,
1636
1661
  secrets: a,
@@ -1642,59 +1667,59 @@ function Qr(e) {
1642
1667
  reset: n.reset,
1643
1668
  check: l,
1644
1669
  signIn: m,
1645
- signOut: h,
1670
+ signOut: _,
1646
1671
  signedIn: v
1647
1672
  };
1648
1673
  }
1649
1674
  //#endregion
1650
1675
  //#region web/src/McpServers.vue?vue&type=script&setup=true&lang.ts
1651
- var $r = {
1676
+ var ri = {
1652
1677
  key: 1,
1653
1678
  class: "kvc-dialog-rows",
1654
1679
  "data-test": "mcp-servers"
1655
- }, ei = { class: "kvc-muted" }, ti = {
1680
+ }, ii = { class: "kvc-muted" }, ai = {
1656
1681
  key: 0,
1657
1682
  class: "kvc-muted",
1658
1683
  "data-test": "mcp-own-value"
1659
- }, ni = {
1684
+ }, oi = {
1660
1685
  key: 1,
1661
1686
  class: "kvc-connectors-state"
1662
- }, ri = {
1687
+ }, si = {
1663
1688
  class: "kvc-chip",
1664
1689
  "data-test": "mcp-changed"
1665
- }, ii = ["disabled"], ai = {
1690
+ }, ci = ["disabled"], li = {
1666
1691
  key: 2,
1667
1692
  class: "kvc-muted",
1668
1693
  "data-test": "mcp-empty"
1669
- }, oi = ["data-test"], si = { class: "kvc-connector-text" }, ci = {
1694
+ }, ui = ["data-test"], di = { class: "kvc-connector-text" }, fi = {
1670
1695
  class: "kvc-mono kvc-connector-name",
1671
1696
  "data-test": "mcp-server-name"
1672
- }, li = {
1697
+ }, pi = {
1673
1698
  class: "kvc-muted",
1674
1699
  dir: "auto",
1675
1700
  "data-test": "mcp-server-description"
1676
- }, ui = ["data-status"], di = ["onClick"], fi = ["disabled", "onClick"], pi = ["disabled", "onClick"], mi = {
1701
+ }, mi = ["data-status"], hi = ["onClick"], gi = ["disabled", "onClick"], _i = ["disabled", "onClick"], vi = {
1677
1702
  key: 1,
1678
1703
  class: "kvc-muted kvc-server-reason",
1679
1704
  dir: "auto",
1680
1705
  "data-test": "mcp-server-reason"
1681
- }, hi = ["aria-label"], gi = { class: "kvc-muted" }, _i = ["disabled"], vi = ["disabled", "onClick"], yi = {
1706
+ }, yi = ["aria-label"], bi = { class: "kvc-muted" }, xi = ["disabled"], Si = ["disabled", "onClick"], Ci = {
1682
1707
  key: 1,
1683
1708
  class: "kvc-connector-actions"
1684
- }, bi = [
1709
+ }, wi = [
1685
1710
  "disabled",
1686
1711
  "aria-label",
1687
1712
  "title",
1688
1713
  "onClick"
1689
- ], xi = [
1714
+ ], Ti = [
1690
1715
  "disabled",
1691
1716
  "aria-label",
1692
1717
  "title",
1693
1718
  "onClick"
1694
- ], Si = { class: "kvc-actions" }, Ci = ["disabled"], wi = /* @__PURE__ */ c({
1719
+ ], Ei = { class: "kvc-actions" }, Di = ["disabled"], Oi = /* @__PURE__ */ c({
1695
1720
  __name: "McpServers",
1696
1721
  setup(t) {
1697
- let c = q(), { servers: l, states: u, secrets: d, locked: f, changed: m, working: h, save: g, remove: _, reset: y, check: S, signIn: C, signOut: E, signedIn: D } = Qr(c), O = b(), k = b(), A = (e) => c.t(`${e}.${c.scope.value}`, { name: c.workspace.value.name }), j = (e) => u.value[e] ?? { status: "checking" };
1722
+ let c = K(), { servers: l, states: u, secrets: d, locked: p, changed: m, working: h, save: g, remove: v, reset: x, check: S, signIn: T, signOut: E, signedIn: D } = ni(c), O = y(), k = y(), A = (e) => c.t(`${e}.${c.scope.value}`, { name: c.workspace.value.name }), j = (e) => u.value[e] ?? { status: "checking" };
1698
1723
  function M(e) {
1699
1724
  return e.status === "ready" ? c.t("kvcoder.config.mcp.ready", { count: e.tools }) : c.t(`kvcoder.config.mcp.${e.status}`);
1700
1725
  }
@@ -1703,119 +1728,119 @@ var $r = {
1703
1728
  await g(e, t) && (O.value = void 0, c.toast("kvcoder.config.mcp.saved", { name: e.name }, "success"));
1704
1729
  }
1705
1730
  async function F(e) {
1706
- await C(e) === "blocked" && c.toast("kvcoder.config.mcp.signIn.blocked", {}, "warning");
1731
+ await T(e) === "blocked" && c.toast("kvcoder.config.mcp.signIn.blocked", {}, "warning");
1707
1732
  }
1708
1733
  async function I(e) {
1709
- await _(e) && c.toast("kvcoder.config.mcp.removed", { name: e }, "success"), k.value = void 0;
1734
+ await v(e) && c.toast("kvcoder.config.mcp.removed", { name: e }, "success"), k.value = void 0;
1710
1735
  }
1711
- return (t, u) => O.value === void 0 ? (v(), i("div", $r, [
1712
- a("p", ei, w(T(c).t("kvcoder.config.mcp.intro")), 1),
1713
- T(f) ? (v(), i("p", ti, w(T(c).t("kvcoder.config.connectors.ownValue", { name: T(c).workspace.value.name })), 1)) : T(m) ? (v(), i("div", ni, [a("span", ri, w(A("kvcoder.config.connectors.changed")), 1), a("button", {
1736
+ return (t, u) => O.value === void 0 ? (_(), i("div", ri, [
1737
+ a("p", ii, C(w(c).t("kvcoder.config.mcp.intro")), 1),
1738
+ w(p) ? (_(), i("p", ai, C(w(c).t("kvcoder.config.connectors.ownValue", { name: w(c).workspace.value.name })), 1)) : w(m) ? (_(), i("div", oi, [a("span", si, C(A("kvcoder.config.connectors.changed")), 1), a("button", {
1714
1739
  type: "button",
1715
1740
  class: "kvc-text-button",
1716
- disabled: T(h),
1741
+ disabled: w(h),
1717
1742
  "data-test": "mcp-reset",
1718
- onClick: u[1] ||= (...e) => T(y) && T(y)(...e)
1719
- }, w(A("kvcoder.config.connectors.reset")), 9, ii)])) : r("v-if", !0),
1720
- T(l).length === 0 ? (v(), i("p", ai, w(T(c).t("kvcoder.config.mcp.empty")), 1)) : r("v-if", !0),
1721
- (v(!0), i(e, null, x(T(l), (e) => (v(), i("div", {
1743
+ onClick: u[1] ||= (...e) => w(x) && w(x)(...e)
1744
+ }, C(A("kvcoder.config.connectors.reset")), 9, ci)])) : r("v-if", !0),
1745
+ w(l).length === 0 ? (_(), i("p", li, C(w(c).t("kvcoder.config.mcp.empty")), 1)) : r("v-if", !0),
1746
+ (_(!0), i(e, null, b(w(l), (e) => (_(), i("div", {
1722
1747
  key: e.name,
1723
1748
  class: "kvc-connector kvc-server",
1724
1749
  "data-test": `mcp-server-${e.name}`
1725
- }, [a("span", si, [
1726
- a("span", ci, w(e.name), 1),
1727
- a("span", li, w(e.description), 1),
1750
+ }, [a("span", di, [
1751
+ a("span", fi, C(e.name), 1),
1752
+ a("span", pi, C(e.description), 1),
1728
1753
  a("span", {
1729
1754
  class: "kvc-server-state",
1730
1755
  "data-status": j(e.name).status,
1731
1756
  role: "status",
1732
1757
  "data-test": "mcp-server-state"
1733
1758
  }, [
1734
- o(w(M(j(e.name))) + " ", 1),
1735
- j(e.name).status === "checking" ? r("v-if", !0) : (v(), i("button", {
1759
+ o(C(M(j(e.name))) + " ", 1),
1760
+ j(e.name).status === "checking" ? r("v-if", !0) : (_(), i("button", {
1736
1761
  key: 0,
1737
1762
  type: "button",
1738
1763
  class: "kvc-text-button",
1739
1764
  "data-test": "mcp-server-check",
1740
- onClick: (t) => T(S)(e.name)
1741
- }, w(T(c).t("kvcoder.config.mcp.recheck")), 9, di)),
1742
- "url" in e && T(D)(e.name) ? (v(), i("button", {
1765
+ onClick: (t) => w(S)(e.name)
1766
+ }, C(w(c).t("kvcoder.config.mcp.recheck")), 9, hi)),
1767
+ "url" in e && w(D)(e.name) ? (_(), i("button", {
1743
1768
  key: 1,
1744
1769
  type: "button",
1745
1770
  class: "kvc-text-button",
1746
- disabled: T(h),
1771
+ disabled: w(h),
1747
1772
  "data-test": "mcp-server-sign-out",
1748
- onClick: (t) => T(E)(e.name)
1749
- }, w(T(c).t("kvcoder.config.mcp.signOut")), 9, fi)) : r("v-if", !0)
1750
- ], 8, ui),
1751
- "url" in e && j(e.name).status === "signInNeeded" ? (v(), i("button", {
1773
+ onClick: (t) => w(E)(e.name)
1774
+ }, C(w(c).t("kvcoder.config.mcp.signOut")), 9, gi)) : r("v-if", !0)
1775
+ ], 8, mi),
1776
+ "url" in e && j(e.name).status === "signInNeeded" ? (_(), i("button", {
1752
1777
  key: 0,
1753
1778
  type: "button",
1754
1779
  class: "kvc-button kvc-primary kvc-server-sign-in",
1755
- disabled: T(h),
1780
+ disabled: w(h),
1756
1781
  "data-test": "mcp-server-sign-in",
1757
1782
  onClick: (t) => F(e.name)
1758
- }, w(T(c).t("kvcoder.config.mcp.signIn")), 9, pi)) : r("v-if", !0),
1759
- N(j(e.name)) === void 0 ? r("v-if", !0) : (v(), i("span", mi, w(N(j(e.name))), 1))
1760
- ]), k.value === e.name ? (v(), i("span", {
1783
+ }, C(w(c).t("kvcoder.config.mcp.signIn")), 9, _i)) : r("v-if", !0),
1784
+ N(j(e.name)) === void 0 ? r("v-if", !0) : (_(), i("span", vi, C(N(j(e.name))), 1))
1785
+ ]), k.value === e.name ? (_(), i("span", {
1761
1786
  key: 0,
1762
1787
  class: "kvc-connector-actions",
1763
1788
  role: "alertdialog",
1764
- "aria-label": T(c).t("kvcoder.config.mcp.removeConfirm", { name: e.name }),
1789
+ "aria-label": w(c).t("kvcoder.config.mcp.removeConfirm", { name: e.name }),
1765
1790
  "data-test": "mcp-remove-confirm"
1766
1791
  }, [
1767
- a("span", gi, w(T(c).t("kvcoder.config.mcp.removeConfirm", { name: e.name })), 1),
1792
+ a("span", bi, C(w(c).t("kvcoder.config.mcp.removeConfirm", { name: e.name })), 1),
1768
1793
  a("button", {
1769
1794
  type: "button",
1770
1795
  class: "kvc-button",
1771
- disabled: T(h),
1796
+ disabled: w(h),
1772
1797
  "data-test": "mcp-remove-cancel",
1773
1798
  onClick: u[2] ||= (e) => k.value = void 0
1774
- }, w(T(c).t("kvcoder.config.mcp.cancel")), 9, _i),
1799
+ }, C(w(c).t("kvcoder.config.mcp.cancel")), 9, xi),
1775
1800
  a("button", {
1776
1801
  type: "button",
1777
1802
  class: "kvc-button kvc-danger",
1778
- disabled: T(h),
1803
+ disabled: w(h),
1779
1804
  "data-test": "mcp-remove-yes",
1780
1805
  onClick: (t) => I(e.name)
1781
- }, w(T(c).t("kvcoder.config.mcp.removeYes")), 9, vi)
1782
- ], 8, hi)) : (v(), i("span", yi, [a("button", {
1806
+ }, C(w(c).t("kvcoder.config.mcp.removeYes")), 9, Si)
1807
+ ], 8, yi)) : (_(), i("span", Ci, [a("button", {
1783
1808
  type: "button",
1784
1809
  class: "kvc-button kvc-ghost kvc-icon-button",
1785
- disabled: T(f) || T(h),
1786
- "aria-label": T(c).t("kvcoder.config.mcp.edit", { name: e.name }),
1787
- title: T(c).t("kvcoder.config.mcp.edit", { name: e.name }),
1810
+ disabled: w(p) || w(h),
1811
+ "aria-label": w(c).t("kvcoder.config.mcp.edit", { name: e.name }),
1812
+ title: w(c).t("kvcoder.config.mcp.edit", { name: e.name }),
1788
1813
  "data-test": "mcp-server-edit",
1789
1814
  onClick: (t) => O.value = { entry: e }
1790
- }, [s(T(G), {
1815
+ }, [s(w(U), {
1791
1816
  size: 16,
1792
1817
  "aria-hidden": "true"
1793
- })], 8, bi), a("button", {
1818
+ })], 8, wi), a("button", {
1794
1819
  type: "button",
1795
1820
  class: "kvc-button kvc-ghost kvc-icon-button",
1796
- disabled: T(f) || T(h),
1797
- "aria-label": T(c).t("kvcoder.config.mcp.remove", { name: e.name }),
1798
- title: T(c).t("kvcoder.config.mcp.remove", { name: e.name }),
1821
+ disabled: w(p) || w(h),
1822
+ "aria-label": w(c).t("kvcoder.config.mcp.remove", { name: e.name }),
1823
+ title: w(c).t("kvcoder.config.mcp.remove", { name: e.name }),
1799
1824
  "data-test": "mcp-server-remove",
1800
1825
  onClick: (t) => k.value = e.name
1801
- }, [s(T(se), {
1826
+ }, [s(w(se), {
1802
1827
  size: 16,
1803
1828
  "aria-hidden": "true"
1804
- })], 8, xi)]))], 8, oi))), 128)),
1805
- a("div", Si, [a("button", {
1829
+ })], 8, Ti)]))], 8, ui))), 128)),
1830
+ a("div", Ei, [a("button", {
1806
1831
  type: "button",
1807
1832
  class: "kvc-button kvc-primary",
1808
- disabled: T(f) || T(h),
1833
+ disabled: w(p) || w(h),
1809
1834
  "data-test": "mcp-add",
1810
1835
  onClick: u[3] ||= (e) => O.value = {}
1811
- }, [s(T(K), {
1836
+ }, [s(w(W), {
1812
1837
  size: 16,
1813
1838
  "aria-hidden": "true"
1814
- }), o(w(T(c).t("kvcoder.config.mcp.add")), 1)], 8, Ci)])
1815
- ])) : (v(), n(Zr, p({ key: 0 }, O.value.entry === void 0 ? {} : { entry: O.value.entry }, {
1816
- taken: T(l).filter((e) => e.name !== O.value?.entry?.name).map((e) => e.name),
1817
- secrets: T(d),
1818
- working: T(h),
1839
+ }), o(C(w(c).t("kvcoder.config.mcp.add")), 1)], 8, Di)])
1840
+ ])) : (_(), n(ti, f({ key: 0 }, O.value.entry === void 0 ? {} : { entry: O.value.entry }, {
1841
+ taken: w(l).filter((e) => e.name !== O.value?.entry?.name).map((e) => e.name),
1842
+ secrets: w(d),
1843
+ working: w(h),
1819
1844
  onSave: P,
1820
1845
  onCancel: u[0] ||= (e) => O.value = void 0
1821
1846
  }), null, 16, [
@@ -1824,10 +1849,10 @@ var $r = {
1824
1849
  "working"
1825
1850
  ]));
1826
1851
  }
1827
- }), Ti = ["data-test"], Ei = { class: "kvc-setting-text" }, Di = ["data-test"], Oi = { class: "kvc-muted" }, ki = { class: "kvc-setting-control" }, Ai = ["data-test"], ji = {
1852
+ }), ki = ["data-test"], Ai = { class: "kvc-setting-text" }, ji = ["data-test"], Mi = { class: "kvc-muted" }, Ni = { class: "kvc-setting-control" }, Pi = ["data-test"], Fi = {
1828
1853
  key: 1,
1829
1854
  class: "kvc-connectors-state"
1830
- }, Mi = ["data-test"], Ni = ["data-test"], Pi = ["disabled", "data-test"], Fi = /* @__PURE__ */ c({
1855
+ }, Ii = ["data-test"], Li = ["data-test"], Ri = ["disabled", "data-test"], zi = /* @__PURE__ */ c({
1831
1856
  __name: "SettingFrame",
1832
1857
  props: {
1833
1858
  settingKey: {},
@@ -1836,193 +1861,171 @@ var $r = {
1836
1861
  saved: { type: Boolean }
1837
1862
  },
1838
1863
  setup(t) {
1839
- let n = t, o = q(), s = (e) => o.t(`${e}.${o.scope.value}`, { name: o.workspace.value.name });
1840
- return (t, c) => (v(), i("div", {
1864
+ let n = t, o = K(), s = (e) => o.t(`${e}.${o.scope.value}`, { name: o.workspace.value.name });
1865
+ return (t, c) => (_(), i("div", {
1841
1866
  class: "kvc-setting",
1842
1867
  "data-test": n.name
1843
- }, [a("span", Ei, [a("span", {
1868
+ }, [a("span", Ai, [a("span", {
1844
1869
  class: "kvc-setting-title",
1845
1870
  "data-test": `${n.name}-title`
1846
- }, w(T(o).t(`${n.settingKey}.title`)), 9, Di), a("span", Oi, w(T(o).t(`${n.settingKey}.description`)), 1)]), a("span", ki, [S(t.$slots, "default", { disabled: n.setting.locked.value || n.setting.saving.value }), n.setting.locked.value ? (v(), i("span", {
1871
+ }, C(w(o).t(`${n.settingKey}.title`)), 9, ji), a("span", Mi, C(w(o).t(`${n.settingKey}.description`)), 1)]), a("span", Ni, [x(t.$slots, "default", { disabled: n.setting.locked.value || n.setting.saving.value }), n.setting.locked.value ? (_(), i("span", {
1847
1872
  key: 0,
1848
1873
  class: "kvc-muted",
1849
1874
  "data-test": `${n.name}-own-value`
1850
- }, w(T(o).t("kvcoder.config.setting.ownValue", { name: T(o).workspace.value.name })), 9, Ai)) : n.setting.changed.value || n.saved ? (v(), i("span", ji, [n.saved ? (v(), i("span", {
1875
+ }, C(w(o).t("kvcoder.config.setting.ownValue", { name: w(o).workspace.value.name })), 9, Pi)) : n.setting.changed.value || n.saved ? (_(), i("span", Fi, [n.saved ? (_(), i("span", {
1851
1876
  key: 0,
1852
1877
  class: "kvc-muted",
1853
1878
  role: "status",
1854
1879
  "data-test": `${n.name}-saved`
1855
- }, w(T(o).t("kvcoder.config.setting.saved")), 9, Mi)) : r("v-if", !0), n.setting.changed.value ? (v(), i(e, { key: 1 }, [a("span", {
1880
+ }, C(w(o).t("kvcoder.config.setting.saved")), 9, Ii)) : r("v-if", !0), n.setting.changed.value ? (_(), i(e, { key: 1 }, [a("span", {
1856
1881
  class: "kvc-chip",
1857
1882
  "data-test": `${n.name}-changed`
1858
- }, w(s("kvcoder.config.setting.changed")), 9, Ni), a("button", {
1883
+ }, C(s("kvcoder.config.setting.changed")), 9, Li), a("button", {
1859
1884
  type: "button",
1860
1885
  class: "kvc-text-button",
1861
1886
  disabled: n.setting.saving.value,
1862
1887
  "data-test": `${n.name}-reset`,
1863
1888
  onClick: c[0] ||= (...e) => n.setting.reset && n.setting.reset(...e)
1864
- }, w(s("kvcoder.config.setting.reset")), 9, Pi)], 64)) : r("v-if", !0)])) : r("v-if", !0)])], 8, Ti));
1889
+ }, C(s("kvcoder.config.setting.reset")), 9, Ri)], 64)) : r("v-if", !0)])) : r("v-if", !0)])], 8, ki));
1865
1890
  }
1866
- }), Ii = {
1891
+ }), Bi = {
1867
1892
  class: "kvc-dialog-rows",
1868
1893
  "data-test": "shell-settings"
1869
- }, Li = [
1870
- "value",
1871
- "disabled",
1872
- "aria-label"
1873
- ], Ri = ["value"], zi = [
1894
+ }, Vi = [
1874
1895
  "disabled",
1875
1896
  "placeholder",
1876
1897
  "aria-label"
1877
- ], Bi = /* @__PURE__ */ c({
1898
+ ], Hi = /* @__PURE__ */ c({
1878
1899
  __name: "ShellSettings",
1879
- setup(n) {
1880
- let r = q(), o = Y(r, "kvcoder.shell.approval"), c = Y(r, "kvcoder.shell.path"), l = b(), u = ["auto", "ask"], d = t(() => typeof c.value.value == "string" ? c.value.value : ""), f = b("");
1881
- M(d, (e) => f.value = e, { immediate: !0 });
1882
- async function p(e) {
1883
- e.target instanceof HTMLSelectElement && (l.value = await o.set(e.target.value) ? "approval" : void 0);
1884
- }
1885
- async function m() {
1886
- let e = f.value.trim();
1887
- if (e === d.value) return void (f.value = e);
1888
- l.value = await c.set(e === "" ? null : e) ? "path" : void 0, f.value = d.value;
1900
+ setup(e) {
1901
+ let n = K(), r = J(n, "kvcoder.shell.path"), o = y(!1), c = E("field"), l = t(() => typeof r.value.value == "string" ? r.value.value : ""), u = y("");
1902
+ j(l, (e) => u.value = e, { immediate: !0 });
1903
+ async function d() {
1904
+ let e = u.value.trim();
1905
+ if (e === l.value) return void (u.value = e);
1906
+ let t = document.activeElement === c.value;
1907
+ o.value = await r.set(e === "" ? null : e), u.value = l.value, t && (await p(), c.value?.focus());
1889
1908
  }
1890
- return (t, n) => (v(), i("div", Ii, [s(Fi, {
1891
- "setting-key": "kvcoder.shell.approval",
1892
- name: "shell-approval",
1893
- setting: T(o),
1894
- saved: l.value === "approval"
1895
- }, {
1896
- default: N(({ disabled: t }) => [a("select", {
1897
- class: "kvc-field",
1898
- value: T(o).value.value,
1899
- disabled: t,
1900
- "aria-label": T(r).t("kvcoder.shell.approval.title"),
1901
- "data-test": "shell-approval-control",
1902
- onChange: p
1903
- }, [(v(), i(e, null, x(u, (e) => a("option", {
1904
- key: e,
1905
- value: e
1906
- }, w(T(r).t(`kvcoder.shell.approval.options.${e}`)), 9, Ri)), 64))], 40, Li)]),
1907
- _: 1
1908
- }, 8, ["setting", "saved"]), s(Fi, {
1909
+ return (e, t) => (_(), i("div", Bi, [s(zi, {
1909
1910
  "setting-key": "kvcoder.shell.path",
1910
1911
  name: "shell-path",
1911
- setting: T(c),
1912
- saved: l.value === "path"
1912
+ setting: w(r),
1913
+ saved: o.value
1913
1914
  }, {
1914
- default: N(({ disabled: e }) => [P(a("input", {
1915
- "onUpdate:modelValue": n[0] ||= (e) => f.value = e,
1915
+ default: M(({ disabled: e }) => [N(a("input", {
1916
+ ref_key: "field",
1917
+ ref: c,
1918
+ "onUpdate:modelValue": t[0] ||= (e) => u.value = e,
1916
1919
  type: "text",
1917
1920
  dir: "ltr",
1918
1921
  class: "kvc-field kvc-mono",
1919
1922
  disabled: e,
1920
- placeholder: T(r).t("kvcoder.config.shell.pathFound"),
1921
- "aria-label": T(r).t("kvcoder.shell.path.title"),
1923
+ placeholder: w(n).t("kvcoder.config.shell.pathFound"),
1924
+ "aria-label": w(n).t("kvcoder.shell.path.title"),
1922
1925
  spellcheck: "false",
1923
1926
  autocomplete: "off",
1924
1927
  "data-test": "shell-path-control",
1925
- onKeydown: F(m, ["enter"]),
1926
- onBlur: m
1927
- }, null, 40, zi), [[j, f.value]])]),
1928
+ onKeydown: P(d, ["enter"]),
1929
+ onBlur: d
1930
+ }, null, 40, Vi), [[A, u.value]])]),
1928
1931
  _: 1
1929
1932
  }, 8, ["setting", "saved"])]));
1930
1933
  }
1931
- }), Vi = {
1934
+ }), Ui = {
1932
1935
  class: "kvc-connectors",
1933
1936
  "data-test": "connectors"
1934
- }, Hi = {
1937
+ }, Wi = {
1935
1938
  key: 0,
1936
1939
  class: "kvc-muted",
1937
1940
  "data-test": "connectors-own-value"
1938
- }, Ui = {
1941
+ }, Gi = {
1939
1942
  key: 1,
1940
1943
  class: "kvc-connectors-state"
1941
- }, Wi = {
1944
+ }, Ki = {
1942
1945
  class: "kvc-chip",
1943
1946
  "data-test": "connectors-changed"
1944
- }, Gi = ["disabled"], Ki = ["data-test"], qi = { class: "kvc-connector-text" }, Ji = {
1947
+ }, qi = ["disabled"], Ji = ["data-test"], Yi = { class: "kvc-connector-text" }, Xi = {
1945
1948
  class: "kvc-mono kvc-connector-name",
1946
1949
  "data-test": "connector-name"
1947
- }, Yi = {
1950
+ }, Zi = {
1948
1951
  class: "kvc-muted",
1949
1952
  dir: "auto",
1950
1953
  "data-test": "connector-description"
1951
- }, Xi = { class: "kvc-connector-actions" }, Zi = [
1954
+ }, Qi = { class: "kvc-connector-actions" }, $i = [
1952
1955
  "aria-label",
1953
1956
  "title",
1954
1957
  "onClick"
1955
- ], Qi = [
1958
+ ], ea = [
1956
1959
  "aria-checked",
1957
1960
  "aria-label",
1958
1961
  "disabled",
1959
1962
  "onClick"
1960
- ], $i = /* @__PURE__ */ c({
1963
+ ], ta = /* @__PURE__ */ c({
1961
1964
  __name: "ConnectorsList",
1962
1965
  setup(t) {
1963
- let o = q(), { items: c, locked: l, changed: u, saving: d, toggle: f, reset: p } = ot(o), h = b(), g = /* @__PURE__ */ new Map();
1964
- function _(e, t) {
1966
+ let o = K(), { items: c, locked: l, changed: u, saving: d, toggle: f, reset: m } = at(o), h = y(), g = /* @__PURE__ */ new Map();
1967
+ function v(e, t) {
1965
1968
  t instanceof HTMLElement ? g.set(e, t) : g.delete(e);
1966
1969
  }
1967
- async function y() {
1970
+ async function x() {
1968
1971
  let e = h.value;
1969
- h.value = void 0, await m(), e !== void 0 && g.get(e)?.focus();
1972
+ h.value = void 0, await p(), e !== void 0 && g.get(e)?.focus();
1970
1973
  }
1971
1974
  let S = (e) => o.t(`${e}.${o.scope.value}`, { name: o.workspace.value.name });
1972
- return (t, m) => (v(), i("div", Vi, [
1973
- T(l) ? (v(), i("p", Hi, w(T(o).t("kvcoder.config.connectors.ownValue", { name: T(o).workspace.value.name })), 1)) : T(u) ? (v(), i("div", Ui, [a("span", Wi, w(S("kvcoder.config.connectors.changed")), 1), a("button", {
1975
+ return (t, p) => (_(), i("div", Ui, [
1976
+ w(l) ? (_(), i("p", Wi, C(w(o).t("kvcoder.config.connectors.ownValue", { name: w(o).workspace.value.name })), 1)) : w(u) ? (_(), i("div", Gi, [a("span", Ki, C(S("kvcoder.config.connectors.changed")), 1), a("button", {
1974
1977
  type: "button",
1975
1978
  class: "kvc-text-button",
1976
- disabled: T(d),
1979
+ disabled: w(d),
1977
1980
  "data-test": "connectors-reset",
1978
- onClick: m[0] ||= (...e) => T(p) && T(p)(...e)
1979
- }, w(S("kvcoder.config.connectors.reset")), 9, Gi)])) : r("v-if", !0),
1980
- (v(!0), i(e, null, x(T(c), (e) => (v(), i("div", {
1981
+ onClick: p[0] ||= (...e) => w(m) && w(m)(...e)
1982
+ }, C(S("kvcoder.config.connectors.reset")), 9, qi)])) : r("v-if", !0),
1983
+ (_(!0), i(e, null, b(w(c), (e) => (_(), i("div", {
1981
1984
  key: e.name,
1982
1985
  class: "kvc-connector",
1983
1986
  "data-test": `connector-${e.name}`
1984
- }, [a("span", qi, [a("span", Ji, w(e.name), 1), a("span", Yi, w(e.description), 1)]), a("span", Xi, [e.configurable ? (v(), i("button", {
1987
+ }, [a("span", Yi, [a("span", Xi, C(e.name), 1), a("span", Zi, C(e.description), 1)]), a("span", Qi, [e.configurable ? (_(), i("button", {
1985
1988
  key: 0,
1986
1989
  ref_for: !0,
1987
- ref: (t) => _(e.name, t),
1990
+ ref: (t) => v(e.name, t),
1988
1991
  type: "button",
1989
1992
  class: "kvc-button kvc-ghost kvc-icon-button",
1990
1993
  "aria-haspopup": "dialog",
1991
- "aria-label": T(o).t("kvcoder.config.connectors.configure", { name: e.name }),
1992
- title: T(o).t("kvcoder.config.connectors.configure", { name: e.name }),
1994
+ "aria-label": w(o).t("kvcoder.config.connectors.configure", { name: e.name }),
1995
+ title: w(o).t("kvcoder.config.connectors.configure", { name: e.name }),
1993
1996
  "data-test": "connector-configure",
1994
1997
  onClick: (t) => h.value = e.name
1995
- }, [s(T(oe), {
1998
+ }, [s(w(G), {
1996
1999
  size: 18,
1997
2000
  "aria-hidden": "true"
1998
- })], 8, Zi)) : r("v-if", !0), a("button", {
2001
+ })], 8, $i)) : r("v-if", !0), a("button", {
1999
2002
  type: "button",
2000
2003
  role: "switch",
2001
2004
  class: "kvc-switch",
2002
2005
  "aria-checked": e.on,
2003
- "aria-label": T(o).t("kvcoder.config.connectors.use", { name: e.name }),
2004
- disabled: T(l) || T(d),
2006
+ "aria-label": w(o).t("kvcoder.config.connectors.use", { name: e.name }),
2007
+ disabled: w(l) || w(d),
2005
2008
  "data-test": "connector-switch",
2006
- onClick: (t) => T(f)(e.name)
2007
- }, [...m[1] ||= [a("span", {
2009
+ onClick: (t) => w(f)(e.name)
2010
+ }, [...p[1] ||= [a("span", {
2008
2011
  class: "kvc-switch-knob",
2009
2012
  "aria-hidden": "true"
2010
- }, null, -1)]], 8, Qi)])], 8, Ki))), 128)),
2011
- h.value === void 0 ? r("v-if", !0) : (v(), n(ye, {
2013
+ }, null, -1)]], 8, ea)])], 8, Ji))), 128)),
2014
+ h.value === void 0 ? r("v-if", !0) : (_(), n(ye, {
2012
2015
  key: 2,
2013
2016
  name: h.value,
2014
- onClose: y
2017
+ onClose: x
2015
2018
  }, {
2016
- default: N(() => [h.value === "shell" ? (v(), n(Bi, { key: 0 })) : h.value === "delegate" ? (v(), n(Zn, { key: 1 })) : h.value === "mcp" ? (v(), n(wi, { key: 2 })) : r("v-if", !0)]),
2019
+ default: M(() => [h.value === "shell" ? (_(), n(Hi, { key: 0 })) : h.value === "delegate" ? (_(), n($n, { key: 1 })) : h.value === "mcp" ? (_(), n(Oi, { key: 2 })) : r("v-if", !0)]),
2017
2020
  _: 1
2018
2021
  }, 8, ["name"]))
2019
2022
  ]));
2020
2023
  }
2021
- }), ea = /* @__PURE__ */ c({
2024
+ }), na = /* @__PURE__ */ c({
2022
2025
  __name: "connectors",
2023
2026
  setup(e) {
2024
- return (e, t) => (v(), n($i));
2027
+ return (e, t) => (_(), n(ta));
2025
2028
  }
2026
2029
  });
2027
2030
  //#endregion
2028
- export { ea as default };
2031
+ export { na as default };