@wirecat/cli-memo 0.131.72 → 0.131.73

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 (133) hide show
  1. package/dist/bin/memo.js +2 -2
  2. package/dist/bundle/{all-profiles-G6S5HOBT.js → all-profiles-L5QBYI3V.js} +5 -5
  3. package/dist/bundle/{anthropic-LA6PXTPQ.js → anthropic-XXKHNCQS.js} +13 -4
  4. package/dist/bundle/{app-server-SESNZIAV.js → app-server-FDMP3IBP.js} +35 -35
  5. package/dist/bundle/auto-YQAECIZA.js +85 -0
  6. package/dist/bundle/{bun-PZNVNH4G.js → bun-VLN4HBWB.js} +2 -2
  7. package/dist/bundle/{bun-sqlite-VICDK5FS.js → bun-sqlite-KJCYXNMS.js} +2 -2
  8. package/dist/bundle/{chunk-FXZ7PQKG.js → chunk-2BH2RNFR.js} +5 -5
  9. package/dist/bundle/{chunk-RGIS2DRA.js → chunk-2C323QNQ.js} +4 -4
  10. package/dist/bundle/{chunk-SR7C53CS.js → chunk-3CANRF2G.js} +2 -2
  11. package/dist/bundle/{chunk-A4UQKFGY.js → chunk-6OPZTBRR.js} +12 -12
  12. package/dist/bundle/{chunk-I4HWKPQR.js → chunk-6ZRBQTKZ.js} +4 -4
  13. package/dist/bundle/{chunk-ASDOPGKC.js → chunk-A7QXBRUH.js} +2 -2
  14. package/dist/bundle/{chunk-IXZWUHSG.js → chunk-B7ATMWVO.js} +7 -7
  15. package/dist/bundle/{chunk-FOPDWCRG.js → chunk-BBLT77AO.js} +5 -5
  16. package/dist/bundle/{chunk-NRLXWY4Q.js → chunk-BOZEBD3I.js} +433 -368
  17. package/dist/bundle/{chunk-FPWF2XLH.js → chunk-BTVND2RV.js} +12 -12
  18. package/dist/bundle/{chunk-HIHZNBR7.js → chunk-C3UOKLIT.js} +1 -1
  19. package/dist/bundle/{chunk-UCRR7R6Q.js → chunk-E75LK7GD.js} +2 -2
  20. package/dist/bundle/{chunk-M2DAITNE.js → chunk-EH7ACKFW.js} +2 -2
  21. package/dist/bundle/{chunk-MSTWHRLN.js → chunk-EI2P5E4C.js} +1 -1
  22. package/dist/bundle/{chunk-FHIGY5K6.js → chunk-EQLOQOIB.js} +1 -1
  23. package/dist/bundle/{chunk-2VETW2QK.js → chunk-FMSXN2N6.js} +482 -369
  24. package/dist/bundle/{chunk-UX52EWLQ.js → chunk-FSXQLNU4.js} +1 -1
  25. package/dist/bundle/{chunk-K55WZ67L.js → chunk-H74CWBSY.js} +3 -3
  26. package/dist/bundle/{chunk-FENNNSCI.js → chunk-HBP7AQXX.js} +5 -5
  27. package/dist/bundle/{chunk-SVVSGUMU.js → chunk-I6MGDSYH.js} +4 -4
  28. package/dist/bundle/{chunk-ZM6J47GY.js → chunk-IDCYBSML.js} +2 -2
  29. package/dist/bundle/{chunk-QUPPO7DB.js → chunk-IKH4RCJO.js} +1 -1
  30. package/dist/bundle/{chunk-PHL53ERQ.js → chunk-IUEYR3TK.js} +4 -4
  31. package/dist/bundle/{chunk-MKOQDN3I.js → chunk-J7ESMDVV.js} +1 -1
  32. package/dist/bundle/{chunk-INQAQ55X.js → chunk-JABLJBXL.js} +80 -76
  33. package/dist/bundle/{chunk-YBL4QKLV.js → chunk-JLC2RE4Y.js} +46 -46
  34. package/dist/bundle/{chunk-FDSM2TU6.js → chunk-JPXDDRBD.js} +8 -8
  35. package/dist/bundle/{chunk-SL2LXOCN.js → chunk-K54MCZWM.js} +2 -2
  36. package/dist/bundle/{chunk-5XRCF57Z.js → chunk-KK3ZHBMI.js} +1 -1
  37. package/dist/bundle/{chunk-THPGFRPZ.js → chunk-KQTR6YA4.js} +9 -9
  38. package/dist/bundle/{chunk-II2SXJEO.js → chunk-LG5SQGNM.js} +28 -28
  39. package/dist/bundle/{chunk-LIF2HXIQ.js → chunk-LHZ4QBWB.js} +1 -1
  40. package/dist/bundle/{chunk-6Z62U7NY.js → chunk-LOYI3STE.js} +3 -3
  41. package/dist/bundle/{chunk-WT2P44YD.js → chunk-MLN4DPXN.js} +10 -10
  42. package/dist/bundle/{chunk-FVJSDDSV.js → chunk-MM3OMWST.js} +11 -9
  43. package/dist/bundle/{chunk-G3FQTKHT.js → chunk-NMOWIFH3.js} +7 -7
  44. package/dist/bundle/{chunk-ESYCZ575.js → chunk-O5KXCQE4.js} +2 -2
  45. package/dist/bundle/{chunk-CLQXHFKG.js → chunk-OGUXOAOH.js} +5 -5
  46. package/dist/bundle/{chunk-H3LAORYX.js → chunk-ON7ZROFP.js} +2 -2
  47. package/dist/bundle/{chunk-KH43CUE2.js → chunk-PAHBDQ5A.js} +5 -5
  48. package/dist/bundle/{chunk-MAGAWAPG.js → chunk-PF6LXPK5.js} +167 -165
  49. package/dist/bundle/{chunk-BD7AGXJJ.js → chunk-QHLEMEF3.js} +31 -31
  50. package/dist/bundle/{chunk-U3P5F57B.js → chunk-R3PK4Y7C.js} +1 -1
  51. package/dist/bundle/{chunk-G7XOBQB5.js → chunk-RB266FS6.js} +3 -3
  52. package/dist/bundle/{chunk-IRBYZUI7.js → chunk-SILEPITK.js} +27 -36
  53. package/dist/bundle/{chunk-STJWETNW.js → chunk-US2HTCJA.js} +4 -4
  54. package/dist/bundle/{chunk-6B3GQMR6.js → chunk-VPR47AG4.js} +1 -1
  55. package/dist/bundle/{chunk-3LS76TFB.js → chunk-VQUSPMYO.js} +1 -1
  56. package/dist/bundle/{chunk-RF6KPQWV.js → chunk-W6JPIP5C.js} +2 -2
  57. package/dist/bundle/{chunk-XXEHPPNS.js → chunk-WJNLBQSV.js} +1099 -743
  58. package/dist/bundle/{chunk-XNX3U6GD.js → chunk-X35Q5CHE.js} +6 -6
  59. package/dist/bundle/{chunk-B7LGXY3S.js → chunk-XGXEWKR7.js} +4 -4
  60. package/dist/bundle/{chunk-CPUQC7UF.js → chunk-XM6ZAPFW.js} +1 -1
  61. package/dist/bundle/{chunk-2RNNWFU7.js → chunk-YDGZJK6U.js} +13 -13
  62. package/dist/bundle/{chunk-3ZSPTUG3.js → chunk-ZI5Y2EUA.js} +6 -6
  63. package/dist/bundle/{chunk-PGOMGFXA.js → chunk-ZIGVDRSI.js} +1 -1
  64. package/dist/bundle/{command-contract-7QECBB6M.js → command-contract-6HJ322BP.js} +11 -11
  65. package/dist/bundle/{decode-WRWXOJML.js → decode-OS6Y6ICA.js} +2 -2
  66. package/dist/bundle/{echarts-MTCNTCST.js → echarts-JKGDUDYL.js} +2 -2
  67. package/dist/bundle/{embed-PPPCHSTE.js → embed-UB4LH6MF.js} +3 -3
  68. package/dist/bundle/{embedder-UJBIX6A2.js → embedder-TUQBG22Y.js} +6 -6
  69. package/dist/bundle/{entry-W6SHKRBE.js → entry-N4NCIQYH.js} +4 -4
  70. package/dist/bundle/failure-BJEFFYH3.js +65 -0
  71. package/dist/bundle/{first-run-7HAWGQ3B.js → first-run-VNJHZYGS.js} +5 -5
  72. package/dist/bundle/{first-screen-FRRTKWFB.js → first-screen-4XGF2NZ3.js} +12 -12
  73. package/dist/bundle/{instructions-JKIO4JF7.js → instructions-Q6IZQUU7.js} +1 -1
  74. package/dist/bundle/{mcp-OL6ZYF2T.js → mcp-REIASUJR.js} +35 -35
  75. package/dist/bundle/memo.js +6 -6
  76. package/dist/bundle/{node-3AIXDDDR.js → node-ZSSIVKVC.js} +2 -2
  77. package/dist/bundle/{node-sqlite-NX722DXD.js → node-sqlite-AUNJSQQL.js} +3 -3
  78. package/dist/bundle/{oauth-2NPSI7Q3.js → oauth-2MTJFCMI.js} +4 -4
  79. package/dist/bundle/{open-AFRN6Q36.js → open-U7RC27MJ.js} +2 -2
  80. package/dist/bundle/{openai-U5CQFLRU.js → openai-2SJCG6XM.js} +7 -7
  81. package/dist/bundle/{process-J2IBN6X7.js → process-UEQX5STY.js} +1 -1
  82. package/dist/bundle/{program-MRG4ZQQI.js → program-G3F26HW7.js} +168 -87
  83. package/dist/bundle/{prompt-6XNKR4VQ.js → prompt-F23FC5PJ.js} +2 -2
  84. package/dist/bundle/{recognize-G3GI32QS.js → recognize-ZVEGVD56.js} +1 -1
  85. package/dist/bundle/{remote-DJO255PT.js → remote-CZXQS7PS.js} +4 -4
  86. package/dist/bundle/{rerank-5SBZRIHF.js → rerank-IRFXSVVO.js} +4 -4
  87. package/dist/bundle/{serve-BZVBKGU3.js → serve-6CIMU5HP.js} +6 -6
  88. package/dist/bundle/server-27KXLL4E.js +61 -0
  89. package/dist/bundle/{server-D5BJDKTJ.js → server-H24MAUT2.js} +50 -50
  90. package/dist/bundle/server-TWMUWMFM.js +48 -0
  91. package/dist/bundle/{state-A57F7T5D.js → state-TRWZWXB5.js} +3 -3
  92. package/dist/bundle/{store-JXD7SGIK.js → store-E4QUOOLX.js} +9 -9
  93. package/dist/bundle/store-maintenance-command-GLHRB2VZ.js +47 -0
  94. package/dist/bundle/update-QQEM73O5.js +68 -0
  95. package/dist/contract-overrides/search.d.ts.map +1 -1
  96. package/dist/contract-overrides/search.js +9 -3
  97. package/dist/contract-overrides/search.js.map +1 -1
  98. package/dist/digest/backfill.d.ts.map +1 -1
  99. package/dist/digest/backfill.js +7 -7
  100. package/dist/digest/backfill.js.map +1 -1
  101. package/dist/examples.d.ts.map +1 -1
  102. package/dist/examples.js +9 -3
  103. package/dist/examples.js.map +1 -1
  104. package/dist/mcp/server.js +1 -1
  105. package/dist/mcp/server.js.map +1 -1
  106. package/dist/search/answers.d.ts +9 -2
  107. package/dist/search/answers.d.ts.map +1 -1
  108. package/dist/search/answers.js +59 -5
  109. package/dist/search/answers.js.map +1 -1
  110. package/dist/search/command.d.ts.map +1 -1
  111. package/dist/search/command.js +38 -7
  112. package/dist/search/command.js.map +1 -1
  113. package/dist/search/search.d.ts +6 -2
  114. package/dist/search/search.d.ts.map +1 -1
  115. package/dist/search/search.js +14 -5
  116. package/dist/search/search.js.map +1 -1
  117. package/dist/store/group.d.ts +1 -1
  118. package/dist/store/group.d.ts.map +1 -1
  119. package/dist/store/group.js +2 -1
  120. package/dist/store/group.js.map +1 -1
  121. package/dist/version.d.ts +1 -1
  122. package/dist/version.js +1 -1
  123. package/package.json +2 -2
  124. package/skills/cli-memo/SKILL.md +3 -3
  125. package/skills/cli-memo/topics/meetings.md +2 -1
  126. package/skills/cli-memo/topics/search.md +1 -0
  127. package/dist/bundle/auto-WU47LYXJ.js +0 -85
  128. package/dist/bundle/failure-NRJ3EPBO.js +0 -65
  129. package/dist/bundle/server-AEZPZ3ZD.js +0 -48
  130. package/dist/bundle/server-CIT5B2SV.js +0 -61
  131. package/dist/bundle/store-maintenance-command-5DG4SEQA.js +0 -47
  132. package/dist/bundle/update-NI24ED4V.js +0 -68
  133. /package/dist/bundle/{chunk-YSYFOIW7.js → chunk-ZOWQ5B33.js} +0 -0
