@kvman/kvcoder 0.1.6 → 0.1.8

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