@leemour/cli-messaging 0.140.0 → 0.142.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 (128) hide show
  1. package/dist/cli/config-command.js +5 -0
  2. package/dist/cli/config-command.js.map +1 -1
  3. package/dist/cli/messenger/archive-commands.d.ts.map +1 -1
  4. package/dist/cli/messenger/archive-commands.js +91 -7
  5. package/dist/cli/messenger/archive-commands.js.map +1 -1
  6. package/dist/cli/messenger/catch-up.d.ts +17 -0
  7. package/dist/cli/messenger/catch-up.d.ts.map +1 -0
  8. package/dist/cli/messenger/catch-up.js +30 -0
  9. package/dist/cli/messenger/catch-up.js.map +1 -0
  10. package/dist/cli/messenger/conversations-command.d.ts.map +1 -1
  11. package/dist/cli/messenger/conversations-command.js +213 -27
  12. package/dist/cli/messenger/conversations-command.js.map +1 -1
  13. package/dist/cli/messenger/export-folder.d.ts +54 -0
  14. package/dist/cli/messenger/export-folder.d.ts.map +1 -0
  15. package/dist/cli/messenger/export-folder.js +106 -0
  16. package/dist/cli/messenger/export-folder.js.map +1 -0
  17. package/dist/cli/messenger/inbox.d.ts +4 -3
  18. package/dist/cli/messenger/inbox.d.ts.map +1 -1
  19. package/dist/cli/messenger/inbox.js +28 -32
  20. package/dist/cli/messenger/inbox.js.map +1 -1
  21. package/dist/cli/messenger/messages-command.d.ts.map +1 -1
  22. package/dist/cli/messenger/messages-command.js +2 -0
  23. package/dist/cli/messenger/messages-command.js.map +1 -1
  24. package/dist/cli/messenger/messages-stats-command.d.ts +4 -0
  25. package/dist/cli/messenger/messages-stats-command.d.ts.map +1 -0
  26. package/dist/cli/messenger/messages-stats-command.js +49 -0
  27. package/dist/cli/messenger/messages-stats-command.js.map +1 -0
  28. package/dist/cli/messenger/password.d.ts +11 -0
  29. package/dist/cli/messenger/password.d.ts.map +1 -0
  30. package/dist/cli/messenger/password.js +26 -0
  31. package/dist/cli/messenger/password.js.map +1 -0
  32. package/dist/cli/messenger/points.d.ts +21 -0
  33. package/dist/cli/messenger/points.d.ts.map +1 -0
  34. package/dist/cli/messenger/points.js +39 -0
  35. package/dist/cli/messenger/points.js.map +1 -0
  36. package/dist/cli/messenger/review.d.ts.map +1 -1
  37. package/dist/cli/messenger/review.js +55 -20
  38. package/dist/cli/messenger/review.js.map +1 -1
  39. package/dist/cli/messenger/store-maintenance-command.d.ts.map +1 -1
  40. package/dist/cli/messenger/store-maintenance-command.js +75 -20
  41. package/dist/cli/messenger/store-maintenance-command.js.map +1 -1
  42. package/dist/cli/permission-migration.d.ts.map +1 -1
  43. package/dist/cli/permission-migration.js +14 -9
  44. package/dist/cli/permission-migration.js.map +1 -1
  45. package/dist/cli/settings.d.ts +4 -0
  46. package/dist/cli/settings.d.ts.map +1 -1
  47. package/dist/cli/settings.js +12 -22
  48. package/dist/cli/settings.js.map +1 -1
  49. package/dist/domain/models.d.ts +4 -0
  50. package/dist/domain/models.d.ts.map +1 -1
  51. package/dist/mcp/server.d.ts.map +1 -1
  52. package/dist/mcp/server.js +2 -1
  53. package/dist/mcp/server.js.map +1 -1
  54. package/dist/mcp/tool.d.ts +1 -1
  55. package/dist/mcp/tool.d.ts.map +1 -1
  56. package/dist/mcp/tools/conversations.d.ts +1 -1
  57. package/dist/mcp/tools/conversations.d.ts.map +1 -1
  58. package/dist/mcp/tools/conversations.js +76 -5
  59. package/dist/mcp/tools/conversations.js.map +1 -1
  60. package/dist/mcp/tools/messages.d.ts.map +1 -1
  61. package/dist/mcp/tools/messages.js +8 -1
  62. package/dist/mcp/tools/messages.js.map +1 -1
  63. package/dist/mcp/tools/search.d.ts +24 -0
  64. package/dist/mcp/tools/search.d.ts.map +1 -1
  65. package/dist/mcp/tools/search.js +25 -0
  66. package/dist/mcp/tools/search.js.map +1 -1
  67. package/dist/sealed.d.ts +39 -0
  68. package/dist/sealed.d.ts.map +1 -0
  69. package/dist/sealed.js +140 -0
  70. package/dist/sealed.js.map +1 -0
  71. package/dist/search/lucene/dates.d.ts +2 -2
  72. package/dist/search/lucene/dates.d.ts.map +1 -1
  73. package/dist/search/lucene/dates.js +27 -5
  74. package/dist/search/lucene/dates.js.map +1 -1
  75. package/dist/search/lucene/registry.d.ts +14 -13
  76. package/dist/search/lucene/registry.d.ts.map +1 -1
  77. package/dist/search/lucene/registry.js +33 -12
  78. package/dist/search/lucene/registry.js.map +1 -1
  79. package/dist/sends/index.d.ts +1 -1
  80. package/dist/sends/index.d.ts.map +1 -1
  81. package/dist/sends/index.js +1 -1
  82. package/dist/sends/index.js.map +1 -1
  83. package/dist/sends/permissions.d.ts +9 -0
  84. package/dist/sends/permissions.d.ts.map +1 -1
  85. package/dist/sends/permissions.js +19 -0
  86. package/dist/sends/permissions.js.map +1 -1
  87. package/dist/services/archive.d.ts +22 -1
  88. package/dist/services/archive.d.ts.map +1 -1
  89. package/dist/services/archive.js +25 -0
  90. package/dist/services/archive.js.map +1 -1
  91. package/dist/services/embeddings.d.ts +108 -3
  92. package/dist/services/embeddings.d.ts.map +1 -1
  93. package/dist/services/embeddings.js +250 -59
  94. package/dist/services/embeddings.js.map +1 -1
  95. package/dist/services/inbox.d.ts +27 -9
  96. package/dist/services/inbox.d.ts.map +1 -1
  97. package/dist/services/inbox.js +57 -22
  98. package/dist/services/inbox.js.map +1 -1
  99. package/dist/services/messages-search.d.ts +21 -1
  100. package/dist/services/messages-search.d.ts.map +1 -1
  101. package/dist/services/messages-search.js +90 -26
  102. package/dist/services/messages-search.js.map +1 -1
  103. package/dist/services/messages.d.ts +8 -1
  104. package/dist/services/messages.d.ts.map +1 -1
  105. package/dist/services/messages.js +7 -1
  106. package/dist/services/messages.js.map +1 -1
  107. package/dist/store/sqlite/lucene.d.ts +11 -0
  108. package/dist/store/sqlite/lucene.d.ts.map +1 -1
  109. package/dist/store/sqlite/lucene.js +78 -4
  110. package/dist/store/sqlite/lucene.js.map +1 -1
  111. package/dist/store/sqlite/messages.d.ts +2 -2
  112. package/dist/store/sqlite/messages.d.ts.map +1 -1
  113. package/dist/store/sqlite/messages.js +5 -2
  114. package/dist/store/sqlite/messages.js.map +1 -1
  115. package/dist/store/sqlite/reads.d.ts +10 -0
  116. package/dist/store/sqlite/reads.d.ts.map +1 -1
  117. package/dist/store/sqlite/reads.js +25 -2
  118. package/dist/store/sqlite/reads.js.map +1 -1
  119. package/dist/store/sqlite/vectors.d.ts +49 -1
  120. package/dist/store/sqlite/vectors.d.ts.map +1 -1
  121. package/dist/store/sqlite/vectors.js +121 -6
  122. package/dist/store/sqlite/vectors.js.map +1 -1
  123. package/dist/store/store.d.ts +51 -1
  124. package/dist/store/store.d.ts.map +1 -1
  125. package/dist/store/store.js +55 -7
  126. package/dist/store/store.js.map +1 -1
  127. package/package.json +1 -1
  128. package/parity.json +170 -2
