@wirecat/cli-memo 0.131.69 → 0.131.71

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 (289) hide show
  1. package/README.md +3 -3
  2. package/THIRD_PARTY_NOTICES +2 -0
  3. package/dist/actions/actions.d.ts +2 -1
  4. package/dist/actions/actions.d.ts.map +1 -1
  5. package/dist/actions/actions.js +5 -3
  6. package/dist/actions/actions.js.map +1 -1
  7. package/dist/actions/command.d.ts.map +1 -1
  8. package/dist/actions/command.js +15 -6
  9. package/dist/actions/command.js.map +1 -1
  10. package/dist/answer.d.ts +1 -0
  11. package/dist/answer.d.ts.map +1 -1
  12. package/dist/answer.js +2 -1
  13. package/dist/answer.js.map +1 -1
  14. package/dist/bin/memo.js +2 -2
  15. package/dist/bin/memo.js.map +1 -1
  16. package/dist/bundle/{all-profiles-6JKSPBBO.js → all-profiles-G6S5HOBT.js} +5 -5
  17. package/dist/bundle/{anthropic-YA2N6EJ4.js → anthropic-LA6PXTPQ.js} +2 -2
  18. package/dist/bundle/{app-server-UP3AL2XQ.js → app-server-W622CBPF.js} +35 -35
  19. package/dist/bundle/auto-WUU2MYGS.js +85 -0
  20. package/dist/bundle/{bun-OUFOAYV4.js → bun-PZNVNH4G.js} +2 -2
  21. package/dist/bundle/{bun-sqlite-5RZTFU2Q.js → bun-sqlite-VICDK5FS.js} +2 -2
  22. package/dist/bundle/{chunk-3TFK7RBA.js → chunk-2LTQ6ZBS.js} +23908 -22107
  23. package/dist/bundle/{chunk-IHHXGTMX.js → chunk-3LS76TFB.js} +1 -1
  24. package/dist/bundle/{chunk-IJAILIZR.js → chunk-3PIKTX3U.js} +18 -18
  25. package/dist/bundle/{chunk-N73YBQ42.js → chunk-3ZSPTUG3.js} +9 -7
  26. package/dist/bundle/{chunk-RHW3DDWI.js → chunk-6B3GQMR6.js} +1 -1
  27. package/dist/bundle/{chunk-LYAJUZM4.js → chunk-6EIWRE6E.js} +30 -30
  28. package/dist/bundle/{chunk-EDPA54WQ.js → chunk-6Z62U7NY.js} +3 -3
  29. package/dist/bundle/{chunk-JMGQATR6.js → chunk-ASDOPGKC.js} +2 -2
  30. package/dist/bundle/{chunk-EKSOPEFQ.js → chunk-BE22RDTR.js} +4 -4
  31. package/dist/bundle/{chunk-FZHYGJQ2.js → chunk-CLQXHFKG.js} +5 -5
  32. package/dist/bundle/{chunk-VPKJZKXV.js → chunk-CPUQC7UF.js} +1 -1
  33. package/dist/bundle/{chunk-GGFL64HF.js → chunk-CZUAGRL7.js} +13168 -11987
  34. package/dist/bundle/{chunk-GVP6CAPH.js → chunk-DW6CDBXA.js} +33 -586
  35. package/dist/bundle/{chunk-5MUR6D2G.js → chunk-DXWDHC2K.js} +44 -2
  36. package/dist/bundle/{chunk-5OMM4CDT.js → chunk-ESYCZ575.js} +2 -2
  37. package/dist/bundle/{chunk-OBQ7TSUB.js → chunk-FHIGY5K6.js} +1 -1
  38. package/dist/bundle/{chunk-MK6SQ32Q.js → chunk-FPWF2XLH.js} +12 -12
  39. package/dist/bundle/{chunk-MYLNRBDF.js → chunk-FVJSDDSV.js} +46 -13
  40. package/dist/bundle/{chunk-TV75OHKJ.js → chunk-G3FQTKHT.js} +7 -7
  41. package/dist/bundle/{chunk-WNA2WNDK.js → chunk-G7XOBQB5.js} +3 -3
  42. package/dist/bundle/{chunk-PSYQPO6D.js → chunk-H3LAORYX.js} +2 -2
  43. package/dist/bundle/{chunk-2DQYP2K3.js → chunk-HIHZNBR7.js} +1 -1
  44. package/dist/bundle/{chunk-QAXIZHK7.js → chunk-HNQGX4AG.js} +33 -33
  45. package/dist/bundle/{chunk-22CDLXSR.js → chunk-I4HWKPQR.js} +4 -4
  46. package/dist/bundle/{chunk-2NFI7SDW.js → chunk-INQAQ55X.js} +2304 -1111
  47. package/dist/bundle/{chunk-XTEJXJJ3.js → chunk-IP5CA3CW.js} +10 -10
  48. package/dist/bundle/{chunk-EO4JMJFZ.js → chunk-IXZWUHSG.js} +7 -7
  49. package/dist/bundle/{chunk-MWQI6FSU.js → chunk-K55WZ67L.js} +3 -3
  50. package/dist/bundle/{chunk-YTJWIJIG.js → chunk-KH43CUE2.js} +5 -5
  51. package/dist/bundle/{chunk-2C7Z7CKD.js → chunk-LIF2HXIQ.js} +1 -1
  52. package/dist/bundle/{chunk-GVEY6743.js → chunk-LRS5X7G3.js} +9 -9
  53. package/dist/bundle/{chunk-3LGLKLBA.js → chunk-M2DAITNE.js} +2 -2
  54. package/dist/bundle/{chunk-OAO5UCPJ.js → chunk-MAGAWAPG.js} +1366 -1574
  55. package/dist/bundle/{chunk-7JFLHRQL.js → chunk-MKOQDN3I.js} +1 -1
  56. package/dist/bundle/{chunk-67VEVKMJ.js → chunk-MSTWHRLN.js} +1 -1
  57. package/dist/bundle/{chunk-YXXAPVAZ.js → chunk-NLRPCKUS.js} +8 -8
  58. package/dist/bundle/{chunk-W2FFA7T5.js → chunk-NNUS57F4.js} +5 -5
  59. package/dist/bundle/{chunk-3YVLNOPE.js → chunk-OHBP2KPQ.js} +4 -4
  60. package/dist/bundle/{chunk-BJJULUUC.js → chunk-OWFC6BAF.js} +5 -5
  61. package/dist/bundle/{chunk-267N22E4.js → chunk-PGOMGFXA.js} +1 -1
  62. package/dist/bundle/{chunk-4HSWIXYE.js → chunk-PHL53ERQ.js} +4 -4
  63. package/dist/bundle/{chunk-5EHUHZU5.js → chunk-QNJ4EKKW.js} +80 -68
  64. package/dist/bundle/{chunk-53EAI4VZ.js → chunk-QUPPO7DB.js} +1 -1
  65. package/dist/bundle/{chunk-276KPJI5.js → chunk-RF6KPQWV.js} +2 -2
  66. package/dist/bundle/{chunk-TXOXPQN2.js → chunk-SL2LXOCN.js} +2 -2
  67. package/dist/bundle/{chunk-QZU5IM5E.js → chunk-SR7C53CS.js} +2 -2
  68. package/dist/bundle/{chunk-ECHN36DC.js → chunk-STJWETNW.js} +4 -4
  69. package/dist/bundle/{chunk-BGWPKEKK.js → chunk-SVVSGUMU.js} +4 -4
  70. package/dist/bundle/{chunk-FQ54GW57.js → chunk-TG3XWDFI.js} +8360 -8360
  71. package/dist/bundle/{chunk-V2YS63Z5.js → chunk-U3P5F57B.js} +1 -1
  72. package/dist/bundle/{chunk-PHSYMVYX.js → chunk-UCRR7R6Q.js} +2 -2
  73. package/dist/bundle/{chunk-2F35N6BI.js → chunk-UX52EWLQ.js} +1 -1
  74. package/dist/bundle/{chunk-OHA7HDPX.js → chunk-V6BJM3XW.js} +1024 -676
  75. package/dist/bundle/{chunk-TVZXLAID.js → chunk-X337K4BD.js} +10 -6
  76. package/dist/bundle/{chunk-UEMI6FXR.js → chunk-XNX3U6GD.js} +6 -6
  77. package/dist/bundle/{chunk-7L4PBN5S.js → chunk-ZM6J47GY.js} +2 -2
  78. package/dist/bundle/{command-contract-OGW2DX4C.js → command-contract-7QECBB6M.js} +11 -11
  79. package/dist/bundle/{decode-IJMDTGTW.js → decode-WRWXOJML.js} +2 -2
  80. package/dist/bundle/{echarts-EHYUXOKP.js → echarts-MTCNTCST.js} +2 -2
  81. package/dist/bundle/{embed-RUY3UIVC.js → embed-PPPCHSTE.js} +3 -3
  82. package/dist/bundle/{embedder-P6WBMEGP.js → embedder-UJBIX6A2.js} +6 -6
  83. package/dist/bundle/{entry-7S2ONYSF.js → entry-4P5556KI.js} +4 -4
  84. package/dist/bundle/failure-3F3YHF7G.js +65 -0
  85. package/dist/bundle/{first-run-MLIFZSVH.js → first-run-EKRDZLLY.js} +5 -5
  86. package/dist/bundle/{first-screen-DGTTK6VK.js → first-screen-FRRTKWFB.js} +12 -12
  87. package/dist/bundle/{instructions-ZMG4FLGO.js → instructions-JKIO4JF7.js} +1 -1
  88. package/dist/bundle/{mcp-CFIL7WZU.js → mcp-FQPK2KAF.js} +35 -35
  89. package/dist/bundle/memo.js +14 -11
  90. package/dist/bundle/{node-QYL4B7JS.js → node-3AIXDDDR.js} +2 -2
  91. package/dist/bundle/{node-sqlite-ESTT2OCF.js → node-sqlite-NX722DXD.js} +3 -3
  92. package/dist/bundle/{oauth-CFQFSIRQ.js → oauth-2NPSI7Q3.js} +4 -4
  93. package/dist/bundle/{open-3XO2HMIT.js → open-AFRN6Q36.js} +2 -2
  94. package/dist/bundle/{openai-STUNDBD6.js → openai-U5CQFLRU.js} +7 -7
  95. package/dist/bundle/{process-P4UAJCZX.js → process-J2IBN6X7.js} +1 -1
  96. package/dist/bundle/{program-BXL5ZOVQ.js → program-L5IM35PO.js} +1433 -531
  97. package/dist/bundle/{prompt-ZCYMFMIG.js → prompt-6XNKR4VQ.js} +2 -2
  98. package/dist/bundle/{recognize-V3BY33FK.js → recognize-G3GI32QS.js} +1 -1
  99. package/dist/bundle/{remote-IP4QR7SP.js → remote-DJO255PT.js} +4 -4
  100. package/dist/bundle/{rerank-VKUSF3DM.js → rerank-5SBZRIHF.js} +4 -4
  101. package/dist/bundle/{serve-VBIUARHJ.js → serve-BZVBKGU3.js} +6 -6
  102. package/dist/bundle/server-GCESLOOF.js +48 -0
  103. package/dist/bundle/server-JUSMYLIQ.js +61 -0
  104. package/dist/bundle/{server-JLPZUC42.js → server-LWQAHDBH.js} +55 -52
  105. package/dist/bundle/{state-UBAIZ2WP.js → state-A57F7T5D.js} +3 -3
  106. package/dist/bundle/{store-VQQVUA4W.js → store-WG2GYWTG.js} +9 -9
  107. package/dist/bundle/store-maintenance-command-GTY6VU76.js +47 -0
  108. package/dist/bundle/update-LICMP7UR.js +68 -0
  109. package/dist/context/command.d.ts +2 -1
  110. package/dist/context/command.d.ts.map +1 -1
  111. package/dist/context/command.js +34 -12
  112. package/dist/context/command.js.map +1 -1
  113. package/dist/context/context.d.ts +20 -8
  114. package/dist/context/context.d.ts.map +1 -1
  115. package/dist/context/context.js +65 -40
  116. package/dist/context/context.js.map +1 -1
  117. package/dist/contract-overrides/search.js +1 -1
  118. package/dist/contract-overrides/search.js.map +1 -1
  119. package/dist/contract-overrides/skill.d.ts.map +1 -1
  120. package/dist/contract-overrides/skill.js +5 -10
  121. package/dist/contract-overrides/skill.js.map +1 -1
  122. package/dist/digest/backfill.d.ts.map +1 -1
  123. package/dist/digest/backfill.js +4 -2
  124. package/dist/digest/backfill.js.map +1 -1
  125. package/dist/digest/brief.d.ts +14 -0
  126. package/dist/digest/brief.d.ts.map +1 -0
  127. package/dist/digest/brief.js +143 -0
  128. package/dist/digest/brief.js.map +1 -0
  129. package/dist/digest/digest.d.ts.map +1 -1
  130. package/dist/digest/digest.js +2 -1
  131. package/dist/digest/digest.js.map +1 -1
  132. package/dist/discovery/command.d.ts.map +1 -1
  133. package/dist/discovery/command.js +2 -0
  134. package/dist/discovery/command.js.map +1 -1
  135. package/dist/doctor/command.d.ts +22 -2
  136. package/dist/doctor/command.d.ts.map +1 -1
  137. package/dist/examples.d.ts.map +1 -1
  138. package/dist/examples.js +51 -10
  139. package/dist/examples.js.map +1 -1
  140. package/dist/facts/command.d.ts.map +1 -1
  141. package/dist/facts/command.js +7 -6
  142. package/dist/facts/command.js.map +1 -1
  143. package/dist/finance/deal-text.d.ts +4 -0
  144. package/dist/finance/deal-text.d.ts.map +1 -0
  145. package/dist/finance/deal-text.js +34 -0
  146. package/dist/finance/deal-text.js.map +1 -0
  147. package/dist/finance/deals-command.d.ts +1 -1
  148. package/dist/finance/deals-command.d.ts.map +1 -1
  149. package/dist/finance/deals-command.js +113 -13
  150. package/dist/finance/deals-command.js.map +1 -1
  151. package/dist/knowledge/business-text.d.ts +7 -0
  152. package/dist/knowledge/business-text.d.ts.map +1 -0
  153. package/dist/knowledge/business-text.js +19 -0
  154. package/dist/knowledge/business-text.js.map +1 -0
  155. package/dist/knowledge/command.d.ts +1 -1
  156. package/dist/knowledge/command.d.ts.map +1 -1
  157. package/dist/knowledge/command.js +131 -42
  158. package/dist/knowledge/command.js.map +1 -1
  159. package/dist/knowledge/money-text.d.ts +4 -0
  160. package/dist/knowledge/money-text.d.ts.map +1 -0
  161. package/dist/knowledge/money-text.js +16 -0
  162. package/dist/knowledge/money-text.js.map +1 -0
  163. package/dist/knowledge/organization-text.d.ts +7 -0
  164. package/dist/knowledge/organization-text.d.ts.map +1 -0
  165. package/dist/knowledge/organization-text.js +24 -0
  166. package/dist/knowledge/organization-text.js.map +1 -0
  167. package/dist/knowledge/project-actions-command.js +1 -1
  168. package/dist/knowledge/project-actions-command.js.map +1 -1
  169. package/dist/knowledge/project-actions.d.ts +1 -1
  170. package/dist/knowledge/project-actions.d.ts.map +1 -1
  171. package/dist/knowledge/project-actions.js +2 -2
  172. package/dist/knowledge/project-actions.js.map +1 -1
  173. package/dist/knowledge/project-context.d.ts +27 -1
  174. package/dist/knowledge/project-context.d.ts.map +1 -1
  175. package/dist/knowledge/project-context.js +9 -5
  176. package/dist/knowledge/project-context.js.map +1 -1
  177. package/dist/knowledge/project-status-command.d.ts.map +1 -1
  178. package/dist/knowledge/project-status-command.js +21 -5
  179. package/dist/knowledge/project-status-command.js.map +1 -1
  180. package/dist/knowledge/relationships.d.ts +27 -23
  181. package/dist/knowledge/relationships.d.ts.map +1 -1
  182. package/dist/knowledge/relationships.js +65 -52
  183. package/dist/knowledge/relationships.js.map +1 -1
  184. package/dist/knowledge/roles-command.d.ts +8 -0
  185. package/dist/knowledge/roles-command.d.ts.map +1 -0
  186. package/dist/knowledge/roles-command.js +65 -0
  187. package/dist/knowledge/roles-command.js.map +1 -0
  188. package/dist/mcp/catalogue.d.ts +1 -1
  189. package/dist/mcp/catalogue.d.ts.map +1 -1
  190. package/dist/mcp/catalogue.js +3 -1
  191. package/dist/mcp/catalogue.js.map +1 -1
  192. package/dist/mcp/server.js +1 -1
  193. package/dist/mcp/server.js.map +1 -1
  194. package/dist/memories/command.d.ts.map +1 -1
  195. package/dist/memories/command.js +6 -5
  196. package/dist/memories/command.js.map +1 -1
  197. package/dist/memories/sources.js +2 -2
  198. package/dist/memories/sources.js.map +1 -1
  199. package/dist/models/command.d.ts +1 -1
  200. package/dist/models/command.d.ts.map +1 -1
  201. package/dist/models/command.js +2 -1
  202. package/dist/models/command.js.map +1 -1
  203. package/dist/notes/command.d.ts.map +1 -1
  204. package/dist/notes/command.js +13 -8
  205. package/dist/notes/command.js.map +1 -1
  206. package/dist/notes/embed.d.ts +6 -1
  207. package/dist/notes/embed.d.ts.map +1 -1
  208. package/dist/notes/embed.js +17 -8
  209. package/dist/notes/embed.js.map +1 -1
  210. package/dist/people/command.d.ts.map +1 -1
  211. package/dist/people/command.js +2 -1
  212. package/dist/people/command.js.map +1 -1
  213. package/dist/program.d.ts +13 -1
  214. package/dist/program.d.ts.map +1 -1
  215. package/dist/program.js +173 -11
  216. package/dist/program.js.map +1 -1
  217. package/dist/reasons.d.ts.map +1 -1
  218. package/dist/reasons.js +42 -0
  219. package/dist/reasons.js.map +1 -1
  220. package/dist/review/command.js +2 -2
  221. package/dist/review/command.js.map +1 -1
  222. package/dist/review/review.d.ts +3 -3
  223. package/dist/review/review.d.ts.map +1 -1
  224. package/dist/review/review.js +6 -6
  225. package/dist/review/review.js.map +1 -1
  226. package/dist/review/status.d.ts.map +1 -1
  227. package/dist/review/status.js +5 -4
  228. package/dist/review/status.js.map +1 -1
  229. package/dist/run/import.d.ts +2 -2
  230. package/dist/run/import.d.ts.map +1 -1
  231. package/dist/run/import.js +9 -3
  232. package/dist/run/import.js.map +1 -1
  233. package/dist/search/command.d.ts.map +1 -1
  234. package/dist/search/command.js +21 -3
  235. package/dist/search/command.js.map +1 -1
  236. package/dist/search/denied.d.ts +10 -0
  237. package/dist/search/denied.d.ts.map +1 -0
  238. package/dist/search/denied.js +10 -0
  239. package/dist/search/denied.js.map +1 -0
  240. package/dist/search/people.d.ts.map +1 -1
  241. package/dist/search/people.js +11 -1
  242. package/dist/search/people.js.map +1 -1
  243. package/dist/search/search.d.ts +2 -0
  244. package/dist/search/search.d.ts.map +1 -1
  245. package/dist/search/search.js +37 -12
  246. package/dist/search/search.js.map +1 -1
  247. package/dist/store/group.d.ts +38 -0
  248. package/dist/store/group.d.ts.map +1 -0
  249. package/dist/store/group.js +112 -0
  250. package/dist/store/group.js.map +1 -0
  251. package/dist/store/groups-command.d.ts +10 -0
  252. package/dist/store/groups-command.d.ts.map +1 -0
  253. package/dist/store/groups-command.js +88 -0
  254. package/dist/store/groups-command.js.map +1 -0
  255. package/dist/store/guard.d.ts +29 -0
  256. package/dist/store/guard.d.ts.map +1 -0
  257. package/dist/store/guard.js +94 -0
  258. package/dist/store/guard.js.map +1 -0
  259. package/dist/store/scope.d.ts +3 -3
  260. package/dist/store/scope.d.ts.map +1 -1
  261. package/dist/store/scope.js +7 -6
  262. package/dist/store/scope.js.map +1 -1
  263. package/dist/store/source-list.d.ts +5 -1
  264. package/dist/store/source-list.d.ts.map +1 -1
  265. package/dist/store/source-list.js +30 -15
  266. package/dist/store/source-list.js.map +1 -1
  267. package/dist/tags/command.d.ts.map +1 -1
  268. package/dist/tags/command.js +3 -2
  269. package/dist/tags/command.js.map +1 -1
  270. package/dist/tasks/shared.d.ts.map +1 -1
  271. package/dist/tasks/shared.js +2 -1
  272. package/dist/tasks/shared.js.map +1 -1
  273. package/dist/tasks/tasks.js +3 -3
  274. package/dist/tasks/tasks.js.map +1 -1
  275. package/dist/version.d.ts +1 -1
  276. package/dist/version.js +1 -1
  277. package/package.json +5 -4
  278. package/skills/cli-memo/SKILL.md +7 -7
  279. package/skills/cli-memo/topics/mcp.md +9 -0
  280. package/skills/cli-memo/topics/money.md +14 -1
  281. package/skills/cli-memo/topics/projects.md +2 -1
  282. package/skills/cli-memo/topics/search.md +12 -4
  283. package/dist/bundle/auto-IKZIROGF.js +0 -85
  284. package/dist/bundle/failure-NRZUB77S.js +0 -65
  285. package/dist/bundle/server-AASCSGCI.js +0 -61
  286. package/dist/bundle/server-YQLPZK4Z.js +0 -48
  287. package/dist/bundle/store-maintenance-command-GCBABKEZ.js +0 -47
  288. package/dist/bundle/update-M54Z3SEU.js +0 -68
  289. /package/dist/bundle/{chunk-AWVQHWIS.js → chunk-YSYFOIW7.js} +0 -0
