@squadbase/vite-server 0.1.17-dev.3b633bb → 0.1.17-dev.7408ec4

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 (73) hide show
  1. package/dist/cli/index.js +57 -32
  2. package/dist/connectors/airtable-oauth.js +0 -6
  3. package/dist/connectors/airtable.js +0 -6
  4. package/dist/connectors/amplitude.js +0 -6
  5. package/dist/connectors/asana.js +0 -6
  6. package/dist/connectors/attio.js +0 -6
  7. package/dist/connectors/aws-billing.js +0 -6
  8. package/dist/connectors/azure-sql.js +0 -6
  9. package/dist/connectors/backlog-api-key.js +0 -6
  10. package/dist/connectors/clickup.js +0 -6
  11. package/dist/connectors/cosmosdb.js +0 -6
  12. package/dist/connectors/customerio.js +0 -6
  13. package/dist/connectors/dbt.js +0 -6
  14. package/dist/connectors/freshdesk.js +0 -6
  15. package/dist/connectors/freshsales.js +0 -6
  16. package/dist/connectors/freshservice.js +0 -6
  17. package/dist/connectors/gamma.js +0 -6
  18. package/dist/connectors/github.js +0 -6
  19. package/dist/connectors/gmail-oauth.js +0 -6
  20. package/dist/connectors/gmail.js +0 -6
  21. package/dist/connectors/google-ads.js +0 -6
  22. package/dist/connectors/google-analytics-oauth.js +0 -6
  23. package/dist/connectors/google-analytics.js +70 -38
  24. package/dist/connectors/google-audit-log.js +0 -6
  25. package/dist/connectors/google-calendar-oauth.js +0 -6
  26. package/dist/connectors/google-calendar.js +0 -6
  27. package/dist/connectors/google-docs.js +0 -6
  28. package/dist/connectors/google-drive.js +0 -6
  29. package/dist/connectors/google-search-console-oauth.js +0 -6
  30. package/dist/connectors/google-sheets.js +0 -6
  31. package/dist/connectors/google-slides.js +0 -6
  32. package/dist/connectors/grafana.js +0 -6
  33. package/dist/connectors/hubspot-oauth.js +0 -6
  34. package/dist/connectors/hubspot.js +0 -6
  35. package/dist/connectors/influxdb.js +0 -6
  36. package/dist/connectors/intercom-oauth.js +0 -6
  37. package/dist/connectors/intercom.js +0 -6
  38. package/dist/connectors/jdbc.js +0 -6
  39. package/dist/connectors/jira-api-key.js +0 -6
  40. package/dist/connectors/kintone-api-token.js +0 -6
  41. package/dist/connectors/kintone.js +0 -6
  42. package/dist/connectors/linear.js +0 -6
  43. package/dist/connectors/linkedin-ads.js +0 -6
  44. package/dist/connectors/mailchimp-oauth.js +0 -6
  45. package/dist/connectors/mailchimp.js +0 -6
  46. package/dist/connectors/meta-ads-oauth.js +0 -6
  47. package/dist/connectors/meta-ads.js +0 -6
  48. package/dist/connectors/mixpanel.js +0 -6
  49. package/dist/connectors/monday.js +0 -6
  50. package/dist/connectors/mongodb.js +0 -6
  51. package/dist/connectors/notion-oauth.js +0 -6
  52. package/dist/connectors/notion.js +0 -6
  53. package/dist/connectors/oracle.js +0 -6
  54. package/dist/connectors/outlook-oauth.js +0 -6
  55. package/dist/connectors/powerbi-oauth.js +0 -6
  56. package/dist/connectors/salesforce.js +0 -6
  57. package/dist/connectors/semrush.js +0 -6
  58. package/dist/connectors/sentry.js +0 -6
  59. package/dist/connectors/shopify-oauth.js +0 -6
  60. package/dist/connectors/shopify.js +0 -6
  61. package/dist/connectors/sqlserver.js +0 -6
  62. package/dist/connectors/stripe-api-key.js +0 -6
  63. package/dist/connectors/stripe-oauth.js +0 -6
  64. package/dist/connectors/supabase.js +0 -6
  65. package/dist/connectors/tableau.js +0 -6
  66. package/dist/connectors/tiktok-ads.js +0 -6
  67. package/dist/connectors/wix-store.js +0 -6
  68. package/dist/connectors/zendesk-oauth.js +0 -6
  69. package/dist/connectors/zendesk.js +0 -6
  70. package/dist/index.js +57 -32
  71. package/dist/main.js +57 -32
  72. package/dist/vite-plugin.js +57 -32
  73. package/package.json +1 -1
