@cleocode/cleo 2026.5.128 → 2026.5.130

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/dist/cli/index.js CHANGED
@@ -19682,8 +19682,12 @@ Recovery command: cleo docs update {slug} --file <your-file>`;
19682
19682
  const totalCount = docs.length;
19683
19683
  const projected = docs.map((doc) => ({
19684
19684
  id: doc.id,
19685
- sha256: `${doc.sha256.slice(0, 8)}\u2026`,
19686
- _sortSha: doc.sha256,
19685
+ // Full content hash — a SHA-256 field in a machine envelope must be the
19686
+ // real digest, never a display-truncated form (T11294: the per-doc
19687
+ // `docs fetch` the Manual-Write-Sweep had to spawn existed solely to
19688
+ // recover the full hash the list previously hid). Human/table rendering
19689
+ // abbreviates for display, not the data layer.
19690
+ sha256: doc.sha256,
19687
19691
  kind: "blob",
19688
19692
  mime: doc.mimeType ?? "\u2014",
19689
19693
  size: doc.sizeBytes,
@@ -19698,8 +19702,8 @@ Recovery command: cleo docs update {slug} --file <your-file>`;
19698
19702
  }));
19699
19703
  projected.sort(
19700
19704
  (a, b) => comparator(
19701
- { sha256: a._sortSha, slug: a.slug, createdAt: a.createdAt },
19702
- { sha256: b._sortSha, slug: b.slug, createdAt: b.createdAt }
19705
+ { sha256: a.sha256, slug: a.slug, createdAt: a.createdAt },
19706
+ { sha256: b.sha256, slug: b.slug, createdAt: b.createdAt }
19703
19707
  )
19704
19708
  );
19705
19709
  const truncated = totalCount > projected.length;
@@ -19719,7 +19723,7 @@ Recovery command: cleo docs update {slug} --file <your-file>`;
19719
19723
  limit: Number.isFinite(effectiveLimit) ? effectiveLimit : 0,
19720
19724
  orderBy,
19721
19725
  ...hintParts.length > 0 ? { hint: hintParts.join(" ") } : {},
19722
- attachments: projected.map(({ _sortSha: _drop, ...row }) => row),
19726
+ attachments: projected,
19723
19727
  attachmentBackend: backend
19724
19728
  },
19725
19729
  "list"
@@ -19730,8 +19734,8 @@ Recovery command: cleo docs update {slug} --file <your-file>`;
19730
19734
  const ownerDocs = await model.resolveByOwner(scopedOwner, { ownerType, kind: typeFilter });
19731
19735
  const projectedOwner = ownerDocs.map((doc) => ({
19732
19736
  id: doc.id,
19733
- sha256: `${doc.sha256.slice(0, 8)}\u2026`,
19734
- _sortSha: doc.sha256,
19737
+ // Full content hash (see project-scope note above; T11294).
19738
+ sha256: doc.sha256,
19735
19739
  kind: "blob",
19736
19740
  mime: doc.mimeType ?? "\u2014",
19737
19741
  size: doc.sizeBytes,
@@ -19744,8 +19748,8 @@ Recovery command: cleo docs update {slug} --file <your-file>`;
19744
19748
  }));
19745
19749
  projectedOwner.sort(
19746
19750
  (a, b) => comparator(
19747
- { sha256: a._sortSha, slug: a.slug, createdAt: a.createdAt },
19748
- { sha256: b._sortSha, slug: b.slug, createdAt: b.createdAt }
19751
+ { sha256: a.sha256, slug: a.slug, createdAt: a.createdAt },
19752
+ { sha256: b.sha256, slug: b.slug, createdAt: b.createdAt }
19749
19753
  )
19750
19754
  );
19751
19755
  const totalCountOwner = projectedOwner.length;
@@ -19766,7 +19770,7 @@ Recovery command: cleo docs update {slug} --file <your-file>`;
19766
19770
  limit: Number.isFinite(effectiveLimit) ? effectiveLimit : 0,
19767
19771
  orderBy,
19768
19772
  ...hintParts.length > 0 ? { hint: hintParts.join(" ") } : {},
19769
- attachments: slicedOwner.map(({ _sortSha: _drop, ...row }) => row),
19773
+ attachments: slicedOwner,
19770
19774
  attachmentBackend: backend
19771
19775
  },
19772
19776
  "list"
@@ -74108,6 +74112,7 @@ init_format_context();
74108
74112
  import { readFileSync as readFileSync21 } from "node:fs";
74109
74113
  import { dirname as dirname11, join as join37 } from "node:path";
74110
74114
  import { fileURLToPath as fileURLToPath7 } from "node:url";
74115
+ import { enforceNodeVersion } from "@cleocode/paths";
74111
74116
 
74112
74117
  // packages/cleo/src/cli/generated/command-manifest.ts
74113
74118
  var COMMAND_MANIFEST = [
@@ -75251,27 +75256,7 @@ async function resolveSubCommandForHelp(cmd, rawArgs) {
75251
75256
 
75252
75257
  // packages/cleo/src/cli/index.ts
75253
75258
  init_summary_context();
75254
- {
75255
- const [major] = process.versions.node.split(".").map(Number);
75256
- if (typeof major !== "number" || major < 24) {
75257
- process.stderr.write(
75258
- `
75259
- Error: cleo requires Node.js >= 24.0.0
75260
- You are running Node ${process.versions.node}.
75261
-
75262
- Node 24 provides the stable node:sqlite DatabaseSync API that CLEO
75263
- uses for its attachment store (zero native deps). Older Node versions
75264
- fail at runtime with ERR_UNKNOWN_BUILTIN_MODULE.
75265
-
75266
- Upgrade via nvm: nvm install 24 && nvm use 24
75267
- Or via fnm: fnm install 24 && fnm use 24
75268
- Or via NodeSource: https://github.com/nodesource/distributions
75269
-
75270
- `
75271
- );
75272
- process.exit(1);
75273
- }
75274
- }
75259
+ enforceNodeVersion();
75275
75260
  function getPackageVersion() {
75276
75261
  const pkgPath = join37(dirname11(fileURLToPath7(import.meta.url)), "../../package.json");
75277
75262
  const pkg = JSON.parse(readFileSync21(pkgPath, "utf-8"));