@@ -31,4 +31,28 @@ export declare const answerMessagesSearch: (messages: Pick<MessagesService, "sea
31
31
  page: number;
32
32
  limit: number;
33
33
  }>;
34
+ export declare const MESSAGES_STATS_DESCRIPTION = "Count what a strict Lucene query matches in the local store, by chat, sender, calendar day or hour (in the timezone). Each message is counted once; no text means every stored message. Counts are lower bounds where coverage is not complete. Returns { by, items: [{ key, name, account?, count }], total, hasMore, page, limit, query, coverage, completeness }.";
35
+ export declare const messagesStatsInput: (messenger: Messenger) => v.ObjectSchema<{
36
+ readonly text: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.DescriptionAction<string, "a strict Lucene query; omit to count all">]>, undefined>;
37
+ readonly ast: v.OptionalSchema<v.UnknownSchema, undefined>;
38
+ readonly by: v.OptionalSchema<v.PicklistSchema<["chat", "sender", "day", "hour"], undefined>, undefined>;
39
+ readonly timezone: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
40
+ readonly chat: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.DescriptionAction<string, string>]>, undefined>;
41
+ readonly source: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>, v.DescriptionAction<string, "a messenger held on this machine; personal, bots or all — as in: in text">]>, undefined>;
42
+ readonly limit: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 100, undefined>, v.DescriptionAction<number, "how many">]>, undefined>;
43
+ }, undefined>;
44
+ export declare const answerMessagesStats: (messages: Pick<MessagesService, "stats">, args: v.InferOutput<ReturnType<typeof messagesStatsInput>>, defaults: {
45
+ limit: number;
46
+ signal?: AbortSignal;
47
+ }) => Promise<{
48
+ by: import("../../services/messages-search.js").StatsGrouping;
49
+ items: import("../../services/messages-search.js").StatsRow[];
50
+ total: number;
51
+ hasMore: boolean;
52
+ query: import("../../services/messages-search.js").QueryMetadata;
53
+ coverage: import("../../services/messages-search.js").SearchCoverage;
54
+ completeness: (import("../../store/store.js").ChatCompleteness & import("../../store/store.js").AccountKey)[];
55
+ page: number;
56
+ limit: number;
57
+ }>;
34
58
  //# sourceMappingURL=search.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/search.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAGjE,eAAO,MAAM,2BAA2B,8fACqd,CAAA;AAE7f,eAAO,MAAM,mBAAmB,cAAe,SAAS;;;;;;;;;;aAqBpD,CAAA;AAEJ,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAA;AAEtF,eAAO,MAAM,oBAAoB,aACrB,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,QACnC,kBAAkB,YACd;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE;;;;;;;;;;;;;EAkBlD,CAAA"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/search.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAA;AAC5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAGjE,eAAO,MAAM,2BAA2B,8fACqd,CAAA;AAE7f,eAAO,MAAM,mBAAmB,cAAe,SAAS;;;;;;;;;;aAqBpD,CAAA;AAEJ,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAA;AAEtF,eAAO,MAAM,oBAAoB,aACrB,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,QACnC,kBAAkB,YACd;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE;;;;;;;;;;;;;EAkBlD,CAAA;AAED,eAAO,MAAM,0BAA0B,yWACiU,CAAA;AAExW,eAAO,MAAM,kBAAkB,cAAe,SAAS;;;;;;;;aAenD,CAAA;AAEJ,eAAO,MAAM,mBAAmB,aACpB,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,QAClC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,YAChD;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE;;;;;;;;;;EAelD,CAAA"}
@@ -31,4 +31,29 @@ export const answerMessagesSearch = async (messages, args, defaults) => {
31
31
  });
32
32
  return { ...found, page: 1, limit: size };
33
33
  };
