@intentic/fileq 1.337.0 → 1.339.0

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 (63) hide show
  1. package/README.md +29 -3
  2. package/bin/fileq-rg-pre +66 -0
  3. package/dist/app.d.ts.map +1 -1
  4. package/dist/app.js +6 -0
  5. package/dist/app.js.map +1 -1
  6. package/dist/commands/derive.command.d.ts.map +1 -1
  7. package/dist/commands/derive.command.js +10 -0
  8. package/dist/commands/derive.command.js.map +1 -1
  9. package/dist/commands/read.command.js +1 -1
  10. package/dist/commands/read.command.js.map +1 -1
  11. package/dist/commands/ripgrep-config.command.d.ts +3 -0
  12. package/dist/commands/ripgrep-config.command.d.ts.map +1 -0
  13. package/dist/commands/ripgrep-config.command.js +24 -0
  14. package/dist/commands/ripgrep-config.command.js.map +1 -0
  15. package/dist/commands/stamps.command.d.ts +3 -0
  16. package/dist/commands/stamps.command.d.ts.map +1 -0
  17. package/dist/commands/stamps.command.js +13 -0
  18. package/dist/commands/stamps.command.js.map +1 -0
  19. package/dist/lib/check/check-pdf.d.ts.map +1 -1
  20. package/dist/lib/check/check-pdf.js +2 -1
  21. package/dist/lib/check/check-pdf.js.map +1 -1
  22. package/dist/lib/check/package.d.ts.map +1 -1
  23. package/dist/lib/check/package.js +2 -1
  24. package/dist/lib/check/package.js.map +1 -1
  25. package/dist/lib/derive.d.ts.map +1 -1
  26. package/dist/lib/derive.js +39 -8
  27. package/dist/lib/derive.js.map +1 -1
  28. package/dist/lib/derivers/pdf.d.ts +1 -0
  29. package/dist/lib/derivers/pdf.d.ts.map +1 -1
  30. package/dist/lib/derivers/pdf.js +17 -9
  31. package/dist/lib/derivers/pdf.js.map +1 -1
  32. package/dist/lib/formats.d.ts +4 -0
  33. package/dist/lib/formats.d.ts.map +1 -1
  34. package/dist/lib/formats.js +15 -0
  35. package/dist/lib/formats.js.map +1 -1
  36. package/dist/lib/render/render.d.ts.map +1 -1
  37. package/dist/lib/render/render.js +5 -7
  38. package/dist/lib/render/render.js.map +1 -1
  39. package/dist/lib/sidecar.d.ts +14 -0
  40. package/dist/lib/sidecar.d.ts.map +1 -1
  41. package/dist/lib/sidecar.js +40 -4
  42. package/dist/lib/sidecar.js.map +1 -1
  43. package/dist/skill.d.ts.map +1 -1
  44. package/dist/skill.js +23 -2
  45. package/dist/skill.js.map +1 -1
  46. package/package.json +9 -7
  47. package/src/app.ts +6 -0
  48. package/src/cli.integration.test.ts +9 -0
  49. package/src/commands/derive.command.ts +12 -0
  50. package/src/commands/read.command.ts +3 -1
  51. package/src/commands/ripgrep-config.command.ts +31 -0
  52. package/src/commands/stamps.command.ts +14 -0
  53. package/src/lib/check/check-pdf.ts +2 -1
  54. package/src/lib/check/package.ts +2 -1
  55. package/src/lib/derive.test.ts +27 -1
  56. package/src/lib/derive.ts +68 -8
  57. package/src/lib/derivers/pdf.ts +25 -10
  58. package/src/lib/formats.ts +32 -0
  59. package/src/lib/render/render.ts +7 -7
  60. package/src/lib/sidecar.test.ts +32 -1
  61. package/src/lib/sidecar.ts +67 -4
  62. package/src/rg-preprocessor.integration.test.ts +139 -0
  63. package/src/skill.ts +27 -2
@@ -7,9 +7,15 @@ import { extractText, getDocumentProxy, getMeta } from "unpdf";
7
7
  import { onPath } from "../tools.js";
8
8
  import { stripRunningFurniture } from "./pdf-furniture.js";
9
9
  const SCAN_THRESHOLD_CHARS_PER_PAGE = 24;
10
- const MAX_OCR_PAGES = 20;
10
+ const DEFAULT_OCR_PAGES = 20;
11
+ const MAX_OCR_PAGES = 5000;
11
12
  const OCR_DPI = "200";
12
- const OCR_TIMEOUT_MS = 60_000 + MAX_OCR_PAGES * 15_000;
13
+ export const ocrPageCap = () => {
14
+ const asked = Number(process.env["FILEQ_OCR_PAGES"]);
15
+ return Number.isInteger(asked) && asked > 0 ? Math.min(asked, MAX_OCR_PAGES) : DEFAULT_OCR_PAGES;
16
+ };
17
+ const capNote = (cap) => `OCR stops at ${cap} pages: draw the rest with pdftoppm and read them with \`ocr <page.png>...\` if they matter`;
18
+ const ocrTimeoutMs = (pages) => 60_000 + pages * 15_000;
13
19
  const checked = new Map();