@@ -6,18 +6,18 @@ import {
6
6
  autoState,
7
7
  lastAutoRun,
8
8
  recordAutoRun
9
- } from "./chunk-RGIS2DRA.js";
9
+ } from "./chunk-2C323QNQ.js";
10
10
  import {
11
11
  installer,
12
12
  latest,
13
13
  upgradeCommand
14
- } from "./chunk-FENNNSCI.js";
14
+ } from "./chunk-HBP7AQXX.js";
15
15
  import {
16
16
  mcpOwnerAllowed,
17
17
  memoLevels,
18
18
  readOnlyAvailability,
19
19
  refuseWritesUnderLock
20
- } from "./chunk-FXZ7PQKG.js";
20
+ } from "./chunk-2BH2RNFR.js";
21
21
  import {
22
22
  answers,
23
23
  atDetail,
@@ -29,7 +29,7 @@ import {
29
29
  trackAnswers,
30
30
  wholeList,
31
31
  withStore
32
- } from "./chunk-FOPDWCRG.js";
32
+ } from "./chunk-BBLT77AO.js";
33
33
  import {
34
34
  ATTACHMENT_CHARS,
35
35
  DIALECTS,
@@ -61,15 +61,15 @@ import {
61
61
  showMail,
62
62
  unsetConfigKey,
63
63
  updateConfig
64
- } from "./chunk-BD7AGXJJ.js";
64
+ } from "./chunk-QHLEMEF3.js";
65
65
  import "./chunk-QP3KNC5D.js";
