@wirecat/cli-memo 0.131.28 → 0.131.30

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 (132) hide show
  1. package/dist/bin/memo.js +2 -2
  2. package/dist/bundle/{all-profiles-5T23TSLS.js → all-profiles-4XCG2A54.js} +5 -5
  3. package/dist/bundle/{anthropic-AKD5CPO6.js → anthropic-MAVIW4DJ.js} +3 -3
  4. package/dist/bundle/{app-server-NE7EMWAU.js → app-server-LGSYLIB3.js} +35 -35
  5. package/dist/bundle/auto-72Y6UJWK.js +86 -0
  6. package/dist/bundle/{bun-MWSCIVYY.js → bun-XWUEHWDW.js} +2 -2
  7. package/dist/bundle/{bun-sqlite-K2OK3SS6.js → bun-sqlite-OSAC45TI.js} +2 -2
  8. package/dist/bundle/{chunk-MMQ3PNY2.js → chunk-2NEXX3EI.js} +1 -1
  9. package/dist/bundle/{chunk-BRYOBI2N.js → chunk-3DXTHN5C.js} +7 -7
  10. package/dist/bundle/{chunk-BWHPJFJQ.js → chunk-3V5JXPGK.js} +1 -1
  11. package/dist/bundle/{chunk-2JM3HWSF.js → chunk-5CKE7LAP.js} +1 -1
  12. package/dist/bundle/{chunk-SS6NIBT3.js → chunk-5R3OXHIN.js} +1 -1
  13. package/dist/bundle/{chunk-R2YCDWZB.js → chunk-6SE6ZDBF.js} +1 -1
  14. package/dist/bundle/{chunk-3NERKJCL.js → chunk-6ZVN4S36.js} +2 -2
  15. package/dist/bundle/{chunk-6GF5XTEK.js → chunk-76MMXZ3W.js} +4 -4
  16. package/dist/bundle/{chunk-EKSAED2S.js → chunk-7VJZKUN3.js} +9 -9
  17. package/dist/bundle/{chunk-JVJSEZRZ.js → chunk-B6S42B6J.js} +11 -11
  18. package/dist/bundle/{chunk-7UZF7FFF.js → chunk-CNAOMV43.js} +1 -1
  19. package/dist/bundle/{chunk-ZAHUDQE4.js → chunk-CYUP7HQG.js} +421 -360
  20. package/dist/bundle/{chunk-HMZLIJZI.js → chunk-D6BK3H4D.js} +4 -4
  21. package/dist/bundle/{chunk-LCU6HHIT.js → chunk-DIQAOLWH.js} +1 -1
  22. package/dist/bundle/{chunk-TPRGT6QU.js → chunk-DIT5NA73.js} +5 -5
  23. package/dist/bundle/{chunk-NSU2QZ2Y.js → chunk-DYNSZDXG.js} +20 -20
  24. package/dist/bundle/{chunk-N3YOSX2R.js → chunk-EEKOBGQ7.js} +1 -1
  25. package/dist/bundle/{chunk-4BUJ4P4V.js → chunk-EJZKYJKO.js} +2 -2
  26. package/dist/bundle/{chunk-L2AJTH4B.js → chunk-GACW4GZZ.js} +4 -4
  27. package/dist/bundle/{chunk-L32UNV6A.js → chunk-GN3U74DV.js} +12 -12
  28. package/dist/bundle/{chunk-TOCIBRXE.js → chunk-GSCFCNGO.js} +7 -7
  29. package/dist/bundle/{chunk-SUWRZHLN.js → chunk-GW2KCP4G.js} +27 -27
  30. package/dist/bundle/{chunk-5VD4BWQ5.js → chunk-H52RNBPU.js} +2 -2
  31. package/dist/bundle/{chunk-JXPSZJRX.js → chunk-HWJHWNBW.js} +3 -3
  32. package/dist/bundle/{chunk-HG2ZICMV.js → chunk-IIXZMACE.js} +15 -10
  33. package/dist/bundle/{chunk-UQVZIZ3X.js → chunk-JHLGFPMK.js} +2 -2
  34. package/dist/bundle/{chunk-7STRA63S.js → chunk-K6Z6B2CW.js} +10 -10
  35. package/dist/bundle/{chunk-ZLTARJG7.js → chunk-KJE2KFYH.js} +198 -52
  36. package/dist/bundle/{chunk-25IIXY5K.js → chunk-M3REIIOH.js} +1 -1
  37. package/dist/bundle/{chunk-GYQQZAPM.js → chunk-MHHLYRRD.js} +1 -1
  38. package/dist/bundle/{chunk-QM7JJICP.js → chunk-MLDBSKW6.js} +8 -8
  39. package/dist/bundle/{chunk-BWH7HBVK.js → chunk-N4AWIP4D.js} +5 -5
  40. package/dist/bundle/{chunk-GR4Z3X3R.js → chunk-NUEIRBKY.js} +1 -1
  41. package/dist/bundle/{chunk-KNAXSFFK.js → chunk-PJM4QQBT.js} +2 -2
  42. package/dist/bundle/{chunk-5FTTDKHU.js → chunk-Q3XFJOAY.js} +1 -1
  43. package/dist/bundle/{chunk-IPVYKIDQ.js → chunk-QQBRNKHQ.js} +51 -50
  44. package/dist/bundle/{chunk-WF5E3GTN.js → chunk-RCPP2Q5O.js} +6 -6
  45. package/dist/bundle/{chunk-EDGK35LX.js → chunk-RUWY43XR.js} +252 -246
  46. package/dist/bundle/{chunk-52DNGWWV.js → chunk-S34FLB7K.js} +2 -2
  47. package/dist/bundle/{chunk-GOZXK5ZB.js → chunk-SIY75R4D.js} +5 -5
  48. package/dist/bundle/{chunk-LYBA6YTS.js → chunk-SQHIXN2N.js} +2 -2
  49. package/dist/bundle/{chunk-RQ37GH4Q.js → chunk-TIQUMRSO.js} +215 -151
  50. package/dist/bundle/{chunk-7XJX6KV7.js → chunk-TIU2N2SP.js} +20 -20
  51. package/dist/bundle/{chunk-DFSJNUV3.js → chunk-U5PEYBQT.js} +4 -4
  52. package/dist/bundle/{chunk-TZQBS2W6.js → chunk-U6NL7SAX.js} +5 -5
  53. package/dist/bundle/{chunk-FXUDATZI.js → chunk-UBYCWQSV.js} +4 -4
  54. package/dist/bundle/{chunk-7VIPLKQY.js → chunk-UGV57SZH.js} +1 -1
  55. package/dist/bundle/{chunk-C6A2FRMX.js → chunk-USLIHXWA.js} +3 -3
  56. package/dist/bundle/{chunk-3NCXHUGK.js → chunk-UVO7UNYH.js} +1 -1
  57. package/dist/bundle/{chunk-FAMGHE4L.js → chunk-UXGQXP5U.js} +3 -3
  58. package/dist/bundle/{chunk-P6KGH4HJ.js → chunk-VDGKBAS2.js} +1039 -671
  59. package/dist/bundle/{chunk-YS26XHBU.js → chunk-WUV5O5HN.js} +4 -4
  60. package/dist/bundle/{chunk-2O34ULVN.js → chunk-XDQIJSJE.js} +1 -1
  61. package/dist/bundle/{chunk-ZJO43QQG.js → chunk-XV7YW65Y.js} +4 -4
  62. package/dist/bundle/{chunk-WXMIDNA5.js → chunk-YJSCSLAT.js} +3 -3
  63. package/dist/bundle/{chunk-4ETZKMSQ.js → chunk-YUEAM6ZP.js} +7 -7
  64. package/dist/bundle/{chunk-CUUQ5SGZ.js → chunk-Z7J7SVZJ.js} +1 -1
  65. package/dist/bundle/{command-contract-YR55Y4J2.js → command-contract-ZLDRM6DG.js} +11 -11
  66. package/dist/bundle/{decode-KGZGT6YR.js → decode-Y2DWOSOW.js} +2 -2
  67. package/dist/bundle/{echarts-ZVR7COJR.js → echarts-2ZHQHZ4R.js} +2 -2
  68. package/dist/bundle/{embed-E3SYH7BI.js → embed-JEER47U6.js} +3 -3
  69. package/dist/bundle/{embedder-2OGNW5GQ.js → embedder-BJQEGCE5.js} +6 -6
  70. package/dist/bundle/{entry-ZVAL5NC5.js → entry-YKH7GAX7.js} +4 -4
  71. package/dist/bundle/failure-JE2JCLGO.js +66 -0
  72. package/dist/bundle/{first-run-IH2OAKCU.js → first-run-ESH5B55J.js} +5 -5
  73. package/dist/bundle/{first-screen-HLMFDOCL.js → first-screen-RTATNK4S.js} +12 -12
  74. package/dist/bundle/{instructions-BQO5IVUS.js → instructions-NJYYRMYK.js} +1 -1
  75. package/dist/bundle/{mcp-JQ6WGHBL.js → mcp-ZRKYZLNM.js} +35 -35
  76. package/dist/bundle/memo.js +6 -6
  77. package/dist/bundle/{node-SESRJP6V.js → node-DBNZMTJO.js} +2 -2
  78. package/dist/bundle/{node-sqlite-E6WGF6VQ.js → node-sqlite-CCNVCZSG.js} +3 -3
  79. package/dist/bundle/{oauth-5XEPM7P2.js → oauth-UV7KBQFP.js} +4 -4
  80. package/dist/bundle/{open-ORDS45GQ.js → open-VTOLLLS4.js} +2 -2
  81. package/dist/bundle/{openai-IWEPM3B7.js → openai-RTJNHBCG.js} +7 -7
  82. package/dist/bundle/{process-EVTLTA56.js → process-TAFRBB53.js} +1 -1
  83. package/dist/bundle/{program-QJOC2VHS.js → program-4UU6HJQM.js} +223 -110
  84. package/dist/bundle/{prompt-GSBAQBKX.js → prompt-ESMCTEJI.js} +2 -2
  85. package/dist/bundle/{recognize-D5ZG7KRK.js → recognize-V53GEY6R.js} +1 -1
  86. package/dist/bundle/{remote-Q5KOZYAA.js → remote-KGKRAGA6.js} +4 -4
  87. package/dist/bundle/{rerank-BDBJYOQV.js → rerank-DTD24I7Y.js} +4 -4
  88. package/dist/bundle/{serve-JR7XMZ4X.js → serve-2DVSIKM7.js} +6 -6
  89. package/dist/bundle/server-ODWZJIRX.js +48 -0
  90. package/dist/bundle/{server-RWZYJVLZ.js → server-UBMV5OI7.js} +50 -50
  91. package/dist/bundle/server-V5YRZZID.js +61 -0
  92. package/dist/bundle/{state-WTKI4AQ7.js → state-ONT6T6PY.js} +3 -3
  93. package/dist/bundle/{store-XMGQNBP3.js → store-TOYBDMML.js} +9 -9
  94. package/dist/bundle/store-maintenance-command-HIMIMWFU.js +48 -0
  95. package/dist/bundle/update-AO5UWEBY.js +69 -0
  96. package/dist/discovery/command.d.ts.map +1 -1
  97. package/dist/discovery/command.js +1 -0
  98. package/dist/discovery/command.js.map +1 -1
  99. package/dist/examples.d.ts.map +1 -1
  100. package/dist/examples.js +7 -0
  101. package/dist/examples.js.map +1 -1
  102. package/dist/finance/command.d.ts.map +1 -1
  103. package/dist/finance/command.js +13 -0
  104. package/dist/finance/command.js.map +1 -1
  105. package/dist/finance/orders-command.d.ts +12 -0
  106. package/dist/finance/orders-command.d.ts.map +1 -0
  107. package/dist/finance/orders-command.js +92 -0
  108. package/dist/finance/orders-command.js.map +1 -0
  109. package/dist/mail/findings-command.d.ts.map +1 -1
  110. package/dist/mail/findings-command.js +7 -2
  111. package/dist/mail/findings-command.js.map +1 -1
  112. package/dist/program.d.ts.map +1 -1
  113. package/dist/program.js +30 -0
  114. package/dist/program.js.map +1 -1
  115. package/dist/review/kinds.d.ts +1 -1
  116. package/dist/review/kinds.d.ts.map +1 -1
  117. package/dist/review/kinds.js +1 -0
  118. package/dist/review/kinds.js.map +1 -1
  119. package/dist/review/review.d.ts.map +1 -1
  120. package/dist/review/review.js +1 -0
  121. package/dist/review/review.js.map +1 -1
  122. package/dist/version.d.ts +1 -1
  123. package/dist/version.js +1 -1
  124. package/package.json +2 -2
  125. package/skills/mail-triage/SKILL.md +30 -4
  126. package/dist/bundle/auto-UI3T442Q.js +0 -86
  127. package/dist/bundle/failure-62K4QAPV.js +0 -66
  128. package/dist/bundle/server-EWORQZZB.js +0 -48
  129. package/dist/bundle/server-HHTRVQYX.js +0 -61
  130. package/dist/bundle/store-maintenance-command-EY5EIO2H.js +0 -48
  131. package/dist/bundle/update-CUBOZISO.js +0 -69
  132. /package/dist/bundle/{chunk-3HNCLKYR.js → chunk-G6I5A2N3.js} +0 -0
