@dobbyai/mcp-external 1.1.0 → 1.2.0
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/README.md +44 -14
- package/dist/__tests__/agent-mail-tools.test.js +19 -26
- package/dist/__tests__/agent-mail-tools.test.js.map +1 -1
- package/dist/__tests__/auth.test.js +50 -5
- package/dist/__tests__/auth.test.js.map +1 -1
- package/dist/__tests__/doctor.test.d.ts +16 -0
- package/dist/__tests__/doctor.test.d.ts.map +1 -0
- package/dist/__tests__/doctor.test.js +258 -0
- package/dist/__tests__/doctor.test.js.map +1 -0
- package/dist/__tests__/external-agents-tools.test.d.ts +11 -0
- package/dist/__tests__/external-agents-tools.test.d.ts.map +1 -0
- package/dist/__tests__/external-agents-tools.test.js +619 -0
- package/dist/__tests__/external-agents-tools.test.js.map +1 -0
- package/dist/__tests__/gateway-bearer.test.d.ts +12 -0
- package/dist/__tests__/gateway-bearer.test.d.ts.map +1 -0
- package/dist/__tests__/gateway-bearer.test.js +112 -0
- package/dist/__tests__/gateway-bearer.test.js.map +1 -0
- package/dist/__tests__/gateway-key-resolver.test.d.ts +10 -0
- package/dist/__tests__/gateway-key-resolver.test.d.ts.map +1 -0
- package/dist/__tests__/gateway-key-resolver.test.js +125 -0
- package/dist/__tests__/gateway-key-resolver.test.js.map +1 -0
- package/dist/__tests__/http-concurrency.test.d.ts +20 -0
- package/dist/__tests__/http-concurrency.test.d.ts.map +1 -0
- package/dist/__tests__/http-concurrency.test.js +254 -0
- package/dist/__tests__/http-concurrency.test.js.map +1 -0
- package/dist/__tests__/integration/protocol.test.js +14 -8
- package/dist/__tests__/integration/protocol.test.js.map +1 -1
- package/dist/__tests__/mcp-integrations.test.js +20 -30
- package/dist/__tests__/mcp-integrations.test.js.map +1 -1
- package/dist/__tests__/memory-graph-tools.test.js +27 -38
- package/dist/__tests__/memory-graph-tools.test.js.map +1 -1
- package/dist/__tests__/registry-dispatch.test.d.ts +11 -0
- package/dist/__tests__/registry-dispatch.test.d.ts.map +1 -0
- package/dist/__tests__/registry-dispatch.test.js +30 -0
- package/dist/__tests__/registry-dispatch.test.js.map +1 -0
- package/dist/__tests__/registry-listing-parity.test.d.ts +2 -0
- package/dist/__tests__/registry-listing-parity.test.d.ts.map +1 -0
- package/dist/__tests__/registry-listing-parity.test.js +89 -0
- package/dist/__tests__/registry-listing-parity.test.js.map +1 -0
- package/dist/__tests__/role-cap.test.d.ts +2 -0
- package/dist/__tests__/role-cap.test.d.ts.map +1 -0
- package/dist/__tests__/role-cap.test.js +113 -0
- package/dist/__tests__/role-cap.test.js.map +1 -0
- package/dist/__tests__/schedule-tools.test.js +15 -20
- package/dist/__tests__/schedule-tools.test.js.map +1 -1
- package/dist/__tests__/server-gateway-key.test.d.ts +18 -0
- package/dist/__tests__/server-gateway-key.test.d.ts.map +1 -0
- package/dist/__tests__/server-gateway-key.test.js +148 -0
- package/dist/__tests__/server-gateway-key.test.js.map +1 -0
- package/dist/__tests__/server-user-scoped.test.d.ts +34 -0
- package/dist/__tests__/server-user-scoped.test.d.ts.map +1 -0
- package/dist/__tests__/server-user-scoped.test.js +577 -0
- package/dist/__tests__/server-user-scoped.test.js.map +1 -0
- package/dist/__tests__/task-id-pattern.test.d.ts +12 -0
- package/dist/__tests__/task-id-pattern.test.d.ts.map +1 -0
- package/dist/__tests__/task-id-pattern.test.js +43 -0
- package/dist/__tests__/task-id-pattern.test.js.map +1 -0
- package/dist/__tests__/tiers.test.js +152 -56
- package/dist/__tests__/tiers.test.js.map +1 -1
- package/dist/__tests__/tools/hosted-agents.test.d.ts +9 -0
- package/dist/__tests__/tools/hosted-agents.test.d.ts.map +1 -0
- package/dist/__tests__/tools/hosted-agents.test.js +301 -0
- package/dist/__tests__/tools/hosted-agents.test.js.map +1 -0
- package/dist/__tests__/tools/llm-providers.test.d.ts +10 -0
- package/dist/__tests__/tools/llm-providers.test.d.ts.map +1 -0
- package/dist/__tests__/tools/llm-providers.test.js +105 -0
- package/dist/__tests__/tools/llm-providers.test.js.map +1 -0
- package/dist/__tests__/tools/services.test.js +139 -98
- package/dist/__tests__/tools/services.test.js.map +1 -1
- package/dist/__tests__/tools.test.js +24 -15
- package/dist/__tests__/tools.test.js.map +1 -1
- package/dist/__tests__/transport.test.js +365 -23
- package/dist/__tests__/transport.test.js.map +1 -1
- package/dist/__tests__/validate-credentials.test.d.ts +9 -0
- package/dist/__tests__/validate-credentials.test.d.ts.map +1 -0
- package/dist/__tests__/validate-credentials.test.js +172 -0
- package/dist/__tests__/validate-credentials.test.js.map +1 -0
- package/dist/__tests__/web-eval-tools.test.js +21 -32
- package/dist/__tests__/web-eval-tools.test.js.map +1 -1
- package/dist/__tests__/whoami.test.d.ts +11 -0
- package/dist/__tests__/whoami.test.d.ts.map +1 -0
- package/dist/__tests__/whoami.test.js +194 -0
- package/dist/__tests__/whoami.test.js.map +1 -0
- package/dist/__tests__/workflow-tools.test.js +20 -27
- package/dist/__tests__/workflow-tools.test.js.map +1 -1
- package/dist/__tests__/workloads.test.d.ts +9 -0
- package/dist/__tests__/workloads.test.d.ts.map +1 -0
- package/dist/__tests__/workloads.test.js +169 -0
- package/dist/__tests__/workloads.test.js.map +1 -0
- package/dist/auth/token-verifier.d.ts +11 -6
- package/dist/auth/token-verifier.d.ts.map +1 -1
- package/dist/auth/token-verifier.js +41 -19
- package/dist/auth/token-verifier.js.map +1 -1
- package/dist/connectors/claude-desktop.d.ts.map +1 -1
- package/dist/connectors/claude-desktop.js +3 -2
- package/dist/connectors/claude-desktop.js.map +1 -1
- package/dist/connectors/cursor.d.ts.map +1 -1
- package/dist/connectors/cursor.js +3 -2
- package/dist/connectors/cursor.js.map +1 -1
- package/dist/connectors/setup.d.ts.map +1 -1
- package/dist/connectors/setup.js +2 -1
- package/dist/connectors/setup.js.map +1 -1
- package/dist/connectors/vscode.d.ts.map +1 -1
- package/dist/connectors/vscode.js +3 -2
- package/dist/connectors/vscode.js.map +1 -1
- package/dist/connectors/windsurf.d.ts.map +1 -1
- package/dist/connectors/windsurf.js +3 -2
- package/dist/connectors/windsurf.js.map +1 -1
- package/dist/doctor.d.ts +34 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +134 -0
- package/dist/doctor.js.map +1 -0
- package/dist/http-server.d.ts +24 -3
- package/dist/http-server.d.ts.map +1 -1
- package/dist/http-server.js +342 -62
- package/dist/http-server.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +72 -208
- package/dist/index.js.map +1 -1
- package/dist/lib/consts.d.ts +21 -0
- package/dist/lib/consts.d.ts.map +1 -0
- package/dist/lib/consts.js +30 -0
- package/dist/lib/consts.js.map +1 -0
- package/dist/lib/dobby-client.d.ts +50 -23
- package/dist/lib/dobby-client.d.ts.map +1 -1
- package/dist/lib/dobby-client.js +105 -54
- package/dist/lib/dobby-client.js.map +1 -1
- package/dist/lib/gateway-key-resolver.d.ts +38 -0
- package/dist/lib/gateway-key-resolver.d.ts.map +1 -0
- package/dist/lib/gateway-key-resolver.js +59 -0
- package/dist/lib/gateway-key-resolver.js.map +1 -0
- package/dist/lib/log.d.ts +25 -0
- package/dist/lib/log.d.ts.map +1 -0
- package/dist/lib/log.js +36 -0
- package/dist/lib/log.js.map +1 -0
- package/dist/server.d.ts +175 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +1017 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/agent-mail.d.ts +0 -41
- package/dist/tools/agent-mail.d.ts.map +1 -1
- package/dist/tools/agent-mail.js +0 -222
- package/dist/tools/agent-mail.js.map +1 -1
- package/dist/tools/agent-versions.d.ts +93 -0
- package/dist/tools/agent-versions.d.ts.map +1 -0
- package/dist/tools/agent-versions.js +99 -0
- package/dist/tools/agent-versions.js.map +1 -0
- package/dist/tools/approvals.d.ts +0 -34
- package/dist/tools/approvals.d.ts.map +1 -1
- package/dist/tools/approvals.js +0 -81
- package/dist/tools/approvals.js.map +1 -1
- package/dist/tools/claude-code-sync.d.ts +40 -0
- package/dist/tools/claude-code-sync.d.ts.map +1 -0
- package/dist/tools/claude-code-sync.js +52 -0
- package/dist/tools/claude-code-sync.js.map +1 -0
- package/dist/tools/control-plane.d.ts +118 -0
- package/dist/tools/control-plane.d.ts.map +1 -0
- package/dist/tools/control-plane.js +135 -0
- package/dist/tools/control-plane.js.map +1 -0
- package/dist/tools/crew-builder.d.ts +0 -66
- package/dist/tools/crew-builder.d.ts.map +1 -1
- package/dist/tools/crew-builder.js +0 -185
- package/dist/tools/crew-builder.js.map +1 -1
- package/dist/tools/crewai.d.ts +0 -63
- package/dist/tools/crewai.d.ts.map +1 -1
- package/dist/tools/crewai.js +0 -145
- package/dist/tools/crewai.js.map +1 -1
- package/dist/tools/exa.d.ts +0 -35
- package/dist/tools/exa.d.ts.map +1 -1
- package/dist/tools/exa.js +0 -103
- package/dist/tools/exa.js.map +1 -1
- package/dist/tools/external-agents.d.ts +440 -0
- package/dist/tools/external-agents.d.ts.map +1 -0
- package/dist/tools/external-agents.js +386 -0
- package/dist/tools/external-agents.js.map +1 -0
- package/dist/tools/github-mcp.d.ts +0 -75
- package/dist/tools/github-mcp.d.ts.map +1 -1
- package/dist/tools/github-mcp.js +0 -162
- package/dist/tools/github-mcp.js.map +1 -1
- package/dist/tools/governance.d.ts +162 -18
- package/dist/tools/governance.d.ts.map +1 -1
- package/dist/tools/governance.js +208 -93
- package/dist/tools/governance.js.map +1 -1
- package/dist/tools/hosted-agents.d.ts +216 -0
- package/dist/tools/hosted-agents.d.ts.map +1 -0
- package/dist/tools/hosted-agents.js +214 -0
- package/dist/tools/hosted-agents.js.map +1 -0
- package/dist/tools/index.d.ts +3933 -1219
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +412 -393
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/jira.d.ts +0 -176
- package/dist/tools/jira.d.ts.map +1 -1
- package/dist/tools/jira.js +0 -365
- package/dist/tools/jira.js.map +1 -1
- package/dist/tools/llm-providers.d.ts +50 -0
- package/dist/tools/llm-providers.d.ts.map +1 -0
- package/dist/tools/llm-providers.js +41 -0
- package/dist/tools/llm-providers.js.map +1 -0
- package/dist/tools/mcp-metrics.d.ts +0 -15
- package/dist/tools/mcp-metrics.d.ts.map +1 -1
- package/dist/tools/mcp-metrics.js +0 -217
- package/dist/tools/mcp-metrics.js.map +1 -1
- package/dist/tools/mcp-tools.d.ts +0 -29
- package/dist/tools/mcp-tools.d.ts.map +1 -1
- package/dist/tools/mcp-tools.js +0 -131
- package/dist/tools/mcp-tools.js.map +1 -1
- package/dist/tools/mem0.d.ts +0 -41
- package/dist/tools/mem0.d.ts.map +1 -1
- package/dist/tools/mem0.js +65 -165
- package/dist/tools/mem0.js.map +1 -1
- package/dist/tools/memory-graph.d.ts +0 -46
- package/dist/tools/memory-graph.d.ts.map +1 -1
- package/dist/tools/memory-graph.js +0 -386
- package/dist/tools/memory-graph.js.map +1 -1
- package/dist/tools/memory-stores.d.ts +141 -0
- package/dist/tools/memory-stores.d.ts.map +1 -0
- package/dist/tools/memory-stores.js +147 -0
- package/dist/tools/memory-stores.js.map +1 -0
- package/dist/tools/messages.d.ts +0 -20
- package/dist/tools/messages.d.ts.map +1 -1
- package/dist/tools/messages.js +0 -49
- package/dist/tools/messages.js.map +1 -1
- package/dist/tools/moltbook.d.ts +0 -236
- package/dist/tools/moltbook.d.ts.map +1 -1
- package/dist/tools/moltbook.js +0 -458
- package/dist/tools/moltbook.js.map +1 -1
- package/dist/tools/monitoring-attribution.d.ts +71 -0
- package/dist/tools/monitoring-attribution.d.ts.map +1 -0
- package/dist/tools/monitoring-attribution.js +74 -0
- package/dist/tools/monitoring-attribution.js.map +1 -0
- package/dist/tools/ops.d.ts +0 -80
- package/dist/tools/ops.d.ts.map +1 -1
- package/dist/tools/ops.js +0 -209
- package/dist/tools/ops.js.map +1 -1
- package/dist/tools/orchestrations.d.ts +109 -0
- package/dist/tools/orchestrations.d.ts.map +1 -0
- package/dist/tools/orchestrations.js +115 -0
- package/dist/tools/orchestrations.js.map +1 -0
- package/dist/tools/outcomes.d.ts +138 -0
- package/dist/tools/outcomes.d.ts.map +1 -0
- package/dist/tools/outcomes.js +136 -0
- package/dist/tools/outcomes.js.map +1 -0
- package/dist/tools/schedules.d.ts +0 -47
- package/dist/tools/schedules.d.ts.map +1 -1
- package/dist/tools/schedules.js +0 -109
- package/dist/tools/schedules.js.map +1 -1
- package/dist/tools/services.d.ts +0 -16
- package/dist/tools/services.d.ts.map +1 -1
- package/dist/tools/services.js +0 -135
- package/dist/tools/services.js.map +1 -1
- package/dist/tools/sessions.d.ts +124 -0
- package/dist/tools/sessions.d.ts.map +1 -0
- package/dist/tools/sessions.js +130 -0
- package/dist/tools/sessions.js.map +1 -0
- package/dist/tools/setup-status.d.ts +29 -0
- package/dist/tools/setup-status.d.ts.map +1 -0
- package/dist/tools/setup-status.js +35 -0
- package/dist/tools/setup-status.js.map +1 -0
- package/dist/tools/tasks.d.ts +0 -57
- package/dist/tools/tasks.d.ts.map +1 -1
- package/dist/tools/tasks.js +8 -217
- package/dist/tools/tasks.js.map +1 -1
- package/dist/tools/tiers.d.ts +23 -7
- package/dist/tools/tiers.d.ts.map +1 -1
- package/dist/tools/tiers.js +180 -79
- package/dist/tools/tiers.js.map +1 -1
- package/dist/tools/unified-agents.d.ts +0 -19
- package/dist/tools/unified-agents.d.ts.map +1 -1
- package/dist/tools/unified-agents.js +2 -103
- package/dist/tools/unified-agents.js.map +1 -1
- package/dist/tools/web-eval.d.ts +0 -43
- package/dist/tools/web-eval.d.ts.map +1 -1
- package/dist/tools/web-eval.js +0 -211
- package/dist/tools/web-eval.js.map +1 -1
- package/dist/tools/workflow.d.ts +0 -66
- package/dist/tools/workflow.d.ts.map +1 -1
- package/dist/tools/workflow.js +2 -409
- package/dist/tools/workflow.js.map +1 -1
- package/dist/tools/workloads.d.ts +81 -0
- package/dist/tools/workloads.d.ts.map +1 -0
- package/dist/tools/workloads.js +81 -0
- package/dist/tools/workloads.js.map +1 -0
- package/package.json +7 -6
- package/dist/tools/knowledge-base.d.ts +0 -144
- package/dist/tools/knowledge-base.d.ts.map +0 -1
- package/dist/tools/knowledge-base.js +0 -179
- package/dist/tools/knowledge-base.js.map +0 -1
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External Agents Tools
|
|
3
|
+
*
|
|
4
|
+
* MCP tools for managing external agents (BYOA) through the Dobby gateway.
|
|
5
|
+
* All calls go to /api/v1/gateway/external-agents/* which use gk_svc_* auth
|
|
6
|
+
* and require `agents:read` / `agents:manage` / `agents:trigger` scopes.
|
|
7
|
+
*
|
|
8
|
+
* Session 3 of the External Agents API + MCP Parity plan:
|
|
9
|
+
* Session 1 ✅ — gateway-key CRUD
|
|
10
|
+
* Session 2 ✅ — gateway-key trigger/schedule/costs
|
|
11
|
+
* Session 3 ⬅︎ THIS — MCP tools wrapping those endpoints
|
|
12
|
+
* Session 4 ⏳ — SDK coverage + docs
|
|
13
|
+
*/
|
|
14
|
+
// ============================================
|
|
15
|
+
// Tool Definitions
|
|
16
|
+
// ============================================
|
|
17
|
+
export const externalAgentTools = {
|
|
18
|
+
register_external_agent: {
|
|
19
|
+
name: "register_external_agent",
|
|
20
|
+
annotations: {
|
|
21
|
+
title: "Register External Agent",
|
|
22
|
+
readOnlyHint: false,
|
|
23
|
+
destructiveHint: true,
|
|
24
|
+
openWorldHint: false,
|
|
25
|
+
},
|
|
26
|
+
description: "Register a new external agent (BYOA). Auto-provisions a gk_svc_* gateway key that the agent uses to call back (events, LLM). The gateway key is returned ONCE — save it immediately. Registering without endpoint_url creates the agent in 'draft' status — not live and excluded from auto-classification until you set endpoint_url and status 'active' via update_external_agent.",
|
|
27
|
+
inputSchema: {
|
|
28
|
+
type: "object",
|
|
29
|
+
properties: {
|
|
30
|
+
display_name: {
|
|
31
|
+
type: "string",
|
|
32
|
+
description: "Agent display name (3–100 chars)",
|
|
33
|
+
},
|
|
34
|
+
description: { type: "string", description: "Optional description" },
|
|
35
|
+
framework: {
|
|
36
|
+
type: "string",
|
|
37
|
+
enum: [
|
|
38
|
+
"crewai",
|
|
39
|
+
"langchain",
|
|
40
|
+
"openai",
|
|
41
|
+
"autogen",
|
|
42
|
+
"adk",
|
|
43
|
+
"claude_code",
|
|
44
|
+
"custom",
|
|
45
|
+
],
|
|
46
|
+
description: "Agent framework",
|
|
47
|
+
},
|
|
48
|
+
protocol: {
|
|
49
|
+
type: "string",
|
|
50
|
+
enum: ["a2a", "mcp", "rest", "webhook", "local"],
|
|
51
|
+
description: "Communication protocol",
|
|
52
|
+
},
|
|
53
|
+
endpoint_url: {
|
|
54
|
+
type: "string",
|
|
55
|
+
description: "URL where the agent is reachable (required for remote protocols)",
|
|
56
|
+
},
|
|
57
|
+
health_check_url: {
|
|
58
|
+
type: "string",
|
|
59
|
+
description: "Optional URL for health checks",
|
|
60
|
+
},
|
|
61
|
+
capabilities: {
|
|
62
|
+
type: "array",
|
|
63
|
+
items: { type: "string" },
|
|
64
|
+
description: 'List of capability tags (e.g. ["research","email"])',
|
|
65
|
+
},
|
|
66
|
+
tags: {
|
|
67
|
+
type: "array",
|
|
68
|
+
items: { type: "string" },
|
|
69
|
+
description: "User-defined tags",
|
|
70
|
+
},
|
|
71
|
+
tenant_id: {
|
|
72
|
+
type: "string",
|
|
73
|
+
description: "Optional tenant scope. Inherits from the gateway key when omitted.",
|
|
74
|
+
},
|
|
75
|
+
auth_config: {
|
|
76
|
+
type: "object",
|
|
77
|
+
description: 'Optional auth for calling the agent endpoint. Supported methods: {method:"none"}, {method:"api_key",header,prefix,key}, {method:"custom_headers",headers:{...}}',
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
required: ["display_name", "framework", "protocol"],
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
list_external_agents: {
|
|
84
|
+
name: "list_external_agents",
|
|
85
|
+
annotations: {
|
|
86
|
+
title: "List External Agents",
|
|
87
|
+
readOnlyHint: true,
|
|
88
|
+
destructiveHint: false,
|
|
89
|
+
openWorldHint: false,
|
|
90
|
+
},
|
|
91
|
+
description: "List external agents for the current org. Optionally filter by tenant or status. A tenant-scoped listing (tenant-scoped key, or the tenant_id filter) also includes org-level agents (tenant_id null — e.g. agents auto-synced from Claude Code), never another tenant's. For the full unified fleet including native agents use list_all_agents.",
|
|
92
|
+
inputSchema: {
|
|
93
|
+
type: "object",
|
|
94
|
+
properties: {
|
|
95
|
+
tenant_id: { type: "string", description: "Filter by tenant" },
|
|
96
|
+
status: {
|
|
97
|
+
type: "string",
|
|
98
|
+
enum: ["draft", "active", "unreachable", "paused", "revoked"],
|
|
99
|
+
description: "Filter by lifecycle status",
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
get_external_agent: {
|
|
105
|
+
name: "get_external_agent",
|
|
106
|
+
annotations: {
|
|
107
|
+
title: "Get External Agent",
|
|
108
|
+
readOnlyHint: true,
|
|
109
|
+
destructiveHint: false,
|
|
110
|
+
openWorldHint: false,
|
|
111
|
+
},
|
|
112
|
+
description: "Fetch a single external agent by ID.",
|
|
113
|
+
inputSchema: {
|
|
114
|
+
type: "object",
|
|
115
|
+
properties: {
|
|
116
|
+
agent_id: { type: "string", description: "Agent ID (ext_...)" },
|
|
117
|
+
},
|
|
118
|
+
required: ["agent_id"],
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
update_external_agent: {
|
|
122
|
+
name: "update_external_agent",
|
|
123
|
+
annotations: {
|
|
124
|
+
title: "Update External Agent",
|
|
125
|
+
readOnlyHint: false,
|
|
126
|
+
destructiveHint: true,
|
|
127
|
+
openWorldHint: false,
|
|
128
|
+
},
|
|
129
|
+
description: "Update a registered external agent (display_name, endpoint, capabilities, status=paused|active, auth_config, outbound_credentials).",
|
|
130
|
+
inputSchema: {
|
|
131
|
+
type: "object",
|
|
132
|
+
properties: {
|
|
133
|
+
agent_id: { type: "string", description: "Agent ID (ext_...)" },
|
|
134
|
+
display_name: { type: "string" },
|
|
135
|
+
description: { type: "string" },
|
|
136
|
+
endpoint_url: { type: "string" },
|
|
137
|
+
health_check_url: { type: "string" },
|
|
138
|
+
capabilities: { type: "array", items: { type: "string" } },
|
|
139
|
+
tags: { type: "array", items: { type: "string" } },
|
|
140
|
+
status: { type: "string", enum: ["active", "paused"] },
|
|
141
|
+
auth_config: {
|
|
142
|
+
type: "object",
|
|
143
|
+
description: "Replacement auth config (use null to clear).",
|
|
144
|
+
},
|
|
145
|
+
outbound_credentials: {
|
|
146
|
+
type: "array",
|
|
147
|
+
description: "Declare (attest to) this agent's own OUTBOUND credential dependencies — e.g. its own Gemini API key it needs to call Google. Metadata ONLY: Dobby never stores the secret value, only what it's called and where the agent reads it from, for compliance evidence. Replaces the full list on each call.",
|
|
148
|
+
items: {
|
|
149
|
+
type: "object",
|
|
150
|
+
properties: {
|
|
151
|
+
provider: {
|
|
152
|
+
type: "string",
|
|
153
|
+
description: "e.g. 'google_gemini', 'openai', 'stripe'.",
|
|
154
|
+
},
|
|
155
|
+
env_var_name: {
|
|
156
|
+
type: "string",
|
|
157
|
+
description: "The env var name the agent reads it from, e.g. 'GEMINI_API_KEY'.",
|
|
158
|
+
},
|
|
159
|
+
rotation_policy: {
|
|
160
|
+
type: "string",
|
|
161
|
+
description: "Optional free-text rotation policy note.",
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
required: ["provider", "env_var_name"],
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
required: ["agent_id"],
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
deregister_external_agent: {
|
|
172
|
+
name: "deregister_external_agent",
|
|
173
|
+
annotations: {
|
|
174
|
+
title: "Deregister External Agent",
|
|
175
|
+
readOnlyHint: false,
|
|
176
|
+
destructiveHint: true,
|
|
177
|
+
openWorldHint: false,
|
|
178
|
+
},
|
|
179
|
+
description: "Deregister an external agent. Revokes its gateway key and sets status to `revoked`. Cannot be undone — register a new one if needed.",
|
|
180
|
+
inputSchema: {
|
|
181
|
+
type: "object",
|
|
182
|
+
properties: {
|
|
183
|
+
agent_id: { type: "string", description: "Agent ID (ext_...)" },
|
|
184
|
+
},
|
|
185
|
+
required: ["agent_id"],
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
trigger_external_agent: {
|
|
189
|
+
name: "trigger_external_agent",
|
|
190
|
+
annotations: {
|
|
191
|
+
title: "Trigger External Agent",
|
|
192
|
+
readOnlyHint: false,
|
|
193
|
+
destructiveHint: true,
|
|
194
|
+
openWorldHint: false,
|
|
195
|
+
},
|
|
196
|
+
description: 'Fire an external agent synchronously via its configured endpoint. Inputs are framework-specific (e.g. CrewAI expects `{topic:"..."}`). Returns a trigger_id and status. Long-running triggers are logged and their completion events arrive via the callback webhook.',
|
|
197
|
+
inputSchema: {
|
|
198
|
+
type: "object",
|
|
199
|
+
properties: {
|
|
200
|
+
agent_id: { type: "string", description: "Agent ID (ext_...)" },
|
|
201
|
+
inputs: {
|
|
202
|
+
type: "object",
|
|
203
|
+
description: "Framework-specific input payload (maps to request body).",
|
|
204
|
+
},
|
|
205
|
+
},
|
|
206
|
+
required: ["agent_id"],
|
|
207
|
+
},
|
|
208
|
+
},
|
|
209
|
+
get_agent_triggers: {
|
|
210
|
+
name: "get_agent_triggers",
|
|
211
|
+
annotations: {
|
|
212
|
+
title: "Get Agent Trigger History",
|
|
213
|
+
readOnlyHint: true,
|
|
214
|
+
destructiveHint: false,
|
|
215
|
+
openWorldHint: false,
|
|
216
|
+
},
|
|
217
|
+
description: "List recent trigger invocations for an external agent, newest first. Supports pagination and optional aggregated stats.",
|
|
218
|
+
inputSchema: {
|
|
219
|
+
type: "object",
|
|
220
|
+
properties: {
|
|
221
|
+
agent_id: { type: "string", description: "Agent ID (ext_...)" },
|
|
222
|
+
page: {
|
|
223
|
+
type: "number",
|
|
224
|
+
description: "1-based page number (default 1)",
|
|
225
|
+
},
|
|
226
|
+
page_size: {
|
|
227
|
+
type: "number",
|
|
228
|
+
description: "Page size 1–50 (default 10)",
|
|
229
|
+
},
|
|
230
|
+
status: {
|
|
231
|
+
type: "string",
|
|
232
|
+
enum: [
|
|
233
|
+
"pending",
|
|
234
|
+
"sent",
|
|
235
|
+
"acknowledged",
|
|
236
|
+
"completed",
|
|
237
|
+
"failed",
|
|
238
|
+
"timed_out",
|
|
239
|
+
],
|
|
240
|
+
description: "Filter by trigger status",
|
|
241
|
+
},
|
|
242
|
+
include_stats: {
|
|
243
|
+
type: "boolean",
|
|
244
|
+
description: "Also return aggregated stats (total, completed, failed, avg_duration).",
|
|
245
|
+
},
|
|
246
|
+
},
|
|
247
|
+
required: ["agent_id"],
|
|
248
|
+
},
|
|
249
|
+
},
|
|
250
|
+
create_agent_schedule: {
|
|
251
|
+
name: "create_agent_schedule",
|
|
252
|
+
annotations: {
|
|
253
|
+
title: "Create Agent Schedule",
|
|
254
|
+
readOnlyHint: false,
|
|
255
|
+
destructiveHint: true,
|
|
256
|
+
openWorldHint: false,
|
|
257
|
+
},
|
|
258
|
+
description: "Create a recurring schedule for an external agent (daily/weekly/hourly). One schedule per agent — use update_agent_schedule (PATCH) to modify. Returns the created schedule.",
|
|
259
|
+
inputSchema: {
|
|
260
|
+
type: "object",
|
|
261
|
+
properties: {
|
|
262
|
+
agent_id: { type: "string", description: "Agent ID (ext_...)" },
|
|
263
|
+
name: { type: "string", description: "Schedule name shown in UI" },
|
|
264
|
+
description: { type: "string" },
|
|
265
|
+
task_title: {
|
|
266
|
+
type: "string",
|
|
267
|
+
description: "Title for the task created on each run",
|
|
268
|
+
},
|
|
269
|
+
task_description: { type: "string" },
|
|
270
|
+
schedule_config: {
|
|
271
|
+
type: "object",
|
|
272
|
+
description: 'Frequency config: { frequency: "daily"|"hourly"|"weekly"|..., time?: "HH:MM", dayOfWeek?, dayOfMonth? }',
|
|
273
|
+
},
|
|
274
|
+
trigger_payload: {
|
|
275
|
+
type: "object",
|
|
276
|
+
description: "Payload passed to the agent on each run (inputs).",
|
|
277
|
+
},
|
|
278
|
+
overlap_policy: {
|
|
279
|
+
type: "string",
|
|
280
|
+
enum: ["skip", "queue", "allow"],
|
|
281
|
+
description: "What to do when previous run is still active (default: skip)",
|
|
282
|
+
},
|
|
283
|
+
},
|
|
284
|
+
required: ["agent_id", "name", "task_title", "schedule_config"],
|
|
285
|
+
},
|
|
286
|
+
},
|
|
287
|
+
update_agent_schedule: {
|
|
288
|
+
name: "update_agent_schedule",
|
|
289
|
+
annotations: {
|
|
290
|
+
title: "Update Agent Schedule",
|
|
291
|
+
readOnlyHint: false,
|
|
292
|
+
destructiveHint: true,
|
|
293
|
+
openWorldHint: false,
|
|
294
|
+
},
|
|
295
|
+
description: "Update a running schedule for an external agent. Pass `paused: true` to pause runs (with optional `pause_reason`), `paused: false` to resume. Other fields (`name`, `schedule_config`, `task_title`, `task_description`, `trigger_payload`) are updated in place.",
|
|
296
|
+
inputSchema: {
|
|
297
|
+
type: "object",
|
|
298
|
+
properties: {
|
|
299
|
+
agent_id: { type: "string", description: "Agent ID (ext_...)" },
|
|
300
|
+
paused: {
|
|
301
|
+
type: "boolean",
|
|
302
|
+
description: "True to pause, false to resume",
|
|
303
|
+
},
|
|
304
|
+
pause_reason: {
|
|
305
|
+
type: "string",
|
|
306
|
+
description: "Audit note stored when pausing (ignored when paused is not true)",
|
|
307
|
+
},
|
|
308
|
+
name: { type: "string", description: "New schedule name" },
|
|
309
|
+
schedule_config: {
|
|
310
|
+
type: "object",
|
|
311
|
+
description: 'Replacement frequency config, e.g. { frequency: "hourly" }',
|
|
312
|
+
},
|
|
313
|
+
task_title: { type: "string" },
|
|
314
|
+
task_description: { type: "string" },
|
|
315
|
+
trigger_payload: {
|
|
316
|
+
type: "object",
|
|
317
|
+
description: "Replacement payload passed on each run",
|
|
318
|
+
},
|
|
319
|
+
},
|
|
320
|
+
required: ["agent_id"],
|
|
321
|
+
},
|
|
322
|
+
},
|
|
323
|
+
delete_agent_schedule: {
|
|
324
|
+
name: "delete_agent_schedule",
|
|
325
|
+
annotations: {
|
|
326
|
+
title: "Delete Agent Schedule",
|
|
327
|
+
readOnlyHint: false,
|
|
328
|
+
destructiveHint: true,
|
|
329
|
+
openWorldHint: false,
|
|
330
|
+
},
|
|
331
|
+
description: "Disable the schedule for an external agent (soft delete — sets enabled=false).",
|
|
332
|
+
inputSchema: {
|
|
333
|
+
type: "object",
|
|
334
|
+
properties: {
|
|
335
|
+
agent_id: { type: "string", description: "Agent ID (ext_...)" },
|
|
336
|
+
},
|
|
337
|
+
required: ["agent_id"],
|
|
338
|
+
},
|
|
339
|
+
},
|
|
340
|
+
retry_external_agent_trigger: {
|
|
341
|
+
name: "retry_external_agent_trigger",
|
|
342
|
+
annotations: {
|
|
343
|
+
title: "Retry External Agent Trigger",
|
|
344
|
+
readOnlyHint: false,
|
|
345
|
+
destructiveHint: true,
|
|
346
|
+
openWorldHint: false,
|
|
347
|
+
},
|
|
348
|
+
description: "Retry a previously failed or timed-out trigger by reusing its original payload. Returns the new trigger_id and status. 400 if the original trigger is in a non-retryable state (completed/sent/etc.), 404 if the trigger does not exist.",
|
|
349
|
+
inputSchema: {
|
|
350
|
+
type: "object",
|
|
351
|
+
properties: {
|
|
352
|
+
agent_id: { type: "string", description: "Agent ID (ext_...)" },
|
|
353
|
+
trigger_id: {
|
|
354
|
+
type: "string",
|
|
355
|
+
description: "Trigger ID to retry (trig_...)",
|
|
356
|
+
},
|
|
357
|
+
},
|
|
358
|
+
required: ["agent_id", "trigger_id"],
|
|
359
|
+
},
|
|
360
|
+
},
|
|
361
|
+
get_agent_costs: {
|
|
362
|
+
name: "get_agent_costs",
|
|
363
|
+
annotations: {
|
|
364
|
+
title: "Get Agent Costs",
|
|
365
|
+
readOnlyHint: true,
|
|
366
|
+
destructiveHint: false,
|
|
367
|
+
openWorldHint: false,
|
|
368
|
+
},
|
|
369
|
+
description: "Get month-to-date LLM cost summary + daily breakdown for an external agent (via the gateway cost log).",
|
|
370
|
+
inputSchema: {
|
|
371
|
+
type: "object",
|
|
372
|
+
properties: {
|
|
373
|
+
agent_id: { type: "string", description: "Agent ID (ext_...)" },
|
|
374
|
+
days: {
|
|
375
|
+
type: "number",
|
|
376
|
+
description: "Days of daily breakdown (1–90, default 30)",
|
|
377
|
+
},
|
|
378
|
+
},
|
|
379
|
+
required: ["agent_id"],
|
|
380
|
+
},
|
|
381
|
+
},
|
|
382
|
+
};
|
|
383
|
+
// ============================================
|
|
384
|
+
// Handlers
|
|
385
|
+
// ============================================
|
|
386
|
+
//# sourceMappingURL=external-agents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external-agents.js","sourceRoot":"","sources":["../../src/tools/external-agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
* Provides tools for code management, PR automation, and CI/CD monitoring
|
|
6
6
|
* through the official GitHub MCP Server (ghcr.io/github/github-mcp-server).
|
|
7
7
|
*/
|
|
8
|
-
import { DobbyClient } from '../lib/dobby-client.js';
|
|
9
8
|
export declare const githubMcpTools: {
|
|
10
9
|
github_search_code: {
|
|
11
10
|
name: string;
|
|
@@ -226,78 +225,4 @@ export declare const githubMcpTools: {
|
|
|
226
225
|
};
|
|
227
226
|
};
|
|
228
227
|
};
|
|
229
|
-
export declare function handleGithubSearchCode(_client: DobbyClient, args: {
|
|
230
|
-
query: string;
|
|
231
|
-
repo?: string;
|
|
232
|
-
language?: string;
|
|
233
|
-
}): Promise<{
|
|
234
|
-
content: {
|
|
235
|
-
type: "text";
|
|
236
|
-
text: string;
|
|
237
|
-
}[];
|
|
238
|
-
}>;
|
|
239
|
-
export declare function handleGithubGetFile(_client: DobbyClient, args: {
|
|
240
|
-
repo: string;
|
|
241
|
-
path: string;
|
|
242
|
-
branch?: string;
|
|
243
|
-
}): Promise<{
|
|
244
|
-
content: {
|
|
245
|
-
type: "text";
|
|
246
|
-
text: any;
|
|
247
|
-
}[];
|
|
248
|
-
}>;
|
|
249
|
-
export declare function handleGithubCreatePr(_client: DobbyClient, args: {
|
|
250
|
-
repo: string;
|
|
251
|
-
title: string;
|
|
252
|
-
body?: string;
|
|
253
|
-
head: string;
|
|
254
|
-
base?: string;
|
|
255
|
-
}): Promise<{
|
|
256
|
-
content: {
|
|
257
|
-
type: "text";
|
|
258
|
-
text: string;
|
|
259
|
-
}[];
|
|
260
|
-
}>;
|
|
261
|
-
export declare function handleGithubListPrs(_client: DobbyClient, args: {
|
|
262
|
-
repo: string;
|
|
263
|
-
state?: string;
|
|
264
|
-
limit?: number;
|
|
265
|
-
}): Promise<{
|
|
266
|
-
content: {
|
|
267
|
-
type: "text";
|
|
268
|
-
text: string;
|
|
269
|
-
}[];
|
|
270
|
-
}>;
|
|
271
|
-
export declare function handleGithubListIssues(_client: DobbyClient, args: {
|
|
272
|
-
repo: string;
|
|
273
|
-
state?: string;
|
|
274
|
-
labels?: string;
|
|
275
|
-
limit?: number;
|
|
276
|
-
}): Promise<{
|
|
277
|
-
content: {
|
|
278
|
-
type: "text";
|
|
279
|
-
text: string;
|
|
280
|
-
}[];
|
|
281
|
-
}>;
|
|
282
|
-
export declare function handleGithubCreateIssue(_client: DobbyClient, args: {
|
|
283
|
-
repo: string;
|
|
284
|
-
title: string;
|
|
285
|
-
body?: string;
|
|
286
|
-
labels?: string[];
|
|
287
|
-
}): Promise<{
|
|
288
|
-
content: {
|
|
289
|
-
type: "text";
|
|
290
|
-
text: string;
|
|
291
|
-
}[];
|
|
292
|
-
}>;
|
|
293
|
-
export declare function handleGithubGetWorkflowRuns(_client: DobbyClient, args: {
|
|
294
|
-
repo: string;
|
|
295
|
-
status?: string;
|
|
296
|
-
limit?: number;
|
|
297
|
-
}): Promise<{
|
|
298
|
-
content: {
|
|
299
|
-
type: "text";
|
|
300
|
-
text: string;
|
|
301
|
-
}[];
|
|
302
|
-
}>;
|
|
303
228
|
//# sourceMappingURL=github-mcp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github-mcp.d.ts","sourceRoot":"","sources":["../../src/tools/github-mcp.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"github-mcp.d.ts","sourceRoot":"","sources":["../../src/tools/github-mcp.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+N1B,CAAC"}
|
package/dist/tools/github-mcp.js
CHANGED
|
@@ -229,169 +229,7 @@ export const githubMcpTools = {
|
|
|
229
229
|
// ============================================
|
|
230
230
|
// GitHub API Helper
|
|
231
231
|
// ============================================
|
|
232
|
-
const GITHUB_API = 'https://api.github.com';
|
|
233
|
-
async function githubFetch(endpoint, options = {}) {
|
|
234
|
-
const token = process.env.GITHUB_TOKEN || process.env.GITHUB_PERSONAL_ACCESS_TOKEN;
|
|
235
|
-
if (!token) {
|
|
236
|
-
throw new Error('GITHUB_TOKEN not configured. Set it in .env or environment variables.');
|
|
237
|
-
}
|
|
238
|
-
const response = await fetch(`${GITHUB_API}${endpoint}`, {
|
|
239
|
-
...options,
|
|
240
|
-
headers: {
|
|
241
|
-
'Authorization': `Bearer ${token}`,
|
|
242
|
-
'Accept': 'application/vnd.github+json',
|
|
243
|
-
'X-GitHub-Api-Version': '2022-11-28',
|
|
244
|
-
...options.headers,
|
|
245
|
-
},
|
|
246
|
-
});
|
|
247
|
-
if (!response.ok) {
|
|
248
|
-
const body = await response.text();
|
|
249
|
-
throw new Error(`GitHub API error (${response.status}): ${body.slice(0, 200)}`);
|
|
250
|
-
}
|
|
251
|
-
return response.json();
|
|
252
|
-
}
|
|
253
232
|
// ============================================
|
|
254
233
|
// Tool Handlers
|
|
255
234
|
// ============================================
|
|
256
|
-
export async function handleGithubSearchCode(_client, args) {
|
|
257
|
-
let q = args.query;
|
|
258
|
-
if (args.repo)
|
|
259
|
-
q += ` repo:${args.repo}`;
|
|
260
|
-
if (args.language)
|
|
261
|
-
q += ` language:${args.language}`;
|
|
262
|
-
const data = await githubFetch(`/search/code?q=${encodeURIComponent(q)}&per_page=10`);
|
|
263
|
-
const items = (data.items || []).map((item) => ({
|
|
264
|
-
name: item.name,
|
|
265
|
-
path: item.path,
|
|
266
|
-
repo: item.repository?.full_name,
|
|
267
|
-
url: item.html_url,
|
|
268
|
-
}));
|
|
269
|
-
return {
|
|
270
|
-
content: [{
|
|
271
|
-
type: 'text',
|
|
272
|
-
text: JSON.stringify({ total: data.total_count, results: items }, null, 2),
|
|
273
|
-
}],
|
|
274
|
-
};
|
|
275
|
-
}
|
|
276
|
-
export async function handleGithubGetFile(_client, args) {
|
|
277
|
-
const ref = args.branch ? `?ref=${args.branch}` : '';
|
|
278
|
-
const data = await githubFetch(`/repos/${args.repo}/contents/${args.path}${ref}`);
|
|
279
|
-
let content = data.content;
|
|
280
|
-
if (data.encoding === 'base64') {
|
|
281
|
-
content = Buffer.from(data.content, 'base64').toString('utf-8');
|
|
282
|
-
}
|
|
283
|
-
return {
|
|
284
|
-
content: [{
|
|
285
|
-
type: 'text',
|
|
286
|
-
text: content,
|
|
287
|
-
}],
|
|
288
|
-
};
|
|
289
|
-
}
|
|
290
|
-
export async function handleGithubCreatePr(_client, args) {
|
|
291
|
-
const data = await githubFetch(`/repos/${args.repo}/pulls`, {
|
|
292
|
-
method: 'POST',
|
|
293
|
-
body: JSON.stringify({
|
|
294
|
-
title: args.title,
|
|
295
|
-
body: args.body || '',
|
|
296
|
-
head: args.head,
|
|
297
|
-
base: args.base || 'main',
|
|
298
|
-
}),
|
|
299
|
-
});
|
|
300
|
-
return {
|
|
301
|
-
content: [{
|
|
302
|
-
type: 'text',
|
|
303
|
-
text: JSON.stringify({
|
|
304
|
-
pr_number: data.number,
|
|
305
|
-
url: data.html_url,
|
|
306
|
-
state: data.state,
|
|
307
|
-
title: data.title,
|
|
308
|
-
}, null, 2),
|
|
309
|
-
}],
|
|
310
|
-
};
|
|
311
|
-
}
|
|
312
|
-
export async function handleGithubListPrs(_client, args) {
|
|
313
|
-
const state = args.state || 'open';
|
|
314
|
-
const limit = args.limit || 10;
|
|
315
|
-
const data = await githubFetch(`/repos/${args.repo}/pulls?state=${state}&per_page=${limit}`);
|
|
316
|
-
const prs = data.map((pr) => ({
|
|
317
|
-
number: pr.number,
|
|
318
|
-
title: pr.title,
|
|
319
|
-
state: pr.state,
|
|
320
|
-
author: pr.user?.login,
|
|
321
|
-
url: pr.html_url,
|
|
322
|
-
created_at: pr.created_at,
|
|
323
|
-
updated_at: pr.updated_at,
|
|
324
|
-
}));
|
|
325
|
-
return {
|
|
326
|
-
content: [{
|
|
327
|
-
type: 'text',
|
|
328
|
-
text: JSON.stringify(prs, null, 2),
|
|
329
|
-
}],
|
|
330
|
-
};
|
|
331
|
-
}
|
|
332
|
-
export async function handleGithubListIssues(_client, args) {
|
|
333
|
-
const state = args.state || 'open';
|
|
334
|
-
const limit = args.limit || 10;
|
|
335
|
-
let url = `/repos/${args.repo}/issues?state=${state}&per_page=${limit}`;
|
|
336
|
-
if (args.labels)
|
|
337
|
-
url += `&labels=${encodeURIComponent(args.labels)}`;
|
|
338
|
-
const data = await githubFetch(url);
|
|
339
|
-
const issues = data.filter((i) => !i.pull_request).map((i) => ({
|
|
340
|
-
number: i.number,
|
|
341
|
-
title: i.title,
|
|
342
|
-
state: i.state,
|
|
343
|
-
labels: i.labels?.map((l) => l.name),
|
|
344
|
-
assignee: i.assignee?.login,
|
|
345
|
-
url: i.html_url,
|
|
346
|
-
created_at: i.created_at,
|
|
347
|
-
}));
|
|
348
|
-
return {
|
|
349
|
-
content: [{
|
|
350
|
-
type: 'text',
|
|
351
|
-
text: JSON.stringify(issues, null, 2),
|
|
352
|
-
}],
|
|
353
|
-
};
|
|
354
|
-
}
|
|
355
|
-
export async function handleGithubCreateIssue(_client, args) {
|
|
356
|
-
const data = await githubFetch(`/repos/${args.repo}/issues`, {
|
|
357
|
-
method: 'POST',
|
|
358
|
-
body: JSON.stringify({
|
|
359
|
-
title: args.title,
|
|
360
|
-
body: args.body || '',
|
|
361
|
-
labels: args.labels || [],
|
|
362
|
-
}),
|
|
363
|
-
});
|
|
364
|
-
return {
|
|
365
|
-
content: [{
|
|
366
|
-
type: 'text',
|
|
367
|
-
text: JSON.stringify({
|
|
368
|
-
issue_number: data.number,
|
|
369
|
-
url: data.html_url,
|
|
370
|
-
state: data.state,
|
|
371
|
-
}, null, 2),
|
|
372
|
-
}],
|
|
373
|
-
};
|
|
374
|
-
}
|
|
375
|
-
export async function handleGithubGetWorkflowRuns(_client, args) {
|
|
376
|
-
const limit = args.limit || 5;
|
|
377
|
-
let url = `/repos/${args.repo}/actions/runs?per_page=${limit}`;
|
|
378
|
-
if (args.status)
|
|
379
|
-
url += `&status=${args.status}`;
|
|
380
|
-
const data = await githubFetch(url);
|
|
381
|
-
const runs = (data.workflow_runs || []).map((r) => ({
|
|
382
|
-
id: r.id,
|
|
383
|
-
name: r.name,
|
|
384
|
-
status: r.status,
|
|
385
|
-
conclusion: r.conclusion,
|
|
386
|
-
branch: r.head_branch,
|
|
387
|
-
url: r.html_url,
|
|
388
|
-
created_at: r.created_at,
|
|
389
|
-
}));
|
|
390
|
-
return {
|
|
391
|
-
content: [{
|
|
392
|
-
type: 'text',
|
|
393
|
-
text: JSON.stringify(runs, null, 2),
|
|
394
|
-
}],
|
|
395
|
-
};
|
|
396
|
-
}
|
|
397
235
|
//# sourceMappingURL=github-mcp.js.map
|