34
+ export const MESSAGES_STATS_DESCRIPTION = "Count what a strict Lucene query matches in the local store, by chat, sender, calendar day or hour (in the timezone). Each message is counted once; no text means every stored message. Counts are lower bounds where coverage is not complete. Returns { by, items: [{ key, name, account?, count }], total, hasMore, page, limit, query, coverage, completeness }.";
35
+ export const messagesStatsInput = (messenger) => v.object({
36
+ text: v.optional(v.pipe(v.string(), v.minLength(1), v.description("a strict Lucene query; omit to count all"))),
37
+ ast: v.optional(v.unknown()),
38
+ by: v.optional(v.picklist(["chat", "sender", "day", "hour"])),
39
+ timezone: v.optional(v.string()),
40
+ chat: v.optional(chatOf(messenger)),
41
+ source: v.optional(v.pipe(v.string(), v.minLength(1), v.description("a messenger held on this machine; personal, bots or all — as in: in text"))),
42
+ limit,
43
+ });
44
+ export const answerMessagesStats = async (messages, args, defaults) => {
45
+ const size = args.limit ?? defaults.limit;
46
+ const stats = await messages.stats({
47
+ ...(args.text === undefined ? {} : { text: args.text }),
48
+ ...(args.ast === undefined ? {} : { ast: args.ast }),
49
+ by: args.by ?? "chat",
50
+ language: "lucene",
51
+ signal: defaults.signal,
52
+ ...(args.timezone === undefined ? {} : { timezone: args.timezone }),
53
+ limit: size,
54
+ ...(args.chat === undefined ? {} : { chat: args.chat }),
55
+ ...(args.source === undefined ? {} : { source: args.source }),
56
+ });
57
+ return { ...stats, page: 1, limit: size };
58
+ };
34
59
  //# sourceMappingURL=search.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/mcp/tools/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/mcp/tools/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { type Readable } from "node:stream";