package/dist/cli/index.js CHANGED
@@ -869,12 +869,6 @@ async function runSetupFlow(flow, params, ctx, config) {
869
869
  }
870
870
  const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
871
871
  if (step.type === "text") {
872
- if (step.fetchOptions) {
873
- const options2 = await step.fetchOptions(state, runtime);
874
- if (options2.length === 0) {
875
- continue;
876
- }
877
- }
878
872
  return {
879
873
  type: "nextQuestion",
880
874
  questionSlug: step.slug,
@@ -7672,6 +7666,15 @@ var parameters13 = {
7672
7666
  type: "base64EncodedJson",
7673
7667
  secret: true,
7674
7668
  required: true
7669
+ }),
7670
+ propertyId: new ParameterDefinition({
7671
+ slug: "property-id",
7672
+ name: "Google Analytics Property ID",
7673
+ description: "The Google Analytics 4 property ID (e.g., 123456789). Automatically set during the setup flow.",
7674
+ envVarBaseKey: "GA_PROPERTY_ID",
7675
+ type: "text",
7676
+ secret: false,
7677
+ required: false
7675
7678
  })
7676
7679
  };
7677
7680
 
@@ -7909,23 +7912,40 @@ var googleAnalyticsSetupFlow = {
7909
7912
  return [];
7910
7913
  }
7911
7914
  },
7912
- applyAnswer: (state, answer) => ({ ...state, properties: answer })
7915
+ applyAnswer: (state, answer) => ({ ...state, properties: answer }),
7916
+ toParameterUpdates: (state) => {
7917
+ const first = state.properties?.find((v) => v !== ALL_PROPERTIES);
7918
+ return first ? [{ slug: parameters13.propertyId.slug, value: first }] : [];
7919
+ }
7913
7920
  },
7914
7921
  {
7915
7922
  slug: "manualPropertyId",
7916
- type: "text",
7923
+ type: "select",
7924
+ allowFreeText: true,
7917
7925
  question: {
7918
7926
  ja: "GA4 \u30D7\u30ED\u30D1\u30C6\u30A3 ID \u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u4F8B: 123456789\uFF09\u3002GA4 \u7BA1\u7406\u753B\u9762 > \u30D7\u30ED\u30D1\u30C6\u30A3\u8A2D\u5B9A\u3067\u78BA\u8A8D\u3067\u304D\u307E\u3059\u3002",
7919
7927
  en: "Enter your GA4 Property ID (e.g., 123456789). Found in GA4 Admin > Property Settings."
7920
7928
  },
7921
- async fetchOptions(state) {
7929
+ async fetchOptions(state, rt) {
7922
7930
  if (state.properties?.length) return [];
7923
- return [{ value: "_show", label: "" }];
7931
+ const existing = rt.params[parameters13.propertyId.slug];
7932
+ return existing ? [{ value: existing, label: existing }] : [
7933
+ {
7934
+ value: "example",
7935
+ label: rt.language === "ja" ? "\u4F8B: 123456789" : "Example: 123456789"
7936
+ }
7937
+ ];
7924
7938
  },
7925
7939
  applyAnswer: (state, answer) => ({
7926
7940
  ...state,
7927
7941
  manualPropertyId: answer[0]
7928
- })
7942
+ }),
7943
+ toParameterUpdates: (state) => state.manualPropertyId ? [
7944
+ {
7945
+ slug: parameters13.propertyId.slug,
7946
+ value: state.manualPropertyId
7947
+ }
7948
+ ] : []
7929
7949
  }
7930
7950
  ],
7931
7951
  async finalize(state, rt) {
@@ -7981,7 +8001,7 @@ var googleAnalyticsSetupFlow = {
7981
8001
  }
7982
8002
  return sections.join("\n");
7983
8003
  }