@@ -2,17 +2,15 @@ import { CliError, isCliError } from "@wirecat/cli-base";
2
2
  import { parseLucene } from "@wirecat/cli-base/query";
3
3
  import { parseLocator } from "@wirecat/cli-core";
4
4
  import { demotedSenders, lowerSuspicious, searchMail } from "@wirecat/cli-core/mail";
5
- import { meaningLane, plainQuery, questionLookup, searchAll, searchNotesOf, searchNotesQuery, searchStore, } from "@wirecat/cli-core/services";
5
+ import { meaningLane, plainQuery, questionLookup, RESOURCES_SEARCHED, searchAll, searchNotesOf, searchNotesQuery, searchStore, } from "@wirecat/cli-core/services";
6
6
  import { APP } from "../app.js";
7
7
  import { keyDocuments, keyFirst, projectOf } from "../knowledge/key-documents.js";
8
+ import { accountsByKind, groupScopeOf, MEMO_ACCOUNT, scopedAccounts } from "../store/group.js";
8
9
  import { accountsOf } from "../store/source-list.js";
9
10
  import { taskPage } from "../tasks/context.js";
10
11
  const CHATS_CHECKED = 500;
11
- /**
12
- * The account memo's searches run as: its own notes, never a stored account picked for the owner. The scope comes
13
- * from the query alone, and every account it covers is named in the answer.
14
- */
15
- const MEMO = { provider: "notes", account: "internal" };
12
+ /** memo's searches run as its own notes, never a stored account picked for the owner; the query sets the scope. */
13
+ const MEMO = MEMO_ACCOUNT;
16
14
  export const unifiedSearch = async (store, query, options) => {
17
15
  const limit = options.limit ?? 20, offset = options.offset ?? 0;
18
16
  if (!Number.isInteger(limit) || limit < 1 || limit > 100 || !Number.isInteger(offset) || offset < 0 || offset > 1000)
@@ -136,7 +134,7 @@ export const searchAccounts = async (store, env, options) => {
136
134
  if (options.all && options.source !== undefined)
137
135
  throw new CliError("validation_error", "use --all alone, or name the accounts with --source");
138
136
  if (options.all)
139
- return { keys: (await store.accounts.accounts()).filter(({ provider }) => provider !== "notes"), notes: true };
137
+ return { keys: (await scopedAccounts(store, env)).filter(({ provider }) => provider !== "notes"), notes: true };
140
138
  if (options.source === undefined)
141
139
  throw new CliError("validation_error", "give --all, or name the accounts with --source: telegram:1,email,notes");
142
140
  const keys = await accountsOf(store, env, options.source);
@@ -145,7 +143,7 @@ export const searchAccounts = async (store, env, options) => {
145
143
  notes: keys.some(({ provider }) => provider === "notes"),
146
144
  };
147
145
  };
148
- const hasSource = (node) => node.kind === "predicate"
146
+ export const hasSource = (node) => node.kind === "predicate"
149
147
  ? node.field === "in"
150
148
  : node.clauses.some(({ occur, node }) => occur !== "must_not" && hasSource(node));
151
149
  /** Pages read past hits the caller may not see; a page short of `limit` after them says `hasMore`. */
@@ -167,9 +165,35 @@ const allowedPage = async (ask, limit, shows) => {
167
165
  const { nextOffset: _, ...rest } = first;
168
166
  return { ...rest, items: items.slice(0, limit), hasMore: items.length > limit || page.hasMore };
169
167
  };
168
+ /**
169
+ * In a group, each kind reads only the group's accounts of it; a kind it holds none of is left out and named, never
170
+ * read whole: an empty list would mean "every account" to some readers.
171
+ */
172
+ const groupScoped = async (store, env, only) => {
173
+ const scope = await groupScopeOf(store, env);
174
+ if (scope === undefined)
175
+ return undefined;
176
+ const kinds = accountsByKind(scope, await store.business.accounts());
177
+ const wanted = only ?? RESOURCES_SEARCHED;
178
+ const kept = wanted.filter((kind) => kinds[kind].length > 0);
179
+ if (kept.length === 0)
180
+ throw new CliError("validation_error", `group ${scope.run.name} holds no account of ${wanted.join(", ")}`);
181
+ return {
182
+ only: kept,
183
+ scope: Object.fromEntries(kept.map((kind) => [kind, kinds[kind]])),
184
+ skipped: wanted
185
+ .filter((kind) => !kept.includes(kind))
186
+ .map((resource) => ({
187
+ resource,
188
+ code: "not_found",
189
+ reason: `group ${scope.run.name} holds no account of it`,
190
+ })),
191
+ };
192
+ };
170
193
  /** Messages, mail, notes and calendar events ranked together, with the open tasks that point at a hit. */
171
194
  export const searchEverywhere = async (store, env, { text, limit, only, crmKinds, exact, timezone, plainOrder, shows, }) => {
172
- const accounts = await store.accounts.accounts();
195
+ const accounts = await scopedAccounts(store, env);
196
+ const group = await groupScoped(store, env, only);
173
197
  // Group lists belong to tg; model downloads belong to memo.
174
198
  const messenger = { app: { ...APP, command: "tg" }, hintCommand: "memo" };
175
199
  const ask = (offset) => searchAll(store, MEMO, {
@@ -177,12 +201,13 @@ export const searchEverywhere = async (store, env, { text, limit, only, crmKinds
177
201
  limit,
178
202
  env,
179
203
  ...(offset === undefined ? {} : { offset }),
180
- ...(only === undefined ? {} : { only }),
204
+ ...(group === undefined ? (only === undefined ? {} : { only }) : { only: group.only, scope: group.scope }),
181
205
  ...(crmKinds === undefined ? {} : { crmKinds }),
182
206
  ...(exact ? { exact: true } : {}),
183
207
  ...(timezone === undefined ? {} : { timezone }),
184
208
  }, messenger, (query) => searchStore(store, MEMO, query, messenger), meaningLane({ env, store: async () => store, messenger: { app: { command: "memo" } } }));
185
- const found = shows === undefined ? await ask() : await allowedPage(ask, limit, shows);
209
+ const searched = shows === undefined ? await ask() : await allowedPage(ask, limit, shows);
210
+ const found = group === undefined ? searched : { ...searched, skipped: [...group.skipped, ...searched.skipped] };
186
211
  const tasks = [];
187
212
  let tasksIncomplete = false;
188
213
  const sources = found.items.map((item) => item.ref);
@@ -238,7 +263,7 @@ export const searchKind = async (store, kind, { text, limit, account, accounts,
238
263
  return searchStore(store, MEMO, {
239
264
  text,
240
265
  kind,
241
- ...(hasSource(parseLucene(plain).root) ? {} : { source: "all" }),
266
+ ...(hasSource(parseLucene(plain).root) || accounts !== undefined ? {} : { source: "all" }),
242
267
  limit,
243
268
  ...scope,
244
269
  // As search all does: a question finds a short reply by the message it answers, and records holding some words.
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/search/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/search/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { type GroupContext, type RunGroup } from "@wirecat/cli-core/services";
2
+ import type { AccountKey, MessageStore } from "@wirecat/cli-core/store";
3
+ import type { Command } from "commander";
4
+ /**
5
+ * The account memo's reads run as: its own notes. It names no stored account, so the list reader never adds it to
6
+ * `held` as a new one.
7
+ */
8
+ export declare const MEMO_ACCOUNT: AccountKey;
9
+ /** Who runs, as cli-core's source lists see it: memo, so `group:` and profiles resolve as every app saved them. */
10
+ export declare const memoListContext: (store: MessageStore, env: NodeJS.ProcessEnv) => Promise<GroupContext>;
11
+ /** The group this run reads (WC-ACCT-13): the first word, `MEMO_GROUP` or the lock `MEMO_GROUP_LOCK`. */
12
+ export declare const groupOf: (env: NodeJS.ProcessEnv, word?: string) => RunGroup | undefined;
13
+ export interface GroupScope {
14
+ run: RunGroup;
15
+ accounts: AccountKey[];
16
+ has: (key: AccountKey) => boolean;
17
+ }
18
+ export declare const groupScopeOf: (store: MessageStore, env: NodeJS.ProcessEnv) => Promise<GroupScope | undefined>;
19
+ export type GroupKind = "messages" | "mail" | "notes" | "events" | "crm" | "business";
20
+ /**
21
+ * The group's accounts of each kind `search all` reads. The owner's own notes (`memo notes add`) and business data
22
+ * belong to no account, so every group reads them; an import's business data is its account's, in a group only when
23
+ * the group holds that account (WC-ACCT-13). `imports` are the accounts whose imports made business data.
24
+ */
25
+ export declare const accountsByKind: (scope: GroupScope, imports?: readonly AccountKey[]) => Record<GroupKind, AccountKey[]>;
26
+ /** Every stored account, or only the group's when the run is in one. */
27
+ export declare const scopedAccounts: (store: MessageStore, env: NodeJS.ProcessEnv) => Promise<AccountKey[]>;
28
+ /** Keeps only the group's accounts; every one when the run is in no group. */
29
+ export declare const inGroup: <T extends AccountKey>(store: MessageStore, env: NodeJS.ProcessEnv, keys: readonly T[]) => Promise<T[]>;
30
+ /** The items of a list that belong to the run's group; every one when the run is in no group. */
31
+ export declare const keepInGroup: <T>(store: MessageStore, env: NodeJS.ProcessEnv, items: readonly T[], refOf: (item: T) => string) => Promise<T[]>;
32
+ /**
33
+ * Before every action: under MEMO_GROUP_LOCK cli-core refuses a command not marked `groupAware` and any reference
34
+ * whose thing is outside the group (WC-ACCT-13). In a group, no `--source` becomes `group:<name>`, a given one is
35
+ * narrowed to the group, and an outside `--account` is refused. `word` is the first word `liftGroup` lifted.
36
+ */
37
+ export declare const scopeRunsToGroup: (program: Command, env: NodeJS.ProcessEnv, word?: string) => void;
38
+ //# sourceMappingURL=group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group.d.ts","sourceRoot":"","sources":["../../src/store/group.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,YAAY,EAIjB,KAAK,QAAQ,EAEd,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAIxC;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,UAAuD,CAAA;AAElF,mHAAmH;AACnH,eAAO,MAAM,eAAe,UAAiB,YAAY,OAAO,MAAM,CAAC,UAAU,KAAG,OAAO,CAAC,YAAY,CAQvG,CAAA;AAED,yGAAyG;AACzG,eAAO,MAAM,OAAO,QAAS,MAAM,CAAC,UAAU,SAAS,MAAM,KAAG,QAAQ,GAAG,SAAqC,CAAA;AAEhH,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,QAAQ,CAAA;IACb,QAAQ,EAAE,UAAU,EAAE,CAAA;IACtB,GAAG,EAAE,CAAC,GAAG,EAAE,UAAU,KAAK,OAAO,CAAA;CAClC;AAWD,eAAO,MAAM,YAAY,UAAiB,YAAY,OAAO,MAAM,CAAC,UAAU,KAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAG9G,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,UAAU,CAAA;AAKrF;;;;GAIG;AACH,eAAO,MAAM,cAAc,UAClB,UAAU,YACR,SAAS,UAAU,EAAE,KAC7B,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,CAehC,CAAA;AAED,wEAAwE;AACxE,eAAO,MAAM,cAAc,UAAiB,YAAY,OAAO,MAAM,CAAC,UAAU,KAAG,OAAO,CAAC,UAAU,EAAE,CAItG,CAAA;AAED,8EAA8E;AAC9E,eAAO,MAAM,OAAO,GAAU,CAAC,SAAS,UAAU,SACzC,YAAY,OACd,MAAM,CAAC,UAAU,QAChB,SAAS,CAAC,EAAE,KACjB,OAAO,CAAC,CAAC,EAAE,CAGb,CAAA;AAQD,iGAAiG;AACjG,eAAO,MAAM,WAAW,GAAU,CAAC,SAC1B,YAAY,OACd,MAAM,CAAC,UAAU,SACf,SAAS,CAAC,EAAE,SACZ,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,KACzB,OAAO,CAAC,CAAC,EAAE,CAMb,CAAA;AASD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,YAAa,OAAO,OAAO,MAAM,CAAC,UAAU,SAAS,MAAM,KAAG,IAmB1F,CAAA"}
@@ -0,0 +1,112 @@
1
+ import { kindIn } from "@wirecat/cli-core";
2
+ import { refuseOutsideGroup, runGroup } from "@wirecat/cli-core/cli";
3
+ import { entriesOfList, inGroupOf, keyOf, listContextOf, scopeToGroup, } from "@wirecat/cli-core/services";
4
+ import { withStore } from "../answer.js";
5
+ import { APP } from "../app.js";
6
+ /**
7
+ * The account memo's reads run as: its own notes. It names no stored account, so the list reader never adds it to
8
+ * `held` as a new one.
9
+ */
10
+ export const MEMO_ACCOUNT = { provider: "notes", account: "internal" };
11
+ /** Who runs, as cli-core's source lists see it: memo, so `group:` and profiles resolve as every app saved them. */
12
+ export const memoListContext = async (store, env) => {
13
+ const held = await store.accounts.storedAccounts();
14
+ // listContextOf adds the running account when the store has no row for it; memo's own notes are no account.
15
+ const context = await listContextOf(store, MEMO_ACCOUNT, APP, held, env);
16
+ return {
17
+ ...context,
18
+ held: context.held.filter((one) => one.id !== 0 || keyOf(one) !== keyOf(MEMO_ACCOUNT)),
19
+ };
20
+ };
21
+ /** The group this run reads (WC-ACCT-13): the first word, `MEMO_GROUP` or the lock `MEMO_GROUP_LOCK`. */
22
+ export const groupOf = (env, word) => runGroup(APP, env, word);
23
+ const scopeIn = (run, context) => {
24
+ // Refuses an unknown or empty group the same way a `--source` would.
25
+ scopeToGroup(run, {}, context);
26
+ const accounts = entriesOfList(`group:${run.name}`, context).flatMap((entry) => entry.accounts.map(({ provider, account }) => ({ provider, account })));
27
+ return { run, accounts, has: inGroupOf(context, run.name) };
28
+ };
29
+ export const groupScopeOf = async (store, env) => {
30
+ const run = groupOf(env);
31
+ return run === undefined ? undefined : scopeIn(run, await memoListContext(store, env));
32
+ };
33
+ /** The owner's own invoices, payments and contracts, as cli-core's business lane names them. */
34
+ const OWN_BUSINESS = { provider: "business", account: "internal" };
35
+ /**
36
+ * The group's accounts of each kind `search all` reads. The owner's own notes (`memo notes add`) and business data
37
+ * belong to no account, so every group reads them; an import's business data is its account's, in a group only when
38
+ * the group holds that account (WC-ACCT-13). `imports` are the accounts whose imports made business data.
39
+ */
40
+ export const accountsByKind = (scope, imports = []) => {
41
+ const kinds = {
42
+ messages: [],
43
+ mail: [],
44
+ notes: [MEMO_ACCOUNT],
45
+ events: [],
46
+ crm: [],
47
+ business: [OWN_BUSINESS, ...imports.filter(scope.has)],
48
+ };
49
+ for (const key of scope.accounts) {
50
+ const kind = kindIn(key.provider);
51
+ if (kind === "documents")
52
+ kinds.notes.push(key);
53
+ else if (kind !== undefined && kind !== "meetings" && kind in kinds)
54
+ kinds[kind].push(key);
55
+ }
56
+ return kinds;
57
+ };
58
+ /** Every stored account, or only the group's when the run is in one. */
59
+ export const scopedAccounts = async (store, env) => {
60
+ const all = await store.accounts.accounts();
61
+ const scope = await groupScopeOf(store, env);
62
+ return scope === undefined ? all : all.filter(scope.has);
63
+ };
64
+ /** Keeps only the group's accounts; every one when the run is in no group. */
65
+ export const inGroup = async (store, env, keys) => {
66
+ const scope = await groupScopeOf(store, env);
67
+ return scope === undefined ? [...keys] : keys.filter(scope.has);
68
+ };
69
+ /** Whether a thing belongs to the run's group as cli-core's lock judges a reference: no account means the owner's. */
70
+ const refInGroup = async (store, scope, ref) => {
71
+ const accounts = await store.refs.accounts(ref);
72
+ return !accounts?.length || accounts.some(scope.has);
73
+ };
74
+ /** The items of a list that belong to the run's group; every one when the run is in no group. */
75
+ export const keepInGroup = async (store, env, items, refOf) => {
76
+ const scope = await groupScopeOf(store, env);
77
+ if (scope === undefined)
78
+ return [...items];
79
+ const kept = [];
80
+ for (const item of items)
81
+ if (await refInGroup(store, scope, refOf(item)))
82
+ kept.push(item);
83
+ return kept;
84
+ };
85
+ const optionValue = (command, name) => {
86
+ const value = command.getOptionValue(name);
87
+ return typeof value === "string" ? value : undefined;
88
+ };
89
+ const declares = (command, name) => command.options.some((option) => option.attributeName() === name);
90
+ /**
91
+ * Before every action: under MEMO_GROUP_LOCK cli-core refuses a command not marked `groupAware` and any reference
92
+ * whose thing is outside the group (WC-ACCT-13). In a group, no `--source` becomes `group:<name>`, a given one is
93
+ * narrowed to the group, and an outside `--account` is refused. `word` is the first word `liftGroup` lifted.
94
+ */
95
+ export const scopeRunsToGroup = (program, env, word) => {
96
+ program.hook("preAction", async (_root, command) => {
97
+ const run = groupOf(env, word);
98
+ if (run === undefined)
99
+ return;
100
+ await withStore(env, async (store) => {
101
+ await refuseOutsideGroup(command, { app: APP, env, store });
102
+ const context = await memoListContext(store, env);
103
+ const source = declares(command, "source") ? optionValue(command, "source") : undefined;
104
+ const account = declares(command, "account") ? optionValue(command, "account") : undefined;
105
+ const scoped = scopeToGroup(run, { ...(source === undefined ? {} : { source }), ...(account === undefined ? {} : { account }) }, context);
106
+ // `--all` and `--source` are each other's opposite; under a group, `--all` reads the group's accounts itself.
107
+ if (declares(command, "source") && scoped.source !== undefined && command.getOptionValue("all") !== true)
108
+ command.setOptionValue("source", scoped.source);
109
+ });
110
+ });
111
+ };
112
+ //# sourceMappingURL=group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group.js","sourceRoot":"","sources":["../../src/store/group.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { Streams } from "@wirecat/cli-base";
2
+ import { type GroupMembership } from "@wirecat/cli-core/services";
3
+ import type { Command } from "commander";
4
+ export declare const membershipText: ({ groups, duplicates, suggested, unresolved }: GroupMembership) => string;
5
+ /**
6
+ * `memo groups …`: which accounts each group holds (WC-ACCT-13), and the owner's edits of that. cli-core computes the
7
+ * membership and makes each change in one write; memo names its own command words as words no group may take.
8
+ */
9
+ export declare const groupsCommand: (program: Command, streams: Streams, env: NodeJS.ProcessEnv) => void;
10
+ //# sourceMappingURL=groups-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groups-command.d.ts","sourceRoot":"","sources":["../../src/store/groups-command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAIhD,OAAO,EAEL,KAAK,eAAe,EAIrB,MAAM,4BAA4B,CAAA;AAEnC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAYxC,eAAO,MAAM,cAAc,kDAAmD,eAAe,KAAG,MAkBlF,CAAA;AAEd;;;GAGG;AACH,eAAO,MAAM,aAAa,YAAa,OAAO,WAAW,OAAO,OAAO,MAAM,CAAC,UAAU,KAAG,IAmF1F,CAAA"}
@@ -0,0 +1,88 @@
1
+ import { annotate } from "@wirecat/cli-base/commands";
2
+ import { commandWords, grantsAuthority, LOCAL_READ, LOCAL_WRITE, queryTerms, withQuery } from "@wirecat/cli-core/cli";
3
+ import { addGroupMember, listAccountGroups, moveGroupMember, removeGroupMember, } from "@wirecat/cli-core/services";
4
+ import { answers, listAnswer, withStore } from "../answer.js";
5
+ import { APP } from "../app.js";
6
+ import { MEMO_ACCOUNT } from "./group.js";
7
+ const MEMBER_HELP = "one account, as --source names it: telegram:102, tg:work, email:me@work.example, bitrix24:<portal>";
8
+ /** memo's own entity: one group and its accounts. */
9
+ const GROUPS_QUERY = { entity: "account_group", backend: "native", fields: [] };
10
+ const at = (store, env) => ({ store, account: MEMO_ACCOUNT, app: APP, env });
11
+ export const membershipText = ({ groups, duplicates, suggested, unresolved }) => [
12
+ ...Object.entries(groups).flatMap(([name, members]) => [
13
+ `${name}${members.length ? "" : " (empty)"}`,
14
+ ...members.map((member) => [
15
+ ` ${member.provider}:${member.account}`,
16
+ member.profiles.length ? member.profiles.join(", ") : "",
17
+ member.reason === "setting" ? "" : member.reason,
18
+ member.also_in.length ? `also in ${member.also_in.join(", ")}` : "",
19
+ ]
20
+ .filter(Boolean)
21
+ .join(" ")),
22
+ ]),
23
+ ...duplicates.map(({ member, groups: names }) => `duplicate: ${member} is in ${names.join(", ")}`),
24
+ ...suggested.map(({ group, member, because }) => `suggested: ${member} for ${group} — ${because}`),
25
+ ...unresolved.map((entry) => `unresolved: ${entry} names no account`),
26
+ ].join("\n");
27
+ /**
28
+ * `memo groups …`: which accounts each group holds (WC-ACCT-13), and the owner's edits of that. cli-core computes the
29
+ * membership and makes each change in one write; memo names its own command words as words no group may take.
30
+ */
31
+ export const groupsCommand = (program, streams, env) => {
32
+ const { print } = answers(program, streams, env);
33
+ const groups = program.command("groups").description("account groups: memo <group> … reads only the group's accounts");
34
+ /** Every answer, a read's or an edit's, is the groups as `groups list` gives them: one row per group. */
35
+ const show = async (command, json, work) => {
36
+ const membership = await withStore(env, work);
37
+ const { groups: named, duplicates, suggested, unresolved } = membership;
38
+ const items = Object.entries(named).map(([group, members]) => ({
39
+ group,
40
+ members,
41
+ duplicates: duplicates.filter(({ groups: names }) => names.includes(group)),
42
+ suggested: suggested.filter((one) => one.group === group),
43
+ }));
44
+ print(json, listAnswer(command, {
45
+ items,
46
+ limit: Math.max(1, items.length),
47
+ has_more: false,
48
+ missing: unresolved.map((entry) => ({
49
+ field: entry,
50
+ why: "a saved group entry that names no account",
51
+ })),
52
+ }), membershipText(membership));
53
+ };
54
+ const reserved = () => commandWords(program);
55
+ withQuery(annotate(groups.command("list"), { effects: LOCAL_READ, output: { entity: "account_group" } }), GROUPS_QUERY)
56
+ .description("every saved group, then all, with its accounts, each with its profiles in every app and the other groups that " +
57
+ "hold it too; duplicates and profile-name suggestions last")
58
+ .summary("the saved groups, then all, with accounts, profiles and duplicates")
59
+ .option("--json", "print JSON; --json=id,title keeps only those fields")
60
+ .action(async (words, options) => {
61
+ queryTerms(words, GROUPS_QUERY, "groups list");
62
+ await show("groups list", options.json, (store) => listAccountGroups(at(store, env)));
63
+ });
64
+ grantsAuthority(annotate(groups.command("add"), { effects: LOCAL_WRITE, output: { entity: "account_group" } }))
65
+ .description("put an account in a group, which is made when it does not exist; it may stay in others too")
66
+ .summary("put an account in a group")
67
+ .argument("<group>", "the group: letters, digits, - and _, not a memo command word")
68
+ .argument("<source>", MEMBER_HELP)
69
+ .option("--json", "print JSON; --json=id,title keeps only those fields")
70
+ .action((group, member, options) => show("groups add", options.json, (store) => addGroupMember(at(store, env), { group, member, reserved: reserved() })));
71
+ grantsAuthority(annotate(groups.command("remove"), { effects: LOCAL_WRITE, output: { entity: "account_group" } }))
72
+ .description("take an account out of a group; the account and its data stay, and `all` still reads it")
73
+ .summary("take an account out of a group")
74
+ .argument("<group>", "the group")
75
+ .argument("<source>", MEMBER_HELP)
76
+ .option("--json", "print JSON; --json=id,title keeps only those fields")
77
+ .action((group, member, options) => show("groups remove", options.json, (store) => removeGroupMember(at(store, env), { group, member })));
78
+ // The words, not --from/--to: the shared vocabulary gives --to to a message's recipient.
79
+ grantsAuthority(annotate(groups.command("move"), { effects: LOCAL_WRITE, output: { entity: "account_group" } }))
80
+ .description("move an account from one group to another in one write; the other group is made when it is new")
81
+ .summary("move an account between groups")
82
+ .argument("<source>", MEMBER_HELP)
83
+ .argument("<from>", "the group it leaves")
84
+ .argument("<to>", "the group it joins")
85
+ .option("--json", "print JSON; --json=id,title keeps only those fields")
86
+ .action((member, from, to, options) => show("groups move", options.json, (store) => moveGroupMember(at(store, env), { member, from, to, reserved: reserved() })));
87
+ };
88
+ //# sourceMappingURL=groups-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groups-command.js","sourceRoot":"","sources":["../../src/store/groups-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { type GroupGuard } from "@wirecat/cli-core/services";
2
+ import type { MessageStore } from "@wirecat/cli-core/store";
3
+ /** cli-core's guard for a run under MEMO_GROUP_LOCK; `undefined` when the run is not locked (WC-ACCT-13). */
4
+ export declare const guardOf: (store: MessageStore, env: NodeJS.ProcessEnv) => Promise<GroupGuard | undefined>;
5
+ /** The review list a run decides through: under the lock a proposal outside the group is not listed nor decided. */
6
+ export declare const reviewOf: (store: MessageStore, env: NodeJS.ProcessEnv) => Promise<import("@wirecat/cli-core/services").ProposalRegistry>;
7
+ /** The proposals a run decides through, not only the review's: under the lock the same limits hold. */
8
+ export declare const proposalsOf: (store: MessageStore, env: NodeJS.ProcessEnv) => Promise<import("@wirecat/cli-core/services").ProposalRegistry>;
9
+ /** An answer with every outside reference taken out of its `evidence`, and how many, under the lock. */
10
+ export declare const stripped: <T>(store: MessageStore, env: NodeJS.ProcessEnv, value: T) => Promise<T>;
11
+ /** The sources read back for a memory or a fact, under the lock only the group's, and how many were left out. */
12
+ export declare const sourcesIn: <T extends {
13
+ ref: string | null;
14
+ }>(store: MessageStore, env: NodeJS.ProcessEnv, sources: readonly T[]) => Promise<{
15
+ sources: T[];
16
+ out_of_scope?: number;
17
+ }>;
18
+ /**
19
+ * Under the lock, a context's `notRead` would name every account kept out, which tells the agent they exist: those
20
+ * become one line with their count. Sources that are no account of the store (`notes`, `events`) stay as they are.
21
+ */
22
+ export declare const lockedCoverage: <T>(store: MessageStore, env: NodeJS.ProcessEnv, value: T) => Promise<T>;
23
+ /** Refuses a proposed action outside the locked group, as cli-core's lock refuses a reference. */
24
+ export declare const refuseOutsideAction: (store: MessageStore, env: NodeJS.ProcessEnv, id: string) => Promise<void>;
25
+ /** The actions of a list a locked run may see. */
26
+ export declare const actionsIn: <T extends {
27
+ id: string;
28
+ }>(store: MessageStore, env: NodeJS.ProcessEnv, actions: readonly T[]) => Promise<T[]>;
29
+ //# sourceMappingURL=guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../src/store/guard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAkD,MAAM,4BAA4B,CAAA;AAC5G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAK3D,6GAA6G;AAC7G,eAAO,MAAM,OAAO,UAAW,YAAY,OAAO,MAAM,CAAC,UAAU,KAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CACrE,CAAA;AAE/B,oHAAoH;AACpH,eAAO,MAAM,QAAQ,UAAiB,YAAY,OAAO,MAAM,CAAC,UAAU,mEAGzE,CAAA;AAED,uGAAuG;AACvG,eAAO,MAAM,WAAW,UAAiB,YAAY,OAAO,MAAM,CAAC,UAAU,mEAG5E,CAAA;AAED,wGAAwG;AACxG,eAAO,MAAM,QAAQ,GAAU,CAAC,SAAS,YAAY,OAAO,MAAM,CAAC,UAAU,SAAS,CAAC,KAAG,OAAO,CAAC,CAAC,CAYlG,CAAA;AAED,iHAAiH;AACjH,eAAO,MAAM,SAAS,GAAU,CAAC,SAAS;IAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,SACvD,YAAY,OACd,MAAM,CAAC,UAAU,WACb,SAAS,CAAC,EAAE,KACpB,OAAO,CAAC;IAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAMjD,CAAA;AAID;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAU,CAAC,SAAS,YAAY,OAAO,MAAM,CAAC,UAAU,SAAS,CAAC,KAAG,OAAO,CAAC,CAAC,CAwBxG,CAAA;AAED,kGAAkG;AAClG,eAAO,MAAM,mBAAmB,UAAiB,YAAY,OAAO,MAAM,CAAC,UAAU,MAAM,MAAM,kBAUhG,CAAA;AAED,kDAAkD;AAClD,eAAO,MAAM,SAAS,GAAU,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,SAC/C,YAAY,OACd,MAAM,CAAC,UAAU,WACb,SAAS,CAAC,EAAE,KACpB,OAAO,CAAC,CAAC,EAAE,CAMb,CAAA"}
@@ -0,0 +1,94 @@
1
+ import { CliError } from "@wirecat/cli-base";
2
+ import { groupGuardOf, lockedRegistry, proposalRegistry } from "@wirecat/cli-core/services";
3
+ import { APP } from "../app.js";
4
+ import { reviewRegistry } from "../review/kinds.js";
5
+ import { groupScopeOf } from "./group.js";
6
+ /** cli-core's guard for a run under MEMO_GROUP_LOCK; `undefined` when the run is not locked (WC-ACCT-13). */
7
+ export const guardOf = (store, env) => groupGuardOf(store, APP, env);
8
+ /** The review list a run decides through: under the lock a proposal outside the group is not listed nor decided. */
9
+ export const reviewOf = async (store, env) => {
10
+ const guard = await guardOf(store, env);
11
+ return guard === undefined ? reviewRegistry(store) : lockedRegistry(reviewRegistry(store), guard);
12
+ };
13
+ /** The proposals a run decides through, not only the review's: under the lock the same limits hold. */
14
+ export const proposalsOf = async (store, env) => {
15
+ const guard = await guardOf(store, env);
16
+ return guard === undefined ? proposalRegistry(store) : lockedRegistry(proposalRegistry(store), guard);
17
+ };
18
+ /** An answer with every outside reference taken out of its `evidence`, and how many, under the lock. */
19
+ export const stripped = async (store, env, value) => {
20
+ const guard = await guardOf(store, env);
21
+ if (guard === undefined)
22
+ return value;
23
+ const { value: kept, out_of_scope } = await guard.strip(value);
24
+ if (out_of_scope === 0 || kept === null || typeof kept !== "object" || Array.isArray(kept))
25
+ return kept;
26
+ // A list answer is an envelope with no room for a field of its own: what it left out goes in `missing`.
27
+ if ("items" in kept) {
28
+ const missing = kept.missing ?? [];
29
+ const why = `${out_of_scope} evidence references outside group ${guard.group} left out`;
30
+ return { ...kept, missing: [...missing, { field: "out_of_scope", why }] };
31
+ }
32
+ return { ...kept, out_of_scope };
33
+ };
34
+ /** The sources read back for a memory or a fact, under the lock only the group's, and how many were left out. */
35
+ export const sourcesIn = async (store, env, sources) => {
36
+ const guard = await guardOf(store, env);
37
+ if (guard === undefined)
38
+ return { sources: [...sources] };
39
+ const kept = [];
40
+ for (const one of sources)
41
+ if (one.ref === null || (await guard.visible(one.ref)))
42
+ kept.push(one);
43
+ return { sources: kept, ...(kept.length < sources.length ? { out_of_scope: sources.length - kept.length } : {}) };
44
+ };
45
+ /**
46
+ * Under the lock, a context's `notRead` would name every account kept out, which tells the agent they exist: those
47
+ * become one line with their count. Sources that are no account of the store (`notes`, `events`) stay as they are.
48
+ */
49
+ export const lockedCoverage = async (store, env, value) => {
50
+ const guard = await guardOf(store, env);
51
+ const scope = guard === undefined ? undefined : await groupScopeOf(store, env);
52
+ if (guard === undefined || scope === undefined)
53
+ return value;
54
+ const held = new Set((await store.accounts.storedAccounts()).map(({ provider, account }) => `${provider}:${account}`));
55
+ const outside = (source) => held.has(source) && !scope.accounts.some((key) => `${key.provider}:${key.account}` === source);
56
+ const walk = (node) => {
57
+ if (Array.isArray(node))
58
+ return node.map(walk);
59
+ if (node === null || typeof node !== "object")
60
+ return node;
61
+ return Object.fromEntries(Object.entries(node).map(([key, inner]) => {
62
+ if (key !== "notRead" || !Array.isArray(inner))
63
+ return [key, walk(inner)];
64
+ const rows = inner;
65
+ const away = rows.filter((one) => outside(one.source)).length;
66
+ const kept = rows.filter((one) => !outside(one.source));
67
+ return [
68
+ key,
69
+ away ? [...kept, { source: "other accounts", reason: `${away} outside group ${guard.group}` }] : kept,
70
+ ];
71
+ }));
72
+ };
73
+ return walk(value);
74
+ };
75
+ /** Refuses a proposed action outside the locked group, as cli-core's lock refuses a reference. */
76
+ export const refuseOutsideAction = async (store, env, id) => {
77
+ const guard = await guardOf(store, env);
78
+ if (guard !== undefined && !(await guard.visible(`action:${id}`)))
79
+ throw new CliError("permission_error", `this process is locked to group ${guard.group} — action ${id} is outside it`, {
80
+ reason: "group.outside",
81
+ });
82
+ };
83
+ /** The actions of a list a locked run may see. */
84
+ export const actionsIn = async (store, env, actions) => {
85
+ const guard = await guardOf(store, env);
86
+ if (guard === undefined)
87
+ return [...actions];
88
+ const kept = [];
89
+ for (const one of actions)
90
+ if (await guard.visible(`action:${one.id}`))
91
+ kept.push(one);
92
+ return kept;
93
+ };
94
+ //# sourceMappingURL=guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/store/guard.ts"],"names":[],"mappings":"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"}
@@ -14,10 +14,10 @@ export interface TargetInput extends AccountScope {
14
14
  project?: string;
15
15
  meeting?: string;
16
16
  }
17
- export declare const selectAccount: (store: MessageStore, scope: AccountScope) => Promise<AccountKey>;
17
+ export declare const selectAccount: (store: MessageStore, env: NodeJS.ProcessEnv, scope: AccountScope) => Promise<AccountKey>;
18
18
  /** The `meeting:<account id>/<meeting id>` reference for a meeting the selected account holds. */
19
- export declare const meetingReference: (store: MessageStore, id: string, scope: AccountScope) => Promise<string>;
20
- export declare const selectTarget: (store: MessageStore, input: TargetInput) => Promise<{
19
+ export declare const meetingReference: (store: MessageStore, env: NodeJS.ProcessEnv, id: string, scope: AccountScope) => Promise<string>;
20
+ export declare const selectTarget: (store: MessageStore, env: NodeJS.ProcessEnv, input: TargetInput) => Promise<{
21
21
  key: AccountKey;
22
22
  target: KnowledgeTarget;
23
23
  }>;