superbee 0.4.4-pre.15 → 0.4.4-pre.16
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 +1 -1
- package/SKILL.md +1 -1
- package/dist/publication-bridge.mjs +16 -2
- package/dist/publication.mjs +16 -2
- package/dist/superbee.mjs +36427 -35693
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -78,7 +78,7 @@ first-party support promise for native Windows. An older installed version is no
|
|
|
78
78
|
removed by this source change, and existing bundle files are not migrated by it. Review the affected release's notes before changing an existing
|
|
79
79
|
Windows installation. macOS/Linux users can continue using the normal installation and setup flow.
|
|
80
80
|
|
|
81
|
-
Run `superbee version --check`
|
|
81
|
+
Run `superbee version` to see which build you have. `superbee version --check` is not available on published builds yet: it exits 1 with `policy_disabled` and makes no network request. Check the npm page or `npm view superbee version` for the current release.
|
|
82
82
|
|
|
83
83
|
## First run: let your agent finish setup
|
|
84
84
|
|
package/SKILL.md
CHANGED
|
@@ -93,7 +93,7 @@ When the tone fits, a single 🐝 may mark a successful Superbee outcome.
|
|
|
93
93
|
|
|
94
94
|
## Sync conflicts
|
|
95
95
|
|
|
96
|
-
- A Git board and a hosted checkout share one playbook. When `superbee sync` exits 5 with conflict rows, run `superbee sync --inspect --doc <id>` to see your version and theirs, then `superbee sync --resolve keep|take|revise --doc <id>`: keep writes yours over theirs, take keeps theirs, revise keeps the document as you edited it to the merged result. `--resolve` never sends: run `superbee sync` after keep or revise. A Git board has already kept the teammate's version and saved yours aside;
|
|
96
|
+
- A Git board and a hosted checkout share one playbook. When `superbee sync` exits 5 with conflict rows, run `superbee sync --inspect --doc <id>` to see your version and theirs, then `superbee sync --resolve keep|take|revise --doc <id>`: keep writes yours over theirs, take keeps theirs, revise keeps the document as you edited it to the merged result. `--resolve` never sends: run `superbee sync` after keep or revise. A Git board has already kept the teammate's version and saved yours aside, and only the new conflict exits 5: `status` and later `sync` runs keep naming the saved copy, with the command that discards it, until it is settled; keep is refused when your copy also differs in frontmatter, so edit the document to the result and use revise. A hosted checkout keeps your file, treats any concurrent change to one document (even different frontmatter keys) as a conflict, and is explained in `$REFS/hosted-checkout.md`.
|
|
97
97
|
|
|
98
98
|
## Host setup
|
|
99
99
|
|
|
@@ -3278,6 +3278,17 @@ function isReservedFile(relPath) {
|
|
|
3278
3278
|
const base = toPosix(relPath).split("/").pop() ?? "";
|
|
3279
3279
|
return RESERVED_FILENAMES.includes(base);
|
|
3280
3280
|
}
|
|
3281
|
+
function isHiddenWalkEntry(name) {
|
|
3282
|
+
return name.startsWith(".");
|
|
3283
|
+
}
|
|
3284
|
+
function hasMarkdownExtension(name) {
|
|
3285
|
+
return name.toLowerCase().endsWith(".md");
|
|
3286
|
+
}
|
|
3287
|
+
function classifyWalkPath(relPath) {
|
|
3288
|
+
const segments = toPosix(relPath).split("/").filter((segment) => segment !== "");
|
|
3289
|
+
if (segments.some(isHiddenWalkEntry)) return "hidden";
|
|
3290
|
+
return hasMarkdownExtension(segments.at(-1) ?? "") ? "markdown" : "other";
|
|
3291
|
+
}
|
|
3281
3292
|
function conceptIdFromPath(relPath) {
|
|
3282
3293
|
const norm = toPosix(relPath).replace(/^\.?\//, "").split("/").filter((segment) => segment !== ".").join("/");
|
|
3283
3294
|
return norm.endsWith(".md") ? norm.slice(0, -3) : norm;
|
|
@@ -5333,7 +5344,7 @@ async function walkFiles(port, root, keep, sub = "") {
|
|
|
5333
5344
|
const entries = await port.entries(path3.join(root, sub)) ?? [];
|
|
5334
5345
|
const out = [];
|
|
5335
5346
|
for (const entry of entries) {
|
|
5336
|
-
if (entry.name
|
|
5347
|
+
if (isHiddenWalkEntry(entry.name)) continue;
|
|
5337
5348
|
const rel = sub === "" ? entry.name : `${sub}/${entry.name}`;
|
|
5338
5349
|
if (entry.kind === "directory") {
|
|
5339
5350
|
out.push(...await walkFiles(port, root, keep, rel));
|
|
@@ -5592,12 +5603,15 @@ var FilesystemBackend = class _FilesystemBackend {
|
|
|
5592
5603
|
return observed.state === "exact" && observed.value.kind === "file";
|
|
5593
5604
|
}
|
|
5594
5605
|
async listBlobs(prefix) {
|
|
5595
|
-
const files = await walkFiles(this.#port, this.#root, (name) => !name
|
|
5606
|
+
const files = await walkFiles(this.#port, this.#root, (name) => !hasMarkdownExtension(name));
|
|
5596
5607
|
const keys2 = files.map(toPosix);
|
|
5597
5608
|
const filtered = prefix ? keys2.filter((k) => k.startsWith(prefix)) : keys2;
|
|
5598
5609
|
filtered.sort(compareStorageKeys);
|
|
5599
5610
|
return filtered;
|
|
5600
5611
|
}
|
|
5612
|
+
classifyChangedPath(relPath) {
|
|
5613
|
+
return classifyWalkPath(relPath);
|
|
5614
|
+
}
|
|
5601
5615
|
capabilities() {
|
|
5602
5616
|
return {
|
|
5603
5617
|
history: false,
|
package/dist/publication.mjs
CHANGED
|
@@ -31232,6 +31232,17 @@ function isReservedFile(relPath) {
|
|
|
31232
31232
|
const base = toPosix(relPath).split("/").pop() ?? "";
|
|
31233
31233
|
return RESERVED_FILENAMES.includes(base);
|
|
31234
31234
|
}
|
|
31235
|
+
function isHiddenWalkEntry(name) {
|
|
31236
|
+
return name.startsWith(".");
|
|
31237
|
+
}
|
|
31238
|
+
function hasMarkdownExtension(name) {
|
|
31239
|
+
return name.toLowerCase().endsWith(".md");
|
|
31240
|
+
}
|
|
31241
|
+
function classifyWalkPath(relPath) {
|
|
31242
|
+
const segments = toPosix(relPath).split("/").filter((segment) => segment !== "");
|
|
31243
|
+
if (segments.some(isHiddenWalkEntry)) return "hidden";
|
|
31244
|
+
return hasMarkdownExtension(segments.at(-1) ?? "") ? "markdown" : "other";
|
|
31245
|
+
}
|
|
31235
31246
|
function conceptIdFromPath(relPath) {
|
|
31236
31247
|
const norm = toPosix(relPath).replace(/^\.?\//, "").split("/").filter((segment) => segment !== ".").join("/");
|
|
31237
31248
|
return norm.endsWith(".md") ? norm.slice(0, -3) : norm;
|
|
@@ -33294,7 +33305,7 @@ async function walkFiles(port, root, keep, sub = "") {
|
|
|
33294
33305
|
const entries = await port.entries(path3.join(root, sub)) ?? [];
|
|
33295
33306
|
const out = [];
|
|
33296
33307
|
for (const entry of entries) {
|
|
33297
|
-
if (entry.name
|
|
33308
|
+
if (isHiddenWalkEntry(entry.name)) continue;
|
|
33298
33309
|
const rel = sub === "" ? entry.name : `${sub}/${entry.name}`;
|
|
33299
33310
|
if (entry.kind === "directory") {
|
|
33300
33311
|
out.push(...await walkFiles(port, root, keep, rel));
|
|
@@ -33553,12 +33564,15 @@ var FilesystemBackend = class _FilesystemBackend {
|
|
|
33553
33564
|
return observed.state === "exact" && observed.value.kind === "file";
|
|
33554
33565
|
}
|
|
33555
33566
|
async listBlobs(prefix) {
|
|
33556
|
-
const files = await walkFiles(this.#port, this.#root, (name) => !name
|
|
33567
|
+
const files = await walkFiles(this.#port, this.#root, (name) => !hasMarkdownExtension(name));
|
|
33557
33568
|
const keys2 = files.map(toPosix);
|
|
33558
33569
|
const filtered = prefix ? keys2.filter((k) => k.startsWith(prefix)) : keys2;
|
|
33559
33570
|
filtered.sort(compareStorageKeys);
|
|
33560
33571
|
return filtered;
|
|
33561
33572
|
}
|
|
33573
|
+
classifyChangedPath(relPath) {
|
|
33574
|
+
return classifyWalkPath(relPath);
|
|
33575
|
+
}
|
|
33562
33576
|
capabilities() {
|
|
33563
33577
|
return {
|
|
33564
33578
|
history: false,
|