7984
- const propertyId = state.manualPropertyId;
8004
+ const propertyId = state.manualPropertyId ?? rt.params[parameters13.propertyId.slug];
7985
8005
  if (propertyId) {
7986
8006
  sections.push(`### Property: ${propertyId}`, "");
7987
8007
  const { dimensions, metrics } = await getMetadata(
@@ -7992,7 +8012,7 @@ var googleAnalyticsSetupFlow = {
7992
8012
  return sections.join("\n");
7993
8013
  }
7994
8014
  sections.push(
7995
- "_Could not list GA4 accounts. Please enable the Google Analytics Admin API in your GCP project. Property ID can be specified per request at runtime._",
8015
+ "_Could not list GA4 accounts. Please enable the Google Analytics Admin API in your GCP project, or set the Property ID parameter manually._",
7996
8016
  ""
7997
8017
  );
7998
8018
  return sections.join("\n");
@@ -8006,9 +8026,8 @@ var REQUEST_TIMEOUT_MS10 = 6e4;
8006
8026
  var inputSchema20 = z20.object({
8007
8027
  toolUseIntent: z20.string().optional().describe("Brief description of what you intend to accomplish with this tool call"),
8008
8028
  connectionId: z20.string().describe("ID of the Google Analytics connection to use"),
8009
- propertyId: z20.string().describe("GA4 property ID (e.g., '123456789')"),
8010
8029
  method: z20.enum(["GET", "POST"]).describe("HTTP method"),
8011
- path: z20.string().describe("API path (e.g., 'properties/{propertyId}:runReport'). {propertyId} is replaced with the propertyId parameter."),
8030
+ path: z20.string().describe("API path (e.g., 'properties/{propertyId}:runReport'). {propertyId} is automatically replaced."),
8012
8031
  body: z20.record(z20.string(), z20.unknown()).optional().describe("POST request body (JSON)")
8013
8032
  });
8014
8033
  var outputSchema20 = z20.discriminatedUnion("success", [
@@ -8026,10 +8045,10 @@ var requestTool3 = new ConnectorTool({
8026
8045
  name: "request",
8027
8046
  description: `Send authenticated requests to the Google Analytics Data API.
8028
8047
  Authentication is handled automatically using a service account.
8029
- {propertyId} in the path is automatically replaced with the propertyId parameter.`,
8048
+ {propertyId} in the path is automatically replaced with the connection's property-id.`,
8030
8049
  inputSchema: inputSchema20,
8031
8050
  outputSchema: outputSchema20,
8032
- async execute({ connectionId, propertyId, method, path: path5, body }, connections) {
8051
+ async execute({ connectionId, method, path: path5, body }, connections) {
8033
8052
  const connection = connections.find((c) => c.id === connectionId);
8034
8053
  if (!connection) {
8035
8054
  return { success: false, error: `Connection ${connectionId} not found` };
@@ -8038,6 +8057,7 @@ Authentication is handled automatically using a service account.
8038
8057
  try {
8039
8058
  const { GoogleAuth } = await import("google-auth-library");
8040
8059
  const keyJsonBase64 = parameters13.serviceAccountKeyJsonBase64.getValue(connection);
8060
+ const propertyId = parameters13.propertyId.getValue(connection);
8041
8061
  const credentials = JSON.parse(
8042
8062
  Buffer.from(keyJsonBase64, "base64").toString("utf-8")
8043
8063
  );
@@ -8097,16 +8117,16 @@ var googleAnalyticsConnector = new ConnectorPlugin({
8097
8117
  systemPrompt: {
8098
8118
  en: `### Tools
8099
8119
 
8100
- - \`google-analytics-service-account_request\`: The only way to call the GA4 Data API. Use it to fetch metadata, run reports, or run realtime reports. Requires a \`propertyId\` parameter. See the GA4 Data API Reference below for available endpoints and request bodies.
8120
+ - \`google-analytics-service-account_request\`: The only way to call the GA4 Data API. Use it to fetch metadata, run reports, or run realtime reports. See the GA4 Data API Reference below for available endpoints and request bodies.
8101
8121
 
8102
8122
  ### Business Logic
8103
8123
 
8104
8124
  The business logic type for this connector is "typescript". Use the connector SDK in your handler. Do NOT read credentials from environment variables.
8105
8125
 
8106
8126
  SDK methods (client created via \`connection(connectionId)\`):
8107
- - \`client.runReport(propertyId, request)\` \u2014 run a GA4 report
8108
- - \`client.runRealtimeReport(propertyId, request)\` \u2014 run a realtime report
8109
- - \`client.getMetadata(propertyId)\` \u2014 fetch available dimensions/metrics
8127
+ - \`client.runReport(request)\` \u2014 run a GA4 report
8128
+ - \`client.runRealtimeReport(request)\` \u2014 run a realtime report
8129
+ - \`client.getMetadata()\` \u2014 fetch available dimensions/metrics
8110
8130
  - \`client.request(path, init?)\` \u2014 low-level authenticated fetch
8111
8131
 
8112
8132
  \`\`\`ts
@@ -8116,13 +8136,12 @@ import { connection } from "@squadbase/vite-server/connectors/google-analytics";
8116
8136
  const ga = connection("<connectionId>");
8117
8137
 
8118
8138
  export default async function handler(c: Context) {
8119
- const { propertyId, startDate = "7daysAgo", endDate = "today" } = await c.req.json<{
8120
- propertyId: string;
8139
+ const { startDate = "7daysAgo", endDate = "today" } = await c.req.json<{
8121
8140
  startDate?: string;
8122
8141
  endDate?: string;
8123
8142
  }>();
8124
8143
 
8125
- const { rows } = await ga.runReport(propertyId, {
8144
+ const { rows } = await ga.runReport({
8126
8145
  dateRanges: [{ startDate, endDate }],
8127
8146
  dimensions: [{ name: "date" }],
8128
8147
  metrics: [{ name: "activeUsers" }, { name: "sessions" }],
@@ -8166,16 +8185,16 @@ activeUsers, sessions, screenPageViews, bounceRate, averageSessionDuration, conv
8166
8185
  - Relative: \`"today"\`, \`"yesterday"\`, \`"7daysAgo"\`, \`"30daysAgo"\``,
8167
8186
  ja: `### \u30C4\u30FC\u30EB
8168
8187
 
8169
- - \`google-analytics-service-account_request\`: GA4 Data API\u3092\u547C\u3073\u51FA\u3059\u552F\u4E00\u306E\u624B\u6BB5\u3067\u3059\u3002\u30E1\u30BF\u30C7\u30FC\u30BF\u306E\u53D6\u5F97\u3001\u30EC\u30DD\u30FC\u30C8\u306E\u5B9F\u884C\u3001\u30EA\u30A2\u30EB\u30BF\u30A4\u30E0\u30EC\u30DD\u30FC\u30C8\u306E\u5B9F\u884C\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002\`propertyId\` \u30D1\u30E9\u30E1\u30FC\u30BF\u30FC\u304C\u5FC5\u8981\u3067\u3059\u3002\u5229\u7528\u53EF\u80FD\u306A\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\u3068\u30EA\u30AF\u30A8\u30B9\u30C8\u30DC\u30C7\u30A3\u306F\u4E0B\u90E8\u306E\u300CGA4 Data API \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9\u300D\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002
8188
+ - \`google-analytics-service-account_request\`: GA4 Data API\u3092\u547C\u3073\u51FA\u3059\u552F\u4E00\u306E\u624B\u6BB5\u3067\u3059\u3002\u30E1\u30BF\u30C7\u30FC\u30BF\u306E\u53D6\u5F97\u3001\u30EC\u30DD\u30FC\u30C8\u306E\u5B9F\u884C\u3001\u30EA\u30A2\u30EB\u30BF\u30A4\u30E0\u30EC\u30DD\u30FC\u30C8\u306E\u5B9F\u884C\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002\u5229\u7528\u53EF\u80FD\u306A\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\u3068\u30EA\u30AF\u30A8\u30B9\u30C8\u30DC\u30C7\u30A3\u306F\u4E0B\u90E8\u306E\u300CGA4 Data API \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9\u300D\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002
8170
8189
 
8171
8190
  ### Business Logic
8172
8191
 
8173
8192
  \u3053\u306E\u30B3\u30CD\u30AF\u30BF\u306E\u30D3\u30B8\u30CD\u30B9\u30ED\u30B8\u30C3\u30AF\u30BF\u30A4\u30D7\u306F "typescript" \u3067\u3059\u3002\u30CF\u30F3\u30C9\u30E9\u5185\u3067\u306F\u30B3\u30CD\u30AF\u30BFSDK\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u74B0\u5883\u5909\u6570\u304B\u3089\u8A8D\u8A3C\u60C5\u5831\u3092\u8AAD\u307F\u53D6\u3089\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002
8174
8193
 
8175
8194
  SDK\u30E1\u30BD\u30C3\u30C9 (\`connection(connectionId)\` \u3067\u4F5C\u6210\u3057\u305F\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8):
8176
- - \`client.runReport(propertyId, request)\` \u2014 GA4\u30EC\u30DD\u30FC\u30C8\u3092\u5B9F\u884C
8177
- - \`client.runRealtimeReport(propertyId, request)\` \u2014 \u30EA\u30A2\u30EB\u30BF\u30A4\u30E0\u30EC\u30DD\u30FC\u30C8\u3092\u5B9F\u884C
8178
- - \`client.getMetadata(propertyId)\` \u2014 \u5229\u7528\u53EF\u80FD\u306A\u30C7\u30A3\u30E1\u30F3\u30B7\u30E7\u30F3/\u30E1\u30C8\u30EA\u30AF\u30B9\u3092\u53D6\u5F97
8195
+ - \`client.runReport(request)\` \u2014 GA4\u30EC\u30DD\u30FC\u30C8\u3092\u5B9F\u884C
8196
+ - \`client.runRealtimeReport(request)\` \u2014 \u30EA\u30A2\u30EB\u30BF\u30A4\u30E0\u30EC\u30DD\u30FC\u30C8\u3092\u5B9F\u884C
8197
+ - \`client.getMetadata()\` \u2014 \u5229\u7528\u53EF\u80FD\u306A\u30C7\u30A3\u30E1\u30F3\u30B7\u30E7\u30F3/\u30E1\u30C8\u30EA\u30AF\u30B9\u3092\u53D6\u5F97
8179
8198
  - \`client.request(path, init?)\` \u2014 \u4F4E\u30EC\u30D9\u30EB\u306E\u8A8D\u8A3C\u4ED8\u304Dfetch
8180
8199
 
8181
8200
  \`\`\`ts
@@ -8185,13 +8204,12 @@ import { connection } from "@squadbase/vite-server/connectors/google-analytics";
8185
8204
  const ga = connection("<connectionId>");
8186
8205
 
8187
8206
  export default async function handler(c: Context) {
8188
- const { propertyId, startDate = "7daysAgo", endDate = "today" } = await c.req.json<{
8189
- propertyId: string;
8207
+ const { startDate = "7daysAgo", endDate = "today" } = await c.req.json<{
8190
8208
  startDate?: string;
8191
8209
  endDate?: string;
8192
8210
  }>();
8193
8211
 
8194
- const { rows } = await ga.runReport(propertyId, {
8212
+ const { rows } = await ga.runReport({
8195
8213
  dateRanges: [{ startDate, endDate }],
8196
8214
  dimensions: [{ name: "date" }],
8197
8215
  metrics: [{ name: "activeUsers" }, { name: "sessions" }],
@@ -8244,8 +8262,15 @@ activeUsers, sessions, screenPageViews, bounceRate, averageSessionDuration, conv
8244
8262
  error: "google-analytics: missing service account key"
8245
8263
  };
8246
8264
  }
8265
+ const propertyId = params[parameters13.propertyId.slug];
8266
+ if (!propertyId) {
8267
+ return { success: true };
8268
+ }
8247
8269
  try {
8248
- const res = await dataFetch(params, `/metadata`);
8270
+ const res = await dataFetch(
8271
+ params,
8272
+ `/properties/${propertyId}/metadata`
8273
+ );
8249
8274
  if (!res.ok) {
8250
8275
  const body = await res.text().catch(() => res.statusText);
8251
8276
  return {
@@ -264,12 +264,6 @@ async function runSetupFlow(flow, params, ctx, config) {
264
264
  }
265
265
  const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
266
266
  if (step.type === "text") {
267
- if (step.fetchOptions) {
268
- const options2 = await step.fetchOptions(state, runtime);
269
- if (options2.length === 0) {
270
- continue;
271
- }
272
- }
273
267
  return {
274
268
  type: "nextQuestion",
275
269
  questionSlug: step.slug,
@@ -394,12 +394,6 @@ async function runSetupFlow(flow, params, ctx, config) {
394
394
  }
395
395
  const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
396
396
  if (step.type === "text") {
397
- if (step.fetchOptions) {
398
- const options2 = await step.fetchOptions(state, runtime);
399
- if (options2.length === 0) {
400
- continue;
401
- }
402
- }
403
397
  return {
404
398
  type: "nextQuestion",
405
399
  questionSlug: step.slug,
@@ -354,12 +354,6 @@ async function runSetupFlow(flow, params, ctx, config) {
354
354
  }
355
355
  const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
356
356
  if (step.type === "text") {
357
- if (step.fetchOptions) {
358
- const options2 = await step.fetchOptions(state, runtime);
359
- if (options2.length === 0) {
360
- continue;
361
- }
362
- }
363
357
  return {
364
358
  type: "nextQuestion",
365
359
  questionSlug: step.slug,
@@ -391,12 +391,6 @@ async function runSetupFlow(flow, params, ctx, config) {
391
391
  }
392
392
  const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
393
393
  if (step.type === "text") {
394
- if (step.fetchOptions) {
395
- const options2 = await step.fetchOptions(state, runtime);
396
- if (options2.length === 0) {
397
- continue;
398
- }
399
- }
400
394
  return {
401
395
  type: "nextQuestion",
402
396
  questionSlug: step.slug,
@@ -527,12 +527,6 @@ async function runSetupFlow(flow, params, ctx, config) {
527
527
  }
528
528
  const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
529
529
  if (step.type === "text") {
530
- if (step.fetchOptions) {
531
- const options2 = await step.fetchOptions(state, runtime);
532
- if (options2.length === 0) {
533
- continue;
534
- }
535
- }
536
530
  return {
537
531
  type: "nextQuestion",
538
532
  questionSlug: step.slug,
@@ -293,12 +293,6 @@ async function runSetupFlow(flow, params, ctx, config) {
293
293
  }
294
294
  const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
295
295
  if (step.type === "text") {
296
- if (step.fetchOptions) {
297
- const options2 = await step.fetchOptions(state, runtime);
298
- if (options2.length === 0) {
299
- continue;
300
- }
301
- }
302
296
  return {
303
297
  type: "nextQuestion",
304
298
  questionSlug: step.slug,
@@ -590,12 +590,6 @@ async function runSetupFlow(flow, params, ctx, config) {
590
590
  }
591
591
  const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
592
592
  if (step.type === "text") {
593
- if (step.fetchOptions) {
594
- const options2 = await step.fetchOptions(state, runtime);
595
- if (options2.length === 0) {
596
- continue;
597
- }
598
- }
599
593
  return {
600
594
  type: "nextQuestion",
601
595
  questionSlug: step.slug,
@@ -289,12 +289,6 @@ async function runSetupFlow(flow, params, ctx, config) {
289
289
  }
290
290
  const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
291
291
  if (step.type === "text") {
292
- if (step.fetchOptions) {
293
- const options2 = await step.fetchOptions(state, runtime);
294
- if (options2.length === 0) {
295
- continue;
296
- }
297
- }
298
292
  return {
299
293
  type: "nextQuestion",
300
294
  questionSlug: step.slug,
@@ -425,12 +425,6 @@ async function runSetupFlow(flow, params, ctx, config) {
425
425
  }
426
426
  const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
427
427
  if (step.type === "text") {
428
- if (step.fetchOptions) {
429
- const options2 = await step.fetchOptions(state, runtime);
430
- if (options2.length === 0) {
431
- continue;
432
- }
433
- }
434
428
  return {
435
429
  type: "nextQuestion",
436
430
  questionSlug: step.slug,
@@ -335,12 +335,6 @@ async function runSetupFlow(flow, params, ctx, config) {
335
335
  }
336
336
  const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
337
337
  if (step.type === "text") {
338
- if (step.fetchOptions) {
339
- const options2 = await step.fetchOptions(state, runtime);
340
- if (options2.length === 0) {
341
- continue;
342
- }
343
- }
344
338
  return {
345
339
  type: "nextQuestion",
346
340
  questionSlug: step.slug,
@@ -372,12 +372,6 @@ async function runSetupFlow(flow, params, ctx, config) {
372
372
  }
373
373
  const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
374
374
  if (step.type === "text") {
375
- if (step.fetchOptions) {
376
- const options2 = await step.fetchOptions(state, runtime);
377
- if (options2.length === 0) {
378
- continue;
379
- }
380
- }
381
375
  return {
382
376
  type: "nextQuestion",
383
377
  questionSlug: step.slug,
@@ -514,12 +514,6 @@ async function runSetupFlow(flow, params, ctx, config) {
514
514
  }
515
515
  const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
516
516
  if (step.type === "text") {
517
- if (step.fetchOptions) {
518
- const options2 = await step.fetchOptions(state, runtime);
519
- if (options2.length === 0) {
520
- continue;
521
- }
522
- }
523
517
  return {
524
518
  type: "nextQuestion",
525
519
  questionSlug: step.slug,
@@ -422,12 +422,6 @@ async function runSetupFlow(flow, params, ctx, config) {
422
422
  }
423
423
  const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
424
424
  if (step.type === "text") {
425
- if (step.fetchOptions) {
426
- const options2 = await step.fetchOptions(state, runtime);
427
- if (options2.length === 0) {
428
- continue;
429
- }
430
- }
431
425
  return {
432
426
  type: "nextQuestion",
433
427
  questionSlug: step.slug,
@@ -437,12 +437,6 @@ async function runSetupFlow(flow, params, ctx, config) {
437
437
  }
438
438
  const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
439
439
  if (step.type === "text") {
440
- if (step.fetchOptions) {
441
- const options2 = await step.fetchOptions(state, runtime);
442
- if (options2.length === 0) {
443
- continue;
444
- }
445
- }
446
440
  return {
447
441
  type: "nextQuestion",
448
442
  questionSlug: step.slug,
@@ -392,12 +392,6 @@ async function runSetupFlow(flow, params, ctx, config) {
392
392
  }
393
393
  const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
394
394
  if (step.type === "text") {
395
- if (step.fetchOptions) {
396
- const options2 = await step.fetchOptions(state, runtime);
397
- if (options2.length === 0) {
398
- continue;
399
- }
400
- }
401
395
  return {
402
396
  type: "nextQuestion",
403
397
  questionSlug: step.slug,
@@ -348,12 +348,6 @@ async function runSetupFlow(flow, params, ctx, config) {
348
348
  }
349
349
  const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
350
350
  if (step.type === "text") {
351
- if (step.fetchOptions) {
352
- const options2 = await step.fetchOptions(state, runtime);
353
- if (options2.length === 0) {
354
- continue;
355
- }
356
- }
357
351
  return {
358
352
  type: "nextQuestion",
359
353
  questionSlug: step.slug,
@@ -481,12 +481,6 @@ async function runSetupFlow(flow, params, ctx, config) {
481
481
  }
482
482
  const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
483
483
  if (step.type === "text") {
484
- if (step.fetchOptions) {
485
- const options2 = await step.fetchOptions(state, runtime);
486
- if (options2.length === 0) {
487
- continue;
488
- }
489
- }
490
484
  return {
491
485
  type: "nextQuestion",
492
486
  questionSlug: step.slug,
@@ -291,12 +291,6 @@ async function runSetupFlow(flow, params, ctx, config) {
291
291
  }
292
292
  const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
293
293
  if (step.type === "text") {
294
- if (step.fetchOptions) {
295
- const options2 = await step.fetchOptions(state, runtime);
296
- if (options2.length === 0) {
297
- continue;
298
- }
299
- }
300
294
  return {
301
295
  type: "nextQuestion",
302
296
  questionSlug: step.slug,
@@ -303,12 +303,6 @@ async function runSetupFlow(flow, params, ctx, config) {
303
303
  }
304
304
  const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
305
305
  if (step.type === "text") {
306
- if (step.fetchOptions) {
307
- const options2 = await step.fetchOptions(state, runtime);
308
- if (options2.length === 0) {
309
- continue;
310
- }
311
- }
312
306
  return {
313
307
  type: "nextQuestion",
314
308
  questionSlug: step.slug,
@@ -351,12 +351,6 @@ async function runSetupFlow(flow, params, ctx, config) {
351
351
  }
352
352
  const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
353
353
  if (step.type === "text") {
354
- if (step.fetchOptions) {
355
- const options2 = await step.fetchOptions(state, runtime);
356
- if (options2.length === 0) {
357
- continue;
358
- }
359
- }
360
354
  return {
361
355
  type: "nextQuestion",
362
356
  questionSlug: step.slug,
@@ -332,12 +332,6 @@ async function runSetupFlow(flow, params, ctx, config) {
332
332
  }
333
333
  const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
334
334
  if (step.type === "text") {
335
- if (step.fetchOptions) {
336
- const options2 = await step.fetchOptions(state, runtime);
337
- if (options2.length === 0) {
338
- continue;
339
- }
340
- }
341
335
  return {
342
336
  type: "nextQuestion",
343
337
  questionSlug: step.slug,