@oneclick.dev/cms-core-modules 0.0.122 → 0.0.123

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 (72) hide show
  1. package/dist/{ContentEditor-CoJjsV-m.js → ContentEditor-C-Wm48ai.js} +63 -59
  2. package/dist/{ContentEditor-DIwqplfB.mjs → ContentEditor-MDGolnIP.mjs} +27596 -26138
  3. package/dist/{NewReservationDialog.vue_vue_type_script_setup_true_lang-bZidw6RT.mjs → NewReservationDialog.vue_vue_type_script_setup_true_lang-8I_Z9cD_.mjs} +530 -530
  4. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-BVE_uURZ.js +1 -0
  5. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-BdFa-xNf.mjs +3566 -0
  6. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-DzPOadcU.js +925 -0
  7. package/dist/TableCalculationWidget-CkQPrVUd.js +59 -0
  8. package/dist/TableCalculationWidget-CrqcLGfU.mjs +254 -0
  9. package/dist/TableDataWidget-7qvC3Egd.js +1 -0
  10. package/dist/TableDataWidget-DMTSoGRO.mjs +121 -0
  11. package/dist/TableOverviewCard-AFq-puJs.js +1 -0
  12. package/dist/TableOverviewCard-Ci0d4o4w.mjs +391 -0
  13. package/dist/TableResultView.vue_vue_type_script_setup_true_lang-CBn-Oxl9.mjs +534 -0
  14. package/dist/TableResultView.vue_vue_type_script_setup_true_lang-C_Lv-SmJ.js +1 -0
  15. package/dist/TableRowActionCard-BhdnnPaq.mjs +266 -0
  16. package/dist/TableRowActionCard-IzB6tNN-.js +1 -0
  17. package/dist/TableView-BkwoKREo.js +4 -0
  18. package/dist/TableView-C4Zyp8d7.mjs +8228 -0
  19. package/dist/{agenda-BCKDYOeF.mjs → agenda-DWdbWUbb.mjs} +10 -9
  20. package/dist/agenda-r9Gl85GL.js +1 -0
  21. package/dist/dateRangePresets-B-l5b_wR.mjs +48 -0
  22. package/dist/dateRangePresets-CPWqst_x.js +1 -0
  23. package/dist/fuse-Deb-Iq39.mjs +1473 -0
  24. package/dist/fuse-_CGUd5Zq.js +1 -0
  25. package/dist/{index-DU3Ib10Z.mjs → index-B_qaX29C.mjs} +7 -6
  26. package/dist/{index-Bk3yLv_G.js → index-yHLT6gaZ.js} +3 -3
  27. package/dist/index.cjs.js +1 -1
  28. package/dist/index.mjs +419 -109
  29. package/dist/{orders-CElKNc1v.mjs → orders-BfTLIm7U.mjs} +10 -9
  30. package/dist/orders-DUa2PVoa.js +1 -0
  31. package/dist/reports-ChCsd1Gk.mjs +1107 -0
  32. package/dist/reports-DmJPm8uP.js +158 -0
  33. package/dist/row-item-C1dUyimV.mjs +204 -0
  34. package/dist/row-item-Cyo3m3MZ.js +1 -0
  35. package/dist/src/appointments/components/edit/EventDialog/BookingsList.vue.d.ts +9 -3
  36. package/dist/src/appointments/components/edit/EventDialog/OrderDetailDialog.vue.d.ts +2 -0
  37. package/dist/src/appointments/components/edit/EventDialog/ReservationDetailDialog.vue.d.ts +4 -2
  38. package/dist/src/appointments/components/edit/dashboard/BookingsList.vue.d.ts +9 -3
  39. package/dist/src/appointments/pages/edit/orders.vue.d.ts +9 -3
  40. package/dist/src/appointments/pages/edit/reports.vue.d.ts +229 -1
  41. package/dist/src/table/chat-components/TableCalculationWidget.vue.d.ts +15 -0
  42. package/dist/src/table/chat-components/TableDataWidget.vue.d.ts +15 -0
  43. package/dist/src/table/chat-components/TableOverviewCard.vue.d.ts +61 -0
  44. package/dist/src/table/chat-components/TableResultView.vue.d.ts +48 -0
  45. package/dist/src/table/chat-components/TableRowActionCard.vue.d.ts +15 -0
  46. package/dist/src/table/components/filters/DialogTableFilterOptionItem.vue.d.ts +16 -0
  47. package/dist/src/table/components/filters/NumberComparisonFilter.vue.d.ts +12 -0
  48. package/dist/src/table/components/filters/NumberComparisonFilterSettings.vue.d.ts +12 -0
  49. package/dist/src/table/components/filters/NumberRangeFilter.vue.d.ts +12 -0
  50. package/dist/src/table/components/filters/NumberRangeFilterSettings.vue.d.ts +12 -0
  51. package/dist/src/table/components/filters/filter-utils.d.ts +14 -0
  52. package/dist/src/table/composables/useTableAgentTools.d.ts +33 -0
  53. package/dist/src/table/index.d.ts +339 -0
  54. package/dist/src/table/tool-sandbox.d.ts +13 -0
  55. package/dist/src/table/tool-utils.d.ts +11 -0
  56. package/dist/src/table/tools.d.ts +333 -1
  57. package/dist/src/table/types.d.ts +79 -0
  58. package/dist/tool-sandbox-DdkMLkDK.mjs +182 -0
  59. package/dist/tool-sandbox-DoF1PsyS.js +115 -0
  60. package/dist/useTableAgentTools-D5mzGf3A.js +1 -0
  61. package/dist/useTableAgentTools-DcN3kYRL.mjs +131 -0
  62. package/package.json +17 -17
  63. package/src/table/tools.ts +304 -1
  64. package/dist/NewReservationDialog.vue_vue_type_script_setup_true_lang-BdZbcubW.js +0 -1
  65. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-BYSeUW_V.js +0 -925
  66. package/dist/OrderDetailDialog.vue_vue_type_script_setup_true_lang-DwAUYR8p.mjs +0 -5021
  67. package/dist/TableView-Ctnep-Qu.mjs +0 -6247
  68. package/dist/TableView-DJqyJL9L.js +0 -4
  69. package/dist/agenda-B54F8cEr.js +0 -1
  70. package/dist/orders-BMosTk6r.js +0 -1
  71. package/dist/reports-BQT_GZzU.js +0 -158
  72. package/dist/reports-DksZCTOw.mjs +0 -837
