@wirecat/cli-memo 0.131.52 → 0.131.54

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 (112) hide show
  1. package/dist/bin/memo.js +2 -2
  2. package/dist/bundle/{all-profiles-ZFVBLT2D.js → all-profiles-PJR2VHDP.js} +5 -5
  3. package/dist/bundle/{anthropic-UG2YHOT7.js → anthropic-ZUDIWREK.js} +3 -3
  4. package/dist/bundle/{app-server-AQYA4TB6.js → app-server-EYNQ4L2V.js} +35 -35
  5. package/dist/bundle/auto-3IGKVB3G.js +86 -0
  6. package/dist/bundle/{bun-QJUFWKEZ.js → bun-W2ZP6I6Z.js} +2 -2
  7. package/dist/bundle/{bun-sqlite-GWVRHYF4.js → bun-sqlite-T2CTJ6AR.js} +2 -2
  8. package/dist/bundle/{chunk-RYY4YRKQ.js → chunk-26QKDK5P.js} +5 -5
  9. package/dist/bundle/{chunk-EEEZGK2J.js → chunk-2NVP4FZH.js} +1 -1
  10. package/dist/bundle/{chunk-NNUP36UQ.js → chunk-34GJQ4ZR.js} +1 -1
  11. package/dist/bundle/{chunk-6PQIXQFD.js → chunk-3MWNNJII.js} +8 -8
  12. package/dist/bundle/{chunk-AU5GAMGM.js → chunk-4335SGVD.js} +2170 -1265
  13. package/dist/bundle/{chunk-M64NVDB4.js → chunk-4VQ7FPNW.js} +3 -3
  14. package/dist/bundle/{chunk-6BVWU2UM.js → chunk-5UM2OEOR.js} +2 -2
  15. package/dist/bundle/{chunk-S7X5ZMQN.js → chunk-643B3X4D.js} +2 -2
  16. package/dist/bundle/{chunk-G52Y3KOO.js → chunk-6NJ5OI2S.js} +1 -1
  17. package/dist/bundle/{chunk-X6XIW76O.js → chunk-7ZO2LAFF.js} +5 -5
  18. package/dist/bundle/{chunk-4ISZPK6D.js → chunk-AF2ZDP3M.js} +1 -1
  19. package/dist/bundle/{chunk-6GF4TIVM.js → chunk-AYY5CYJJ.js} +1 -1
  20. package/dist/bundle/{chunk-2CBOPOC7.js → chunk-B5VQSSL2.js} +12 -12
  21. package/dist/bundle/{chunk-G4Z4WSIG.js → chunk-BC7N6IQ6.js} +1 -1
  22. package/dist/bundle/{chunk-3O46NA2H.js → chunk-BEO6VJ2E.js} +47 -47
  23. package/dist/bundle/{chunk-NIUWQP7F.js → chunk-CADGAURO.js} +28 -28
  24. package/dist/bundle/{chunk-ETYAJPIT.js → chunk-DDD3CXHR.js} +20 -20
  25. package/dist/bundle/{chunk-ERZBEQAY.js → chunk-DIFRVXKQ.js} +297 -261
  26. package/dist/bundle/{chunk-U4ZD5SYO.js → chunk-FUINFNUC.js} +1 -1
  27. package/dist/bundle/{chunk-IALGFO44.js → chunk-GESLAB4N.js} +2 -2
  28. package/dist/bundle/{chunk-LUHMRW3P.js → chunk-HIF4YBD7.js} +4 -4
  29. package/dist/bundle/{chunk-FWCFEJWD.js → chunk-IRFHHNSX.js} +159 -151
  30. package/dist/bundle/{chunk-VOWEZBOJ.js → chunk-IVDBHH3N.js} +1 -1
  31. package/dist/bundle/{chunk-7SVHEGRO.js → chunk-JB43Q2QL.js} +1 -1
  32. package/dist/bundle/{chunk-ZVR6S4XB.js → chunk-JBQP2M7J.js} +7 -7
  33. package/dist/bundle/{chunk-MICF3K6S.js → chunk-JGY2PJ3N.js} +12 -12
  34. package/dist/bundle/{chunk-55GFDV24.js → chunk-JI4LJ563.js} +5 -5
  35. package/dist/bundle/{chunk-N5J6GT7C.js → chunk-K236JZLF.js} +4 -4
  36. package/dist/bundle/{chunk-NZKDNBYE.js → chunk-KK2ATSEC.js} +6 -6
  37. package/dist/bundle/{chunk-XIHQOSCT.js → chunk-KTVYCPJW.js} +1 -1
  38. package/dist/bundle/{chunk-ZKXIZD4C.js → chunk-LCE5LBZC.js} +4 -4
  39. package/dist/bundle/{chunk-EQUPZVV6.js → chunk-ME5RFKKD.js} +5 -5
  40. package/dist/bundle/{chunk-EKQNL6VJ.js → chunk-MFVZXEQN.js} +21 -21
  41. package/dist/bundle/{chunk-IKG2OPHU.js → chunk-MGDBKE7E.js} +6 -6
  42. package/dist/bundle/{chunk-6ZQK3L35.js → chunk-MU4MPJCU.js} +2 -2
  43. package/dist/bundle/{chunk-A36ASW3I.js → chunk-MV5W4FLV.js} +1 -1
  44. package/dist/bundle/{chunk-AGOUP5AH.js → chunk-O7CBAY6J.js} +4 -4
  45. package/dist/bundle/{chunk-I4LXP4HQ.js → chunk-OKERVM3M.js} +4 -4
  46. package/dist/bundle/{chunk-LX65W7IK.js → chunk-OQVLH2BS.js} +4 -4
  47. package/dist/bundle/{chunk-G7K4J3NS.js → chunk-OSPAMIIY.js} +3 -3
  48. package/dist/bundle/{chunk-5WT6SEXS.js → chunk-P3MKPY7D.js} +21 -9
  49. package/dist/bundle/{chunk-PKVXZZTM.js → chunk-P5UTNYA7.js} +2 -2
  50. package/dist/bundle/{chunk-2GEV2TXW.js → chunk-PHP3T567.js} +3 -3
  51. package/dist/bundle/{chunk-OIPJYDLZ.js → chunk-PSJB456T.js} +1 -1
  52. package/dist/bundle/{chunk-65576OCE.js → chunk-RSBROHX4.js} +1 -1
  53. package/dist/bundle/{chunk-NUQ3N3V3.js → chunk-RX6JTLKD.js} +7 -7
  54. package/dist/bundle/{chunk-KGPD3OCD.js → chunk-SR3ZNX24.js} +259 -154
  55. package/dist/bundle/{chunk-NOEXRGYH.js → chunk-T5WGWLY2.js} +10 -10
  56. package/dist/bundle/{chunk-ZVJAZXME.js → chunk-UBZN4EWJ.js} +4 -4
  57. package/dist/bundle/{chunk-OWS67HTV.js → chunk-VBYV6XQI.js} +2 -2
  58. package/dist/bundle/{chunk-ZYQEWB6P.js → chunk-VPCNLTME.js} +2 -2
  59. package/dist/bundle/{chunk-TM6R3Z45.js → chunk-VQTU4ILC.js} +1 -1
  60. package/dist/bundle/{chunk-PBM5GH7S.js → chunk-VXZ7FWKU.js} +2 -2
  61. package/dist/bundle/{chunk-TQS6ZKC3.js → chunk-WYZDNDQ5.js} +266 -265
  62. package/dist/bundle/{chunk-GJWNHWG7.js → chunk-YHHR7NQ3.js} +51 -36
  63. package/dist/bundle/{chunk-A7DXLOMS.js → chunk-ZRBXOHNH.js} +1 -1
  64. package/dist/bundle/{chunk-U6E3BGHO.js → chunk-ZTM4UUCP.js} +9 -9
  65. package/dist/bundle/{command-contract-7AADJ3UC.js → command-contract-EWPKHGAZ.js} +11 -11
  66. package/dist/bundle/{decode-XMIBTI5O.js → decode-UWT3Y66W.js} +2 -2
  67. package/dist/bundle/{echarts-W7DPDJA5.js → echarts-7VGTR45R.js} +2 -2
  68. package/dist/bundle/{embed-EP3KKO6Y.js → embed-CM2QSTNK.js} +3 -3
  69. package/dist/bundle/{embedder-ENGCALJ7.js → embedder-CDCAMVV7.js} +6 -6
  70. package/dist/bundle/{entry-BGSKREOS.js → entry-WHEWBNJL.js} +4 -4
  71. package/dist/bundle/failure-LGDSH47N.js +66 -0
  72. package/dist/bundle/{first-run-4EBMV2EM.js → first-run-ZBIQO5RZ.js} +5 -5
  73. package/dist/bundle/{first-screen-2TM3BF2Y.js → first-screen-CUAY5N6E.js} +12 -12
  74. package/dist/bundle/{instructions-A42XETMK.js → instructions-LYKSTUGQ.js} +1 -1
  75. package/dist/bundle/{mcp-5LAWRSJK.js → mcp-I72UY3QP.js} +35 -35
  76. package/dist/bundle/memo.js +6 -6
  77. package/dist/bundle/{node-IRL66JK2.js → node-LFRTSZBZ.js} +2 -2
  78. package/dist/bundle/{node-sqlite-SOGTH72B.js → node-sqlite-Y47T5FTT.js} +3 -3
  79. package/dist/bundle/{oauth-RB5W3AC7.js → oauth-YM5C6VS3.js} +4 -4
  80. package/dist/bundle/{open-552EJ4JC.js → open-WPA4DW5G.js} +2 -2
  81. package/dist/bundle/{openai-ZLOHEEDH.js → openai-RCPT23DA.js} +7 -7
  82. package/dist/bundle/{process-46SUXGWW.js → process-P2X2KFMR.js} +1 -1
  83. package/dist/bundle/{program-ZLWKMT65.js → program-AJPT7C4I.js} +190 -106
  84. package/dist/bundle/{prompt-2NHJSYKX.js → prompt-65WPTVYC.js} +2 -2
  85. package/dist/bundle/{recognize-2LDM6KHL.js → recognize-MEFMK7HT.js} +1 -1
  86. package/dist/bundle/{remote-DBYHHENF.js → remote-4XIR3ZYK.js} +4 -4
  87. package/dist/bundle/{rerank-N5T2TIIY.js → rerank-YRLAXFFL.js} +4 -4
  88. package/dist/bundle/{serve-S6B54R2F.js → serve-6SPZH6CY.js} +6 -6
  89. package/dist/bundle/server-FB75UHSF.js +48 -0
  90. package/dist/bundle/server-IELXA6S2.js +61 -0
  91. package/dist/bundle/{server-QH6AKPRV.js → server-ISFSZGGI.js} +50 -50
  92. package/dist/bundle/{state-ZXZGIIJW.js → state-G34NVZ7F.js} +3 -3
  93. package/dist/bundle/{store-PNJNDMQ4.js → store-6U4SYK4Q.js} +17 -9
  94. package/dist/bundle/store-maintenance-command-ONVPBZLT.js +48 -0
  95. package/dist/bundle/update-SAJHFRB2.js +69 -0
  96. package/dist/knowledge/relationships.d.ts +5 -1
  97. package/dist/knowledge/relationships.d.ts.map +1 -1
  98. package/dist/schedule/mail-triage-input.d.ts +21 -5
  99. package/dist/schedule/mail-triage-input.d.ts.map +1 -1
  100. package/dist/schedule/mail-triage-input.js +111 -12
  101. package/dist/schedule/mail-triage-input.js.map +1 -1
  102. package/dist/version.d.ts +1 -1
  103. package/dist/version.js +1 -1
  104. package/package.json +2 -2
  105. package/skills/morning-digest/SKILL.md +38 -13
  106. package/dist/bundle/auto-2AY6K6DI.js +0 -86
  107. package/dist/bundle/failure-ZKQVXWAB.js +0 -66
  108. package/dist/bundle/server-KZZHFPTZ.js +0 -61
  109. package/dist/bundle/server-WAIPBBM7.js +0 -48
  110. package/dist/bundle/store-maintenance-command-2ZVV3DGA.js +0 -48
  111. package/dist/bundle/update-6HXLLGTQ.js +0 -69
  112. /package/dist/bundle/{chunk-DPRGC5YX.js → chunk-2H36DXV7.js} +0 -0
