react-semaphor 0.1.538 → 0.1.540

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 (41) hide show
  1. package/dist/assistant-context/index.js +1 -1
  2. package/dist/assistant-protocol/index.js +63 -54
  3. package/dist/brand-studio/index.js +1 -1
  4. package/dist/chunks/add-to-dashboard-BuAqfA2Y.js +80 -0
  5. package/dist/chunks/{aggregate-table-row-presentation-Qgpv6_G8.js → aggregate-table-row-presentation-BjK9YfMI.js} +1 -1
  6. package/dist/chunks/{assistant-chat-BAqUIFp5.js → assistant-chat-ya7xopaC.js} +2700 -2363
  7. package/dist/chunks/{context-HD9usB1P.js → context-ClREvqCZ.js} +101 -102
  8. package/dist/chunks/{dashboard-DTDDFQsS.js → dashboard-B6Bithfl.js} +1 -1
  9. package/dist/chunks/{dashboard-briefing-launcher-Bb2QUqOa.js → dashboard-briefing-launcher-DJI-zfEq.js} +364 -364
  10. package/dist/chunks/{dashboard-controls-FpONU8QV.js → dashboard-controls-Dh7HqoKy.js} +7 -7
  11. package/dist/chunks/{dashboard-json-DazPhBU_.js → dashboard-json-BnmlB71h.js} +2 -2
  12. package/dist/chunks/{document-dashboard-inputs-D96rlU7S.js → document-dashboard-inputs-BrYYlRVo.js} +9 -9
  13. package/dist/chunks/{edit-dashboard-visual-CIhZodVH.js → edit-dashboard-visual-CydOkSko.js} +6 -6
  14. package/dist/chunks/{matrix-formatter-Bgw32tb3.js → matrix-formatter-DQ8avoIQ.js} +8 -8
  15. package/dist/chunks/report-preferences-dialog-neMDolLg.js +1950 -0
  16. package/dist/chunks/{saved-dashboard-context-BrTkjcod.js → saved-dashboard-context-CCrLpfSQ.js} +2 -2
  17. package/dist/chunks/{semaphor-ready-indicator-CHHoWhil.js → semaphor-ready-indicator--4DWtVBu.js} +23779 -23712
  18. package/dist/chunks/{shelf-drop-preview-context-EsayECEC.js → shelf-drop-preview-context-CpdB5ois.js} +3 -3
  19. package/dist/chunks/{switch-CvItuC1Q.js → switch-DWEWiv1J.js} +53 -52
  20. package/dist/chunks/{use-create-flow-overlay-state-BqA92GkX.js → use-create-flow-overlay-state-8g6Zhphh.js} +3 -3
  21. package/dist/dashboard/index.js +1 -1
  22. package/dist/data-app-sdk/index.js +1 -1
  23. package/dist/format-utils/index.js +2 -2
  24. package/dist/index.js +10 -10
  25. package/dist/style.css +1 -1
  26. package/dist/surfboard/index.js +1 -1
  27. package/dist/types/components/assistant/assistant-entry-points.d.ts +3 -0
  28. package/dist/types/components/assistant/assistant-store.d.ts +49 -1
  29. package/dist/types/components/assistant/use-assistant.d.ts +10 -1
  30. package/dist/types/lib/hooks/use-filter-option-browse.d.ts +5 -0
  31. package/dist/types/lib/hooks/use-text-filter.d.ts +2 -0
  32. package/dist/types/shared/assistant-protocol/context.d.ts +88 -66
  33. package/dist/types/shared/assistant-protocol/conversation.d.ts +3 -0
  34. package/dist/types/shared/assistant-protocol/index.d.ts +1 -0
  35. package/dist/types/shared/assistant-protocol/limits.d.ts +2 -0
  36. package/dist/types/shared/assistant-protocol/parts.d.ts +17 -8
  37. package/dist/types/shared/assistant-protocol/request.d.ts +6 -1
  38. package/dist/types/shared/assistant-protocol/tagged-fields.d.ts +29 -0
  39. package/package.json +2 -1
  40. package/dist/chunks/add-to-dashboard-CxtTfISD.js +0 -56
  41. package/dist/chunks/report-preferences-dialog-BCGs4-AE.js +0 -1808