@@ -6,17 +6,17 @@ import {
6
6
  autoState,
7
7
  lastAutoRun,
8
8
  recordAutoRun
9
- } from "./chunk-DFSJNUV3.js";
9
+ } from "./chunk-U5PEYBQT.js";
10
10
  import {
11
11
  installer,
12
12
  latest,
13
13
  upgradeCommand
14
- } from "./chunk-TZQBS2W6.js";
14
+ } from "./chunk-U6NL7SAX.js";
15
15
  import {
16
16
  mcpOwnerAllowed,
17
17
  readOnlyAvailability,
18
18
  refuseWritesUnderLock
19
- } from "./chunk-BWH7HBVK.js";
19
+ } from "./chunk-N4AWIP4D.js";
20
20
  import {
21
21
  answers,
22
22
  atDetail as atDetail2,
@@ -26,7 +26,7 @@ import {
26
26
  trackAnswers,
27
27
  wholeList,
28
28
  withStore
29
- } from "./chunk-ZJO43QQG.js";
29
+ } from "./chunk-XV7YW65Y.js";
30
30
  import {
31
31
  DIALECTS,
32
32
  MEMO_SETTINGS,
@@ -45,15 +45,15 @@ import {
45
45
  scheduleLimits,
46
46
  unsetConfigKey,
47
47
  updateConfig
48
- } from "./chunk-L2AJTH4B.js";
48
+ } from "./chunk-GACW4GZZ.js";
49
49
  import "./chunk-QP3KNC5D.js";
50
- import "./chunk-LYBA6YTS.js";
51
- import "./chunk-TOCIBRXE.js";
52
- import "./chunk-C6A2FRMX.js";
50
+ import "./chunk-SQHIXN2N.js";
51
+ import "./chunk-GSCFCNGO.js";
52
+ import "./chunk-USLIHXWA.js";
53
53
  import {
54
54
  errorObject,
55
55
  recognisable
56
- } from "./chunk-FAMGHE4L.js";
56
+ } from "./chunk-UXGQXP5U.js";
57
57
  import {
58
58
  DISCOVERY_DESCRIPTIONS,
59
59
  SUMMARY_UNTRUSTED,
@@ -100,9 +100,9 @@ import {
100
100
  tasksStatsCommand,
101
101
  unansweredHours,
102
102
  withSqliteSidecars
103
- } from "./chunk-EDGK35LX.js";
104
- import "./chunk-MMQ3PNY2.js";
105
- import "./chunk-2JM3HWSF.js";
103
+ } from "./chunk-RUWY43XR.js";
104
+ import "./chunk-2NEXX3EI.js";
105
+ import "./chunk-5CKE7LAP.js";
106
106
  import {
107
107
  MAIL_HIT_UNTRUSTED,
108
108
  allHitItem,
@@ -112,21 +112,21 @@ import {
112
112
  noteHitItem,
113
113
  offsetOf,
114
114
  shownOf
115
- } from "./chunk-NSU2QZ2Y.js";
116
- import "./chunk-GR4Z3X3R.js";
115
+ } from "./chunk-DYNSZDXG.js";
116
+ import "./chunk-NUEIRBKY.js";
117
117
  import {
118
118
  SKILL_TARGETS,
119
119
  skillCommand,
120
120
  skillPath,
121
121
  skillVersion
122
- } from "./chunk-HG2ZICMV.js";
122
+ } from "./chunk-IIXZMACE.js";
123
123
  import {
124
124
  messageItem,
125
125
  modelGateway,
126
126
  storeInfo,
127
127
  storeSummary
128
- } from "./chunk-IPVYKIDQ.js";
129
- import "./chunk-7XJX6KV7.js";
128
+ } from "./chunk-QQBRNKHQ.js";
129
+ import "./chunk-TIU2N2SP.js";
130
130
  import {
131
131
  AGENDA_DEFAULTS,
132
132
  DEFAULT_BACKEND,
@@ -192,18 +192,18 @@ import {
192
192
  termField,
193
193
  typedQuery,
194
194
  withQuery
195
- } from "./chunk-ZAHUDQE4.js";
195
+ } from "./chunk-CYUP7HQG.js";
196
196
  import {
197
197
  readBoundedUtf8File,
198
198
  writeFileAtomic
199
- } from "./chunk-L32UNV6A.js";
199
+ } from "./chunk-GN3U74DV.js";
200
200
  import {
201
201
  commandsText,
202
202
  inSection,
203
203
  installHelp
204
- } from "./chunk-WF5E3GTN.js";
204
+ } from "./chunk-RCPP2Q5O.js";
205
205
  import "./chunk-HTQTIKWP.js";
206
- import "./chunk-3NERKJCL.js";
206
+ import "./chunk-6ZVN4S36.js";
207
207
  import {
208
208
  Command,
209
209
  FETCH,
@@ -244,35 +244,31 @@ import {
244
244
  text,
245
245
  time,
246
246
  untrusted
247
- } from "./chunk-RQ37GH4Q.js";
248
- import "./chunk-BRYOBI2N.js";
249
- import "./chunk-7STRA63S.js";
247
+ } from "./chunk-TIQUMRSO.js";
248
+ import "./chunk-3DXTHN5C.js";
249
+ import "./chunk-K6Z6B2CW.js";
250
250
  import {
251
251
  isNewer
252
252
  } from "./chunk-I7PL5WX2.js";
253
253
  import "./chunk-YPF6OS37.js";
254
- import "./chunk-WXMIDNA5.js";
255
- import "./chunk-EKSAED2S.js";
254
+ import "./chunk-YJSCSLAT.js";
255
+ import "./chunk-7VJZKUN3.js";
256
256
  import {
257
257
  mailHolderVariable,
258
258
  readOnlyLockOf
259
- } from "./chunk-7UZF7FFF.js";
260
- import "./chunk-6GF5XTEK.js";
259
+ } from "./chunk-CNAOMV43.js";
260
+ import "./chunk-76MMXZ3W.js";
261
261
  import {
262
262
  releaseLock,
263
263
  takeLock
264
- } from "./chunk-52DNGWWV.js";
265
- import "./chunk-N3YOSX2R.js";
264
+ } from "./chunk-S34FLB7K.js";
265
+ import "./chunk-EEKOBGQ7.js";
266
266
  import {
267
267
  EVIDENCE_FINDINGS_KIND,
268
- FINANCE_REVIEWS,
269
- INVOICE_DIRECTIONS,
270
- INVOICE_STATUSES,
271
268
  MAIL_FINDINGS_KIND,
272
269
  MAX_FILE_BYTES,
273
270
  MENTION_QUERY,
274
271
  MESSAGE_PARSING,
275
- MONEY_DIRECTIONS,
276
272
  ORGANIZATION_KINDS,
277
273
  PROJECT_ANNOTATIONS_MAX_BYTES,
278
274
  PROJECT_TASK_FIELDS,
@@ -293,8 +289,6 @@ import {
293
289
  isFolderProvider,
294
290
  looksLikeReference,
295
291
  mailOwnText,
296
- minorUnits,
297
- moneyOf,
298
292
  openOf,
299
293
  openStore,
300
294
  parseLocator,
@@ -303,14 +297,20 @@ import {
303
297
  queryFilter,
304
298
  refLabel,
305
299
  validateFields
306
- } from "./chunk-P6KGH4HJ.js";
300
+ } from "./chunk-VDGKBAS2.js";
307
301
  import {
308
302
  FACT_STATUSES,
309
303
  FACT_TYPES,
304
+ FINANCE_REVIEWS,
305
+ INVOICE_DIRECTIONS,
306
+ INVOICE_STATUSES,
310
307
  MEETING_FINDINGS_KIND,
311
308
  MEMORY_KINDS,
312
309
  MEMORY_SCOPES,
313
310
  MEMORY_STATUSES,
311
+ MONEY_DIRECTIONS,
312
+ ORDER_PURPOSES,
313
+ ORDER_STATUSES,
314
314
  PRIORITY_LABELS,
315
315
  TASK_STATES,
316
316
  TASK_TYPES,
@@ -320,6 +320,8 @@ import {
320
320
  defineQuery,
321
321
  isClosedState,
322
322
  meetingHitsList,
323
+ minorUnits,
324
+ moneyOf,
323
325
  normalizeTag,
324
326
  parseLucene,
325
327
  parseMeetingReference,
@@ -330,22 +332,22 @@ import {
330
332
  timezoneOf,
331
333
  validateQuery,
332
334
  walkQuery
333
- } from "./chunk-ZLTARJG7.js";
334
- import "./chunk-5FTTDKHU.js";
335
- import "./chunk-4ETZKMSQ.js";
336
- import "./chunk-FXUDATZI.js";
337
- import "./chunk-5VD4BWQ5.js";
338
- import "./chunk-GYQQZAPM.js";
339
- import "./chunk-BWHPJFJQ.js";
340
- import "./chunk-7VIPLKQY.js";
341
- import "./chunk-UQVZIZ3X.js";
342
- import "./chunk-TPRGT6QU.js";
335
+ } from "./chunk-KJE2KFYH.js";
336
+ import "./chunk-Q3XFJOAY.js";
337
+ import "./chunk-YUEAM6ZP.js";
338
+ import "./chunk-UBYCWQSV.js";
339
+ import "./chunk-H52RNBPU.js";
340
+ import "./chunk-MHHLYRRD.js";
341
+ import "./chunk-3V5JXPGK.js";
342
+ import "./chunk-UGV57SZH.js";
343
+ import "./chunk-JHLGFPMK.js";
344
+ import "./chunk-DIT5NA73.js";
343
345
  import {
344
346
  sharedModelsDirectory
345
- } from "./chunk-JXPSZJRX.js";
347
+ } from "./chunk-HWJHWNBW.js";
346
348
  import {
347
349
  storePath
348
- } from "./chunk-LCU6HHIT.js";
350
+ } from "./chunk-DIQAOLWH.js";
349
351
  import {
350
352
  provideTerminal,
351
353
  terminalOf
@@ -355,12 +357,12 @@ import {
355
357
  REASONS,
356
358
  STORE_CLIENT,
357
359
  VERSION
358
- } from "./chunk-2O34ULVN.js";
360
+ } from "./chunk-XDQIJSJE.js";
359
361
  import "./chunk-KV4267S4.js";
