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.
Files changed (128) hide show
  1. package/README.md +123 -0
  2. package/dist/bin/bp.d.ts +3 -0
  3. package/dist/bin/bp.d.ts.map +1 -0
  4. package/dist/bin/bp.js +6 -0
  5. package/dist/bin/bp.js.map +1 -0
  6. package/dist/cli/colors.d.ts +20 -0
  7. package/dist/cli/colors.d.ts.map +1 -0
  8. package/dist/cli/colors.js +34 -0
  9. package/dist/cli/colors.js.map +1 -0
  10. package/dist/cli/commands/auth.d.ts +4 -0
  11. package/dist/cli/commands/auth.d.ts.map +1 -0
  12. package/dist/cli/commands/auth.js +48 -0
  13. package/dist/cli/commands/auth.js.map +1 -0
  14. package/dist/cli/commands/cat.d.ts +3 -0
  15. package/dist/cli/commands/cat.d.ts.map +1 -0
  16. package/dist/cli/commands/cat.js +28 -0
  17. package/dist/cli/commands/cat.js.map +1 -0
  18. package/dist/cli/commands/cloud-admin.d.ts +7 -0
  19. package/dist/cli/commands/cloud-admin.d.ts.map +1 -0
  20. package/dist/cli/commands/cloud-admin.js +169 -0
  21. package/dist/cli/commands/cloud-admin.js.map +1 -0
  22. package/dist/cli/commands/completion.d.ts +3 -0
  23. package/dist/cli/commands/completion.d.ts.map +1 -0
  24. package/dist/cli/commands/completion.js +156 -0
  25. package/dist/cli/commands/completion.js.map +1 -0
  26. package/dist/cli/commands/containers.d.ts +3 -0
  27. package/dist/cli/commands/containers.d.ts.map +1 -0
  28. package/dist/cli/commands/containers.js +29 -0
  29. package/dist/cli/commands/containers.js.map +1 -0
  30. package/dist/cli/commands/context.d.ts +4 -0
  31. package/dist/cli/commands/context.d.ts.map +1 -0
  32. package/dist/cli/commands/context.js +59 -0
  33. package/dist/cli/commands/context.js.map +1 -0
  34. package/dist/cli/commands/doctor.d.ts +3 -0
  35. package/dist/cli/commands/doctor.d.ts.map +1 -0
  36. package/dist/cli/commands/doctor.js +65 -0
  37. package/dist/cli/commands/doctor.js.map +1 -0
  38. package/dist/cli/commands/graphs.d.ts +3 -0
  39. package/dist/cli/commands/graphs.d.ts.map +1 -0
  40. package/dist/cli/commands/graphs.js +57 -0
  41. package/dist/cli/commands/graphs.js.map +1 -0
  42. package/dist/cli/commands/init.d.ts +3 -0
  43. package/dist/cli/commands/init.d.ts.map +1 -0
  44. package/dist/cli/commands/init.js +46 -0
  45. package/dist/cli/commands/init.js.map +1 -0
  46. package/dist/cli/commands/kbs.d.ts +3 -0
  47. package/dist/cli/commands/kbs.d.ts.map +1 -0
  48. package/dist/cli/commands/kbs.js +247 -0
  49. package/dist/cli/commands/kbs.js.map +1 -0
  50. package/dist/cli/commands/ls.d.ts +3 -0
  51. package/dist/cli/commands/ls.d.ts.map +1 -0
  52. package/dist/cli/commands/ls.js +81 -0
  53. package/dist/cli/commands/ls.js.map +1 -0
  54. package/dist/cli/commands/mutate.d.ts +7 -0
  55. package/dist/cli/commands/mutate.d.ts.map +1 -0
  56. package/dist/cli/commands/mutate.js +241 -0
  57. package/dist/cli/commands/mutate.js.map +1 -0
  58. package/dist/cli/commands/open.d.ts +3 -0
  59. package/dist/cli/commands/open.d.ts.map +1 -0
  60. package/dist/cli/commands/open.js +88 -0
  61. package/dist/cli/commands/open.js.map +1 -0
  62. package/dist/cli/commands/search.d.ts +3 -0
  63. package/dist/cli/commands/search.d.ts.map +1 -0
  64. package/dist/cli/commands/search.js +59 -0
  65. package/dist/cli/commands/search.js.map +1 -0
  66. package/dist/cli/commands/show.d.ts +3 -0
  67. package/dist/cli/commands/show.d.ts.map +1 -0
  68. package/dist/cli/commands/show.js +74 -0
  69. package/dist/cli/commands/show.js.map +1 -0
  70. package/dist/cli/commands/version.d.ts +2 -0
  71. package/dist/cli/commands/version.d.ts.map +1 -0
  72. package/dist/cli/commands/version.js +16 -0
  73. package/dist/cli/commands/version.js.map +1 -0
  74. package/dist/cli/help.d.ts +3 -0
  75. package/dist/cli/help.d.ts.map +1 -0
  76. package/dist/cli/help.js +118 -0
  77. package/dist/cli/help.js.map +1 -0
  78. package/dist/cli/output.d.ts +23 -0
  79. package/dist/cli/output.d.ts.map +1 -0
  80. package/dist/cli/output.js +189 -0
  81. package/dist/cli/output.js.map +1 -0
  82. package/dist/cli/parser.d.ts +9 -0
  83. package/dist/cli/parser.d.ts.map +1 -0
  84. package/dist/cli/parser.js +106 -0
  85. package/dist/cli/parser.js.map +1 -0
  86. package/dist/cli/router.d.ts +2 -0
  87. package/dist/cli/router.d.ts.map +1 -0
  88. package/dist/cli/router.js +123 -0
  89. package/dist/cli/router.js.map +1 -0
  90. package/dist/cli/util/confirm.d.ts +3 -0
  91. package/dist/cli/util/confirm.d.ts.map +1 -0
  92. package/dist/cli/util/confirm.js +37 -0
  93. package/dist/cli/util/confirm.js.map +1 -0
  94. package/dist/core/backpack.d.ts +1 -92
  95. package/dist/core/backpack.d.ts.map +1 -1
  96. package/dist/core/backpack.js +23 -127
  97. package/dist/core/backpack.js.map +1 -1
  98. package/dist/core/backpacks-registry.d.ts +2 -2
  99. package/dist/core/backpacks-registry.js +2 -2
  100. package/dist/mcp/tools/cloud-tools.d.ts +2 -3
  101. package/dist/mcp/tools/cloud-tools.d.ts.map +1 -1
  102. package/dist/mcp/tools/cloud-tools.js +240 -81
  103. package/dist/mcp/tools/cloud-tools.js.map +1 -1
  104. package/dist/mcp/tools/share-tools.js +1 -1
  105. package/dist/mcp/tools/share-tools.js.map +1 -1
  106. package/dist/mcp/tools/signal-tools.js +1 -1
  107. package/dist/mcp/tools/signal-tools.js.map +1 -1
  108. package/dist/ops/auth.d.ts +25 -0
  109. package/dist/ops/auth.d.ts.map +1 -0
  110. package/dist/ops/auth.js +144 -0
  111. package/dist/ops/auth.js.map +1 -0
  112. package/dist/ops/containers.d.ts +25 -0
  113. package/dist/ops/containers.d.ts.map +1 -0
  114. package/dist/ops/containers.js +144 -0
  115. package/dist/ops/containers.js.map +1 -0
  116. package/dist/ops/context.d.ts +30 -0
  117. package/dist/ops/context.d.ts.map +1 -0
  118. package/dist/ops/context.js +133 -0
  119. package/dist/ops/context.js.map +1 -0
  120. package/dist/ops/graphs.d.ts +48 -0
  121. package/dist/ops/graphs.d.ts.map +1 -0
  122. package/dist/ops/graphs.js +249 -0
  123. package/dist/ops/graphs.js.map +1 -0
  124. package/dist/ops/kb.d.ts +28 -0
  125. package/dist/ops/kb.d.ts.map +1 -0
  126. package/dist/ops/kb.js +162 -0
  127. package/dist/ops/kb.js.map +1 -0
  128. 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":"AAAA,OAAO,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAc,UAAU,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC7D,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAgB;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAClF,OAAO,CAAC,CAAC;IACb,CAAC;IACD,MAAM,GAAG,GAAe,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IACrG,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,MAAM,CAAC;QACZ,KAAK,IAAI;YACL,OAAO,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACrE,KAAK,KAAK,CAAC;QACX,KAAK,KAAK;YACN,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;QACzB,KAAK,QAAQ,CAAC;QACd,KAAK,KAAK;YACN,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC5B,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,CAAC;QACV,KAAK,QAAQ;YACT,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;QAC5B,KAAK,MAAM;YACP,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;QAC1B,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACR,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;QAC1B;YACI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,IAAI,oDAAoD,CAAC,CAAC;YACxG,OAAO,CAAC,CAAC;IACjB,CAAC;AACL,CAAC;AACD,KAAK,UAAU,WAAW,CAAC,IAAgB;IACvC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3F,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvG,IAAI,IAAI,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACvF,OAAO,CAAC,CAAC;IACb,CAAC;IACD,IAAI,KAAa,CAAC;IAClB,IAAI,OAAe,CAAC;IACpB,IAAI,IAAI,EAAE,CAAC;QACP,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,mBAAmB,IAAI,KAAM,GAAa,CAAC,OAAO,IAAI,CAAC,CAAC;YACxF,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,IAAI,GAAG,KAAK,IAAI;YACZ,OAAO,CAAC,CAAC;QACb,MAAM,QAAQ,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;QAC9C,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QAC3B,KAAK,GAAG,QAAQ,IAAI,QAAQ,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9F,CAAC;SACI,CAAC;QACF,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6EAA6E,CAAC,CAAC;YACpG,OAAO,CAAC,CAAC;QACb,CAAC;QACD,KAAK,GAAG,QAAQ,CAAC;QACjB,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;YACzF,OAAO,CAAC,CAAC;QACb,CAAC;QACD,OAAO,GAAG,UAAU,CAAC;IACzB,CAAC;IACD,IAAI,CAAC;QACD,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC;QACzF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5G,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;AACD,SAAS,uBAAuB,CAAC,GAAW;IAOxC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;QACtB,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAC7C,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACvD,IAAI,CAAC,QAAQ;QACT,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,EAAE,GAGJ,EAAE,CAAC;IACP,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACtD,IAAI,CAAC,CAAC;YACF,SAAS;QACb,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACf,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;YAChB,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC7C,CAAC;aACI,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC;YACpB,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC1C,EAAE,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClG,CAAC;IACL,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;AAC9C,CAAC;AACD,KAAK,UAAU,WAAW,CAAC,IAAgB;IACvC,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,EAAE,EAAE,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;QAC1F,OAAO,CAAC,CAAC;IACb,CAAC;IACD,IAAI,QAAQ,CAAC;IACb,IAAI,CAAC;QACD,QAAQ,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/B,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;IACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,qCAAqC,CAAC,CAAC;QACrF,OAAO,CAAC,CAAC;IACb,CAAC;IACD,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IACjF,IAAI,CAAC,EAAE,EAAE,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,CAAC;IACb,CAAC;IACD,IAAI,CAAC;QACD,MAAM,QAAQ,CAAC,EAAE,CAAC,CAAC;QACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxE,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;AACD,KAAK,UAAU,SAAS,CAAC,IAAgB;IACrC,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,EAAE,EAAE,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACxD,OAAO,CAAC,CAAC;IACb,CAAC;IACD,IAAI,GAAG,CAAC;IACR,IAAI,CAAC;QACD,GAAG,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1B,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;IACD,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;QAChE,OAAO,CAAC,CAAC;IACb,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChH,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IAC7E,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACjF,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC;IAC7B,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QACvB,IAAI,SAAS;YACT,OAAO;QACX,SAAS,GAAG,IAAI,CAAC;QACjB,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,GAAG,EAAE;QACf,WAAW,GAAG,IAAI,CAAC;QACnB,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC;IAC3B,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC9B,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC/B,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,UAAU,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAC5E,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC1B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QACH,IAAI,WAAW;YACX,OAAO,GAAG,CAAC;QACf,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,kBAAkB,QAAQ,yBAAyB,CAAC,CAAC;YACxF,OAAO,CAAC,CAAC;QACb,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACnD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;YAC3C,OAAO,CAAC,CAAC;QACb,CAAC;QACD,MAAM,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QACrI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACnE,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;YACO,CAAC;QACL,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACxC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACzC,MAAM,OAAO,EAAE,CAAC;IACpB,CAAC;AACL,CAAC;AACD,KAAK,UAAU,QAAQ,CAAC,IAAgB;IACpC,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,EAAE,EAAE,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACvD,OAAO,CAAC,CAAC;IACb,CAAC;IACD,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,qCAAqC,CAAC,CAAC;YACrF,OAAO,CAAC,CAAC;QACb,CAAC;QACD,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACjF,CAAC;aACI,CAAC;YACF,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAClC,CAAC;QACD,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,3 @@
1
+ import { ParsedArgs } from "../parser.js";
2
+ export declare function runLs(args: ParsedArgs): Promise<number>;
3
+ //# sourceMappingURL=ls.d.ts.map
@@ -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":"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"}
@@ -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,3 @@
1
+ import { ParsedArgs } from "../parser.js";
2
+ export declare function runOpen(args: ParsedArgs): Promise<number>;
3
+ //# sourceMappingURL=open.d.ts.map
@@ -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"}