@squadbase/vite-server 0.1.17-dev.3b633bb → 0.1.17-dev.71a85cd
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 +3310 -742
- package/dist/connectors/airtable-oauth.js +50 -8
- package/dist/connectors/airtable.js +46 -8
- package/dist/connectors/amplitude.js +10 -8
- package/dist/connectors/anthropic.js +4 -2
- package/dist/connectors/asana.js +39 -10
- package/dist/connectors/attio.js +32 -13
- package/dist/connectors/aws-billing.js +10 -8
- package/dist/connectors/azure-sql.js +33 -7
- package/dist/connectors/backlog-api-key.js +42 -15
- package/dist/connectors/clickup.js +52 -10
- package/dist/connectors/cosmosdb.js +14 -12
- package/dist/connectors/customerio.js +10 -8
- package/dist/connectors/dbt.js +688 -25
- package/dist/connectors/freshdesk.js +84 -8
- package/dist/connectors/freshsales.js +10 -8
- package/dist/connectors/freshservice.js +10 -8
- package/dist/connectors/gamma.js +17 -15
- package/dist/connectors/gemini.js +4 -2
- package/dist/connectors/github.js +14 -12
- package/dist/connectors/gmail-oauth.js +10 -10
- package/dist/connectors/gmail.js +6 -4
- package/dist/connectors/google-ads.js +10 -8
- package/dist/connectors/google-analytics-oauth.js +154 -25
- package/dist/connectors/google-analytics.js +536 -109
- package/dist/connectors/google-audit-log.js +6 -4
- package/dist/connectors/google-calendar-oauth.js +63 -15
- package/dist/connectors/google-calendar.js +63 -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 +128 -17
- package/dist/connectors/google-sheets.js +8 -6
- package/dist/connectors/google-slides.js +10 -10
- package/dist/connectors/grafana.js +47 -10
- package/dist/connectors/hubspot-oauth.js +41 -9
- package/dist/connectors/hubspot.js +27 -9
- package/dist/connectors/influxdb.js +10 -8
- package/dist/connectors/intercom-oauth.js +72 -12
- package/dist/connectors/intercom.js +14 -12
- package/dist/connectors/jdbc.js +8 -6
- package/dist/connectors/jira-api-key.js +70 -11
- package/dist/connectors/kintone-api-token.js +68 -18
- package/dist/connectors/kintone.js +56 -11
- package/dist/connectors/linear.js +56 -12
- package/dist/connectors/linkedin-ads.js +43 -14
- package/dist/connectors/mailchimp-oauth.js +8 -6
- package/dist/connectors/mailchimp.js +8 -6
- package/dist/connectors/meta-ads-oauth.js +35 -14
- package/dist/connectors/meta-ads.js +37 -14
- package/dist/connectors/mixpanel.js +10 -8
- package/dist/connectors/monday.js +11 -9
- package/dist/connectors/mongodb.js +10 -8
- package/dist/connectors/notion-oauth.js +60 -11
- package/dist/connectors/notion.js +62 -11
- package/dist/connectors/openai.js +4 -2
- package/dist/connectors/oracle.js +25 -7
- package/dist/connectors/outlook-oauth.js +21 -21
- package/dist/connectors/powerbi-oauth.js +13 -13
- package/dist/connectors/salesforce.js +44 -9
- package/dist/connectors/semrush.js +8 -6
- package/dist/connectors/sentry.js +38 -10
- package/dist/connectors/shopify-oauth.js +43 -10
- package/dist/connectors/shopify.js +10 -8
- package/dist/connectors/sqlserver.js +33 -7
- package/dist/connectors/stripe-api-key.js +68 -15
- package/dist/connectors/stripe-oauth.js +70 -19
- package/dist/connectors/supabase.js +24 -5
- package/dist/connectors/tableau.js +17 -15
- package/dist/connectors/tiktok-ads.js +39 -16
- package/dist/connectors/wix-store.js +10 -8
- package/dist/connectors/zendesk-oauth.js +55 -12
- package/dist/connectors/zendesk.js +14 -12
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3339 -746
- package/dist/main.js +3328 -740
- package/dist/vite-plugin.js +3308 -740
- package/package.json +1 -1
|
@@ -16,6 +16,7 @@ var init_parameter_definition = __esm({
|
|
|
16
16
|
type;
|
|
17
17
|
secret;
|
|
18
18
|
required;
|
|
19
|
+
isDeprecated;
|
|
19
20
|
constructor(config) {
|
|
20
21
|
this.slug = config.slug;
|
|
21
22
|
this.name = config.name;
|
|
@@ -24,6 +25,7 @@ var init_parameter_definition = __esm({
|
|
|
24
25
|
this.type = config.type;
|
|
25
26
|
this.secret = config.secret;
|
|
26
27
|
this.required = config.required;
|
|
28
|
+
this.isDeprecated = config.isDeprecated ?? false;
|
|
27
29
|
}
|
|
28
30
|
/**
|
|
29
31
|
* Get the parameter value from a ConnectorConnectionObject.
|
|
@@ -343,7 +345,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
|
|
|
343
345
|
/**
|
|
344
346
|
* Create tools for connections that belong to this connector.
|
|
345
347
|
* Filters connections by connectorKey internally.
|
|
346
|
-
* Returns tools keyed as
|
|
348
|
+
* Returns tools keyed as `connector_${connectorKey}_${toolName}`.
|
|
347
349
|
*/
|
|
348
350
|
createTools(connections, config, opts) {
|
|
349
351
|
const myConnections = connections.filter(
|
|
@@ -353,7 +355,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
|
|
|
353
355
|
for (const t of Object.values(this.tools)) {
|
|
354
356
|
const tool = t.createTool(myConnections, config);
|
|
355
357
|
const originalToModelOutput = tool.toModelOutput;
|
|
356
|
-
result[
|
|
358
|
+
result[`connector_${this.connectorKey}_${t.name}`] = {
|
|
357
359
|
...tool,
|
|
358
360
|
toModelOutput: async (options) => {
|
|
359
361
|
if (!originalToModelOutput) {
|
|
@@ -493,13 +495,13 @@ function normalizeRequestPath(path2, basePathSegment) {
|
|
|
493
495
|
// ../connectors/src/connectors/freshdesk/setup.ts
|
|
494
496
|
var freshdeskOnboarding = new ConnectorOnboarding({
|
|
495
497
|
dataOverviewInstructions: {
|
|
496
|
-
en: `1. Call
|
|
497
|
-
2. Call
|
|
498
|
+
en: `1. Call connector_freshdesk_request with GET /agents/me to confirm credentials.
|
|
499
|
+
2. Call connector_freshdesk_request with GET /tickets?per_page=10&order_by=created_at&order_type=desc to sample recent tickets. Each ticket carries \`status\`, \`priority\`, \`source\`, \`requester_id\`, \`responder_id\`, and \`created_at\`.
|
|
498
500
|
3. Call GET /contacts?per_page=10 to sample contacts (end users) and GET /companies?per_page=10 for companies.
|
|
499
501
|
4. To enumerate agents and groups, call GET /agents and GET /groups.
|
|
500
502
|
5. Pagination is page-based with \`page\` (1-indexed) and \`per_page\` (max 100). The \`Link\` response header carries the next-page URL when more results exist.`,
|
|
501
|
-
ja: `1.
|
|
502
|
-
2.
|
|
503
|
+
ja: `1. connector_freshdesk_request \u3067 GET /agents/me \u3092\u547C\u3073\u51FA\u3057\u3001\u8A8D\u8A3C\u60C5\u5831\u3092\u78BA\u8A8D\u3057\u307E\u3059\u3002
|
|
504
|
+
2. connector_freshdesk_request \u3067 GET /tickets?per_page=10&order_by=created_at&order_type=desc \u3092\u547C\u3073\u51FA\u3057\u3066\u6700\u8FD1\u306E\u30C1\u30B1\u30C3\u30C8\u3092\u30B5\u30F3\u30D7\u30EA\u30F3\u30B0\u3057\u307E\u3059\u3002\u5404\u30C1\u30B1\u30C3\u30C8\u306B\u306F \`status\`, \`priority\`, \`source\`, \`requester_id\`, \`responder_id\`, \`created_at\` \u306A\u3069\u304C\u542B\u307E\u308C\u307E\u3059\u3002
|
|
503
505
|
3. GET /contacts?per_page=10 \u3067\u9023\u7D61\u5148\uFF08\u30A8\u30F3\u30C9\u30E6\u30FC\u30B6\u30FC\uFF09\u3001GET /companies?per_page=10 \u3067\u4F1A\u793E\u60C5\u5831\u3092\u30B5\u30F3\u30D7\u30EA\u30F3\u30B0\u3057\u307E\u3059\u3002
|
|
504
506
|
4. \u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u3084\u30B0\u30EB\u30FC\u30D7\u306F GET /agents\u3001GET /groups \u3067\u53D6\u5F97\u3057\u307E\u3059\u3002
|
|
505
507
|
5. \u30DA\u30FC\u30B8\u30CD\u30FC\u30B7\u30E7\u30F3\u306F1\u59CB\u307E\u308A\u306E \`page\` \u3068 \`per_page\`\uFF08\u6700\u5927100\uFF09\u3002\u6B21\u30DA\u30FC\u30B8\u304C\u5B58\u5728\u3059\u308B\u5834\u5408\u306F \`Link\` \u30EC\u30B9\u30DD\u30F3\u30B9\u30D8\u30C3\u30C0\u306B\u6B21URL\u304C\u542B\u307E\u308C\u307E\u3059\u3002`
|
|
@@ -626,6 +628,80 @@ var freshdeskSetupFlow = {
|
|
|
626
628
|
);
|
|
627
629
|
}
|
|
628
630
|
sections.push("");
|
|
631
|
+
if (targetEntities.includes("tickets")) {
|
|
632
|
+
try {
|
|
633
|
+
const ticketRes = await apiFetch(
|
|
634
|
+
rt.params,
|
|
635
|
+
"/tickets?per_page=30&order_by=created_at&order_type=desc"
|
|
636
|
+
);
|
|
637
|
+
if (ticketRes.ok) {
|
|
638
|
+
const tickets = await ticketRes.json();
|
|
639
|
+
if (Array.isArray(tickets) && tickets.length > 0) {
|
|
640
|
+
const STATUS_MAP = {
|
|
641
|
+
2: "Open",
|
|
642
|
+
3: "Pending",
|
|
643
|
+
4: "Resolved",
|
|
644
|
+
5: "Closed"
|
|
645
|
+
};
|
|
646
|
+
const PRIORITY_MAP = {
|
|
647
|
+
1: "Low",
|
|
648
|
+
2: "Medium",
|
|
649
|
+
3: "High",
|
|
650
|
+
4: "Urgent"
|
|
651
|
+
};
|
|
652
|
+
const statusCounts = {};
|
|
653
|
+
for (const t of tickets) {
|
|
654
|
+
const s = t.status != null && STATUS_MAP[t.status] || String(t.status ?? "unknown");
|
|
655
|
+
statusCounts[s] = (statusCounts[s] ?? 0) + 1;
|
|
656
|
+
}
|
|
657
|
+
sections.push(
|
|
658
|
+
"### Ticket status breakdown (from recent tickets)",
|
|
659
|
+
""
|
|
660
|
+
);
|
|
661
|
+
sections.push("| Status | Count |");
|
|
662
|
+
sections.push("|--------|-------|");
|
|
663
|
+
for (const [status, cnt] of Object.entries(statusCounts).sort(
|
|
664
|
+
(a, b) => b[1] - a[1]
|
|
665
|
+
)) {
|
|
666
|
+
sections.push(`| ${status} | ${cnt} |`);
|
|
667
|
+
}
|
|
668
|
+
sections.push("");
|
|
669
|
+
const priorityCounts = {};
|
|
670
|
+
for (const t of tickets) {
|
|
671
|
+
const p = t.priority != null && PRIORITY_MAP[t.priority] || String(t.priority ?? "unknown");
|
|
672
|
+
priorityCounts[p] = (priorityCounts[p] ?? 0) + 1;
|
|
673
|
+
}
|
|
674
|
+
sections.push(
|
|
675
|
+
"### Ticket priority breakdown (from recent tickets)",
|
|
676
|
+
""
|
|
677
|
+
);
|
|
678
|
+
sections.push("| Priority | Count |");
|
|
679
|
+
sections.push("|----------|-------|");
|
|
680
|
+
for (const [priority, cnt] of Object.entries(priorityCounts).sort(
|
|
681
|
+
(a, b) => b[1] - a[1]
|
|
682
|
+
)) {
|
|
683
|
+
sections.push(`| ${priority} | ${cnt} |`);
|
|
684
|
+
}
|
|
685
|
+
sections.push("");
|
|
686
|
+
sections.push("### Recent tickets (sample)", "");
|
|
687
|
+
sections.push("| ID | Subject | Status | Priority | Created |");
|
|
688
|
+
sections.push("|----|---------|--------|----------|---------|");
|
|
689
|
+
for (const t of tickets.slice(0, 5)) {
|
|
690
|
+
const id = t.id != null ? String(t.id) : "-";
|
|
691
|
+
const subject = (t.subject ?? "-").replace(/\|/g, "\\|").slice(0, 60);
|
|
692
|
+
const status = t.status != null && STATUS_MAP[t.status] || String(t.status ?? "-");
|
|
693
|
+
const priority = t.priority != null && PRIORITY_MAP[t.priority] || String(t.priority ?? "-");
|
|
694
|
+
const created = t.created_at ? t.created_at.slice(0, 10) : "-";
|
|
695
|
+
sections.push(
|
|
696
|
+
`| ${id} | ${subject} | ${status} | ${priority} | ${created} |`
|
|
697
|
+
);
|
|
698
|
+
}
|
|
699
|
+
sections.push("");
|
|
700
|
+
}
|
|
701
|
+
}
|
|
702
|
+
} catch {
|
|
703
|
+
}
|
|
704
|
+
}
|
|
629
705
|
return sections.join("\n");
|
|
630
706
|
}
|
|
631
707
|
};
|
|
@@ -767,7 +843,7 @@ var freshdeskConnector = new ConnectorPlugin({
|
|
|
767
843
|
systemPrompt: {
|
|
768
844
|
en: `### Tools
|
|
769
845
|
|
|
770
|
-
- \`
|
|
846
|
+
- \`connector_freshdesk_request\`: The only way to call the Freshdesk REST API v2. Use it to list tickets, contacts, companies, agents, groups, and more. Authentication (HTTP Basic Auth using the API key as username) and the base URL (https://<domain>.freshdesk.com/api/v2) are configured automatically.
|
|
771
847
|
|
|
772
848
|
### Business Logic
|
|
773
849
|
|
|
@@ -844,7 +920,7 @@ export default async function handler(c: Context) {
|
|
|
844
920
|
- \`source\`: 1=Email, 2=Portal, 3=Phone, 7=Chat, 9=Feedback widget, 10=Outbound email`,
|
|
845
921
|
ja: `### \u30C4\u30FC\u30EB
|
|
846
922
|
|
|
847
|
-
- \`
|
|
923
|
+
- \`connector_freshdesk_request\`: Freshdesk REST API v2 \u3092\u547C\u3073\u51FA\u3059\u552F\u4E00\u306E\u624B\u6BB5\u3067\u3059\u3002\u30C1\u30B1\u30C3\u30C8\u3001\u9023\u7D61\u5148\u3001\u4F1A\u793E\u3001\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u3001\u30B0\u30EB\u30FC\u30D7\u306A\u3069\u306E\u53D6\u5F97\u30FB\u66F4\u65B0\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002\u8A8D\u8A3C\uFF08API \u30AD\u30FC\u3092\u30E6\u30FC\u30B6\u30FC\u540D\u3068\u3057\u305F HTTP Basic Auth\uFF09\u3068\u30D9\u30FC\u30B9URL\uFF08https://<\u30C9\u30E1\u30A4\u30F3>.freshdesk.com/api/v2\uFF09\u306F\u81EA\u52D5\u3067\u8A2D\u5B9A\u3055\u308C\u307E\u3059\u3002
|
|
848
924
|
|
|
849
925
|
### Business Logic
|
|
850
926
|
|
|
@@ -16,6 +16,7 @@ var init_parameter_definition = __esm({
|
|
|
16
16
|
type;
|
|
17
17
|
secret;
|
|
18
18
|
required;
|
|
19
|
+
isDeprecated;
|
|
19
20
|
constructor(config) {
|
|
20
21
|
this.slug = config.slug;
|
|
21
22
|
this.name = config.name;
|
|
@@ -24,6 +25,7 @@ var init_parameter_definition = __esm({
|
|
|
24
25
|
this.type = config.type;
|
|
25
26
|
this.secret = config.secret;
|
|
26
27
|
this.required = config.required;
|
|
28
|
+
this.isDeprecated = config.isDeprecated ?? false;
|
|
27
29
|
}
|
|
28
30
|
/**
|
|
29
31
|
* Get the parameter value from a ConnectorConnectionObject.
|
|
@@ -358,7 +360,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
|
|
|
358
360
|
/**
|
|
359
361
|
* Create tools for connections that belong to this connector.
|
|
360
362
|
* Filters connections by connectorKey internally.
|
|
361
|
-
* Returns tools keyed as
|
|
363
|
+
* Returns tools keyed as `connector_${connectorKey}_${toolName}`.
|
|
362
364
|
*/
|
|
363
365
|
createTools(connections, config, opts) {
|
|
364
366
|
const myConnections = connections.filter(
|
|
@@ -368,7 +370,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
|
|
|
368
370
|
for (const t of Object.values(this.tools)) {
|
|
369
371
|
const tool = t.createTool(myConnections, config);
|
|
370
372
|
const originalToModelOutput = tool.toModelOutput;
|
|
371
|
-
result[
|
|
373
|
+
result[`connector_${this.connectorKey}_${t.name}`] = {
|
|
372
374
|
...tool,
|
|
373
375
|
toModelOutput: async (options) => {
|
|
374
376
|
if (!originalToModelOutput) {
|
|
@@ -508,13 +510,13 @@ function normalizeRequestPath(path2, basePathSegment) {
|
|
|
508
510
|
// ../connectors/src/connectors/freshsales/setup.ts
|
|
509
511
|
var freshsalesOnboarding = new ConnectorOnboarding({
|
|
510
512
|
dataOverviewInstructions: {
|
|
511
|
-
en: `1. Call
|
|
512
|
-
2. Call
|
|
513
|
+
en: `1. Call connector_freshsales_request with GET /selector/owners to confirm credentials and discover sales team members.
|
|
514
|
+
2. Call connector_freshsales_request with GET /contacts/filters to list available contact views (filters), then GET /contacts/view/{view_id} to fetch contacts in a view (paginated with \`page\` and \`per_page\`, default 25, max 100).
|
|
513
515
|
3. Repeat the same pattern for accounts (GET /sales_accounts/filters \u2192 /sales_accounts/view/{view_id}) and deals (GET /deals/filters \u2192 /deals/view/{view_id}).
|
|
514
516
|
4. To inspect deal pipeline metadata, call GET /selector/deal_pipelines and GET /selector/deal_stages.
|
|
515
517
|
5. Use GET /lookup to find specific records by attribute (e.g., look up a contact by email).`,
|
|
516
|
-
ja: `1.
|
|
517
|
-
2.
|
|
518
|
+
ja: `1. connector_freshsales_request \u3067 GET /selector/owners \u3092\u547C\u3073\u51FA\u3057\u3001\u8A8D\u8A3C\u60C5\u5831\u306E\u78BA\u8A8D\u3068\u55B6\u696D\u30E1\u30F3\u30D0\u30FC\u306E\u4E00\u89A7\u3092\u53D6\u5F97\u3057\u307E\u3059\u3002
|
|
519
|
+
2. connector_freshsales_request \u3067 GET /contacts/filters \u3092\u547C\u3073\u51FA\u3057\u3066\u30D3\u30E5\u30FC\uFF08filters\uFF09\u4E00\u89A7\u3092\u53D6\u5F97\u3057\u3001GET /contacts/view/{view_id} \u3067\u5404\u30D3\u30E5\u30FC\u306E\u9023\u7D61\u5148\u3092\u53D6\u5F97\u3057\u307E\u3059\uFF08\`page\` \u3068 \`per_page\` \u3067\u30DA\u30FC\u30B8\u30F3\u30B0\u3001\u30C7\u30D5\u30A9\u30EB\u30C825\u3001\u6700\u5927100\uFF09\u3002
|
|
518
520
|
3. \u540C\u3058\u30D1\u30BF\u30FC\u30F3\u3092\u53D6\u5F15\u5148\uFF08GET /sales_accounts/filters \u2192 /sales_accounts/view/{view_id}\uFF09\u3001\u5546\u8AC7\uFF08GET /deals/filters \u2192 /deals/view/{view_id}\uFF09\u306B\u3082\u9069\u7528\u3057\u307E\u3059\u3002
|
|
519
521
|
4. \u5546\u8AC7\u30D1\u30A4\u30D7\u30E9\u30A4\u30F3\u306E\u30E1\u30BF\u60C5\u5831\u306F GET /selector/deal_pipelines \u304A\u3088\u3073 GET /selector/deal_stages \u3067\u53D6\u5F97\u3057\u307E\u3059\u3002
|
|
520
522
|
5. \u7279\u5B9A\u30EC\u30B3\u30FC\u30C9\u3092\u5C5E\u6027\u3067\u691C\u7D22\u3059\u308B\u306B\u306F GET /lookup \u3092\u4F7F\u7528\u3057\u307E\u3059\uFF08\u4F8B: \u30E1\u30FC\u30EB\u3067\u9023\u7D61\u5148\u3092\u691C\u7D22\uFF09\u3002`
|
|
@@ -775,7 +777,7 @@ var freshsalesConnector = new ConnectorPlugin({
|
|
|
775
777
|
systemPrompt: {
|
|
776
778
|
en: `### Tools
|
|
777
779
|
|
|
778
|
-
- \`
|
|
780
|
+
- \`connector_freshsales_request\`: The only way to call the Freshsales / Freshworks CRM REST API. Use it to list and update contacts, accounts, deals, leads, sales activities, and selector metadata. Authentication (\`Authorization: Token token=<API_KEY>\` header \u2014 note: NOT HTTP Basic Auth) and the base URL (https://<bundle>.myfreshworks.com/crm/sales/api) are configured automatically.
|
|
779
781
|
|
|
780
782
|
### Business Logic
|
|
781
783
|
|
|
@@ -858,7 +860,7 @@ export default async function handler(c: Context) {
|
|
|
858
860
|
- GET \`/selector/territories\` / \`/selector/business_types\` / \`/selector/industry_types\` / \`/selector/contact_statuses\` / \`/selector/sales_activity_types\``,
|
|
859
861
|
ja: `### \u30C4\u30FC\u30EB
|
|
860
862
|
|
|
861
|
-
- \`
|
|
863
|
+
- \`connector_freshsales_request\`: Freshsales / Freshworks CRM REST API \u3092\u547C\u3073\u51FA\u3059\u552F\u4E00\u306E\u624B\u6BB5\u3067\u3059\u3002\u9023\u7D61\u5148\u3001\u53D6\u5F15\u5148\u3001\u5546\u8AC7\u3001\u30EA\u30FC\u30C9\u3001\u55B6\u696D\u6D3B\u52D5\u3001\u5404\u7A2E\u30BB\u30EC\u30AF\u30BF\u30FC\u30E1\u30BF\u60C5\u5831\u306E\u53D6\u5F97\u30FB\u66F4\u65B0\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002\u8A8D\u8A3C\uFF08\`Authorization: Token token=<API_KEY>\` \u30D8\u30C3\u30C0\u30FC \u2014 Freshdesk/Freshservice \u3068\u7570\u306A\u308A HTTP Basic Auth \u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3068\u30D9\u30FC\u30B9URL\uFF08https://<bundle>.myfreshworks.com/crm/sales/api\uFF09\u306F\u81EA\u52D5\u3067\u8A2D\u5B9A\u3055\u308C\u307E\u3059\u3002
|
|
862
864
|
|
|
863
865
|
### Business Logic
|
|
864
866
|
|
|
@@ -16,6 +16,7 @@ var init_parameter_definition = __esm({
|
|
|
16
16
|
type;
|
|
17
17
|
secret;
|
|
18
18
|
required;
|
|
19
|
+
isDeprecated;
|
|
19
20
|
constructor(config) {
|
|
20
21
|
this.slug = config.slug;
|
|
21
22
|
this.name = config.name;
|
|
@@ -24,6 +25,7 @@ var init_parameter_definition = __esm({
|
|
|
24
25
|
this.type = config.type;
|
|
25
26
|
this.secret = config.secret;
|
|
26
27
|
this.required = config.required;
|
|
28
|
+
this.isDeprecated = config.isDeprecated ?? false;
|
|
27
29
|
}
|
|
28
30
|
/**
|
|
29
31
|
* Get the parameter value from a ConnectorConnectionObject.
|
|
@@ -313,7 +315,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
|
|
|
313
315
|
/**
|
|
314
316
|
* Create tools for connections that belong to this connector.
|
|
315
317
|
* Filters connections by connectorKey internally.
|
|
316
|
-
* Returns tools keyed as
|
|
318
|
+
* Returns tools keyed as `connector_${connectorKey}_${toolName}`.
|
|
317
319
|
*/
|
|
318
320
|
createTools(connections, config, opts) {
|
|
319
321
|
const myConnections = connections.filter(
|
|
@@ -323,7 +325,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
|
|
|
323
325
|
for (const t of Object.values(this.tools)) {
|
|
324
326
|
const tool = t.createTool(myConnections, config);
|
|
325
327
|
const originalToModelOutput = tool.toModelOutput;
|
|
326
|
-
result[
|
|
328
|
+
result[`connector_${this.connectorKey}_${t.name}`] = {
|
|
327
329
|
...tool,
|
|
328
330
|
toModelOutput: async (options) => {
|
|
329
331
|
if (!originalToModelOutput) {
|
|
@@ -463,13 +465,13 @@ function normalizeRequestPath(path2, basePathSegment) {
|
|
|
463
465
|
// ../connectors/src/connectors/freshservice/setup.ts
|
|
464
466
|
var freshserviceOnboarding = new ConnectorOnboarding({
|
|
465
467
|
dataOverviewInstructions: {
|
|
466
|
-
en: `1. Call
|
|
467
|
-
2. Call
|
|
468
|
+
en: `1. Call connector_freshservice_request with GET /agents to confirm credentials and view available agents.
|
|
469
|
+
2. Call connector_freshservice_request with GET /tickets?per_page=10 to sample recent tickets. Each ticket has \`status\`, \`priority\`, \`source\`, \`responder_id\`, \`requester_id\`, and \`created_at\`.
|
|
468
470
|
3. To enumerate organisational structure, call GET /departments and GET /locations.
|
|
469
471
|
4. For asset inventory, call GET /assets?per_page=10 \u2014 note that ITAM endpoints require the asset module to be enabled.
|
|
470
472
|
5. Pagination is page-based with \`page\` (1-indexed) and \`per_page\` (max 100). The \`Link\` response header carries the next-page URL when more results exist.`,
|
|
471
|
-
ja: `1.
|
|
472
|
-
2.
|
|
473
|
+
ja: `1. connector_freshservice_request \u3067 GET /agents \u3092\u547C\u3073\u51FA\u3057\u3001\u8A8D\u8A3C\u60C5\u5831\u306E\u78BA\u8A8D\u3068\u5229\u7528\u53EF\u80FD\u306A\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u4E00\u89A7\u3092\u53D6\u5F97\u3057\u307E\u3059\u3002
|
|
474
|
+
2. connector_freshservice_request \u3067 GET /tickets?per_page=10 \u3092\u547C\u3073\u51FA\u3057\u3066\u6700\u8FD1\u306E\u30C1\u30B1\u30C3\u30C8\u3092\u30B5\u30F3\u30D7\u30EA\u30F3\u30B0\u3057\u307E\u3059\u3002\u5404\u30C1\u30B1\u30C3\u30C8\u306B\u306F \`status\`, \`priority\`, \`source\`, \`responder_id\`, \`requester_id\`, \`created_at\` \u306A\u3069\u304C\u542B\u307E\u308C\u307E\u3059\u3002
|
|
473
475
|
3. \u7D44\u7E54\u69CB\u9020\u3092\u628A\u63E1\u3059\u308B\u306B\u306F GET /departments \u304A\u3088\u3073 GET /locations \u3092\u547C\u3073\u51FA\u3057\u307E\u3059\u3002
|
|
474
476
|
4. \u8CC7\u7523\u30A4\u30F3\u30D9\u30F3\u30C8\u30EA\u306F GET /assets?per_page=10 \u3067\u53D6\u5F97\u3067\u304D\u307E\u3059\uFF08ITAM \u30E2\u30B8\u30E5\u30FC\u30EB\u304C\u6709\u52B9\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\uFF09\u3002
|
|
475
477
|
5. \u30DA\u30FC\u30B8\u30CD\u30FC\u30B7\u30E7\u30F3\u306F1\u59CB\u307E\u308A\u306E \`page\` \u3068 \`per_page\`\uFF08\u6700\u5927100\uFF09\u3002\u6B21\u30DA\u30FC\u30B8\u304C\u5B58\u5728\u3059\u308B\u5834\u5408\u306F \`Link\` \u30EC\u30B9\u30DD\u30F3\u30B9\u30D8\u30C3\u30C0\u306B\u6B21URL\u304C\u542B\u307E\u308C\u307E\u3059\u3002`
|
|
@@ -756,7 +758,7 @@ var freshserviceConnector = new ConnectorPlugin({
|
|
|
756
758
|
systemPrompt: {
|
|
757
759
|
en: `### Tools
|
|
758
760
|
|
|
759
|
-
- \`
|
|
761
|
+
- \`connector_freshservice_request\`: The only way to call the Freshservice REST API v2. Use it to list tickets, agents, requesters, departments, locations, assets, problems, changes, releases, and more. Authentication (HTTP Basic Auth using the API key as username) and the base URL (https://<domain>.freshservice.com/api/v2) are configured automatically.
|
|
760
762
|
|
|
761
763
|
### Business Logic
|
|
762
764
|
|
|
@@ -832,7 +834,7 @@ export default async function handler(c: Context) {
|
|
|
832
834
|
- \`source\`: 1=Email, 2=Portal, 3=Phone, 4=Chat, 5=Feedback widget, 7=Yammer, 8=AwsCloudwatch, 9=Pagerduty, 10=Walkup, 11=Slack`,
|
|
833
835
|
ja: `### \u30C4\u30FC\u30EB
|
|
834
836
|
|
|
835
|
-
- \`
|
|
837
|
+
- \`connector_freshservice_request\`: Freshservice REST API v2 \u3092\u547C\u3073\u51FA\u3059\u552F\u4E00\u306E\u624B\u6BB5\u3067\u3059\u3002\u30C1\u30B1\u30C3\u30C8\u3001\u30A8\u30FC\u30B8\u30A7\u30F3\u30C8\u3001\u8981\u6C42\u8005\u3001\u90E8\u7F72\u3001\u30ED\u30B1\u30FC\u30B7\u30E7\u30F3\u3001\u8CC7\u7523\u3001\u554F\u984C\u7BA1\u7406\u3001\u5909\u66F4\u7BA1\u7406\u3001\u30EA\u30EA\u30FC\u30B9\u306A\u3069\u306E\u53D6\u5F97\u30FB\u66F4\u65B0\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002\u8A8D\u8A3C\uFF08API \u30AD\u30FC\u3092\u30E6\u30FC\u30B6\u30FC\u540D\u3068\u3057\u305F HTTP Basic Auth\uFF09\u3068\u30D9\u30FC\u30B9URL\uFF08https://<\u30C9\u30E1\u30A4\u30F3>.freshservice.com/api/v2\uFF09\u306F\u81EA\u52D5\u3067\u8A2D\u5B9A\u3055\u308C\u307E\u3059\u3002
|
|
836
838
|
|
|
837
839
|
### Business Logic
|
|
838
840
|
|
package/dist/connectors/gamma.js
CHANGED
|
@@ -16,6 +16,7 @@ var init_parameter_definition = __esm({
|
|
|
16
16
|
type;
|
|
17
17
|
secret;
|
|
18
18
|
required;
|
|
19
|
+
isDeprecated;
|
|
19
20
|
constructor(config) {
|
|
20
21
|
this.slug = config.slug;
|
|
21
22
|
this.name = config.name;
|
|
@@ -24,6 +25,7 @@ var init_parameter_definition = __esm({
|
|
|
24
25
|
this.type = config.type;
|
|
25
26
|
this.secret = config.secret;
|
|
26
27
|
this.required = config.required;
|
|
28
|
+
this.isDeprecated = config.isDeprecated ?? false;
|
|
27
29
|
}
|
|
28
30
|
/**
|
|
29
31
|
* Get the parameter value from a ConnectorConnectionObject.
|
|
@@ -269,7 +271,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
|
|
|
269
271
|
/**
|
|
270
272
|
* Create tools for connections that belong to this connector.
|
|
271
273
|
* Filters connections by connectorKey internally.
|
|
272
|
-
* Returns tools keyed as
|
|
274
|
+
* Returns tools keyed as `connector_${connectorKey}_${toolName}`.
|
|
273
275
|
*/
|
|
274
276
|
createTools(connections, config, opts) {
|
|
275
277
|
const myConnections = connections.filter(
|
|
@@ -279,7 +281,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
|
|
|
279
281
|
for (const t of Object.values(this.tools)) {
|
|
280
282
|
const tool = t.createTool(myConnections, config);
|
|
281
283
|
const originalToModelOutput = tool.toModelOutput;
|
|
282
|
-
result[
|
|
284
|
+
result[`connector_${this.connectorKey}_${t.name}`] = {
|
|
283
285
|
...tool,
|
|
284
286
|
toModelOutput: async (options) => {
|
|
285
287
|
if (!originalToModelOutput) {
|
|
@@ -409,12 +411,12 @@ var AUTH_TYPES = {
|
|
|
409
411
|
// ../connectors/src/connectors/gamma/setup.ts
|
|
410
412
|
var gammaOnboarding = new ConnectorOnboarding({
|
|
411
413
|
dataOverviewInstructions: {
|
|
412
|
-
en: `1. Call
|
|
413
|
-
2. Call
|
|
414
|
-
3. Try generating a simple presentation with
|
|
415
|
-
ja: `1.
|
|
416
|
-
2.
|
|
417
|
-
3.
|
|
414
|
+
en: `1. Call connector_gamma_request with GET /themes to list available themes in the workspace
|
|
415
|
+
2. Call connector_gamma_request with GET /folders to list workspace folders
|
|
416
|
+
3. Try generating a simple presentation with connector_gamma_generate: inputText "Sample presentation about AI", textMode "generate", numCards 3`,
|
|
417
|
+
ja: `1. connector_gamma_request \u3067 GET /themes \u3092\u547C\u3073\u51FA\u3057\u3001\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u3067\u5229\u7528\u53EF\u80FD\u306A\u30C6\u30FC\u30DE\u4E00\u89A7\u3092\u53D6\u5F97
|
|
418
|
+
2. connector_gamma_request \u3067 GET /folders \u3092\u547C\u3073\u51FA\u3057\u3001\u30EF\u30FC\u30AF\u30B9\u30DA\u30FC\u30B9\u306E\u30D5\u30A9\u30EB\u30C0\u4E00\u89A7\u3092\u53D6\u5F97
|
|
419
|
+
3. connector_gamma_generate \u3067\u30B7\u30F3\u30D7\u30EB\u306A\u30D7\u30EC\u30BC\u30F3\u30C6\u30FC\u30B7\u30E7\u30F3\u3092\u8A66\u4F5C: inputText "AI\u306B\u3064\u3044\u3066\u306E\u30B5\u30F3\u30D7\u30EB\u30D7\u30EC\u30BC\u30F3\u30C6\u30FC\u30B7\u30E7\u30F3", textMode "generate", numCards 3`
|
|
418
420
|
}
|
|
419
421
|
});
|
|
420
422
|
|
|
@@ -562,7 +564,7 @@ var requestTool = new ConnectorTool({
|
|
|
562
564
|
description: `Send authenticated requests to the Gamma REST API.
|
|
563
565
|
Authentication is handled automatically using the API Key (X-API-KEY header).
|
|
564
566
|
Use this tool for listing themes, listing folders, checking generation status, and other read operations.
|
|
565
|
-
For creating presentations/documents, prefer the
|
|
567
|
+
For creating presentations/documents, prefer the connector_gamma_generate tool instead.`,
|
|
566
568
|
inputSchema,
|
|
567
569
|
outputSchema,
|
|
568
570
|
async execute({ connectionId, method, path: path2, body }, connections) {
|
|
@@ -627,7 +629,7 @@ var inputSchema2 = z2.object({
|
|
|
627
629
|
format: z2.enum(["presentation", "document", "webpage", "social"]).optional().describe("Type of artifact to create. Defaults to 'presentation'."),
|
|
628
630
|
numCards: z2.number().int().min(1).max(75).optional().describe("Number of cards/slides. Defaults to 10."),
|
|
629
631
|
themeId: z2.string().optional().describe(
|
|
630
|
-
"Theme ID for look and feel. Use
|
|
632
|
+
"Theme ID for look and feel. Use connector_gamma_request GET /themes to list available themes."
|
|
631
633
|
),
|
|
632
634
|
tone: z2.string().optional().describe(
|
|
633
635
|
"Tone/voice of the output (e.g., 'professional', 'casual', 'academic'). Max 500 chars."
|
|
@@ -675,7 +677,7 @@ var generateTool = new ConnectorTool({
|
|
|
675
677
|
name: "generate",
|
|
676
678
|
description: `Generate a presentation, document, webpage, or social post using Gamma AI.
|
|
677
679
|
This tool creates the generation, then automatically polls until completion and returns the result URL.
|
|
678
|
-
Use
|
|
680
|
+
Use connector_gamma_request GET /themes first if you want to pick a specific theme.
|
|
679
681
|
Gamma does NOT support image uploads. To visualize data, embed raw numbers directly into inputText as structured text (markdown tables, bullet lists with figures) \u2014 Gamma AI will render charts and visuals from the data.`,
|
|
680
682
|
inputSchema: inputSchema2,
|
|
681
683
|
outputSchema: outputSchema2,
|
|
@@ -799,8 +801,8 @@ var gammaConnector = new ConnectorPlugin({
|
|
|
799
801
|
systemPrompt: {
|
|
800
802
|
en: `### Tools
|
|
801
803
|
|
|
802
|
-
- \`
|
|
803
|
-
- \`
|
|
804
|
+
- \`connector_gamma_request\`: Send authenticated requests to the Gamma REST API. Use for listing themes, folders, and checking generation status. Authentication (X-API-KEY) is configured automatically.
|
|
805
|
+
- \`connector_gamma_generate\`: Generate a presentation, document, webpage, or social post using Gamma AI. This tool handles the full workflow: creates the generation, polls for completion, and returns the result URL. Prefer this over manually calling POST /generations + polling.
|
|
804
806
|
|
|
805
807
|
### Business Logic
|
|
806
808
|
|
|
@@ -873,8 +875,8 @@ export default async function handler(c: Context) {
|
|
|
873
875
|
Gamma does NOT support uploading images. If you want to visualize data (charts, graphs, tables), embed the raw numbers and data directly into \`inputText\` as structured text (e.g., markdown tables, bullet lists with figures). Gamma AI will render appropriate visual elements from the data. Do NOT generate chart images locally and try to include them \u2014 instead, pass the data values inline so Gamma can create its own visualizations.`,
|
|
874
876
|
ja: `### \u30C4\u30FC\u30EB
|
|
875
877
|
|
|
876
|
-
- \`
|
|
877
|
-
- \`
|
|
878
|
+
- \`connector_gamma_request\`: Gamma REST API\u306B\u8A8D\u8A3C\u6E08\u307F\u30EA\u30AF\u30A8\u30B9\u30C8\u3092\u9001\u4FE1\u3057\u307E\u3059\u3002\u30C6\u30FC\u30DE\u4E00\u89A7\u3001\u30D5\u30A9\u30EB\u30C0\u4E00\u89A7\u3001\u751F\u6210\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u78BA\u8A8D\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002\u8A8D\u8A3C\uFF08X-API-KEY\uFF09\u306F\u81EA\u52D5\u7684\u306B\u8A2D\u5B9A\u3055\u308C\u307E\u3059\u3002
|
|
879
|
+
- \`connector_gamma_generate\`: Gamma AI\u3092\u4F7F\u3063\u3066\u30D7\u30EC\u30BC\u30F3\u30C6\u30FC\u30B7\u30E7\u30F3\u3001\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3001\u30A6\u30A7\u30D6\u30DA\u30FC\u30B8\u3001\u30BD\u30FC\u30B7\u30E3\u30EB\u6295\u7A3F\u3092\u751F\u6210\u3057\u307E\u3059\u3002\u751F\u6210\u306E\u4F5C\u6210\u304B\u3089\u30DD\u30FC\u30EA\u30F3\u30B0\u3001\u7D50\u679CURL\u306E\u8FD4\u5374\u307E\u3067\u4E00\u62EC\u3067\u51E6\u7406\u3057\u307E\u3059\u3002\u624B\u52D5\u3067POST /generations + \u30DD\u30FC\u30EA\u30F3\u30B0\u3059\u308B\u3088\u308A\u3082\u3053\u3061\u3089\u3092\u63A8\u5968\u3057\u307E\u3059\u3002
|
|
878
880
|
|
|
879
881
|
### Business Logic
|
|
880
882
|
|
|
@@ -16,6 +16,7 @@ var init_parameter_definition = __esm({
|
|
|
16
16
|
type;
|
|
17
17
|
secret;
|
|
18
18
|
required;
|
|
19
|
+
isDeprecated;
|
|
19
20
|
constructor(config) {
|
|
20
21
|
this.slug = config.slug;
|
|
21
22
|
this.name = config.name;
|
|
@@ -24,6 +25,7 @@ var init_parameter_definition = __esm({
|
|
|
24
25
|
this.type = config.type;
|
|
25
26
|
this.secret = config.secret;
|
|
26
27
|
this.required = config.required;
|
|
28
|
+
this.isDeprecated = config.isDeprecated ?? false;
|
|
27
29
|
}
|
|
28
30
|
/**
|
|
29
31
|
* Get the parameter value from a ConnectorConnectionObject.
|
|
@@ -142,7 +144,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
|
|
|
142
144
|
/**
|
|
143
145
|
* Create tools for connections that belong to this connector.
|
|
144
146
|
* Filters connections by connectorKey internally.
|
|
145
|
-
* Returns tools keyed as
|
|
147
|
+
* Returns tools keyed as `connector_${connectorKey}_${toolName}`.
|
|
146
148
|
*/
|
|
147
149
|
createTools(connections, config, opts) {
|
|
148
150
|
const myConnections = connections.filter(
|
|
@@ -152,7 +154,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
|
|
|
152
154
|
for (const t of Object.values(this.tools)) {
|
|
153
155
|
const tool = t.createTool(myConnections, config);
|
|
154
156
|
const originalToModelOutput = tool.toModelOutput;
|
|
155
|
-
result[
|
|
157
|
+
result[`connector_${this.connectorKey}_${t.name}`] = {
|
|
156
158
|
...tool,
|
|
157
159
|
toModelOutput: async (options) => {
|
|
158
160
|
if (!originalToModelOutput) {
|
|
@@ -16,6 +16,7 @@ var init_parameter_definition = __esm({
|
|
|
16
16
|
type;
|
|
17
17
|
secret;
|
|
18
18
|
required;
|
|
19
|
+
isDeprecated;
|
|
19
20
|
constructor(config) {
|
|
20
21
|
this.slug = config.slug;
|
|
21
22
|
this.name = config.name;
|
|
@@ -24,6 +25,7 @@ var init_parameter_definition = __esm({
|
|
|
24
25
|
this.type = config.type;
|
|
25
26
|
this.secret = config.secret;
|
|
26
27
|
this.required = config.required;
|
|
28
|
+
this.isDeprecated = config.isDeprecated ?? false;
|
|
27
29
|
}
|
|
28
30
|
/**
|
|
29
31
|
* Get the parameter value from a ConnectorConnectionObject.
|
|
@@ -402,7 +404,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
|
|
|
402
404
|
/**
|
|
403
405
|
* Create tools for connections that belong to this connector.
|
|
404
406
|
* Filters connections by connectorKey internally.
|
|
405
|
-
* Returns tools keyed as
|
|
407
|
+
* Returns tools keyed as `connector_${connectorKey}_${toolName}`.
|
|
406
408
|
*/
|
|
407
409
|
createTools(connections, config, opts) {
|
|
408
410
|
const myConnections = connections.filter(
|
|
@@ -412,7 +414,7 @@ var ConnectorPlugin = class _ConnectorPlugin {
|
|
|
412
414
|
for (const t of Object.values(this.tools)) {
|
|
413
415
|
const tool = t.createTool(myConnections, config);
|
|
414
416
|
const originalToModelOutput = tool.toModelOutput;
|
|
415
|
-
result[
|
|
417
|
+
result[`connector_${this.connectorKey}_${t.name}`] = {
|
|
416
418
|
...tool,
|
|
417
419
|
toModelOutput: async (options) => {
|
|
418
420
|
if (!originalToModelOutput) {
|
|
@@ -542,16 +544,16 @@ var AUTH_TYPES = {
|
|
|
542
544
|
// ../connectors/src/connectors/github/setup.ts
|
|
543
545
|
var githubOnboarding = new ConnectorOnboarding({
|
|
544
546
|
dataOverviewInstructions: {
|
|
545
|
-
en: `1. Call
|
|
546
|
-
2. Call
|
|
547
|
+
en: `1. Call connector_github_request with GET /user to confirm credentials and discover the authenticated account (login, name, plan).
|
|
548
|
+
2. Call connector_github_request with GET /user/repos?per_page=10&sort=updated to sample repositories the token can see. For organisation-owned repos, use GET /orgs/{org}/repos.
|
|
547
549
|
3. Pick a representative repo and inspect its activity:
|
|
548
550
|
- GET /repos/{owner}/{repo}/issues?state=open&per_page=10 \u2014 recent open issues (the GitHub API treats pull requests as issues; filter with the \`pull_request\` field if you want only issues).
|
|
549
551
|
- GET /repos/{owner}/{repo}/pulls?state=open&per_page=10 \u2014 open pull requests.
|
|
550
552
|
- GET /repos/{owner}/{repo}/commits?per_page=10 \u2014 recent commits on the default branch.
|
|
551
553
|
4. For broad discovery, use the search endpoints (GET /search/repositories?q=..., /search/issues?q=..., /search/code?q=...). These are heavily rate-limited (30 req/min for authenticated users), so use them sparingly.
|
|
552
554
|
5. Pagination is page-based: \`?page=1&per_page=100\` (max 100). The \`Link\` response header carries \`rel="next"\` / \`rel="last"\` URLs when more results exist.`,
|
|
553
|
-
ja: `1.
|
|
554
|
-
2.
|
|
555
|
+
ja: `1. connector_github_request \u3067 GET /user \u3092\u547C\u3073\u51FA\u3057\u3001\u8A8D\u8A3C\u60C5\u5831\u306E\u78BA\u8A8D\u3068\u8A8D\u8A3C\u6E08\u307F\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u60C5\u5831\uFF08login, name, plan\uFF09\u3092\u53D6\u5F97\u3057\u307E\u3059\u3002
|
|
556
|
+
2. connector_github_request \u3067 GET /user/repos?per_page=10&sort=updated \u3092\u547C\u3073\u51FA\u3057\u3066\u30A2\u30AF\u30BB\u30B9\u53EF\u80FD\u306A\u30EA\u30DD\u30B8\u30C8\u30EA\u3092\u30B5\u30F3\u30D7\u30EA\u30F3\u30B0\u3057\u307E\u3059\u3002Organization \u6240\u6709\u306E\u30EA\u30DD\u30B8\u30C8\u30EA\u306F GET /orgs/{org}/repos \u3092\u4F7F\u7528\u3057\u307E\u3059\u3002
|
|
555
557
|
3. \u4EE3\u8868\u7684\u306A\u30EA\u30DD\u30B8\u30C8\u30EA\u3092\u9078\u3073\u3001\u30A2\u30AF\u30C6\u30A3\u30D3\u30C6\u30A3\u3092\u78BA\u8A8D\u3057\u307E\u3059:
|
|
556
558
|
- GET /repos/{owner}/{repo}/issues?state=open&per_page=10 \u2014 \u76F4\u8FD1\u306E\u30AA\u30FC\u30D7\u30F3\u30A4\u30B7\u30E5\u30FC\uFF08GitHub API \u306F\u30D7\u30EB\u30EA\u30AF\u30A8\u30B9\u30C8\u3082\u30A4\u30B7\u30E5\u30FC\u6271\u3044\u3057\u307E\u3059\u3002\u30A4\u30B7\u30E5\u30FC\u306E\u307F\u304C\u5FC5\u8981\u306A\u5834\u5408\u306F \`pull_request\` \u30D5\u30A3\u30FC\u30EB\u30C9\u3067\u9664\u5916\uFF09\u3002
|
|
557
559
|
- GET /repos/{owner}/{repo}/pulls?state=open&per_page=10 \u2014 \u30AA\u30FC\u30D7\u30F3\u306A\u30D7\u30EB\u30EA\u30AF\u30A8\u30B9\u30C8\u4E00\u89A7\u3002
|
|
@@ -879,14 +881,14 @@ var githubConnector = new ConnectorPlugin({
|
|
|
879
881
|
systemPrompt: {
|
|
880
882
|
en: `### Tools
|
|
881
883
|
|
|
882
|
-
- \`
|
|
884
|
+
- \`connector_github_request\`: The only way to call the GitHub REST API. Use it to read repositories, issues, pull requests, commits, comments, releases, GitHub Actions runs, organisation metadata, and the search endpoints. Authentication (\`Authorization: Bearer <PAT>\`) and required headers (\`Accept: application/vnd.github+json\`, \`X-GitHub-Api-Version: 2022-11-28\`, \`User-Agent\`) are configured automatically. Both Classic (\`ghp_\u2026\`) and fine-grained (\`github_pat_\u2026\`) tokens work.
|
|
883
885
|
|
|
884
886
|
### Cloning Repositories for Deep Code Exploration
|
|
885
887
|
|
|
886
|
-
\`
|
|
888
|
+
\`connector_github_request\` plus \`/repos/{owner}/{repo}/contents/{path}\` is fine for reading a few files. When the task requires deep exploration \u2014 reading many files, searching across the codebase with ripgrep / grep, or inspecting many commits \u2014 prefer \`git clone\` via the bash tool. Follow these rules **strictly**:
|
|
887
889
|
|
|
888
890
|
1. **Always clone OUTSIDE the dashboard project.** The current working directory is the user's Vite-based dashboard project, which is itself a git repository. Cloning into it (or any subdirectory of it) would pollute the dashboard's git index, risk accidental commits, and create nested-repo confusion. Always clone into a path outside the project \u2014 use \`$(mktemp -d)\`, \`/tmp/<unique-name>\`, or \`~/.cache/<unique-name>\`.
|
|
889
|
-
2. **NEVER commit, push, or otherwise write to the cloned repo.** This is a strictly read-only flow. Do not run \`git commit\`, \`git push\`, \`git tag\`, \`git rebase\`, or any other write operation inside the cloned working tree. The connector is for reading source; if the task requires writing back to GitHub (creating an issue, posting a comment, etc.), use \`
|
|
891
|
+
2. **NEVER commit, push, or otherwise write to the cloned repo.** This is a strictly read-only flow. Do not run \`git commit\`, \`git push\`, \`git tag\`, \`git rebase\`, or any other write operation inside the cloned working tree. The connector is for reading source; if the task requires writing back to GitHub (creating an issue, posting a comment, etc.), use \`connector_github_request\` \u2014 never \`git push\`.
|
|
890
892
|
3. **Authenticate via HTTPS using the PAT inline.** Run \`git clone https://<TOKEN>@github.com/<owner>/<repo>.git <target-dir>\`. Avoid logging the URL with the token interpolated; redact when echoing commands.
|
|
891
893
|
4. **Prefer shallow clones.** Use \`--depth=1 --single-branch\` unless full history is specifically required.
|
|
892
894
|
5. **Clean up when done.** Remove the cloned directory (\`rm -rf <target-dir>\`) once exploration is complete.
|
|
@@ -986,14 +988,14 @@ export default async function handler(c: Context) {
|
|
|
986
988
|
- GET \`/rate_limit\` \u2014 Inspect remaining quota across REST / GraphQL / search`,
|
|
987
989
|
ja: `### \u30C4\u30FC\u30EB
|
|
988
990
|
|
|
989
|
-
- \`
|
|
991
|
+
- \`connector_github_request\`: GitHub REST API \u3092\u547C\u3073\u51FA\u3059\u552F\u4E00\u306E\u624B\u6BB5\u3067\u3059\u3002\u30EA\u30DD\u30B8\u30C8\u30EA\u3001Issue\u3001Pull Request\u3001\u30B3\u30DF\u30C3\u30C8\u3001\u30B3\u30E1\u30F3\u30C8\u3001Release\u3001GitHub Actions \u306E\u30E9\u30F3\u3001\u7D44\u7E54\u30E1\u30BF\u60C5\u5831\u3001\u30B5\u30FC\u30C1\u7CFB\u30A8\u30F3\u30C9\u30DD\u30A4\u30F3\u30C8\u306E\u53D6\u5F97\u30FB\u66F4\u65B0\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002\u8A8D\u8A3C\uFF08\`Authorization: Bearer <PAT>\`\uFF09\u3068\u5FC5\u9808\u30D8\u30C3\u30C0\uFF08\`Accept: application/vnd.github+json\`\u3001\`X-GitHub-Api-Version: 2022-11-28\`\u3001\`User-Agent\`\uFF09\u306F\u81EA\u52D5\u3067\u8A2D\u5B9A\u3055\u308C\u307E\u3059\u3002Classic\uFF08\`ghp_\u2026\`\uFF09/ fine-grained\uFF08\`github_pat_\u2026\`\uFF09\u3069\u3061\u3089\u306E PAT \u3082\u5229\u7528\u53EF\u80FD\u3067\u3059\u3002
|
|
990
992
|
|
|
991
993
|
### \u6DF1\u3044\u30B3\u30FC\u30C9\u63A2\u7D22\u306E\u305F\u3081\u306E\u30EA\u30DD\u30B8\u30C8\u30EA\u30AF\u30ED\u30FC\u30F3
|
|
992
994
|
|
|
993
|
-
\u6570\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u3080\u7A0B\u5EA6\u306A\u3089 \`
|
|
995
|
+
\u6570\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u3080\u7A0B\u5EA6\u306A\u3089 \`connector_github_request\` \u3068 \`/repos/{owner}/{repo}/contents/{path}\` \u3067\u5341\u5206\u3067\u3059\u3002\u591A\u6570\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u3080\u3001ripgrep / grep \u3067\u6A2A\u65AD\u691C\u7D22\u3059\u308B\u3001\u8907\u6570\u30B3\u30DF\u30C3\u30C8\u3092\u8ABF\u3079\u308B\u306A\u3069 **\u6DF1\u3044\u63A2\u7D22\u304C\u5FC5\u8981\u306A\u5834\u5408\u306F** bash \u30C4\u30FC\u30EB\u7D4C\u7531\u3067 \`git clone\` \u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\u3002\u4EE5\u4E0B\u306E\u30EB\u30FC\u30EB\u3092 **\u53B3\u5B88** \u3059\u308B\u3053\u3068\uFF1A
|
|
994
996
|
|
|
995
997
|
1. **\u5FC5\u305A\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u5916\u306B\u30AF\u30ED\u30FC\u30F3\u3059\u308B\u3053\u3068\u3002** \u73FE\u5728\u306E\u4F5C\u696D\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u306F\u30E6\u30FC\u30B6\u30FC\u306E Vite \u30D9\u30FC\u30B9\u306E\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08\u305D\u308C\u81EA\u4F53\u304C git \u30EA\u30DD\u30B8\u30C8\u30EA\uFF09\u3067\u3059\u3002\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u5185\uFF08\u3042\u308B\u3044\u306F\u305D\u306E\u30B5\u30D6\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\uFF09\u306B\u30AF\u30ED\u30FC\u30F3\u3059\u308B\u3068\u30C0\u30C3\u30B7\u30E5\u30DC\u30FC\u30C9\u306E git \u306E\u72B6\u614B\u3092\u6C5A\u67D3\u3057\u3001\u8AA4\u30B3\u30DF\u30C3\u30C8\u3084\u30CD\u30B9\u30C8\u3057\u305F\u30EA\u30DD\u30B8\u30C8\u30EA\u306E\u6DF7\u4E71\u306E\u539F\u56E0\u306B\u306A\u308A\u307E\u3059\u3002\u5FC5\u305A\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u5916\u306E\u30D1\u30B9\uFF08\`$(mktemp -d)\`, \`/tmp/<unique-name>\`, \`~/.cache/<unique-name>\` \u306A\u3069\uFF09\u306B\u30AF\u30ED\u30FC\u30F3\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
|
996
|
-
2. **\u7D76\u5BFE\u306B commit / push / \u66F8\u304D\u8FBC\u307F\u64CD\u4F5C\u3092\u3057\u306A\u3044\u3053\u3068\u3002** \u3053\u308C\u306F\u53B3\u5BC6\u306B read-only \u306E\u30D5\u30ED\u30FC\u3067\u3059\u3002\u30AF\u30ED\u30FC\u30F3\u3057\u305F\u4F5C\u696D\u30C4\u30EA\u30FC\u5185\u3067 \`git commit\` / \`git push\` / \`git tag\` / \`git rebase\` \u306A\u3069\u306E\u66F8\u304D\u8FBC\u307F\u64CD\u4F5C\u3092\u884C\u308F\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002GitHub \u3078\u306E\u66F8\u304D\u8FBC\u307F\u304C\u5FC5\u8981\u306A\u5834\u5408\uFF08Issue \u4F5C\u6210\u3001\u30B3\u30E1\u30F3\u30C8\u6295\u7A3F\u7B49\uFF09\u306F \`
|
|
998
|
+
2. **\u7D76\u5BFE\u306B commit / push / \u66F8\u304D\u8FBC\u307F\u64CD\u4F5C\u3092\u3057\u306A\u3044\u3053\u3068\u3002** \u3053\u308C\u306F\u53B3\u5BC6\u306B read-only \u306E\u30D5\u30ED\u30FC\u3067\u3059\u3002\u30AF\u30ED\u30FC\u30F3\u3057\u305F\u4F5C\u696D\u30C4\u30EA\u30FC\u5185\u3067 \`git commit\` / \`git push\` / \`git tag\` / \`git rebase\` \u306A\u3069\u306E\u66F8\u304D\u8FBC\u307F\u64CD\u4F5C\u3092\u884C\u308F\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002GitHub \u3078\u306E\u66F8\u304D\u8FBC\u307F\u304C\u5FC5\u8981\u306A\u5834\u5408\uFF08Issue \u4F5C\u6210\u3001\u30B3\u30E1\u30F3\u30C8\u6295\u7A3F\u7B49\uFF09\u306F \`connector_github_request\` \u3092\u4F7F\u7528\u3057\u3001\`git push\` \u3067\u884C\u308F\u306A\u3044\u3067\u304F\u3060\u3055\u3044\u3002
|
|
997
999
|
3. **HTTPS \u8A8D\u8A3C\u3067 PAT \u3092\u30A4\u30F3\u30E9\u30A4\u30F3\u3067\u6E21\u3059\u3053\u3068\u3002** \`git clone https://<TOKEN>@github.com/<owner>/<repo>.git <target-dir>\` \u306E\u3088\u3046\u306B\u57CB\u3081\u8FBC\u307F\u307E\u3059\u3002\u30C8\u30FC\u30AF\u30F3\u5165\u308A\u306E URL \u3092\u305D\u306E\u307E\u307E\u30ED\u30B0\u306B\u51FA\u529B\u3057\u306A\u3044\u3088\u3046\u3001\u30B3\u30DE\u30F3\u30C9\u3092\u30A8\u30B3\u30FC\u3059\u308B\u969B\u306F\u30DE\u30B9\u30AF\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
|
998
1000
|
4. **shallow clone \u3092\u512A\u5148\u3059\u308B\u3053\u3068\u3002** \u5C65\u6B74\u304C\u7279\u306B\u5FC5\u8981\u3067\u306A\u3044\u9650\u308A \`--depth=1 --single-branch\` \u3092\u4F7F\u7528\u3057\u307E\u3059\u3002
|
|
999
1001
|
5. **\u4F5C\u696D\u5F8C\u306F\u524A\u9664\u3059\u308B\u3053\u3068\u3002** \u63A2\u7D22\u304C\u7D42\u308F\u3063\u305F\u3089\u30AF\u30ED\u30FC\u30F3\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u524A\u9664\uFF08\`rm -rf <target-dir>\`\uFF09\u3057\u3066\u304F\u3060\u3055\u3044\u3002
|
|
@@ -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) {
|
|
@@ -510,12 +510,12 @@ var gmailOnboarding = new ConnectorOnboarding({
|
|
|
510
510
|
- Write only 1 sentence between tool calls, then immediately call the next tool. Skip unnecessary explanations and proceed efficiently`
|
|
511
511
|
},
|
|
512
512
|
dataOverviewInstructions: {
|
|
513
|
-
en: `1. Call
|
|
514
|
-
2. Call
|
|
515
|
-
3. Call
|
|
516
|
-
ja: `1.
|
|
517
|
-
2.
|
|
518
|
-
3. \u5404\u30E1\u30C3\u30BB\u30FC\u30B8\u306B\u3064\u3044\u3066
|
|
513
|
+
en: `1. Call connector_gmail-oauth_request with GET /me/labels to list all labels
|
|
514
|
+
2. Call connector_gmail-oauth_request with GET /me/messages?maxResults=5 to get recent message IDs
|
|
515
|
+
3. Call connector_gmail-oauth_request with GET /me/messages/{id}?format=metadata for each message to see subjects and senders`,
|
|
516
|
+
ja: `1. connector_gmail-oauth_request \u3067 GET /me/labels \u3092\u547C\u3073\u51FA\u3057\u3001\u5168\u30E9\u30D9\u30EB\u4E00\u89A7\u3092\u53D6\u5F97
|
|
517
|
+
2. connector_gmail-oauth_request \u3067 GET /me/messages?maxResults=5 \u3092\u547C\u3073\u51FA\u3057\u3001\u6700\u65B0\u30E1\u30C3\u30BB\u30FC\u30B8ID\u3092\u53D6\u5F97
|
|
518
|
+
3. \u5404\u30E1\u30C3\u30BB\u30FC\u30B8\u306B\u3064\u3044\u3066 connector_gmail-oauth_request \u3067 GET /me/messages/{id}?format=metadata \u3092\u547C\u3073\u51FA\u3057\u3001\u4EF6\u540D\u3068\u9001\u4FE1\u8005\u3092\u78BA\u8A8D`
|
|
519
519
|
}
|
|
520
520
|
});
|
|
521
521
|
|
|
@@ -627,7 +627,7 @@ var gmailOauthConnector = new ConnectorPlugin({
|
|
|
627
627
|
systemPrompt: {
|
|
628
628
|
en: `### Tools
|
|
629
629
|
|
|
630
|
-
- \`
|
|
630
|
+
- \`connector_gmail-oauth_request\`: The only way to call the Gmail API (read-only). Use it to list messages, get message details, list labels, list threads, and get user profile. Authentication is configured automatically via OAuth.
|
|
631
631
|
|
|
632
632
|
### Gmail API Reference
|
|
633
633
|
|
|
@@ -710,7 +710,7 @@ thread.messages.forEach(m => console.log(m.snippet));
|
|
|
710
710
|
\`\`\``,
|
|
711
711
|
ja: `### \u30C4\u30FC\u30EB
|
|
712
712
|
|
|
713
|
-
- \`
|
|
713
|
+
- \`connector_gmail-oauth_request\`: Gmail API\u3092\u547C\u3073\u51FA\u3059\u552F\u4E00\u306E\u624B\u6BB5\u3067\u3059\uFF08\u8AAD\u307F\u53D6\u308A\u5C02\u7528\uFF09\u3002\u30E1\u30C3\u30BB\u30FC\u30B8\u4E00\u89A7\u306E\u53D6\u5F97\u3001\u30E1\u30C3\u30BB\u30FC\u30B8\u8A73\u7D30\u306E\u53D6\u5F97\u3001\u30E9\u30D9\u30EB\u4E00\u89A7\u3001\u30B9\u30EC\u30C3\u30C9\u4E00\u89A7\u3001\u30E6\u30FC\u30B6\u30FC\u30D7\u30ED\u30D5\u30A3\u30FC\u30EB\u306E\u53D6\u5F97\u306B\u4F7F\u7528\u3057\u307E\u3059\u3002OAuth\u7D4C\u7531\u3067\u8A8D\u8A3C\u306F\u81EA\u52D5\u8A2D\u5B9A\u3055\u308C\u307E\u3059\u3002
|
|
714
714
|
|
|
715
715
|
### Gmail API \u30EA\u30D5\u30A1\u30EC\u30F3\u30B9
|
|
716
716
|
|