@caelo-cms/mcp-server 0.10.53 → 0.10.57

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 (46) hide show
  1. package/LICENSE +373 -0
  2. package/README.md +20 -3
  3. package/dist/admin-server.d.ts +1 -15
  4. package/dist/admin-server.d.ts.map +1 -1
  5. package/dist/admin-server.js +72 -302
  6. package/dist/admin-server.js.map +1 -1
  7. package/dist/admin.js +7 -8
  8. package/dist/admin.js.map +1 -1
  9. package/dist/chat-bridge.d.ts +1 -1
  10. package/dist/chat-bridge.d.ts.map +1 -1
  11. package/dist/image-upload.d.ts +2 -75
  12. package/dist/image-upload.d.ts.map +1 -1
  13. package/dist/image-upload.js +40 -134
  14. package/dist/image-upload.js.map +1 -1
  15. package/dist/index.js +38 -30
  16. package/dist/index.js.map +1 -1
  17. package/dist/server.d.ts +0 -6
  18. package/dist/server.d.ts.map +1 -1
  19. package/dist/server.js +24 -259
  20. package/dist/server.js.map +1 -1
  21. package/dist/surfaces/admin-surface.d.ts +106 -0
  22. package/dist/surfaces/admin-surface.d.ts.map +1 -0
  23. package/dist/surfaces/admin-surface.js +183 -0
  24. package/dist/surfaces/admin-surface.js.map +1 -0
  25. package/dist/surfaces/chat-surface.d.ts +48 -0
  26. package/dist/surfaces/chat-surface.d.ts.map +1 -0
  27. package/dist/surfaces/chat-surface.js +190 -0
  28. package/dist/surfaces/chat-surface.js.map +1 -0
  29. package/dist/surfaces/index.d.ts +15 -0
  30. package/dist/surfaces/index.d.ts.map +1 -0
  31. package/dist/surfaces/index.js +15 -0
  32. package/dist/surfaces/index.js.map +1 -0
  33. package/dist/surfaces/upload.d.ts +32 -0
  34. package/dist/surfaces/upload.d.ts.map +1 -0
  35. package/dist/surfaces/upload.js +58 -0
  36. package/dist/surfaces/upload.js.map +1 -0
  37. package/dist/tool-definitions.d.ts +465 -0
  38. package/dist/tool-definitions.d.ts.map +1 -0
  39. package/dist/tool-definitions.js +256 -0
  40. package/dist/tool-definitions.js.map +1 -0
  41. package/dist/unconfigured.d.ts +26 -0
  42. package/dist/unconfigured.d.ts.map +1 -0
  43. package/dist/unconfigured.js +82 -0
  44. package/dist/unconfigured.js.map +1 -0
  45. package/package.json +12 -3
  46. package/power-catalogue.json +8030 -0
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,mCAAmC;AAEnC;;;;;;GAMG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAWpD,oFAAoF;AACpF,MAAM,eAAe,GAAG,GAAW,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAE/D,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAe;IAClD,MAAM,MAAM,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAC9D,MAAM,MAAM,GAAG,mBAAmB,CAChC;QACE,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAClB,QAAQ,CAAC;YACP,GAAG,MAAM;YACT,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClD,CAAC;QACJ,UAAU,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,CAAC;QACvE,sBAAsB,EAAE,CAAC,aAAa,EAAE,EAAE,CACxC,sBAAsB,CAAC,EAAE,GAAG,MAAM,EAAE,aAAa,EAAE,CAAC;QACtD,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC;KACnD,EACD;QACE,aAAa,EAAE,UAAU,EAAE;QAC3B,cAAc,EAAE,qBAAqB;QACrC,eAAe;QACf,GAAG,CAAC,IAAI,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtF,CACF,CAAC;IACF,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,oBAAoB,EAAE,CAAC,CAAC;AACrE,CAAC"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * The Power-MCP server (issue #376), independent of how it reaches Caelo:
3
+ * the chat-runner tool catalogue for an agent that drives the tool loop
4
+ * itself, plus the companion tools `caelo_open_session`,
5
+ * `caelo_get_context`, `caelo_await_approval` and `caelo_upload_images`.
6
+ *
7
+ * The stdio shim (../admin-server.ts) backs it with HTTP calls to
8
+ * `/api/mcp/*`, caching the catalogue and holding the work session in
9
+ * process memory. The admin's remote endpoint `/api/mcp/remote/admin`
10
+ * (issue #806) backs it with the `mcp.*` ops in-process; its transport is
11
+ * stateless, so the work session lives on the connection's row instead.
12
+ * Both show an agent the same tools and the same results.
13
+ */
14
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
15
+ import { type CallToolResult } from "@modelcontextprotocol/sdk/types.js";
16
+ import { type ApprovalOutcome } from "../approval-wait.js";
17
+ import { type OpenSessionInput } from "../tool-definitions.js";
18
+ /** One catalogue entry, as `mcp.list_tools` returns it. */
19
+ export interface RemoteTool {
20
+ readonly name: string;
21
+ readonly description: string;
22
+ readonly inputSchema: Record<string, unknown>;
23
+ readonly gated?: boolean;
24
+ }
25
+ /** What `mcp.execute_tool` returns. */
26
+ export interface ExecuteToolResponse {
27
+ readonly ok: boolean;
28
+ readonly content: string;
29
+ readonly requestId: string;
30
+ readonly toolCallId: string;
31
+ readonly cached: boolean;
32
+ readonly image?: {
33
+ base64: string;
34
+ mediaType: string;
35
+ } | null;
36
+ readonly nextAction?: unknown;
37
+ /** Issue #658 — set when the call queued an approval-gated proposal. */
38
+ readonly approval?: {
39
+ proposalId: string;
40
+ domain: string;
41
+ } | null;
42
+ }
43
+ /** What `mcp.open_session` returns. */
44
+ export interface OpenSessionResponse {
45
+ readonly chatSessionId: string;
46
+ readonly chatBranchId: string;
47
+ readonly title: string;
48
+ readonly resumed: boolean;
49
+ }
50
+ /** What `mcp.get_context` returns. */
51
+ export interface GetContextResponse {
52
+ readonly systemContext: string;
53
+ readonly statusLine: string | null;
54
+ readonly skills: ReadonlyArray<{
55
+ slug: string;
56
+ displayName: string;
57
+ description: string;
58
+ allowlistedTools: string[];
59
+ }>;
60
+ }
61
+ /** What the admin surface needs from Caelo — HTTP for the shim, ops in the admin. */
62
+ export interface AdminSurfaceBackend {
63
+ /** The catalogue to list (the shim's cached copy, or the live one). */
64
+ listCatalogue(): Promise<readonly RemoteTool[]>;
65
+ /** One catalogue tool by name; the shim refreshes its cache on a miss (#678). */
66
+ findTool(name: string): Promise<RemoteTool | undefined>;
67
+ /** Open / resume the work session and remember it as current. */
68
+ openSession(input: OpenSessionInput): Promise<OpenSessionResponse>;
69
+ /** The current work session, or null before caelo_open_session. */
70
+ currentSessionId(): Promise<string | null>;
71
+ executeTool(call: {
72
+ toolName: string;
73
+ args: Record<string, unknown>;
74
+ chatSessionId: string;
75
+ }): Promise<ExecuteToolResponse>;
76
+ getContext(): Promise<GetContextResponse>;
77
+ /** Reads the operator's decision; the agent can never make it. */
78
+ fetchApprovalOutcome(proposalId: string): Promise<ApprovalOutcome>;
79
+ uploadImages(args: unknown): Promise<CallToolResult>;
80
+ }
81
+ export interface AdminSurfaceOptions {
82
+ /**
83
+ * serverInfo.version — the release this server belongs to (#841): the
84
+ * package's own version for the stdio bins, CAELO_VERSION for the admin's
85
+ * remote endpoint. Required so no surface reports a made-up version.
86
+ */
87
+ readonly serverVersion: string;
88
+ /** The caelo_upload_images definition (local vs remote description). */
89
+ readonly uploadImagesTool?: {
90
+ name: string;
91
+ description: string;
92
+ inputSchema: object;
93
+ };
94
+ /** The bounded wait on the operator (read per call). */
95
+ readonly approvalWaitMs: () => number;
96
+ /** Poll interval while waiting on an approval; tests shorten it. */
97
+ readonly approvalPollMs?: number;
98
+ /**
99
+ * #678 — advertise `tools.listChanged` (the shim notifies when its cached
100
+ * catalogue changes). A stateless remote server lists live every time.
101
+ */
102
+ readonly listChanged: boolean;
103
+ }
104
+ /** Build the Power-MCP server over `backend`. The caller connects a transport. */
105
+ export declare function createAdminMcpServer(backend: AdminSurfaceBackend, opts: AdminSurfaceOptions): Server;
106
+ //# sourceMappingURL=admin-surface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-surface.d.ts","sourceRoot":"","sources":["../../src/surfaces/admin-surface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,183 @@
1
+ // SPDX-License-Identifier: MPL-2.0
2
+ /**
3
+ * The Power-MCP server (issue #376), independent of how it reaches Caelo:
4
+ * the chat-runner tool catalogue for an agent that drives the tool loop
5
+ * itself, plus the companion tools `caelo_open_session`,
6
+ * `caelo_get_context`, `caelo_await_approval` and `caelo_upload_images`.
7
+ *
8
+ * The stdio shim (../admin-server.ts) backs it with HTTP calls to
9
+ * `/api/mcp/*`, caching the catalogue and holding the work session in
10
+ * process memory. The admin's remote endpoint `/api/mcp/remote/admin`
11
+ * (issue #806) backs it with the `mcp.*` ops in-process; its transport is
12
+ * stateless, so the work session lives on the connection's row instead.
13
+ * Both show an agent the same tools and the same results.
14
+ */
15
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
16
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
17
+ import { describeApprovalOutcome, waitForApproval, } from "../approval-wait.js";
18
+ import { ADMIN_AWAIT_APPROVAL_TOOL, ADMIN_LOCAL_TOOLS, ADMIN_MCP_INSTRUCTIONS, adminAwaitApprovalInput, GET_CONTEXT_TOOL, OPEN_SESSION_TOOL, openSessionInput, UPLOAD_IMAGES_TOOL, } from "../tool-definitions.js";
19
+ /** An outcome as an MCP tool result; a failed apply is an error result. */
20
+ function outcomeResult(o) {
21
+ return {
22
+ ...(o.outcome === "failed" ? { isError: true } : {}),
23
+ content: [
24
+ { type: "text", text: describeApprovalOutcome(o) },
25
+ {
26
+ type: "text",
27
+ text: JSON.stringify({
28
+ proposalId: o.proposalId,
29
+ outcome: o.outcome,
30
+ detail: o.detail,
31
+ decidedAt: o.decidedAt,
32
+ }),
33
+ },
34
+ ],
35
+ };
36
+ }
37
+ function errorResult(text) {
38
+ return { isError: true, content: [{ type: "text", text }] };
39
+ }
40
+ /** Build the Power-MCP server over `backend`. The caller connects a transport. */
41
+ export function createAdminMcpServer(backend, opts) {
42
+ const uploadTool = opts.uploadImagesTool ?? UPLOAD_IMAGES_TOOL;
43
+ const server = new Server({ name: "caelo-admin-mcp", version: opts.serverVersion }, {
44
+ capabilities: { tools: opts.listChanged ? { listChanged: true } : {} },
45
+ instructions: ADMIN_MCP_INSTRUCTIONS,
46
+ });
47
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
48
+ tools: [
49
+ ...ADMIN_LOCAL_TOOLS.map((t) => (t === UPLOAD_IMAGES_TOOL ? uploadTool : t)),
50
+ ...(await backend.listCatalogue()).map((t) => ({
51
+ name: t.name,
52
+ description: t.description,
53
+ inputSchema: t.inputSchema,
54
+ })),
55
+ ],
56
+ }));
57
+ server.setRequestHandler(CallToolRequestSchema, async (req, extra) => {
58
+ const name = req.params.name;
59
+ // Progress notifications keep progress-aware clients from timing the
60
+ // call out while it waits on the operator (only when they asked).
61
+ const progressToken = req.params._meta?.progressToken;
62
+ const onPending = progressToken === undefined
63
+ ? undefined
64
+ : async (elapsedMs) => {
65
+ await extra.sendNotification({
66
+ method: "notifications/progress",
67
+ params: {
68
+ progressToken,
69
+ progress: Math.round(elapsedMs / 1000),
70
+ message: "Waiting for the operator to approve or reject in the Caelo admin…",
71
+ },
72
+ });
73
+ };
74
+ const awaitOutcome = (proposalId) => waitForApproval({
75
+ fetchOutcome: () => backend.fetchApprovalOutcome(proposalId),
76
+ waitMs: opts.approvalWaitMs(),
77
+ ...(opts.approvalPollMs !== undefined ? { intervalMs: opts.approvalPollMs } : {}),
78
+ ...(onPending ? { onPending } : {}),
79
+ });
80
+ try {
81
+ if (name === ADMIN_AWAIT_APPROVAL_TOOL.name) {
82
+ const parsed = adminAwaitApprovalInput.safeParse(req.params.arguments ?? {});
83
+ if (!parsed.success) {
84
+ return errorResult(`invalid arguments: ${parsed.error.message}`);
85
+ }
86
+ return outcomeResult(await awaitOutcome(parsed.data.proposalId));
87
+ }
88
+ if (name === uploadTool.name)
89
+ return await backend.uploadImages(req.params.arguments);
90
+ if (name === OPEN_SESSION_TOOL.name) {
91
+ const parsed = openSessionInput.safeParse(req.params.arguments ?? {});
92
+ if (!parsed.success) {
93
+ return errorResult(`invalid arguments: ${parsed.error.message}`);
94
+ }
95
+ const session = await backend.openSession(parsed.data);
96
+ return {
97
+ content: [
98
+ {
99
+ type: "text",
100
+ text: JSON.stringify(session, null, 2) +
101
+ (session.resumed
102
+ ? `\nResumed the operator's session '${session.title}' — its earlier unstaged work continues here. `
103
+ : `\nOpened a new session '${session.title}'. `) +
104
+ "Subsequent caelo tool calls write to the site's shared draft (or this session's experiment branch). " +
105
+ "Stage finished work with stage_changes; the operator clicks Publish live in the Caelo admin.",
106
+ },
107
+ ],
108
+ };
109
+ }
110
+ if (name === GET_CONTEXT_TOOL.name) {
111
+ const context = await backend.getContext();
112
+ return {
113
+ content: [
114
+ { type: "text", text: context.systemContext },
115
+ {
116
+ type: "text",
117
+ text: JSON.stringify({ statusLine: context.statusLine, skills: context.skills }, null, 2),
118
+ },
119
+ ],
120
+ };
121
+ }
122
+ const remote = await backend.findTool(name);
123
+ if (!remote) {
124
+ return errorResult(`unknown tool: ${name}`);
125
+ }
126
+ const chatSessionId = await backend.currentSessionId();
127
+ if (!chatSessionId) {
128
+ return errorResult("no open work session — call caelo_open_session first. Every caelo write lands on a " +
129
+ "session's preview branch; without one there is nothing to write to.");
130
+ }
131
+ const result = await backend.executeTool({
132
+ toolName: name,
133
+ args: req.params.arguments ?? {},
134
+ chatSessionId,
135
+ });
136
+ if (result.approval) {
137
+ // Issue #658 — the call queued a proposal: wait for the operator's
138
+ // decision (bounded) and return it in THIS result, so the agent
139
+ // continues with the outcome instead of a "queued" note.
140
+ const decided = outcomeResult(await awaitOutcome(result.approval.proposalId));
141
+ return {
142
+ ...decided,
143
+ content: [
144
+ ...decided.content,
145
+ {
146
+ type: "text",
147
+ text: JSON.stringify({ requestId: result.requestId, cached: result.cached }),
148
+ },
149
+ ],
150
+ };
151
+ }
152
+ return {
153
+ ...(result.ok ? {} : { isError: true }),
154
+ content: [
155
+ { type: "text", text: result.content },
156
+ ...(result.image
157
+ ? [
158
+ {
159
+ type: "image",
160
+ data: result.image.base64,
161
+ mimeType: result.image.mediaType,
162
+ },
163
+ ]
164
+ : []),
165
+ {
166
+ type: "text",
167
+ text: JSON.stringify({
168
+ requestId: result.requestId,
169
+ cached: result.cached,
170
+ ...(result.nextAction !== undefined ? { nextAction: result.nextAction } : {}),
171
+ }),
172
+ },
173
+ ],
174
+ };
175
+ }
176
+ catch (e) {
177
+ const msg = e instanceof Error ? e.message : String(e);
178
+ return errorResult(`${name} failed: ${msg}`);
179
+ }
180
+ });
181
+ return server;
182
+ }
183
+ //# sourceMappingURL=admin-surface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-surface.js","sourceRoot":"","sources":["../../src/surfaces/admin-surface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * The chat-scope MCP server (`caelo_chat`, `caelo_await_approval`,
3
+ * `caelo_upload_images`), independent of how it reaches Caelo. The stdio
4
+ * shim backs it with HTTP calls to `/api/mcp/*` (../server.ts); the admin's
5
+ * remote endpoint `/api/mcp/remote/chat` backs it with the same `mcp.*` ops
6
+ * in-process (issue #806). Both therefore show an agent the same tools and
7
+ * the same replies, approval waits included.
8
+ *
9
+ * Routing edits through one conversational tool is deliberate: the remote
10
+ * agent talks to Caelo's chat-runner the same way a human in the browser
11
+ * does — same auth surface, same actor scope, same audit trail.
12
+ */
13
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
14
+ import { type CallToolResult } from "@modelcontextprotocol/sdk/types.js";
15
+ import { type ChatApprovalState, type SendChatResult } from "../chat-approval.js";
16
+ import { type CaeloChatInput } from "../tool-definitions.js";
17
+ /** What the chat surface needs from Caelo — HTTP for the shim, ops in the admin. */
18
+ export interface ChatSurfaceBackend {
19
+ sendChat(input: CaeloChatInput): Promise<SendChatResult>;
20
+ /** Issue #658 — resume this agent's paused turn with the operator's decisions. */
21
+ resumeChat(chatSessionId: string): Promise<SendChatResult>;
22
+ /** Issue #658 — the operator's decisions on this agent's paused turn (read-only). */
23
+ fetchChatApprovalState(chatSessionId: string): Promise<ChatApprovalState>;
24
+ uploadImages(args: unknown): Promise<CallToolResult>;
25
+ }
26
+ export interface ChatSurfaceOptions {
27
+ /**
28
+ * serverInfo.version — the release this server belongs to (#841): the
29
+ * package's own version for the stdio bins, CAELO_VERSION for the admin's
30
+ * remote endpoint. Required so no surface reports a made-up version.
31
+ */
32
+ readonly serverVersion: string;
33
+ /** The caelo_upload_images definition (local vs remote description). */
34
+ readonly uploadImagesTool?: {
35
+ name: string;
36
+ description: string;
37
+ inputSchema: object;
38
+ };
39
+ /** The bounded wait on the operator (read per call). */
40
+ readonly approvalWaitMs: () => number;
41
+ /** Time a resume may take; reserved out of a call's budget. */
42
+ readonly resumeTimeoutMs: () => number;
43
+ /** Poll interval while waiting on an approval; tests shorten it. */
44
+ readonly approvalPollMs?: number;
45
+ }
46
+ /** Build the chat-scope MCP server over `backend`. The caller connects a transport. */
47
+ export declare function createChatMcpServer(backend: ChatSurfaceBackend, opts: ChatSurfaceOptions): Server;
48
+ //# sourceMappingURL=chat-surface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-surface.d.ts","sourceRoot":"","sources":["../../src/surfaces/chat-surface.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAEL,KAAK,cAAc,EAEpB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,KAAK,iBAAiB,EAKtB,KAAK,cAAc,EAGpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,KAAK,cAAc,EAOpB,MAAM,wBAAwB,CAAC;AAEhC,oFAAoF;AACpF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACzD,kFAAkF;IAClF,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3D,qFAAqF;IACrF,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC1E,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,wEAAwE;IACxE,QAAQ,CAAC,gBAAgB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IACvF,wDAAwD;IACxD,QAAQ,CAAC,cAAc,EAAE,MAAM,MAAM,CAAC;IACtC,+DAA+D;IAC/D,QAAQ,CAAC,eAAe,EAAE,MAAM,MAAM,CAAC;IACvC,oEAAoE;IACpE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAyDD,uFAAuF;AACvF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAkJjG"}
@@ -0,0 +1,190 @@
1
+ // SPDX-License-Identifier: MPL-2.0
2
+ /**
3
+ * The chat-scope MCP server (`caelo_chat`, `caelo_await_approval`,
4
+ * `caelo_upload_images`), independent of how it reaches Caelo. The stdio
5
+ * shim backs it with HTTP calls to `/api/mcp/*` (../server.ts); the admin's
6
+ * remote endpoint `/api/mcp/remote/chat` backs it with the same `mcp.*` ops
7
+ * in-process (issue #806). Both therefore show an agent the same tools and
8
+ * the same replies, approval waits included.
9
+ *
10
+ * Routing edits through one conversational tool is deliberate: the remote
11
+ * agent talks to Caelo's chat-runner the same way a human in the browser
12
+ * does — same auth surface, same actor scope, same audit trail.
13
+ */
14
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
15
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
16
+ import { describeDecisions, describeReady, describeSuperseded, describeWaiting, settleChatApprovals, } from "../chat-approval.js";
17
+ import { CAELO_CHAT_TOOL, CHAT_AWAIT_APPROVAL_TOOL, CHAT_MCP_INSTRUCTIONS, CHAT_TOOLS, caeloChatInputSchema, chatAwaitApprovalInput, UPLOAD_IMAGES_TOOL, } from "../tool-definitions.js";
18
+ /** Headroom for the state reads around a resume in caelo_await_approval. */
19
+ const RESUME_SLACK_MS = 5_000;
20
+ /**
21
+ * The tool result for a caelo_chat exchange: every reply in order (the first
22
+ * turn, then each resumed one), the decisions in between, and — while cards
23
+ * still wait — the next step.
24
+ */
25
+ function chatResult(first, settled, chatSessionId) {
26
+ const turns = first ? [first, ...settled.turns] : [...settled.turns];
27
+ const last = turns.at(-1);
28
+ const text = [
29
+ ...(first ? [first.assistant] : []),
30
+ ...(settled.decided.length > 0 ? [describeDecisions(settled.decided)] : []),
31
+ ...settled.turns.map((t) => t.assistant),
32
+ ...(settled.kind === "pending" ? [describeWaiting(chatSessionId, settled.waiting)] : []),
33
+ ...(settled.kind === "superseded" ? [describeSuperseded(settled.dropped)] : []),
34
+ ...(settled.kind === "ready" ? [describeReady(chatSessionId)] : []),
35
+ ]
36
+ .filter((t) => t.trim().length > 0)
37
+ .join("\n\n");
38
+ const reply = text.length > 0
39
+ ? text
40
+ : "Nothing of yours waits for the operator's approval in this chat; continue with caelo_chat.";
41
+ return {
42
+ content: [
43
+ { type: "text", text: reply },
44
+ {
45
+ type: "text",
46
+ text: JSON.stringify({
47
+ chatSessionId,
48
+ requestId: last?.requestId ?? null,
49
+ toolCalls: turns.flatMap((t) => t.toolCalls),
50
+ pendingProposals: last?.pendingProposals ?? 0,
51
+ costMicrocents: turns.reduce((sum, t) => sum + t.costMicrocents, 0),
52
+ // Non-empty while the turn waits on the operator.
53
+ pendingApprovals: settled.kind === "pending"
54
+ ? settled.waiting.map((a) => ({ approvalId: a.approvalId, toolName: a.toolName }))
55
+ : [],
56
+ }, null, 2),
57
+ },
58
+ ],
59
+ };
60
+ }
61
+ /** Build the chat-scope MCP server over `backend`. The caller connects a transport. */
62
+ export function createChatMcpServer(backend, opts) {
63
+ const uploadTool = opts.uploadImagesTool ?? UPLOAD_IMAGES_TOOL;
64
+ const server = new Server({ name: "caelo-mcp-server", version: opts.serverVersion }, { capabilities: { tools: {} }, instructions: CHAT_MCP_INSTRUCTIONS });
65
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
66
+ tools: CHAT_TOOLS.map((t) => (t === UPLOAD_IMAGES_TOOL ? uploadTool : t)),
67
+ }));
68
+ server.setRequestHandler(CallToolRequestSchema, async (req, extra) => {
69
+ // Progress notifications keep progress-aware clients from timing the
70
+ // call out while it waits on the operator (only when they asked).
71
+ const progressToken = req.params._meta?.progressToken;
72
+ const onPending = progressToken === undefined
73
+ ? undefined
74
+ : async (elapsedMs) => {
75
+ await extra.sendNotification({
76
+ method: "notifications/progress",
77
+ params: {
78
+ progressToken,
79
+ progress: Math.round(elapsedMs / 1000),
80
+ message: "Waiting for the operator to approve or reject in the Caelo admin…",
81
+ },
82
+ });
83
+ };
84
+ /** Wait for the operator, then continue the paused turn (issue #658). */
85
+ const settle = (chatSessionId, waitMs) => settleChatApprovals({
86
+ chatSessionId,
87
+ fetchState: () => backend.fetchChatApprovalState(chatSessionId),
88
+ resume: () => backend.resumeChat(chatSessionId),
89
+ waitMs,
90
+ // The resume's whole timeout stays inside the call's budget.
91
+ resumeReserveMs: opts.resumeTimeoutMs(),
92
+ ...(opts.approvalPollMs !== undefined ? { intervalMs: opts.approvalPollMs } : {}),
93
+ ...(onPending ? { onPending } : {}),
94
+ });
95
+ if (req.params.name === uploadTool.name) {
96
+ try {
97
+ return await backend.uploadImages(req.params.arguments);
98
+ }
99
+ catch (e) {
100
+ return { isError: true, content: [{ type: "text", text: String(e) }] };
101
+ }
102
+ }
103
+ if (req.params.name === CHAT_AWAIT_APPROVAL_TOOL.name) {
104
+ const parsed = chatAwaitApprovalInput.safeParse(req.params.arguments ?? {});
105
+ if (!parsed.success) {
106
+ return {
107
+ isError: true,
108
+ content: [{ type: "text", text: `invalid arguments: ${parsed.error.message}` }],
109
+ };
110
+ }
111
+ try {
112
+ // Room for at least one resume, even with a short configured wait —
113
+ // otherwise a decided turn could never continue.
114
+ const settled = await settle(parsed.data.chatSessionId, Math.max(opts.approvalWaitMs(), opts.resumeTimeoutMs() + RESUME_SLACK_MS));
115
+ return chatResult(null, settled, parsed.data.chatSessionId);
116
+ }
117
+ catch (e) {
118
+ const msg = e instanceof Error ? e.message : String(e);
119
+ return {
120
+ isError: true,
121
+ content: [{ type: "text", text: `caelo_await_approval failed: ${msg}` }],
122
+ };
123
+ }
124
+ }
125
+ if (req.params.name !== CAELO_CHAT_TOOL.name) {
126
+ return {
127
+ isError: true,
128
+ content: [{ type: "text", text: `unknown tool: ${req.params.name}` }],
129
+ };
130
+ }
131
+ const parsed = caeloChatInputSchema.safeParse(req.params.arguments ?? {});
132
+ if (!parsed.success) {
133
+ return {
134
+ isError: true,
135
+ content: [{ type: "text", text: `invalid arguments: ${parsed.error.message}` }],
136
+ };
137
+ }
138
+ try {
139
+ const startedAt = Date.now();
140
+ const result = await backend.sendChat(parsed.data);
141
+ // Issue #658 — the turn paused on approval cards: wait for the
142
+ // operator's decision within what is left of the wait bound, then
143
+ // continue this same turn and return its reply too.
144
+ if (result.pendingApprovals.length === 0) {
145
+ return chatResult(result, { kind: "settled", decided: [], turns: [] }, result.chatSessionId);
146
+ }
147
+ let settled;
148
+ try {
149
+ settled = await settle(result.chatSessionId, Math.max(0, opts.approvalWaitMs() - (Date.now() - startedAt)));
150
+ }
151
+ catch (e) {
152
+ // The turn ran and its session exists: keep both in the result so
153
+ // the agent can continue with caelo_await_approval instead of
154
+ // retrying into duplicate work (codex review).
155
+ const msg = e instanceof Error ? e.message : String(e);
156
+ const waiting = chatResult(result, {
157
+ kind: "pending",
158
+ decided: [],
159
+ turns: [],
160
+ waiting: result.pendingApprovals.map((a) => ({
161
+ ...a,
162
+ status: "pending",
163
+ approved: null,
164
+ reason: null,
165
+ })),
166
+ }, result.chatSessionId);
167
+ return {
168
+ ...waiting,
169
+ content: [
170
+ ...waiting.content,
171
+ {
172
+ type: "text",
173
+ text: `Checking the operator's decision failed (${msg}); the request still exists. Call caelo_await_approval with chatSessionId "${result.chatSessionId}".`,
174
+ },
175
+ ],
176
+ };
177
+ }
178
+ return chatResult(result, settled, result.chatSessionId);
179
+ }
180
+ catch (e) {
181
+ const msg = e instanceof Error ? e.message : String(e);
182
+ return {
183
+ isError: true,
184
+ content: [{ type: "text", text: `caelo_chat failed: ${msg}` }],
185
+ };
186
+ }
187
+ });
188
+ return server;
189
+ }
190
+ //# sourceMappingURL=chat-surface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-surface.js","sourceRoot":"","sources":["../../src/surfaces/chat-surface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * `@caelo-cms/mcp-server/surfaces` — the transport-independent MCP servers
3
+ * and their tool definitions, for the admin's remote Streamable HTTP
4
+ * endpoints (issue #806). The stdio shims in this package build on the same
5
+ * modules, so a remote agent and a stdio agent see identical tools,
6
+ * instructions and results. Nothing here touches the filesystem or reads
7
+ * process configuration.
8
+ */
9
+ export { type ApprovalOutcome, DEFAULT_APPROVAL_WAIT_MS, } from "../approval-wait.js";
10
+ export type { ChatApprovalState, SendChatResult } from "../chat-approval.js";
11
+ export { ADMIN_MCP_INSTRUCTIONS, type CaeloChatInput, CHAT_MCP_INSTRUCTIONS, type OpenSessionInput, REMOTE_UPLOAD_IMAGES_TOOL, UPLOAD_IMAGES_TOOL, } from "../tool-definitions.js";
12
+ export { type AdminSurfaceBackend, type AdminSurfaceOptions, createAdminMcpServer, type ExecuteToolResponse, type GetContextResponse, type OpenSessionResponse, type RemoteTool, } from "./admin-surface.js";
13
+ export { type ChatSurfaceBackend, type ChatSurfaceOptions, createChatMcpServer, } from "./chat-surface.js";
14
+ export { type StoreImageMeta, type UploadImagesResult, uploadImagesWith } from "./upload.js";
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/surfaces/index.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,EACL,KAAK,eAAe,EACpB,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EACL,sBAAsB,EACtB,KAAK,cAAc,EACnB,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,oBAAoB,EACpB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,UAAU,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,15 @@
1
+ // SPDX-License-Identifier: MPL-2.0
2
+ /**
3
+ * `@caelo-cms/mcp-server/surfaces` — the transport-independent MCP servers
4
+ * and their tool definitions, for the admin's remote Streamable HTTP
5
+ * endpoints (issue #806). The stdio shims in this package build on the same
6
+ * modules, so a remote agent and a stdio agent see identical tools,
7
+ * instructions and results. Nothing here touches the filesystem or reads
8
+ * process configuration.
9
+ */
10
+ export { DEFAULT_APPROVAL_WAIT_MS, } from "../approval-wait.js";
11
+ export { ADMIN_MCP_INSTRUCTIONS, CHAT_MCP_INSTRUCTIONS, REMOTE_UPLOAD_IMAGES_TOOL, UPLOAD_IMAGES_TOOL, } from "../tool-definitions.js";
12
+ export { createAdminMcpServer, } from "./admin-surface.js";
13
+ export { createChatMcpServer, } from "./chat-surface.js";
14
+ export { uploadImagesWith } from "./upload.js";
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/surfaces/index.ts"],"names":[],"mappings":"AAAA,mCAAmC;AAEnC;;;;;;;GAOG;AAEH,OAAO,EAEL,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,sBAAsB,EAEtB,qBAAqB,EAErB,yBAAyB,EACzB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAGL,oBAAoB,GAKrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAgD,gBAAgB,EAAE,MAAM,aAAa,CAAC"}