@polpo-ai/server 0.15.144 → 0.16.1

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.
Files changed (107) hide show
  1. package/dist/deps.d.ts +8 -5
  2. package/dist/deps.d.ts.map +1 -1
  3. package/dist/deps.js +0 -7
  4. package/dist/deps.js.map +1 -1
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/routes/agent-revisions.test.d.ts +2 -0
  10. package/dist/routes/agent-revisions.test.d.ts.map +1 -0
  11. package/dist/routes/agent-revisions.test.js +118 -0
  12. package/dist/routes/agent-revisions.test.js.map +1 -0
  13. package/dist/routes/agents.d.ts +3 -0
  14. package/dist/routes/agents.d.ts.map +1 -1
  15. package/dist/routes/agents.js +88 -8
  16. package/dist/routes/agents.js.map +1 -1
  17. package/dist/routes/approvals.d.ts.map +1 -1
  18. package/dist/routes/approvals.js +22 -2
  19. package/dist/routes/approvals.js.map +1 -1
  20. package/dist/routes/completions/agent-step-runner.d.ts.map +1 -1
  21. package/dist/routes/completions/agent-step-runner.js +1 -1
  22. package/dist/routes/completions/agent-step-runner.js.map +1 -1
  23. package/dist/routes/completions/agent-step-runner.test.js +3 -1
  24. package/dist/routes/completions/agent-step-runner.test.js.map +1 -1
  25. package/dist/routes/completions/chat-handler.d.ts +1 -0
  26. package/dist/routes/completions/chat-handler.d.ts.map +1 -1
  27. package/dist/routes/completions/chat-handler.js.map +1 -1
  28. package/dist/routes/completions/chat-interaction-runtime.d.ts +5 -2
  29. package/dist/routes/completions/chat-interaction-runtime.d.ts.map +1 -1
  30. package/dist/routes/completions/chat-interaction-runtime.js +52 -2
  31. package/dist/routes/completions/chat-interaction-runtime.js.map +1 -1
  32. package/dist/routes/completions/chat-suggestions.d.ts +3 -1
  33. package/dist/routes/completions/chat-suggestions.d.ts.map +1 -1
  34. package/dist/routes/completions/chat-suggestions.js +19 -6
  35. package/dist/routes/completions/chat-suggestions.js.map +1 -1
  36. package/dist/routes/completions/chat-suggestions.test.js +26 -0
  37. package/dist/routes/completions/chat-suggestions.test.js.map +1 -1
  38. package/dist/routes/completions/chat-via-run-handler.d.ts +2 -0
  39. package/dist/routes/completions/chat-via-run-handler.d.ts.map +1 -1
  40. package/dist/routes/completions/chat-via-run-handler.js +7 -1
  41. package/dist/routes/completions/chat-via-run-handler.js.map +1 -1
  42. package/dist/routes/completions/conversation-turn.d.ts +3 -1
  43. package/dist/routes/completions/conversation-turn.d.ts.map +1 -1
  44. package/dist/routes/completions/conversation-turn.js +32 -10
  45. package/dist/routes/completions/conversation-turn.js.map +1 -1
  46. package/dist/routes/completions/project-loop-runner.d.ts +6 -7
  47. package/dist/routes/completions/project-loop-runner.d.ts.map +1 -1
  48. package/dist/routes/completions/project-loop-runner.js +57 -8
  49. package/dist/routes/completions/project-loop-runner.js.map +1 -1
  50. package/dist/routes/completions/schemas.d.ts +14 -4
  51. package/dist/routes/completions/schemas.d.ts.map +1 -1
  52. package/dist/routes/completions/schemas.js +15 -6
  53. package/dist/routes/completions/schemas.js.map +1 -1
  54. package/dist/routes/completions/skill-activation-runtime.test.js +1 -1
  55. package/dist/routes/completions/skill-activation-runtime.test.js.map +1 -1
  56. package/dist/routes/completions-agent-lifetime.test.d.ts +2 -0
  57. package/dist/routes/completions-agent-lifetime.test.d.ts.map +1 -0
  58. package/dist/routes/completions-agent-lifetime.test.js +97 -0
  59. package/dist/routes/completions-agent-lifetime.test.js.map +1 -0
  60. package/dist/routes/completions-loop-suggestions.test.d.ts +2 -0
  61. package/dist/routes/completions-loop-suggestions.test.d.ts.map +1 -0
  62. package/dist/routes/completions-loop-suggestions.test.js +164 -0
  63. package/dist/routes/completions-loop-suggestions.test.js.map +1 -0
  64. package/dist/routes/completions.d.ts +4 -1
  65. package/dist/routes/completions.d.ts.map +1 -1
  66. package/dist/routes/completions.js +1 -0
  67. package/dist/routes/completions.js.map +1 -1
  68. package/dist/routes/connect-callback.d.ts +5 -0
  69. package/dist/routes/connect-callback.d.ts.map +1 -0
  70. package/dist/routes/connect-callback.js +30 -0
  71. package/dist/routes/connect-callback.js.map +1 -0
  72. package/dist/routes/connect-callback.test.d.ts +2 -0
  73. package/dist/routes/connect-callback.test.d.ts.map +1 -0
  74. package/dist/routes/connect-callback.test.js +52 -0
  75. package/dist/routes/connect-callback.test.js.map +1 -0
  76. package/dist/routes/connect.d.ts.map +1 -1
  77. package/dist/routes/connect.js +161 -5
  78. package/dist/routes/connect.js.map +1 -1
  79. package/dist/routes/connect.test.js +171 -2
  80. package/dist/routes/connect.test.js.map +1 -1
  81. package/dist/routes/missions.d.ts +3 -2
  82. package/dist/routes/missions.d.ts.map +1 -1
  83. package/dist/routes/missions.js +47 -16
  84. package/dist/routes/missions.js.map +1 -1
  85. package/dist/routes/missions.test.d.ts +2 -0
  86. package/dist/routes/missions.test.d.ts.map +1 -0
  87. package/dist/routes/missions.test.js +88 -0
  88. package/dist/routes/missions.test.js.map +1 -0
  89. package/dist/routes/queued-metadata.test.d.ts +2 -0
  90. package/dist/routes/queued-metadata.test.d.ts.map +1 -0
  91. package/dist/routes/queued-metadata.test.js +29 -0
  92. package/dist/routes/queued-metadata.test.js.map +1 -0
  93. package/dist/routes/task-cancellation.test.d.ts +2 -0
  94. package/dist/routes/task-cancellation.test.d.ts.map +1 -0
  95. package/dist/routes/task-cancellation.test.js +58 -0
  96. package/dist/routes/task-cancellation.test.js.map +1 -0
  97. package/dist/routes/tasks.d.ts +2 -1
  98. package/dist/routes/tasks.d.ts.map +1 -1
  99. package/dist/routes/tasks.js +42 -6
  100. package/dist/routes/tasks.js.map +1 -1
  101. package/dist/schemas.d.ts +41 -3
  102. package/dist/schemas.d.ts.map +1 -1
  103. package/dist/schemas.js +12 -4
  104. package/dist/schemas.js.map +1 -1
  105. package/dist/schemas.test.js +18 -4
  106. package/dist/schemas.test.js.map +1 -1
  107. package/package.json +7 -7
