@squadbase/vite-server 0.1.17-dev.a9ddcfa → 0.1.17
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 +3281 -731
- package/dist/connectors/airtable-oauth.js +48 -8
- package/dist/connectors/airtable.js +44 -8
- package/dist/connectors/amplitude.js +8 -8
- package/dist/connectors/anthropic.js +2 -2
- package/dist/connectors/asana.js +37 -10
- package/dist/connectors/attio.js +30 -13
- package/dist/connectors/aws-billing.js +8 -8
- package/dist/connectors/azure-sql.js +31 -7
- package/dist/connectors/backlog-api-key.js +40 -15
- package/dist/connectors/clickup.js +50 -10
- package/dist/connectors/cosmosdb.js +12 -12
- package/dist/connectors/customerio.js +8 -8
- package/dist/connectors/dbt.js +686 -25
- package/dist/connectors/freshdesk.js +82 -8
- package/dist/connectors/freshsales.js +8 -8
- package/dist/connectors/freshservice.js +8 -8
- package/dist/connectors/gamma.js +15 -15
- package/dist/connectors/gemini.js +2 -2
- package/dist/connectors/github.js +12 -12
- package/dist/connectors/gmail-oauth.js +10 -10
- package/dist/connectors/gmail.js +4 -4
- package/dist/connectors/google-ads.js +8 -8
- package/dist/connectors/google-analytics-oauth.js +152 -25
- package/dist/connectors/google-analytics.js +490 -96
- package/dist/connectors/google-audit-log.js +4 -4
- package/dist/connectors/google-calendar-oauth.js +61 -15
- package/dist/connectors/google-calendar.js +61 -11
- package/dist/connectors/google-docs.js +10 -10
- package/dist/connectors/google-drive.js +32 -10
- package/dist/connectors/google-search-console-oauth.js +126 -17
- package/dist/connectors/google-sheets.js +6 -6
- package/dist/connectors/google-slides.js +10 -10
- package/dist/connectors/grafana.js +45 -10
- package/dist/connectors/hubspot-oauth.js +41 -9
- package/dist/connectors/hubspot.js +25 -9
- package/dist/connectors/influxdb.js +8 -8
- package/dist/connectors/intercom-oauth.js +72 -12
- package/dist/connectors/intercom.js +12 -12
- package/dist/connectors/jdbc.js +6 -6
- package/dist/connectors/jira-api-key.js +68 -11
- package/dist/connectors/kintone-api-token.js +66 -18
- package/dist/connectors/kintone.js +54 -11
- package/dist/connectors/linear.js +54 -12
- package/dist/connectors/linkedin-ads.js +41 -14
- package/dist/connectors/mailchimp-oauth.js +6 -6
- package/dist/connectors/mailchimp.js +6 -6
- package/dist/connectors/meta-ads-oauth.js +33 -14
- package/dist/connectors/meta-ads.js +35 -14
- package/dist/connectors/mixpanel.js +8 -8
- package/dist/connectors/monday.js +9 -9
- package/dist/connectors/mongodb.js +8 -8
- package/dist/connectors/notion-oauth.js +60 -11
- package/dist/connectors/notion.js +60 -11
- package/dist/connectors/openai.js +2 -2
- package/dist/connectors/oracle.js +23 -7
- package/dist/connectors/outlook-oauth.js +20 -20
- package/dist/connectors/powerbi-oauth.js +12 -12
- package/dist/connectors/salesforce.js +42 -9
- package/dist/connectors/semrush.js +6 -6
- package/dist/connectors/sentry.js +36 -10
- package/dist/connectors/shopify-oauth.js +43 -10
- package/dist/connectors/shopify.js +8 -8
- package/dist/connectors/sqlserver.js +31 -7
- package/dist/connectors/stripe-api-key.js +66 -15
- package/dist/connectors/stripe-oauth.js +70 -19
- package/dist/connectors/supabase.js +22 -5
- package/dist/connectors/tableau.js +14 -14
- package/dist/connectors/tiktok-ads.js +37 -16
- package/dist/connectors/wix-store.js +8 -8
- package/dist/connectors/zendesk-oauth.js +55 -12
- package/dist/connectors/zendesk.js +12 -12
- package/dist/index.js +3299 -729
- package/dist/main.js +3299 -729
- package/dist/vite-plugin.js +3279 -729
- package/package.json +1 -1
|
@@ -212,7 +212,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
|
|
|
212
212
|
/**
|
|
213
213
|
* Create tools for connections that belong to this connector.
|
|
214
214
|
* Filters connections by connectorKey internally.
|
|
215
|
-
* Returns tools keyed as
|
|
215
|
+
* Returns tools keyed as `connector_${connectorKey}_${toolName}`.
|
|
216
216
|
*/
|
|
217
217
|
createTools(connections, config, opts) {
|
|
218
218
|
const myConnections = connections.filter(
|
|
@@ -222,7 +222,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
|
|
|
222
222
|
for (const t of Object.values(this.tools)) {
|
|
223
223
|
const tool = t.createTool(myConnections, config);
|
|
224
224
|
const originalToModelOutput = tool.toModelOutput;
|
|
225
|
-
result[
|
|
225
|
+
result[`connector_${this.connectorKey}_${t.name}`] = {
|
|
226
226
|
...tool,
|
|
227
227
|
toModelOutput: async (options) => {
|
|
228
228
|
if (!originalToModelOutput) {
|
|
@@ -352,14 +352,14 @@ var AUTH_TYPES = {
|
|
|
352
352
|
// ../connectors/src/connectors/backlog/setup.ts
|
|
353
353
|
var backlogOnboarding = new ConnectorOnboarding({
|
|
354
354
|
dataOverviewInstructions: {
|
|
355
|
-
en: `1. Call
|
|
356
|
-
2. Call
|
|
357
|
-
3. For key projects, call
|
|
358
|
-
4. Call
|
|
359
|
-
ja: `1.
|
|
360
|
-
2.
|
|
361
|
-
3. \u4E3B\u8981\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u3064\u3044\u3066
|
|
362
|
-
4.
|
|
355
|
+
en: `1. Call connector_backlog-api-key_request with GET space to verify the connection and get space information
|
|
356
|
+
2. Call connector_backlog-api-key_request with GET projects to list all accessible projects
|
|
357
|
+
3. For key projects, call connector_backlog-api-key_request with GET issues?projectId[]={projectId}&count=5&order=desc to retrieve recent issues
|
|
358
|
+
4. Call connector_backlog-api-key_request with GET projects/{projectIdOrKey}/statuses to understand the workflow statuses`,
|
|
359
|
+
ja: `1. connector_backlog-api-key_request \u3067 GET space \u3092\u547C\u3073\u51FA\u3057\u3001\u63A5\u7D9A\u78BA\u8A8D\u3068\u30B9\u30DA\u30FC\u30B9\u60C5\u5831\u3092\u53D6\u5F97
|
|
360
|
+
2. connector_backlog-api-key_request \u3067 GET projects \u3092\u547C\u3073\u51FA\u3057\u3001\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u306A\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u4E00\u89A7\u3092\u53D6\u5F97
|
|
361
|
+
3. \u4E3B\u8981\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u3064\u3044\u3066 connector_backlog-api-key_request \u3067 GET issues?projectId[]={projectId}&count=5&order=desc \u3092\u547C\u3073\u51FA\u3057\u3001\u6700\u8FD1\u306E\u8AB2\u984C\u3092\u53D6\u5F97
|
|
362
|
+
4. connector_backlog-api-key_request \u3067 GET projects/{projectIdOrKey}/statuses \u3092\u547C\u3073\u51FA\u3057\u3001\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u3092\u78BA\u8A8D`
|
|
363
363
|
}
|
|
364
364
|
});
|
|
365
365
|
|
|
@@ -408,6 +408,20 @@ async function listStatuses(params, projectIdOrKey) {
|
|
|
408
408
|
if (!res.ok) return [];
|
|
409
409
|
return await res.json();
|
|
410
410
|
}
|
|
411
|
+
async function countIssues(params, projectId, statusId) {
|
|
412
|
+
try {
|
|
413
|
+
const statusParam = statusId ? `&statusId[]=${statusId}` : "";
|
|
414
|
+
const res = await apiFetch(
|
|
415
|
+
params,
|
|
416
|
+
`issues/count?projectId[]=${encodeURIComponent(projectId)}${statusParam}`
|
|
417
|
+
);
|
|
418
|
+
if (!res.ok) return null;
|
|
419
|
+
const data = await res.json();
|
|
420
|
+
return typeof data.count === "number" ? data.count : null;
|
|
421
|
+
} catch {
|
|
422
|
+
return null;
|
|
423
|
+
}
|
|
424
|
+
}
|
|
411
425
|
var backlogSetupFlow = {
|
|
412
426
|
initialState: () => ({}),
|
|
413
427
|
steps: [
|
|
@@ -457,14 +471,25 @@ var backlogSetupFlow = {
|
|
|
457
471
|
continue;
|
|
458
472
|
}
|
|
459
473
|
sections.push(`### Project: ${project.name} (${project.projectKey})`, "");
|
|
460
|
-
const [issueTypes, statuses] = await Promise.all([
|
|
474
|
+
const [issueTypes, statuses, totalIssues] = await Promise.all([
|
|
461
475
|
listIssueTypes(rt.params, id),
|
|
462
|
-
listStatuses(rt.params, id)
|
|
476
|
+
listStatuses(rt.params, id),
|
|
477
|
+
countIssues(rt.params, id)
|
|
463
478
|
]);
|
|
479
|
+
if (totalIssues != null) {
|
|
480
|
+
sections.push(`- Total issues: ${totalIssues.toLocaleString()}`);
|
|
481
|
+
}
|
|
464
482
|
sections.push(`- Issue types (${issueTypes.length}):`);
|
|
465
483
|
for (const t of issueTypes) sections.push(` - ${t.name}`);
|
|
484
|
+
const statusCounts = await Promise.all(
|
|
485
|
+
statuses.map((s) => countIssues(rt.params, id, s.id))
|
|
486
|
+
);
|
|
466
487
|
sections.push(`- Statuses (${statuses.length}):`);
|
|
467
|
-
for (
|
|
488
|
+
for (let i = 0; i < statuses.length; i++) {
|
|
489
|
+
const c = statusCounts[i];
|
|
490
|
+
const cStr = c != null ? `: ${c.toLocaleString()} issues` : "";
|
|
491
|
+
sections.push(` - ${statuses[i].name}${cStr}`);
|
|
492
|
+
}
|
|
468
493
|
sections.push("");
|
|
469
494
|
}
|
|
470
495
|
return sections.join("\n");
|
|
@@ -563,7 +588,7 @@ var backlogConnector = new ConnectorPlugin({
|
|
|
563
588
|
systemPrompt: {
|
|
564
589
|
en: `### Tools
|
|
565
590
|
|
|
566
|
-
- \`
|
|
591
|
+
- \`connector_backlog-api-key_request\`: The only way to call the Backlog REST API (v2). Use it to list projects, search issues, get issue details, create/update issues, manage wikis, and retrieve users. Authentication (API key as query parameter) and space URL are configured automatically.
|
|
567
592
|
|
|
568
593
|
### Business Logic
|
|
569
594
|
|
|
@@ -635,7 +660,7 @@ await backlog.request("/api/v2/issues", {
|
|
|
635
660
|
- order: "asc" or "desc"`,
|
|
636
661
|
ja: `### \u30C4\u30FC\u30EB
|
|
637
662
|
|
|
638
|
-
- \`
|
|
663
|
+
- \`connector_backlog-api-key_request\`: Backlog REST API\uFF08v2\uFF09\u3092\u547C\u3073\u51FA\u3059\u552F\u4E00\u306E\u624B\u6BB5\u3067\u3059\u3002\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u4E00\u89A7\u306E\u53D6\u5F97\u3001\u8AB2\u984C\u306E\u691C\u7D22\u3001\u8AB2\u984C\u8A73\u7D30\u306E\u53D6\u5F97\u3001\u8AB2\u984C\u306E\u4F5C\u6210\u30FB\u66F4\u65B0\u3001Wiki\u7BA1\u7406\u3001\u30E6\u30FC\u30B6\u30FC\u53D6\u5F97\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002\u8A8D\u8A3C\uFF08API\u30AD\u30FC\u3092\u30AF\u30A8\u30EA\u30D1\u30E9\u30E1\u30FC\u30BF\u3068\u3057\u3066\u4ED8\u4E0E\uFF09\u3068\u30B9\u30DA\u30FC\u30B9URL\u306F\u81EA\u52D5\u7684\u306B\u8A2D\u5B9A\u3055\u308C\u307E\u3059\u3002
|
|
639
664
|
|
|
640
665
|
### Business Logic
|
|
641
666
|
|
|
@@ -348,7 +348,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
|
|
|
348
348
|
/**
|
|
349
349
|
* Create tools for connections that belong to this connector.
|
|
350
350
|
* Filters connections by connectorKey internally.
|
|
351
|
-
* Returns tools keyed as
|
|
351
|
+
* Returns tools keyed as `connector_${connectorKey}_${toolName}`.
|
|
352
352
|
*/
|
|
353
353
|
createTools(connections, config, opts) {
|
|
354
354
|
const myConnections = connections.filter(
|
|
@@ -358,7 +358,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
|
|
|
358
358
|
for (const t of Object.values(this.tools)) {
|
|
359
359
|
const tool = t.createTool(myConnections, config);
|
|
360
360
|
const originalToModelOutput = tool.toModelOutput;
|
|
361
|
-
result[
|
|
361
|
+
result[`connector_${this.connectorKey}_${t.name}`] = {
|
|
362
362
|
...tool,
|
|
363
363
|
toModelOutput: async (options) => {
|
|
364
364
|
if (!originalToModelOutput) {
|
|
@@ -498,15 +498,15 @@ function normalizeRequestPath(path2, basePathSegment) {
|
|
|
498
498
|
// ../connectors/src/connectors/clickup/setup.ts
|
|
499
499
|
var clickupOnboarding = new ConnectorOnboarding({
|
|
500
500
|
dataOverviewInstructions: {
|
|
501
|
-
en: `1. Call
|
|
502
|
-
2. Call
|
|
501
|
+
en: `1. Call connector_clickup_request with GET /team to list workspaces (the ClickUp API still calls workspaces "teams"). Pick the first workspace's \`id\`.
|
|
502
|
+
2. Call connector_clickup_request with GET /team/{team_id}/space?archived=false to list spaces in the workspace.
|
|
503
503
|
3. Pick one space and list its folders (GET /space/{space_id}/folder?archived=false) and folderless lists (GET /space/{space_id}/list?archived=false). Each folder also contains lists at GET /folder/{folder_id}/list.
|
|
504
|
-
4. Pick one list and call
|
|
504
|
+
4. Pick one list and call connector_clickup_request with GET /list/{list_id}/task?page=0&include_closed=true to sample tasks. Inspect each task's \`status\`, \`assignees\`, \`due_date\`, and \`custom_fields\`.
|
|
505
505
|
5. If custom fields are used, call GET /list/{list_id}/field to get their definitions.`,
|
|
506
|
-
ja: `1.
|
|
507
|
-
2.
|
|
506
|
+
ja: `1. connector_clickup_request \u3067 GET /team \u3092\u547C\u3073\u51FA\u3057\u3066\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u4E00\u89A7\u3092\u53D6\u5F97\u3057\u307E\u3059\uFF08ClickUp API \u3067\u306F\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u3092 "team" \u3068\u547C\u3073\u307E\u3059\uFF09\u3002\u6700\u521D\u306E\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u306E \`id\` \u3092\u9078\u629E\u3057\u307E\u3059\u3002
|
|
507
|
+
2. connector_clickup_request \u3067 GET /team/{team_id}/space?archived=false \u3092\u547C\u3073\u51FA\u3057\u3066\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u5185\u306E\u30B9\u30DA\u30FC\u30B9\u4E00\u89A7\u3092\u53D6\u5F97\u3057\u307E\u3059\u3002
|
|
508
508
|
3. \u30B9\u30DA\u30FC\u30B9\u30921\u3064\u9078\u3073\u3001\u30D5\u30A9\u30EB\u30C0\u4E00\u89A7\uFF08GET /space/{space_id}/folder?archived=false\uFF09\u3068\u30D5\u30A9\u30EB\u30C0\u7121\u3057\u30EA\u30B9\u30C8\u4E00\u89A7\uFF08GET /space/{space_id}/list?archived=false\uFF09\u3092\u53D6\u5F97\u3057\u307E\u3059\u3002\u5404\u30D5\u30A9\u30EB\u30C0\u5185\u306E\u30EA\u30B9\u30C8\u306F GET /folder/{folder_id}/list \u3067\u53D6\u5F97\u3067\u304D\u307E\u3059\u3002
|
|
509
|
-
4. \u30EA\u30B9\u30C8\u30921\u3064\u9078\u3073\
|
|
509
|
+
4. \u30EA\u30B9\u30C8\u30921\u3064\u9078\u3073\u3001connector_clickup_request \u3067 GET /list/{list_id}/task?page=0&include_closed=true \u3092\u547C\u3073\u51FA\u3057\u3066\u30BF\u30B9\u30AF\u3092\u30B5\u30F3\u30D7\u30EA\u30F3\u30B0\u3057\u307E\u3059\u3002\u5404\u30BF\u30B9\u30AF\u306E \`status\`, \`assignees\`, \`due_date\`, \`custom_fields\` \u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
|
510
510
|
5. \u30AB\u30B9\u30BF\u30E0\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u5229\u7528\u3055\u308C\u3066\u3044\u308B\u5834\u5408\u306F GET /list/{list_id}/field \u3067\u305D\u306E\u5B9A\u7FA9\u3092\u53D6\u5F97\u3057\u3066\u304F\u3060\u3055\u3044\u3002`
|
|
511
511
|
}
|
|
512
512
|
});
|
|
@@ -567,6 +567,21 @@ async function listFolderlessLists(params, spaceId) {
|
|
|
567
567
|
const data = await res.json();
|
|
568
568
|
return data.lists ?? [];
|
|
569
569
|
}
|
|
570
|
+
var CLICKUP_SAMPLE_LISTS_PER_SPACE = 5;
|
|
571
|
+
async function fetchListTaskCount(params, listId) {
|
|
572
|
+
try {
|
|
573
|
+
const res = await apiFetch(
|
|
574
|
+
params,
|
|
575
|
+
`/list/${encodeURIComponent(listId)}/task?archived=false&page=0`
|
|
576
|
+
);
|
|
577
|
+
if (!res.ok) return null;
|
|
578
|
+
const data = await res.json();
|
|
579
|
+
const tasks = data.tasks ?? [];
|
|
580
|
+
return tasks.length >= 100 ? "100+" : String(tasks.length);
|
|
581
|
+
} catch {
|
|
582
|
+
return null;
|
|
583
|
+
}
|
|
584
|
+
}
|
|
570
585
|
var clickupSetupFlow = {
|
|
571
586
|
initialState: () => ({}),
|
|
572
587
|
steps: [
|
|
@@ -636,6 +651,31 @@ var clickupSetupFlow = {
|
|
|
636
651
|
for (const f of folders) sections.push(` - ${f.name}`);
|
|
637
652
|
sections.push(`- Folderless lists (${folderlessLists.length}):`);
|
|
638
653
|
for (const l of folderlessLists) sections.push(` - ${l.name}`);
|
|
654
|
+
const sampled = folderlessLists.slice(0, CLICKUP_SAMPLE_LISTS_PER_SPACE);
|
|
655
|
+
if (sampled.length > 0) {
|
|
656
|
+
const counts = await Promise.all(
|
|
657
|
+
sampled.map((l) => fetchListTaskCount(rt.params, l.id))
|
|
658
|
+
);
|
|
659
|
+
sections.push(
|
|
660
|
+
"",
|
|
661
|
+
rt.language === "ja" ? `- \u30EA\u30B9\u30C8\u5225\u30BF\u30B9\u30AF\u4EF6\u6570 (\u4E0A\u4F4D${sampled.length}\u4EF6):` : `- Task counts (first ${sampled.length} lists):`
|
|
662
|
+
);
|
|
663
|
+
sections.push("");
|
|
664
|
+
sections.push("| List | Tasks |");
|
|
665
|
+
sections.push("|------|-------|");
|
|
666
|
+
for (let i = 0; i < sampled.length; i++) {
|
|
667
|
+
const list = sampled[i];
|
|
668
|
+
const count = counts[i] ?? "-";
|
|
669
|
+
const safeName = list.name.replace(/\|/g, "\\|");
|
|
670
|
+
sections.push(`| ${safeName} | ${count} |`);
|
|
671
|
+
}
|
|
672
|
+
if (folderlessLists.length > sampled.length) {
|
|
673
|
+
sections.push(
|
|
674
|
+
"",
|
|
675
|
+
rt.language === "ja" ? `_\u5168${folderlessLists.length}\u4EF6\u306E\u3046\u3061\u5148\u982D${sampled.length}\u4EF6\u3092\u8868\u793A_` : `_Showing first ${sampled.length} of ${folderlessLists.length} folderless lists._`
|
|
676
|
+
);
|
|
677
|
+
}
|
|
678
|
+
}
|
|
639
679
|
sections.push("");
|
|
640
680
|
}
|
|
641
681
|
return sections.join("\n");
|
|
@@ -766,7 +806,7 @@ var clickupConnector = new ConnectorPlugin({
|
|
|
766
806
|
systemPrompt: {
|
|
767
807
|
en: `### Tools
|
|
768
808
|
|
|
769
|
-
- \`
|
|
809
|
+
- \`connector_clickup_request\`: The only way to call the ClickUp REST API v2. Use it to list workspaces, spaces, folders, lists, tasks, members, and custom fields. Authentication (Personal API Token in the \`Authorization\` header \u2014 no \`Bearer\` prefix) is configured automatically. Provide the API path and optionally append query parameters like \`page\`, \`archived\`, \`include_closed\`.
|
|
770
810
|
|
|
771
811
|
### Business Logic
|
|
772
812
|
|
|
@@ -852,7 +892,7 @@ export default async function handler(c: Context) {
|
|
|
852
892
|
- POST \`/team/{team_id}/time_entries\` \u2014 Create a time entry`,
|
|
853
893
|
ja: `### \u30C4\u30FC\u30EB
|
|
854
894
|
|
|
855
|
-
- \`
|
|
895
|
+
- \`connector_clickup_request\`: ClickUp REST API v2 \u3092\u547C\u3073\u51FA\u3059\u552F\u4E00\u306E\u624B\u6BB5\u3067\u3059\u3002\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u3001\u30B9\u30DA\u30FC\u30B9\u3001\u30D5\u30A9\u30EB\u30C0\u3001\u30EA\u30B9\u30C8\u3001\u30BF\u30B9\u30AF\u3001\u30E1\u30F3\u30D0\u30FC\u3001\u30AB\u30B9\u30BF\u30E0\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u53D6\u5F97\u30FB\u66F4\u65B0\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002\u8A8D\u8A3C\uFF08Personal API Token \u3092 \`Authorization\` \u30D8\u30C3\u30C0\u30FC\u306B\u8A2D\u5B9A \u2014 \`Bearer\` \u30D7\u30EC\u30D5\u30A3\u30C3\u30AF\u30B9\u306F\u4ED8\u304D\u307E\u305B\u3093\uFF09\u306F\u81EA\u52D5\u3067\u884C\u308F\u308C\u307E\u3059\u3002API\u30D1\u30B9\u3092\u6307\u5B9A\u3057\u3001\u5FC5\u8981\u306B\u5FDC\u3058\u3066 \`page\`, \`archived\`, \`include_closed\` \u306A\u3069\u306E\u30AF\u30A8\u30EA\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u4ED8\u52A0\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
|
856
896
|
|
|
857
897
|
### Business Logic
|
|
858
898
|
|
|
@@ -258,7 +258,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
|
|
|
258
258
|
/**
|
|
259
259
|
* Create tools for connections that belong to this connector.
|
|
260
260
|
* Filters connections by connectorKey internally.
|
|
261
|
-
* Returns tools keyed as
|
|
261
|
+
* Returns tools keyed as `connector_${connectorKey}_${toolName}`.
|
|
262
262
|
*/
|
|
263
263
|
createTools(connections, config, opts) {
|
|
264
264
|
const myConnections = connections.filter(
|
|
@@ -268,7 +268,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
|
|
|
268
268
|
for (const t of Object.values(this.tools)) {
|
|
269
269
|
const tool = t.createTool(myConnections, config);
|
|
270
270
|
const originalToModelOutput = tool.toModelOutput;
|
|
271
|
-
result[
|
|
271
|
+
result[`connector_${this.connectorKey}_${t.name}`] = {
|
|
272
272
|
...tool,
|
|
273
273
|
toModelOutput: async (options) => {
|
|
274
274
|
if (!originalToModelOutput) {
|
|
@@ -398,14 +398,14 @@ var AUTH_TYPES = {
|
|
|
398
398
|
// ../connectors/src/connectors/cosmosdb/setup.ts
|
|
399
399
|
var cosmosdbOnboarding = new ConnectorOnboarding({
|
|
400
400
|
dataOverviewInstructions: {
|
|
401
|
-
en: `1. Use
|
|
402
|
-
2. For key containers, sample documents with
|
|
401
|
+
en: `1. Use connector_cosmosdb_listContainers to list all containers in the configured database
|
|
402
|
+
2. For key containers, sample documents with connector_cosmosdb_query: container="users", sql="SELECT TOP 5 * FROM c"
|
|
403
403
|
3. Examine the document structure to understand the schema (Cosmos DB containers are schema-flexible \u2014 items in the same container may have different fields)
|
|
404
|
-
4. Use
|
|
405
|
-
ja: `1.
|
|
406
|
-
2. \u4E3B\u8981\u30B3\u30F3\u30C6\u30CA\u306B\u3064\u3044\u3066
|
|
404
|
+
4. Use connector_cosmosdb_query with GROUP BY to analyse data distribution if needed: \`SELECT c.status, COUNT(1) AS n FROM c GROUP BY c.status\``,
|
|
405
|
+
ja: `1. connector_cosmosdb_listContainers \u3067\u5BFE\u8C61\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u5185\u306E\u30B3\u30F3\u30C6\u30CA\u4E00\u89A7\u3092\u53D6\u5F97
|
|
406
|
+
2. \u4E3B\u8981\u30B3\u30F3\u30C6\u30CA\u306B\u3064\u3044\u3066 connector_cosmosdb_query \u3067\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u30B5\u30F3\u30D7\u30EA\u30F3\u30B0: container="users", sql="SELECT TOP 5 * FROM c"
|
|
407
407
|
3. \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u69CB\u9020\u3092\u78BA\u8A8D\u3057\u3066\u30B9\u30AD\u30FC\u30DE\u3092\u628A\u63E1\uFF08Cosmos DB \u306E\u30B3\u30F3\u30C6\u30CA\u306F\u30B9\u30AD\u30FC\u30DE\u304C\u67D4\u8EDF\u306A\u305F\u3081\u3001\u540C\u3058\u30B3\u30F3\u30C6\u30CA\u5185\u3067\u3082\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306E\u30D5\u30A3\u30FC\u30EB\u30C9\u304C\u7570\u306A\u308B\u5834\u5408\u304C\u3042\u308A\u307E\u3059\uFF09
|
|
408
|
-
4. \u5FC5\u8981\u306B\u5FDC\u3058\u3066
|
|
408
|
+
4. \u5FC5\u8981\u306B\u5FDC\u3058\u3066 connector_cosmosdb_query \u306E GROUP BY \u3067\u30C7\u30FC\u30BF\u5206\u5E03\u3092\u78BA\u8A8D: \`SELECT c.status, COUNT(1) AS n FROM c GROUP BY c.status\``
|
|
409
409
|
}
|
|
410
410
|
});
|
|
411
411
|
|
|
@@ -717,8 +717,8 @@ var cosmosdbConnector = new ConnectorPlugin({
|
|
|
717
717
|
systemPrompt: {
|
|
718
718
|
en: `### Tools
|
|
719
719
|
|
|
720
|
-
- \`
|
|
721
|
-
- \`
|
|
720
|
+
- \`connector_cosmosdb_listContainers\`: Lists all containers in the configured database, with their partition key paths. Use this first to explore available data.
|
|
721
|
+
- \`connector_cosmosdb_query\`: Executes a Cosmos DB SQL (Core / NoSQL API) query against a single container and returns items. Use for schema exploration, data sampling, and analytical queries. Pass \`partitionKey\` to scope the query to a single partition (cross-partition queries are enabled by default).
|
|
722
722
|
|
|
723
723
|
### Business Logic
|
|
724
724
|
|
|
@@ -763,8 +763,8 @@ export default async function handler(_c: Context) {
|
|
|
763
763
|
- Always bound results with \`TOP n\` and prefer scoped queries with a \`partitionKey\` value when possible \u2014 cross-partition queries cost more RUs.`,
|
|
764
764
|
ja: `### \u30C4\u30FC\u30EB
|
|
765
765
|
|
|
766
|
-
- \`
|
|
767
|
-
- \`
|
|
766
|
+
- \`connector_cosmosdb_listContainers\`: \u8A2D\u5B9A\u3055\u308C\u305F\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u5185\u306E\u30B3\u30F3\u30C6\u30CA\u4E00\u89A7\uFF08\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u30AD\u30FC\u306E\u30D1\u30B9\u4ED8\u304D\uFF09\u3092\u53D6\u5F97\u3057\u307E\u3059\u3002\u30C7\u30FC\u30BF\u63A2\u7D22\u306E\u6700\u521D\u306E\u30B9\u30C6\u30C3\u30D7\u3068\u3057\u3066\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
|
767
|
+
- \`connector_cosmosdb_query\`: \u5358\u4E00\u306E\u30B3\u30F3\u30C6\u30CA\u306B\u5BFE\u3057\u3066 Cosmos DB SQL\uFF08Core / NoSQL API\uFF09\u30AF\u30A8\u30EA\u3092\u5B9F\u884C\u3057\u3001\u30A2\u30A4\u30C6\u30E0\u3092\u8FD4\u3057\u307E\u3059\u3002\u30B9\u30AD\u30FC\u30DE\u63A2\u7D22\u3001\u30C7\u30FC\u30BF\u306E\u30B5\u30F3\u30D7\u30EA\u30F3\u30B0\u3001\u5206\u6790\u30AF\u30A8\u30EA\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002\`partitionKey\` \u3092\u6E21\u3059\u3068\u5358\u4E00\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u306B\u30B9\u30B3\u30FC\u30D7\u3067\u304D\u3001\u672A\u6307\u5B9A\u3060\u3068\u30AF\u30ED\u30B9\u30D1\u30FC\u30C6\u30A3\u30B7\u30E7\u30F3\u30AF\u30A8\u30EA\u306B\u306A\u308A\u307E\u3059\u3002
|
|
768
768
|
|
|
769
769
|
### Business Logic
|
|
770
770
|
|
|
@@ -295,7 +295,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
|
|
|
295
295
|
/**
|
|
296
296
|
* Create tools for connections that belong to this connector.
|
|
297
297
|
* Filters connections by connectorKey internally.
|
|
298
|
-
* Returns tools keyed as
|
|
298
|
+
* Returns tools keyed as `connector_${connectorKey}_${toolName}`.
|
|
299
299
|
*/
|
|
300
300
|
createTools(connections, config, opts) {
|
|
301
301
|
const myConnections = connections.filter(
|
|
@@ -305,7 +305,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
|
|
|
305
305
|
for (const t of Object.values(this.tools)) {
|
|
306
306
|
const tool = t.createTool(myConnections, config);
|
|
307
307
|
const originalToModelOutput = tool.toModelOutput;
|
|
308
|
-
result[
|
|
308
|
+
result[`connector_${this.connectorKey}_${t.name}`] = {
|
|
309
309
|
...tool,
|
|
310
310
|
toModelOutput: async (options) => {
|
|
311
311
|
if (!originalToModelOutput) {
|
|
@@ -430,12 +430,12 @@ var AUTH_TYPES = {
|
|
|
430
430
|
// ../connectors/src/connectors/customerio/setup.ts
|
|
431
431
|
var customerioOnboarding = new ConnectorOnboarding({
|
|
432
432
|
dataOverviewInstructions: {
|
|
433
|
-
en: `1. Call
|
|
434
|
-
2. Call
|
|
433
|
+
en: `1. Call connector_customerio_request with GET /v1/segments to list all segments
|
|
434
|
+
2. Call connector_customerio_request with GET /v1/campaigns to list all campaigns
|
|
435
435
|
3. Pick a segment and call GET /v1/segments/{segment_id}/membership to view member IDs
|
|
436
436
|
4. Pick a customer ID and call GET /v1/customers/{id}/attributes to view customer attributes`,
|
|
437
|
-
ja: `1.
|
|
438
|
-
2.
|
|
437
|
+
ja: `1. connector_customerio_request \u3067 GET /v1/segments \u3092\u547C\u3073\u51FA\u3057\u3001\u5168\u30BB\u30B0\u30E1\u30F3\u30C8\u4E00\u89A7\u3092\u53D6\u5F97
|
|
438
|
+
2. connector_customerio_request \u3067 GET /v1/campaigns \u3092\u547C\u3073\u51FA\u3057\u3001\u5168\u30AD\u30E3\u30F3\u30DA\u30FC\u30F3\u4E00\u89A7\u3092\u53D6\u5F97
|
|
439
439
|
3. \u30BB\u30B0\u30E1\u30F3\u30C8\u3092\u9078\u629E\u3057 GET /v1/segments/{segment_id}/membership \u3067\u30E1\u30F3\u30D0\u30FCID\u3092\u78BA\u8A8D
|
|
440
440
|
4. \u9867\u5BA2ID\u3092\u9078\u629E\u3057 GET /v1/customers/{id}/attributes \u3067\u9867\u5BA2\u5C5E\u6027\u3092\u78BA\u8A8D`
|
|
441
441
|
}
|
|
@@ -667,7 +667,7 @@ var customerioConnector = new ConnectorPlugin({
|
|
|
667
667
|
systemPrompt: {
|
|
668
668
|
en: `### Tools
|
|
669
669
|
|
|
670
|
-
- \`
|
|
670
|
+
- \`connector_customerio_request\`: The only way to call the Customer.io App API. Use it to read customer data, manage campaigns and segments, send transactional messages, and trigger broadcasts. Authentication (Bearer token with App API Key) is configured automatically.
|
|
671
671
|
|
|
672
672
|
### Business Logic
|
|
673
673
|
|
|
@@ -751,7 +751,7 @@ export default async function handler(c: Context) {
|
|
|
751
751
|
- Pagination uses cursor-based \`start\` parameter for customer listing`,
|
|
752
752
|
ja: `### \u30C4\u30FC\u30EB
|
|
753
753
|
|
|
754
|
-
- \`
|
|
754
|
+
- \`connector_customerio_request\`: Customer.io App API\u3092\u547C\u3073\u51FA\u3059\u552F\u4E00\u306E\u624B\u6BB5\u3067\u3059\u3002\u9867\u5BA2\u30C7\u30FC\u30BF\u306E\u8AAD\u307F\u53D6\u308A\u3001\u30AD\u30E3\u30F3\u30DA\u30FC\u30F3\u3084\u30BB\u30B0\u30E1\u30F3\u30C8\u306E\u7BA1\u7406\u3001\u30C8\u30E9\u30F3\u30B6\u30AF\u30B7\u30E7\u30F3\u30E1\u30C3\u30BB\u30FC\u30B8\u306E\u9001\u4FE1\u3001\u30D6\u30ED\u30FC\u30C9\u30AD\u30E3\u30B9\u30C8\u306E\u30C8\u30EA\u30AC\u30FC\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002\u8A8D\u8A3C\uFF08App API\u30AD\u30FC\u306B\u3088\u308BBearer\u30C8\u30FC\u30AF\u30F3\uFF09\u306F\u81EA\u52D5\u7684\u306B\u8A2D\u5B9A\u3055\u308C\u307E\u3059\u3002
|
|
755
755
|
|
|
756
756
|
### Business Logic
|
|
757
757
|
|