@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
package/dist/lib/dobby-client.js
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Client for communicating with the Dobby API from the MCP server.
|
|
5
5
|
*/
|
|
6
|
-
import { z } from
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
import { DEFAULT_API_URL } from "./consts.js";
|
|
7
8
|
// ============================================
|
|
8
9
|
// Types
|
|
9
10
|
// ============================================
|
|
@@ -12,8 +13,14 @@ export const TaskSchema = z.object({
|
|
|
12
13
|
tenant_id: z.string(),
|
|
13
14
|
title: z.string(),
|
|
14
15
|
description: z.string().nullable(),
|
|
15
|
-
status: z.enum([
|
|
16
|
-
|
|
16
|
+
status: z.enum([
|
|
17
|
+
"pending",
|
|
18
|
+
"in_progress",
|
|
19
|
+
"completed",
|
|
20
|
+
"failed",
|
|
21
|
+
"cancelled",
|
|
22
|
+
]),
|
|
23
|
+
priority: z.enum(["high", "medium", "low"]).nullable(),
|
|
17
24
|
created_at: z.string(),
|
|
18
25
|
updated_at: z.string(),
|
|
19
26
|
pr_url: z.string().nullable().optional(),
|
|
@@ -24,14 +31,14 @@ export const MessageSchema = z.object({
|
|
|
24
31
|
id: z.string(),
|
|
25
32
|
task_id: z.string(),
|
|
26
33
|
sender: z.object({
|
|
27
|
-
type: z.enum([
|
|
34
|
+
type: z.enum(["user", "agent", "system"]),
|
|
28
35
|
id: z.string(),
|
|
29
36
|
name: z.string(),
|
|
30
37
|
}),
|
|
31
38
|
message: z.object({
|
|
32
39
|
type: z.string(),
|
|
33
40
|
content: z.string(),
|
|
34
|
-
metadata: z.record(z.any()).optional(),
|
|
41
|
+
metadata: z.record(z.string(), z.any()).optional(),
|
|
35
42
|
}),
|
|
36
43
|
created_at: z.string(),
|
|
37
44
|
});
|
|
@@ -40,10 +47,10 @@ export const ApprovalSchema = z.object({
|
|
|
40
47
|
task_id: z.string(),
|
|
41
48
|
approval_type: z.string(),
|
|
42
49
|
description: z.string(),
|
|
43
|
-
status: z.enum([
|
|
50
|
+
status: z.enum(["pending", "approved", "rejected"]),
|
|
44
51
|
requested_by: z.string(),
|
|
45
52
|
created_at: z.string(),
|
|
46
|
-
metadata: z.record(z.any()).optional(),
|
|
53
|
+
metadata: z.record(z.string(), z.any()).optional(),
|
|
47
54
|
});
|
|
48
55
|
// ============================================
|
|
49
56
|
// Client Class
|
|
@@ -65,13 +72,48 @@ export class DobbyClient {
|
|
|
65
72
|
get tenantId() {
|
|
66
73
|
return this.config.tenantId;
|
|
67
74
|
}
|
|
75
|
+
/** Organization ID for org-scoped requests (e.g. memory stores) */
|
|
76
|
+
get organizationId() {
|
|
77
|
+
return this.config.organizationId;
|
|
78
|
+
}
|
|
79
|
+
/** Static gateway key (gk_*), if configured — STDIO mode */
|
|
80
|
+
get gatewayKey() {
|
|
81
|
+
return this.config.gatewayKey;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Bearer credential for GATEWAY-scoped endpoints (routes guarded by
|
|
85
|
+
* authenticateGatewayRequest hard-require a gk_* key — the tenant apiKey is
|
|
86
|
+
* NOT one for OAuth/sk_live_ sessions).
|
|
87
|
+
*
|
|
88
|
+
* Precedence: lazy provider (HTTP mode, resolved server-side from the
|
|
89
|
+
* session token) > static gatewayKey (STDIO) > apiKey (legacy fallback —
|
|
90
|
+
* only works when the API key is itself a gk_*).
|
|
91
|
+
*/
|
|
92
|
+
async gatewayBearer() {
|
|
93
|
+
return ((this.config.getGatewayKey
|
|
94
|
+
? await this.config.getGatewayKey()
|
|
95
|
+
: undefined) ??
|
|
96
|
+
this.config.gatewayKey ??
|
|
97
|
+
this.config.apiKey);
|
|
98
|
+
}
|
|
68
99
|
async fetch(endpoint, options = {}) {
|
|
69
100
|
const url = `${this.config.apiUrl}${endpoint}`;
|
|
70
101
|
const response = await fetch(url, {
|
|
71
102
|
...options,
|
|
103
|
+
// Bound the outbound call so a hung web-app response fails fast with a
|
|
104
|
+
// clean error instead of holding the MCP request open until the transport
|
|
105
|
+
// drops. Respect a caller-supplied signal when present.
|
|
106
|
+
signal: options.signal ?? AbortSignal.timeout(30000),
|
|
72
107
|
headers: {
|
|
73
|
-
|
|
74
|
-
|
|
108
|
+
"Content-Type": "application/json",
|
|
109
|
+
"X-API-Key": this.config.apiKey,
|
|
110
|
+
// User-scoped families (dobby_pat_/dobby_at_/dobby_mat_) carry no tenant
|
|
111
|
+
// pin, so a route that resolves the tenant FROM the key (e.g.
|
|
112
|
+
// /api/v1/workloads) can't. Forward the per-call target tenant; routes
|
|
113
|
+
// that read the tenant from the key or the URL path ignore it.
|
|
114
|
+
...(this.config.tenantId
|
|
115
|
+
? { "X-Tenant-Id": this.config.tenantId }
|
|
116
|
+
: {}),
|
|
75
117
|
...options.headers,
|
|
76
118
|
},
|
|
77
119
|
});
|
|
@@ -88,14 +130,17 @@ export class DobbyClient {
|
|
|
88
130
|
return this.fetch(endpoint, options);
|
|
89
131
|
}
|
|
90
132
|
async get(endpoint) {
|
|
91
|
-
return this.fetch(endpoint, { method:
|
|
133
|
+
return this.fetch(endpoint, { method: "GET" });
|
|
92
134
|
}
|
|
93
135
|
async post(endpoint, body) {
|
|
94
136
|
return this.fetch(endpoint, {
|
|
95
|
-
method:
|
|
137
|
+
method: "POST",
|
|
96
138
|
body: body ? JSON.stringify(body) : undefined,
|
|
97
139
|
});
|
|
98
140
|
}
|
|
141
|
+
async delete(endpoint) {
|
|
142
|
+
return this.fetch(endpoint, { method: "DELETE" });
|
|
143
|
+
}
|
|
99
144
|
// ============================================
|
|
100
145
|
// Tasks
|
|
101
146
|
// ============================================
|
|
@@ -104,19 +149,19 @@ export class DobbyClient {
|
|
|
104
149
|
tenant_id: this.config.tenantId,
|
|
105
150
|
});
|
|
106
151
|
if (options.status)
|
|
107
|
-
params.set(
|
|
152
|
+
params.set("status", options.status);
|
|
108
153
|
if (options.priority)
|
|
109
|
-
params.set(
|
|
154
|
+
params.set("priority", options.priority);
|
|
110
155
|
if (options.assigned_to)
|
|
111
|
-
params.set(
|
|
156
|
+
params.set("assigned_to", options.assigned_to);
|
|
112
157
|
if (options.limit)
|
|
113
|
-
params.set(
|
|
158
|
+
params.set("limit", options.limit.toString());
|
|
114
159
|
const response = await this.fetch(`/api/dobby/tasks?${params}`);
|
|
115
160
|
return response.tasks;
|
|
116
161
|
}
|
|
117
162
|
async getTask(taskId) {
|
|
118
163
|
try {
|
|
119
|
-
const response = await this.fetch(`/api/dobby/tasks/${taskId}?tenant_id=${this.config.tenantId}`);
|
|
164
|
+
const response = await this.fetch(`/api/dobby/tasks/${encodeURIComponent(taskId)}?tenant_id=${this.config.tenantId}`);
|
|
120
165
|
return response.task;
|
|
121
166
|
}
|
|
122
167
|
catch (error) {
|
|
@@ -124,8 +169,8 @@ export class DobbyClient {
|
|
|
124
169
|
}
|
|
125
170
|
}
|
|
126
171
|
async createTask(data) {
|
|
127
|
-
const response = await this.fetch(
|
|
128
|
-
method:
|
|
172
|
+
const response = await this.fetch("/api/dobby/tasks", {
|
|
173
|
+
method: "POST",
|
|
129
174
|
body: JSON.stringify({
|
|
130
175
|
tenant_id: this.config.tenantId,
|
|
131
176
|
...data,
|
|
@@ -134,8 +179,8 @@ export class DobbyClient {
|
|
|
134
179
|
return { task_id: response.task_id };
|
|
135
180
|
}
|
|
136
181
|
async updateTask(taskId, updates) {
|
|
137
|
-
await this.fetch(
|
|
138
|
-
method:
|
|
182
|
+
await this.fetch("/api/dobby/tasks", {
|
|
183
|
+
method: "PATCH",
|
|
139
184
|
body: JSON.stringify({
|
|
140
185
|
task_id: taskId,
|
|
141
186
|
tenant_id: this.config.tenantId,
|
|
@@ -151,18 +196,18 @@ export class DobbyClient {
|
|
|
151
196
|
tenant_id: this.config.tenantId,
|
|
152
197
|
});
|
|
153
198
|
if (options.limit)
|
|
154
|
-
params.set(
|
|
199
|
+
params.set("limit", options.limit.toString());
|
|
155
200
|
if (options.after)
|
|
156
|
-
params.set(
|
|
157
|
-
const response = await this.fetch(`/api/dobby/tasks/${taskId}/conversation?${params}`);
|
|
201
|
+
params.set("after", options.after);
|
|
202
|
+
const response = await this.fetch(`/api/dobby/tasks/${encodeURIComponent(taskId)}/conversation?${params}`);
|
|
158
203
|
return response.messages;
|
|
159
204
|
}
|
|
160
205
|
async sendMessage(taskId, data) {
|
|
161
|
-
const response = await this.fetch(`/api/dobby/tasks/${taskId}/conversation`, {
|
|
162
|
-
method:
|
|
206
|
+
const response = await this.fetch(`/api/dobby/tasks/${encodeURIComponent(taskId)}/conversation`, {
|
|
207
|
+
method: "POST",
|
|
163
208
|
body: JSON.stringify({
|
|
164
209
|
tenant_id: this.config.tenantId,
|
|
165
|
-
sender_type:
|
|
210
|
+
sender_type: "user",
|
|
166
211
|
...data,
|
|
167
212
|
}),
|
|
168
213
|
});
|
|
@@ -178,11 +223,11 @@ export class DobbyClient {
|
|
|
178
223
|
async approveTask(approvalId, note) {
|
|
179
224
|
// Use the unified approvals endpoint that triggers agent continuation
|
|
180
225
|
const response = await this.fetch(`/api/dobby/approvals`, {
|
|
181
|
-
method:
|
|
226
|
+
method: "POST",
|
|
182
227
|
body: JSON.stringify({
|
|
183
228
|
approval_id: approvalId,
|
|
184
229
|
tenant_id: this.config.tenantId,
|
|
185
|
-
action:
|
|
230
|
+
action: "approve",
|
|
186
231
|
feedback: note,
|
|
187
232
|
}),
|
|
188
233
|
});
|
|
@@ -191,12 +236,12 @@ export class DobbyClient {
|
|
|
191
236
|
async rejectTask(approvalId, reason) {
|
|
192
237
|
// Use the unified approvals endpoint that triggers agent retry with feedback
|
|
193
238
|
const response = await this.fetch(`/api/dobby/approvals`, {
|
|
194
|
-
method:
|
|
239
|
+
method: "POST",
|
|
195
240
|
body: JSON.stringify({
|
|
196
241
|
approval_id: approvalId,
|
|
197
242
|
tenant_id: this.config.tenantId,
|
|
198
|
-
action:
|
|
199
|
-
feedback: reason ||
|
|
243
|
+
action: "reject",
|
|
244
|
+
feedback: reason || "Rejected by user",
|
|
200
245
|
}),
|
|
201
246
|
});
|
|
202
247
|
return response;
|
|
@@ -205,47 +250,50 @@ export class DobbyClient {
|
|
|
205
250
|
// Timeline
|
|
206
251
|
// ============================================
|
|
207
252
|
async getTaskTimeline(taskId) {
|
|
208
|
-
const response = await this.fetch(`/api/dobby/tasks/${taskId}?tenant_id=${this.config.tenantId}`);
|
|
253
|
+
const response = await this.fetch(`/api/dobby/tasks/${encodeURIComponent(taskId)}?tenant_id=${this.config.tenantId}`);
|
|
209
254
|
return response.task?.timeline || [];
|
|
210
255
|
}
|
|
211
256
|
// ============================================
|
|
212
257
|
// Task Execution Control
|
|
213
258
|
// ============================================
|
|
214
259
|
async cancelTaskExecution(taskId) {
|
|
215
|
-
const response = await this.fetch(`/api/dobby/tasks/${taskId}/execute?tenant_id=${this.config.tenantId}`, { method:
|
|
216
|
-
return {
|
|
260
|
+
const response = await this.fetch(`/api/dobby/tasks/${encodeURIComponent(taskId)}/execute?tenant_id=${this.config.tenantId}`, { method: "DELETE" });
|
|
261
|
+
return {
|
|
262
|
+
success: response.status === "cancelled",
|
|
263
|
+
message: response.message,
|
|
264
|
+
};
|
|
217
265
|
}
|
|
218
266
|
// ============================================
|
|
219
267
|
// Service Discovery
|
|
220
268
|
// ============================================
|
|
221
269
|
async listServices(options = {}) {
|
|
222
270
|
const params = new URLSearchParams();
|
|
223
|
-
if (options.category && options.category !==
|
|
224
|
-
params.set(
|
|
271
|
+
if (options.category && options.category !== "all") {
|
|
272
|
+
params.set("category", options.category);
|
|
225
273
|
}
|
|
226
|
-
const queryStr = params.toString() ? `?${params}` :
|
|
274
|
+
const queryStr = params.toString() ? `?${params}` : "";
|
|
227
275
|
// This endpoint uses gateway key auth (Bearer token), not X-API-Key
|
|
228
276
|
const url = `${this.config.apiUrl}/api/v1/gateway/services${queryStr}`;
|
|
229
277
|
const response = await fetch(url, {
|
|
230
278
|
headers: {
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
279
|
+
"Content-Type": "application/json",
|
|
280
|
+
Authorization: `Bearer ${await this.gatewayBearer()}`,
|
|
281
|
+
"X-Tenant-Id": this.config.tenantId,
|
|
234
282
|
},
|
|
235
283
|
});
|
|
236
284
|
if (!response.ok) {
|
|
237
285
|
const error = await response.text();
|
|
238
286
|
throw new Error(`Service discovery failed (${response.status}): ${error}`);
|
|
239
287
|
}
|
|
240
|
-
const body = await response.json();
|
|
288
|
+
const body = (await response.json());
|
|
241
289
|
return body.data;
|
|
242
290
|
}
|
|
243
291
|
// ============================================
|
|
244
292
|
// Schedules
|
|
245
293
|
// ============================================
|
|
246
294
|
async createSchedule(data) {
|
|
247
|
-
const response = await this.fetch(
|
|
248
|
-
method:
|
|
295
|
+
const response = await this.fetch("/api/v1/schedules", {
|
|
296
|
+
method: "POST",
|
|
249
297
|
body: JSON.stringify(data),
|
|
250
298
|
});
|
|
251
299
|
return response;
|
|
@@ -253,23 +301,23 @@ export class DobbyClient {
|
|
|
253
301
|
async listSchedules(options) {
|
|
254
302
|
const params = new URLSearchParams();
|
|
255
303
|
if (options?.enabled_only !== undefined)
|
|
256
|
-
params.set(
|
|
304
|
+
params.set("enabled_only", String(options.enabled_only));
|
|
257
305
|
if (options?.limit)
|
|
258
|
-
params.set(
|
|
306
|
+
params.set("limit", String(options.limit));
|
|
259
307
|
const queryStr = params.toString();
|
|
260
|
-
const response = await this.fetch(`/api/v1/schedules${queryStr ? `?${queryStr}` :
|
|
308
|
+
const response = await this.fetch(`/api/v1/schedules${queryStr ? `?${queryStr}` : ""}`);
|
|
261
309
|
return response;
|
|
262
310
|
}
|
|
263
311
|
async pauseSchedule(data) {
|
|
264
312
|
const response = await this.fetch(`/api/v1/schedules/${data.schedule_id}/pause`, {
|
|
265
|
-
method:
|
|
313
|
+
method: "POST",
|
|
266
314
|
body: JSON.stringify({ action: data.action, reason: data.reason }),
|
|
267
315
|
});
|
|
268
316
|
return response;
|
|
269
317
|
}
|
|
270
318
|
async deleteSchedule(scheduleId) {
|
|
271
319
|
const response = await this.fetch(`/api/v1/schedules/${scheduleId}`, {
|
|
272
|
-
method:
|
|
320
|
+
method: "DELETE",
|
|
273
321
|
});
|
|
274
322
|
return response;
|
|
275
323
|
}
|
|
@@ -278,7 +326,7 @@ export class DobbyClient {
|
|
|
278
326
|
// ============================================
|
|
279
327
|
async checkHealth() {
|
|
280
328
|
try {
|
|
281
|
-
await this.fetch(
|
|
329
|
+
await this.fetch("/api/health");
|
|
282
330
|
return true;
|
|
283
331
|
}
|
|
284
332
|
catch {
|
|
@@ -291,15 +339,18 @@ export class DobbyClient {
|
|
|
291
339
|
// ============================================
|
|
292
340
|
export function createDobbyClient(config) {
|
|
293
341
|
const finalConfig = {
|
|
294
|
-
apiUrl: config?.apiUrl || process.env.DOBBY_API_URL ||
|
|
295
|
-
apiKey: config?.apiKey || process.env.DOBBY_API_KEY ||
|
|
296
|
-
tenantId: config?.tenantId || process.env.DOBBY_TENANT_ID ||
|
|
342
|
+
apiUrl: config?.apiUrl || process.env.DOBBY_API_URL || DEFAULT_API_URL,
|
|
343
|
+
apiKey: config?.apiKey || process.env.DOBBY_API_KEY || "",
|
|
344
|
+
tenantId: config?.tenantId || process.env.DOBBY_TENANT_ID || "",
|
|
345
|
+
organizationId: config?.organizationId || process.env.DOBBY_ORGANIZATION_ID || undefined,
|
|
346
|
+
gatewayKey: config?.gatewayKey,
|
|
347
|
+
getGatewayKey: config?.getGatewayKey,
|
|
297
348
|
};
|
|
298
349
|
if (!finalConfig.apiKey) {
|
|
299
|
-
throw new Error(
|
|
350
|
+
throw new Error("DOBBY_API_KEY is required");
|
|
300
351
|
}
|
|
301
352
|
if (!finalConfig.tenantId) {
|
|
302
|
-
throw new Error(
|
|
353
|
+
throw new Error("DOBBY_TENANT_ID is required");
|
|
303
354
|
}
|
|
304
355
|
return new DobbyClient(finalConfig);
|
|
305
356
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dobby-client.js","sourceRoot":"","sources":["../../src/lib/dobby-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dobby-client.js","sourceRoot":"","sources":["../../src/lib/dobby-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Gateway Key Resolver
|
|
3
|
+
*
|
|
4
|
+
* Exchanges an MCP HTTP session's bearer token (OAuth `dobby_at_*` or static
|
|
5
|
+
* tenant key `sk_live_*`) for a short-lived, tenant+user-bound `gk_tmp_*`
|
|
6
|
+
* gateway key via the web app's internal endpoint
|
|
7
|
+
* (POST /api/v1/internal/mcp/gateway-key). Gateway-scoped tools call web
|
|
8
|
+
* routes guarded by authenticateGatewayRequest, which hard-requires a gk_*
|
|
9
|
+
* key — the session token is NOT one, so the MCP server resolves one here.
|
|
10
|
+
*
|
|
11
|
+
* HTTP-mode ONLY: the endpoint authenticates the CALLER via
|
|
12
|
+
* INTERNAL_SERVICE_SECRET, which exists only on Dobby-operated pods. Never
|
|
13
|
+
* call this in STDIO mode — the internal secret must never be needed on
|
|
14
|
+
* customer machines (STDIO uses the static DOBBY_GATEWAY_KEY instead).
|
|
15
|
+
*
|
|
16
|
+
* Fails soft: returns undefined on ANY failure (missing env, non-OK response,
|
|
17
|
+
* network error, malformed body) after logging why — gateway-scoped tools
|
|
18
|
+
* then fall back to the session token and surface the downstream auth error.
|
|
19
|
+
* Never logs the session token or the resolved key.
|
|
20
|
+
*/
|
|
21
|
+
export interface ResolveSessionGatewayKeyOptions {
|
|
22
|
+
/** Web app base URL (e.g. https://dobby-ai.com) */
|
|
23
|
+
apiUrl: string;
|
|
24
|
+
/** The session's bearer token (dobby_at_*, sk_live_*, or dobby_pat_*) — identity source */
|
|
25
|
+
token: string;
|
|
26
|
+
/**
|
|
27
|
+
* ADR-020 user-scoped PAT ONLY: the per-call target tenant the gk_tmp_ must be
|
|
28
|
+
* minted for. A PAT carries no tenant pin, so the tenant comes from the call
|
|
29
|
+
* and is sent in the body; the internal endpoint authorizes the PAT's LIVE
|
|
30
|
+
* membership in it (403 for a non-member) before minting. Omit for tenant-bound
|
|
31
|
+
* sessions (dobby_at_/sk_live_) — the endpoint derives the tenant from the token
|
|
32
|
+
* and IGNORES any body tenant, so a tenant-bound token can never yield a key for
|
|
33
|
+
* a different tenant.
|
|
34
|
+
*/
|
|
35
|
+
tenantId?: string;
|
|
36
|
+
}
|
|
37
|
+
export declare function resolveSessionGatewayKey(opts: ResolveSessionGatewayKeyOptions): Promise<string | undefined>;
|
|
38
|
+
//# sourceMappingURL=gateway-key-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway-key-resolver.d.ts","sourceRoot":"","sources":["../../src/lib/gateway-key-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,WAAW,+BAA+B;IAC9C,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,2FAA2F;IAC3F,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,+BAA+B,GACpC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA4D7B"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Gateway Key Resolver
|
|
3
|
+
*
|
|
4
|
+
* Exchanges an MCP HTTP session's bearer token (OAuth `dobby_at_*` or static
|
|
5
|
+
* tenant key `sk_live_*`) for a short-lived, tenant+user-bound `gk_tmp_*`
|
|
6
|
+
* gateway key via the web app's internal endpoint
|
|
7
|
+
* (POST /api/v1/internal/mcp/gateway-key). Gateway-scoped tools call web
|
|
8
|
+
* routes guarded by authenticateGatewayRequest, which hard-requires a gk_*
|
|
9
|
+
* key — the session token is NOT one, so the MCP server resolves one here.
|
|
10
|
+
*
|
|
11
|
+
* HTTP-mode ONLY: the endpoint authenticates the CALLER via
|
|
12
|
+
* INTERNAL_SERVICE_SECRET, which exists only on Dobby-operated pods. Never
|
|
13
|
+
* call this in STDIO mode — the internal secret must never be needed on
|
|
14
|
+
* customer machines (STDIO uses the static DOBBY_GATEWAY_KEY instead).
|
|
15
|
+
*
|
|
16
|
+
* Fails soft: returns undefined on ANY failure (missing env, non-OK response,
|
|
17
|
+
* network error, malformed body) after logging why — gateway-scoped tools
|
|
18
|
+
* then fall back to the session token and surface the downstream auth error.
|
|
19
|
+
* Never logs the session token or the resolved key.
|
|
20
|
+
*/
|
|
21
|
+
export async function resolveSessionGatewayKey(opts) {
|
|
22
|
+
const internalSecret = process.env.INTERNAL_SERVICE_SECRET;
|
|
23
|
+
if (!internalSecret) {
|
|
24
|
+
console.error('[MCP Gateway Key] INTERNAL_SERVICE_SECRET is not set — cannot resolve a session gateway key; gateway-scoped tools will fall back to the session token');
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
const response = await fetch(`${opts.apiUrl}/api/v1/internal/mcp/gateway-key`, {
|
|
29
|
+
method: 'POST',
|
|
30
|
+
headers: {
|
|
31
|
+
'Content-Type': 'application/json',
|
|
32
|
+
'x-internal-secret': internalSecret,
|
|
33
|
+
Authorization: `Bearer ${opts.token}`,
|
|
34
|
+
},
|
|
35
|
+
// ADR-020 user-scoped PAT: name the per-call target tenant so the
|
|
36
|
+
// endpoint mints for it (authorized live). Tenant-bound families omit
|
|
37
|
+
// tenantId → '{}' → the endpoint derives the tenant from the token.
|
|
38
|
+
body: JSON.stringify(opts.tenantId ? { tenant_id: opts.tenantId } : {}),
|
|
39
|
+
});
|
|
40
|
+
if (!response.ok) {
|
|
41
|
+
const errBody = (await response.json().catch(() => ({})));
|
|
42
|
+
console.error(`[MCP Gateway Key] Resolution failed (HTTP ${response.status}): ${errBody.error || errBody.message || 'no error body'}`);
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
const body = (await response.json().catch(() => null));
|
|
46
|
+
const gatewayKey = body?.data?.gateway_key;
|
|
47
|
+
if (typeof gatewayKey !== 'string' || gatewayKey.length === 0) {
|
|
48
|
+
console.error('[MCP Gateway Key] Resolution returned HTTP 200 but no data.gateway_key in the body');
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
return gatewayKey;
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
55
|
+
console.error(`[MCP Gateway Key] Resolution request failed: ${msg}`);
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=gateway-key-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway-key-resolver.js","sourceRoot":"","sources":["../../src/lib/gateway-key-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAmBH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,IAAqC;IAErC,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;IAC3D,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CACX,uJAAuJ,CACxJ,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,GAAG,IAAI,CAAC,MAAM,kCAAkC,EAChD;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,mBAAmB,EAAE,cAAc;gBACnC,aAAa,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE;aACtC;YACD,kEAAkE;YAClE,sEAAsE;YACtE,oEAAoE;YACpE,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAClD;SACF,CACF,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAGvD,CAAC;YACF,OAAO,CAAC,KAAK,CACX,6CAA6C,QAAQ,CAAC,MAAM,MAC1D,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,IAAI,eACtC,EAAE,CACH,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAG7C,CAAC;QAET,MAAM,UAAU,GAAG,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC;QAC3C,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9D,OAAO,CAAC,KAAK,CACX,oFAAoF,CACrF,CAAC;YACF,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,OAAO,CAAC,KAAK,CAAC,gDAAgD,GAAG,EAAE,CAAC,CAAC;QACrE,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured logger for the Dobby MCP server.
|
|
3
|
+
*
|
|
4
|
+
* Emits one JSON object per line using Cloud Logging's structured-log fields
|
|
5
|
+
* (`severity` / `message` / `time`), so GKE ingests each line at its declared
|
|
6
|
+
* severity instead of stream-default severity (stdout=INFO, stderr=ERROR).
|
|
7
|
+
* Plain text on stderr lands as ERROR — which is how the old startup banner
|
|
8
|
+
* polluted Cloud Logging and left the service with zero runtime logs
|
|
9
|
+
* (2026-07-18 prod forensics).
|
|
10
|
+
*
|
|
11
|
+
* Sink rules:
|
|
12
|
+
* - HTTP transport → stdout.
|
|
13
|
+
* - STDIO transport → stderr, ALWAYS: stdout is the JSON-RPC protocol
|
|
14
|
+
* channel and a single log line would corrupt the stream. Call
|
|
15
|
+
* useStderrSink() before any logging when running on STDIO.
|
|
16
|
+
*/
|
|
17
|
+
/** Route all log lines to stderr — MANDATORY in STDIO mode (stdout = protocol). */
|
|
18
|
+
export declare function useStderrSink(): void;
|
|
19
|
+
export declare const log: {
|
|
20
|
+
debug: (message: string, fields?: Record<string, unknown>) => void;
|
|
21
|
+
info: (message: string, fields?: Record<string, unknown>) => void;
|
|
22
|
+
warn: (message: string, fields?: Record<string, unknown>) => void;
|
|
23
|
+
error: (message: string, fields?: Record<string, unknown>) => void;
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/lib/log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,mFAAmF;AACnF,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAiBD,eAAO,MAAM,GAAG;qBACG,MAAM,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oBAEzC,MAAM,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;oBAExC,MAAM,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;qBAEvC,MAAM,WAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAE1D,CAAC"}
|
package/dist/lib/log.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured logger for the Dobby MCP server.
|
|
3
|
+
*
|
|
4
|
+
* Emits one JSON object per line using Cloud Logging's structured-log fields
|
|
5
|
+
* (`severity` / `message` / `time`), so GKE ingests each line at its declared
|
|
6
|
+
* severity instead of stream-default severity (stdout=INFO, stderr=ERROR).
|
|
7
|
+
* Plain text on stderr lands as ERROR — which is how the old startup banner
|
|
8
|
+
* polluted Cloud Logging and left the service with zero runtime logs
|
|
9
|
+
* (2026-07-18 prod forensics).
|
|
10
|
+
*
|
|
11
|
+
* Sink rules:
|
|
12
|
+
* - HTTP transport → stdout.
|
|
13
|
+
* - STDIO transport → stderr, ALWAYS: stdout is the JSON-RPC protocol
|
|
14
|
+
* channel and a single log line would corrupt the stream. Call
|
|
15
|
+
* useStderrSink() before any logging when running on STDIO.
|
|
16
|
+
*/
|
|
17
|
+
let sink = process.stdout;
|
|
18
|
+
/** Route all log lines to stderr — MANDATORY in STDIO mode (stdout = protocol). */
|
|
19
|
+
export function useStderrSink() {
|
|
20
|
+
sink = process.stderr;
|
|
21
|
+
}
|
|
22
|
+
function emit(severity, message, fields = {}) {
|
|
23
|
+
sink.write(JSON.stringify({
|
|
24
|
+
severity,
|
|
25
|
+
message,
|
|
26
|
+
time: new Date().toISOString(),
|
|
27
|
+
...fields,
|
|
28
|
+
}) + "\n");
|
|
29
|
+
}
|
|
30
|
+
export const log = {
|
|
31
|
+
debug: (message, fields) => emit("DEBUG", message, fields),
|
|
32
|
+
info: (message, fields) => emit("INFO", message, fields),
|
|
33
|
+
warn: (message, fields) => emit("WARNING", message, fields),
|
|
34
|
+
error: (message, fields) => emit("ERROR", message, fields),
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/lib/log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,IAAI,IAAI,GAAuB,OAAO,CAAC,MAAM,CAAC;AAE9C,mFAAmF;AACnF,MAAM,UAAU,aAAa;IAC3B,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;AACxB,CAAC;AAED,SAAS,IAAI,CACX,QAAkB,EAClB,OAAe,EACf,SAAkC,EAAE;IAEpC,IAAI,CAAC,KAAK,CACR,IAAI,CAAC,SAAS,CAAC;QACb,QAAQ;QACR,OAAO;QACP,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC9B,GAAG,MAAM;KACV,CAAC,GAAG,IAAI,CACV,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,KAAK,EAAE,CAAC,OAAe,EAAE,MAAgC,EAAE,EAAE,CAC3D,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC;IAChC,IAAI,EAAE,CAAC,OAAe,EAAE,MAAgC,EAAE,EAAE,CAC1D,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;IAC/B,IAAI,EAAE,CAAC,OAAe,EAAE,MAAgC,EAAE,EAAE,CAC1D,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC;IAClC,KAAK,EAAE,CAAC,OAAe,EAAE,MAAgC,EAAE,EAAE,CAC3D,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC;CACjC,CAAC"}
|