@@ -1,5 +1,6 @@
1
1
  import { OpenAPIHono, createRoute, z } from "@hono/zod-openapi";
2
- import { ConnectError } from "@polpo-ai/connect";
2
+ import { ConnectError, sanitizeConnectorProvider } from "@polpo-ai/connect";
3
+ import { ConnectionSelectionError } from "@polpo-ai/core";
3
4
  const subjectSchema = z.object({
4
5
  type: z.enum(["user", "project", "org", "agent", "service"]),
5
6
  id: z.string().min(1),
@@ -13,7 +14,7 @@ const ownerSchema = z.union([
13
14
  }),
14
15
  ]);
15
16
  const connectionBindingSchema = z.object({
16
- principal: z.object({ type: z.string().min(1), id: z.string().min(1) }).optional(),
17
+ principal: z.object({ type: z.string().min(1), id: z.string().min(1), namespace: z.string().min(1).optional() }).strict().optional(),
17
18
  tenant: z.object({ namespace: z.string().min(1), id: z.string().min(1) }).optional(),
18
19
  resource: z.object({
19
20
  namespace: z.string().min(1),
@@ -24,16 +25,43 @@ const connectionBindingSchema = z.object({
24
25
  });
25
26
  const createApiKeyConnectionBody = z.object({
26
27
  providerId: z.string().min(1),
28
+ authenticationId: z.string().min(1).max(64).optional(),
27
29
  apiKey: z.string().min(1),
28
30
  scopes: z.array(z.string()).optional(),
29
- subject: subjectSchema.optional(),
31
+ subject: ownerSchema.optional(),
32
+ audience: z.enum(["personal", "shared", "end_user"]).optional(),
33
+ binding: connectionBindingSchema.optional(),
30
34
  name: z.string().optional(),
31
35
  projectId: z.string().optional(),
32
36
  orgId: z.string().optional(),
33
37
  metadata: z.record(z.string(), z.unknown()).optional(),
34
38
  });
39
+ const inspectMcpBody = z.object({
40
+ url: z.string().url(),
41
+ transport: z.enum(["http", "sse"]).optional(),
42
+ });
43
+ const createMcpBody = createApiKeyConnectionBody.omit({ apiKey: true }).extend({
44
+ providerId: z.string().min(1).optional(),
45
+ ...inspectMcpBody.shape,
46
+ auth: z.enum(["none", "bearer", "header"]).optional(),
47
+ headerName: z.string().min(1).optional(),
48
+ apiKey: z.string().min(1).optional(),
49
+ bearerToken: z.string().min(1).optional(),
50
+ });
51
+ const startMcpOAuthBody = createMcpBody.omit({ auth: true, apiKey: true, bearerToken: true, headerName: true }).extend({
52
+ redirectUri: z.string().url(),
53
+ mode: z.enum(["dynamic", "pre_registered", "metadata_document"]),
54
+ clientName: z.string().min(1).optional(),
55
+ clientUri: z.string().url().optional(),
56
+ clientMetadataUrl: z.string().url().optional(),
57
+ preRegisteredClient: z.object({ client_id: z.string().min(1), client_secret: z.string().optional(),
58
+ client_id_issued_at: z.number().optional(), client_secret_expires_at: z.number().optional(),
59
+ }).passthrough().optional(),
60
+ });
35
61
  const startOAuthBody = z.object({
36
62
  providerId: z.string().min(1),
63
+ authenticationId: z.string().min(1).max(64).optional(),
64
+ oauthClientMode: z.enum(["managed", "customer", "instance"]).optional(),
37
65
  scopes: z.array(z.string()).optional(),
38
66
  subject: subjectSchema.optional(),
39
67
  redirectUri: z.string().url(),
@@ -56,6 +84,8 @@ const getTokenBody = z.object({
56
84
  }).optional();
57
85
  const createSetupSessionBody = z.object({
58
86
  providerId: z.string().min(1),
87
+ authenticationId: z.string().min(1).max(64).optional(),
88
+ configurationId: z.string().min(1).max(256).optional(),
59
89
  projectId: z.string().min(1),
60
90
  orgId: z.string().min(1).optional(),
61
91
  audience: z.enum(["personal", "shared", "end_user"]),
@@ -112,7 +142,66 @@ export function connectRoutes(getDeps) {
112
142
  200: { content: { "application/json": { schema: okAnySchema } }, description: "Connector providers" },
113
143
  501: { content: { "application/json": { schema: errorSchema } }, description: "Connect service unavailable" },
114
144
  },
115
- }), async (c) => withConnect(c, getDeps, async (service) => c.json({ ok: true, data: service.listProviders() }, 200)));
145
+ }), async (c) => withConnect(c, getDeps, async (service) => c.json({
146
+ ok: true, data: service.listProviders().map(sanitizeConnectorProvider),
147
+ }, 200)));
148
+ openapi(createRoute({
149
+ method: "get", path: "/catalog", tags: ["Connect"],
150
+ summary: "List Connectors with protocol and supported authentication methods",
151
+ responses: {
152
+ 200: { content: { "application/json": { schema: okAnySchema } }, description: "Non-secret Connector catalog" },
153
+ 501: { content: { "application/json": { schema: errorSchema } }, description: "Connect service unavailable" },
154
+ },
155
+ }), async (c) => withConnect(c, getDeps, async (service) => c.json({ ok: true, data: await service.listCatalog() }, 200)));
156
+ openapi(createRoute({
157
+ method: "post", path: "/connections/public", tags: ["Connect"],
158
+ summary: "Create a Connection to an unauthenticated HTTP API",
159
+ request: { body: { content: { "application/json": { schema: createApiKeyConnectionBody.omit({ apiKey: true }) } } } },
160
+ responses: {
161
+ 201: { content: { "application/json": { schema: okAnySchema } }, description: "Public API Connection created" },
162
+ 400: { content: { "application/json": { schema: errorSchema } }, description: "Invalid request or authentication" },
163
+ 501: { content: { "application/json": { schema: errorSchema } }, description: "Connect service unavailable" },
164
+ },
165
+ }), async (c) => withConnect(c, getDeps, async (service) => c.json({
166
+ ok: true, data: await service.createPublicConnection(c.req.valid("json")),
167
+ }, 201)));
168
+ openapi(createRoute({
169
+ method: "post", path: "/connectors", tags: ["Connect"],
170
+ summary: "Register an immutable custom Connector definition",
171
+ request: { body: { content: { "application/json": { schema: z.record(z.string(), z.unknown()) } } } },
172
+ responses: {
173
+ 201: { content: { "application/json": { schema: okAnySchema } }, description: "Validated non-secret definition" },
174
+ 400: { content: { "application/json": { schema: errorSchema } }, description: "Invalid or duplicate Connector" },
175
+ 422: { content: { "application/json": { schema: errorSchema } }, description: "Host has no custom definition store" },
176
+ },
177
+ }), async (c) => withConnect(c, getDeps, async (service) => c.json({
178
+ ok: true, data: await service.registerConnectorDefinition(c.req.valid("json")),
179
+ }, 201)));
180
+ openapi(createRoute({
181
+ method: "post", path: "/setup-readiness", tags: ["Connect"],
182
+ summary: "Check local setup prerequisites without testing provider credentials",
183
+ request: { body: { content: { "application/json": { schema: startOAuthBody.pick({
184
+ providerId: true, authenticationId: true, oauthClientMode: true, projectId: true, orgId: true,
185
+ }).extend({ redirectUri: z.string().url().optional() }) } } } },
186
+ responses: {
187
+ 200: { content: { "application/json": { schema: okAnySchema } }, description: "Configuration readiness; not a live Connection check" },
188
+ 400: { content: { "application/json": { schema: errorSchema } }, description: "Invalid Connector selection" },
189
+ 501: { content: { "application/json": { schema: errorSchema } }, description: "Connect service unavailable" },
190
+ },
191
+ }), async (c) => withConnect(c, getDeps, async (service) => c.json({
192
+ ok: true, data: await service.getSetupReadiness(c.req.valid("json")),
193
+ }, 200)));
194
+ openapi(createRoute({
195
+ method: "post", path: "/connectors/{connectorId}/disable", tags: ["Connect"],
196
+ summary: "Disable a custom Connector and block its existing Connections",
197
+ request: { params: z.object({ connectorId: z.string().min(1) }) },
198
+ responses: {
199
+ 200: { content: { "application/json": { schema: okAnySchema } }, description: "Disabled custom definition" },
200
+ 404: { content: { "application/json": { schema: errorSchema } }, description: "Custom Connector not found" },
201
+ },
202
+ }), async (c) => withConnect(c, getDeps, async (service) => c.json({
203
+ ok: true, data: await service.disableConnectorDefinition(c.req.valid("param").connectorId),
204
+ }, 200)));
116
205
  openapi(createRoute({
117
206
  method: "get",
118
207
  path: "/connections",
@@ -135,6 +224,18 @@ export function connectRoutes(getDeps) {
135
224
  };
136
225
  return c.json({ ok: true, data: await service.listConnections(filter) }, 200);
137
226
  }));
227
+ openapi(createRoute({
228
+ method: "post", path: "/connections/{connectionId}/verify", tags: ["Connect"],
229
+ summary: "Run a configured non-destructive Connection check",
230
+ request: { params: z.object({ connectionId: z.string().min(1) }) },
231
+ responses: {
232
+ 200: { content: { "application/json": { schema: okAnySchema } }, description: "Verification result, distinct from Connection lifecycle status" },
233
+ 404: { content: { "application/json": { schema: errorSchema } }, description: "Connection not found" },
234
+ 501: { content: { "application/json": { schema: errorSchema } }, description: "Connect service unavailable" },
235
+ },
236
+ }), async (c) => withConnect(c, getDeps, async (service) => c.json({
237
+ ok: true, data: await service.verifyConnection({ connectionId: c.req.valid("param").connectionId, signal: c.req.raw.signal }),
238
+ }, 200)));
138
239
  openapi(createRoute({
139
240
  method: "get",
140
241
  path: "/connection-links",
@@ -195,6 +296,39 @@ export function connectRoutes(getDeps) {
195
296
  const data = await service.createApiKeyConnection(body);
196
297
  return c.json({ ok: true, data }, 200);
197
298
  }));
299
+ openapi(createRoute({
300
+ method: "post", path: "/connections/mcp", tags: ["Connect"],
301
+ summary: "Create a remote MCP Connection",
302
+ request: { body: { content: { "application/json": { schema: createMcpBody } } } },
303
+ responses: {
304
+ 201: { content: { "application/json": { schema: okAnySchema } }, description: "MCP Connection created" },
305
+ 400: { content: { "application/json": { schema: errorSchema } }, description: "Invalid request" },
306
+ },
307
+ }), async (c) => withConnect(c, getDeps, async (service) => c.json({
308
+ ok: true, data: await service.createMcpConnection(c.req.valid("json")),
309
+ }, 201)));
310
+ openapi(createRoute({
311
+ method: "post", path: "/mcp/inspect", tags: ["Connect"],
312
+ summary: "Inspect a remote MCP server's OAuth capabilities",
313
+ request: { body: { content: { "application/json": { schema: inspectMcpBody } } } },
314
+ responses: {
315
+ 200: { content: { "application/json": { schema: okAnySchema } }, description: "MCP OAuth configuration" },
316
+ 400: { content: { "application/json": { schema: errorSchema } }, description: "Invalid endpoint" },
317
+ },
318
+ }), async (c) => withConnect(c, getDeps, async (service) => c.json({
319
+ ok: true, data: await service.inspectMcpOAuth(c.req.valid("json")),
320
+ }, 200)));
321
+ openapi(createRoute({
322
+ method: "post", path: "/mcp/oauth/start", tags: ["Connect"],
323
+ summary: "Start MCP OAuth with an explicit host callback",
324
+ request: { body: { content: { "application/json": { schema: startMcpOAuthBody } } } },
325
+ responses: {
326
+ 200: { content: { "application/json": { schema: okAnySchema } }, description: "MCP authorization URL" },
327
+ 400: { content: { "application/json": { schema: errorSchema } }, description: "Invalid request" },
328
+ },
329
+ }), async (c) => withConnect(c, getDeps, async (service) => c.json({
330
+ ok: true, data: await service.startMcpOAuth(c.req.valid("json")),
331
+ }, 200)));
198
332
  openapi(createRoute({
199
333
  method: "post",
200
334
  path: "/oauth/start",
@@ -224,7 +358,7 @@ export function connectRoutes(getDeps) {
224
358
  501: { content: { "application/json": { schema: errorSchema } }, description: "Connect service unavailable" },
225
359
  },
226
360
  }), async (c) => withConnect(c, getDeps, async (service) => {
227
- const data = await service.completeOAuth(c.req.valid("json"));
361
+ const { connection: data } = await service.completeOAuthCallback(c.req.valid("json"));
228
362
  return c.json({ ok: true, data }, 200);
229
363
  }));
230
364
  openapi(createRoute({
@@ -243,6 +377,25 @@ export function connectRoutes(getDeps) {
243
377
  const data = await service.createSetupSession(c.req.valid("json"));
244
378
  return c.json({ ok: true, data }, 201);
245
379
  }));
380
+ for (const operation of ["status", "cancel"]) {
381
+ openapi(createRoute({
382
+ method: operation === "status" ? "get" : "post",
383
+ path: `/setup/:id/${operation}`,
384
+ tags: ["Connect"],
385
+ summary: operation === "status" ? "Observe safe Connection setup status" : "Cancel an unused Connection setup",
386
+ request: { params: z.object({ id: z.string().min(1) }) },
387
+ responses: {
388
+ 200: { content: { "application/json": { schema: okAnySchema } }, description: "Setup status" },
389
+ 404: { content: { "application/json": { schema: errorSchema } }, description: "Setup session not found" },
390
+ 410: { content: { "application/json": { schema: errorSchema } }, description: "Setup can no longer be cancelled" },
391
+ 422: { content: { "application/json": { schema: errorSchema } }, description: "Setup lifecycle unavailable" },
392
+ 501: { content: { "application/json": { schema: errorSchema } }, description: "Connect service unavailable" },
393
+ },
394
+ }), async (c) => withConnect(c, getDeps, async (service) => {
395
+ const data = operation === "status" ? await service.getSetupStatus(c.req.param("id")) : await service.cancelSetupSession(c.req.param("id"));
396
+ return data ? c.json({ ok: true, data }, 200) : c.json({ ok: false, error: "Connection setup session not found", code: "SETUP_NOT_FOUND" }, 404);
397
+ }));
398
+ }
246
399
  openapi(createRoute({
247
400
  method: "post",
248
401
  path: "/setup-sessions/:id/start",
@@ -335,6 +488,9 @@ async function withConnect(c, getDeps, handler) {
335
488
  if (error instanceof ConnectError) {
336
489
  return c.json({ ok: false, error: error.message, code: error.code, details: error.details }, error.status);
337
490
  }
491
+ if (error instanceof ConnectionSelectionError) {
492
+ return c.json({ ok: false, error: error.message, code: error.code }, error.status);
493
+ }
338
494
  throw error;
339
495
  }
340
496
  }
@@ -1 +1 @@
1
- {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/routes/connect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/routes/connect.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it, vi } from "vitest";
2
- import { MemoryConnectStore, MemoryConnectionSecretStore, createConnectService } from "@polpo-ai/connect-server";
2
+ import { MemoryConnectStore, MemoryConnectionSecretStore, MemoryConnectorDefinitionStore, createConnectService } from "@polpo-ai/connect-server";
3
3
  import { connectRoutes } from "./connect.js";
4
4
  const apiKeyProvider = {
5
5
  id: "custom_api",
@@ -27,6 +27,148 @@ const oauthProvider = {
27
27
  scopes: [{ id: "read" }, { id: "write" }],
28
28
  };
29
29
  describe("connectRoutes", () => {
30
+ it("creates an embedded MCP setup with the selected reusable client and trusted owner", async () => {
31
+ const store = new MemoryConnectStore();
32
+ const client = { id: "mcp-config", providerId: "mcp_url", owner: { type: "instance", id: "host" },
33
+ resourceUrl: "https://mcp.example/mcp", transport: "http", redirectUri: "https://host.example/callback",
34
+ registration: { mode: "pre_registered", client: { client_id: "client", client_secret: "private-config-secret" } } };
35
+ const resolver = { resolve: vi.fn(async () => client), resolveById: vi.fn(async () => client) };
36
+ const service = createConnectService({ providers: [{ id: "mcp_url", name: "MCP", auth: { type: "mcp", auth: "oauth2" }, scopes: [] }],
37
+ store, setupSessions: store, links: store, secrets: new MemoryConnectionSecretStore(),
38
+ mcpOAuthClients: resolver, allowedReturnUrlOrigins: ["https://app.example"] });
39
+ const app = connectRoutes(() => ({ connectService: service }));
40
+ const subject = { type: "external_user", namespace: "app", id: "gioia" };
41
+ const response = await app.request("/setup-sessions", { method: "POST", headers: { "content-type": "application/json" },
42
+ body: JSON.stringify({ providerId: "mcp_url", projectId: "project", audience: "end_user", subject,
43
+ returnUrl: "https://app.example/connected", oauthClientMode: "instance", configurationId: "mcp-config" }) });
44
+ expect(response.status).toBe(201);
45
+ const body = await response.json();
46
+ expect(body).toMatchObject({ data: { flowKind: "mcp", oauthClientId: "mcp-config", subject } });
47
+ expect(resolver.resolve).toHaveBeenCalledWith(expect.objectContaining({ configurationId: "mcp-config", projectId: "project", mode: "instance" }));
48
+ expect(JSON.stringify(body)).not.toContain("private-config-secret");
49
+ });
50
+ it("dispatches the authenticated callback by its stored flow, including MCP", async () => {
51
+ const { service, store } = createHarness();
52
+ await store.saveOAuthState({ state: "mcp-state", providerId: "mcp_url", flowKind: "mcp", requestedScopes: [],
53
+ redirectUri: "https://host.example/callback", createdAt: new Date().toISOString(), expiresAt: "2099-01-01T00:00:00.000Z" });
54
+ const completeMcp = vi.spyOn(service, "completeMcpOAuth").mockResolvedValue({ id: "mcp-connection", authType: "mcp" });
55
+ const completeApi = vi.spyOn(service, "completeOAuth");
56
+ const app = connectRoutes(() => ({ connectService: service }));
57
+ const response = await app.request("/oauth/callback", { method: "POST", headers: { "content-type": "application/json" },
58
+ body: JSON.stringify({ state: "mcp-state", code: "code" }) });
59
+ expect(response.status).toBe(200);
60
+ expect(await response.json()).toMatchObject({ data: { id: "mcp-connection", authType: "mcp" } });
61
+ expect(completeMcp).toHaveBeenCalledWith({ state: "mcp-state", code: "code" });
62
+ expect(completeApi).not.toHaveBeenCalled();
63
+ });
64
+ it("returns a structured denial for unsafe generic MCP auth headers instead of HTTP 500", async () => {
65
+ const service = createConnectService({ providers: [{ id: "mcp_url", name: "MCP", auth: { type: "mcp", auth: "bearer" }, scopes: [] }],
66
+ store: new MemoryConnectStore(), secrets: new MemoryConnectionSecretStore() });
67
+ const app = connectRoutes(() => ({ connectService: service }));
68
+ const response = await app.request("/connections/mcp", { method: "POST", headers: { "content-type": "application/json" },
69
+ body: JSON.stringify({ url: "https://mcp.example", auth: "header", headerName: "Cookie", apiKey: "private" }) });
70
+ expect(response.status).toBe(403);
71
+ expect(await response.json()).toMatchObject({ ok: false, code: "connection_operation_denied" });
72
+ });
73
+ it("preserves trusted audience and binding through the API-key route", async () => {
74
+ const app = connectRoutes(() => ({ connectService: createHarness().service }));
75
+ const owner = { type: "external_user", namespace: "app", id: "viewer" };
76
+ const response = await app.request("/connections/api-key", { method: "POST", headers: { "content-type": "application/json" },
77
+ body: JSON.stringify({ providerId: "custom_api", apiKey: "private", audience: "end_user", subject: owner, binding: { scopeEpoch: "one" } }) });
78
+ expect(response.status).toBe(200);
79
+ expect(await response.json()).toMatchObject({ data: { audience: "end_user", owner, binding: { principal: owner, scopeEpoch: "one" } } });
80
+ });
81
+ it("creates a custom MCP through the SDK's advertised OSS route with its selected authentication and identity", async () => {
82
+ const service = createConnectService({ providers: [{ version: 2, id: "notes", name: "Notes", source: "custom", protocol: "mcp",
83
+ defaultAuthenticationId: "public", authentication: [{ id: "public", type: "none" }] }],
84
+ store: new MemoryConnectStore(), secrets: new MemoryConnectionSecretStore() });
85
+ const app = connectRoutes(() => ({ connectService: service }));
86
+ const response = await app.request("/connections/mcp", { method: "POST", headers: { "content-type": "application/json" },
87
+ body: JSON.stringify({ providerId: "notes", authenticationId: "public", url: "https://mcp.example/mcp", audience: "personal", subject: { type: "user", id: "builder" } }) });
88
+ expect(response.status).toBe(201);
89
+ expect(await response.json()).toMatchObject({ data: { providerId: "notes", authenticationId: "public", audience: "personal",
90
+ binding: { principal: { type: "user", id: "builder" } }, metadata: { auth: "none" } } });
91
+ });
92
+ it("exposes OSS MCP inspect and OAuth start, keeping the callback and trusted context explicit", async () => {
93
+ const { service } = createHarness();
94
+ const inspect = vi.spyOn(service, "inspectMcpOAuth").mockResolvedValue({});
95
+ const start = vi.spyOn(service, "startMcpOAuth").mockResolvedValue({ authorizationUrl: "https://provider.example", state: "state", expiresAt: "2099" });
96
+ const app = connectRoutes(() => ({ connectService: service }));
97
+ const post = (path, body) => app.request(path, { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify(body) });
98
+ expect((await post("/mcp/inspect", { url: "https://mcp.example/mcp", transport: "sse" })).status).toBe(200);
99
+ const input = { providerId: "notes", authenticationId: "oauth", url: "https://mcp.example/mcp", mode: "dynamic",
100
+ redirectUri: "https://host.example/v1/connect/oauth/callback", audience: "personal", subject: { type: "user", id: "builder" } };
101
+ expect((await post("/mcp/oauth/start", input)).status).toBe(200);
102
+ expect(inspect).toHaveBeenCalledWith({ url: "https://mcp.example/mcp", transport: "sse" });
103
+ expect(start).toHaveBeenCalledWith(input);
104
+ expect((await post("/mcp/oauth/start", { ...input, redirectUri: undefined })).status).toBe(400);
105
+ expect(start).toHaveBeenCalledOnce();
106
+ });
107
+ it("exposes local setup readiness separately from live verification", async () => {
108
+ const app = connectRoutes(() => ({ connectService: createHarness().service }));
109
+ const response = await app.request("/setup-readiness", { method: "POST", headers: { "content-type": "application/json" },
110
+ body: JSON.stringify({ providerId: "custom_api" }),
111
+ });
112
+ expect(response.status).toBe(200);
113
+ expect(await response.json()).toMatchObject({ data: { check: "configuration", outcome: "passed", code: "credentials_required" } });
114
+ });
115
+ it("registers a custom API through HTTP and blocks it after disabling the definition", async () => {
116
+ const service = createConnectService({ providers: [], store: new MemoryConnectStore(), secrets: new MemoryConnectionSecretStore(), definitions: new MemoryConnectorDefinitionStore() });
117
+ const app = connectRoutes(() => ({ connectService: service }));
118
+ const response = await app.request("/connectors", { method: "POST", headers: { "content-type": "application/json" },
119
+ body: JSON.stringify({ version: 2, id: "weather", name: "Weather", source: "catalog", protocol: "http_api",
120
+ defaultAuthenticationId: "public", authentication: [{ id: "public", type: "none" }], http: { origins: ["https://api.example.com"] } }),
121
+ });
122
+ expect(response.status).toBe(201);
123
+ expect(await response.json()).toMatchObject({ data: { definition: { source: "custom" } } });
124
+ expect(await (await app.request("/catalog")).json()).toMatchObject({ data: [{ id: "weather" }] });
125
+ expect((await app.request("/connectors/weather/disable", { method: "POST" })).status).toBe(200);
126
+ expect(await (await app.request("/catalog")).json()).toMatchObject({ data: [] });
127
+ });
128
+ it("exposes an honest verification result without serializing credentials", async () => {
129
+ const { service } = createHarness();
130
+ const connection = await service.createApiKeyConnection({ providerId: "custom_api", apiKey: "private-test-key" });
131
+ const app = connectRoutes(() => ({ connectService: service }));
132
+ const response = await app.request(`/connections/${connection.id}/verify`, { method: "POST" });
133
+ expect(response.status).toBe(200);
134
+ const body = await response.json();
135
+ expect(body).toMatchObject({ ok: true, data: { outcome: "unsupported", code: "probe_not_configured" } });
136
+ expect(JSON.stringify(body)).not.toContain("private-test-key");
137
+ expect((await app.request("/connections/missing/verify", { method: "POST" })).status).toBe(404);
138
+ });
139
+ it("does not expose OAuth app credentials in the provider catalog", async () => {
140
+ const app = connectRoutes(() => ({ connectService: createHarness().service }));
141
+ const response = await app.request("/providers");
142
+ expect(response.status).toBe(200);
143
+ const body = await response.text();
144
+ expect(body).not.toContain("client_secret");
145
+ expect(body).not.toContain('"clientSecret"');
146
+ });
147
+ it("exposes the normalized catalog and public HTTP setup without discarding authentication selection", async () => {
148
+ const service = createConnectService({
149
+ providers: [{
150
+ version: 2, id: "public_api", name: "Public API", source: "custom", protocol: "http_api",
151
+ defaultAuthenticationId: "public", authentication: [{ id: "public", type: "none" }],
152
+ http: { origins: ["https://api.example.com"] },
153
+ }],
154
+ store: new MemoryConnectStore(), secrets: new MemoryConnectionSecretStore(),
155
+ });
156
+ const app = connectRoutes(() => ({ connectService: service }));
157
+ const catalog = await app.request("/catalog");
158
+ expect(catalog.status).toBe(200);
159
+ expect(await catalog.json()).toMatchObject({ data: [{ protocol: "http_api", authentication: [{ type: "none" }] }] });
160
+ const created = await app.request("/connections/public", {
161
+ method: "POST", headers: { "content-type": "application/json" },
162
+ body: JSON.stringify({ providerId: "public_api", authenticationId: "public" }),
163
+ });
164
+ expect(created.status).toBe(201);
165
+ expect(await created.json()).toMatchObject({ data: { authType: "none", authenticationId: "public" } });
166
+ const invalid = await app.request("/connections/public", {
167
+ method: "POST", headers: { "content-type": "application/json" },
168
+ body: JSON.stringify({ providerId: "public_api", authenticationId: "unknown" }),
169
+ });
170
+ expect(invalid.status).toBe(400);
171
+ });
30
172
  it("returns 501 when connect service is not wired", async () => {
31
173
  const app = connectRoutes(() => ({}));
32
174
  const res = await app.request("/providers");
@@ -157,7 +299,7 @@ describe("connectRoutes", () => {
157
299
  audience: "end_user",
158
300
  subject: { type: "external_user", namespace: "app", id: "user-1" },
159
301
  binding: {
160
- principal: { type: "external_user", id: "user-1" },
302
+ principal: { type: "external_user", namespace: "app", id: "user-1" },
161
303
  tenant: { namespace: "app", id: "tenant-1" },
162
304
  },
163
305
  scopes: ["read"],
@@ -171,8 +313,15 @@ describe("connectRoutes", () => {
171
313
  projectId: "project-1",
172
314
  audience: "end_user",
173
315
  subject: { type: "external_user", namespace: "app", id: "user-1" },
316
+ binding: { principal: { type: "external_user", namespace: "app", id: "user-1" } },
174
317
  });
175
318
  expect(setup.data).not.toHaveProperty("oauthClientSecret");
319
+ const observed = await app.request(`/setup/${setup.data.id}/status`);
320
+ expect(observed.status).toBe(200);
321
+ const publicStatus = await observed.json();
322
+ expect(publicStatus.data).toMatchObject({ status: "pending", scopes: ["read"] });
323
+ expect(publicStatus.data).not.toHaveProperty("subject");
324
+ expect(publicStatus.data).not.toHaveProperty("binding");
176
325
  const startRes = await app.request(`/setup-sessions/${setup.data.id}/start`, { method: "POST" });
177
326
  const started = await startRes.json();
178
327
  expect(startRes.status).toBe(200);
@@ -180,6 +329,26 @@ describe("connectRoutes", () => {
180
329
  const replayRes = await app.request(`/setup-sessions/${setup.data.id}/start`, { method: "POST" });
181
330
  expect(replayRes.status).toBe(409);
182
331
  await expect(replayRes.json()).resolves.toMatchObject({ ok: false, code: "setup_consumed" });
332
+ const cancelStarted = await app.request(`/setup/${setup.data.id}/cancel`, { method: "POST" });
333
+ expect(cancelStarted.status).toBe(410);
334
+ const callback = await app.request("/oauth/callback", { method: "POST", headers: { "content-type": "application/json" },
335
+ body: JSON.stringify({ state: started.data.state, code: "code" }) });
336
+ expect(callback.status).toBe(200);
337
+ const completed = await (await app.request(`/setup/${setup.data.id}/status`)).json();
338
+ expect(completed.data).toMatchObject({ status: "completed", resultingConnectionId: (await callback.json()).data.id });
339
+ });
340
+ it("observes missing setup and cancels a pending setup through SDK-compatible routes", async () => {
341
+ const harness = createHarness({ withOAuthClient: true });
342
+ const app = connectRoutes(() => ({ connectService: harness.service }));
343
+ expect((await app.request("/setup/missing/status")).status).toBe(404);
344
+ expect((await app.request("/setup/missing/cancel", { method: "POST" })).status).toBe(404);
345
+ const setup = await harness.service.createSetupSession({ providerId: "test_oauth", projectId: "project-1", audience: "end_user",
346
+ subject: { type: "external_user", namespace: "app", id: "user-1" }, scopes: ["read"],
347
+ returnUrl: "https://app.example/settings", oauthClientMode: "managed" });
348
+ const cancelled = await app.request(`/setup/${setup.id}/cancel`, { method: "POST" });
349
+ expect(cancelled.status).toBe(200);
350
+ expect((await cancelled.json()).data.status).toBe("cancelled");
351
+ expect((await app.request(`/setup-sessions/${setup.id}/start`, { method: "POST" })).status).toBe(409);
183
352
  });
184
353
  it("executes a policy-bound gateway request without exposing credentials", async () => {
185
354
  const harness = createHarness({