@wirecat/cli-memo 0.131.64 → 0.131.66

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 (145) hide show
  1. package/dist/bin/memo.js +2 -2
  2. package/dist/bundle/{all-profiles-L6EBORCV.js → all-profiles-CWV6RUGR.js} +9 -9
  3. package/dist/bundle/{anthropic-42PADP4V.js → anthropic-OIVOFYZY.js} +5 -5
  4. package/dist/bundle/{app-server-7KM4MSDA.js → app-server-2APNY5WO.js} +42 -42
  5. package/dist/bundle/auto-HRPCC4FE.js +85 -0
  6. package/dist/bundle/{bun-NYSNYHAD.js → bun-7ZKANZII.js} +2 -2
  7. package/dist/bundle/{bun-sqlite-B46U7KI7.js → bun-sqlite-M2EHGYBI.js} +5 -5
  8. package/dist/bundle/{chunk-NRHF7TQ4.js → chunk-22XVNJQP.js} +11 -11
  9. package/dist/bundle/{chunk-FKUA3BTM.js → chunk-2LAJDBWZ.js} +268 -268
  10. package/dist/bundle/{chunk-A524HPDV.js → chunk-2OEQH7HY.js} +2 -2
  11. package/dist/bundle/{chunk-TKPIS4G2.js → chunk-2QIM6246.js} +1 -1
  12. package/dist/bundle/{chunk-T3LVSUNZ.js → chunk-2SIOUXJ7.js} +7 -7
  13. package/dist/bundle/{chunk-ASWLM74P.js → chunk-4U2IONIS.js} +4 -4
  14. package/dist/bundle/{chunk-ZX6SWNSR.js → chunk-4Y33E3U3.js} +6 -6
  15. package/dist/bundle/{chunk-XVREIQ2N.js → chunk-637JEJOC.js} +2 -2
  16. package/dist/bundle/{chunk-5D7BPC33.js → chunk-75MWX5PK.js} +1 -1
  17. package/dist/bundle/{chunk-FH4P5UQA.js → chunk-7NV2IUIC.js} +4 -4
  18. package/dist/bundle/{chunk-SOQGV3ZM.js → chunk-ADDDSIRN.js} +6 -6
  19. package/dist/bundle/{chunk-DXTNBVLV.js → chunk-B3ZXE2IH.js} +277 -277
  20. package/dist/bundle/{chunk-37E74SKW.js → chunk-BF4SX6DP.js} +72 -72
  21. package/dist/bundle/{chunk-WINH45XG.js → chunk-C74WKN57.js} +8 -8
  22. package/dist/bundle/{chunk-3YNJBKGV.js → chunk-CRRBBPJK.js} +337 -337
  23. package/dist/bundle/{chunk-347UBASY.js → chunk-CUC7KGX4.js} +4 -4
  24. package/dist/bundle/{chunk-PVGK67AJ.js → chunk-DAA52TDI.js} +156 -156
  25. package/dist/bundle/{chunk-VTKLHYCZ.js → chunk-DH6PT65U.js} +4 -4
  26. package/dist/bundle/{chunk-UXAP7MNL.js → chunk-DMC3NDG7.js} +9 -9
  27. package/dist/bundle/{chunk-3SCHFNUH.js → chunk-DNXPQGFB.js} +23 -23
  28. package/dist/bundle/{chunk-IK6KH3RE.js → chunk-DSU6UR2X.js} +1 -1
  29. package/dist/bundle/{chunk-QHNAPLVB.js → chunk-DVVS2API.js} +45 -45
  30. package/dist/bundle/{chunk-RP6VV35S.js → chunk-EI5IEOXD.js} +2 -2
  31. package/dist/bundle/{chunk-FHZKHKBJ.js → chunk-GL74QTTV.js} +34 -34
  32. package/dist/bundle/{chunk-RLX5SC2X.js → chunk-GO73V5BC.js} +1 -1
  33. package/dist/bundle/{chunk-MYXB2T77.js → chunk-HB7WN6MX.js} +2 -2
  34. package/dist/bundle/{chunk-RCGFSWZE.js → chunk-HE2F4JII.js} +8 -8
  35. package/dist/bundle/{chunk-SIJA2UYC.js → chunk-HHDZIBBO.js} +7 -7
  36. package/dist/bundle/{chunk-6OS7PTOC.js → chunk-HPUTLOQU.js} +131 -38
  37. package/dist/bundle/{chunk-NH3A5QTW.js → chunk-HUJ666OW.js} +8 -8
  38. package/dist/bundle/{chunk-RTLQHLHG.js → chunk-I4EUGFS7.js} +4 -4
  39. package/dist/bundle/{chunk-RGZUDHAQ.js → chunk-IDBN5CTG.js} +8 -8
  40. package/dist/bundle/{chunk-I5L7MLZ6.js → chunk-IGXIPABG.js} +1 -1
  41. package/dist/bundle/{chunk-K5VF47E2.js → chunk-JSFC6TRN.js} +6 -6
  42. package/dist/bundle/{chunk-FWRBJAQZ.js → chunk-KOJN4WTN.js} +3 -3
  43. package/dist/bundle/{chunk-2XVXF4RW.js → chunk-KU4TU5XZ.js} +3 -3
  44. package/dist/bundle/{chunk-SIBQ34LX.js → chunk-KV35JTWA.js} +1 -1
  45. package/dist/bundle/{chunk-6G53ZFUT.js → chunk-L62FWN3Y.js} +1 -1
  46. package/dist/bundle/{chunk-LVLFLWGY.js → chunk-LDPNN4ED.js} +12 -12
  47. package/dist/bundle/{chunk-FG4Q6T72.js → chunk-LEL6NYM5.js} +5 -5
  48. package/dist/bundle/{chunk-VX4HNQLN.js → chunk-LRQD4RJN.js} +3 -3
  49. package/dist/bundle/{chunk-EDBZEHAU.js → chunk-LW5G7PAR.js} +6 -6
  50. package/dist/bundle/{chunk-MWAXS4BX.js → chunk-LWX2PCM6.js} +14 -10
  51. package/dist/bundle/{chunk-NIJZXGJN.js → chunk-M643YQVP.js} +4 -4
  52. package/dist/bundle/{chunk-ACG5QN77.js → chunk-M76ZJSPA.js} +3 -3
  53. package/dist/bundle/{chunk-4GTZSCUE.js → chunk-MEPRCROV.js} +3 -3
  54. package/dist/bundle/{chunk-ZUQXDJ7A.js → chunk-OO6SA2FM.js} +1 -1
  55. package/dist/bundle/{chunk-EMNQPMZO.js → chunk-OZBL624P.js} +20 -20
  56. package/dist/bundle/{chunk-XPT5PX7H.js → chunk-P2MMAW3A.js} +7 -7
  57. package/dist/bundle/{chunk-QTF4ZXOL.js → chunk-QWP6RJFR.js} +14 -14
  58. package/dist/bundle/{chunk-724DPWN6.js → chunk-R4LVHS2N.js} +2 -2
  59. package/dist/bundle/{chunk-PKUBC2ME.js → chunk-RKLCY7YU.js} +4 -4
  60. package/dist/bundle/{chunk-V7TJSYFK.js → chunk-UCLZMKTT.js} +2 -2
  61. package/dist/bundle/{chunk-EBDX6DNB.js → chunk-V3JOIUVB.js} +4 -4
  62. package/dist/bundle/{chunk-B3SERZMP.js → chunk-VBXQAIRI.js} +1 -1
  63. package/dist/bundle/{chunk-FC5PK6M6.js → chunk-WCRWS2W7.js} +13 -13
  64. package/dist/bundle/{chunk-DKO7WEXJ.js → chunk-WDVYPHNV.js} +2 -2
  65. package/dist/bundle/{chunk-ML46T7UC.js → chunk-XAEDDKM4.js} +30 -30
  66. package/dist/bundle/{chunk-4SUROBD4.js → chunk-XFZESHD3.js} +4 -4
  67. package/dist/bundle/{chunk-NZJUMLTD.js → chunk-XMGUKW6Y.js} +2 -2
  68. package/dist/bundle/{chunk-HKC7GDJD.js → chunk-XZBVXJWY.js} +6 -6
  69. package/dist/bundle/{chunk-VLUDHCCX.js → chunk-ZAOFHRBL.js} +23 -23
  70. package/dist/bundle/{chunk-4ZW6ZJ2V.js → chunk-ZTONSM5X.js} +2 -2
  71. package/dist/bundle/command-contract-N554VPBZ.js +32 -0
  72. package/dist/bundle/{decode-2Z4GCIGA.js → decode-ZCMHC5JI.js} +5 -5
  73. package/dist/bundle/{dispatch-CRYB6Q2V.js → dispatch-VJSUBAUM.js} +8 -8
  74. package/dist/bundle/{echarts-JADCSUD7.js → echarts-SJNM7DNA.js} +2 -2
  75. package/dist/bundle/{embed-ZLEPINEK.js → embed-JO3CVYBK.js} +6 -6
  76. package/dist/bundle/{embedder-E3DHPZCK.js → embedder-QAEGU7TZ.js} +9 -9
  77. package/dist/bundle/{entry-MUE6HWX3.js → entry-KMFOJYWF.js} +7 -7
  78. package/dist/bundle/failure-2FQL5SHA.js +65 -0
  79. package/dist/bundle/{failure-ZMQJF3RO.js → failure-GLF7OMMM.js} +2 -2
  80. package/dist/bundle/{first-run-3JYWLJCH.js → first-run-5X2NRJL2.js} +11 -11
  81. package/dist/bundle/first-screen-2LMAVNBU.js +30 -0
  82. package/dist/bundle/{instructions-ECXOBMWS.js → instructions-GLZE4RPY.js} +1 -1
  83. package/dist/bundle/{mcp-RKJG22KM.js → mcp-H2WYFBNW.js} +2 -2
  84. package/dist/bundle/mcp-QXTOJORS.js +90 -0
  85. package/dist/bundle/memo.js +16 -16
  86. package/dist/bundle/{node-A6363DJ4.js → node-BNMBIM5C.js} +2 -2
  87. package/dist/bundle/{node-sqlite-FA2P77PW.js → node-sqlite-BSRYEMOR.js} +6 -6
  88. package/dist/bundle/{oauth-DBGARGR7.js → oauth-HYAEWGBV.js} +7 -7
  89. package/dist/bundle/{open-5YYG2VWH.js → open-X7J4Q3I6.js} +5 -5
  90. package/dist/bundle/{openai-BPVP7TZ7.js → openai-ZACXNPZS.js} +10 -10
  91. package/dist/bundle/{process-DGPZRHQA.js → process-5I6233QY.js} +1 -1
  92. package/dist/bundle/{program-LXQLWUAG.js → program-RQIADAES.js} +135 -100
  93. package/dist/bundle/{prompt-NTAZWPWA.js → prompt-DVKTWZHJ.js} +5 -5
  94. package/dist/bundle/{recognize-OGEP5VD3.js → recognize-VXK4L74H.js} +4 -4
  95. package/dist/bundle/{remote-DER2PFH6.js → remote-IJLJQRQN.js} +7 -7
  96. package/dist/bundle/{rerank-PB5ACFHS.js → rerank-553ZMBYJ.js} +7 -7
  97. package/dist/bundle/{serve-KNEY4BXK.js → serve-76AFHLTI.js} +9 -9
  98. package/dist/bundle/{server-MVJU7QG4.js → server-B3F54YWL.js} +56 -56
  99. package/dist/bundle/server-PSEKWXKK.js +48 -0
  100. package/dist/bundle/server-QDPYZZT5.js +61 -0
  101. package/dist/bundle/{state-JMCWHHZM.js → state-WYFGGGAG.js} +6 -6
  102. package/dist/bundle/{store-M5QSIRWJ.js → store-S6QR47NT.js} +13 -13
  103. package/dist/bundle/store-maintenance-command-O4TXIWSL.js +47 -0
  104. package/dist/bundle/update-Z4LDMYC5.js +68 -0
  105. package/dist/digest/command.d.ts.map +1 -1
  106. package/dist/digest/command.js +4 -3
  107. package/dist/digest/command.js.map +1 -1
  108. package/dist/digest/digest.d.ts.map +1 -1
  109. package/dist/digest/digest.js +2 -0
  110. package/dist/digest/digest.js.map +1 -1
  111. package/dist/digest/sync-health.d.ts +6 -3
  112. package/dist/digest/sync-health.d.ts.map +1 -1
  113. package/dist/digest/sync-health.js +46 -20
  114. package/dist/digest/sync-health.js.map +1 -1
  115. package/dist/digest/tasks.d.ts +2 -0
  116. package/dist/digest/tasks.d.ts.map +1 -1
  117. package/dist/digest/tasks.js +3 -1
  118. package/dist/digest/tasks.js.map +1 -1
  119. package/dist/examples.js +4 -4
  120. package/dist/examples.js.map +1 -1
  121. package/dist/finance/subscriptions-command.js +3 -3
  122. package/dist/finance/subscriptions-command.js.map +1 -1
  123. package/dist/records/import.d.ts.map +1 -1
  124. package/dist/records/import.js +2 -0
  125. package/dist/records/import.js.map +1 -1
  126. package/dist/records/input.d.ts +3 -1
  127. package/dist/records/input.d.ts.map +1 -1
  128. package/dist/records/input.js +14 -2
  129. package/dist/records/input.js.map +1 -1
  130. package/dist/version.d.ts +1 -1
  131. package/dist/version.js +1 -1
  132. package/package.json +2 -2
  133. package/scenarios/project-state.md +2 -2
  134. package/skills/morning-digest/SKILL.md +2 -1
  135. package/dist/bundle/auto-V3FUD6RW.js +0 -85
  136. package/dist/bundle/command-contract-PLB2JGFJ.js +0 -32
  137. package/dist/bundle/failure-6SP64Q66.js +0 -65
  138. package/dist/bundle/first-screen-QH34AIFV.js +0 -30
  139. package/dist/bundle/mcp-QX2D6EXA.js +0 -90
  140. package/dist/bundle/server-L622PMVC.js +0 -61
  141. package/dist/bundle/server-SJVP2XXD.js +0 -48
  142. package/dist/bundle/store-maintenance-command-PQCO5ICC.js +0 -47
  143. package/dist/bundle/update-MQUCCIBB.js +0 -68
  144. /package/dist/bundle/{chunk-C3XNJQD7.js → chunk-IJPRQERM.js} +0 -0
  145. /package/dist/bundle/{chunk-SW6C6WH5.js → chunk-SYWHHQMC.js} +0 -0
