@wirecat/cli-memo 0.131.61 → 0.131.63

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 (156) hide show
  1. package/dist/bin/memo.js +2 -2
  2. package/dist/bundle/{all-profiles-WPBMSWJF.js → all-profiles-L6EBORCV.js} +5 -5
  3. package/dist/bundle/{anthropic-FZRVISSX.js → anthropic-42PADP4V.js} +2 -2
  4. package/dist/bundle/{app-server-QGIZPU4R.js → app-server-QBJG7OGQ.js} +35 -35
  5. package/dist/bundle/auto-LGA3VXKQ.js +85 -0
  6. package/dist/bundle/{bun-AO76624P.js → bun-NYSNYHAD.js} +2 -2
  7. package/dist/bundle/{bun-sqlite-HYBE66QU.js → bun-sqlite-B46U7KI7.js} +2 -2
  8. package/dist/bundle/{chunk-233N77WN.js → chunk-2UCLF4AO.js} +273 -272
  9. package/dist/bundle/{chunk-YRHLPKTG.js → chunk-2XVXF4RW.js} +2 -2
  10. package/dist/bundle/{chunk-IZZU4NS6.js → chunk-347UBASY.js} +3 -3
  11. package/dist/bundle/{chunk-RRHSJ7CR.js → chunk-37E74SKW.js} +62 -62
  12. package/dist/bundle/{chunk-7DPHHUSZ.js → chunk-3ZXWLFUG.js} +21 -21
  13. package/dist/bundle/{chunk-6YK3RZZJ.js → chunk-4BKSE3CG.js} +4 -4
  14. package/dist/bundle/{chunk-WFDGEREJ.js → chunk-4GTZSCUE.js} +2 -2
  15. package/dist/bundle/{chunk-OFERGS4J.js → chunk-4SUROBD4.js} +2 -2
  16. package/dist/bundle/{chunk-5ZVWDMDT.js → chunk-5D7BPC33.js} +1 -1
  17. package/dist/bundle/{chunk-CTRVHHBK.js → chunk-5Q534L4I.js} +5 -5
  18. package/dist/bundle/{chunk-RRPUM4RS.js → chunk-6OZ2WI7Y.js} +2 -2
  19. package/dist/bundle/{chunk-B4VCZOLF.js → chunk-724DPWN6.js} +1 -1
  20. package/dist/bundle/{chunk-4WKZ3UIZ.js → chunk-A524HPDV.js} +1 -1
  21. package/dist/bundle/{chunk-2Q55K5HY.js → chunk-ACG5QN77.js} +2 -2
  22. package/dist/bundle/{chunk-WMRR2SNG.js → chunk-B3SERZMP.js} +1 -1
  23. package/dist/bundle/{chunk-XT7EJLA4.js → chunk-BOMHJR2E.js} +4 -4
  24. package/dist/bundle/{chunk-SSX6S3EG.js → chunk-DKO7WEXJ.js} +1 -1
  25. package/dist/bundle/{chunk-YVCNJKDA.js → chunk-E5JQFEIQ.js} +42 -42
  26. package/dist/bundle/{chunk-LIW42UCX.js → chunk-EGI6JHIA.js} +9 -9
  27. package/dist/bundle/{chunk-2UXFM5GE.js → chunk-FC5PK6M6.js} +12 -12
  28. package/dist/bundle/{chunk-HLTGPK6P.js → chunk-FG4Q6T72.js} +4 -4
  29. package/dist/bundle/{chunk-ETYD55QD.js → chunk-FH4P5UQA.js} +3 -3
  30. package/dist/bundle/{chunk-7CKXTTZG.js → chunk-FWRBJAQZ.js} +2 -2
  31. package/dist/bundle/{chunk-F6E7DSJO.js → chunk-GNHDE7FH.js} +1738 -32
  32. package/dist/bundle/{chunk-6NHJ4TTJ.js → chunk-HGNWJJDT.js} +336 -335
  33. package/dist/bundle/{chunk-OQSOQYSQ.js → chunk-HKC7GDJD.js} +4 -4
  34. package/dist/bundle/{chunk-XYFYZP2N.js → chunk-I5L7MLZ6.js} +1 -1
  35. package/dist/bundle/{chunk-KZRBIHQL.js → chunk-K4WCDPDL.js} +5 -5
  36. package/dist/bundle/{chunk-3FPF5DBU.js → chunk-K5VF47E2.js} +5 -5
  37. package/dist/bundle/{chunk-K6FQVROA.js → chunk-LK6D26RK.js} +21 -21
  38. package/dist/bundle/{chunk-6AEQACVV.js → chunk-MWAXS4BX.js} +7 -7
  39. package/dist/bundle/{chunk-D4PK5OXW.js → chunk-NZJUMLTD.js} +1 -1
  40. package/dist/bundle/{chunk-UTUUXAPS.js → chunk-O2NQCWRM.js} +28 -28
  41. package/dist/bundle/{chunk-35OBIX5A.js → chunk-OXBETHGN.js} +8 -8
  42. package/dist/bundle/{chunk-OIHKFGHK.js → chunk-PKUBC2ME.js} +3 -3
  43. package/dist/bundle/{chunk-7ETYPYIN.js → chunk-Q3VEUHC7.js} +12 -12
  44. package/dist/bundle/{chunk-RT476OFI.js → chunk-RGZUDHAQ.js} +7 -7
  45. package/dist/bundle/{chunk-UTSMQ7KI.js → chunk-RLX5SC2X.js} +1 -1
  46. package/dist/bundle/{chunk-PSYZ33UQ.js → chunk-RP6VV35S.js} +1 -1
  47. package/dist/bundle/{chunk-R7ZD7TNI.js → chunk-RSG7BRXI.js} +1 -1
  48. package/dist/bundle/{chunk-37ILRM2G.js → chunk-RTLQHLHG.js} +4 -4
  49. package/dist/bundle/{chunk-4HLYKLGJ.js → chunk-SIBQ34LX.js} +1 -1
  50. package/dist/bundle/{chunk-JAJSTFBB.js → chunk-SIJA2UYC.js} +6 -6
  51. package/dist/bundle/{chunk-MQCBJGXA.js → chunk-SJ55SMBE.js} +9 -9
  52. package/dist/bundle/{chunk-I6LNI45S.js → chunk-SOQGV3ZM.js} +5 -5
  53. package/dist/bundle/{chunk-5SD4CV2D.js → chunk-TBSWOVM3.js} +571 -293
  54. package/dist/bundle/{chunk-STXMSLU6.js → chunk-TKPIS4G2.js} +1 -1
  55. package/dist/bundle/{chunk-XU7UER3B.js → chunk-TSKGEK2S.js} +10 -10
  56. package/dist/bundle/{chunk-2VMZLQ5K.js → chunk-V7TJSYFK.js} +2 -2
  57. package/dist/bundle/{chunk-KGZM5WYK.js → chunk-VTKLHYCZ.js} +4 -4
  58. package/dist/bundle/{chunk-7E46JN6V.js → chunk-VX4HNQLN.js} +2 -2
  59. package/dist/bundle/{chunk-OEPBIWHI.js → chunk-WDWKG7FJ.js} +150 -150
  60. package/dist/bundle/{chunk-OWVHNTY6.js → chunk-WDZOEBTE.js} +6 -6
  61. package/dist/bundle/{chunk-7NKBX7FC.js → chunk-XVREIQ2N.js} +2 -2
  62. package/dist/bundle/chunk-YVJAD5E7.js +268 -0
  63. package/dist/bundle/{chunk-Y264FW55.js → chunk-ZUQXDJ7A.js} +1 -1
  64. package/dist/bundle/{command-contract-4TGN6GSP.js → command-contract-SIXWLKAS.js} +11 -11
  65. package/dist/bundle/{decode-S3PPQHID.js → decode-2Z4GCIGA.js} +2 -2
  66. package/dist/bundle/{echarts-AH6U7X2S.js → echarts-JADCSUD7.js} +2 -2
  67. package/dist/bundle/{embed-4NSZECMB.js → embed-ZLEPINEK.js} +3 -3
  68. package/dist/bundle/{embedder-EGRA7YEY.js → embedder-E3DHPZCK.js} +6 -6
  69. package/dist/bundle/{entry-O3V72WZP.js → entry-SFLEGFSN.js} +4 -4
  70. package/dist/bundle/failure-OGSLUNT6.js +65 -0
  71. package/dist/bundle/{first-run-S7RRDIGX.js → first-run-ZKDGFY6P.js} +5 -5
  72. package/dist/bundle/{first-screen-YKJAQUVE.js → first-screen-IQEU7XF2.js} +12 -12
  73. package/dist/bundle/{instructions-ETUUZKBM.js → instructions-ECXOBMWS.js} +1 -1
  74. package/dist/bundle/{mcp-J3K7RC5W.js → mcp-Y4XMDC5Q.js} +35 -35
  75. package/dist/bundle/memo.js +6 -6
  76. package/dist/bundle/{node-O4XVOEGO.js → node-A6363DJ4.js} +2 -2
  77. package/dist/bundle/{node-sqlite-PC3K43U7.js → node-sqlite-FA2P77PW.js} +3 -3
  78. package/dist/bundle/{oauth-MBJUEG2Z.js → oauth-DBGARGR7.js} +4 -4
  79. package/dist/bundle/{open-5FAYV6JM.js → open-5YYG2VWH.js} +2 -2
  80. package/dist/bundle/{openai-57CRSGLH.js → openai-BPVP7TZ7.js} +7 -7
  81. package/dist/bundle/{process-NAW4COYH.js → process-DGPZRHQA.js} +1 -1
  82. package/dist/bundle/{program-CFJAGFYD.js → program-ZHLCEVWB.js} +618 -290
  83. package/dist/bundle/{prompt-FT2MMVS7.js → prompt-NTAZWPWA.js} +2 -2
  84. package/dist/bundle/{recognize-PEYPOI3Q.js → recognize-OGEP5VD3.js} +1 -1
  85. package/dist/bundle/{remote-FQAXACFW.js → remote-DER2PFH6.js} +4 -4
  86. package/dist/bundle/{rerank-4KEB4X6T.js → rerank-PB5ACFHS.js} +4 -4
  87. package/dist/bundle/{serve-LCTIHO37.js → serve-KNEY4BXK.js} +6 -6
  88. package/dist/bundle/{server-XQLRMM73.js → server-I5BPRS5C.js} +55 -52
  89. package/dist/bundle/server-IQILK5YP.js +61 -0
  90. package/dist/bundle/server-NKI7SVK5.js +48 -0
  91. package/dist/bundle/{state-YF4M4RHC.js → state-JMCWHHZM.js} +3 -3
  92. package/dist/bundle/{store-EQEMYMCC.js → store-6H4FPFTX.js} +9 -9
  93. package/dist/bundle/store-maintenance-command-IFVWSQMJ.js +47 -0
  94. package/dist/bundle/update-YMILPFRY.js +68 -0
  95. package/dist/config-issues.d.ts +4 -1
  96. package/dist/config-issues.d.ts.map +1 -1
  97. package/dist/config-issues.js +6 -2
  98. package/dist/config-issues.js.map +1 -1
  99. package/dist/contract-overrides/search.js +2 -2
  100. package/dist/contract-overrides/search.js.map +1 -1
  101. package/dist/digest/command.d.ts.map +1 -1
  102. package/dist/digest/command.js +11 -7
  103. package/dist/digest/command.js.map +1 -1
  104. package/dist/digest/digest.d.ts +29 -4
  105. package/dist/digest/digest.d.ts.map +1 -1
  106. package/dist/digest/digest.js +124 -39
  107. package/dist/digest/digest.js.map +1 -1
  108. package/dist/digest/sync-health.d.ts +51 -0
  109. package/dist/digest/sync-health.d.ts.map +1 -0
  110. package/dist/digest/sync-health.js +116 -0
  111. package/dist/digest/sync-health.js.map +1 -0
  112. package/dist/digest/tasks.d.ts +38 -0
  113. package/dist/digest/tasks.d.ts.map +1 -0
  114. package/dist/digest/tasks.js +108 -0
  115. package/dist/digest/tasks.js.map +1 -0
  116. package/dist/digest/text.d.ts.map +1 -1
  117. package/dist/digest/text.js +9 -2
  118. package/dist/digest/text.js.map +1 -1
  119. package/dist/knowledge/messenger-sync.d.ts +5 -0
  120. package/dist/knowledge/messenger-sync.d.ts.map +1 -1
  121. package/dist/knowledge/messenger-sync.js +12 -9
  122. package/dist/knowledge/messenger-sync.js.map +1 -1
  123. package/dist/mcp/catalogue.d.ts.map +1 -1
  124. package/dist/mcp/catalogue.js +5 -3
  125. package/dist/mcp/catalogue.js.map +1 -1
  126. package/dist/mcp/granted.d.ts +13 -0
  127. package/dist/mcp/granted.d.ts.map +1 -0
  128. package/dist/mcp/granted.js +19 -0
  129. package/dist/mcp/granted.js.map +1 -0
  130. package/dist/search/command.d.ts.map +1 -1
  131. package/dist/search/command.js +19 -7
  132. package/dist/search/command.js.map +1 -1
  133. package/dist/search/lane-gates.d.ts +33 -0
  134. package/dist/search/lane-gates.d.ts.map +1 -0
  135. package/dist/search/lane-gates.js +65 -0
  136. package/dist/search/lane-gates.js.map +1 -0
  137. package/dist/search/search.d.ts +5 -2
  138. package/dist/search/search.d.ts.map +1 -1
  139. package/dist/search/search.js +24 -2
  140. package/dist/search/search.js.map +1 -1
  141. package/dist/show/command.d.ts +3 -1
  142. package/dist/show/command.d.ts.map +1 -1
  143. package/dist/show/command.js +28 -3
  144. package/dist/show/command.js.map +1 -1
  145. package/dist/version.d.ts +1 -1
  146. package/dist/version.js +1 -1
  147. package/package.json +2 -2
  148. package/skills/morning-digest/SKILL.md +24 -10
  149. package/dist/bundle/auto-5VPCO4DD.js +0 -85
  150. package/dist/bundle/chunk-3FDJSMLJ.js +0 -1900
  151. package/dist/bundle/failure-CFGWWTV5.js +0 -65
  152. package/dist/bundle/server-AQTWRRAJ.js +0 -61
  153. package/dist/bundle/server-JIFODLCU.js +0 -48
  154. package/dist/bundle/store-maintenance-command-7IC3LTYY.js +0 -47
  155. package/dist/bundle/update-T237KLFA.js +0 -68
  156. /package/dist/bundle/{chunk-GFNWVGLD.js → chunk-C3XNJQD7.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/digest/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAE1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAEjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAoBxC,eAAO,MAAM,OAAO,UAAW,MAAM,mBAAqB,MAOzD,CAAA;AAED,KAAK,KAAK,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;AAE5D,8GAA8G;AAC9G,eAAO,MAAM,mBAAmB,WAAY,OAAO,SAAS,KAAK,WAAW,OAAO,OAAO,MAAM,CAAC,UAAU,KAAG,IA0C7G,CAAA"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/digest/command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAE1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAEjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAoBxC,eAAO,MAAM,OAAO,UAAW,MAAM,mBAAqB,MAOzD,CAAA;AAED,KAAK,KAAK,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS,EAAE,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;AAE5D,8GAA8G;AAC9G,eAAO,MAAM,mBAAmB,WAAY,OAAO,SAAS,KAAK,WAAW,OAAO,OAAO,MAAM,CAAC,UAAU,KAAG,IA8C7G,CAAA"}