@@ -6,17 +6,17 @@ import {
6
6
  autoState,
7
7
  lastAutoRun,
8
8
  recordAutoRun
9
- } from "./chunk-LX65W7IK.js";
9
+ } from "./chunk-OQVLH2BS.js";
10
10
  import {
11
11
  installer,
12
12
  latest,
13
13
  upgradeCommand
14
- } from "./chunk-55GFDV24.js";
14
+ } from "./chunk-JI4LJ563.js";
15
15
  import {
16
16
  mcpOwnerAllowed,
17
17
  readOnlyAvailability,
18
18
  refuseWritesUnderLock
19
- } from "./chunk-EQUPZVV6.js";
19
+ } from "./chunk-ME5RFKKD.js";
20
20
  import {
21
21
  answers,
22
22
  atDetail,
@@ -26,7 +26,7 @@ import {
26
26
  trackAnswers,
27
27
  wholeList,
28
28
  withStore
29
- } from "./chunk-N5J6GT7C.js";
29
+ } from "./chunk-K236JZLF.js";
30
30
  import {
31
31
  ATTACHMENT_CHARS,
32
32
  DIALECTS,
@@ -56,16 +56,17 @@ import {
56
56
  showMail,
57
57
  unsetConfigKey,
58
58
  updateConfig
59
- } from "./chunk-GJWNHWG7.js";
59
+ } from "./chunk-YHHR7NQ3.js";
60
60
  import "./chunk-QP3KNC5D.js";
61
- import "./chunk-6BVWU2UM.js";
62
- import "./chunk-ZVR6S4XB.js";
63
- import "./chunk-2GEV2TXW.js";
61
+ import "./chunk-5UM2OEOR.js";
62
+ import "./chunk-JBQP2M7J.js";
63
+ import "./chunk-PHP3T567.js";
64
64
  import {
65
65
  errorObject,
66
66
  recognisable
67
- } from "./chunk-LUHMRW3P.js";
67
+ } from "./chunk-HIF4YBD7.js";
68
68
  import {
69
+ AGENT_INPUT_MAX_CHARS,
69
70
  DISCOVERY_DESCRIPTIONS,
70
71
  DOCTOR_DEEP_OPTION,
71
72
  addContractInfo,
@@ -101,23 +102,23 @@ import {
101
102
  tasksCommand,
102
103
  tasksStatsCommand,
103
104
  withSqliteSidecars
104
- } from "./chunk-ERZBEQAY.js";
105
- import "./chunk-NNUP36UQ.js";
106
- import "./chunk-7SVHEGRO.js";
105
+ } from "./chunk-DIFRVXKQ.js";
106
+ import "./chunk-34GJQ4ZR.js";
107
+ import "./chunk-JB43Q2QL.js";
107
108
  import {
108
109
  allHitItem,
109
110
  coverageGaps,
110
111
  messageHitItem,
111
112
  noteHitItem,
112
113
  shownOf
113
- } from "./chunk-ETYAJPIT.js";
114
- import "./chunk-G4Z4WSIG.js";
114
+ } from "./chunk-DDD3CXHR.js";
115
+ import "./chunk-BC7N6IQ6.js";
115
116
  import {
116
117
  SKILL_TARGETS,
117
118
  skillCommand,
118
119
  skillPath,
119
120
  skillVersion
120
- } from "./chunk-5WT6SEXS.js";
121
+ } from "./chunk-P3MKPY7D.js";
121
122
  import {
122
123
  modelGateway,
123
124
  recoveryNotes,
@@ -125,8 +126,8 @@ import {
125
126
  storeRecoveryCheck,
126
127
  storeRecoveryRun,
127
128
  storeSummary
128
- } from "./chunk-3O46NA2H.js";
129
- import "./chunk-EKQNL6VJ.js";
129
+ } from "./chunk-BEO6VJ2E.js";
130
+ import "./chunk-MFVZXEQN.js";
130
131
  import {
131
132
  LIST_QUERY_GUIDE,
132
133
  STATUS_SIGNALS,
@@ -178,18 +179,18 @@ import {
178
179
  termField,
179
180
  typedQuery,
180
181
  withQuery
181
- } from "./chunk-TQS6ZKC3.js";
182
+ } from "./chunk-WYZDNDQ5.js";
182
183
  import {
183
184
  readBoundedUtf8File,
184
185
  writeFileAtomic
185
- } from "./chunk-MICF3K6S.js";
186
+ } from "./chunk-JGY2PJ3N.js";
186
187
  import {
187
188
  commandsText,
188
189
  inSection,
189
190
  installHelp
190
- } from "./chunk-NZKDNBYE.js";
191
+ } from "./chunk-KK2ATSEC.js";
191
192
  import "./chunk-HTQTIKWP.js";
192
- import "./chunk-PBM5GH7S.js";
193
+ import "./chunk-VXZ7FWKU.js";
193
194
  import {
194
195
  Command,
195
196
  FETCH,
@@ -220,26 +221,23 @@ import {
220
221
  settingRows,
221
222
  settingsFor,
222
223
  snakeKeys
223
- } from "./chunk-FWCFEJWD.js";
224
- import "./chunk-IKG2OPHU.js";
225
- import "./chunk-NOEXRGYH.js";
224
+ } from "./chunk-IRFHHNSX.js";
225
+ import "./chunk-MGDBKE7E.js";
226
+ import "./chunk-T5WGWLY2.js";
226
227
  import {
227
228
  isNewer
228
229
  } from "./chunk-MZMJALJT.js";
229
230
  import "./chunk-6G53ZFUT.js";
230
- import "./chunk-M64NVDB4.js";
231
- import "./chunk-U6E3BGHO.js";
232
- import "./chunk-G52Y3KOO.js";
233
- import "./chunk-I4LXP4HQ.js";
231
+ import "./chunk-4VQ7FPNW.js";
232
+ import "./chunk-ZTM4UUCP.js";
233
+ import "./chunk-6NJ5OI2S.js";
234
+ import "./chunk-OKERVM3M.js";
234
235
  import {
235
236
  releaseLock,
236
237
  takeLock
237
- } from "./chunk-6ZQK3L35.js";
238
- import "./chunk-6GF4TIVM.js";
238
+ } from "./chunk-MU4MPJCU.js";
239
+ import "./chunk-AYY5CYJJ.js";
239
240
  import {
240
- DEAL_KINDS,
241
- DEAL_ROLES,
242
- DEAL_STATUSES,
243
241
  EVIDENCE_FINDINGS_KIND,
244
242
  MAIL_FINDINGS_KIND,
245
243
  MAX_FILE_BYTES,
@@ -274,8 +272,11 @@ import {
274
272
  plainQuery,
275
273
  providerNamed,
276
274
  refLabel
277
- } from "./chunk-AU5GAMGM.js";
275
+ } from "./chunk-4335SGVD.js";
278
276
  import {
277
+ DEAL_KINDS,
278
+ DEAL_ROLES,
279
+ DEAL_STATUSES,
279
280
  FACT_STATUSES,
280
281
  FACT_TYPES,
281
282
  FINANCE_REVIEWS,
@@ -309,22 +310,22 @@ import {
309
310
  timezoneOf,
310
311
  validateQuery,
311
312
  walkQuery
312
- } from "./chunk-KGPD3OCD.js";
313
- import "./chunk-PKVXZZTM.js";
314
- import "./chunk-NUQ3N3V3.js";
315
- import "./chunk-ZVJAZXME.js";
316
- import "./chunk-S7X5ZMQN.js";
317
- import "./chunk-OIPJYDLZ.js";
318
- import "./chunk-EEEZGK2J.js";
319
- import "./chunk-XIHQOSCT.js";
320
- import "./chunk-ZYQEWB6P.js";
321
- import "./chunk-RYY4YRKQ.js";
313
+ } from "./chunk-SR3ZNX24.js";
314
+ import "./chunk-P5UTNYA7.js";
315
+ import "./chunk-RX6JTLKD.js";
316
+ import "./chunk-UBZN4EWJ.js";
317
+ import "./chunk-643B3X4D.js";
318
+ import "./chunk-PSJB456T.js";
319
+ import "./chunk-2NVP4FZH.js";
320
+ import "./chunk-KTVYCPJW.js";
321
+ import "./chunk-VPCNLTME.js";
322
+ import "./chunk-26QKDK5P.js";
322
323
  import {
323
324
  sharedModelsDirectory
324
- } from "./chunk-G7K4J3NS.js";
325
+ } from "./chunk-OSPAMIIY.js";
325
326
  import {
326
327
  storePath
327
- } from "./chunk-65576OCE.js";
328
+ } from "./chunk-RSBROHX4.js";
328
329
  import {
329
330
  provideTerminal,
330
331
  terminalOf
@@ -334,12 +335,12 @@ import {
334
335
  REASONS,
335
336
  STORE_CLIENT,
336
337
  VERSION
337
- } from "./chunk-A7DXLOMS.js";
338
+ } from "./chunk-ZRBXOHNH.js";
338
339
  import "./chunk-IK6KH3RE.js";
