@wirecat/cli-memo 0.131.70 → 0.131.72

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 (340) 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-SESNZIAV.js} +35 -35
  19. package/dist/bundle/auto-WU47LYXJ.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-GVP6CAPH.js → chunk-2RNNWFU7.js} +33 -586
  23. package/dist/bundle/{chunk-OHA7HDPX.js → chunk-2VETW2QK.js} +1024 -676
  24. package/dist/bundle/{chunk-IHHXGTMX.js → chunk-3LS76TFB.js} +1 -1
  25. package/dist/bundle/{chunk-N73YBQ42.js → chunk-3ZSPTUG3.js} +9 -7
  26. package/dist/bundle/{chunk-7OXLZZ27.js → chunk-5XRCF57Z.js} +86 -2
  27. package/dist/bundle/{chunk-RHW3DDWI.js → chunk-6B3GQMR6.js} +1 -1
  28. package/dist/bundle/{chunk-EDPA54WQ.js → chunk-6Z62U7NY.js} +3 -3
  29. package/dist/bundle/{chunk-IJAILIZR.js → chunk-A4UQKFGY.js} +18 -18
  30. package/dist/bundle/{chunk-JMGQATR6.js → chunk-ASDOPGKC.js} +2 -2
  31. package/dist/bundle/{chunk-52F4LHCH.js → chunk-B7LGXY3S.js} +4 -4
  32. package/dist/bundle/{chunk-FQ54GW57.js → chunk-BD7AGXJJ.js} +8366 -8360
  33. package/dist/bundle/{chunk-FZHYGJQ2.js → chunk-CLQXHFKG.js} +5 -5
  34. package/dist/bundle/{chunk-VPKJZKXV.js → chunk-CPUQC7UF.js} +1 -1
  35. package/dist/bundle/{chunk-5OMM4CDT.js → chunk-ESYCZ575.js} +2 -2
  36. package/dist/bundle/{chunk-YXXAPVAZ.js → chunk-FDSM2TU6.js} +8 -8
  37. package/dist/bundle/{chunk-YBTUFOQG.js → chunk-FENNNSCI.js} +5 -5
  38. package/dist/bundle/{chunk-OBQ7TSUB.js → chunk-FHIGY5K6.js} +1 -1
  39. package/dist/bundle/{chunk-57SQU2YO.js → chunk-FOPDWCRG.js} +10 -6
  40. package/dist/bundle/{chunk-MK6SQ32Q.js → chunk-FPWF2XLH.js} +12 -12
  41. package/dist/bundle/{chunk-MYLNRBDF.js → chunk-FVJSDDSV.js} +46 -13
  42. package/dist/bundle/{chunk-EQKS6M52.js → chunk-FXZ7PQKG.js} +5 -5
  43. package/dist/bundle/{chunk-TV75OHKJ.js → chunk-G3FQTKHT.js} +7 -7
  44. package/dist/bundle/{chunk-WNA2WNDK.js → chunk-G7XOBQB5.js} +3 -3
  45. package/dist/bundle/{chunk-PSYQPO6D.js → chunk-H3LAORYX.js} +2 -2
  46. package/dist/bundle/{chunk-2DQYP2K3.js → chunk-HIHZNBR7.js} +1 -1
  47. package/dist/bundle/{chunk-22CDLXSR.js → chunk-I4HWKPQR.js} +4 -4
  48. package/dist/bundle/{chunk-QAXIZHK7.js → chunk-II2SXJEO.js} +33 -33
  49. package/dist/bundle/{chunk-2NFI7SDW.js → chunk-INQAQ55X.js} +2304 -1111
  50. package/dist/bundle/{chunk-LYAJUZM4.js → chunk-IRBYZUI7.js} +30 -30
  51. package/dist/bundle/{chunk-EO4JMJFZ.js → chunk-IXZWUHSG.js} +7 -7
  52. package/dist/bundle/{chunk-MWQI6FSU.js → chunk-K55WZ67L.js} +3 -3
  53. package/dist/bundle/{chunk-YTJWIJIG.js → chunk-KH43CUE2.js} +5 -5
  54. package/dist/bundle/{chunk-2C7Z7CKD.js → chunk-LIF2HXIQ.js} +1 -1
  55. package/dist/bundle/{chunk-3LGLKLBA.js → chunk-M2DAITNE.js} +2 -2
  56. package/dist/bundle/{chunk-OAO5UCPJ.js → chunk-MAGAWAPG.js} +1366 -1574
  57. package/dist/bundle/{chunk-7JFLHRQL.js → chunk-MKOQDN3I.js} +1 -1
  58. package/dist/bundle/{chunk-67VEVKMJ.js → chunk-MSTWHRLN.js} +1 -1
  59. package/dist/bundle/{chunk-GGFL64HF.js → chunk-NRLXWY4Q.js} +13170 -11987
  60. package/dist/bundle/{chunk-267N22E4.js → chunk-PGOMGFXA.js} +1 -1
  61. package/dist/bundle/{chunk-4HSWIXYE.js → chunk-PHL53ERQ.js} +4 -4
  62. package/dist/bundle/{chunk-53EAI4VZ.js → chunk-QUPPO7DB.js} +1 -1
  63. package/dist/bundle/{chunk-276KPJI5.js → chunk-RF6KPQWV.js} +2 -2
  64. package/dist/bundle/{chunk-3OEV7GNU.js → chunk-RGIS2DRA.js} +4 -4
  65. package/dist/bundle/{chunk-TXOXPQN2.js → chunk-SL2LXOCN.js} +2 -2
  66. package/dist/bundle/{chunk-QZU5IM5E.js → chunk-SR7C53CS.js} +2 -2
  67. package/dist/bundle/{chunk-ECHN36DC.js → chunk-STJWETNW.js} +4 -4
  68. package/dist/bundle/{chunk-BGWPKEKK.js → chunk-SVVSGUMU.js} +4 -4
  69. package/dist/bundle/{chunk-GVEY6743.js → chunk-THPGFRPZ.js} +9 -9
  70. package/dist/bundle/{chunk-V2YS63Z5.js → chunk-U3P5F57B.js} +1 -1
  71. package/dist/bundle/{chunk-PHSYMVYX.js → chunk-UCRR7R6Q.js} +2 -2
  72. package/dist/bundle/{chunk-2F35N6BI.js → chunk-UX52EWLQ.js} +1 -1
  73. package/dist/bundle/{chunk-XTEJXJJ3.js → chunk-WT2P44YD.js} +10 -10
  74. package/dist/bundle/{chunk-UEMI6FXR.js → chunk-XNX3U6GD.js} +6 -6
  75. package/dist/bundle/{chunk-3TFK7RBA.js → chunk-XXEHPPNS.js} +23908 -22107
  76. package/dist/bundle/{chunk-5EHUHZU5.js → chunk-YBL4QKLV.js} +80 -68
  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-W6SHKRBE.js} +4 -4
  84. package/dist/bundle/failure-NRJ3EPBO.js +65 -0
  85. package/dist/bundle/{first-run-MLIFZSVH.js → first-run-7HAWGQ3B.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-OL6ZYF2T.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-RSUVU6HA.js → program-MRG4ZQQI.js} +2107 -516
  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-AEZPZ3ZD.js +48 -0
  103. package/dist/bundle/server-CIT5B2SV.js +61 -0
  104. package/dist/bundle/{server-BVRPQPGY.js → server-D5BJDKTJ.js} +62 -53
  105. package/dist/bundle/{state-UBAIZ2WP.js → state-A57F7T5D.js} +3 -3
  106. package/dist/bundle/{store-VQQVUA4W.js → store-JXD7SGIK.js} +9 -9
  107. package/dist/bundle/store-maintenance-command-5DG4SEQA.js +47 -0
  108. package/dist/bundle/update-NI24ED4V.js +68 -0
  109. package/dist/config.d.ts +5 -0
  110. package/dist/config.d.ts.map +1 -1
  111. package/dist/config.js +5 -0
  112. package/dist/config.js.map +1 -1
  113. package/dist/context/command.d.ts +2 -1
  114. package/dist/context/command.d.ts.map +1 -1
  115. package/dist/context/command.js +34 -12
  116. package/dist/context/command.js.map +1 -1
  117. package/dist/context/context.d.ts +20 -8
  118. package/dist/context/context.d.ts.map +1 -1
  119. package/dist/context/context.js +65 -40
  120. package/dist/context/context.js.map +1 -1
  121. package/dist/contract-overrides/search.js +1 -1
  122. package/dist/contract-overrides/search.js.map +1 -1
  123. package/dist/digest/digest.d.ts.map +1 -1
  124. package/dist/digest/digest.js +2 -1
  125. package/dist/digest/digest.js.map +1 -1
  126. package/dist/discovery/command.d.ts.map +1 -1
  127. package/dist/discovery/command.js +2 -0
  128. package/dist/discovery/command.js.map +1 -1
  129. package/dist/doctor/command.d.ts +22 -2
  130. package/dist/doctor/command.d.ts.map +1 -1
  131. package/dist/examples.d.ts.map +1 -1
  132. package/dist/examples.js +60 -10
  133. package/dist/examples.js.map +1 -1
  134. package/dist/facts/command.d.ts.map +1 -1
  135. package/dist/facts/command.js +7 -6
  136. package/dist/facts/command.js.map +1 -1
  137. package/dist/finance/deal-text.d.ts +4 -0
  138. package/dist/finance/deal-text.d.ts.map +1 -0
  139. package/dist/finance/deal-text.js +34 -0
  140. package/dist/finance/deal-text.js.map +1 -0
  141. package/dist/finance/deals-command.d.ts +1 -1
  142. package/dist/finance/deals-command.d.ts.map +1 -1
  143. package/dist/finance/deals-command.js +113 -13
  144. package/dist/finance/deals-command.js.map +1 -1
  145. package/dist/knowledge/business-text.d.ts +7 -0
  146. package/dist/knowledge/business-text.d.ts.map +1 -0
  147. package/dist/knowledge/business-text.js +19 -0
  148. package/dist/knowledge/business-text.js.map +1 -0
  149. package/dist/knowledge/command.d.ts +1 -1
  150. package/dist/knowledge/command.d.ts.map +1 -1
  151. package/dist/knowledge/command.js +131 -42
  152. package/dist/knowledge/command.js.map +1 -1
  153. package/dist/knowledge/money-text.d.ts +4 -0
  154. package/dist/knowledge/money-text.d.ts.map +1 -0
  155. package/dist/knowledge/money-text.js +16 -0
  156. package/dist/knowledge/money-text.js.map +1 -0
  157. package/dist/knowledge/organization-text.d.ts +7 -0
  158. package/dist/knowledge/organization-text.d.ts.map +1 -0
  159. package/dist/knowledge/organization-text.js +24 -0
  160. package/dist/knowledge/organization-text.js.map +1 -0
  161. package/dist/knowledge/project-actions-command.js +1 -1
  162. package/dist/knowledge/project-actions-command.js.map +1 -1
  163. package/dist/knowledge/project-actions.d.ts +1 -1
  164. package/dist/knowledge/project-actions.d.ts.map +1 -1
  165. package/dist/knowledge/project-actions.js +2 -2
  166. package/dist/knowledge/project-actions.js.map +1 -1
  167. package/dist/knowledge/project-context.d.ts +27 -1
  168. package/dist/knowledge/project-context.d.ts.map +1 -1
  169. package/dist/knowledge/project-context.js +9 -5
  170. package/dist/knowledge/project-context.js.map +1 -1
  171. package/dist/knowledge/project-status-command.d.ts.map +1 -1
  172. package/dist/knowledge/project-status-command.js +21 -5
  173. package/dist/knowledge/project-status-command.js.map +1 -1
  174. package/dist/knowledge/relationships.d.ts +27 -23
  175. package/dist/knowledge/relationships.d.ts.map +1 -1
  176. package/dist/knowledge/relationships.js +65 -52
  177. package/dist/knowledge/relationships.js.map +1 -1
  178. package/dist/knowledge/roles-command.d.ts +8 -0
  179. package/dist/knowledge/roles-command.d.ts.map +1 -0
  180. package/dist/knowledge/roles-command.js +65 -0
  181. package/dist/knowledge/roles-command.js.map +1 -0
  182. package/dist/mcp/catalogue.d.ts +19 -1
  183. package/dist/mcp/catalogue.d.ts.map +1 -1
  184. package/dist/mcp/catalogue.js +9 -1
  185. package/dist/mcp/catalogue.js.map +1 -1
  186. package/dist/mcp/server.js +1 -1
  187. package/dist/mcp/server.js.map +1 -1
  188. package/dist/memories/command.d.ts.map +1 -1
  189. package/dist/memories/command.js +6 -5
  190. package/dist/memories/command.js.map +1 -1
  191. package/dist/memories/sources.js +2 -2
  192. package/dist/memories/sources.js.map +1 -1
  193. package/dist/models/command.d.ts +1 -1
  194. package/dist/models/command.d.ts.map +1 -1
  195. package/dist/models/command.js +2 -1
  196. package/dist/models/command.js.map +1 -1
  197. package/dist/notes/command.d.ts.map +1 -1
  198. package/dist/notes/command.js +13 -8
  199. package/dist/notes/command.js.map +1 -1
  200. package/dist/notes/embed.d.ts +6 -1
  201. package/dist/notes/embed.d.ts.map +1 -1
  202. package/dist/notes/embed.js +17 -8
  203. package/dist/notes/embed.js.map +1 -1
  204. package/dist/people/command.d.ts.map +1 -1
  205. package/dist/people/command.js +7 -2
  206. package/dist/people/command.js.map +1 -1
  207. package/dist/people/identities-command.d.ts +5 -0
  208. package/dist/people/identities-command.d.ts.map +1 -0
  209. package/dist/people/identities-command.js +179 -0
  210. package/dist/people/identities-command.js.map +1 -0
  211. package/dist/people/identity.d.ts +5 -0
  212. package/dist/people/identity.d.ts.map +1 -1
  213. package/dist/people/identity.js +19 -2
  214. package/dist/people/identity.js.map +1 -1
  215. package/dist/program.d.ts +15 -1
  216. package/dist/program.d.ts.map +1 -1
  217. package/dist/program.js +191 -5
  218. package/dist/program.js.map +1 -1
  219. package/dist/reasons.d.ts.map +1 -1
  220. package/dist/reasons.js +84 -0
  221. package/dist/reasons.js.map +1 -1
  222. package/dist/review/command.js +2 -2
  223. package/dist/review/command.js.map +1 -1
  224. package/dist/review/kinds.d.ts +1 -1
  225. package/dist/review/kinds.d.ts.map +1 -1
  226. package/dist/review/kinds.js +1 -0
  227. package/dist/review/kinds.js.map +1 -1
  228. package/dist/review/review.d.ts +3 -3
  229. package/dist/review/review.d.ts.map +1 -1
  230. package/dist/review/review.js +6 -6
  231. package/dist/review/review.js.map +1 -1
  232. package/dist/review/status.d.ts.map +1 -1
  233. package/dist/review/status.js +5 -4
  234. package/dist/review/status.js.map +1 -1
  235. package/dist/run/import.d.ts +8 -2
  236. package/dist/run/import.d.ts.map +1 -1
  237. package/dist/run/import.js +31 -11
  238. package/dist/run/import.js.map +1 -1
  239. package/dist/search/command.d.ts.map +1 -1
  240. package/dist/search/command.js +21 -3
  241. package/dist/search/command.js.map +1 -1
  242. package/dist/search/denied.d.ts +10 -0
  243. package/dist/search/denied.d.ts.map +1 -0
  244. package/dist/search/denied.js +10 -0
  245. package/dist/search/denied.js.map +1 -0
  246. package/dist/search/people.d.ts.map +1 -1
  247. package/dist/search/people.js +11 -1
  248. package/dist/search/people.js.map +1 -1
  249. package/dist/search/search.d.ts +2 -0
  250. package/dist/search/search.d.ts.map +1 -1
  251. package/dist/search/search.js +37 -12
  252. package/dist/search/search.js.map +1 -1
  253. package/dist/sources/command.d.ts +3 -1
  254. package/dist/sources/command.d.ts.map +1 -1
  255. package/dist/sources/command.js +3 -1
  256. package/dist/sources/command.js.map +1 -1
  257. package/dist/sources/readers/api.d.ts +4 -0
  258. package/dist/sources/readers/api.d.ts.map +1 -0
  259. package/dist/sources/readers/api.js +48 -0
  260. package/dist/sources/readers/api.js.map +1 -0
  261. package/dist/sources/readers/claude-code.d.ts +7 -0
  262. package/dist/sources/readers/claude-code.d.ts.map +1 -0
  263. package/dist/sources/readers/claude-code.js +74 -0
  264. package/dist/sources/readers/claude-code.js.map +1 -0
  265. package/dist/sources/readers/codex.d.ts +7 -0
  266. package/dist/sources/readers/codex.d.ts.map +1 -0
  267. package/dist/sources/readers/codex.js +72 -0
  268. package/dist/sources/readers/codex.js.map +1 -0
  269. package/dist/sources/readers/index.d.ts +6 -0
  270. package/dist/sources/readers/index.d.ts.map +1 -0
  271. package/dist/sources/readers/index.js +8 -0
  272. package/dist/sources/readers/index.js.map +1 -0
  273. package/dist/sources/readers/keys.d.ts +13 -0
  274. package/dist/sources/readers/keys.d.ts.map +1 -0
  275. package/dist/sources/readers/keys.js +25 -0
  276. package/dist/sources/readers/keys.js.map +1 -0
  277. package/dist/sources/readers/ollama.d.ts +3 -0
  278. package/dist/sources/readers/ollama.d.ts.map +1 -0
  279. package/dist/sources/readers/ollama.js +60 -0
  280. package/dist/sources/readers/ollama.js.map +1 -0
  281. package/dist/sources/readers/process.d.ts +16 -0
  282. package/dist/sources/readers/process.d.ts.map +1 -0
  283. package/dist/sources/readers/process.js +49 -0
  284. package/dist/sources/readers/process.js.map +1 -0
  285. package/dist/sources/readers/types.d.ts +38 -0
  286. package/dist/sources/readers/types.d.ts.map +1 -0
  287. package/dist/sources/readers/types.js +2 -0
  288. package/dist/sources/readers/types.js.map +1 -0
  289. package/dist/sources/suggest-command.d.ts +9 -0
  290. package/dist/sources/suggest-command.d.ts.map +1 -0
  291. package/dist/sources/suggest-command.js +202 -0
  292. package/dist/sources/suggest-command.js.map +1 -0
  293. package/dist/sources/suggest.d.ts +56 -0
  294. package/dist/sources/suggest.d.ts.map +1 -0
  295. package/dist/sources/suggest.js +143 -0
  296. package/dist/sources/suggest.js.map +1 -0
  297. package/dist/store/group.d.ts +38 -0
  298. package/dist/store/group.d.ts.map +1 -0
  299. package/dist/store/group.js +112 -0
  300. package/dist/store/group.js.map +1 -0
  301. package/dist/store/groups-command.d.ts +10 -0
  302. package/dist/store/groups-command.d.ts.map +1 -0
  303. package/dist/store/groups-command.js +88 -0
  304. package/dist/store/groups-command.js.map +1 -0
  305. package/dist/store/guard.d.ts +29 -0
  306. package/dist/store/guard.d.ts.map +1 -0
  307. package/dist/store/guard.js +94 -0
  308. package/dist/store/guard.js.map +1 -0
  309. package/dist/store/scope.d.ts +3 -3
  310. package/dist/store/scope.d.ts.map +1 -1
  311. package/dist/store/scope.js +7 -6
  312. package/dist/store/scope.js.map +1 -1
  313. package/dist/store/source-list.d.ts +5 -1
  314. package/dist/store/source-list.d.ts.map +1 -1
  315. package/dist/store/source-list.js +30 -15
  316. package/dist/store/source-list.js.map +1 -1
  317. package/dist/tags/command.d.ts.map +1 -1
  318. package/dist/tags/command.js +3 -2
  319. package/dist/tags/command.js.map +1 -1
  320. package/dist/tasks/shared.d.ts.map +1 -1
  321. package/dist/tasks/shared.js +2 -1
  322. package/dist/tasks/shared.js.map +1 -1
  323. package/dist/tasks/tasks.js +3 -3
  324. package/dist/tasks/tasks.js.map +1 -1
  325. package/dist/version.d.ts +1 -1
  326. package/dist/version.js +1 -1
  327. package/package.json +5 -4
  328. package/skills/cli-memo/SKILL.md +9 -9
  329. package/skills/cli-memo/topics/mcp.md +9 -0
  330. package/skills/cli-memo/topics/money.md +14 -1
  331. package/skills/cli-memo/topics/projects.md +2 -1
  332. package/skills/cli-memo/topics/proposals.md +40 -1
  333. package/skills/cli-memo/topics/search.md +15 -5
  334. package/dist/bundle/auto-CVILDIC6.js +0 -85
  335. package/dist/bundle/failure-HM55W3NH.js +0 -65
  336. package/dist/bundle/server-AASCSGCI.js +0 -61
  337. package/dist/bundle/server-YQLPZK4Z.js +0 -48
  338. package/dist/bundle/store-maintenance-command-GCBABKEZ.js +0 -47
  339. package/dist/bundle/update-ZE53ASCW.js +0 -68
  340. /package/dist/bundle/{chunk-AWVQHWIS.js → chunk-YSYFOIW7.js} +0 -0