@@ -23,13 +23,17 @@ export const reviewAgendaCommand = (review, print, streams, env) => {
23
23
  annotate(review.command("agenda"), { effects: LOCAL_READ })
24
24
  .summary("the morning digest: watch list, owed replies, mail, meetings, tasks, projects")
25
25
  .description("the morning digest, from the store alone with no model call: everything new in what you tagged " +
26
- `${WATCH_TAG} (chats, mail threads, people, projects, a meeting's series), replies you owe in messengers and ` +
27
- "personal mail, new personal mail, meetings that ended, tasks due or overdue, projects that moved, proposals " +
28
- "waiting. Replies owed reach back 7 days; owed mail lists only senders you know (linked to a person with other " +
29
- "identities, or written to before), and mail from new senders is one count with the command that lists it. Each item has its reference, who, when, one line of text and why " +
30
- "it is there; a section cut by --limit or --max-output-bytes says how many it left out and the command that " +
31
- "reads them. Coverage says how fresh " +
32
- "each account is, so a quiet account that was not synced does not read as a quiet day")
26
+ `${WATCH_TAG} (chats, mail threads, people, projects, a meeting's series), replies you owe to people in ` +
27
+ "messengers and personal mail (not bots or service chats), new personal mail, meetings that ended, tasks, " +
28
+ "projects that moved, proposals waiting. Tasks are the open ones created since the last morning-digest run (a " +
29
+ "day back when none ran) and those overdue, due today or due tomorrow, each with who asked and who does it. " +
30
+ "Replies owed reach back 7 days; owed mail lists only senders you know (linked to a person with other " +
31
+ "identities, or written to before), and mail from new senders is one count with the command that lists it. " +
32
+ "Each item has its reference, who, when, one line of text and why it is there; a section cut by --limit or " +
33
+ "--max-output-bytes says how many it left out and the command that reads them. `scope` says what was read " +
34
+ "(the window, sources, counts), `tasks` counts each task group, and `health` names each account whose sync " +
35
+ "failed, that nothing syncs, or that is quiet for longer than usual, so an unsynced account does not read " +
36
+ "as a quiet day")
33
37
  .option("--since-time <time>", "how far back: hours or days (12h, 7d) or a start date (2026-11-01)", "1d")