66
- import "./chunk-SL2LXOCN.js";
67
- import "./chunk-IXZWUHSG.js";
68
- import "./chunk-K55WZ67L.js";
66
+ import "./chunk-K54MCZWM.js";
67
+ import "./chunk-B7ATMWVO.js";
68
+ import "./chunk-H74CWBSY.js";
69
69
  import {
70
70
  errorObject,
71
71
  recognisable
72
- } from "./chunk-B7LGXY3S.js";
72
+ } from "./chunk-XGXEWKR7.js";
73
73
  import {
74
74
  AGENT_INPUT_MAX_CHARS,
75
75
  DISCOVERY_DESCRIPTIONS,
@@ -119,32 +119,32 @@ import {
119
119
  tasksStatsCommand,
120
120
  templatesCommand,
121
121
  withSqliteSidecars
122
- } from "./chunk-2VETW2QK.js";
123
- import "./chunk-MKOQDN3I.js";
124
- import "./chunk-6B3GQMR6.js";
122
+ } from "./chunk-FMSXN2N6.js";
123
+ import "./chunk-J7ESMDVV.js";
124
+ import "./chunk-VPR47AG4.js";
125
125
  import {
126
126
  allHitItem,
127
127
  coverageGaps,
128
128
  messageHitItem,
129
129
  noteHitItem,
130
130
  shownOf
131
- } from "./chunk-IRBYZUI7.js";
132
- import "./chunk-FHIGY5K6.js";
131
+ } from "./chunk-SILEPITK.js";
132
+ import "./chunk-EQLOQOIB.js";
133
133
  import {
134
134
  REASONS as REASONS2,
135
135
  SKILL_TARGETS,
136
136
  skillCommand,
137
137
  skillPath,
138
138
  skillVersion
139
- } from "./chunk-FVJSDDSV.js";
139
+ } from "./chunk-MM3OMWST.js";
140
140
  import {
141
141
  recoveryNotes,
142
142
  storeInfo,
143
143
  storeRecoveryCheck,
144
144
  storeRecoveryRun,
145
145
  storeSummary
146
- } from "./chunk-YBL4QKLV.js";
147
- import "./chunk-2RNNWFU7.js";
146
+ } from "./chunk-JLC2RE4Y.js";
147
+ import "./chunk-YDGZJK6U.js";
148
148
  import {
149
149
  LIST_QUERY_GUIDE,
150
150
  RESOURCES_SEARCHED,
@@ -220,18 +220,18 @@ import {
220
220
  timeLimit,
221
221
  typedQuery,
222
222
  withQuery
223
- } from "./chunk-XXEHPPNS.js";
223
+ } from "./chunk-WJNLBQSV.js";
224
224
  import {
225
225
  readBoundedUtf8File,
226
226
  writeFileAtomic
227
- } from "./chunk-FPWF2XLH.js";
227
+ } from "./chunk-BTVND2RV.js";
228
228
  import {
229
229
  commandsText,
230
230
  inSection,
231
231
  installHelp
232
- } from "./chunk-XNX3U6GD.js";
232
+ } from "./chunk-X35Q5CHE.js";
233
233
  import "./chunk-HTQTIKWP.js";
234
- import "./chunk-ASDOPGKC.js";
234
+ import "./chunk-A7QXBRUH.js";
235
235
  import {
236
236
  Command,
237
237
  DEFAULT_TEXT_MODEL,
@@ -255,6 +255,7 @@ import {
255
255
  grantsAuthority,
256
256
  hasSharedContract,
257
257
  itemOf,
258
+ levelFor,
258
259
  liftProfile,
259
260
  metaOf,
260
261
  outputFor,
@@ -270,23 +271,23 @@ import {
270
271
  snakeKeys,
271
272
  textModels,
272
273
  textModelsFile
273
- } from "./chunk-MAGAWAPG.js";
274
- import "./chunk-3ZSPTUG3.js";
275
- import "./chunk-WT2P44YD.js";
274
+ } from "./chunk-PF6LXPK5.js";
275
+ import "./chunk-ZI5Y2EUA.js";
276
+ import "./chunk-MLN4DPXN.js";
276
277
  import {
277
278
  isNewer
278
279
  } from "./chunk-LJCT7YG6.js";
279
280
  import "./chunk-L62FWN3Y.js";
280
- import "./chunk-6Z62U7NY.js";
281
- import "./chunk-THPGFRPZ.js";
282
- import "./chunk-HIHZNBR7.js";
283
- import "./chunk-I4HWKPQR.js";
281
+ import "./chunk-LOYI3STE.js";
282
+ import "./chunk-KQTR6YA4.js";
283
+ import "./chunk-C3UOKLIT.js";
284
+ import "./chunk-6ZRBQTKZ.js";
284
285
  import {
285
286
  releaseLock,
286
287
  servingProfiles,
287
288
  takeLock
288
- } from "./chunk-ZM6J47GY.js";
289
- import "./chunk-3LS76TFB.js";
289
+ } from "./chunk-IDCYBSML.js";
290
+ import "./chunk-VQUSPMYO.js";
290
291
  import {
291
292
  EVIDENCE_FINDINGS_KIND,
292
293
  MAIL_FINDINGS_KIND,
@@ -323,7 +324,7 @@ import {
323
324
  refLabel,
324
325
  storedProfilesFor,
325
326
  writesWithOf
326
- } from "./chunk-NRLXWY4Q.js";
327
+ } from "./chunk-BOZEBD3I.js";
327
328
  import {
328
329
  CATALOG_KINDS,
329
330
  CATEGORIES,
@@ -396,21 +397,21 @@ import {
396
397
  timezoneOf,
397
398
  validateQuery,
398
399
  walkQuery
399
- } from "./chunk-INQAQ55X.js";
400
- import "./chunk-M2DAITNE.js";
401
- import "./chunk-G3FQTKHT.js";
402
- import "./chunk-SVVSGUMU.js";
403
- import "./chunk-UCRR7R6Q.js";
404
- import "./chunk-LIF2HXIQ.js";
405
- import "./chunk-ESYCZ575.js";
406
- import "./chunk-SR7C53CS.js";
407
- import "./chunk-CLQXHFKG.js";
400
+ } from "./chunk-JABLJBXL.js";
401
+ import "./chunk-EH7ACKFW.js";
402
+ import "./chunk-NMOWIFH3.js";
403
+ import "./chunk-I6MGDSYH.js";
404
+ import "./chunk-E75LK7GD.js";
405
+ import "./chunk-LHZ4QBWB.js";
406
+ import "./chunk-O5KXCQE4.js";
407
+ import "./chunk-3CANRF2G.js";
408
+ import "./chunk-OGUXOAOH.js";
408
409
  import {
409
410
  sharedModelsDirectory
410
- } from "./chunk-G7XOBQB5.js";
411
+ } from "./chunk-RB266FS6.js";
411
412
  import {
412
413
  storePath
413
- } from "./chunk-U3P5F57B.js";
414
+ } from "./chunk-R3PK4Y7C.js";
414
415
  import {
415
416
  provideTerminal,
416
417
  terminalOf
@@ -420,12 +421,12 @@ import {
420
421
  REASONS,
421
422
  STORE_CLIENT,
422
423
  VERSION
423
- } from "./chunk-5XRCF57Z.js";
424
+ } from "./chunk-KK3ZHBMI.js";
424
425
  import "./chunk-DSU6UR2X.js";
