@opvs-ai/cli 0.6.3 → 0.7.3
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 +28 -0
- package/dist/commands/boards.js +44 -1
- package/dist/commands/boards.js.map +1 -1
- package/dist/commands/columns.js +12 -3
- package/dist/commands/columns.js.map +1 -1
- package/dist/commands/projects.d.ts +14 -0
- package/dist/commands/projects.js +222 -0
- package/dist/commands/projects.js.map +1 -0
- package/dist/commands/report.d.ts +10 -0
- package/dist/commands/report.js +54 -0
- package/dist/commands/report.js.map +1 -0
- package/dist/commands/tasks.js +100 -2
- package/dist/commands/tasks.js.map +1 -1
- package/dist/commands/tools.d.ts +23 -0
- package/dist/commands/tools.js +336 -0
- package/dist/commands/tools.js.map +1 -0
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -176,6 +176,34 @@ opvs auth revoke # Revoke token
|
|
|
176
176
|
opvs auth list # List agent tokens (admin)
|
|
177
177
|
```
|
|
178
178
|
|
|
179
|
+
### Tools (Marketplace skills)
|
|
180
|
+
|
|
181
|
+
Mirrors the 6 always-on MCP tools from the skills-meta plugin so terminal
|
|
182
|
+
users can drive the marketplace runtime without going through an agent
|
|
183
|
+
session. All operations are pinned to the workspace's current brand.
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
# Discover
|
|
187
|
+
opvs tools search "find restaurants in Aarhus" # Semantic registry search
|
|
188
|
+
opvs tools help @opvs-ai/agentboard # Full registry descriptor
|
|
189
|
+
opvs tools help @opvs-ai/agentboard --section methods # Just the methods
|
|
190
|
+
|
|
191
|
+
# Operate
|
|
192
|
+
opvs tools list # Installed packages on this brand
|
|
193
|
+
opvs tools install @opvs-ai/agentboard \
|
|
194
|
+
--grants '{"vendor.opvs-ai.agentboard.read":true}' # Install with entitlements
|
|
195
|
+
opvs tools uninstall @opvs-ai/agentboard # Soft-uninstall
|
|
196
|
+
|
|
197
|
+
# Invoke
|
|
198
|
+
opvs tools call @opvs-ai/agentboard list_tasks \
|
|
199
|
+
--args '{"board_id":"abc-123"}' # Forward through runtime proxy
|
|
200
|
+
opvs tools call agentboard list_tasks --args-file ./params.json
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
`opvs tools pin <skill>` is reserved for a CLI-facing pin endpoint that
|
|
204
|
+
ships in W2.1; until then it emits a stub error. For agent sessions, the
|
|
205
|
+
gateway plugin `skill_pin` tool is the canonical surface.
|
|
206
|
+
|
|
179
207
|
### Workspace
|
|
180
208
|
|
|
181
209
|
```bash
|
package/dist/commands/boards.js
CHANGED
|
@@ -51,6 +51,7 @@ export function registerBoardCommands(program) {
|
|
|
51
51
|
.requiredOption("-n, --name <name>", "Board name")
|
|
52
52
|
.option("-d, --description <desc>", "Board description")
|
|
53
53
|
.option("--visibility <vis>", "Visibility: public or private", "public")
|
|
54
|
+
.option("--board-type <type>", "Board type: tasks, emails, contacts, companies, deals, content_calendar, factory")
|
|
54
55
|
.action(async (opts) => {
|
|
55
56
|
const wsSlug = program.opts().workspace;
|
|
56
57
|
try {
|
|
@@ -60,6 +61,8 @@ export function registerBoardCommands(program) {
|
|
|
60
61
|
body.description = opts.description;
|
|
61
62
|
if (opts.visibility)
|
|
62
63
|
body.visibility = opts.visibility;
|
|
64
|
+
if (opts.boardType)
|
|
65
|
+
body.board_type = opts.boardType;
|
|
63
66
|
const res = await client.post("/api/v1/board/boards", body);
|
|
64
67
|
const data = await res.json();
|
|
65
68
|
printJson(data);
|
|
@@ -76,6 +79,7 @@ export function registerBoardCommands(program) {
|
|
|
76
79
|
.option("-n, --name <name>", "New name")
|
|
77
80
|
.option("-d, --description <desc>", "New description")
|
|
78
81
|
.option("--visibility <vis>", "Visibility: public or private")
|
|
82
|
+
.option("--board-type <type>", "Switch board type (tasks↔factory only; other values are rejected)")
|
|
79
83
|
.action(async (id, opts) => {
|
|
80
84
|
const wsSlug = program.opts().workspace;
|
|
81
85
|
try {
|
|
@@ -87,8 +91,10 @@ export function registerBoardCommands(program) {
|
|
|
87
91
|
body.description = opts.description;
|
|
88
92
|
if (opts.visibility)
|
|
89
93
|
body.visibility = opts.visibility;
|
|
94
|
+
if (opts.boardType)
|
|
95
|
+
body.board_type = opts.boardType;
|
|
90
96
|
if (Object.keys(body).length === 0) {
|
|
91
|
-
console.error("Nothing to update. Provide --name, --description, or --
|
|
97
|
+
console.error("Nothing to update. Provide --name, --description, --visibility, or --board-type");
|
|
92
98
|
process.exit(1);
|
|
93
99
|
}
|
|
94
100
|
const res = await client.patch(`/api/v1/board/boards/${id}`, body);
|
|
@@ -117,5 +123,42 @@ export function registerBoardCommands(program) {
|
|
|
117
123
|
process.exit(1);
|
|
118
124
|
}
|
|
119
125
|
});
|
|
126
|
+
// ── Export (A.15) ──────────────────────────────────────────────
|
|
127
|
+
// Read-only board → Markdown snapshot. Output is deterministic — same
|
|
128
|
+
// board state → same bytes — so it's safe to commit and diff.
|
|
129
|
+
// ``> board.md`` to capture; re-run to regen on demand. The
|
|
130
|
+
// companion RabbitMQ subscriber in api-gateway dispatches task.*
|
|
131
|
+
// events to outbound webhooks so external services (incl. the
|
|
132
|
+
// future GitHub PR auto-creator) can react to changes.
|
|
133
|
+
boards
|
|
134
|
+
.command("export-markdown <board_id>")
|
|
135
|
+
.description("Export a board as read-only Markdown to stdout (idempotent regen).")
|
|
136
|
+
.option("--detail <level>", "Render level: summary (compact table) | standard (nested plan doc, default) | full (+ links, attachments, custom fields, OPVS metadata)")
|
|
137
|
+
.option("--columns <list>", "Comma-separated column names or ids to include (default: all). Unknown token → 400 with the valid column list.")
|
|
138
|
+
.action(async (board_id, opts) => {
|
|
139
|
+
const wsSlug = program.opts().workspace;
|
|
140
|
+
try {
|
|
141
|
+
const client = createClient(wsSlug);
|
|
142
|
+
// Topic 1 / S1.3: forward `detail` + `columns` to the export
|
|
143
|
+
// endpoint (S1.1 added them; S1.2 made the gateway proxy relay the
|
|
144
|
+
// full query string). `format=md` stays fixed — these flags are
|
|
145
|
+
// MD-only and ignored for csv/json.
|
|
146
|
+
const params = new URLSearchParams({ format: "md" });
|
|
147
|
+
if (opts.detail)
|
|
148
|
+
params.set("detail", opts.detail);
|
|
149
|
+
if (opts.columns)
|
|
150
|
+
params.set("columns", opts.columns);
|
|
151
|
+
const url = `/api/v1/board/boards/${board_id}/export?${params.toString()}`;
|
|
152
|
+
const res = await client.get(url);
|
|
153
|
+
// The endpoint returns raw markdown text — emit verbatim.
|
|
154
|
+
const text = await res.text();
|
|
155
|
+
process.stdout.write(text);
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
const e = err;
|
|
159
|
+
console.error(`Error: ${e.detail || "Failed to export board"}`);
|
|
160
|
+
process.exit(1);
|
|
161
|
+
}
|
|
162
|
+
});
|
|
120
163
|
}
|
|
121
164
|
//# sourceMappingURL=boards.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boards.js","sourceRoot":"","sources":["../../src/commands/boards.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"boards.js","sourceRoot":"","sources":["../../src/commands/boards.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/columns.js
CHANGED
|
@@ -27,6 +27,7 @@ export function registerColumnCommands(program) {
|
|
|
27
27
|
.command("create <boardId>")
|
|
28
28
|
.description("Create a new column")
|
|
29
29
|
.requiredOption("--name <name>", "Column name")
|
|
30
|
+
.option("--slug <slug>", "URL-safe slug (auto-derived from --name if omitted)")
|
|
30
31
|
.option("--color <color>", "Column color (hex)")
|
|
31
32
|
.option("--wip-limit <n>", "Work-in-progress limit")
|
|
32
33
|
.option("--position <n>", "Position (0-based)")
|
|
@@ -34,7 +35,13 @@ export function registerColumnCommands(program) {
|
|
|
34
35
|
const wsSlug = program.opts().workspace;
|
|
35
36
|
try {
|
|
36
37
|
const client = createClient(wsSlug);
|
|
37
|
-
const
|
|
38
|
+
const slug = opts.slug ||
|
|
39
|
+
opts.name
|
|
40
|
+
.toLowerCase()
|
|
41
|
+
.trim()
|
|
42
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
43
|
+
.replace(/^-+|-+$/g, "");
|
|
44
|
+
const body = { name: opts.name, slug };
|
|
38
45
|
if (opts.color)
|
|
39
46
|
body.color = opts.color;
|
|
40
47
|
if (opts.wipLimit)
|
|
@@ -90,8 +97,10 @@ export function registerColumnCommands(program) {
|
|
|
90
97
|
const wsSlug = program.opts().workspace;
|
|
91
98
|
try {
|
|
92
99
|
const client = createClient(wsSlug);
|
|
93
|
-
const
|
|
94
|
-
|
|
100
|
+
const columns = opts.order
|
|
101
|
+
.split(",")
|
|
102
|
+
.map((id, position) => ({ id: id.trim(), position }));
|
|
103
|
+
const res = await client.post(`/api/v1/board/boards/${boardId}/columns/reorder`, { columns });
|
|
95
104
|
const data = await res.json();
|
|
96
105
|
printJson(data);
|
|
97
106
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"columns.js","sourceRoot":"","sources":["../../src/commands/columns.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEtE,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;IAElF,OAAO;SACJ,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,EAAE;QAChC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC;QACxC,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,GAAG,GAAG,QAAQ,CAAC,wBAAwB,OAAO,UAAU,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YACvF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,GAA0B,CAAC;YACrC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,IAAI,wBAAwB,EAAE,CAAC,CAAC;YAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,qBAAqB,CAAC;SAClC,cAAc,CAAC,eAAe,EAAE,aAAa,CAAC;SAC9C,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;SAC/C,MAAM,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;SACnD,MAAM,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;SAC9C,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,IAAI,EAAE,EAAE;QACtC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC;QACxC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,IAAI,GAA4B,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"columns.js","sourceRoot":"","sources":["../../src/commands/columns.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* opvs projects — Project (BoardGroup kind="project") lifecycle management.
|
|
3
|
+
*
|
|
4
|
+
* A Project is a named container that groups many boards (many-to-many), with
|
|
5
|
+
* its own lifecycle: a status (active | on_hold | completed), an orthogonal
|
|
6
|
+
* archive flag, and a free-text closing handoff captured on completion. See
|
|
7
|
+
* the agentboard skill `references/projects.md` for the full mental model.
|
|
8
|
+
*
|
|
9
|
+
* Every command goes through the gateway proxy at
|
|
10
|
+
* `/api/v1/board/board-groups/projects*` (Topic 2, S2.2). Brand is pinned
|
|
11
|
+
* server-side from the PAT — never passed here.
|
|
12
|
+
*/
|
|
13
|
+
import { Command } from "commander";
|
|
14
|
+
export declare function registerProjectCommands(program: Command): void;
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* opvs projects — Project (BoardGroup kind="project") lifecycle management.
|
|
3
|
+
*
|
|
4
|
+
* A Project is a named container that groups many boards (many-to-many), with
|
|
5
|
+
* its own lifecycle: a status (active | on_hold | completed), an orthogonal
|
|
6
|
+
* archive flag, and a free-text closing handoff captured on completion. See
|
|
7
|
+
* the agentboard skill `references/projects.md` for the full mental model.
|
|
8
|
+
*
|
|
9
|
+
* Every command goes through the gateway proxy at
|
|
10
|
+
* `/api/v1/board/board-groups/projects*` (Topic 2, S2.2). Brand is pinned
|
|
11
|
+
* server-side from the PAT — never passed here.
|
|
12
|
+
*/
|
|
13
|
+
import { getEffectiveConfig, createClient } from "@opvs-ai/core";
|
|
14
|
+
import { buildUrl, printResponse, printJson } from "../lib/format.js";
|
|
15
|
+
const BASE = "/api/v1/board/board-groups/projects";
|
|
16
|
+
export function registerProjectCommands(program) {
|
|
17
|
+
const projects = program
|
|
18
|
+
.command("projects")
|
|
19
|
+
.description("Project lifecycle (group many boards under one container)");
|
|
20
|
+
// ── list ───────────────────────────────────────────────────────────
|
|
21
|
+
projects
|
|
22
|
+
.command("list")
|
|
23
|
+
.description("List projects with member-board + task roll-ups")
|
|
24
|
+
.option("--archived", "Include archived projects (hidden by default)")
|
|
25
|
+
.action(async (opts) => {
|
|
26
|
+
const wsSlug = program.opts().workspace;
|
|
27
|
+
const cfg = getEffectiveConfig(wsSlug);
|
|
28
|
+
try {
|
|
29
|
+
const client = createClient(wsSlug);
|
|
30
|
+
const params = {};
|
|
31
|
+
if (opts.archived)
|
|
32
|
+
params.include_archived = "true";
|
|
33
|
+
const url = buildUrl(BASE, params, cfg.format);
|
|
34
|
+
const res = await client.get(url);
|
|
35
|
+
await printResponse(res);
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
const e = err;
|
|
39
|
+
console.error(`Error: ${e.detail || "Failed to list projects"}`);
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
// ── get ────────────────────────────────────────────────────────────
|
|
44
|
+
projects
|
|
45
|
+
.command("get <id>")
|
|
46
|
+
.description("Get a project with its member boards + roll-up")
|
|
47
|
+
.action(async (id) => {
|
|
48
|
+
const wsSlug = program.opts().workspace;
|
|
49
|
+
const cfg = getEffectiveConfig(wsSlug);
|
|
50
|
+
try {
|
|
51
|
+
const client = createClient(wsSlug);
|
|
52
|
+
const url = buildUrl(`${BASE}/${id}`, undefined, cfg.format);
|
|
53
|
+
const res = await client.get(url);
|
|
54
|
+
await printResponse(res);
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
const e = err;
|
|
58
|
+
console.error(`Error: ${e.detail || "Failed to get project"}`);
|
|
59
|
+
process.exit(1);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
// ── create ─────────────────────────────────────────────────────────
|
|
63
|
+
// A project provisions NO boards — boards are attached later (or via
|
|
64
|
+
// repeated --board on create). Brand is injected by the proxy.
|
|
65
|
+
projects
|
|
66
|
+
.command("create")
|
|
67
|
+
.description("Create an empty project container")
|
|
68
|
+
.requiredOption("-n, --name <name>", "Project name")
|
|
69
|
+
.option("-b, --board <id>", "Initial member board id (repeatable)", (val, acc) => {
|
|
70
|
+
acc.push(val);
|
|
71
|
+
return acc;
|
|
72
|
+
}, [])
|
|
73
|
+
.action(async (opts) => {
|
|
74
|
+
const wsSlug = program.opts().workspace;
|
|
75
|
+
try {
|
|
76
|
+
const client = createClient(wsSlug);
|
|
77
|
+
const body = { name: opts.name };
|
|
78
|
+
if (opts.board && opts.board.length > 0)
|
|
79
|
+
body.board_ids = opts.board;
|
|
80
|
+
const res = await client.post(BASE, body);
|
|
81
|
+
const data = await res.json();
|
|
82
|
+
printJson(data);
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
const e = err;
|
|
86
|
+
console.error(`Error: ${e.detail || "Failed to create project"}`);
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
// ── update (name / settings) ───────────────────────────────────────
|
|
91
|
+
projects
|
|
92
|
+
.command("update <id>")
|
|
93
|
+
.description("Update a project's name")
|
|
94
|
+
.option("-n, --name <name>", "New name")
|
|
95
|
+
.action(async (id, opts) => {
|
|
96
|
+
const wsSlug = program.opts().workspace;
|
|
97
|
+
try {
|
|
98
|
+
const client = createClient(wsSlug);
|
|
99
|
+
const body = {};
|
|
100
|
+
if (opts.name)
|
|
101
|
+
body.name = opts.name;
|
|
102
|
+
if (Object.keys(body).length === 0) {
|
|
103
|
+
console.error("Nothing to update. Provide --name");
|
|
104
|
+
process.exit(1);
|
|
105
|
+
}
|
|
106
|
+
const res = await client.patch(`${BASE}/${id}`, body);
|
|
107
|
+
const data = await res.json();
|
|
108
|
+
printJson(data);
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
const e = err;
|
|
112
|
+
console.error(`Error: ${e.detail || "Failed to update project"}`);
|
|
113
|
+
process.exit(1);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
// ── set-status (manual lifecycle transition) ───────────────────────
|
|
117
|
+
// status ∈ active | on_hold | completed. On `completed` an optional
|
|
118
|
+
// --handoff free-text is stored in settings.closing_handoff.
|
|
119
|
+
projects
|
|
120
|
+
.command("set-status <id> <status>")
|
|
121
|
+
.description("Set lifecycle status: active | on_hold | completed")
|
|
122
|
+
.option("--handoff <text>", "Closing handoff text (captured when status=completed)")
|
|
123
|
+
.action(async (id, status, opts) => {
|
|
124
|
+
const wsSlug = program.opts().workspace;
|
|
125
|
+
try {
|
|
126
|
+
const client = createClient(wsSlug);
|
|
127
|
+
const body = { status };
|
|
128
|
+
if (opts.handoff)
|
|
129
|
+
body.closing_handoff = opts.handoff;
|
|
130
|
+
const res = await client.patch(`${BASE}/${id}/status`, body);
|
|
131
|
+
const data = await res.json();
|
|
132
|
+
printJson(data);
|
|
133
|
+
}
|
|
134
|
+
catch (err) {
|
|
135
|
+
const e = err;
|
|
136
|
+
console.error(`Error: ${e.detail || "Failed to set project status"}`);
|
|
137
|
+
process.exit(1);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
// ── archive / unarchive (container-only, orthogonal to status) ─────
|
|
141
|
+
projects
|
|
142
|
+
.command("archive <id>")
|
|
143
|
+
.description("Archive a project (hide from default list, still reachable)")
|
|
144
|
+
.option("--undo", "Unarchive instead (set is_archived=false)")
|
|
145
|
+
.action(async (id, opts) => {
|
|
146
|
+
const wsSlug = program.opts().workspace;
|
|
147
|
+
try {
|
|
148
|
+
const client = createClient(wsSlug);
|
|
149
|
+
const res = await client.post(`${BASE}/${id}/archive`, {
|
|
150
|
+
is_archived: !opts.undo,
|
|
151
|
+
});
|
|
152
|
+
const data = await res.json();
|
|
153
|
+
printJson(data);
|
|
154
|
+
}
|
|
155
|
+
catch (err) {
|
|
156
|
+
const e = err;
|
|
157
|
+
console.error(`Error: ${e.detail || "Failed to archive project"}`);
|
|
158
|
+
process.exit(1);
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
// ── add-board (many-to-many membership) ────────────────────────────
|
|
162
|
+
projects
|
|
163
|
+
.command("add-board <id> <board_id>")
|
|
164
|
+
.description("Add a board to a project (a board can be in many projects)")
|
|
165
|
+
.action(async (id, boardId) => {
|
|
166
|
+
const wsSlug = program.opts().workspace;
|
|
167
|
+
try {
|
|
168
|
+
const client = createClient(wsSlug);
|
|
169
|
+
const res = await client.post(`${BASE}/${id}/boards`, {
|
|
170
|
+
board_id: boardId,
|
|
171
|
+
});
|
|
172
|
+
const data = await res.json();
|
|
173
|
+
printJson(data);
|
|
174
|
+
}
|
|
175
|
+
catch (err) {
|
|
176
|
+
const e = err;
|
|
177
|
+
console.error(`Error: ${e.detail || "Failed to add board to project"}`);
|
|
178
|
+
process.exit(1);
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
// ── remove-board (membership only — board survives, O-P1) ──────────
|
|
182
|
+
projects
|
|
183
|
+
.command("remove-board <id> <board_id>")
|
|
184
|
+
.description("Remove a board from a project (the board itself stays live)")
|
|
185
|
+
.action(async (id, boardId) => {
|
|
186
|
+
const wsSlug = program.opts().workspace;
|
|
187
|
+
try {
|
|
188
|
+
const client = createClient(wsSlug);
|
|
189
|
+
const res = await client.delete(`${BASE}/${id}/boards/${boardId}`);
|
|
190
|
+
await printResponse(res, true);
|
|
191
|
+
}
|
|
192
|
+
catch (err) {
|
|
193
|
+
const e = err;
|
|
194
|
+
console.error(`Error: ${e.detail || "Failed to remove board from project"}`);
|
|
195
|
+
process.exit(1);
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
// ── tasks (scoped all-tasks view across member boards) ─────────────
|
|
199
|
+
projects
|
|
200
|
+
.command("tasks <id>")
|
|
201
|
+
.description("Scoped all-tasks view across the project's member boards")
|
|
202
|
+
.option("--include-done", "Include completed tasks (hidden by default)")
|
|
203
|
+
.action(async (id, opts) => {
|
|
204
|
+
const wsSlug = program.opts().workspace;
|
|
205
|
+
const cfg = getEffectiveConfig(wsSlug);
|
|
206
|
+
try {
|
|
207
|
+
const client = createClient(wsSlug);
|
|
208
|
+
const params = {};
|
|
209
|
+
if (opts.includeDone)
|
|
210
|
+
params.include_done = "true";
|
|
211
|
+
const url = buildUrl(`${BASE}/${id}/tasks`, params, cfg.format);
|
|
212
|
+
const res = await client.get(url);
|
|
213
|
+
await printResponse(res);
|
|
214
|
+
}
|
|
215
|
+
catch (err) {
|
|
216
|
+
const e = err;
|
|
217
|
+
console.error(`Error: ${e.detail || "Failed to get project tasks"}`);
|
|
218
|
+
process.exit(1);
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=projects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/commands/projects.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* opvs report — file an issue or feedback against a marketplace skill/package.
|
|
3
|
+
*
|
|
4
|
+
* The ticket lands on the vendor's support board (declared in the package
|
|
5
|
+
* manifest's `support` block) via the same Board-Inbox channel the embeddable
|
|
6
|
+
* feedback widget uses. Reporter identity comes from your authenticated PAT —
|
|
7
|
+
* the server verifies it, so the vendor sees who filed the report.
|
|
8
|
+
*/
|
|
9
|
+
import { Command } from "commander";
|
|
10
|
+
export declare function registerReportCommands(program: Command): void;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* opvs report — file an issue or feedback against a marketplace skill/package.
|
|
3
|
+
*
|
|
4
|
+
* The ticket lands on the vendor's support board (declared in the package
|
|
5
|
+
* manifest's `support` block) via the same Board-Inbox channel the embeddable
|
|
6
|
+
* feedback widget uses. Reporter identity comes from your authenticated PAT —
|
|
7
|
+
* the server verifies it, so the vendor sees who filed the report.
|
|
8
|
+
*/
|
|
9
|
+
import { readFileSync } from "node:fs";
|
|
10
|
+
import { createClient } from "@opvs-ai/core";
|
|
11
|
+
import { printJson } from "../lib/format.js";
|
|
12
|
+
export function registerReportCommands(program) {
|
|
13
|
+
program
|
|
14
|
+
.command("report")
|
|
15
|
+
.description("File an issue or feedback against a marketplace skill")
|
|
16
|
+
.requiredOption("--skill <vendor/name>", "Published package, e.g. opvs-ai/agentboard")
|
|
17
|
+
.option("-t, --title <title>", "Short summary of the issue")
|
|
18
|
+
.option("-b, --body <text>", "Details of the issue")
|
|
19
|
+
.option("-f, --file <path>", "Read the body from a file instead of --body")
|
|
20
|
+
.option("-p, --priority <level>", "low | medium | high | critical", "medium")
|
|
21
|
+
.action(async (opts) => {
|
|
22
|
+
const wsSlug = program.opts().workspace;
|
|
23
|
+
if (!opts.title) {
|
|
24
|
+
console.error("Provide a --title for the report");
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
let body = opts.body;
|
|
28
|
+
if (opts.file) {
|
|
29
|
+
body = readFileSync(opts.file, "utf-8");
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
const client = createClient(wsSlug);
|
|
33
|
+
const res = await client.post(`/api/v1/marketplace/report`, {
|
|
34
|
+
skill: opts.skill,
|
|
35
|
+
title: opts.title,
|
|
36
|
+
body: body ?? null,
|
|
37
|
+
priority: opts.priority,
|
|
38
|
+
});
|
|
39
|
+
const data = await res.json();
|
|
40
|
+
if (data && data.success) {
|
|
41
|
+
console.log(`✓ Report filed for ${data.skill} — reference ${data.reference}`);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
printJson(data);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
const e = err;
|
|
49
|
+
console.error(`Error: ${e.detail || "Failed to file report"}`);
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,uDAAuD,CAAC;SACpE,cAAc,CACb,uBAAuB,EACvB,4CAA4C,CAC7C;SACA,MAAM,CAAC,qBAAqB,EAAE,4BAA4B,CAAC;SAC3D,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC;SACnD,MAAM,CAAC,mBAAmB,EAAE,6CAA6C,CAAC;SAC1E,MAAM,CAAC,wBAAwB,EAAE,gCAAgC,EAAE,QAAQ,CAAC;SAC5E,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC;QACxC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;YAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,IAAI,GAAuB,IAAI,CAAC,IAAI,CAAC;QACzC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YACpC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE;gBAC1D,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,IAAI,IAAI;gBAClB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CACT,sBAAsB,IAAI,CAAC,KAAK,gBAAgB,IAAI,CAAC,SAAS,EAAE,CACjE,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,GAA0B,CAAC;YACrC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,IAAI,uBAAuB,EAAE,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/commands/tasks.js
CHANGED
|
@@ -115,7 +115,7 @@ export function registerTaskCommands(program) {
|
|
|
115
115
|
tasks
|
|
116
116
|
.command("update <id>")
|
|
117
117
|
.description("Update a task (status, priority, result)")
|
|
118
|
-
.option("--status <status>", "Status: pending, assigned, in_progress, review, done, failed")
|
|
118
|
+
.option("--status <status>", "Status: pending, assigned, in_progress, blocked, review, done, cancelled, failed (pending can only go to assigned/in_progress/cancelled)")
|
|
119
119
|
.option("--priority <priority>", "Priority: low, medium, high, critical")
|
|
120
120
|
.option("--title <title>", "New title")
|
|
121
121
|
.option("-d, --description <desc>", "New description (markdown)")
|
|
@@ -124,6 +124,11 @@ export function registerTaskCommands(program) {
|
|
|
124
124
|
.option("--assign <agentId>", "Agent UUID to assign, or 'self' to assign to yourself")
|
|
125
125
|
.option("--labels <tags>", "Comma-separated labels (e.g. 'done,v2')")
|
|
126
126
|
.option("--due <date>", "Due date (YYYY-MM-DD)")
|
|
127
|
+
.option("--instructions <text>", "Revise the agent instruction brief (inline)")
|
|
128
|
+
.option("--instructions-file <path>", "Revise the agent instruction brief from a file (for large briefs)")
|
|
129
|
+
.option("--context <json>", "Agent context as a JSON object string")
|
|
130
|
+
.option("--parent <taskId>", "Re-parent under a different task UUID")
|
|
131
|
+
.option("--depends-on <ids>", "Comma-separated task UUIDs this task depends on (replaces the set)")
|
|
127
132
|
.action(async (id, opts) => {
|
|
128
133
|
const wsSlug = program.opts().workspace;
|
|
129
134
|
try {
|
|
@@ -148,8 +153,25 @@ export function registerTaskCommands(program) {
|
|
|
148
153
|
body.labels = opts.labels.split(",").map((s) => s.trim());
|
|
149
154
|
if (opts.due)
|
|
150
155
|
body.due_date = opts.due;
|
|
156
|
+
if (opts.instructions)
|
|
157
|
+
body.agent_instructions = opts.instructions;
|
|
158
|
+
if (opts.instructionsFile)
|
|
159
|
+
body.agent_instructions = readFileSync(opts.instructionsFile, "utf-8");
|
|
160
|
+
if (opts.context) {
|
|
161
|
+
try {
|
|
162
|
+
body.agent_context = JSON.parse(opts.context);
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
console.error("Error: --context must be a valid JSON object string");
|
|
166
|
+
process.exit(1);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
if (opts.parent)
|
|
170
|
+
body.parent_task_id = opts.parent;
|
|
171
|
+
if (opts.dependsOn)
|
|
172
|
+
body.depends_on = opts.dependsOn.split(",").map((s) => s.trim());
|
|
151
173
|
if (Object.keys(body).length === 0) {
|
|
152
|
-
console.error("Nothing to update. Provide --status, --priority, --title, --description, --result, --result-file, --assign, --labels, or --
|
|
174
|
+
console.error("Nothing to update. Provide --status, --priority, --title, --description, --result, --result-file, --assign, --labels, --due, --instructions, --instructions-file, --context, --parent, or --depends-on");
|
|
153
175
|
process.exit(1);
|
|
154
176
|
}
|
|
155
177
|
const res = await client.patch(`/api/v1/board/tasks/${id}`, body);
|
|
@@ -244,6 +266,33 @@ export function registerTaskCommands(program) {
|
|
|
244
266
|
process.exit(1);
|
|
245
267
|
}
|
|
246
268
|
});
|
|
269
|
+
tasks
|
|
270
|
+
.command("tree <id>")
|
|
271
|
+
.description("Walk the task_links graph rooted at a task (A.9)")
|
|
272
|
+
.option("--direction <dir>", "upstream (what this task depends on) | downstream (what depends on this)", "upstream")
|
|
273
|
+
.option("--depth <n>", "Max graph depth (1-10)", "3")
|
|
274
|
+
.option("--include-related", "Also follow link_type='related' edges")
|
|
275
|
+
.action(async (id, opts) => {
|
|
276
|
+
const wsSlug = program.opts().workspace;
|
|
277
|
+
const cfg = getEffectiveConfig(wsSlug);
|
|
278
|
+
try {
|
|
279
|
+
const client = createClient(wsSlug);
|
|
280
|
+
const params = {
|
|
281
|
+
direction: opts.direction,
|
|
282
|
+
depth: opts.depth,
|
|
283
|
+
};
|
|
284
|
+
if (opts.includeRelated)
|
|
285
|
+
params.include_related = "true";
|
|
286
|
+
const url = buildUrl(`/api/v1/board/tasks/${id}/dependency-tree`, params, cfg.format);
|
|
287
|
+
const res = await client.get(url);
|
|
288
|
+
await printResponse(res);
|
|
289
|
+
}
|
|
290
|
+
catch (err) {
|
|
291
|
+
const e = err;
|
|
292
|
+
console.error(`Error: ${e.detail || "Failed to load dependency tree"}`);
|
|
293
|
+
process.exit(1);
|
|
294
|
+
}
|
|
295
|
+
});
|
|
247
296
|
tasks
|
|
248
297
|
.command("batch-get")
|
|
249
298
|
.description("Get multiple tasks by IDs in one call (max 50)")
|
|
@@ -264,5 +313,54 @@ export function registerTaskCommands(program) {
|
|
|
264
313
|
process.exit(1);
|
|
265
314
|
}
|
|
266
315
|
});
|
|
316
|
+
// ── Bulk update (A.7) ──────────────────────────────────────────
|
|
317
|
+
tasks
|
|
318
|
+
.command("bulk-update")
|
|
319
|
+
.description("Apply a patch to every task matching a filter (rate-limited 60/min/tenant).")
|
|
320
|
+
.requiredOption("--board <id>", "Board UUID")
|
|
321
|
+
.requiredOption("--filter <json>", 'JSON filter (one criterion required), e.g. \'{"status":"pending"}\' or \'{"labels":["bug"]}\'')
|
|
322
|
+
.requiredOption("--patch <json>", 'JSON patch in TaskUpdate shape, e.g. \'{"priority":"high"}\'')
|
|
323
|
+
.option("--dry-run", "Return the list of matched task IDs without applying the patch")
|
|
324
|
+
.option("--page <n>", "Pagination page (default 1)", "1")
|
|
325
|
+
.option("--per-page <n>", "Page size (max 500, default 100)", "100")
|
|
326
|
+
.action(async (opts) => {
|
|
327
|
+
const wsSlug = program.opts().workspace;
|
|
328
|
+
let filterObj;
|
|
329
|
+
let patchObj;
|
|
330
|
+
try {
|
|
331
|
+
filterObj = JSON.parse(opts.filter);
|
|
332
|
+
}
|
|
333
|
+
catch (e) {
|
|
334
|
+
console.error(`Error: --filter is not valid JSON: ${e.message}`);
|
|
335
|
+
process.exit(1);
|
|
336
|
+
}
|
|
337
|
+
try {
|
|
338
|
+
patchObj = JSON.parse(opts.patch);
|
|
339
|
+
}
|
|
340
|
+
catch (e) {
|
|
341
|
+
console.error(`Error: --patch is not valid JSON: ${e.message}`);
|
|
342
|
+
process.exit(1);
|
|
343
|
+
}
|
|
344
|
+
try {
|
|
345
|
+
const client = createClient(wsSlug);
|
|
346
|
+
const body = {
|
|
347
|
+
filter: filterObj,
|
|
348
|
+
patch: patchObj,
|
|
349
|
+
dry_run: Boolean(opts.dryRun),
|
|
350
|
+
};
|
|
351
|
+
const params = {
|
|
352
|
+
page: String(opts.page),
|
|
353
|
+
per_page: String(opts.perPage),
|
|
354
|
+
};
|
|
355
|
+
const url = buildUrl(`/api/v1/board/boards/${opts.board}/tasks/bulk-update`, params);
|
|
356
|
+
const res = await client.post(url, body);
|
|
357
|
+
printJson(res);
|
|
358
|
+
}
|
|
359
|
+
catch (err) {
|
|
360
|
+
const e = err;
|
|
361
|
+
console.error(`Error: ${e.detail || "Failed to bulk update tasks"}`);
|
|
362
|
+
process.exit(1);
|
|
363
|
+
}
|
|
364
|
+
});
|
|
267
365
|
}
|
|
268
366
|
//# sourceMappingURL=tasks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/commands/tasks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* opvs tools — Marketplace skill discovery & invocation from the CLI.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the 6 always-on MCP tools (skill_search / skill_describe /
|
|
5
|
+
* skill_call / marketplace_list_installed / marketplace install / uninstall)
|
|
6
|
+
* so terminal users can drive the marketplace runtime without going through
|
|
7
|
+
* an agent session. The skills-meta plugin (apps/spideragent/packages/shared/
|
|
8
|
+
* src/plugins/skills-meta/index.ts) is the LLM-facing counterpart.
|
|
9
|
+
*
|
|
10
|
+
* Auth: uses PAT bearer + X-Brand-ID auto-attached by @opvs-ai/core. Every
|
|
11
|
+
* subcommand operates against the workspace's pinned brand.
|
|
12
|
+
*
|
|
13
|
+
* Subcommands:
|
|
14
|
+
* tools search <query> → GET /api/v1/registry/search
|
|
15
|
+
* tools help|describe <skill> → GET /api/v1/registry/packages/{vendor}/{name}
|
|
16
|
+
* tools list → GET /api/v1/marketplace/installed
|
|
17
|
+
* tools call <skill> <method> → POST /api/v1/marketplace/runtime/{install_id}/{skill}/{method}
|
|
18
|
+
* tools install <vendor/name> → POST /api/v1/marketplace/packages/{id}/install
|
|
19
|
+
* tools uninstall <vendor/name> → DELETE /api/v1/marketplace/installed/{id}
|
|
20
|
+
* tools pin <skill> → not yet wired server-side (W2.1) — stubbed with a clear message
|
|
21
|
+
*/
|
|
22
|
+
import { Command } from "commander";
|
|
23
|
+
export declare function registerToolsCommands(program: Command): void;
|
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* opvs tools — Marketplace skill discovery & invocation from the CLI.
|
|
3
|
+
*
|
|
4
|
+
* Mirrors the 6 always-on MCP tools (skill_search / skill_describe /
|
|
5
|
+
* skill_call / marketplace_list_installed / marketplace install / uninstall)
|
|
6
|
+
* so terminal users can drive the marketplace runtime without going through
|
|
7
|
+
* an agent session. The skills-meta plugin (apps/spideragent/packages/shared/
|
|
8
|
+
* src/plugins/skills-meta/index.ts) is the LLM-facing counterpart.
|
|
9
|
+
*
|
|
10
|
+
* Auth: uses PAT bearer + X-Brand-ID auto-attached by @opvs-ai/core. Every
|
|
11
|
+
* subcommand operates against the workspace's pinned brand.
|
|
12
|
+
*
|
|
13
|
+
* Subcommands:
|
|
14
|
+
* tools search <query> → GET /api/v1/registry/search
|
|
15
|
+
* tools help|describe <skill> → GET /api/v1/registry/packages/{vendor}/{name}
|
|
16
|
+
* tools list → GET /api/v1/marketplace/installed
|
|
17
|
+
* tools call <skill> <method> → POST /api/v1/marketplace/runtime/{install_id}/{skill}/{method}
|
|
18
|
+
* tools install <vendor/name> → POST /api/v1/marketplace/packages/{id}/install
|
|
19
|
+
* tools uninstall <vendor/name> → DELETE /api/v1/marketplace/installed/{id}
|
|
20
|
+
* tools pin <skill> → not yet wired server-side (W2.1) — stubbed with a clear message
|
|
21
|
+
*/
|
|
22
|
+
import { readFileSync } from "node:fs";
|
|
23
|
+
import { createClient } from "@opvs-ai/core";
|
|
24
|
+
import { printResponse, printJson } from "../lib/format.js";
|
|
25
|
+
// ── Helpers ────────────────────────────────────────────────────────────────
|
|
26
|
+
/** Accept "@vendor/name", "vendor/name", or bare "name". Vendor preserves
|
|
27
|
+
* the canonical `@` prefix used by the registry (W1.14.B). */
|
|
28
|
+
function parseSkillRef(ref) {
|
|
29
|
+
const cleaned = ref.replace(/^@/, "");
|
|
30
|
+
if (cleaned.includes("/")) {
|
|
31
|
+
const [vendor, ...rest] = cleaned.split("/");
|
|
32
|
+
const name = rest.join("/");
|
|
33
|
+
return { vendor: `@${vendor}`, name, full: `@${vendor}/${name}` };
|
|
34
|
+
}
|
|
35
|
+
// Bare name — defer vendor resolution to the install list.
|
|
36
|
+
return { vendor: "", name: cleaned, full: cleaned };
|
|
37
|
+
}
|
|
38
|
+
/** Pretty-print an APIError. The core api.ts already collapses array `detail`
|
|
39
|
+
* into a string per LEARNINGS #6 — we just guard against undefined. */
|
|
40
|
+
function errMsg(err, fallback) {
|
|
41
|
+
const e = err;
|
|
42
|
+
if (typeof e.detail === "string" && e.detail.length > 0)
|
|
43
|
+
return e.detail;
|
|
44
|
+
if (Array.isArray(e.detail)) {
|
|
45
|
+
return e.detail
|
|
46
|
+
.map((d) => (typeof d === "object" && d !== null
|
|
47
|
+
? (d.msg ?? JSON.stringify(d))
|
|
48
|
+
: String(d)))
|
|
49
|
+
.join("; ");
|
|
50
|
+
}
|
|
51
|
+
if (e.detail && typeof e.detail === "object") {
|
|
52
|
+
return JSON.stringify(e.detail);
|
|
53
|
+
}
|
|
54
|
+
return fallback;
|
|
55
|
+
}
|
|
56
|
+
/** Build a query string from a flat record of params, skipping undefined. */
|
|
57
|
+
function qs(params) {
|
|
58
|
+
const u = new URLSearchParams();
|
|
59
|
+
for (const [k, v] of Object.entries(params)) {
|
|
60
|
+
if (v !== undefined && v !== "")
|
|
61
|
+
u.set(k, String(v));
|
|
62
|
+
}
|
|
63
|
+
const s = u.toString();
|
|
64
|
+
return s ? `?${s}` : "";
|
|
65
|
+
}
|
|
66
|
+
async function resolveInstall(client, ref) {
|
|
67
|
+
const res = await client.get("/api/v1/marketplace/installed");
|
|
68
|
+
const data = (await res.json());
|
|
69
|
+
const items = Array.isArray(data.items) ? data.items : [];
|
|
70
|
+
const want = parseSkillRef(ref);
|
|
71
|
+
for (const row of items) {
|
|
72
|
+
if (row.state && row.state !== "active")
|
|
73
|
+
continue;
|
|
74
|
+
const full = `${row.vendor}/${row.name}`;
|
|
75
|
+
if (full === want.full || row.name === want.name)
|
|
76
|
+
return row;
|
|
77
|
+
}
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
/** Resolve `vendor/name` (or bare name) → package_id by querying the registry.
|
|
81
|
+
* Required by `install` since the install endpoint keys on UUID, not the
|
|
82
|
+
* human ref. */
|
|
83
|
+
async function resolvePackageId(client, ref) {
|
|
84
|
+
const want = parseSkillRef(ref);
|
|
85
|
+
if (!want.vendor) {
|
|
86
|
+
// Bare name — fall back to the latest by listing all packages and
|
|
87
|
+
// matching by name (the registry doesn't expose a name-only lookup).
|
|
88
|
+
const res = await client.get("/api/v1/registry/packages");
|
|
89
|
+
const data = (await res.json());
|
|
90
|
+
const match = (data.items ?? []).find((p) => p.name === want.name);
|
|
91
|
+
if (!match)
|
|
92
|
+
return null;
|
|
93
|
+
return { package_id: match.id, vendor: match.vendor, name: match.name };
|
|
94
|
+
}
|
|
95
|
+
const path = `/api/v1/registry/packages/${encodeURIComponent(want.vendor)}/${encodeURIComponent(want.name)}`;
|
|
96
|
+
try {
|
|
97
|
+
const res = await client.get(path);
|
|
98
|
+
const data = (await res.json());
|
|
99
|
+
if (!data.id)
|
|
100
|
+
return null;
|
|
101
|
+
return {
|
|
102
|
+
package_id: data.id,
|
|
103
|
+
vendor: data.vendor ?? want.vendor,
|
|
104
|
+
name: data.name ?? want.name,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// ── Command registration ───────────────────────────────────────────────────
|
|
112
|
+
export function registerToolsCommands(program) {
|
|
113
|
+
const tools = program
|
|
114
|
+
.command("tools")
|
|
115
|
+
.description("Marketplace skill discovery & invocation (mirrors the 6 always-on MCP tools)");
|
|
116
|
+
// ── search ──────────────────────────────────────────────────────────────
|
|
117
|
+
tools
|
|
118
|
+
.command("search <query>")
|
|
119
|
+
.description("Semantic search across the marketplace registry")
|
|
120
|
+
.option("--limit <n>", "Max results (1-25)", "5")
|
|
121
|
+
.action(async (query, opts) => {
|
|
122
|
+
const wsSlug = program.opts().workspace;
|
|
123
|
+
try {
|
|
124
|
+
const client = createClient(wsSlug);
|
|
125
|
+
const limit = Math.max(1, Math.min(25, parseInt(opts.limit, 10) || 5));
|
|
126
|
+
const url = `/api/v1/registry/search${qs({ intent: query, limit })}`;
|
|
127
|
+
const res = await client.get(url);
|
|
128
|
+
await printResponse(res);
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
const e = err;
|
|
132
|
+
if (e.status === 404) {
|
|
133
|
+
console.error("Error: /api/v1/registry/search is not yet proxied through the main API. " +
|
|
134
|
+
"Follow-up task filed under Platform Core. " +
|
|
135
|
+
"Workaround: use `opvs tools list` for installed packages or hit the marketplace directly.");
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
console.error(`Error: ${errMsg(err, "search failed")}`);
|
|
139
|
+
}
|
|
140
|
+
process.exit(1);
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
// ── help / describe ─────────────────────────────────────────────────────
|
|
144
|
+
// `help` is the canonical name in the CLI; `describe` is registered as a
|
|
145
|
+
// sibling so users coming from the MCP `skill_describe` tool find it.
|
|
146
|
+
for (const verb of ["help", "describe"]) {
|
|
147
|
+
tools
|
|
148
|
+
.command(`${verb} <skill>`)
|
|
149
|
+
.description(verb === "help"
|
|
150
|
+
? "Fetch the registry descriptor for a skill (alias of `describe`)"
|
|
151
|
+
: "Fetch the registry descriptor for a skill")
|
|
152
|
+
.option("--section <section>", "Slice: description | methods | manifest | all (default: all)", "all")
|
|
153
|
+
.action(async (skill, opts) => {
|
|
154
|
+
const wsSlug = program.opts().workspace;
|
|
155
|
+
try {
|
|
156
|
+
const client = createClient(wsSlug);
|
|
157
|
+
const ref = parseSkillRef(skill);
|
|
158
|
+
const vendor = ref.vendor || "@opvs-ai";
|
|
159
|
+
const path = `/api/v1/registry/packages/${encodeURIComponent(vendor)}/${encodeURIComponent(ref.name)}`;
|
|
160
|
+
const res = await client.get(path);
|
|
161
|
+
const data = (await res.json());
|
|
162
|
+
const section = (opts.section || "all").toLowerCase();
|
|
163
|
+
if (section === "all") {
|
|
164
|
+
printJson(data);
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
const subset = {
|
|
168
|
+
vendor: data.vendor,
|
|
169
|
+
name: data.name,
|
|
170
|
+
version: data.version,
|
|
171
|
+
};
|
|
172
|
+
if (section === "description") {
|
|
173
|
+
subset.description = data.description;
|
|
174
|
+
subset.category = data.category;
|
|
175
|
+
}
|
|
176
|
+
else if (section === "methods") {
|
|
177
|
+
const manifest = data.manifest;
|
|
178
|
+
subset.methods = manifest?.methods ?? null;
|
|
179
|
+
}
|
|
180
|
+
else if (section === "manifest") {
|
|
181
|
+
subset.manifest = data.manifest ?? null;
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
printJson(data);
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
printJson(subset);
|
|
188
|
+
}
|
|
189
|
+
catch (err) {
|
|
190
|
+
const e = err;
|
|
191
|
+
if (e.status === 404) {
|
|
192
|
+
console.error(`Error: skill '${skill}' not found in registry`);
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
console.error(`Error: ${errMsg(err, `failed to describe '${skill}'`)}`);
|
|
196
|
+
}
|
|
197
|
+
process.exit(1);
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
// ── list (installed) ────────────────────────────────────────────────────
|
|
202
|
+
tools
|
|
203
|
+
.command("list")
|
|
204
|
+
.description("List packages installed on the current brand")
|
|
205
|
+
.action(async () => {
|
|
206
|
+
const wsSlug = program.opts().workspace;
|
|
207
|
+
try {
|
|
208
|
+
const client = createClient(wsSlug);
|
|
209
|
+
const res = await client.get("/api/v1/marketplace/installed");
|
|
210
|
+
await printResponse(res);
|
|
211
|
+
}
|
|
212
|
+
catch (err) {
|
|
213
|
+
console.error(`Error: ${errMsg(err, "failed to list installed packages")}`);
|
|
214
|
+
process.exit(1);
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
// ── call ────────────────────────────────────────────────────────────────
|
|
218
|
+
tools
|
|
219
|
+
.command("call <skill> <method>")
|
|
220
|
+
.description("Invoke a skill method (resolves install_id from skill ref)")
|
|
221
|
+
.option("--args <json>", "JSON-encoded params object to pass through to the upstream method")
|
|
222
|
+
.option("--args-file <path>", "Read params JSON from a file")
|
|
223
|
+
.action(async (skill, method, opts) => {
|
|
224
|
+
const wsSlug = program.opts().workspace;
|
|
225
|
+
let params = {};
|
|
226
|
+
try {
|
|
227
|
+
const raw = opts.argsFile
|
|
228
|
+
? readFileSync(opts.argsFile, "utf-8")
|
|
229
|
+
: opts.args;
|
|
230
|
+
if (raw) {
|
|
231
|
+
const parsed = JSON.parse(raw);
|
|
232
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
233
|
+
console.error("Error: --args must be a JSON object");
|
|
234
|
+
process.exit(1);
|
|
235
|
+
}
|
|
236
|
+
params = parsed;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
catch (e) {
|
|
240
|
+
console.error(`Error: invalid --args JSON: ${e.message}`);
|
|
241
|
+
process.exit(1);
|
|
242
|
+
}
|
|
243
|
+
try {
|
|
244
|
+
const client = createClient(wsSlug);
|
|
245
|
+
const resolved = await resolveInstall(client, skill);
|
|
246
|
+
if (!resolved) {
|
|
247
|
+
console.error(`Error: skill '${skill}' is not installed on this brand. ` +
|
|
248
|
+
"Run `opvs tools list` to see what's installed.");
|
|
249
|
+
process.exit(1);
|
|
250
|
+
}
|
|
251
|
+
const path = `/api/v1/marketplace/runtime/${encodeURIComponent(resolved.id)}` +
|
|
252
|
+
`/${encodeURIComponent(resolved.name)}/${encodeURIComponent(method)}`;
|
|
253
|
+
const res = await client.post(path, params);
|
|
254
|
+
await printResponse(res);
|
|
255
|
+
}
|
|
256
|
+
catch (err) {
|
|
257
|
+
console.error(`Error: ${errMsg(err, "call failed")}`);
|
|
258
|
+
process.exit(1);
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
// ── install ─────────────────────────────────────────────────────────────
|
|
262
|
+
tools
|
|
263
|
+
.command("install <skill>")
|
|
264
|
+
.description("Install a marketplace package on the current brand")
|
|
265
|
+
.option("--grants <json>", "JSON map of entitlement → bool (e.g. '{\"vendor.di-atomic.utils.read\": true}'). Required entitlements come from the package manifest.")
|
|
266
|
+
.option("--credentials <json>", "JSON map of credential name → resolution. Optional unless the manifest declares required credentials.")
|
|
267
|
+
.option("--agents <json>", "JSON array of agent_ids to install for. Omit = all brand agents.")
|
|
268
|
+
.action(async (skill, opts) => {
|
|
269
|
+
const wsSlug = program.opts().workspace;
|
|
270
|
+
const body = { grants: {} };
|
|
271
|
+
try {
|
|
272
|
+
if (opts.grants)
|
|
273
|
+
body.grants = JSON.parse(opts.grants);
|
|
274
|
+
if (opts.credentials)
|
|
275
|
+
body.credentials = JSON.parse(opts.credentials);
|
|
276
|
+
if (opts.agents)
|
|
277
|
+
body.agent_ids = JSON.parse(opts.agents);
|
|
278
|
+
}
|
|
279
|
+
catch (e) {
|
|
280
|
+
console.error(`Error: invalid JSON in install args: ${e.message}`);
|
|
281
|
+
process.exit(1);
|
|
282
|
+
}
|
|
283
|
+
try {
|
|
284
|
+
const client = createClient(wsSlug);
|
|
285
|
+
const pkg = await resolvePackageId(client, skill);
|
|
286
|
+
if (!pkg) {
|
|
287
|
+
console.error(`Error: package '${skill}' not found in the marketplace registry`);
|
|
288
|
+
process.exit(1);
|
|
289
|
+
}
|
|
290
|
+
const res = await client.post(`/api/v1/marketplace/packages/${encodeURIComponent(pkg.package_id)}/install`, body);
|
|
291
|
+
const data = await res.json();
|
|
292
|
+
printJson(data);
|
|
293
|
+
}
|
|
294
|
+
catch (err) {
|
|
295
|
+
console.error(`Error: ${errMsg(err, "install failed")}`);
|
|
296
|
+
process.exit(1);
|
|
297
|
+
}
|
|
298
|
+
});
|
|
299
|
+
// ── uninstall ───────────────────────────────────────────────────────────
|
|
300
|
+
tools
|
|
301
|
+
.command("uninstall <skill>")
|
|
302
|
+
.description("Uninstall a marketplace package from the current brand")
|
|
303
|
+
.action(async (skill) => {
|
|
304
|
+
const wsSlug = program.opts().workspace;
|
|
305
|
+
try {
|
|
306
|
+
const client = createClient(wsSlug);
|
|
307
|
+
const resolved = await resolveInstall(client, skill);
|
|
308
|
+
if (!resolved) {
|
|
309
|
+
console.error(`Error: '${skill}' is not currently installed (or is already uninstalled).`);
|
|
310
|
+
process.exit(1);
|
|
311
|
+
}
|
|
312
|
+
await client.delete(`/api/v1/marketplace/installed/${encodeURIComponent(resolved.id)}`);
|
|
313
|
+
console.log(`Uninstalled ${resolved.vendor}/${resolved.name}`);
|
|
314
|
+
}
|
|
315
|
+
catch (err) {
|
|
316
|
+
console.error(`Error: ${errMsg(err, "uninstall failed")}`);
|
|
317
|
+
process.exit(1);
|
|
318
|
+
}
|
|
319
|
+
});
|
|
320
|
+
// ── pin ─────────────────────────────────────────────────────────────────
|
|
321
|
+
// The skills-meta plugin's `skill_pin` writes to the agent's TOOLS.md via
|
|
322
|
+
// the Management API (which the CLI does not have credentials for). A
|
|
323
|
+
// server-side pin endpoint that operates on the calling PAT's agent
|
|
324
|
+
// identity ships in W2.1; until then this subcommand is a clear stub.
|
|
325
|
+
tools
|
|
326
|
+
.command("pin <skill>")
|
|
327
|
+
.description("Pin a skill in your agent's TOOLS.md (gated on W2.1 server endpoint)")
|
|
328
|
+
.option("--action <action>", "'pin' (default) or 'unpin'", "pin")
|
|
329
|
+
.action(async (skill, _opts) => {
|
|
330
|
+
console.error(`Error: 'opvs tools pin' requires a CLI-facing pin endpoint that ships in W2.1. ` +
|
|
331
|
+
`For agent sessions, use the skills-meta plugin's skill_pin tool. ` +
|
|
332
|
+
`Tracked as a Platform Core follow-up. Requested pin: '${skill}'`);
|
|
333
|
+
process.exit(1);
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/commands/tools.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -13,9 +13,13 @@
|
|
|
13
13
|
* opvs init # Print CLAUDE.md snippet
|
|
14
14
|
*/
|
|
15
15
|
import { Command } from "commander";
|
|
16
|
+
import { readFileSync } from "node:fs";
|
|
17
|
+
import { fileURLToPath } from "node:url";
|
|
18
|
+
import { dirname, join } from "node:path";
|
|
16
19
|
import { registerAuthCommands } from "./commands/auth.js";
|
|
17
20
|
import { registerSessionCommands } from "./commands/session.js";
|
|
18
21
|
import { registerBoardCommands } from "./commands/boards.js";
|
|
22
|
+
import { registerProjectCommands } from "./commands/projects.js";
|
|
19
23
|
import { registerTaskCommands } from "./commands/tasks.js";
|
|
20
24
|
import { registerCommentCommands } from "./commands/comments.js";
|
|
21
25
|
import { registerDocsCommands } from "./commands/docs.js";
|
|
@@ -33,18 +37,23 @@ import { registerMemberCommands } from "./commands/members.js";
|
|
|
33
37
|
import { registerMarkerCommands } from "./commands/markers.js";
|
|
34
38
|
import { registerBoardLinkCommands } from "./commands/board-links.js";
|
|
35
39
|
import { registerSkillCommands } from "./commands/skills.js";
|
|
40
|
+
import { registerToolsCommands } from "./commands/tools.js";
|
|
36
41
|
import { registerMailCommands } from "./commands/mail.js";
|
|
42
|
+
import { registerReportCommands } from "./commands/report.js";
|
|
43
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
44
|
+
const pkg = JSON.parse(readFileSync(join(__dirname, "..", "package.json"), "utf8"));
|
|
37
45
|
const program = new Command();
|
|
38
46
|
program
|
|
39
47
|
.name("opvs")
|
|
40
48
|
.description("OPVS CLI — AgentBoard + AgentDocs for AI coding agents")
|
|
41
|
-
.version(
|
|
49
|
+
.version(pkg.version)
|
|
42
50
|
.option("-w, --workspace <slug>", "Workspace to use (overrides current)");
|
|
43
51
|
// Register all command groups
|
|
44
52
|
registerAuthCommands(program);
|
|
45
53
|
registerWorkspaceCommands(program);
|
|
46
54
|
registerSessionCommands(program);
|
|
47
55
|
registerBoardCommands(program);
|
|
56
|
+
registerProjectCommands(program);
|
|
48
57
|
registerTaskCommands(program);
|
|
49
58
|
registerCommentCommands(program);
|
|
50
59
|
registerDocsCommands(program);
|
|
@@ -60,7 +69,9 @@ registerMemberCommands(program);
|
|
|
60
69
|
registerMarkerCommands(program);
|
|
61
70
|
registerBoardLinkCommands(program);
|
|
62
71
|
registerSkillCommands(program);
|
|
72
|
+
registerToolsCommands(program);
|
|
63
73
|
registerMailCommands(program);
|
|
74
|
+
registerReportCommands(program);
|
|
64
75
|
registerConfigCommands(program);
|
|
65
76
|
program.parse();
|
|
66
77
|
//# 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;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opvs-ai/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.3",
|
|
4
4
|
"description": "OPVS CLI \u2014 Terminal access to AgentBoard + AgentDocs for AI coding agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"test:watch": "vitest"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@opvs-ai/core": "^0.4.
|
|
17
|
+
"@opvs-ai/core": "^0.4.4",
|
|
18
18
|
"commander": "^12.1.0"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|