@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.
- package/dist/cli/index.js +57 -32
- package/dist/connectors/airtable-oauth.js +0 -6
- package/dist/connectors/airtable.js +0 -6
- package/dist/connectors/amplitude.js +0 -6
- package/dist/connectors/asana.js +0 -6
- package/dist/connectors/attio.js +0 -6
- package/dist/connectors/aws-billing.js +0 -6
- package/dist/connectors/azure-sql.js +0 -6
- package/dist/connectors/backlog-api-key.js +0 -6
- package/dist/connectors/clickup.js +0 -6
- package/dist/connectors/cosmosdb.js +0 -6
- package/dist/connectors/customerio.js +0 -6
- package/dist/connectors/dbt.js +0 -6
- package/dist/connectors/freshdesk.js +0 -6
- package/dist/connectors/freshsales.js +0 -6
- package/dist/connectors/freshservice.js +0 -6
- package/dist/connectors/gamma.js +0 -6
- package/dist/connectors/github.js +0 -6
- package/dist/connectors/gmail-oauth.js +0 -6
- package/dist/connectors/gmail.js +0 -6
- package/dist/connectors/google-ads.js +0 -6
- package/dist/connectors/google-analytics-oauth.js +0 -6
- package/dist/connectors/google-analytics.js +70 -38
- package/dist/connectors/google-audit-log.js +0 -6
- package/dist/connectors/google-calendar-oauth.js +0 -6
- package/dist/connectors/google-calendar.js +0 -6
- package/dist/connectors/google-docs.js +0 -6
- package/dist/connectors/google-drive.js +0 -6
- package/dist/connectors/google-search-console-oauth.js +0 -6
- package/dist/connectors/google-sheets.js +0 -6
- package/dist/connectors/google-slides.js +0 -6
- package/dist/connectors/grafana.js +0 -6
- package/dist/connectors/hubspot-oauth.js +0 -6
- package/dist/connectors/hubspot.js +0 -6
- package/dist/connectors/influxdb.js +0 -6
- package/dist/connectors/intercom-oauth.js +0 -6
- package/dist/connectors/intercom.js +0 -6
- package/dist/connectors/jdbc.js +0 -6
- package/dist/connectors/jira-api-key.js +0 -6
- package/dist/connectors/kintone-api-token.js +0 -6
- package/dist/connectors/kintone.js +0 -6
- package/dist/connectors/linear.js +0 -6
- package/dist/connectors/linkedin-ads.js +0 -6
- package/dist/connectors/mailchimp-oauth.js +0 -6
- package/dist/connectors/mailchimp.js +0 -6
- package/dist/connectors/meta-ads-oauth.js +0 -6
- package/dist/connectors/meta-ads.js +0 -6
- package/dist/connectors/mixpanel.js +0 -6
- package/dist/connectors/monday.js +0 -6
- package/dist/connectors/mongodb.js +0 -6
- package/dist/connectors/notion-oauth.js +0 -6
- package/dist/connectors/notion.js +0 -6
- package/dist/connectors/oracle.js +0 -6
- package/dist/connectors/outlook-oauth.js +0 -6
- package/dist/connectors/powerbi-oauth.js +0 -6
- package/dist/connectors/salesforce.js +0 -6
- package/dist/connectors/semrush.js +0 -6
- package/dist/connectors/sentry.js +0 -6
- package/dist/connectors/shopify-oauth.js +0 -6
- package/dist/connectors/shopify.js +0 -6
- package/dist/connectors/sqlserver.js +0 -6
- package/dist/connectors/stripe-api-key.js +0 -6
- package/dist/connectors/stripe-oauth.js +0 -6
- package/dist/connectors/supabase.js +0 -6
- package/dist/connectors/tableau.js +0 -6
- package/dist/connectors/tiktok-ads.js +0 -6
- package/dist/connectors/wix-store.js +0 -6
- package/dist/connectors/zendesk-oauth.js +0 -6
- package/dist/connectors/zendesk.js +0 -6
- package/dist/index.js +57 -32
- package/dist/main.js +57 -32
- package/dist/vite-plugin.js +57 -32
- package/package.json +1 -1
|
@@ -361,12 +361,6 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
361
361
|
}
|
|
362
362
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
363
363
|
if (step.type === "text") {
|
|
364
|
-
if (step.fetchOptions) {
|
|
365
|
-
const options2 = await step.fetchOptions(state, runtime);
|
|
366
|
-
if (options2.length === 0) {
|
|
367
|
-
continue;
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
364
|
return {
|
|
371
365
|
type: "nextQuestion",
|
|
372
366
|
questionSlug: step.slug,
|
|
@@ -624,12 +624,6 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
624
624
|
}
|
|
625
625
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
626
626
|
if (step.type === "text") {
|
|
627
|
-
if (step.fetchOptions) {
|
|
628
|
-
const options2 = await step.fetchOptions(state, runtime);
|
|
629
|
-
if (options2.length === 0) {
|
|
630
|
-
continue;
|
|
631
|
-
}
|
|
632
|
-
}
|
|
633
627
|
return {
|
|
634
628
|
type: "nextQuestion",
|
|
635
629
|
questionSlug: step.slug,
|
|
@@ -311,12 +311,6 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
311
311
|
}
|
|
312
312
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
313
313
|
if (step.type === "text") {
|
|
314
|
-
if (step.fetchOptions) {
|
|
315
|
-
const options2 = await step.fetchOptions(state, runtime);
|
|
316
|
-
if (options2.length === 0) {
|
|
317
|
-
continue;
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
314
|
return {
|
|
321
315
|
type: "nextQuestion",
|
|
322
316
|
questionSlug: step.slug,
|
|
@@ -269,12 +269,6 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
269
269
|
}
|
|
270
270
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
271
271
|
if (step.type === "text") {
|
|
272
|
-
if (step.fetchOptions) {
|
|
273
|
-
const options2 = await step.fetchOptions(state, runtime);
|
|
274
|
-
if (options2.length === 0) {
|
|
275
|
-
continue;
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
272
|
return {
|
|
279
273
|
type: "nextQuestion",
|
|
280
274
|
questionSlug: step.slug,
|
|
@@ -410,12 +410,6 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
410
410
|
}
|
|
411
411
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
412
412
|
if (step.type === "text") {
|
|
413
|
-
if (step.fetchOptions) {
|
|
414
|
-
const options2 = await step.fetchOptions(state, runtime);
|
|
415
|
-
if (options2.length === 0) {
|
|
416
|
-
continue;
|
|
417
|
-
}
|
|
418
|
-
}
|
|
419
413
|
return {
|
|
420
414
|
type: "nextQuestion",
|
|
421
415
|
questionSlug: step.slug,
|
|
@@ -374,12 +374,6 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
374
374
|
}
|
|
375
375
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
376
376
|
if (step.type === "text") {
|
|
377
|
-
if (step.fetchOptions) {
|
|
378
|
-
const options2 = await step.fetchOptions(state, runtime);
|
|
379
|
-
if (options2.length === 0) {
|
|
380
|
-
continue;
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
377
|
return {
|
|
384
378
|
type: "nextQuestion",
|
|
385
379
|
questionSlug: step.slug,
|
|
@@ -365,12 +365,6 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
365
365
|
}
|
|
366
366
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
367
367
|
if (step.type === "text") {
|
|
368
|
-
if (step.fetchOptions) {
|
|
369
|
-
const options2 = await step.fetchOptions(state, runtime);
|
|
370
|
-
if (options2.length === 0) {
|
|
371
|
-
continue;
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
368
|
return {
|
|
375
369
|
type: "nextQuestion",
|
|
376
370
|
questionSlug: step.slug,
|
|
@@ -191,12 +191,6 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
191
191
|
}
|
|
192
192
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
193
193
|
if (step.type === "text") {
|
|
194
|
-
if (step.fetchOptions) {
|
|
195
|
-
const options2 = await step.fetchOptions(state, runtime);
|
|
196
|
-
if (options2.length === 0) {
|
|
197
|
-
continue;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
194
|
return {
|
|
201
195
|
type: "nextQuestion",
|
|
202
196
|
questionSlug: step.slug,
|
|
@@ -478,12 +478,6 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
478
478
|
}
|
|
479
479
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
480
480
|
if (step.type === "text") {
|
|
481
|
-
if (step.fetchOptions) {
|
|
482
|
-
const options2 = await step.fetchOptions(state, runtime);
|
|
483
|
-
if (options2.length === 0) {
|
|
484
|
-
continue;
|
|
485
|
-
}
|
|
486
|
-
}
|
|
487
481
|
return {
|
|
488
482
|
type: "nextQuestion",
|
|
489
483
|
questionSlug: step.slug,
|
|
@@ -589,12 +589,6 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
589
589
|
}
|
|
590
590
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
591
591
|
if (step.type === "text") {
|
|
592
|
-
if (step.fetchOptions) {
|
|
593
|
-
const options2 = await step.fetchOptions(state, runtime);
|
|
594
|
-
if (options2.length === 0) {
|
|
595
|
-
continue;
|
|
596
|
-
}
|
|
597
|
-
}
|
|
598
592
|
return {
|
|
599
593
|
type: "nextQuestion",
|
|
600
594
|
questionSlug: step.slug,
|
|
@@ -271,12 +271,6 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
271
271
|
}
|
|
272
272
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
273
273
|
if (step.type === "text") {
|
|
274
|
-
if (step.fetchOptions) {
|
|
275
|
-
const options2 = await step.fetchOptions(state, runtime);
|
|
276
|
-
if (options2.length === 0) {
|
|
277
|
-
continue;
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
274
|
return {
|
|
281
275
|
type: "nextQuestion",
|
|
282
276
|
questionSlug: step.slug,
|
|
@@ -193,12 +193,6 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
193
193
|
}
|
|
194
194
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
195
195
|
if (step.type === "text") {
|
|
196
|
-
if (step.fetchOptions) {
|
|
197
|
-
const options2 = await step.fetchOptions(state, runtime);
|
|
198
|
-
if (options2.length === 0) {
|
|
199
|
-
continue;
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
196
|
return {
|
|
203
197
|
type: "nextQuestion",
|
|
204
198
|
questionSlug: step.slug,
|
|
@@ -285,12 +285,6 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
285
285
|
}
|
|
286
286
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
287
287
|
if (step.type === "text") {
|
|
288
|
-
if (step.fetchOptions) {
|
|
289
|
-
const options2 = await step.fetchOptions(state, runtime);
|
|
290
|
-
if (options2.length === 0) {
|
|
291
|
-
continue;
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
288
|
return {
|
|
295
289
|
type: "nextQuestion",
|
|
296
290
|
questionSlug: step.slug,
|
|
@@ -382,12 +382,6 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
382
382
|
}
|
|
383
383
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
384
384
|
if (step.type === "text") {
|
|
385
|
-
if (step.fetchOptions) {
|
|
386
|
-
const options2 = await step.fetchOptions(state, runtime);
|
|
387
|
-
if (options2.length === 0) {
|
|
388
|
-
continue;
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
385
|
return {
|
|
392
386
|
type: "nextQuestion",
|
|
393
387
|
questionSlug: step.slug,
|
|
@@ -248,12 +248,6 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
248
248
|
}
|
|
249
249
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
250
250
|
if (step.type === "text") {
|
|
251
|
-
if (step.fetchOptions) {
|
|
252
|
-
const options2 = await step.fetchOptions(state, runtime);
|
|
253
|
-
if (options2.length === 0) {
|
|
254
|
-
continue;
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
251
|
return {
|
|
258
252
|
type: "nextQuestion",
|
|
259
253
|
questionSlug: step.slug,
|
|
@@ -396,12 +396,6 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
396
396
|
}
|
|
397
397
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
398
398
|
if (step.type === "text") {
|
|
399
|
-
if (step.fetchOptions) {
|
|
400
|
-
const options2 = await step.fetchOptions(state, runtime);
|
|
401
|
-
if (options2.length === 0) {
|
|
402
|
-
continue;
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
399
|
return {
|
|
406
400
|
type: "nextQuestion",
|
|
407
401
|
questionSlug: step.slug,
|
|
@@ -191,12 +191,6 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
191
191
|
}
|
|
192
192
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
193
193
|
if (step.type === "text") {
|
|
194
|
-
if (step.fetchOptions) {
|
|
195
|
-
const options2 = await step.fetchOptions(state, runtime);
|
|
196
|
-
if (options2.length === 0) {
|
|
197
|
-
continue;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
194
|
return {
|
|
201
195
|
type: "nextQuestion",
|
|
202
196
|
questionSlug: step.slug,
|
|
@@ -378,12 +378,6 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
378
378
|
}
|
|
379
379
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
380
380
|
if (step.type === "text") {
|
|
381
|
-
if (step.fetchOptions) {
|
|
382
|
-
const options2 = await step.fetchOptions(state, runtime);
|
|
383
|
-
if (options2.length === 0) {
|
|
384
|
-
continue;
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
381
|
return {
|
|
388
382
|
type: "nextQuestion",
|
|
389
383
|
questionSlug: step.slug,
|
package/dist/index.js
CHANGED
|
@@ -804,12 +804,6 @@ async function runSetupFlow(flow, params, ctx, config) {
|
|
|
804
804
|
}
|
|
805
805
|
const resolvedAllowFreeText = step.allowFreeText !== void 0 ? step.allowFreeText : true;
|
|
806
806
|
if (step.type === "text") {
|
|
807
|
-
if (step.fetchOptions) {
|
|
808
|
-
const options2 = await step.fetchOptions(state, runtime);
|
|
809
|
-
if (options2.length === 0) {
|
|
810
|
-
continue;
|
|
811
|
-
}
|
|
812
|
-
}
|
|
813
807
|
return {
|
|
814
808
|
type: "nextQuestion",
|
|
815
809
|
questionSlug: step.slug,
|
|
@@ -7607,6 +7601,15 @@ var parameters13 = {
|
|
|
7607
7601
|
type: "base64EncodedJson",
|
|
7608
7602
|
secret: true,
|
|
7609
7603
|
required: true
|
|
7604
|
+
}),
|
|
7605
|
+
propertyId: new ParameterDefinition({
|
|
7606
|
+
slug: "property-id",
|
|
7607
|
+
name: "Google Analytics Property ID",
|
|
7608
|
+
description: "The Google Analytics 4 property ID (e.g., 123456789). Automatically set during the setup flow.",
|
|
7609
|
+
envVarBaseKey: "GA_PROPERTY_ID",
|
|
7610
|
+
type: "text",
|
|
7611
|
+
secret: false,
|
|
7612
|
+
required: false
|
|
7610
7613
|
})
|
|
7611
7614
|
};
|
|
7612
7615
|
|
|
@@ -7844,23 +7847,40 @@ var googleAnalyticsSetupFlow = {
|
|
|
7844
7847
|
return [];
|
|
7845
7848
|
}
|
|
7846
7849
|
},
|
|
7847
|
-
applyAnswer: (state, answer) => ({ ...state, properties: answer })
|
|
7850
|
+
applyAnswer: (state, answer) => ({ ...state, properties: answer }),
|
|
7851
|
+
toParameterUpdates: (state) => {
|
|
7852
|
+
const first = state.properties?.find((v) => v !== ALL_PROPERTIES);
|
|
7853
|
+
return first ? [{ slug: parameters13.propertyId.slug, value: first }] : [];
|
|
7854
|
+
}
|
|
7848
7855
|
},
|
|
7849
7856
|
{
|
|
7850
7857
|
slug: "manualPropertyId",
|
|
7851
|
-
type: "
|
|
7858
|
+
type: "select",
|
|
7859
|
+
allowFreeText: true,
|
|
7852
7860
|
question: {
|
|
7853
7861
|
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",
|
|
7854
7862
|
en: "Enter your GA4 Property ID (e.g., 123456789). Found in GA4 Admin > Property Settings."
|
|
7855
7863
|
},
|
|
7856
|
-
async fetchOptions(state) {
|
|
7864
|
+
async fetchOptions(state, rt) {
|
|
7857
7865
|
if (state.properties?.length) return [];
|
|
7858
|
-
|
|
7866
|
+
const existing = rt.params[parameters13.propertyId.slug];
|
|
7867
|
+
return existing ? [{ value: existing, label: existing }] : [
|
|
7868
|
+
{
|
|
7869
|
+
value: "example",
|
|
7870
|
+
label: rt.language === "ja" ? "\u4F8B: 123456789" : "Example: 123456789"
|
|
7871
|
+
}
|
|
7872
|
+
];
|
|
7859
7873
|
},
|
|
7860
7874
|
applyAnswer: (state, answer) => ({
|
|
7861
7875
|
...state,
|
|
7862
7876
|
manualPropertyId: answer[0]
|
|
7863
|
-
})
|
|
7877
|
+
}),
|
|
7878
|
+
toParameterUpdates: (state) => state.manualPropertyId ? [
|
|
7879
|
+
{
|
|
7880
|
+
slug: parameters13.propertyId.slug,
|
|
7881
|
+
value: state.manualPropertyId
|
|
7882
|
+
}
|
|
7883
|
+
] : []
|
|
7864
7884
|
}
|
|
7865
7885
|
],
|
|
7866
7886
|
async finalize(state, rt) {
|
|
@@ -7916,7 +7936,7 @@ var googleAnalyticsSetupFlow = {
|
|
|
7916
7936
|
}
|
|
7917
7937
|
return sections.join("\n");
|
|
7918
7938
|
}
|
|
7919
|
-
const propertyId = state.manualPropertyId;
|
|
7939
|
+
const propertyId = state.manualPropertyId ?? rt.params[parameters13.propertyId.slug];
|
|
7920
7940
|
if (propertyId) {
|
|
7921
7941
|
sections.push(`### Property: ${propertyId}`, "");
|
|
7922
7942
|
const { dimensions, metrics } = await getMetadata(
|
|
@@ -7927,7 +7947,7 @@ var googleAnalyticsSetupFlow = {
|
|
|
7927
7947
|
return sections.join("\n");
|
|
7928
7948
|
}
|
|
7929
7949
|
sections.push(
|
|
7930
|
-
"_Could not list GA4 accounts. Please enable the Google Analytics Admin API in your GCP project
|
|
7950
|
+
"_Could not list GA4 accounts. Please enable the Google Analytics Admin API in your GCP project, or set the Property ID parameter manually._",
|
|
7931
7951
|
""
|
|
7932
7952
|
);
|
|
7933
7953
|
return sections.join("\n");
|
|
@@ -7941,9 +7961,8 @@ var REQUEST_TIMEOUT_MS10 = 6e4;
|
|
|
7941
7961
|
var inputSchema20 = z20.object({
|
|
7942
7962
|
toolUseIntent: z20.string().optional().describe("Brief description of what you intend to accomplish with this tool call"),
|
|
7943
7963
|
connectionId: z20.string().describe("ID of the Google Analytics connection to use"),
|
|
7944
|
-
propertyId: z20.string().describe("GA4 property ID (e.g., '123456789')"),
|
|
7945
7964
|
method: z20.enum(["GET", "POST"]).describe("HTTP method"),
|
|
7946
|
-
path: z20.string().describe("API path (e.g., 'properties/{propertyId}:runReport'). {propertyId} is replaced
|
|
7965
|
+
path: z20.string().describe("API path (e.g., 'properties/{propertyId}:runReport'). {propertyId} is automatically replaced."),
|
|
7947
7966
|
body: z20.record(z20.string(), z20.unknown()).optional().describe("POST request body (JSON)")
|
|
7948
7967
|
});
|
|
7949
7968
|
var outputSchema20 = z20.discriminatedUnion("success", [
|
|
@@ -7961,10 +7980,10 @@ var requestTool3 = new ConnectorTool({
|
|
|
7961
7980
|
name: "request",
|
|
7962
7981
|
description: `Send authenticated requests to the Google Analytics Data API.
|
|
7963
7982
|
Authentication is handled automatically using a service account.
|
|
7964
|
-
{propertyId} in the path is automatically replaced with the
|
|
7983
|
+
{propertyId} in the path is automatically replaced with the connection's property-id.`,
|
|
7965
7984
|
inputSchema: inputSchema20,
|
|
7966
7985
|
outputSchema: outputSchema20,
|
|
7967
|
-
async execute({ connectionId,
|
|
7986
|
+
async execute({ connectionId, method, path: path5, body }, connections) {
|
|
7968
7987
|
const connection2 = connections.find((c) => c.id === connectionId);
|
|
7969
7988
|
if (!connection2) {
|
|
7970
7989
|
return { success: false, error: `Connection ${connectionId} not found` };
|
|
@@ -7973,6 +7992,7 @@ Authentication is handled automatically using a service account.
|
|
|
7973
7992
|
try {
|
|
7974
7993
|
const { GoogleAuth } = await import("google-auth-library");
|
|
7975
7994
|
const keyJsonBase64 = parameters13.serviceAccountKeyJsonBase64.getValue(connection2);
|
|
7995
|
+
const propertyId = parameters13.propertyId.getValue(connection2);
|
|
7976
7996
|
const credentials = JSON.parse(
|
|
7977
7997
|
Buffer.from(keyJsonBase64, "base64").toString("utf-8")
|
|
7978
7998
|
);
|
|
@@ -8032,16 +8052,16 @@ var googleAnalyticsConnector = new ConnectorPlugin({
|
|
|
8032
8052
|
systemPrompt: {
|
|
8033
8053
|
en: `### Tools
|
|
8034
8054
|
|
|
8035
|
-
- \`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.
|
|
8055
|
+
- \`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.
|
|
8036
8056
|
|
|
8037
8057
|
### Business Logic
|
|
8038
8058
|
|
|
8039
8059
|
The business logic type for this connector is "typescript". Use the connector SDK in your handler. Do NOT read credentials from environment variables.
|
|
8040
8060
|
|
|
8041
8061
|
SDK methods (client created via \`connection(connectionId)\`):
|
|
8042
|
-
- \`client.runReport(
|
|
8043
|
-
- \`client.runRealtimeReport(
|
|
8044
|
-
- \`client.getMetadata(
|
|
8062
|
+
- \`client.runReport(request)\` \u2014 run a GA4 report
|
|
8063
|
+
- \`client.runRealtimeReport(request)\` \u2014 run a realtime report
|
|
8064
|
+
- \`client.getMetadata()\` \u2014 fetch available dimensions/metrics
|
|
8045
8065
|
- \`client.request(path, init?)\` \u2014 low-level authenticated fetch
|
|
8046
8066
|
|
|
8047
8067
|
\`\`\`ts
|
|
@@ -8051,13 +8071,12 @@ import { connection } from "@squadbase/vite-server/connectors/google-analytics";
|
|
|
8051
8071
|
const ga = connection("<connectionId>");
|
|
8052
8072
|
|
|
8053
8073
|
export default async function handler(c: Context) {
|
|
8054
|
-
const {
|
|
8055
|
-
propertyId: string;
|
|
8074
|
+
const { startDate = "7daysAgo", endDate = "today" } = await c.req.json<{
|
|
8056
8075
|
startDate?: string;
|
|
8057
8076
|
endDate?: string;
|
|
8058
8077
|
}>();
|
|
8059
8078
|
|
|
8060
|
-
const { rows } = await ga.runReport(
|
|
8079
|
+
const { rows } = await ga.runReport({
|
|
8061
8080
|
dateRanges: [{ startDate, endDate }],
|
|
8062
8081
|
dimensions: [{ name: "date" }],
|
|
8063
8082
|
metrics: [{ name: "activeUsers" }, { name: "sessions" }],
|
|
@@ -8101,16 +8120,16 @@ activeUsers, sessions, screenPageViews, bounceRate, averageSessionDuration, conv
|
|
|
8101
8120
|
- Relative: \`"today"\`, \`"yesterday"\`, \`"7daysAgo"\`, \`"30daysAgo"\``,
|
|
8102
8121
|
ja: `### \u30C4\u30FC\u30EB
|
|
8103
8122
|
|
|
8104
|
-
- \`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
|
|
8123
|
+
- \`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
|
|
8105
8124
|
|
|
8106
8125
|
### Business Logic
|
|
8107
8126
|
|
|
8108
8127
|
\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
|
|
8109
8128
|
|
|
8110
8129
|
SDK\u30E1\u30BD\u30C3\u30C9 (\`connection(connectionId)\` \u3067\u4F5C\u6210\u3057\u305F\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8):
|
|
8111
|
-
- \`client.runReport(
|
|
8112
|
-
- \`client.runRealtimeReport(
|
|
8113
|
-
- \`client.getMetadata(
|
|
8130
|
+
- \`client.runReport(request)\` \u2014 GA4\u30EC\u30DD\u30FC\u30C8\u3092\u5B9F\u884C
|
|
8131
|
+
- \`client.runRealtimeReport(request)\` \u2014 \u30EA\u30A2\u30EB\u30BF\u30A4\u30E0\u30EC\u30DD\u30FC\u30C8\u3092\u5B9F\u884C
|
|
8132
|
+
- \`client.getMetadata()\` \u2014 \u5229\u7528\u53EF\u80FD\u306A\u30C7\u30A3\u30E1\u30F3\u30B7\u30E7\u30F3/\u30E1\u30C8\u30EA\u30AF\u30B9\u3092\u53D6\u5F97
|
|
8114
8133
|
- \`client.request(path, init?)\` \u2014 \u4F4E\u30EC\u30D9\u30EB\u306E\u8A8D\u8A3C\u4ED8\u304Dfetch
|
|
8115
8134
|
|
|
8116
8135
|
\`\`\`ts
|
|
@@ -8120,13 +8139,12 @@ import { connection } from "@squadbase/vite-server/connectors/google-analytics";
|
|
|
8120
8139
|
const ga = connection("<connectionId>");
|
|
8121
8140
|
|
|
8122
8141
|
export default async function handler(c: Context) {
|
|
8123
|
-
const {
|
|
8124
|
-
propertyId: string;
|
|
8142
|
+
const { startDate = "7daysAgo", endDate = "today" } = await c.req.json<{
|
|
8125
8143
|
startDate?: string;
|
|
8126
8144
|
endDate?: string;
|
|
8127
8145
|
}>();
|
|
8128
8146
|
|
|
8129
|
-
const { rows } = await ga.runReport(
|
|
8147
|
+
const { rows } = await ga.runReport({
|
|
8130
8148
|
dateRanges: [{ startDate, endDate }],
|
|
8131
8149
|
dimensions: [{ name: "date" }],
|
|
8132
8150
|
metrics: [{ name: "activeUsers" }, { name: "sessions" }],
|
|
@@ -8179,8 +8197,15 @@ activeUsers, sessions, screenPageViews, bounceRate, averageSessionDuration, conv
|
|
|
8179
8197
|
error: "google-analytics: missing service account key"
|
|
8180
8198
|
};
|
|
8181
8199
|
}
|
|
8200
|
+
const propertyId = params[parameters13.propertyId.slug];
|
|
8201
|
+
if (!propertyId) {
|
|
8202
|
+
return { success: true };
|
|
8203
|
+
}
|
|
8182
8204
|
try {
|
|
8183
|
-
const res = await dataFetch(
|
|
8205
|
+
const res = await dataFetch(
|
|
8206
|
+
params,
|
|
8207
|
+
`/properties/${propertyId}/metadata`
|
|
8208
|
+
);
|
|
8184
8209
|
if (!res.ok) {
|
|
8185
8210
|
const body = await res.text().catch(() => res.statusText);
|
|
8186
8211
|
return {
|