fix(core): configure Figma MCP OAuth client
This commit is contained in:
parent
89e3141079
commit
49be2b3a89
4 changed files with 132 additions and 0 deletions
|
|
@ -7,6 +7,7 @@ import { Config as ConfigSchema } from "@opencode-ai/schema/config"
|
|||
import { Plugin } from "@opencode-ai/schema/plugin"
|
||||
import { AgentV2 } from "@opencode-ai/core/agent"
|
||||
import { Catalog } from "@opencode-ai/core/catalog"
|
||||
import { Config } from "@opencode-ai/core/config"
|
||||
import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
|
||||
import { LayerNode } from "@opencode-ai/util/effect/layer-node"
|
||||
import { EventV2 } from "@opencode-ai/core/event"
|
||||
|
|
@ -258,6 +259,82 @@ describe("PluginSupervisor config", () => {
|
|||
}),
|
||||
),
|
||||
)
|
||||
|
||||
it.live("adds the OpenCode client ID to configured Figma servers", () =>
|
||||
withLocation(
|
||||
{
|
||||
mcp: {
|
||||
servers: {
|
||||
figma: {
|
||||
type: "remote",
|
||||
url: "https://mcp.figma.com/mcp",
|
||||
oauth: { scope: "mcp:connect" },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
Effect.gen(function* () {
|
||||
yield* ready()
|
||||
const config = yield* Config.Service
|
||||
expect(Config.latest(yield* config.entries(), "mcp")?.servers?.figma).toMatchObject({
|
||||
oauth: { client_id: "3zVHNs9kINDDrk8loekLZV", scope: "mcp:connect" },
|
||||
})
|
||||
}),
|
||||
),
|
||||
)
|
||||
|
||||
it.live("preserves an existing Figma client ID", () =>
|
||||
withLocation(
|
||||
{
|
||||
mcp: {
|
||||
servers: {
|
||||
figma: {
|
||||
type: "remote",
|
||||
url: "https://mcp.figma.com/mcp",
|
||||
oauth: { client_id: "configured-client-id" },
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
Effect.gen(function* () {
|
||||
yield* ready()
|
||||
const config = yield* Config.Service
|
||||
expect(Config.latest(yield* config.entries(), "mcp")?.servers?.figma).toMatchObject({
|
||||
oauth: { client_id: "configured-client-id" },
|
||||
})
|
||||
}),
|
||||
),
|
||||
)
|
||||
|
||||
it.live("does not enable OAuth or modify non-Figma servers", () =>
|
||||
withLocation(
|
||||
{
|
||||
mcp: {
|
||||
servers: {
|
||||
disabled: {
|
||||
type: "remote",
|
||||
url: "https://mcp.figma.com/mcp",
|
||||
oauth: false,
|
||||
},
|
||||
other: {
|
||||
type: "remote",
|
||||
url: "https://mcp.example.com/mcp",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
Effect.gen(function* () {
|
||||
yield* ready()
|
||||
const config = yield* Config.Service
|
||||
const servers = Config.latest(yield* config.entries(), "mcp")?.servers
|
||||
expect(servers).toMatchObject({
|
||||
disabled: { oauth: false },
|
||||
other: { type: "remote", url: "https://mcp.example.com/mcp" },
|
||||
})
|
||||
expect(servers?.other).not.toHaveProperty("oauth")
|
||||
}),
|
||||
),
|
||||
)
|
||||
})
|
||||
|
||||
const ready = Effect.fnUntraced(function* () {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue