@wirecat/cli-memo 0.131.72 → 0.131.74

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 (162) hide show
  1. package/dist/bin/memo.js +2 -2
  2. package/dist/bundle/{all-profiles-G6S5HOBT.js → all-profiles-LUGN5BHP.js} +9 -9
  3. package/dist/bundle/{anthropic-LA6PXTPQ.js → anthropic-W7JXDZPL.js} +16 -7
  4. package/dist/bundle/{app-server-SESNZIAV.js → app-server-2LQJZC7Z.js} +50 -49
  5. package/dist/bundle/auto-OCCPDCFY.js +89 -0
  6. package/dist/bundle/{bun-PZNVNH4G.js → bun-S3JZIN4S.js} +2 -2
  7. package/dist/bundle/{bun-sqlite-VICDK5FS.js → bun-sqlite-X3WQN3CV.js} +5 -5
  8. package/dist/bundle/{chunk-ZTONSM5X.js → chunk-2EZFUIL4.js} +2 -2
  9. package/dist/bundle/{chunk-FXZ7PQKG.js → chunk-3BEJUJEL.js} +8 -8
  10. package/dist/bundle/{chunk-IRBYZUI7.js → chunk-3OVYPDT6.js} +31 -50
  11. package/dist/bundle/{chunk-IXZWUHSG.js → chunk-4KDORB7C.js} +12 -37
  12. package/dist/bundle/{chunk-V3JOIUVB.js → chunk-4O2MYFYC.js} +4 -4
  13. package/dist/bundle/{chunk-SVVSGUMU.js → chunk-4QGUBKN5.js} +6 -6
  14. package/dist/bundle/{chunk-3LS76TFB.js → chunk-6AOPUQTC.js} +1 -1
  15. package/dist/bundle/chunk-6FTZ53TT.js +18 -0
  16. package/dist/bundle/{chunk-FPWF2XLH.js → chunk-6I4DOBSD.js} +13 -13
  17. package/dist/bundle/{chunk-FENNNSCI.js → chunk-6Q3JHCU7.js} +12 -12
  18. package/dist/bundle/{chunk-XXEHPPNS.js → chunk-AHAW3TOS.js} +1266 -952
  19. package/dist/bundle/{chunk-6B3GQMR6.js → chunk-BDVM5652.js} +1 -1
  20. package/dist/bundle/{chunk-2VETW2QK.js → chunk-BNJ2XK7D.js} +1192 -838
  21. package/dist/bundle/{chunk-II2SXJEO.js → chunk-BR4DCOA5.js} +47 -45
  22. package/dist/bundle/{chunk-FVJSDDSV.js → chunk-C6MWOBEL.js} +26 -22
  23. package/dist/bundle/{chunk-RGIS2DRA.js → chunk-CWWUZK2U.js} +9 -9
  24. package/dist/bundle/{chunk-LIF2HXIQ.js → chunk-E2PSOSTN.js} +2 -2
  25. package/dist/bundle/{chunk-MKOQDN3I.js → chunk-E74VWHZ2.js} +1 -1
  26. package/dist/bundle/{chunk-5XRCF57Z.js → chunk-EML43XLJ.js} +2 -2
  27. package/dist/bundle/{chunk-ASDOPGKC.js → chunk-G45BLLDR.js} +4 -4
  28. package/dist/bundle/{chunk-B7LGXY3S.js → chunk-GPXHGG67.js} +12 -12
  29. package/dist/bundle/chunk-GWNLLQBD.js +177 -0
  30. package/dist/bundle/{chunk-FOPDWCRG.js → chunk-HEYIBJ5I.js} +12 -12
  31. package/dist/bundle/{chunk-PHL53ERQ.js → chunk-IQIM4UC7.js} +10 -10
  32. package/dist/bundle/{chunk-INQAQ55X.js → chunk-JINEHQ2T.js} +4911 -4900
  33. package/dist/bundle/chunk-KA5MDFLU.js +138 -0
  34. package/dist/bundle/{chunk-QUPPO7DB.js → chunk-KDBAY5JZ.js} +1 -1
  35. package/dist/bundle/{chunk-LJCT7YG6.js → chunk-KEBL3PY4.js} +4 -4
  36. package/dist/bundle/{chunk-HIHZNBR7.js → chunk-KUFOM3SB.js} +2 -2
  37. package/dist/bundle/{chunk-PGOMGFXA.js → chunk-KYJBGCTC.js} +2 -2
  38. package/dist/bundle/{chunk-U3P5F57B.js → chunk-LPGE6ACC.js} +2 -2
  39. package/dist/bundle/{chunk-I4HWKPQR.js → chunk-LX3OSTBD.js} +4 -4
  40. package/dist/bundle/{chunk-G3FQTKHT.js → chunk-MPZBV5RL.js} +8 -8
  41. package/dist/bundle/{chunk-K55WZ67L.js → chunk-NR633L2N.js} +4 -4
  42. package/dist/bundle/{chunk-DSU6UR2X.js → chunk-NT5IOEEK.js} +1 -1
  43. package/dist/bundle/{chunk-NRLXWY4Q.js → chunk-OOKMABOJ.js} +1528 -852
  44. package/dist/bundle/{chunk-L62FWN3Y.js → chunk-OYKQX4H3.js} +1 -1
  45. package/dist/bundle/{chunk-A4UQKFGY.js → chunk-P6FPRA3P.js} +59 -35
  46. package/dist/bundle/{chunk-BD7AGXJJ.js → chunk-QCR5WJ7R.js} +53 -48
  47. package/dist/bundle/{chunk-RF6KPQWV.js → chunk-QKWM4VK4.js} +6 -6
  48. package/dist/bundle/chunk-QYJJBE56.js +109 -0
  49. package/dist/bundle/{chunk-MSTWHRLN.js → chunk-SCYHDYLI.js} +3 -1
  50. package/dist/bundle/{chunk-CLQXHFKG.js → chunk-SIOPF2UG.js} +6 -6
  51. package/dist/bundle/{chunk-G7XOBQB5.js → chunk-SIQDO5DN.js} +4 -4
  52. package/dist/bundle/{chunk-ESYCZ575.js → chunk-SJD4KTK2.js} +4 -4
  53. package/dist/bundle/{chunk-KH43CUE2.js → chunk-UIAGASGP.js} +6 -6
  54. package/dist/bundle/{chunk-3ZSPTUG3.js → chunk-UU3OAPGO.js} +7 -7
  55. package/dist/bundle/{chunk-H3LAORYX.js → chunk-V7BDQIZS.js} +2 -2
  56. package/dist/bundle/{chunk-M2DAITNE.js → chunk-VB4OLJHK.js} +3 -3
  57. package/dist/bundle/{chunk-YBL4QKLV.js → chunk-VRL5WRRQ.js} +83 -83
  58. package/dist/bundle/{chunk-HE2F4JII.js → chunk-VYCLOFPC.js} +24 -9
  59. package/dist/bundle/{chunk-UUBV5ATQ.js → chunk-W46O6RJ5.js} +20 -20
  60. package/dist/bundle/{chunk-WT2P44YD.js → chunk-WBCY7WHV.js} +17 -17
  61. package/dist/bundle/{chunk-FDSM2TU6.js → chunk-WFXRR2JT.js} +11 -11
  62. package/dist/bundle/{chunk-2RNNWFU7.js → chunk-WM7MVKGU.js} +24 -24
  63. package/dist/bundle/{chunk-XNX3U6GD.js → chunk-WZHCQ4VZ.js} +8 -8
  64. package/dist/bundle/{chunk-MAGAWAPG.js → chunk-XMHWGHID.js} +4252 -4248
  65. package/dist/bundle/chunk-XPCTY6XV.js +116 -0
  66. package/dist/bundle/{chunk-UCRR7R6Q.js → chunk-XPSXVUZG.js} +3 -3
  67. package/dist/bundle/{chunk-CPUQC7UF.js → chunk-XQ3RZU3J.js} +1 -1
  68. package/dist/bundle/{chunk-6Z62U7NY.js → chunk-XQHOMQNZ.js} +4 -4
  69. package/dist/bundle/{chunk-SL2LXOCN.js → chunk-YB4KGUXY.js} +3 -3
  70. package/dist/bundle/{chunk-STJWETNW.js → chunk-YDTGYYOR.js} +4 -4
  71. package/dist/bundle/{chunk-FHIGY5K6.js → chunk-YLYZNPAZ.js} +2 -2
  72. package/dist/bundle/{chunk-ZM6J47GY.js → chunk-ZL63GL3Y.js} +3 -3
  73. package/dist/bundle/{chunk-SR7C53CS.js → chunk-ZTZLAGZA.js} +3 -3
  74. package/dist/bundle/{chunk-UX52EWLQ.js → chunk-ZXW5FPH2.js} +1 -1
  75. package/dist/bundle/command-contract-QQG343ZQ.js +32 -0
  76. package/dist/bundle/command-server-entry-XVUPTSSH.js +145 -0
  77. package/dist/bundle/{decode-WRWXOJML.js → decode-METZOSMG.js} +5 -5
  78. package/dist/bundle/{dispatch-VJSUBAUM.js → dispatch-PHB2Y6ZL.js} +8 -8
  79. package/dist/bundle/{echarts-MTCNTCST.js → echarts-EBSP4VCK.js} +2 -2
  80. package/dist/bundle/{embed-PPPCHSTE.js → embed-GVVU7N7W.js} +6 -6
  81. package/dist/bundle/{embedder-UJBIX6A2.js → embedder-6BZOYAXV.js} +9 -9
  82. package/dist/bundle/entry-7EYT2OA3.js +21 -0
  83. package/dist/bundle/{failure-GLF7OMMM.js → failure-OBT7CUVW.js} +2 -2
  84. package/dist/bundle/failure-YQJ43YFG.js +69 -0
  85. package/dist/bundle/{first-run-7HAWGQ3B.js → first-run-C7L7IACA.js} +11 -11
  86. package/dist/bundle/first-screen-6T65PQ37.js +30 -0
  87. package/dist/bundle/{instructions-JKIO4JF7.js → instructions-VDKK3Y5Z.js} +1 -1
  88. package/dist/bundle/{mcp-H2WYFBNW.js → mcp-5275YLID.js} +2 -2
  89. package/dist/bundle/mcp-UCDMODSA.js +90 -0
  90. package/dist/bundle/memo.js +16 -16
  91. package/dist/bundle/{node-3AIXDDDR.js → node-HWGZYNUX.js} +2 -2
  92. package/dist/bundle/{node-sqlite-NX722DXD.js → node-sqlite-PSYENWGS.js} +6 -6
  93. package/dist/bundle/{oauth-2NPSI7Q3.js → oauth-TQGMUJK2.js} +7 -7
  94. package/dist/bundle/{open-AFRN6Q36.js → open-KDDJDKCE.js} +5 -5
  95. package/dist/bundle/openai-QPGCUM4T.js +24 -0
  96. package/dist/bundle/{process-J2IBN6X7.js → process-APNTXJJE.js} +1 -1
  97. package/dist/bundle/{program-MRG4ZQQI.js → program-RHPSSKFA.js} +262 -153
  98. package/dist/bundle/{prompt-6XNKR4VQ.js → prompt-BMBZCLGF.js} +5 -5
  99. package/dist/bundle/{recognize-G3GI32QS.js → recognize-3SEY2MAR.js} +4 -4
  100. package/dist/bundle/{remote-DJO255PT.js → remote-ODH54UXO.js} +7 -7
  101. package/dist/bundle/{rerank-5SBZRIHF.js → rerank-JQHBNTUK.js} +7 -7
  102. package/dist/bundle/{serve-BZVBKGU3.js → serve-C22ZONSM.js} +9 -9
  103. package/dist/bundle/server-3TQJ47Q6.js +62 -0
  104. package/dist/bundle/{server-D5BJDKTJ.js → server-FX7RKPL4.js} +71 -67
  105. package/dist/bundle/server-SHHKLBS2.js +48 -0
  106. package/dist/bundle/{state-A57F7T5D.js → state-M3VGXSV4.js} +6 -6
  107. package/dist/bundle/{store-JXD7SGIK.js → store-K45RFKGF.js} +13 -13
  108. package/dist/bundle/store-maintenance-command-EOTKQ3E5.js +47 -0
  109. package/dist/bundle/update-PW77Y4DM.js +72 -0
  110. package/dist/context/context.d.ts.map +1 -1
  111. package/dist/context/context.js +4 -2
  112. package/dist/context/context.js.map +1 -1
  113. package/dist/contract-overrides/search.d.ts.map +1 -1
  114. package/dist/contract-overrides/search.js +15 -3
  115. package/dist/contract-overrides/search.js.map +1 -1
  116. package/dist/digest/backfill.d.ts.map +1 -1
  117. package/dist/digest/backfill.js +7 -7
  118. package/dist/digest/backfill.js.map +1 -1
  119. package/dist/examples.d.ts.map +1 -1
  120. package/dist/examples.js +11 -3
  121. package/dist/examples.js.map +1 -1
  122. package/dist/mcp/server.js +1 -1
  123. package/dist/mcp/server.js.map +1 -1
  124. package/dist/search/answers.d.ts +15 -3
  125. package/dist/search/answers.d.ts.map +1 -1
  126. package/dist/search/answers.js +76 -6
  127. package/dist/search/answers.js.map +1 -1
  128. package/dist/search/command.d.ts.map +1 -1
  129. package/dist/search/command.js +50 -8
  130. package/dist/search/command.js.map +1 -1
  131. package/dist/search/lane-gates.d.ts +4 -3
  132. package/dist/search/lane-gates.d.ts.map +1 -1
  133. package/dist/search/lane-gates.js +13 -7
  134. package/dist/search/lane-gates.js.map +1 -1
  135. package/dist/search/search.d.ts +10 -2
  136. package/dist/search/search.d.ts.map +1 -1
  137. package/dist/search/search.js +18 -5
  138. package/dist/search/search.js.map +1 -1
  139. package/dist/store/group.d.ts +1 -1
  140. package/dist/store/group.d.ts.map +1 -1
  141. package/dist/store/group.js +2 -1
  142. package/dist/store/group.js.map +1 -1
  143. package/dist/version.d.ts +1 -1
  144. package/dist/version.js +1 -1
  145. package/package.json +3 -3
  146. package/skills/cli-memo/SKILL.md +3 -3
  147. package/skills/cli-memo/topics/meetings.md +2 -1
  148. package/skills/cli-memo/topics/search.md +1 -0
  149. package/dist/bundle/auto-WU47LYXJ.js +0 -85
  150. package/dist/bundle/chunk-THPGFRPZ.js +0 -262
  151. package/dist/bundle/command-contract-7QECBB6M.js +0 -32
  152. package/dist/bundle/entry-W6SHKRBE.js +0 -18
  153. package/dist/bundle/failure-NRJ3EPBO.js +0 -65
  154. package/dist/bundle/first-screen-FRRTKWFB.js +0 -30
  155. package/dist/bundle/mcp-OL6ZYF2T.js +0 -90
  156. package/dist/bundle/openai-U5CQFLRU.js +0 -23
  157. package/dist/bundle/server-AEZPZ3ZD.js +0 -48
  158. package/dist/bundle/server-CIT5B2SV.js +0 -61
  159. package/dist/bundle/store-maintenance-command-5DG4SEQA.js +0 -47
  160. package/dist/bundle/update-NI24ED4V.js +0 -68
  161. /package/dist/bundle/{chunk-SYWHHQMC.js → chunk-G5GW3FFJ.js} +0 -0
  162. /package/dist/bundle/{chunk-YSYFOIW7.js → chunk-IXSUVHW6.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-CWWUZK2U.js";
10
10
  import {
11
11
  installer,
12
12
  latest,
13
13
  upgradeCommand
14
- } from "./chunk-FENNNSCI.js";
14
+ } from "./chunk-6Q3JHCU7.js";
15
15
  import {
16
16
  mcpOwnerAllowed,
17
17
  memoLevels,
18
18
  readOnlyAvailability,
19
19
  refuseWritesUnderLock
20
- } from "./chunk-FXZ7PQKG.js";
20
+ } from "./chunk-3BEJUJEL.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-HEYIBJ5I.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-QCR5WJ7R.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-YB4KGUXY.js";
67
+ import "./chunk-4KDORB7C.js";
68
+ import "./chunk-NR633L2N.js";
69
69
  import {
70
70
  errorObject,
71
71
  recognisable
72
- } from "./chunk-B7LGXY3S.js";
72
+ } from "./chunk-GPXHGG67.js";
73
73
  import {
74
74
  AGENT_INPUT_MAX_CHARS,
75
75
  DISCOVERY_DESCRIPTIONS,
@@ -119,32 +119,34 @@ 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-BNJ2XK7D.js";
123
+ import "./chunk-E74VWHZ2.js";
124
+ import "./chunk-KA5MDFLU.js";
125
+ import "./chunk-BDVM5652.js";
125
126
  import {
126
127
  allHitItem,
127
128
  coverageGaps,
128
129
  messageHitItem,
129
130
  noteHitItem,
130
131
  shownOf
131
- } from "./chunk-IRBYZUI7.js";
132
- import "./chunk-FHIGY5K6.js";
132
+ } from "./chunk-3OVYPDT6.js";
133
+ import "./chunk-YLYZNPAZ.js";
133
134
  import {
134
135
  REASONS as REASONS2,
135
136
  SKILL_TARGETS,
136
137
  skillCommand,
137
138
  skillPath,
138
139
  skillVersion
139
- } from "./chunk-FVJSDDSV.js";
140
+ } from "./chunk-C6MWOBEL.js";
141
+ import "./chunk-LX3OSTBD.js";
140
142
  import {
141
143
  recoveryNotes,
142
144
  storeInfo,
143
145
  storeRecoveryCheck,
144
146
  storeRecoveryRun,
145
147
  storeSummary
146
- } from "./chunk-YBL4QKLV.js";
147
- import "./chunk-2RNNWFU7.js";
148
+ } from "./chunk-VRL5WRRQ.js";
149
+ import "./chunk-WM7MVKGU.js";
148
150
  import {
149
151
  LIST_QUERY_GUIDE,
150
152
  RESOURCES_SEARCHED,
@@ -167,6 +169,7 @@ import {
167
169
  gatherStoredProject,
168
170
  groupGuardOf,
169
171
  groupLockOf,
172
+ harderRanking,
170
173
  importEngine,
171
174
  inGroupOf,
172
175
  ingest,
@@ -192,7 +195,6 @@ import {
192
195
  parseProposalIds,
193
196
  personBusiness,
194
197
  personContext,
195
- pickPerson,
196
198
  previewProjectAnnotationSnapshot,
197
199
  projectStatus,
198
200
  proposalRegistry,
@@ -220,73 +222,31 @@ import {
220
222
  timeLimit,
221
223
  typedQuery,
222
224
  withQuery
223
- } from "./chunk-XXEHPPNS.js";
225
+ } from "./chunk-AHAW3TOS.js";
224
226
  import {
225
227
  readBoundedUtf8File,
226
228
  writeFileAtomic
227
- } from "./chunk-FPWF2XLH.js";
229
+ } from "./chunk-6I4DOBSD.js";
230
+ import {
231
+ releaseLock,
232
+ servingProfiles,
233
+ takeLock
234
+ } from "./chunk-ZL63GL3Y.js";
235
+ import "./chunk-ZTZLAGZA.js";
228
236
  import {
229
237
  commandsText,
230
238
  inSection,
231
239
  installHelp
232
- } from "./chunk-XNX3U6GD.js";
240
+ } from "./chunk-WZHCQ4VZ.js";
233
241
  import "./chunk-HTQTIKWP.js";
234
- import "./chunk-ASDOPGKC.js";
235
- import {
236
- Command,
237
- DEFAULT_TEXT_MODEL,
238
- FETCH,
239
- InvalidArgumentError,
240
- LOCAL_READ,
241
- LOCAL_WRITE,
242
- NO_EFFECTS,
243
- Option,
244
- REMOTE_READ,
245
- annotate,
246
- annotateOption,
247
- answerEntity,
248
- assertSharedContracts,
249
- chosenTextModel,
250
- commandWords,
251
- commandsDocument,
252
- customizeSharedCommand,
253
- environmentOf,
254
- flatten,
255
- grantsAuthority,
256
- hasSharedContract,
257
- itemOf,
258
- liftProfile,
259
- metaOf,
260
- outputFor,
261
- overrideSharedContract,
262
- parseDuration,
263
- progressLine,
264
- progressOf,
265
- proposesOnly,
266
- provide,
267
- runGroup,
268
- settingRows,
269
- settingsFor,
270
- snakeKeys,
271
- textModels,
272
- textModelsFile
273
- } from "./chunk-MAGAWAPG.js";
274
- import "./chunk-3ZSPTUG3.js";
275
- import "./chunk-WT2P44YD.js";
242
+ import "./chunk-WBCY7WHV.js";
276
243
  import {
277
244
  isNewer
278
- } from "./chunk-LJCT7YG6.js";
279
- import "./chunk-L62FWN3Y.js";
280
- import "./chunk-6Z62U7NY.js";
281
- import "./chunk-THPGFRPZ.js";
282
- import "./chunk-HIHZNBR7.js";
283
- import "./chunk-I4HWKPQR.js";
284
- import {
285
- releaseLock,
286
- servingProfiles,
287
- takeLock
288
- } from "./chunk-ZM6J47GY.js";
289
- import "./chunk-3LS76TFB.js";
245
+ } from "./chunk-KEBL3PY4.js";
246
+ import "./chunk-OYKQX4H3.js";
247
+ import "./chunk-GWNLLQBD.js";
248
+ import "./chunk-XPSXVUZG.js";
249
+ import "./chunk-E2PSOSTN.js";
290
250
  import {
291
251
  EVIDENCE_FINDINGS_KIND,
292
252
  MAIL_FINDINGS_KIND,
@@ -318,12 +278,79 @@ import {
318
278
  openOf,
319
279
  openStore,
320
280
  parseMergeId,
281
+ pickPerson,
321
282
  plainQuery,
322
283
  quoteKept,
323
284
  refLabel,
324
285
  storedProfilesFor,
325
286
  writesWithOf
326
- } from "./chunk-NRLXWY4Q.js";
287
+ } from "./chunk-OOKMABOJ.js";
288
+ import "./chunk-MPZBV5RL.js";
289
+ import "./chunk-XQ3RZU3J.js";
290
+ import "./chunk-SJD4KTK2.js";
291
+ import "./chunk-SIOPF2UG.js";
292
+ import {
293
+ provideTerminal,
294
+ terminalOf
295
+ } from "./chunk-BPGYTJNB.js";
296
+ import {
297
+ APP,
298
+ REASONS,
299
+ STORE_CLIENT,
300
+ VERSION
301
+ } from "./chunk-EML43XLJ.js";
302
+ import "./chunk-NT5IOEEK.js";
303
+ import "./chunk-D72URWJE.js";
304
+ import "./chunk-XPCTY6XV.js";
305
+ import "./chunk-6FTZ53TT.js";
306
+ import "./chunk-QYJJBE56.js";
307
+ import "./chunk-UIAGASGP.js";
308
+ import "./chunk-SCYHDYLI.js";
309
+ import "./chunk-G45BLLDR.js";
310
+ import {
311
+ Command,
312
+ DEFAULT_TEXT_MODEL,
313
+ FETCH,
314
+ InvalidArgumentError,
315
+ LOCAL_READ,
316
+ LOCAL_WRITE,
317
+ NO_EFFECTS,
318
+ Option,
319
+ REMOTE_READ,
320
+ annotate,
321
+ annotateOption,
322
+ answerEntity,
323
+ assertSharedContracts,
324
+ chosenTextModel,
325
+ commandWords,
326
+ commandsDocument,
327
+ customizeSharedCommand,
328
+ environmentOf,
329
+ flatten,
330
+ grantsAuthority,
331
+ hasSharedContract,
332
+ itemOf,
333
+ levelFor,
334
+ liftProfile,
335
+ metaOf,
336
+ outputFor,
337
+ overrideSharedContract,
338
+ parseDuration,
339
+ progressLine,
340
+ progressOf,
341
+ proposesOnly,
342
+ provide,
343
+ runGroup,
344
+ settingRows,
345
+ settingsFor,
346
+ snakeKeys,
347
+ textModels,
348
+ textModelsFile
349
+ } from "./chunk-XMHWGHID.js";
350
+ import "./chunk-UU3OAPGO.js";
351
+ import "./chunk-6AOPUQTC.js";
352
+ import "./chunk-XQHOMQNZ.js";
353
+ import "./chunk-KUFOM3SB.js";
327
354
  import {
328
355
  CATALOG_KINDS,
329
356
  CATEGORIES,
@@ -396,36 +423,16 @@ import {
396
423
  timezoneOf,
397
424
  validateQuery,
398
425
  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";
426
+ } from "./chunk-JINEHQ2T.js";
427
+ import "./chunk-VB4OLJHK.js";
428
+ import "./chunk-4QGUBKN5.js";
408
429
  import {
409
430
  sharedModelsDirectory
410
- } from "./chunk-G7XOBQB5.js";
431
+ } from "./chunk-SIQDO5DN.js";
411
432
  import {
412
433
  storePath
413
- } from "./chunk-U3P5F57B.js";
414
- import {
415
- provideTerminal,
416
- terminalOf
417
- } from "./chunk-BPGYTJNB.js";
418
- import {
419
- APP,
420
- REASONS,
421
- STORE_CLIENT,
422
- VERSION
423
- } from "./chunk-5XRCF57Z.js";
424
- import "./chunk-DSU6UR2X.js";
425
- import "./chunk-SYWHHQMC.js";
426
- import "./chunk-D72URWJE.js";
427
- import "./chunk-KH43CUE2.js";
428
- import "./chunk-MSTWHRLN.js";
434
+ } from "./chunk-LPGE6ACC.js";
435
+ import "./chunk-G5GW3FFJ.js";
429
436
  import {
430
437
  Credentials,
431
438
  configFilePath,
@@ -438,7 +445,7 @@ import {
438
445
  projectFields,
439
446
  readBatchInput,
440
447
  resolvePaths
441
- } from "./chunk-UUBV5ATQ.js";
448
+ } from "./chunk-W46O6RJ5.js";
442
449
  import {
443
450
  MAX_NEXT_STEPS,
444
451
  array,
@@ -460,14 +467,13 @@ import {
460
467
  trim,
461
468
  union,
462
469
  unknown
463
- } from "./chunk-HE2F4JII.js";
470
+ } from "./chunk-VYCLOFPC.js";
464
471
  import "./chunk-Y5E2WNWB.js";
465
472
  import {
466
473
  CliError,
467
474
  errorCodes,
468
475
  isCliError
469
- } from "./chunk-ZTONSM5X.js";
470
- import "./chunk-CPUQC7UF.js";
476
+ } from "./chunk-2EZFUIL4.js";
471
477
  import {
472
478
  __name
473
479
  } from "./chunk-ZVVMGPBJ.js";
@@ -584,13 +590,14 @@ var accountsByKind = /* @__PURE__ */ __name((scope, imports = []) => {
584
590
  notes: [MEMO_ACCOUNT],
585
591
  events: [],
586
592
  crm: [],
587
- business: [OWN_BUSINESS, ...imports.filter(scope.has)]
593
+ business: [OWN_BUSINESS, ...imports.filter(scope.has)],
594
+ meetings: []
588
595
  };
589
596
  for (const key of scope.accounts) {
590
597
  const kind = kindIn(key.provider);
591
598
  if (kind === "documents")
592
599
  kinds2.notes.push(key);
593
- else if (kind !== void 0 && kind !== "meetings" && kind in kinds2)
600
+ else if (kind !== void 0 && kind in kinds2)
594
601
  kinds2[kind].push(key);
595
602
  }
596
603
  return kinds2;
@@ -846,7 +853,7 @@ var readScope = /* @__PURE__ */ __name((command, help = ONE_ACCOUNT_HELP) => sou
846
853
  var writeScope = /* @__PURE__ */ __name((command, help) => writeOptions(command, help).option("--json", "print JSON; --json=id,title keeps only those fields"), "writeScope");
847
854
  var jsonOption = /* @__PURE__ */ __name((command, fields = "ref,title") => command.option("--json", `print JSON; --json=${fields} keeps only those fields`), "jsonOption");
848
855
 
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
856
+ // node_modules/.pnpm/@wirecat+cli-core@0.624.0_@wirecat+cli-base@0.95.0_commander@15.0.0_esbuild@0.28.2_type_845871b12d72ec55150c07203d8cbfbb/node_modules/@wirecat/cli-core/dist/mail/sender-scores.js
850
857
  var SCORED = "mail_sender_scores";
851
858
  var DAY = 864e5;
852
859
  var RECENT = 2 * 365 * DAY;
@@ -862,7 +869,7 @@ var demotedSenders = /* @__PURE__ */ __name(async (store) => {
862
869
  return senders;
863
870
  }, "demotedSenders");
864
871
 
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
872
+ // node_modules/.pnpm/@wirecat+cli-core@0.624.0_@wirecat+cli-base@0.95.0_commander@15.0.0_esbuild@0.28.2_type_845871b12d72ec55150c07203d8cbfbb/node_modules/@wirecat/cli-core/dist/mail/sync.js
866
873
  var DAY2 = 864e5;
867
874
  var EDGE = 2 * DAY2;
868
875
 
@@ -1983,14 +1990,15 @@ var groupScoped = /* @__PURE__ */ __name(async (store, env, only) => {
1983
1990
  const scope = await groupScopeOf(store, env);
1984
1991
  if (scope === void 0)
1985
1992
  return void 0;
1986
- const kinds2 = accountsByKind(scope, await store.business.accounts());
1993
+ const byKind = accountsByKind(scope, await store.business.accounts());
1994
+ const kinds2 = /* @__PURE__ */ __name((kind) => byKind[kind] ?? [], "kinds");
1987
1995
  const wanted = only ?? RESOURCES_SEARCHED;
1988
- const kept = wanted.filter((kind) => kinds2[kind].length > 0);
1996
+ const kept = wanted.filter((kind) => kinds2(kind).length > 0);
1989
1997
  if (kept.length === 0)
1990
1998
  throw new CliError("validation_error", `group ${scope.run.name} holds no account of ${wanted.join(", ")}`);
1991
1999
  return {
1992
2000
  only: kept,
1993
- scope: Object.fromEntries(kept.map((kind) => [kind, kinds2[kind]])),
2001
+ scope: Object.fromEntries(kept.map((kind) => [kind, kinds2(kind)])),
1994
2002
  skipped: wanted.filter((kind) => !kept.includes(kind)).map((resource) => ({
1995
2003
  resource,
1996
2004
  code: "not_found",
@@ -1998,10 +2006,11 @@ var groupScoped = /* @__PURE__ */ __name(async (store, env, only) => {
1998
2006
  }))
1999
2007
  };
2000
2008
  }, "groupScoped");
2001
- var searchEverywhere = /* @__PURE__ */ __name(async (store, env, { text: text3, limit, only, crmKinds, exact, timezone, plainOrder, shows }) => {
2009
+ var searchEverywhere = /* @__PURE__ */ __name(async (store, env, { text: text3, limit, only, crmKinds, source, exact, timezone, plainOrder, shows, harder }) => {
2002
2010
  const accounts = await scopedAccounts(store, env);
2003
2011
  const group = await groupScoped(store, env, only);
2004
2012
  const messenger2 = { app: { ...APP, command: "tg" }, hintCommand: "memo" };
2013
+ const harderSkipped = harder && shows !== void 0 ? "a permission hides some kinds here, so no hit was sent to the model" : void 0;
2005
2014
  const ask = /* @__PURE__ */ __name((offset) => searchAll(store, MEMO, {
2006
2015
  text: text3,
2007
2016
  limit,
@@ -2009,8 +2018,13 @@ var searchEverywhere = /* @__PURE__ */ __name(async (store, env, { text: text3,
2009
2018
  ...offset === void 0 ? {} : { offset },
2010
2019
  ...group === void 0 ? only === void 0 ? {} : { only } : { only: group.only, scope: group.scope },
2011
2020
  ...crmKinds === void 0 ? {} : { crmKinds },
2021
+ ...source === void 0 ? {} : { source },
2022
+ // memo is the owner's own view of every account, personal and work alike.
2023
+ meetingScopes: ["personal", "work"],
2024
+ ...only?.includes("meetings") ? { meetingsAsked: true } : {},
2012
2025
  ...exact ? { exact: true } : {},
2013
- ...timezone === void 0 ? {} : { timezone }
2026
+ ...timezone === void 0 ? {} : { timezone },
2027
+ ...harder && harderSkipped === void 0 ? { harder: { app: APP } } : {}
2014
2028
  }, messenger2, (query) => searchStore(store, MEMO, query, messenger2), meaningLane({ env, store: /* @__PURE__ */ __name(async () => store, "store"), messenger: { app: { command: "memo" } } })), "ask");
2015
2029
  const searched = shows === void 0 ? await ask() : await allowedPage(ask, limit, shows);
2016
2030
  const found = group === void 0 ? searched : { ...searched, skipped: [...group.skipped, ...searched.skipped] };
@@ -2027,7 +2041,8 @@ var searchEverywhere = /* @__PURE__ */ __name(async (store, env, { text: text3,
2027
2041
  ...found,
2028
2042
  items: lowerSuspicious(found.items, (item) => suspicious.has(item.ref)),
2029
2043
  tasks: tasks.slice(0, limit),
2030
- tasksIncomplete: tasksIncomplete || tasks.length > limit
2044
+ tasksIncomplete: tasksIncomplete || tasks.length > limit,
2045
+ ...harderSkipped === void 0 ? {} : { harderSkipped }
2031
2046
  };
2032
2047
  }, "searchEverywhere");
2033
2048
  var suspiciousRefs = /* @__PURE__ */ __name(async (store, items) => {
@@ -2292,7 +2307,7 @@ import { createHash } from "node:crypto";
2292
2307
  import { existsSync, readFileSync as readFileSync2, statSync } from "node:fs";
2293
2308
  import { basename, extname, relative, sep } from "node:path";
2294
2309
 
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
2310
+ // node_modules/.pnpm/@wirecat+cli-core@0.624.0_@wirecat+cli-base@0.95.0_commander@15.0.0_esbuild@0.28.2_type_845871b12d72ec55150c07203d8cbfbb/node_modules/@wirecat/cli-core/dist/services/documents/extraction.js
2296
2311
  var Proposal = object({
2297
2312
  kind: picklist(["summary", "digest", "fact", "preference"]),
2298
2313
  body: pipe(string(), trim(), minLength(1), maxLength(15e3)),
@@ -2300,13 +2315,13 @@ var Proposal = object({
2300
2315
  });
2301
2316
  var Proposals = object({ items: pipe(array(Proposal), maxLength(20)) });
2302
2317
 
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
2318
+ // node_modules/.pnpm/@wirecat+cli-core@0.624.0_@wirecat+cli-base@0.95.0_commander@15.0.0_esbuild@0.28.2_type_845871b12d72ec55150c07203d8cbfbb/node_modules/@wirecat/cli-core/dist/services/documents/mirrors.js
2304
2319
  var ID = pipe(string(), regex(/^[A-Za-z0-9_-]{1,200}$/));
2305
2320
 
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
2321
+ // node_modules/.pnpm/@wirecat+cli-core@0.624.0_@wirecat+cli-base@0.95.0_commander@15.0.0_esbuild@0.28.2_type_845871b12d72ec55150c07203d8cbfbb/node_modules/@wirecat/cli-core/dist/services/documents/sync.js
2307
2322
  var MAX_PICTURE_BYTES = 25 * 1024 * 1024;
2308
2323
 
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
2324
+ // node_modules/.pnpm/@wirecat+cli-core@0.624.0_@wirecat+cli-base@0.95.0_commander@15.0.0_esbuild@0.28.2_type_845871b12d72ec55150c07203d8cbfbb/node_modules/@wirecat/cli-core/dist/fetch/addresses.js
2310
2325
  import { isIP } from "node:net";
2311
2326
  var within3 = /* @__PURE__ */ __name((address, [prefix, bits]) => {
2312
2327
  for (let bit = 0; bit < bits; bit++) {
@@ -2377,7 +2392,7 @@ var isPublicAddress = /* @__PURE__ */ __name((address) => {
2377
2392
  return within3(bytes, [[32], 3]) && !V6_PRIVATE.some((prefix) => within3(bytes, prefix));
2378
2393
  }, "isPublicAddress");
2379
2394
 
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
2395
+ // node_modules/.pnpm/@wirecat+cli-core@0.624.0_@wirecat+cli-base@0.95.0_commander@15.0.0_esbuild@0.28.2_type_845871b12d72ec55150c07203d8cbfbb/node_modules/@wirecat/cli-core/dist/fetch/page.js
2381
2396
  import { lookup as dnsLookup } from "node:dns/promises";
2382
2397
  import { request as httpRequest } from "node:http";
2383
2398
  import { request as httpsRequest } from "node:https";
@@ -3135,12 +3150,13 @@ var withNotesAndTasks = /* @__PURE__ */ __name(async (store, env, { messages, ev
3135
3150
  notRead.push({ source: "events", reason: "no calendar in the store \u2014 gcal <profile> sync" });
3136
3151
  const tasks = await personTasks(store, messages.person, accounts, limit);
3137
3152
  const incoming = await store.notes.links({ to: person });
3138
- const relationships = (await store.knowledge.listRelations({
3153
+ const listed2 = await store.knowledge.listRelations({
3139
3154
  about: person,
3140
3155
  ...scope === void 0 ? {} : { accounts: scope },
3141
3156
  ...deniedKinds.length ? { deniedKinds: [...deniedKinds] } : {},
3142
3157
  limit: 500
3143
- })).items.filter((one2) => isUsable(one2.standing));
3158
+ });
3159
+ const relationships = listed2.items.filter((one2) => isUsable(one2.standing) && !(one2.provenance && SOURCE_REPORTS.has(one2.provenance)));
3144
3160
  const files = await reportedFiles(store, incoming, limit);
3145
3161
  const { subject: _, name: __, ...notes2 } = linked2;
3146
3162
  return {
@@ -4170,14 +4186,14 @@ var search = [
4170
4186
  command: ["search", "all"],
4171
4187
  field: "summary",
4172
4188
  before: "search stored messages, notes, calendar events and selected meeting transcripts",
4173
- after: "messages, mail, notes, events and deals ranked together",
4189
+ after: "messages, mail, notes, events, deals and meetings ranked together",
4174
4190
  reason: "Memo searches imported accounts, mail and native notes without a live messenger; its scope, ranking and output controls are explicit provider differences."
4175
4191
  },
4176
4192
  {
4177
4193
  command: ["search", "all"],
4178
4194
  field: "description",
4179
4195
  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",
4196
+ 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
4197
  reason: "Memo searches imported accounts, mail and native notes without a live messenger; its scope, ranking and output controls are explicit provider differences."
4182
4198
  },
4183
4199
  {
@@ -4296,7 +4312,13 @@ var search = [
4296
4312
  },
4297
4313
  {
4298
4314
  flags: "--only <resources>",
4299
- description: "messages,mail,notes,events,crm,business, separated by commas",
4315
+ description: "messages,mail,notes,events,crm,business,meetings, separated by commas",
4316
+ takes_value: true,
4317
+ mandatory: false
4318
+ },
4319
+ {
4320
+ flags: "--source <accounts>",
4321
+ 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
4322
  takes_value: true,
4301
4323
  mandatory: false
4302
4324
  },
@@ -4306,6 +4328,12 @@ var search = [
4306
4328
  takes_value: false,
4307
4329
  mandatory: false
4308
4330
  },
4331
+ {
4332
+ flags: "--harder",
4333
+ description: "a hosted model reorders the first 30 hits; sends the question and those hits to the provider you chose with memo models search-consents set <provider> --yes, only after that",
4334
+ takes_value: false,
4335
+ mandatory: false
4336
+ },
4309
4337
  {
4310
4338
  flags: "--project <project>",
4311
4339
  description: "rank the key documents of this project (id, project:<id>, key, exact name or alias) first; nothing is left out",
@@ -5480,11 +5508,11 @@ var digestCommand = /* @__PURE__ */ __name((program, streams, env) => {
5480
5508
  const { print } = answers(program, streams, env);
5481
5509
  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
5510
  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");
5511
+ 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) => {
5512
+ const from = dateOf(given2.sinceTime, "--since-time");
5513
+ const to = dateOf(given2.untilTime, "--until-time");
5486
5514
  if (from > to)
5487
- throw new CliError("validation_error", "--from is after --to", { param: "--from" });
5515
+ throw new CliError("validation_error", "--since-time is after --until-time", { param: "--since-time" });
5488
5516
  const { state, schedule } = digestSchedule(env);
5489
5517
  if (!schedule)
5490
5518
  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 +5525,8 @@ var digestCommand = /* @__PURE__ */ __name((program, streams, env) => {
5497
5525
  });
5498
5526
  const all = daysOf(from, to, when.daily);
5499
5527
  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"
5528
+ throw new CliError("validation_error", `the ${given2.untilTime} digest's time has not come yet; --until-time an earlier day`, {
5529
+ param: "--until-time"
5502
5530
  });
5503
5531
  const runs = join7(file, "..", "runs");
5504
5532
  const done = new Set((existsSync7(runs) ? readdirSync4(runs) : []).filter((name2) => name2.endsWith(".report.json")).map((name2) => localDate(runTime(name2))));
@@ -5803,7 +5831,7 @@ var doctorCommand = /* @__PURE__ */ __name((...args) => {
5803
5831
  }, SHELL_OVERRIDES.doctor);
5804
5832
  }, "doctorCommand");
5805
5833
 
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
5834
+ // node_modules/.pnpm/@wirecat+cli-core@0.624.0_@wirecat+cli-base@0.95.0_commander@15.0.0_esbuild@0.28.2_type_845871b12d72ec55150c07203d8cbfbb/node_modules/@wirecat/cli-core/dist/calendar/sync.js
5807
5835
  var DAY6 = 864e5;
5808
5836
  var SLOTS_EVERY = 7 * DAY6;
5809
5837
  var isWindow = /* @__PURE__ */ __name((value) => typeof value?.from === "number" && typeof value.to === "number", "isWindow");
@@ -5883,10 +5911,10 @@ var calendarStatus = /* @__PURE__ */ __name(async (store, accountId, { profile,
5883
5911
  return { items, page: 1, limit: Math.max(1, items.length), hasMore: false };
5884
5912
  }, "calendarStatus");
5885
5913
 
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
5914
+ // node_modules/.pnpm/@wirecat+cli-core@0.624.0_@wirecat+cli-base@0.95.0_commander@15.0.0_esbuild@0.28.2_type_845871b12d72ec55150c07203d8cbfbb/node_modules/@wirecat/cli-core/dist/calendar/feeds.js
5887
5915
  var FEED_LIMITS = { maxBytes: 10 * 1024 * 1024, timeoutMs: 3e4, redirects: 5 };
5888
5916
 
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
5917
+ // node_modules/.pnpm/@wirecat+cli-core@0.624.0_@wirecat+cli-base@0.95.0_commander@15.0.0_esbuild@0.28.2_type_845871b12d72ec55150c07203d8cbfbb/node_modules/@wirecat/cli-core/dist/calendar/reads.js
5890
5918
  var LIST = "events list";
5891
5919
  var EVENT_TYPES = [
5892
5920
  "default",
@@ -5963,7 +5991,7 @@ var accountsMeta = /* @__PURE__ */ __name(async (store, accounts, skipped, now)
5963
5991
  };
5964
5992
  }, "accountsMeta");
5965
5993
 
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
5994
+ // node_modules/.pnpm/@wirecat+cli-core@0.624.0_@wirecat+cli-base@0.95.0_commander@15.0.0_esbuild@0.28.2_type_845871b12d72ec55150c07203d8cbfbb/node_modules/@wirecat/cli-core/dist/calendar/writer.js
5967
5995
  var EVENTS_NOTIFY_KEY = "events.notify";
5968
5996
  var EVENTS_DELETE_SERIES_KEY = "events.delete.series";
5969
5997
  var EVENTS_REMIND_HOOK_KEY = "events.remind.hook";
@@ -6291,6 +6319,12 @@ var EXAMPLES = {
6291
6319
  "memo models consents set openai --model gpt-4o-mini --yes"
6292
6320
  ],
6293
6321
  "models consents revoke": ["memo models consents revoke"],
6322
+ "models search-consents show": ["memo models search-consents show --json"],
6323
+ "models search-consents set": [
6324
+ "memo models search-consents set anthropic",
6325
+ "memo models search-consents set anthropic --yes"
6326
+ ],
6327
+ "models search-consents revoke": ["memo models search-consents revoke"],
6294
6328
  "models keys set": ["memo models keys set openai", "memo models keys set anthropic"],
6295
6329
  "models keys remove": ["memo models keys remove openai"],
6296
6330
  "models add": [
@@ -6641,8 +6675,8 @@ var EXAMPLES = {
6641
6675
  "schedule list": ["memo schedule list", "memo schedule list kind:agent --json"],
6642
6676
  "schedule run": ["memo schedule run digest"],
6643
6677
  "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"
6678
+ "memo digest backfill --since-time 2026-11-01 --until-time 2026-11-07",
6679
+ "memo digest backfill --since-time 2026-11-01 --until-time 2026-11-07 --yes --json"
6646
6680
  ],
6647
6681
  "digest brief show": ["memo digest brief show", "memo digest brief show --json"],
6648
6682
  "digest brief edit": [
@@ -6651,6 +6685,8 @@ var EXAMPLES = {
6651
6685
  "memo digest brief edit --undo"
6652
6686
  ],
6653
6687
  "digest brief reset": ["memo digest brief reset"],
6688
+ "schedule pause": ["memo schedule pause digest"],
6689
+ "schedule resume": ["memo schedule resume digest"],
6654
6690
  "schedule remove": ["memo schedule remove digest"],
6655
6691
  "schedule exec": ["memo schedule exec ~/.local/state/cli-memo/schedules/digest/schedule.json"],
6656
6692
  "templates list": ["memo templates list", "memo templates list channel:telegram source:stored --json"],
@@ -6676,8 +6712,8 @@ var EXAMPLES = {
6676
6712
  "mcp server stop": ["memo mcp server stop"],
6677
6713
  "search all": [
6678
6714
  "memo search all 'budget harbour'",
6679
- "memo search all 'content:invoice' --only mail,notes --json",
6680
- "memo search all 'Rental agreement' --only business"
6715
+ "memo search all 'Rental agreement' --only business",
6716
+ "memo search all 'release date' --source zoom:work,notes --json"
6681
6717
  ],
6682
6718
  "search messages": ["memo search messages 'friday meeting has:voice'"],
6683
6719
  "search mail": ["memo search mail 'mailbox:important budget' --source email:me@example.com"],
@@ -10224,10 +10260,10 @@ var mcpCommandDefinition = /* @__PURE__ */ __name((program, streams, env, create
10224
10260
  }).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
10261
  if (!options.http && (options.port !== void 0 || options.publicUrl !== void 0))
10226
10262
  throw new CliError("validation_error", "--port and --public-url require --http");
10227
- const { createMemoServer } = await import("./server-D5BJDKTJ.js");
10263
+ const { createMemoServer } = await import("./server-FX7RKPL4.js");
10228
10264
  const build = /* @__PURE__ */ __name(() => createMemoServer(env, createProgram2, options.permission), "build");
10229
10265
  if (options.http) {
10230
- const { httpLockFile, mcpUrlOf, portOf, publicUrlOf, serveOverHttp } = await import("./mcp-OL6ZYF2T.js");
10266
+ const { httpLockFile, mcpUrlOf, portOf, publicUrlOf, serveOverHttp } = await import("./mcp-UCDMODSA.js");
10231
10267
  const publicUrl = publicUrlOf(options.publicUrl, {
10232
10268
  missing: "--http",
10233
10269
  reaches: "the browser apps reach memo",
@@ -10279,7 +10315,7 @@ var mcpCommandDefinition = /* @__PURE__ */ __name((program, streams, env, create
10279
10315
  });
10280
10316
  });
10281
10317
  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");
10318
+ const { revokeAll } = await import("./mcp-UCDMODSA.js");
10283
10319
  revokeAll(httpTokenFile(env));
10284
10320
  out.print(this.opts().json, itemAnswer({ revoked: true }));
10285
10321
  });
@@ -12261,26 +12297,66 @@ var TASKS_OF_HIT = {
12261
12297
  ],
12262
12298
  why: "{count} open tasks point at this result"
12263
12299
  };
12264
- var allAnswer = /* @__PURE__ */ __name((found, limit, exact = false) => {
12300
+ var MEETING_PASSAGE = {
12301
+ id: "hit.passage",
12302
+ kind: "command",
12303
+ command: "meetings passage",
12304
+ args: [
12305
+ { name: "reference", required: true },
12306
+ { name: "source", required: true }
12307
+ ],
12308
+ why: "read the lines around this meeting hit before citing it"
12309
+ };
12310
+ var MEETINGS_INDEX = {
12311
+ id: "meetings.index",
12312
+ kind: "command",
12313
+ command: "search meetings",
12314
+ args: [
12315
+ { name: "query", required: true },
12316
+ { name: "source", required: true }
12317
+ ],
12318
+ why: "builds {source}'s meeting search index, then finds what search all could not yet"
12319
+ };
12320
+ var pendingMeetings = /* @__PURE__ */ __name((found) => (found.meetings ?? []).filter(({ indexing }) => indexing === "pending"), "pendingMeetings");
12321
+ var meetingsMissed = /* @__PURE__ */ __name((found) => [
12322
+ ...pendingMeetings(found).map(({ provider, account: account2 }) => ({
12323
+ field: "items",
12324
+ why: `${provider}:${account2}: meetings saved since its search index was last built are not found yet`,
12325
+ step: MEETINGS_INDEX.id
12326
+ })),
12327
+ // A kind `--source` named no account of was left out on purpose: `meta.issues` lists it, `missing` does not.
12328
+ ...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}` }))
12329
+ ], "meetingsMissed");
12330
+ var harderNote = /* @__PURE__ */ __name((found) => found.harderSkipped !== void 0 ? `not reordered by the model: ${found.harderSkipped}` : found.harder === void 0 ? void 0 : found.harder.applied ? `reordered by ${found.harder.provider} ${found.harder.model} (${found.harder.sent} hits sent, ${found.harder.cost_usd === null ? "cost unknown" : `$${found.harder.cost_usd}`}, ${found.harder.ms} ms)` : `not reordered by the model: ${found.harder.reason}`, "harderNote");
12331
+ var allAnswer = /* @__PURE__ */ __name((found, limit, exact = false, leftOut = []) => {
12265
12332
  const archive = coverageGaps({ coverage: found.coverage }, found.items.length);
12266
12333
  const next = found.items.flatMap((item) => {
12334
+ const passage = item.kind === "meeting" && item.cueRef !== void 0 ? [stepOf(MEETING_PASSAGE, { args: { reference: item.cueRef, source: `${item.provider}:${item.account}` } })] : [];
12267
12335
  const tasks = found.tasks.filter((task) => task.source === item.ref);
12268
12336
  const held = tasks[0]?.heldBy;
12269
12337
  if (held === void 0)
12270
- return [];
12338
+ return passage;
12271
12339
  return [
12272
12340
  stepOf(TASKS_OF_HIT, {
12273
12341
  args: { query: `source:"${item.ref}"`, source: `${held.provider}:${held.account}` },
12274
12342
  values: { count: tasks.length }
12275
- })
12343
+ }),
12344
+ ...passage
12276
12345
  ];
12277
12346
  });
12347
+ const indexing = pendingMeetings(found).map(({ provider, account: account2 }) => stepOf(MEETINGS_INDEX, {
12348
+ args: { query: found.query, source: `${provider}:${account2}` },
12349
+ values: { source: `${provider}:${account2}` }
12350
+ }));
12351
+ const steps = [...archive.next, ...indexing, ...next].slice(0, MAX_NEXT_STEPS);
12278
12352
  return listAnswer("search all", {
12279
12353
  items: found.items.map(allHitItem),
12280
12354
  limit,
12281
12355
  has_more: found.hasMore,
12282
- ...next.length + archive.next.length ? { next: [...next.slice(0, 2), ...archive.next] } : {},
12356
+ ...steps.length ? { next: steps } : {},
12283
12357
  missing: [
12358
+ ...meetingsMissed(found),
12359
+ ...leftOut.map(({ why }) => ({ field: "items", why })),
12284
12360
  ...archive.missing,
12285
12361
  ...meaningMissed(found.notes?.meaningSkipped, exact),
12286
12362
  ...messagesMeaningMissed(found.messages?.meaningSkipped),
@@ -12290,9 +12366,13 @@ var allAnswer = /* @__PURE__ */ __name((found, limit, exact = false) => {
12290
12366
  field: "items",
12291
12367
  why: `every word must be in one record, and nothing in ${found.searched.join(", ")} holds ${found.unmatched.map((word) => `"${word}"`).join(", ")}`
12292
12368
  }
12293
- ] : []
12369
+ ] : [],
12370
+ ...found.harder && !found.harder.applied || found.harderSkipped !== void 0 ? [{ field: "order", why: harderNote(found) }] : []
12294
12371
  ],
12295
- meta: metaOf2(found.accounts, found.skipped, archive.missing.length > 0)
12372
+ meta: {
12373
+ ...metaOf2(found.accounts, found.skipped, archive.missing.length > 0),
12374
+ ...found.harder ? { ranking: harderRanking(found.harder) } : {}
12375
+ }
12296
12376
  });
12297
12377
  }, "allAnswer");
12298
12378
  var kindAnswer = /* @__PURE__ */ __name((kind, found, limit, level, query = "") => {
@@ -12399,13 +12479,24 @@ var groupMessengers = /* @__PURE__ */ __name(async (store, env, text3) => {
12399
12479
  throw new CliError("not_found", `group ${scope.run.name} holds no messenger account`);
12400
12480
  return messages;
12401
12481
  }, "groupMessengers");
12402
- var ONLY = ["messages", "mail", "notes", "events", "crm", "business"];
12482
+ var ONLY = RESOURCES_SEARCHED;
12403
12483
  var onlyOf2 = /* @__PURE__ */ __name((value) => {
12404
12484
  const selected = value.split(",").map((part) => part.trim());
12405
12485
  if (!selected.length || selected.some((part) => !ONLY.includes(part)))
12406
12486
  throw new InvalidArgumentError(`choose ${ONLY.join(",")}, separated by commas`);
12407
12487
  return [...new Set(selected)];
12408
12488
  }, "onlyOf");
12489
+ var MEETING_KEYS = ["search.meetings", "meetings.passage"];
12490
+ var READS2 = /* @__PURE__ */ new Set(["allow", "readonly"]);
12491
+ var meetingsDenied = /* @__PURE__ */ __name((command, env) => {
12492
+ const levels = memoLevels(env, environmentOf(command).agent?.overrides ?? []);
12493
+ for (const key of MEETING_KEYS) {
12494
+ const { level } = levelFor(levels, key);
12495
+ if (!READS2.has(level))
12496
+ return { why: `meetings left out: the permissions set ${key} to ${level}` };
12497
+ }
12498
+ return void 0;
12499
+ }, "meetingsDenied");
12409
12500
  var levelOf = /* @__PURE__ */ __name(({ brief, full }) => {
12410
12501
  if (brief && full)
12411
12502
  throw new CliError("validation_error", "--brief and --full ask for opposite things \u2014 pick one");
@@ -12422,13 +12513,22 @@ var searchCommandDefinition = /* @__PURE__ */ __name((program, streams, env) =>
12422
12513
  throw new InvalidArgumentError("at most 100");
12423
12514
  return limit;
12424
12515
  }, 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", `
12516
+ 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("--harder", "a hosted model reorders the first 30 hits; sends the question and those hits to the provider you chose with memo models search-consents set <provider> --yes, only after that").option("--project <project>", PROJECT_ORDER_HELP).addHelpText("after", `
12426
12517
  content: narrows a search to the text of files, transcript: to voice transcripts, filename: to file names \u2014 memo search all 'content:invoice'.
12427
12518
  Calendar events come from every calendar gcal stored; an event's title, description and place are written by whoever sent the invitation.
12428
12519
  crm finds deals and leads by the words of their title only.
12429
12520
  business finds invoices, payments, orders, contracts, subscriptions, products and wallets by the words of their numbers and names.
12430
12521
  --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);
12522
+ const denied = meetingsDenied(command, env);
12523
+ const asked = options.only ?? [...RESOURCES_SEARCHED];
12524
+ const wanted = denied ? asked.filter((one2) => one2 !== "meetings") : options.only;
12525
+ if (wanted?.length === 0)
12526
+ throw new CliError("permission_error", `search all has nothing it may read: ${denied?.why}`, {
12527
+ reason: "search.all-denied"
12528
+ });
12529
+ const leftOut = denied ? [denied] : [];
12530
+ const owner = await whoRuns(command, env, { question: "search all" }) === "owner";
12531
+ const gate = lanesFor(command, wanted, owner ? [] : deniedCrm(command, env));
12432
12532
  const answer = await withStore(env, async (store) => {
12433
12533
  const found = await searchEverywhere(store, env, {
12434
12534
  text: words.join(" "),
@@ -12436,8 +12536,10 @@ business finds invoices, payments, orders, contracts, subscriptions, products an
12436
12536
  ...gate.only === void 0 ? {} : { only: gate.only },
12437
12537
  ...gate.shows === void 0 ? {} : { shows: gate.shows },
12438
12538
  ...gate.crmKinds === void 0 ? {} : { crmKinds: gate.crmKinds },
12539
+ ...options.source === void 0 ? {} : { source: options.source },
12439
12540
  ...options.exact ? { exact: true } : {},
12440
12541
  ...options.plainOrder ? { plainOrder: true } : {},
12542
+ ...options.harder ? { harder: true } : {},
12441
12543
  ...options.timezone === void 0 ? {} : { timezone: options.timezone }
12442
12544
  });
12443
12545
  return {
@@ -12447,6 +12549,9 @@ business finds invoices, payments, orders, contracts, subscriptions, products an
12447
12549
  };
12448
12550
  });
12449
12551
  if (!options.json) {
12552
+ for (const { why } of leftOut)
12553
+ streams.diagnostic(`${why}
12554
+ `);
12450
12555
  streams.diagnostic(`searched: ${answer.accounts.map(({ provider, account: account2 }) => `${provider}:${account2}`).join(", ") || "nothing"}
12451
12556
  `);
12452
12557
  for (const skipped of answer.skipped)
@@ -12460,9 +12565,13 @@ business finds invoices, payments, orders, contracts, subscriptions, products an
12460
12565
  `);
12461
12566
  if (answer.messages?.meaningSkipped)
12462
12567
  streams.diagnostic(`${messagesMeaningNote(answer.messages.meaningSkipped)}
12568
+ `);
12569
+ const harder = harderNote(answer);
12570
+ if (harder)
12571
+ streams.diagnostic(`${harder}
12463
12572
  `);
12464
12573
  }
12465
- print(options.json, allAnswer(answer, options.limit, options.exact), [
12574
+ print(options.json, allAnswer(answer, options.limit, options.exact, leftOut), [
12466
12575
  ...answer.items.map((item) => `${"key" in item ? "key " : ""}${item.kind} ${item.ref}
12467
12576
  ${item.text}`),
12468
12577
  ...answer.tasks.map((task) => `task task:${task.id} ${task.kind} ${task.source}`)