@wirecat/cli-memo 0.131.25 → 0.131.26

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 (153) hide show
  1. package/dist/actions/actions.d.ts +1 -1
  2. package/dist/actions/actions.d.ts.map +1 -1
  3. package/dist/actions/actions.js +27 -8
  4. package/dist/actions/actions.js.map +1 -1
  5. package/dist/actions/command.d.ts +1 -1
  6. package/dist/actions/command.d.ts.map +1 -1
  7. package/dist/actions/command.js +1 -12
  8. package/dist/actions/command.js.map +1 -1
  9. package/dist/bin/memo.js +2 -2
  10. package/dist/bundle/{all-profiles-L2T7PQ7S.js → all-profiles-VULFSNYE.js} +5 -5
  11. package/dist/bundle/{anthropic-KWI2B4O2.js → anthropic-VXQ6ST2U.js} +3 -3
  12. package/dist/bundle/{app-server-GLDIS3HE.js → app-server-HQPELIPY.js} +35 -35
  13. package/dist/bundle/auto-3R4RFJGK.js +86 -0
  14. package/dist/bundle/{bun-SMKYTOGI.js → bun-2NMWL5YB.js} +2 -2
  15. package/dist/bundle/{bun-sqlite-PKY3JXMR.js → bun-sqlite-CT544OXO.js} +2 -2
  16. package/dist/bundle/{chunk-T3R6QHD2.js → chunk-254TXVLA.js} +1 -1
  17. package/dist/bundle/{chunk-VZ3K7IYC.js → chunk-2ND2XYME.js} +12 -9
  18. package/dist/bundle/{chunk-JVNSHN2J.js → chunk-3CVDHJER.js} +1 -1
  19. package/dist/bundle/{chunk-6OP743NB.js → chunk-3ZJE5TIG.js} +1 -1
  20. package/dist/bundle/{chunk-MZS3LIMW.js → chunk-4ENVJFRM.js} +27 -27
  21. package/dist/bundle/{chunk-KFZGI7BU.js → chunk-5FPQGUJA.js} +1 -1
  22. package/dist/bundle/{chunk-ENU2556X.js → chunk-6PRRZC7Z.js} +1 -1
  23. package/dist/bundle/{chunk-I5LIEFQR.js → chunk-6TJCRDNZ.js} +3 -3
  24. package/dist/bundle/{chunk-FS3ABWVX.js → chunk-7ISENDNK.js} +10 -10
  25. package/dist/bundle/{chunk-5ANNUWNM.js → chunk-7LMTWOTP.js} +1 -1
  26. package/dist/bundle/{chunk-XFDE6AL4.js → chunk-A4NZ2XOG.js} +7 -7
  27. package/dist/bundle/{chunk-WHVH72AD.js → chunk-A6PITALJ.js} +3 -1
  28. package/dist/bundle/{chunk-JLBKAIVT.js → chunk-AGMYCYSG.js} +150 -150
  29. package/dist/bundle/{chunk-ERQHZZNF.js → chunk-ARDUJR5Z.js} +1 -1
  30. package/dist/bundle/{chunk-NFTWNCEL.js → chunk-BELLQAWL.js} +7 -7
  31. package/dist/bundle/{chunk-D5ZV7PRP.js → chunk-BO4FN4UB.js} +2 -2
  32. package/dist/bundle/{chunk-UQS6Y2A7.js → chunk-CRC3AW6N.js} +2 -2
  33. package/dist/bundle/{chunk-EFTJ4RTT.js → chunk-CUWI6JIX.js} +5 -5
  34. package/dist/bundle/{chunk-ZVEGLXYB.js → chunk-CW3NJ764.js} +4 -4
  35. package/dist/bundle/{chunk-EEVUVWHW.js → chunk-DKKWZMR7.js} +1 -1
  36. package/dist/bundle/{chunk-QOWGFGG3.js → chunk-DUHXWFCB.js} +4 -4
  37. package/dist/bundle/{chunk-OGMTUMB7.js → chunk-FHY664YS.js} +3 -3
  38. package/dist/bundle/{chunk-MAUKGKRA.js → chunk-GJBK3M6X.js} +28 -4
  39. package/dist/bundle/{chunk-MWX7UJCL.js → chunk-GOEHJK2R.js} +4 -4
  40. package/dist/bundle/{chunk-5SKYUS4U.js → chunk-GPYGMETC.js} +284 -279
  41. package/dist/bundle/{chunk-PCT2CIYR.js → chunk-H6O6IQND.js} +3 -3
  42. package/dist/bundle/{chunk-UWUP3A5H.js → chunk-HN3EDDVX.js} +12 -12
  43. package/dist/bundle/{chunk-POXCMAM7.js → chunk-HVVBSM2C.js} +601 -396
  44. package/dist/bundle/{chunk-4AONXXP2.js → chunk-IJ34FAES.js} +11 -11
  45. package/dist/bundle/{chunk-LFNJ6CG6.js → chunk-IUM5XZWV.js} +5 -5
  46. package/dist/bundle/{chunk-QA674BMY.js → chunk-J57DDKF4.js} +1 -1
  47. package/dist/bundle/{chunk-RKLZQVKL.js → chunk-KFDPW2AR.js} +2 -2
  48. package/dist/bundle/{chunk-ILUTSRU3.js → chunk-KMZRXGTF.js} +1 -1
  49. package/dist/bundle/{chunk-ZUV337F2.js → chunk-KTDNFSXC.js} +20 -20
  50. package/dist/bundle/{chunk-7Y6O4UQB.js → chunk-LJZFMXDC.js} +20 -20
  51. package/dist/bundle/{chunk-E2WPSRCI.js → chunk-LMN7SYX4.js} +1 -1
  52. package/dist/bundle/{chunk-J7T6RSR5.js → chunk-M4QN77GH.js} +3 -3
  53. package/dist/bundle/{chunk-SBMBBVXF.js → chunk-M6O4DH5F.js} +1 -1
  54. package/dist/bundle/{chunk-INA5WGY7.js → chunk-MQAHMAJB.js} +1 -1
  55. package/dist/bundle/{chunk-RTII6JWI.js → chunk-NAM2Y63Z.js} +2 -2
  56. package/dist/bundle/{chunk-ZLB2CM7Z.js → chunk-NH2JSH24.js} +4 -4
  57. package/dist/bundle/{chunk-5GMOYTJQ.js → chunk-OYB3FUYQ.js} +1 -1
  58. package/dist/bundle/{chunk-YMAS7U5X.js → chunk-PWA3RNXN.js} +256 -257
  59. package/dist/bundle/{chunk-VGYXKQJE.js → chunk-QFW4MJIH.js} +219 -221
  60. package/dist/bundle/{chunk-ON5SHKHB.js → chunk-QKQ7A4L7.js} +43 -43
  61. package/dist/bundle/{chunk-QYDCVWD4.js → chunk-S3RBWUUA.js} +5 -5
  62. package/dist/bundle/{chunk-BNF2ZUNS.js → chunk-SY7M2DLJ.js} +8 -8
  63. package/dist/bundle/{chunk-5JYB6QKS.js → chunk-TKVRZZE3.js} +1 -13
  64. package/dist/bundle/{chunk-SW5YJCHC.js → chunk-TPFWNOPG.js} +4 -4
  65. package/dist/bundle/{chunk-JDDLDKC7.js → chunk-TXANQZEG.js} +2 -2
  66. package/dist/bundle/{chunk-BX7DVBWD.js → chunk-UZXCBBDC.js} +9 -9
  67. package/dist/bundle/{chunk-ZKZT6PCF.js → chunk-VL3YCTZD.js} +6 -6
  68. package/dist/bundle/{chunk-H5QHU5LZ.js → chunk-WRZ7JDA2.js} +5 -5
  69. package/dist/bundle/{chunk-IE27DJP3.js → chunk-XKGXVVYV.js} +4 -4
  70. package/dist/bundle/{chunk-QJJSMLBR.js → chunk-YFBKS5BW.js} +2 -2
  71. package/dist/bundle/{chunk-47EZNSMD.js → chunk-Z3YGDBBS.js} +2 -2
  72. package/dist/bundle/{chunk-WGHQXJHL.js → chunk-ZR3BPBS6.js} +7 -7
  73. package/dist/bundle/{command-contract-47EKA67S.js → command-contract-RQMIQKBS.js} +11 -11
  74. package/dist/bundle/{decode-EEDEXCHR.js → decode-7VB3CHK2.js} +2 -2
  75. package/dist/bundle/{echarts-36MD3UZF.js → echarts-45D6USAX.js} +2 -2
  76. package/dist/bundle/{embed-R6JZ4CDW.js → embed-KU2RGB24.js} +3 -3
  77. package/dist/bundle/{embedder-XUIOKCH6.js → embedder-E7YZDZ5Y.js} +6 -6
  78. package/dist/bundle/{entry-WOAZRQ5F.js → entry-N42HJMIN.js} +4 -4
  79. package/dist/bundle/failure-R355OCVE.js +66 -0
  80. package/dist/bundle/{first-run-3ZUSIFQJ.js → first-run-Y5YNAAO3.js} +5 -5
  81. package/dist/bundle/{first-screen-WQ2IDXDP.js → first-screen-SNPGBQFZ.js} +12 -12
  82. package/dist/bundle/{instructions-7VMPJMUM.js → instructions-6EFSPC7C.js} +1 -1
  83. package/dist/bundle/{mcp-I7LL7AJG.js → mcp-6Z7UKX7E.js} +35 -35
  84. package/dist/bundle/memo.js +6 -6
  85. package/dist/bundle/{node-SBHCG4ZC.js → node-OXC26QXO.js} +2 -2
  86. package/dist/bundle/{node-sqlite-EMKROM5U.js → node-sqlite-FNTICDEN.js} +3 -3
  87. package/dist/bundle/{oauth-OJPTUA5K.js → oauth-4JFOFCBB.js} +4 -4
  88. package/dist/bundle/{open-XI2AVS5B.js → open-WXFCCY7S.js} +2 -2
  89. package/dist/bundle/{openai-NCYTRZB6.js → openai-TPQKQNM7.js} +7 -7
  90. package/dist/bundle/{process-373B2EBA.js → process-YWPAOI6G.js} +1 -1
  91. package/dist/bundle/{program-VW7IJ755.js → program-WFUPN7XO.js} +560 -660
  92. package/dist/bundle/{prompt-L3KQBPNH.js → prompt-HJUH4EP4.js} +2 -2
  93. package/dist/bundle/{recognize-GFWZX4F6.js → recognize-DAIRHALM.js} +1 -1
  94. package/dist/bundle/{remote-5IGAYQBB.js → remote-MJLWTLAX.js} +4 -4
  95. package/dist/bundle/{rerank-6HWHGDFX.js → rerank-VAK5HSJE.js} +4 -4
  96. package/dist/bundle/{serve-AA7RKEOM.js → serve-M2A66WOW.js} +6 -6
  97. package/dist/bundle/server-33FB7QXW.js +48 -0
  98. package/dist/bundle/server-AIPDQO57.js +61 -0
  99. package/dist/bundle/{server-Z6L4U6HO.js → server-NN2CBVSX.js} +50 -50
  100. package/dist/bundle/{state-3WTPOBXR.js → state-6TBUXJOX.js} +3 -3
  101. package/dist/bundle/{store-LNP5BXUL.js → store-TJCL3QBY.js} +9 -9
  102. package/dist/bundle/store-maintenance-command-NKJV5A3G.js +48 -0
  103. package/dist/bundle/update-OXR3SNM2.js +69 -0
  104. package/dist/config.d.ts +13 -1
  105. package/dist/config.d.ts.map +1 -1
  106. package/dist/config.js +21 -1
  107. package/dist/config.js.map +1 -1
  108. package/dist/context/command.d.ts.map +1 -1
  109. package/dist/context/command.js +6 -2
  110. package/dist/context/command.js.map +1 -1
  111. package/dist/context/context.d.ts +2 -0
  112. package/dist/context/context.d.ts.map +1 -1
  113. package/dist/context/context.js +15 -0
  114. package/dist/context/context.js.map +1 -1
  115. package/dist/examples.d.ts.map +1 -1
  116. package/dist/examples.js +2 -1
  117. package/dist/examples.js.map +1 -1
  118. package/dist/mail/messages-command.d.ts.map +1 -1
  119. package/dist/mail/messages-command.js +9 -2
  120. package/dist/mail/messages-command.js.map +1 -1
  121. package/dist/mail/review-command.d.ts.map +1 -1
  122. package/dist/mail/review-command.js +5 -8
  123. package/dist/mail/review-command.js.map +1 -1
  124. package/dist/reasons.d.ts.map +1 -1
  125. package/dist/reasons.js +0 -12
  126. package/dist/reasons.js.map +1 -1
  127. package/dist/review/command.d.ts +0 -1
  128. package/dist/review/command.d.ts.map +1 -1
  129. package/dist/review/command.js +2 -10
  130. package/dist/review/command.js.map +1 -1
  131. package/dist/review/kinds.d.ts +4 -21
  132. package/dist/review/kinds.d.ts.map +1 -1
  133. package/dist/review/kinds.js +13 -174
  134. package/dist/review/kinds.js.map +1 -1
  135. package/dist/review/review.js +2 -2
  136. package/dist/review/review.js.map +1 -1
  137. package/dist/review/status.js +2 -2
  138. package/dist/review/status.js.map +1 -1
  139. package/dist/schedule/command.d.ts +2 -2
  140. package/dist/schedule/command.d.ts.map +1 -1
  141. package/dist/schedule/command.js +9 -4
  142. package/dist/schedule/command.js.map +1 -1
  143. package/dist/version.d.ts +1 -1
  144. package/dist/version.js +1 -1
  145. package/package.json +2 -2
  146. package/skills/mail-triage/SKILL.md +19 -11
  147. package/dist/bundle/auto-QFG57LR6.js +0 -86
  148. package/dist/bundle/failure-BHRE5S75.js +0 -66
  149. package/dist/bundle/server-MWUCYBJF.js +0 -61
  150. package/dist/bundle/server-XEY5AKKG.js +0 -48
  151. package/dist/bundle/store-maintenance-command-6HEGTKPL.js +0 -48
  152. package/dist/bundle/update-6GWVILUX.js +0 -69
  153. /package/dist/bundle/{chunk-MNDLWYNQ.js → chunk-DF7NE4ZG.js} +0 -0