@@ -6,17 +6,17 @@ import {
6
6
  autoState,
7
7
  lastAutoRun,
8
8
  recordAutoRun
9
- } from "./chunk-XPT5PX7H.js";
9
+ } from "./chunk-P2MMAW3A.js";
10
10
  import {
11
11
  installer,
12
12
  latest,
13
13
  upgradeCommand
14
- } from "./chunk-WINH45XG.js";
14
+ } from "./chunk-C74WKN57.js";
15
15
  import {
16
16
  mcpOwnerAllowed,
17
17
  readOnlyAvailability,
18
18
  refuseWritesUnderLock
19
- } from "./chunk-EDBZEHAU.js";
19
+ } from "./chunk-LW5G7PAR.js";
20
20
  import {
21
21
  answers,
22
22
  atDetail,
@@ -27,7 +27,7 @@ import {
27
27
  trackAnswers,
28
28
  wholeList,
29
29
  withStore
30
- } from "./chunk-T3LVSUNZ.js";
30
+ } from "./chunk-2SIOUXJ7.js";
31
31
  import {
32
32
  ATTACHMENT_CHARS,
33
33
  DIALECTS,
@@ -59,15 +59,15 @@ import {
59
59
  showMail,
60
60
  unsetConfigKey,
61
61
  updateConfig
62
- } from "./chunk-FHZKHKBJ.js";
62
+ } from "./chunk-GL74QTTV.js";
63
63
  import "./chunk-QP3KNC5D.js";
64
- import "./chunk-FWRBJAQZ.js";
65
- import "./chunk-MWAXS4BX.js";
66
- import "./chunk-PKUBC2ME.js";
64
+ import "./chunk-KOJN4WTN.js";
65
+ import "./chunk-LWX2PCM6.js";
66
+ import "./chunk-RKLCY7YU.js";
67
67
  import {
68
68
  errorObject,
69
69
  recognisable
70
- } from "./chunk-ZX6SWNSR.js";
70
+ } from "./chunk-4Y33E3U3.js";
71
71
  import {
72
72
  AGENT_INPUT_MAX_CHARS,
73
73
  DISCOVERY_DESCRIPTIONS,
@@ -106,32 +106,32 @@ import {
106
106
  tasksCommand,
107
107
  tasksStatsCommand,
108
108
  withSqliteSidecars
109
- } from "./chunk-FKUA3BTM.js";
110
- import "./chunk-RLX5SC2X.js";
111
- import "./chunk-SIBQ34LX.js";
109
+ } from "./chunk-2LAJDBWZ.js";
110
+ import "./chunk-GO73V5BC.js";
111
+ import "./chunk-KV35JTWA.js";
112
112
  import {
113
113
  allHitItem,
114
114
  coverageGaps,
115
115
  messageHitItem,
116
116
  noteHitItem,
117
117
  shownOf
118
- } from "./chunk-3SCHFNUH.js";
119
- import "./chunk-DKO7WEXJ.js";
118
+ } from "./chunk-DNXPQGFB.js";
119
+ import "./chunk-WDVYPHNV.js";
120
120
  import {
121
121
  REASONS as REASONS2,
122
122
  SKILL_TARGETS,
123
123
  skillCommand,
124
124
  skillPath,
125
125
  skillVersion
126
- } from "./chunk-QTF4ZXOL.js";
126
+ } from "./chunk-QWP6RJFR.js";
127
127
  import {
128
128
  recoveryNotes,
129
129
  storeInfo,
130
130
  storeRecoveryCheck,
131
131
  storeRecoveryRun,
132
132
  storeSummary
133
- } from "./chunk-QHNAPLVB.js";
134
- import "./chunk-VLUDHCCX.js";
133
+ } from "./chunk-DVVS2API.js";
134
+ import "./chunk-ZAOFHRBL.js";
135
135
  import {
136
136
  LIST_QUERY_GUIDE,
137
137
  STATUS_SIGNALS,
@@ -189,18 +189,18 @@ import {
189
189
  termField,
190
190
  typedQuery,
191
191
  withQuery
192
- } from "./chunk-DXTNBVLV.js";
192
+ } from "./chunk-B3ZXE2IH.js";
193
193
  import {
194
194
  readBoundedUtf8File,
195
195
  writeFileAtomic
196
- } from "./chunk-FC5PK6M6.js";
196
+ } from "./chunk-WCRWS2W7.js";
197
197
  import {
198
198
  commandsText,
199
199
  inSection,
200
200
  installHelp
201
- } from "./chunk-NH3A5QTW.js";
201
+ } from "./chunk-HUJ666OW.js";
202
202
  import "./chunk-HTQTIKWP.js";
203
- import "./chunk-NIJZXGJN.js";
203
+ import "./chunk-M643YQVP.js";
204
204
  import {
205
205
  Command,
206
206
  DEFAULT_TEXT_MODEL,
@@ -237,23 +237,23 @@ import {
237
237
  snakeKeys,
238
238
  textModels,
239
239
  textModelsFile
240
- } from "./chunk-PVGK67AJ.js";
241
- import "./chunk-SIJA2UYC.js";
242
- import "./chunk-LVLFLWGY.js";
240
+ } from "./chunk-DAA52TDI.js";
241
+ import "./chunk-HHDZIBBO.js";
242
+ import "./chunk-LDPNN4ED.js";
243
243
  import {
244
244
  isNewer
245
- } from "./chunk-ASWLM74P.js";
246
- import "./chunk-6G53ZFUT.js";
247
- import "./chunk-FH4P5UQA.js";
248
- import "./chunk-NRHF7TQ4.js";
249
- import "./chunk-RP6VV35S.js";
250
- import "./chunk-RTLQHLHG.js";
245
+ } from "./chunk-4U2IONIS.js";
246
+ import "./chunk-L62FWN3Y.js";
247
+ import "./chunk-7NV2IUIC.js";
248
+ import "./chunk-22XVNJQP.js";
249
+ import "./chunk-EI5IEOXD.js";
250
+ import "./chunk-I4EUGFS7.js";
251
251
  import {
252
252
  releaseLock,
253
253
  servingProfiles,
254
254
  takeLock
255
- } from "./chunk-ACG5QN77.js";
256
- import "./chunk-ZUQXDJ7A.js";
255
+ } from "./chunk-M76ZJSPA.js";
256
+ import "./chunk-OO6SA2FM.js";
257
257
  import {
258
258
  EVIDENCE_FINDINGS_KIND,
259
259
  MAIL_FINDINGS_KIND,
@@ -292,7 +292,7 @@ import {
292
292
  plainQuery,
293
293
  providerNamed,
294
294
  refLabel
295
- } from "./chunk-3YNJBKGV.js";
295
+ } from "./chunk-CRRBBPJK.js";
296
296
  import {
297
297
  CATALOG_KINDS,
298
298
  CONTRACT_KINDS,
@@ -340,21 +340,21 @@ import {
340
340
  timezoneOf,
341
341
  validateQuery,
342
342
  walkQuery
343
- } from "./chunk-37E74SKW.js";
344
- import "./chunk-2XVXF4RW.js";
345
- import "./chunk-RGZUDHAQ.js";
346
- import "./chunk-HKC7GDJD.js";
347
- import "./chunk-4GTZSCUE.js";
348
- import "./chunk-724DPWN6.js";
349
- import "./chunk-4SUROBD4.js";
350
- import "./chunk-VX4HNQLN.js";
351
- import "./chunk-K5VF47E2.js";
343
+ } from "./chunk-BF4SX6DP.js";
344
+ import "./chunk-KU4TU5XZ.js";
345
+ import "./chunk-IDBN5CTG.js";
346
+ import "./chunk-XZBVXJWY.js";
347
+ import "./chunk-MEPRCROV.js";
348
+ import "./chunk-R4LVHS2N.js";
349
+ import "./chunk-XFZESHD3.js";
350
+ import "./chunk-LRQD4RJN.js";
351
+ import "./chunk-JSFC6TRN.js";
352
352
  import {
353
353
  sharedModelsDirectory
354
- } from "./chunk-347UBASY.js";
354
+ } from "./chunk-CUC7KGX4.js";
355
355
  import {
356
356
  storePath
357
- } from "./chunk-NZJUMLTD.js";
357
+ } from "./chunk-XMGUKW6Y.js";
358
358
  import {
359
359
  provideTerminal,
360
360
  terminalOf
@@ -364,12 +364,12 @@ import {
364
364
  REASONS,
365
365
  STORE_CLIENT,
366
366
  VERSION
367
- } from "./chunk-MYXB2T77.js";
368
- import "./chunk-IK6KH3RE.js";
369
- import "./chunk-SW6C6WH5.js";
367
+ } from "./chunk-HB7WN6MX.js";
368
+ import "./chunk-DSU6UR2X.js";
369
+ import "./chunk-SYWHHQMC.js";
370
370
  import "./chunk-D72URWJE.js";
371
- import "./chunk-SOQGV3ZM.js";
372
- import "./chunk-TKPIS4G2.js";
371
+ import "./chunk-ADDDSIRN.js";
372
+ import "./chunk-2QIM6246.js";
373
373
  import {
374
374
  configFilePath,
375
375
  createDeadline,
@@ -380,7 +380,7 @@ import {
380
380
  projectFields,
381
381
  readBatchInput,
382
382
  resolvePaths
383
- } from "./chunk-EMNQPMZO.js";
383
+ } from "./chunk-OZBL624P.js";
384
384
  import {
385
385
  MAX_NEXT_STEPS,
386
386
  array,
@@ -402,14 +402,14 @@ import {
402
402
  trim,
403
403
  union,
404
404
  unknown
405
- } from "./chunk-RCGFSWZE.js";
405
+ } from "./chunk-HE2F4JII.js";
406
406
  import "./chunk-Y5E2WNWB.js";
407
407
  import {
408
408
  CliError,
409
409
  errorCodes,
410
410
  isCliError
411
- } from "./chunk-4ZW6ZJ2V.js";
412
- import "./chunk-5D7BPC33.js";
411
+ } from "./chunk-ZTONSM5X.js";
412
+ import "./chunk-75MWX5PK.js";
413
413
  import {
414
414
  __name
415
415
  } from "./chunk-ZVVMGPBJ.js";
@@ -696,7 +696,7 @@ var readScope = /* @__PURE__ */ __name((command, help = ONE_ACCOUNT_HELP) => sou
696
696
  var writeScope = /* @__PURE__ */ __name((command, help) => writeOptions(command, help).option("--json", "print JSON; --json=id,title keeps only those fields"), "writeScope");
697
697
  var jsonOption = /* @__PURE__ */ __name((command, fields = "ref,title") => command.option("--json", `print JSON; --json=${fields} keeps only those fields`), "jsonOption");
698
698
 
699
- // node_modules/.pnpm/@wirecat+cli-core@0.613.0_@wirecat+cli-base@0.82.0_commander@15.0.0_esbuild@0.28.2_type_562287bbc40b862fa82b63f307e02b11/node_modules/@wirecat/cli-core/dist/mail/sender-scores.js
699
+ // node_modules/.pnpm/@wirecat+cli-core@0.613.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_4e56005b613f8e91d34ec4e9dbb41bec/node_modules/@wirecat/cli-core/dist/mail/sender-scores.js
700
700
  var SCORED = "mail_sender_scores";
701
701
  var DAY = 864e5;
702
702
  var RECENT = 2 * 365 * DAY;
@@ -712,7 +712,7 @@ var demotedSenders = /* @__PURE__ */ __name(async (store) => {
712
712
  return senders;
713
713
  }, "demotedSenders");
714
714
 
715
- // node_modules/.pnpm/@wirecat+cli-core@0.613.0_@wirecat+cli-base@0.82.0_commander@15.0.0_esbuild@0.28.2_type_562287bbc40b862fa82b63f307e02b11/node_modules/@wirecat/cli-core/dist/mail/sync.js
715
+ // node_modules/.pnpm/@wirecat+cli-core@0.613.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_4e56005b613f8e91d34ec4e9dbb41bec/node_modules/@wirecat/cli-core/dist/mail/sync.js
716
716
  var DAY2 = 864e5;
717
717
  var EDGE = 2 * DAY2;
718
718
 
@@ -1981,7 +1981,7 @@ import { createHash } from "node:crypto";
1981
1981
  import { existsSync, readFileSync as readFileSync2, statSync } from "node:fs";
1982
1982
  import { basename, extname, relative, sep } from "node:path";
1983
1983
 
1984
- // node_modules/.pnpm/@wirecat+cli-core@0.613.0_@wirecat+cli-base@0.82.0_commander@15.0.0_esbuild@0.28.2_type_562287bbc40b862fa82b63f307e02b11/node_modules/@wirecat/cli-core/dist/services/documents/extraction.js
1984
+ // node_modules/.pnpm/@wirecat+cli-core@0.613.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_4e56005b613f8e91d34ec4e9dbb41bec/node_modules/@wirecat/cli-core/dist/services/documents/extraction.js
1985
1985
  var Proposal = object({
1986
1986
  kind: picklist(["summary", "digest", "fact", "preference"]),
1987
1987
  body: pipe(string(), trim(), minLength(1), maxLength(15e3)),
@@ -1989,10 +1989,10 @@ var Proposal = object({
1989
1989
  });
1990
1990
  var Proposals = object({ items: pipe(array(Proposal), maxLength(20)) });
1991
1991
 
1992
- // node_modules/.pnpm/@wirecat+cli-core@0.613.0_@wirecat+cli-base@0.82.0_commander@15.0.0_esbuild@0.28.2_type_562287bbc40b862fa82b63f307e02b11/node_modules/@wirecat/cli-core/dist/services/documents/mirrors.js
1992
+ // node_modules/.pnpm/@wirecat+cli-core@0.613.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_4e56005b613f8e91d34ec4e9dbb41bec/node_modules/@wirecat/cli-core/dist/services/documents/mirrors.js
1993
1993
  var ID = pipe(string(), regex(/^[A-Za-z0-9_-]{1,200}$/));
1994
1994
 
1995
- // node_modules/.pnpm/@wirecat+cli-core@0.613.0_@wirecat+cli-base@0.82.0_commander@15.0.0_esbuild@0.28.2_type_562287bbc40b862fa82b63f307e02b11/node_modules/@wirecat/cli-core/dist/services/documents/sync.js
1995
+ // node_modules/.pnpm/@wirecat+cli-core@0.613.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_4e56005b613f8e91d34ec4e9dbb41bec/node_modules/@wirecat/cli-core/dist/services/documents/sync.js
1996
1996
  var MAX_PICTURE_BYTES = 25 * 1024 * 1024;
1997
1997
 
1998
1998
  // dist/notes/dates.js
@@ -4321,7 +4321,7 @@ var doctorCommand = /* @__PURE__ */ __name((...args) => {
4321
4321
  }, SHELL_OVERRIDES.doctor);
4322
4322
  }, "doctorCommand");
4323
4323
 
4324
- // node_modules/.pnpm/@wirecat+cli-core@0.613.0_@wirecat+cli-base@0.82.0_commander@15.0.0_esbuild@0.28.2_type_562287bbc40b862fa82b63f307e02b11/node_modules/@wirecat/cli-core/dist/calendar/sync.js
4324
+ // node_modules/.pnpm/@wirecat+cli-core@0.613.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_4e56005b613f8e91d34ec4e9dbb41bec/node_modules/@wirecat/cli-core/dist/calendar/sync.js
4325
4325
  var DAY3 = 864e5;
4326
4326
  var SLOTS_EVERY = 7 * DAY3;
4327
4327
  var isWindow = /* @__PURE__ */ __name((value) => typeof value?.from === "number" && typeof value.to === "number", "isWindow");
@@ -4401,10 +4401,10 @@ var calendarStatus = /* @__PURE__ */ __name(async (store, accountId, { profile,
4401
4401
  return { items, page: 1, limit: Math.max(1, items.length), hasMore: false };
4402
4402
  }, "calendarStatus");
4403
4403
 
4404
- // node_modules/.pnpm/@wirecat+cli-core@0.613.0_@wirecat+cli-base@0.82.0_commander@15.0.0_esbuild@0.28.2_type_562287bbc40b862fa82b63f307e02b11/node_modules/@wirecat/cli-core/dist/calendar/feeds.js
4404
+ // node_modules/.pnpm/@wirecat+cli-core@0.613.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_4e56005b613f8e91d34ec4e9dbb41bec/node_modules/@wirecat/cli-core/dist/calendar/feeds.js
4405
4405
  var FEED_LIMITS = { maxBytes: 10 * 1024 * 1024, timeoutMs: 3e4, redirects: 5 };
4406
4406
 
4407
- // node_modules/.pnpm/@wirecat+cli-core@0.613.0_@wirecat+cli-base@0.82.0_commander@15.0.0_esbuild@0.28.2_type_562287bbc40b862fa82b63f307e02b11/node_modules/@wirecat/cli-core/dist/calendar/reads.js
4407
+ // node_modules/.pnpm/@wirecat+cli-core@0.613.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_4e56005b613f8e91d34ec4e9dbb41bec/node_modules/@wirecat/cli-core/dist/calendar/reads.js
4408
4408
  var LIST = "events list";
4409
4409
  var EVENT_TYPES = [
4410
4410
  "default",
@@ -4481,7 +4481,7 @@ var accountsMeta = /* @__PURE__ */ __name(async (store, accounts, skipped, now)
4481
4481
  };
4482
4482
  }, "accountsMeta");
4483
4483
 
4484
- // node_modules/.pnpm/@wirecat+cli-core@0.613.0_@wirecat+cli-base@0.82.0_commander@15.0.0_esbuild@0.28.2_type_562287bbc40b862fa82b63f307e02b11/node_modules/@wirecat/cli-core/dist/calendar/writer.js
4484
+ // node_modules/.pnpm/@wirecat+cli-core@0.613.0_@wirecat+cli-base@0.91.0_commander@15.0.0_esbuild@0.28.2_type_4e56005b613f8e91d34ec4e9dbb41bec/node_modules/@wirecat/cli-core/dist/calendar/writer.js
4485
4485
  var EVENTS_NOTIFY_KEY = "events.notify";
4486
4486
  var EVENTS_DELETE_SERIES_KEY = "events.delete.series";
4487
4487
  var EVENTS_REMIND_HOOK_KEY = "events.remind.hook";
@@ -4950,7 +4950,7 @@ var EXAMPLES = {
4950
4950
  "records import": [
4951
4951
  "memo records import payments.jsonl --account rentals --dry-run",
4952
4952
  "memo records import envelope.json --account rentals --json",
4953
- "memo records import contacts.vcf --account phone:pixel"
4953
+ "memo records import contacts.vcf --account phone:pixel --region gb"
4954
4954
  ],
4955
4955
  "records check": ["memo records check - --account rentals"],
4956
4956
  "records list": [
@@ -4997,12 +4997,12 @@ var EXAMPLES = {
4997
4997
  ],
4998
4998
  "subscriptions show": ["memo subscriptions show subscription:5"],
4999
4999
  "subscriptions add": [
5000
- "memo subscriptions add Hosting 990.00 RUB --kind payable --supplier organization:3 --every 1-month --start-date 2026-11-01",
5001
- "memo subscriptions add 'Bike rental' 10000.00 RUB --kind receivable --customer organization:3 --every 1-month --trial-end-date 2026-11-14 --status trial"
5000
+ "memo subscriptions add Hosting 990.00 RUB --kind payable --supplier organization:3 --period 1-month --start-date 2026-11-01",
5001
+ "memo subscriptions add 'Bike rental' 10000.00 RUB --kind receivable --customer organization:3 --period 1-month --trial-end-date 2026-11-14 --status trial"
5002
5002
  ],
5003
5003
  "subscriptions update": [
5004
5004
  "memo subscriptions update subscription:5 --status paused",
5005
- "memo subscriptions update subscription:5 --every 1-year"
5005
+ "memo subscriptions update subscription:5 --period 1-year"
5006
5006
  ],
5007
5007
  "subscriptions cancel": ["memo subscriptions cancel subscription:5 --occurred-time 2026-11-30"],
5008
5008
  "subscriptions prices add": ["memo subscriptions prices add subscription:5 1190.00 RUB --start-date 2027-01-01"],
@@ -6094,14 +6094,14 @@ var listSubscriptions = /* @__PURE__ */ __name(async (store, words, limit) => {
6094
6094
  });
6095
6095
  return pageOf("subscriptions list", limit, (most) => store.subscriptions.list({ ...filter, limit: most }));
6096
6096
  }, "listSubscriptions");
6097
- var parts = /* @__PURE__ */ __name((command) => command.option("--status <state>", `${SUBSCRIPTION_STATUSES.join(", ")}; trial needs --trial-end-date`).option("--supplier <party>", "who supplies it: person:<uid> or organization:<id>; you, when you bill it").option("--customer <party>", "who receives it and pays for it: person:<uid> or organization:<id>; you, when you pay").option("--product <product>", "the product or service it is for: product:<id>").option("--contract <contract>", "the contract it runs under: contract:<id>").option("--every <count-unit>", "how often it is charged: a count and a unit, such as 1-month or 1-year").option("--start-date <date>", "the first day it runs, YYYY-MM-DD").option("--trial-end-date <date>", "the day its free trial ends, YYYY-MM-DD"), "parts");
6097
+ var parts = /* @__PURE__ */ __name((command) => command.option("--status <state>", `${SUBSCRIPTION_STATUSES.join(", ")}; trial needs --trial-end-date`).option("--supplier <party>", "who supplies it: person:<uid> or organization:<id>; you, when you bill it").option("--customer <party>", "who receives it and pays for it: person:<uid> or organization:<id>; you, when you pay").option("--product <product>", "the product or service it is for: product:<id>").option("--contract <contract>", "the contract it runs under: contract:<id>").option("--period <count-unit>", "how often it is charged: a count and a unit, such as 1-month or 1-year").option("--start-date <date>", "the first day it runs, YYYY-MM-DD").option("--trial-end-date <date>", "the day its free trial ends, YYYY-MM-DD"), "parts");
6098
6098
  var fieldsOf3 = /* @__PURE__ */ __name((options) => given({
6099
6099
  status: optionalChoice(options.status, SUBSCRIPTION_STATUSES, "--status"),
6100
6100
  supplier: options.supplier,
6101
6101
  customer: options.customer,
6102
6102
  product: options.product,
6103
6103
  contract: options.contract,
6104
- every: options.every,
6104
+ every: options.period,
6105
6105
  startDate: dayOf(options.startDate),
6106
6106
  trialEndDate: dayOf(options.trialEndDate),
6107
6107
  endDate: dayOf(options.endDate)
@@ -6127,7 +6127,7 @@ var subscriptionCommands = /* @__PURE__ */ __name((program, streams, env) => {
6127
6127
  ...fieldsOf3(options),
6128
6128
  name: name2,
6129
6129
  direction: choice(options.kind, INVOICE_DIRECTIONS, "--kind"),
6130
- every: needed(options.every, "--every", "how often it is charged, such as 1-month"),
6130
+ every: needed(options.period, "--period", "how often it is charged, such as 1-month"),
6131
6131
  startDate,
6132
6132
  prices: [{ amount: amount2, currency, effectiveFrom: startDate }]
6133
6133
  }));
@@ -7966,10 +7966,10 @@ var mcpCommandDefinition = /* @__PURE__ */ __name((program, streams, env, create
7966
7966
  }).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) => {
7967
7967
  if (!options.http && (options.port !== void 0 || options.publicUrl !== void 0))
7968
7968
  throw new CliError("validation_error", "--port and --public-url require --http");
7969
- const { createMemoServer } = await import("./server-MVJU7QG4.js");
7969
+ const { createMemoServer } = await import("./server-B3F54YWL.js");
7970
7970
  const build = /* @__PURE__ */ __name(() => createMemoServer(env, createProgram2, options.permission), "build");
7971
7971
  if (options.http) {
7972
- const { httpLockFile, mcpUrlOf, portOf, publicUrlOf, serveOverHttp } = await import("./mcp-QX2D6EXA.js");
7972
+ const { httpLockFile, mcpUrlOf, portOf, publicUrlOf, serveOverHttp } = await import("./mcp-QXTOJORS.js");
7973
7973
  const publicUrl = publicUrlOf(options.publicUrl, {
7974
7974
  missing: "--http",
7975
7975
  reaches: "the browser apps reach memo",
@@ -8021,7 +8021,7 @@ var mcpCommandDefinition = /* @__PURE__ */ __name((program, streams, env, create
8021
8021
  });
8022
8022
  });
8023
8023
  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() {
8024
- const { revokeAll } = await import("./mcp-QX2D6EXA.js");
8024
+ const { revokeAll } = await import("./mcp-QXTOJORS.js");
8025
8025
  revokeAll(httpTokenFile(env));
8026
8026
  out.print(this.opts().json, itemAnswer({ revoked: true }));
8027
8027
  });
@@ -8927,7 +8927,7 @@ var deviceOf = /* @__PURE__ */ __name((given2) => {
8927
8927
  });
8928
8928
  return given2.slice(at + 1);
8929
8929
  }, "deviceOf");
8930
- var importRecords = /* @__PURE__ */ __name(async (store, { file, stdin, account: account2, dryRun, onIssue }) => {
8930
+ var importRecords = /* @__PURE__ */ __name(async (store, { file, stdin, account: account2, dryRun, onIssue, region }) => {
8931
8931
  const iterator = (await linesOf(file, stdin))[Symbol.asyncIterator]();
8932
8932
  const before = [];
8933
8933
  let next = await iterator.next();
@@ -8955,10 +8955,22 @@ var importRecords = /* @__PURE__ */ __name(async (store, { file, stdin, account:
8955
8955
  provider: PHONE,
8956
8956
  batchId: `vcard-${(/* @__PURE__ */ new Date()).toISOString()}`,
8957
8957
  dryRun,
8958
- onIssue
8959
- });
8958
+ onIssue,
8959
+ // cli-core checks the code against its phone plans; its list is lower case.
8960
+ ...region === void 0 ? {} : { region: region.trim().toLowerCase() }
8961
+ });
8962
+ const badRegion = receipt.errors.find((one2) => one2.pointer === "/options/phone_region");
8963
+ if (badRegion)
8964
+ throw new CliError("validation_error", badRegion.message.replace("options.phone_region", "--region"), {
8965
+ param: "--region",
8966
+ reason: badRegion.code
8967
+ });
8960
8968
  return { ...receipt, vcard: vcard.map((one2) => ({ ...one2, card: one2.card + 1 })) };
8961
8969
  }
8970
+ if (region !== void 0)
8971
+ throw new CliError("validation_error", "--region is for a vCard file; an envelope names options.phone_region", {
8972
+ param: "--region"
8973
+ });
8962
8974
  const header = headerOf(first);
8963
8975
  if (header !== void 0) {
8964
8976
  async function* all() {
@@ -9114,7 +9126,7 @@ var recordsCommand = /* @__PURE__ */ __name((program, streams, env) => {
9114
9126
  const answered = answers(program, streams, env);
9115
9127
  const { print } = answered;
9116
9128
  const records = program.command("records").description("what a source said, kept per account; what it says about money waits for your review").summary("what a source said, kept per account");
9117
- const importing = /* @__PURE__ */ __name((command, dryRun) => command.argument("<file>", "a records envelope as JSON, JSONL (a header line, then a record per line, read as it streams) or a vCard address book (.vcf, into phone:<device>); - for stdin").option("--account <account>", "the source the envelope is for: <provider>:<account> (sheet:rentals) or its source.account alone; phone:<device> for a vCard file").option("--json", "print JSON; --json=created,errors keeps only those fields").action(async (file, given2) => {
9129
+ const importing = /* @__PURE__ */ __name((command, dryRun) => command.argument("<file>", "a records envelope as JSON, JSONL (a header line, then a record per line, read as it streams) or a vCard address book (.vcf, into phone:<device>); - for stdin").option("--account <account>", "the source the envelope is for: <provider>:<account> (sheet:rentals) or its source.account alone; phone:<device> for a vCard file").option("--region <country>", "a vCard file's country for phone numbers without +, such as ru or gb; without it they are kept, not matched").option("--json", "print JSON; --json=created,errors keeps only those fields").action(async (file, given2) => {
9118
9130
  const account2 = given2.account?.trim();
9119
9131
  if (!account2)
9120
9132
  throw new CliError("validation_error", "name the source account the envelope is for: --account <account>", {
@@ -9126,7 +9138,8 @@ var recordsCommand = /* @__PURE__ */ __name((program, streams, env) => {
9126
9138
  account: account2,
9127
9139
  dryRun: dryRun ?? given2.dryRun === true,
9128
9140
  onIssue: /* @__PURE__ */ __name((issue) => streams.diagnostic(`${refusedLine(issue)}
9129
- `), "onIssue")
9141
+ `), "onIssue"),
9142
+ ...given2.region === void 0 ? {} : { region: given2.region }
9130
9143
  }));
9131
9144
  const issues = receipt.errors.map((one2) => ({
9132
9145
  code: "validation_error",
@@ -9205,25 +9218,38 @@ var schedulesOf = /* @__PURE__ */ __name((state) => {
9205
9218
  }
9206
9219
  });
9207
9220
  }, "schedulesOf");
9208
- var mailAddress = /* @__PURE__ */ __name((profile, env) => {
9221
+ var signedIn = /* @__PURE__ */ __name((dir) => existsSync6(dir) ? readdirSync4(dir).filter((name2) => name2.endsWith(".json")).map((name2) => name2.slice(0, -".json".length)) : [], "signedIn");
9222
+ var profilesOf = /* @__PURE__ */ __name((provider, tool, env) => {
9223
+ if (provider !== "email")
9224
+ return new Map(signedIn(join9(stateDirs(tool, env).state, "accounts")).map((profile) => [
9225
+ profile,
9226
+ signedInAccount(tool, profile, env)
9227
+ ]));
9209
9228
  try {
9210
9229
  const config = JSON.parse(readFileSync8(configFilePath(stateDirs(MAIL2, env).config), "utf8"));
9211
- return config?.profiles?.[profile]?.address;
9230
+ return new Map(Object.entries(config?.profiles ?? {}).map(([profile, one2]) => [
9231
+ profile,
9232
+ one2?.address
9233
+ ]));
9212
9234
  } catch {
9213
- return void 0;
9235
+ return /* @__PURE__ */ new Map();
9214
9236
  }
9215
- }, "mailAddress");
9216
- var accountOfProfile = /* @__PURE__ */ __name((provider, tool, profile, env) => provider === "email" ? mailAddress(profile, env) : signedInAccount(tool, profile, env), "accountOfProfile");
9237
+ }, "profilesOf");
9238
+ var profileRun = /* @__PURE__ */ __name((schedule, tool, profiles) => {
9239
+ const first = schedule.argv[0];
9240
+ return first !== void 0 && profiles.has(first) ? first : schedule.environment[`${tool.envPrefix}_PROFILE`] ?? "default";
9241
+ }, "profileRun");
9217
9242
  var syncRunsOf = /* @__PURE__ */ __name((env) => {
9218
9243
  const cache = /* @__PURE__ */ new Map();
9219
- const read = /* @__PURE__ */ __name((tool) => {
9244
+ const read = /* @__PURE__ */ __name((provider, tool) => {
9220
9245
  const known2 = cache.get(tool.appName);
9221
9246
  if (known2)
9222
9247
  return known2;
9223
9248
  const app = { ...APP, appName: tool.appName, envPrefix: tool.envPrefix };
9224
9249
  const fresh = {
9225
9250
  schedules: schedulesOf(stateDirs(tool, env).state).filter((one2) => one2.kind === "command" && one2.argv.includes("sync")),
9226
- serving: servingProfiles(app, env)
9251
+ serving: servingProfiles(app, env),
9252
+ profiles: profilesOf(provider, tool, env)
9227
9253
  };
9228
9254
  cache.set(tool.appName, fresh);
9229
9255
  return fresh;
@@ -9231,13 +9257,15 @@ var syncRunsOf = /* @__PURE__ */ __name((env) => {
9231
9257
  return (key) => {
9232
9258
  const tool = toolOf(key.provider);
9233
9259
  if (!tool)
9234
- return { runs: [], scheduled: false, serving: false };
9235
- const { schedules, serving } = read(tool);
9236
- const mine = schedules.filter((one2) => accountOfProfile(key.provider, tool, one2.environment[`${tool.envPrefix}_PROFILE`] ?? "default", env) === key.account);
9260
+ return { runs: [], scheduled: false, serving: false, known: false };
9261
+ const { schedules, serving, profiles } = read(key.provider, tool);
9262
+ const mine = new Set([...profiles].filter(([, account2]) => account2 === key.account).map(([profile]) => profile));
9263
+ const runs = schedules.filter((one2) => mine.has(profileRun(one2, tool, profiles)));
9237
9264
  return {
9238
- runs: mine.flatMap((one2) => one2.last ? [one2.last] : []),
9239
- scheduled: mine.length > 0,
9240
- serving: serving.some((profile) => accountOfProfile(key.provider, tool, profile, env) === key.account)
9265
+ runs: runs.flatMap((one2) => one2.last ? [one2.last] : []),
9266
+ scheduled: runs.length > 0,
9267
+ serving: serving.some((profile) => mine.has(profile)),
9268
+ known: mine.size > 0
9241
9269
  };
9242
9270
  };
9243
9271
  }, "syncRunsOf");
@@ -9247,6 +9275,9 @@ var QUIET_AFTER = 3 * DAY5;
9247
9275
  var QUIET_GAPS = 3;
9248
9276
  var hours = /* @__PURE__ */ __name((from, now) => Math.max(0, Math.floor((now - from) / HOUR)), "hours");
9249
9277
  var healthOf = /* @__PURE__ */ __name((sync, activity, now) => {
9278
+ const recent = /* @__PURE__ */ __name((at) => at !== null && at >= now - DAY5, "recent");
9279
+ if (recent(activity.storedAt) || sync.runs.some((run) => run.exitCode === 0 && recent(Date.parse(run.at))))
9280
+ return void 0;
9250
9281
  if (!sync.serving && sync.runs.length > 0 && sync.runs.every((run) => run.exitCode !== 0)) {
9251
9282
  const first = [...sync.runs].sort((a, b) => (a.failingSince ?? a.at).localeCompare(b.failingSince ?? b.at))[0];
9252
9283
  const since = first?.failingSince ?? first?.at ?? new Date(now).toISOString();
@@ -9257,12 +9288,12 @@ var healthOf = /* @__PURE__ */ __name((sync, activity, now) => {
9257
9288
  ...first?.reason ? { failure: first.reason } : {}
9258
9289
  };
9259
9290
  }
9260
- if (!sync.scheduled && !sync.serving)
9261
- return {
9262
- reason: "no-schedule",
9263
- since: null,
9264
- staleHours: activity.newest === null ? 0 : hours(activity.newest, now)
9265
- };
9291
+ if (!sync.scheduled && !sync.serving) {
9292
+ if (!sync.known)
9293
+ return void 0;
9294
+ const last = activity.newest ?? activity.storedAt;
9295
+ return { reason: "no-schedule", since: null, staleHours: last === null ? 0 : hours(last, now) };
9296
+ }
9266
9297
  if (activity.newest === null || activity.moved30d === 0)
9267
9298
  return void 0;
9268
9299
  const usual = Math.max(QUIET_AFTER, QUIET_GAPS * 30 * DAY5 / activity.moved30d);
@@ -9504,11 +9535,13 @@ var gatherTasks = /* @__PURE__ */ __name(async (store, keys, { now, newSince })
9504
9535
  accounts++;
9505
9536
  for (const task of projects)
9506
9537
  seen.set(task.id, task);
9507
- const counts = { overdue: 0, today: 0, tomorrow: 0, new: 0, newSince };
9538
+ const counts = { overdue: 0, today: 0, tomorrow: 0, new: 0, newSince, undated: 0 };
9508
9539
  const tasks = [];
9509
9540
  for (const task of seen.values()) {
9510
9541
  const groups = [];
9511
9542
  const due = task.dueAt === null ? null : day2(Date.parse(task.dueAt));
9543
+ if (due === null)
9544
+ counts.undated++;
9512
9545
  if (due !== null && due < today2)
9513
9546
  groups.push("overdue");
9514
9547
  if (due === today2)
@@ -9679,7 +9712,8 @@ var gatherDigest = /* @__PURE__ */ __name(async (store, env, { since, now = Date
9679
9712
  const month = (await store.chats.chatActivity(key, now - 30 * DAY7)).chats;
9680
9713
  checkHealth(key, {
9681
9714
  newest: month.reduce((most, chat) => Math.max(most ?? 0, Date.parse(chat.lastMessageAt)), null),
9682
- moved30d: month.length
9715
+ moved30d: month.length,
9716
+ storedAt: storedAt === null ? null : Date.parse(storedAt)
9683
9717
  });
9684
9718
  const ref = /* @__PURE__ */ __name((chat) => formatReference({ type: "chat", provider: key.provider, account: key.account, chat }), "ref");
9685
9719
  chatsMoved += chats.filter((chat) => Date.parse(chat.lastMessageAt) >= since).length;
@@ -9730,7 +9764,8 @@ var gatherDigest = /* @__PURE__ */ __name(async (store, env, { since, now = Date
9730
9764
  const newest = threads.reduce((most, thread) => Math.max(most, thread.lastEmailAt), 0);
9731
9765
  checkHealth(key, {
9732
9766
  newest: newest || null,
9733
- moved30d: threads.filter((thread) => thread.lastEmailAt >= now - 30 * DAY7).length
9767
+ moved30d: threads.filter((thread) => thread.lastEmailAt >= now - 30 * DAY7).length,
9768
+ storedAt: newest || null
9734
9769
  });
9735
9770
  mailMoved += threads.filter((thread) => thread.lastEmailAt >= since && thread.newest !== null && personal(thread.newest)).length;
9736
9771
  coverage.push({
@@ -9989,7 +10024,7 @@ var sinceOf = /* @__PURE__ */ __name((value, now = Date.now()) => {
9989
10024
  return since;
9990
10025
  }, "sinceOf");
9991
10026
  var reviewAgendaCommand = /* @__PURE__ */ __name((review, print, streams, env) => {
9992
- annotate(review.command("agenda"), { effects: LOCAL_READ }).summary("the morning digest: watch list, owed replies, mail, meetings, tasks, projects").description(`the morning digest, from the store alone with no model call: everything new in what you tagged ${WATCH_TAG} (chats, mail threads, people, projects, a meeting's series), replies you owe to people in messengers and personal mail (not bots or service chats), new personal mail, meetings that ended, tasks, projects that moved, proposals waiting. Tasks are the open ones created since the last morning-digest run (a day back when none ran) and those overdue, due today or due tomorrow, each with who asked and who does it. Replies owed reach back 7 days; owed mail lists only senders you know (linked to a person with other identities, or written to before), and mail from new senders is one count with the command that lists it. Each item has its reference, who, when, one line of text and why it is there; a section cut by --limit or --max-output-bytes says how many it left out and the command that reads them. \`scope\` says what was read (the window, sources, counts), \`tasks\` counts each task group, and \`health\` names each account whose sync failed, that nothing syncs, or that is quiet for longer than usual, so an unsynced account does not read as a quiet day`).option("--since-time <time>", "how far back: hours or days (12h, 7d) or a start date (2026-11-01)", "1d").option("--limit <n>", "items per section before the size budget", positive, 25).option("--max-output-bytes <bytes>", "the text answer's size budget in bytes; 40000 with --compact, else 80000", positive).option("--compact", "one line per item, shorter excerpts, the smaller budget: for an agent").option("--json", "print JSON").action(async (given2) => {
10027
+ annotate(review.command("agenda"), { effects: LOCAL_READ }).summary("the morning digest: watch list, owed replies, mail, meetings, tasks, projects").description(`the morning digest, from the store alone with no model call: everything new in what you tagged ${WATCH_TAG} (chats, mail threads, people, projects, a meeting's series), replies you owe to people in messengers and personal mail (not bots or service chats), new personal mail, meetings that ended, tasks, projects that moved, proposals waiting. Tasks are the open ones created since the last morning-digest run (a day back when none ran) and those overdue, due today or due tomorrow, each with who asked and who does it. Replies owed reach back 7 days; owed mail lists only senders you know (linked to a person with other identities, or written to before), and mail from new senders is one count with the command that lists it. Each item has its reference, who, when, one line of text and why it is there; a section cut by --limit or --max-output-bytes says how many it left out and the command that reads them. \`scope\` says what was read (the window, sources, counts), \`tasks\` counts each task group and, as \`undated\`, every open task with no due date, and \`health\` names each account whose sync failed, that nothing syncs, or that is quiet for longer than usual, so an unsynced account does not read as a quiet day; an account stored or synced within a day is never named`).option("--since-time <time>", "how far back: hours or days (12h, 7d) or a start date (2026-11-01)", "1d").option("--limit <n>", "items per section before the size budget", positive, 25).option("--max-output-bytes <bytes>", "the text answer's size budget in bytes; 40000 with --compact, else 80000", positive).option("--compact", "one line per item, shorter excerpts, the smaller budget: for an agent").option("--json", "print JSON").action(async (given2) => {
9993
10028
  if (given2.compact && given2.json)
9994
10029
  throw new CliError("validation_error", "--compact and --json ask for different output \u2014 pick one", {
9995
10030
  reason: "output.conflict",
@@ -3,12 +3,12 @@ const require = __bundleRequire(import.meta.url);
3
3
  import {
4
4
  pasteHint,
5
5
  readSecret
6
- } from "./chunk-4GTZSCUE.js";
7
- import "./chunk-724DPWN6.js";
8
- import "./chunk-EMNQPMZO.js";
9
- import "./chunk-RCGFSWZE.js";
6
+ } from "./chunk-MEPRCROV.js";
7
+ import "./chunk-R4LVHS2N.js";
8
+ import "./chunk-OZBL624P.js";
9
+ import "./chunk-HE2F4JII.js";
10
10
  import "./chunk-Y5E2WNWB.js";
11
- import "./chunk-4ZW6ZJ2V.js";
11
+ import "./chunk-ZTONSM5X.js";
12
12
  import "./chunk-ZVVMGPBJ.js";
13
13
  export {
14
14
  pasteHint,
@@ -8,11 +8,11 @@ import {
8
8
  openRecognizer,
9
9
  openSpeechCutter,
10
10
  toModelRate
11
- } from "./chunk-PKUBC2ME.js";
12
- import "./chunk-EMNQPMZO.js";
13
- import "./chunk-RCGFSWZE.js";
11
+ } from "./chunk-RKLCY7YU.js";
12
+ import "./chunk-OZBL624P.js";
13
+ import "./chunk-HE2F4JII.js";
14
14
  import "./chunk-Y5E2WNWB.js";
15
- import "./chunk-4ZW6ZJ2V.js";
15
+ import "./chunk-ZTONSM5X.js";
16
16
  import "./chunk-ZVVMGPBJ.js";
17
17
  export {
18
18
  SAMPLE_RATE,
@@ -8,14 +8,14 @@ import {
8
8
  openRemote,
9
9
  remoteKey,
10
10
  remoteModel
11
- } from "./chunk-VX4HNQLN.js";
12
- import "./chunk-K5VF47E2.js";
13
- import "./chunk-347UBASY.js";
14
- import "./chunk-NZJUMLTD.js";
15
- import "./chunk-EMNQPMZO.js";
16
- import "./chunk-RCGFSWZE.js";
11
+ } from "./chunk-LRQD4RJN.js";
12
+ import "./chunk-JSFC6TRN.js";
13
+ import "./chunk-CUC7KGX4.js";
14
+ import "./chunk-XMGUKW6Y.js";
15
+ import "./chunk-OZBL624P.js";
16
+ import "./chunk-HE2F4JII.js";
17
17
  import "./chunk-Y5E2WNWB.js";
18
- import "./chunk-4ZW6ZJ2V.js";
18
+ import "./chunk-ZTONSM5X.js";
19
19
  import "./chunk-ZVVMGPBJ.js";
20
20
  export {
21
21
  DEFAULT_OPENAI_MODEL,