@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, defineComponent as s, h as c, inject as l, normalizeClass as u, openBlock as d, ref as f, renderList as p, resolveDynamicComponent as m, toDisplayString as h, unref as g } 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, normalizeClass as d, openBlock as f, ref as p, renderList as m, resolveComponent as h, resolveDynamicComponent as g, toDisplayString as _, unref as v } 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 _ = {
3
+ var y = {
4
4
  xmlns: "http://www.w3.org/2000/svg",
5
5
  width: 24,
6
6
  height: 24,
@@ -10,25 +10,25 @@ var _ = {
10
10
  "stroke-width": 2,
11
11
  "stroke-linecap": "round",
12
12
  "stroke-linejoin": "round"
13
- }, v = (...e) => e.filter((e, t, n) => !!e && e.trim() !== "" && n.indexOf(e) === t).join(" ").trim();
13
+ }, b = (...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 y(e) {
16
+ function x(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 ?? _.width, a = e.size ?? e.height ?? _.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 ? v(...c) : v("lucide", ...s, ...c), u = t.absoluteStrokeWidth ? Number(t.strokeWidth ?? _["stroke-width"]) * Number(e.size ?? e.width ?? _.width) / Number(t.size ?? t.width ?? _.width) : t.strokeWidth ?? _["stroke-width"];
19
+ function S(e, t = {}) {
20
+ let n = t.attributeNames ?? {}, r = (e) => n[e] ?? e, i = e.size ?? e.width ?? y.width, a = e.size ?? e.height ?? y.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 ? b(...c) : b("lucide", ...s, ...c), u = t.absoluteStrokeWidth ? Number(t.strokeWidth ?? y["stroke-width"]) * Number(e.size ?? e.width ?? y.width) / Number(t.size ?? t.width ?? y.width) : t.strokeWidth ?? y["stroke-width"];
21
21
  return [
22
22
  "svg",
23
23
  {
24
- ...Object.entries(_).reduce((e, [t, n]) => (e[r(t)] = n, e), {}),
24
+ ...Object.entries(y).reduce((e, [t, n]) => (e[r(t)] = n, e), {}),
25
25
  ..."color" in t && t.color && { [r("stroke")]: t.color },
26
- ..."size" in t && y(t.size) && {
26
+ ..."size" in t && x(t.size) && {
27
27
  [r("width")]: t.size,
28
28
  [r("height")]: t.size
29
29
  },
30
- ..."width" in t && y(t.width) && { [r("width")]: t.width },
31
- ..."height" in t && y(t.height) && { [r("height")]: t.height },
30
+ ..."width" in t && x(t.width) && { [r("width")]: t.width },
31
+ ..."height" in t && x(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,35 +50,35 @@ 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 x = (e) => {
53
+ var C = (e) => {
54
54
  for (let t in e) if (t.startsWith("aria-") || t === "role" || t === "title") return !0;
55
55
  return !1;
56
- }, S = (e) => e === "", C = (e) => e?.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), w = /* @__PURE__ */ Symbol("lucide-icons");
57
- function T() {
58
- return l(w, {});
56
+ }, w = (e) => e === "", T = (e) => e?.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(), E = /* @__PURE__ */ Symbol("lucide-icons");
57
+ function ee() {
58
+ return u(E, {});
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 E = ({ name: e, iconNode: t, "icon-node": n, icon: r = {
63
- name: e && C(e),
62
+ var te = ({ name: e, iconNode: t, "icon-node": n, icon: r = {
63
+ name: e && T(e),
64
64
  node: t ?? n ?? [],
65
65
  size: 24,
66
66
  aliases: []
67
- }, absoluteStrokeWidth: i, "absolute-stroke-width": a, nonScalingStroke: o, "non-scaling-stroke": s, strokeWidth: l, "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: w = !1, nonScalingStroke: E = !1, class: D = "" } = T(), O = S(i) || S(a) || i === !0 || a === !0 || w === !0, k = S(o) || S(s) || o === !0 || s === !0 || E === !0;
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: E = "" } = ee(), te = w(i) || w(a) || i === !0 || a === !0 || b === !0, D = w(o) || w(s) || o === !0 || s === !0 || x === !0;
69
69
  delete h.class;
70
- let A = g.default?.(), [, j, M = []] = b(r, {
70
+ let O = g.default?.(), [, k, A = []] = S(r, {
71
71
  color: m ?? v,
72
72
  width: f ?? d ?? _,
73
73
  height: p ?? d ?? _,
74
- strokeWidth: l ?? u ?? y,
75
- absoluteStrokeWidth: O,
76
- nonScalingStroke: k,
77
- className: D,
78
- hasA11yProp: A != null && A.length > 0 || x(h),
74
+ strokeWidth: c ?? u ?? y,
75
+ absoluteStrokeWidth: te,
76
+ nonScalingStroke: D,
77
+ className: E,
78
+ hasA11yProp: O != null && O.length > 0 || C(h),
79
79
  attributes: h
80
80
  });
81
- return c("svg", j, [...M.map(([e, t]) => c(e, t)), ...A ?? []]);
81
+ return l("svg", k, [...A.map(([e, t]) => l(e, t)), ...O ?? []]);
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
@@ -87,7 +87,7 @@ function D(e, t = []) {
87
87
  name: e,
88
88
  node: t
89
89
  } : e;
90
- return (e, { slots: t }) => c(E, {
90
+ return (e, { slots: t }) => l(te, {
91
91
  ...e,
92
92
  icon: n
93
93
  }, t.default ? { default: t.default } : void 0);
@@ -106,36 +106,403 @@ var O = D({
106
106
  d: "m9 18 6-6-6-6",
107
107
  key: "mthhwq"
108
108
  }]]
109
- }), A = 200;
110
- function j(e) {
111
- let t = e.replace(/\s+/g, " ");
112
- return t.length > A ? `${t.slice(0, A)}…` : t;
109
+ }), A = D({
110
+ name: "file",
111
+ size: 24,
112
+ node: [["path", {
113
+ d: "M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",
114
+ key: "1oefj6"
115
+ }], ["path", {
116
+ d: "M14 2v5a1 1 0 0 0 1 1h5",
117
+ key: "wfsgrz"
118
+ }]]
119
+ }), ne = D({
120
+ name: "folder",
121
+ size: 24,
122
+ node: [["path", {
123
+ d: "M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",
124
+ key: "1kt360"
125
+ }]]
126
+ });
127
+ //#endregion
128
+ //#region web/src/kvman.ts
129
+ function j() {
130
+ let e = u("kvman");
131
+ if (e === void 0) throw Error("kvcoder components run inside kvwebui, which provides kvman.");
132
+ return e;
133
+ }
134
+ function M(e) {
135
+ return typeof e == "object" && e && !Array.isArray(e) ? Object.fromEntries(Object.entries(e)) : {};
113
136
  }
114
137
  //#endregion
115
- //#region web/src/durations.ts
116
- function M(e, t) {
117
- if (t < 1e3) return e("kvcoder.ui.milliseconds", { count: Math.round(t) });
118
- if (t < 1e4) return e("kvcoder.ui.seconds", { count: (t / 1e3).toFixed(1) });
119
- let n = Math.round(t / 1e3);
120
- return n < 60 ? e("kvcoder.ui.seconds", { count: n }) : e("kvcoder.ui.minutesSeconds", {
121
- minutes: Math.floor(n / 60),
122
- seconds: n % 60
138
+ //#region web/src/call-results.ts
139
+ function re(e) {
140
+ let { replacements: t, firstChangedLine: n } = M(e);
141
+ return typeof t == "number" && typeof n == "number" ? {
142
+ replacements: t,
143
+ firstChangedLine: n
144
+ } : void 0;
145
+ }
146
+ function ie(e) {
147
+ let { fromLine: t, content: n } = M(e);
148
+ return typeof t == "number" && typeof n == "string" ? {
149
+ fromLine: t,
150
+ content: n
151
+ } : void 0;
152
+ }
153
+ function ae(e) {
154
+ let { name: t, kind: n, bytes: r } = M(e);
155
+ return typeof t == "string" && (n === "file" || n === "folder") && typeof r == "number" ? [{
156
+ name: t,
157
+ kind: n,
158
+ bytes: r
159
+ }] : [];
160
+ }
161
+ function oe(e) {
162
+ let t = M(e).entries;
163
+ return Array.isArray(t) ? t.flatMap(ae) : void 0;
164
+ }
165
+ function se(e) {
166
+ let { path: t, matches: n } = M(e);
167
+ return typeof t != "string" || !Array.isArray(n) ? [] : [{
168
+ path: t,
169
+ matches: n.flatMap((e) => {
170
+ let { line: t, text: n } = M(e);
171
+ return typeof t == "number" && typeof n == "string" ? [{
172
+ line: t,
173
+ text: n
174
+ }] : [];
175
+ })
176
+ }];
177
+ }
178
+ var ce = [
179
+ "running",
180
+ "succeeded",
181
+ "failed",
182
+ "cancelled",
183
+ "interrupted"
184
+ ];
185
+ function le(e, t) {
186
+ return ce.some((e) => e === t) ? e(`kvcoder.ui.jobs.status.${t}`) : t;
187
+ }
188
+ function N(e) {
189
+ let { kind: t, call: n, status: r, startedAt: i, endedAt: a, exitCode: o, output: s, problem: c } = M(e);
190
+ if (typeof n != "string" || typeof r != "string") return;
191
+ let l = typeof i == "string" && typeof a == "string" ? Date.parse(a) - Date.parse(i) : NaN;
192
+ return {
193
+ call: n,
194
+ status: r,
195
+ answer: t === "subagent",
196
+ ...Number.isFinite(l) && l >= 0 ? { ranMs: l } : {},
197
+ ...typeof o == "number" && o !== 0 ? { exitCode: o } : {},
198
+ ...s === void 0 ? {} : { output: s },
199
+ ...c === void 0 ? {} : { problem: c }
200
+ };
201
+ }
202
+ function ue(e) {
203
+ let t = M(e).files;
204
+ return Array.isArray(t) ? t.flatMap(se) : void 0;
205
+ }
206
+ //#endregion
207
+ //#region web/src/edit-diff.ts
208
+ var P = 3;
209
+ function F(e) {
210
+ if (e === "") return [];
211
+ let t = e.split("\n");
212
+ return e.endsWith("\n") ? t.slice(0, -1) : t;
213
+ }
214
+ function I(e, t) {
215
+ let n = 0;
216
+ for (; n < e.length && n < t.length && e[n] === t[n];) n += 1;
217
+ return n;
218
+ }
219
+ function L(e, t) {
220
+ let n = F(e), r = F(t), i = I(n, r), a = I(n.slice(i).reverse(), r.slice(i).reverse()), o = (e, t) => t.map((t) => ({
221
+ kind: e,
222
+ text: t
223
+ }));
224
+ return [
225
+ ...o("context", n.slice(Math.max(i - P, 0), i)),
226
+ ...o("removed", n.slice(i, n.length - a)),
227
+ ...o("added", r.slice(i, r.length - a)),
228
+ ...o("context", n.slice(n.length - a, n.length - a + P))
229
+ ];
230
+ }
231
+ function de(e) {
232
+ return {
233
+ added: e.filter((e) => e.kind === "added").length,
234
+ removed: e.filter((e) => e.kind === "removed").length
235
+ };
236
+ }
237
+ //#endregion
238
+ //#region web/src/call-summary.ts
239
+ function fe(e) {
240
+ if (e !== void 0 && /^\s*[[{]/.test(e)) try {
241
+ return JSON.parse(e);
242
+ } catch (e) {
243
+ if (e instanceof SyntaxError) return;
244
+ throw e;
245
+ }
246
+ }
247
+ var R = 1024;
248
+ function z(e, t) {
249
+ return t < R ? e("kvcoder.ui.call.bytes", { count: t }) : t < R * R ? e("kvcoder.ui.call.kilobytes", { count: (t / R).toFixed(1) }) : e("kvcoder.ui.call.megabytes", { count: (t / (R * R)).toFixed(1) });
250
+ }
251
+ var B = (e) => typeof e == "string" && e !== "" ? e : void 0;
252
+ function V(e) {
253
+ let t = e.edits;
254
+ return Array.isArray(t) ? t.flatMap((e) => {
255
+ let { oldText: t, newText: n } = M(e);
256
+ return typeof t == "string" && typeof n == "string" ? [{
257
+ oldText: t,
258
+ newText: n
259
+ }] : [];
260
+ }) : [];
261
+ }
262
+ function pe(e) {
263
+ let t = V(e).map((e) => de(L(e.oldText, e.newText)));
264
+ return `+${t.reduce((e, t) => e + t.added, 0)} −${t.reduce((e, t) => e + t.removed, 0)}`;
265
+ }
266
+ function me(e, t) {
267
+ if (typeof t.bytes == "number" && typeof t.created == "boolean") return e(t.created ? "kvcoder.ui.call.created" : "kvcoder.ui.call.replaced", { size: z(e, t.bytes) });
268
+ }
269
+ function he(e, t) {
270
+ let { fromLine: n, totalLines: r, content: i } = t;
271
+ if (typeof n != "number" || typeof r != "number" || typeof i != "string") return;
272
+ let a = F(i).length;
273
+ return a === 0 ? void 0 : e("kvcoder.ui.call.lines", {
274
+ from: n,
275
+ to: n + a - 1,
276
+ total: r
277
+ });
278
+ }
279
+ function ge(e, t) {
280
+ let n = t.entries;
281
+ if (Array.isArray(n)) return e(t.truncated === !0 ? "kvcoder.ui.call.entriesFirst" : "kvcoder.ui.call.entries", { count: n.length });
282
+ }
283
+ function _e(e, t) {
284
+ let n = t.files;
285
+ if (!Array.isArray(n)) return;
286
+ let r = n.reduce((e, t) => {
287
+ let n = M(t).matches;
288
+ return e + (Array.isArray(n) ? n.length : 0);
289
+ }, 0);
290
+ return e(t.truncated === !0 ? "kvcoder.ui.call.matchesFirst" : "kvcoder.ui.call.matches", {
291
+ matches: r,
292
+ files: n.length
123
293
  });
124
294
  }
295
+ var H = (e, t, n) => Array.isArray(n) ? e(t, { count: n.length }) : void 0;
296
+ function U(e, t, n) {
297
+ return {
298
+ ...e === void 0 ? {} : { words: e },
299
+ ...t === void 0 ? {} : { subject: t },
300
+ ...n === void 0 ? {} : { outcome: n }
301
+ };
302
+ }
303
+ function ve(e, t, n, r) {
304
+ let i = r === void 0 ? void 0 : M(r), a = B(n.path);
305
+ if (t === "edit") return U(e("kvcoder.ui.call.edit"), a, i === void 0 ? void 0 : pe(n));
306
+ if (t === "write") return U(e("kvcoder.ui.call.write"), a, i === void 0 ? void 0 : me(e, i));
307
+ if (t === "read") return U(e("kvcoder.ui.call.read"), a, i === void 0 ? void 0 : he(e, i));
308
+ if (t === "list") return U(e("kvcoder.ui.call.list"), a ?? ".", i === void 0 ? void 0 : ge(e, i));
309
+ if (t === "search") return U(e("kvcoder.ui.call.search"), B(n.pattern), i === void 0 ? void 0 : _e(e, i));
310
+ }
311
+ function ye(e, t, n, r) {
312
+ let i = B(n.server), a = [i, B(n.tool)].filter((e) => e !== void 0).join(" · ");
313
+ if (t === "call") return U(void 0, a === "" ? void 0 : a);
314
+ if (t === "run") {
315
+ let e = n.steps;
316
+ return U(void 0, [i, (Array.isArray(e) ? e.flatMap((e) => B(M(e).tool) === void 0 ? [] : [String(M(e).tool)]) : []).join(", ")].filter((e) => e !== void 0 && e !== "").join(" · "));
317
+ }
318
+ if (t === "tools") return U(e("kvcoder.ui.call.tools"), a === "" ? void 0 : a, H(e, "kvcoder.ui.call.toolCount", M(r).tools));
319
+ }
320
+ function be(e, t, n, r) {
321
+ if (t === "list") return U(e("kvcoder.ui.call.backgroundRuns"), void 0, H(e, "kvcoder.ui.call.runCount", r));
322
+ if (t === "output" || t === "wait") {
323
+ let i = N(r);
324
+ return U(e(`kvcoder.ui.call.${t}`), B(n.id), i === void 0 ? void 0 : le(e, i.status));
325
+ }
326
+ if (t === "stop") return U(e("kvcoder.ui.call.stop"), B(n.id));
327
+ }
328
+ function xe(e, t, n, r) {
329
+ let i = B(M(r).progress), a = n.steps, o = Array.isArray(a) ? a.flatMap((e) => B(M(e).id) === void 0 ? [] : [String(M(e).id)]).join(", ") : void 0;
330
+ return t === "set" ? U(e("kvcoder.ui.call.mapSet"), B(n.goal), i) : t === "update" ? U(e("kvcoder.ui.call.mapUpdate"), o === "" ? void 0 : o, i) : t === "note" ? U(e("kvcoder.ui.call.mapNote"), B(n.text)) : t === "get" ? U(e("kvcoder.ui.call.mapGet"), void 0, i) : void 0;
331
+ }
332
+ function Se(e, t, n) {
333
+ let { connector: r, command: i } = t, a = t.fields ?? {};
334
+ if (r !== void 0 && i !== void 0) {
335
+ if (t.line !== void 0) return { subject: `$ ${t.line}` };
336
+ if (r === "fs") return ve(e, i, a, n);
337
+ if (r === "mcp") return ye(e, i, a, n);
338
+ if (r === "background") return be(e, i, a, n);
339
+ if (r === "execution-map") return xe(e, i, a, n);
340
+ if (r === "delegate" && i === "run") return U(e("kvcoder.ui.call.delegate"), [B(a.worker), B(a.title)].filter((e) => e !== void 0).join(" · "));
341
+ if (r === "artifact" && i === "get") return U(e("kvcoder.ui.call.readArtifact"), B(a.id));
342
+ }
343
+ }
125
344
  //#endregion
126
- //#region web/src/kvman.ts
127
- function N() {
128
- let e = l("kvman");
129
- if (e === void 0) throw Error("kvcoder components run inside kvwebui, which provides kvman.");
130
- return e;
345
+ //#region web/src/call-view.ts
346
+ var Ce = 200, we = [
347
+ "text",
348
+ "choice",
349
+ "confirm"
350
+ ];
351
+ function Te(e) {
352
+ return typeof e == "object" && e && !Array.isArray(e) ? Object.fromEntries(Object.entries(e)) : void 0;
353
+ }
354
+ var W = (e) => typeof e == "string" && e.trim() !== "" ? e : void 0;
355
+ function Ee(e, t) {
356
+ let n = W(t.args);
357
+ return W(t.line) ?? (n === void 0 ? e : `${e} ${n}`);
358
+ }
359
+ function De(e) {
360
+ let t = W(e.title) ?? W(e.description), n = W(e.command);
361
+ return {
362
+ ...t === void 0 ? {} : { description: t },
363
+ ...n === void 0 ? {} : { line: n },
364
+ ...e.mode === "async" ? { background: !0 } : {}
365
+ };
366
+ }
367
+ function Oe(e) {
368
+ let t = W(e.connector), n = W(e.command);
369
+ if (t === void 0) return De(e);
370
+ let r = W(e.description), i = Te(typeof e.payload == "string" ? void 0 : e.payload) ?? {}, a = t === "ask" ? we.find((e) => e === n) : void 0;
371
+ return {
372
+ ...r === void 0 ? {} : { description: r },
373
+ connector: t,
374
+ ...n === void 0 ? {} : {
375
+ command: n,
376
+ label: `${t} · ${n}`
377
+ },
378
+ ...n === "exec" ? { line: Ee(t, i) } : {},
379
+ fields: i,
380
+ ...i.risky === !0 ? { risky: !0 } : {},
381
+ ...i.background === !0 ? { background: !0 } : {},
382
+ ...a === void 0 ? {} : { ask: {
383
+ kind: a,
384
+ question: i
385
+ } }
386
+ };
387
+ }
388
+ var ke = [
389
+ "edit",
390
+ "write",
391
+ "read",
392
+ "list",
393
+ "search"
394
+ ];
395
+ function G(e) {
396
+ return e.line === void 0 ? e.connector === "fs" ? ke.find((t) => t === e.command) ?? "fields" : e.connector === "mcp" && e.command === "call" ? "mcp-call" : e.connector === "background" && (e.command === "output" || e.command === "wait") ? "run-output" : e.connector === "delegate" && e.command === "run" ? "delegate" : "fields" : "line";
397
+ }
398
+ function K(e) {
399
+ let t = e.replace(/\s+/g, " ");
400
+ return t.length > Ce ? `${t.slice(0, Ce)}…` : t;
401
+ }
402
+ //#endregion
403
+ //#region web/src/field-rows.ts
404
+ var Ae = "—", je = (e) => e === null || typeof e == "string" || typeof e == "number" || typeof e == "boolean", Me = (e) => e === null ? Ae : String(e);
405
+ function Ne(e) {
406
+ return typeof e == "object" && e && !Array.isArray(e) ? Object.fromEntries(Object.entries(e)) : void 0;
407
+ }
408
+ function Pe(e) {
409
+ let t = Ne(e);
410
+ if (t === void 0) return;
411
+ let n = {};
412
+ for (let [e, r] of Object.entries(t)) {
413
+ if (!je(r)) return;
414
+ n[e] = r;
415
+ }
416
+ return n;
417
+ }
418
+ function Fe(e) {
419
+ let t = [...new Set(e.flatMap((e) => Object.keys(e)))];
420
+ return {
421
+ kind: "table",
422
+ columns: t,
423
+ rows: e.map((e) => t.map((t) => t in e ? Me(e[t] ?? null) : ""))
424
+ };
425
+ }
426
+ function Ie(e) {
427
+ if (e.length === 0) return { kind: "empty" };
428
+ if (e.every(je)) return {
429
+ kind: "items",
430
+ items: e.map(Me)
431
+ };
432
+ let t = e.map(Pe).filter((e) => e !== void 0);
433
+ return t.length === e.length ? Fe(t) : {
434
+ kind: "rows",
435
+ rows: e.map((e, t) => ({
436
+ name: String(t + 1),
437
+ value: q(e)
438
+ }))
439
+ };
440
+ }
441
+ function q(e) {
442
+ if (typeof e == "string") return e.includes("\n") ? {
443
+ kind: "block",
444
+ text: e
445
+ } : {
446
+ kind: "text",
447
+ text: e
448
+ };
449
+ if (typeof e == "number" || typeof e == "boolean") return {
450
+ kind: "text",
451
+ text: String(e)
452
+ };
453
+ if (Array.isArray(e)) return Ie(e);
454
+ let t = Ne(e);
455
+ return t === void 0 || Object.keys(t).length === 0 ? { kind: "empty" } : {
456
+ kind: "rows",
457
+ rows: Le(t)
458
+ };
459
+ }
460
+ function Le(e) {
461
+ return Object.entries(e).map(([e, t]) => ({
462
+ name: e,
463
+ value: q(t)
464
+ }));
465
+ }
466
+ function J(e, t) {
467
+ return t || e.length <= 12 ? e : e.slice(0, 12);
468
+ }
469
+ var Re = (e) => F(e).map((e) => ({ text: e })), ze = (e, t) => F(e).map((e, n) => ({
470
+ text: e,
471
+ number: t + n
472
+ }));
473
+ function Be(e, t) {
474
+ return t || e.length <= 17 ? e : [
475
+ ...e.slice(0, 12),
476
+ "⋯",
477
+ ...e.slice(-5)
478
+ ];
131
479
  }
132
480
  //#endregion
133
- //#region web/src/output-links.ts
134
- var P = /http:\/\/(?:127\.0\.0\.1|localhost):\d+[^\s"'`<>()[\]{}]*/g, F = /[.,;:!?]+$/;
135
- function I(e) {
481
+ //#region web/src/FoldButton.vue?vue&type=script&setup=true&lang.ts
482
+ var Ve = ["aria-expanded"], Y = /* @__PURE__ */ c({
483
+ __name: "FoldButton",
484
+ props: {
485
+ count: {},
486
+ open: { type: Boolean },
487
+ over: {}
488
+ },
489
+ emits: ["toggle"],
490
+ setup(e, { emit: t }) {
491
+ let n = e, a = t, o = j();
492
+ return (e, t) => n.count > (n.over ?? v(12)) ? (f(), i("button", {
493
+ key: 0,
494
+ type: "button",
495
+ class: "kvc-text-button kvc-fold",
496
+ "aria-expanded": n.open,
497
+ "data-test": "show-all",
498
+ onClick: t[0] ||= (e) => a("toggle")
499
+ }, _(n.open ? v(o).t("kvcoder.ui.call.showFewer") : v(o).t("kvcoder.ui.call.showAll", { count: n.count })), 9, Ve)) : r("v-if", !0);
500
+ }
501
+ }), He = /http:\/\/(?:127\.0\.0\.1|localhost):\d+[^\s"'`<>()[\]{}]*/g, Ue = /[.,;:!?]+$/;
502
+ function We(e) {
136
503
  let t = [], n = 0;
137
- for (let r of e.matchAll(P)) {
138
- let i = r[0].replace(F, "");
504
+ for (let r of e.matchAll(He)) {
505
+ let i = r[0].replace(Ue, "");
139
506
  r.index > n && t.push({
140
507
  kind: "text",
141
508
  text: e.slice(n, r.index)
@@ -149,71 +516,409 @@ function I(e) {
149
516
  text: e.slice(n)
150
517
  }), t;
151
518
  }
152
- function L(e) {
153
- if (!/^[[{]/.test(e) || e.includes("\n")) return e;
154
- try {
155
- return JSON.stringify(JSON.parse(e), null, 2);
156
- } catch (t) {
157
- if (t instanceof SyntaxError) return e;
158
- throw t;
519
+ //#endregion
520
+ //#region web/src/LinkedText.vue?vue&type=script&setup=true&lang.ts
521
+ var Ge = ["href"], X = /* @__PURE__ */ c({
522
+ __name: "LinkedText",
523
+ props: { text: {} },
524
+ setup(n) {
525
+ let r = n, a = t(() => We(r.text));
526
+ return (t, n) => (f(!0), i(e, null, m(a.value, (t, n) => (f(), i(e, { key: n }, [t.kind === "link" ? (f(), i("a", {
527
+ key: 0,
528
+ href: t.href,
529
+ target: "_blank",
530
+ rel: "noopener noreferrer",
531
+ class: "kvc-link"
532
+ }, _(t.href), 9, Ge)) : (f(), i(e, { key: 1 }, [o(_(t.text), 1)], 64))], 64))), 128));
533
+ }
534
+ }), Ke = { class: "kvc-code-lines" }, qe = ["dir", "data-kind"], Je = {
535
+ key: 0,
536
+ class: "kvc-line-number",
537
+ "data-test": "call-line-number"
538
+ }, Ye = {
539
+ key: 1,
540
+ class: "kvc-line-mark",
541
+ "aria-hidden": "true"
542
+ }, Xe = {
543
+ class: "kvc-line-text",
544
+ dir: "auto",
545
+ "data-test": "call-line-text"
546
+ }, Z = /* @__PURE__ */ c({
547
+ __name: "FoldedLines",
548
+ props: { lines: {} },
549
+ setup(n) {
550
+ let o = n, c = p(!1), l = t(() => J(o.lines, c.value)), u = t(() => o.lines.some((e) => e.number !== void 0)), d = t(() => o.lines.some((e) => e.kind !== void 0)), h = {
551
+ context: " ",
552
+ removed: "−",
553
+ added: "+"
554
+ };
555
+ return (t, n) => (f(), i("div", Ke, [(f(!0), i(e, null, m(l.value, (e, t) => (f(), i("div", {
556
+ key: t,
557
+ class: "kvc-code-line",
558
+ dir: u.value || d.value ? "ltr" : void 0,
559
+ "data-kind": e.kind,
560
+ "data-test": "call-line-row"
561
+ }, [
562
+ u.value ? (f(), i("span", Je, _(e.number), 1)) : r("v-if", !0),
563
+ d.value ? (f(), i("span", Ye, _(h[e.kind ?? "context"]), 1)) : r("v-if", !0),
564
+ a("span", Xe, [s(X, { text: e.text }, null, 8, ["text"])])
565
+ ], 8, qe))), 128)), s(Y, {
566
+ count: o.lines.length,
567
+ open: c.value,
568
+ onToggle: n[0] ||= (e) => c.value = !c.value
569
+ }, null, 8, ["count", "open"])]));
570
+ }
571
+ }), Ze = {
572
+ key: 0,
573
+ dir: "auto",
574
+ "data-test": "field-text"
575
+ }, Qe = {
576
+ key: 1,
577
+ class: "kvc-muted",
578
+ "data-test": "field-empty"
579
+ }, $e = {
580
+ key: 3,
581
+ class: "kvc-field-table"
582
+ }, et = { "data-test": "field-table" }, tt = {
583
+ key: 4,
584
+ class: "kvc-field-items",
585
+ "data-test": "field-items"
586
+ }, nt = {
587
+ key: 5,
588
+ class: "kvc-fields",
589
+ "data-test": "call-fields"
590
+ }, rt = ["data-name"], it = {
591
+ class: "kvc-muted",
592
+ dir: "ltr"
593
+ }, at = { "data-test": "field-value" }, Q = /* @__PURE__ */ c({
594
+ __name: "FieldsView",
595
+ props: { value: {} },
596
+ setup(r) {
597
+ let o = r, c = p(!1), l = t(() => o.value.kind === "table" ? J(o.value.rows, c.value) : []), u = t(() => o.value.kind === "items" ? J(o.value.items, c.value) : []);
598
+ return (t, r) => {
599
+ let d = h("FieldsView", !0);
600
+ return o.value.kind === "text" ? (f(), i("span", Ze, [s(X, { text: o.value.text }, null, 8, ["text"])])) : o.value.kind === "empty" ? (f(), i("span", Qe, "—")) : o.value.kind === "block" ? (f(), n(Z, {
601
+ key: 2,
602
+ class: "kvc-field-block",
603
+ lines: v(Re)(o.value.text),
604
+ "data-test": "field-block"
605
+ }, null, 8, ["lines"])) : o.value.kind === "table" ? (f(), i("div", $e, [a("table", et, [a("thead", null, [a("tr", null, [(f(!0), i(e, null, m(o.value.columns, (e) => (f(), i("th", {
606
+ key: e,
607
+ scope: "col",
608
+ dir: "ltr"
609
+ }, _(e), 1))), 128))])]), a("tbody", null, [(f(!0), i(e, null, m(l.value, (t, n) => (f(), i("tr", { key: n }, [(f(!0), i(e, null, m(t, (e, t) => (f(), i("td", {
610
+ key: t,
611
+ dir: "auto"
612
+ }, [s(X, { text: e }, null, 8, ["text"])]))), 128))]))), 128))])]), s(Y, {
613
+ count: o.value.rows.length,
614
+ open: c.value,
615
+ onToggle: r[0] ||= (e) => c.value = !c.value
616
+ }, null, 8, ["count", "open"])])) : o.value.kind === "items" ? (f(), i("div", tt, [(f(!0), i(e, null, m(u.value, (e, t) => (f(), i("div", {
617
+ key: t,
618
+ dir: "auto"
619
+ }, [s(X, { text: e }, null, 8, ["text"])]))), 128)), s(Y, {
620
+ count: o.value.items.length,
621
+ open: c.value,
622
+ onToggle: r[1] ||= (e) => c.value = !c.value
623
+ }, null, 8, ["count", "open"])])) : (f(), i("dl", nt, [(f(!0), i(e, null, m(o.value.rows, (e) => (f(), i("div", {
624
+ key: e.name,
625
+ class: "kvc-field-row",
626
+ "data-name": e.name,
627
+ "data-test": "field-row"
628
+ }, [a("dt", it, _(e.name), 1), a("dd", at, [s(d, { value: e.value }, null, 8, ["value"])])], 8, rt))), 128))]));
629
+ };
630
+ }
631
+ }), ot = ["aria-label"], st = ["aria-label"], ct = /* @__PURE__ */ c({
632
+ __name: "CallRequest",
633
+ props: { view: {} },
634
+ setup(a) {
635
+ let o = a, c = j(), l = t(() => G(o.view)), u = t(() => o.view.fields ?? {}), d = t(() => V(u.value).map((e) => L(e.oldText, e.newText))), p = t(() => typeof u.value.content == "string" ? u.value.content : ""), h = t(() => typeof u.value.task == "string" ? u.value.task : ""), g = t(() => l.value === "mcp-call" ? M(u.value.arguments) : l.value === "fields" ? u.value : {});
636
+ return (t, a) => l.value === "edit" ? (f(!0), i(e, { key: 0 }, m(d.value, (e, t) => (f(), n(Z, {
637
+ key: t,
638
+ class: "kvc-block",
639
+ lines: e,
640
+ "data-test": "call-diff"
641
+ }, null, 8, ["lines"]))), 128)) : l.value === "write" ? (f(), n(Z, {
642
+ key: 1,
643
+ class: "kvc-block",
644
+ lines: v(ze)(p.value, 1),
645
+ "data-test": "call-content"
646
+ }, null, 8, ["lines"])) : l.value === "line" ? (f(), i("pre", {
647
+ key: 2,
648
+ class: "kvc-output kvc-mono",
649
+ dir: "ltr",
650
+ "aria-label": v(c).t("kvcoder.ui.command"),
651
+ "data-test": "call-payload"
652
+ }, "$ " + _(o.view.line), 9, ot)) : l.value === "delegate" ? (f(), n(Z, {
653
+ key: 3,
654
+ class: "kvc-block kvc-prose-lines",
655
+ lines: v(Re)(h.value),
656
+ "aria-label": v(c).t("kvcoder.ui.call.task"),
657
+ "data-test": "call-task"
658
+ }, null, 8, ["lines", "aria-label"])) : Object.keys(g.value).length > 0 ? (f(), i("div", {
659
+ key: 4,
660
+ class: "kvc-block",
661
+ "aria-label": v(c).t("kvcoder.ui.call.payload"),
662
+ "data-test": "call-payload-fields"
663
+ }, [s(Q, { value: v(q)(g.value) }, null, 8, ["value"])], 8, st)) : r("v-if", !0);
664
+ }
665
+ }), lt = { class: "kvc-output-block" }, ut = ["aria-label"], dt = /* @__PURE__ */ c({
666
+ __name: "FoldedOutput",
667
+ props: { output: {} },
668
+ setup(e) {
669
+ let n = e, r = j(), o = p(!1), c = t(() => n.output.split("\n")), l = t(() => Be(c.value, o.value).join("\n"));
670
+ return (e, t) => (f(), i("div", lt, [a("pre", {
671
+ class: "kvc-output",
672
+ dir: "auto",
673
+ "aria-label": v(r).t("kvcoder.ui.output"),
674
+ "data-test": "call-output"
675
+ }, [s(X, { text: l.value }, null, 8, ["text"])], 8, ut), s(Y, {
676
+ count: c.value.length,
677
+ open: o.value,
678
+ over: v(12) + v(5),
679
+ onToggle: t[0] ||= (e) => o.value = !o.value
680
+ }, null, 8, [
681
+ "count",
682
+ "open",
683
+ "over"
684
+ ])]));
159
685
  }
686
+ });
687
+ //#endregion
688
+ //#region web/src/durations.ts
689
+ function $(e, t) {
690
+ if (t < 1e3) return e("kvcoder.ui.milliseconds", { count: Math.round(t) });
691
+ if (t < 1e4) return e("kvcoder.ui.seconds", { count: (t / 1e3).toFixed(1) });
692
+ let n = Math.round(t / 1e3);
693
+ return n < 60 ? e("kvcoder.ui.seconds", { count: n }) : e("kvcoder.ui.minutesSeconds", {
694
+ minutes: Math.floor(n / 60),
695
+ seconds: n % 60
696
+ });
160
697
  }
161
698
  //#endregion
162
- //#region web/src/CallCard.vue?vue&type=script&setup=true&lang.ts
163
- var R = ["aria-expanded", "disabled"], z = ["aria-label"], B = { class: "kvc-lines" }, V = {
699
+ //#region web/src/RunOutput.vue?vue&type=script&setup=true&lang.ts
700
+ var ft = {
701
+ class: "kvc-block kvc-run-row",
702
+ "data-test": "run-row"
703
+ }, pt = {
704
+ class: "kvc-run-call",
705
+ dir: "auto",
706
+ "data-test": "run-call"
707
+ }, mt = {
708
+ class: "kvc-chip",
709
+ "data-test": "run-status"
710
+ }, ht = {
164
711
  key: 0,
165
- style: { "font-weight": "600" },
166
- "data-test": "call-description"
167
- }, H = {
168
- key: 1,
169
- class: "kvc-oneline",
170
- "data-test": "call-line"
171
- }, U = { class: "kvc-mono" }, W = {
712
+ class: "kvc-muted",
713
+ "data-test": "run-time"
714
+ }, gt = ["aria-label"], _t = ["aria-label"], vt = ["aria-label"], yt = ["aria-label"], bt = /* @__PURE__ */ c({
715
+ __name: "RunOutput",
716
+ props: { run: {} },
717
+ setup(c) {
718
+ let l = c, u = j(), d = (e) => typeof e == "string" ? e : void 0, p = t(() => d(l.run.output)), m = t(() => d(l.run.problem)), h = t(() => ({
719
+ type: "markdown",
720
+ text: "kvcoder.markdown",
721
+ params: { text: p.value ?? "" }
722
+ }));
723
+ return (t, c) => (f(), i(e, null, [
724
+ a("div", ft, [
725
+ a("span", pt, _(l.run.call), 1),
726
+ a("span", mt, [o(_(v(le)(v(u).t, l.run.status)), 1), l.run.exitCode === void 0 ? r("v-if", !0) : (f(), i(e, { key: 0 }, [o(" · " + _(v(u).t("kvcoder.ui.exitCode", { code: l.run.exitCode })), 1)], 64))]),
727
+ l.run.ranMs === void 0 ? r("v-if", !0) : (f(), i("span", ht, _(v($)(v(u).t, l.run.ranMs)), 1))
728
+ ]),
729
+ m.value === void 0 ? l.run.problem === void 0 ? r("v-if", !0) : (f(), i("div", {
730
+ key: 1,
731
+ class: "kvc-block kvc-error",
732
+ "aria-label": v(u).t("kvcoder.ui.call.error"),
733
+ "data-test": "run-problem"
734
+ }, [s(Q, { value: v(q)(l.run.problem) }, null, 8, ["value"])], 8, _t)) : (f(), i("pre", {
735
+ key: 0,
736
+ class: "kvc-block kvc-error",
737
+ dir: "auto",
738
+ "aria-label": v(u).t("kvcoder.ui.call.error"),
739
+ "data-test": "run-problem"
740
+ }, [s(X, { text: m.value }, null, 8, ["text"])], 8, gt)),
741
+ p.value === void 0 && l.run.output !== void 0 ? (f(), i("div", {
742
+ key: 2,
743
+ class: "kvc-block",
744
+ "aria-label": v(u).t("kvcoder.ui.output"),
745
+ "data-test": "call-result-fields"
746
+ }, [s(Q, { value: v(q)(l.run.output) }, null, 8, ["value"])], 8, vt)) : l.run.answer && p.value ? (f(), i("div", {
747
+ key: 3,
748
+ class: "kvc-block",
749
+ "aria-label": v(u).t("kvcoder.ui.call.answer"),
750
+ "data-test": "call-answer"
751
+ }, [(f(), n(g(v(u).View), { view: h.value }, null, 8, ["view"]))], 8, yt)) : p.value ? (f(), n(dt, {
752
+ key: 4,
753
+ output: p.value
754
+ }, null, 8, ["output"])) : r("v-if", !0)
755
+ ], 64));
756
+ }
757
+ }), xt = {
758
+ key: 0,
759
+ class: "kvc-muted kvc-call-parts",
760
+ "data-test": "call-replacements"
761
+ }, St = {
172
762
  key: 2,
763
+ class: "kvc-block kvc-entries",
764
+ "data-test": "call-entries"
765
+ }, Ct = ["data-kind"], wt = {
766
+ class: "kvc-mono",
767
+ dir: "auto",
768
+ "data-test": "call-entry-name"
769
+ }, Tt = {
770
+ key: 0,
771
+ class: "kvc-muted",
772
+ "data-test": "call-entry-size"
773
+ }, Et = {
774
+ class: "kvc-mono kvc-file-path",
775
+ "data-test": "call-file-path"
776
+ }, Dt = ["aria-label"], Ot = ["aria-label"], kt = /* @__PURE__ */ c({
777
+ __name: "CallResult",
778
+ props: {
779
+ view: {},
780
+ output: {},
781
+ result: {}
782
+ },
783
+ setup(o) {
784
+ let c = o, l = j(), u = t(() => G(c.view)), d = t(() => u.value === "edit" ? re(c.result) : void 0), h = t(() => u.value === "read" ? ie(c.result) : void 0), y = t(() => u.value === "list" ? oe(c.result) : void 0), b = t(() => u.value === "search" ? ue(c.result) : void 0), x = t(() => u.value === "run-output" ? N(c.result) : void 0), S = p(!1), C = t(() => J(y.value ?? [], S.value)), w = t(() => ({
785
+ type: "markdown",
786
+ text: "kvcoder.markdown",
787
+ params: { text: c.output }
788
+ })), T = t(() => u.value !== "line" && typeof c.result == "object" && c.result !== null);
789
+ return (t, o) => d.value === void 0 ? h.value === void 0 ? y.value === void 0 ? b.value === void 0 ? u.value === "write" && T.value ? (f(), i(e, { key: 4 }, [], 64)) : x.value === void 0 ? u.value === "delegate" && c.output !== "" ? (f(), i("div", {
790
+ key: 6,
791
+ class: "kvc-block",
792
+ "aria-label": v(l).t("kvcoder.ui.call.answer"),
793
+ "data-test": "call-answer"
794
+ }, [(f(), n(g(v(l).View), { view: w.value }, null, 8, ["view"]))], 8, Dt)) : T.value ? (f(), i("div", {
795
+ key: 7,
796
+ class: "kvc-block",
797
+ "aria-label": v(l).t("kvcoder.ui.output"),
798
+ "data-test": "call-result-fields"
799
+ }, [s(Q, { value: v(q)(c.result) }, null, 8, ["value"])], 8, Ot)) : c.output === "" ? r("v-if", !0) : (f(), n(dt, {
800
+ key: 8,
801
+ output: c.output
802
+ }, null, 8, ["output"])) : (f(), n(bt, {
803
+ key: 5,
804
+ run: x.value
805
+ }, null, 8, ["run"])) : (f(!0), i(e, { key: 3 }, m(b.value, (e) => (f(), i("div", {
806
+ key: e.path,
807
+ class: "kvc-block",
808
+ "data-test": "call-file"
809
+ }, [a("div", Et, _(e.path), 1), s(Z, { lines: e.matches.map((e) => ({
810
+ text: e.text,
811
+ number: e.line
812
+ })) }, null, 8, ["lines"])]))), 128)) : (f(), i("div", St, [(f(!0), i(e, null, m(C.value, (e) => (f(), i("div", {
813
+ key: e.name,
814
+ class: "kvc-entry",
815
+ "data-kind": e.kind,
816
+ "data-test": "call-entry"
817
+ }, [
818
+ (f(), n(g(e.kind === "folder" ? v(ne) : v(A)), {
819
+ size: 14,
820
+ "aria-hidden": "true"
821
+ })),
822
+ a("span", wt, _(e.name), 1),
823
+ e.kind === "file" ? (f(), i("span", Tt, _(v(z)(v(l).t, e.bytes)), 1)) : r("v-if", !0)
824
+ ], 8, Ct))), 128)), s(Y, {
825
+ count: y.value.length,
826
+ open: S.value,
827
+ onToggle: o[0] ||= (e) => S.value = !S.value
828
+ }, null, 8, ["count", "open"])])) : (f(), n(Z, {
829
+ key: 1,
830
+ class: "kvc-block",
831
+ lines: v(ze)(h.value.content, h.value.fromLine),
832
+ "data-test": "call-content"
833
+ }, null, 8, ["lines"])) : (f(), i("p", xt, _(v(l).t("kvcoder.ui.call.replacements", {
834
+ count: d.value.replacements,
835
+ line: d.value.firstChangedLine
836
+ })), 1));
837
+ }
838
+ }), At = {
839
+ key: 0,
840
+ class: "kvc-summary",
841
+ "data-test": "call-summary"
842
+ }, jt = {
843
+ key: 0,
844
+ "data-test": "call-words"
845
+ }, Mt = {
846
+ key: 1,
847
+ class: "kvc-mono",
848
+ "data-test": "call-subject"
849
+ }, Nt = ["dir"], Pt = {
850
+ key: 1,
173
851
  class: "kvc-muted",
174
852
  dir: "ltr",
175
853
  style: { "align-self": "flex-start" },
176
854
  "data-test": "call-label"
177
- }, G = {
855
+ }, Ft = /* @__PURE__ */ c({
856
+ __name: "CallSummaryLine",
857
+ props: {
858
+ view: {},
859
+ result: {},
860
+ whole: { type: Boolean }
861
+ },
862
+ setup(e) {
863
+ let n = e, a = j(), o = t(() => Se(a.t, n.view, n.result)), s = t(() => /\p{L}/u.test(o.value?.outcome ?? "") ? void 0 : "ltr"), c = t(() => o.value?.subject === void 0 || n.whole === !0 ? o.value?.subject : K(o.value.subject));
864
+ return (e, t) => o.value === void 0 ? n.view.label ? (f(), i("span", Pt, _(n.view.label), 1)) : r("v-if", !0) : (f(), i("span", At, [
865
+ o.value.words ? (f(), i("span", jt, _(o.value.words), 1)) : r("v-if", !0),
866
+ c.value ? (f(), i("span", Mt, _(c.value), 1)) : r("v-if", !0),
867
+ o.value.outcome ? (f(), i("span", {
868
+ key: 2,
869
+ class: "kvc-muted",
870
+ dir: s.value,
871
+ "data-test": "call-outcome"
872
+ }, _(o.value.outcome), 9, Nt)) : r("v-if", !0)
873
+ ]));
874
+ }
875
+ }), It = ["aria-expanded", "disabled"], Lt = ["aria-label"], Rt = { class: "kvc-lines" }, zt = {
876
+ key: 0,
877
+ style: { "font-weight": "600" },
878
+ "data-test": "call-description"
879
+ }, Bt = {
880
+ key: 1,
881
+ class: "kvc-oneline",
882
+ "data-test": "call-line"
883
+ }, Vt = { class: "kvc-mono" }, Ht = {
178
884
  key: 2,
885
+ class: "kvc-chip kvc-warn",
886
+ "data-test": "call-risky"
887
+ }, Ut = {
888
+ key: 3,
179
889
  class: "kvc-chip",
180
890
  "data-test": "call-background"
181
- }, K = {
182
- key: 3,
891
+ }, Wt = {
892
+ key: 4,
183
893
  class: "kvc-chip kvc-danger",
184
894
  "data-test": "call-failed"
185
- }, q = {
895
+ }, Gt = {
186
896
  class: "kvc-muted",
187
897
  "data-test": "call-time"
188
- }, J = {
898
+ }, Kt = {
189
899
  key: 0,
190
900
  class: "kvc-muted kvc-call-parts",
191
901
  "data-test": "call-parts"
192
- }, Y = ["aria-label"], X = ["aria-label"], Z = ["href"], Q = /* @__PURE__ */ s({
902
+ }, qt = ["aria-label"], Jt = /* @__PURE__ */ c({
193
903
  __name: "CallCard",
194
904
  props: {
195
- description: {},
196
- label: {},
197
- line: {},
198
- payload: {},
905
+ view: {},
199
906
  failed: { type: Boolean },
200
907
  durationMs: {},
201
- writtenMs: {},
202
908
  output: {},
203
- running: { type: Boolean },
204
- background: { type: Boolean }
909
+ running: { type: Boolean }
205
910
  },
206
- setup(s) {
207
- let c = s, l = N(), _ = f(!1), v = t(() => I(L(c.output ?? ""))), y = t(() => c.durationMs === void 0 ? "" : M(l.t, (c.writtenMs ?? 0) + c.durationMs)), b = t(() => {
911
+ setup(o) {
912
+ let c = o, l = j(), u = t(() => G(c.view)), m = p(c.output !== void 0 && (c.failed === !0 || u.value === "edit" || u.value === "write")), h = t(() => c.failed === !0 ? void 0 : fe(c.output)), y = t(() => c.failed === !0 && u.value !== "line"), b = t(() => c.durationMs === void 0 ? "" : $(l.t, (c.view.writtenMs ?? 0) + c.durationMs)), x = t(() => {
208
913
  if (c.durationMs === void 0) return "";
209
- let e = M(l.t, c.durationMs);
210
- return c.writtenMs === void 0 ? l.t("kvcoder.ui.callRan", { ran: e }) : l.t("kvcoder.ui.callParts", {
211
- written: M(l.t, c.writtenMs),
914
+ let e = $(l.t, c.durationMs);
915
+ return c.view.writtenMs === void 0 ? l.t("kvcoder.ui.callRan", { ran: e }) : l.t("kvcoder.ui.callParts", {
916
+ written: $(l.t, c.view.writtenMs),
212
917
  ran: e
213
918
  });
214
- }), x = t(() => c.line ?? c.payload);
215
- return (t, s) => (d(), i("div", {
216
- class: u(["kvc-card", { "kvc-failed": c.failed }]),
919
+ });
920
+ return (t, o) => (f(), i("div", {
921
+ class: d(["kvc-card", { "kvc-failed": c.failed }]),
217
922
  "data-test": "call-card"
218
923
  }, [a("button", {
219
924
  type: "button",
@@ -222,73 +927,78 @@ var R = ["aria-expanded", "disabled"], z = ["aria-label"], B = { class: "kvc-lin
222
927
  "inline-size": "100%",
223
928
  "border-radius": "0"
224
929
  },
225
- "aria-expanded": _.value,
930
+ "aria-expanded": m.value,
226
931
  disabled: c.output === void 0,
227
- onClick: s[0] ||= (e) => _.value = !_.value
932
+ onClick: o[0] ||= (e) => m.value = !m.value
228
933
  }, [
229
- c.running ? (d(), i("span", {
934
+ c.running ? (f(), i("span", {
230
935
  key: 0,
231
936
  class: "kvc-spin",
232
- "aria-label": g(l).t("kvcoder.ui.running")
233
- }, null, 8, z)) : (d(), n(m(_.value ? g(O) : g(k)), {
937
+ "aria-label": v(l).t("kvcoder.ui.running")
938
+ }, null, 8, Lt)) : (f(), n(g(m.value ? v(O) : v(k)), {
234
939
  key: 1,
235
940
  size: 16,
236
941
  "aria-hidden": "true"
237
942
  })),
238
- a("span", B, [c.description ? (d(), i("span", V, h(c.description), 1)) : c.line ? (d(), i("span", H, [a("span", U, h(g(j)(c.line)), 1)])) : r("v-if", !0), c.label ? (d(), i("span", W, h(c.label), 1)) : r("v-if", !0)]),
239
- c.background ? (d(), i("span", G, h(g(l).t("kvcoder.ui.jobs.background")), 1)) : r("v-if", !0),
240
- c.failed ? (d(), i("span", K, h(g(l).t("kvcoder.ui.callFailed")), 1)) : r("v-if", !0),
241
- a("span", q, h(y.value), 1)
242
- ], 8, R), _.value && c.output !== void 0 ? (d(), i(e, { key: 0 }, [
243
- b.value === "" ? r("v-if", !0) : (d(), i("p", J, h(b.value), 1)),
244
- x.value === void 0 ? r("v-if", !0) : (d(), i("pre", {
943
+ a("span", Rt, [c.view.description ? (f(), i("span", zt, _(c.view.description), 1)) : c.view.connector === void 0 && c.view.line ? (f(), i("span", Bt, [a("span", Vt, _(v(K)(c.view.line)), 1)])) : r("v-if", !0), s(Ft, {
944
+ view: c.view,
945
+ result: h.value
946
+ }, null, 8, ["view", "result"])]),
947
+ c.view.risky ? (f(), i("span", Ht, _(v(l).t("kvcoder.ui.call.risky")), 1)) : r("v-if", !0),
948
+ c.view.background ? (f(), i("span", Ut, _(v(l).t("kvcoder.ui.jobs.background")), 1)) : r("v-if", !0),
949
+ c.failed ? (f(), i("span", Wt, _(v(l).t("kvcoder.ui.callFailed")), 1)) : r("v-if", !0),
950
+ a("span", Gt, _(b.value), 1)
951
+ ], 8, It), m.value && c.output !== void 0 ? (f(), i(e, { key: 0 }, [
952
+ x.value === "" ? r("v-if", !0) : (f(), i("p", Kt, _(x.value), 1)),
953
+ y.value ? (f(), i("pre", {
245
954
  key: 1,
246
- class: "kvc-output kvc-mono",
247
- dir: "ltr",
248
- "aria-label": g(l).t("kvcoder.ui.command"),
249
- "data-test": "call-payload"
250
- }, h(x.value), 9, Y)),
251
- c.output === "" ? r("v-if", !0) : (d(), i("pre", {
252
- key: 2,
253
- class: "kvc-output",
955
+ class: "kvc-block kvc-error",
254
956
  dir: "auto",
255
- "aria-label": g(l).t("kvcoder.ui.output"),
256
- "data-test": "call-output"
257
- }, [(d(!0), i(e, null, p(v.value, (t, n) => (d(), i(e, { key: n }, [t.kind === "link" ? (d(), i("a", {
258
- key: 0,
259
- href: t.href,
260
- target: "_blank",
261
- rel: "noopener noreferrer",
262
- class: "kvc-link"
263
- }, h(t.href), 9, Z)) : (d(), i(e, { key: 1 }, [o(h(t.text), 1)], 64))], 64))), 128))], 8, X))
957
+ "aria-label": v(l).t("kvcoder.ui.call.error"),
958
+ "data-test": "call-error"
959
+ }, [s(X, { text: c.output }, null, 8, ["text"])], 8, qt)) : r("v-if", !0),
960
+ s(ct, { view: c.view }, null, 8, ["view"]),
961
+ y.value ? r("v-if", !0) : (f(), n(kt, {
962
+ key: 2,
963
+ view: c.view,
964
+ output: c.output,
965
+ result: h.value
966
+ }, null, 8, [
967
+ "view",
968
+ "output",
969
+ "result"
970
+ ]))
264
971
  ], 64)) : r("v-if", !0)], 2));
265
972
  }
266
- }), $ = /* @__PURE__ */ s({
973
+ }), Yt = /* @__PURE__ */ c({
267
974
  __name: "call",
268
975
  props: {
269
976
  description: {},
270
- label: {},
271
- line: {},
977
+ connector: {},
978
+ command: {},
272
979
  payload: {},
980
+ line: {},
273
981
  failed: { type: Boolean },
274
982
  durationMs: {},
275
983
  output: {}
276
984
  },
277
985
  setup(e) {
278
- let t = e;
279
- return (e, r) => (d(), n(Q, {
280
- description: t.description,
281
- label: t.label,
282
- line: t.line,
283
- payload: t.payload,
284
- failed: t.failed,
285
- "duration-ms": t.durationMs,
286
- output: t.output
986
+ let r = e, i = t(() => r.connector === void 0 ? {
987
+ ...r.description === void 0 ? {} : { description: r.description },
988
+ ...r.line === void 0 ? {} : { line: r.line }
989
+ } : Oe({
990
+ description: r.description,
991
+ connector: r.connector,
992
+ command: r.command,
993
+ payload: r.payload ?? {}
994
+ }));
995
+ return (e, t) => (f(), n(Jt, {
996
+ view: i.value,
997
+ failed: r.failed,
998
+ "duration-ms": r.durationMs,
999
+ output: r.output
287
1000
  }, null, 8, [
288
- "description",
289
- "label",
290
- "line",
291
- "payload",
1001
+ "view",
292
1002
  "failed",
293
1003
  "duration-ms",
294
1004
  "output"
@@ -296,4 +1006,4 @@ var R = ["aria-expanded", "disabled"], z = ["aria-label"], B = { class: "kvc-lin
296
1006
  }
297
1007
  });
298
1008
  //#endregion
299
- export { $ as default };
1009
+ export { Yt as default };