@opvs-ai/cli 0.5.5 → 0.5.6

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.
@@ -0,0 +1,5 @@
1
+ /**
2
+ * opvs mail — OPVS Protocol messaging commands
3
+ */
4
+ import { Command } from "commander";
5
+ export declare function registerMailCommands(program: Command): void;
@@ -0,0 +1,289 @@
1
+ /**
2
+ * opvs mail — OPVS Protocol messaging commands
3
+ */
4
+ import { getEffectiveConfig, createClient } from "@opvs-ai/core";
5
+ import { buildUrl, printResponse, printJson } from "../lib/format.js";
6
+ /** Map user-friendly type names to OPVS wire-format symbols. */
7
+ const TYPE_SYMBOLS = {
8
+ "?": "?", query: "?",
9
+ "!": "!", command: "!", action: "!",
10
+ "~": "~", delegate: "~",
11
+ "^": "^", escalate: "^",
12
+ ".": ".", inform: ".",
13
+ ">": ">", handoff: ">",
14
+ "<": "<", reply: "<",
15
+ };
16
+ /** Map priority names to OPVS wire-format symbols. */
17
+ const PRIORITY_SYMBOLS = {
18
+ critical: "!!!",
19
+ high: "!!",
20
+ medium: "!",
21
+ normal: "",
22
+ low: "",
23
+ };
24
+ export function registerMailCommands(program) {
25
+ const mail = program.command("mail").description("OPVS Protocol messaging");
26
+ // ── send ────────────────────────────────────────────────────
27
+ mail
28
+ .command("send <address> <message>")
29
+ .description("Send an OPVS protocol message")
30
+ .option("--priority <level>", "Priority: critical, high, medium, normal", "normal")
31
+ .option("--tags <tags>", "Comma-separated tags")
32
+ .option("--type <type>", "Message type: ? ! ~ ^ . > < (or query, command, delegate, escalate, inform, handoff, reply)", ".")
33
+ .option("--from <address>", "Sender address", "cli")
34
+ .action(async (address, message, opts) => {
35
+ const wsSlug = program.opts().workspace;
36
+ const cfg = getEffectiveConfig(wsSlug);
37
+ try {
38
+ const typeSymbol = TYPE_SYMBOLS[opts.type] || ".";
39
+ const priority = PRIORITY_SYMBOLS[opts.priority] || "";
40
+ const tagsPart = opts.tags
41
+ ? opts.tags.split(",").map((t) => `#${t.trim()}`).join(" ")
42
+ : "";
43
+ let header = `@${opts.from}>${address} ${typeSymbol}`;
44
+ if (priority)
45
+ header += ` ${priority}`;
46
+ if (tagsPart)
47
+ header += ` ${tagsPart}`;
48
+ const wireFormat = `${header}\n\n${message}`;
49
+ // Raw fetch — the core client always JSON-stringifies, but /send needs text/opvs
50
+ const baseUrl = cfg.api_url.replace(/\/$/, "");
51
+ const url = `${baseUrl}/api/v1/opvs/send`;
52
+ const headers = {
53
+ "Content-Type": "text/opvs",
54
+ };
55
+ if (cfg.token)
56
+ headers["Authorization"] = `Bearer ${cfg.token}`;
57
+ if (cfg.brand_id)
58
+ headers["X-Brand-ID"] = String(cfg.brand_id);
59
+ const res = await fetch(url, { method: "POST", headers, body: wireFormat });
60
+ if (!res.ok) {
61
+ let detail;
62
+ try {
63
+ const err = (await res.json());
64
+ if (typeof err.detail === "string") {
65
+ detail = err.detail;
66
+ }
67
+ else if (Array.isArray(err.detail)) {
68
+ detail = err.detail.map((d) => d.msg || JSON.stringify(d)).join("; ");
69
+ }
70
+ else {
71
+ detail = res.statusText;
72
+ }
73
+ }
74
+ catch {
75
+ detail = res.statusText;
76
+ }
77
+ console.error(`Error: ${detail}`);
78
+ process.exit(1);
79
+ }
80
+ await printResponse(res);
81
+ }
82
+ catch (err) {
83
+ const e = err;
84
+ console.error(`Error: ${e.detail || "Failed to send message"}`);
85
+ process.exit(1);
86
+ }
87
+ });
88
+ // ── inbox ───────────────────────────────────────────────────
89
+ mail
90
+ .command("inbox")
91
+ .description("Fetch inbox messages")
92
+ .option("--limit <n>", "Max messages", "50")
93
+ .option("--tags <tags>", "Filter by comma-separated tags")
94
+ .option("--flags <flags>", "Filter by comma-separated flags")
95
+ .action(async (opts) => {
96
+ const wsSlug = program.opts().workspace;
97
+ const cfg = getEffectiveConfig(wsSlug);
98
+ try {
99
+ const client = createClient(wsSlug);
100
+ const params = {};
101
+ if (opts.limit)
102
+ params.limit = opts.limit;
103
+ if (opts.tags)
104
+ params.tags = opts.tags;
105
+ if (opts.flags)
106
+ params.flags = opts.flags;
107
+ const url = buildUrl("/api/v1/opvs/inbox", params, cfg.format);
108
+ const res = await client.get(url);
109
+ await printResponse(res);
110
+ }
111
+ catch (err) {
112
+ const e = err;
113
+ console.error(`Error: ${e.detail || "Failed to fetch inbox"}`);
114
+ process.exit(1);
115
+ }
116
+ });
117
+ // ── read ────────────────────────────────────────────────────
118
+ mail
119
+ .command("read <id>")
120
+ .description("Read a single message by ID")
121
+ .action(async (id) => {
122
+ const wsSlug = program.opts().workspace;
123
+ const cfg = getEffectiveConfig(wsSlug);
124
+ try {
125
+ const client = createClient(wsSlug);
126
+ const url = buildUrl(`/api/v1/opvs/messages/${id}`, undefined, cfg.format);
127
+ const res = await client.get(url);
128
+ await printResponse(res);
129
+ }
130
+ catch (err) {
131
+ const e = err;
132
+ console.error(`Error: ${e.detail || "Failed to read message"}`);
133
+ process.exit(1);
134
+ }
135
+ });
136
+ // ── reply ───────────────────────────────────────────────────
137
+ mail
138
+ .command("reply <id> <message>")
139
+ .description("Reply to a message")
140
+ .action(async (id, message) => {
141
+ const wsSlug = program.opts().workspace;
142
+ try {
143
+ const client = createClient(wsSlug);
144
+ const res = await client.post("/api/v1/opvs/reply", {
145
+ message_id: id,
146
+ body: message,
147
+ });
148
+ const data = await res.json();
149
+ printJson(data);
150
+ }
151
+ catch (err) {
152
+ const e = err;
153
+ console.error(`Error: ${e.detail || "Failed to reply"}`);
154
+ process.exit(1);
155
+ }
156
+ });
157
+ // ── resolve ─────────────────────────────────────────────────
158
+ mail
159
+ .command("resolve <id>")
160
+ .description("Mark a message as resolved")
161
+ .action(async (id) => {
162
+ const wsSlug = program.opts().workspace;
163
+ try {
164
+ const client = createClient(wsSlug);
165
+ const res = await client.post("/api/v1/opvs/resolve", {
166
+ message_id: id,
167
+ });
168
+ const data = await res.json();
169
+ printJson(data);
170
+ }
171
+ catch (err) {
172
+ const e = err;
173
+ console.error(`Error: ${e.detail || "Failed to resolve message"}`);
174
+ process.exit(1);
175
+ }
176
+ });
177
+ // ── claim ───────────────────────────────────────────────────
178
+ mail
179
+ .command("claim")
180
+ .description("Claim next message from a pool")
181
+ .requiredOption("--pool <pool>", "Pool name to claim from")
182
+ .option("--tags <tags>", "Filter by comma-separated tags")
183
+ .option("--flags <flags>", "Filter by comma-separated flags")
184
+ .action(async (opts) => {
185
+ const wsSlug = program.opts().workspace;
186
+ try {
187
+ const client = createClient(wsSlug);
188
+ const body = { pool: opts.pool };
189
+ if (opts.tags)
190
+ body.filter_tags = opts.tags.split(",").map((t) => t.trim());
191
+ if (opts.flags)
192
+ body.filter_flags = opts.flags.split(",").map((f) => f.trim());
193
+ const res = await client.post("/api/v1/opvs/claim", body);
194
+ const data = await res.json();
195
+ printJson(data);
196
+ }
197
+ catch (err) {
198
+ const e = err;
199
+ console.error(`Error: ${e.detail || "Failed to claim message"}`);
200
+ process.exit(1);
201
+ }
202
+ });
203
+ // ── pair ────────────────────────────────────────────────────
204
+ mail
205
+ .command("pair <address>")
206
+ .description("Initiate pairing with another agent")
207
+ .option("--message <text>", "Intro message")
208
+ .action(async (address, opts) => {
209
+ const wsSlug = program.opts().workspace;
210
+ try {
211
+ const client = createClient(wsSlug);
212
+ const body = { target_address: address };
213
+ if (opts.message)
214
+ body.intro_message = opts.message;
215
+ const res = await client.post("/api/v1/opvs/pair", body);
216
+ const data = await res.json();
217
+ printJson(data);
218
+ }
219
+ catch (err) {
220
+ const e = err;
221
+ console.error(`Error: ${e.detail || "Failed to initiate pairing"}`);
222
+ process.exit(1);
223
+ }
224
+ });
225
+ // ── agents ──────────────────────────────────────────────────
226
+ mail
227
+ .command("agents")
228
+ .description("List registered OPVS agents")
229
+ .option("--framework <framework>", "Filter by framework (e.g. openclaw)")
230
+ .option("--status <status>", "Filter by status (online, offline, busy, away)")
231
+ .option("--limit <n>", "Max results", "50")
232
+ .action(async (opts) => {
233
+ const wsSlug = program.opts().workspace;
234
+ const cfg = getEffectiveConfig(wsSlug);
235
+ try {
236
+ const client = createClient(wsSlug);
237
+ const params = {};
238
+ if (opts.framework)
239
+ params.framework = opts.framework;
240
+ if (opts.status)
241
+ params.status = opts.status;
242
+ if (opts.limit)
243
+ params.limit = opts.limit;
244
+ const url = buildUrl("/api/v1/opvs/agents", params, cfg.format);
245
+ const res = await client.get(url);
246
+ await printResponse(res);
247
+ }
248
+ catch (err) {
249
+ const e = err;
250
+ console.error(`Error: ${e.detail || "Failed to list agents"}`);
251
+ process.exit(1);
252
+ }
253
+ });
254
+ // ── register ────────────────────────────────────────────────
255
+ mail
256
+ .command("register")
257
+ .description("Register a new OPVS agent address")
258
+ .option("--name <name>", "Agent address (omit for auto-generated)")
259
+ .option("--mode <mode>", "Agent mode: public, paired_only, hybrid", "public")
260
+ .option("--domain <domain>", "Domain: opvs.run or opvs.pub", "opvs.run")
261
+ .option("--framework <framework>", "Agent framework (e.g. claude, openclaw)")
262
+ .option("--capabilities <caps>", "Comma-separated capabilities")
263
+ .action(async (opts) => {
264
+ const wsSlug = program.opts().workspace;
265
+ try {
266
+ const client = createClient(wsSlug);
267
+ const body = {
268
+ mode: opts.mode,
269
+ domain: opts.domain,
270
+ };
271
+ if (opts.name)
272
+ body.name = opts.name;
273
+ if (opts.framework)
274
+ body.framework = opts.framework;
275
+ if (opts.capabilities) {
276
+ body.capabilities = opts.capabilities.split(",").map((c) => c.trim());
277
+ }
278
+ const res = await client.post("/api/v1/opvs/agents/register", body);
279
+ const data = await res.json();
280
+ printJson(data);
281
+ }
282
+ catch (err) {
283
+ const e = err;
284
+ console.error(`Error: ${e.detail || "Failed to register agent"}`);
285
+ process.exit(1);
286
+ }
287
+ });
288
+ }
289
+ //# sourceMappingURL=mail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail.js","sourceRoot":"","sources":["../../src/commands/mail.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -33,11 +33,12 @@ import { registerMemberCommands } from "./commands/members.js";
33
33
  import { registerMarkerCommands } from "./commands/markers.js";