339
340
  import "./chunk-SW6C6WH5.js";
340
341
  import "./chunk-D72URWJE.js";
341
- import "./chunk-X6XIW76O.js";
342
- import "./chunk-A36ASW3I.js";
342
+ import "./chunk-7ZO2LAFF.js";
343
+ import "./chunk-MV5W4FLV.js";
343
344
  import {
344
345
  createDeadline,
345
346
  createRenderer,
@@ -378,7 +379,7 @@ import {
378
379
  errorCodes,
379
380
  isCliError
380
381
  } from "./chunk-4ZW6ZJ2V.js";
381
- import "./chunk-TM6R3Z45.js";
382
+ import "./chunk-VQTU4ILC.js";
382
383
  import {
383
384
  __name
384
385
  } from "./chunk-ZVVMGPBJ.js";
@@ -663,7 +664,7 @@ var collect = /* @__PURE__ */ __name((value, previous = []) => [...previous, val
663
664
  var readScope = /* @__PURE__ */ __name((command, help = ONE_ACCOUNT_HELP) => sourceOptions(command, help).option("--json", "print JSON; --json=id,title keeps only those fields"), "readScope");
664
665
  var writeScope = /* @__PURE__ */ __name((command, help) => writeOptions(command, help).option("--json", "print JSON; --json=id,title keeps only those fields"), "writeScope");
665
666
 
666
- // node_modules/.pnpm/@wirecat+cli-core@0.605.0_@wirecat+cli-base@0.82.0_commander@15.0.0_esbuild@0.28.2_type_eae6fabbffc2c6fec7070a9f7231a4be/node_modules/@wirecat/cli-core/dist/mail/sender-scores.js
667
+ // node_modules/.pnpm/@wirecat+cli-core@0.606.0_@wirecat+cli-base@0.82.0_commander@15.0.0_esbuild@0.28.2_type_66b8ac22c245eeaba8c329faa5b17078/node_modules/@wirecat/cli-core/dist/mail/sender-scores.js
667
668
  var SCORED = "mail_sender_scores";
668
669
  var DAY = 864e5;
669
670
  var RECENT = 2 * 365 * DAY;
@@ -679,7 +680,7 @@ var demotedSenders = /* @__PURE__ */ __name(async (store) => {
679
680
  return senders;
680
681
  }, "demotedSenders");
681
682
 
682
- // node_modules/.pnpm/@wirecat+cli-core@0.605.0_@wirecat+cli-base@0.82.0_commander@15.0.0_esbuild@0.28.2_type_eae6fabbffc2c6fec7070a9f7231a4be/node_modules/@wirecat/cli-core/dist/mail/sync.js
683
+ // node_modules/.pnpm/@wirecat+cli-core@0.606.0_@wirecat+cli-base@0.82.0_commander@15.0.0_esbuild@0.28.2_type_66b8ac22c245eeaba8c329faa5b17078/node_modules/@wirecat/cli-core/dist/mail/sync.js
683
684
  var DAY2 = 864e5;
684
685
  var EDGE = 2 * DAY2;
685
686
 
@@ -912,7 +913,7 @@ var reviewText = /* @__PURE__ */ __name((items, hasMore) => {
912
913
  for (const item of items)
913
914
  groups.set(sourceOf2(item), [...groups.get(sourceOf2(item)) ?? [], item]);
914
915
  const pad = " ".repeat(width);
915
- const lines = [...groups].flatMap(([source, group], at) => [
916
+ const lines2 = [...groups].flatMap(([source, group], at) => [
916
917
  ...at === 0 ? [] : [""],
917
918
  source,
918
919
  ...group.flatMap((item) => {
@@ -931,7 +932,7 @@ var reviewText = /* @__PURE__ */ __name((items, hasMore) => {
931
932
  return [head, ...why ? [`${pad} ${why}`] : [], ...parts];
932
933
  })
933
934
  ]);
934
- return [...lines, `${items.length} shown${hasMore ? ", more with --page" : ""}`].join("\n");
935
+ return [...lines2, `${items.length} shown${hasMore ? ", more with --page" : ""}`].join("\n");
935
936
  }, "reviewText");
936
937
  var decidedText = /* @__PURE__ */ __name(({ decided, refused }) => [
937
938
  ...decided.map((one2) => `${one2.status.padEnd(9)} ${one2.id}${one2.made.length ? ` \u2192 ${one2.made.join(" ")}` : ""}`),
@@ -1821,8 +1822,8 @@ var configCommand = /* @__PURE__ */ __name((program, streams, env) => {
1821
1822
  const values = rows.map((row) => `${JSON.stringify(row.value)}${row.from === "default" ? " (default)" : ""}`);
1822
1823
  const wide = /* @__PURE__ */ __name((texts) => texts.reduce((most, text3) => Math.max(most, text3.length), 0), "wide");
1823
1824
  const [settingWidth, valueWidth] = [wide(rows.map((row) => row.setting)), wide(values)];
1824
- const lines = rows.map((row, at) => `${row.setting.padEnd(settingWidth)} ${values[at]?.padEnd(valueWidth)} ${row.description}`);
1825
- print(options.json, itemAnswer({ path: configPath(env), found: raw !== void 0, settings: rows }), [configPath(env), ...lines].join("\n"));
1825
+ const lines2 = rows.map((row, at) => `${row.setting.padEnd(settingWidth)} ${values[at]?.padEnd(valueWidth)} ${row.description}`);
1826
+ print(options.json, itemAnswer({ path: configPath(env), found: raw !== void 0, settings: rows }), [configPath(env), ...lines2].join("\n"));
1826
1827
  });
1827
1828
  annotate(config.command("migrate"), { effects: LOCAL_WRITE }).description("write each setting the file lacks at its default, keeping yours").option("--json", "print JSON; --json=id,title keeps only those fields").action((options) => {
1828
1829
  const added = migrateConfig(env);
@@ -1918,7 +1919,7 @@ import { createHash } from "node:crypto";
1918
1919
  import { existsSync, readFileSync as readFileSync2, statSync } from "node:fs";
1919
1920
  import { basename, extname, relative, sep } from "node:path";
1920
1921
 
1921
- // node_modules/.pnpm/@wirecat+cli-core@0.605.0_@wirecat+cli-base@0.82.0_commander@15.0.0_esbuild@0.28.2_type_eae6fabbffc2c6fec7070a9f7231a4be/node_modules/@wirecat/cli-core/dist/services/documents/extraction.js
1922
+ // node_modules/.pnpm/@wirecat+cli-core@0.606.0_@wirecat+cli-base@0.82.0_commander@15.0.0_esbuild@0.28.2_type_66b8ac22c245eeaba8c329faa5b17078/node_modules/@wirecat/cli-core/dist/services/documents/extraction.js
1922
1923
  var Proposal = object({
1923
1924
  kind: picklist(["summary", "digest", "fact", "preference"]),
1924
1925
  body: pipe(string(), trim(), minLength(1), maxLength(15e3)),
@@ -1926,10 +1927,10 @@ var Proposal = object({
1926
1927
  });
1927
1928
  var Proposals = object({ items: pipe(array(Proposal), maxLength(20)) });
1928
1929
 
1929
- // node_modules/.pnpm/@wirecat+cli-core@0.605.0_@wirecat+cli-base@0.82.0_commander@15.0.0_esbuild@0.28.2_type_eae6fabbffc2c6fec7070a9f7231a4be/node_modules/@wirecat/cli-core/dist/services/documents/mirrors.js
1930
+ // node_modules/.pnpm/@wirecat+cli-core@0.606.0_@wirecat+cli-base@0.82.0_commander@15.0.0_esbuild@0.28.2_type_66b8ac22c245eeaba8c329faa5b17078/node_modules/@wirecat/cli-core/dist/services/documents/mirrors.js
1930
1931
  var ID = pipe(string(), regex(/^[A-Za-z0-9_-]{1,200}$/));
1931
1932
 
1932
- // node_modules/.pnpm/@wirecat+cli-core@0.605.0_@wirecat+cli-base@0.82.0_commander@15.0.0_esbuild@0.28.2_type_eae6fabbffc2c6fec7070a9f7231a4be/node_modules/@wirecat/cli-core/dist/services/documents/sync.js
1933
+ // node_modules/.pnpm/@wirecat+cli-core@0.606.0_@wirecat+cli-base@0.82.0_commander@15.0.0_esbuild@0.28.2_type_66b8ac22c245eeaba8c329faa5b17078/node_modules/@wirecat/cli-core/dist/services/documents/sync.js
1933
1934
  var MAX_PICTURE_BYTES = 25 * 1024 * 1024;
1934
1935
 
1935
1936
  // dist/notes/dates.js
@@ -4974,9 +4975,9 @@ var financeText = /* @__PURE__ */ __name((block) => block.length === 0 ? [] : [
4974
4975
  "books (confirmed invoices and payments):",
4975
4976
  ...block.map((one2) => {
4976
4977
  const refs = [...one2.invoices, ...one2.payments];
4977
- const shown = refs.slice(0, 6).join(" ") + (refs.length > 6 ? ` +${refs.length - 6}` : "");
4978
+ const shown2 = refs.slice(0, 6).join(" ") + (refs.length > 6 ? ` +${refs.length - 6}` : "");
4978
4979
  const loose = one2.unallocated === moneyOf(0, one2.currency).amount ? "" : `, ${one2.unallocated} not matched`;
4979
- return ` ${WHO[one2.direction]} ${one2.currency}: billed ${one2.billed}, paid ${one2.paid}, owed ${one2.owed}${loose} \xB7 ${shown}`;
4980
+ return ` ${WHO[one2.direction]} ${one2.currency}: billed ${one2.billed}, paid ${one2.paid}, owed ${one2.owed}${loose} \xB7 ${shown2}`;
4980
4981
  })
4981
4982
  ], "financeText");
4982
4983
 
@@ -5795,9 +5796,9 @@ var runChild = /* @__PURE__ */ __name((command, args, { env, signal, onStderr })
5795
5796
  stdout += chunk;
5796
5797
  });
5797
5798
  child.stderr.setEncoding("utf8").on("data", (chunk) => {
5798
- const lines = (pending2 + chunk).split("\n");
5799
- pending2 = lines.pop() ?? "";
5800
- for (const line3 of lines)
5799
+ const lines2 = (pending2 + chunk).split("\n");
5800
+ pending2 = lines2.pop() ?? "";
5801
+ for (const line3 of lines2)
5801
5802
  if (line3)
5802
5803
  onStderr?.(line3);
5803
5804
  });
@@ -6871,12 +6872,12 @@ var messagesCommand = /* @__PURE__ */ __name((program, streams, env) => {
6871
6872
  return;
6872
6873
  }
6873
6874
  const emails = await withStore(env, async (store) => {
6874
- const shown = await showMail(store, reference2, {
6875
+ const shown2 = await showMail(store, reference2, {
6875
6876
  before: options.beforeN,
6876
6877
  after: options.afterN,
6877
6878
  full: options.full === true
6878
6879
  });
6879
- return Promise.all(shown.map(async (email) => ({
6880
+ return Promise.all(shown2.map(async (email) => ({
6880
6881
  ...email,
6881
6882
  ...options.trimmed ? { text: mailOwnText(email.text) } : {},
6882
6883
  ref: email.locator,
@@ -6906,10 +6907,10 @@ var mcpCommandDefinition = /* @__PURE__ */ __name((program, streams, env, create
6906
6907
  }).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) => {
6907
6908
  if (!options.http && (options.port !== void 0 || options.publicUrl !== void 0))
6908
6909
  throw new CliError("validation_error", "--port and --public-url require --http");
6909
- const { createMemoServer } = await import("./server-QH6AKPRV.js");
6910
+ const { createMemoServer } = await import("./server-ISFSZGGI.js");
6910
6911
  const build = /* @__PURE__ */ __name(() => createMemoServer(env, createProgram2, options.permission), "build");
6911
6912
  if (options.http) {
6912
- const { httpLockFile, mcpUrlOf, portOf, publicUrlOf, serveOverHttp } = await import("./mcp-5LAWRSJK.js");
6913
+ const { httpLockFile, mcpUrlOf, portOf, publicUrlOf, serveOverHttp } = await import("./mcp-I72UY3QP.js");
6913
6914
  const publicUrl = publicUrlOf(options.publicUrl, {
6914
6915
  missing: "--http",
6915
6916
  reaches: "the browser apps reach memo",
@@ -6961,7 +6962,7 @@ var mcpCommandDefinition = /* @__PURE__ */ __name((program, streams, env, create
6961
6962
  });
6962
6963
  });
6963
6964
  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() {
6964
- const { revokeAll } = await import("./mcp-5LAWRSJK.js");
6965
+ const { revokeAll } = await import("./mcp-I72UY3QP.js");
6965
6966
  revokeAll(httpTokenFile(env));
6966
6967
  out.print(this.opts().json, itemAnswer({ revoked: true }));
6967
6968
  });
@@ -6977,7 +6978,7 @@ var mcpCommandDefinition = /* @__PURE__ */ __name((program, streams, env, create
6977
6978
  argv: ["mcp", "serve", "--http"],
6978
6979
  version: APP.version
6979
6980
  }), "target"),
6980
- answer: /* @__PURE__ */ __name((self, item, lines) => out.print(self.opts().json, itemAnswer(item), lines.join("\n")), "answer")
6981
+ answer: /* @__PURE__ */ __name((self, item, lines2) => out.print(self.opts().json, itemAnswer(item), lines2.join("\n")), "answer")
6981
6982
  });
6982
6983
  for (const command of server.commands)
6983
6984
  command.option("--json", "print JSON");
@@ -7097,46 +7098,46 @@ var prepareStoredMeeting = /* @__PURE__ */ __name(async (store, env, source, ser
7097
7098
 
7098
7099
  // dist/meetings/preparation-text.js
7099
7100
  var preparationText = /* @__PURE__ */ __name((item) => {
7100
- const lines = [
7101
+ const lines2 = [
7101
7102
  `${item.series?.title ?? item.upcoming.meeting_id} \u2014 stored meeting preparation`,
7102
7103
  "Next meeting: unverified; no provider calendar was read.",
7103
7104
  `History: ${item.history_window.after} to ${item.history_window.before} (exclusive)`,
7104
7105
  `Archive completeness: ${item.coverage.archive_completeness}`
7105
7106
  ];
7106
7107
  for (const entry of [...item.meetings, ...item.related.items]) {
7107
- lines.push("", `${entry.ref} ${entry.meeting.started_at ?? "undated"} ${entry.meeting.title ?? "untitled"}`);
7108
+ lines2.push("", `${entry.ref} ${entry.meeting.started_at ?? "undated"} ${entry.meeting.title ?? "untitled"}`);
7108
7109
  for (const cue of entry.evidence.items)
7109
- lines.push(` ${cue.ref} ${cue.speaker_name ?? "unknown speaker"}: ${cue.text}`);
7110
+ lines2.push(` ${cue.ref} ${cue.speaker_name ?? "unknown speaker"}: ${cue.text}`);
7110
7111
  if (entry.evidence.coverage.has_more)
7111
- lines.push(" More transcript evidence available; use --json for references.");
7112
+ lines2.push(" More transcript evidence available; use --json for references.");
7112
7113
  }
7113
7114
  if (!item.meetings.length)
7114
- lines.push("No stored occurrences found in this series and history window.");
7115
+ lines2.push("No stored occurrences found in this series and history window.");
7115
7116
  for (const fact of item.knowledge?.items ?? [])
7116
- lines.push(`Fact ${fact.ref}: ${fact.statement}`);
7117
+ lines2.push(`Fact ${fact.ref}: ${fact.statement}`);
7117
7118
  for (const note of item.notes?.items ?? [])
7118
- lines.push(`Note ${note.ref}: ${note.text}`);
7119
+ lines2.push(`Note ${note.ref}: ${note.text}`);
7119
7120
  if (item.project_evidence)
7120
- lines.push(`Project word evidence: ${item.project_evidence.project}; use --json to inspect candidates.`);
7121
+ lines2.push(`Project word evidence: ${item.project_evidence.project}; use --json to inspect candidates.`);
7121
7122
  if (item.communications) {
7122
- lines.push("", `Communications: literal words \u201C${item.communications.coverage.query}\u201D`);
7123
+ lines2.push("", `Communications: literal words \u201C${item.communications.coverage.query}\u201D`);
7123
7124
  for (const source of item.communications.coverage.sources) {
7124
- lines.push(` ${source.selection_id}: ${source.state}; index ${source.index}; completeness ${source.completeness}`);
7125
+ lines2.push(` ${source.selection_id}: ${source.state}; index ${source.index}; completeness ${source.completeness}`);
7125
7126
  if (source.has_more)
7126
- lines.push(" More matches available; use --json for the source cursor.");
7127
+ lines2.push(" More matches available; use --json for the source cursor.");
7127
7128
  if (source.restart_required)
7128
- lines.push(" Some matches were omitted; restart with a larger output budget.");
7129
+ lines2.push(" Some matches were omitted; restart with a larger output budget.");
7129
7130
  }
7130
7131
  for (const excerpt2 of item.communications.items)
7131
- lines.push(`${excerpt2.ref} ${excerpt2.at}: ${excerpt2.text}`);
7132
+ lines2.push(`${excerpt2.ref} ${excerpt2.at}: ${excerpt2.text}`);
7132
7133
  } else
7133
- lines.push("Communications: not queried; select --context-source and --context-query to include them.");
7134
+ lines2.push("Communications: not queried; select --context-source and --context-query to include them.");
7134
7135
  if (item.coverage.history_has_more)
7135
- lines.push("More series history available; raise --meetings.");
7136
+ lines2.push("More series history available; raise --meetings.");
7136
7137
  if (item.coverage.output_limited)
7137
- lines.push("Output limited; raise --bytes to include more evidence.");
7138
- lines.push("Use --json for linked people, projects, facts, notes, tasks and full coverage.");
7139
- return lines.join("\n");
7138
+ lines2.push("Output limited; raise --bytes to include more evidence.");
7139
+ lines2.push("Use --json for linked people, projects, facts, notes, tasks and full coverage.");
7140
+ return lines2.join("\n");
7140
7141
  }, "preparationText");
7141
7142
 
7142
7143
  // dist/meetings/preparation-command.js
@@ -8403,22 +8404,22 @@ var reviewCommand = /* @__PURE__ */ __name((program, streams, env) => {
8403
8404
  });
8404
8405
  json6(annotate(review.command("show"), { effects: LOCAL_READ })).description("one proposal with its titles, signals and the text around each piece of evidence").argument("<id>", "the proposal's id, as review lists it: 17070, fact:512, memory:88, link:17, payment:4, close:Q-15").option("--brief", "only references and their titles, without excerpts or nearby text").option("--before-n <n>", "messages or document paragraphs before the evidence, at most 5", whole, 2).option("--after-n <n>", "messages or document paragraphs after the evidence, at most 5", whole, 2).option("--compact", "one line, as review prints it").action(async (id, given) => {
8405
8406
  const body = await withStore(env, async (store) => {
8406
- const shown = await showReview(store, env, id);
8407
+ const shown2 = await showReview(store, env, id);
8407
8408
  const window = {
8408
8409
  brief: given.brief === true,
8409
8410
  before: Math.min(given.beforeN, 5),
8410
8411
  after: Math.min(given.afterN, 5)
8411
8412
  };
8412
- const evidence = await Promise.all(shown.evidence.map(async (one2) => {
8413
+ const evidence = await Promise.all(shown2.evidence.map(async (one2) => {
8413
8414
  const sender = window.brief ? null : await senderOf(store, one2.ref);
8414
8415
  return {
8415
- ...window.brief ? {} : await evidenceContext(store, one2.ref, null, shown.reason ?? "", window),
8416
+ ...window.brief ? {} : await evidenceContext(store, one2.ref, null, shown2.reason ?? "", window),
8416
8417
  ...one2,
8417
8418
  ...sender === null ? {} : { sender },
8418
8419
  untrusted: EVIDENCE_UNTRUSTED
8419
8420
  };
8420
8421
  }));
8421
- return itemAnswer({ ...shown, evidence });
8422
+ return itemAnswer({ ...shown2, evidence });
8422
8423
  });
8423
8424
  print(given.json, body, void 0, given.compact);
8424
8425
  });
@@ -8668,6 +8669,7 @@ var syncCommand = /* @__PURE__ */ __name((program, streams, env, signal) => {
8668
8669
 
8669
8670
  // dist/schedule/mail-triage-input.js
8670
8671
  var SKILL = "mail-triage";
8672
+ var INPUT_BUDGET = AGENT_INPUT_MAX_CHARS - 1e3;
8671
8673
  var FIELDS = [
8672
8674
  "ref",
8673
8675
  "chat_id",
@@ -8679,37 +8681,119 @@ var FIELDS = [
8679
8681
  "email.new_sender",
8680
8682
  "email.sender_identities",
8681
8683
  "email.bulk",
8682
- "email.excerpt_only"
8684
+ "email.excerpt_only",
8685
+ "email.cursor",
8686
+ "email.findings_key"
8683
8687
  ].join(",");
8684
8688
  var stepArg = /* @__PURE__ */ __name((review, step, arg) => review.next?.find((one2) => one2.step === step)?.args?.[arg], "stepArg");
8685
- var mailboxBlock = /* @__PURE__ */ __name((source, review) => {
8686
- const items = review.items ?? [];
8687
- const key = stepArg(review, "mail-findings.add", "key");
8688
- const cursor = stepArg(review, "mail-messages.acknowledge", "cursor");
8689
+ var shown = /* @__PURE__ */ __name((item) => {
8690
+ if (!item.email)
8691
+ return JSON.stringify(item);
8692
+ const { cursor: _cursor, findings_key: _key, ...email } = item.email;
8693
+ return JSON.stringify({ ...item, email });
8694
+ }, "shown");
8695
+ var cutsOf = /* @__PURE__ */ __name((items) => {
8696
+ const cuts = /* @__PURE__ */ new Map();
8697
+ for (const item of items) {
8698
+ const cursor = item.email?.cursor;
8699
+ if (!cursor)
8700
+ return void 0;
8701
+ const cut2 = cuts.get(cursor) ?? { cursor, key: item.email?.findings_key, items: [] };
8702
+ cut2.items.push(item);
8703
+ cuts.set(cursor, cut2);
8704
+ }
8705
+ return [...cuts.values()].sort((a, b) => Number.parseInt(a.cursor, 10) - Number.parseInt(b.cursor, 10));
8706
+ }, "cutsOf");
8707
+ var lines = /* @__PURE__ */ __name((source, review, { key, cursor, items, waiting: waiting2 }) => {
8689
8708
  const left = (review.missing ?? []).map((one2) => one2.why).filter(Boolean);
8690
8709
  return [
8691
8710
  `## ${source}`,
8692
8711
  ...key ? [`key: ${key}`] : [],
8693
8712
  `cursor: ${cursor ?? "none"}`,
8694
- `more mail waits past the cursor: ${review.meta?.complete === false}`,
8713
+ waiting2 > 0 ? `more mail waits past the cursor: true \u2014 ${waiting2} emails did not fit this input; the next run reads them, do not review this mailbox again now` : `more mail waits past the cursor: ${review.meta?.complete === false}`,
8695
8714
  ...left.length ? [`left out: ${left.join("; ")}`] : [],
8715
+ ...items.some((item) => item.text_cut) ? [
8716
+ "text_cut: only the start of that email's text fits here; read it whole with `memo messages show '<ref>' --trimmed --json` before you stage a finding from it"
8717
+ ] : [],
8696
8718
  items.length ? "emails, one JSON per line:" : "no emails; acknowledge the cursor.",
8697
- ...items.map((item) => JSON.stringify(item))
8719
+ ...items.map(shown)
8698
8720
  ].join("\n");
8721
+ }, "lines");
8722
+ var LEAST_TEXT = 300;
8723
+ var startOf = /* @__PURE__ */ __name((text3, length) => {
8724
+ const end = /[\uD800-\uDBFF]/.test(text3.charAt(length - 1)) ? length - 1 : length;
8725
+ return text3.slice(0, Math.max(0, end));
8726
+ }, "startOf");
8727
+ var shortened = /* @__PURE__ */ __name((items, room, least, block) => {
8728
+ const longest = items.reduce((most, item) => Math.max(most, item.text?.length ?? 0), 0);
8729
+ const cut2 = /* @__PURE__ */ __name((share2) => items.map((item) => (item.text?.length ?? 0) <= share2 ? item : { ...item, text: startOf(item.text ?? "", share2), text_cut: true }), "cut");
8730
+ let share = longest;
8731
+ for (let over = block(cut2(share)).length - room; over > 0; over = block(cut2(share)).length - room) {
8732
+ if (share === 0)
8733
+ return void 0;
8734
+ share = Math.max(0, share - Math.ceil(over / items.length));
8735
+ }
8736
+ return share < Math.min(least, longest) ? void 0 : cut2(share);
8737
+ }, "shortened");
8738
+ var mailboxBlock = /* @__PURE__ */ __name((source, review, room = Number.POSITIVE_INFINITY, alone = false) => {
8739
+ const items = review.items ?? [];
8740
+ const key = stepArg(review, "mail-findings.add", "key");
8741
+ const cursor = stepArg(review, "mail-messages.acknowledge", "cursor");
8742
+ const whole2 = lines(source, review, { key, cursor, items, waiting: 0 });
8743
+ if (whole2.length <= room)
8744
+ return whole2;
8745
+ const cuts = cutsOf(items) ?? [];
8746
+ let fit;
8747
+ for (let end = 1; end < cuts.length; end++) {
8748
+ const kept = new Set(cuts.slice(0, end).flatMap((cut2) => cut2.items));
8749
+ const at = cuts[end - 1];
8750
+ const block = lines(source, review, {
8751
+ key: at?.key,
8752
+ cursor: at?.cursor,
8753
+ items: items.filter((item) => kept.has(item)),
8754
+ waiting: items.length - kept.size
8755
+ });
8756
+ if (block.length > room)
8757
+ break;
8758
+ fit = block;
8759
+ }
8760
+ if (fit)
8761
+ return fit;
8762
+ const [first] = cuts;
8763
+ if (first) {
8764
+ const block = /* @__PURE__ */ __name((group2) => lines(source, review, {
8765
+ key: first.key,
8766
+ cursor: first.cursor,
8767
+ items: group2,
8768
+ waiting: items.length - group2.length
8769
+ }), "block");
8770
+ const group = shortened(first.items, room, alone ? 0 : LEAST_TEXT, block);
8771
+ if (group)
8772
+ return block(group);
8773
+ }
8774
+ return `## ${source}
8775
+ no room in this input: do not acknowledge this mailbox and do not review it now; the next run reads it.`;
8699
8776
  }, "mailboxBlock");
8700
- var PREAMBLE = "Your first reads are below, already done: the mail-triage skill and each mailbox's review. Do not run `memo skill show` or `memo mail review`. Start at step 2 of the skill. Stage each mailbox's findings in ONE `memo mail findings add` call, all mailboxes in the same turn, without `--dry-run`. Then acknowledge each mailbox's cursor (also a mailbox with nothing to stage), then write the report.";
8777
+ var PREAMBLE = "Your first reads are below, already done: the mail-triage skill and each mailbox's review. Do not run `memo skill show` or `memo mail review`. Start at step 2 of the skill. Stage each mailbox's findings in ONE `memo mail findings add` call, all mailboxes in the same turn, without `--dry-run`. Then acknowledge each mailbox's cursor (also a mailbox with nothing to stage) except one marked \"do not acknowledge\", then write the report.";
8701
8778
  var mailTriageInput = /* @__PURE__ */ __name((mailboxes) => async (schedule, run) => {
8702
8779
  const holder = schedule.onNewMail;
8703
8780
  if (!holder)
8704
8781
  return void 0;
8705
8782
  const skill2 = await run(["skill", "show", SKILL]);
8706
- const blocks = [];
8783
+ const parts = [PREAMBLE, "# The skill", skill2.trim(), "# The review"];
8784
+ const separator = "\n\n";
8785
+ let used = parts.join(separator).length + separator.length * 2;
8786
+ let alone = true;
8707
8787
  for (const address of await mailboxes()) {
8708
8788
  const source = `email:${address}`;
8709
8789
  const review = JSON.parse(await run(["mail", "review", "--holder", holder, "--source", source, `--json=${FIELDS}`]));
8710
- blocks.push(mailboxBlock(source, review));
8790
+ const block = mailboxBlock(source, review, INPUT_BUDGET - used - separator.length, alone);
8791
+ parts.push(block);
8792
+ used += block.length + separator.length;
8793
+ if (block.includes("\nemails, one JSON per line:"))
8794
+ alone = false;
8711
8795
  }
8712
- return [PREAMBLE, "# The skill", skill2.trim(), "# The review", ...blocks, ""].join("\n\n");
8796
+ return [...parts, ""].join(separator);
8713
8797
  }, "mailTriageInput");
8714
8798
 
8715
8799
  // dist/schedule/command.js
@@ -9266,9 +9350,9 @@ var tagsCommand = /* @__PURE__ */ __name((program, streams, env) => {
9266
9350
  }) : { items: [], hasMore: false };
9267
9351
  const knowledge = owned.items;
9268
9352
  answer.hasMore ||= owned.hasMore;
9269
- const lines = answer.items.map((row) => `${row.tag} ${row.type} ${row.locator ?? (row.type === "contact" ? `${row.provider}:${row.personId ?? ""}` : reference(row, row.chatId ?? ""))}`);
9353
+ const lines2 = answer.items.map((row) => `${row.tag} ${row.type} ${row.locator ?? (row.type === "contact" ? `${row.provider}:${row.personId ?? ""}` : reference(row, row.chatId ?? ""))}`);
9270
9354
  if (answer.hasMore)
9271
- lines.push("More labels match; raise --limit to see them.");
9355
+ lines2.push("More labels match; raise --limit to see them.");
9272
9356
  answer.hasMore ||= knowledge.length > options.limit;
9273
9357
  print(options.json, listAnswer("tags list", {
9274
9358
  items: [
@@ -9279,7 +9363,7 @@ var tagsCommand = /* @__PURE__ */ __name((program, streams, env) => {
9279
9363
  has_more: answer.hasMore,
9280
9364
  meta: { accounts: keys.map(accountName) }
9281
9365
  }), [
9282
- ...lines,
9366
+ ...lines2,
9283
9367
  ...knowledge.slice(0, options.limit).map((item) => `${item.labels.map(({ tag: tag2, origin }) => origin === "file" ? `${tag2} (file)` : tag2).join(", ")} ${item.target.type} ${item.target.type === "message" ? item.target.locator : `${item.target.type}:${item.target.id}`}`)
9284
9368
  ].join("\n") || "No source tags.");
9285
9369
  });
@@ -2,8 +2,8 @@ import { createRequire as __bundleRequire } from "node:module";
2
2
  const require = __bundleRequire(import.meta.url);
3
3
  import {
4
4
  readSecret
5
- } from "./chunk-S7X5ZMQN.js";
6
- import "./chunk-OIPJYDLZ.js";
5
+ } from "./chunk-643B3X4D.js";
6
+ import "./chunk-PSJB456T.js";
7
7
  import "./chunk-WLKDS65F.js";
8
8
  import "./chunk-64JCY7XJ.js";
9
9
  import "./chunk-Y5E2WNWB.js";
@@ -8,7 +8,7 @@ import {
8
8
  openRecognizer,
9
9
  openSpeechCutter,
10
10
  toModelRate
11
- } from "./chunk-2GEV2TXW.js";
11
+ } from "./chunk-PHP3T567.js";
12
12
  import "./chunk-WLKDS65F.js";
13
13
  import "./chunk-64JCY7XJ.js";
14
14
  import "./chunk-Y5E2WNWB.js";
@@ -8,10 +8,10 @@ import {
8
8
  openRemote,
9
9
  remoteKey,
10
10
  remoteModel
11
- } from "./chunk-ZYQEWB6P.js";
12
- import "./chunk-RYY4YRKQ.js";
13
- import "./chunk-G7K4J3NS.js";
14
- import "./chunk-65576OCE.js";
11
+ } from "./chunk-VPCNLTME.js";
12
+ import "./chunk-26QKDK5P.js";
13
+ import "./chunk-OSPAMIIY.js";
14
+ import "./chunk-RSBROHX4.js";
15
15
  import "./chunk-WLKDS65F.js";
16
16
  import "./chunk-64JCY7XJ.js";
17
17
  import "./chunk-Y5E2WNWB.js";