@wirecat/cli-core 0.394.0 → 0.396.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 (80) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/dist/cli/commands-command.js +6 -0
  3. package/dist/cli/config-command.js +5 -2
  4. package/dist/cli/index.d.ts +1 -1
  5. package/dist/cli/index.js +1 -1
  6. package/dist/cli/input-fields.d.ts +3 -0
  7. package/dist/cli/input-fields.js +27 -0
  8. package/dist/cli/messenger/account-command.js +8 -3
  9. package/dist/cli/messenger/account-sessions-command.js +7 -2
  10. package/dist/cli/messenger/attachments-command.js +16 -4
  11. package/dist/cli/messenger/conversation-answers.d.ts +5 -0
  12. package/dist/cli/messenger/conversation-examples.d.ts +2 -0
  13. package/dist/cli/messenger/conversation-examples.js +25 -0
  14. package/dist/cli/messenger/conversations-command.js +2 -0
  15. package/dist/cli/messenger/mcp-command.js +12 -3
  16. package/dist/cli/messenger/message-answers.d.ts +5 -0
  17. package/dist/cli/messenger/message-writes.d.ts +5 -0
  18. package/dist/cli/messenger/models-command.js +15 -6
  19. package/dist/cli/messenger/polls-command.js +20 -5
  20. package/dist/cli/messenger/records-command.js +10 -2
  21. package/dist/cli/messenger/search-answers.js +2 -0
  22. package/dist/cli/messenger/search-command.js +12 -0
  23. package/dist/cli/messenger/searches-command.d.ts +2 -0
  24. package/dist/cli/messenger/searches-command.js +2 -1
  25. package/dist/cli/messenger/server-command.js +19 -7
  26. package/dist/cli/messenger/store-maintenance-command.d.ts +1 -1
  27. package/dist/cli/messenger/tasks-command.js +18 -6
  28. package/dist/cli/program.js +5 -2
  29. package/dist/cli/runs/command.js +11 -4
  30. package/dist/cli/skill-command.js +6 -1
  31. package/dist/entities/evidence.d.ts +40 -0
  32. package/dist/entities/index.d.ts +72 -2
  33. package/dist/entities/index.js +2 -0
  34. package/dist/entities/message.d.ts +9 -0
  35. package/dist/entities/message.js +6 -0
  36. package/dist/entities/saved-search.d.ts +1 -1
  37. package/dist/entities/saved-search.js +1 -1
  38. package/dist/errors/reasons.d.ts +1 -0
  39. package/dist/errors/reasons.js +16 -0
  40. package/dist/meetings/cli/search.js +1 -1
  41. package/dist/meetings/hit-query.d.ts +10 -0
  42. package/dist/meetings/hit-query.js +85 -1
  43. package/dist/meetings/index.d.ts +1 -1
  44. package/dist/meetings/index.js +1 -1
  45. package/dist/meetings/mcp/index.d.ts +15 -15
  46. package/dist/search/lucene/registry.js +2 -2
  47. package/dist/services/index.d.ts +3 -2
  48. package/dist/services/index.js +2 -1
  49. package/dist/services/meeting-combined.d.ts +1 -1
  50. package/dist/services/meeting-combined.js +4 -3
  51. package/dist/services/meeting-hit-search.d.ts +1 -1
  52. package/dist/services/meeting-hit-search.js +4 -2
  53. package/dist/services/meeting-searches.d.ts +25 -0
  54. package/dist/services/meeting-searches.js +35 -0
  55. package/dist/services/messages-search.js +13 -2
  56. package/dist/services/messages.d.ts +5 -0
  57. package/dist/services/search-record.d.ts +1 -1
  58. package/dist/services/searches.d.ts +1 -0
  59. package/dist/services/searches.js +17 -4
  60. package/dist/store/search-index.d.ts +4 -1
  61. package/dist/store/search-index.js +10 -1
  62. package/dist/store/searches.d.ts +5 -4
  63. package/dist/store/searches.js +4 -4
  64. package/dist/store/sqlite/hit-places.d.ts +12 -0
  65. package/dist/store/sqlite/hit-places.js +76 -0
  66. package/dist/store/sqlite/lucene-fields.d.ts +8 -0
  67. package/dist/store/sqlite/lucene-fields.js +6 -4
  68. package/dist/store/sqlite/lucene.js +25 -70
  69. package/dist/store/sqlite/manifest.js +2 -0
  70. package/dist/store/sqlite/migrations.generated.js +19 -0
  71. package/dist/store/sqlite/note-index.d.ts +11 -1
  72. package/dist/store/sqlite/note-index.js +18 -6
  73. package/dist/store/sqlite/schema.d.ts +39 -0
  74. package/dist/store/sqlite/schema.js +4 -0
  75. package/dist/store/sqlite/searches.d.ts +4 -4
  76. package/dist/store/sqlite/searches.js +21 -6
  77. package/dist/store/sqlite/transcript-query.d.ts +40 -0
  78. package/dist/store/sqlite/transcript-query.js +108 -0
  79. package/dist/store/sqlite/words.d.ts +6 -0
  80. package/package.json +3 -3
@@ -181,21 +181,24 @@ export const serverCommand = (messenger, options = {}) => {
181
181
  return ["--idle", idle];
182
182
  };
183
183
  const withIdle = (sub) => options.idle ? sub.option("--idle <duration>", "stop after this long with nobody using it — 15m, 1h") : sub;
