@minicor/mcp-server 3.9.1 → 4.0.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 +145 -100
- package/dist/__tests__/discovery.test.d.ts +2 -0
- package/dist/__tests__/discovery.test.d.ts.map +1 -0
- package/dist/__tests__/{builder-discovery.test.js → discovery.test.js} +3 -3
- package/dist/__tests__/discovery.test.js.map +1 -0
- package/dist/__tests__/http-seal.test.d.ts +2 -0
- package/dist/__tests__/http-seal.test.d.ts.map +1 -0
- package/dist/__tests__/http-seal.test.js +40 -0
- package/dist/__tests__/http-seal.test.js.map +1 -0
- package/dist/__tests__/http-server.test.d.ts +7 -0
- package/dist/__tests__/http-server.test.d.ts.map +1 -0
- package/dist/__tests__/http-server.test.js +317 -0
- package/dist/__tests__/http-server.test.js.map +1 -0
- package/dist/__tests__/jobs-tools.test.d.ts +2 -0
- package/dist/__tests__/jobs-tools.test.d.ts.map +1 -0
- package/dist/__tests__/jobs-tools.test.js +336 -0
- package/dist/__tests__/jobs-tools.test.js.map +1 -0
- package/dist/__tests__/middleware-service-client.test.js +70 -0
- package/dist/__tests__/middleware-service-client.test.js.map +1 -1
- package/dist/__tests__/server-surface.test.d.ts +2 -0
- package/dist/__tests__/server-surface.test.d.ts.map +1 -0
- package/dist/__tests__/{server-profile.test.js → server-surface.test.js} +109 -91
- package/dist/__tests__/server-surface.test.js.map +1 -0
- package/dist/bootstrap.js +29 -0
- package/dist/bootstrap.js.map +1 -1
- package/dist/http-oauth.d.ts +60 -0
- package/dist/http-oauth.d.ts.map +1 -0
- package/dist/http-oauth.js +380 -0
- package/dist/http-oauth.js.map +1 -0
- package/dist/http-seal.d.ts +17 -0
- package/dist/http-seal.d.ts.map +1 -0
- package/dist/http-seal.js +63 -0
- package/dist/http-seal.js.map +1 -0
- package/dist/http-server.d.ts +29 -0
- package/dist/http-server.d.ts.map +1 -0
- package/dist/http-server.js +229 -0
- package/dist/http-server.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -15
- package/dist/index.js.map +1 -1
- package/dist/lib.d.ts +6 -4
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +10 -10
- package/dist/lib.js.map +1 -1
- package/dist/middleware-service-client.d.ts +37 -2
- package/dist/middleware-service-client.d.ts.map +1 -1
- package/dist/middleware-service-client.js +43 -2
- package/dist/middleware-service-client.js.map +1 -1
- package/dist/prompts/build-rpa.d.ts.map +1 -1
- package/dist/prompts/build-rpa.js +2 -0
- package/dist/prompts/build-rpa.js.map +1 -1
- package/dist/server-surface.d.ts +23 -0
- package/dist/server-surface.d.ts.map +1 -0
- package/dist/server-surface.js +110 -0
- package/dist/server-surface.js.map +1 -0
- package/dist/setup.d.ts +1 -1
- package/dist/setup.js +3 -9
- package/dist/setup.js.map +1 -1
- package/dist/sync.js +33 -6
- package/dist/sync.js.map +1 -1
- package/dist/tools/core.js +1 -1
- package/dist/tools/core.js.map +1 -1
- package/dist/tools/{builder-discovery.d.ts → discovery.d.ts} +3 -3
- package/dist/tools/discovery.d.ts.map +1 -0
- package/dist/tools/{builder-discovery.js → discovery.js} +3 -3
- package/dist/tools/discovery.js.map +1 -0
- package/dist/tools/jobs.d.ts.map +1 -1
- package/dist/tools/jobs.js +296 -3
- package/dist/tools/jobs.js.map +1 -1
- package/dist/tools/vm.js +1 -1
- package/dist/tools/vm.js.map +1 -1
- package/package.json +3 -2
- package/skills/general/job-build-loop.md +163 -0
- package/dist/__tests__/builder-discovery.test.d.ts +0 -2
- package/dist/__tests__/builder-discovery.test.d.ts.map +0 -1
- package/dist/__tests__/builder-discovery.test.js.map +0 -1
- package/dist/__tests__/server-profile.test.d.ts +0 -2
- package/dist/__tests__/server-profile.test.d.ts.map +0 -1
- package/dist/__tests__/server-profile.test.js.map +0 -1
- package/dist/builder-index.d.ts +0 -3
- package/dist/builder-index.d.ts.map +0 -1
- package/dist/builder-index.js +0 -5
- package/dist/builder-index.js.map +0 -1
- package/dist/server-profile.d.ts +0 -11
- package/dist/server-profile.d.ts.map +0 -1
- package/dist/server-profile.js +0 -104
- package/dist/server-profile.js.map +0 -1
- package/dist/tools/builder-discovery.d.ts.map +0 -1
- package/dist/tools/builder-discovery.js.map +0 -1
|
@@ -3,107 +3,125 @@ import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js";
|
|
|
3
3
|
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
4
4
|
import { buildCodeModeInstructions } from "../codemode.js";
|
|
5
5
|
import { createMinicorServer } from "../lib.js";
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
"
|
|
10
|
-
"
|
|
6
|
+
import { buildInstructions, SERVER_NAME } from "../server-surface.js";
|
|
7
|
+
/** Tools that read/write the server's local filesystem (clones, sessions, sync). */
|
|
8
|
+
const LOCAL_ONLY_TOOLS = [
|
|
9
|
+
"session_start",
|
|
10
|
+
"session_checkpoint",
|
|
11
|
+
"session_end",
|
|
12
|
+
"clone_workspace",
|
|
13
|
+
"init_project",
|
|
14
|
+
"pull_workflow",
|
|
15
|
+
"push_workflow",
|
|
16
|
+
"pull_all",
|
|
17
|
+
"push_changed",
|
|
18
|
+
"sync_status",
|
|
19
|
+
"set_workspaces_root",
|
|
20
|
+
];
|
|
21
|
+
/** A representative slice of the shared remote surface. */
|
|
22
|
+
const SHARED_TOOLS = [
|
|
23
|
+
"list_workspaces",
|
|
11
24
|
"create_workflow",
|
|
12
|
-
"
|
|
13
|
-
"delete_job",
|
|
14
|
-
"delete_middleware",
|
|
15
|
-
"dev_mode_add_step",
|
|
16
|
-
"dev_mode_delete_draft",
|
|
17
|
-
"dev_mode_edit_step",
|
|
18
|
-
"dev_mode_get_run_status",
|
|
19
|
-
"dev_mode_get_step",
|
|
20
|
-
"dev_mode_get_step_list",
|
|
21
|
-
"dev_mode_get_workspace",
|
|
25
|
+
"execute_workflow",
|
|
22
26
|
"dev_mode_load",
|
|
23
|
-
"dev_mode_publish",
|
|
24
|
-
"dev_mode_regroup",
|
|
25
|
-
"dev_mode_remove_step",
|
|
26
|
-
"dev_mode_reorder",
|
|
27
27
|
"dev_mode_run",
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"get_config_store",
|
|
33
|
-
"get_job",
|
|
34
|
-
"get_job_execution",
|
|
35
|
-
"get_test_report",
|
|
36
|
-
"get_workflow",
|
|
37
|
-
"inspect_job_execution",
|
|
28
|
+
"dev_mode_publish",
|
|
29
|
+
"create_rpa_flow",
|
|
30
|
+
"vm_connect",
|
|
31
|
+
"vm_list",
|
|
38
32
|
"list_config_stores",
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"list_workspaces",
|
|
43
|
-
"publish_job",
|
|
33
|
+
"list_skills",
|
|
34
|
+
"get_skill",
|
|
35
|
+
"resolve_job_state",
|
|
44
36
|
"register_job",
|
|
45
|
-
"register_middleware",
|
|
46
|
-
"remove_config_property",
|
|
47
|
-
"restore_config_store",
|
|
48
37
|
"run_job",
|
|
38
|
+
"stop_job_execution",
|
|
39
|
+
"list_job_executions",
|
|
49
40
|
"run_tests",
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
41
|
+
"publish_job",
|
|
42
|
+
"cancel_build",
|
|
43
|
+
"tfa_generate_totp",
|
|
44
|
+
];
|
|
45
|
+
async function listSurface(localTools) {
|
|
46
|
+
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
|
|
47
|
+
const embedded = await createMinicorServer(serverTransport, {
|
|
48
|
+
localTools,
|
|
49
|
+
credentials: {
|
|
50
|
+
access_token: "test-token",
|
|
51
|
+
refresh_token: "test-refresh-token",
|
|
52
|
+
expires_at: Date.now() + 3_600_000,
|
|
53
|
+
},
|
|
54
|
+
baseUrl: "https://api.test.com",
|
|
55
|
+
codeMode: false,
|
|
56
|
+
});
|
|
57
|
+
const client = new Client({ name: "test-client", version: "1.0.0" });
|
|
58
|
+
try {
|
|
59
|
+
await client.connect(clientTransport);
|
|
60
|
+
const [tools, prompts] = await Promise.all([
|
|
61
|
+
client.listTools(),
|
|
62
|
+
client.listPrompts(),
|
|
63
|
+
]);
|
|
64
|
+
return {
|
|
65
|
+
tools: tools.tools.map((tool) => tool.name),
|
|
66
|
+
prompts: prompts.prompts.map((prompt) => prompt.name),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
finally {
|
|
70
|
+
await client.close();
|
|
71
|
+
await embedded.close();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
57
74
|
afterEach(() => {
|
|
58
75
|
vi.unstubAllGlobals();
|
|
59
76
|
});
|
|
60
|
-
describe("MCP
|
|
61
|
-
it("
|
|
62
|
-
expect(
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
77
|
+
describe("the single MCP surface", () => {
|
|
78
|
+
it("is named minicor and carries the jobs-first loop in its instructions", () => {
|
|
79
|
+
expect(SERVER_NAME).toBe("minicor");
|
|
80
|
+
const local = buildInstructions(true);
|
|
81
|
+
const hosted = buildInstructions(false);
|
|
82
|
+
// Every deployment gets the same build loop.
|
|
83
|
+
for (const instructions of [local, hosted]) {
|
|
84
|
+
expect(instructions).toContain("GREEN-GATE FIRST");
|
|
85
|
+
expect(instructions).toContain("resolve_job_state");
|
|
86
|
+
expect(instructions).toContain("stop_job_execution");
|
|
87
|
+
}
|
|
88
|
+
// Only local deployments are told to run the session lifecycle.
|
|
89
|
+
expect(local).toContain("session_start");
|
|
90
|
+
expect(hosted).not.toContain("session_start");
|
|
91
|
+
expect(hosted).not.toContain("session_end");
|
|
92
|
+
const codeModeHosted = buildCodeModeInstructions(hosted, {
|
|
93
|
+
sessionLifecycle: false,
|
|
94
|
+
});
|
|
95
|
+
expect(codeModeHosted).not.toContain("session_start");
|
|
96
|
+
expect(codeModeHosted).toContain("minicor.dev_mode_run");
|
|
69
97
|
});
|
|
70
|
-
it("
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
expect(
|
|
76
|
-
expect(codeModeInstructions).not.toContain("session_end");
|
|
77
|
-
expect(codeModeInstructions).toContain("minicor.dev_mode_run");
|
|
98
|
+
it("registers the full surface locally, including filesystem tools", async () => {
|
|
99
|
+
const { tools, prompts } = await listSurface(true);
|
|
100
|
+
for (const tool of [...SHARED_TOOLS, ...LOCAL_ONLY_TOOLS]) {
|
|
101
|
+
expect(tools, `missing ${tool}`).toContain(tool);
|
|
102
|
+
}
|
|
103
|
+
expect(prompts).toContain("workspace-session-guide");
|
|
78
104
|
});
|
|
79
|
-
it("
|
|
80
|
-
const
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
access_token: "test-token",
|
|
85
|
-
refresh_token: "test-refresh-token",
|
|
86
|
-
expires_at: Date.now() + 3_600_000,
|
|
87
|
-
},
|
|
88
|
-
baseUrl: "https://api.test.com",
|
|
89
|
-
codeMode: false,
|
|
90
|
-
});
|
|
91
|
-
const client = new Client({ name: "test-client", version: "1.0.0" });
|
|
92
|
-
try {
|
|
93
|
-
await client.connect(clientTransport);
|
|
94
|
-
const result = await client.listTools();
|
|
95
|
-
const names = result.tools.map((tool) => tool.name).sort();
|
|
96
|
-
expect(names).toEqual(BUILDER_TOOLS);
|
|
97
|
-
expect(names).not.toContain("session_start");
|
|
98
|
-
expect(names).not.toContain("vm_connect");
|
|
99
|
-
expect(names).not.toContain("execute_workflow");
|
|
105
|
+
it("hosted (localTools=false) serves the same surface minus only the filesystem tools", async () => {
|
|
106
|
+
const hosted = await listSurface(false);
|
|
107
|
+
const local = await listSurface(true);
|
|
108
|
+
for (const tool of SHARED_TOOLS) {
|
|
109
|
+
expect(hosted.tools, `missing ${tool}`).toContain(tool);
|
|
100
110
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
await embedded.close();
|
|
111
|
+
for (const tool of LOCAL_ONLY_TOOLS) {
|
|
112
|
+
expect(hosted.tools, `should not expose ${tool}`).not.toContain(tool);
|
|
104
113
|
}
|
|
114
|
+
// The only tool difference between deployments is the local filesystem set.
|
|
115
|
+
const diff = local.tools.filter((t) => !hosted.tools.includes(t)).sort();
|
|
116
|
+
expect(diff).toEqual([...LOCAL_ONLY_TOOLS].sort());
|
|
117
|
+
// The workspace-session prompt reads the server's disk; hosted must not
|
|
118
|
+
// expose it. Everything else is shared.
|
|
119
|
+
expect(hosted.prompts).not.toContain("workspace-session-guide");
|
|
120
|
+
expect(hosted.prompts).toContain("build-rpa-workflow");
|
|
121
|
+
const promptDiff = local.prompts.filter((p) => !hosted.prompts.includes(p));
|
|
122
|
+
expect(promptDiff).toEqual(["workspace-session-guide"]);
|
|
105
123
|
});
|
|
106
|
-
it("routes execution status, cooperative stop, and draft deletion", async () => {
|
|
124
|
+
it("routes dev-mode execution status, cooperative stop, and draft deletion", async () => {
|
|
107
125
|
const fetchMock = vi.fn(async (input, init) => {
|
|
108
126
|
if (init?.method === "DELETE") {
|
|
109
127
|
return new Response(null, { status: 204 });
|
|
@@ -124,7 +142,7 @@ describe("MCP server profiles", () => {
|
|
|
124
142
|
vi.stubGlobal("fetch", fetchMock);
|
|
125
143
|
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
|
|
126
144
|
const embedded = await createMinicorServer(serverTransport, {
|
|
127
|
-
|
|
145
|
+
localTools: false,
|
|
128
146
|
credentials: {
|
|
129
147
|
access_token: "test-token",
|
|
130
148
|
refresh_token: "test-refresh-token",
|
|
@@ -183,7 +201,7 @@ describe("MCP server profiles", () => {
|
|
|
183
201
|
vi.stubGlobal("fetch", fetchMock);
|
|
184
202
|
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
|
|
185
203
|
const embedded = await createMinicorServer(serverTransport, {
|
|
186
|
-
|
|
204
|
+
localTools: false,
|
|
187
205
|
credentials: {
|
|
188
206
|
access_token: "test-token",
|
|
189
207
|
refresh_token: "test-refresh-token",
|
|
@@ -200,7 +218,7 @@ describe("MCP server profiles", () => {
|
|
|
200
218
|
arguments: {
|
|
201
219
|
workspaceId: 11,
|
|
202
220
|
name: "Builder flow",
|
|
203
|
-
description: "Developed through the
|
|
221
|
+
description: "Developed through the MCP",
|
|
204
222
|
},
|
|
205
223
|
});
|
|
206
224
|
await client.callTool({
|
|
@@ -258,7 +276,7 @@ describe("MCP server profiles", () => {
|
|
|
258
276
|
body: {
|
|
259
277
|
workspaceId: 11,
|
|
260
278
|
name: "Builder flow",
|
|
261
|
-
description: "Developed through the
|
|
279
|
+
description: "Developed through the MCP",
|
|
262
280
|
},
|
|
263
281
|
},
|
|
264
282
|
{
|
|
@@ -308,4 +326,4 @@ describe("MCP server profiles", () => {
|
|
|
308
326
|
}
|
|
309
327
|
});
|
|
310
328
|
});
|
|
311
|
-
//# sourceMappingURL=server-
|
|
329
|
+
//# sourceMappingURL=server-surface.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-surface.test.js","sourceRoot":"","sources":["../../src/__tests__/server-surface.test.ts"],"names":[],"mappings":"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"}
|
package/dist/bootstrap.js
CHANGED
|
@@ -60,9 +60,16 @@ context you need. Follow the phase loop it describes.
|
|
|
60
60
|
|
|
61
61
|
## Key Rules
|
|
62
62
|
|
|
63
|
+
- Test cases and Jobs come first: define the green-gate (\`teach_job\` / \`add_test_case\`)
|
|
64
|
+
BEFORE building; a job with no test cases has no definition of correct
|
|
65
|
+
- When working a job, call \`resolve_job_state\` to get its state + the next tool calls;
|
|
66
|
+
load \`get_skill("job-build-loop")\` for the full playbook
|
|
67
|
+
- Jobs are the macroscope (step graph, \`run_tests variant=draft\`, \`publish_job\`);
|
|
68
|
+
a failing step's workflow is the microscope (\`dev_mode_load\` / \`create_rpa_flow\`)
|
|
63
69
|
- Use \`create_rpa_flow\` for RPA steps, never \`create_flow\`
|
|
64
70
|
- Follow the \`rpa-testing-workflow\` skill for testing
|
|
65
71
|
- Fix failures through the executor, NOT \`vm_execute_script\`
|
|
72
|
+
- There is no pause: \`stop_job_execution\` is a cooperative cancel
|
|
66
73
|
- Update \`.minicor/context.md\` when you learn something new
|
|
67
74
|
- Create/update \`[Workspace:Session]\` and \`[Workspace:Context]\` issues
|
|
68
75
|
`;
|
|
@@ -125,6 +132,25 @@ context you need. Follow the phase loop it describes.
|
|
|
125
132
|
"mcp__minicor__list_agents",
|
|
126
133
|
"mcp__minicor__test_workflow_step",
|
|
127
134
|
"mcp__minicor__diagnose_execution",
|
|
135
|
+
"mcp__minicor__resolve_job_state",
|
|
136
|
+
"mcp__minicor__list_middlewares",
|
|
137
|
+
"mcp__minicor__get_job",
|
|
138
|
+
"mcp__minicor__register_job",
|
|
139
|
+
"mcp__minicor__update_job",
|
|
140
|
+
"mcp__minicor__run_job",
|
|
141
|
+
"mcp__minicor__stop_job_execution",
|
|
142
|
+
"mcp__minicor__list_job_executions",
|
|
143
|
+
"mcp__minicor__get_job_execution",
|
|
144
|
+
"mcp__minicor__inspect_job_execution",
|
|
145
|
+
"mcp__minicor__teach_job",
|
|
146
|
+
"mcp__minicor__publish_job",
|
|
147
|
+
"mcp__minicor__add_test_case",
|
|
148
|
+
"mcp__minicor__update_test_case",
|
|
149
|
+
"mcp__minicor__run_tests",
|
|
150
|
+
"mcp__minicor__get_test_report",
|
|
151
|
+
"mcp__minicor__get_build_status",
|
|
152
|
+
"mcp__minicor__answer_build_question",
|
|
153
|
+
"mcp__minicor__cancel_build",
|
|
128
154
|
];
|
|
129
155
|
const existing = new Set(settings.permissions.allow);
|
|
130
156
|
for (const perm of requiredPerms) {
|
|
@@ -175,6 +201,9 @@ It returns:
|
|
|
175
201
|
## Key Rules
|
|
176
202
|
|
|
177
203
|
- Follow the phase loop from AGENTS.md: gather-context → orient → scope → build → test → harden → learn
|
|
204
|
+
- Test cases and Jobs come first: define the green-gate (\`teach_job\` / \`add_test_case\`) before
|
|
205
|
+
building, then work the job as the macroscope and drop into workflow steps as the microscope.
|
|
206
|
+
\`resolve_job_state\` tells you where a job stands and what to do next.
|
|
178
207
|
- If a prior session exists, resume from where it left off
|
|
179
208
|
- Use \`create_rpa_flow\` for RPA steps (never \`create_flow\`)
|
|
180
209
|
- Always call \`session_end\` before finishing
|
package/dist/bootstrap.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,SAAS,UAAU,CAAC,IAAc;IAChC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC;AACvB,CAAC;AAUD,SAAS,iBAAiB,CAAC,GAAW;IACpC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACpD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,4DAA4D,CAAC,CAAC;QACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;IAEpE,IAAI,IAAI,GAAG,mBAAmB,CAAC;IAC/B,IAAI,MAA0B,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;IAC5D,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QACxD,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC;QACvB,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,OAAO;QACL,GAAG;QACH,IAAI;QACJ,WAAW,EAAE,QAAQ,CAAC,SAAS,IAAI,CAAC;QACpC,MAAM;QACN,WAAW,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;KACxD,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAmB;IAC9C,MAAM,QAAQ,GAAG,KAAK,IAAI,CAAC,IAAI;;2DAE0B,IAAI,CAAC,WAAW;;;;mCAIxC,IAAI,CAAC,GAAG
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth 2.1 authorization bridge for the hosted HTTP server.
|
|
3
|
+
*
|
|
4
|
+
* Implements the MCP authorization spec (metadata discovery, dynamic
|
|
5
|
+
* client registration, authorization code + PKCE, refresh tokens) on top
|
|
6
|
+
* of the Minicor /auth/signin API. The /authorize endpoint serves a login
|
|
7
|
+
* form; submitting valid Minicor credentials mints an auth code that the
|
|
8
|
+
* client exchanges for sealed tokens wrapping the upstream credentials.
|
|
9
|
+
*
|
|
10
|
+
* Everything is stateless: client IDs, auth codes, and tokens are all
|
|
11
|
+
* TokenSealer blobs, so this works across multiple Cloud Run instances.
|
|
12
|
+
*/
|
|
13
|
+
import { type Region } from "./paths.js";
|
|
14
|
+
import type { TokenSealer } from "./http-seal.js";
|
|
15
|
+
export interface UpstreamCredentials {
|
|
16
|
+
region: Region;
|
|
17
|
+
apiBase: string;
|
|
18
|
+
access_token: string;
|
|
19
|
+
refresh_token: string | null;
|
|
20
|
+
expires_at: number;
|
|
21
|
+
}
|
|
22
|
+
export interface ClientPayload {
|
|
23
|
+
redirect_uris: string[];
|
|
24
|
+
}
|
|
25
|
+
export interface CodePayload {
|
|
26
|
+
creds: UpstreamCredentials;
|
|
27
|
+
client_id: string;
|
|
28
|
+
redirect_uri: string;
|
|
29
|
+
code_challenge: string;
|
|
30
|
+
}
|
|
31
|
+
export interface AccessPayload {
|
|
32
|
+
creds: UpstreamCredentials;
|
|
33
|
+
}
|
|
34
|
+
export interface RefreshPayload {
|
|
35
|
+
creds: UpstreamCredentials;
|
|
36
|
+
client_id: string;
|
|
37
|
+
}
|
|
38
|
+
export interface OauthConfig {
|
|
39
|
+
sealer: TokenSealer;
|
|
40
|
+
/** Empty list = any email accepted by the upstream API may sign in. */
|
|
41
|
+
allowedEmailDomains: string[];
|
|
42
|
+
}
|
|
43
|
+
export interface HandlerResult {
|
|
44
|
+
status: number;
|
|
45
|
+
headers: Record<string, string>;
|
|
46
|
+
body: string;
|
|
47
|
+
}
|
|
48
|
+
export declare function authorizationServerMetadata(issuer: string): HandlerResult;
|
|
49
|
+
export declare function protectedResourceMetadata(issuer: string): HandlerResult;
|
|
50
|
+
export declare function handleRegister(config: OauthConfig, body: unknown): HandlerResult;
|
|
51
|
+
export interface AuthorizeParams {
|
|
52
|
+
client_id: string;
|
|
53
|
+
redirect_uri: string;
|
|
54
|
+
state: string;
|
|
55
|
+
code_challenge: string;
|
|
56
|
+
}
|
|
57
|
+
export declare function handleAuthorizeGet(config: OauthConfig, query: URLSearchParams): HandlerResult;
|
|
58
|
+
export declare function handleAuthorizePost(config: OauthConfig, form: URLSearchParams): Promise<HandlerResult>;
|
|
59
|
+
export declare function handleToken(config: OauthConfig, form: URLSearchParams): Promise<HandlerResult>;
|
|
60
|
+
//# sourceMappingURL=http-oauth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-oauth.d.ts","sourceRoot":"","sources":["../src/http-oauth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAyB,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAYlD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,mBAAmB,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,mBAAmB,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,mBAAmB,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,uEAAuE;IACvE,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;CACd;AAoBD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAYzE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAOvE;AAgBD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,OAAO,GACZ,aAAa,CA0Bf;AAID,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;CACxB;AA4ID,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,eAAe,GACrB,aAAa,CAQf;AA6DD,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,aAAa,CAAC,CA0DxB;AAkCD,wBAAsB,WAAW,CAC/B,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,aAAa,CAAC,CAgExB"}
|