backpack-ontology 0.7.13 → 0.8.1
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 +123 -0
- package/dist/bin/bp.d.ts +3 -0
- package/dist/bin/bp.d.ts.map +1 -0
- package/dist/bin/bp.js +6 -0
- package/dist/bin/bp.js.map +1 -0
- package/dist/cli/colors.d.ts +20 -0
- package/dist/cli/colors.d.ts.map +1 -0
- package/dist/cli/colors.js +34 -0
- package/dist/cli/colors.js.map +1 -0
- package/dist/cli/commands/auth.d.ts +4 -0
- package/dist/cli/commands/auth.d.ts.map +1 -0
- package/dist/cli/commands/auth.js +48 -0
- package/dist/cli/commands/auth.js.map +1 -0
- package/dist/cli/commands/cat.d.ts +3 -0
- package/dist/cli/commands/cat.d.ts.map +1 -0
- package/dist/cli/commands/cat.js +28 -0
- package/dist/cli/commands/cat.js.map +1 -0
- package/dist/cli/commands/cloud-admin.d.ts +7 -0
- package/dist/cli/commands/cloud-admin.d.ts.map +1 -0
- package/dist/cli/commands/cloud-admin.js +169 -0
- package/dist/cli/commands/cloud-admin.js.map +1 -0
- package/dist/cli/commands/completion.d.ts +3 -0
- package/dist/cli/commands/completion.d.ts.map +1 -0
- package/dist/cli/commands/completion.js +156 -0
- package/dist/cli/commands/completion.js.map +1 -0
- package/dist/cli/commands/containers.d.ts +3 -0
- package/dist/cli/commands/containers.d.ts.map +1 -0
- package/dist/cli/commands/containers.js +29 -0
- package/dist/cli/commands/containers.js.map +1 -0
- package/dist/cli/commands/context.d.ts +4 -0
- package/dist/cli/commands/context.d.ts.map +1 -0
- package/dist/cli/commands/context.js +59 -0
- package/dist/cli/commands/context.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +3 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +65 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/graphs.d.ts +3 -0
- package/dist/cli/commands/graphs.d.ts.map +1 -0
- package/dist/cli/commands/graphs.js +57 -0
- package/dist/cli/commands/graphs.js.map +1 -0
- package/dist/cli/commands/init.d.ts +3 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +46 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/kbs.d.ts +3 -0
- package/dist/cli/commands/kbs.d.ts.map +1 -0
- package/dist/cli/commands/kbs.js +247 -0
- package/dist/cli/commands/kbs.js.map +1 -0
- package/dist/cli/commands/ls.d.ts +3 -0
- package/dist/cli/commands/ls.d.ts.map +1 -0
- package/dist/cli/commands/ls.js +81 -0
- package/dist/cli/commands/ls.js.map +1 -0
- package/dist/cli/commands/mutate.d.ts +7 -0
- package/dist/cli/commands/mutate.d.ts.map +1 -0
- package/dist/cli/commands/mutate.js +241 -0
- package/dist/cli/commands/mutate.js.map +1 -0
- package/dist/cli/commands/open.d.ts +3 -0
- package/dist/cli/commands/open.d.ts.map +1 -0
- package/dist/cli/commands/open.js +88 -0
- package/dist/cli/commands/open.js.map +1 -0
- package/dist/cli/commands/search.d.ts +3 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +59 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/commands/show.d.ts +3 -0
- package/dist/cli/commands/show.d.ts.map +1 -0
- package/dist/cli/commands/show.js +74 -0
- package/dist/cli/commands/show.js.map +1 -0
- package/dist/cli/commands/version.d.ts +2 -0
- package/dist/cli/commands/version.d.ts.map +1 -0
- package/dist/cli/commands/version.js +16 -0
- package/dist/cli/commands/version.js.map +1 -0
- package/dist/cli/help.d.ts +3 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +118 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/output.d.ts +23 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +189 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/cli/parser.d.ts +9 -0
- package/dist/cli/parser.d.ts.map +1 -0
- package/dist/cli/parser.js +106 -0
- package/dist/cli/parser.js.map +1 -0
- package/dist/cli/router.d.ts +2 -0
- package/dist/cli/router.d.ts.map +1 -0
- package/dist/cli/router.js +123 -0
- package/dist/cli/router.js.map +1 -0
- package/dist/cli/util/confirm.d.ts +3 -0
- package/dist/cli/util/confirm.d.ts.map +1 -0
- package/dist/cli/util/confirm.js +37 -0
- package/dist/cli/util/confirm.js.map +1 -0
- package/dist/core/backpack.d.ts +1 -92
- package/dist/core/backpack.d.ts.map +1 -1
- package/dist/core/backpack.js +23 -127
- package/dist/core/backpack.js.map +1 -1
- package/dist/core/backpacks-registry.d.ts +2 -2
- package/dist/core/backpacks-registry.js +2 -2
- package/dist/mcp/tools/cloud-tools.d.ts +2 -3
- package/dist/mcp/tools/cloud-tools.d.ts.map +1 -1
- package/dist/mcp/tools/cloud-tools.js +240 -81
- package/dist/mcp/tools/cloud-tools.js.map +1 -1
- package/dist/mcp/tools/share-tools.js +1 -1
- package/dist/mcp/tools/share-tools.js.map +1 -1
- package/dist/mcp/tools/signal-tools.js +1 -1
- package/dist/mcp/tools/signal-tools.js.map +1 -1
- package/dist/ops/auth.d.ts +25 -0
- package/dist/ops/auth.d.ts.map +1 -0
- package/dist/ops/auth.js +144 -0
- package/dist/ops/auth.js.map +1 -0
- package/dist/ops/containers.d.ts +25 -0
- package/dist/ops/containers.d.ts.map +1 -0
- package/dist/ops/containers.js +144 -0
- package/dist/ops/containers.js.map +1 -0
- package/dist/ops/context.d.ts +30 -0
- package/dist/ops/context.d.ts.map +1 -0
- package/dist/ops/context.js +133 -0
- package/dist/ops/context.js.map +1 -0
- package/dist/ops/graphs.d.ts +48 -0
- package/dist/ops/graphs.d.ts.map +1 -0
- package/dist/ops/graphs.js +249 -0
- package/dist/ops/graphs.js.map +1 -0
- package/dist/ops/kb.d.ts +28 -0
- package/dist/ops/kb.d.ts.map +1 -0
- package/dist/ops/kb.js +162 -0
- package/dist/ops/kb.js.map +1 -0
- package/package.json +3 -2
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
import * as fs from "node:fs/promises";
|
|
2
|
+
import * as os from "node:os";
|
|
3
|
+
import * as path from "node:path";
|
|
4
|
+
import { spawn } from "node:child_process";
|
|
5
|
+
import { flagString } from "../parser.js";
|
|
6
|
+
import { runLs } from "./ls.js";
|
|
7
|
+
import { resolveFormat, emitOne } from "../output.js";
|
|
8
|
+
import { getKB, saveKB, deleteKB } from "../../ops/kb.js";
|
|
9
|
+
import { runMoveKB } from "./cloud-admin.js";
|
|
10
|
+
import { confirm } from "../util/confirm.js";
|
|
11
|
+
import { red, green, dim, bold, yellow } from "../colors.js";
|
|
12
|
+
export async function runKbs(args) {
|
|
13
|
+
const verb = args.positional[0];
|
|
14
|
+
if (!verb) {
|
|
15
|
+
process.stderr.write(`bp kbs: verb required.\nusage: bp kbs <list|get> [args]\n`);
|
|
16
|
+
return 1;
|
|
17
|
+
}
|
|
18
|
+
const sub = { positional: args.positional.slice(1), flags: args.flags, rest: args.rest };
|
|
19
|
+
switch (verb) {
|
|
20
|
+
case "list":
|
|
21
|
+
case "ls":
|
|
22
|
+
return runLs({ ...sub, positional: ["kbs", ...sub.positional] });
|
|
23
|
+
case "get":
|
|
24
|
+
case "cat":
|
|
25
|
+
return runKbGet(sub);
|
|
26
|
+
case "create":
|
|
27
|
+
case "new":
|
|
28
|
+
return runKbCreate(sub);
|
|
29
|
+
case "delete":
|
|
30
|
+
case "rm":
|
|
31
|
+
case "remove":
|
|
32
|
+
return runKbDelete(sub);
|
|
33
|
+
case "edit":
|
|
34
|
+
return runKbEdit(sub);
|
|
35
|
+
case "move":
|
|
36
|
+
case "mv-to":
|
|
37
|
+
return runMoveKB(sub);
|
|
38
|
+
default:
|
|
39
|
+
process.stderr.write(`bp kbs: unknown verb "${verb}". try list, get, create, edit, delete, or move.\n`);
|
|
40
|
+
return 1;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
async function runKbCreate(args) {
|
|
44
|
+
const file = flagString(args, "f", "file", "from-file");
|
|
45
|
+
const titleArg = flagString(args, "title", "t");
|
|
46
|
+
const contentArg = flagString(args, "content");
|
|
47
|
+
const collection = flagString(args, "collection", "c");
|
|
48
|
+
const tagsRaw = flagString(args, "tags");
|
|
49
|
+
const tags = tagsRaw ? tagsRaw.split(",").map((t) => t.trim()).filter(Boolean) : undefined;
|
|
50
|
+
const sourceRaw = flagString(args, "from-graphs");
|
|
51
|
+
const sourceGraphs = sourceRaw ? sourceRaw.split(",").map((s) => s.trim()).filter(Boolean) : undefined;
|
|
52
|
+
if (file && contentArg !== undefined) {
|
|
53
|
+
process.stderr.write(`bp kbs create: pass either -f <file> or --content, not both.\n`);
|
|
54
|
+
return 1;
|
|
55
|
+
}
|
|
56
|
+
let title;
|
|
57
|
+
let content;
|
|
58
|
+
if (file) {
|
|
59
|
+
const raw = await fs.readFile(file, "utf8").catch((err) => {
|
|
60
|
+
process.stderr.write(`${red("✗")} could not read ${file}: ${err.message}\n`);
|
|
61
|
+
return null;
|
|
62
|
+
});
|
|
63
|
+
if (raw === null)
|
|
64
|
+
return 1;
|
|
65
|
+
const stripped = stripLeadingFrontmatter(raw);
|
|
66
|
+
content = stripped.content;
|
|
67
|
+
title = titleArg ?? stripped.frontmatter.title ?? path.basename(file, path.extname(file));
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
if (!titleArg) {
|
|
71
|
+
process.stderr.write(`bp kbs create: pass either -f <file> or --title <title> --content <text>.\n`);
|
|
72
|
+
return 1;
|
|
73
|
+
}
|
|
74
|
+
title = titleArg;
|
|
75
|
+
if (contentArg === undefined) {
|
|
76
|
+
process.stderr.write(`bp kbs create: --content is required when not using -f <file>.\n`);
|
|
77
|
+
return 1;
|
|
78
|
+
}
|
|
79
|
+
content = contentArg;
|
|
80
|
+
}
|
|
81
|
+
try {
|
|
82
|
+
const { id, created } = await saveKB({ title, content, tags, sourceGraphs, collection });
|
|
83
|
+
process.stdout.write(`${green("✓")} ${created ? "created" : "updated"} ${bold(title)} ${dim(`(${id})`)}\n`);
|
|
84
|
+
return 0;
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
process.stderr.write(`${red("✗")} ${err.message}\n`);
|
|
88
|
+
return 1;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
function stripLeadingFrontmatter(raw) {
|
|
92
|
+
if (!raw.startsWith("---"))
|
|
93
|
+
return { content: raw, frontmatter: {} };
|
|
94
|
+
const endMatch = raw.match(/^---\n([\s\S]*?)\n---\n?/);
|
|
95
|
+
if (!endMatch)
|
|
96
|
+
return { content: raw, frontmatter: {} };
|
|
97
|
+
const block = endMatch[1];
|
|
98
|
+
const rest = raw.slice(endMatch[0].length);
|
|
99
|
+
const fm = {};
|
|
100
|
+
for (const line of block.split("\n")) {
|
|
101
|
+
const m = line.match(/^([a-zA-Z0-9_-]+)\s*:\s*(.*)$/);
|
|
102
|
+
if (!m)
|
|
103
|
+
continue;
|
|
104
|
+
const k = m[1];
|
|
105
|
+
const v = m[2].trim();
|
|
106
|
+
if (k === "title") {
|
|
107
|
+
fm.title = v.replace(/^["']|["']$/g, "");
|
|
108
|
+
}
|
|
109
|
+
else if (k === "tags") {
|
|
110
|
+
const cleaned = v.replace(/^\[|\]$/g, "");
|
|
111
|
+
fm.tags = cleaned.split(",").map((t) => t.trim().replace(/^["']|["']$/g, "")).filter(Boolean);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return { content: rest, frontmatter: fm };
|
|
115
|
+
}
|
|
116
|
+
async function runKbDelete(args) {
|
|
117
|
+
const id = args.positional[0];
|
|
118
|
+
if (!id) {
|
|
119
|
+
process.stderr.write(`bp kbs delete: doc id required.\nusage: bp kbs delete <id> [-y]\n`);
|
|
120
|
+
return 1;
|
|
121
|
+
}
|
|
122
|
+
let existing;
|
|
123
|
+
try {
|
|
124
|
+
existing = await getKB(id);
|
|
125
|
+
}
|
|
126
|
+
catch (err) {
|
|
127
|
+
process.stderr.write(`${red("✗")} ${err.message}\n`);
|
|
128
|
+
return 1;
|
|
129
|
+
}
|
|
130
|
+
if (!existing) {
|
|
131
|
+
process.stderr.write(`${red("✗")} kb doc "${id}" not found in the current scope.\n`);
|
|
132
|
+
return 1;
|
|
133
|
+
}
|
|
134
|
+
const ok = await confirm(`delete ${bold(existing.title)} (${id})? [y/N] `, args);
|
|
135
|
+
if (!ok) {
|
|
136
|
+
process.stderr.write(dim("aborted.\n"));
|
|
137
|
+
return 0;
|
|
138
|
+
}
|
|
139
|
+
try {
|
|
140
|
+
await deleteKB(id);
|
|
141
|
+
process.stdout.write(`${green("✓")} deleted ${bold(existing.title)}\n`);
|
|
142
|
+
return 0;
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
process.stderr.write(`${red("✗")} ${err.message}\n`);
|
|
146
|
+
return 1;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
async function runKbEdit(args) {
|
|
150
|
+
const id = args.positional[0];
|
|
151
|
+
if (!id) {
|
|
152
|
+
process.stderr.write(`bp kbs edit: doc id required.\n`);
|
|
153
|
+
return 1;
|
|
154
|
+
}
|
|
155
|
+
let doc;
|
|
156
|
+
try {
|
|
157
|
+
doc = await getKB(id);
|
|
158
|
+
}
|
|
159
|
+
catch (err) {
|
|
160
|
+
process.stderr.write(`${red("✗")} ${err.message}\n`);
|
|
161
|
+
return 1;
|
|
162
|
+
}
|
|
163
|
+
if (!doc) {
|
|
164
|
+
process.stderr.write(`${red("✗")} kb doc "${id}" not found.\n`);
|
|
165
|
+
return 1;
|
|
166
|
+
}
|
|
167
|
+
const editorCmd = process.env.EDITOR || process.env.VISUAL || (process.platform === "win32" ? "notepad" : "vi");
|
|
168
|
+
const tokens = editorCmd.trim().split(/\s+/).filter(Boolean);
|
|
169
|
+
const editor = tokens[0];
|
|
170
|
+
const editorArgs = tokens.slice(1);
|
|
171
|
+
const userTmpDir = path.join(os.tmpdir(), `bp-${process.getuid?.() ?? "u"}`);
|
|
172
|
+
await fs.mkdir(userTmpDir, { recursive: true });
|
|
173
|
+
const tmpFile = path.join(userTmpDir, `kb-edit-${process.pid}-${Date.now()}.md`);
|
|
174
|
+
const original = doc.content;
|
|
175
|
+
await fs.writeFile(tmpFile, original, { mode: 0o600 });
|
|
176
|
+
let cleanedUp = false;
|
|
177
|
+
let interrupted = false;
|
|
178
|
+
const cleanup = async () => {
|
|
179
|
+
if (cleanedUp)
|
|
180
|
+
return;
|
|
181
|
+
cleanedUp = true;
|
|
182
|
+
await fs.unlink(tmpFile).catch(() => { });
|
|
183
|
+
};
|
|
184
|
+
const onSig = () => {
|
|
185
|
+
interrupted = true;
|
|
186
|
+
process.exitCode = 130;
|
|
187
|
+
};
|
|
188
|
+
process.once("SIGINT", onSig);
|
|
189
|
+
process.once("SIGTERM", onSig);
|
|
190
|
+
try {
|
|
191
|
+
const exitCode = await new Promise((resolve, reject) => {
|
|
192
|
+
const child = spawn(editor, [...editorArgs, tmpFile], { stdio: "inherit" });
|
|
193
|
+
child.on("error", reject);
|
|
194
|
+
child.on("exit", (code) => resolve(code ?? 0));
|
|
195
|
+
});
|
|
196
|
+
if (interrupted)
|
|
197
|
+
return 130;
|
|
198
|
+
if (exitCode !== 0) {
|
|
199
|
+
process.stderr.write(`${yellow("!")} editor exited ${exitCode} — changes discarded.\n`);
|
|
200
|
+
return 1;
|
|
201
|
+
}
|
|
202
|
+
const updated = await fs.readFile(tmpFile, "utf8");
|
|
203
|
+
if (updated === original) {
|
|
204
|
+
process.stdout.write(dim("no changes.\n"));
|
|
205
|
+
return 0;
|
|
206
|
+
}
|
|
207
|
+
await saveKB({ id, title: doc.title, content: updated, tags: doc.tags, sourceGraphs: doc.sourceGraphs, collection: doc.collection });
|
|
208
|
+
process.stdout.write(`${green("✓")} updated ${bold(doc.title)}\n`);
|
|
209
|
+
return 0;
|
|
210
|
+
}
|
|
211
|
+
catch (err) {
|
|
212
|
+
process.stderr.write(`${red("✗")} ${err.message}\n`);
|
|
213
|
+
return 1;
|
|
214
|
+
}
|
|
215
|
+
finally {
|
|
216
|
+
process.removeListener("SIGINT", onSig);
|
|
217
|
+
process.removeListener("SIGTERM", onSig);
|
|
218
|
+
await cleanup();
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
async function runKbGet(args) {
|
|
222
|
+
const id = args.positional[0];
|
|
223
|
+
if (!id) {
|
|
224
|
+
process.stderr.write(`bp kbs get: doc id required.\n`);
|
|
225
|
+
return 1;
|
|
226
|
+
}
|
|
227
|
+
try {
|
|
228
|
+
const doc = await getKB(id);
|
|
229
|
+
if (!doc) {
|
|
230
|
+
process.stderr.write(`${red("✗")} kb doc "${id}" not found in the current scope.\n`);
|
|
231
|
+
return 1;
|
|
232
|
+
}
|
|
233
|
+
const fmt = resolveFormat(args.flags);
|
|
234
|
+
if (fmt === "human") {
|
|
235
|
+
process.stdout.write(doc.content + (doc.content.endsWith("\n") ? "" : "\n"));
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
emitOne(doc, { format: fmt });
|
|
239
|
+
}
|
|
240
|
+
return 0;
|
|
241
|
+
}
|
|
242
|
+
catch (err) {
|
|
243
|
+
process.stderr.write(`${red("✗")} ${err.message}\n`);
|
|
244
|
+
return 1;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=kbs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kbs.js","sourceRoot":"","sources":["../../../src/cli/commands/kbs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ls.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/ls.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAa1C,wBAAsB,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAmE7D"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { resolveFormat, emitList } from "../output.js";
|
|
2
|
+
import { dim, red, yellow } from "../colors.js";
|
|
3
|
+
import { listGraphs } from "../../ops/graphs.js";
|
|
4
|
+
import { listContainers } from "../../ops/containers.js";
|
|
5
|
+
import { listKB } from "../../ops/kb.js";
|
|
6
|
+
import { describeContext, getContext } from "../../ops/context.js";
|
|
7
|
+
import { resolveCloudToken } from "../../ops/auth.js";
|
|
8
|
+
const RESOURCE_ALIASES = {
|
|
9
|
+
graphs: "graphs", graph: "graphs", g: "graphs",
|
|
10
|
+
containers: "containers", container: "containers", c: "containers", buckets: "containers",
|
|
11
|
+
kbs: "kbs", kb: "kbs", docs: "kbs", doc: "kbs",
|
|
12
|
+
};
|
|
13
|
+
export async function runLs(args) {
|
|
14
|
+
const target = args.positional[0] ?? "graphs";
|
|
15
|
+
const resource = RESOURCE_ALIASES[target.toLowerCase()];
|
|
16
|
+
if (!resource) {
|
|
17
|
+
process.stderr.write(`bp ls: unknown resource "${target}". try graphs, containers, or kbs.\n`);
|
|
18
|
+
return 1;
|
|
19
|
+
}
|
|
20
|
+
const fmt = { format: resolveFormat(args.flags) };
|
|
21
|
+
const ctx = await getContext();
|
|
22
|
+
const needsCloud = ctx.source === "cloud" || resource === "containers";
|
|
23
|
+
if (needsCloud) {
|
|
24
|
+
const token = await resolveCloudToken();
|
|
25
|
+
if (!token) {
|
|
26
|
+
process.stderr.write(`${yellow("!")} not signed in. run \`bp login\` first to list ${resource}.\n`);
|
|
27
|
+
return 1;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
if (resource === "graphs") {
|
|
32
|
+
const rows = await listGraphs();
|
|
33
|
+
emitList({
|
|
34
|
+
rows,
|
|
35
|
+
pluralLabel: "graphs",
|
|
36
|
+
empty: `no graphs in ${describeContext(await getContext())}.`,
|
|
37
|
+
cols: [
|
|
38
|
+
{ header: "NAME", get: (r) => r.name, max: 40 },
|
|
39
|
+
{ header: "NODES", get: (r) => String(r.nodeCount), numeric: true },
|
|
40
|
+
{ header: "EDGES", get: (r) => String(r.edgeCount), numeric: true },
|
|
41
|
+
{ header: "FLAGS", get: (r) => r.encrypted ? yellow("encrypted") : "", wide: true },
|
|
42
|
+
{ header: "DESCRIPTION", get: (r) => r.description ?? "", dim: true, max: 60, wide: true },
|
|
43
|
+
],
|
|
44
|
+
}, fmt);
|
|
45
|
+
return 0;
|
|
46
|
+
}
|
|
47
|
+
if (resource === "containers") {
|
|
48
|
+
const rows = await listContainers();
|
|
49
|
+
emitList({
|
|
50
|
+
rows,
|
|
51
|
+
pluralLabel: "containers",
|
|
52
|
+
empty: dim("no cloud containers (sign in and try again)."),
|
|
53
|
+
cols: [
|
|
54
|
+
{ header: "NAME", get: (r) => r.name, max: 32 },
|
|
55
|
+
{ header: "ORIGIN", get: (r) => r.origin_kind === "local" ? `device${r.origin_device_name ? ` · ${r.origin_device_name}` : ""}` : "cloud" },
|
|
56
|
+
{ header: "ID", get: (r) => r.id, dim: true, wide: true },
|
|
57
|
+
{ header: "TAGS", get: (r) => (r.tags ?? []).join(",") || "", dim: true, wide: true },
|
|
58
|
+
],
|
|
59
|
+
}, fmt);
|
|
60
|
+
return 0;
|
|
61
|
+
}
|
|
62
|
+
const rows = await listKB();
|
|
63
|
+
emitList({
|
|
64
|
+
rows,
|
|
65
|
+
pluralLabel: "kbs",
|
|
66
|
+
empty: dim("no KB documents in the current scope."),
|
|
67
|
+
cols: [
|
|
68
|
+
{ header: "ID", get: (r) => r.id, max: 40 },
|
|
69
|
+
{ header: "TITLE", get: (r) => r.title, max: 50 },
|
|
70
|
+
{ header: "TAGS", get: (r) => r.tags.join(","), dim: true, wide: true },
|
|
71
|
+
{ header: "GRAPHS", get: (r) => r.sourceGraphs.join(","), dim: true, wide: true },
|
|
72
|
+
],
|
|
73
|
+
}, fmt);
|
|
74
|
+
return 0;
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
process.stderr.write(`${red("✗")} ${err.message}\n`);
|
|
78
|
+
return 1;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=ls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ls.js","sourceRoot":"","sources":["../../../src/cli/commands/ls.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,UAAU,EAAqB,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAyB,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,MAAM,EAAkB,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,MAAM,gBAAgB,GAAoD;IACtE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ;IAC9C,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY;IACzF,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK;CACjD,CAAC;AACF,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,IAAgB;IACxC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;IAC9C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACxD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,MAAM,sCAAsC,CAAC,CAAC;QAC/F,OAAO,CAAC,CAAC;IACb,CAAC;IACD,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IAClD,MAAM,GAAG,GAAG,MAAM,UAAU,EAAE,CAAC;IAC/B,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,KAAK,OAAO,IAAI,QAAQ,KAAK,YAAY,CAAC;IACvE,IAAI,UAAU,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,MAAM,iBAAiB,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,kDAAkD,QAAQ,KAAK,CAAC,CAAC;YACpG,OAAO,CAAC,CAAC;QACb,CAAC;IACL,CAAC;IACD,IAAI,CAAC;QACD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;YAChC,QAAQ,CAAe;gBACnB,IAAI;gBACJ,WAAW,EAAE,QAAQ;gBACrB,KAAK,EAAE,gBAAgB,eAAe,CAAC,MAAM,UAAU,EAAE,CAAC,GAAG;gBAC7D,IAAI,EAAE;oBACF,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE;oBAC/C,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;oBACnE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;oBACnE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;oBACnF,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;iBAC7F;aACJ,EAAE,GAAG,CAAC,CAAC;YACR,OAAO,CAAC,CAAC;QACb,CAAC;QACD,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;YACpC,QAAQ,CAAmB;gBACvB,IAAI;gBACJ,WAAW,EAAE,YAAY;gBACzB,KAAK,EAAE,GAAG,CAAC,8CAA8C,CAAC;gBAC1D,IAAI,EAAE;oBACF,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE;oBAC/C,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;oBAC3I,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;oBACzD,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;iBACxF;aACJ,EAAE,GAAG,CAAC,CAAC;YACR,OAAO,CAAC,CAAC;QACb,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,MAAM,EAAE,CAAC;QAC5B,QAAQ,CAAY;YAChB,IAAI;YACJ,WAAW,EAAE,KAAK;YAClB,KAAK,EAAE,GAAG,CAAC,uCAAuC,CAAC;YACnD,IAAI,EAAE;gBACF,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;gBAC3C,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE;gBACjD,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;gBACvE,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;aACpF;SACJ,EAAE,GAAG,CAAC,CAAC;QACR,OAAO,CAAC,CAAC;IACb,CAAC;IACD,OAAO,GAAG,EAAE,CAAC;QACT,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,IAAK,GAAa,CAAC,OAAO,IAAI,CAAC,CAAC;QAChE,OAAO,CAAC,CAAC;IACb,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ParsedArgs } from "../parser.js";
|
|
2
|
+
export declare function runCreate(args: ParsedArgs): Promise<number>;
|
|
3
|
+
export declare function runDelete(args: ParsedArgs): Promise<number>;
|
|
4
|
+
export declare function runRename(args: ParsedArgs): Promise<number>;
|
|
5
|
+
export declare function runApply(args: ParsedArgs): Promise<number>;
|
|
6
|
+
export declare function runEdit(args: ParsedArgs): Promise<number>;
|
|
7
|
+
//# sourceMappingURL=mutate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mutate.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAc,MAAM,cAAc,CAAC;AAKtD,wBAAsB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAkCjE;AACD,wBAAsB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAgCjE;AACD,wBAAsB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBjE;AACD,wBAAsB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAmChE;AACD,wBAAsB,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAuF/D"}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
import * as fs from "node:fs/promises";
|
|
2
|
+
import * as os from "node:os";
|
|
3
|
+
import * as path from "node:path";
|
|
4
|
+
import { spawn } from "node:child_process";
|
|
5
|
+
import { flagString } from "../parser.js";
|
|
6
|
+
import { createGraph, deleteGraph, renameGraph, applyGraph, getGraph, getGraphSummary, } from "../../ops/graphs.js";
|
|
7
|
+
import { red, yellow, green, dim, bold } from "../colors.js";
|
|
8
|
+
import { confirm } from "../util/confirm.js";
|
|
9
|
+
export async function runCreate(args) {
|
|
10
|
+
const name = args.positional[0];
|
|
11
|
+
if (!name) {
|
|
12
|
+
process.stderr.write(`bp graphs create: name required.\nusage: bp graphs create <name> [--description=...] [--from-file=path.json]\n`);
|
|
13
|
+
return 1;
|
|
14
|
+
}
|
|
15
|
+
const fromFile = flagString(args, "from-file", "f");
|
|
16
|
+
const description = flagString(args, "description", "d") ?? "";
|
|
17
|
+
try {
|
|
18
|
+
const existing = await getGraphSummary(name).catch(() => null);
|
|
19
|
+
if (existing) {
|
|
20
|
+
process.stderr.write(`${red("✗")} graph "${name}" already exists. use \`bp graphs apply\` to overwrite.\n`);
|
|
21
|
+
return 1;
|
|
22
|
+
}
|
|
23
|
+
if (fromFile) {
|
|
24
|
+
const raw = await fs.readFile(fromFile, "utf8");
|
|
25
|
+
const data = JSON.parse(raw);
|
|
26
|
+
if (data.metadata?.name && data.metadata.name !== name) {
|
|
27
|
+
process.stderr.write(`${red("✗")} file's metadata.name is "${data.metadata.name}" but the create target is "${name}". rename in the file or call \`bp graphs apply\` instead.\n`);
|
|
28
|
+
return 1;
|
|
29
|
+
}
|
|
30
|
+
await applyGraph(name, data);
|
|
31
|
+
process.stdout.write(`${green("✓")} created ${bold(name)} from ${dim(fromFile)}\n`);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
await createGraph(name, { description });
|
|
35
|
+
process.stdout.write(`${green("✓")} created ${bold(name)}\n`);
|
|
36
|
+
}
|
|
37
|
+
return 0;
|
|
38
|
+
}
|
|
39
|
+
catch (err) {
|
|
40
|
+
process.stderr.write(`${red("✗")} ${err.message}\n`);
|
|
41
|
+
return 1;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export async function runDelete(args) {
|
|
45
|
+
const name = args.positional[0];
|
|
46
|
+
if (!name) {
|
|
47
|
+
process.stderr.write(`bp graphs delete: name required.\nusage: bp graphs delete <name> [-y]\n`);
|
|
48
|
+
return 1;
|
|
49
|
+
}
|
|
50
|
+
let summary;
|
|
51
|
+
try {
|
|
52
|
+
summary = await getGraphSummary(name);
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
process.stderr.write(`${red("✗")} ${err.message}\n`);
|
|
56
|
+
return 1;
|
|
57
|
+
}
|
|
58
|
+
if (!summary) {
|
|
59
|
+
process.stderr.write(`${red("✗")} graph "${name}" not found in the current scope.\n`);
|
|
60
|
+
return 1;
|
|
61
|
+
}
|
|
62
|
+
const ok = await confirm(`delete ${bold(name)} (${summary.nodeCount} nodes, ${summary.edgeCount} edges)? [y/N] `, args);
|
|
63
|
+
if (!ok) {
|
|
64
|
+
process.stdout.write(dim("aborted.\n"));
|
|
65
|
+
return 0;
|
|
66
|
+
}
|
|
67
|
+
try {
|
|
68
|
+
await deleteGraph(name);
|
|
69
|
+
process.stdout.write(`${green("✓")} deleted ${bold(name)}\n`);
|
|
70
|
+
return 0;
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
process.stderr.write(`${red("✗")} ${err.message}\n`);
|
|
74
|
+
return 1;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
export async function runRename(args) {
|
|
78
|
+
const [oldName, newName] = args.positional;
|
|
79
|
+
if (!oldName || !newName) {
|
|
80
|
+
process.stderr.write(`bp graphs rename: old + new names required.\nusage: bp graphs rename <old> <new>\n`);
|
|
81
|
+
return 1;
|
|
82
|
+
}
|
|
83
|
+
if (oldName === newName) {
|
|
84
|
+
process.stderr.write(`bp graphs rename: old and new names are the same.\n`);
|
|
85
|
+
return 1;
|
|
86
|
+
}
|
|
87
|
+
try {
|
|
88
|
+
await renameGraph(oldName, newName);
|
|
89
|
+
process.stdout.write(`${green("✓")} ${bold(oldName)} → ${bold(newName)}\n`);
|
|
90
|
+
return 0;
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
process.stderr.write(`${red("✗")} ${err.message}\n`);
|
|
94
|
+
return 1;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
export async function runApply(args) {
|
|
98
|
+
const file = flagString(args, "f", "file", "from-file");
|
|
99
|
+
if (!file) {
|
|
100
|
+
process.stderr.write(`bp graphs apply: -f <file> required.\nusage: bp graphs apply -f <file.json>\n`);
|
|
101
|
+
return 1;
|
|
102
|
+
}
|
|
103
|
+
let data;
|
|
104
|
+
try {
|
|
105
|
+
const raw = await fs.readFile(file, "utf8");
|
|
106
|
+
data = JSON.parse(raw);
|
|
107
|
+
}
|
|
108
|
+
catch (err) {
|
|
109
|
+
process.stderr.write(`${red("✗")} could not read ${file}: ${err.message}\n`);
|
|
110
|
+
return 1;
|
|
111
|
+
}
|
|
112
|
+
const explicit = args.positional[0];
|
|
113
|
+
const fileName = data.metadata?.name;
|
|
114
|
+
if (explicit && fileName && explicit !== fileName) {
|
|
115
|
+
process.stderr.write(`${red("✗")} name mismatch: argument is "${explicit}" but file's metadata.name is "${fileName}". pick one or fix the file.\n`);
|
|
116
|
+
return 1;
|
|
117
|
+
}
|
|
118
|
+
const name = explicit ?? fileName;
|
|
119
|
+
if (!name) {
|
|
120
|
+
process.stderr.write(`bp graphs apply: graph name not in file metadata; pass it as the first positional arg.\n`);
|
|
121
|
+
return 1;
|
|
122
|
+
}
|
|
123
|
+
try {
|
|
124
|
+
const { created } = await applyGraph(name, data);
|
|
125
|
+
process.stdout.write(`${green("✓")} ${created ? "created" : "applied"} ${bold(name)} (${data.nodes?.length ?? 0} nodes, ${data.edges?.length ?? 0} edges)\n`);
|
|
126
|
+
return 0;
|
|
127
|
+
}
|
|
128
|
+
catch (err) {
|
|
129
|
+
process.stderr.write(`${red("✗")} ${err.message}\n`);
|
|
130
|
+
return 1;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
export async function runEdit(args) {
|
|
134
|
+
const name = args.positional[0];
|
|
135
|
+
if (!name) {
|
|
136
|
+
process.stderr.write(`bp graphs edit: name required.\nusage: bp graphs edit <name>\n`);
|
|
137
|
+
return 1;
|
|
138
|
+
}
|
|
139
|
+
let result;
|
|
140
|
+
try {
|
|
141
|
+
result = await getGraph(name);
|
|
142
|
+
}
|
|
143
|
+
catch (err) {
|
|
144
|
+
process.stderr.write(`${red("✗")} ${err.message}\n`);
|
|
145
|
+
return 1;
|
|
146
|
+
}
|
|
147
|
+
if (result.kind === "missing") {
|
|
148
|
+
process.stderr.write(`${red("✗")} graph "${name}" not found in the current scope.\n`);
|
|
149
|
+
return 1;
|
|
150
|
+
}
|
|
151
|
+
if (result.kind === "encrypted") {
|
|
152
|
+
process.stderr.write(`${yellow("!")} graph "${name}" is encrypted — cannot edit from the CLI.\n`);
|
|
153
|
+
return 1;
|
|
154
|
+
}
|
|
155
|
+
const editorCmd = process.env.EDITOR || process.env.VISUAL || (process.platform === "win32" ? "notepad" : "vi");
|
|
156
|
+
const editorTokens = editorCmd.trim().split(/\s+/).filter(Boolean);
|
|
157
|
+
const editor = editorTokens[0];
|
|
158
|
+
const editorArgs = editorTokens.slice(1);
|
|
159
|
+
const userTmpDir = path.join(os.tmpdir(), `bp-${process.getuid?.() ?? "u"}`);
|
|
160
|
+
await fs.mkdir(userTmpDir, { recursive: true });
|
|
161
|
+
const tmpFile = path.join(userTmpDir, `edit-${process.pid}-${Date.now()}.json`);
|
|
162
|
+
const original = JSON.stringify(result.data, null, 2);
|
|
163
|
+
await fs.writeFile(tmpFile, original, { mode: 0o600 });
|
|
164
|
+
let cleanedUp = false;
|
|
165
|
+
let interrupted = false;
|
|
166
|
+
const cleanup = async () => {
|
|
167
|
+
if (cleanedUp)
|
|
168
|
+
return;
|
|
169
|
+
cleanedUp = true;
|
|
170
|
+
await fs.unlink(tmpFile).catch(() => { });
|
|
171
|
+
};
|
|
172
|
+
const onSig = () => {
|
|
173
|
+
interrupted = true;
|
|
174
|
+
process.exitCode = 130;
|
|
175
|
+
};
|
|
176
|
+
process.once("SIGINT", onSig);
|
|
177
|
+
process.once("SIGTERM", onSig);
|
|
178
|
+
try {
|
|
179
|
+
const exitCode = await new Promise((resolve, reject) => {
|
|
180
|
+
const child = spawn(editor, [...editorArgs, tmpFile], { stdio: "inherit" });
|
|
181
|
+
child.on("error", reject);
|
|
182
|
+
child.on("exit", (code) => resolve(code ?? 0));
|
|
183
|
+
});
|
|
184
|
+
if (interrupted)
|
|
185
|
+
return 130;
|
|
186
|
+
if (exitCode !== 0) {
|
|
187
|
+
process.stderr.write(`${yellow("!")} editor exited ${exitCode} — changes discarded.\n`);
|
|
188
|
+
return 1;
|
|
189
|
+
}
|
|
190
|
+
const updated = await fs.readFile(tmpFile, "utf8");
|
|
191
|
+
let parsed;
|
|
192
|
+
try {
|
|
193
|
+
parsed = JSON.parse(updated);
|
|
194
|
+
}
|
|
195
|
+
catch (err) {
|
|
196
|
+
process.stderr.write(`${red("✗")} edited file is not valid JSON: ${err.message}\n`);
|
|
197
|
+
process.stderr.write(dim(` preserved at ${tmpFile}\n`));
|
|
198
|
+
cleanedUp = true;
|
|
199
|
+
return 1;
|
|
200
|
+
}
|
|
201
|
+
const beforeKey = canonicalKey(result.data);
|
|
202
|
+
const afterKey = canonicalKey(parsed);
|
|
203
|
+
if (beforeKey === afterKey) {
|
|
204
|
+
process.stdout.write(dim("no changes.\n"));
|
|
205
|
+
return 0;
|
|
206
|
+
}
|
|
207
|
+
await applyGraph(name, parsed);
|
|
208
|
+
process.stdout.write(`${green("✓")} updated ${bold(name)}\n`);
|
|
209
|
+
return 0;
|
|
210
|
+
}
|
|
211
|
+
catch (err) {
|
|
212
|
+
process.stderr.write(`${red("✗")} ${err.message}\n`);
|
|
213
|
+
return 1;
|
|
214
|
+
}
|
|
215
|
+
finally {
|
|
216
|
+
process.removeListener("SIGINT", onSig);
|
|
217
|
+
process.removeListener("SIGTERM", onSig);
|
|
218
|
+
await cleanup();
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
function canonicalKey(data) {
|
|
222
|
+
const stripped = {
|
|
223
|
+
metadata: {
|
|
224
|
+
name: data.metadata?.name,
|
|
225
|
+
description: data.metadata?.description,
|
|
226
|
+
tags: [...(data.metadata?.tags ?? [])].sort(),
|
|
227
|
+
},
|
|
228
|
+
nodes: data.nodes,
|
|
229
|
+
edges: data.edges,
|
|
230
|
+
};
|
|
231
|
+
return stableStringify(stripped);
|
|
232
|
+
}
|
|
233
|
+
function stableStringify(v) {
|
|
234
|
+
if (v === null || typeof v !== "object")
|
|
235
|
+
return JSON.stringify(v);
|
|
236
|
+
if (Array.isArray(v))
|
|
237
|
+
return "[" + v.map(stableStringify).join(",") + "]";
|
|
238
|
+
const keys = Object.keys(v).sort();
|
|
239
|
+
return "{" + keys.map((k) => JSON.stringify(k) + ":" + stableStringify(v[k])).join(",") + "}";
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=mutate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutate.js","sourceRoot":"","sources":["../../../src/cli/commands/mutate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/open.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAkC1C,wBAAsB,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAuD/D"}
|