@@ -0,0 +1,74 @@
1
+ import { mkdtempSync, rmSync } from "node:fs";
2
+ import { tmpdir } from "node:os";
3
+ import { join } from "node:path";
4
+ import { CliError } from "@wirecat/cli-base";
5
+ import { firstLine, runProgram } from "./process.js";
6
+ /**
7
+ * The owner's own signed-in Claude Code, with every tool, MCP server, hook, slash command and saved session off,
8
+ * started in an empty folder: it only reads the text on stdin and answers.
9
+ */
10
+ export const claudeCode = {
11
+ id: "claude-code",
12
+ title: "Claude Code",
13
+ provider: "anthropic",
14
+ leavesComputer: true,
15
+ readsFiles: false,
16
+ needsModel: false,
17
+ probe: async ({ env, signal }) => {
18
+ const version = await runProgram("claude", ["--version"], { env, ...(signal ? { signal } : {}) });
19
+ if (version?.code !== 0)
20
+ return {
21
+ available: false,
22
+ signedIn: null,
23
+ version: null,
24
+ models: null,
25
+ problem: "Claude Code is not installed",
26
+ };
27
+ const status = await runProgram("claude", ["auth", "status", "--json"], { env, ...(signal ? { signal } : {}) });
28
+ let signedIn = false;
29
+ try {
30
+ signedIn = JSON.parse(status?.stdout ?? "").loggedIn === true;
31
+ }
32
+ catch { }
33
+ return {
34
+ available: true,
35
+ signedIn,
36
+ version: firstLine(version.stdout),
37
+ models: null,
38
+ problem: signedIn ? null : "Claude Code is not signed in: run claude auth login",
39
+ };
40
+ },
41
+ read: async ({ env, signal }, { system, prompt, model }) => {
42
+ const folder = mkdtempSync(join(tmpdir(), "memo-reader-"));
43
+ try {
44
+ const ran = await runProgram("claude", [
45
+ "--print",
46
+ "--output-format",
47
+ "text",
48
+ "--tools",
49
+ "",
50
+ "--disallowedTools",
51
+ "mcp__*",
52
+ "--strict-mcp-config",
53
+ "--settings",
54
+ '{"disableAllHooks":true}',
55
+ "--disable-slash-commands",
56
+ "--no-session-persistence",
57
+ "--system-prompt",
58
+ system,
59
+ ...(model ? ["--model", model] : []),
60
+ ], { env, cwd: folder, stdin: prompt, ...(signal ? { signal } : {}) });
61
+ if (!ran)
62
+ throw new CliError("configuration_error", "Claude Code is not installed", { reason: "reader.unavailable" });
63
+ if (ran.code !== 0)
64
+ throw new CliError("invalid_response", `Claude Code failed: ${firstLine(ran.stderr || ran.stdout)}`, {
65
+ reason: "reader.failed",
66
+ });
67
+ return ran.stdout;
68
+ }
69
+ finally {
70
+ rmSync(folder, { recursive: true, force: true });
71
+ }
72
+ },
73
+ };
74
+ //# sourceMappingURL=claude-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../src/sources/readers/claude-code.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Reader } from "./types.js";
2
+ /**
3
+ * The owner's own signed-in Codex CLI in a read-only sandbox and an empty folder. It is an agent that can still read
4
+ * files of this computer, which `readers` says.
5
+ */
6
+ export declare const codex: Reader;
7
+ //# sourceMappingURL=codex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/sources/readers/codex.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAExC;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,MA8DnB,CAAA"}
@@ -0,0 +1,72 @@
1
+ import { mkdtempSync, readFileSync, rmSync } from "node:fs";
2
+ import { tmpdir } from "node:os";
3
+ import { join } from "node:path";
4
+ import { CliError } from "@wirecat/cli-base";
5
+ import { firstLine, runProgram } from "./process.js";
6
+ /**
7
+ * The owner's own signed-in Codex CLI in a read-only sandbox and an empty folder. It is an agent that can still read
8
+ * files of this computer, which `readers` says.
9
+ */
10
+ export const codex = {
11
+ id: "codex",
12
+ title: "Codex CLI",
13
+ provider: "openai",
14
+ leavesComputer: true,
15
+ readsFiles: true,
16
+ needsModel: false,
17
+ probe: async ({ env, signal }) => {
18
+ const version = await runProgram("codex", ["--version"], { env, ...(signal ? { signal } : {}) });
19
+ if (version?.code !== 0)
20
+ return { available: false, signedIn: null, version: null, models: null, problem: "Codex CLI is not installed" };
21
+ const status = await runProgram("codex", ["login", "status"], { env, ...(signal ? { signal } : {}) });
22
+ const signedIn = status?.code === 0;
23
+ return {
24
+ available: true,
25
+ signedIn,
26
+ version: firstLine(version.stdout),
27
+ models: null,
28
+ problem: signedIn ? null : "Codex CLI is not signed in: run codex login",
29
+ };
30
+ },
31
+ read: async ({ env, signal }, { system, prompt, model }) => {
32
+ const folder = mkdtempSync(join(tmpdir(), "memo-reader-"));
33
+ const answer = join(folder, "answer.txt");
34
+ try {
35
+ const ran = await runProgram("codex", [
36
+ "exec",
37
+ "--sandbox",
38
+ "read-only",
39
+ "--skip-git-repo-check",
40
+ "--ephemeral",
41
+ "--ignore-user-config",
42
+ "--ignore-rules",
43
+ "--color",
44
+ "never",
45
+ "--cd",
46
+ folder,
47
+ "--output-last-message",
48
+ answer,
49
+ ...(model ? ["--model", model] : []),
50
+ "-",
51
+ ],
52
+ // codex exec has no system prompt of its own; the instructions lead the input.
53
+ { env, cwd: folder, stdin: `${system}\n\n${prompt}`, ...(signal ? { signal } : {}) });
54
+ if (!ran)
55
+ throw new CliError("configuration_error", "Codex CLI is not installed", { reason: "reader.unavailable" });
56
+ if (ran.code !== 0)
57
+ throw new CliError("invalid_response", `Codex CLI failed: ${firstLine(ran.stderr || ran.stdout)}`, {
58
+ reason: "reader.failed",
59
+ });
60
+ try {
61
+ return readFileSync(answer, "utf8");
62
+ }
63
+ catch {
64
+ return ran.stdout;
65
+ }
66
+ }
67
+ finally {
68
+ rmSync(folder, { recursive: true, force: true });
69
+ }
70
+ },
71
+ };
72
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/sources/readers/codex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { Reader } from "./types.js";
2
+ export type { Reader, ReaderContext, ReaderProbe } from "./types.js";
3
+ export declare const READERS: readonly Reader[];
4
+ export declare const READER_IDS: string[];
5
+ export declare const readerOf: (id: string) => Reader | undefined;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sources/readers/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAExC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAEpE,eAAO,MAAM,OAAO,EAAE,SAAS,MAAM,EAA+D,CAAA;AAEpG,eAAO,MAAM,UAAU,UAAqC,CAAA;AAE5D,eAAO,MAAM,QAAQ,OAAQ,MAAM,KAAG,MAAM,GAAG,SAAuD,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { anthropicReader, openaiReader } from "./api.js";
2
+ import { claudeCode } from "./claude-code.js";
3
+ import { codex } from "./codex.js";
4
+ import { ollama } from "./ollama.js";
5
+ export const READERS = [claudeCode, codex, ollama, openaiReader, anthropicReader];
6
+ export const READER_IDS = READERS.map((reader) => reader.id);
7
+ export const readerOf = (id) => READERS.find((reader) => reader.id === id);
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sources/readers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAKpC,MAAM,CAAC,MAAM,OAAO,GAAsB,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,CAAC,CAAA;AAEpG,MAAM,CAAC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AAE5D,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAsB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA"}
@@ -0,0 +1,13 @@
1
+ import type { ReaderContext } from "./types.js";
2
+ /** Providers whose API key memo keeps. */
3
+ export declare const KEY_PROVIDERS: readonly ["openai", "anthropic"];
4
+ export type KeyProvider = (typeof KEY_PROVIDERS)[number];
5
+ /**
6
+ * The owner's API key for a provider, in the keyring entry memo's enrichment reads too. No environment variable is
7
+ * read: a key in the environment may be another tool's, and the owner gives memo one on purpose.
8
+ */
9
+ export declare const providerKeys: ({ env, keyring }: Pick<ReaderContext, "env" | "keyring">) => {
10
+ read: (provider: KeyProvider) => string | undefined;
11
+ write: (provider: KeyProvider, key: string) => import("@wirecat/cli-base").CredentialSource;
12
+ };
13
+ //# sourceMappingURL=keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/sources/readers/keys.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,0CAA0C;AAC1C,eAAO,MAAM,aAAa,YAAI,QAAQ,EAAE,WAAW,CAAU,CAAA;AAC7D,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAA;AAExD;;;GAGG;AACH,eAAO,MAAM,YAAY,qBAAsB,IAAI,CAAC,aAAa,EAAE,KAAK,GAAG,SAAS,CAAC;IAYjF,IAAI,aAAa,WAAW,KAAG,MAAM,GAAG,SAAS;IACjD,KAAK,aAAa,WAAW,OAAO,MAAM;CAE7C,CAAA"}
@@ -0,0 +1,25 @@
1
+ import { Credentials, isMovedRun, resolvePaths } from "@wirecat/cli-base";
2
+ import { APP } from "../../app.js";
3
+ /** Providers whose API key memo keeps. */
4
+ export const KEY_PROVIDERS = ["openai", "anthropic"];
5
+ /**
6
+ * The owner's API key for a provider, in the keyring entry memo's enrichment reads too. No environment variable is
7
+ * read: a key in the environment may be another tool's, and the owner gives memo one on purpose.
8
+ */
9
+ export const providerKeys = ({ env, keyring }) => {
10
+ const where = { appName: APP.appName, prefix: APP.envPrefix, env };
11
+ const credentials = new Credentials({
12
+ configDir: resolvePaths(where).config,
13
+ service: APP.appName,
14
+ isolated: isMovedRun(where),
15
+ storage: "keyring",
16
+ env,
17
+ ...(keyring ? { keyring } : {}),
18
+ });
19
+ const account = (provider) => `embeddings:${provider}`;
20
+ return {
21
+ read: (provider) => credentials.read(account(provider))?.secret,
22
+ write: (provider, key) => credentials.write(account(provider), key, { signIn: true }),
23
+ };
24
+ };
25
+ //# sourceMappingURL=keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/sources/readers/keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACzE,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAGlC,0CAA0C;AAC1C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAU,CAAA;AAG7D;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,EAA0C,EAAE,EAAE;IACvF,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,CAAA;IAClE,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC;QAClC,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM;QACrC,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC;QAC3B,OAAO,EAAE,SAAS;QAClB,GAAG;QACH,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChC,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,CAAC,QAAqB,EAAE,EAAE,CAAC,cAAc,QAAQ,EAAE,CAAA;IACnE,OAAO;QACL,IAAI,EAAE,CAAC,QAAqB,EAAsB,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM;QAChG,KAAK,EAAE,CAAC,QAAqB,EAAE,GAAW,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;KAC3G,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { Reader } from "./types.js";
2
+ export declare const ollama: Reader;
3
+ //# sourceMappingURL=ollama.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama.d.ts","sourceRoot":"","sources":["../../../src/sources/readers/ollama.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAUxC,eAAO,MAAM,MAAM,EAAE,MAkDpB,CAAA"}
@@ -0,0 +1,60 @@
1
+ import { CliError } from "@wirecat/cli-base";
2
+ /** Only the Ollama on this computer: a remote one would be a way to send the text off it. */
3
+ const OLLAMA = "http://127.0.0.1:11434";
4
+ const notRunning = () => new CliError("provider_unavailable", "Ollama is not running on this computer: start it with ollama serve", {
5
+ reason: "reader.not-running",
6
+ });
7
+ export const ollama = {
8
+ id: "ollama",
9
+ title: "Ollama",
10
+ provider: "local",
11
+ leavesComputer: false,
12
+ readsFiles: false,
13
+ needsModel: true,
14
+ probe: async ({ fetch, signal }) => {
15
+ try {
16
+ const response = await fetch(`${OLLAMA}/api/tags`, { ...(signal ? { signal } : {}) });
17
+ const body = (await response.json());
18
+ const models = (body.models ?? []).flatMap((model) => (typeof model.name === "string" ? [model.name] : []));
19
+ return {
20
+ available: true,
21
+ signedIn: null,
22
+ version: null,
23
+ models,
24
+ problem: models.length ? null : "Ollama has no model: ollama pull <model>",
25
+ };
26
+ }
27
+ catch {
28
+ return {
29
+ available: false,
30
+ signedIn: null,
31
+ version: null,
32
+ models: null,
33
+ problem: "Ollama is not running on this computer",
34
+ };
35
+ }
36
+ },
37
+ read: async ({ fetch, signal }, { system, prompt, model }) => {
38
+ let response;
39
+ try {
40
+ response = await fetch(`${OLLAMA}/api/generate`, {
41
+ method: "POST",
42
+ headers: { "content-type": "application/json" },
43
+ body: JSON.stringify({ model, system, prompt, stream: false, format: "json" }),
44
+ ...(signal ? { signal } : {}),
45
+ });
46
+ }
47
+ catch {
48
+ throw notRunning();
49
+ }
50
+ if (response.status === 404)
51
+ throw new CliError("not_found", `Ollama has no model ${model}: ollama pull ${model}`, {
52
+ reason: "reader.model-missing",
53
+ });
54
+ const body = (await response.json().catch(() => ({})));
55
+ if (!response.ok || typeof body.response !== "string")
56
+ throw new CliError("invalid_response", `Ollama answered ${response.status}`, { reason: "reader.failed" });
57
+ return body.response;
58
+ },
59
+ };
60
+ //# sourceMappingURL=ollama.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ollama.js","sourceRoot":"","sources":["../../../src/sources/readers/ollama.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export declare const readerEnv: (env: NodeJS.ProcessEnv) => NodeJS.ProcessEnv;
2
+ export interface Ran {
3
+ code: number | null;
4
+ stdout: string;
5
+ stderr: string;
6
+ }
7
+ /** Runs a reader's program to its end; `undefined` when it is not installed. */
8
+ export declare const runProgram: (program: string, args: string[], { env, cwd, stdin, signal }: {
9
+ env: NodeJS.ProcessEnv;
10
+ cwd?: string;
11
+ stdin?: string;
12
+ signal?: AbortSignal;
13
+ }) => Promise<Ran | undefined>;
14
+ /** The first line a program printed, short enough for an answer; never the text it read. */
15
+ export declare const firstLine: (text: string) => string;
16
+ //# sourceMappingURL=process.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../src/sources/readers/process.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,SAAS,QAAS,MAAM,CAAC,UAAU,KAAG,MAAM,CAAC,UAC4B,CAAA;AAEtF,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;CACf;AAED,gFAAgF;AAChF,eAAO,MAAM,UAAU,YACZ,MAAM,QACT,MAAM,EAAE,+BACe;IAAE,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,KAC1G,OAAO,CAAC,GAAG,GAAG,SAAS,CAgCtB,CAAA;AAEJ,4FAA4F;AAC5F,eAAO,MAAM,SAAS,SAAU,MAAM,WAAoD,CAAA"}
@@ -0,0 +1,49 @@
1
+ import { spawn } from "node:child_process";
2
+ import { CliError } from "@wirecat/cli-base";
3
+ const TIMEOUT_MS = 600_000;
4
+ const MAX_OUTPUT = 4 * 1024 * 1024;
5
+ /**
6
+ * Variables a reader started by memo must not inherit: an API key would bill the owner's key instead of the signed-in
7
+ * plan, and an agent's variables would make the reader's own runs look like that agent's.
8
+ */
9
+ const WITHHELD = ["ANTHROPIC_API_KEY", "OPENAI_API_KEY", "CLAUDECODE", "AI_AGENT", "MEMO_MCP_CLIENT"];
10
+ export const readerEnv = (env) => Object.fromEntries(Object.entries(env).filter(([name]) => !WITHHELD.includes(name)));
11
+ /** Runs a reader's program to its end; `undefined` when it is not installed. */
12
+ export const runProgram = (program, args, { env, cwd, stdin, signal }) => new Promise((resolve, reject) => {
13
+ const child = spawn(program, args, { env: readerEnv(env), cwd, stdio: ["pipe", "pipe", "pipe"], signal });
14
+ const out = [];
15
+ const err = [];
16
+ let bytes = 0;
17
+ const timer = setTimeout(() => child.kill("SIGTERM"), TIMEOUT_MS);
18
+ const collect = (into) => (chunk) => {
19
+ bytes += chunk.byteLength;
20
+ if (bytes > MAX_OUTPUT)
21
+ child.kill("SIGTERM");
22
+ else
23
+ into.push(chunk);
24
+ };
25
+ child.stdout.on("data", collect(out));
26
+ child.stderr.on("data", collect(err));
27
+ child.on("error", (error) => {
28
+ clearTimeout(timer);
29
+ if (error.code === "ENOENT")
30
+ resolve(undefined);
31
+ else if (error.name === "AbortError")
32
+ reject(new CliError("cancelled", `${program} was stopped`));
33
+ else
34
+ reject(error);
35
+ });
36
+ child.on("close", (code, killed) => {
37
+ clearTimeout(timer);
38
+ if (killed === "SIGTERM" && code === null)
39
+ return reject(new CliError("timeout", `${program} gave no answer in time, or too long an answer`, {
40
+ reason: "reader.timeout",
41
+ }));
42
+ resolve({ code, stdout: Buffer.concat(out).toString("utf8"), stderr: Buffer.concat(err).toString("utf8") });
43
+ });
44
+ child.stdin.on("error", () => { });
45
+ child.stdin.end(stdin ?? "");
46
+ });
47
+ /** The first line a program printed, short enough for an answer; never the text it read. */
48
+ export const firstLine = (text) => text.trim().split("\n")[0]?.slice(0, 200) ?? "";
49
+ //# sourceMappingURL=process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/sources/readers/process.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { KeyringStore } from "@wirecat/cli-base";
2
+ /** What a reader needs from the run: its environment, and the network and keyring a test replaces. */
3
+ export interface ReaderContext {
4
+ env: NodeJS.ProcessEnv;
5
+ fetch: typeof fetch;
6
+ keyring?: KeyringStore;
7
+ signal?: AbortSignal;
8
+ }
9
+ export interface ReaderProbe {
10
+ available: boolean;
11
+ signedIn: boolean | null;
12
+ version: string | null;
13
+ /** The models a local reader has; `null` where the reader does not say. */
14
+ models: string[] | null;
15
+ /** Why it cannot read now, with the fix; `null` when it can. */
16
+ problem: string | null;
17
+ }
18
+ export interface ReadRequest {
19
+ system: string;
20
+ prompt: string;
21
+ model: string | null;
22
+ }
23
+ /** One way to have a model read a source. A new reader is one file that exports one of these. */
24
+ export interface Reader {
25
+ id: string;
26
+ title: string;
27
+ provider: string;
28
+ /** The text goes to a service outside this computer. */
29
+ leavesComputer: boolean;
30
+ /** The reader is an agent that could open files of this computer, though memo asks it not to. */
31
+ readsFiles: boolean;
32
+ /** It refuses to read until the owner names a model. */
33
+ needsModel: boolean;
34
+ probe(context: ReaderContext): Promise<ReaderProbe>;
35
+ /** The model's answer as text. */
36
+ read(context: ReaderContext, request: ReadRequest): Promise<string>;
37
+ }
38
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/sources/readers/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,sGAAsG;AACtG,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC,UAAU,CAAA;IACtB,KAAK,EAAE,OAAO,KAAK,CAAA;IACnB,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAA;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,2EAA2E;IAC3E,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;IACvB,gEAAgE;IAChE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED,iGAAiG;AACjG,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,wDAAwD;IACxD,cAAc,EAAE,OAAO,CAAA;IACvB,iGAAiG;IACjG,UAAU,EAAE,OAAO,CAAA;IACnB,wDAAwD;IACxD,UAAU,EAAE,OAAO,CAAA;IACnB,KAAK,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;IACnD,kCAAkC;IAClC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CACpE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/sources/readers/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { type KeyringStore, type Streams } from "@wirecat/cli-base";
2
+ import type { Command } from "commander";
3
+ export interface ReaderDeps {
4
+ /** What the Ollama and API readers reach the network with; a test hands in its own. */
5
+ fetch?: typeof fetch;
6
+ keyring?: KeyringStore;
7
+ }
8
+ export declare const readerCommands: (program: Command, sources: Command, streams: Streams, env: NodeJS.ProcessEnv, deps?: ReaderDeps) => void;
9
+ //# sourceMappingURL=suggest-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suggest-command.d.ts","sourceRoot":"","sources":["../../src/sources/suggest-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,YAAY,EAAE,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAe7E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAqBxC,MAAM,WAAW,UAAU;IACzB,uFAAuF;IACvF,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;IACpB,OAAO,CAAC,EAAE,YAAY,CAAA;CACvB;AAsDD,eAAO,MAAM,cAAc,YAChB,OAAO,WACP,OAAO,WACP,OAAO,OACX,MAAM,CAAC,UAAU,SAChB,UAAU,KACf,IAqMF,CAAA"}