360
362
  import "./chunk-LU3WKZBA.js";
361
363
  import "./chunk-D72URWJE.js";
362
- import "./chunk-GOZXK5ZB.js";
363
- import "./chunk-R2YCDWZB.js";
364
+ import "./chunk-SIY75R4D.js";
365
+ import "./chunk-6SE6ZDBF.js";
364
366
  import {
365
367
  createDeadline,
366
368
  createRenderer,
@@ -401,7 +403,7 @@ import {
401
403
  errorCodes,
402
404
  isCliError
403
405
  } from "./chunk-EB2IULWB.js";
404
- import "./chunk-SS6NIBT3.js";
406
+ import "./chunk-5R3OXHIN.js";
405
407
  import {
406
408
  __commonJS,
407
409
  __name,
@@ -10422,10 +10424,10 @@ var collect = /* @__PURE__ */ __name((value, previous = []) => [...previous, val
10422
10424
  var readScope = /* @__PURE__ */ __name((command, help = ONE_ACCOUNT_HELP) => sourceOptions(command, help).option("--json", "print JSON; --json=id,title keeps only those fields"), "readScope");
10423
10425
  var writeScope = /* @__PURE__ */ __name((command, help) => writeOptions(command, help).option("--json", "print JSON; --json=id,title keeps only those fields"), "writeScope");
10424
10426
 
10425
- // node_modules/.pnpm/@wirecat+cli-core@0.572.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ed77a8fcc4bb89e891ff55f6d86f2f53/node_modules/@wirecat/cli-core/dist/mail/account-key.js
10427
+ // node_modules/.pnpm/@wirecat+cli-core@0.575.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_aade55a841395570862eef10edb10226/node_modules/@wirecat/cli-core/dist/mail/account-key.js
10426
10428
  var mailAccountKey = /* @__PURE__ */ __name((address) => ({ provider: "email", account: address.toLowerCase() }), "mailAccountKey");
10427
10429
 
10428
- // node_modules/.pnpm/@wirecat+cli-core@0.572.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ed77a8fcc4bb89e891ff55f6d86f2f53/node_modules/@wirecat/cli-core/dist/mail/attachments.js
10430
+ // node_modules/.pnpm/@wirecat+cli-core@0.575.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_aade55a841395570862eef10edb10226/node_modules/@wirecat/cli-core/dist/mail/attachments.js
10429
10431
  var MAX_ATTACHMENT_CHARS = 2e5;
10430
10432
  var DEFAULT_ATTACHMENT_POLICY = { read: true, maxBytes: 10 * 1024 * 1024 };
10431
10433
  var POLICY_SKIPS = ["not-read", "too-large"];
@@ -10464,11 +10466,11 @@ var readAttachments = /* @__PURE__ */ __name(async (mail, messageId, { loadEngin
10464
10466
  return files;
10465
10467
  }, "readAttachments");
10466
10468
 
10467
- // node_modules/.pnpm/@wirecat+cli-core@0.572.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ed77a8fcc4bb89e891ff55f6d86f2f53/node_modules/@wirecat/cli-core/dist/mail/bulk.js
10469
+ // node_modules/.pnpm/@wirecat+cli-core@0.575.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_aade55a841395570862eef10edb10226/node_modules/@wirecat/cli-core/dist/mail/bulk.js
10468
10470
  var BULK = "bulk";
10469
10471
  var bulkBox = { externalId: "memo:bulk", name: "bulk", kind: BULK };
10470
10472
 
10471
- // node_modules/.pnpm/@wirecat+cli-core@0.572.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ed77a8fcc4bb89e891ff55f6d86f2f53/node_modules/@wirecat/cli-core/dist/mail/score.js
10473
+ // node_modules/.pnpm/@wirecat+cli-core@0.575.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_aade55a841395570862eef10edb10226/node_modules/@wirecat/cli-core/dist/mail/score.js
10472
10474
  var import_disposable_email_domains_js = __toESM(require_dist(), 1);
10473
10475
  var import_tldts = __toESM(require_cjs(), 1);
10474
10476
  var WEIGHTS = {
@@ -10576,7 +10578,7 @@ var scoreGroup = /* @__PURE__ */ __name((items, context) => {
10576
10578
  return { score: kept.reduce((sum, signal) => sum + WEIGHTS[signal], 0), signals: kept };
10577
10579
  }, "scoreGroup");
10578
10580
 
10579
- // node_modules/.pnpm/@wirecat+cli-core@0.572.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ed77a8fcc4bb89e891ff55f6d86f2f53/node_modules/@wirecat/cli-core/dist/mail/presets.js
10581
+ // node_modules/.pnpm/@wirecat+cli-core@0.575.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_aade55a841395570862eef10edb10226/node_modules/@wirecat/cli-core/dist/mail/presets.js
10580
10582
  var PRESETS = {
10581
10583
  social: {
10582
10584
  about: "notifications from social networks",
@@ -10668,7 +10670,7 @@ var presetMatches = /* @__PURE__ */ __name((name, facts) => {
10668
10670
  return false;
10669
10671
  }, "presetMatches");
10670
10672
 
10671
- // node_modules/.pnpm/@wirecat+cli-core@0.572.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ed77a8fcc4bb89e891ff55f6d86f2f53/node_modules/@wirecat/cli-core/dist/mail/probe.js
10673
+ // node_modules/.pnpm/@wirecat+cli-core@0.575.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_aade55a841395570862eef10edb10226/node_modules/@wirecat/cli-core/dist/mail/probe.js
10672
10674
  var share = /* @__PURE__ */ __name((part, whole2) => Math.round(part / whole2 * 100) / 100, "share");
10673
10675
  var isSent = /* @__PURE__ */ __name((item) => item.labels?.includes("Sent") || /(^|\/)sent\b/i.test(item.folder ?? ""), "isSent");
10674
10676
  var groupKey = /* @__PURE__ */ __name((headers) => headers.listId === void 0 ? `from:${headers.from}` : `list:${headers.listId}`, "groupKey");
@@ -10736,7 +10738,7 @@ var probeMail = /* @__PURE__ */ __name((items, limit, ages = /* @__PURE__ */ new
10736
10738
  };
10737
10739
  }, "probeMail");
10738
10740
 
10739
- // node_modules/.pnpm/@wirecat+cli-core@0.572.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ed77a8fcc4bb89e891ff55f6d86f2f53/node_modules/@wirecat/cli-core/dist/mail/facts.js
10741
+ // node_modules/.pnpm/@wirecat+cli-core@0.575.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_aade55a841395570862eef10edb10226/node_modules/@wirecat/cli-core/dist/mail/facts.js
10740
10742
  var factsOf = /* @__PURE__ */ __name((listed, rules, ages = /* @__PURE__ */ new Map()) => {
10741
10743
  const grouped = rules.some(({ match }) => match.score_at_least !== void 0 || match.preset !== void 0);
10742
10744
  if (!grouped)
@@ -16007,7 +16009,7 @@ var PostalMime = class _PostalMime {
16007
16009
  }
16008
16010
  };
16009
16011
 
16010
- // node_modules/.pnpm/@wirecat+cli-core@0.572.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ed77a8fcc4bb89e891ff55f6d86f2f53/node_modules/@wirecat/cli-core/dist/mail/headers.js
16012
+ // node_modules/.pnpm/@wirecat+cli-core@0.575.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_aade55a841395570862eef10edb10226/node_modules/@wirecat/cli-core/dist/mail/headers.js
16011
16013
  var unfold = /* @__PURE__ */ __name((text3) => text3.replace(/\r?\n[ \t]+/g, " "), "unfold");
16012
16014
  var field = /* @__PURE__ */ __name((unfolded, name) => new RegExp(`^${name}:[ \\t]*(.*?)\\r?$`, "im").exec(unfolded)?.[1], "field");
16013
16015
  var fieldsOf2 = /* @__PURE__ */ __name((unfolded, name) => [...unfolded.matchAll(new RegExp(`^${name}:[ \\t]*(.*?)\\r?$`, "gim"))].map(([, value]) => value), "fieldsOf");
@@ -16054,7 +16056,7 @@ var mailHeadersOf = /* @__PURE__ */ __name((raw) => {
16054
16056
  };
16055
16057
  }, "mailHeadersOf");
16056
16058
 
16057
- // node_modules/.pnpm/@wirecat+cli-core@0.572.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ed77a8fcc4bb89e891ff55f6d86f2f53/node_modules/@wirecat/cli-core/dist/mail/parse.js
16059
+ // node_modules/.pnpm/@wirecat+cli-core@0.575.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_aade55a841395570862eef10edb10226/node_modules/@wirecat/cli-core/dist/mail/parse.js
16058
16060
  var MAX_BODY_CHARS = 1e6;
16059
16061
  var MAX_ATTACHMENTS = 50;
16060
16062
  var BRACKETED_ID = /<[^<>\s]+>/g;
@@ -16119,7 +16121,7 @@ var parseMail = /* @__PURE__ */ __name(async (raw, maxBodyChars = MAX_BODY_CHARS
16119
16121
  };
16120
16122
  }, "parseMail");
16121
16123
 
16122
- // node_modules/.pnpm/@wirecat+cli-core@0.572.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ed77a8fcc4bb89e891ff55f6d86f2f53/node_modules/@wirecat/cli-core/dist/mail/email-input.js
16124
+ // node_modules/.pnpm/@wirecat+cli-core@0.575.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_aade55a841395570862eef10edb10226/node_modules/@wirecat/cli-core/dist/mail/email-input.js
16123
16125
  var sentAtOf = /* @__PURE__ */ __name((date, receivedAt) => {
16124
16126
  const sent = date === null ? Number.NaN : Date.parse(date);
16125
16127
  return Number.isNaN(sent) ? Date.parse(receivedAt) : sent;
@@ -16139,10 +16141,10 @@ var parsedEmail = /* @__PURE__ */ __name((mail, item, header, address) => ({
16139
16141
  outgoing: mail.from === null ? null : mail.from.email === address
16140
16142
  }), "parsedEmail");
16141
16143
 
16142
- // node_modules/.pnpm/@wirecat+cli-core@0.572.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ed77a8fcc4bb89e891ff55f6d86f2f53/node_modules/@wirecat/cli-core/dist/mail/partial.js
16144
+ // node_modules/.pnpm/@wirecat+cli-core@0.575.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_aade55a841395570862eef10edb10226/node_modules/@wirecat/cli-core/dist/mail/partial.js
16143
16145
  var PARTIAL = "partial";
16144
16146
 
16145
- // node_modules/.pnpm/@wirecat+cli-core@0.572.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ed77a8fcc4bb89e891ff55f6d86f2f53/node_modules/@wirecat/cli-core/dist/mail/read.js
16147
+ // node_modules/.pnpm/@wirecat+cli-core@0.575.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_aade55a841395570862eef10edb10226/node_modules/@wirecat/cli-core/dist/mail/read.js
16146
16148
  var lowerSuspicious = /* @__PURE__ */ __name((items, suspicious) => [
16147
16149
  ...items.filter((item) => !suspicious(item)),
16148
16150
  ...items.filter(suspicious)
@@ -16229,7 +16231,7 @@ var attachmentsText = /* @__PURE__ */ __name((hit) => (hit.attachments ?? []).ma
16229
16231
  ${file.text.replace(/\n/g, "\n ")}`;
16230
16232
  }).join("\n"), "attachmentsText");
16231
16233
 
16232
- // node_modules/.pnpm/@wirecat+cli-core@0.572.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ed77a8fcc4bb89e891ff55f6d86f2f53/node_modules/@wirecat/cli-core/dist/mail/review.js
16234
+ // node_modules/.pnpm/@wirecat+cli-core@0.575.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_aade55a841395570862eef10edb10226/node_modules/@wirecat/cli-core/dist/mail/review.js
16233
16235
  var REVIEW_THREADS = 50;
16234
16236
  var REVIEW_PER_THREAD = 50;
16235
16237
  var OWED_DAYS = 30;
@@ -16327,7 +16329,7 @@ var reviewMail = /* @__PURE__ */ __name(async (store, mailbox, options) => {
16327
16329
  };
16328
16330
  }, "reviewMail");
16329
16331
 
16330
- // node_modules/.pnpm/@wirecat+cli-core@0.572.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ed77a8fcc4bb89e891ff55f6d86f2f53/node_modules/@wirecat/cli-core/dist/mail/rules.js
16332
+ // node_modules/.pnpm/@wirecat+cli-core@0.575.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_aade55a841395570862eef10edb10226/node_modules/@wirecat/cli-core/dist/mail/rules.js
16331
16333
  var DAY_MS2 = 24 * 60 * 60 * 1e3;
16332
16334
  var domainOf = /* @__PURE__ */ __name((address) => address.slice(address.lastIndexOf("@") + 1), "domainOf");
16333
16335
  var domainMatches = /* @__PURE__ */ __name((wanted2, sender) => {
@@ -16399,7 +16401,7 @@ var tagsOf = /* @__PURE__ */ __name((rules, facts) => {
16399
16401
  }, "tagsOf");
16400
16402
  var conditionKeys = /* @__PURE__ */ __name((match) => Object.keys(match).filter((key) => match[key] !== void 0).sort(), "conditionKeys");
16401
16403
 
16402
- // node_modules/.pnpm/@wirecat+cli-core@0.572.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ed77a8fcc4bb89e891ff55f6d86f2f53/node_modules/@wirecat/cli-core/dist/mail/rule-input.js
16404
+ // node_modules/.pnpm/@wirecat+cli-core@0.575.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_aade55a841395570862eef10edb10226/node_modules/@wirecat/cli-core/dist/mail/rule-input.js
16403
16405
  var STORE_ACTION = { keep: "full", envelope: "envelope", skip: "skip" };
16404
16406
  var LOWER = ["from", "domain", "list_id", "subject"];
16405
16407
  var conditionsOf = /* @__PURE__ */ __name((match) => Object.fromEntries(conditionKeys(match).map((key) => {
@@ -16429,7 +16431,7 @@ var ruleInput = /* @__PURE__ */ __name((rule, source = rule.source ?? "owner") =
16429
16431
  decidedAt: decidedAtOf(rule.decided_at)
16430
16432
  }), "ruleInput");
16431
16433
 
16432
- // node_modules/.pnpm/@wirecat+cli-core@0.572.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ed77a8fcc4bb89e891ff55f6d86f2f53/node_modules/@wirecat/cli-core/dist/mail/rule-stored.js
16434
+ // node_modules/.pnpm/@wirecat+cli-core@0.575.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_aade55a841395570862eef10edb10226/node_modules/@wirecat/cli-core/dist/mail/rule-stored.js
16433
16435
  var ACTION_OF = { full: "keep", envelope: "envelope", skip: "skip" };
16434
16436
  var KINDS = {
16435
16437
  from: "string",
@@ -16498,7 +16500,7 @@ var storedMailRuleSet = /* @__PURE__ */ __name(async (store, account2, query) =>
16498
16500
  }, "storedMailRuleSet");
16499
16501
  var storedMailRules = /* @__PURE__ */ __name(async (store, account2, query) => (await storedMailRuleSet(store, account2, query)).rules, "storedMailRules");
16500
16502
 
16501
- // node_modules/.pnpm/@wirecat+cli-core@0.572.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ed77a8fcc4bb89e891ff55f6d86f2f53/node_modules/@wirecat/cli-core/dist/mail/rule-tags.js
16503
+ // node_modules/.pnpm/@wirecat+cli-core@0.575.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_aade55a841395570862eef10edb10226/node_modules/@wirecat/cli-core/dist/mail/rule-tags.js
16502
16504
  var reuseOf = /* @__PURE__ */ __name((error) => {
16503
16505
  const { details } = error;
16504
16506
  return details?.reason === "tag-review.required" ? details.candidates?.[0]?.name : void 0;
@@ -16559,7 +16561,7 @@ var settleRuleTags = /* @__PURE__ */ __name(async (store, accountId, rules, outc
16559
16561
  }
16560
16562
  }, "settleRuleTags");
16561
16563
 
16562
- // node_modules/.pnpm/@wirecat+cli-core@0.572.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ed77a8fcc4bb89e891ff55f6d86f2f53/node_modules/@wirecat/cli-core/dist/mail/sender-scores.js
16564
+ // node_modules/.pnpm/@wirecat+cli-core@0.575.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_aade55a841395570862eef10edb10226/node_modules/@wirecat/cli-core/dist/mail/sender-scores.js
16563
16565
  var SCORED = "mail_sender_scores";
16564
16566
  var DAY = 864e5;
16565
16567
  var RECENT = 2 * 365 * DAY;
@@ -16575,7 +16577,7 @@ var demotedSenders = /* @__PURE__ */ __name(async (store) => {
16575
16577
  return senders;
16576
16578
  }, "demotedSenders");
16577
16579
 
16578
- // node_modules/.pnpm/@wirecat+cli-core@0.572.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ed77a8fcc4bb89e891ff55f6d86f2f53/node_modules/@wirecat/cli-core/dist/mail/server-query.js
16580
+ // node_modules/.pnpm/@wirecat+cli-core@0.575.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_aade55a841395570862eef10edb10226/node_modules/@wirecat/cli-core/dist/mail/server-query.js
16579
16581
  var DAY2 = 864e5;
16580
16582
  var empty = /* @__PURE__ */ __name(() => ({ words: [], from: [], to: [], cc: [], subject: [], body: [] }), "empty");
16581
16583
  var narrows = /* @__PURE__ */ __name((criteria) => criteria.words.length + criteria.from.length + criteria.to.length + criteria.cc.length + criteria.subject.length + criteria.body.length > 0 || criteria.since !== void 0 || criteria.before !== void 0 || criteria.seen !== void 0 || criteria.flagged !== void 0, "narrows");
@@ -16648,7 +16650,7 @@ var mailCriteriaOf = /* @__PURE__ */ __name((text3, { exact, timezone } = {}) =>
16648
16650
  };
16649
16651
  }, "mailCriteriaOf");
16650
16652
 
16651
- // node_modules/.pnpm/@wirecat+cli-core@0.572.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ed77a8fcc4bb89e891ff55f6d86f2f53/node_modules/@wirecat/cli-core/dist/mail/server-search.js
16653
+ // node_modules/.pnpm/@wirecat+cli-core@0.575.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_aade55a841395570862eef10edb10226/node_modules/@wirecat/cli-core/dist/mail/server-search.js
16652
16654
  var refusal = {
16653
16655
  unsupported: "this mailbox's server cannot be searched \u2014 use --backend archive",
16654
16656
  offline: "--backend server needs the network \u2014 not with --offline",
@@ -16863,7 +16865,7 @@ var searchMailServer = /* @__PURE__ */ __name(async (store, mailbox, access, req
16863
16865
  return { report, sources };
16864
16866
  }, "searchMailServer");
16865
16867
 
16866
- // node_modules/.pnpm/@wirecat+cli-core@0.572.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ed77a8fcc4bb89e891ff55f6d86f2f53/node_modules/@wirecat/cli-core/dist/mail/sync.js
16868
+ // node_modules/.pnpm/@wirecat+cli-core@0.575.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_aade55a841395570862eef10edb10226/node_modules/@wirecat/cli-core/dist/mail/sync.js
16867
16869
  var DAY3 = 864e5;
16868
16870
  var EDGE = 2 * DAY3;
16869
16871
 
@@ -16897,7 +16899,8 @@ var REVIEW_KINDS = [
16897
16899
  "task_close",
16898
16900
  "action",
16899
16901
  "invoice",
16900
- "payment"
16902
+ "payment",
16903
+ "order"
16901
16904
  ];
16902
16905
  var BY_ACCOUNT = [MEETING_FINDINGS_KIND, MAIL_FINDINGS_KIND];
16903
16906
  var reviewRegistry = /* @__PURE__ */ __name((store) => {
@@ -16980,6 +16983,7 @@ var titleOf = /* @__PURE__ */ __name((row, label) => {
16980
16983
  return `${row.summary ?? "action"} ${subject}`;
16981
16984
  case "invoice":
16982
16985
  case "payment":
16986
+ case "order":
16983
16987
  return row.summary ?? subject;
16984
16988
  default:
16985
16989
  return object2 === null ? subject : `${subject} \u2192 ${object2}`;
@@ -18090,7 +18094,7 @@ import { createHash } from "node:crypto";
18090
18094
  import { existsSync, readFileSync as readFileSync2, statSync } from "node:fs";
18091
18095
  import { basename, extname, relative, sep } from "node:path";
18092
18096
 
18093
- // node_modules/.pnpm/@wirecat+cli-core@0.572.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ed77a8fcc4bb89e891ff55f6d86f2f53/node_modules/@wirecat/cli-core/dist/services/documents/extraction.js
18097
+ // node_modules/.pnpm/@wirecat+cli-core@0.575.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_aade55a841395570862eef10edb10226/node_modules/@wirecat/cli-core/dist/services/documents/extraction.js
18094
18098
  var Proposal = object({
18095
18099
  kind: picklist(["summary", "digest", "fact", "preference"]),
18096
18100
  body: pipe(string(), trim(), minLength(1), maxLength(15e3)),
@@ -18098,10 +18102,10 @@ var Proposal = object({
18098
18102
  });
18099
18103
  var Proposals = object({ items: pipe(array(Proposal), maxLength(20)) });
18100
18104
 
18101
- // node_modules/.pnpm/@wirecat+cli-core@0.572.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ed77a8fcc4bb89e891ff55f6d86f2f53/node_modules/@wirecat/cli-core/dist/services/documents/mirrors.js
18105
+ // node_modules/.pnpm/@wirecat+cli-core@0.575.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_aade55a841395570862eef10edb10226/node_modules/@wirecat/cli-core/dist/services/documents/mirrors.js
18102
18106
  var ID = pipe(string(), regex(/^[A-Za-z0-9_-]{1,200}$/));
18103
18107
 
18104
- // node_modules/.pnpm/@wirecat+cli-core@0.572.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ed77a8fcc4bb89e891ff55f6d86f2f53/node_modules/@wirecat/cli-core/dist/services/documents/sync.js
18108
+ // node_modules/.pnpm/@wirecat+cli-core@0.575.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_aade55a841395570862eef10edb10226/node_modules/@wirecat/cli-core/dist/services/documents/sync.js
18105
18109
  var MAX_PICTURE_BYTES = 25 * 1024 * 1024;
18106
18110
 
18107
18111
  // dist/notes/links.js
@@ -18407,7 +18411,7 @@ var importNotesMap = /* @__PURE__ */ __name(async (store, env, folders) => {
18407
18411
  return linked2;
18408
18412
  }, "importNotesMap");
18409
18413
 
18410
- // node_modules/.pnpm/@wirecat+cli-core@0.572.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ed77a8fcc4bb89e891ff55f6d86f2f53/node_modules/@wirecat/cli-core/dist/mail/cli/marks.js
18414
+ // node_modules/.pnpm/@wirecat+cli-core@0.575.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_aade55a841395570862eef10edb10226/node_modules/@wirecat/cli-core/dist/mail/cli/marks.js
18411
18415
  var iso = /* @__PURE__ */ __name((ms) => ms === null ? null : new Date(ms).toISOString(), "iso");
18412
18416
  var mailMark = strictObject({
18413
18417
  holder: string(),
@@ -18451,7 +18455,7 @@ var acknowledgeCommand = /* @__PURE__ */ __name((mail) => answerEntity(proposesO
18451
18455
  renderAnswer(this, outputFor(this), itemOf(markItem(mark)), () => markText(mark));
18452
18456
  }), "acknowledgeCommand");
18453
18457
 
18454
- // node_modules/.pnpm/@wirecat+cli-core@0.572.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ed77a8fcc4bb89e891ff55f6d86f2f53/node_modules/@wirecat/cli-core/dist/mail/cli/review.js
18458
+ // node_modules/.pnpm/@wirecat+cli-core@0.575.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_aade55a841395570862eef10edb10226/node_modules/@wirecat/cli-core/dist/mail/cli/review.js
18455
18459
  var DAY4 = 864e5;
18456
18460
  var REVIEW_UNTRUSTED = [...SUMMARY_UNTRUSTED, ...MAIL_HIT_UNTRUSTED];
18457
18461
  var MAIL_REVIEW_QUERY = defineQuery({
@@ -18681,7 +18685,7 @@ an agent over MCP, and each scheduled run.`).action(async function(query) {
18681
18685
  saved?.save(found.checked ?? {}, found.complete ? { through: found.until } : {});
18682
18686
  }), "mailReviewCommand");
18683
18687
 
18684
- // node_modules/.pnpm/@wirecat+cli-core@0.572.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_ed77a8fcc4bb89e891ff55f6d86f2f53/node_modules/@wirecat/cli-core/dist/mail/cli/index.js
18688
+ // node_modules/.pnpm/@wirecat+cli-core@0.575.0_@wirecat+cli-base@0.77.1_commander@15.0.0_esbuild@0.28.2_type_aade55a841395570862eef10edb10226/node_modules/@wirecat/cli-core/dist/mail/cli/index.js
18685
18689
  var absentAccount = /* @__PURE__ */ __name((error) => {
18686
18690
  if (error instanceof CliError && error.code === "not_found")
18687
18691
  return void 0;
@@ -20747,6 +20751,7 @@ var SECTIONS = [
20747
20751
  ["notes links", "organise"],
20748
20752
  ["organizations", "organise"],
20749
20753
  ["invoices", "organise"],
20754
+ ["orders", "organise"],
20750
20755
  ["payments", "organise"],
20751
20756
  ["records", "organise"],
20752
20757
  ["projects", "organise"],
@@ -21106,6 +21111,12 @@ var EXAMPLES = {
21106
21111
  "memo facts add 'We moved the launch to spring' --kind decision --evidence 'msg:telegram/1/77/42' --project HRB"
21107
21112
  ],
21108
21113
  "facts list": ["memo facts list kind:decision project:HRB"],
21114
+ "orders list": ["memo orders list status:shipped", `memo orders list number:A-1042 'supplier:"Shop One"' --json`],
21115
+ "orders show": ["memo orders show order:3"],
21116
+ "orders add": [
21117
+ "memo orders add 'Shop One' 2499.00 RUB --kind personal --title A-1042",
21118
+ "memo orders add 'Office Supply' --kind client --organization organization:3"
21119
+ ],
21109
21120
  "invoices list": ["memo invoices list project:HRB open:true", "memo invoices list review:proposed --json"],
21110
21121
  "invoices show": ["memo invoices show invoice:4"],
21111
21122
  "invoices add": [
@@ -21128,6 +21139,7 @@ var EXAMPLES = {
21128
21139
  ],
21129
21140
  "records link": ["memo records link organization:client organization:3 --account sheet:rentals"],
21130
21141
  "payments allocate": ["memo payments allocate payment:9 invoice:4 25000.00"],
21142
+ "payments unlink": ["memo payments unlink payment:9 invoice:4"],
21131
21143
  "facts show": ["memo facts show fact:4 --sources"],
21132
21144
  "facts confirm": ["memo facts confirm fact:4"],
21133
21145
  "facts revoke": ["memo facts revoke fact:4"],
@@ -21352,7 +21364,7 @@ var memoriesCommand = /* @__PURE__ */ __name((program, streams, env) => {
21352
21364
  ...options.supersedes === void 0 ? {} : { supersedes: options.supersedes }
21353
21365
  }, await by))));
21354
21366
  });
21355
- withQuery(annotate(memories.command("list"), { effects: LOCAL_READ }).description("memories, newest first"), MEMORY_QUERY).option("--limit <n>", "most memories, up to 500", positive, 100).option("--json", "print JSON; --json=id,title keeps only those fields").action((words2, { json: json5, limit }) => run(json5, (store) => listMemories(store, words2, limit)));
21367
+ withQuery(annotate(memories.command("list"), { effects: LOCAL_READ }).description("memories, newest first"), MEMORY_QUERY).option("--limit <n>", "most memories, up to 500", positive, 100).option("--json", "print JSON; --json=id,title keeps only those fields").action((words2, { json: json6, limit }) => run(json6, (store) => listMemories(store, words2, limit)));
21356
21368
  annotate(memories.command("show"), { effects: LOCAL_READ, output: { entity: "memory" } }).description("one memory with its evidence").argument("<ref>", "memory:<id>").option("--sources", "read each piece of evidence back: who, when, a short excerpt, and whether it is gone").option("--json", "print JSON; --json=id,title keeps only those fields").action((ref, options) => run(options.json, async (store) => itemAnswer({
21357
21369
  ...memoryItem(await store.memories.get(ref)),
21358
21370
  ...options.sources ? { sources: await store.memories.sources(ref) } : {}
@@ -21470,7 +21482,7 @@ var factsCommand = /* @__PURE__ */ __name((program, streams, env) => {
21470
21482
  ...options.supersedes === void 0 ? {} : { supersedes: options.supersedes }
21471
21483
  }))));
21472
21484
  });
21473
- withQuery(annotate(facts.command("list"), { effects: LOCAL_READ }).description("facts, latest first"), FACT_QUERY).option("--limit <n>", "most facts, up to 500", positive, 100).option("--json", "print JSON; --json=id,title keeps only those fields").action((words2, { json: json5, limit }) => run(json5, (store) => listFacts(store, words2, limit)));
21485
+ withQuery(annotate(facts.command("list"), { effects: LOCAL_READ }).description("facts, latest first"), FACT_QUERY).option("--limit <n>", "most facts, up to 500", positive, 100).option("--json", "print JSON; --json=id,title keeps only those fields").action((words2, { json: json6, limit }) => run(json6, (store) => listFacts(store, words2, limit)));
21474
21486
  annotate(facts.command("show"), { effects: LOCAL_READ, output: { entity: "fact" } }).description("one fact with its evidence").argument("<ref>", "fact:<id>").option("--sources", "read each piece of evidence back: who, when, a short excerpt, and whether it is gone").option("--json", "print JSON; --json=id,title keeps only those fields").action((ref, options) => run(options.json, async (store) => itemAnswer({
21475
21487
  ...factItem(await store.facts.get(ref)),
21476
21488
  ...options.sources ? { sources: await store.facts.sources(ref) } : {}
@@ -21632,7 +21644,7 @@ var writeMeta = /* @__PURE__ */ __name((command) => byOption(command.option("--p
21632
21644
  var financeCommands = /* @__PURE__ */ __name((program, streams, env) => {
21633
21645
  const { run } = answers(program, streams, env);
21634
21646
  const invoices = program.command("invoices").description("invoices you issued or received, with their lines and what paid them; amounts per currency").summary("invoices you issued or received, and what paid them");
21635
- withQuery(json(annotate(invoices.command("list"), { effects: LOCAL_READ })).description("invoices, newest first; review:proposed lists what waits for you"), INVOICE_QUERY).option("--limit <n>", "most invoices, up to 500", positive, 100).action((words2, { json: json5, limit }) => run(json5, (store) => listInvoices(store, words2, limit)));
21647
+ withQuery(json(annotate(invoices.command("list"), { effects: LOCAL_READ })).description("invoices, newest first; review:proposed lists what waits for you"), INVOICE_QUERY).option("--limit <n>", "most invoices, up to 500", positive, 100).action((words2, { json: json6, limit }) => run(json6, (store) => listInvoices(store, words2, limit)));
21636
21648
  json(annotate(invoices.command("show"), { effects: LOCAL_READ, output: { entity: "invoice" } })).description("one invoice with its lines and the payments allocated to it").argument("<ref>", "invoice:<id>").action((ref, options) => run(options.json, async (store) => itemAnswer(await store.finance.invoice(ref))));
21637
21649
  json(writeMeta(party(annotate(invoices.command("add"), {
21638
21650
  effects: LOCAL_WRITE,
@@ -21656,7 +21668,7 @@ var financeCommands = /* @__PURE__ */ __name((program, streams, env) => {
21656
21668
  });
21657
21669
  });
21658
21670
  const payments = program.command("payments").description("money paid to you or by you, and the invoices each payment settles; amounts per currency").summary("money paid to you or by you, and what it settles");
21659
- withQuery(json(annotate(payments.command("list"), { effects: LOCAL_READ })).description("payments, newest first; review:proposed lists what waits for you"), PAYMENT_QUERY).option("--limit <n>", "most payments, up to 500", positive, 100).action((words2, { json: json5, limit }) => run(json5, (store) => listPayments(store, words2, limit)));
21671
+ withQuery(json(annotate(payments.command("list"), { effects: LOCAL_READ })).description("payments, newest first; review:proposed lists what waits for you"), PAYMENT_QUERY).option("--limit <n>", "most payments, up to 500", positive, 100).action((words2, { json: json6, limit }) => run(json6, (store) => listPayments(store, words2, limit)));
21660
21672
  json(annotate(payments.command("show"), { effects: LOCAL_READ, output: { entity: "payment" } })).description("one payment with the invoices it is allocated to").argument("<ref>", "payment:<id>").action((ref, options) => run(options.json, async (store) => itemAnswer(await store.finance.payment(ref))));
21661
21673
  json(writeMeta(party(annotate(payments.command("add"), { effects: LOCAL_WRITE, output: { entity: "payment" } }), "who paid or was paid").option("--kind <kind>", "in (paid to you) or out (paid by you)").option("--title <title>", "the payment's reference, such as the bank's purpose line").option("--occurred-time <time>", "the day it was paid, such as 2026-11-01; today when left out"))).description(`record a payment; ${PROPOSES}. payments allocate matches it to an invoice`).summary("record a payment; an agent's waits for your review").argument("<amount>", "a decimal, such as 50000.00").argument("<currency>", "ISO 4217, such as RUB").action(async (amount, currency, options, command) => {
21662
21674
  const by = await whoRuns(command, env, { asOwner: options.asOwner, question: "record this payment as yours?" });
@@ -21678,8 +21690,75 @@ var financeCommands = /* @__PURE__ */ __name((program, streams, env) => {
21678
21690
  const by = await whoRuns(command, env, { asOwner: options.asOwner, question: `allocate ${payment} as yours?` });
21679
21691
  await run(options.json, async (store) => itemAnswer(await store.finance.allocate({ payment, invoice, amount, by })));
21680
21692
  });
21693
+ json(byOption(annotate(payments.command("unlink"), { effects: LOCAL_WRITE, output: { entity: "payment" } }))).description("take back what a payment settles of an invoice, to allocate it again; you set right a confirmed payment's wrong split, and an agent unlinks only a still-proposed payment it proposed").summary("take back a payment's allocation to an invoice").argument("<payment>", "payment:<id>").argument("<invoice>", "invoice:<id>").action(async (payment, invoice, options, command) => {
21694
+ const by = await whoRuns(command, env, {
21695
+ asOwner: options.asOwner,
21696
+ question: `unlink ${payment} as yours?`
21697
+ });
21698
+ await run(options.json, async (store) => itemAnswer(await store.finance.unallocate({ payment, invoice, by })));
21699
+ });
21681
21700
  }, "financeCommands");
21682
21701
 
21702
+ // dist/finance/orders-command.js
21703
+ var ORDER_QUERY = {
21704
+ entity: "order",
21705
+ backend: "native",
21706
+ fields: [
21707
+ termField("project", "kw", "project:PMED"),
21708
+ termField("status", "enum", "status:shipped", { values: ORDER_STATUSES }),
21709
+ termField("purpose", "enum", "purpose:personal", { values: ORDER_PURPOSES }),
21710
+ termField("review", "enum", "review:proposed", { values: FINANCE_REVIEWS }),
21711
+ termField("customer", "ref", 'customer:"organization:3"'),
21712
+ termField("supplier", "kw", 'supplier:"Shop One"'),
21713
+ termField("number", "kw", "number:A-1042")
21714
+ ]
21715
+ };
21716
+ var listOrders = /* @__PURE__ */ __name(async (store, words2, limit) => {
21717
+ const terms = queryTerms(words2, ORDER_QUERY, "orders list");
21718
+ const filter = {
21719
+ ...terms.has("project") ? { project: await canonicalProject(store, terms.get("project")) } : {},
21720
+ ...terms.has("status") ? { status: terms.get("status") } : {},
21721
+ ...terms.has("purpose") ? { purpose: terms.get("purpose") } : {},
21722
+ ...terms.has("review") ? { review: terms.get("review") } : {},
21723
+ ...terms.has("customer") ? { customer: terms.get("customer") } : {},
21724
+ ...terms.has("supplier") ? { supplierName: terms.get("supplier") } : {},
21725
+ ...terms.has("number") ? { number: terms.get("number") } : {}
21726
+ };
21727
+ return pageOf("orders list", limit, (most2) => store.orders.list({ ...filter, limit: most2 }));
21728
+ }, "listOrders");
21729
+ var oneOf2 = /* @__PURE__ */ __name((value, allowed, flag) => {
21730
+ if (value === void 0 || !allowed.includes(value))
21731
+ throw new CliError("validation_error", `${flag} is one of ${allowed.join(", ")}`, { param: flag });
21732
+ return value;
21733
+ }, "oneOf");
21734
+ var json2 = /* @__PURE__ */ __name((command) => command.option("--json", "print JSON; --json=ref,title keeps only those fields"), "json");
21735
+ var orderCommands = /* @__PURE__ */ __name((program, streams, env) => {
21736
+ const { run } = answers(program, streams, env);
21737
+ const orders = program.command("orders").description("orders you placed or took, for whom, from which shop, and how far delivery got").summary("orders you placed or took, and how far delivery got");
21738
+ withQuery(json2(annotate(orders.command("list"), { effects: LOCAL_READ })).description("orders, newest first; review:proposed is what waits for you"), ORDER_QUERY).option("--limit <n>", "most orders, up to 500", positive, 100).action((words2, { json: json6, limit }) => run(json6, (store) => listOrders(store, words2, limit)));
21739
+ json2(annotate(orders.command("show"), { effects: LOCAL_READ, output: { entity: "order" } })).description("one order with its customer, shop, amount, status and the mail it was read from").argument("<ref>", "order:<id>").action((ref, options) => run(options.json, async (store) => itemAnswer(await store.orders.get(ref))));
21740
+ json2(byOption(annotate(orders.command("add"), { effects: LOCAL_WRITE, output: { entity: "order" }, literal_after_dashes: true }).option("--kind <kind>", `why it was ordered: ${ORDER_PURPOSES.join(", ")}`).option("--person <uid>", "whom it is for, when not you: person:<id>").option("--organization <organization>", "whom it is for, when not you: organization:<id>").option("--title <title>", "the shop's order number").option("--occurred-time <time>", "the day it was ordered, such as 2026-11-01").option("--project <project>", "the project it belongs to: its key or project:<id>").option("--reason <text>", "why an agent proposes it, for the owner who decides").option("--evidence <ref...>", "what shows it, up to 8: msg:, note:, document: or another reference"))).description("record a placed order; yours is confirmed at once, an agent's waits as proposed for you in memo review").summary("record an order; an agent's waits for your review").argument("<shop>", "the shop or supplier, as its mail names it").argument("[amount]", "the order's amount, a decimal such as 2499.00").argument("[currency]", "ISO 4217, such as RUB; given with the amount").action(async (shop, amount, currency, options, command) => {
21741
+ const by = await whoRuns(command, env, { asOwner: options.asOwner, question: "record this order as yours?" });
21742
+ await run(options.json, async (store) => {
21743
+ const customer = partyOf(options, false);
21744
+ const orderDate = dayOf(options.occurredTime);
21745
+ return itemAnswer(await store.orders.add({
21746
+ by,
21747
+ purpose: oneOf2(options.kind, ORDER_PURPOSES, "--kind"),
21748
+ supplierName: shop,
21749
+ ...customer === void 0 ? {} : { customer },
21750
+ ...options.title === void 0 ? {} : { number: options.title },
21751
+ ...amount === void 0 ? {} : { total: amount },
21752
+ ...currency === void 0 ? {} : { currency },
21753
+ ...orderDate === void 0 ? {} : { orderDate },
21754
+ ...options.project === void 0 ? {} : { project: await canonicalProject(store, options.project) },
21755
+ ...by !== "owner" && options.reason !== void 0 ? { reason: options.reason } : {},
21756
+ ...options.evidence === void 0 ? {} : { evidence: options.evidence }
21757
+ }));
21758
+ });
21759
+ });
21760
+ }, "orderCommands");
21761
+
21683
21762
  // dist/findings/command.js
21684
21763
  import { createReadStream } from "node:fs";
21685
21764
  var FINDINGS_QUERY = {
@@ -21933,18 +22012,18 @@ var ACTIONS_QUERY = {
21933
22012
  fields: [termField("status", "enum", "status:proposed", { values: ["proposed", "reviewed"] })],
21934
22013
  defaults: ["status:proposed"]
21935
22014
  };
21936
- var json2 = /* @__PURE__ */ __name((command) => command.option("--json", "print JSON; --json=id,status keeps only those fields"), "json");
22015
+ var json3 = /* @__PURE__ */ __name((command) => command.option("--json", "print JSON; --json=id,status keeps only those fields"), "json");
21937
22016
  var projectActionsCommand = /* @__PURE__ */ __name((projects, streams, env) => {
21938
22017
  const group = projects.command("actions").description("cited key documents and findings an agent proposed for a project, with the evidence to decide them").summary("an agent's proposals for a project, and deciding them");
21939
22018
  const { run } = answers(projects, streams, env);
21940
- json2(annotate(group.command("add"), { effects: LOCAL_WRITE })).description("stage an agent's cited facts and follow-ups about one project for review").argument("<file>", "JSON findings file, or - for stdin; at most 65536 UTF-8 bytes").addHelpText("after", "\nInput: schema_version 1, key, extractor, findings. Every finding names id, kind and evidence: 1\u20138 msg:, document: or note: references with the fingerprint projects evidence or notes show gives. A fact may name a project and a subject (person:, organization:, task: or project:), or neither; a task names its project. Facts name type and statement; tasks name type, title, reason and commitment (explicit or inferred). A due_at or assignee needs due_evidence or assignee_evidence citing this finding's references. A payment names payment {amount, currency, direction to_us|from_us, state paid|expected|cancelled, counterparty, paid_at}: an expected one becomes an invoice and needs a person: or organization: counterparty; a paid or cancelled one names in supersedes the invoice: it settles or voids. At most one project per batch. The same key and input returns the same batch; actions confirm and reject decide it by its id.\n").action(async (file, given, command) => {
22019
+ json3(annotate(group.command("add"), { effects: LOCAL_WRITE })).description("stage an agent's cited facts and follow-ups about one project for review").argument("<file>", "JSON findings file, or - for stdin; at most 65536 UTF-8 bytes").addHelpText("after", "\nInput: schema_version 1, key, extractor, findings. Every finding names id, kind and evidence: 1\u20138 msg:, document: or note: references with the fingerprint projects evidence or notes show gives. A fact may name a project and a subject (person:, organization:, task: or project:), or neither; a task names its project. Facts name type and statement; tasks name type, title, reason and commitment (explicit or inferred). A due_at or assignee needs due_evidence or assignee_evidence citing this finding's references. A payment names payment {amount, currency, direction to_us|from_us, state paid|expected|cancelled, counterparty, paid_at}: an expected one becomes an invoice and needs a person: or organization: counterparty; a paid or cancelled one names in supersedes the invoice: it settles or voids. At most one project per batch. The same key and input returns the same batch; actions confirm and reject decide it by its id.\n").action(async (file, given, command) => {
21941
22020
  const input = parseEvidenceFindingsJson(await readBatchInput(file === "-" ? environmentOf(projects).stdin ?? process.stdin : createReadStream2(file)));
21942
22021
  const author = await whoRuns(command, env, { question: "" });
21943
22022
  if (author === "owner")
21944
22023
  throw new CliError("validation_error", "findings are an agent's proposals; record your own with memo facts add");
21945
22024
  await run(given.json, async (store) => itemAnswer(await store.evidenceFindings.stage(input, author)));
21946
22025
  });
21947
- withQuery(json2(answerEntity(annotate(group.command("list"), { effects: LOCAL_READ }), "project_action", union([
22026
+ withQuery(json3(answerEntity(annotate(group.command("list"), { effects: LOCAL_READ }), "project_action", union([
21948
22027
  strictObject({
21949
22028
  kind: literal("key_document"),
21950
22029
  id: string(),
@@ -21985,7 +22064,7 @@ var projectActionsCommand = /* @__PURE__ */ __name((projects, streams, env) => {
21985
22064
  });
21986
22065
  }));
21987
22066
  for (const name of ["confirm", "reject"]) {
21988
- const command = byOption(json2(annotate(group.command(name), { effects: LOCAL_WRITE })).description(name === "confirm" ? "confirm a suggested key document, or create the named findings of a batch and reject its other new ones; an agent decides for you only when agent_decisions is true, and with --reason" : "reject a suggested key document, or every new finding of a batch").summary(name === "confirm" ? "confirm a proposal, yours or an agent's with --reason" : "reject a proposal").argument("<project>", "the project's id, project:<id>, key, exact name or alias").argument("<id>", "key:<id> for a key document, or a findings batch number, as projects actions list gives them"));
22067
+ const command = byOption(json3(annotate(group.command(name), { effects: LOCAL_WRITE })).description(name === "confirm" ? "confirm a suggested key document, or create the named findings of a batch and reject its other new ones; an agent decides for you only when agent_decisions is true, and with --reason" : "reject a suggested key document, or every new finding of a batch").summary(name === "confirm" ? "confirm a proposal, yours or an agent's with --reason" : "reject a proposal").argument("<project>", "the project's id, project:<id>, key, exact name or alias").argument("<id>", "key:<id> for a key document, or a findings batch number, as projects actions list gives them"));
21989
22068
  if (name === "confirm")
21990
22069
  command.argument("[findings...]", "the finding IDs of a batch to create");
21991
22070
  command.option("--fingerprint <hash>", "a findings batch's fingerprint, as projects actions list gives it").option("--reason <text>", "why, in a few words; required when an agent decides for you").action(async (reference3, id, ...rest) => {
@@ -22938,23 +23017,28 @@ due_evidence, assignee with assignee_evidence; no project means the mailbox's in
22938
23017
  change close|due|detail, reason; due needs due_at, detail needs detail) \xB7 fact (type, statement, subject or project)
22939
23018
  \xB7 memory (memory_kind, scope, body, subject or project) \xB7 link (from, to, reason: contact:email/<address> \u2192 person:N,
22940
23019
  person:N \u2192 organization:N, chat:email/\u2026 \u2192 project:N) \xB7 new_contact (address of a cited email's sender or recipient,
22941
- name, reason).
23020
+ name, reason) \xB7 invoice (direction receivable|payable, counterparty person:N|organization:N, currency, lines of
23021
+ description and amount, optional total, number, issue_date, due_date, project) \xB7 payment (direction in|out, amount,
23022
+ currency, date, optional payer, payee, reference, allocations of stored invoices) \xB7 order (purpose
23023
+ personal|business|client|other, supplier_name, optional customer, supplier, number, total with currency, status,
23024
+ order_date, invoice, payment) \xB7 order_update (supplier_name and number of a stored order, status, date when delivered).
23025
+ An invoice, payment or order is checked as memo invoices|payments|orders add checks yours; a refusal names why.
22942
23026
  A cited email that changed since review refuses the batch (mail-findings.stale), one still partial too
22943
23027
  (mail-findings.partial). Nothing is created until the owner confirms: memo review confirm <batch>/<finding>.
22944
23028
  `;
22945
- var json3 = /* @__PURE__ */ __name((command) => command.option("--json", "print JSON; --json=id,status keeps only those fields"), "json");
23029
+ var json4 = /* @__PURE__ */ __name((command) => command.option("--json", "print JSON; --json=id,status keeps only those fields"), "json");
22946
23030
  var mailFindingsCommand = /* @__PURE__ */ __name((program, mail, streams, env) => {
22947
23031
  const { run } = answers(program, streams, env);
22948
- const findings = mail.command("findings").description("cited tasks, task updates, facts, memories, links and contacts an agent read in new mail").summary("what an agent read in new mail, cited, waiting for the owner");
22949
- json3(proposesOnly(annotate(findings.command("add"), { effects: LOCAL_WRITE, output: { entity: "mail_findings" } }))).description("stage one mailbox's findings for the owner; nothing is created until the owner confirms").summary("stage one mailbox's findings; the owner confirms them").argument("<file>", "JSON findings file, or - for stdin; at most 65536 UTF-8 bytes").option("--source <accounts>", MAILBOX_HELP).addHelpText("after", INPUT_HELP).action(async (file, given) => {
23032
+ const findings = mail.command("findings").description("cited tasks, task updates, facts, memories, links, contacts, invoices, payments and orders an agent read in new mail").summary("what an agent read in new mail, cited, waiting for the owner");
23033
+ json4(proposesOnly(annotate(findings.command("add"), { effects: LOCAL_WRITE, output: { entity: "mail_findings" } }))).description("stage one mailbox's findings for the owner; nothing is created until the owner confirms").summary("stage one mailbox's findings; the owner confirms them").argument("<file>", "JSON findings file, or - for stdin; at most 65536 UTF-8 bytes").option("--source <accounts>", MAILBOX_HELP).addHelpText("after", INPUT_HELP).action(async (file, given) => {
22950
23034
  const text3 = await readBatchInput(file === "-" ? environmentOf(program).stdin ?? process.stdin : createReadStream3(file));
22951
23035
  const input = parseMailFindingsJson(text3);
22952
23036
  const author = await whoRuns(program, env, { question: "" });
22953
23037
  const agent = author === "owner" ? { bot: "memo-mail-findings" } : author;
22954
23038
  await run(given.json, async (store) => itemAnswer(await store.mailFindings.stage(await oneMailboxOf(store, env, given.source), input, agent)));
22955
23039
  });
22956
- json3(annotate(findings.command("show"), { effects: LOCAL_READ, output: { entity: "mail_findings" } })).description("one findings batch: its findings with their evidence, earlier decisions and the review receipt").summary("one findings batch with its evidence and decisions").argument("<id>", "the batch id `mail findings add` or `list` gave").action((id, given) => run(given.json, async (store) => itemAnswer(await store.mailFindings.get(id))));
22957
- withQuery(json3(annotate(findings.command("list"), { effects: LOCAL_READ, output: { entity: "mail_findings" } })), FINDINGS_QUERY2).description("mail findings batches, newest first; status:proposed is what waits for the owner").option("--source <accounts>", "only this mailbox's batches: email:<address>").option("--limit <n>", "batches per page, at most 50", positive, 20).option("--page <n>", "which page, from 1", positive, 1).action((words2, given) => run(given.json, async (store) => {
23040
+ json4(annotate(findings.command("show"), { effects: LOCAL_READ, output: { entity: "mail_findings" } })).description("one findings batch: its findings with their evidence, earlier decisions and the review receipt").summary("one findings batch with its evidence and decisions").argument("<id>", "the batch id `mail findings add` or `list` gave").action((id, given) => run(given.json, async (store) => itemAnswer(await store.mailFindings.get(id))));
23041
+ withQuery(json4(annotate(findings.command("list"), { effects: LOCAL_READ, output: { entity: "mail_findings" } })), FINDINGS_QUERY2).description("mail findings batches, newest first; status:proposed is what waits for the owner").option("--source <accounts>", "only this mailbox's batches: email:<address>").option("--limit <n>", "batches per page, at most 50", positive, 20).option("--page <n>", "which page, from 1", positive, 1).action((words2, given) => run(given.json, async (store) => {
22958
23042
  const status = queryTerms(words2, FINDINGS_QUERY2, "mail findings list").get("status");
22959
23043
  const account2 = given.source ? await oneMailboxOf(store, env, given.source) : void 0;
22960
23044
  const found = await store.mailFindings.list({
@@ -23094,10 +23178,10 @@ var mcpCommandDefinition = /* @__PURE__ */ __name((program, streams, env, create
23094
23178
  }).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) => {
23095
23179
  if (!options.http && (options.port !== void 0 || options.publicUrl !== void 0))
23096
23180
  throw new CliError("validation_error", "--port and --public-url require --http");
23097
- const { createMemoServer } = await import("./server-RWZYJVLZ.js");
23181
+ const { createMemoServer } = await import("./server-UBMV5OI7.js");
23098
23182
  const build = /* @__PURE__ */ __name(() => createMemoServer(env, createProgram2, options.permission), "build");
23099
23183
  if (options.http) {
23100
- const { httpLockFile, mcpUrlOf, portOf, publicUrlOf, serveOverHttp } = await import("./mcp-JQ6WGHBL.js");
23184
+ const { httpLockFile, mcpUrlOf, portOf, publicUrlOf, serveOverHttp } = await import("./mcp-ZRKYZLNM.js");
23101
23185
  const publicUrl = publicUrlOf(options.publicUrl, {
23102
23186
  missing: "--http",
23103
23187
  reaches: "the browser apps reach memo",
@@ -23149,7 +23233,7 @@ var mcpCommandDefinition = /* @__PURE__ */ __name((program, streams, env, create
23149
23233
  });
23150
23234
  });
23151
23235
  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() {
23152
- const { revokeAll } = await import("./mcp-JQ6WGHBL.js");
23236
+ const { revokeAll } = await import("./mcp-ZRKYZLNM.js");
23153
23237
  revokeAll(httpTokenFile(env));
23154
23238
  out.print(this.opts().json, itemAnswer({ revoked: true }));
23155
23239
  });
@@ -23680,14 +23764,14 @@ var notesCommandDefinition = /* @__PURE__ */ __name((program, streams, env) => {
23680
23764
  ...answer.backlinks.length ? [`linked from: ${answer.backlinks.map(({ from }) => from).join(", ")}`] : []
23681
23765
  ].join("\n"));
23682
23766
  });
23683
- withQuery(annotate(notes2.command("list"), { effects: LOCAL_READ }).description("notes, newest first"), NOTES_LIST_QUERY).option("--limit <n>", "most notes, at most 500", positive, 20).option("--page <n>", "which page, from 1", positive, 1).option("--json", "print JSON; --json=id,title keeps only those fields").action(async (words2, { json: json5, ...paging }) => {
23767
+ withQuery(annotate(notes2.command("list"), { effects: LOCAL_READ }).description("notes, newest first"), NOTES_LIST_QUERY).option("--limit <n>", "most notes, at most 500", positive, 20).option("--page <n>", "which page, from 1", positive, 1).option("--json", "print JSON; --json=id,title keeps only those fields").action(async (words2, { json: json6, ...paging }) => {
23684
23768
  const terms = queryTerms(words2, NOTES_LIST_QUERY, "notes list");
23685
23769
  const about = terms.get("about");
23686
23770
  const source = terms.get("source");
23687
23771
  const search2 = terms.get("text");
23688
23772
  if (about !== void 0 && terms.size > 1)
23689
23773
  throw new CliError("validation_error", "about: stands alone in notes list: its notes are found through links");
23690
- const options = { ...paging, json: json5 };
23774
+ const options = { ...paging, json: json6 };
23691
23775
  const page = await withNotes(async (store) => listNotes(store, {
23692
23776
  limit: options.limit,
23693
23777
  offset: (options.page - 1) * options.limit,
@@ -24069,11 +24153,11 @@ var ROW = {
24069
24153
  ],
24070
24154
  text: ["reason"]
24071
24155
  };
24072
- var json4 = /* @__PURE__ */ __name((command) => command.option("--json", "print JSON; --json=id,title keeps only those fields"), "json");
24156
+ var json5 = /* @__PURE__ */ __name((command) => command.option("--json", "print JSON; --json=id,title keeps only those fields"), "json");
24073
24157
  var reviewCommand = /* @__PURE__ */ __name((program, streams, env) => {
24074
24158
  const { print } = answers(program, streams, env);
24075
24159
  const review = program.command("review").description("every proposal waiting for your decision, across projects: links, key documents, facts, invoices, payments and more").summary("every proposal waiting for your decision, across projects");
24076
- json4(answerEntity(withQuery(annotate(review.command("list", { isDefault: true }), { effects: LOCAL_READ }).description("what waits for the owner's decision, newest first, with titles, who proposed it, why and the evidence").summary("what waits for your decision, newest first, with titles and evidence"), REVIEW_QUERY), "memo_proposal", PROPOSAL, { row: ROW })).option("--limit <n>", "proposals per page, at most 50", positive, 20).option("--page <n>", "which page, from 1", positive, 1).option("--compact", "one line per proposal").action(async (words2, given) => {
24160
+ json5(answerEntity(withQuery(annotate(review.command("list", { isDefault: true }), { effects: LOCAL_READ }).description("what waits for the owner's decision, newest first, with titles, who proposed it, why and the evidence").summary("what waits for your decision, newest first, with titles and evidence"), REVIEW_QUERY), "memo_proposal", PROPOSAL, { row: ROW })).option("--limit <n>", "proposals per page, at most 50", positive, 20).option("--page <n>", "which page, from 1", positive, 1).option("--compact", "one line per proposal").action(async (words2, given) => {
24077
24161
  if (given.limit > 50)
24078
24162
  throw new CliError("validation_error", "--limit is at most 50", { param: "limit" });
24079
24163
  const found = await withStore(env, (store) => listReview(store, env, words2, given));
@@ -24088,7 +24172,7 @@ var reviewCommand = /* @__PURE__ */ __name((program, streams, env) => {
24088
24172
  });
24089
24173
  print(given.json, body, reviewText(found.items, found.hasMore), given.compact);
24090
24174
  });
24091
- json4(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) => {
24175
+ json5(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) => {
24092
24176
  const body = await withStore(env, async (store) => {
24093
24177
  const shown = await showReview(store, env, id);
24094
24178
  const window = {
@@ -24110,7 +24194,7 @@ var reviewCommand = /* @__PURE__ */ __name((program, streams, env) => {
24110
24194
  print(given.json, body, void 0, given.compact);
24111
24195
  });
24112
24196
  for (const name of ["confirm", "reject"]) {
24113
- const command = byOption(json4(annotate(review.command(name), { effects: LOCAL_WRITE }))).description(name === "confirm" ? "confirm proposals by id or range (17070-17079,fact:500-502,17080/f1); each is decided on its own, so a refusal leaves the others decided. An agent decides only with --reason, never its own or a scan's" : "turn proposals down by id or range, with why; each is decided on its own").summary(name === "confirm" ? "confirm proposals by id or range; each on its own" : "turn proposals down, with why").argument("<ids...>", name === "confirm" ? "ids or ranges as review lists them; 17080/f1 accepts that finding and rejects the batch's others" : "ids or ranges as review lists them; a batch is turned down whole");
24197
+ const command = byOption(json5(annotate(review.command(name), { effects: LOCAL_WRITE }))).description(name === "confirm" ? "confirm proposals by id or range (17070-17079,fact:500-502,17080/f1); each is decided on its own, so a refusal leaves the others decided. An agent decides only with --reason, never its own or a scan's" : "turn proposals down by id or range, with why; each is decided on its own").summary(name === "confirm" ? "confirm proposals by id or range; each on its own" : "turn proposals down, with why").argument("<ids...>", name === "confirm" ? "ids or ranges as review lists them; 17080/f1 accepts that finding and rejects the batch's others" : "ids or ranges as review lists them; a batch is turned down whole");
24114
24198
  if (name === "confirm")
24115
24199
  command.option("--reason <text>", "why, in a few words; required when an agent decides");
24116
24200
  else
@@ -24131,7 +24215,7 @@ var reviewCommand = /* @__PURE__ */ __name((program, streams, env) => {
24131
24215
  print(given.json, itemAnswer(result, issues.length ? { meta: { complete: false, issues } } : void 0), decidedText(result), given.compact);
24132
24216
  });
24133
24217
  }
24134
- json4(annotate(review.command("status"), { effects: LOCAL_READ, output: { entity: "review_status" } })).summary("since yesterday: new mail, what is owed and waiting, what agents proposed").description("the owner's daily look, with no model call: per mail account the threads with new mail, what you owe and wait for, and how far each agent's processing mark has read; then what was proposed and what waits").option("--since-time <time>", "how far back: hours or days (12h, 7d) or a start date (2026-11-01)", "1d").action(async (given) => {
24218
+ json5(annotate(review.command("status"), { effects: LOCAL_READ, output: { entity: "review_status" } })).summary("since yesterday: new mail, what is owed and waiting, what agents proposed").description("the owner's daily look, with no model call: per mail account the threads with new mail, what you owe and wait for, and how far each agent's processing mark has read; then what was proposed and what waits").option("--since-time <time>", "how far back: hours or days (12h, 7d) or a start date (2026-11-01)", "1d").action(async (given) => {
24135
24219
  const since = /^\d{4}-\d{2}-\d{2}/.test(given.sinceTime) ? Date.parse(given.sinceTime) : Date.now() - parseDuration(given.sinceTime, "--since-time");
24136
24220
  if (Number.isNaN(since))
24137
24221
  throw new CliError("validation_error", `--since-time takes 12h, 7d or a date, not "${given.sinceTime}"`, {
@@ -24635,8 +24719,8 @@ For an agent: read with --compact, one line per hit with its reference. Never wr
24635
24719
  for (const { source, reason } of answer.skipped)
24636
24720
  streams.diagnostic(`${source} not searched: ${reason}
24637
24721
  `);
24638
- const { limit, page, json: json5, ...rest } = options;
24639
- print(json5, notesAnswer(answer, limit, page, { query: words2.join(" "), ...rest }), searchText(answer, (page - 1) * limit));
24722
+ const { limit, page, json: json6, ...rest } = options;
24723
+ print(json6, notesAnswer(answer, limit, page, { query: words2.join(" "), ...rest }), searchText(answer, (page - 1) * limit));
24640
24724
  });
24641
24725
  searchMemoriesCommand(group, streams, env);
24642
24726
  annotate(group.command("people"), { effects: LOCAL_READ, output: { entity: "person" } }).description("people whose name, username or alias holds every word, in every account unless --source narrows it; each with its person:<id> for --contact and its identities").summary("people by name across every account").argument("<name...>", "parts of the name, username or alias; case and accents do not matter").option("--source <accounts>", ACCOUNTS_HELP).option("--limit <n>", "most people, at most 100", (value) => {
@@ -25575,6 +25659,34 @@ var OWN_ENTITIES = entityFields({
25575
25659
  agent_action: ["id", "actor", "tool", "tier", "target", "status", "error", "started_at", "finished_at"],
25576
25660
  meeting_project: ["id", "meeting", "project", "confirmed", "provenance", "fingerprint"],
25577
25661
  notes_folder: ["id", "name", "path", "format", "kept_by"],
25662
+ order: [
25663
+ "id",
25664
+ "ref",
25665
+ "title",
25666
+ "customer",
25667
+ "purpose",
25668
+ "supplier",
25669
+ "supplier_name",
25670
+ "number",
25671
+ "currency",
25672
+ "total",
25673
+ "status",
25674
+ "order_date",
25675
+ "fulfilled_date",
25676
+ "invoice",
25677
+ "payment",
25678
+ "review",
25679
+ "author",
25680
+ "model",
25681
+ "confirmed_by",
25682
+ "source",
25683
+ "reason",
25684
+ "project",
25685
+ "project_name",
25686
+ "created_at",
25687
+ "updated_at",
25688
+ "evidence"
25689
+ ],
25578
25690
  invoice: [
25579
25691
  "id",
25580
25692
  "ref",
@@ -25708,6 +25820,7 @@ var createProgram = /* @__PURE__ */ __name(({ streams: raw = processStreams, env
25708
25820
  mentionsCommand(program, streams, env);
25709
25821
  factsCommand(program, streams, env);
25710
25822
  financeCommands(program, streams, env);
25823
+ orderCommands(program, streams, env);
25711
25824
  recordsCommand(program, streams, env);
25712
25825
  findingsCommand(program, streams, env);
25713
25826
  actionsCommand(program, streams, env);
@@ -25730,10 +25843,10 @@ var createProgram = /* @__PURE__ */ __name(({ streams: raw = processStreams, env
25730
25843
  const skill2 = customizeSharedCommand(skillCommand2(APP, new URL("../skills/cli-memo/SKILL.md", new URL("../program.js", import.meta.url).href)), "Memo installs its own stored-data instructions through its environment, prints the packaged primary skill without filesystem effects, and takes --json on each skill command because it has no global one.", () => {
25731
25844
  const out = answers(program, streams, env);
25732
25845
  const skill3 = skillCommand(APP, new URL("../skills/cli-memo/SKILL.md", new URL("../program.js", import.meta.url).href), (command) => {
25733
- const json5 = command.opts().json === true;
25734
- const renderer = createRenderer({ format: json5 ? "json" : "pretty", color: false, streams });
25846
+ const json6 = command.opts().json === true;
25847
+ const renderer = createRenderer({ format: json6 ? "json" : "pretty", color: false, streams });
25735
25848
  return {
25736
- renderer: json5 ? { ...renderer, result: /* @__PURE__ */ __name((value) => out.print(true, itemAnswer(value)), "result") } : renderer,
25849
+ renderer: json6 ? { ...renderer, result: /* @__PURE__ */ __name((value) => out.print(true, itemAnswer(value)), "result") } : renderer,
25737
25850
  streams,
25738
25851
  env
25739
25852
  };