@@ -311,8 +311,8 @@ var queryFieldsOf = /* @__PURE__ */ __name((schema, annotations = {}) => {
311
311
 
312
312
  // node_modules/.pnpm/@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/query/help.js
313
313
  var shownOf = /* @__PURE__ */ __name((registry) => registry.backend === "native" ? registry.fields.filter((field) => field.native) : registry.fields, "shownOf");
314
- var leftOut = /* @__PURE__ */ __name((fields2) => fields2.filter((field) => field.negatable).map((field) => field.name), "leftOut");
315
- var has = /* @__PURE__ */ __name((fields2, operator) => fields2.some((field) => field.operators.includes(operator)), "has");
314
+ var leftOut = /* @__PURE__ */ __name((fields) => fields.filter((field) => field.negatable).map((field) => field.name), "leftOut");
315
+ var has = /* @__PURE__ */ __name((fields, operator) => fields.some((field) => field.operators.includes(operator)), "has");
316
316
  var syntaxOf = /* @__PURE__ */ __name((shown, backend) => [
317
317
  "field:value",
318
318
  ...has(shown, "phrase") ? ['"a phrase"'] : [],
@@ -341,9 +341,9 @@ var queryDescription = /* @__PURE__ */ __name((registry) => {
341
341
  return "field:value terms; this list filters by none yet, so any term is refused";
342
342
  const negatable = leftOut(shown);
343
343
  const terms = registry.backend === "native" ? `field:value terms joined by AND that narrow the list${negatable.length > 0 ? `; -field:value or NOT field:value leaves out what matches, for ${negatable.join(", ")} only` : ""}` : `field:value terms that narrow the list (Lucene: AND OR NOT, -field:value${has(shown, "range") ? ", [a TO b], > <" : ""})`;
344
- const fields2 = shown.map((field) => field.values ? `${field.name} (${field.values.join("|")})` : field.name);
344
+ const fields = shown.map((field) => field.values ? `${field.name} (${field.values.join("|")})` : field.name);
345
345
  const defaults = registry.defaults?.length ? `; unless named: ${registry.defaults.join(" ")}` : "";
346
- return `${terms}; fields: ${fields2.join(", ")}; e.g. ${shown[0]?.example ?? ""}${defaults}`;
346
+ return `${terms}; fields: ${fields.join(", ")}; e.g. ${shown[0]?.example ?? ""}${defaults}`;
347
347
  }, "queryDescription");
348
348
 
349
349
  // node_modules/.pnpm/@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/query/parser.js
@@ -389,13 +389,13 @@ var decodeEscapes = /* @__PURE__ */ __name((raw, span, fail) => {
389
389
  }
390
390
  return out;
391
391
  }, "decodeEscapes");
392
- var tokensOf = /* @__PURE__ */ __name((text6, fail = queryError) => {
392
+ var tokensOf = /* @__PURE__ */ __name((text5, fail = queryError) => {
393
393
  const tokens = [];
394
394
  let at = 0;
395
395
  let range = false;
396
- while (at < text6.length) {
396
+ while (at < text5.length) {
397
397
  const start = at;
398
- const c = text6[at] ?? "";
398
+ const c = text5[at] ?? "";
399
399
  if (whitespace(c)) {
400
400
  at++;
401
401
  continue;
@@ -403,30 +403,30 @@ var tokensOf = /* @__PURE__ */ __name((text6, fail = queryError) => {
403
403
  let kind = c;
404
404
  if (c === '"' || !range && c === "/") {
405
405
  at++;
406
- while (at < text6.length && text6[at] !== c) {
407
- if (text6[at] === "\\" && (c === '"' || text6[at + 1] === "/"))
406
+ while (at < text5.length && text5[at] !== c) {
407
+ if (text5[at] === "\\" && (c === '"' || text5[at + 1] === "/"))
408
408
  at++;
409
409
  at++;
410
410
  }
411
- if (at >= text6.length)
412
- fail("query.unclosed-literal", { start, end: at }, c === "/" ? regexHint(text6, start) : void 0);
411
+ if (at >= text5.length)
412
+ fail("query.unclosed-literal", { start, end: at }, c === "/" ? regexHint(text5, start) : void 0);
413
413
  at++;
414
- if (c === "/" && /^[dgimsuvy]+(?:$|[ \t\n\r)])/.test(text6.slice(at)))
414
+ if (c === "/" && /^[dgimsuvy]+(?:$|[ \t\n\r)])/.test(text5.slice(at)))
415
415
  fail("query.unsupported-regex-flags", { start: at, end: at + 1 }, "Lucene regex does not take JavaScript flags");
416
416
  kind = c === '"' ? "quoted" : "regex";
417
417
  } else if (range && c !== "]" && c !== "}") {
418
- while (at < text6.length && !whitespace(text6[at] ?? "") && !["]", "}"].includes(text6[at] ?? ""))
418
+ while (at < text5.length && !whitespace(text5[at] ?? "") && !["]", "}"].includes(text5[at] ?? ""))
419
419
  at++;
420
420
  kind = "rangeValue";
421
421
  } else if (reserved.has(c)) {
422
422
  if (c === "\\") {
423
423
  at += 2;
424
- while (at < text6.length && !whitespace(text6[at] ?? "") && (!reserved.has(text6[at] ?? "") || ["+", "-"].includes(text6[at] ?? "")))
424
+ while (at < text5.length && !whitespace(text5[at] ?? "") && (!reserved.has(text5[at] ?? "") || ["+", "-"].includes(text5[at] ?? "")))
425
425
  at++;
426
426
  kind = "term";
427
427
  } else {
428
428
  at++;
429
- if ((c === "<" || c === ">") && text6[at] === "=") {
429
+ if ((c === "<" || c === ">") && text5[at] === "=") {
430
430
  at++;
431
431
  kind += "=";
432
432
  }
@@ -437,15 +437,15 @@ var tokensOf = /* @__PURE__ */ __name((text6, fail = queryError) => {
437
437
  }
438
438
  } else {
439
439
  at++;
440
- while (at < text6.length) {
441
- const next = text6[at] ?? "";
440
+ while (at < text5.length) {
441
+ const next = text5[at] ?? "";
442
442
  if (next === "\\") {
443
- if (at + 1 >= text6.length)
443
+ if (at + 1 >= text5.length)
444
444
  fail("query.invalid-escape", { start: at, end: at + 1 });
445
445
  at += 2;
446
446
  continue;
447
447
  }
448
- if (next === "@" && new RegExp("^@(?:\\p{L}|[\\p{L}\\p{N}][^\\s@]*\\.[\\p{L}\\p{N}])", "u").test(text6.slice(at))) {
448
+ if (next === "@" && new RegExp("^@(?:\\p{L}|[\\p{L}\\p{N}][^\\s@]*\\.[\\p{L}\\p{N}])", "u").test(text5.slice(at))) {
449
449
  at++;
450
450
  continue;
451
451
  }
@@ -454,19 +454,19 @@ var tokensOf = /* @__PURE__ */ __name((text6, fail = queryError) => {
454
454
  at++;
455
455
  }
456
456
  const [field, colon] = tokens.slice(-2);
457
- if (field?.kind === "term" && colon?.kind === ":" && colon.span.end === start && text6[at] === ":" && /^[a-z][a-z_-]*$/u.test(text6.slice(start, at)) && /^:[^\s()"]/u.test(text6.slice(at)))
458
- while (at < text6.length && !whitespace(text6[at] ?? "") && !["(", ")", '"'].includes(text6[at] ?? ""))
457
+ if (field?.kind === "term" && colon?.kind === ":" && colon.span.end === start && text5[at] === ":" && /^[a-z][a-z_-]*$/u.test(text5.slice(start, at)) && /^:[^\s()"]/u.test(text5.slice(at)))
458
+ while (at < text5.length && !whitespace(text5[at] ?? "") && !["(", ")", '"'].includes(text5[at] ?? ""))
459
459
  at++;
460
- const raw = text6.slice(start, at);
460
+ const raw = text5.slice(start, at);
461
461
  kind = { AND: "AND", OR: "OR", NOT: "NOT", "&&": "AND", "||": "OR" }[raw] ?? (/^\d+(?:\.\d+)?$/u.test(raw) ? "number" : "term");
462
462
  }
463
- tokens.push({ kind, raw: text6.slice(start, at), span: { start, end: at } });
463
+ tokens.push({ kind, raw: text5.slice(start, at), span: { start, end: at } });
464
464
  }
465
465
  tokens.push({ kind: "EOF", raw: "", span: { start: at, end: at } });
466
466
  return tokens;
467
467
  }, "tokensOf");
468
- var quoteHint = /* @__PURE__ */ __name((text6, at) => {
469
- for (const match of text6.matchAll(/(?<=^|[\s(])([\p{L}\p{N}_.-]+):([^\s"()]+)/gu)) {
468
+ var quoteHint = /* @__PURE__ */ __name((text5, at) => {
469
+ for (const match of text5.matchAll(/(?<=^|[\s(])([\p{L}\p{N}_.-]+):([^\s"()]+)/gu)) {
470
470
  const [whole, field, value = ""] = match;
471
471
  if (at < match.index || at > match.index + whole.length)
472
472
  continue;
@@ -474,15 +474,15 @@ var quoteHint = /* @__PURE__ */ __name((text6, at) => {
474
474
  }
475
475
  return void 0;
476
476
  }, "quoteHint");
477
- var regexHint = /* @__PURE__ */ __name((text6, at) => {
478
- const word = `${/[^\s()"]*$/u.exec(text6.slice(0, at))?.[0] ?? ""}${/^[^\s()"]*/u.exec(text6.slice(at))?.[0] ?? ""}`;
479
- return quoteHint(text6, at) ?? `/ starts a regular expression; put the value in quotes: "${word}"`;
477
+ var regexHint = /* @__PURE__ */ __name((text5, at) => {
478
+ const word = `${/[^\s()"]*$/u.exec(text5.slice(0, at))?.[0] ?? ""}${/^[^\s()"]*/u.exec(text5.slice(at))?.[0] ?? ""}`;
479
+ return quoteHint(text5, at) ?? `/ starts a regular expression; put the value in quotes: "${word}"`;
480
480
  }, "regexHint");
481
- var parseLucene = /* @__PURE__ */ __name((text6, { defaultField = "text", proximity = false, ...context3 } = {}) => {
482
- const fail = /* @__PURE__ */ __name((reason, span, alternative) => queryError(reason, span, alternative ?? quoteHint(text6, span.start), context3), "fail");
483
- if (text6.length > QUERY_LIMITS.bytes || new TextEncoder().encode(text6).length > QUERY_LIMITS.bytes)
484
- fail("query.too-large", { start: 0, end: text6.length });
485
- const tokens = tokensOf(text6, fail);
481
+ var parseLucene = /* @__PURE__ */ __name((text5, { defaultField = "text", proximity = false, ...context3 } = {}) => {
482
+ const fail = /* @__PURE__ */ __name((reason, span, alternative) => queryError(reason, span, alternative ?? quoteHint(text5, span.start), context3), "fail");
483
+ if (text5.length > QUERY_LIMITS.bytes || new TextEncoder().encode(text5).length > QUERY_LIMITS.bytes)
484
+ fail("query.too-large", { start: 0, end: text5.length });
485
+ const tokens = tokensOf(text5, fail);
486
486
  let at = 0;
487
487
  let count6 = 0;
488
488
  let depth = 0;
@@ -648,8 +648,8 @@ var parseLucene = /* @__PURE__ */ __name((text6, { defaultField = "text", proxim
648
648
  }
649
649
  return { version: 1, language: "lucene-v1", root };
650
650
  }, "parseLucene");
651
- var implicitTextTerms = /* @__PURE__ */ __name((text6) => {
652
- const tokens = tokensOf(text6);
651
+ var implicitTextTerms = /* @__PURE__ */ __name((text5) => {
652
+ const tokens = tokensOf(text5);
653
653
  if (tokens.some(({ kind }) => ["AND", "OR", "NOT", "+", "-", "!", "(", ")"].includes(kind)))
654
654
  return /* @__PURE__ */ new Set();
655
655
  return new Set(tokens.flatMap((token, index) => (token.kind === "term" || token.kind === "number") && ![":", "=", "<", ">", "<=", ">="].includes(tokens[index - 1]?.kind ?? "") && ![":", "=", "<", ">", "<=", ">="].includes(tokens[index + 1]?.kind ?? "") ? [token.span.start] : []));
@@ -739,14 +739,14 @@ var describeQuery = /* @__PURE__ */ __name((registry) => ({
739
739
  }), "describeQuery");
740
740
  var exampleProblems = /* @__PURE__ */ __name((registry) => {
741
741
  const syntaxOnly = { ...registry, backend: "sql" };
742
- const problem = /* @__PURE__ */ __name((text6, field) => {
742
+ const problem = /* @__PURE__ */ __name((text5, field) => {
743
743
  try {
744
- const named = walkQuery(validateQuery(parseLucene(text6, { defaultField: "none" }), syntaxOnly).root);
745
- return named.every((node) => node.field === field) ? void 0 : `"${text6}" does not name ${field}`;
744
+ const named = walkQuery(validateQuery(parseLucene(text5, { defaultField: "none" }), syntaxOnly).root);
745
+ return named.every((node) => node.field === field) ? void 0 : `"${text5}" does not name ${field}`;
746
746
  } catch (failure) {
747
747
  if (!isCliError(failure))
748
748
  throw failure;
749
- return `"${text6}": ${failure.message}`;
749
+ return `"${text5}": ${failure.message}`;
750
750
  }
751
751
  }, "problem");
752
752
  const defaults = (registry.defaults ?? []).map((term) => {
@@ -802,7 +802,7 @@ var QUERY_REASONS = defineReasons([
802
802
  })));
803
803
 
804
804
  // node_modules/.pnpm/@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_typescript@7.0.2_vitest@5.0.5/node_modules/@wirecat/cli-base/dist/query/evaluate.js
805
- var wordsOf = /* @__PURE__ */ __name((text6) => text6.toLowerCase().match(/[\p{L}\p{N}]+/gu) ?? [], "wordsOf");
805
+ var wordsOf = /* @__PURE__ */ __name((text5) => text5.toLowerCase().match(/[\p{L}\p{N}]+/gu) ?? [], "wordsOf");
806
806
  var pattern = /* @__PURE__ */ __name((value) => new RegExp(`^${[...value].map((char) => char === "*" ? ".*" : char === "?" ? "." : char.replace(/[.+^${}()|[\]\\]/, "\\$&")).join("")}$`, "iu"), "pattern");
807
807
  var present = /* @__PURE__ */ __name((value) => value !== void 0 && value !== null && value !== "", "present");
808
808
  var matchOne = /* @__PURE__ */ __name((field, node, value, options) => {
@@ -810,10 +810,10 @@ var matchOne = /* @__PURE__ */ __name((field, node, value, options) => {
810
810
  return false;
811
811
  if (node.operator === "wildcard" && node.value === "*")
812
812
  return true;
813
- const text6 = String(value);
813
+ const text5 = String(value);
814
814
  switch (field.type) {
815
815
  case "txt": {
816
- const words2 = wordsOf(text6);
816
+ const words2 = wordsOf(text5);
817
817
  if (node.operator === "wildcard")
818
818
  return words2.some((word) => pattern(node.value).test(word));
819
819
  const wanted = wordsOf(node.value);
@@ -827,13 +827,13 @@ var matchOne = /* @__PURE__ */ __name((field, node, value, options) => {
827
827
  return (lower === "*" || (lowerInclusive ? number2 >= Number(lower) : number2 > Number(lower))) && (upper === "*" || (upperInclusive ? number2 <= Number(upper) : number2 < Number(upper)));
828
828
  }
829
829
  case "time": {
830
- const time = Date.parse(text6);
830
+ const time = Date.parse(text5);
831
831
  const [lower, upper, lowerInclusive, upperInclusive] = node.operator === "range" ? [node.value, node.upper ?? "*", node.lower_inclusive ?? true, node.upper_inclusive ?? true] : [node.value, node.value, true, true];
832
832
  const range = dateRange(lower, upper, lowerInclusive, upperInclusive, options.zone ?? "UTC", node.span, options.now);
833
833
  return (range.lower === void 0 || (range.lower_inclusive ? time >= range.lower : time > range.lower)) && (range.upper === void 0 || (range.upper_inclusive ? time <= range.upper : time < range.upper));
834
834
  }
835
835
  default:
836
- return node.operator === "wildcard" ? pattern(node.value).test(text6) : text6.toLowerCase() === node.value.toLowerCase();
836
+ return node.operator === "wildcard" ? pattern(node.value).test(text5) : text5.toLowerCase() === node.value.toLowerCase();
837
837
  }
838
838
  }, "matchOne");
839
839
  var matches = /* @__PURE__ */ __name((node, item, byName, options) => {
@@ -854,9 +854,9 @@ var matches = /* @__PURE__ */ __name((node, item, byName, options) => {
854
854
  const value = item[node.field];
855
855
  return Array.isArray(value) ? value.some((one) => matchOne(field, node, one, options)) : matchOne(field, node, value, options);
856
856
  }, "matches");
857
- var evaluate = /* @__PURE__ */ __name((ast, fields2, item, options = {}) => matches(ast.root, item, new Map(fields2.map((field) => [field.name, field])), options), "evaluate");
857
+ var evaluate = /* @__PURE__ */ __name((ast, fields, item, options = {}) => matches(ast.root, item, new Map(fields.map((field) => [field.name, field])), options), "evaluate");
858
858
 
859
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/reference.js
859
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/reference.js
860
860
  var invalid = /* @__PURE__ */ __name(() => new CliError("validation_error", "expected meeting:<accountId>/<meetingId>[/<transcriptId>[/<cuePosition>]] with safe integer IDs"), "invalid");
861
861
  var integer2 = /* @__PURE__ */ __name((value, minimum = 1) => {
862
862
  if (!Number.isSafeInteger(value) || value < minimum)
@@ -874,8 +874,8 @@ var formatMeetingReference = /* @__PURE__ */ __name((reference2) => {
874
874
  }
875
875
  return `meeting:${parts.join("/")}`;
876
876
  }, "formatMeetingReference");
877
- var parseMeetingReference = /* @__PURE__ */ __name((text6) => {
878
- const value = text6.trim();
877
+ var parseMeetingReference = /* @__PURE__ */ __name((text5) => {
878
+ const value = text5.trim();
879
879
  if (!value.startsWith("meeting:"))
880
880
  throw invalid();
881
881
  const parts = value.slice(8).split("/");
@@ -891,9 +891,9 @@ var parseMeetingReference = /* @__PURE__ */ __name((text6) => {
891
891
  };
892
892
  return reference2;
893
893
  }, "parseMeetingReference");
894
- var canonicalMeetingReference = /* @__PURE__ */ __name((text6) => formatMeetingReference(parseMeetingReference(text6)), "canonicalMeetingReference");
894
+ var canonicalMeetingReference = /* @__PURE__ */ __name((text5) => formatMeetingReference(parseMeetingReference(text5)), "canonicalMeetingReference");
895
895
 
896
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/item.js
896
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/item.js
897
897
  var text = string();
898
898
  var count = pipe(number(), integer(), minValue(0));
899
899
  var MEETING_ISSUES = ["time_without_zone"];
@@ -958,7 +958,7 @@ var MEETING_QUERY = {
958
958
  })
959
959
  };
960
960
 
961
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/join-key.js
961
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/join-key.js
962
962
  var joinKeyOf = /* @__PURE__ */ __name((url) => {
963
963
  const parsed = urlOf(url);
964
964
  if (!parsed)
@@ -992,15 +992,15 @@ var urlOf = /* @__PURE__ */ __name((url) => {
992
992
  }
993
993
  }, "urlOf");
994
994
 
995
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/calendar-text.js
995
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/calendar-text.js
996
996
  var ENTITIES = { amp: "&", lt: "<", gt: ">", quot: '"', "#39": "'", apos: "'", nbsp: " " };
997
997
  var SECRET_LINE = /(?<![\p{L}\p{N}])(pass ?codes?|passwords?|pwd|pins?|access ?codes?|meeting ?codes?|kennwort|пароль|пин-?код|код доступа)(?![\p{L}\p{N}])|pwd=/iu;
998
998
  var htmlToText = /* @__PURE__ */ __name((html) => html.replace(/<\s*br\s*\/?>/giu, "\n").replace(/<\/\s*(p|div|li|tr|h[1-6])\s*>/giu, "\n").replace(/<a\s[^>]*href\s*=\s*"([^"]*)"[^>]*>/giu, " $1 ").replace(/<[^>]+>/gu, "").replace(/&(amp|lt|gt|quot|#39|apos|nbsp);/gu, (_, name) => ENTITIES[name] ?? ""), "htmlToText");
999
- var withoutLinkQueries = /* @__PURE__ */ __name((text6) => text6.replace(/https?:\/\/[^\s<>"')\]]+/giu, (url) => joinUrlWithoutQuery(url) ?? ""), "withoutLinkQueries");
1000
- var calendarText = /* @__PURE__ */ __name((text6, { dropSecretLines = true } = {}) => {
1001
- if (!text6)
999
+ var withoutLinkQueries = /* @__PURE__ */ __name((text5) => text5.replace(/https?:\/\/[^\s<>"')\]]+/giu, (url) => joinUrlWithoutQuery(url) ?? ""), "withoutLinkQueries");
1000
+ var calendarText = /* @__PURE__ */ __name((text5, { dropSecretLines = true } = {}) => {
1001
+ if (!text5)
1002
1002
  return null;
1003
- const kept = htmlToText(text6).split(/\r?\n/u).map((line2) => withoutLinkQueries(line2).replace(/[ \t]+/gu, " ").trim()).filter((line2) => !dropSecretLines || !SECRET_LINE.test(line2));
1003
+ const kept = htmlToText(text5).split(/\r?\n/u).map((line2) => withoutLinkQueries(line2).replace(/[ \t]+/gu, " ").trim()).filter((line2) => !dropSecretLines || !SECRET_LINE.test(line2));
1004
1004
  const joined = kept.join("\n").replace(/\n{3,}/gu, "\n\n").trim();
1005
1005
  return joined || null;
1006
1006
  }, "calendarText");
@@ -1025,7 +1025,7 @@ var entryMetadata = /* @__PURE__ */ __name((metadata) => {
1025
1025
  return kept;
1026
1026
  }, "entryMetadata");
1027
1027
 
1028
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/cue-fingerprint.js
1028
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/cue-fingerprint.js
1029
1029
  import { createHash } from "node:crypto";
1030
1030
  var meetingCueFingerprint = /* @__PURE__ */ __name((cue2) => createHash("sha256").update(JSON.stringify({
1031
1031
  reference: cue2.reference,
@@ -1039,7 +1039,7 @@ var meetingCueFingerprint = /* @__PURE__ */ __name((cue2) => createHash("sha256"
1039
1039
  text: cue2.text
1040
1040
  })).digest("hex"), "meetingCueFingerprint");
1041
1041
 
1042
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/event-store.js
1042
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/event-store.js
1043
1043
  var UNTIL = /(?:^|;)UNTIL=(\d{4})(\d{2})(\d{2})(?:T(\d{2})(\d{2})(\d{2})Z?)?(?:;|$)/iu;
1044
1044
  var seriesEnd = /* @__PURE__ */ __name((entry) => {
1045
1045
  if (entry.recurrenceEndsAt !== null)
@@ -1062,7 +1062,7 @@ var entryInWindow = /* @__PURE__ */ __name((entry, window) => {
1062
1062
  return Math.max(entry.endsAt ?? start, start + 1) > window.from;
1063
1063
  }, "entryInWindow");
1064
1064
 
1065
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/answers.js
1065
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/answers.js
1066
1066
  var text2 = string();
1067
1067
  var count2 = pipe(number(), integer(), minValue(0));
1068
1068
  var iso2 = /* @__PURE__ */ __name((ms) => ms === null ? null : new Date(ms).toISOString(), "iso");
@@ -1176,7 +1176,7 @@ var meetingSummaryItem = /* @__PURE__ */ __name((accountId, summary) => ({
1176
1176
  source: summary.source,
1177
1177
  title: summary.title,
1178
1178
  overview: summary.overview,
1179
- sections: summary.sections.map(({ label, text: text6 }) => ({ label, text: text6 })),
1179
+ sections: summary.sections.map(({ label, text: text5 }) => ({ label, text: text5 })),
1180
1180
  next_steps: summary.nextSteps,
1181
1181
  content: summary.content,
1182
1182
  url: summary.docUrl,
@@ -1297,8 +1297,8 @@ var meetingHitsList = /* @__PURE__ */ __name((found, limit, command = "search me
1297
1297
  };
1298
1298
  }, "meetingHitsList");
1299
1299
 
1300
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/participant-search.js
1301
- var normalizeMeetingParticipantQuery = /* @__PURE__ */ __name((text6) => text6.normalize("NFKC").toLowerCase(), "normalizeMeetingParticipantQuery");
1300
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/participant-search.js
1301
+ var normalizeMeetingParticipantQuery = /* @__PURE__ */ __name((text5) => text5.normalize("NFKC").toLowerCase(), "normalizeMeetingParticipantQuery");
1302
1302
  var validateMeetingParticipantQuery = /* @__PURE__ */ __name((query) => {
1303
1303
  if (typeof query !== "string" || !query.trim() || query.length > 500 || query.includes("\0"))
1304
1304
  throw new CliError("validation_error", "participant query must contain 1\u2013500 characters without NUL");
@@ -1321,7 +1321,7 @@ var validateMeetingParticipantSearch = /* @__PURE__ */ __name((query, input) =>
1321
1321
  };
1322
1322
  }, "validateMeetingParticipantSearch");
1323
1323
 
1324
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/reads.js
1324
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/reads.js
1325
1325
  var MeetingError = class extends CliError {
1326
1326
  static {
1327
1327
  __name(this, "MeetingError");
@@ -1425,11 +1425,11 @@ var meetingsList = /* @__PURE__ */ __name(async (store, filter = {}, page = 1) =
1425
1425
  } : {}
1426
1426
  };
1427
1427
  }, "meetingsList");
1428
- var meetingsQuery = /* @__PURE__ */ __name((text6) => {
1429
- if (text6 === void 0 || text6.trim() === "")
1428
+ var meetingsQuery = /* @__PURE__ */ __name((text5) => {
1429
+ if (text5 === void 0 || text5.trim() === "")
1430
1430
  return void 0;
1431
1431
  const context3 = { command: "meetings list", guide: MEETING_QUERY_GUIDE };
1432
- const query = parseLucene(text6, { defaultField: "none", ...context3 });
1432
+ const query = parseLucene(text5, { defaultField: "none", ...context3 });
1433
1433
  validateQuery(query, MEETING_QUERY, context3);
1434
1434
  return query;
1435
1435
  }, "meetingsQuery");
@@ -1453,7 +1453,7 @@ var meetingSummaryAnswer = /* @__PURE__ */ __name(async (store, id3, accountId)
1453
1453
  return wholeList(details.summaries.map((one) => meetingSummaryItem(details.meeting.accountId, one)));
1454
1454
  }, "meetingSummaryAnswer");
1455
1455
 
1456
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/export.js
1456
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/export.js
1457
1457
  var timestamp = /* @__PURE__ */ __name((milliseconds) => {
1458
1458
  if (!Number.isSafeInteger(milliseconds) || milliseconds < 0)
1459
1459
  throw new MeetingError("validation_error", "transcript times must be nonnegative integer milliseconds");
@@ -1462,10 +1462,10 @@ var timestamp = /* @__PURE__ */ __name((milliseconds) => {
1462
1462
  const seconds = Math.floor(milliseconds % 6e4 / 1e3);
1463
1463
  return `${String(hours).padStart(2, "0")}:${String(minutes).padStart(2, "0")}:${String(seconds).padStart(2, "0")}.${String(milliseconds % 1e3).padStart(3, "0")}`;
1464
1464
  }, "timestamp");
1465
- var vttText = /* @__PURE__ */ __name((text6) => {
1466
- if (visibleControls(text6) !== text6 || /\n\s*\n/.test(text6))
1465
+ var vttText = /* @__PURE__ */ __name((text5) => {
1466
+ if (visibleControls(text5) !== text5 || /\n\s*\n/.test(text5))
1467
1467
  throw new MeetingError("validation_error", "cue paragraphs or control characters require Markdown export");
1468
- return text6.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;");
1468
+ return text5.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;");
1469
1469
  }, "vttText");
1470
1470
  var serializeVtt = /* @__PURE__ */ __name((lines) => `WEBVTT
1471
1471
 
@@ -1483,9 +1483,9 @@ ${speaker}${vttText(line2.text)}
1483
1483
 
1484
1484
  `;
1485
1485
  }).join("")}`, "serializeVtt");
1486
- var markdown = /* @__PURE__ */ __name((text6) => visibleControls(text6).replace(/[\\`*_{}[\]()<>#+.!|~]/g, "\\$&"), "markdown");
1487
- var heading = /* @__PURE__ */ __name((text6) => markdown(singleLine(text6)), "heading");
1488
- var quote = /* @__PURE__ */ __name((text6) => markdown(text6).split(/\r\n|\r|\n/).map((line2) => `> ${line2}`).join("\n"), "quote");
1486
+ var markdown = /* @__PURE__ */ __name((text5) => visibleControls(text5).replace(/[\\`*_{}[\]()<>#+.!|~]/g, "\\$&"), "markdown");
1487
+ var heading = /* @__PURE__ */ __name((text5) => markdown(singleLine(text5)), "heading");
1488
+ var quote = /* @__PURE__ */ __name((text5) => markdown(text5).split(/\r\n|\r|\n/).map((line2) => `> ${line2}`).join("\n"), "quote");
1489
1489
  var transcriptsOf = /* @__PURE__ */ __name((details, transcriptId) => {
1490
1490
  if (transcriptId !== void 0) {
1491
1491
  positiveInteger(transcriptId);
@@ -1549,7 +1549,7 @@ var exportMeeting = /* @__PURE__ */ __name(async (store, id3, options) => {
1549
1549
  };
1550
1550
  }, "exportMeeting");
1551
1551
 
1552
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/payment.js
1552
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/payment.js
1553
1553
  var FACT_TYPES = ["fact", "statement", "question", "decision", "promise"];
1554
1554
  var PAYMENT_DIRECTIONS = ["to_us", "from_us"];
1555
1555
  var PAYMENT_STATES = ["expected", "paid", "cancelled"];
@@ -1643,10 +1643,10 @@ var paymentTitle = /* @__PURE__ */ __name((fact) => {
1643
1643
  return `${grouped(payment.amount)} ${payment.currency} ${way}${party}${item}${due} (${payment.state})`;
1644
1644
  }, "paymentTitle");
1645
1645
 
1646
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/findings-rules.js
1646
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/findings-rules.js
1647
1647
  import { createHash as createHash2 } from "node:crypto";
1648
1648
 
1649
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/timestamp.js
1649
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/timestamp.js
1650
1650
  var meetingTimestamp = /* @__PURE__ */ __name((value, name) => {
1651
1651
  if (typeof value !== "string" || !/^\d{4}-\d{2}-\d{2}T.+(?:Z|[+-]\d{2}:\d{2})$/i.test(value) || !Number.isFinite(Date.parse(value)))
1652
1652
  throw new CliError("validation_error", `${name} must be an ISO timestamp with a timezone`);
@@ -1657,21 +1657,21 @@ var meetingTimestamp = /* @__PURE__ */ __name((value, name) => {
1657
1657
  return new Date(value).toISOString();
1658
1658
  }, "meetingTimestamp");
1659
1659
 
1660
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/findings-rules.js
1660
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/findings-rules.js
1661
1661
  var TASK_TYPES = ["bug", "feature", "chore"];
1662
1662
  var invalid3 = /* @__PURE__ */ __name((message) => {
1663
1663
  throw new CliError("validation_error", message);
1664
1664
  }, "invalid");
1665
- var text3 = /* @__PURE__ */ __name((value, limit) => {
1665
+ var findingText = /* @__PURE__ */ __name((value, limit) => {
1666
1666
  if (typeof value !== "string" || !value.trim() || value.includes("\0") || value.length > limit)
1667
1667
  return invalid3(`finding text must contain 1\u2013${limit} characters without NUL`);
1668
1668
  return value.trim();
1669
- }, "text");
1669
+ }, "findingText");
1670
1670
  var findingHash = /* @__PURE__ */ __name((value) => createHash2("sha256").update(JSON.stringify(value)).digest("hex"), "findingHash");
1671
- var fields = /* @__PURE__ */ __name((value, allowed, noun) => {
1671
+ var findingFields = /* @__PURE__ */ __name((value, allowed, noun) => {
1672
1672
  if (Object.keys(value).some((key) => !allowed.includes(key)))
1673
1673
  invalid3(`unknown ${noun} field`);
1674
- }, "fields");
1674
+ }, "findingFields");
1675
1675
  var SUBJECT = /^(person|organization|project):[1-9]\d*$|^task:[A-Za-z0-9][A-Za-z0-9_.-]{0,63}$/;
1676
1676
  var validEvidence = /* @__PURE__ */ __name((raw, rules) => {
1677
1677
  if (!Array.isArray(raw) || raw.length < 1 || raw.length > 8)
@@ -1679,7 +1679,7 @@ var validEvidence = /* @__PURE__ */ __name((raw, rules) => {
1679
1679
  const evidence = raw.map((item) => {
1680
1680
  if (!item || typeof item !== "object")
1681
1681
  return invalid3("finding evidence is a reference and fingerprint");
1682
- fields(item, ["reference", "fingerprint"], rules.singular);
1682
+ findingFields(item, ["reference", "fingerprint"], rules.singular);
1683
1683
  if (typeof item.reference !== "string" || typeof item.fingerprint !== "string")
1684
1684
  return invalid3("evidence requires a reference and fingerprint");
1685
1685
  const reference2 = rules.reference(item.reference);
@@ -1702,10 +1702,10 @@ var validateFinding = /* @__PURE__ */ __name((finding, rules, ids2) => {
1702
1702
  if (!finding || typeof finding !== "object")
1703
1703
  return invalid3("a finding is an object");
1704
1704
  const id3 = findingId(finding.id, ids2);
1705
- const project = finding.project === void 0 && rules.anySubject ? void 0 : text3(finding.project, 64);
1705
+ const project = finding.project === void 0 && rules.anySubject ? void 0 : findingText(finding.project, 64);
1706
1706
  if (project !== void 0 && !/^project:[1-9]\d*$/.test(project))
1707
1707
  return invalid3("a finding names a project reference");
1708
- if (finding.subject !== void 0 && (!rules.anySubject || !SUBJECT.test(text3(finding.subject, 80))))
1708
+ if (finding.subject !== void 0 && (!rules.anySubject || !SUBJECT.test(findingText(finding.subject, 80))))
1709
1709
  return invalid3("a finding's subject is a person:, organization:, task: or project: reference");
1710
1710
  if (finding.kind === "task" && project === void 0 && !rules.inboxTasks)
1711
1711
  return invalid3("a task finding names the project the task goes in");
@@ -1717,15 +1717,15 @@ var validateFinding = /* @__PURE__ */ __name((finding, rules, ids2) => {
1717
1717
  evidence
1718
1718
  };
1719
1719
  if (finding.kind === "fact") {
1720
- fields(finding, ["id", "project", "subject", "evidence", "kind", "type", "statement"], rules.singular);
1720
+ findingFields(finding, ["id", "project", "subject", "evidence", "kind", "type", "statement"], rules.singular);
1721
1721
  if (finding.type === "payment")
1722
1722
  return invalid3("a payment is a finding of kind payment; money is a payments row, not a fact");
1723
1723
  if (!FACT_TYPES.includes(finding.type))
1724
1724
  return invalid3("unknown fact finding type");
1725
- return { ...base, kind: "fact", type: finding.type, statement: text3(finding.statement, 2e3) };
1725
+ return { ...base, kind: "fact", type: finding.type, statement: findingText(finding.statement, 2e3) };
1726
1726
  }
1727
1727
  if (finding.kind === "payment" && rules.payments) {
1728
- fields(finding, ["id", "project", "subject", "evidence", "kind", "statement", "payment", "supersedes"], rules.singular);
1728
+ findingFields(finding, ["id", "project", "subject", "evidence", "kind", "statement", "payment", "supersedes"], rules.singular);
1729
1729
  if (finding.supersedes !== void 0 && !/^invoice:[1-9]\d*$/.test(String(finding.supersedes)))
1730
1730
  return invalid3("a payment finding supersedes an invoice: reference, the expected payment it settles or voids");
1731
1731
  const payment = validatePayment(finding.payment);
@@ -1738,14 +1738,14 @@ var validateFinding = /* @__PURE__ */ __name((finding, rules, ids2) => {
1738
1738
  return {
1739
1739
  ...base,
1740
1740
  kind: "payment",
1741
- ...finding.statement === void 0 ? {} : { statement: text3(finding.statement, 2e3) },
1741
+ ...finding.statement === void 0 ? {} : { statement: findingText(finding.statement, 2e3) },
1742
1742
  payment,
1743
1743
  ...finding.supersedes === void 0 ? {} : { supersedes: finding.supersedes }
1744
1744
  };
1745
1745
  }
1746
1746
  if (finding.kind !== "task")
1747
1747
  return invalid3(`a finding is a fact${rules.payments ? ", payment" : ""} or task`);
1748
- fields(finding, [
1748
+ findingFields(finding, [
1749
1749
  "id",
1750
1750
  "project",
1751
1751
  "evidence",
@@ -1771,8 +1771,8 @@ var validateFinding = /* @__PURE__ */ __name((finding, rules, ids2) => {
1771
1771
  ...base,
1772
1772
  kind: "task",
1773
1773
  type: finding.type,
1774
- title: text3(finding.title, 300),
1775
- reason: text3(finding.reason, 2e3),
1774
+ title: findingText(finding.title, 300),
1775
+ reason: findingText(finding.reason, 2e3),
1776
1776
  commitment: finding.commitment,
1777
1777
  ...finding.dueAt === void 0 ? {} : {
1778
1778
  dueAt: meetingTimestamp(finding.dueAt, "finding due date"),
@@ -1789,22 +1789,20 @@ var support = /* @__PURE__ */ __name((value, evidence) => {
1789
1789
  var validateBatch = /* @__PURE__ */ __name((input, rules, most, one) => {
1790
1790
  if (!input || typeof input !== "object" || Buffer.byteLength(JSON.stringify(input), "utf8") > 65536)
1791
1791
  return invalid3(`${rules.plural} take at most 65536 UTF-8 bytes`);
1792
- fields(input, ["schemaVersion", "key", "extractor", "findings"], rules.singular);
1792
+ findingFields(input, ["schemaVersion", "key", "extractor", "findings"], rules.singular);
1793
1793
  if (input.schemaVersion !== 1 || !Array.isArray(input.findings) || input.findings.length < 1 || input.findings.length > most)
1794
1794
  return invalid3(`schemaVersion 1 takes 1\u2013${most} ${rules.plural}`);
1795
- const key = text3(input.key, 64);
1795
+ const key = findingText(input.key, 64);
1796
1796
  if (!/^[a-zA-Z0-9][a-zA-Z0-9_.:-]*$/.test(key))
1797
1797
  return invalid3("a findings key uses letters, digits, dot, colon, underscore or hyphen");
1798
1798
  const ids2 = /* @__PURE__ */ new Set();
1799
1799
  const findings = input.findings.map((finding) => one(finding, ids2));
1800
- return { schemaVersion: 1, key, extractor: text3(input.extractor, 200), findings };
1800
+ return { schemaVersion: 1, key, extractor: findingText(input.extractor, 200), findings };
1801
1801
  }, "validateBatch");
1802
1802
  var validateFindings = /* @__PURE__ */ __name((input, rules) => validateBatch(input, rules, 16, (finding, ids2) => validateFinding(finding, rules, ids2)), "validateFindings");
1803
- var findingText = /* @__PURE__ */ __name((value, limit) => text3(value, limit), "findingText");
1804
- var findingFields = /* @__PURE__ */ __name((value, allowed, noun) => fields(value, allowed, noun), "findingFields");
1805
1803
  var findingFingerprint = /* @__PURE__ */ __name(({ id: _id, ...finding }) => findingHash(finding), "findingFingerprint");
1806
1804
 
1807
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/findings.js
1805
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/findings.js
1808
1806
  var MEETING_FINDINGS_KIND = "meeting_findings";
1809
1807
  var cue = /* @__PURE__ */ __name((raw) => {
1810
1808
  const reference2 = canonicalMeetingReference(raw);
@@ -1815,24 +1813,24 @@ var cue = /* @__PURE__ */ __name((raw) => {
1815
1813
  var validateMeetingFindings = /* @__PURE__ */ __name((input) => validateFindings(input, { plural: "meeting findings", singular: "meeting finding", cited: "cue", reference: cue }), "validateMeetingFindings");
1816
1814
  var meetingFindingFingerprint = findingFingerprint;
1817
1815
 
1818
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/result-items.js
1819
- var text4 = string();
1820
- var identifier = pipe(text4, minLength(1));
1821
- var nullableText = nullable(text4);
1816
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/result-items.js
1817
+ var text3 = string();
1818
+ var identifier = pipe(text3, minLength(1));
1819
+ var nullableText = nullable(text3);
1822
1820
  var count3 = pipe(number(), integer(), minValue(0));
1823
1821
  var flag = boolean();
1824
- var scope = strictObject({ provider: text4, account: text4 });
1822
+ var scope = strictObject({ provider: text3, account: text3 });
1825
1823
  var run = strictObject({
1826
1824
  meetings: count3,
1827
1825
  participants: count3,
1828
1826
  transcript_rows: count3,
1829
1827
  summaries: count3,
1830
- warnings: array(strictObject({ external_id: text4, message: text4 })),
1831
- timezone: optional(text4)
1828
+ warnings: array(strictObject({ external_id: text3, message: text3 })),
1829
+ timezone: optional(text3)
1832
1830
  });
1833
1831
  var exported = union([
1834
- strictObject({ meeting_id: identifier, format: picklist(["markdown", "vtt"]), filename: text4, content: text4 }),
1835
- strictObject({ meeting_id: identifier, format: picklist(["markdown", "vtt"]), output: text4 })
1832
+ strictObject({ meeting_id: identifier, format: picklist(["markdown", "vtt"]), filename: text3, content: text3 }),
1833
+ strictObject({ meeting_id: identifier, format: picklist(["markdown", "vtt"]), output: text3 })
1836
1834
  ]);
1837
1835
  var eventChange = strictObject({
1838
1836
  action: literal("event.link"),
@@ -1842,7 +1840,7 @@ var eventChange = strictObject({
1842
1840
  var personChange = strictObject({
1843
1841
  action: literal("person.link"),
1844
1842
  participant_id: identifier,
1845
- person_uid: text4,
1843
+ person_uid: text3,
1846
1844
  expected_person_uid: optional(nullableText),
1847
1845
  target_account_ids: optional(array(identifier))
1848
1846
  });
@@ -1855,7 +1853,7 @@ var eventResult = strictObject({
1855
1853
  var personResult = strictObject({
1856
1854
  meeting_id: identifier,
1857
1855
  participant_id: identifier,
1858
- person_uid: text4,
1856
+ person_uid: text3,
1859
1857
  previous_person_uid: nullableText,
1860
1858
  changed: flag
1861
1859
  });
@@ -1868,23 +1866,23 @@ var meetingChange = strictObject({
1868
1866
  result: optional(union([eventResult, personResult]))
1869
1867
  });
1870
1868
  var recognition = strictObject({
1871
- engine: text4,
1872
- model: text4,
1873
- version: optional(text4),
1869
+ engine: text3,
1870
+ model: text3,
1871
+ version: optional(text3),
1874
1872
  timing: optional(picklist(["fixed-windows", "recognition-segments"]))
1875
1873
  });
1876
1874
  var transcription = union([
1877
1875
  strictObject({
1878
1876
  applied: literal(false),
1879
1877
  account_id: identifier,
1880
- external_id: text4,
1878
+ external_id: text3,
1881
1879
  segments: count3,
1882
1880
  media: strictObject({
1883
- id: text4,
1884
- content_hash: text4,
1881
+ id: text3,
1882
+ content_hash: text3,
1885
1883
  size: count3,
1886
1884
  duration_ms: count3,
1887
- format: text4,
1885
+ format: text3,
1888
1886
  sample_rate: count3,
1889
1887
  channels: count3,
1890
1888
  recognition
@@ -1893,21 +1891,21 @@ var transcription = union([
1893
1891
  strictObject({
1894
1892
  applied: literal(true),
1895
1893
  account_id: identifier,
1896
- external_id: text4,
1894
+ external_id: text3,
1897
1895
  meeting_id: identifier,
1898
1896
  created: flag,
1899
1897
  inserted_transcripts: count3,
1900
1898
  replayed_transcripts: count3,
1901
1899
  superseded_transcripts: count3,
1902
1900
  segments: count3,
1903
- media_sha256: text4,
1904
- engine: text4,
1905
- model: text4,
1901
+ media_sha256: text3,
1902
+ engine: text3,
1903
+ model: text3,
1906
1904
  model_version: nullableText,
1907
1905
  timing: picklist(["fixed-windows", "recognition-segments"])
1908
1906
  })
1909
1907
  ]);
1910
- var embeddingModel = strictObject({ key: text4, dims: count3, kind: picklist(["local", "remote"]), model: text4 });
1908
+ var embeddingModel = strictObject({ key: text3, dims: count3, kind: picklist(["local", "remote"]), model: text3 });
1911
1909
  var embedding = union([
1912
1910
  strictObject({
1913
1911
  account_id: identifier,
@@ -1923,7 +1921,7 @@ var embedding = union([
1923
1921
  saved: count3,
1924
1922
  skipped: count3,
1925
1923
  has_more: flag,
1926
- next_hash: optional(text4),
1924
+ next_hash: optional(text3),
1927
1925
  applied: literal(true),
1928
1926
  rebuild: strictObject({
1929
1927
  transcripts: count3,
@@ -1948,7 +1946,7 @@ var MEETING_RESULT_ENTITIES = {
1948
1946
  meeting_repair: repair
1949
1947
  };
1950
1948
 
1951
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/event-query.js
1949
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/event-query.js
1952
1950
  var EVENT_QUERY = defineQuery({
1953
1951
  entity: "event",
1954
1952
  backend: "sql",
@@ -1964,7 +1962,7 @@ var EVENT_QUERY = defineQuery({
1964
1962
  ]
1965
1963
  });
1966
1964
 
1967
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/events.js
1965
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/events.js
1968
1966
  var linkEvent = /* @__PURE__ */ __name(async (store, details, now = Date.now()) => {
1969
1967
  const current = await store.meeting(details.meeting.id);
1970
1968
  if (!current)
@@ -2007,7 +2005,7 @@ var linkEvent = /* @__PURE__ */ __name(async (store, details, now = Date.now())
2007
2005
  return (await store.events()).find((e) => e.id === linked?.meeting.eventId) ?? null;
2008
2006
  }, "linkEvent");
2009
2007
 
2010
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/hit-query.js
2008
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/hit-query.js
2011
2009
  var context = {
2012
2010
  command: "search meetings",
2013
2011
  guide: "https://github.com/WireCatLabs/cli-core/blob/main/docs/search/query-language.md#\u0432\u0441\u0442\u0440\u0435\u0447\u0438"
@@ -2115,9 +2113,9 @@ var liftMeetingFields = /* @__PURE__ */ __name((query, request, now) => {
2115
2113
  return { query: rest, request: next };
2116
2114
  }, "liftMeetingFields");
2117
2115
  var parseMeetingQuery = /* @__PURE__ */ __name((query) => validateQuery(parseLucene(query, { defaultField: "text", proximity: true, ...context }), MEETING_HIT_QUERY, context), "parseMeetingQuery");
2118
- var meetingWordsQuery = /* @__PURE__ */ __name((text6) => {
2119
- const found = text6.match(/[\p{L}\p{N}\p{M}]+/gu) ?? [];
2120
- const span = { start: 0, end: text6.length };
2116
+ var meetingWordsQuery = /* @__PURE__ */ __name((text5) => {
2117
+ const found = text5.match(/[\p{L}\p{N}\p{M}]+/gu) ?? [];
2118
+ const span = { start: 0, end: text5.length };
2121
2119
  const clauses = found.map((value) => ({
2122
2120
  occur: "must",
2123
2121
  node: { kind: "predicate", field: "text", operator: "term", value, span }
@@ -2126,7 +2124,7 @@ var meetingWordsQuery = /* @__PURE__ */ __name((text6) => {
2126
2124
  return { version: 1, language: "lucene-v1", root };
2127
2125
  }, "meetingWordsQuery");
2128
2126
 
2129
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/language.js
2127
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/language.js
2130
2128
  var LATIN_WORDS = {
2131
2129
  en: ["the", "and", "is", "that", "you", "this", "what", "have", "with", "are"],
2132
2130
  es: ["el", "los", "las", "por", "pero", "para", "est\xE1", "muy", "tambi\xE9n", "hay"],
@@ -2141,11 +2139,11 @@ var CYRILLIC = new RegExp("\\p{Script=Cyrillic}", "gu");
2141
2139
  var LATIN = new RegExp("\\p{Script=Latin}", "gu");
2142
2140
  var MIN_LETTERS = 20;
2143
2141
  var DOMINANT = 0.75;
2144
- var countOf = /* @__PURE__ */ __name((text6, pattern2) => text6.match(pattern2)?.length ?? 0, "countOf");
2142
+ var countOf = /* @__PURE__ */ __name((text5, pattern2) => text5.match(pattern2)?.length ?? 0, "countOf");
2145
2143
  var latinLanguage = /* @__PURE__ */ __name((texts) => {
2146
2144
  const votes = /* @__PURE__ */ new Map();
2147
- for (const text6 of texts)
2148
- for (const word of text6.toLowerCase().split(/[^\p{L}]+/u)) {
2145
+ for (const text5 of texts)
2146
+ for (const word of text5.toLowerCase().split(/[^\p{L}]+/u)) {
2149
2147
  const language = LATIN_LANGUAGE.get(word);
2150
2148
  if (language)
2151
2149
  votes.set(language, (votes.get(language) ?? 0) + 1);
@@ -2160,10 +2158,10 @@ var transcriptLanguage = /* @__PURE__ */ __name((texts) => {
2160
2158
  let cyrillic = 0;
2161
2159
  let latin = 0;
2162
2160
  let ukrainian = 0;
2163
- for (const text6 of all) {
2164
- cyrillic += countOf(text6, CYRILLIC);
2165
- latin += countOf(text6, LATIN);
2166
- ukrainian += countOf(text6, UKRAINIAN);
2161
+ for (const text5 of all) {
2162
+ cyrillic += countOf(text5, CYRILLIC);
2163
+ latin += countOf(text5, LATIN);
2164
+ ukrainian += countOf(text5, UKRAINIAN);
2167
2165
  }
2168
2166
  const letters = cyrillic + latin;
2169
2167
  if (letters < MIN_LETTERS)
@@ -2175,9 +2173,9 @@ var transcriptLanguage = /* @__PURE__ */ __name((texts) => {
2175
2173
  return null;
2176
2174
  }, "transcriptLanguage");
2177
2175
 
2178
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/ingest.js
2179
- var contentHash = /* @__PURE__ */ __name(async (text6) => {
2180
- const bytes = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(text6));
2176
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/ingest.js
2177
+ var contentHash = /* @__PURE__ */ __name(async (text5) => {
2178
+ const bytes = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(text5));
2181
2179
  return Array.from(new Uint8Array(bytes), (byte) => byte.toString(16).padStart(2, "0")).join("");
2182
2180
  }, "contentHash");
2183
2181
  var speakerPosition = /* @__PURE__ */ __name((name, participants) => {
@@ -2212,7 +2210,7 @@ var timestamp2 = /* @__PURE__ */ __name((value) => {
2212
2210
  return time;
2213
2211
  }, "timestamp");
2214
2212
 
2215
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/transcript-text.js
2213
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/transcript-text.js
2216
2214
  var TranscriptTextError = class extends Error {
2217
2215
  static {
2218
2216
  __name(this, "TranscriptTextError");
@@ -2229,10 +2227,10 @@ var LINE = /^\[(\d{2,}):([0-5]\d):([0-5]\d)\]\s*(?:([^:\n]{1,60}):\s*)?([\s\S]*)
2229
2227
  var RULE = /^[—–-]{10,}[^\n]*(?:\n|$)/;
2230
2228
  var EMPTY = /* @__PURE__ */ new Set(["", "\u2014", "-"]);
2231
2229
  var parseTranscriptText = /* @__PURE__ */ __name((input) => {
2232
- const text6 = input.replace(/^/, "").replace(/\r\n?/g, "\n");
2230
+ const text5 = input.replace(/^/, "").replace(/\r\n?/g, "\n");
2233
2231
  const header = { title: null, date: null, meetingId: null, speakers: [] };
2234
2232
  let sawHeader = false;
2235
- for (const line2 of text6.split("\n")) {
2233
+ for (const line2 of text5.split("\n")) {
2236
2234
  if (!line2.trim())
2237
2235
  break;
2238
2236
  for (const [prefix, key] of Object.entries(HEADER)) {
@@ -2249,7 +2247,7 @@ var parseTranscriptText = /* @__PURE__ */ __name((input) => {
2249
2247
  if (!sawHeader)
2250
2248
  throw new TranscriptTextError('a text transcript starts with a header such as "\u0412\u0441\u0442\u0440\u0435\u0447\u0430: \u2026"');
2251
2249
  const found = [];
2252
- for (const block of text6.split(/\n\s*\n/)) {
2250
+ for (const block of text5.split(/\n\s*\n/)) {
2253
2251
  const match = LINE.exec(block.trim().replace(RULE, ""));
2254
2252
  if (!match)
2255
2253
  continue;
@@ -2267,7 +2265,7 @@ var parseTranscriptText = /* @__PURE__ */ __name((input) => {
2267
2265
  return { header, lines };
2268
2266
  }, "parseTranscriptText");
2269
2267
 
2270
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/vtt.js
2268
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/vtt.js
2271
2269
  var VttError = class extends Error {
2272
2270
  static {
2273
2271
  __name(this, "VttError");
@@ -2283,12 +2281,12 @@ var millis = /* @__PURE__ */ __name((stamp, lineNo) => {
2283
2281
  const [, hours = "0", minutes = "0", seconds = "0", ms = "0"] = match;
2284
2282
  return ((Number(hours) * 60 + Number(minutes)) * 60 + Number(seconds)) * 1e3 + Number(ms);
2285
2283
  }, "millis");
2286
- var splitSpeaker = /* @__PURE__ */ __name((text6) => {
2287
- const firstLine = text6.split("\n", 1)[0] ?? "";
2284
+ var splitSpeaker = /* @__PURE__ */ __name((text5) => {
2285
+ const firstLine = text5.split("\n", 1)[0] ?? "";
2288
2286
  const at = firstLine.indexOf(": ");
2289
2287
  if (at <= 0)
2290
- return { speaker: null, text: text6 };
2291
- return { speaker: firstLine.slice(0, at).trim(), text: text6.slice(at + 2) };
2288
+ return { speaker: null, text: text5 };
2289
+ return { speaker: firstLine.slice(0, at).trim(), text: text5.slice(at + 2) };
2292
2290
  }, "splitSpeaker");
2293
2291
  var parseVtt = /* @__PURE__ */ __name((input) => {
2294
2292
  const lines = input.replace(/^/, "").split(/\r\n|\r|\n/);
@@ -2313,13 +2311,13 @@ var parseVtt = /* @__PURE__ */ __name((input) => {
2313
2311
  const lineNo = start + timingAt + 1;
2314
2312
  const [from = "", rest = ""] = (block[timingAt] ?? "").split("-->");
2315
2313
  const to = rest.trim().split(/\s+/)[0] ?? "";
2316
- const text6 = block.slice(timingAt + 1).join("\n").trim();
2317
- cues.push({ startMs: millis(from.trim(), lineNo), endMs: millis(to, lineNo), ...splitSpeaker(text6) });
2314
+ const text5 = block.slice(timingAt + 1).join("\n").trim();
2315
+ cues.push({ startMs: millis(from.trim(), lineNo), endMs: millis(to, lineNo), ...splitSpeaker(text5) });
2318
2316
  }
2319
2317
  return cues;
2320
2318
  }, "parseVtt");
2321
2319
 
2322
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/import.js
2320
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/import.js
2323
2321
  var importFiles = /* @__PURE__ */ __name(async (files, store, now = Date.now()) => {
2324
2322
  const report = { meetings: 0, participants: 0, transcriptRows: 0, summaries: 0, warnings: [] };
2325
2323
  for (const file of files) {
@@ -2352,10 +2350,10 @@ var importFiles = /* @__PURE__ */ __name(async (files, store, now = Date.now())
2352
2350
  return report;
2353
2351
  }, "importFiles");
2354
2352
 
2355
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/links.js
2353
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/links.js
2356
2354
  var CHAT_MESSAGES_READ = 1e5;
2357
2355
 
2358
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/provider.js
2356
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/provider.js
2359
2357
  var snapshotMeetingScope = /* @__PURE__ */ __name((scope2) => {
2360
2358
  const provider = scope2?.provider;
2361
2359
  const account = scope2?.account;
@@ -2364,7 +2362,7 @@ var snapshotMeetingScope = /* @__PURE__ */ __name((scope2) => {
2364
2362
  return Object.freeze({ provider, account });
2365
2363
  }, "snapshotMeetingScope");
2366
2364
 
2367
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/meeting-management.js
2365
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/meeting-management.js
2368
2366
  var nonempty = /* @__PURE__ */ __name((value, name) => {
2369
2367
  if (typeof value !== "string" || !value.trim())
2370
2368
  throw new CliError("validation_error", `${name} must be nonempty`);
@@ -2415,7 +2413,7 @@ var validateMeetingChange = /* @__PURE__ */ __name((change, create) => {
2415
2413
  return Object.freeze(result);
2416
2414
  }, "validateMeetingChange");
2417
2415
 
2418
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/passage.js
2416
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/passage.js
2419
2417
  var meetingHitContextLimits = /* @__PURE__ */ __name((options = {}) => {
2420
2418
  const { before = 3, after = 3, bytes = 65536, max_read_bytes = 4194304, expected_fingerprint } = options;
2421
2419
  if (![before, after].every((value) => Number.isSafeInteger(value) && value >= 0) || before + after > 999 || !Number.isSafeInteger(bytes) || bytes < 2 || bytes > 4194304 || !Number.isSafeInteger(max_read_bytes) || max_read_bytes < 1 || max_read_bytes > 67108864 || expected_fingerprint !== void 0 && (typeof expected_fingerprint !== "string" || !/^[a-f0-9]{64}$/.test(expected_fingerprint)))
@@ -2428,7 +2426,7 @@ var validateMeetingPassage = /* @__PURE__ */ __name((reference2, options) => {
2428
2426
  throw new CliError("validation_error", "choose a cue reference and json, text or markdown output");
2429
2427
  }, "validateMeetingPassage");
2430
2428
 
2431
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/preparation-context.js
2429
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/preparation-context.js
2432
2430
  var validateMeetingPreparationContext = /* @__PURE__ */ __name((original) => {
2433
2431
  if (!original || typeof original !== "object" || Array.isArray(original))
2434
2432
  throw new CliError("validation_error", "meeting preparation context is required");
@@ -2453,7 +2451,7 @@ var validateMeetingPreparationContext = /* @__PURE__ */ __name((original) => {
2453
2451
  return { ...input, limit, maxReadBytes };
2454
2452
  }, "validateMeetingPreparationContext");
2455
2453
 
2456
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/project-evidence-answer.js
2454
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/project-evidence-answer.js
2457
2455
  var count4 = pipe(number(), integer(), minValue(0));
2458
2456
  var id = pipe(string(), minLength(1));
2459
2457
  var meetingProjectEvidence = strictObject({
@@ -2574,7 +2572,7 @@ var meetingProjectEvidenceAnswer = /* @__PURE__ */ __name((page, prepared, comma
2574
2572
  };
2575
2573
  }, "meetingProjectEvidenceAnswer");
2576
2574
 
2577
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/search-validation.js
2575
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/search-validation.js
2578
2576
  var validateMeetingHitSearch = /* @__PURE__ */ __name((query, options = {}) => {
2579
2577
  const integer3 = /* @__PURE__ */ __name((value, low, high) => Number.isSafeInteger(value) && value >= low && value <= high, "integer");
2580
2578
  if (typeof query !== "string" || !query.trim() || query.includes("\0") || new TextEncoder().encode(query).byteLength > 65536 || !integer3(options.limit ?? 100, 1, 1e3) || !integer3(options.maxReadBytes ?? 4194304, 1, 67108864) || [
@@ -2594,7 +2592,7 @@ var validateMeetingHitSearch = /* @__PURE__ */ __name((query, options = {}) => {
2594
2592
  throw new CliError("validation_error", "choose one project selector and one tag or topic selector");
2595
2593
  }, "validateMeetingHitSearch");
2596
2594
 
2597
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/project-evidence-query.js
2595
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/project-evidence-query.js
2598
2596
  var ids = {
2599
2597
  meeting_id: "meetingId",
2600
2598
  identity_id: "participantIdentityId",
@@ -2685,7 +2683,7 @@ var prepareMeetingProjectEvidence = /* @__PURE__ */ __name((project, request = {
2685
2683
  return { project: project.trim(), options, query: frozen.join(" AND ") };
2686
2684
  }, "prepareMeetingProjectEvidence");
2687
2685
 
2688
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/project-evidence.js
2686
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/project-evidence.js
2689
2687
  var readMeetingProjectEvidence = /* @__PURE__ */ __name(async (read, project, request = {}, now = Date.now()) => {
2690
2688
  const prepared = prepareMeetingProjectEvidence(project, request, now);
2691
2689
  const page = await read(prepared.project, prepared.options);
@@ -2693,12 +2691,12 @@ var readMeetingProjectEvidence = /* @__PURE__ */ __name(async (read, project, re
2693
2691
  return meetingProjectEvidenceAnswer(page, prepared);
2694
2692
  }, "readMeetingProjectEvidence");
2695
2693
 
2696
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/pull.js
2694
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/pull.js
2697
2695
  var participantInput = /* @__PURE__ */ __name((p, provider, occurrenceId2, position, accountId) => {
2698
- const { identityExternalId, ...fields2 } = p;
2696
+ const { identityExternalId, ...fields } = p;
2699
2697
  const externalId = identityExternalId ?? (p.email ? `email:${p.email.toLowerCase()}` : p.externalId) ?? `name:${p.displayName ?? "unknown"}@${accountId}/${occurrenceId2}:${position}`;
2700
2698
  return {
2701
- ...fields2,
2699
+ ...fields,
2702
2700
  identity: {
2703
2701
  provider,
2704
2702
  externalId,
@@ -2832,47 +2830,47 @@ unlinked`, format)],
2832
2830
  return report;
2833
2831
  }, "pull");
2834
2832
 
2835
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/read-answers.js
2836
- var text5 = string();
2833
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/read-answers.js
2834
+ var text4 = string();
2837
2835
  var count5 = pipe(number(), integer(), minValue(0));
2838
2836
  var id2 = pipe(number(), integer(), minValue(1));
2839
2837
  var iso3 = /* @__PURE__ */ __name((ms) => ms === null ? null : new Date(ms).toISOString(), "iso");
2840
2838
  var meetingReview = strictObject({
2841
2839
  ref: reference,
2842
2840
  id: pipe(string(), minLength(1)),
2843
- title: nullable(text5),
2841
+ title: nullable(text4),
2844
2842
  started_at: nullable(isoTime),
2845
2843
  duration_ms: nullable(count5),
2846
2844
  participants_count: nullable(count5),
2847
- projects: array(text5),
2845
+ projects: array(text4),
2848
2846
  /** Null when the meeting has no current transcript. */
2849
2847
  transcript: nullable(strictObject({ lines: count5, words: count5 })),
2850
2848
  /** The three who talked longest. */
2851
- speakers: array(strictObject({ name: nullable(text5), talk_ms: count5 })),
2849
+ speakers: array(strictObject({ name: nullable(text4), talk_ms: count5 })),
2852
2850
  /** The newest stored summary; null when there is none. */
2853
2851
  summary: nullable(strictObject({
2854
- source: text5,
2855
- title: nullable(text5),
2856
- overview: nullable(text5),
2857
- next_steps: array(text5),
2858
- url: nullable(text5)
2852
+ source: text4,
2853
+ title: nullable(text4),
2854
+ overview: nullable(text4),
2855
+ next_steps: array(text4),
2856
+ url: nullable(text4)
2859
2857
  }))
2860
2858
  });
2861
2859
  var meetingLink = strictObject({
2862
- url: text5,
2863
- domain: nullable(text5),
2860
+ url: text4,
2861
+ domain: nullable(text4),
2864
2862
  /** The Google Docs, Sheets, Slides, Forms or Drive file it names. */
2865
- document_id: nullable(text5),
2863
+ document_id: nullable(text4),
2866
2864
  count: count5,
2867
2865
  first_at: isoTime,
2868
2866
  last_at: isoTime,
2869
- senders: array(text5),
2870
- meetings: array(strictObject({ ref: reference, title: nullable(text5) }))
2867
+ senders: array(text4),
2868
+ meetings: array(strictObject({ ref: reference, title: nullable(text4) }))
2871
2869
  });
2872
2870
  var meetingSpeaker = strictObject({
2873
2871
  /** `person:<id>`, `identity:<id>`, `name:<lowercased name>` or `unknown`. */
2874
- key: text5,
2875
- name: nullable(text5),
2872
+ key: text4,
2873
+ name: nullable(text4),
2876
2874
  person_id: nullable(id2),
2877
2875
  identity_id: nullable(id2),
2878
2876
  meetings: count5,
@@ -2883,18 +2881,18 @@ var meetingSpeaker = strictObject({
2883
2881
  share: pipe(number(), minValue(0), maxValue(1))
2884
2882
  });
2885
2883
  var meetingStats = strictObject({
2886
- time_zone: text5,
2884
+ time_zone: text4,
2887
2885
  meetings: count5,
2888
2886
  lines: count5,
2889
2887
  words: count5,
2890
2888
  talk_ms: count5,
2891
2889
  /** `week_start` is the Monday, as a date in `time_zone`. */
2892
- weeks: array(strictObject({ week_start: text5, meetings: count5, talk_ms: count5 })),
2890
+ weeks: array(strictObject({ week_start: text4, meetings: count5, talk_ms: count5 })),
2893
2891
  top_speakers: array(meetingSpeaker)
2894
2892
  });
2895
2893
  var meetingCountsRow = strictObject({
2896
- key: text5,
2897
- name: nullable(text5),
2894
+ key: text4,
2895
+ name: nullable(text4),
2898
2896
  meetings: count5,
2899
2897
  minutes: count5,
2900
2898
  mean_minutes: nullable(number()),
@@ -2914,13 +2912,13 @@ var meetingParticipants = strictObject({
2914
2912
  schema_version: literal(1),
2915
2913
  kind: literal("meeting_participants"),
2916
2914
  account_id: id2,
2917
- query: text5,
2915
+ query: text4,
2918
2916
  items: array(strictObject({
2919
2917
  participant_id: id2,
2920
2918
  meeting_id: id2,
2921
2919
  identity_id: id2,
2922
- display_name: nullable(text5),
2923
- email: nullable(text5)
2920
+ display_name: nullable(text4),
2921
+ email: nullable(text4)
2924
2922
  })),
2925
2923
  /** Several identities on one page are observations, never speaker attribution or person links. */
2926
2924
  ambiguity: strictObject({ scope: literal("page"), multiple_identities: boolean(), identity_ids: array(id2) }),
@@ -2934,7 +2932,7 @@ var meetingParticipants = strictObject({
2934
2932
  mode: literal("cursor"),
2935
2933
  limit: count5,
2936
2934
  has_more: boolean(),
2937
- next_cursor: optional(text5)
2935
+ next_cursor: optional(text4)
2938
2936
  })
2939
2937
  });
2940
2938
  var revision = picklist(["current", "superseded"]);
@@ -2943,8 +2941,8 @@ var meetingPassage = strictObject({
2943
2941
  kind: literal("meeting_context"),
2944
2942
  source: reference,
2945
2943
  target_ref: reference,
2946
- target_fingerprint: text5,
2947
- fingerprint: text5,
2944
+ target_fingerprint: text4,
2945
+ fingerprint: text4,
2948
2946
  revision,
2949
2947
  limits: strictObject({ before: count5, after: count5, bytes: count5, max_read_bytes: count5 }),
2950
2948
  content_bytes: count5,
@@ -2963,30 +2961,30 @@ var meetingPassage = strictObject({
2963
2961
  }),
2964
2962
  items: array(strictObject({
2965
2963
  ref: reference,
2966
- fingerprint: text5,
2964
+ fingerprint: text4,
2967
2965
  transcript_id: id2,
2968
- content_hash: nullable(text5),
2966
+ content_hash: nullable(text4),
2969
2967
  position: count5,
2970
2968
  start_ms: count5,
2971
2969
  end_ms: count5,
2972
2970
  speaker_participant_id: nullable(id2),
2973
- speaker_name: nullable(text5),
2974
- text: text5,
2971
+ speaker_name: nullable(text4),
2972
+ text: text4,
2975
2973
  revision
2976
2974
  }))
2977
2975
  });
2978
2976
  var event = strictObject({
2979
2977
  id: pipe(string(), minLength(1)),
2980
- event_series_id: nullable(text5),
2981
- title: nullable(text5),
2982
- description: nullable(text5),
2983
- location: nullable(text5),
2978
+ event_series_id: nullable(text4),
2979
+ title: nullable(text4),
2980
+ description: nullable(text4),
2981
+ location: nullable(text4),
2984
2982
  starts_at: nullable(isoTime),
2985
2983
  ends_at: nullable(isoTime),
2986
- timezone: nullable(text5),
2984
+ timezone: nullable(text4),
2987
2985
  /** `auto`: made from a meeting; `owner`: made by hand; `calendar`: from a calendar's entries. */
2988
2986
  origin: picklist(["auto", "owner", "calendar"]),
2989
- status: nullable(text5),
2987
+ status: nullable(text4),
2990
2988
  all_day: boolean(),
2991
2989
  /** When its calendar deleted it: shown as "deleted in Google", kept as history. */
2992
2990
  source_deleted_at: nullable(isoTime),
@@ -2994,7 +2992,7 @@ var event = strictObject({
2994
2992
  created_at: isoTime,
2995
2993
  updated_at: isoTime,
2996
2994
  /** The fields whoever sent the invitation wrote, on a calendar CLI's `events list`: an agent reads them as data. */
2997
- untrusted: optional(array(text5)),
2995
+ untrusted: optional(array(text4)),
2998
2996
  /** On a calendar CLI's `events list changed:<date>`: what changed since then, and when the store saw it. */
2999
2997
  change: optional(picklist(["new", "moved", "cancelled"])),
3000
2998
  changed_at: optional(nullable(isoTime)),
@@ -3006,7 +3004,7 @@ var event = strictObject({
3006
3004
  */
3007
3005
  overlapping: optional(boolean()),
3008
3006
  /** With `overlapping:true`: the events it overlaps, as `event:<id>`. */
3009
- overlaps: optional(array(text5))
3007
+ overlaps: optional(array(text4))
3010
3008
  });
3011
3009
  var eventItem = /* @__PURE__ */ __name((one) => ({
3012
3010
  id: String(one.id),
@@ -3026,10 +3024,10 @@ var eventItem = /* @__PURE__ */ __name((one) => ({
3026
3024
  updated_at: new Date(one.updatedAt).toISOString()
3027
3025
  }), "eventItem");
3028
3026
 
3029
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/recording-transfer.js
3027
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/recording-transfer.js
3030
3028
  var strongRecordingValidator = /* @__PURE__ */ __name((value) => typeof value === "string" && value.length <= 1024 && /^"[\x21\x23-\x7e\x80-\xff]*"$/.test(value), "strongRecordingValidator");
3031
3029
 
3032
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/related-history.js
3030
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/related-history.js
3033
3031
  var validateMeetingRelatedHistory = /* @__PURE__ */ __name((original) => {
3034
3032
  if (!original || typeof original !== "object" || Array.isArray(original))
3035
3033
  throw new CliError("validation_error", "related history request is required");
@@ -3059,14 +3057,14 @@ var validateMeetingRelatedHistory = /* @__PURE__ */ __name((original) => {
3059
3057
  return { ...input, anchorIds: [...new Set(input.anchorIds)], limit, maxReadBytes };
3060
3058
  }, "validateMeetingRelatedHistory");
3061
3059
 
3062
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/review.js
3060
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/review.js
3063
3061
  var REVIEW_LIMIT = { default: 50, most: 200 };
3064
3062
 
3065
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/save-hints.js
3063
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/save-hints.js
3066
3064
  var SAVE_HELP = `Worth keeping \u2014 a decision, a promise, a preference? Record it with \`memo facts add\` or
3067
3065
  \`memo memories add\`, citing the msg: locator or meeting: reference as --evidence.`;
3068
3066
 
3069
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/series-history.js
3067
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/series-history.js
3070
3068
  var validateMeetingSeriesHistory = /* @__PURE__ */ __name((input) => {
3071
3069
  input.signal?.throwIfAborted();
3072
3070
  if (!Number.isSafeInteger(input.accountId) || input.accountId <= 0)
@@ -3087,7 +3085,7 @@ var validateMeetingSeriesHistory = /* @__PURE__ */ __name((input) => {
3087
3085
  return { ...input, limit, maxReadBytes };
3088
3086
  }, "validateMeetingSeriesHistory");
3089
3087
 
3090
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/upcoming-validation.js
3088
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/upcoming-validation.js
3091
3089
  var invalid4 = /* @__PURE__ */ __name((field) => {
3092
3090
  throw new CliError("invalid_response", `meeting occurrence ${field} is invalid`);
3093
3091
  }, "invalid");
@@ -3156,16 +3154,16 @@ var readOccurrenceSchedule = /* @__PURE__ */ __name((input, meetingId, limit, ma
3156
3154
  return result;
3157
3155
  }, "readOccurrenceSchedule");
3158
3156
 
3159
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/series-inventory-validation.js
3157
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/series-inventory-validation.js
3160
3158
  function invalid5(field, response = false) {
3161
3159
  throw new CliError(response ? "invalid_response" : "validation_error", `invalid meeting inventory ${field}`);
3162
3160
  }
3163
3161
  __name(invalid5, "invalid");
3164
- var object2 = /* @__PURE__ */ __name((value, fields2, field, response = false) => {
3162
+ var object2 = /* @__PURE__ */ __name((value, fields, field, response = false) => {
3165
3163
  if (!value || typeof value !== "object" || Array.isArray(value))
3166
3164
  invalid5(field, response);
3167
3165
  for (const key of Object.keys(value))
3168
- if (!fields2.includes(key))
3166
+ if (!fields.includes(key))
3169
3167
  invalid5(`${field}.${key}`, response);
3170
3168
  }, "object");
3171
3169
  var cursorDetails = /* @__PURE__ */ __name((value) => {
@@ -3185,7 +3183,7 @@ var validateMeetingSeriesInventoryCursor = /* @__PURE__ */ __name((value) => {
3185
3183
  cursorDetails(value);
3186
3184
  }, "validateMeetingSeriesInventoryCursor");
3187
3185
 
3188
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/stats.js
3186
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/stats.js
3189
3187
  var MEETING_COUNTS_GROUPINGS = ["day", "week", "series"];
3190
3188
  var zoneOf = /* @__PURE__ */ __name((timeZone) => {
3191
3189
  const zone = timeZone ?? "UTC";
@@ -3320,7 +3318,7 @@ var aggregateMeetingStats = /* @__PURE__ */ __name((rows, timeZone) => {
3320
3318
  };
3321
3319
  }, "aggregateMeetingStats");
3322
3320
 
3323
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/meetings/upcoming.js
3321
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/meetings/upcoming.js
3324
3322
  var cancelled = /* @__PURE__ */ __name((signal) => {
3325
3323
  if (!signal?.aborted)
3326
3324
  return;
@@ -3390,7 +3388,7 @@ var createUpcomingMeetingReader = /* @__PURE__ */ __name((scope2, port) => {
3390
3388
  };
3391
3389
  }, "createUpcomingMeetingReader");
3392
3390
 
3393
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/domain/tags.js
3391
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/domain/tags.js
3394
3392
  var TAG_TYPES = ["chat", "contact", "message", "task"];
3395
3393
  var TAG = /^[a-z0-9-]{1,32}$/;
3396
3394
  var tagOf = /* @__PURE__ */ __name((value) => {
@@ -3404,7 +3402,7 @@ var normalizeTag = /* @__PURE__ */ __name((value) => {
3404
3402
  return tag;
3405
3403
  }, "normalizeTag");
3406
3404
 
3407
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/store/sqlite/link-kinds.js
3405
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/store/sqlite/link-kinds.js
3408
3406
  var LINK_KINDS = [
3409
3407
  "links-to",
3410
3408
  "blocked-by",
@@ -3425,7 +3423,7 @@ var LINK_SOURCES = [...LINK_ORIGINS, "calendar"];
3425
3423
  var RELATION_KINDS = ["member-of", "related-to"];
3426
3424
  var linkKind = /* @__PURE__ */ __name((kind) => `'${kind}'`, "linkKind");
3427
3425
 
3428
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/tasks/model.js
3426
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/tasks/model.js
3429
3427
  var TASK_KINDS = ["question", "request", "mention", "promise"];
3430
3428
  var TASK_STATES = ["open", "todo", "in_progress", "done", "dismissed"];
3431
3429
  var CLOSED_STATES = ["done", "dismissed"];
@@ -3440,7 +3438,7 @@ function closeTask(task, state, by, at, reason) {
3440
3438
  }
3441
3439
  __name(closeTask, "closeTask");
3442
3440
 
3443
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/tasks/priority.js
3441
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/tasks/priority.js
3444
3442
  var PRIORITY_LABELS = ["low", "medium", "high", "critical"];
3445
3443
  var MIDDLE = { low: 0.125, medium: 0.375, high: 0.625, critical: 0.875 };
3446
3444
  var LEGACY_PRIORITY_SCORES = [0.875, 0.625, 0.375, 0.1875, 0.0625];
@@ -3469,13 +3467,13 @@ var priorityOf = /* @__PURE__ */ __name((value) => {
3469
3467
  }, "priorityOf");
3470
3468
  var priorityOption = /* @__PURE__ */ __name((value) => priorityOf(value) ?? "none", "priorityOption");
3471
3469
 
3472
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/tasks/store.js
3470
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/tasks/store.js
3473
3471
  function matches2(task, filter) {
3474
3472
  return (filter.account === void 0 || task.account === filter.account) && (filter.state === void 0 || task.state === filter.state) && (filter.group === void 0 || task.group === filter.group) && (filter.kind === void 0 || task.kind === filter.kind) && (filter.createdBefore === void 0 || task.createdAt < filter.createdBefore);
3475
3473
  }
3476
3474
  __name(matches2, "matches");
3477
3475
 
3478
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/tasks/service.js
3476
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/tasks/service.js
3479
3477
  function createTaskService({ store, now = /* @__PURE__ */ __name(() => /* @__PURE__ */ new Date(), "now"), newId = /* @__PURE__ */ __name(() => crypto.randomUUID(), "newId") }) {
3480
3478
  async function find(id3) {
3481
3479
  const task = await store.get(id3);
@@ -3535,7 +3533,7 @@ function median(values) {
3535
3533
  }
3536
3534
  __name(median, "median");
3537
3535
 
3538
- // node_modules/.pnpm/@wirecat+cli-core@0.567.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_90104be51d88dd1f434885448f73ba7c/node_modules/@wirecat/cli-core/dist/domain/knowledge.js
3536
+ // node_modules/.pnpm/@wirecat+cli-core@0.569.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_8785fed449bbc2a6b34fc086f24a8413/node_modules/@wirecat/cli-core/dist/domain/knowledge.js
3539
3537
  var FACT_STATUSES = ["proposed", "accepted", "superseded", "reversed", "rejected"];
3540
3538
  var MEMORY_KINDS = ["summary", "digest", "preference"];
3541
3539
  var MEMORY_STATUSES = ["proposed", "confirmed", "stale", "superseded"];
@@ -3599,14 +3597,14 @@ export {
3599
3597
  validatePayment,
3600
3598
  paymentTitle,
3601
3599
  meetingTimestamp,
3600
+ findingText,
3602
3601
  findingHash,
3602
+ findingFields,
3603
3603
  validEvidence,
3604
3604
  findingId,
3605
3605
  validateFinding,
3606
3606
  validateBatch,
3607
3607
  validateFindings,
3608
- findingText,
3609
- findingFields,
3610
3608
  findingFingerprint,
3611
3609
  MEETING_FINDINGS_KIND,
3612
3610
  validateMeetingFindings,