34
34
  import { registerBoardLinkCommands } from "./commands/board-links.js";
35
35
  import { registerSkillCommands } from "./commands/skills.js";
36
+ import { registerMailCommands } from "./commands/mail.js";
36
37
  const program = new Command();
37
38
  program
38
39
  .name("opvs")
39
40
  .description("OPVS CLI — AgentBoard + AgentDocs for AI coding agents")
40
- .version("0.5.5")
41
+ .version("0.5.6")
41
42
  .option("-w, --workspace <slug>", "Workspace to use (overrides current)");
42
43
  // Register all command groups
43
44
  registerAuthCommands(program);
@@ -59,6 +60,7 @@ registerMemberCommands(program);
59
60
  registerMarkerCommands(program);
60
61
  registerBoardLinkCommands(program);
61
62
  registerSkillCommands(program);
63
+ registerMailCommands(program);
62
64
  registerConfigCommands(program);
63
65
  program.parse();
64
66
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,wDAAwD,CAAC;KACrE,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,wBAAwB,EAAE,sCAAsC,CAAC,CAAC;AAE5E,8BAA8B;AAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACnC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACnC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAEhC,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,wDAAwD,CAAC;KACrE,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,wBAAwB,EAAE,sCAAsC,CAAC,CAAC;AAE5E,8BAA8B;AAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACnC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACnC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAEhC,OAAO,CAAC,KAAK,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opvs-ai/cli",
3
- "version": "0.5.5",
3
+ "version": "0.5.6",
4
4
  "description": "OPVS CLI — Terminal access to AgentBoard + AgentDocs for AI coding agents",
5
5
  "type": "module",
6
6
  "bin": {