@opvs-ai/cli 0.27.12 → 0.27.14
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 +0 -4
- package/dist/.build-stamp.json +4 -4
- package/dist/commands/generic-skill.d.ts +28 -0
- package/dist/commands/generic-skill.js +295 -0
- package/dist/commands/generic-skill.js.map +1 -0
- package/dist/commands/install.d.ts +15 -1
- package/dist/commands/install.js +55 -3
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/mail.js +61 -0
- package/dist/commands/mail.js.map +1 -1
- package/dist/commands/tasks.js +157 -6
- package/dist/commands/tasks.js.map +1 -1
- package/dist/commands/tools.d.ts +0 -1
- package/dist/commands/tools.js +27 -19
- package/dist/commands/tools.js.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/file-param.d.ts +14 -0
- package/dist/lib/file-param.js +60 -0
- package/dist/lib/file-param.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -513,10 +513,6 @@ opvs tools call @opvs-ai/agentboard list_tasks \
|
|
|
513
513
|
opvs tools call agentboard list_tasks --args-file ./params.json
|
|
514
514
|
```
|
|
515
515
|
|
|
516
|
-
`opvs tools pin <skill>` is reserved for a CLI-facing pin endpoint that
|
|
517
|
-
ships in W2.1; until then it emits a stub error. For agent sessions, the
|
|
518
|
-
gateway plugin `skill_pin` tool is the canonical surface.
|
|
519
|
-
|
|
520
516
|
### Workspace
|
|
521
517
|
|
|
522
518
|
```bash
|
package/dist/.build-stamp.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"stamp_version": 1,
|
|
3
3
|
"package": "@opvs-ai/cli",
|
|
4
|
-
"version": "0.27.
|
|
5
|
-
"source_digest": "
|
|
6
|
-
"source_files":
|
|
7
|
-
"built_at": "2026-11-
|
|
4
|
+
"version": "0.27.14",
|
|
5
|
+
"source_digest": "781354d996f327159c949e1c3d24a9c5247c9c81c5a90ec57e0b56452374bdd7",
|
|
6
|
+
"source_files": 65,
|
|
7
|
+
"built_at": "2026-11-15T12:45:41.460Z",
|
|
8
8
|
"node": "v22.23.4"
|
|
9
9
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/** Dynamic `opvs <skill> <method> [--param value]` commands. */
|
|
2
|
+
import { Command } from "commander";
|
|
3
|
+
interface GenericClient {
|
|
4
|
+
get(path: string): Promise<Response>;
|
|
5
|
+
post(path: string, body: unknown): Promise<Response>;
|
|
6
|
+
}
|
|
7
|
+
interface MethodParam {
|
|
8
|
+
type?: string;
|
|
9
|
+
required?: boolean;
|
|
10
|
+
description?: string;
|
|
11
|
+
enum?: unknown[];
|
|
12
|
+
}
|
|
13
|
+
interface GenericDependencies {
|
|
14
|
+
createClient?: (workspace?: string) => GenericClient;
|
|
15
|
+
printResponse?: (response: Response) => Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
export type GenericPreparation = "manual" | "registered" | "error" | "none";
|
|
18
|
+
/** How the root help points at the generic path. */
|
|
19
|
+
export declare const GENERIC_SKILL_HELP = "\nInstalled skills:\n opvs <skill> <method> [--param value]... call a method of an installed skill\n opvs <skill> --help list the skill's methods";
|
|
20
|
+
export declare function nearestNames(value: string, names: string[], limit?: number): string[];
|
|
21
|
+
export declare function coerceParam(name: string, value: unknown, param: MethodParam): unknown;
|
|
22
|
+
/**
|
|
23
|
+
* Register the requested installed skill just before Commander parses argv.
|
|
24
|
+
* Hand-made root commands and `help` are checked first, with no network call:
|
|
25
|
+
* they always win a name collision.
|
|
26
|
+
*/
|
|
27
|
+
export declare function prepareGenericSkillCommand(program: Command, argv: string[], dependencies?: GenericDependencies): Promise<GenericPreparation>;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
/** Dynamic `opvs <skill> <method> [--param value]` commands. */
|
|
2
|
+
import { Option } from "commander";
|
|
3
|
+
import { createClient } from "@opvs-ai/core";
|
|
4
|
+
import { printResponse } from "../lib/format.js";
|
|
5
|
+
import { readFileParam } from "../lib/file-param.js";
|
|
6
|
+
/** Commander's own help command, `opvs help [command]`. */
|
|
7
|
+
const HELP = "help";
|
|
8
|
+
/** How the root help points at the generic path. */
|
|
9
|
+
export const GENERIC_SKILL_HELP = `
|
|
10
|
+
Installed skills:
|
|
11
|
+
opvs <skill> <method> [--param value]... call a method of an installed skill
|
|
12
|
+
opvs <skill> --help list the skill's methods`;
|
|
13
|
+
function optionName(token) {
|
|
14
|
+
return token.slice(2).split("=", 1)[0];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* The first word, and the workspace read the way Commander's root parser reads
|
|
18
|
+
* it: `-w/--workspace` counts wherever it stands, so `opvs agentboard listBoards
|
|
19
|
+
* -w acme` looks the skill up, and calls it, in acme.
|
|
20
|
+
*/
|
|
21
|
+
function argvRoot(argv) {
|
|
22
|
+
let name;
|
|
23
|
+
let index = -1;
|
|
24
|
+
let workspace;
|
|
25
|
+
for (let at = 0; at < argv.length; at++) {
|
|
26
|
+
const token = argv[at];
|
|
27
|
+
if (token === "--")
|
|
28
|
+
break;
|
|
29
|
+
if (token === "-w" || token === "--workspace") {
|
|
30
|
+
workspace = argv[++at];
|
|
31
|
+
}
|
|
32
|
+
else if (token.startsWith("--workspace=")) {
|
|
33
|
+
workspace = token.slice("--workspace=".length);
|
|
34
|
+
}
|
|
35
|
+
else if (name === undefined && !token.startsWith("-")) {
|
|
36
|
+
name = token;
|
|
37
|
+
index = at;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return { name, index, workspace };
|
|
41
|
+
}
|
|
42
|
+
/** A hand-made command or alias of that name: it always wins, with no network call. */
|
|
43
|
+
function isHandMade(program, word) {
|
|
44
|
+
return program.commands.some((command) => command.name() === word || command.aliases().includes(word));
|
|
45
|
+
}
|
|
46
|
+
/** The commands `opvs help` lists, `help` among them. */
|
|
47
|
+
function commandNames(program) {
|
|
48
|
+
return program.createHelp().visibleCommands(program).map((command) => command.name());
|
|
49
|
+
}
|
|
50
|
+
/** What went wrong, in the route's own words when it gave some. */
|
|
51
|
+
function reason(error) {
|
|
52
|
+
const detail = error?.detail;
|
|
53
|
+
if (typeof detail === "string")
|
|
54
|
+
return detail;
|
|
55
|
+
return error instanceof Error ? error.message : String(error);
|
|
56
|
+
}
|
|
57
|
+
function hasMethod(skill, name) {
|
|
58
|
+
return Object.prototype.hasOwnProperty.call(skill.methods, name);
|
|
59
|
+
}
|
|
60
|
+
function paramsOf(method) {
|
|
61
|
+
if (!Array.isArray(method.params))
|
|
62
|
+
return method.params ?? {};
|
|
63
|
+
return Object.fromEntries(method.params.map(({ name, ...param }) => [name, param]));
|
|
64
|
+
}
|
|
65
|
+
function guidanceLine(method) {
|
|
66
|
+
if (typeof method.guidance === "string")
|
|
67
|
+
return method.guidance.split("\n", 1)[0];
|
|
68
|
+
return method.guidance?.use?.split("\n", 1)[0] ?? method.description ?? "Call this skill method";
|
|
69
|
+
}
|
|
70
|
+
function distance(left, right) {
|
|
71
|
+
const row = Array.from({ length: right.length + 1 }, (_, index) => index);
|
|
72
|
+
for (let i = 1; i <= left.length; i++) {
|
|
73
|
+
let diagonal = row[0];
|
|
74
|
+
row[0] = i;
|
|
75
|
+
for (let j = 1; j <= right.length; j++) {
|
|
76
|
+
const above = row[j];
|
|
77
|
+
row[j] = Math.min(row[j] + 1, row[j - 1] + 1, diagonal + (left[i - 1].toLowerCase() === right[j - 1].toLowerCase() ? 0 : 1));
|
|
78
|
+
diagonal = above;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return row[right.length];
|
|
82
|
+
}
|
|
83
|
+
export function nearestNames(value, names, limit = 3) {
|
|
84
|
+
return [...names]
|
|
85
|
+
.sort((a, b) => distance(value, a) - distance(value, b) || a.localeCompare(b))
|
|
86
|
+
.slice(0, limit);
|
|
87
|
+
}
|
|
88
|
+
export function coerceParam(name, value, param) {
|
|
89
|
+
if (Array.isArray(value))
|
|
90
|
+
return value.map((item) => coerceParam(name, item, { ...param, type: "string" }));
|
|
91
|
+
const raw = String(value);
|
|
92
|
+
switch (param.type) {
|
|
93
|
+
case "integer": {
|
|
94
|
+
const parsed = Number(raw);
|
|
95
|
+
if (!Number.isInteger(parsed))
|
|
96
|
+
throw new Error(`--${name} must be an integer`);
|
|
97
|
+
return parsed;
|
|
98
|
+
}
|
|
99
|
+
case "number": {
|
|
100
|
+
const parsed = Number(raw);
|
|
101
|
+
if (!Number.isFinite(parsed))
|
|
102
|
+
throw new Error(`--${name} must be a number`);
|
|
103
|
+
return parsed;
|
|
104
|
+
}
|
|
105
|
+
case "boolean":
|
|
106
|
+
if (["true", "1", "yes"].includes(raw.toLowerCase()))
|
|
107
|
+
return true;
|
|
108
|
+
if (["false", "0", "no"].includes(raw.toLowerCase()))
|
|
109
|
+
return false;
|
|
110
|
+
throw new Error(`--${name} must be true or false`);
|
|
111
|
+
case "object":
|
|
112
|
+
try {
|
|
113
|
+
const parsed = JSON.parse(raw);
|
|
114
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
|
|
115
|
+
throw new Error();
|
|
116
|
+
return parsed;
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
throw new Error(`--${name} must be a JSON object`);
|
|
120
|
+
}
|
|
121
|
+
case "array":
|
|
122
|
+
try {
|
|
123
|
+
const parsed = JSON.parse(raw);
|
|
124
|
+
if (!Array.isArray(parsed))
|
|
125
|
+
throw new Error();
|
|
126
|
+
return parsed;
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
return raw.split(",").map((item) => item.trim());
|
|
130
|
+
}
|
|
131
|
+
case "file":
|
|
132
|
+
return readFileParam(`${name}=${raw}`)[1];
|
|
133
|
+
default:
|
|
134
|
+
return raw;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
async function installedSkills(client) {
|
|
138
|
+
const installedResponse = await client.get("/api/v1/marketplace/installed");
|
|
139
|
+
const installed = (await installedResponse.json());
|
|
140
|
+
const active = (installed.items ?? []).filter((item) => !item.state || item.state === "active");
|
|
141
|
+
const details = await Promise.all(active.map(async (item) => {
|
|
142
|
+
const vendor = encodeURIComponent(item.vendor);
|
|
143
|
+
const name = encodeURIComponent(item.name);
|
|
144
|
+
// The package detail sends `methods_index` only on ?full=1 (SP-60); a reply
|
|
145
|
+
// without it is an error, never a skill with no methods.
|
|
146
|
+
const response = await client.get(`/api/v1/registry/packages/${vendor}/${name}?full=1`);
|
|
147
|
+
const detail = (await response.json());
|
|
148
|
+
if (!detail.methods_index || typeof detail.methods_index !== "object") {
|
|
149
|
+
throw new Error(`registry reply for ${item.vendor}/${item.name} has no methods_index; ask with full=1`);
|
|
150
|
+
}
|
|
151
|
+
return { item, methods: detail.methods_index };
|
|
152
|
+
}));
|
|
153
|
+
const result = new Map();
|
|
154
|
+
for (const { item, methods } of details) {
|
|
155
|
+
for (const [skillName, skillMethods] of Object.entries(methods)) {
|
|
156
|
+
if (result.has(skillName)) {
|
|
157
|
+
throw new Error(`Installed packages expose duplicate skill '${skillName}'`);
|
|
158
|
+
}
|
|
159
|
+
result.set(skillName, { installId: item.id, name: skillName, methods: skillMethods });
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return result;
|
|
163
|
+
}
|
|
164
|
+
async function discover(workspace, dependencies) {
|
|
165
|
+
const client = (dependencies.createClient ?? createClient)(workspace);
|
|
166
|
+
return { client, skills: await installedSkills(client) };
|
|
167
|
+
}
|
|
168
|
+
function acceptedParams(method) {
|
|
169
|
+
return Object.keys(paramsOf(method));
|
|
170
|
+
}
|
|
171
|
+
/** The first `--name` the method does not take; a value after its flag is skipped. */
|
|
172
|
+
function unknownOption(argv, start, method) {
|
|
173
|
+
const accepted = new Set([...acceptedParams(method), "workspace"]);
|
|
174
|
+
for (let at = start; at < argv.length; at++) {
|
|
175
|
+
const token = argv[at];
|
|
176
|
+
if (token === "--")
|
|
177
|
+
break;
|
|
178
|
+
if (!token.startsWith("--"))
|
|
179
|
+
continue;
|
|
180
|
+
const name = optionName(token);
|
|
181
|
+
if (name === HELP)
|
|
182
|
+
continue;
|
|
183
|
+
if (!accepted.has(name))
|
|
184
|
+
return name;
|
|
185
|
+
if (!token.includes("="))
|
|
186
|
+
at++;
|
|
187
|
+
}
|
|
188
|
+
return undefined;
|
|
189
|
+
}
|
|
190
|
+
function optionDescription(name, param) {
|
|
191
|
+
const details = [param.description, param.enum?.length ? `accepted: ${param.enum.join(", ")}` : undefined]
|
|
192
|
+
.filter(Boolean)
|
|
193
|
+
.join("; ");
|
|
194
|
+
return details || `${name} (${param.type ?? "string"})`;
|
|
195
|
+
}
|
|
196
|
+
function registerSkill(program, skill, client, print) {
|
|
197
|
+
const group = program.command(skill.name).description(`Methods provided by installed skill ${skill.name}`);
|
|
198
|
+
// `opvs <skill> help [method]` answers like `opvs tasks help` does.
|
|
199
|
+
group.helpCommand(true);
|
|
200
|
+
group.action(() => group.help());
|
|
201
|
+
for (const [methodName, descriptor] of Object.entries(skill.methods)) {
|
|
202
|
+
const method = group.command(methodName).description(guidanceLine(descriptor));
|
|
203
|
+
const params = paramsOf(descriptor);
|
|
204
|
+
// Commander stores `--dry-run` as `dryRun`; the body key stays the schema's name.
|
|
205
|
+
const keys = new Map();
|
|
206
|
+
for (const [name, param] of Object.entries(params)) {
|
|
207
|
+
const option = new Option(`--${name} <value>`, optionDescription(name, param));
|
|
208
|
+
if (param.required)
|
|
209
|
+
option.makeOptionMandatory();
|
|
210
|
+
method.addOption(option);
|
|
211
|
+
keys.set(name, option.attributeName());
|
|
212
|
+
}
|
|
213
|
+
method.action(async (options) => {
|
|
214
|
+
const body = {};
|
|
215
|
+
try {
|
|
216
|
+
for (const [name, param] of Object.entries(params)) {
|
|
217
|
+
const value = options[keys.get(name)];
|
|
218
|
+
if (value !== undefined)
|
|
219
|
+
body[name] = coerceParam(name, value, param);
|
|
220
|
+
}
|
|
221
|
+
const route = `/api/v1/marketplace/runtime/${encodeURIComponent(skill.installId)}`
|
|
222
|
+
+ `/${encodeURIComponent(skill.name)}/${encodeURIComponent(methodName)}`;
|
|
223
|
+
await print(await client.post(route, body));
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
console.error(reason(error));
|
|
227
|
+
process.exitCode = 1;
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Register the requested installed skill just before Commander parses argv.
|
|
234
|
+
* Hand-made root commands and `help` are checked first, with no network call:
|
|
235
|
+
* they always win a name collision.
|
|
236
|
+
*/
|
|
237
|
+
export async function prepareGenericSkillCommand(program, argv, dependencies = {}) {
|
|
238
|
+
const root = argvRoot(argv);
|
|
239
|
+
const word = root.name;
|
|
240
|
+
if (!word)
|
|
241
|
+
return "none";
|
|
242
|
+
if (isHandMade(program, word))
|
|
243
|
+
return "manual";
|
|
244
|
+
const print = dependencies.printResponse ?? printResponse;
|
|
245
|
+
if (word === HELP) {
|
|
246
|
+
// Commander answers `opvs help [command]`. Only `opvs help <skill>` needs the
|
|
247
|
+
// skill registered first; when it cannot be found, Commander's answer stands.
|
|
248
|
+
const topic = argvRoot(argv.slice(root.index + 1)).name;
|
|
249
|
+
if (!topic || topic === HELP || isHandMade(program, topic))
|
|
250
|
+
return "manual";
|
|
251
|
+
const found = await discover(root.workspace, dependencies).catch(() => undefined);
|
|
252
|
+
const skill = found?.skills.get(topic);
|
|
253
|
+
if (!found || !skill)
|
|
254
|
+
return "manual";
|
|
255
|
+
registerSkill(program, skill, found.client, print);
|
|
256
|
+
return "registered";
|
|
257
|
+
}
|
|
258
|
+
const found = await discover(root.workspace, dependencies).catch((error) => {
|
|
259
|
+
// Offline, signed out or a failing registry: the word may still be a skill,
|
|
260
|
+
// so say what failed, and name the commands it may be a typo of.
|
|
261
|
+
console.error(`'${word}' is not an opvs command, and the installed skills could not be listed to look for it: ${reason(error)}`);
|
|
262
|
+
console.error(`Nearest commands: ${nearestNames(word, commandNames(program)).join(", ") || "none"}`);
|
|
263
|
+
process.exitCode = 1;
|
|
264
|
+
return undefined;
|
|
265
|
+
});
|
|
266
|
+
if (!found)
|
|
267
|
+
return "error";
|
|
268
|
+
const { client, skills } = found;
|
|
269
|
+
const skill = skills.get(word);
|
|
270
|
+
if (!skill) {
|
|
271
|
+
const nearest = nearestNames(word, [...commandNames(program), ...skills.keys()]);
|
|
272
|
+
console.error(`Unknown command or skill '${word}'. Nearest: ${nearest.join(", ") || "none"}`);
|
|
273
|
+
process.exitCode = 2;
|
|
274
|
+
return "error";
|
|
275
|
+
}
|
|
276
|
+
const method = argvRoot(argv.slice(root.index + 1)).name;
|
|
277
|
+
if (method && !hasMethod(skill, method) && method !== HELP) {
|
|
278
|
+
const nearest = nearestNames(method, Object.keys(skill.methods));
|
|
279
|
+
console.error(`Unknown method '${method}' for ${skill.name}. Nearest methods: ${nearest.join(", ") || "none"}`);
|
|
280
|
+
process.exitCode = 2;
|
|
281
|
+
return "error";
|
|
282
|
+
}
|
|
283
|
+
if (method && hasMethod(skill, method)) {
|
|
284
|
+
const unknown = unknownOption(argv, root.index + 1, skill.methods[method]);
|
|
285
|
+
if (unknown) {
|
|
286
|
+
const accepted = acceptedParams(skill.methods[method]);
|
|
287
|
+
console.error(`Unknown parameter '--${unknown}'. Accepted parameters: ${accepted.map((name) => `--${name}`).join(", ") || "none"}`);
|
|
288
|
+
process.exitCode = 2;
|
|
289
|
+
return "error";
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
registerSkill(program, skill, client, print);
|
|
293
|
+
return "registered";
|
|
294
|
+
}
|
|
295
|
+
//# sourceMappingURL=generic-skill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generic-skill.js","sourceRoot":"","sources":["../../src/commands/generic-skill.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,11 +9,25 @@
|
|
|
9
9
|
* opvs mail install-hooks claude-code → writes Stop hook to
|
|
10
10
|
* ~/.claude/settings.json
|
|
11
11
|
* opvs mail install-hooks codex|antigravity → writes MCP server entry
|
|
12
|
-
* to ~/.codex/config.
|
|
12
|
+
* to ~/.codex/config.toml
|
|
13
13
|
* or ~/.antigravity/...
|
|
14
14
|
* opvs mail daemon install/start/stop/status → systemd-user (Linux) or
|
|
15
15
|
* launchd (macOS) wrapper
|
|
16
16
|
* around ``mail watch``
|
|
17
17
|
*/
|
|
18
18
|
import { Command } from "commander";
|
|
19
|
+
/** Codex's config root is overrideable, but its filename is always TOML. */
|
|
20
|
+
export declare function codexConfigPath(home?: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Does TOML already define the EXACT MCP server name `opvs`?
|
|
23
|
+
*
|
|
24
|
+
* This is intentionally a bounded text check instead of a new TOML parser.
|
|
25
|
+
* Comment-only lines do not count. The name boundary is structural, so
|
|
26
|
+
* `opvs-belt`, `opvsbelt`, and `opvs_2` remain distinct server names.
|
|
27
|
+
*/
|
|
28
|
+
export declare function hasCodexMCPServer(content: string): boolean;
|
|
29
|
+
/** Append Codex's OPVS MCP block without rewriting any existing TOML line. */
|
|
30
|
+
export declare function installCodexMCPEntry(target: string): {
|
|
31
|
+
merged: boolean;
|
|
32
|
+
};
|
|
19
33
|
export declare function registerInstallCommands(mail: Command): void;
|
package/dist/commands/install.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* opvs mail install-hooks claude-code → writes Stop hook to
|
|
10
10
|
* ~/.claude/settings.json
|
|
11
11
|
* opvs mail install-hooks codex|antigravity → writes MCP server entry
|
|
12
|
-
* to ~/.codex/config.
|
|
12
|
+
* to ~/.codex/config.toml
|
|
13
13
|
* or ~/.antigravity/...
|
|
14
14
|
* opvs mail daemon install/start/stop/status → systemd-user (Linux) or
|
|
15
15
|
* launchd (macOS) wrapper
|
|
@@ -111,6 +111,58 @@ function installMCPEntry(target, key = "opvs", opts = {}) {
|
|
|
111
111
|
writeFileSync(target, JSON.stringify(cfg, null, 2) + "\n");
|
|
112
112
|
return { merged: true };
|
|
113
113
|
}
|
|
114
|
+
/** Codex's config root is overrideable, but its filename is always TOML. */
|
|
115
|
+
export function codexConfigPath(home = homedir()) {
|
|
116
|
+
return process.env.CODEX_HOME
|
|
117
|
+
? join(process.env.CODEX_HOME, "config.toml")
|
|
118
|
+
: join(home, ".codex", "config.toml");
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Does TOML already define the EXACT MCP server name `opvs`?
|
|
122
|
+
*
|
|
123
|
+
* This is intentionally a bounded text check instead of a new TOML parser.
|
|
124
|
+
* Comment-only lines do not count. The name boundary is structural, so
|
|
125
|
+
* `opvs-belt`, `opvsbelt`, and `opvs_2` remain distinct server names.
|
|
126
|
+
*/
|
|
127
|
+
export function hasCodexMCPServer(content) {
|
|
128
|
+
let section = "";
|
|
129
|
+
for (const raw of content.split(/\r?\n/)) {
|
|
130
|
+
const line = raw.trim();
|
|
131
|
+
if (!line || line.startsWith("#"))
|
|
132
|
+
continue;
|
|
133
|
+
const header = line.match(/^\[\s*([^\]]+)\s*\](?:\s*#.*)?$/);
|
|
134
|
+
if (header) {
|
|
135
|
+
section = header[1].trim();
|
|
136
|
+
if (section === "mcp_servers.opvs" || section === 'mcp_servers."opvs"') {
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
if (/^mcp_servers\.opvs\./.test(line))
|
|
142
|
+
return true;
|
|
143
|
+
if (section === "mcp_servers" &&
|
|
144
|
+
/^(?:opvs|"opvs")\s*=/.test(line)) {
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return false;
|
|
149
|
+
}
|
|
150
|
+
/** Append Codex's OPVS MCP block without rewriting any existing TOML line. */
|
|
151
|
+
export function installCodexMCPEntry(target) {
|
|
152
|
+
const existing = existsSync(target) ? readFileSync(target, "utf8") : "";
|
|
153
|
+
if (hasCodexMCPServer(existing))
|
|
154
|
+
return { merged: false };
|
|
155
|
+
const block = '[mcp_servers.opvs]\ncommand = "npx"\nargs = ["-y", "@opvs-ai/mcp"]\n';
|
|
156
|
+
const separator = existing.length === 0
|
|
157
|
+
? ""
|
|
158
|
+
: existing.endsWith("\n")
|
|
159
|
+
? "\n"
|
|
160
|
+
: "\n\n";
|
|
161
|
+
if (!existsSync(dirname(target)))
|
|
162
|
+
mkdirSync(dirname(target), { recursive: true });
|
|
163
|
+
writeFileSync(target, existing + separator + block);
|
|
164
|
+
return { merged: true };
|
|
165
|
+
}
|
|
114
166
|
// ── daemon ──────────────────────────────────────────────────────────────
|
|
115
167
|
function getOpvsBin() {
|
|
116
168
|
// Resolve the real ``opvs`` binary path so the unit/plist is portable
|
|
@@ -207,8 +259,8 @@ export function registerInstallCommands(mail) {
|
|
|
207
259
|
break;
|
|
208
260
|
}
|
|
209
261
|
case "codex": {
|
|
210
|
-
target = opts.target ??
|
|
211
|
-
const { merged } =
|
|
262
|
+
target = opts.target ?? codexConfigPath(home);
|
|
263
|
+
const { merged } = installCodexMCPEntry(target);
|
|
212
264
|
result = { client, target, merged };
|
|
213
265
|
break;
|
|
214
266
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/mail.js
CHANGED
|
@@ -145,6 +145,44 @@ function printMessage(msg, opts) {
|
|
|
145
145
|
// =============================================================
|
|
146
146
|
export function registerMailCommands(program) {
|
|
147
147
|
const mail = program.command("mail").description("OPVS Protocol messaging");
|
|
148
|
+
mail
|
|
149
|
+
.command("setup")
|
|
150
|
+
.description("Set up this machine's shared mail store and run its first sync")
|
|
151
|
+
.option("--from <address>", "Set up this configured agent identity")
|
|
152
|
+
.option("-y, --yes", YES_HELP)
|
|
153
|
+
.action(async (opts) => {
|
|
154
|
+
const wsSlug = program.opts().workspace;
|
|
155
|
+
const cfg = getEffectiveConfig(wsSlug);
|
|
156
|
+
const setupOptions = {
|
|
157
|
+
workspaceSlug: cfg.workspace_slug,
|
|
158
|
+
from: opts.from,
|
|
159
|
+
};
|
|
160
|
+
const createSyncClient = (apiKey) => {
|
|
161
|
+
const client = createClient(wsSlug);
|
|
162
|
+
const authHeader = { "X-OPVS-API-Key": apiKey };
|
|
163
|
+
return {
|
|
164
|
+
get: (path, headers) => client.get(path, { ...authHeader, ...(headers ?? {}) }),
|
|
165
|
+
patch: (path, body, headers) => client.patch(path, body, { ...authHeader, ...(headers ?? {}) }),
|
|
166
|
+
};
|
|
167
|
+
};
|
|
168
|
+
const inspection = await mailstore.setupMailStore(setupOptions, {
|
|
169
|
+
createSyncClient,
|
|
170
|
+
});
|
|
171
|
+
if (inspection.status === "refused") {
|
|
172
|
+
console.error(`Error: ${inspection.message}${inspection.fix ? `\nFix: ${inspection.fix}` : ""}`);
|
|
173
|
+
process.exit(1);
|
|
174
|
+
}
|
|
175
|
+
// The plan is printed before the confirmation gate. Off a TTY the
|
|
176
|
+
// shared helper refuses unless --yes was explicit, and no setup write or
|
|
177
|
+
// sync has happened yet.
|
|
178
|
+
printJson(inspection);
|
|
179
|
+
await confirmOrExit(`Set up OPVS mail for ${inspection.address}?`, opts.yes, "Nothing has been written yet");
|
|
180
|
+
const result = await mailstore.setupMailStore({ ...setupOptions, confirm: true }, { createSyncClient });
|
|
181
|
+
printJson(result);
|
|
182
|
+
if (result.status === "refused" || result.status === "sync_failed") {
|
|
183
|
+
process.exit(1);
|
|
184
|
+
}
|
|
185
|
+
});
|
|
148
186
|
// ── server-facing: send / reply / inbox / read / resolve / claim ───
|
|
149
187
|
mail
|
|
150
188
|
.command("send <address> <message>")
|
|
@@ -497,6 +535,29 @@ export function registerMailCommands(program) {
|
|
|
497
535
|
process.exit(1);
|
|
498
536
|
}
|
|
499
537
|
});
|
|
538
|
+
mail
|
|
539
|
+
.command("contacts")
|
|
540
|
+
.description("List agent mail contacts in your own brand")
|
|
541
|
+
.option("--limit <n>", "Max results", "50")
|
|
542
|
+
.option("--offset <n>", "Rows to skip", "0")
|
|
543
|
+
.action(async (opts) => {
|
|
544
|
+
const wsSlug = program.opts().workspace;
|
|
545
|
+
const cfg = getEffectiveConfig(wsSlug);
|
|
546
|
+
try {
|
|
547
|
+
const client = createClient(wsSlug);
|
|
548
|
+
const url = buildUrl("/api/v1/opvs/contacts", { limit: opts.limit, offset: opts.offset }, cfg.format);
|
|
549
|
+
const resolved = resolveAgentIdentity(cfg.workspace_slug);
|
|
550
|
+
const res = resolved
|
|
551
|
+
? await client.get(url, { "X-OPVS-API-Key": resolved.identity.api_key })
|
|
552
|
+
: await client.get(url);
|
|
553
|
+
await printResponse(res);
|
|
554
|
+
}
|
|
555
|
+
catch (err) {
|
|
556
|
+
const e = err;
|
|
557
|
+
console.error(`Error: ${e.detail || "Failed to list contacts"}`);
|
|
558
|
+
process.exit(1);
|
|
559
|
+
}
|
|
560
|
+
});
|
|
500
561
|
mail
|
|
501
562
|
.command("register")
|
|
502
563
|
.description("Register a new OPVS agent address (auto-saves api_key to ~/.opvs/config.json)")
|