@opvs-ai/cli 0.6.4 → 0.7.5
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/professions.d.ts +14 -0
- package/dist/commands/professions.js +156 -0
- package/dist/commands/professions.js.map +1 -0
- 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 +151 -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 +14 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -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,24 @@ 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
|
+
import { registerProfessionCommands } from "./commands/professions.js";
|
|
44
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
45
|
+
const pkg = JSON.parse(readFileSync(join(__dirname, "..", "package.json"), "utf8"));
|
|
37
46
|
const program = new Command();
|
|
38
47
|
program
|
|
39
48
|
.name("opvs")
|
|
40
49
|
.description("OPVS CLI — AgentBoard + AgentDocs for AI coding agents")
|
|
41
|
-
.version(
|
|
50
|
+
.version(pkg.version)
|
|
42
51
|
.option("-w, --workspace <slug>", "Workspace to use (overrides current)");
|
|
43
52
|
// Register all command groups
|
|
44
53
|
registerAuthCommands(program);
|
|
45
54
|
registerWorkspaceCommands(program);
|
|
46
55
|
registerSessionCommands(program);
|
|
47
56
|
registerBoardCommands(program);
|
|
57
|
+
registerProjectCommands(program);
|
|
48
58
|
registerTaskCommands(program);
|
|
49
59
|
registerCommentCommands(program);
|
|
50
60
|
registerDocsCommands(program);
|
|
@@ -60,7 +70,10 @@ registerMemberCommands(program);
|
|
|
60
70
|
registerMarkerCommands(program);
|
|
61
71
|
registerBoardLinkCommands(program);
|
|
62
72
|
registerSkillCommands(program);
|
|
73
|
+
registerToolsCommands(program);
|
|
63
74
|
registerMailCommands(program);
|
|
75
|
+
registerReportCommands(program);
|
|
76
|
+
registerProfessionCommands(program);
|
|
64
77
|
registerConfigCommands(program);
|
|
65
78
|
program.parse();
|
|
66
79
|
//# 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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"}
|