34
38
  .option("--limit <n>", "items per section before the size budget", positive, 25)
35
39
  .option("--max-output-bytes <bytes>", "the text answer's size budget in bytes; 40000 with --compact, else 80000", positive)
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/digest/command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/digest/command.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import type { MessageStore } from "@wirecat/cli-core/store";
2
+ import { type Health } from "./sync-health.js";
3
+ import { type TaskCounts } from "./tasks.js";
2
4
  /** The tag that puts a chat, mail thread, person, project or meeting series on the owner's watch list. */
3
5
  export declare const WATCH_TAG = "watch";
4
6
  export interface DigestItem {
@@ -8,6 +10,10 @@ export interface DigestItem {
8
10
  /** One line of what was written, quoted as data. */
9
11
  excerpt: string | null;
10
12
  why: string;
13
+ /** A task's: when it is due, `null` for none. */
14
+ due?: string | null;
15
+ /** A task's: who does it. */
16
+ for?: string | null;
11
17
  }
12
18
  export interface DigestSection {
13
19
  name: SectionName;
@@ -26,18 +32,35 @@ export declare const SECTIONS: readonly ["watch", "owed", "mail", "meetings", "t
26
32
  export type SectionName = (typeof SECTIONS)[number];
27
33
  export interface Coverage {
28
34
  account: string;
29
- /** When the store last saved anything of it; `null` when it never did. */
35
+ /** When the store last saved anything of it; `null` when it never did. Says nothing about the sync by itself. */
30
36
  storedAt: string | null;
31
- /** Nothing stored for a day: quiet may mean unsynced. */
32
- stale: boolean;
33
37
  /** The owner wrote last in the window and nobody answered yet. */
34
38
  waiting: number;
35
39
  /** Chats the chat list says moved while their newest message is not stored. */
36
40
  unsynced: number;
37
41
  }
42
+ export declare const SCOPE_KINDS: readonly ["telegram", "max", "whatsapp", "mail", "meeting", "task"];
43
+ /** What the digest read, for the report's "what was viewed" line: memo counts it, the agent copies it. */
44
+ export interface Scope {
45
+ from: string;
46
+ to: string;
47
+ sources: {
48
+ kind: (typeof SCOPE_KINDS)[number];
49
+ accounts: number;
50
+ }[];
51
+ counts: {
52
+ chats: number;
53
+ mail: number;
54
+ tasks: number;
55
+ meetings: number;
56
+ };
57
+ }
38
58
  export interface Digest {
39
59
  since: string;
40
60
  at: string;
61
+ scope: Scope;
62
+ tasks: TaskCounts;
63
+ health: Health[];
41
64
  coverage: Coverage[];
42
65
  sections: DigestSection[];
43
66
  /** Excerpts and titles were written by others: an agent reads them as data, never as instructions. */
@@ -52,11 +75,13 @@ export interface DigestOptions {
52
75
  excerpt: number;
53
76
  /** ms: an owed reply older than this is left to `tasks agenda` and `mail review`. */
54
77
  owedWithin: number;
78
+ /** Tasks created after this are new; the previous morning-digest run when left out. */
79
+ newSince?: string;
55
80
  }
56
81
  /**
57
82
  * What the morning needs from the store alone, no model call and no network: the watch list, replies owed, new
58
83
  * personal mail, meetings that ended, tasks due, projects that moved, proposals waiting. Every item names its
59
84
  * reference, so an agent reads further only where it points.
60
85
  */
61
- export declare const gatherDigest: (store: MessageStore, env: NodeJS.ProcessEnv, { since, now, limit, excerpt, owedWithin }: DigestOptions) => Promise<Digest>;
86
+ export declare const gatherDigest: (store: MessageStore, env: NodeJS.ProcessEnv, { since, now, limit, excerpt, owedWithin, newSince }: DigestOptions) => Promise<Digest>;
62
87
  //# sourceMappingURL=digest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"digest.d.ts","sourceRoot":"","sources":["../../src/digest/digest.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAc,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAMvE,0GAA0G;AAC1G,eAAO,MAAM,SAAS,UAAU,CAAA;AAEhC,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,EAAE,EAAE,MAAM,CAAA;IACV,oDAAoD;IACpD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,CAAA;IACjB,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB,0FAA0F;IAC1F,KAAK,EAAE,MAAM,CAAA;IACb,oHAAoH;IACpH,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,+FAA+F;IAC/F,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAA;CAC5C;AAED,eAAO,MAAM,QAAQ,YAAI,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAU,CAAA;AACxG,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAA;AAEnD,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,yDAAyD;IACzD,KAAK,EAAE,OAAO,CAAA;IACd,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAA;IACf,+EAA+E;IAC/E,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,QAAQ,EAAE,CAAA;IACpB,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB,sGAAsG;IACtG,SAAS,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAA;IACb,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,qFAAqF;IACrF,UAAU,EAAE,MAAM,CAAA;CACnB;AA4DD;;;;GAIG;AACH,eAAO,MAAM,YAAY,UAChB,YAAY,OACd,MAAM,CAAC,UAAU,8CACmC,aAAa,KACrE,OAAO,CAAC,MAAM,CAkShB,CAAA"}
1
+ {"version":3,"file":"digest.d.ts","sourceRoot":"","sources":["../../src/digest/digest.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,71 @@
1
- import { formatReference } from "@wirecat/cli-core";
1
+ import { formatReference, kindOf } from "@wirecat/cli-core";
2
2
  import { mailTurn, OWED_DAYS } from "@wirecat/cli-core/mail";
3
3
  import { formatMeetingReference } from "@wirecat/cli-core/meetings";
4
- import { projectStatus, servicesFor, storeOnlyDeps } from "@wirecat/cli-core/services";
5
- import { APP } from "../app.js";
4
+ import { projectStatus } from "@wirecat/cli-core/services";
6
5
  import { listReview } from "../review/review.js";
7
6
  import { counted } from "../review/status.js";
8
7
  import { knownSenders } from "./known.js";
8
+ import { HEALTH_REASONS, healthOf, SOURCE_WORDS, syncRunsOf } from "./sync-health.js";
9
+ import { gatherTasks, previousDigestAt } from "./tasks.js";
9
10
  /** The tag that puts a chat, mail thread, person, project or meeting series on the owner's watch list. */
10
11
  export const WATCH_TAG = "watch";
11
12
  export const SECTIONS = ["watch", "owed", "mail", "meetings", "tasks", "projects", "proposals"];
13
+ export const SCOPE_KINDS = ["telegram", "max", "whatsapp", "mail", "meeting", "task"];
12
14
  const DAY = 86_400_000;
13
15
  const MESSENGERS = new Set(["telegram", "max", "whatsapp"]);
16
+ const HEALTH_ORDER = HEALTH_REASONS;
17
+ const UNNAMED = "unnamed account";
18
+ /** Dialogs with a messenger's own service account: no person there is owed a reply. */
19
+ const SERVICE_CHATS = { telegram: new Set(["777000"]) };
20
+ /** The dialogs of an account that are not with a person: bots, as the messenger marks them, and service chats. */
21
+ const notPeopleOf = async (store, key) => {
22
+ const found = new Set(SERVICE_CHATS[key.provider] ?? []);
23
+ for (let offset = 0;; offset += 500) {
24
+ const page = await store.chats.chats(key, { limit: 500, offset });
25
+ for (const chat of page.items)
26
+ if (chat.kind === "dialog" && chat.providerMetadata?.isBot === true)
27
+ found.add(chat.id);
28
+ if (!page.hasMore)
29
+ break;
30
+ }
31
+ return found;
32
+ };
33
+ /**
34
+ * What a person calls each account: its name and username, a mailbox its address. Never the raw id; an account with
35
+ * neither is named by the profile that signs in to it, and two of a provider with one name get theirs added.
36
+ */
37
+ const labelsOf = async (store, keys) => {
38
+ const stored = new Map((await store.accounts.storedAccounts()).map((one) => [name(one), one.name]));
39
+ const profiles = Object.values(await store.accounts.profiles()).flatMap((byProfile) => Object.entries(byProfile));
40
+ const profileOf = (key) => profiles.find(([, held]) => held.provider === key.provider && held.account === key.account)?.[0];
41
+ const labels = new Map();
42
+ for (const key of keys) {
43
+ if (key.provider === "email") {
44
+ labels.set(name(key), key.account);
45
+ continue;
46
+ }
47
+ const person = await store.people.personOf({ provider: key.provider, id: key.account });
48
+ const username = person?.identities.find((one) => one.provider === key.provider && one.id === key.account)?.username;
49
+ const given = stored.get(name(key));
50
+ const label = [given && given !== key.account ? given : null, username ? `@${username}` : null]
51
+ .filter(Boolean)
52
+ .join(" ");
53
+ const profile = profileOf(key);
54
+ labels.set(name(key), label || (profile ? `profile ${profile}` : UNNAMED));
55
+ }
56
+ const taken = new Map();
57
+ for (const [account, label] of labels) {
58
+ const word = `${account.split(":")[0]}|${label}`;
59
+ taken.set(word, (taken.get(word) ?? 0) + 1);
60
+ }
61
+ for (const key of keys) {
62
+ const label = labels.get(name(key)) ?? UNNAMED;
63
+ const profile = profileOf(key);
64
+ if ((taken.get(`${key.provider}|${label}`) ?? 0) > 1 && profile && !label.startsWith("profile "))
65
+ labels.set(name(key), `${label} (profile ${profile})`);
66
+ }
67
+ return labels;
68
+ };
14
69
  const oneLine = (text, size) => {
15
70
  const flat = (text ?? "").replace(/\s+/g, " ").trim();
16
71
  if (!flat)
@@ -54,7 +109,7 @@ const personal = (newest) => !newest.bulk && !newest.list && !newest.envelope &&
54
109
  * personal mail, meetings that ended, tasks due, projects that moved, proposals waiting. Every item names its
55
110
  * reference, so an agent reads further only where it points.
56
111
  */
57
- export const gatherDigest = async (store, env, { since, now = Date.now(), limit, excerpt, owedWithin }) => {
112
+ export const gatherDigest = async (store, env, { since, now = Date.now(), limit, excerpt, owedWithin, newSince }) => {
58
113
  const window = (now - since) / DAY;
59
114
  const days = `${Math.max(1, Math.ceil(window))}d`;
60
115
  const accounts = await store.accounts.accounts();
@@ -96,21 +151,41 @@ export const gatherDigest = async (store, env, { since, now = Date.now(), limit,
96
151
  let bulk = 0;
97
152
  let olderMail = 0;
98
153
  const unknown = { count: 0, next: [] };
154
+ const syncRuns = syncRunsOf(env);
155
+ const labels = await labelsOf(store, [...messengers, ...mailboxes]);
156
+ const health = [];
157
+ const checkHealth = (key, activity) => {
158
+ const found = healthOf(syncRuns(key), activity, now);
159
+ if (found)
160
+ health.push({
161
+ source: SOURCE_WORDS[key.provider] ?? key.provider,
162
+ account: labels.get(name(key)) ?? UNNAMED,
163
+ ...found,
164
+ refs: [],
165
+ });
166
+ };
167
+ let chatsMoved = 0;
168
+ let mailMoved = 0;
99
169
  for (const key of messengers) {
100
170
  const { chats, storedAt } = await store.chats.chatActivity(key, owedSince);
171
+ const month = (await store.chats.chatActivity(key, now - 30 * DAY)).chats;
172
+ checkHealth(key, {
173
+ newest: month.reduce((most, chat) => Math.max(most ?? 0, Date.parse(chat.lastMessageAt)), null),
174
+ moved30d: month.length,
175
+ });
101
176
  const ref = (chat) => formatReference({ type: "chat", provider: key.provider, account: key.account, chat });
177
+ chatsMoved += chats.filter((chat) => Date.parse(chat.lastMessageAt) >= since).length;
102
178
  coverage.push({
103
179
  account: name(key),
104
180
  storedAt,
105
- stale: storedAt === null || Date.parse(storedAt) < now - DAY,
106
181
  waiting: chats.filter((chat) => chat.lastFromOwner === true && Date.parse(chat.lastMessageAt) >= since).length,
107
182
  unsynced: chats.filter((chat) => chat.lastMessageId === null && Date.parse(chat.lastMessageAt) >= since).length,
108
183
  });
184
+ const owedChats = chats.filter((chat) => !isWatchedChat(key, chat.chatId) && chat.kind === "dialog" && chat.lastFromOwner === false);
185
+ const notPeople = owedChats.length ? await notPeopleOf(store, key) : new Set();
109
186
  let owedHere = 0;
110
- for (const chat of chats) {
111
- if (isWatchedChat(key, chat.chatId))
112
- continue;
113
- if (chat.kind !== "dialog" || chat.lastFromOwner !== false)
187
+ for (const chat of owedChats) {
188
+ if (notPeople.has(chat.chatId))
114
189
  continue;
115
190
  owed.push({
116
191
  item: { ref: ref(chat.chatId), who: chat.title, at: chat.lastMessageAt, excerpt: null, why: "owed reply" },
@@ -145,10 +220,14 @@ export const gatherDigest = async (store, env, { since, now = Date.now(), limit,
145
220
  const threads = await store.mail.threadActivity(stored.id, Math.min(owedSince, now - OWED_DAYS * DAY));
146
221
  const ref = (thread) => formatReference({ type: "chat", provider: "email", account: key.account, chat: thread });
147
222
  const newest = threads.reduce((most, thread) => Math.max(most, thread.lastEmailAt), 0);
223
+ checkHealth(key, {
224
+ newest: newest || null,
225
+ moved30d: threads.filter((thread) => thread.lastEmailAt >= now - 30 * DAY).length,
226
+ });
227
+ mailMoved += threads.filter((thread) => thread.lastEmailAt >= since && thread.newest !== null && personal(thread.newest)).length;
148
228
  coverage.push({
149
229
  account: name(key),
150
230
  storedAt: newest ? iso(newest) : null,
151
- stale: newest < now - DAY,
152
231
  waiting: threads.filter((thread) => mailTurn(thread.newest) === "waiting" && thread.lastEmailAt >= since).length,
153
232
  unsynced: 0,
154
233
  });
@@ -256,30 +335,21 @@ export const gatherDigest = async (store, env, { since, now = Date.now(), limit,
256
335
  },
257
336
  });
258
337
  }
259
- const tasks = new Map();
260
- let unplanned = 0;
261
- for (const key of [...messengers, ...mailboxes]) {
262
- const agenda = await servicesFor(storeOnlyDeps(store, key, { app: APP, env })).agenda.show({
263
- within: 1,
264
- dueWithin: DAY,
265
- });
266
- for (const task of agenda.tasks) {
267
- const reasons = task.reasons.filter((reason) => reason !== "unplanned");
268
- if (reasons.length === 0) {
269
- unplanned++;
270
- continue;
271
- }
272
- tasks.set(task.id, {
273
- item: {
274
- ref: `task:${task.key ?? task.id}`,
275
- who: null,
276
- at: task.dueAt ?? task.nextCheckAt ?? task.createdAt,
277
- excerpt: oneLine(task.title, excerpt),
278
- why: reasons.join(", "),
279
- },
280
- });
281
- }
282
- }
338
+ const hot = await gatherTasks(store, [...messengers, ...mailboxes], {
339
+ now,
340
+ newSince: newSince ?? previousDigestAt(env, now),
341
+ });
342
+ const tasks = hot.tasks.map(({ task, groups, askedBy, for: doer }) => ({
343
+ item: {
344
+ ref: task.ref,
345
+ who: askedBy,
346
+ at: task.dueAt ?? task.createdAt,
347
+ excerpt: oneLine(task.title, excerpt),
348
+ why: groups.join(", "),
349
+ due: task.dueAt,
350
+ for: doer,
351
+ },
352
+ }));
283
353
  const projects = [];
284
354
  const projectNext = [];
285
355
  for (const project of await store.knowledge.projects()) {
@@ -329,19 +399,34 @@ export const gatherDigest = async (store, env, { since, now = Date.now(), limit,
329
399
  },
330
400
  await section("mail", mail, limit, [...mailNext, ...(bulk ? [`# ${bulk} bulk or list threads left out`] : [])]),
331
401
  await section("meetings", meetings, limit, ["memo search meetings <words>"]),
332
- await section("tasks", [...tasks.values()], limit, [
333
- "memo tasks list",
334
- ...(unplanned ? [`# ${unplanned} open tasks without a date left out`] : []),
335
- ]),
402
+ await section("tasks", tasks, limit, ["memo tasks list"]),
336
403
  await section("projects", projects, limit, projectNext),
337
404
  await section("proposals", proposals, limit, ["memo review list"], waiting.total),
338
405
  ];
406
+ const providerCount = (provider) => accounts.filter((key) => key.provider === provider).length;
407
+ const meetingAccounts = accounts.filter((key) => kindOf(key.provider) === "meetings").length;
408
+ const sources = [
409
+ { kind: "telegram", accounts: providerCount("telegram") },
410
+ { kind: "max", accounts: providerCount("max") },
411
+ { kind: "whatsapp", accounts: providerCount("whatsapp") },
412
+ { kind: "mail", accounts: mailboxes.length },
413
+ { kind: "meeting", accounts: meetingAccounts },
414
+ { kind: "task", accounts: hot.accounts },
415
+ ];
339
416
  return {
340
417
  since: iso(since),
341
418
  at: iso(now),
419
+ scope: {
420
+ from: iso(since),
421
+ to: iso(now),
422
+ sources: sources.filter((one) => one.accounts > 0),
423
+ counts: { chats: chatsMoved, mail: mailMoved, tasks: hot.tasks.length, meetings: meetings.length },
424
+ },
425
+ tasks: hot.counts,
426
+ health: health.sort((a, b) => HEALTH_ORDER.indexOf(a.reason) - HEALTH_ORDER.indexOf(b.reason)),
342
427
  coverage,
343
428
  sections,
344
- untrusted: ["sections.items.who", "sections.items.excerpt"],
429
+ untrusted: ["sections.items.who", "sections.items.excerpt", "sections.items.for"],
345
430
  };
346
431
  };
347
432
  //# sourceMappingURL=digest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"digest.js","sourceRoot":"","sources":["../../src/digest/digest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"digest.js","sourceRoot":"","sources":["../../src/digest/digest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import { type LastRun } from "@wirecat/cli-core/background";
2
+ import type { AccountKey } from "@wirecat/cli-core/store";
3
+ export declare const HEALTH_REASONS: readonly ["sync-failed", "no-schedule", "quiet"];
4
+ export type HealthReason = (typeof HEALTH_REASONS)[number];
5
+ /** One account whose sync needs a look; the shape `wirecat.report/1`'s `health[]` takes. */
6
+ export interface Health {
7
+ /** The messenger or mailbox word: `Telegram`, `MAX`, `WhatsApp`, `mail`. */
8
+ source: string;
9
+ /** The account's name, username or address; never its raw id. */
10
+ account: string;
11
+ reason: HealthReason;
12
+ /** `sync-failed`: the first failure in a row. `quiet`: the newest message stored. `no-schedule`: `null`. */
13
+ since: string | null;
14
+ staleHours: number;
15
+ /** `sync-failed` only: the failure's code and reason id, as the schedule's `last.json` keeps it. */
16
+ failure?: string;
17
+ refs: string[];
18
+ }
19
+ export declare const SOURCE_WORDS: Record<string, string>;
20
+ interface Scheduled {
21
+ name: string;
22
+ kind: string;
23
+ argv: string[];
24
+ environment: Record<string, string>;
25
+ last: LastRun | undefined;
26
+ }
27
+ /** A CLI's schedules with their last runs; cli-core exports the last runs, and the schedule file is its documented JSON. */
28
+ export declare const schedulesOf: (state: string) => Scheduled[];
29
+ export interface SyncRuns {
30
+ /** The newest run of each sync schedule that names this account's profile. */
31
+ runs: LastRun[];
32
+ scheduled: boolean;
33
+ /** A `serve` keeps it synced live, as WhatsApp's does. */
34
+ serving: boolean;
35
+ }
36
+ /** How each tool keeps an account synced: its scheduled `sync` runs, by the profile each names, and its live serves. */
37
+ export declare const syncRunsOf: (env: NodeJS.ProcessEnv) => (key: AccountKey) => SyncRuns;
38
+ /** An account that syncs is quiet only after this long without anything new, ... */
39
+ export declare const QUIET_AFTER: number;
40
+ /** ... and after this many of its usual gaps: 30 days over the chats or threads that moved in them. */
41
+ export declare const QUIET_GAPS = 3;
42
+ /**
43
+ * Why an account's sync needs a look, or `undefined`. "Stored" alone never says it: an account that syncs fine and
44
+ * hears nothing is quiet only when that is long for it.
45
+ */
46
+ export declare const healthOf: (sync: SyncRuns, activity: {
47
+ newest: number | null;
48
+ moved30d: number;
49
+ }, now: number) => Pick<Health, "reason" | "since" | "staleHours" | "failure"> | undefined;
50
+ export {};
51
+ //# sourceMappingURL=sync-health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-health.d.ts","sourceRoot":"","sources":["../../src/digest/sync-health.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,OAAO,EAAkC,MAAM,8BAA8B,CAAA;AAC3F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAIzD,eAAO,MAAM,cAAc,YAAI,aAAa,EAAE,aAAa,EAAE,OAAO,CAAU,CAAA;AAC9E,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAA;AAE1D,4FAA4F;AAC5F,MAAM,WAAW,MAAM;IACrB,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAA;IACd,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,YAAY,CAAA;IACpB,4GAA4G;IAC5G,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,oGAAoG;IACpG,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,EAAE,CAAA;CACf;AASD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAK/C,CAAA;AAOD,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,IAAI,EAAE,OAAO,GAAG,SAAS,CAAA;CAC1B;AAED,4HAA4H;AAC5H,eAAO,MAAM,WAAW,UAAW,MAAM,KAAG,SAAS,EAoBpD,CAAA;AAcD,MAAM,WAAW,QAAQ;IACvB,8EAA8E;IAC9E,IAAI,EAAE,OAAO,EAAE,CAAA;IACf,SAAS,EAAE,OAAO,CAAA;IAClB,0DAA0D;IAC1D,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,wHAAwH;AACxH,eAAO,MAAM,UAAU,QAAS,MAAM,CAAC,UAAU,WAelC,UAAU,KAAG,QAe3B,CAAA;AAID,oFAAoF;AACpF,eAAO,MAAM,WAAW,QAAU,CAAA;AAClC,uGAAuG;AACvG,eAAO,MAAM,UAAU,IAAI,CAAA;AAI3B;;;GAGG;AACH,eAAO,MAAM,QAAQ,SACb,QAAQ,YACJ;IAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,OAChD,MAAM,KACV,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,YAAY,GAAG,SAAS,CAAC,GAAG,SAuBhE,CAAA"}
@@ -0,0 +1,116 @@
1
+ import { existsSync, readdirSync, readFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { configFilePath, resolvePaths } from "@wirecat/cli-base";
4
+ import { scheduledRuns, servingProfiles } from "@wirecat/cli-core/background";
5
+ import { APP } from "../app.js";
6
+ import { messengerToolOf, signedInAccount } from "../knowledge/messenger-sync.js";
7
+ export const HEALTH_REASONS = ["sync-failed", "no-schedule", "quiet"];
8
+ const MAIL = { appName: "mail-cli", envPrefix: "MAIL" };
9
+ export const SOURCE_WORDS = {
10
+ telegram: "Telegram",
11
+ max: "MAX",
12
+ whatsapp: "WhatsApp",
13
+ email: "mail",
14
+ };
15
+ const toolOf = (provider) => (provider === "email" ? MAIL : messengerToolOf(provider));
16
+ const stateDirs = (tool, env) => resolvePaths({ appName: tool.appName, prefix: tool.envPrefix, env });
17
+ /** A CLI's schedules with their last runs; cli-core exports the last runs, and the schedule file is its documented JSON. */
18
+ export const schedulesOf = (state) => {
19
+ const dir = join(state, "schedules");
20
+ if (!existsSync(dir))
21
+ return [];
22
+ const last = new Map(scheduledRuns(state).map((one) => [one.job, one.last]));
23
+ return readdirSync(dir).flatMap((name) => {
24
+ try {
25
+ const schedule = JSON.parse(readFileSync(join(dir, name, "schedule.json"), "utf8"));
26
+ return [
27
+ {
28
+ name: String(schedule.name),
29
+ kind: String(schedule.kind),
30
+ argv: Array.isArray(schedule.argv) ? schedule.argv.map(String) : [],
31
+ environment: schedule.environment ?? {},
32
+ last: last.get(String(schedule.name)),
33
+ },
34
+ ];
35
+ }
36
+ catch {
37
+ return [];
38
+ }
39
+ });
40
+ };
41
+ const mailAddress = (profile, env) => {
42
+ try {
43
+ const config = JSON.parse(readFileSync(configFilePath(stateDirs(MAIL, env).config), "utf8"));
44
+ return config?.profiles?.[profile]?.address;
45
+ }
46
+ catch {
47
+ return undefined;
48
+ }
49
+ };
50
+ const accountOfProfile = (provider, tool, profile, env) => provider === "email" ? mailAddress(profile, env) : signedInAccount(tool, profile, env);
51
+ /** How each tool keeps an account synced: its scheduled `sync` runs, by the profile each names, and its live serves. */
52
+ export const syncRunsOf = (env) => {
53
+ const cache = new Map();
54
+ const read = (tool) => {
55
+ const known = cache.get(tool.appName);
56
+ if (known)
57
+ return known;
58
+ const app = { ...APP, appName: tool.appName, envPrefix: tool.envPrefix };
59
+ const fresh = {
60
+ schedules: schedulesOf(stateDirs(tool, env).state).filter((one) => one.kind === "command" && one.argv.includes("sync")),
61
+ serving: servingProfiles(app, env),
62
+ };
63
+ cache.set(tool.appName, fresh);
64
+ return fresh;
65
+ };
66
+ return (key) => {
67
+ const tool = toolOf(key.provider);
68
+ if (!tool)
69
+ return { runs: [], scheduled: false, serving: false };
70
+ const { schedules, serving } = read(tool);
71
+ const mine = schedules.filter((one) => accountOfProfile(key.provider, tool, one.environment[`${tool.envPrefix}_PROFILE`] ?? "default", env) ===
72
+ key.account);
73
+ return {
74
+ runs: mine.flatMap((one) => (one.last ? [one.last] : [])),
75
+ scheduled: mine.length > 0,
76
+ serving: serving.some((profile) => accountOfProfile(key.provider, tool, profile, env) === key.account),
77
+ };
78
+ };
79
+ };
80
+ const HOUR = 3_600_000;
81
+ const DAY = 24 * HOUR;
82
+ /** An account that syncs is quiet only after this long without anything new, ... */
83
+ export const QUIET_AFTER = 3 * DAY;
84
+ /** ... and after this many of its usual gaps: 30 days over the chats or threads that moved in them. */
85
+ export const QUIET_GAPS = 3;
86
+ const hours = (from, now) => Math.max(0, Math.floor((now - from) / HOUR));
87
+ /**
88
+ * Why an account's sync needs a look, or `undefined`. "Stored" alone never says it: an account that syncs fine and
89
+ * hears nothing is quiet only when that is long for it.
90
+ */
91
+ export const healthOf = (sync, activity, now) => {
92
+ // One sync that still succeeds, or a live serve, keeps the account fresh whatever another schedule says.
93
+ if (!sync.serving && sync.runs.length > 0 && sync.runs.every((run) => run.exitCode !== 0)) {
94
+ const first = [...sync.runs].sort((a, b) => (a.failingSince ?? a.at).localeCompare(b.failingSince ?? b.at))[0];
95
+ const since = first?.failingSince ?? first?.at ?? new Date(now).toISOString();
96
+ return {
97
+ reason: "sync-failed",
98
+ since,
99
+ staleHours: hours(Date.parse(since), now),
100
+ ...(first?.reason ? { failure: first.reason } : {}),
101
+ };
102
+ }
103
+ if (!sync.scheduled && !sync.serving)
104
+ return {
105
+ reason: "no-schedule",
106
+ since: null,
107
+ staleHours: activity.newest === null ? 0 : hours(activity.newest, now),
108
+ };
109
+ if (activity.newest === null || activity.moved30d === 0)
110
+ return undefined;
111
+ const usual = Math.max(QUIET_AFTER, (QUIET_GAPS * 30 * DAY) / activity.moved30d);
112
+ if (activity.newest < now - usual)
113
+ return { reason: "quiet", since: new Date(activity.newest).toISOString(), staleHours: hours(activity.newest, now) };
114
+ return undefined;
115
+ };
116
+ //# sourceMappingURL=sync-health.js.map