@@ -0,0 +1,266 @@
1
+ import { defineComponent as Y, ref as c, onMounted as ee, openBlock as d, createElementBlock as b, createVNode as h, unref as w, createElementVNode as l, toDisplayString as y, createCommentVNode as z, createBlock as N, createTextVNode as te } from "vue";
2
+ import { Loader2 as I, CheckCircle2 as re, XCircle as le, AlertTriangle as j, Play as oe } from "lucide-vue-next";
3
+ import { u as se } from "./useTableAgentTools-DcN3kYRL.mjs";
4
+ import { _ as ae, b as B, s as L, i as O, r as ne, a as M } from "./TableResultView.vue_vue_type_script_setup_true_lang-CBn-Oxl9.mjs";
5
+ import { r as ie } from "./tool-sandbox-DdkMLkDK.mjs";
6
+ const ue = { class: "w-full" }, ce = {
7
+ key: 0,
8
+ class: "flex items-center gap-2 py-3 text-xs text-muted-foreground"
9
+ }, de = {
10
+ key: 1,
11
+ class: "rounded-xl border bg-background p-4"
12
+ }, ve = { class: "flex items-center gap-2 text-sm font-semibold text-emerald-600 dark:text-emerald-400" }, fe = {
13
+ key: 2,
14
+ class: "rounded-xl border bg-background p-4"
15
+ }, me = { class: "flex items-center gap-2 text-sm font-semibold text-muted-foreground" }, pe = {
16
+ key: 3,
17
+ class: "flex items-start gap-2 rounded-xl border border-destructive/30 bg-destructive/5 p-3 text-xs text-destructive"
18
+ }, be = {
19
+ key: 4,
20
+ class: "overflow-hidden rounded-xl border bg-background"
21
+ }, ge = { class: "border-b bg-amber-50/70 p-4 dark:bg-amber-950/20" }, we = { class: "flex items-start gap-3" }, xe = { class: "flex size-9 shrink-0 items-center justify-center rounded-lg bg-amber-500/15" }, he = { class: "min-w-0" }, ye = { class: "text-sm font-semibold" }, _e = {
22
+ key: 0,
23
+ class: "mt-1 text-[11px] text-muted-foreground"
24
+ }, Ae = { class: "p-3" }, Re = {
25
+ key: 0,
26
+ class: "mt-3 text-xs text-destructive"
27
+ }, ke = { class: "mt-3 flex items-center gap-2" }, Ce = ["disabled"], Te = ["disabled"], Ne = /* @__PURE__ */ Y({
28
+ __name: "TableRowActionCard",
29
+ props: {
30
+ projectSlug: {},
31
+ toolName: {},
32
+ instanceId: {},
33
+ instanceName: {},
34
+ moduleType: {},
35
+ resolvedArgs: {},
36
+ status: {}
37
+ },
38
+ emits: ["submit"],
39
+ setup(P, { emit: V }) {
40
+ const o = P, q = V, _ = c(!0), p = c(!1), u = c(null), v = c("confirm"), s = c(null), D = c(-1), a = c(null), x = c([]), f = c(null), C = c(null), { loadRows: Z, runStoredRowAction: F } = se(o);
41
+ function U(e, t) {
42
+ const n = e.filter((m) => m.id === t);
43
+ if (n.length === 1) return n[0];
44
+ const i = t.trim().toLocaleLowerCase(), r = e.filter((m) => String(m.label).trim().toLocaleLowerCase() === i);
45
+ if (r.length === 1) return r[0];
46
+ throw r.length > 1 ? new Error(`More than one row action is named "${t}". Use its action ID.`) : new Error(`No configured row action matches "${t}".`);
47
+ }
48
+ async function X(e, t) {
49
+ if (e.visible === void 0 || e.visible === null || e.visible === "" || e.visible === !0 || e.visible === "true") return !0;
50
+ if (e.visible === !1 || e.visible === "false") return !1;
51
+ const i = String(e.visible).trim().match(/^\{\{([\s\S]*)\}\}$/);
52
+ if (!i) return !1;
53
+ const r = { item: { data: t } };
54
+ for (const [g, k] of Object.entries(t || {}))
55
+ /^[$A-Z_][0-9A-Z_$]*$/i.test(g) && !["constructor", "prototype", "__proto__"].includes(g) && (r[g] = k);
56
+ return await ie(
57
+ `const value = (${i[1]}); return value === true || value === 'true';`,
58
+ r,
59
+ { timeoutMs: 750, maxInputBytes: 1024 * 1024, maxOutputBytes: 1024 }
60
+ ) === !0;
61
+ }
62
+ function G() {
63
+ if (o.status !== "completed") return !1;
64
+ const e = o.resolvedArgs?._cachedData;
65
+ return !e || typeof e != "object" || Array.isArray(e) ? !1 : e.executed !== !0 && e.cancelled !== !0 && typeof e.error != "string" ? (u.value = "The saved row-action result is unavailable.", v.value = "error", _.value = !1, !0) : (C.value = e, s.value = e.row || null, x.value = e.columns || O(s.value ? [s.value] : []).slice(0, 8), u.value = e.error || null, v.value = e.cancelled ? "cancelled" : e.executed ? "success" : "error", _.value = !1, !0);
66
+ }
67
+ function R(e) {
68
+ let t;
69
+ try {
70
+ t = L(e, 256 * 1024);
71
+ } catch {
72
+ t = {
73
+ executed: e?.executed === !0,
74
+ cancelled: e?.cancelled === !0,
75
+ action: e?.action || null,
76
+ rowReference: e?.rowReference || null,
77
+ resultOmitted: "The detailed result was too large to store in chat."
78
+ };
79
+ }
80
+ C.value = t, o.status !== "completed" && q("submit", t);
81
+ }
82
+ function S(e) {
83
+ return Object.fromEntries(x.value.map((t) => [
84
+ t.property,
85
+ M(e, t.property)
86
+ ]));
87
+ }
88
+ function H() {
89
+ const e = String(o.resolvedArgs?.action || "").trim(), t = Array.isArray(o.resolvedArgs?.match) ? o.resolvedArgs.match : [];
90
+ if (!e) throw new Error("A configured row action ID or label is required.");
91
+ if (!t.length) throw new Error("At least one exact row match is required before an action can run.");
92
+ return { requestedAction: e, match: t };
93
+ }
94
+ async function $(e = !1) {
95
+ const { requestedAction: t, match: n } = H(), i = await Z({
96
+ startDate: o.resolvedArgs?.startDate,
97
+ endDate: o.resolvedArgs?.endDate,
98
+ dateProperty: o.resolvedArgs?.dateProperty,
99
+ useDefaultDateRange: o.resolvedArgs?.useDefaultDateRange
100
+ }, { freshMetadata: e }), r = U(i.actions, t), m = i.rows.filter((T) => n.every((A) => {
101
+ if (!A || typeof A.property != "string") return !1;
102
+ const W = ne(A.property, i.columns)?.property || A.property;
103
+ return Object.is(M(T, W), A.value);
104
+ }));
105
+ if (m.length !== 1) {
106
+ const T = m.length === 0 ? "No rows match" : `${m.length} rows match`;
107
+ throw new Error(`${T} the supplied identity. Refine the match until it identifies exactly one row.`);
108
+ }
109
+ const g = m[0], k = i.sourceRows.indexOf(g);
110
+ if (k < 0) throw new Error("The selected row could not be mapped back to the table data.");
111
+ if (!await X(r, g))
112
+ throw new Error(`The "${r.label}" action is not available for this row.`);
113
+ return { result: i, action: r, row: g, rowIndex: k };
114
+ }
115
+ function E(e) {
116
+ f.value = e.result, a.value = e.action, s.value = e.row, D.value = e.rowIndex;
117
+ const t = e.result.columns.length ? e.result.columns : O([e.row]);
118
+ x.value = t.filter((n) => n.visible !== !1 && !n._remove).slice(0, 8);
119
+ }
120
+ async function J() {
121
+ if (!G()) {
122
+ _.value = !0, u.value = null;
123
+ try {
124
+ E(await $());
125
+ } catch (e) {
126
+ u.value = e?.message || "Could not prepare the row action.", v.value = "error", R({
127
+ executed: !1,
128
+ error: u.value,
129
+ action: o.resolvedArgs?.action || null,
130
+ availableActions: f.value?.actions?.map((t) => ({ id: t.id, label: t.label })) || []
131
+ });
132
+ } finally {
133
+ _.value = !1;
134
+ }
135
+ }
136
+ }
137
+ async function K() {
138
+ if (!(p.value || !a.value || !s.value || !f.value)) {
139
+ p.value = !0, u.value = null;
140
+ try {
141
+ E(await $(!0));
142
+ const e = await F(
143
+ a.value,
144
+ s.value,
145
+ D.value,
146
+ f.value.sourceRows
147
+ ), t = B(s.value, f.value.rows, f.value.columns);
148
+ let n = null;
149
+ try {
150
+ n = L(e.flowResult ?? null, 64 * 1024);
151
+ } catch {
152
+ n = { omitted: "The flow result was too large to store in chat." };
153
+ }
154
+ const i = {
155
+ executed: !0,
156
+ cancelled: !1,
157
+ action: { id: a.value.id, label: a.value.label },
158
+ row: S(s.value),
159
+ rowReference: t,
160
+ columns: x.value.map((r) => ({
161
+ property: r.property,
162
+ label: r.label || r.property,
163
+ type: r.type || "text"
164
+ })),
165
+ flowResult: n,
166
+ tableEffects: e.effects.map((r) => ({
167
+ type: r.type,
168
+ index: r.index,
169
+ merge: r.merge
170
+ }))
171
+ };
172
+ v.value = "success", R(i);
173
+ } catch (e) {
174
+ u.value = e?.message || "The row action failed.", v.value = "error", R({
175
+ executed: !1,
176
+ cancelled: !1,
177
+ error: u.value,
178
+ action: a.value ? { id: a.value.id, label: a.value.label } : o.resolvedArgs?.action,
179
+ rowReference: s.value && f.value ? B(s.value, f.value.rows, f.value.columns) : null
180
+ });
181
+ } finally {
182
+ p.value = !1;
183
+ }
184
+ }
185
+ }
186
+ function Q() {
187
+ p.value || (v.value = "cancelled", R({
188
+ executed: !1,
189
+ cancelled: !0,
190
+ action: a.value ? { id: a.value.id, label: a.value.label } : o.resolvedArgs?.action,
191
+ row: s.value ? S(s.value) : null,
192
+ columns: x.value
193
+ }));
194
+ }
195
+ return ee(J), (e, t) => (d(), b("div", ue, [
196
+ _.value ? (d(), b("div", ce, [
197
+ h(w(I), { class: "size-4 animate-spin" }),
198
+ t[0] || (t[0] = l("span", null, "Finding the row and action…", -1))
199
+ ])) : v.value === "success" ? (d(), b("div", de, [
200
+ l("div", ve, [
201
+ h(w(re), { class: "size-5" }),
202
+ l("span", null, y(C.value?.action?.label || "Row action") + " completed", 1)
203
+ ]),
204
+ t[1] || (t[1] = l("p", { class: "mt-1 text-xs text-muted-foreground" }, "The table’s configured action flow finished successfully.", -1))
205
+ ])) : v.value === "cancelled" ? (d(), b("div", fe, [
206
+ l("div", me, [
207
+ h(w(le), { class: "size-5" }),
208
+ t[2] || (t[2] = l("span", null, "Action cancelled", -1))
209
+ ]),
210
+ t[3] || (t[3] = l("p", { class: "mt-1 text-xs text-muted-foreground" }, "No row action was run.", -1))
211
+ ])) : v.value === "error" ? (d(), b("div", pe, [
212
+ h(w(j), { class: "mt-0.5 size-4 shrink-0" }),
213
+ l("span", null, y(u.value), 1)
214
+ ])) : (d(), b("div", be, [
215
+ l("div", ge, [
216
+ l("div", we, [
217
+ l("div", xe, [
218
+ h(w(j), { class: "size-4 text-amber-600 dark:text-amber-400" })
219
+ ]),
220
+ l("div", he, [
221
+ l("p", ye, "Confirm “" + y(a.value?.label) + "”", 1),
222
+ t[4] || (t[4] = l("p", { class: "mt-1 text-xs text-muted-foreground" }, " This runs the action flow configured on this table and may change external data. ", -1)),
223
+ o.resolvedArgs?.confirmationMessage ? (d(), b("p", _e, " Agent note: " + y(o.resolvedArgs.confirmationMessage), 1)) : z("", !0)
224
+ ])
225
+ ])
226
+ ]),
227
+ l("div", Ae, [
228
+ h(ae, {
229
+ title: "Selected row",
230
+ rows: s.value ? [s.value] : [],
231
+ columns: x.value,
232
+ view: "card",
233
+ "max-rows": 1
234
+ }, null, 8, ["rows", "columns"]),
235
+ u.value ? (d(), b("p", Re, y(u.value), 1)) : z("", !0),
236
+ l("div", ke, [
237
+ l("button", {
238
+ type: "button",
239
+ class: "inline-flex items-center gap-1.5 rounded-lg bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground transition-colors hover:bg-primary/90 disabled:cursor-not-allowed disabled:opacity-50",
240
+ disabled: p.value,
241
+ onClick: K
242
+ }, [
243
+ p.value ? (d(), N(w(I), {
244
+ key: 0,
245
+ class: "size-3 animate-spin"
246
+ })) : (d(), N(w(oe), {
247
+ key: 1,
248
+ class: "size-3"
249
+ })),
250
+ te(" " + y(p.value ? "Running…" : `Run ${a.value?.label}`), 1)
251
+ ], 8, Ce),
252
+ l("button", {
253
+ type: "button",
254
+ class: "rounded-lg border px-3 py-1.5 text-xs font-medium text-muted-foreground transition-colors hover:bg-muted disabled:opacity-50",
255
+ disabled: p.value,
256
+ onClick: Q
257
+ }, " Cancel ", 8, Te)
258
+ ])
259
+ ])
260
+ ]))
261
+ ]));
262
+ }
263
+ });
264
+ export {
265
+ Ne as default
266
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),b=require("lucide-vue-next"),P=require("./useTableAgentTools-D5mzGf3A.js"),u=require("./TableResultView.vue_vue_type_script_setup_true_lang-C_Lv-SmJ.js"),M=require("./tool-sandbox-DoF1PsyS.js"),Z={class:"w-full"},F={key:0,class:"flex items-center gap-2 py-3 text-xs text-muted-foreground"},U={key:1,class:"rounded-xl border bg-background p-4"},X={class:"flex items-center gap-2 text-sm font-semibold text-emerald-600 dark:text-emerald-400"},G={key:2,class:"rounded-xl border bg-background p-4"},H={class:"flex items-center gap-2 text-sm font-semibold text-muted-foreground"},J={key:3,class:"flex items-start gap-2 rounded-xl border border-destructive/30 bg-destructive/5 p-3 text-xs text-destructive"},K={key:4,class:"overflow-hidden rounded-xl border bg-background"},Q={class:"border-b bg-amber-50/70 p-4 dark:bg-amber-950/20"},W={class:"flex items-start gap-3"},Y={class:"flex size-9 shrink-0 items-center justify-center rounded-lg bg-amber-500/15"},ee={class:"min-w-0"},te={class:"text-sm font-semibold"},re={key:0,class:"mt-1 text-[11px] text-muted-foreground"},le={class:"p-3"},oe={key:0,class:"mt-3 text-xs text-destructive"},ae={class:"mt-3 flex items-center gap-2"},ne=["disabled"],se=["disabled"],ce=e.defineComponent({__name:"TableRowActionCard",props:{projectSlug:{},toolName:{},instanceId:{},instanceName:{},moduleType:{},resolvedArgs:{},status:{}},emits:["submit"],setup(R,{emit:B}){const o=R,T=B,w=e.ref(!0),f=e.ref(!1),i=e.ref(null),d=e.ref("confirm"),a=e.ref(null),A=e.ref(-1),n=e.ref(null),g=e.ref([]),v=e.ref(null),_=e.ref(null),{loadRows:C,runStoredRowAction:S}=P.useTableAgentTools(o);function D(t,r){const s=t.filter(m=>m.id===r);if(s.length===1)return s[0];const c=r.trim().toLocaleLowerCase(),l=t.filter(m=>String(m.label).trim().toLocaleLowerCase()===c);if(l.length===1)return l[0];throw l.length>1?new Error(`More than one row action is named "${r}". Use its action ID.`):new Error(`No configured row action matches "${r}".`)}async function z(t,r){if(t.visible===void 0||t.visible===null||t.visible===""||t.visible===!0||t.visible==="true")return!0;if(t.visible===!1||t.visible==="false")return!1;const c=String(t.visible).trim().match(/^\{\{([\s\S]*)\}\}$/);if(!c)return!1;const l={item:{data:r}};for(const[p,h]of Object.entries(r||{}))/^[$A-Z_][0-9A-Z_$]*$/i.test(p)&&!["constructor","prototype","__proto__"].includes(p)&&(l[p]=h);return await M.runSandboxedTableCode(`const value = (${c[1]}); return value === true || value === 'true';`,l,{timeoutMs:750,maxInputBytes:1024*1024,maxOutputBytes:1024})===!0}function $(){if(o.status!=="completed")return!1;const t=o.resolvedArgs?._cachedData;return!t||typeof t!="object"||Array.isArray(t)?!1:t.executed!==!0&&t.cancelled!==!0&&typeof t.error!="string"?(i.value="The saved row-action result is unavailable.",d.value="error",w.value=!1,!0):(_.value=t,a.value=t.row||null,g.value=t.columns||u.inferTableColumns(a.value?[a.value]:[]).slice(0,8),i.value=t.error||null,d.value=t.cancelled?"cancelled":t.executed?"success":"error",w.value=!1,!0)}function y(t){let r;try{r=u.serializeBounded(t,256*1024)}catch{r={executed:t?.executed===!0,cancelled:t?.cancelled===!0,action:t?.action||null,rowReference:t?.rowReference||null,resultOmitted:"The detailed result was too large to store in chat."}}_.value=r,o.status!=="completed"&&T("submit",r)}function E(t){return Object.fromEntries(g.value.map(r=>[r.property,u.resolveProperty(t,r.property)]))}function I(){const t=String(o.resolvedArgs?.action||"").trim(),r=Array.isArray(o.resolvedArgs?.match)?o.resolvedArgs.match:[];if(!t)throw new Error("A configured row action ID or label is required.");if(!r.length)throw new Error("At least one exact row match is required before an action can run.");return{requestedAction:t,match:r}}async function N(t=!1){const{requestedAction:r,match:s}=I(),c=await C({startDate:o.resolvedArgs?.startDate,endDate:o.resolvedArgs?.endDate,dateProperty:o.resolvedArgs?.dateProperty,useDefaultDateRange:o.resolvedArgs?.useDefaultDateRange},{freshMetadata:t}),l=D(c.actions,r),m=c.rows.filter(k=>s.every(x=>{if(!x||typeof x.property!="string")return!1;const O=u.resolveColumn(x.property,c.columns)?.property||x.property;return Object.is(u.resolveProperty(k,O),x.value)}));if(m.length!==1){const k=m.length===0?"No rows match":`${m.length} rows match`;throw new Error(`${k} the supplied identity. Refine the match until it identifies exactly one row.`)}const p=m[0],h=c.sourceRows.indexOf(p);if(h<0)throw new Error("The selected row could not be mapped back to the table data.");if(!await z(l,p))throw new Error(`The "${l.label}" action is not available for this row.`);return{result:c,action:l,row:p,rowIndex:h}}function V(t){v.value=t.result,n.value=t.action,a.value=t.row,A.value=t.rowIndex;const r=t.result.columns.length?t.result.columns:u.inferTableColumns([t.row]);g.value=r.filter(s=>s.visible!==!1&&!s._remove).slice(0,8)}async function j(){if(!$()){w.value=!0,i.value=null;try{V(await N())}catch(t){i.value=t?.message||"Could not prepare the row action.",d.value="error",y({executed:!1,error:i.value,action:o.resolvedArgs?.action||null,availableActions:v.value?.actions?.map(r=>({id:r.id,label:r.label}))||[]})}finally{w.value=!1}}}async function q(){if(!(f.value||!n.value||!a.value||!v.value)){f.value=!0,i.value=null;try{V(await N(!0));const t=await S(n.value,a.value,A.value,v.value.sourceRows),r=u.buildRowReference(a.value,v.value.rows,v.value.columns);let s=null;try{s=u.serializeBounded(t.flowResult??null,64*1024)}catch{s={omitted:"The flow result was too large to store in chat."}}const c={executed:!0,cancelled:!1,action:{id:n.value.id,label:n.value.label},row:E(a.value),rowReference:r,columns:g.value.map(l=>({property:l.property,label:l.label||l.property,type:l.type||"text"})),flowResult:s,tableEffects:t.effects.map(l=>({type:l.type,index:l.index,merge:l.merge}))};d.value="success",y(c)}catch(t){i.value=t?.message||"The row action failed.",d.value="error",y({executed:!1,cancelled:!1,error:i.value,action:n.value?{id:n.value.id,label:n.value.label}:o.resolvedArgs?.action,rowReference:a.value&&v.value?u.buildRowReference(a.value,v.value.rows,v.value.columns):null})}finally{f.value=!1}}}function L(){f.value||(d.value="cancelled",y({executed:!1,cancelled:!0,action:n.value?{id:n.value.id,label:n.value.label}:o.resolvedArgs?.action,row:a.value?E(a.value):null,columns:g.value}))}return e.onMounted(j),(t,r)=>(e.openBlock(),e.createElementBlock("div",Z,[w.value?(e.openBlock(),e.createElementBlock("div",F,[e.createVNode(e.unref(b.Loader2),{class:"size-4 animate-spin"}),r[0]||(r[0]=e.createElementVNode("span",null,"Finding the row and action…",-1))])):d.value==="success"?(e.openBlock(),e.createElementBlock("div",U,[e.createElementVNode("div",X,[e.createVNode(e.unref(b.CheckCircle2),{class:"size-5"}),e.createElementVNode("span",null,e.toDisplayString(_.value?.action?.label||"Row action")+" completed",1)]),r[1]||(r[1]=e.createElementVNode("p",{class:"mt-1 text-xs text-muted-foreground"},"The table’s configured action flow finished successfully.",-1))])):d.value==="cancelled"?(e.openBlock(),e.createElementBlock("div",G,[e.createElementVNode("div",H,[e.createVNode(e.unref(b.XCircle),{class:"size-5"}),r[2]||(r[2]=e.createElementVNode("span",null,"Action cancelled",-1))]),r[3]||(r[3]=e.createElementVNode("p",{class:"mt-1 text-xs text-muted-foreground"},"No row action was run.",-1))])):d.value==="error"?(e.openBlock(),e.createElementBlock("div",J,[e.createVNode(e.unref(b.AlertTriangle),{class:"mt-0.5 size-4 shrink-0"}),e.createElementVNode("span",null,e.toDisplayString(i.value),1)])):(e.openBlock(),e.createElementBlock("div",K,[e.createElementVNode("div",Q,[e.createElementVNode("div",W,[e.createElementVNode("div",Y,[e.createVNode(e.unref(b.AlertTriangle),{class:"size-4 text-amber-600 dark:text-amber-400"})]),e.createElementVNode("div",ee,[e.createElementVNode("p",te,"Confirm “"+e.toDisplayString(n.value?.label)+"”",1),r[4]||(r[4]=e.createElementVNode("p",{class:"mt-1 text-xs text-muted-foreground"}," This runs the action flow configured on this table and may change external data. ",-1)),o.resolvedArgs?.confirmationMessage?(e.openBlock(),e.createElementBlock("p",re," Agent note: "+e.toDisplayString(o.resolvedArgs.confirmationMessage),1)):e.createCommentVNode("",!0)])])]),e.createElementVNode("div",le,[e.createVNode(u._sfc_main,{title:"Selected row",rows:a.value?[a.value]:[],columns:g.value,view:"card","max-rows":1},null,8,["rows","columns"]),i.value?(e.openBlock(),e.createElementBlock("p",oe,e.toDisplayString(i.value),1)):e.createCommentVNode("",!0),e.createElementVNode("div",ae,[e.createElementVNode("button",{type:"button",class:"inline-flex items-center gap-1.5 rounded-lg bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground transition-colors hover:bg-primary/90 disabled:cursor-not-allowed disabled:opacity-50",disabled:f.value,onClick:q},[f.value?(e.openBlock(),e.createBlock(e.unref(b.Loader2),{key:0,class:"size-3 animate-spin"})):(e.openBlock(),e.createBlock(e.unref(b.Play),{key:1,class:"size-3"})),e.createTextVNode(" "+e.toDisplayString(f.value?"Running…":`Run ${n.value?.label}`),1)],8,ne),e.createElementVNode("button",{type:"button",class:"rounded-lg border px-3 py-1.5 text-xs font-medium text-muted-foreground transition-colors hover:bg-muted disabled:opacity-50",disabled:f.value,onClick:L}," Cancel ",8,se)])])]))]))}});exports.default=ce;