2
+ export interface Cost {
3
+ log2N: number;
4
+ r: number;
5
+ p: number;
6
+ }
7
+ /** About half a second and 128 MB on a laptop: slow enough to make guessing a short password costly. */
8
+ export declare const COST: Cost;
9
+ /** What a folder of sealed files keeps to tell, before reading anything, whether a password is the one it was sealed with. */
10
+ export interface PasswordCheck {
11
+ salt: string;
12
+ log2N: number;
13
+ r: number;
14
+ p: number;
15
+ /** SHA-256 of the key scrypt derives from the password and this salt — no file uses that key. */
16
+ hash: string;
17
+ }
18
+ /**
19
+ * A check for this password. Guessing against it costs the same scrypt work as guessing against
20
+ * any sealed file, so it makes no password easier to find.
21
+ */
22
+ export declare const checkFor: (password: string, cost?: Cost) => Promise<PasswordCheck>;
23
+ export declare const passes: (password: string, check: PasswordCheck) => Promise<boolean>;
24
+ /** Whether the file starts as a sealed file does. */
25
+ export declare const isSealed: (path: string) => boolean;
26
+ /** Seals `from` into `to`, a new file readable only by its owner; never overwrites. */
27
+ export declare const sealFile: (from: string, to: string, password: string, cost?: Cost) => Promise<void>;
28
+ /**
29
+ * Seals what `open` yields into `to`, so what is sealed never lands on disk in the clear. Opened
30
+ * only once the password is accepted: a stream opened and then refused would be left dangling.
31
+ */
32
+ export declare const seal: (open: () => Readable, to: string, password: string, cost?: Cost) => Promise<void>;
33
+ /**
34
+ * Opens `from` into `to`, a new file readable only by its owner. The plain text goes to a file
35
+ * beside `to` first and takes its name only once the tag checks out, so a wrong password or a
36
+ * damaged file leaves nothing half-written behind.
37
+ */
38
+ export declare const unsealFile: (from: string, to: string, password: string) => Promise<void>;
39
+ //# sourceMappingURL=sealed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sealed.d.ts","sourceRoot":"","sources":["../src/sealed.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,KAAK,QAAQ,EAAa,MAAM,aAAa,CAAA;AAmBtD,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED,wGAAwG;AACxG,eAAO,MAAM,IAAI,EAAE,IAAgC,CAAA;AASnD,8HAA8H;AAC9H,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,iGAAiG;IACjG,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,aAAoB,MAAM,SAAQ,IAAI,KAAU,OAAO,CAAC,aAAa,CAOzF,CAAA;AAED,eAAO,MAAM,MAAM,aAAoB,MAAM,SAAS,aAAa,KAAG,OAAO,CAAC,OAAO,CAIpF,CAAA;AAYD,qDAAqD;AACrD,eAAO,MAAM,QAAQ,SAAU,MAAM,KAAG,OAQvC,CAAA;AAED,uFAAuF;AACvF,eAAO,MAAM,QAAQ,SAAU,MAAM,MAAM,MAAM,YAAY,MAAM,SAAQ,IAAI,KAAU,OAAO,CAAC,IAAI,CAC7C,CAAA;AAExD;;;GAGG;AACH,eAAO,MAAM,IAAI,SAAgB,MAAM,QAAQ,MAAM,MAAM,YAAY,MAAM,SAAQ,IAAI,KAAU,OAAO,CAAC,IAAI,CAuB9G,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,UAAU,SAAgB,MAAM,MAAM,MAAM,YAAY,MAAM,KAAG,OAAO,CAAC,IAAI,CA4CzF,CAAA"}
package/dist/sealed.js ADDED
@@ -0,0 +1,140 @@
1
+ import { createCipheriv, createDecipheriv, createHash, randomBytes, scrypt, timingSafeEqual } from "node:crypto";
2
+ import { closeSync, createReadStream, createWriteStream, existsSync, openSync, readSync, renameSync, rmSync, statSync, } from "node:fs";
3
+ import { Transform } from "node:stream";
4
+ import { pipeline } from "node:stream/promises";
5
+ import { createGunzip, createGzip } from "node:zlib";
6
+ import { CliError } from "@leemour/cli-core";
7
+ /**
8
+ * A file compressed and then encrypted with a password, by Node alone — no outside tool, no
9
+ * dependency (owner's ruling `NEED-567`). The password is never kept: losing it loses the file.
10
+ *
11
+ * Layout: `MAGIC`, scrypt's cost as log2 N, r and p (one byte each), a 16-byte salt and a 12-byte
12
+ * nonce; then the gzip stream under AES-256-GCM, the header bound to it as associated data; then
13
+ * GCM's 16-byte tag, which makes a wrong password or a changed byte fail instead of yielding garbage.
14
+ */
15
+ const MAGIC = Buffer.from("CMSEAL01");
16
+ const SALT = 16;
17
+ const NONCE = 12;
18
+ const TAG = 16;
19
+ const HEADER = MAGIC.length + 3 + SALT + NONCE;
20
+ /** About half a second and 128 MB on a laptop: slow enough to make guessing a short password costly. */
21
+ export const COST = { log2N: 17, r: 8, p: 1 };
22
+ const keyOf = (password, salt, { log2N, r, p }) => new Promise((resolve, reject) => scrypt(password, salt, 32, { N: 2 ** log2N, r, p, maxmem: 2 * 128 * r * 2 ** log2N }, (error, key) => error ? reject(error) : resolve(key)));
23
+ /**
24
+ * A check for this password. Guessing against it costs the same scrypt work as guessing against
25
+ * any sealed file, so it makes no password easier to find.
26
+ */
27
+ export const checkFor = async (password, cost = COST) => {
28
+ refuseEmpty(password);
29
+ const salt = randomBytes(SALT);
30
+ const hash = createHash("sha256")
31
+ .update(await keyOf(password, salt, cost))
32
+ .digest("hex");
33
+ return { salt: salt.toString("hex"), ...cost, hash };
34
+ };
35
+ export const passes = async (password, check) => {
36
+ refuseCost(check);
37
+ const key = await keyOf(password, Buffer.from(check.salt, "hex"), check);
38
+ return timingSafeEqual(createHash("sha256").update(key).digest(), Buffer.from(check.hash, "hex"));
39
+ };
40
+ /** A damaged header must not make us reserve a gigabyte or more before the tag can say it is damaged. */
41
+ const refuseCost = ({ log2N, r, p }) => {
42
+ if (log2N > 20 || r > 8 || p > 4)
43
+ throw new CliError("validation_error", "asks for a key cost this version does not accept");
44
+ };
45
+ const refuseEmpty = (password) => {
46
+ if (password.length === 0)
47
+ throw new CliError("validation_error", "the password is empty");
48
+ };
49
+ /** Whether the file starts as a sealed file does. */
50
+ export const isSealed = (path) => {
51
+ const fd = openSync(path, "r");
52
+ try {
53
+ const start = Buffer.alloc(MAGIC.length);
54
+ return readSync(fd, start, 0, MAGIC.length, 0) === MAGIC.length && start.equals(MAGIC);
55
+ }
56
+ finally {
57
+ closeSync(fd);
58
+ }
59
+ };
60
+ /** Seals `from` into `to`, a new file readable only by its owner; never overwrites. */
61
+ export const sealFile = (from, to, password, cost = COST) => seal(() => createReadStream(from), to, password, cost);
62
+ /**
63
+ * Seals what `open` yields into `to`, so what is sealed never lands on disk in the clear. Opened
64
+ * only once the password is accepted: a stream opened and then refused would be left dangling.
65
+ */
66
+ export const seal = async (open, to, password, cost = COST) => {
67
+ refuseEmpty(password);
68
+ const salt = randomBytes(SALT);
69
+ const nonce = randomBytes(NONCE);
70
+ const cipher = createCipheriv("aes-256-gcm", await keyOf(password, salt, cost), nonce);
71
+ const header = Buffer.concat([MAGIC, Buffer.from([cost.log2N, cost.r, cost.p]), salt, nonce]);
72
+ cipher.setAAD(header);
73
+ const out = createWriteStream(to, { flags: "wx", mode: 0o600 });
74
+ out.write(header);
75
+ const tagged = new Transform({
76
+ transform: (chunk, _encoding, done) => done(null, cipher.update(chunk)),
77
+ flush: (done) => {
78
+ const last = cipher.final();
79
+ done(null, Buffer.concat([last, cipher.getAuthTag()]));
80
+ },
81
+ });
82
+ try {
83
+ await pipeline(open(), createGzip(), tagged, out);
84
+ }
85
+ catch (error) {
86
+ // `wx` means a file that was there is not ours to remove; one this call created and did not finish is.
87
+ if (error.code !== "EEXIST")
88
+ rmSync(to, { force: true });
89
+ throw error;
90
+ }
91
+ };
92
+ /**
93
+ * Opens `from` into `to`, a new file readable only by its owner. The plain text goes to a file
94
+ * beside `to` first and takes its name only once the tag checks out, so a wrong password or a
95
+ * damaged file leaves nothing half-written behind.
96
+ */
97
+ export const unsealFile = async (from, to, password) => {
98
+ refuseEmpty(password);
99
+ const size = statSync(from).size;
100
+ if (size < HEADER + TAG || !isSealed(from)) {
101
+ throw new CliError("validation_error", `${from} is not a sealed file`);
102
+ }
103
+ const fd = openSync(from, "r");
104
+ const header = Buffer.alloc(HEADER);
105
+ const tag = Buffer.alloc(TAG);
106
+ try {
107
+ readSync(fd, header, 0, HEADER, 0);
108
+ readSync(fd, tag, 0, TAG, size - TAG);
109
+ }
110
+ finally {
111
+ closeSync(fd);
112
+ }
113
+ const at = MAGIC.length;
114
+ const cost = { log2N: header[at], r: header[at + 1], p: header[at + 2] };
115
+ refuseCost(cost);
116
+ if (existsSync(to))
117
+ throw new CliError("validation_error", `${to} exists — never overwritten`);
118
+ const salt = header.subarray(at + 3, at + 3 + SALT);
119
+ const nonce = header.subarray(at + 3 + SALT, HEADER);
120
+ const decipher = createDecipheriv("aes-256-gcm", await keyOf(password, salt, cost), nonce);
121
+ decipher.setAuthTag(tag);
122
+ decipher.setAAD(header);
123
+ const pending = `${to}.partial`;
124
+ try {
125
+ await pipeline(createReadStream(from, { start: HEADER, end: size - TAG - 1 }), decipher, createGunzip(), createWriteStream(pending, { flags: "wx", mode: 0o600 }));
126
+ }
127
+ catch (error) {
128
+ if (error.code === "EEXIST")
129
+ throw error;
130
+ rmSync(pending, { force: true });
131
+ // A wrong key yields noise, which gzip usually refuses before GCM gets to check the tag.
132
+ const { code, message } = error;
133
+ if (code === "Z_DATA_ERROR" || code === "Z_BUF_ERROR" || message.includes("unable to authenticate")) {
134
+ throw new CliError("validation_error", "wrong password, or the file was changed — nothing was written");
135
+ }
136
+ throw error;
137
+ }
138
+ renameSync(pending, to);
139
+ };
140
+ //# sourceMappingURL=sealed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sealed.js","sourceRoot":"","sources":["../src/sealed.ts"],"names":[],"mappings":"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"}
@@ -7,9 +7,9 @@ export interface DateRange {
7
7
  lowerInclusive: boolean;
8
8
  upperInclusive: boolean;
9
9
  }