425
426
  import "./chunk-SYWHHQMC.js";
426
427
  import "./chunk-D72URWJE.js";
427
- import "./chunk-KH43CUE2.js";
428
- import "./chunk-MSTWHRLN.js";
428
+ import "./chunk-PAHBDQ5A.js";
429
+ import "./chunk-EI2P5E4C.js";
429
430
  import {
430
431
  Credentials,
431
432
  configFilePath,
@@ -467,7 +468,7 @@ import {
467
468
  errorCodes,
468
469
  isCliError
469
470
  } from "./chunk-ZTONSM5X.js";
470
- import "./chunk-CPUQC7UF.js";
471
+ import "./chunk-XM6ZAPFW.js";
471
472
  import {
472
473
  __name
473
474
  } from "./chunk-ZVVMGPBJ.js";
@@ -584,13 +585,14 @@ var accountsByKind = /* @__PURE__ */ __name((scope, imports = []) => {
584
585
  notes: [MEMO_ACCOUNT],
585
586
  events: [],
586
587
  crm: [],
587
- business: [OWN_BUSINESS, ...imports.filter(scope.has)]
588
+ business: [OWN_BUSINESS, ...imports.filter(scope.has)],
589
+ meetings: []
588
590
  };
589
591
  for (const key of scope.accounts) {
590
592
  const kind = kindIn(key.provider);
591
593
  if (kind === "documents")
592
594
  kinds2.notes.push(key);
593
- else if (kind !== void 0 && kind !== "meetings" && kind in kinds2)
595
+ else if (kind !== void 0 && kind in kinds2)
594
596
  kinds2[kind].push(key);
595
597
  }
596
598
  return kinds2;
@@ -846,7 +848,7 @@ var readScope = /* @__PURE__ */ __name((command, help = ONE_ACCOUNT_HELP) => sou
846
848
  var writeScope = /* @__PURE__ */ __name((command, help) => writeOptions(command, help).option("--json", "print JSON; --json=id,title keeps only those fields"), "writeScope");
847
849
  var jsonOption = /* @__PURE__ */ __name((command, fields = "ref,title") => command.option("--json", `print JSON; --json=${fields} keeps only those fields`), "jsonOption");
848
850
 
849
- // node_modules/.pnpm/@wirecat+cli-core@0.619.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_25b690dd810be59ade44e4d26e61c9f5/node_modules/@wirecat/cli-core/dist/mail/sender-scores.js
851
+ // node_modules/.pnpm/@wirecat+cli-core@0.620.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_5a9525690cd264264c4a3180795dd7f6/node_modules/@wirecat/cli-core/dist/mail/sender-scores.js
850
852
  var SCORED = "mail_sender_scores";
851
853
  var DAY = 864e5;
852
854
  var RECENT = 2 * 365 * DAY;
@@ -862,7 +864,7 @@ var demotedSenders = /* @__PURE__ */ __name(async (store) => {
862
864
  return senders;
863
865
  }, "demotedSenders");
864
866
 
865
- // node_modules/.pnpm/@wirecat+cli-core@0.619.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_25b690dd810be59ade44e4d26e61c9f5/node_modules/@wirecat/cli-core/dist/mail/sync.js
867
+ // node_modules/.pnpm/@wirecat+cli-core@0.620.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_5a9525690cd264264c4a3180795dd7f6/node_modules/@wirecat/cli-core/dist/mail/sync.js
866
868
  var DAY2 = 864e5;
867
869
  var EDGE = 2 * DAY2;
868
870
 
@@ -1983,14 +1985,15 @@ var groupScoped = /* @__PURE__ */ __name(async (store, env, only) => {
1983
1985
  const scope = await groupScopeOf(store, env);
1984
1986
  if (scope === void 0)
1985
1987
  return void 0;
1986
- const kinds2 = accountsByKind(scope, await store.business.accounts());
1988
+ const byKind = accountsByKind(scope, await store.business.accounts());
1989
+ const kinds2 = /* @__PURE__ */ __name((kind) => byKind[kind] ?? [], "kinds");
1987
1990
  const wanted = only ?? RESOURCES_SEARCHED;
1988
- const kept = wanted.filter((kind) => kinds2[kind].length > 0);
1991
+ const kept = wanted.filter((kind) => kinds2(kind).length > 0);
1989
1992
  if (kept.length === 0)
1990
1993
  throw new CliError("validation_error", `group ${scope.run.name} holds no account of ${wanted.join(", ")}`);
1991
1994
  return {
1992
1995
  only: kept,
1993
- scope: Object.fromEntries(kept.map((kind) => [kind, kinds2[kind]])),
1996
+ scope: Object.fromEntries(kept.map((kind) => [kind, kinds2(kind)])),
1994
1997
  skipped: wanted.filter((kind) => !kept.includes(kind)).map((resource) => ({
1995
1998
  resource,
1996
1999
  code: "not_found",
@@ -1998,7 +2001,7 @@ var groupScoped = /* @__PURE__ */ __name(async (store, env, only) => {
1998
2001
  }))
1999
2002
  };
2000
2003
  }, "groupScoped");
2001
- var searchEverywhere = /* @__PURE__ */ __name(async (store, env, { text: text3, limit, only, crmKinds, exact, timezone, plainOrder, shows }) => {
2004
+ var searchEverywhere = /* @__PURE__ */ __name(async (store, env, { text: text3, limit, only, crmKinds, source, exact, timezone, plainOrder, shows }) => {
2002
2005
  const accounts = await scopedAccounts(store, env);
2003
2006
  const group = await groupScoped(store, env, only);
2004
2007
  const messenger2 = { app: { ...APP, command: "tg" }, hintCommand: "memo" };
@@ -2009,6 +2012,10 @@ var searchEverywhere = /* @__PURE__ */ __name(async (store, env, { text: text3,
2009
2012
  ...offset === void 0 ? {} : { offset },
2010
2013
  ...group === void 0 ? only === void 0 ? {} : { only } : { only: group.only, scope: group.scope },
2011
2014
  ...crmKinds === void 0 ? {} : { crmKinds },
2015
+ ...source === void 0 ? {} : { source },
2016
+ // memo is the owner's own view of every account, personal and work alike.
2017
+ meetingScopes: ["personal", "work"],
2018
+ ...only?.includes("meetings") ? { meetingsAsked: true } : {},
2012
2019
  ...exact ? { exact: true } : {},
2013
2020
  ...timezone === void 0 ? {} : { timezone }
2014
2021
  }, messenger2, (query) => searchStore(store, MEMO, query, messenger2), meaningLane({ env, store: /* @__PURE__ */ __name(async () => store, "store"), messenger: { app: { command: "memo" } } })), "ask");
@@ -2292,7 +2299,7 @@ import { createHash } from "node:crypto";
2292
2299
  import { existsSync, readFileSync as readFileSync2, statSync } from "node:fs";
2293
2300
  import { basename, extname, relative, sep } from "node:path";
2294
2301
 
2295
- // node_modules/.pnpm/@wirecat+cli-core@0.619.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_25b690dd810be59ade44e4d26e61c9f5/node_modules/@wirecat/cli-core/dist/services/documents/extraction.js
2302
+ // node_modules/.pnpm/@wirecat+cli-core@0.620.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_5a9525690cd264264c4a3180795dd7f6/node_modules/@wirecat/cli-core/dist/services/documents/extraction.js
2296
2303
  var Proposal = object({
2297
2304
  kind: picklist(["summary", "digest", "fact", "preference"]),
2298
2305
  body: pipe(string(), trim(), minLength(1), maxLength(15e3)),
@@ -2300,13 +2307,13 @@ var Proposal = object({
2300
2307
  });
2301
2308
  var Proposals = object({ items: pipe(array(Proposal), maxLength(20)) });
2302
2309
 
2303
- // node_modules/.pnpm/@wirecat+cli-core@0.619.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_25b690dd810be59ade44e4d26e61c9f5/node_modules/@wirecat/cli-core/dist/services/documents/mirrors.js
2310
+ // node_modules/.pnpm/@wirecat+cli-core@0.620.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_5a9525690cd264264c4a3180795dd7f6/node_modules/@wirecat/cli-core/dist/services/documents/mirrors.js
2304
2311
  var ID = pipe(string(), regex(/^[A-Za-z0-9_-]{1,200}$/));
2305
2312
 
2306
- // node_modules/.pnpm/@wirecat+cli-core@0.619.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_25b690dd810be59ade44e4d26e61c9f5/node_modules/@wirecat/cli-core/dist/services/documents/sync.js
2313
+ // node_modules/.pnpm/@wirecat+cli-core@0.620.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_5a9525690cd264264c4a3180795dd7f6/node_modules/@wirecat/cli-core/dist/services/documents/sync.js
2307
2314
  var MAX_PICTURE_BYTES = 25 * 1024 * 1024;
2308
2315
 
2309
- // node_modules/.pnpm/@wirecat+cli-core@0.619.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_25b690dd810be59ade44e4d26e61c9f5/node_modules/@wirecat/cli-core/dist/fetch/addresses.js
2316
+ // node_modules/.pnpm/@wirecat+cli-core@0.620.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_5a9525690cd264264c4a3180795dd7f6/node_modules/@wirecat/cli-core/dist/fetch/addresses.js
2310
2317
  import { isIP } from "node:net";
2311
2318
  var within3 = /* @__PURE__ */ __name((address, [prefix, bits]) => {
2312
2319
  for (let bit = 0; bit < bits; bit++) {
@@ -2377,7 +2384,7 @@ var isPublicAddress = /* @__PURE__ */ __name((address) => {
2377
2384
  return within3(bytes, [[32], 3]) && !V6_PRIVATE.some((prefix) => within3(bytes, prefix));
2378
2385
  }, "isPublicAddress");
2379
2386
 
2380
- // node_modules/.pnpm/@wirecat+cli-core@0.619.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_25b690dd810be59ade44e4d26e61c9f5/node_modules/@wirecat/cli-core/dist/fetch/page.js
2387
+ // node_modules/.pnpm/@wirecat+cli-core@0.620.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_5a9525690cd264264c4a3180795dd7f6/node_modules/@wirecat/cli-core/dist/fetch/page.js
2381
2388
  import { lookup as dnsLookup } from "node:dns/promises";
2382
2389
  import { request as httpRequest } from "node:http";
2383
2390
  import { request as httpsRequest } from "node:https";
@@ -4170,14 +4177,14 @@ var search = [
4170
4177
  command: ["search", "all"],
4171
4178
  field: "summary",
4172
4179
  before: "search stored messages, notes, calendar events and selected meeting transcripts",
4173
- after: "messages, mail, notes, events and deals ranked together",
4180
+ after: "messages, mail, notes, events, deals and meetings ranked together",
4174
4181
  reason: "Memo searches imported accounts, mail and native notes without a live messenger; its scope, ranking and output controls are explicit provider differences."
4175
4182
  },
4176
4183
  {
4177
4184
  command: ["search", "all"],
4178
4185
  field: "description",
4179
4186
  before: "search messenger messages and notes in the local store, calendar events when the store holds a calendar, and a meeting account's transcripts when --source names one \u2014 best match first; not mail (the separate memo CLI searches it: memo search mail), tasks, people, memories or projects. Use it when you do not know where something was written; search messages or notes reads one kind with all its fields",
4180
- after: "messages, mail, notes, calendar events, deals, leads and business data ranked together; not people, memories, projects or decisions. A kind you know reads better with its own search, with all its fields",
4187
+ after: "messages, mail, notes, calendar events, deals, leads, business data and meeting passages from every meeting account, ranked together; not people, memories, projects or decisions. A kind you know reads better with its own search, with all its fields",
4181
4188
  reason: "Memo searches imported accounts, mail and native notes without a live messenger; its scope, ranking and output controls are explicit provider differences."
4182
4189
  },
4183
4190
  {
@@ -4296,7 +4303,13 @@ var search = [
4296
4303
  },
4297
4304
  {
4298
4305
  flags: "--only <resources>",
4299
- description: "messages,mail,notes,events,crm,business, separated by commas",
4306
+ description: "messages,mail,notes,events,crm,business,meetings, separated by commas",
4307
+ takes_value: true,
4308
+ mandatory: false
4309
+ },
4310
+ {
4311
+ flags: "--source <accounts>",
4312
+ description: "only these accounts, separated by commas: provider:account as a hit shows it, a provider, a kind or group:<name>; each resource reads the ones of its kind, and one it names none of is left out",
4300
4313
  takes_value: true,
4301
4314
  mandatory: false
4302
4315
  },
@@ -5480,11 +5493,11 @@ var digestCommand = /* @__PURE__ */ __name((program, streams, env) => {
5480
5493
  const { print } = answers(program, streams, env);
5481
5494
  const digest = program.command("digest").description("the morning digest: your brief on what it collects, and the digests of past days").summary("the morning digest: your brief, past days");
5482
5495
  briefCommand(digest, print, env);
5483
- fromAppOption(annotate(digest.command("backfill"), { effects: LOCAL_WRITE })).summary("build the morning digests of past days, without sending them").description("build the morning digest each past day would have had: the morning-digest schedule's agent runs as its timer does (the same skill, flags and cost caps), reading the agenda as of that day's run time, and the result is kept as that day's run, marked backfill, for WireCat Desktop's digests screen. It is never sent to Telegram or mail. A day that already has a digest is skipped. Without --yes it only prints what it would build and the estimate: the days times the last digest run's cost. Each day is a paid model call: it stops once today's runs cost the schedule's daily cap or a day fails, and only you run it, never an agent. The store keeps what holds now, so a chat answered since reads as answered").requiredOption("--from <date>", "the first day, YYYY-MM-DD").requiredOption("--to <date>", "the last day, YYYY-MM-DD; not a day whose run time is still ahead").option("--yes", "build them; without it, only the estimate is printed").option("--json", "print JSON").action(async (given2, command) => {
5484
- const from = dateOf(given2.from, "--from");
5485
- const to = dateOf(given2.to, "--to");
5496
+ fromAppOption(annotate(digest.command("backfill"), { effects: LOCAL_WRITE })).summary("build the morning digests of past days, without sending them").description("build the morning digest each past day would have had: the morning-digest schedule's agent runs as its timer does (the same skill, flags and cost caps), reading the agenda as of that day's run time, and the result is kept as that day's run, marked backfill, for WireCat Desktop's digests screen. It is never sent to Telegram or mail. A day that already has a digest is skipped. Without --yes it only prints what it would build and the estimate: the days times the last digest run's cost. Each day is a paid model call: it stops once today's runs cost the schedule's daily cap or a day fails, and only you run it, never an agent. The store keeps what holds now, so a chat answered since reads as answered").requiredOption("--since-time <time>", "the first day, YYYY-MM-DD").requiredOption("--until-time <time>", "the last day, YYYY-MM-DD; not a day whose run time is still ahead").option("--yes", "build them; without it, only the estimate is printed").option("--json", "print JSON").action(async (given2, command) => {
5497
+ const from = dateOf(given2.sinceTime, "--since-time");
5498
+ const to = dateOf(given2.untilTime, "--until-time");
5486
5499
  if (from > to)
5487
- throw new CliError("validation_error", "--from is after --to", { param: "--from" });
5500
+ throw new CliError("validation_error", "--since-time is after --until-time", { param: "--since-time" });
5488
5501
  const { state, schedule } = digestSchedule(env);
5489
5502
  if (!schedule)
5490
5503
  throw new CliError("not_found", `no ${DIGEST_SCHEDULE} schedule to build from \u2014 memo skill show morning-digest says how to make one`, { reason: "backfill.no-schedule" });
@@ -5497,8 +5510,8 @@ var digestCommand = /* @__PURE__ */ __name((program, streams, env) => {
5497
5510
  });
5498
5511
  const all = daysOf(from, to, when.daily);
5499
5512
  if ((all.at(-1)?.at ?? 0) > Date.now())
5500
- throw new CliError("validation_error", `the ${given2.to} digest's time has not come yet; --to an earlier day`, {
5501
- param: "--to"
5513
+ throw new CliError("validation_error", `the ${given2.untilTime} digest's time has not come yet; --until-time an earlier day`, {
5514
+ param: "--until-time"
5502
5515
  });
5503
5516
  const runs = join7(file, "..", "runs");
5504
5517
  const done = new Set((existsSync7(runs) ? readdirSync4(runs) : []).filter((name2) => name2.endsWith(".report.json")).map((name2) => localDate(runTime(name2))));
@@ -5803,7 +5816,7 @@ var doctorCommand = /* @__PURE__ */ __name((...args) => {
5803
5816
  }, SHELL_OVERRIDES.doctor);
5804
5817
  }, "doctorCommand");
5805
5818
 
5806
- // node_modules/.pnpm/@wirecat+cli-core@0.619.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_25b690dd810be59ade44e4d26e61c9f5/node_modules/@wirecat/cli-core/dist/calendar/sync.js
5819
+ // node_modules/.pnpm/@wirecat+cli-core@0.620.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_5a9525690cd264264c4a3180795dd7f6/node_modules/@wirecat/cli-core/dist/calendar/sync.js
5807
5820
  var DAY6 = 864e5;
5808
5821
  var SLOTS_EVERY = 7 * DAY6;
5809
5822
  var isWindow = /* @__PURE__ */ __name((value) => typeof value?.from === "number" && typeof value.to === "number", "isWindow");
@@ -5883,10 +5896,10 @@ var calendarStatus = /* @__PURE__ */ __name(async (store, accountId, { profile,
5883
5896
  return { items, page: 1, limit: Math.max(1, items.length), hasMore: false };
5884
5897
  }, "calendarStatus");
5885
5898
 
5886
- // node_modules/.pnpm/@wirecat+cli-core@0.619.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_25b690dd810be59ade44e4d26e61c9f5/node_modules/@wirecat/cli-core/dist/calendar/feeds.js
5899
+ // node_modules/.pnpm/@wirecat+cli-core@0.620.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_5a9525690cd264264c4a3180795dd7f6/node_modules/@wirecat/cli-core/dist/calendar/feeds.js
5887
5900
  var FEED_LIMITS = { maxBytes: 10 * 1024 * 1024, timeoutMs: 3e4, redirects: 5 };
5888
5901
 
5889
- // node_modules/.pnpm/@wirecat+cli-core@0.619.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_25b690dd810be59ade44e4d26e61c9f5/node_modules/@wirecat/cli-core/dist/calendar/reads.js
5902
+ // node_modules/.pnpm/@wirecat+cli-core@0.620.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_5a9525690cd264264c4a3180795dd7f6/node_modules/@wirecat/cli-core/dist/calendar/reads.js
5890
5903
  var LIST = "events list";
5891
5904
  var EVENT_TYPES = [
5892
5905
  "default",
@@ -5963,7 +5976,7 @@ var accountsMeta = /* @__PURE__ */ __name(async (store, accounts, skipped, now)
5963
5976
  };
5964
5977
  }, "accountsMeta");
5965
5978
 
5966
- // node_modules/.pnpm/@wirecat+cli-core@0.619.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_25b690dd810be59ade44e4d26e61c9f5/node_modules/@wirecat/cli-core/dist/calendar/writer.js
5979
+ // node_modules/.pnpm/@wirecat+cli-core@0.620.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_5a9525690cd264264c4a3180795dd7f6/node_modules/@wirecat/cli-core/dist/calendar/writer.js
5967
5980
  var EVENTS_NOTIFY_KEY = "events.notify";
5968
5981
  var EVENTS_DELETE_SERIES_KEY = "events.delete.series";
5969
5982
  var EVENTS_REMIND_HOOK_KEY = "events.remind.hook";
@@ -6291,6 +6304,12 @@ var EXAMPLES = {
6291
6304
  "memo models consents set openai --model gpt-4o-mini --yes"
6292
6305
  ],
6293
6306
  "models consents revoke": ["memo models consents revoke"],
6307
+ "models search-consents show": ["memo models search-consents show --json"],
6308
+ "models search-consents set": [
6309
+ "memo models search-consents set anthropic",
6310
+ "memo models search-consents set anthropic --yes"
6311
+ ],
6312
+ "models search-consents revoke": ["memo models search-consents revoke"],
6294
6313
  "models keys set": ["memo models keys set openai", "memo models keys set anthropic"],
6295
6314
  "models keys remove": ["memo models keys remove openai"],
6296
6315
  "models add": [
@@ -6641,8 +6660,8 @@ var EXAMPLES = {
6641
6660
  "schedule list": ["memo schedule list", "memo schedule list kind:agent --json"],
6642
6661
  "schedule run": ["memo schedule run digest"],
6643
6662
  "digest backfill": [
6644
- "memo digest backfill --from 2026-11-01 --to 2026-11-07",
6645
- "memo digest backfill --from 2026-11-01 --to 2026-11-07 --yes --json"
6663
+ "memo digest backfill --since-time 2026-11-01 --until-time 2026-11-07",
6664
+ "memo digest backfill --since-time 2026-11-01 --until-time 2026-11-07 --yes --json"
6646
6665
  ],
6647
6666
  "digest brief show": ["memo digest brief show", "memo digest brief show --json"],
6648
6667
  "digest brief edit": [
@@ -6676,8 +6695,8 @@ var EXAMPLES = {
6676
6695
  "mcp server stop": ["memo mcp server stop"],
6677
6696
  "search all": [
6678
6697
  "memo search all 'budget harbour'",
6679
- "memo search all 'content:invoice' --only mail,notes --json",
6680
- "memo search all 'Rental agreement' --only business"
6698
+ "memo search all 'Rental agreement' --only business",
6699
+ "memo search all 'release date' --source zoom:work,notes --json"
6681
6700
  ],
6682
6701
  "search messages": ["memo search messages 'friday meeting has:voice'"],
6683
6702
  "search mail": ["memo search mail 'mailbox:important budget' --source email:me@example.com"],
@@ -10224,10 +10243,10 @@ var mcpCommandDefinition = /* @__PURE__ */ __name((program, streams, env, create
10224
10243
  }).summary("serve this profile's commands to an AI agent").description("serve memo commands over MCP on stdio or authenticated HTTP, limited by saved permissions").option("--permission <key=level>", "tighten one saved permission for this server; repeat for more keys", (value, previous = []) => [...previous, value]).option("--http", "serve on 127.0.0.1 behind an HTTPS tunnel with an owner access-code login").option("--port <port>", `local HTTP port (default ${DEFAULT_PORT}); requires --http`).option("--public-url <url>", "tunnel's HTTPS address without /mcp, or a path of it such as https://<name>.ts.net/memo; requires --http").action(async (options) => {
10225
10244
  if (!options.http && (options.port !== void 0 || options.publicUrl !== void 0))
10226
10245
  throw new CliError("validation_error", "--port and --public-url require --http");
10227
- const { createMemoServer } = await import("./server-D5BJDKTJ.js");
10246
+ const { createMemoServer } = await import("./server-H24MAUT2.js");
10228
10247
  const build = /* @__PURE__ */ __name(() => createMemoServer(env, createProgram2, options.permission), "build");
10229
10248
  if (options.http) {
10230
- const { httpLockFile, mcpUrlOf, portOf, publicUrlOf, serveOverHttp } = await import("./mcp-OL6ZYF2T.js");
10249
+ const { httpLockFile, mcpUrlOf, portOf, publicUrlOf, serveOverHttp } = await import("./mcp-REIASUJR.js");
10231
10250
  const publicUrl = publicUrlOf(options.publicUrl, {
10232
10251
  missing: "--http",
10233
10252
  reaches: "the browser apps reach memo",
@@ -10279,7 +10298,7 @@ var mcpCommandDefinition = /* @__PURE__ */ __name((program, streams, env, create
10279
10298
  });
10280
10299
  });
10281
10300
  annotate(mcp2.command("revoke"), { effects: LOCAL_WRITE, mcp: false, examples: ["memo mcp revoke --json"] }).summary("forget every login given to a browser app").description("forget every login `memo mcp serve --http` gave a browser app; each app must log in again").option("--json", "print JSON").action(async function() {
10282
- const { revokeAll } = await import("./mcp-OL6ZYF2T.js");
10301
+ const { revokeAll } = await import("./mcp-REIASUJR.js");
10283
10302
  revokeAll(httpTokenFile(env));
10284
10303
  out.print(this.opts().json, itemAnswer({ revoked: true }));
10285
10304
  });
@@ -12261,26 +12280,65 @@ var TASKS_OF_HIT = {
12261
12280
  ],
12262
12281
  why: "{count} open tasks point at this result"
12263
12282
  };
12264
- var allAnswer = /* @__PURE__ */ __name((found, limit, exact = false) => {
12283
+ var MEETING_PASSAGE = {
12284
+ id: "hit.passage",
12285
+ kind: "command",
12286
+ command: "meetings passage",
12287
+ args: [
12288
+ { name: "reference", required: true },
12289
+ { name: "source", required: true }
12290
+ ],
12291
+ why: "read the lines around this meeting hit before citing it"
12292
+ };
12293
+ var MEETINGS_INDEX = {
12294
+ id: "meetings.index",
12295
+ kind: "command",
12296
+ command: "search meetings",
12297
+ args: [
12298
+ { name: "query", required: true },
12299
+ { name: "source", required: true }
12300
+ ],
12301
+ why: "builds {source}'s meeting search index, then finds what search all could not yet"
12302
+ };
12303
+ var pendingMeetings = /* @__PURE__ */ __name((found) => (found.meetings ?? []).filter(({ indexing }) => indexing === "pending"), "pendingMeetings");
12304
+ var meetingsMissed = /* @__PURE__ */ __name((found) => [
12305
+ ...pendingMeetings(found).map(({ provider, account: account2 }) => ({
12306
+ field: "items",
12307
+ why: `${provider}:${account2}: meetings saved since its search index was last built are not found yet`,
12308
+ step: MEETINGS_INDEX.id
12309
+ })),
12310
+ // A kind `--source` named no account of was left out on purpose: `meta.issues` lists it, `missing` does not.
12311
+ ...found.skipped.filter(({ resource, source, code }) => resource === void 0 ? kindIn(source.split(":")[0] ?? "") === "meetings" : resource === "meetings" && code !== "not_found").map(({ resource, source, reason }) => ({ field: "items", why: `${source ?? resource} not searched: ${reason}` }))
12312
+ ], "meetingsMissed");
12313
+ var allAnswer = /* @__PURE__ */ __name((found, limit, exact = false, leftOut = []) => {
12265
12314
  const archive = coverageGaps({ coverage: found.coverage }, found.items.length);
12266
12315
  const next = found.items.flatMap((item) => {
12316
+ const passage = item.kind === "meeting" && item.cueRef !== void 0 ? [stepOf(MEETING_PASSAGE, { args: { reference: item.cueRef, source: `${item.provider}:${item.account}` } })] : [];
12267
12317
  const tasks = found.tasks.filter((task) => task.source === item.ref);
12268
12318
  const held = tasks[0]?.heldBy;
12269
12319
  if (held === void 0)
12270
- return [];
12320
+ return passage;
12271
12321
  return [
12272
12322
  stepOf(TASKS_OF_HIT, {
12273
12323
  args: { query: `source:"${item.ref}"`, source: `${held.provider}:${held.account}` },
12274
12324
  values: { count: tasks.length }
12275
- })
12325
+ }),
12326
+ ...passage
12276
12327
  ];
12277
12328
  });
12329
+ const indexing = pendingMeetings(found).map(({ provider, account: account2 }) => stepOf(MEETINGS_INDEX, {
12330
+ args: { query: found.query, source: `${provider}:${account2}` },
12331
+ values: { source: `${provider}:${account2}` }
12332
+ }));
12333
+ const steps = [...archive.next, ...indexing, ...next].slice(0, MAX_NEXT_STEPS);
12278
12334
  return listAnswer("search all", {
12279
12335
  items: found.items.map(allHitItem),
12280
12336
  limit,
12281
12337
  has_more: found.hasMore,
12282
- ...next.length + archive.next.length ? { next: [...next.slice(0, 2), ...archive.next] } : {},
12338
+ ...steps.length ? { next: steps } : {},
12283
12339
  missing: [
12340
+ ...meetingsMissed(found),
12341
+ ...leftOut.map(({ why }) => ({ field: "items", why })),
12284
12342
  ...archive.missing,
12285
12343
  ...meaningMissed(found.notes?.meaningSkipped, exact),
12286
12344
  ...messagesMeaningMissed(found.messages?.meaningSkipped),
@@ -12399,13 +12457,24 @@ var groupMessengers = /* @__PURE__ */ __name(async (store, env, text3) => {
12399
12457
  throw new CliError("not_found", `group ${scope.run.name} holds no messenger account`);
12400
12458
  return messages;
12401
12459
  }, "groupMessengers");
12402
- var ONLY = ["messages", "mail", "notes", "events", "crm", "business"];
12460
+ var ONLY = RESOURCES_SEARCHED;
12403
12461
  var onlyOf2 = /* @__PURE__ */ __name((value) => {
12404
12462
  const selected = value.split(",").map((part) => part.trim());
12405
12463
  if (!selected.length || selected.some((part) => !ONLY.includes(part)))
12406
12464
  throw new InvalidArgumentError(`choose ${ONLY.join(",")}, separated by commas`);
12407
12465
  return [...new Set(selected)];
12408
12466
  }, "onlyOf");
12467
+ var MEETING_KEYS = ["search.meetings", "meetings.passage"];
12468
+ var READS2 = /* @__PURE__ */ new Set(["allow", "readonly"]);
12469
+ var meetingsDenied = /* @__PURE__ */ __name((command, env) => {
12470
+ const levels = memoLevels(env, environmentOf(command).agent?.overrides ?? []);
12471
+ for (const key of MEETING_KEYS) {
12472
+ const { level } = levelFor(levels, key);
12473
+ if (!READS2.has(level))
12474
+ return { why: `meetings left out: the permissions set ${key} to ${level}` };
12475
+ }
12476
+ return void 0;
12477
+ }, "meetingsDenied");
12409
12478
  var levelOf = /* @__PURE__ */ __name(({ brief, full }) => {
12410
12479
  if (brief && full)
12411
12480
  throw new CliError("validation_error", "--brief and --full ask for opposite things \u2014 pick one");
@@ -12422,13 +12491,21 @@ var searchCommandDefinition = /* @__PURE__ */ __name((program, streams, env) =>
12422
12491
  throw new InvalidArgumentError("at most 100");
12423
12492
  return limit;
12424
12493
  }, 20).option("--exact", "words as written; skip meaning search").option("--timezone <zone>", "IANA timezone for calendar date boundaries").option("--json", "print JSON; --json=id,title keeps only those fields"), "queryOptions");
12425
- queryOptions(annotate(group.command("all"), { effects: LOCAL_READ, output: { entity: "hit" } }).description("messages, mail, notes, calendar events, deals, leads and business data ranked together; not people, memories, projects or decisions. A kind you know reads better with its own search, with all its fields").summary("messages, mail, notes, events and deals ranked together")).option("--only <resources>", `${ONLY.join(",")}, separated by commas`, onlyOf2).option("--plain-order", "best first by the words alone, without moving mail from suspicious senders down").option("--project <project>", PROJECT_ORDER_HELP).addHelpText("after", `
12494
+ queryOptions(annotate(group.command("all"), { effects: LOCAL_READ, output: { entity: "hit" } }).description("messages, mail, notes, calendar events, deals, leads, business data and meeting passages from every meeting account, ranked together; not people, memories, projects or decisions. A kind you know reads better with its own search, with all its fields").summary("messages, mail, notes, events, deals and meetings ranked together")).option("--only <resources>", `${ONLY.join(",")}, separated by commas`, onlyOf2).option("--source <accounts>", "only these accounts, separated by commas: provider:account as a hit shows it, a provider, a kind or group:<name>; each resource reads the ones of its kind, and one it names none of is left out").option("--plain-order", "best first by the words alone, without moving mail from suspicious senders down").option("--project <project>", PROJECT_ORDER_HELP).addHelpText("after", `
12426
12495
  content: narrows a search to the text of files, transcript: to voice transcripts, filename: to file names \u2014 memo search all 'content:invoice'.
12427
12496
  Calendar events come from every calendar gcal stored; an event's title, description and place are written by whoever sent the invitation.
12428
12497
  crm finds deals and leads by the words of their title only.
12429
12498
  business finds invoices, payments, orders, contracts, subscriptions, products and wallets by the words of their numbers and names.
12430
12499
  --json: the list is items, each a hit as in tg search all: ref, kind, title, timestamp, excerpt.`).action(async (words, options, command) => {
12431
- const gate = lanesFor(command, options.only);
12500
+ const denied = meetingsDenied(command, env);
12501
+ const asked = options.only ?? [...RESOURCES_SEARCHED];
12502
+ const wanted = denied ? asked.filter((one2) => one2 !== "meetings") : options.only;
12503
+ if (wanted?.length === 0)
12504
+ throw new CliError("permission_error", `search all has nothing it may read: ${denied?.why}`, {
12505
+ reason: "search.all-denied"
12506
+ });
12507
+ const leftOut = denied ? [denied] : [];
12508
+ const gate = lanesFor(command, wanted);
12432
12509
  const answer = await withStore(env, async (store) => {
12433
12510
  const found = await searchEverywhere(store, env, {
12434
12511
  text: words.join(" "),
@@ -12436,6 +12513,7 @@ business finds invoices, payments, orders, contracts, subscriptions, products an
12436
12513
  ...gate.only === void 0 ? {} : { only: gate.only },
12437
12514
  ...gate.shows === void 0 ? {} : { shows: gate.shows },
12438
12515
  ...gate.crmKinds === void 0 ? {} : { crmKinds: gate.crmKinds },
12516
+ ...options.source === void 0 ? {} : { source: options.source },
12439
12517
  ...options.exact ? { exact: true } : {},
12440
12518
  ...options.plainOrder ? { plainOrder: true } : {},
12441
12519
  ...options.timezone === void 0 ? {} : { timezone: options.timezone }
@@ -12447,6 +12525,9 @@ business finds invoices, payments, orders, contracts, subscriptions, products an
12447
12525
  };
12448
12526
  });
12449
12527
  if (!options.json) {
12528
+ for (const { why } of leftOut)
12529
+ streams.diagnostic(`${why}
12530
+ `);
12450
12531
  streams.diagnostic(`searched: ${answer.accounts.map(({ provider, account: account2 }) => `${provider}:${account2}`).join(", ") || "nothing"}
12451
12532
  `);
12452
12533
  for (const skipped of answer.skipped)
@@ -12462,7 +12543,7 @@ business finds invoices, payments, orders, contracts, subscriptions, products an
12462
12543
  streams.diagnostic(`${messagesMeaningNote(answer.messages.meaningSkipped)}
12463
12544
  `);
12464
12545
  }
12465
- print(options.json, allAnswer(answer, options.limit, options.exact), [
12546
+ print(options.json, allAnswer(answer, options.limit, options.exact, leftOut), [
12466
12547
  ...answer.items.map((item) => `${"key" in item ? "key " : ""}${item.kind} ${item.ref}
12467
12548
  ${item.text}`),
12468
12549
  ...answer.tasks.map((task) => `task task:${task.id} ${task.kind} ${task.source}`)
@@ -3,8 +3,8 @@ const require = __bundleRequire(import.meta.url);
3
3
  import {
4
4
  pasteHint,
5
5
  readSecret
6
- } from "./chunk-UCRR7R6Q.js";
7
- import "./chunk-LIF2HXIQ.js";
6
+ } from "./chunk-E75LK7GD.js";
7
+ import "./chunk-LHZ4QBWB.js";
8
8
  import "./chunk-UUBV5ATQ.js";
9
9
  import "./chunk-HE2F4JII.js";
10
10
  import "./chunk-Y5E2WNWB.js";
@@ -8,7 +8,7 @@ import {
8
8
  openRecognizer,
9
9
  openSpeechCutter,
10
10
  toModelRate
11
- } from "./chunk-K55WZ67L.js";
11
+ } from "./chunk-H74CWBSY.js";
12
12
  import "./chunk-UUBV5ATQ.js";
13
13
  import "./chunk-HE2F4JII.js";
14
14
  import "./chunk-Y5E2WNWB.js";