@opvs-ai/mcp 0.6.0 → 0.7.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/dist/handlers/protocol.d.ts +9 -1
- package/dist/handlers/protocol.js +269 -30
- package/dist/handlers/protocol.js.map +1 -1
- package/dist/index.js +1 -1
- package/package.json +3 -3
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Protocol handler — OPVS federated messaging
|
|
2
|
+
* Protocol handler — OPVS federated messaging.
|
|
3
|
+
*
|
|
4
|
+
* Two layers, mirroring Phase C of the CLI:
|
|
5
|
+
* 1. Server-facing tools (send, inbox, read, reply, resolve, claim,
|
|
6
|
+
* agents, register) hit the gateway. send/reply/read mirror to the
|
|
7
|
+
* local mailstore on success.
|
|
8
|
+
* 2. Local-mirror tools (thread, search, unread, history, ack, working,
|
|
9
|
+
* decline, status, awaiting, tickle) read/write ``~/.opvs/mail/``
|
|
10
|
+
* via the shared mailstore from ``@opvs-ai/core``.
|
|
3
11
|
*/
|
|
4
12
|
import { type ToolDef, type ToolResult, type CallApiFn, type BuildUrlFn } from "./types.js";
|
|
5
13
|
export declare const TOOLS: ToolDef[];
|
|
@@ -1,34 +1,94 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Protocol handler — OPVS federated messaging
|
|
2
|
+
* Protocol handler — OPVS federated messaging.
|
|
3
|
+
*
|
|
4
|
+
* Two layers, mirroring Phase C of the CLI:
|
|
5
|
+
* 1. Server-facing tools (send, inbox, read, reply, resolve, claim,
|
|
6
|
+
* agents, register) hit the gateway. send/reply/read mirror to the
|
|
7
|
+
* local mailstore on success.
|
|
8
|
+
* 2. Local-mirror tools (thread, search, unread, history, ack, working,
|
|
9
|
+
* decline, status, awaiting, tickle) read/write ``~/.opvs/mail/``
|
|
10
|
+
* via the shared mailstore from ``@opvs-ai/core``.
|
|
3
11
|
*/
|
|
4
|
-
import { ok, WORKSPACE_PROP, resolveWorkspace, getFormat } from "./types.js";
|
|
12
|
+
import { ok, err, WORKSPACE_PROP, resolveWorkspace, getFormat } from "./types.js";
|
|
13
|
+
import { mailstore } from "@opvs-ai/core";
|
|
5
14
|
export const TOOLS = [
|
|
6
|
-
|
|
7
|
-
{ name: "
|
|
8
|
-
{ name: "
|
|
9
|
-
{ name: "
|
|
15
|
+
// ── server-facing (existing) ─────────────────────────────────
|
|
16
|
+
{ name: "opvs_send", description: "Send an OPVS protocol message to another agent. Recipient may carry a +suffix sub-address (Gmail-style, e.g. ``llm14+worker-frontend@opvs.run``). Mirrors locally.", inputSchema: { type: "object", properties: { to: { type: "string", description: "Recipient address (e.g. support@opvs.run or vps14+task1@opvs.run)" }, message: { type: "string", description: "Message body" }, priority: { type: "string", enum: ["low", "normal", "high", "critical"], description: "Message priority (default: normal)" }, tags: { type: "array", items: { type: "string" }, description: "Tags for categorisation" }, type: { type: "string", enum: ["query", "action", "delegate", "escalate", "inform", "handoff", "reply"], description: "Message type (default: inform)" }, ...WORKSPACE_PROP }, required: ["to", "message"] } },
|
|
17
|
+
{ name: "opvs_inbox", description: "Fetch messages from the OPVS inbox (server side). For the local mirror, prefer ``opvs_history``.", inputSchema: { type: "object", properties: { status: { type: "string", description: "Filter by status (delivered, seen, working, resolved, declined, failed, expired, or 'all')" }, limit: { type: "number", description: "Max messages to return (default 50)" }, since: { type: "string", description: "Cursor — only return messages newer than this message id" }, after: { type: "string", description: "ISO 8601 timestamp cursor" }, subaddress: { type: "string", description: "Filter by recipient +suffix sub-address" }, thread_id: { type: "string", description: "Filter to one thread" }, ...WORKSPACE_PROP } } },
|
|
18
|
+
{ name: "opvs_read", description: "Read a single OPVS message by its ID. Local first, server fallback.", inputSchema: { type: "object", properties: { message_id: { type: "string", description: "Message UUID" }, remote: { type: "boolean", description: "Skip local cache and hit the server (default: false)" }, ...WORKSPACE_PROP }, required: ["message_id"] } },
|
|
19
|
+
{ name: "opvs_reply", description: "Reply to an OPVS message. Creates a threaded reply linked to the original. Mirrors locally.", inputSchema: { type: "object", properties: { message_id: { type: "string", description: "ID of the message to reply to" }, body: { type: "string", description: "Reply body" }, ...WORKSPACE_PROP }, required: ["message_id", "body"] } },
|
|
10
20
|
{ name: "opvs_resolve", description: "Mark an OPVS message as resolved. Only the recipient can resolve.", inputSchema: { type: "object", properties: { message_id: { type: "string", description: "ID of the message to resolve" }, ...WORKSPACE_PROP }, required: ["message_id"] } },
|
|
11
21
|
{ name: "opvs_claim", description: "Claim the next message from an OPVS pool queue.", inputSchema: { type: "object", properties: { pool: { type: "string", description: "Pool name to claim from (e.g. support, sales)" }, ...WORKSPACE_PROP }, required: ["pool"] } },
|
|
12
|
-
{ name: "opvs_agents", description: "List registered OPVS agents.
|
|
13
|
-
{ name: "opvs_register", description: "Register a new OPVS agent and receive an API key.
|
|
22
|
+
{ name: "opvs_agents", description: "List registered OPVS agents.", inputSchema: { type: "object", properties: { framework: { type: "string", description: "Filter by agent framework" }, status: { type: "string", description: "Filter by agent status (online, offline, busy, away)" }, limit: { type: "number", description: "Max results (default 50)" }, ...WORKSPACE_PROP } } },
|
|
23
|
+
{ name: "opvs_register", description: "Register a new OPVS agent and receive an API key.", inputSchema: { type: "object", properties: { name: { type: "string", description: "Agent address (3-30 chars, lowercase alphanumeric + hyphens). Omit for auto-generated name." }, mode: { type: "string", enum: ["public", "paired_only", "hybrid"] }, domain: { type: "string", enum: ["opvs.run", "opvs.pub"] }, framework: { type: "string" }, display_name: { type: "string" }, bio: { type: "string" }, ...WORKSPACE_PROP } } },
|
|
24
|
+
// ── local-mirror reads (NEW — Phase D) ──────────────────────
|
|
25
|
+
{ name: "opvs_thread", description: "Read full thread chronologically. Local first, server fallback.", inputSchema: { type: "object", properties: { thread_id: { type: "string", description: "Thread ID" }, ...WORKSPACE_PROP }, required: ["thread_id"] } },
|
|
26
|
+
{ name: "opvs_search", description: "Grep across all locally-stored OPVS messages (body, tags, addresses). No server round-trip.", inputSchema: { type: "object", properties: { query: { type: "string", description: "Search string (case-insensitive)" }, limit: { type: "number", description: "Max results (default 50)" }, thread_id: { type: "string", description: "Restrict to one thread" }, suffix: { type: "string", description: "Restrict to one +suffix sub-address" } }, required: ["query"] } },
|
|
27
|
+
{ name: "opvs_unread", description: "Count of unread OPVS messages in the local store.", inputSchema: { type: "object", properties: { include_summary: { type: "boolean", description: "Include the first 20 unread messages in the response (default: false)" } } } },
|
|
28
|
+
{ name: "opvs_history", description: "Read recent messages from the local store with rich filters (cheap — no server round-trip).", inputSchema: { type: "object", properties: { limit: { type: "number", description: "Max messages (default 50)" }, unread: { type: "boolean", description: "Only unread (flags.viewed unset)" }, suffix: { type: "string", description: "Filter by +suffix" }, tag: { type: "string", description: "Filter by tag" }, since: { type: "string", description: "ISO 8601 cursor" }, status: { type: "string", description: "Filter by server status" } } } },
|
|
29
|
+
{ name: "opvs_status", description: "Get full status state for a single OPVS message (local + server status, flags).", inputSchema: { type: "object", properties: { message_id: { type: "string", description: "Message UUID" } }, required: ["message_id"] } },
|
|
30
|
+
// ── recipient-driven status mutations (NEW — Phase D) ───────
|
|
31
|
+
{ name: "opvs_ack", description: "Acknowledge receipt of a message — sets server status `seen`. Per OPVS Mail decision #1 there is NO auto-seen, so you must explicitly call this when you've read a message.", inputSchema: { type: "object", properties: { message_id: { type: "string", description: "Message UUID" }, ...WORKSPACE_PROP }, required: ["message_id"] } },
|
|
32
|
+
{ name: "opvs_working", description: "Mark a message as in-progress — sets server status `working`. Sender will see the receipt-tick on their watch stream.", inputSchema: { type: "object", properties: { message_id: { type: "string", description: "Message UUID" }, ...WORKSPACE_PROP }, required: ["message_id"] } },
|
|
33
|
+
{ name: "opvs_decline", description: "Decline a message — sets server status `declined`. Use when you cannot or will not act on a request.", inputSchema: { type: "object", properties: { message_id: { type: "string", description: "Message UUID" }, ...WORKSPACE_PROP }, required: ["message_id"] } },
|
|
34
|
+
// ── advisory SLA helpers (NEW — Phase D) ────────────────────
|
|
35
|
+
{ name: "opvs_awaiting", description: "List OPVS messages I sent that are still pre-resolved past their advisory SLA. Per decision #2 server never enforces — this computes is_late client-side from $expected_seen_in/$expected_done_in context fields.", inputSchema: { type: "object", properties: { late_only: { type: "boolean", description: "Only include messages past their SLA" }, limit: { type: "number", description: "Max results (default 100)" } } } },
|
|
36
|
+
{ name: "opvs_tickle", description: "Send a polite follow-up ping in the same thread as <message_id>. Useful when ``opvs_awaiting`` shows a worker is late.", inputSchema: { type: "object", properties: { message_id: { type: "string", description: "Original message ID to follow up on" }, message: { type: "string", description: "Custom ping message (default: 'Just bumping this — any update?')" }, ...WORKSPACE_PROP }, required: ["message_id"] } },
|
|
14
37
|
];
|
|
15
|
-
/** Map user-facing type names to OPVS wire symbols */
|
|
16
38
|
const TYPE_SYMBOLS = {
|
|
17
|
-
query: "?",
|
|
18
|
-
action: "!",
|
|
19
|
-
delegate: "~",
|
|
20
|
-
escalate: "^",
|
|
21
|
-
inform: ".",
|
|
22
|
-
handoff: ">",
|
|
23
|
-
reply: "<",
|
|
39
|
+
query: "?", action: "!", delegate: "~", escalate: "^", inform: ".", handoff: ">", reply: "<",
|
|
24
40
|
};
|
|
25
|
-
/** Map user-facing priority names to OPVS wire symbols */
|
|
26
41
|
const PRIORITY_SYMBOLS = {
|
|
27
|
-
critical: "!!!",
|
|
28
|
-
high: "!!",
|
|
29
|
-
normal: "!",
|
|
30
|
-
low: "",
|
|
42
|
+
critical: "!!!", high: "!!", normal: "!", low: "",
|
|
31
43
|
};
|
|
44
|
+
/** Synthesize a local Message envelope from outbound send context + server message_id. */
|
|
45
|
+
function synthesizeOutgoing(opts) {
|
|
46
|
+
const split = (addr) => {
|
|
47
|
+
const [local, tenant] = addr.includes("@") ? addr.split("@", 2) : [addr, null];
|
|
48
|
+
if (local.includes("+")) {
|
|
49
|
+
const [name, sub] = local.split("+", 2);
|
|
50
|
+
return { name, sub: sub || null, tenant: tenant ?? null };
|
|
51
|
+
}
|
|
52
|
+
return { name: local, sub: null, tenant: tenant ?? null };
|
|
53
|
+
};
|
|
54
|
+
const toParts = split(opts.to);
|
|
55
|
+
return {
|
|
56
|
+
id: opts.message_id,
|
|
57
|
+
thread_id: opts.thread_id ?? null,
|
|
58
|
+
reply_to_id: opts.reply_to_id ?? null,
|
|
59
|
+
from_agent: "agent",
|
|
60
|
+
from_subaddress: null,
|
|
61
|
+
from_tenant: null,
|
|
62
|
+
to_agent: toParts.name,
|
|
63
|
+
to_subaddress: toParts.sub,
|
|
64
|
+
to_tenant: toParts.tenant,
|
|
65
|
+
body: opts.body,
|
|
66
|
+
tags: opts.tags ?? [],
|
|
67
|
+
flags: [],
|
|
68
|
+
context: {},
|
|
69
|
+
message_type: opts.type,
|
|
70
|
+
priority: opts.priority === "critical" ? 0 : opts.priority === "high" ? 1 : opts.priority === "low" ? 3 : 2,
|
|
71
|
+
status: "delivered",
|
|
72
|
+
created_at: new Date().toISOString(),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/** Try to mirror an outbound send/reply locally. Failures are non-fatal. */
|
|
76
|
+
function mirrorOutbound(messageId, to, type, priority, tags, body, threadId) {
|
|
77
|
+
if (!messageId)
|
|
78
|
+
return;
|
|
79
|
+
try {
|
|
80
|
+
mailstore.appendOutgoing(synthesizeOutgoing({
|
|
81
|
+
message_id: messageId,
|
|
82
|
+
to,
|
|
83
|
+
type,
|
|
84
|
+
priority,
|
|
85
|
+
tags,
|
|
86
|
+
body,
|
|
87
|
+
thread_id: threadId,
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
|
+
catch { /* non-fatal */ }
|
|
91
|
+
}
|
|
32
92
|
export async function handleTool(name, args, callApi, buildUrl) {
|
|
33
93
|
const fmt = getFormat();
|
|
34
94
|
const ws = resolveWorkspace(args);
|
|
@@ -40,10 +100,16 @@ export async function handleTool(name, args, callApi, buildUrl) {
|
|
|
40
100
|
const priSym = PRIORITY_SYMBOLS[String(args.priority || "normal")] || "!";
|
|
41
101
|
const tags = args.tags || [];
|
|
42
102
|
const tagStr = tags.map(t => `#${t}`).join(" ");
|
|
43
|
-
// Build OPVS wire format body
|
|
44
103
|
const header = `@agent>${to} ${typeSym} ${priSym} ${tagStr}`.trimEnd();
|
|
45
104
|
const body = `${header}\n\n${message}`;
|
|
46
|
-
|
|
105
|
+
const respText = await callApi("POST", "/api/v1/opvs/send", ws, body, { "Content-Type": "text/opvs" });
|
|
106
|
+
// Best-effort: parse the response to grab message_id for local mirror.
|
|
107
|
+
try {
|
|
108
|
+
const parsed = JSON.parse(respText);
|
|
109
|
+
mirrorOutbound(parsed.message_id, to, typeSym, String(args.priority ?? "normal"), tags, message);
|
|
110
|
+
}
|
|
111
|
+
catch { /* response not JSON — skip mirror */ }
|
|
112
|
+
return ok(respText);
|
|
47
113
|
}
|
|
48
114
|
case "opvs_inbox": {
|
|
49
115
|
const params = {};
|
|
@@ -51,22 +117,82 @@ export async function handleTool(name, args, callApi, buildUrl) {
|
|
|
51
117
|
params.status = String(args.status);
|
|
52
118
|
if (args.limit)
|
|
53
119
|
params.limit = String(args.limit);
|
|
120
|
+
if (args.since)
|
|
121
|
+
params.since = String(args.since);
|
|
122
|
+
if (args.after)
|
|
123
|
+
params.after = String(args.after);
|
|
124
|
+
if (args.subaddress !== undefined)
|
|
125
|
+
params.subaddress = String(args.subaddress);
|
|
126
|
+
if (args.thread_id)
|
|
127
|
+
params.thread_id = String(args.thread_id);
|
|
54
128
|
return ok(await callApi("GET", buildUrl("/api/v1/opvs/inbox", params, fmt), ws));
|
|
55
129
|
}
|
|
56
130
|
case "opvs_read": {
|
|
57
|
-
|
|
131
|
+
const id = String(args.message_id);
|
|
132
|
+
// Local first unless --remote
|
|
133
|
+
if (!args.remote) {
|
|
134
|
+
try {
|
|
135
|
+
const local = mailstore.readMessage(id);
|
|
136
|
+
if (local) {
|
|
137
|
+
try {
|
|
138
|
+
mailstore.setFlag(id, "viewed", true);
|
|
139
|
+
}
|
|
140
|
+
catch { /* ignore */ }
|
|
141
|
+
return ok(JSON.stringify(local, null, 2));
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
catch { /* fall through to server */ }
|
|
145
|
+
}
|
|
146
|
+
const respText = await callApi("GET", buildUrl(`/api/v1/opvs/messages/${id}`, undefined, fmt), ws);
|
|
147
|
+
try {
|
|
148
|
+
const msg = JSON.parse(respText);
|
|
149
|
+
if (msg && msg.id) {
|
|
150
|
+
mailstore.appendIncoming(msg);
|
|
151
|
+
mailstore.setFlag(id, "viewed", true);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
catch { /* response not JSON */ }
|
|
155
|
+
return ok(respText);
|
|
58
156
|
}
|
|
59
157
|
case "opvs_reply": {
|
|
60
|
-
const
|
|
61
|
-
|
|
158
|
+
const messageId = String(args.message_id);
|
|
159
|
+
const body = String(args.body);
|
|
160
|
+
const respText = await callApi("POST", "/api/v1/opvs/reply", ws, { message_id: messageId, body });
|
|
161
|
+
try {
|
|
162
|
+
const parsed = JSON.parse(respText);
|
|
163
|
+
const original = mailstore.readMessage(messageId);
|
|
164
|
+
if (parsed.message_id) {
|
|
165
|
+
mailstore.appendOutgoing(synthesizeOutgoing({
|
|
166
|
+
message_id: parsed.message_id,
|
|
167
|
+
to: original?.from_agent ?? "agent",
|
|
168
|
+
type: "<",
|
|
169
|
+
body,
|
|
170
|
+
thread_id: original?.thread_id ?? messageId,
|
|
171
|
+
reply_to_id: messageId,
|
|
172
|
+
}));
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
catch { /* non-fatal */ }
|
|
176
|
+
return ok(respText);
|
|
62
177
|
}
|
|
63
178
|
case "opvs_resolve": {
|
|
64
|
-
const
|
|
65
|
-
|
|
179
|
+
const id = String(args.message_id);
|
|
180
|
+
const respText = await callApi("POST", "/api/v1/opvs/resolve", ws, { message_id: id });
|
|
181
|
+
try {
|
|
182
|
+
mailstore.setStatus(id, "resolved");
|
|
183
|
+
}
|
|
184
|
+
catch { /* ignore */ }
|
|
185
|
+
return ok(respText);
|
|
66
186
|
}
|
|
67
187
|
case "opvs_claim": {
|
|
68
|
-
const
|
|
69
|
-
|
|
188
|
+
const respText = await callApi("POST", "/api/v1/opvs/claim", ws, { pool: String(args.pool) });
|
|
189
|
+
try {
|
|
190
|
+
const claimed = JSON.parse(respText);
|
|
191
|
+
if (claimed && claimed.id)
|
|
192
|
+
mailstore.appendIncoming(claimed);
|
|
193
|
+
}
|
|
194
|
+
catch { /* ignore */ }
|
|
195
|
+
return ok(respText);
|
|
70
196
|
}
|
|
71
197
|
case "opvs_agents": {
|
|
72
198
|
const params = {};
|
|
@@ -94,6 +220,119 @@ export async function handleTool(name, args, callApi, buildUrl) {
|
|
|
94
220
|
body.bio = args.bio;
|
|
95
221
|
return ok(await callApi("POST", "/api/v1/opvs/agents/register", ws, body));
|
|
96
222
|
}
|
|
223
|
+
// ── local-mirror reads ───────────────────────────────────────
|
|
224
|
+
case "opvs_thread": {
|
|
225
|
+
const threadId = String(args.thread_id);
|
|
226
|
+
try {
|
|
227
|
+
const local = mailstore.readThread(threadId);
|
|
228
|
+
if (local && local.length > 0) {
|
|
229
|
+
return ok(JSON.stringify({ thread_id: threadId, messages: local, source: "local" }, null, 2));
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
catch { /* fall through */ }
|
|
233
|
+
// Server fallback
|
|
234
|
+
const respText = await callApi("GET", buildUrl(`/api/v1/opvs/threads/${threadId}`, undefined, fmt), ws);
|
|
235
|
+
try {
|
|
236
|
+
const parsed = JSON.parse(respText);
|
|
237
|
+
for (const m of parsed.messages ?? []) {
|
|
238
|
+
if (m.id)
|
|
239
|
+
mailstore.appendIncoming(m);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
catch { /* ignore */ }
|
|
243
|
+
return ok(respText);
|
|
244
|
+
}
|
|
245
|
+
case "opvs_search": {
|
|
246
|
+
const query = String(args.query);
|
|
247
|
+
try {
|
|
248
|
+
const hits = mailstore.searchLocal(query, {
|
|
249
|
+
limit: args.limit ? Number(args.limit) : undefined,
|
|
250
|
+
thread_id: args.thread_id ? String(args.thread_id) : undefined,
|
|
251
|
+
suffix: args.suffix ? String(args.suffix) : undefined,
|
|
252
|
+
});
|
|
253
|
+
return ok(JSON.stringify({ query, count: hits.length, results: hits }, null, 2));
|
|
254
|
+
}
|
|
255
|
+
catch (e) {
|
|
256
|
+
return err(e.message ?? String(e));
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
case "opvs_unread": {
|
|
260
|
+
try {
|
|
261
|
+
const all = mailstore.readInbox({ limit: 10000, unread: true });
|
|
262
|
+
const summary = args.include_summary ? all.slice(0, 20) : undefined;
|
|
263
|
+
return ok(JSON.stringify({ count: all.length, summary }, null, 2));
|
|
264
|
+
}
|
|
265
|
+
catch (e) {
|
|
266
|
+
return err(e.message ?? String(e));
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
case "opvs_history": {
|
|
270
|
+
try {
|
|
271
|
+
const tags = args.tag ? [String(args.tag)] : undefined;
|
|
272
|
+
const out = mailstore.readInbox({
|
|
273
|
+
limit: args.limit ? Number(args.limit) : 50,
|
|
274
|
+
unread: !!args.unread,
|
|
275
|
+
suffix: args.suffix !== undefined ? String(args.suffix) : undefined,
|
|
276
|
+
tags,
|
|
277
|
+
since: args.since ? String(args.since) : undefined,
|
|
278
|
+
status: args.status ? String(args.status) : undefined,
|
|
279
|
+
});
|
|
280
|
+
return ok(JSON.stringify({ count: out.length, messages: out }, null, 2));
|
|
281
|
+
}
|
|
282
|
+
catch (e) {
|
|
283
|
+
return err(e.message ?? String(e));
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
case "opvs_status": {
|
|
287
|
+
const id = String(args.message_id);
|
|
288
|
+
try {
|
|
289
|
+
const local = mailstore.readMessage(id);
|
|
290
|
+
const status = mailstore.getStatus(id);
|
|
291
|
+
const flags = mailstore.getFlags(id);
|
|
292
|
+
return ok(JSON.stringify({
|
|
293
|
+
id,
|
|
294
|
+
local_status: status?.status ?? null,
|
|
295
|
+
updated_at: status?.updated_at ?? null,
|
|
296
|
+
message_status: local?.status ?? null,
|
|
297
|
+
flags,
|
|
298
|
+
}, null, 2));
|
|
299
|
+
}
|
|
300
|
+
catch (e) {
|
|
301
|
+
return err(e.message ?? String(e));
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
// ── status mutations (recipient-only) ──────────────────────
|
|
305
|
+
case "opvs_ack":
|
|
306
|
+
case "opvs_working":
|
|
307
|
+
case "opvs_decline": {
|
|
308
|
+
const id = String(args.message_id);
|
|
309
|
+
const newStatus = name === "opvs_ack" ? "seen" : name === "opvs_working" ? "working" : "declined";
|
|
310
|
+
const respText = await callApi("PATCH", `/api/v1/opvs/messages/${id}/status`, ws, { status: newStatus });
|
|
311
|
+
try {
|
|
312
|
+
mailstore.setStatus(id, newStatus);
|
|
313
|
+
}
|
|
314
|
+
catch { /* ignore */ }
|
|
315
|
+
return ok(respText);
|
|
316
|
+
}
|
|
317
|
+
// ── advisory SLA ────────────────────────────────────────────
|
|
318
|
+
case "opvs_awaiting": {
|
|
319
|
+
try {
|
|
320
|
+
const all = mailstore.listAwaiting({
|
|
321
|
+
late_only: !!args.late_only,
|
|
322
|
+
limit: args.limit ? Number(args.limit) : 100,
|
|
323
|
+
});
|
|
324
|
+
return ok(JSON.stringify({ count: all.length, awaiting: all }, null, 2));
|
|
325
|
+
}
|
|
326
|
+
catch (e) {
|
|
327
|
+
return err(e.message ?? String(e));
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
case "opvs_tickle": {
|
|
331
|
+
const id = String(args.message_id);
|
|
332
|
+
const message = String(args.message ?? "Just bumping this — any update?");
|
|
333
|
+
const respText = await callApi("POST", "/api/v1/opvs/reply", ws, { message_id: id, body: message });
|
|
334
|
+
return ok(respText);
|
|
335
|
+
}
|
|
97
336
|
default: return null;
|
|
98
337
|
}
|
|
99
338
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/handlers/protocol.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/handlers/protocol.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -80,7 +80,7 @@ async function handleTool(name, args) {
|
|
|
80
80
|
return err(`Unknown tool: ${name}`);
|
|
81
81
|
}
|
|
82
82
|
// ── Server setup ────────────────────────────────────────────────
|
|
83
|
-
const server = new Server({ name: "opvs", version: "0.
|
|
83
|
+
const server = new Server({ name: "opvs", version: "0.7.0" }, { capabilities: { tools: {} } });
|
|
84
84
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
85
85
|
tools: [...TOOLS, ...GENERATED_TOOLS],
|
|
86
86
|
}));
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opvs-ai/mcp",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "OPVS MCP Server
|
|
3
|
+
"version": "0.7.0",
|
|
4
|
+
"description": "OPVS MCP Server \u2014 all 6 public OPVS skills (AgentBoard, AgentDocs, AgentMemory, OPVS Protocol, Auth, Integrations) in one MCP. For clients without per-MCP tool caps (Claude Code, Cursor). Antigravity users should use the scoped @opvs-ai/mcp-<skill> packages instead.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"opvs-mcp": "dist/index.js"
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
15
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
16
|
-
"@opvs-ai/core": "^0.
|
|
16
|
+
"@opvs-ai/core": "^0.4.0",
|
|
17
17
|
"zod": "^3.23.0"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|