10
- export declare const dateEndpoint: (value: string, zone: string, side: "lower" | "upper", inclusive: boolean, span: Span) => {
10
+ export declare const dateEndpoint: (value: string, zone: string, side: "lower" | "upper", inclusive: boolean, span: Span, now?: number) => {
11
11
  time?: number;
12
12
  inclusive: boolean;
13
13
  };
14
- export declare const dateRange: (lower: string, upper: string, lowerInclusive: boolean, upperInclusive: boolean, zone: string, span: Span) => DateRange;
14
+ export declare const dateRange: (lower: string, upper: string, lowerInclusive: boolean, upperInclusive: boolean, zone: string, span: Span, now?: number) => DateRange;
15
15
  //# sourceMappingURL=dates.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dates.d.ts","sourceRoot":"","sources":["../../../src/search/lucene/dates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,IAAI,EAAE,MAAM,YAAY,CAAA;AAElD,eAAO,MAAM,UAAU,WAAY,MAAM,KAAG,MAQ3C,CAAA;AAcD,eAAO,MAAM,WAAW,UAAW,MAAM,QAAQ,MAAM,QAAQ,OAAO,QAAQ,IAAI,KAAG,MA2BpF,CAAA;AACD,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,OAAO,CAAA;IACvB,cAAc,EAAE,OAAO,CAAA;CACxB;AACD,eAAO,MAAM,YAAY,UAChB,MAAM,QACP,MAAM,QACN,OAAO,GAAG,OAAO,aACZ,OAAO,QACZ,IAAI,KACT;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAmBrC,CAAA;AACD,eAAO,MAAM,SAAS,UACb,MAAM,SACN,MAAM,kBACG,OAAO,kBACP,OAAO,QACjB,MAAM,QACN,IAAI,KACT,SASF,CAAA"}
1
+ {"version":3,"file":"dates.d.ts","sourceRoot":"","sources":["../../../src/search/lucene/dates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,IAAI,EAAE,MAAM,YAAY,CAAA;AAElD,eAAO,MAAM,UAAU,WAAY,MAAM,KAAG,MAQ3C,CAAA;AAcD,eAAO,MAAM,WAAW,UAAW,MAAM,QAAQ,MAAM,QAAQ,OAAO,QAAQ,IAAI,KAAG,MA2BpF,CAAA;AAeD,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,OAAO,CAAA;IACvB,cAAc,EAAE,OAAO,CAAA;CACxB;AACD,eAAO,MAAM,YAAY,UAChB,MAAM,QACP,MAAM,QACN,OAAO,GAAG,OAAO,aACZ,OAAO,QACZ,IAAI,mBAET;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CA4BrC,CAAA;AACD,eAAO,MAAM,SAAS,UACb,MAAM,SACN,MAAM,kBACG,OAAO,kBACP,OAAO,QACjB,MAAM,QACN,IAAI,mBAET,SAUF,CAAA"}
@@ -50,16 +50,37 @@ export const dayBoundary = (value, zone, next, span) => {
50
50
  queryError("invalid_date", span, "this calendar day does not exist in the selected timezone");
51
51
  return lo;
52
52
  };
53
- export const dateEndpoint = (value, zone, side, inclusive, span) => {
53
+ const AGO = /^(\d+)(m|h|d)$/u;
54
+ const AGO_MS = { m: 60_000, h: 3_600_000, d: 86_400_000 };
55
+ const dayOf = (word, zone, now, span) => {
56
+ const today = new Intl.DateTimeFormat("en-CA", {
57
+ timeZone: zone,
58
+ year: "numeric",
59
+ month: "2-digit",
60
+ day: "2-digit",
61
+ }).format(now);
62
+ if (word === "today")
63
+ return today;
64
+ const date = calendar(today, span);
65
+ date.setUTCDate(date.getUTCDate() - 1);
66
+ return date.toISOString().slice(0, 10);
67
+ };
68
+ export const dateEndpoint = (value, zone, side, inclusive, span, now = Date.now()) => {
54
69
  if (value === "*")
55
70
  return { inclusive };
71
+ const word = value.toLowerCase();
72
+ if (word === "today" || word === "yesterday")
73
+ return dateEndpoint(dayOf(word, zone, now, span), zone, side, inclusive, span);
74
+ const [, amount, unit] = AGO.exec(word) ?? [];
75
+ if (amount && unit)
76
+ return { time: now - Number(amount) * (AGO_MS[unit] ?? 0), inclusive };
56
77
  if (/^\d{4}-\d{2}-\d{2}$/u.test(value))
57
78
  return {
58
79
  time: dayBoundary(value, zone, side === "lower" ? !inclusive : inclusive, span),
59
80
  inclusive: side === "lower",
60
81
  };
61
82
  if (!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,3})?(?:Z|[+-]\d{2}:\d{2})$/u.test(value))
62
- queryError("invalid_date", span, "quote an ISO timestamp with seconds and timezone offset");
83
+ queryError("invalid_date", span, "use an ISO date, today, yesterday, 30m/2h/7d ago, or a quoted timestamp with offset");
63
84
  calendar(value.slice(0, 10), span);
64
85
  const time = Date.parse(value);
65
86
  if (!Number.isFinite(time) ||
@@ -69,9 +90,10 @@ export const dateEndpoint = (value, zone, side, inclusive, span) => {
69
90
  queryError("invalid_date", span);
70
91
  return { time, inclusive };
71
92
  };
72
- export const dateRange = (lower, upper, lowerInclusive, upperInclusive, zone, span) => {
73
- const lo = dateEndpoint(lower, zone, "lower", lowerInclusive, span);
74
- const hi = dateEndpoint(upper, zone, "upper", upperInclusive, span);
93
+ export const dateRange = (lower, upper, lowerInclusive, upperInclusive, zone, span, now = Date.now()) => {
94
+ const since = lower === upper && AGO.test(lower.toLowerCase());
95
+ const lo = dateEndpoint(lower, zone, "lower", lowerInclusive, span, now);
96
+ const hi = dateEndpoint(since ? "*" : upper, zone, "upper", upperInclusive, span, now);
75
97
  return {
76
98
  ...(lo.time === undefined ? {} : { lower: lo.time }),
77
99
  ...(hi.time === undefined ? {} : { upper: hi.time }),
@@ -1 +1 @@
1
- {"version":3,"file":"dates.js","sourceRoot":"","sources":["../../../src/search/lucene/dates.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dates.js","sourceRoot":"","sources":["../../../src/search/lucene/dates.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type Operator, type Predicate, type QueryAst } from "./types.js";
1
+ import { type Operator, type Predicate, type QueryAst, type Span } from "./types.js";
2
2
  export declare const FIELD_VERSION = 1;
3
3
  export declare const QUERY_FIELDS: readonly [{
4
4
  readonly name: "text";
@@ -43,7 +43,7 @@ export declare const QUERY_FIELDS: readonly [{
43
43
  readonly aliases: readonly [];
44
44
  readonly type: "timestamp";
45
45
  readonly operators: readonly [...Operator[], "range"];
46
- readonly normalization: "ISO/calendar timezone";
46
+ readonly normalization: "ISO/calendar timezone; today, yesterday, 30m/2h/7d ago";
47
47
  readonly support: "A1";
48
48
  }, {
49
49
  readonly name: "kind";
@@ -96,30 +96,30 @@ export declare const QUERY_FIELDS: readonly [{
96
96
  }, {
97
97
  readonly name: "filename";
98
98
  readonly example: "filename:*.pdf";
99
- readonly index: "planned";
99
+ readonly index: "attachments.name / bounded postfilter";
100
100
  readonly aliases: readonly [];
101
101
  readonly type: "keyword";
102
102
  readonly operators: readonly [...Operator[], "wildcard", "regex"];
103
- readonly normalization: "planned";
104
- readonly support: "planned";
103
+ readonly normalization: "NFKD/marks/NFC/lowercase v1, whole name";
104
+ readonly support: "A2";
105
105
  }, {
106
106
  readonly name: "mime";
107
- readonly example: "mime:application/pdf";
108
- readonly index: "planned";
107
+ readonly example: 'mime:"application/pdf" OR mime:image';
108
+ readonly index: "attachments.mime / bounded postfilter";
109
109
  readonly aliases: readonly [];
110
110
  readonly type: "keyword";
111
111
  readonly operators: readonly [...Operator[], "wildcard"];
112
- readonly normalization: "planned";
113
- readonly support: "planned";
112
+ readonly normalization: "lowercase; a value without / matches the first part; only where the messenger reports a type";
113
+ readonly support: "A2";
114
114
  }, {
115
115
  readonly name: "size";
116
- readonly example: "size:[1024 TO 4096]";
117
- readonly index: "planned";
116
+ readonly example: "size>10MB";
117
+ readonly index: "attachments.size";
118
118
  readonly aliases: readonly [];
119
119
  readonly type: "bytes";
120
120
  readonly operators: readonly [...Operator[], "range"];
121
- readonly normalization: "planned";
122
- readonly support: "planned";
121
+ readonly normalization: "bytes; KB/MB/GB are 1024-based";
122
+ readonly support: "A2";
123
123
  }, {
124
124
  readonly name: "tag";
125
125
  readonly example: "tag:work";
@@ -130,6 +130,7 @@ export declare const QUERY_FIELDS: readonly [{
130
130
  readonly normalization: "planned";
131
131
  readonly support: "planned";
132
132
  }];
133
+ export declare const parseBytes: (value: string, span: Span) => number;
133
134
  export declare const validatePredicate: (node: Predicate) => void;
134
135
  export declare const validateAst: (input: unknown) => QueryAst;
135
136
  export declare const validateFields: (ast: QueryAst) => QueryAst;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/search/lucene/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,SAAS,EAEd,KAAK,QAAQ,EAKd,MAAM,YAAY,CAAA;AAEnB,eAAO,MAAM,aAAa,IAAI,CAAA;AAE9B,eAAO,MAAM,YAAY;aAErB,IAAI,EAAE,MAAM;aACZ,OAAO,EAAE,SAAS;aAClB,KAAK,EAAE,eAAe;aACtB,OAAO;aACP,IAAI,EAAE,QAAQ;aACd,SAAS,YAAG,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO;aACjD,aAAa,EAAE,6BAA6B;aAC5C,OAAO,EAAE,IAAI;;aAGb,IAAI,EAAE,MAAM;aACZ,OAAO,EAAE,oBAAoB;aAC7B,KAAK,EAAE,oCAAoC;aAC3C,OAAO;aACP,IAAI,EAAE,SAAS;aACf,SAAS,YAAG,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO;aACjD,aAAa,EAAE,qBAAqB;aACpC,OAAO,EAAE,IAAI;;aAGb,IAAI,EAAE,MAAM;aACZ,OAAO,EAAE,wBAAwB;aACjC,KAAK,EAAE,2BAA2B;aAClC,OAAO;aACP,IAAI,EAAE,QAAQ;aACd,SAAS;aACT,aAAa,EAAE,2BAA2B;aAC1C,OAAO,EAAE,IAAI;;aAGb,IAAI,EAAE,MAAM;aACZ,OAAO,EAAE,qBAAqB;aAC9B,KAAK,EAAE,4BAA4B;aACnC,OAAO;aACP,IAAI,EAAE,MAAM;aACZ,SAAS;aACT,aAAa,EAAE,2BAA2B;aAC1C,OAAO,EAAE,IAAI;;aAGb,IAAI,EAAE,MAAM;aACZ,OAAO,EAAE,iCAAiC;aAC1C,KAAK,EAAE,kBAAkB;aACzB,OAAO;aACP,IAAI,EAAE,WAAW;aACjB,SAAS;aACT,aAAa,EAAE,uBAAuB;aACtC,OAAO,EAAE,IAAI;;aAGb,IAAI,EAAE,MAAM;aACZ,OAAO,EAAE,cAAc;aACvB,KAAK,EAAE,gCAAgC;aACvC,OAAO;aACP,IAAI,EAAE,MAAM;aACZ,SAAS;aACT,aAAa,EAAE,WAAW;aAC1B,OAAO,EAAE,IAAI;aACb,MAAM,YAAG,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;;aAG5E,IAAI,EAAE,KAAK;aACX,OAAO,EAAE,UAAU;aACnB,KAAK,EAAE,kCAAkC;aACzC,OAAO;aACP,IAAI,EAAE,MAAM;aACZ,SAAS;aACT,aAAa,EAAE,WAAW;aAC1B,OAAO,EAAE,IAAI;aACb,MAAM,YACJ,YAAY,EACZ,MAAM,EACN,MAAM,EACN,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,SAAS,EACT,SAAS,EACT,UAAU,EACV,MAAM;;aAIR,IAAI,EAAE,OAAO;aACb,OAAO,EAAE,qBAAqB;aAC9B,KAAK,EAAE,2BAA2B;aAClC,OAAO;aACP,IAAI,EAAE,IAAI;aACV,SAAS;aACT,aAAa,EAAE,8BAA8B;aAC7C,OAAO,EAAE,IAAI;;aAGb,IAAI,EAAE,IAAI;aACV,OAAO,EAAE,SAAS;aAClB,KAAK,EAAE,mBAAmB;aAC1B,OAAO;aACP,IAAI,EAAE,QAAQ;aACd,SAAS;aACT,aAAa,EAAE,kCAAkC;aACjD,OAAO,EAAE,IAAI;;aAGb,IAAI,EAAE,QAAQ;aACd,OAAO,EAAE,eAAe;aACxB,KAAK,EAAE,kCAAkC;aACzC,OAAO;aACP,IAAI,EAAE,MAAM;aACZ,SAAS;aACT,aAAa,EAAE,8BAA8B;aAC7C,OAAO,EAAE,IAAI;aACb,MAAM,YACJ,UAAU,EACV,MAAM,EACN,SAAS,EACT,QAAQ,EACR,MAAM,EACN,MAAM,EACN,UAAU,EACV,OAAO,EACP,OAAO,EACP,eAAe,EACf,KAAK,EACL,SAAS,EACT,UAAU;;aAIZ,IAAI,EAAE,UAAU;aAChB,OAAO,EAAE,gBAAgB;aACzB,KAAK,EAAE,SAAS;aAChB,OAAO;aACP,IAAI,EAAE,SAAS;aACf,SAAS;aACT,aAAa,EAAE,SAAS;aACxB,OAAO,EAAE,SAAS;;aAGlB,IAAI,EAAE,MAAM;aACZ,OAAO,EAAE,sBAAsB;aAC/B,KAAK,EAAE,SAAS;aAChB,OAAO;aACP,IAAI,EAAE,SAAS;aACf,SAAS;aACT,aAAa,EAAE,SAAS;aACxB,OAAO,EAAE,SAAS;;aAGlB,IAAI,EAAE,MAAM;aACZ,OAAO,EAAE,qBAAqB;aAC9B,KAAK,EAAE,SAAS;aAChB,OAAO;aACP,IAAI,EAAE,OAAO;aACb,SAAS;aACT,aAAa,EAAE,SAAS;aACxB,OAAO,EAAE,SAAS;;aAGlB,IAAI,EAAE,KAAK;aACX,OAAO,EAAE,UAAU;aACnB,KAAK,EAAE,SAAS;aAChB,OAAO;aACP,IAAI,EAAE,WAAW;aACjB,SAAS;aACT,aAAa,EAAE,SAAS;aACxB,OAAO,EAAE,SAAS;EAEZ,CAAA;AAEV,eAAO,MAAM,iBAAiB,SAAU,SAAS,KAAG,IAcnD,CAAA;AAUD,eAAO,MAAM,WAAW,UAAW,OAAO,KAAG,QA+D5C,CAAA;AACD,eAAO,MAAM,cAAc,QAAS,QAAQ,KAAG,QAG9C,CAAA;AAED,eAAO,MAAM,eAAe;aAExB,IAAI,EAAE,MAAM;aACZ,OAAO,EAAE,SAAS;aAClB,SAAS,EAAE,uEAAuE;;aAElF,IAAI,EAAE,QAAQ;aAAE,OAAO,EAAE,gBAAgB;aAAE,SAAS,EAAE,yCAAyC;;aAE/F,IAAI,EAAE,cAAc;aACpB,OAAO,EAAE,cAAc;aACvB,SAAS,EAAE,qEAAqE;;aAEhF,IAAI,EAAE,UAAU;aAAE,OAAO,EAAE,gBAAgB;aAAE,SAAS,EAAE,yBAAyB;;aACjF,IAAI,EAAE,SAAS;aAAE,OAAO,EAAE,eAAe;aAAE,SAAS,EAAE,iDAAiD;;aAEvG,IAAI,EAAE,aAAa;aACnB,OAAO,EAAE,gBAAgB;aACzB,SAAS,EAAE,yDAAyD;;aAEpE,IAAI,EAAE,GAAG;aAAE,OAAO,EAAE,gBAAgB;aAAE,SAAS,EAAE,iCAAiC;;aAClF,IAAI,EAAE,OAAO;aAAE,OAAO,EAAE,uBAAuB;aAAE,SAAS,EAAE,2BAA2B;;aACvF,IAAI,EAAE,aAAa;aAAE,OAAO,EAAE,qBAAqB;aAAE,SAAS,EAAE,gCAAgC;;aAChG,IAAI,EAAE,gBAAgB;aAAE,OAAO,EAAE,YAAY;aAAE,SAAS,EAAE,uCAAuC;;aAEjG,IAAI,EAAE,OAAO;aACb,OAAO,EAAE,iCAAiC;aAC1C,SAAS,EAAE,qDAAqD;;aAEhE,IAAI,EAAE,YAAY;aAAE,OAAO,EAAE,kBAAkB;aAAE,SAAS,EAAE,8BAA8B;;aAC1F,IAAI,EAAE,UAAU;aAAE,OAAO,EAAE,YAAY;aAAE,SAAS,EAAE,iDAAiD;;aACrG,IAAI,EAAE,OAAO;aAAE,OAAO,EAAE,oBAAoB;aAAE,SAAS,EAAE,2CAA2C;;aAEpG,IAAI,EAAE,mBAAmB;aACzB,OAAO,EAAE,WAAW;aACpB,SAAS,EAAE,sEAAsE;;aAEjF,IAAI,EAAE,6BAA6B;aAAE,OAAO,EAAE,WAAW;aAAE,SAAS,EAAE,sBAAsB;EACtF,CAAA"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/search/lucene/registry.ts"],"names":[],"mappings":"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"}
@@ -49,7 +49,7 @@ export const QUERY_FIELDS = [
49
49
  aliases: [],
50
50
  type: "timestamp",
51
51
  operators: [...terms, "range"],
52
- normalization: "ISO/calendar timezone",
52
+ normalization: "ISO/calendar timezone; today, yesterday, 30m/2h/7d ago",
53
53
  support: "A1",
54
54
  },
55
55
  {
@@ -135,32 +135,32 @@ export const QUERY_FIELDS = [
135
135
  {
136
136
  name: "filename",
137
137
  example: "filename:*.pdf",
138
- index: "planned",
138
+ index: "attachments.name / bounded postfilter",
139
139
  aliases: [],
140
140
  type: "keyword",
141
141
  operators: [...terms, "wildcard", "regex"],
142
- normalization: "planned",
143
- support: "planned",
142
+ normalization: "NFKD/marks/NFC/lowercase v1, whole name",
143
+ support: "A2",
144
144
  },
145
145
  {
146
146
  name: "mime",
147
- example: "mime:application/pdf",
148
- index: "planned",
147
+ example: 'mime:"application/pdf" OR mime:image',
148
+ index: "attachments.mime / bounded postfilter",
149
149
  aliases: [],
150
150
  type: "keyword",
151
151
  operators: [...terms, "wildcard"],
152
- normalization: "planned",
153
- support: "planned",
152
+ normalization: "lowercase; a value without / matches the first part; only where the messenger reports a type",
153
+ support: "A2",
154
154
  },
155
155
  {
156
156
  name: "size",
157
- example: "size:[1024 TO 4096]",
158
- index: "planned",
157
+ example: "size>10MB",
158
+ index: "attachments.size",
159
159
  aliases: [],
160
160
  type: "bytes",
161
161
  operators: [...terms, "range"],
162
- normalization: "planned",
163
- support: "planned",
162
+ normalization: "bytes; KB/MB/GB are 1024-based",
163
+ support: "A2",
164
164
  },
165
165
  {
166
166
  name: "tag",
@@ -173,6 +173,23 @@ export const QUERY_FIELDS = [
173
173
  support: "planned",
174
174
  },
175
175
  ];
176
+ const UNITS = {
177
+ "": 1,
178
+ b: 1,
179
+ k: 1024,
180
+ kb: 1024,
181
+ m: 1024 ** 2,
182
+ mb: 1024 ** 2,
183
+ g: 1024 ** 3,
184
+ gb: 1024 ** 3,
185
+ };
186
+ export const parseBytes = (value, span) => {
187
+ const [, amount, unit] = /^(\d+(?:\.\d+)?)\s*([a-z]*)$/iu.exec(value.trim()) ?? [];
188
+ const scale = UNITS[unit?.toLowerCase() ?? ""];
189
+ if (amount === undefined || scale === undefined)
190
+ queryError("invalid_size", span, "use bytes or KB/MB/GB, e.g. 10MB");
191
+ return Math.round(Number(amount) * scale);
192
+ };
176
193
  export const validatePredicate = (node) => {
177
194
  const field = QUERY_FIELDS.find(({ name }) => name === node.field);
178
195
  if (!field && ["after", "before"].includes(node.field))
@@ -187,6 +204,10 @@ export const validatePredicate = (node) => {
187
204
  queryError("missing_value", node.span);
188
205
  if ("values" in field && !field.values.includes(node.value.toLowerCase()))
189
206
  queryError("unknown_value", node.span, `${field.name} takes ${field.values.join(", ")}`);
207
+ if (field.name === "size")
208
+ for (const bound of node.operator === "range" ? [node.value, node.upper] : [node.value])
209
+ if (bound !== undefined && bound !== "*")
210
+ parseBytes(bound, node.span);
190
211
  if (field.name === "topic" && !/^\d+$/u.test(node.value))
191
212
  queryError("invalid_topic", node.span, "use a thread id in one chat");
192
213
  };
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/search/lucene/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/search/lucene/registry.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  export { type Asker, type GuardRequest, guardFor, type SendGuard, type SendGuardOptions, sendGuard, sharedJournal, } from "./guard.js";
2
2
  export { currentOperation, guardedWrite, type Operated } from "./guarded.js";
3
3
  export { type AccountAction, type ChatAction, type SendEntry, SendJournal, type SendKind, type SendOutcome, sendsPathFor, } from "./journal.js";
4
- export { DEFAULT_PERMISSIONS, fromOldSettings, keyForCommand, keyForWrite, LEVELS, type Level, levelFor, PERMISSIONS, type Permission, type PermissionKey, permissionFor, } from "./permissions.js";
4
+ export { DEFAULT_PERMISSIONS, fromOldSettings, keyForCommand, keyForWrite, LEVELS, type Level, layerPermissions, levelFor, PERMISSIONS, type Permission, type PermissionKey, permissionFor, } from "./permissions.js";
5
5
  export { type Recipient, RecipientList, recipientsPathFor } from "./recipients.js";
6
6
  export { newOperationId, newSendId } from "./send-id.js";
7
7
  export { readUpload, type Upload, type UploadKind } from "./upload.js";