14
20
  export const ocrAvailable = () => {
15
21
  const path = process.env["PATH"] ?? "";
@@ -21,17 +27,18 @@ export const ocrAvailable = () => {
21
27
  return available;
22
28
  };
23
29
  const readPages = async (images) => {
24
- const result = await runBounded("ocr", images, { timeoutMs: OCR_TIMEOUT_MS, maxOutput: 16 * 1024 * 1024 });
30
+ const result = await runBounded("ocr", images, { timeoutMs: ocrTimeoutMs(images.length), maxOutput: 64 * 1024 * 1024 });
25
31
  if (!result.timedOut && (result.exitCode === 0 || result.exitCode === 1)) {
26
32
  return result.stdout.text;
27
33
  }
28
34
  throw new ProcessError("ocr", images, result);
29
35
  };
30
- const recognisePages = async (absPath, totalPages) => {
36
+ const recognisePages = async (absPath, totalPages, cap) => {
31
37
  const dir = await mkdtemp(join(tmpdir(), "fileq-ocr-"));
38
+ const last = Math.min(totalPages, cap);
32
39
  try {
33
- await execBounded("pdftoppm", ["-r", OCR_DPI, "-png", "-f", "1", "-l", String(Math.min(totalPages, MAX_OCR_PAGES)), absPath, join(dir, "page")], {
34
- timeoutMs: 120_000,
40
+ await execBounded("pdftoppm", ["-r", OCR_DPI, "-png", "-f", "1", "-l", String(last), absPath, join(dir, "page")], {
41
+ timeoutMs: 120_000 + last * 2_000,
35
42
  });
36
43
  const images = (await readdir(dir)).filter((name) => name.endsWith(".png")).toSorted();
37
44
  if (images.length === 0) {
@@ -78,12 +85,13 @@ export const pdfDeriver = {
78
85
  notes: [`no usable text layer across ${totalPages} page${plural} (a scan?): OCR is not part of this tier`],
79
86
  };
80
87
  }
81
- const recognised = await recognisePages(absPath, totalPages);
88
+ const cap = ocrPageCap();
89
+ const recognised = await recognisePages(absPath, totalPages, cap);
82
90
  const notes = [
83
91
  `scanned: text recognised by OCR (PaddleOCR) on ${recognised.length} of ${totalPages} page${plural} — recognised, not exact; check figures against the page image`,
84
92
  ];
85
- if (totalPages > MAX_OCR_PAGES) {
86
- notes.push(`OCR stops at ${MAX_OCR_PAGES} pages: draw the rest with pdftoppm and read them with \`ocr <page.png>...\` if they matter`);
93
+ if (totalPages > cap) {
94
+ notes.push(capNote(cap));
87
95
  }
88
96
  const { markdown, notes: stripped } = withoutFurniture(recognised);
89
97
  return { markdown, title, notes: [...notes, ...stripped] };
@@ -1 +1 @@
1
- {"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../../src/lib/derivers/pdf.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../../src/lib/derivers/pdf.ts"],"names":[],"mappings":"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"}
@@ -2,5 +2,9 @@ export type Format = "docx" | "xlsx" | "pptx" | "pdf" | "image" | "media" | "htm
2
2
  export declare const EXTENSION_FORMAT: Record<string, Format>;
3
3
  export declare const detectFormat: (absPath: string) => Promise<Format | undefined>;
4
4
  export declare const claimedFormat: (absPath: string) => Promise<Format | undefined>;
5
+ export declare const DOCUMENT_FORMATS: ReadonlySet<Format>;
6
+ export declare const documentExtensions: () => string[];
7
+ export declare const documentFormatOf: (path: string) => Format | undefined;
8
+ export declare const ripgrepConfigLines: (pre: string) => string[];
5
9
  export declare const gitAttributeLines: () => string[];
6
10
  //# sourceMappingURL=formats.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"formats.d.ts","sourceRoot":"","sources":["../../src/lib/formats.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AA6C9J,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAqDnD,CAAC;AAMF,eAAO,MAAM,YAAY,YAAmB,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAS9E,CAAC;AAMF,eAAO,MAAM,aAAa,YAAmB,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAsF,CAAC;AAUvK,eAAO,MAAM,iBAAiB,QAAO,MAAM,EAIxB,CAAC"}
1
+ {"version":3,"file":"formats.d.ts","sourceRoot":"","sources":["../../src/lib/formats.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AA6C9J,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAqDnD,CAAC;AAMF,eAAO,MAAM,YAAY,YAAmB,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAS9E,CAAC;AAMF,eAAO,MAAM,aAAa,YAAmB,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAsF,CAAC;AAMvK,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,CAAgF,CAAC;AAGlI,eAAO,MAAM,kBAAkB,QAAO,MAAM,EAIzB,CAAC;AAGpB,eAAO,MAAM,gBAAgB,SAAU,MAAM,KAAG,MAAM,GAAG,SAGxD,CAAC;AASF,eAAO,MAAM,kBAAkB,QAAS,MAAM,KAAG,MAAM,EAItD,CAAC;AAUF,eAAO,MAAM,iBAAiB,QAAO,MAAM,EAIxB,CAAC"}
@@ -102,6 +102,21 @@ export const detectFormat = async (absPath) => {
102
102
  return byExtension;
103
103
  };
104
104
  export const claimedFormat = async (absPath) => (await detectFormat(absPath)) ?? EXTENSION_FORMAT[extname(absPath).toLowerCase()];
105
+ export const DOCUMENT_FORMATS = new Set(["pdf", "docx", "xlsx", "pptx", "odt", "ods", "odp", "rtf", "epub"]);
106
+ export const documentExtensions = () => Object.entries(EXTENSION_FORMAT)
107
+ .filter(([, format]) => DOCUMENT_FORMATS.has(format))
108
+ .map(([extension]) => extension)
109
+ .toSorted();
110
+ export const documentFormatOf = (path) => {
111
+ const format = EXTENSION_FORMAT[extname(path).toLowerCase()];
112
+ return format !== undefined && DOCUMENT_FORMATS.has(format) ? format : undefined;
113
+ };
114
+ const caseGlob = (extension) => `*.{${extension.slice(1)},${extension.slice(1).toUpperCase()}}`;
115
+ export const ripgrepConfigLines = (pre) => [
116
+ "# fileq: ripgrep searches the text of documents, cited by page (`[p. 12] `); see `fileq ripgrep-config --help`.",
117
+ `--pre=${pre}`,
118
+ ...documentExtensions().map((extension) => `--pre-glob=${caseGlob(extension)}`),
119
+ ];
105
120
  const TEXT_UNDERNEATH = new Set(["html"]);
106
121
  export const gitAttributeLines = () => Object.entries(EXTENSION_FORMAT)
107
122
  .filter(([, format]) => !TEXT_UNDERNEATH.has(format))
@@ -1 +1 @@
1
- {"version":3,"file":"formats.js","sourceRoot":"","sources":["../../src/lib/formats.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formats.js","sourceRoot":"","sources":["../../src/lib/formats.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/lib/render/render.ts"],"names":[],"mappings":"AAQA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAG3D,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAQnE,eAAO,MAAM,YAAY,mCAAsC,CAAC;AAIhE,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,eAAO,MAAM,YAAY,OAAO,CAAC;AAKjC,qBAAa,aAAc,SAAQ,KAAK;CAAG;AAE3C,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,CAAC;IAEjD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAEpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;CAC5B;AAWD,eAAO,MAAM,aAAa,YAAa,MAAM,iBAAiB,MAAM,GAAG,SAAS,KAAG,MAOlF,CAAC;AAyEF,eAAO,MAAM,cAAc,YAAmB,aAAa,iBAAiB,MAAM,GAAG,SAAS,KAAG,OAAO,CAAC,YAAY,CAkDpH,CAAC"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/lib/render/render.ts"],"names":[],"mappings":"AAUA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAG3D,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAQnE,eAAO,MAAM,YAAY,mCAAsC,CAAC;AAIhE,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,eAAO,MAAM,YAAY,OAAO,CAAC;AAKjC,qBAAa,aAAc,SAAQ,KAAK;CAAG;AAE3C,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,CAAC;IAEjD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAEpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;CAC5B;AAWD,eAAO,MAAM,aAAa,YAAa,MAAM,iBAAiB,MAAM,GAAG,SAAS,KAAG,MAOlF,CAAC;AAuEF,eAAO,MAAM,cAAc,YAAmB,aAAa,iBAAiB,MAAM,GAAG,SAAS,KAAG,OAAO,CAAC,YAAY,CAkDpH,CAAC"}
@@ -2,6 +2,8 @@ import { createHash } from "node:crypto";
2
2
  import { copyFile, mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
3
3
  import { tmpdir } from "node:os";
4
4
  import { basename, join } from "node:path";
5
+ import { parseJsonOr } from "@intentic/base/json";
6
+ import { readTextIfExists } from "@intentic/base/fs";
5
7
  import { toolOutDir } from "@intentic/agent-cli/env";
6
8
  import { STATE_DIR } from "@intentic/constants";
7
9
  import { getDocumentProxy } from "unpdf";
@@ -27,13 +29,9 @@ export const defaultOutDir = (absPath, workspaceRoot) => {
27
29
  return join(toolOutDir("fileq"), "rendered", `${basename(absPath).toLowerCase().replaceAll(/[^a-z0-9.]+/g, "-")}-${hash}`);
28
30
  };
29
31
  const readStamp = async (dir) => {
30
- try {
31
- const parsed = JSON.parse(await readFile(join(dir, STAMP_FILE), "utf8"));
32
- return parsed.sha256 === undefined || parsed.size === undefined || parsed.total === undefined ? undefined : { sha256: parsed.sha256, size: parsed.size, total: parsed.total };
33
- }
34
- catch {
35
- return undefined;
36
- }
32
+ const text = await readTextIfExists(join(dir, STAMP_FILE));
33
+ const parsed = text === undefined ? undefined : parseJsonOr(text, undefined);
34
+ return parsed?.sha256 === undefined || parsed.size === undefined || parsed.total === undefined ? undefined : { sha256: parsed.sha256, size: parsed.size, total: parsed.total };
37
35
  };
38
36
  const clearImages = async (dir) => {
39
37
  const names = await listDir(dir);
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/lib/render/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../../src/lib/render/render.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,21 @@ export interface SidecarFront {
8
8
  readonly deriver: string | undefined;
9
9
  readonly derivedAt: string | undefined;
10
10
  readonly title: string | undefined;
11
+ readonly sourceSize: string | undefined;
12
+ readonly sourceMtime: string | undefined;
11
13
  readonly notes: readonly string[];
12
14
  }
15
+ export interface SourceStat {
16
+ readonly size: string;
17
+ readonly mtime: string;
18
+ }
19
+ export declare const sourceStatOf: (stats: {
20
+ readonly size: bigint;
21
+ readonly mtimeNs: bigint;
22
+ }) => SourceStat;
23
+ export declare const readSourceStat: (absPath: string) => Promise<SourceStat | undefined>;
24
+ export declare const ocrCapOf: (notes: readonly string[]) => number | undefined;
25
+ export declare const sourceUnchanged: (front: SidecarFront, now: SourceStat | undefined) => boolean;
13
26
  export declare const parseSidecarFront: (content: string) => SidecarFront;
14
27
  export declare const sidecarBody: (content: string) => string;
15
28
  export declare const readSidecar: (sidecarPath: string) => Promise<string | undefined>;
@@ -20,6 +33,7 @@ export interface DerivedEntry {
20
33
  readonly deriverStamp: string;
21
34
  readonly doc: DerivedDoc;
22
35
  readonly derivedAt: Date;
36
+ readonly sourceStat?: SourceStat | undefined;
23
37
  }
24
38
  export interface WriteSidecarInput extends Omit<DerivedEntry, "source"> {
25
39
  readonly relPath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"sidecar.d.ts","sourceRoot":"","sources":["../../src/lib/sidecar.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AASxD,eAAO,MAAM,WAAW,kCAAqC,CAAC;AAE9D,eAAO,MAAM,cAAc,kBAAmB,MAAM,WAAW,MAAM,KAAG,MAA2D,CAAC;AAEpI,eAAO,MAAM,YAAY,YAAa,MAAM,KAAG,OAAO,CAAC,MAAM,CAOvD,CAAC;AAEP,MAAM,WAAW,YAAY;IAEzB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAEnC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAMD,eAAO,MAAM,iBAAiB,YAAa,MAAM,KAAG,YA0BnD,CAAC;AAGF,eAAO,MAAM,WAAW,YAAa,MAAM,KAAG,MAM7C,CAAC;AAEF,eAAO,MAAM,WAAW,gBAAuB,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAMjF,CAAC;AAEF,eAAO,MAAM,OAAO,aAAc,MAAM,GAAG,SAAS,aAAa,MAAM,gBAAgB,MAAM,KAAG,OAM/F,CAAC;AAEF,MAAM,WAAW,YAAY;IAEzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAkB,SAAQ,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC;IACnE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC5B;AASD,eAAO,MAAM,YAAY,SAAgB,MAAM,SAAS,YAAY,KAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAkB5H,CAAC;AAGF,eAAO,MAAM,YAAY,kBAAyB,MAAM,SAAS,iBAAiB,KAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAK1I,CAAC;AAKF,eAAO,MAAM,kBAAkB,kBAAyB,MAAM,KAAG,OAAO,CAAC,IAAI,CAS5E,CAAC;AAGF,eAAO,MAAM,aAAa,kBAAyB,MAAM,WAAW,MAAM,KAAG,OAAO,CAAC,OAAO,CAO3F,CAAC"}
1
+ {"version":3,"file":"sidecar.d.ts","sourceRoot":"","sources":["../../src/lib/sidecar.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { createReadStream } from "node:fs";
3
- import { readFile, rm, writeFile } from "node:fs/promises";
3
+ import { readFile, rm, stat, writeFile } from "node:fs/promises";
4
4
  import { join } from "node:path";
5
5
  import { estimateTokens } from "@intentic/base/format";
6
6
  import { writeFileAtomic } from "@intentic/base/fs";
7
7
  import { neutralizeOutsideText } from "@intentic/base/outside-text";
8
- import { STATE_DIR } from "@intentic/constants";
9
- export const DERIVED_DIR = `${STATE_DIR}/local/cache/derived`;
8
+ import { DERIVED_SHADOWS_DIR } from "@intentic/constants";
9
+ export const DERIVED_DIR = DERIVED_SHADOWS_DIR;
10
10
  export const sidecarPathFor = (workspaceRoot, relPath) => join(workspaceRoot, DERIVED_DIR, `${relPath}.md`);
11
11
  export const sha256OfFile = (absPath) => new Promise((resolve, reject) => {
12
12
  const hash = createHash("sha256");
@@ -15,7 +15,40 @@ export const sha256OfFile = (absPath) => new Promise((resolve, reject) => {
15
15
  .on("data", (chunk) => hash.update(chunk))
16
16
  .on("end", () => resolve(hash.digest("hex")));
17
17
  });
18
- const EMPTY_FRONT = { source: undefined, sha256: undefined, deriver: undefined, derivedAt: undefined, title: undefined, notes: [] };
18
+ const EMPTY_FRONT = {
19
+ source: undefined,
20
+ sha256: undefined,
21
+ deriver: undefined,
22
+ derivedAt: undefined,
23
+ title: undefined,
24
+ sourceSize: undefined,
25
+ sourceMtime: undefined,
26
+ notes: [],
27
+ };
28
+ export const sourceStatOf = (stats) => {
29
+ const seconds = stats.mtimeNs / 1000000000n;
30
+ const nanos = stats.mtimeNs % 1000000000n;
31
+ return { size: stats.size.toString(), mtime: `${seconds.toString()}.${nanos.toString().padStart(9, "0")}` };
32
+ };
33
+ export const readSourceStat = async (absPath) => {
34
+ try {
35
+ return sourceStatOf(await stat(absPath, { bigint: true }));
36
+ }
37
+ catch {
38
+ return undefined;
39
+ }
40
+ };
41
+ const CAP_NOTE = /^OCR stops at (\d+) pages/;
42
+ export const ocrCapOf = (notes) => {
43
+ for (const note of notes) {
44
+ const match = CAP_NOTE.exec(note);
45
+ if (match !== null) {
46
+ return Number(match[1]);
47
+ }
48
+ }
49
+ return undefined;
50
+ };
51
+ export const sourceUnchanged = (front, now) => now !== undefined && front.sourceSize === now.size && front.sourceMtime === now.mtime;
19
52
  export const parseSidecarFront = (content) => {
20
53
  if (!content.startsWith("---\n")) {
21
54
  return EMPTY_FRONT;
@@ -41,6 +74,8 @@ export const parseSidecarFront = (content) => {
41
74
  deriver: field("deriver"),
42
75
  derivedAt: field("derived_at"),
43
76
  title: decode(field("title")),
77
+ sourceSize: field("source_size"),
78
+ sourceMtime: field("source_mtime"),
44
79
  notes: [...head.matchAll(/^note: (.+)$/gm)].map((match) => decode(match[1]) ?? ""),
45
80
  };
46
81
  };
@@ -74,6 +109,7 @@ export const writeDerived = async (path, entry) => {
74
109
  "---",
75
110
  ...(entry.source === undefined ? [] : [`source: ${entry.source}`]),
76
111
  `sha256: ${entry.sourceSha}`,
112
+ ...(entry.sourceStat === undefined ? [] : [`source_size: ${entry.sourceStat.size}`, `source_mtime: ${entry.sourceStat.mtime}`]),
77
113
  `deriver: ${entry.deriverStamp}`,
78
114
  `derived_at: ${entry.derivedAt.toISOString()}`,
79
115
  ...(title === undefined ? [] : [`title: ${JSON.stringify(title)}`]),
@@ -1 +1 @@
1
- {"version":3,"file":"sidecar.js","sourceRoot":"","sources":["../../src/lib/sidecar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sidecar.js","sourceRoot":"","sources":["../../src/lib/sidecar.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../src/skill.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,cAAc;IAE3B,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,YAAY,CAAC;CAC3C;AAqCD,eAAO,MAAM,UAAU,aAAc,cAAc,KAAG,MAsErD,CAAC"}
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../src/skill.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,cAAc;IAE3B,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,YAAY,CAAC;CAC3C;AA8DD,eAAO,MAAM,UAAU,aAAc,cAAc,KAAG,MAsErD,CAAC"}
package/dist/skill.js CHANGED
@@ -27,9 +27,30 @@ text, not "Binary files differ": every derivable extension is routed through fil
27
27
  diff; do not convert both versions by hand.
28
28
 
29
29
  `;
30
+ const SEARCH = {
31
+ sandbox: `## Searching documents
32
+ The text of every pdf, docx, xlsx, pptx, odt, ods, odp, rtf and epub in the workspace is searchable under the
33
+ document's own path, kept current as files change:
34
+ - \`rg <pattern>\` in the shell searches documents along with code, through fileq's preprocessor. A hit reads
35
+ \`docs/terms.pdf:345:[p. 12] … wniosek …\`: the line number counts lines of the document's text, and
36
+ \`[p. 12] \` (or \`[slide 3] \`) is the page or slide that line is on. Use \`rg\` in the shell for documents:
37
+ a Grep tool that runs its own bundled ripgrep may skip them.
38
+ - \`iq "<question>"\` finds documents by meaning too; their passages carry the same page marks.
39
+ - When you answer from a document, cite it as file and page: "docs/terms.pdf, p. 12". Read the page around a hit
40
+ with \`fileq read <file>\` (or the sidecar it names) rather than guessing from one line.
41
+ - Scans are OCR'd only where the image carries the OCR models, and the shadow notes it when they are missing.
42
+
43
+ `,
44
+ standalone: `## Searching documents
45
+ \`fileq ripgrep-config > ~/.config/fileq.ripgreprc\` and \`RIPGREP_CONFIG_PATH=~/.config/fileq.ripgreprc\` make plain
46
+ \`rg\` search pdf, docx, xlsx, pptx, odt, ods, odp, rtf and epub as text, each hit cited by page
47
+ (\`docs/terms.pdf:345:[p. 12] …\`). Cite answers from a document as file and page.
48
+
49
+ `,
50
+ };
30
51
  export const fileqSkill = ({ host }) => `---
31
52
  name: fileq
32
- description: Read binary files (docx, xlsx, pptx, pdf, odt, epub, ipynb, images, audio, archives, V8 profiles) as budgeted markdown with \`fileq\`, size up csv, json or logs too big to cat, and check and render a docx, pptx, xlsx or pdf you made. Use instead of guessing from a filename, ad-hoc converters, or delivering it unseen.
53
+ description: Read binary files (docx, xlsx, pptx, pdf, odt, epub, ipynb, images, audio, archives, V8 profiles) as budgeted markdown with \`fileq\`, search documents' text cited by page, size up csv, json or logs too big to cat, and check and render a docx, pptx, xlsx or pdf you made. Use instead of guessing from a filename, ad-hoc converters, or delivering it unseen.
33
54
  ---
34
55
 
35
56
  # fileq: binary files as markdown
@@ -62,7 +83,7 @@ ${OCR_REFUSAL[host]}
62
83
  - Plain text (md, csv, txt, code) is not fileq's business: Read it directly — but see below for the big ones.
63
84
  - Web pages belong to \`webq\`; images for a vision model belong to the Read tool, which shows the pixels.
64
85
 
65
- ${host === "sandbox" ? TEXTCONV : ""}Exit codes: 0 content, 1 nothing derivable, 2 broken invocation or install.
86
+ ${SEARCH[host]}${host === "sandbox" ? TEXTCONV : ""}Exit codes: 0 content, 1 nothing derivable, 2 broken invocation or install.
66
87
 
67
88
  ## After you produce a document
68
89
  A deck, report, spreadsheet or PDF made for someone is not finished until you have checked it and looked at it.
package/dist/skill.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"skill.js","sourceRoot":"","sources":["../src/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAavD,MAAM,UAAU,GAA2C;IACvD,OAAO,EAAE,gFAAgF;IACzF,UAAU,EAAE,kDAAkD;CACjE,CAAC;AAEF,MAAM,WAAW,GAA2C;IACxD,OAAO,EAAE;;;+FAGkF;IAC3F,UAAU,EAAE;;;kEAGkD;CACjE,CAAC;AAKF,MAAM,YAAY,GAAG;IACjB,OAAO,EAAE;;4GAE+F;IACxG,UAAU,EAAE;2GAC2F;CACzD,CAAC;AAGnD,MAAM,QAAQ,GAAG;;;;;CAKhB,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAE,IAAI,EAAkB,EAAU,EAAE,CAAC;;;;;;;;;;;;;;;qBAe3C,UAAU,CAAC,IAAI,CAAC;;;;;;;;;;;;+EAY0C,WAAW;;;;EAIxF,WAAW,CAAC,IAAI,CAAC;;;;EAIjB,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;KAW/B,YAAY,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC;;;;EAI/C,eAAe;;;;;;;;;;;;;;;;;;;;CAoBhB,CAAC"}
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../src/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAavD,MAAM,UAAU,GAA2C;IACvD,OAAO,EAAE,gFAAgF;IACzF,UAAU,EAAE,kDAAkD;CACjE,CAAC;AAEF,MAAM,WAAW,GAA2C;IACxD,OAAO,EAAE;;;+FAGkF;IAC3F,UAAU,EAAE;;;kEAGkD;CACjE,CAAC;AAKF,MAAM,YAAY,GAAG;IACjB,OAAO,EAAE;;4GAE+F;IACxG,UAAU,EAAE;2GAC2F;CACzD,CAAC;AAGnD,MAAM,QAAQ,GAAG;;;;;CAKhB,CAAC;AAKF,MAAM,MAAM,GAAG;IACX,OAAO,EAAE;;;;;;;;;;;;CAYZ;IACG,UAAU,EAAE;;;;;CAKf;CACiD,CAAC;AAEnD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,EAAE,IAAI,EAAkB,EAAU,EAAE,CAAC;;;;;;;;;;;;;;;qBAe3C,UAAU,CAAC,IAAI,CAAC;;;;;;;;;;;;+EAY0C,WAAW;;;;EAIxF,WAAW,CAAC,IAAI,CAAC;;;;EAIjB,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;KAW9C,YAAY,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC;;;;EAI/C,eAAe;;;;;;;;;;;;;;;;;;;;CAoBhB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intentic/fileq",
3
- "version": "1.337.0",
3
+ "version": "1.339.0",
4
4
  "description": "fileq, agent-native file reading: any binary workspace file (docx, xlsx, pptx, pdf, images, audio, archives) as clean budgeted markdown, cached by content so a repeat read is instant",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -10,6 +10,7 @@
10
10
  "directory": "_sandbox/fileq"
11
11
  },
12
12
  "files": [
13
+ "bin",
13
14
  "dist",
14
15
  "src",
15
16
  "!src/testing.ts",
@@ -21,7 +22,8 @@
21
22
  "registry": "https://registry.npmjs.org/"
22
23
  },
23
24
  "bin": {
24
- "fileq": "./dist/cli.js"
25
+ "fileq": "./dist/cli.js",
26
+ "fileq-rg-pre": "./bin/fileq-rg-pre"
25
27
  },
26
28
  "exports": {
27
29
  "./NOTICE": "./NOTICE",
@@ -71,11 +73,11 @@
71
73
  }
72
74
  },
73
75
  "dependencies": {
74
- "@intentic/agent-cli": "1.337.0",
75
- "@intentic/base": "1.337.0",
76
- "@intentic/constants": "1.337.0",
77
- "@intentic/webq": "1.337.0",
78
- "@intentic/workspace-ignore": "1.337.0",
76
+ "@intentic/agent-cli": "1.339.0",
77
+ "@intentic/base": "1.339.0",
78
+ "@intentic/constants": "1.339.0",
79
+ "@intentic/webq": "1.339.0",
80
+ "@intentic/workspace-ignore": "1.339.0",
79
81
  "@stricli/core": "1.3.0",
80
82
  "exceljs": "4.4.0",
81
83
  "exifr": "7.1.3",
package/src/app.ts CHANGED
@@ -5,6 +5,8 @@ import { deriveCommand } from "./commands/derive.command.js";
5
5
  import { gitAttributesCommand } from "./commands/git-attributes.command.js";
6
6
  import { readCommand } from "./commands/read.command.js";
7
7
  import { renderCommand } from "./commands/render.command.js";
8
+ import { ripgrepConfigCommand } from "./commands/ripgrep-config.command.js";
9
+ import { stampsCommand } from "./commands/stamps.command.js";
8
10
 
9
11
  // The agent-facing contract, kept small — this is what `fileq --help` prints.
10
12
  const HELP = `fileq — binary workspace files as clean, budgeted markdown.
@@ -20,6 +22,8 @@ markdown SIDECAR under .intentic/local/cache/derived/<path>.md.
20
22
  fileq derive <file…> converge named files' sidecars (stale→derive, gone→remove)
21
23
  fileq read --plain <f> the markdown alone, for a program; git's textconv driver
22
24
  fileq git-attributes the gitattributes that route documents through it
25
+ fileq ripgrep-config a ripgrep config (RIPGREP_CONFIG_PATH) so plain \`rg\`
26
+ searches documents' text, each line cited \`[p. N] \`
23
27
 
24
28
  After producing a document, check it and look at it:
25
29
 
@@ -47,6 +51,8 @@ export const app = buildApplication(
47
51
  render: renderCommand,
48
52
  derive: deriveCommand,
49
53
  gitAttributes: gitAttributesCommand,
54
+ ripgrepConfig: ripgrepConfigCommand,
55
+ stamps: stampsCommand,
50
56
  },
51
57
  defaultCommand: "read",
52
58
  docs: { brief: "fileq, agent-native file reading: binary files as clean budgeted markdown", fullDescription: HELP },
@@ -80,6 +80,15 @@ describe("derive", () => {
80
80
  expect(exitCode).toBe(1);
81
81
  });
82
82
 
83
+ it("still reads a file the shadow tree refuses, through the content cache alone", async () => {
84
+ mkdirSync(join(root, "refs/other"), { recursive: true });
85
+ writeFileSync(join(root, "refs/other/spec.docx"), docxBytes("Spec", ["Shelved body line."]));
86
+ const { out, exitCode } = await fileq("read", "--plain", join(root, "refs/other/spec.docx"));
87
+ expect(exitCode ?? 0).toBe(0);
88
+ expect(out).toContain("Shelved body line.");
89
+ expect(existsSync(sidecarOf("refs/other/spec.docx"))).toBe(false);
90
+ });
91
+
83
92
  it("a forged envelope marker in the document dies in the sidecar's bytes", async () => {
84
93
  writeFileSync(
85
94
  join(root, "evil.docx"),
@@ -1,11 +1,13 @@
1
1
  /* `fileq derive` derives metadata from one input file. */
2
2
  import { resolve } from "node:path";
3
+ import { countParser } from "@intentic/agent-cli/flags";
3
4
  import { buildCommand, type CommandContext } from "@stricli/core";
4
5
  import { ensureSidecar, type Outcome } from "../lib/derive.js";
5
6
  import { workspaceRoot } from "../lib/env.js";
6
7
 
7
8
  interface DeriveFlags {
8
9
  readonly json: boolean;
10
+ readonly ocrPages?: number;
9
11
  }
10
12
 
11
13
  export const outcomeLine = (outcome: Outcome): string => {
@@ -26,6 +28,12 @@ export const deriveCommand = buildCommand({
26
28
  parameters: {
27
29
  flags: {
28
30
  json: { kind: "boolean", default: false, brief: "One JSON object per line" },
31
+ ocrPages: {
32
+ kind: "parsed",
33
+ parse: countParser,
34
+ optional: true,
35
+ brief: "Recognise up to this many pages of a scanned pdf (default 20; the daemon's background keeper asks for more)",
36
+ },
29
37
  },
30
38
  positional: { kind: "array", parameter: { parse: String, brief: "Files to converge, workspace-root-relative (the watcher's own namespace) or absolute", placeholder: "file" } },
31
39
  },
@@ -41,6 +49,10 @@ export const deriveCommand = buildCommand({
41
49
  process.exitCode = 2;
42
50
  return;
43
51
  }
52
+ // The pdf reader reads its cap from the environment, so the flag reaches it however deep the call chain.
53
+ if (flags.ocrPages !== undefined) {
54
+ process.env["FILEQ_OCR_PAGES"] = String(flags.ocrPages);
55
+ }
44
56
  let useful = 0;
45
57
  for (const file of files) {
46
58
  const outcome = await ensureSidecar(root, resolve(root, file));
@@ -74,7 +74,9 @@ interface ReadResult {
74
74
 
75
75
  const readInWorkspace = async (root: string, absPath: string): Promise<ReadResult | undefined> => {
76
76
  const outcome = await ensureSidecar(root, absPath);
77
- if (outcome.kind === "skipped" && outcome.reason === "outside-workspace") {
77
+ // A path the shadow tree refuses (an agent's worktree, the reference shelf) is still a file someone may read: it
78
+ // gets no sidecar, only the content cache, like a file outside the workspace.
79
+ if (outcome.kind === "skipped" && (outcome.reason === "outside-workspace" || outcome.reason === "ignored-path")) {
78
80
  return readOutsideWorkspace(root, absPath);
79
81
  }
80
82
  return fromOutcome(outcome);
@@ -0,0 +1,31 @@
1
+ /* `fileq ripgrep-config`: the ripgrep config that makes plain `rg` search documents' text through fileq's preprocessor. */
2
+ import { join } from "node:path";
3
+ import { packageRoot } from "@intentic/constants/node";
4
+ import { buildCommand, type CommandContext } from "@stricli/core";
5
+ import { ripgrepConfigLines } from "../lib/formats.js";
6
+
7
+ interface RipgrepConfigFlags {
8
+ readonly pre?: string;
9
+ }
10
+
11
+ // The preprocessor this package ships, beside dist/ and src/ alike: bin/fileq-rg-pre.
12
+ const ownPreprocessor = (): string => join(packageRoot(import.meta.url), "bin/fileq-rg-pre");
13
+
14
+ export const ripgrepConfigCommand = buildCommand({
15
+ docs: {
16
+ brief: "Print a ripgrep config (for RIPGREP_CONFIG_PATH) that searches pdf, docx, xlsx, pptx, odt, ods, odp, rtf and epub as text",
17
+ fullDescription: `Point RIPGREP_CONFIG_PATH at this output and \`rg pattern .\` searches documents too, each hit under the
18
+ document's own path with its page: \`docs/terms.pdf:345:[p. 12] …\`. Lines under a page heading carry
19
+ \`[p. N] \`, under a slide heading \`[slide N] \`. The preprocessor prints a document's fresh shadow
20
+ (.intentic/local/cache/derived/<path>.md) with no Node start, and falls back to \`fileq read --plain\`.`,
21
+ },
22
+ parameters: {
23
+ flags: {
24
+ pre: { kind: "parsed", parse: String, optional: true, brief: "The preprocessor's path (default: this package's bin/fileq-rg-pre)" },
25
+ },
26
+ positional: { kind: "tuple", parameters: [] },
27
+ },
28
+ func(this: CommandContext, flags: RipgrepConfigFlags) {
29
+ this.process.stdout.write(`${ripgrepConfigLines(flags.pre ?? ownPreprocessor()).join("\n")}\n`);
30
+ },
31
+ });
@@ -0,0 +1,14 @@
1
+ /* `fileq stamps`: each document format's current deriver stamp, so a caller that cannot hash (the daemon's shadow keeper) can tell a shadow an upgraded or newly OCR-capable reader would write differently. */
2
+ import { buildCommand, type CommandContext } from "@stricli/core";
3
+ import { DERIVERS } from "../lib/derive.js";
4
+ import { deriverStamp } from "../lib/derivers/deriver.js";
5
+ import { DOCUMENT_FORMATS } from "../lib/formats.js";
6
+
7
+ export const stampsCommand = buildCommand({
8
+ docs: { brief: "Print each document format's current deriver stamp as one JSON object" },
9
+ parameters: { positional: { kind: "tuple", parameters: [] } },
10
+ func(this: CommandContext) {
11
+ const stamps = Object.fromEntries([...DOCUMENT_FORMATS].map((format) => [format, deriverStamp(DERIVERS[format])]));
12
+ this.process.stdout.write(`${JSON.stringify(stamps)}\n`);
13
+ },
14
+ });