@kvman/kvcoder 0.1.7 → 0.1.9

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