184
- withIdle(destroysNothing(annotate(command.command("start"), { effects: LOCAL_WRITE })).description("start serve in the background — through the unit if one is installed — and answer once it connects")).action(async function () {
184
+ withIdle(destroysNothing(annotate(command.command("start"), { effects: LOCAL_WRITE, examples: [`${app.command} personal server start`] })).description("start serve in the background — through the unit if one is installed — and answer once it connects")).action(async function () {
185
185
  await start(prepare(this), idleArgs(this));
186
186
  });
187
- destroysNothing(annotate(command.command("stop"), { effects: LOCAL_WRITE }))
187
+ destroysNothing(annotate(command.command("stop"), { effects: LOCAL_WRITE, examples: [`${app.command} personal server stop`] }))
188
188
  .description("stop this profile's serve — through the unit if it runs under one")
189
189
  .action(async function () {
190
190
  await stop(prepare(this));
191
191
  });
192
- withIdle(destroysNothing(annotate(command.command("restart"), { effects: LOCAL_WRITE })).description("stop it and start it again")).action(async function () {
192
+ withIdle(destroysNothing(annotate(command.command("restart"), {
193
+ effects: LOCAL_WRITE,
194
+ examples: [`${app.command} personal server restart`],
195
+ })).description("stop it and start it again")).action(async function () {
193
196
  const args = idleArgs(this);
194
197
  const prepared = prepare(this);
195
198
  await stop({ ...prepared, say: () => { } });
196
199
  await start(prepared, args);
197
200
  });
198
- annotate(command.command("status"), { effects: LOCAL_READ })
201
+ annotate(command.command("status"), { effects: LOCAL_READ, examples: [`${app.command} personal server status`] })
199
202
  .description("whether serve runs for this profile, since when, who started it, and the unit if there is one")
200
203
  .action(async function () {
201
204
  const prepared = prepare(this);
@@ -261,7 +264,10 @@ export const serverCommand = (messenger, options = {}) => {
261
264
  ...flood.deadlines.map((one) => `Asked to wait before ${one.operation}${one.chatId ? ` in chat ${one.chatId}` : ""} until ${clock(one.until)}.`),
262
265
  ], outdated ? [nextStep("server.restart", { args: {} })] : []);
263
266
  });
264
- annotate(command.command("logs"), { effects: LOCAL_READ })
267
+ annotate(command.command("logs"), {
268
+ effects: LOCAL_READ,
269
+ examples: [`${app.command} personal server logs --limit 20`],
270
+ })
265
271
  .description("serve's latest log lines — from the journal under systemd, else its log file")
266
272
  .option("-n, --limit <n>", "how many lines", (value) => wholeNumber(value), 50)
267
273
  .action(async function () {
@@ -272,7 +278,10 @@ export const serverCommand = (messenger, options = {}) => {
272
278
  context.renderer.note(`no log yet for profile ${unit.profile}`);
273
279
  renderAnswer(this, context, wholeList("server logs", text.split("\n").filter(Boolean)), () => text ? readableLog(text.replace(/\n$/, "")) : "");
274
280
  });
275
- grantsAuthority(annotate(command.command("install"), { effects: LOCAL_WRITE }))
281
+ grantsAuthority(annotate(command.command("install"), {
282
+ effects: LOCAL_WRITE,
283
+ examples: [`${app.command} personal server install`],
284
+ }))
276
285
  .description("write a systemd user unit or a launchd agent for this profile; starts nothing")
277
286
  .action(function () {
278
287
  const { context, platform, unit, say } = prepare(this);
@@ -287,7 +296,10 @@ export const serverCommand = (messenger, options = {}) => {
287
296
  `A daily follow-up review is off. To turn it on: ${app.command} ${unit.profile} schedule agent follow-ups claude "${followUpsPrompt(app.command)}" --at 08:30`,
288
297
  ]);
289
298
  });
290
- grantsAuthority(annotate(command.command("uninstall"), { effects: LOCAL_WRITE }))
299
+ grantsAuthority(annotate(command.command("uninstall"), {
300
+ effects: LOCAL_WRITE,
301
+ examples: [`${app.command} personal server uninstall`],
302
+ }))
291
303
  .description("remove this profile's unit; stop it first")
292
304
  .action(async function () {
293
305
  const { context, platform, unit, say } = prepare(this);
@@ -2,9 +2,9 @@ import { Command } from "commander";
2
2
  import type { Messenger } from "./context.js";
3
3
  /** `doctor`'s short summary of the store. Must answer for a broken file, so an error is a field. */
4
4
  export declare const storeSummary: (env: NodeJS.ProcessEnv) => Promise<{
5
+ error?: undefined;
5
6
  path: string;
6
7
  exists: boolean;
7
- error?: undefined;
8
8
  } | {
9
9
  path: string;
10
10
  exists: boolean;
@@ -130,7 +130,10 @@ export const tasksCommand = (messenger) => {
130
130
  ? "agent"
131
131
  : "owner";
132
132
  const tasks = new Command("tasks").description("what waits on you — unanswered questions, mentions, requests, promises — kept in the local store; review and serve add them");
133
- withQuery(annotate(tasks.command("list"), { effects: LOCAL_READ }).description("tasks, oldest first, with their message or note source"), TASK_QUERY)
133
+ withQuery(annotate(tasks.command("list"), {
134
+ effects: LOCAL_READ,
135
+ examples: [`${tool} personal tasks list --limit 10`],
136
+ }).description("tasks, oldest first, with their message or note source"), TASK_QUERY)
134
137
  .option("--limit <n>", "how many", positiveCount("--limit"))
135
138
  .action(async function (words) {
136
139
  const context = messengerContext(this, messenger);
@@ -146,7 +149,10 @@ export const tasksCommand = (messenger) => {
146
149
  if (found.items.length === 0 && context.format === "pretty")
147
150
  context.renderer.note("no tasks — review, inbox and messages sync add them as questions arrive");
148
151
  });
149
- planOptions(destroysNothing(annotate(tasks.command("add"), { effects: LOCAL_WRITE }))
152
+ planOptions(destroysNothing(annotate(tasks.command("add"), {
153
+ effects: LOCAL_WRITE,
154
+ examples: [`${tool} personal tasks add note:101 --type promise --category documents --title "Review draft"`],
155
+ }))
150
156
  .description("add a task for a stored message or note — a promise, a request")
151
157
  .argument("<message>", "a message locator, msg:<provider>/<account>/<chat>/<message>, or note:<id>")
152
158
  .requiredOption("--type <type>", "the task's type: question, request, mention or promise", taskTypeOf)
@@ -176,7 +182,10 @@ export const tasksCommand = (messenger) => {
176
182
  else if (followUpOf && context.format === "pretty")
177
183
  context.renderer.note(`${task.key ?? task.id} follows up ${followUpOf.key} (${followUpOf.status}), which stays closed: linked follow-up-of`);
178
184
  });
179
- planOptions(destroysNothing(annotate(tasks.command("plan"), { effects: LOCAL_WRITE }))
185
+ planOptions(destroysNothing(annotate(tasks.command("plan"), {
186
+ effects: LOCAL_WRITE,
187
+ examples: [`${tool} personal tasks plan DOC-12 --title "Review draft"`],
188
+ }))
180
189
  .summary("set a task's title, description, due date, next check, category and assignee")
181
190
  .description("set a task's title, description, due date, next check, category and assignee; nothing reaches the messenger")
182
191
  .argument("<task>", "the task's id or key, as tasks list shows it")
@@ -189,7 +198,10 @@ export const tasksCommand = (messenger) => {
189
198
  const planned = await context.withServices((services) => services.tasks.plan(id, plan, writerOf(this)));
190
199
  renderAnswer(this, context, itemOf(snakeKeys(planned)), () => `${card(planned)}\n`);
191
200
  });
192
- destroysNothing(annotate(tasks.command("link"), { effects: LOCAL_WRITE }))
201
+ destroysNothing(annotate(tasks.command("link"), {
202
+ effects: LOCAL_WRITE,
203
+ examples: [`${tool} personal tasks link DOC-12 https://example.com/draft`],
204
+ }))
193
205
  .description("link a task to messages, chats, people or URLs — or to another task: task:<id>")
194
206
  .argument("<task>", "the task's id or key, as tasks list shows it")
195
207
  .argument("[targets...]", "msg: locators, person:<id>, document:<id>, note:<id>, a URL; or task:<id>, which links two project tasks")
@@ -209,7 +221,7 @@ export const tasksCommand = (messenger) => {
209
221
  if (!("relations" in linked) && linked.review && context.format === "pretty")
210
222
  context.renderer.note(`${linked.review} possible duplicate pair(s) went to tasks duplicates`);
211
223
  });
212
- annotate(tasks.command("show"), { effects: LOCAL_READ })
224
+ annotate(tasks.command("show"), { effects: LOCAL_READ, examples: [`${tool} personal tasks show DOC-12`] })
213
225
  .description("one task: its plan and everything linked to it")
214
226
  .argument("<task>", "the task's id or key, as tasks list shows it")
215
227
  .action(async function (id) {
@@ -307,7 +319,7 @@ export const tasksCommand = (messenger) => {
307
319
  const unmerged = await context.withServices((services) => services.tasks.unmerge(dup, writerOf(this)));
308
320
  renderAnswer(this, context, itemOf(snakeKeys(unmerged)), () => `${card(unmerged.task)}\n`);
309
321
  });
310
- withQuery(annotate(tasks.command("agenda"), { effects: LOCAL_READ })
322
+ withQuery(annotate(tasks.command("agenda"), { effects: LOCAL_READ, examples: [`${tool} personal tasks agenda`] })
311
323
  .summary("what needs a look today: tasks due, chats you owe or wait on, what you are owed")
312
324
  .description("what needs a look today, from the local store and without message text: tasks overdue, due or to check, " +
313
325
  "chats where you owe an answer, chats where you wait for one, open tasks someone else does"), AGENDA_QUERY)
@@ -20,6 +20,7 @@ import { changesAuthorityNow, isLogin, isStoreChange, judgedEffects, judgedTarge
20
20
  import { itemOf, renderAnswer, snakeKeys } from "./envelope.js";
21
21
  import { byteCount, DEFAULT_COMMAND_MS, DEFAULT_OUTPUT_BYTES, execution } from "./execution.js";
22
22
  import { installHelp } from "./help/first-screen.js";
23
+ import { showInputFields } from "./input-fields.js";
23
24
  import { MAX_BUFFERED_INPUT, provideInputPolicy } from "./input-policy.js";
24
25
  import { checkJson, liftJson } from "./json-fields.js";
25
26
  import { movedPath, movedPointer } from "./moved.js";
@@ -354,7 +355,7 @@ const runOnce = async (argv, definition, options) => {
354
355
  // Only before `--`: what follows is a positional, an agent's text among them, never a command word.
355
356
  const end = lifted.indexOf("--");
356
357
  for (const words of [flags, end < 0 ? lifted : lifted.slice(0, end)])
357
- refuseJoinedPath(program, words.filter((word) => !word.startsWith("-")));
358
+ refuseJoinedPath(program, words.filter((word) => !word.startsWith("-")), profile !== undefined && !/\s/.test(profile) ? [profile] : []);
358
359
  }
359
360
  catch (failure) {
360
361
  const settled = await settleFailure(failure, { definition, program, rest: lifted, profile, options });
@@ -420,7 +421,8 @@ const runOnce = async (argv, definition, options) => {
420
421
  error.code === "commander.unknownCommand" &&
421
422
  rest[0] !== undefined &&
422
423
  !commandWords(program).has(rest[0])) {
423
- message += ` "${profile}" is not a command, so it was read as a profile name — which left "${rest[0]}" to be one.`;
424
+ message = message.trimEnd();
425
+ message += ` — "${profile}" is not a command, so it was read as a profile name — which left "${rest[0]}" to be one.`;
424
426
  }
425
427
  const failure = new CliError("validation_error", message);
426
428
  const settled = await settleFailure(failure, { definition, program, rest, profile, options });
@@ -577,6 +579,7 @@ const failed = ({ app }, program, rest, error, settled, debug) => {
577
579
  targets: judgedTargets(program),
578
580
  ...(effects ? { effects } : {}),
579
581
  });
582
+ showInputFields(object, (path && commandAt(program, path)) || program);
580
583
  const command = path || app.command;
581
584
  return {
582
585
  object,
@@ -18,7 +18,11 @@ export const runsCommand = (app) => {
18
18
  throw new CliError("not_found", `no recorded run "${id}" — \`${lineOf(from, "runs list")}\` shows them`);
19
19
  return found;
20
20
  };
21
- annotate(command.command("list"), { effects: LOCAL_READ, mcp: false })
21
+ annotate(command.command("list"), {
22
+ effects: LOCAL_READ,
23
+ mcp: false,
24
+ examples: [`${app.command} runs list --limit 10`],
25
+ })
22
26
  .description("recorded runs, newest first")
23
27
  .option("--limit <n>", "how many to show", positiveCount("--limit"), 20)
24
28
  .option("--page <n>", "which page, starting at 1", positiveCount("--page"), 1)
@@ -32,7 +36,7 @@ export const runsCommand = (app) => {
32
36
  if (runs.length === 0)
33
37
  renderer.note("nothing recorded — a run is kept with `--record`, or when it fails");
34
38
  });
35
- annotate(command.command("show"), { effects: LOCAL_READ, mcp: false })
39
+ annotate(command.command("show"), { effects: LOCAL_READ, mcp: false, examples: [`${app.command} runs show run-101`] })
36
40
  .argument("<run-id>", `an id from \`${app.command} runs list\``)
37
41
  .description("one run: what it was, how it ended, and every event it logged")
38
42
  .option("--problems", "only failed responses, warnings and crashes")
@@ -53,7 +57,10 @@ export const runsCommand = (app) => {
53
57
  if (shown.length < events.length)
54
58
  renderer.note(`${events.length - shown.length} other events — \`${lineOf(this, `runs show ${id}`)}\` shows them all`);
55
59
  });
56
- annotate(command.command("search"), { effects: LOCAL_READ })
60
+ annotate(command.command("search"), {
61
+ effects: LOCAL_READ,
62
+ examples: [`${app.command} runs search timeout --limit 10`],
63
+ })
57
64
  .description("search recorded diagnostic metadata and events; no message contents")
58
65
  .argument("[query]", "case-insensitive literal diagnostic text")
59
66
  .addOption(new Option("--status <status>", "run outcome").choices(["success", "failed", "partial", "running"]))
@@ -79,7 +86,7 @@ export const runsCommand = (app) => {
79
86
  since_time: options.sinceTime,
80
87
  }));
81
88
  });
82
- annotate(command.command("path"), { effects: NO_EFFECTS, mcp: false })
89
+ annotate(command.command("path"), { effects: NO_EFFECTS, mcp: false, examples: [`${app.command} runs path run-101`] })
83
90
  .argument("<run-id>", `an id from \`${app.command} runs list\``)
84
91
  .description("the directory holding one run")
85
92
  .action(function (id) {
@@ -13,8 +13,13 @@ export const skillCommand = (app, skill) => {
13
13
  }, SHARED_SKILLS);
14
14
  // An installed skill is instructions every later agent follows.
15
15
  const install = command.commands.find((sub) => sub.name() === "install");
16
- if (install)
16
+ if (install) {
17
17
  grantsAuthority(install);
18
+ annotate(install, { examples: [`${app.command} skill install --for agents`] });
19
+ }
20
+ const show = command.commands.find((sub) => sub.name() === "show");
21
+ if (show)
22
+ annotate(show, { examples: [`${app.command} skill show`, `${app.command} skill show follow-ups`] });
18
23
  return annotate(command, { mcp: false });
19
24
  };
20
25
  /** Skills this package ships for every CLI on it, printed by `skill show <name>`: `skills/` beside `dist/` and `src/`. */
@@ -21,6 +21,11 @@ export declare const contribution: v.StrictObjectSchema<{
21
21
  readonly excerpt: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
22
22
  readonly matched_in: v.OptionalSchema<v.PicklistSchema<["text", "transcript", "filename", "file", "context", "picture"], undefined>, undefined>;
23
23
  readonly score: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
24
+ readonly match: v.OptionalSchema<v.PicklistSchema<["words", "beginnings", "corrected"], undefined>, undefined>;
25
+ readonly corrections: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
26
+ readonly from: v.StringSchema<undefined>;
27
+ readonly to: v.ArraySchema<v.StringSchema<undefined>, undefined>;
28
+ }, undefined>, undefined>, undefined>;
24
29
  readonly found_in: v.OptionalSchema<v.PicklistSchema<["archive", "server", "both"], undefined>, undefined>;
25
30
  readonly discovery: v.OptionalSchema<v.StrictObjectSchema<{
26
31
  readonly coverage: v.NumberSchema<undefined>;
@@ -202,6 +207,11 @@ export declare const contribution: v.StrictObjectSchema<{
202
207
  readonly excerpt: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
203
208
  readonly matched_in: v.OptionalSchema<v.PicklistSchema<["text", "transcript", "filename", "file", "context", "picture"], undefined>, undefined>;
204
209
  readonly score: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
210
+ readonly match: v.OptionalSchema<v.PicklistSchema<["words", "beginnings", "corrected"], undefined>, undefined>;
211
+ readonly corrections: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
212
+ readonly from: v.StringSchema<undefined>;
213
+ readonly to: v.ArraySchema<v.StringSchema<undefined>, undefined>;
214
+ }, undefined>, undefined>, undefined>;
205
215
  readonly found_in: v.OptionalSchema<v.PicklistSchema<["archive", "server", "both"], undefined>, undefined>;
206
216
  readonly discovery: v.OptionalSchema<v.StrictObjectSchema<{
207
217
  readonly coverage: v.NumberSchema<undefined>;
@@ -421,6 +431,11 @@ export declare const contribution: v.StrictObjectSchema<{
421
431
  readonly excerpt: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
422
432
  readonly matched_in: v.OptionalSchema<v.PicklistSchema<["text", "transcript", "filename", "file", "context", "picture"], undefined>, undefined>;
423
433
  readonly score: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
434
+ readonly match: v.OptionalSchema<v.PicklistSchema<["words", "beginnings", "corrected"], undefined>, undefined>;
435
+ readonly corrections: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
436
+ readonly from: v.StringSchema<undefined>;
437
+ readonly to: v.ArraySchema<v.StringSchema<undefined>, undefined>;
438
+ }, undefined>, undefined>, undefined>;
424
439
  readonly found_in: v.OptionalSchema<v.PicklistSchema<["archive", "server", "both"], undefined>, undefined>;
425
440
  readonly discovery: v.OptionalSchema<v.StrictObjectSchema<{
426
441
  readonly coverage: v.NumberSchema<undefined>;
@@ -602,6 +617,11 @@ export declare const contribution: v.StrictObjectSchema<{
602
617
  readonly excerpt: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
603
618
  readonly matched_in: v.OptionalSchema<v.PicklistSchema<["text", "transcript", "filename", "file", "context", "picture"], undefined>, undefined>;
604
619
  readonly score: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
620
+ readonly match: v.OptionalSchema<v.PicklistSchema<["words", "beginnings", "corrected"], undefined>, undefined>;
621
+ readonly corrections: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
622
+ readonly from: v.StringSchema<undefined>;
623
+ readonly to: v.ArraySchema<v.StringSchema<undefined>, undefined>;
624
+ }, undefined>, undefined>, undefined>;
605
625
  readonly found_in: v.OptionalSchema<v.PicklistSchema<["archive", "server", "both"], undefined>, undefined>;
606
626
  readonly discovery: v.OptionalSchema<v.StrictObjectSchema<{
607
627
  readonly coverage: v.NumberSchema<undefined>;
@@ -857,6 +877,11 @@ export declare const evidence: v.UnionSchema<[v.StrictObjectSchema<{
857
877
  readonly excerpt: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
858
878
  readonly matched_in: v.OptionalSchema<v.PicklistSchema<["text", "transcript", "filename", "file", "context", "picture"], undefined>, undefined>;
859
879
  readonly score: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
880
+ readonly match: v.OptionalSchema<v.PicklistSchema<["words", "beginnings", "corrected"], undefined>, undefined>;
881
+ readonly corrections: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
882
+ readonly from: v.StringSchema<undefined>;
883
+ readonly to: v.ArraySchema<v.StringSchema<undefined>, undefined>;
884
+ }, undefined>, undefined>, undefined>;
860
885
  readonly found_in: v.OptionalSchema<v.PicklistSchema<["archive", "server", "both"], undefined>, undefined>;
861
886
  readonly discovery: v.OptionalSchema<v.StrictObjectSchema<{
862
887
  readonly coverage: v.NumberSchema<undefined>;
@@ -1038,6 +1063,11 @@ export declare const evidence: v.UnionSchema<[v.StrictObjectSchema<{
1038
1063
  readonly excerpt: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
1039
1064
  readonly matched_in: v.OptionalSchema<v.PicklistSchema<["text", "transcript", "filename", "file", "context", "picture"], undefined>, undefined>;
1040
1065
  readonly score: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
1066
+ readonly match: v.OptionalSchema<v.PicklistSchema<["words", "beginnings", "corrected"], undefined>, undefined>;
1067
+ readonly corrections: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
1068
+ readonly from: v.StringSchema<undefined>;
1069
+ readonly to: v.ArraySchema<v.StringSchema<undefined>, undefined>;
1070
+ }, undefined>, undefined>, undefined>;
1041
1071
  readonly found_in: v.OptionalSchema<v.PicklistSchema<["archive", "server", "both"], undefined>, undefined>;
1042
1072
  readonly discovery: v.OptionalSchema<v.StrictObjectSchema<{
1043
1073
  readonly coverage: v.NumberSchema<undefined>;
@@ -1257,6 +1287,11 @@ export declare const evidence: v.UnionSchema<[v.StrictObjectSchema<{
1257
1287
  readonly excerpt: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
1258
1288
  readonly matched_in: v.OptionalSchema<v.PicklistSchema<["text", "transcript", "filename", "file", "context", "picture"], undefined>, undefined>;
1259
1289
  readonly score: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
1290
+ readonly match: v.OptionalSchema<v.PicklistSchema<["words", "beginnings", "corrected"], undefined>, undefined>;
1291
+ readonly corrections: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
1292
+ readonly from: v.StringSchema<undefined>;
1293
+ readonly to: v.ArraySchema<v.StringSchema<undefined>, undefined>;
1294
+ }, undefined>, undefined>, undefined>;
1260
1295
  readonly found_in: v.OptionalSchema<v.PicklistSchema<["archive", "server", "both"], undefined>, undefined>;
1261
1296
  readonly discovery: v.OptionalSchema<v.StrictObjectSchema<{
1262
1297
  readonly coverage: v.NumberSchema<undefined>;
@@ -1438,6 +1473,11 @@ export declare const evidence: v.UnionSchema<[v.StrictObjectSchema<{
1438
1473
  readonly excerpt: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
1439
1474
  readonly matched_in: v.OptionalSchema<v.PicklistSchema<["text", "transcript", "filename", "file", "context", "picture"], undefined>, undefined>;
1440
1475
  readonly score: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
1476
+ readonly match: v.OptionalSchema<v.PicklistSchema<["words", "beginnings", "corrected"], undefined>, undefined>;
1477
+ readonly corrections: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
1478
+ readonly from: v.StringSchema<undefined>;
1479
+ readonly to: v.ArraySchema<v.StringSchema<undefined>, undefined>;
1480
+ }, undefined>, undefined>, undefined>;
1441
1481
  readonly found_in: v.OptionalSchema<v.PicklistSchema<["archive", "server", "both"], undefined>, undefined>;
1442
1482
  readonly discovery: v.OptionalSchema<v.StrictObjectSchema<{
1443
1483
  readonly coverage: v.NumberSchema<undefined>;
@@ -69,6 +69,11 @@ export declare const ENTITIES: {
69
69
  readonly excerpt: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
70
70
  readonly matched_in: v.OptionalSchema<v.PicklistSchema<["text", "transcript", "filename", "file", "context", "picture"], undefined>, undefined>;
71
71
  readonly score: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
72
+ readonly match: v.OptionalSchema<v.PicklistSchema<["words", "beginnings", "corrected"], undefined>, undefined>;
73
+ readonly corrections: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
74
+ readonly from: v.StringSchema<undefined>;
75
+ readonly to: v.ArraySchema<v.StringSchema<undefined>, undefined>;
76
+ }, undefined>, undefined>, undefined>;
72
77
  readonly found_in: v.OptionalSchema<v.PicklistSchema<["archive", "server", "both"], undefined>, undefined>;
73
78
  readonly discovery: v.OptionalSchema<v.StrictObjectSchema<{
74
79
  readonly coverage: v.NumberSchema<undefined>;
@@ -250,6 +255,11 @@ export declare const ENTITIES: {
250
255
  readonly excerpt: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
251
256
  readonly matched_in: v.OptionalSchema<v.PicklistSchema<["text", "transcript", "filename", "file", "context", "picture"], undefined>, undefined>;
252
257
  readonly score: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
258
+ readonly match: v.OptionalSchema<v.PicklistSchema<["words", "beginnings", "corrected"], undefined>, undefined>;
259
+ readonly corrections: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
260
+ readonly from: v.StringSchema<undefined>;
261
+ readonly to: v.ArraySchema<v.StringSchema<undefined>, undefined>;
262
+ }, undefined>, undefined>, undefined>;
253
263
  readonly found_in: v.OptionalSchema<v.PicklistSchema<["archive", "server", "both"], undefined>, undefined>;
254
264
  readonly discovery: v.OptionalSchema<v.StrictObjectSchema<{
255
265
  readonly coverage: v.NumberSchema<undefined>;
@@ -431,6 +441,11 @@ export declare const ENTITIES: {
431
441
  readonly excerpt: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
432
442
  readonly matched_in: v.OptionalSchema<v.PicklistSchema<["text", "transcript", "filename", "file", "context", "picture"], undefined>, undefined>;
433
443
  readonly score: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
444
+ readonly match: v.OptionalSchema<v.PicklistSchema<["words", "beginnings", "corrected"], undefined>, undefined>;
445
+ readonly corrections: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
446
+ readonly from: v.StringSchema<undefined>;
447
+ readonly to: v.ArraySchema<v.StringSchema<undefined>, undefined>;
448
+ }, undefined>, undefined>, undefined>;
434
449
  readonly found_in: v.OptionalSchema<v.PicklistSchema<["archive", "server", "both"], undefined>, undefined>;
435
450
  readonly discovery: v.OptionalSchema<v.StrictObjectSchema<{
436
451
  readonly coverage: v.NumberSchema<undefined>;
@@ -591,7 +606,7 @@ export declare const ENTITIES: {
591
606
  }, undefined>, undefined>;
592
607
  }, undefined>, undefined>;
593
608
  readonly provider_metadata: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>, undefined>;
594
- }, "chat_title" | "context" | "discovery" | "email" | "excerpt" | "found_in" | "matched_in" | "ref" | "score" | "sender_name" | "timestamp">;
609
+ }, "chat_title" | "context" | "corrections" | "discovery" | "email" | "excerpt" | "found_in" | "match" | "matched_in" | "ref" | "score" | "sender_name" | "timestamp">;
595
610
  readonly "~standard": v.StandardProps<{
596
611
  ref: string;
597
612
  chat_title?: string | null | undefined;
@@ -600,6 +615,11 @@ export declare const ENTITIES: {
600
615
  excerpt?: string | undefined;
601
616
  matched_in?: "context" | "file" | "filename" | "picture" | "text" | "transcript" | undefined;
602
617
  score?: number | undefined;
618
+ match?: "beginnings" | "corrected" | "words" | undefined;
619
+ corrections?: {
620
+ from: string;
621
+ to: string[];
622
+ }[] | undefined;
603
623
  found_in?: "archive" | "both" | "server" | undefined;
604
624
  discovery?: {
605
625
  coverage: number;
@@ -658,6 +678,11 @@ export declare const ENTITIES: {
658
678
  excerpt?: string | undefined;
659
679
  matched_in?: "context" | "file" | "filename" | "picture" | "text" | "transcript" | undefined;
660
680
  score?: number | undefined;
681
+ match?: "beginnings" | "corrected" | "words" | undefined;
682
+ corrections?: {
683
+ from: string;
684
+ to: string[];
685
+ }[] | undefined;
661
686
  found_in?: "archive" | "both" | "server" | undefined;
662
687
  discovery?: {
663
688
  coverage: number;
@@ -717,6 +742,11 @@ export declare const ENTITIES: {
717
742
  excerpt?: string | undefined;
718
743
  matched_in?: "context" | "file" | "filename" | "picture" | "text" | "transcript" | undefined;
719
744
  score?: number | undefined;
745
+ match?: "beginnings" | "corrected" | "words" | undefined;
746
+ corrections?: {
747
+ from: string;
748
+ to: string[];
749
+ }[] | undefined;
720
750
  found_in?: "archive" | "both" | "server" | undefined;
721
751
  discovery?: {
722
752
  coverage: number;
@@ -777,6 +807,11 @@ export declare const ENTITIES: {
777
807
  excerpt?: string | undefined;
778
808
  matched_in?: "context" | "file" | "filename" | "picture" | "text" | "transcript" | undefined;
779
809
  score?: number | undefined;
810
+ match?: "beginnings" | "corrected" | "words" | undefined;
811
+ corrections?: {
812
+ from: string;
813
+ to: string[];
814
+ }[] | undefined;
780
815
  found_in?: "archive" | "both" | "server" | undefined;
781
816
  discovery?: {
782
817
  coverage: number;
@@ -836,6 +871,11 @@ export declare const ENTITIES: {
836
871
  excerpt?: string | undefined;
837
872
  matched_in?: "context" | "file" | "filename" | "picture" | "text" | "transcript" | undefined;
838
873
  score?: number | undefined;
874
+ match?: "beginnings" | "corrected" | "words" | undefined;
875
+ corrections?: {
876
+ from: string;
877
+ to: string[];
878
+ }[] | undefined;
839
879
  found_in?: "archive" | "both" | "server" | undefined;
840
880
  discovery?: {
841
881
  coverage: number;
@@ -910,6 +950,11 @@ export declare const ENTITIES: {
910
950
  readonly excerpt: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
911
951
  readonly matched_in: v.OptionalSchema<v.PicklistSchema<["text", "transcript", "filename", "file", "context", "picture"], undefined>, undefined>;
912
952
  readonly score: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
953
+ readonly match: v.OptionalSchema<v.PicklistSchema<["words", "beginnings", "corrected"], undefined>, undefined>;
954
+ readonly corrections: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
955
+ readonly from: v.StringSchema<undefined>;
956
+ readonly to: v.ArraySchema<v.StringSchema<undefined>, undefined>;
957
+ }, undefined>, undefined>, undefined>;
913
958
  readonly found_in: v.OptionalSchema<v.PicklistSchema<["archive", "server", "both"], undefined>, undefined>;
914
959
  readonly discovery: v.OptionalSchema<v.StrictObjectSchema<{
915
960
  readonly coverage: v.NumberSchema<undefined>;
@@ -1091,6 +1136,11 @@ export declare const ENTITIES: {
1091
1136
  readonly excerpt: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
1092
1137
  readonly matched_in: v.OptionalSchema<v.PicklistSchema<["text", "transcript", "filename", "file", "context", "picture"], undefined>, undefined>;
1093
1138
  readonly score: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
1139
+ readonly match: v.OptionalSchema<v.PicklistSchema<["words", "beginnings", "corrected"], undefined>, undefined>;
1140
+ readonly corrections: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
1141
+ readonly from: v.StringSchema<undefined>;
1142
+ readonly to: v.ArraySchema<v.StringSchema<undefined>, undefined>;
1143
+ }, undefined>, undefined>, undefined>;
1094
1144
  readonly found_in: v.OptionalSchema<v.PicklistSchema<["archive", "server", "both"], undefined>, undefined>;
1095
1145
  readonly discovery: v.OptionalSchema<v.StrictObjectSchema<{
1096
1146
  readonly coverage: v.NumberSchema<undefined>;
@@ -2857,7 +2907,7 @@ export declare const ENTITIES: {
2857
2907
  readonly saved_search: v.StrictObjectSchema<{
2858
2908
  readonly id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
2859
2909
  readonly name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
2860
- readonly command: v.PicklistSchema<["search", "stats", "message-top", "author-top", "admin-statistics"], undefined>;
2910
+ readonly command: v.PicklistSchema<["search", "stats", "message-top", "author-top", "admin-statistics", "meetings-search"], undefined>;
2861
2911
  readonly params: v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>;
2862
2912
  readonly language: v.StringSchema<undefined>;
2863
2913
  readonly version: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>]>;
@@ -3264,6 +3314,11 @@ export declare const ENTITIES: {
3264
3314
  readonly excerpt: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
3265
3315
  readonly matched_in: v.OptionalSchema<v.PicklistSchema<["text", "transcript", "filename", "file", "context", "picture"], undefined>, undefined>;
3266
3316
  readonly score: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
3317
+ readonly match: v.OptionalSchema<v.PicklistSchema<["words", "beginnings", "corrected"], undefined>, undefined>;
3318
+ readonly corrections: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
3319
+ readonly from: v.StringSchema<undefined>;
3320
+ readonly to: v.ArraySchema<v.StringSchema<undefined>, undefined>;
3321
+ }, undefined>, undefined>, undefined>;
3267
3322
  readonly found_in: v.OptionalSchema<v.PicklistSchema<["archive", "server", "both"], undefined>, undefined>;
3268
3323
  readonly discovery: v.OptionalSchema<v.StrictObjectSchema<{
3269
3324
  readonly coverage: v.NumberSchema<undefined>;
@@ -3445,6 +3500,11 @@ export declare const ENTITIES: {
3445
3500
  readonly excerpt: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
3446
3501
  readonly matched_in: v.OptionalSchema<v.PicklistSchema<["text", "transcript", "filename", "file", "context", "picture"], undefined>, undefined>;
3447
3502
  readonly score: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
3503
+ readonly match: v.OptionalSchema<v.PicklistSchema<["words", "beginnings", "corrected"], undefined>, undefined>;
3504
+ readonly corrections: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
3505
+ readonly from: v.StringSchema<undefined>;
3506
+ readonly to: v.ArraySchema<v.StringSchema<undefined>, undefined>;
3507
+ }, undefined>, undefined>, undefined>;
3448
3508
  readonly found_in: v.OptionalSchema<v.PicklistSchema<["archive", "server", "both"], undefined>, undefined>;
3449
3509
  readonly discovery: v.OptionalSchema<v.StrictObjectSchema<{
3450
3510
  readonly coverage: v.NumberSchema<undefined>;
@@ -3664,6 +3724,11 @@ export declare const ENTITIES: {
3664
3724
  readonly excerpt: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
3665
3725
  readonly matched_in: v.OptionalSchema<v.PicklistSchema<["text", "transcript", "filename", "file", "context", "picture"], undefined>, undefined>;
3666
3726
  readonly score: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
3727
+ readonly match: v.OptionalSchema<v.PicklistSchema<["words", "beginnings", "corrected"], undefined>, undefined>;
3728
+ readonly corrections: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
3729
+ readonly from: v.StringSchema<undefined>;
3730
+ readonly to: v.ArraySchema<v.StringSchema<undefined>, undefined>;
3731
+ }, undefined>, undefined>, undefined>;
3667
3732
  readonly found_in: v.OptionalSchema<v.PicklistSchema<["archive", "server", "both"], undefined>, undefined>;
3668
3733
  readonly discovery: v.OptionalSchema<v.StrictObjectSchema<{
3669
3734
  readonly coverage: v.NumberSchema<undefined>;
@@ -3845,6 +3910,11 @@ export declare const ENTITIES: {
3845
3910
  readonly excerpt: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
3846
3911
  readonly matched_in: v.OptionalSchema<v.PicklistSchema<["text", "transcript", "filename", "file", "context", "picture"], undefined>, undefined>;
3847
3912
  readonly score: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
3913
+ readonly match: v.OptionalSchema<v.PicklistSchema<["words", "beginnings", "corrected"], undefined>, undefined>;
3914
+ readonly corrections: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
3915
+ readonly from: v.StringSchema<undefined>;
3916
+ readonly to: v.ArraySchema<v.StringSchema<undefined>, undefined>;
3917
+ }, undefined>, undefined>, undefined>;
3848
3918
  readonly found_in: v.OptionalSchema<v.PicklistSchema<["archive", "server", "both"], undefined>, undefined>;
3849
3919
  readonly discovery: v.OptionalSchema<v.StrictObjectSchema<{
3850
3920
  readonly coverage: v.NumberSchema<undefined>;
@@ -61,6 +61,8 @@ export const ENTITIES = {
61
61
  "excerpt",
62
62
  "matched_in",
63
63
  "score",
64
+ "match",
65
+ "corrections",
64
66
  "found_in",
65
67
  "discovery",
66
68
  "context",
@@ -25,6 +25,15 @@ export declare const message: v.StrictObjectSchema<{
25
25
  /** `picture`: the picture search lane found it by what the picture shows; it follows the text hits. */
26
26
  readonly matched_in: v.OptionalSchema<v.PicklistSchema<["text", "transcript", "filename", "file", "context", "picture"], undefined>, undefined>;
27
27
  readonly score: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
28
+ /**
29
+ * `corrected`: a query word matched only a spelling speech recognition garbled in a voice note's transcript,
30
+ * listed in `corrections`. `words` and `beginnings`: what a discovery search matched.
31
+ */
32
+ readonly match: v.OptionalSchema<v.PicklistSchema<["words", "beginnings", "corrected"], undefined>, undefined>;
33
+ readonly corrections: v.OptionalSchema<v.ArraySchema<v.StrictObjectSchema<{
34
+ readonly from: v.StringSchema<undefined>;
35
+ readonly to: v.ArraySchema<v.StringSchema<undefined>, undefined>;
36
+ }, undefined>, undefined>, undefined>;
28
37
  /** Where a search found it: the local archive, the messenger's server, or both. */
29
38
  readonly found_in: v.OptionalSchema<v.PicklistSchema<["archive", "server", "both"], undefined>, undefined>;
30
39
  /** A discovery search's partial match: how much of the question it covers, and which words it lacks. */
@@ -37,6 +37,12 @@ export const message = v.strictObject({
37
37
  /** `picture`: the picture search lane found it by what the picture shows; it follows the text hits. */
38
38
  matched_in: v.optional(v.picklist(["text", "transcript", "filename", "file", "context", "picture"])),
39
39
  score: v.optional(v.number()),
40
+ /**
41
+ * `corrected`: a query word matched only a spelling speech recognition garbled in a voice note's transcript,
42
+ * listed in `corrections`. `words` and `beginnings`: what a discovery search matched.
43
+ */
44
+ match: v.optional(v.picklist(["words", "beginnings", "corrected"])),
45
+ corrections: v.optional(v.array(v.strictObject({ from: text, to: v.array(text) }))),
40
46
  /** Where a search found it: the local archive, the messenger's server, or both. */
41
47
  found_in: v.optional(v.picklist(["archive", "server", "both"])),
42
48
  /** A discovery search's partial match: how much of the question it covers, and which words it lacks. */
@@ -4,7 +4,7 @@ export declare const savedSearch: v.StrictObjectSchema<{
4
4
  readonly id: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
5
5
  /** `null` for a run in the history. */
6
6
  readonly name: v.NullableSchema<v.StringSchema<undefined>, undefined>;
7
- readonly command: v.PicklistSchema<["search", "stats", "message-top", "author-top", "admin-statistics"], undefined>;
7
+ readonly command: v.PicklistSchema<["search", "stats", "message-top", "author-top", "admin-statistics", "meetings-search"], undefined>;
8
8
  /** The query and the options it runs with, as the command took them. */
9
9
  readonly params: v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>;
10
10
  readonly language: v.StringSchema<undefined>;
@@ -5,7 +5,7 @@ export const savedSearch = v.strictObject({
5
5
  id,
6
6
  /** `null` for a run in the history. */
7
7
  name: v.nullable(text),
8
- command: v.picklist(["search", "stats", "message-top", "author-top", "admin-statistics"]),
8
+ command: v.picklist(["search", "stats", "message-top", "author-top", "admin-statistics", "meetings-search"]),
9
9
  /** The query and the options it runs with, as the command took them. */
10
10
  params: v.record(v.string(), v.unknown()),
11
11
  language: text,
@@ -1,5 +1,6 @@
1
1
  import type { FailureContext } from "@wirecat/cli-base";
2
2
  import type { ErrorReason } from "@wirecat/cli-base/standards";
3
+ export declare const INPUT_FIELD_REASONS: ErrorReason[];
3
4
  /** Every reason this package raises; cli-base's own are known to the handler already. */
4
5
  export declare const REASONS: ErrorReason[];
5
6
  /**
@@ -51,6 +51,7 @@ const OTHERS = [
51
51
  validation("ranking.invalid", "the ranking is not valid"),
52
52
  validation("selection.changed", "the stored selection changed meanwhile"),
53
53
  validation("selection.invalid", "the selection is not valid"),
54
+ validation("search.kind", "the saved search belongs to another kind of search: messages or meetings"),
54
55
  ["selection.out-of-scope", "permission_error", "the selection reaches outside what this profile may read"],
55
56
  validation("stemmer.invalid", "the stemmer is not valid for that script"),
56
57
  validation("stemmer.newer", "the stems were built by a newer tool"),
@@ -77,9 +78,24 @@ const OTHERS = [
77
78
  validation("vocabulary.over-entry-budget", "the vocabulary has too many entries"),
78
79
  ["vocabulary.stale", "configuration_error", "the vocabulary changed meanwhile"],
79
80
  ];
81
+ export const INPUT_FIELD_REASONS = defineReasons([
82
+ {
83
+ reason: "input.field-conflict",
84
+ code: "validation_error",
85
+ message: "the input fields conflict",
86
+ details: ["fields"],
87
+ },
88
+ {
89
+ reason: "input.field-unsupported",
90
+ code: "validation_error",
91
+ message: "the input field is not supported",
92
+ details: ["fields"],
93
+ },
94
+ ]);
80
95
  /** Every reason this package raises; cli-base's own are known to the handler already. */
81
96
  export const REASONS = defineReasons([
82
97
  ...QUERY_REASONS,
98
+ ...INPUT_FIELD_REASONS,
83
99
  ...[...QUERY, ...OTHERS].map(([reason, code, message]) => ({
84
100
  reason,
85
101
  code,