@@ -1,23 +1,23 @@
1
1
  var T = Object.defineProperty;
2
2
  var q = (e, a, i) => a in e ? T(e, a, { enumerable: !0, configurable: !0, writable: !0, value: i }) : e[a] = i;
3
- var S = (e, a, i) => q(e, typeof a != "symbol" ? a + "" : a, i);
3
+ var b = (e, a, i) => q(e, typeof a != "symbol" ? a + "" : a, i);
4
4
  import { z as t } from "zod";
5
5
  import { s as k } from "./analytics-base-schemas-BFAoRlkU.js";
6
- const Z = 1;
7
- function y(e) {
6
+ const J = 1;
7
+ function $(e) {
8
8
  return `You've used ${e === void 0 ? "today's questions" : `today's ${e} questions`}. They reset tomorrow. To keep going, contact your administrator.`;
9
9
  }
10
- function W(e, a = {}) {
11
- return e === "daily_limit_reached" ? y(a.dailyLimit) : v[e];
10
+ function U(e, a = {}) {
11
+ return e === "daily_limit_reached" ? $(a.dailyLimit) : y[e];
12
12
  }
13
- const v = {
13
+ const y = {
14
14
  assistant_unavailable: "The assistant is not available here.",
15
15
  context_invalid: "Something on this page changed. Try again.",
16
16
  context_too_large: "There is too much on this page to send with your question. Ask about one card, or clear some filters.",
17
17
  conversation_not_found: "This conversation has ended. Start a new one.",
18
18
  conversation_full: "This conversation is full. Start a new one.",
19
19
  turn_in_progress: "Still answering your last question.",
20
- daily_limit_reached: y(),
20
+ daily_limit_reached: $(),
21
21
  budget_exhausted: "This question needed more steps than one answer allows. Try asking for less at once.",
22
22
  not_permitted: "You do not have access to the data this needs.",
23
23
  no_data_found: "No data matched this question.",
@@ -36,6 +36,8 @@ const v = {
36
36
  inputValues: 50,
37
37
  addedSources: 50,
38
38
  cardFields: 60,
39
+ /** Fields of the asked-about card tagged in one question (Phase 11). */
40
+ taggedFields: 5,
39
41
  cardFilters: 40,
40
42
  cardControls: 40,
41
43
  drillSteps: 10,
@@ -53,67 +55,65 @@ const v = {
53
55
  // rows kept on an artifact (D4-6: several fit in a conversation's 1 MB)
54
56
  conversationTtlSeconds: 24 * 60 * 60
55
57
  };
56
- function J(e) {
58
+ function Y(e) {
57
59
  return new TextEncoder().encode(JSON.stringify(e)).length;
58
60
  }
59
- function U(e, a) {
61
+ function z(e, a) {
60
62
  if (e.length <= a) return e;
61
63
  const i = (r) => ` [${r} more characters not shown]`, s = a - i(e.length).length;
62
64
  return `${e.slice(0, s)}${i(e.length - s)}`;
63
65
  }
64
- class Y extends Error {
66
+ class G extends Error {
65
67
  constructor(i) {
66
- super(v.context_too_large);
67
- S(this, "code", "context_too_large");
68
+ super(y.context_too_large);
69
+ b(this, "code", "context_too_large");
68
70
  this.bytes = i, this.name = "AssistantContextTooLargeError";
69
71
  }
70
72
  }
71
- const A = 1, d = j, p = t.string().min(1).max(d.idChars), h = t.string().max(d.labelChars), u = t.string().max(d.textChars), b = t.number().int().positive(), I = t.string().min(1).max(100), $ = t.object({ id: p, title: h }).strict(), N = t.object({
73
+ const A = 1, n = j, p = t.string().min(1).max(n.idChars), h = t.string().max(n.labelChars), u = t.string().max(n.textChars), g = t.number().int().positive(), v = t.string().min(1).max(100), S = t.object({ id: p, title: h }).strict(), N = t.object({
72
74
  inputId: p,
73
75
  label: h,
74
76
  value: t.discriminatedUnion("kind", [
75
77
  t.object({
76
78
  kind: t.literal("set"),
77
79
  text: u,
78
- omittedValues: b.optional(),
80
+ omittedValues: g.optional(),
79
81
  notApplied: t.literal("opened_from_another_dashboard").optional(),
80
- fingerprint: I
82
+ fingerprint: v
81
83
  }).strict(),
82
84
  t.object({ kind: t.literal("varies") }).strict()
83
85
  ]),
84
86
  globalDate: t.literal(!0).optional()
85
- }).strict(), _ = {
87
+ }).strict(), I = {
86
88
  id: p,
87
89
  title: h,
88
90
  visualType: t.string().max(100),
89
91
  source: k.optional()
90
- }, E = t.object(_).strict(), w = (e) => t.object(Object.fromEntries(e.map((a) => [a, b.optional()]))).strict().optional(), L = t.discriminatedUnion("status", [
92
+ }, E = t.object(I).strict(), _ = (e) => t.object(Object.fromEntries(e.map((a) => [a, g.optional()]))).strict().optional(), F = t.object({
93
+ role: t.enum(["row", "column", "measure", "detail"]),
94
+ label: h,
95
+ name: h,
96
+ aggregate: t.string().max(40).optional(),
97
+ granularity: t.string().max(40).optional()
98
+ }).strict(), L = t.discriminatedUnion("status", [
91
99
  t.object({
92
100
  status: t.literal("described"),
93
- fields: t.array(
94
- t.object({
95
- role: t.enum(["row", "column", "measure", "detail"]),
96
- label: h,
97
- name: h,
98
- aggregate: t.string().max(40).optional(),
99
- granularity: t.string().max(40).optional()
100
- }).strict()
101
- ).max(d.cardFields),
101
+ fields: t.array(F).max(n.cardFields),
102
102
  filters: t.array(
103
103
  t.object({
104
104
  origin: t.enum(["dashboard_input", "card_input", "card", "drill", "selection"]),
105
105
  text: u,
106
- omittedValues: b.optional()
106
+ omittedValues: g.optional()
107
107
  }).strict()
108
- ).max(d.cardFilters),
109
- controls: t.array(t.object({ label: h, valueText: u }).strict()).max(d.cardControls),
110
- drillPath: t.array(u).max(d.drillSteps),
108
+ ).max(n.cardFilters),
109
+ controls: t.array(t.object({ label: h, valueText: u }).strict()).max(n.cardControls),
110
+ drillPath: t.array(u).max(n.drillSteps),
111
111
  sql: t.object({
112
- text: t.string().max(d.sqlChars),
113
- parameters: t.array(t.object({ name: h, valueText: u }).strict()).max(d.sqlParameters)
112
+ text: t.string().max(n.sqlChars),
113
+ parameters: t.array(t.object({ name: h, valueText: u }).strict()).max(n.sqlParameters)
114
114
  }).strict().optional(),
115
- comparisons: t.array(u).max(d.cardFields).optional(),
116
- omitted: w(["fields", "filters", "controls", "drillSteps", "sqlParameters", "comparisons"])
115
+ comparisons: t.array(u).max(n.cardFields).optional(),
116
+ omitted: _(["fields", "filters", "controls", "drillSteps", "sqlParameters", "comparisons"])
117
117
  }).strict(),
118
118
  t.object({
119
119
  status: t.literal("not_described"),
@@ -121,10 +121,10 @@ const A = 1, d = j, p = t.string().min(1).max(d.idChars), h = t.string().max(d.l
121
121
  message: u.optional()
122
122
  }).strict()
123
123
  ]), P = t.object({
124
- ..._,
125
- fingerprint: I,
124
+ ...I,
125
+ fingerprint: v,
126
126
  description: L
127
- }).strict(), z = t.object({
127
+ }).strict(), H = t.object({
128
128
  version: t.literal(A),
129
129
  surface: t.enum(["dashboard", "editor", "none"]),
130
130
  dashboard: t.object({
@@ -132,13 +132,13 @@ const A = 1, d = j, p = t.string().min(1).max(d.idChars), h = t.string().max(d.l
132
132
  title: h,
133
133
  unsavedEdits: t.boolean()
134
134
  }).strict().optional(),
135
- sheet: $.optional(),
136
- otherSheets: t.array($).max(d.otherSheets),
137
- activeInputs: t.array(N).max(d.activeInputs),
138
- cards: t.array(E).max(d.summaryCards),
135
+ sheet: S.optional(),
136
+ otherSheets: t.array(S).max(n.otherSheets),
137
+ activeInputs: t.array(N).max(n.activeInputs),
138
+ cards: t.array(E).max(n.summaryCards),
139
139
  selectedCard: P.optional(),
140
140
  editing: t.object({ mode: t.enum(["visual", "sql"]) }).strict().optional(),
141
- omitted: w(["otherSheets", "activeInputs", "cards"]),
141
+ omitted: _(["otherSheets", "activeInputs", "cards"]),
142
142
  timeZone: t.string().min(1).max(100)
143
143
  }).strict().superRefine((e, a) => {
144
144
  e.surface !== "none" && !e.dashboard && a.addIssue({
@@ -155,7 +155,7 @@ const A = 1, d = j, p = t.string().min(1).max(d.idChars), h = t.string().max(d.l
155
155
  message: "required on the editor surface, and only there"
156
156
  });
157
157
  });
158
- function G(e, a) {
158
+ function X(e, a) {
159
159
  if (!e) return [];
160
160
  const i = [];
161
161
  e.surface !== a.surface && i.push({
@@ -173,11 +173,11 @@ function G(e, a) {
173
173
  ...s ? { fromCardId: s.id } : {},
174
174
  ...r ? { toCardId: r.id } : {}
175
175
  }) : s && r && s.fingerprint !== r.fingerprint && i.push({ kind: "card_changed", cardId: r.id });
176
- const l = R(
176
+ const d = R(
177
177
  e.activeInputs ?? [],
178
178
  a.activeInputs
179
179
  );
180
- return l.length > 0 && i.push({ kind: "inputs_changed", inputIds: l }), i;
180
+ return d.length > 0 && i.push({ kind: "inputs_changed", inputIds: d }), i;
181
181
  }
182
182
  function R(e, a) {
183
183
  const i = (o) => o ? o.value.kind === "set" ? o.value.fingerprint : "varies" : void 0, s = new Map(e.map((o) => [o.inputId, o])), r = new Map(a.map((o) => [o.inputId, o]));
@@ -185,21 +185,21 @@ function R(e, a) {
185
185
  (o) => i(s.get(o)) !== i(r.get(o))
186
186
  );
187
187
  }
188
- function H(e, a, i) {
189
- var r, l, o;
188
+ function K(e, a, i) {
189
+ var r, d, o;
190
190
  const s = [];
191
191
  if (e.surface === "none" || !e.dashboard)
192
192
  s.push(
193
193
  "The user is not looking at a dashboard. Answer from the sources they added; if none fit, find the data with the discovery tools or ask which data to use."
194
194
  );
195
195
  else {
196
- const n = e.surface === "editor" ? "editing a visual on" : "looking at";
196
+ const c = e.surface === "editor" ? "editing a visual on" : "looking at";
197
197
  s.push(
198
- `The user is ${n} the dashboard ${c(e.dashboard.title)} (id ${e.dashboard.id})${e.dashboard.unsavedEdits ? ", which has unsaved edits" : ""}.`
198
+ `The user is ${c} the dashboard ${l(e.dashboard.title)} (id ${e.dashboard.id})${e.dashboard.unsavedEdits ? ", which has unsaved edits" : ""}.`
199
199
  ), e.sheet && s.push(
200
- `Current sheet: ${c(e.sheet.title)} (id ${e.sheet.id}).`
200
+ `Current sheet: ${l(e.sheet.title)} (id ${e.sheet.id}).`
201
201
  ), e.otherSheets.length > 0 && s.push(
202
- `Other sheets: ${e.otherSheets.map((f) => c(f.title)).join(", ")}${m((r = e.omitted) == null ? void 0 : r.otherSheets, "sheets")}.`
202
+ `Other sheets: ${e.otherSheets.map((C) => l(C.title)).join(", ")}${m((r = e.omitted) == null ? void 0 : r.otherSheets, "sheets")}.`
203
203
  );
204
204
  }
205
205
  if (e.activeInputs.length > 0) {
@@ -207,81 +207,78 @@ function H(e, a, i) {
207
207
  "",
208
208
  "Dashboard inputs with a value (which of them a card applies is in that card's description when the user asks about it):"
209
209
  );
210
- for (const n of e.activeInputs)
211
- s.push(`- ${x(n)}`);
212
- (l = e.omitted) != null && l.activeInputs && s.push(`- ${e.omitted.activeInputs} more inputs are not listed.`);
210
+ for (const c of e.activeInputs)
211
+ s.push(`- ${O(c)}`);
212
+ (d = e.omitted) != null && d.activeInputs && s.push(`- ${e.omitted.activeInputs} more inputs are not listed.`);
213
213
  }
214
214
  if (e.cards.length > 0) {
215
215
  s.push("", "Cards on this sheet:");
216
- for (const n of e.cards)
217
- s.push(`- ${g(n)}`);
216
+ for (const c of e.cards)
217
+ s.push(`- ${f(c)}`);
218
218
  (o = e.omitted) != null && o.cards && s.push(`- ${e.omitted.cards} more cards are not listed.`);
219
219
  }
220
- if (e.selectedCard && s.push("", ...B(e.selectedCard, e.editing)), i.length > 0) {
220
+ if (e.selectedCard && s.push("", ...M(e.selectedCard, e.editing)), i.length > 0) {
221
221
  s.push("", "Sources the user added:");
222
- for (const n of i)
223
- s.push(`- ${C(n)}`);
222
+ for (const c of i)
223
+ s.push(`- ${w(c)}`);
224
224
  }
225
225
  if (a.length > 0) {
226
226
  s.push("", "Since the last question:");
227
- for (const n of a)
228
- s.push(`- ${D(n, e)}`);
227
+ for (const c of a)
228
+ s.push(`- ${Q(c, e)}`);
229
229
  }
230
230
  return s.push("", `The user's time zone is ${e.timeZone}.`), s.join(`
231
231
  `);
232
232
  }
233
- function c(e) {
233
+ function x(e) {
234
+ const a = [e.name, e.aggregate, e.granularity ? `by ${e.granularity}` : void 0].filter(Boolean);
235
+ return `${e.role} ${l(e.label)} (${a.join(", ")})`;
236
+ }
237
+ function l(e) {
234
238
  return JSON.stringify(e);
235
239
  }
236
240
  function m(e, a) {
237
241
  return e ? `, and ${e} more ${a}` : "";
238
242
  }
239
- function g(e) {
240
- return `${c(e.title)} (card id ${e.id}, ${e.visualType})${e.source ? ` from ${C(e.source)}` : ""}`;
243
+ function f(e) {
244
+ return `${l(e.title)} (card id ${e.id}, ${e.visualType})${e.source ? ` from ${w(e.source)}` : ""}`;
241
245
  }
242
- function x(e) {
246
+ function O(e) {
243
247
  const { value: a } = e;
244
- return a.kind === "varies" ? `${c(e.label)}: differs by card; ask about a card to see its value` : a.notApplied ? `${a.text} (not applied in this view: it was opened from another dashboard without this dashboard's own filters)` : `${a.text}${e.globalDate ? ", applied to each card's own date field, on cards that have one" : ""}`;
248
+ return a.kind === "varies" ? `${l(e.label)}: differs by card; ask about a card to see its value` : a.notApplied ? `${a.text} (not applied in this view: it was opened from another dashboard without this dashboard's own filters)` : `${a.text}${e.globalDate ? ", applied to each card's own date field, on cards that have one" : ""}`;
245
249
  }
246
- const F = {
250
+ const B = {
247
251
  matrix: "it is a Matrix card",
248
252
  custom_visual: "it is a custom visual",
249
253
  python: "it is computed with Python",
250
254
  snapshot_blocked: "the dashboard could not compile it",
251
255
  snapshot_pending: "it was still loading when the question was sent"
252
- }, O = {
256
+ }, D = {
253
257
  dashboard_input: "dashboard input",
254
258
  card_input: "the card's own input",
255
259
  card: "the card's own filter",
256
260
  drill: "drill",
257
261
  selection: "selection on another card"
258
262
  };
259
- function B(e, a) {
260
- var l;
263
+ function M(e, a) {
264
+ var d;
261
265
  const i = a ? [
262
- `The user is editing the visual ${g(e)} in ${a.mode === "sql" ? "SQL" : "visual"} mode. What follows is their draft as it is on screen, which may not be saved: fromCard on this card runs the draft, and its rows are the draft's, not the saved card's. You cannot change the visual; to help change it, explain the steps in the editor or write SQL for them to paste.`
263
- ] : [`The user is asking about the card ${g(e)}.`], s = e.description;
266
+ `The user is editing the visual ${f(e)} in ${a.mode === "sql" ? "SQL" : "visual"} mode. What follows is their draft as it is on screen, which may not be saved: fromCard on this card runs the draft, and its rows are the draft's, not the saved card's. You cannot change the visual; to help change it, explain the steps in the editor or write SQL for them to paste.`
267
+ ] : [`The user is asking about the card ${f(e)}.`], s = e.description;
264
268
  if (s.status === "not_described")
265
269
  return i.push(
266
- `How this card is built is not available to you: ${F[s.reason]}${s.message ? ` (${s.message})` : ""}. Answer with the tools, and say that you could not read the card's definition.`
270
+ `How this card is built is not available to you: ${B[s.reason]}${s.message ? ` (${s.message})` : ""}. Answer with the tools, and say that you could not read the card's definition.`
267
271
  ), i;
268
272
  const r = s.omitted ?? {};
269
273
  if (i.push(a ? "What the draft runs, as the editor compiled it:" : "What the card runs, as the dashboard compiled it:"), s.fields.length > 0) {
270
- const o = s.fields.map((n) => {
271
- const f = [
272
- n.name,
273
- n.aggregate,
274
- n.granularity ? `by ${n.granularity}` : void 0
275
- ].filter(Boolean);
276
- return `${n.role} ${c(n.label)} (${f.join(", ")})`;
277
- });
274
+ const o = s.fields.map(x);
278
275
  i.push(`- Fields: ${o.join("; ")}${m(r.fields, "fields not listed")}.`);
279
276
  } else
280
277
  i.push("- Fields: none.");
281
278
  if (s.filters.length > 0) {
282
279
  i.push("- Filters, all applied together:");
283
280
  for (const o of s.filters)
284
- i.push(` - ${O[o.origin]}: ${o.text}`);
281
+ i.push(` - ${D[o.origin]}: ${o.text}`);
285
282
  r.filters && i.push(` - ${r.filters} more filters are not listed.`);
286
283
  } else
287
284
  i.push("- Filters: none.");
@@ -290,12 +287,12 @@ function B(e, a) {
290
287
  ), s.controls.length > 0) {
291
288
  i.push("- Controls:");
292
289
  for (const o of s.controls)
293
- i.push(` - ${c(o.label)}: ${o.valueText}`);
290
+ i.push(` - ${l(o.label)}: ${o.valueText}`);
294
291
  r.controls && i.push(` - ${r.controls} more controls are not listed.`);
295
292
  }
296
293
  if (s.sql && (i.push("- SQL:", "```sql", s.sql.text, "```"), s.sql.parameters.length > 0 && i.push(
297
294
  `- SQL parameters: ${s.sql.parameters.map((o) => `${o.name} = ${o.valueText}`).join("; ")}${m(r.sqlParameters, "parameters")}.`
298
- )), (l = s.comparisons) != null && l.length) {
295
+ )), (d = s.comparisons) != null && d.length) {
299
296
  i.push("- Comparisons (the windows are known only once a query runs):");
300
297
  for (const o of s.comparisons) i.push(` - ${o}`);
301
298
  r.comparisons && i.push(` - ${r.comparisons} more comparisons are not listed.`);
@@ -304,46 +301,48 @@ function B(e, a) {
304
301
  "This lists the card's fields, filters, drill path, controls, SQL and comparisons; it does not include the card's sorting, row limit or calculated-field formulas. A query you build yourself can differ from the card."
305
302
  ), i;
306
303
  }
307
- function C(e) {
304
+ function w(e) {
308
305
  switch (e.kind) {
309
306
  case "semantic":
310
- return `dataset ${c(e.label ?? e.datasetName)} (domainId ${e.domainId}, datasetName ${e.datasetName})`;
307
+ return `dataset ${l(e.label ?? e.datasetName)} (domainId ${e.domainId}, datasetName ${e.datasetName})`;
311
308
  case "physical":
312
309
  return `table ${[e.databaseName, e.schemaName, e.tableName].filter(Boolean).join(".")} (connectionId ${e.connectionId})`;
313
310
  case "sql":
314
- return `SQL on ${e.label ? c(e.label) : "a connection"} (connectionId ${e.connectionId})`;
311
+ return `SQL on ${e.label ? l(e.label) : "a connection"} (connectionId ${e.connectionId})`;
315
312
  }
316
313
  }
317
- function D(e, a) {
314
+ function Q(e, a) {
318
315
  var i;
319
316
  switch (e.kind) {
320
317
  case "surface_changed":
321
318
  return `the user moved from the ${e.from} view to the ${e.to} view.`;
322
319
  case "sheet_changed":
323
- return `the user switched sheets (now ${c(((i = a.sheet) == null ? void 0 : i.title) ?? e.toSheetId)}).`;
320
+ return `the user switched sheets (now ${l(((i = a.sheet) == null ? void 0 : i.title) ?? e.toSheetId)}).`;
324
321
  case "selection_changed":
325
322
  return e.toCardId ? `the user is now asking about card ${e.toCardId}.` : "the user is no longer asking about a specific card.";
326
323
  case "card_changed":
327
324
  return `card ${e.cardId} now runs differently (its fields, filters, controls or SQL changed).`;
328
325
  case "inputs_changed":
329
326
  return `these dashboard inputs changed: ${e.inputIds.map((r) => {
330
- const l = a.activeInputs.find((o) => o.inputId === r);
331
- return l ? c(l.label) : `input ${r} (now cleared)`;
327
+ const d = a.activeInputs.find((o) => o.inputId === r);
328
+ return d ? l(d.label) : `input ${r} (now cleared)`;
332
329
  }).join(", ")}.`;
333
330
  }
334
331
  }
335
332
  export {
336
333
  j as A,
337
- z as a,
338
- J as b,
334
+ H as a,
335
+ F as b,
339
336
  Y as c,
340
- A as d,
341
- G as e,
342
- U as f,
343
- C as g,
344
- Z as h,
345
- y as i,
346
- W as j,
347
- v as k,
348
- H as r
337
+ G as d,
338
+ A as e,
339
+ z as f,
340
+ X as g,
341
+ x as h,
342
+ w as i,
343
+ J as j,
344
+ $ as k,
345
+ U as l,
346
+ y as m,
347
+ K as r
349
348
  };
@@ -1,5 +1,5 @@
1
1
  import { jsx as a, jsxs as n } from "react/jsx-runtime";
2
- import { E as o, F as d, S as i, B as s, a as c, U as l, D as t, C as h, b as f } from "./semaphor-ready-indicator-CHHoWhil.js";
2
+ import { E as o, F as d, S as i, B as s, a as c, U as l, D as t, C as h, b as f } from "./semaphor-ready-indicator--4DWtVBu.js";
3
3
  function p(e) {
4
4
  if (typeof window > "u")
5
5
  return null;