@xopcai/xopcbot 0.1.0

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 (535) hide show
  1. package/README.md +132 -0
  2. package/README.zh-CN.md +130 -0
  3. package/dist/__tests__/core.test.d.ts +1 -0
  4. package/dist/__tests__/core.test.js +72 -0
  5. package/dist/__tests__/core.test.js.map +1 -0
  6. package/dist/agent/fallback/__tests__/index.test.d.ts +1 -0
  7. package/dist/agent/fallback/__tests__/index.test.js +111 -0
  8. package/dist/agent/fallback/__tests__/index.test.js.map +1 -0
  9. package/dist/agent/fallback/candidates.d.ts +23 -0
  10. package/dist/agent/fallback/candidates.js +62 -0
  11. package/dist/agent/fallback/candidates.js.map +1 -0
  12. package/dist/agent/fallback/error.d.ts +22 -0
  13. package/dist/agent/fallback/error.js +27 -0
  14. package/dist/agent/fallback/error.js.map +1 -0
  15. package/dist/agent/fallback/index.d.ts +6 -0
  16. package/dist/agent/fallback/index.js +5 -0
  17. package/dist/agent/fallback/index.js.map +1 -0
  18. package/dist/agent/fallback/reason.d.ts +7 -0
  19. package/dist/agent/fallback/reason.js +78 -0
  20. package/dist/agent/fallback/reason.js.map +1 -0
  21. package/dist/agent/fallback/runner.d.ts +22 -0
  22. package/dist/agent/fallback/runner.js +34 -0
  23. package/dist/agent/fallback/runner.js.map +1 -0
  24. package/dist/agent/helpers.d.ts +38 -0
  25. package/dist/agent/helpers.js +122 -0
  26. package/dist/agent/helpers.js.map +1 -0
  27. package/dist/agent/index.d.ts +7 -0
  28. package/dist/agent/index.js +7 -0
  29. package/dist/agent/index.js.map +1 -0
  30. package/dist/agent/memory/compaction.d.ts +63 -0
  31. package/dist/agent/memory/compaction.js +233 -0
  32. package/dist/agent/memory/compaction.js.map +1 -0
  33. package/dist/agent/memory/window.d.ts +29 -0
  34. package/dist/agent/memory/window.js +64 -0
  35. package/dist/agent/memory/window.js.map +1 -0
  36. package/dist/agent/model-manager.d.ts +80 -0
  37. package/dist/agent/model-manager.js +213 -0
  38. package/dist/agent/model-manager.js.map +1 -0
  39. package/dist/agent/prompt/heartbeat.d.ts +97 -0
  40. package/dist/agent/prompt/heartbeat.js +313 -0
  41. package/dist/agent/prompt/heartbeat.js.map +1 -0
  42. package/dist/agent/prompt/index.d.ts +65 -0
  43. package/dist/agent/prompt/index.js +215 -0
  44. package/dist/agent/prompt/index.js.map +1 -0
  45. package/dist/agent/prompt/memory/index.d.ts +37 -0
  46. package/dist/agent/prompt/memory/index.js +241 -0
  47. package/dist/agent/prompt/memory/index.js.map +1 -0
  48. package/dist/agent/prompt/modes.d.ts +44 -0
  49. package/dist/agent/prompt/modes.js +167 -0
  50. package/dist/agent/prompt/modes.js.map +1 -0
  51. package/dist/agent/prompt/safety.d.ts +88 -0
  52. package/dist/agent/prompt/safety.js +290 -0
  53. package/dist/agent/prompt/safety.js.map +1 -0
  54. package/dist/agent/service.d.ts +91 -0
  55. package/dist/agent/service.js +641 -0
  56. package/dist/agent/service.js.map +1 -0
  57. package/dist/agent/session-tracker.d.ts +73 -0
  58. package/dist/agent/session-tracker.js +137 -0
  59. package/dist/agent/session-tracker.js.map +1 -0
  60. package/dist/agent/skills/__tests__/test-framework.test.d.ts +4 -0
  61. package/dist/agent/skills/__tests__/test-framework.test.js +343 -0
  62. package/dist/agent/skills/__tests__/test-framework.test.js.map +1 -0
  63. package/dist/agent/skills/config.d.ts +58 -0
  64. package/dist/agent/skills/config.js +212 -0
  65. package/dist/agent/skills/config.js.map +1 -0
  66. package/dist/agent/skills/index.d.ts +25 -0
  67. package/dist/agent/skills/index.js +349 -0
  68. package/dist/agent/skills/index.js.map +1 -0
  69. package/dist/agent/skills/installer.d.ts +38 -0
  70. package/dist/agent/skills/installer.js +352 -0
  71. package/dist/agent/skills/installer.js.map +1 -0
  72. package/dist/agent/skills/scanner.d.ts +32 -0
  73. package/dist/agent/skills/scanner.js +265 -0
  74. package/dist/agent/skills/scanner.js.map +1 -0
  75. package/dist/agent/skills/test-framework.d.ts +107 -0
  76. package/dist/agent/skills/test-framework.js +607 -0
  77. package/dist/agent/skills/test-framework.js.map +1 -0
  78. package/dist/agent/skills/types.d.ts +181 -0
  79. package/dist/agent/skills/types.js +7 -0
  80. package/dist/agent/skills/types.js.map +1 -0
  81. package/dist/agent/skills/watcher.d.ts +37 -0
  82. package/dist/agent/skills/watcher.js +124 -0
  83. package/dist/agent/skills/watcher.js.map +1 -0
  84. package/dist/agent/tools/communication.d.ts +18 -0
  85. package/dist/agent/tools/communication.js +56 -0
  86. package/dist/agent/tools/communication.js.map +1 -0
  87. package/dist/agent/tools/edit-diff.d.ts +21 -0
  88. package/dist/agent/tools/edit-diff.js +69 -0
  89. package/dist/agent/tools/edit-diff.js.map +1 -0
  90. package/dist/agent/tools/edit.d.ts +13 -0
  91. package/dist/agent/tools/edit.js +65 -0
  92. package/dist/agent/tools/edit.js.map +1 -0
  93. package/dist/agent/tools/find.d.ts +24 -0
  94. package/dist/agent/tools/find.js +99 -0
  95. package/dist/agent/tools/find.js.map +1 -0
  96. package/dist/agent/tools/grep.d.ts +33 -0
  97. package/dist/agent/tools/grep.js +183 -0
  98. package/dist/agent/tools/grep.js.map +1 -0
  99. package/dist/agent/tools/index.d.ts +13 -0
  100. package/dist/agent/tools/index.js +18 -0
  101. package/dist/agent/tools/index.js.map +1 -0
  102. package/dist/agent/tools/list-dir.d.ts +6 -0
  103. package/dist/agent/tools/list-dir.js +37 -0
  104. package/dist/agent/tools/list-dir.js.map +1 -0
  105. package/dist/agent/tools/memory-tool.d.ts +14 -0
  106. package/dist/agent/tools/memory-tool.js +81 -0
  107. package/dist/agent/tools/memory-tool.js.map +1 -0
  108. package/dist/agent/tools/path-utils.d.ts +4 -0
  109. package/dist/agent/tools/path-utils.js +13 -0
  110. package/dist/agent/tools/path-utils.js.map +1 -0
  111. package/dist/agent/tools/read.d.ts +7 -0
  112. package/dist/agent/tools/read.js +47 -0
  113. package/dist/agent/tools/read.js.map +1 -0
  114. package/dist/agent/tools/send-media.d.ts +18 -0
  115. package/dist/agent/tools/send-media.js +104 -0
  116. package/dist/agent/tools/send-media.js.map +1 -0
  117. package/dist/agent/tools/shell.d.ts +13 -0
  118. package/dist/agent/tools/shell.js +114 -0
  119. package/dist/agent/tools/shell.js.map +1 -0
  120. package/dist/agent/tools/truncate.d.ts +36 -0
  121. package/dist/agent/tools/truncate.js +98 -0
  122. package/dist/agent/tools/truncate.js.map +1 -0
  123. package/dist/agent/tools/web.d.ts +14 -0
  124. package/dist/agent/tools/web.js +109 -0
  125. package/dist/agent/tools/web.js.map +1 -0
  126. package/dist/agent/tools/write.d.ts +7 -0
  127. package/dist/agent/tools/write.js +35 -0
  128. package/dist/agent/tools/write.js.map +1 -0
  129. package/dist/agent/types.d.ts +8 -0
  130. package/dist/agent/types.js +2 -0
  131. package/dist/agent/types.js.map +1 -0
  132. package/dist/agent/typing.d.ts +9 -0
  133. package/dist/agent/typing.js +32 -0
  134. package/dist/agent/typing.js.map +1 -0
  135. package/dist/auth/index.d.ts +12 -0
  136. package/dist/auth/index.js +14 -0
  137. package/dist/auth/index.js.map +1 -0
  138. package/dist/auth/oauth/anthropic.d.ts +7 -0
  139. package/dist/auth/oauth/anthropic.js +89 -0
  140. package/dist/auth/oauth/anthropic.js.map +1 -0
  141. package/dist/auth/oauth/github-copilot.d.ts +8 -0
  142. package/dist/auth/oauth/github-copilot.js +35 -0
  143. package/dist/auth/oauth/github-copilot.js.map +1 -0
  144. package/dist/auth/oauth/google-antigravity.d.ts +7 -0
  145. package/dist/auth/oauth/google-antigravity.js +27 -0
  146. package/dist/auth/oauth/google-antigravity.js.map +1 -0
  147. package/dist/auth/oauth/google-gemini-cli.d.ts +7 -0
  148. package/dist/auth/oauth/google-gemini-cli.js +28 -0
  149. package/dist/auth/oauth/google-gemini-cli.js.map +1 -0
  150. package/dist/auth/oauth/index.d.ts +14 -0
  151. package/dist/auth/oauth/index.js +15 -0
  152. package/dist/auth/oauth/index.js.map +1 -0
  153. package/dist/auth/oauth/kimi.d.ts +8 -0
  154. package/dist/auth/oauth/kimi.js +104 -0
  155. package/dist/auth/oauth/kimi.js.map +1 -0
  156. package/dist/auth/oauth/minimax.d.ts +8 -0
  157. package/dist/auth/oauth/minimax.js +109 -0
  158. package/dist/auth/oauth/minimax.js.map +1 -0
  159. package/dist/auth/oauth/openai-codex.d.ts +7 -0
  160. package/dist/auth/oauth/openai-codex.js +33 -0
  161. package/dist/auth/oauth/openai-codex.js.map +1 -0
  162. package/dist/auth/oauth/pkce.d.ts +8 -0
  163. package/dist/auth/oauth/pkce.js +22 -0
  164. package/dist/auth/oauth/pkce.js.map +1 -0
  165. package/dist/auth/oauth/qwen.d.ts +7 -0
  166. package/dist/auth/oauth/qwen.js +114 -0
  167. package/dist/auth/oauth/qwen.js.map +1 -0
  168. package/dist/auth/oauth/types.d.ts +46 -0
  169. package/dist/auth/oauth/types.js +7 -0
  170. package/dist/auth/oauth/types.js.map +1 -0
  171. package/dist/auth/profiles/index.d.ts +16 -0
  172. package/dist/auth/profiles/index.js +17 -0
  173. package/dist/auth/profiles/index.js.map +1 -0
  174. package/dist/auth/profiles/oauth.d.ts +12 -0
  175. package/dist/auth/profiles/oauth.js +106 -0
  176. package/dist/auth/profiles/oauth.js.map +1 -0
  177. package/dist/auth/profiles/order.d.ts +19 -0
  178. package/dist/auth/profiles/order.js +63 -0
  179. package/dist/auth/profiles/order.js.map +1 -0
  180. package/dist/auth/profiles/profiles.d.ts +27 -0
  181. package/dist/auth/profiles/profiles.js +110 -0
  182. package/dist/auth/profiles/profiles.js.map +1 -0
  183. package/dist/auth/profiles/store.d.ts +17 -0
  184. package/dist/auth/profiles/store.js +234 -0
  185. package/dist/auth/profiles/store.js.map +1 -0
  186. package/dist/auth/profiles/types.d.ts +64 -0
  187. package/dist/auth/profiles/types.js +7 -0
  188. package/dist/auth/profiles/types.js.map +1 -0
  189. package/dist/auth/profiles/usage.d.ts +24 -0
  190. package/dist/auth/profiles/usage.js +99 -0
  191. package/dist/auth/profiles/usage.js.map +1 -0
  192. package/dist/auth/storage.d.ts +99 -0
  193. package/dist/auth/storage.js +315 -0
  194. package/dist/auth/storage.js.map +1 -0
  195. package/dist/bus/index.d.ts +3 -0
  196. package/dist/bus/index.js +2 -0
  197. package/dist/bus/index.js.map +1 -0
  198. package/dist/bus/queue.d.ts +20 -0
  199. package/dist/bus/queue.js +57 -0
  200. package/dist/bus/queue.js.map +1 -0
  201. package/dist/channels/__tests__/access-control.test.d.ts +4 -0
  202. package/dist/channels/__tests__/access-control.test.js +310 -0
  203. package/dist/channels/__tests__/access-control.test.js.map +1 -0
  204. package/dist/channels/__tests__/draft-stream.test.d.ts +4 -0
  205. package/dist/channels/__tests__/draft-stream.test.js +243 -0
  206. package/dist/channels/__tests__/draft-stream.test.js.map +1 -0
  207. package/dist/channels/__tests__/format.test.d.ts +4 -0
  208. package/dist/channels/__tests__/format.test.js +146 -0
  209. package/dist/channels/__tests__/format.test.js.map +1 -0
  210. package/dist/channels/__tests__/manager.test.d.ts +6 -0
  211. package/dist/channels/__tests__/manager.test.js +34 -0
  212. package/dist/channels/__tests__/manager.test.js.map +1 -0
  213. package/dist/channels/__tests__/typing-controller.test.d.ts +4 -0
  214. package/dist/channels/__tests__/typing-controller.test.js +109 -0
  215. package/dist/channels/__tests__/typing-controller.test.js.map +1 -0
  216. package/dist/channels/__tests__/update-offset-store.test.d.ts +7 -0
  217. package/dist/channels/__tests__/update-offset-store.test.js +35 -0
  218. package/dist/channels/__tests__/update-offset-store.test.js.map +1 -0
  219. package/dist/channels/access-control.d.ts +93 -0
  220. package/dist/channels/access-control.js +201 -0
  221. package/dist/channels/access-control.js.map +1 -0
  222. package/dist/channels/draft-stream.d.ts +55 -0
  223. package/dist/channels/draft-stream.js +211 -0
  224. package/dist/channels/draft-stream.js.map +1 -0
  225. package/dist/channels/format.d.ts +38 -0
  226. package/dist/channels/format.js +187 -0
  227. package/dist/channels/format.js.map +1 -0
  228. package/dist/channels/index.d.ts +22 -0
  229. package/dist/channels/index.js +23 -0
  230. package/dist/channels/index.js.map +1 -0
  231. package/dist/channels/manager.d.ts +30 -0
  232. package/dist/channels/manager.js +125 -0
  233. package/dist/channels/manager.js.map +1 -0
  234. package/dist/channels/telegram/__tests__/index.test.d.ts +4 -0
  235. package/dist/channels/telegram/__tests__/index.test.js +153 -0
  236. package/dist/channels/telegram/__tests__/index.test.js.map +1 -0
  237. package/dist/channels/telegram/__tests__/inline-keyboards.test.d.ts +4 -0
  238. package/dist/channels/telegram/__tests__/inline-keyboards.test.js +99 -0
  239. package/dist/channels/telegram/__tests__/inline-keyboards.test.js.map +1 -0
  240. package/dist/channels/telegram/client.d.ts +48 -0
  241. package/dist/channels/telegram/client.js +177 -0
  242. package/dist/channels/telegram/client.js.map +1 -0
  243. package/dist/channels/telegram/command-handler.d.ts +28 -0
  244. package/dist/channels/telegram/command-handler.js +209 -0
  245. package/dist/channels/telegram/command-handler.js.map +1 -0
  246. package/dist/channels/telegram/index.d.ts +8 -0
  247. package/dist/channels/telegram/index.js +9 -0
  248. package/dist/channels/telegram/index.js.map +1 -0
  249. package/dist/channels/telegram/inline-keyboards.d.ts +20 -0
  250. package/dist/channels/telegram/inline-keyboards.js +38 -0
  251. package/dist/channels/telegram/inline-keyboards.js.map +1 -0
  252. package/dist/channels/telegram/plugin.d.ts +33 -0
  253. package/dist/channels/telegram/plugin.js +640 -0
  254. package/dist/channels/telegram/plugin.js.map +1 -0
  255. package/dist/channels/telegram/webhook.d.ts +31 -0
  256. package/dist/channels/telegram/webhook.js +129 -0
  257. package/dist/channels/telegram/webhook.js.map +1 -0
  258. package/dist/channels/types.d.ts +186 -0
  259. package/dist/channels/types.js +7 -0
  260. package/dist/channels/types.js.map +1 -0
  261. package/dist/channels/typing-controller.d.ts +47 -0
  262. package/dist/channels/typing-controller.js +117 -0
  263. package/dist/channels/typing-controller.js.map +1 -0
  264. package/dist/channels/update-offset-store.d.ts +37 -0
  265. package/dist/channels/update-offset-store.js +165 -0
  266. package/dist/channels/update-offset-store.js.map +1 -0
  267. package/dist/channels/whatsapp/index.d.ts +4 -0
  268. package/dist/channels/whatsapp/index.js +5 -0
  269. package/dist/channels/whatsapp/index.js.map +1 -0
  270. package/dist/channels/whatsapp/plugin.d.ts +27 -0
  271. package/dist/channels/whatsapp/plugin.js +66 -0
  272. package/dist/channels/whatsapp/plugin.js.map +1 -0
  273. package/dist/cli/__tests__/registry.test.d.ts +1 -0
  274. package/dist/cli/__tests__/registry.test.js +366 -0
  275. package/dist/cli/__tests__/registry.test.js.map +1 -0
  276. package/dist/cli/commands/agent.d.ts +1 -0
  277. package/dist/cli/commands/agent.js +216 -0
  278. package/dist/cli/commands/agent.js.map +1 -0
  279. package/dist/cli/commands/auth.d.ts +6 -0
  280. package/dist/cli/commands/auth.js +440 -0
  281. package/dist/cli/commands/auth.js.map +1 -0
  282. package/dist/cli/commands/config.d.ts +1 -0
  283. package/dist/cli/commands/config.js +135 -0
  284. package/dist/cli/commands/config.js.map +1 -0
  285. package/dist/cli/commands/configure.d.ts +1 -0
  286. package/dist/cli/commands/configure.js +173 -0
  287. package/dist/cli/commands/configure.js.map +1 -0
  288. package/dist/cli/commands/cron.d.ts +1 -0
  289. package/dist/cli/commands/cron.js +81 -0
  290. package/dist/cli/commands/cron.js.map +1 -0
  291. package/dist/cli/commands/gateway.d.ts +1 -0
  292. package/dist/cli/commands/gateway.js +91 -0
  293. package/dist/cli/commands/gateway.js.map +1 -0
  294. package/dist/cli/commands/index.d.ts +0 -0
  295. package/dist/cli/commands/index.js +2 -0
  296. package/dist/cli/commands/index.js.map +1 -0
  297. package/dist/cli/commands/models.d.ts +1 -0
  298. package/dist/cli/commands/models.js +79 -0
  299. package/dist/cli/commands/models.js.map +1 -0
  300. package/dist/cli/commands/onboard.d.ts +1 -0
  301. package/dist/cli/commands/onboard.js +621 -0
  302. package/dist/cli/commands/onboard.js.map +1 -0
  303. package/dist/cli/commands/plugin.d.ts +1 -0
  304. package/dist/cli/commands/plugin.js +341 -0
  305. package/dist/cli/commands/plugin.js.map +1 -0
  306. package/dist/cli/commands/session.d.ts +1 -0
  307. package/dist/cli/commands/session.js +450 -0
  308. package/dist/cli/commands/session.js.map +1 -0
  309. package/dist/cli/commands/skills-test.d.ts +9 -0
  310. package/dist/cli/commands/skills-test.js +195 -0
  311. package/dist/cli/commands/skills-test.js.map +1 -0
  312. package/dist/cli/commands/skills.d.ts +9 -0
  313. package/dist/cli/commands/skills.js +385 -0
  314. package/dist/cli/commands/skills.js.map +1 -0
  315. package/dist/cli/index.d.ts +19 -0
  316. package/dist/cli/index.js +40 -0
  317. package/dist/cli/index.js.map +1 -0
  318. package/dist/cli/registry.d.ts +43 -0
  319. package/dist/cli/registry.js +82 -0
  320. package/dist/cli/registry.js.map +1 -0
  321. package/dist/cli/templates.d.ts +19 -0
  322. package/dist/cli/templates.js +191 -0
  323. package/dist/cli/templates.js.map +1 -0
  324. package/dist/cli/utils/colors.d.ts +13 -0
  325. package/dist/cli/utils/colors.js +16 -0
  326. package/dist/cli/utils/colors.js.map +1 -0
  327. package/dist/config/__tests__/diff.test.d.ts +1 -0
  328. package/dist/config/__tests__/diff.test.js +192 -0
  329. package/dist/config/__tests__/diff.test.js.map +1 -0
  330. package/dist/config/__tests__/loader.test.d.ts +1 -0
  331. package/dist/config/__tests__/loader.test.js +356 -0
  332. package/dist/config/__tests__/loader.test.js.map +1 -0
  333. package/dist/config/__tests__/paths.test.d.ts +1 -0
  334. package/dist/config/__tests__/paths.test.js +192 -0
  335. package/dist/config/__tests__/paths.test.js.map +1 -0
  336. package/dist/config/__tests__/reload.test.d.ts +1 -0
  337. package/dist/config/__tests__/reload.test.js +374 -0
  338. package/dist/config/__tests__/reload.test.js.map +1 -0
  339. package/dist/config/__tests__/rules.test.d.ts +1 -0
  340. package/dist/config/__tests__/rules.test.js +204 -0
  341. package/dist/config/__tests__/rules.test.js.map +1 -0
  342. package/dist/config/__tests__/schema.test.d.ts +1 -0
  343. package/dist/config/__tests__/schema.test.js +672 -0
  344. package/dist/config/__tests__/schema.test.js.map +1 -0
  345. package/dist/config/diff.d.ts +7 -0
  346. package/dist/config/diff.js +46 -0
  347. package/dist/config/diff.js.map +1 -0
  348. package/dist/config/index.d.ts +6 -0
  349. package/dist/config/index.js +7 -0
  350. package/dist/config/index.js.map +1 -0
  351. package/dist/config/loader.d.ts +5 -0
  352. package/dist/config/loader.js +81 -0
  353. package/dist/config/loader.js.map +1 -0
  354. package/dist/config/paths.d.ts +35 -0
  355. package/dist/config/paths.js +79 -0
  356. package/dist/config/paths.js.map +1 -0
  357. package/dist/config/reload.d.ts +78 -0
  358. package/dist/config/reload.js +190 -0
  359. package/dist/config/reload.js.map +1 -0
  360. package/dist/config/rules.d.ts +42 -0
  361. package/dist/config/rules.js +114 -0
  362. package/dist/config/rules.js.map +1 -0
  363. package/dist/config/schema.d.ts +1340 -0
  364. package/dist/config/schema.js +611 -0
  365. package/dist/config/schema.js.map +1 -0
  366. package/dist/cron/executor.d.ts +54 -0
  367. package/dist/cron/executor.js +364 -0
  368. package/dist/cron/executor.js.map +1 -0
  369. package/dist/cron/index.d.ts +5 -0
  370. package/dist/cron/index.js +6 -0
  371. package/dist/cron/index.js.map +1 -0
  372. package/dist/cron/persistence.d.ts +61 -0
  373. package/dist/cron/persistence.js +188 -0
  374. package/dist/cron/persistence.js.map +1 -0
  375. package/dist/cron/service.d.ts +94 -0
  376. package/dist/cron/service.js +382 -0
  377. package/dist/cron/service.js.map +1 -0
  378. package/dist/cron/types.d.ts +119 -0
  379. package/dist/cron/types.js +3 -0
  380. package/dist/cron/types.js.map +1 -0
  381. package/dist/cron/validation.d.ts +144 -0
  382. package/dist/cron/validation.js +113 -0
  383. package/dist/cron/validation.js.map +1 -0
  384. package/dist/errors/__tests__/index.test.d.ts +1 -0
  385. package/dist/errors/__tests__/index.test.js +301 -0
  386. package/dist/errors/__tests__/index.test.js.map +1 -0
  387. package/dist/errors/index.d.ts +114 -0
  388. package/dist/errors/index.js +278 -0
  389. package/dist/errors/index.js.map +1 -0
  390. package/dist/gateway/hono/app.d.ts +7 -0
  391. package/dist/gateway/hono/app.js +668 -0
  392. package/dist/gateway/hono/app.js.map +1 -0
  393. package/dist/gateway/hono/index.d.ts +2 -0
  394. package/dist/gateway/hono/index.js +3 -0
  395. package/dist/gateway/hono/index.js.map +1 -0
  396. package/dist/gateway/hono/middleware/auth.d.ts +18 -0
  397. package/dist/gateway/hono/middleware/auth.js +79 -0
  398. package/dist/gateway/hono/middleware/auth.js.map +1 -0
  399. package/dist/gateway/hono/middleware/logger.d.ts +1 -0
  400. package/dist/gateway/hono/middleware/logger.js +17 -0
  401. package/dist/gateway/hono/middleware/logger.js.map +1 -0
  402. package/dist/gateway/hono/sse.d.ts +55 -0
  403. package/dist/gateway/hono/sse.js +224 -0
  404. package/dist/gateway/hono/sse.js.map +1 -0
  405. package/dist/gateway/index.d.ts +4 -0
  406. package/dist/gateway/index.js +5 -0
  407. package/dist/gateway/index.js.map +1 -0
  408. package/dist/gateway/protocol.d.ts +28 -0
  409. package/dist/gateway/protocol.js +14 -0
  410. package/dist/gateway/protocol.js.map +1 -0
  411. package/dist/gateway/server.d.ts +19 -0
  412. package/dist/gateway/server.js +64 -0
  413. package/dist/gateway/server.js.map +1 -0
  414. package/dist/gateway/service.d.ts +265 -0
  415. package/dist/gateway/service.js +621 -0
  416. package/dist/gateway/service.js.map +1 -0
  417. package/dist/gateway/static/root/assets/main-CfIxL-cL.js +2105 -0
  418. package/dist/gateway/static/root/assets/main-CfIxL-cL.js.map +1 -0
  419. package/dist/gateway/static/root/assets/main-DndcTCgX.css +1 -0
  420. package/dist/gateway/static/root/index.html +116 -0
  421. package/dist/heartbeat/index.d.ts +1 -0
  422. package/dist/heartbeat/index.js +2 -0
  423. package/dist/heartbeat/index.js.map +1 -0
  424. package/dist/heartbeat/service.d.ts +19 -0
  425. package/dist/heartbeat/service.js +61 -0
  426. package/dist/heartbeat/service.js.map +1 -0
  427. package/dist/plugin-sdk/index.d.ts +21 -0
  428. package/dist/plugin-sdk/index.js +12 -0
  429. package/dist/plugin-sdk/index.js.map +1 -0
  430. package/dist/plugins/__tests__/api.test.d.ts +1 -0
  431. package/dist/plugins/__tests__/api.test.js +164 -0
  432. package/dist/plugins/__tests__/api.test.js.map +1 -0
  433. package/dist/plugins/__tests__/hooks.test.d.ts +1 -0
  434. package/dist/plugins/__tests__/hooks.test.js +159 -0
  435. package/dist/plugins/__tests__/hooks.test.js.map +1 -0
  436. package/dist/plugins/__tests__/loader.test.d.ts +1 -0
  437. package/dist/plugins/__tests__/loader.test.js +120 -0
  438. package/dist/plugins/__tests__/loader.test.js.map +1 -0
  439. package/dist/plugins/api.d.ts +41 -0
  440. package/dist/plugins/api.js +131 -0
  441. package/dist/plugins/api.js.map +1 -0
  442. package/dist/plugins/hooks.d.ts +153 -0
  443. package/dist/plugins/hooks.js +172 -0
  444. package/dist/plugins/hooks.js.map +1 -0
  445. package/dist/plugins/index.d.ts +11 -0
  446. package/dist/plugins/index.js +16 -0
  447. package/dist/plugins/index.js.map +1 -0
  448. package/dist/plugins/install.d.ts +59 -0
  449. package/dist/plugins/install.js +324 -0
  450. package/dist/plugins/install.js.map +1 -0
  451. package/dist/plugins/loader.d.ts +84 -0
  452. package/dist/plugins/loader.js +545 -0
  453. package/dist/plugins/loader.js.map +1 -0
  454. package/dist/plugins/types.d.ts +190 -0
  455. package/dist/plugins/types.js +7 -0
  456. package/dist/plugins/types.js.map +1 -0
  457. package/dist/providers/__tests__/registry.test.d.ts +1 -0
  458. package/dist/providers/__tests__/registry.test.js +110 -0
  459. package/dist/providers/__tests__/registry.test.js.map +1 -0
  460. package/dist/providers/api-strategies.d.ts +15 -0
  461. package/dist/providers/api-strategies.js +96 -0
  462. package/dist/providers/api-strategies.js.map +1 -0
  463. package/dist/providers/auto-discovery.d.ts +84 -0
  464. package/dist/providers/auto-discovery.js +236 -0
  465. package/dist/providers/auto-discovery.js.map +1 -0
  466. package/dist/providers/config.d.ts +25 -0
  467. package/dist/providers/config.js +42 -0
  468. package/dist/providers/config.js.map +1 -0
  469. package/dist/providers/index.d.ts +25 -0
  470. package/dist/providers/index.js +55 -0
  471. package/dist/providers/index.js.map +1 -0
  472. package/dist/providers/model-catalog.d.ts +205 -0
  473. package/dist/providers/model-catalog.js +1071 -0
  474. package/dist/providers/model-catalog.js.map +1 -0
  475. package/dist/providers/models-dev-data.d.ts +11 -0
  476. package/dist/providers/models-dev-data.js +1035 -0
  477. package/dist/providers/models-dev-data.js.map +1 -0
  478. package/dist/providers/models-dev.d.ts +30 -0
  479. package/dist/providers/models-dev.js +42 -0
  480. package/dist/providers/models-dev.js.map +1 -0
  481. package/dist/providers/pi-ai.d.ts +62 -0
  482. package/dist/providers/pi-ai.js +221 -0
  483. package/dist/providers/pi-ai.js.map +1 -0
  484. package/dist/providers/provider-catalog.d.ts +173 -0
  485. package/dist/providers/provider-catalog.js +834 -0
  486. package/dist/providers/provider-catalog.js.map +1 -0
  487. package/dist/providers/registry.d.ts +155 -0
  488. package/dist/providers/registry.js +524 -0
  489. package/dist/providers/registry.js.map +1 -0
  490. package/dist/providers/types.d.ts +95 -0
  491. package/dist/providers/types.js +7 -0
  492. package/dist/providers/types.js.map +1 -0
  493. package/dist/session/chat-manager.d.ts +49 -0
  494. package/dist/session/chat-manager.js +167 -0
  495. package/dist/session/chat-manager.js.map +1 -0
  496. package/dist/session/chat-types.d.ts +53 -0
  497. package/dist/session/chat-types.js +63 -0
  498. package/dist/session/chat-types.js.map +1 -0
  499. package/dist/session/index.d.ts +5 -0
  500. package/dist/session/index.js +5 -0
  501. package/dist/session/index.js.map +1 -0
  502. package/dist/session/manager.d.ts +103 -0
  503. package/dist/session/manager.js +200 -0
  504. package/dist/session/manager.js.map +1 -0
  505. package/dist/session/store.d.ts +114 -0
  506. package/dist/session/store.js +687 -0
  507. package/dist/session/store.js.map +1 -0
  508. package/dist/session/types.d.ts +88 -0
  509. package/dist/session/types.js +10 -0
  510. package/dist/session/types.js.map +1 -0
  511. package/dist/types/index.d.ts +177 -0
  512. package/dist/types/index.js +4 -0
  513. package/dist/types/index.js.map +1 -0
  514. package/dist/types/providers.d.ts +67 -0
  515. package/dist/types/providers.js +7 -0
  516. package/dist/types/providers.js.map +1 -0
  517. package/dist/utils/frontmatter.d.ts +17 -0
  518. package/dist/utils/frontmatter.js +104 -0
  519. package/dist/utils/frontmatter.js.map +1 -0
  520. package/dist/utils/helpers.d.ts +5 -0
  521. package/dist/utils/helpers.js +36 -0
  522. package/dist/utils/helpers.js.map +1 -0
  523. package/dist/utils/index.d.ts +2 -0
  524. package/dist/utils/index.js +3 -0
  525. package/dist/utils/index.js.map +1 -0
  526. package/dist/utils/log-store.d.ts +78 -0
  527. package/dist/utils/log-store.js +432 -0
  528. package/dist/utils/log-store.js.map +1 -0
  529. package/dist/utils/logger.d.ts +127 -0
  530. package/dist/utils/logger.js +481 -0
  531. package/dist/utils/logger.js.map +1 -0
  532. package/dist/utils/logger.types.d.ts +152 -0
  533. package/dist/utils/logger.types.js +30 -0
  534. package/dist/utils/logger.types.js.map +1 -0
  535. package/package.json +93 -0
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Log Store - Enhanced File-based Log Storage
3
+ *
4
+ * Features:
5
+ * - Query logs across multiple files with filtering
6
+ * - Support for compressed (.gz) log files
7
+ * - Pagination and sorting
8
+ * - Statistics and analytics
9
+ * - Safe log cleanup with actual deletion
10
+ */
11
+ import type { LogLevel, LogFileMeta, LogQuery, LogStats, LogEntry } from './logger.types.js';
12
+ declare const LOG_DIR: string;
13
+ /**
14
+ * Get all log files (including compressed)
15
+ */
16
+ export declare function getLogFiles(): LogFileMeta[];
17
+ /**
18
+ * Get log file path for a specific date and type
19
+ */
20
+ export declare function getLogPath(date?: Date, type?: 'app' | 'error' | 'audit' | 'access'): string;
21
+ /**
22
+ * Get available log files for a date range
23
+ */
24
+ export declare function getLogFilesForRange(from: Date, to: Date): LogFileMeta[];
25
+ /**
26
+ * Query logs across multiple files
27
+ */
28
+ export declare function queryLogs(query?: LogQuery): Promise<LogEntry[]>;
29
+ /**
30
+ * Get recent logs (convenience method)
31
+ */
32
+ export declare function getRecentLogs(options?: {
33
+ level?: LogLevel;
34
+ limit?: number;
35
+ module?: string;
36
+ }): Promise<LogEntry[]>;
37
+ /**
38
+ * Search logs by keyword
39
+ */
40
+ export declare function searchLogs(keyword: string, options?: {
41
+ from?: string;
42
+ to?: string;
43
+ limit?: number;
44
+ }): Promise<LogEntry[]>;
45
+ /**
46
+ * Get logs for a specific request/session
47
+ */
48
+ export declare function getLogsByContext(contextType: 'requestId' | 'sessionId', contextValue: string, limit?: number): Promise<LogEntry[]>;
49
+ /**
50
+ * Get available log levels from actual log data
51
+ */
52
+ export declare function getLogLevels(): Promise<LogLevel[]>;
53
+ /**
54
+ * Get available modules from log data
55
+ */
56
+ export declare function getLogModules(): Promise<string[]>;
57
+ /**
58
+ * Get log statistics by level (sampled from recent files)
59
+ */
60
+ export declare function getLogStats(): Promise<LogStats>;
61
+ /**
62
+ * Clean old logs (actually deletes files)
63
+ */
64
+ export declare function cleanOldLogs(keepDays?: number): {
65
+ deleted: number;
66
+ freedBytes: number;
67
+ errors: string[];
68
+ };
69
+ /**
70
+ * Clean logs by size (keep total under limit)
71
+ */
72
+ export declare function cleanBySize(maxTotalMB?: number): {
73
+ deleted: number;
74
+ freedBytes: number;
75
+ errors: string[];
76
+ };
77
+ export { LOG_DIR };
78
+ export type { LogEntry, LogQuery, LogFileMeta, LogStats } from './logger.types.js';
@@ -0,0 +1,432 @@
1
+ /**
2
+ * Log Store - Enhanced File-based Log Storage
3
+ *
4
+ * Features:
5
+ * - Query logs across multiple files with filtering
6
+ * - Support for compressed (.gz) log files
7
+ * - Pagination and sorting
8
+ * - Statistics and analytics
9
+ * - Safe log cleanup with actual deletion
10
+ */
11
+ import { existsSync, mkdirSync, readdirSync, statSync, createReadStream, unlinkSync, } from 'fs';
12
+ import { readFile } from 'fs/promises';
13
+ import { join, basename } from 'path';
14
+ import { createInterface } from 'readline';
15
+ import { gunzip } from 'zlib';
16
+ import { promisify } from 'util';
17
+ import { Readable } from 'stream';
18
+ const gunzipAsync = promisify(gunzip);
19
+ // ============================================
20
+ // Configuration
21
+ // ============================================
22
+ const LOG_DIR = process.env.XOPCBOT_LOG_DIR || join(process.env.HOME || '.', '.xopcbot', 'logs');
23
+ function ensureLogDir() {
24
+ if (!existsSync(LOG_DIR)) {
25
+ mkdirSync(LOG_DIR, { recursive: true });
26
+ }
27
+ }
28
+ // ============================================
29
+ // File Management
30
+ // ============================================
31
+ /**
32
+ * Get all log files (including compressed)
33
+ */
34
+ export function getLogFiles() {
35
+ ensureLogDir();
36
+ const files = readdirSync(LOG_DIR)
37
+ .filter(f => f.endsWith('.log') || f.endsWith('.log.gz'))
38
+ .map(f => {
39
+ const filePath = join(LOG_DIR, f);
40
+ const stats = statSync(filePath);
41
+ let type = 'app';
42
+ if (f.includes('error'))
43
+ type = 'error';
44
+ else if (f.includes('audit'))
45
+ type = 'audit';
46
+ else if (f.includes('access'))
47
+ type = 'access';
48
+ return {
49
+ name: f,
50
+ path: filePath,
51
+ size: stats.size,
52
+ created: stats.birthtime.toISOString(),
53
+ modified: stats.mtime.toISOString(),
54
+ type,
55
+ };
56
+ })
57
+ .sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());
58
+ return files;
59
+ }
60
+ /**
61
+ * Get log file path for a specific date and type
62
+ */
63
+ export function getLogPath(date = new Date(), type = 'app') {
64
+ ensureLogDir();
65
+ const dateStr = date.toISOString().split('T')[0];
66
+ return join(LOG_DIR, `${type}-${dateStr}.log`);
67
+ }
68
+ /**
69
+ * Get available log files for a date range
70
+ */
71
+ export function getLogFilesForRange(from, to) {
72
+ const allFiles = getLogFiles();
73
+ return allFiles.filter(f => {
74
+ // Extract date from filename (e.g., app-2024-01-01.log)
75
+ const match = f.name.match(/(\d{4}-\d{2}-\d{2})/);
76
+ if (!match)
77
+ return false;
78
+ const fileDate = new Date(match[1]);
79
+ return fileDate >= from && fileDate <= to;
80
+ });
81
+ }
82
+ // ============================================
83
+ // Log Parsing
84
+ // ============================================
85
+ /**
86
+ * Parse a single log line (JSON format from pino)
87
+ */
88
+ function parseLogLine(line, source, lineNumber) {
89
+ const trimmed = line.trim();
90
+ if (!trimmed)
91
+ return null;
92
+ try {
93
+ // Try JSON format (pino default)
94
+ const parsed = JSON.parse(trimmed);
95
+ // Convert pino numeric level to string (10=trace, 20=debug, 30=info, 40=warn, 50=error, 60=fatal)
96
+ const levelNum = typeof parsed.level === 'number' ? parsed.level : 30;
97
+ const levelMap = {
98
+ 10: 'trace',
99
+ 20: 'debug',
100
+ 30: 'info',
101
+ 40: 'warn',
102
+ 50: 'error',
103
+ 60: 'fatal',
104
+ };
105
+ return {
106
+ timestamp: parsed.time || parsed.timestamp || '',
107
+ level: levelMap[levelNum] || (parsed.level?.toString() || 'info').toLowerCase(),
108
+ message: parsed.msg || parsed.message || '',
109
+ module: parsed.module,
110
+ prefix: parsed.prefix,
111
+ service: parsed.service,
112
+ plugin: parsed.plugin,
113
+ requestId: parsed.requestId,
114
+ sessionId: parsed.sessionId,
115
+ _source: source,
116
+ _lineNumber: lineNumber,
117
+ ...parsed,
118
+ };
119
+ }
120
+ catch {
121
+ // Fallback: try to parse pino's text format
122
+ const match = trimmed.match(/^\[([^\]]+)\]\s+(\w+):\s+(.+)$/);
123
+ if (match) {
124
+ return {
125
+ timestamp: match[1],
126
+ level: match[2].toLowerCase(),
127
+ message: match[3],
128
+ _source: source,
129
+ _lineNumber: lineNumber,
130
+ };
131
+ }
132
+ // Plain text fallback
133
+ return {
134
+ timestamp: new Date().toISOString(),
135
+ level: 'info',
136
+ message: trimmed,
137
+ _source: source,
138
+ _lineNumber: lineNumber,
139
+ };
140
+ }
141
+ }
142
+ // ============================================
143
+ // Streaming
144
+ // ============================================
145
+ /**
146
+ * Create a readable stream for a log file (handles .gz files)
147
+ */
148
+ async function createLogFileStream(filePath) {
149
+ if (filePath.endsWith('.gz')) {
150
+ const compressed = await readFile(filePath);
151
+ const decompressed = await gunzipAsync(compressed);
152
+ return Readable.from(decompressed.toString('utf-8').split('\n'));
153
+ }
154
+ return createReadStream(filePath, { encoding: 'utf-8' });
155
+ }
156
+ /**
157
+ * Stream and filter log entries from a file
158
+ */
159
+ async function* streamLogFile(filePath, query = {}) {
160
+ if (!existsSync(filePath))
161
+ return;
162
+ const fileName = basename(filePath);
163
+ let stream;
164
+ try {
165
+ stream = await createLogFileStream(filePath);
166
+ }
167
+ catch {
168
+ return;
169
+ }
170
+ const rl = createInterface({
171
+ input: stream,
172
+ crlfDelay: Infinity
173
+ });
174
+ let lineNumber = 0;
175
+ try {
176
+ for await (const line of rl) {
177
+ lineNumber++;
178
+ const entry = parseLogLine(line, fileName, lineNumber);
179
+ if (!entry)
180
+ continue;
181
+ // Apply filters
182
+ if (!matchesQuery(entry, query))
183
+ continue;
184
+ yield entry;
185
+ }
186
+ }
187
+ finally {
188
+ rl.close();
189
+ }
190
+ }
191
+ /**
192
+ * Check if a log entry matches the query filters
193
+ */
194
+ function matchesQuery(entry, query) {
195
+ // Filter by levels
196
+ if (query.levels?.length && !query.levels.includes(entry.level)) {
197
+ return false;
198
+ }
199
+ // Filter by time range
200
+ if (query.from) {
201
+ const fromDate = new Date(query.from);
202
+ const entryDate = new Date(entry.timestamp);
203
+ if (entryDate < fromDate)
204
+ return false;
205
+ }
206
+ if (query.to) {
207
+ const toDate = new Date(query.to);
208
+ const entryDate = new Date(entry.timestamp);
209
+ if (entryDate > toDate)
210
+ return false;
211
+ }
212
+ // Filter by keyword (search in message and context fields)
213
+ if (query.q) {
214
+ const keyword = query.q.toLowerCase();
215
+ const searchable = [
216
+ entry.message,
217
+ entry.module,
218
+ entry.prefix,
219
+ entry.service,
220
+ entry.plugin,
221
+ entry.requestId,
222
+ entry.sessionId,
223
+ ]
224
+ .filter(Boolean)
225
+ .map(String)
226
+ .join(' ')
227
+ .toLowerCase();
228
+ if (!searchable.includes(keyword))
229
+ return false;
230
+ }
231
+ // Filter by specific fields
232
+ if (query.module && entry.module !== query.module)
233
+ return false;
234
+ if (query.plugin && entry.plugin !== query.plugin)
235
+ return false;
236
+ if (query.service && entry.service !== query.service)
237
+ return false;
238
+ if (query.requestId && entry.requestId !== query.requestId)
239
+ return false;
240
+ if (query.sessionId && entry.sessionId !== query.sessionId)
241
+ return false;
242
+ return true;
243
+ }
244
+ // ============================================
245
+ // Query API
246
+ // ============================================
247
+ /**
248
+ * Query logs across multiple files
249
+ */
250
+ export async function queryLogs(query = {}) {
251
+ ensureLogDir();
252
+ const results = [];
253
+ const files = getLogFiles();
254
+ // Filter files by date range if specified
255
+ let relevantFiles = files;
256
+ if (query.from || query.to) {
257
+ const fromDate = query.from ? new Date(query.from) : new Date(0);
258
+ const toDate = query.to ? new Date(query.to) : new Date();
259
+ relevantFiles = getLogFilesForRange(fromDate, toDate);
260
+ }
261
+ // Query each file
262
+ for (const file of relevantFiles) {
263
+ for await (const entry of streamLogFile(file.path, query)) {
264
+ results.push(entry);
265
+ // Early exit if limit reached
266
+ const limit = query.limit || 100;
267
+ if (results.length >= limit) {
268
+ break;
269
+ }
270
+ }
271
+ if (query.limit && results.length >= query.limit) {
272
+ break;
273
+ }
274
+ }
275
+ // Sort by timestamp
276
+ const order = query.order || 'desc';
277
+ results.sort((a, b) => {
278
+ const diff = new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime();
279
+ return order === 'desc' ? diff : -diff;
280
+ });
281
+ // Apply offset/limit
282
+ const offset = query.offset || 0;
283
+ const limit = query.limit || 100;
284
+ return results.slice(offset, offset + limit).map(({ _source, _lineNumber, ...rest }) => rest);
285
+ }
286
+ /**
287
+ * Get recent logs (convenience method)
288
+ */
289
+ export async function getRecentLogs(options) {
290
+ return queryLogs({
291
+ levels: options?.level ? [options.level] : undefined,
292
+ limit: options?.limit || 50,
293
+ module: options?.module,
294
+ order: 'desc',
295
+ });
296
+ }
297
+ /**
298
+ * Search logs by keyword
299
+ */
300
+ export async function searchLogs(keyword, options) {
301
+ return queryLogs({
302
+ q: keyword,
303
+ ...options,
304
+ limit: options?.limit || 100,
305
+ });
306
+ }
307
+ /**
308
+ * Get logs for a specific request/session
309
+ */
310
+ export async function getLogsByContext(contextType, contextValue, limit = 100) {
311
+ return queryLogs({
312
+ [contextType]: contextValue,
313
+ limit,
314
+ order: 'asc',
315
+ });
316
+ }
317
+ // ============================================
318
+ // Statistics
319
+ // ============================================
320
+ /**
321
+ * Get available log levels from actual log data
322
+ */
323
+ export async function getLogLevels() {
324
+ const levels = new Set();
325
+ const files = getLogFiles().slice(0, 3); // Check last 3 files
326
+ for (const file of files) {
327
+ for await (const entry of streamLogFile(file.path, { limit: 500 })) {
328
+ levels.add(entry.level);
329
+ }
330
+ }
331
+ return Array.from(levels).sort();
332
+ }
333
+ /**
334
+ * Get available modules from log data
335
+ */
336
+ export async function getLogModules() {
337
+ const modules = new Set();
338
+ const files = getLogFiles().slice(0, 7);
339
+ for (const file of files) {
340
+ for await (const entry of streamLogFile(file.path, { limit: 1000 })) {
341
+ if (entry.module)
342
+ modules.add(entry.module);
343
+ if (entry.prefix)
344
+ modules.add(entry.prefix);
345
+ }
346
+ }
347
+ return Array.from(modules).filter(Boolean).sort();
348
+ }
349
+ /**
350
+ * Get log statistics by level (sampled from recent files)
351
+ */
352
+ export async function getLogStats() {
353
+ const files = getLogFiles();
354
+ // Count by level (sample from recent files)
355
+ const byLevel = {
356
+ trace: 0,
357
+ debug: 0,
358
+ info: 0,
359
+ warn: 0,
360
+ error: 0,
361
+ fatal: 0,
362
+ silent: 0,
363
+ };
364
+ for (const file of files.slice(0, 7)) {
365
+ for await (const entry of streamLogFile(file.path, { limit: 1000 })) {
366
+ if (entry.level in byLevel) {
367
+ byLevel[entry.level]++;
368
+ }
369
+ }
370
+ }
371
+ return { byLevel };
372
+ }
373
+ // ============================================
374
+ // Cleanup
375
+ // ============================================
376
+ /**
377
+ * Clean old logs (actually deletes files)
378
+ */
379
+ export function cleanOldLogs(keepDays = 7) {
380
+ const cutoff = new Date();
381
+ cutoff.setDate(cutoff.getDate() - keepDays);
382
+ let deleted = 0;
383
+ let freedBytes = 0;
384
+ const errors = [];
385
+ const files = getLogFiles();
386
+ for (const file of files) {
387
+ const fileDate = new Date(file.modified);
388
+ if (fileDate < cutoff) {
389
+ try {
390
+ const size = file.size;
391
+ unlinkSync(file.path);
392
+ deleted++;
393
+ freedBytes += size;
394
+ }
395
+ catch (err) {
396
+ errors.push(`Failed to delete ${file.name}: ${err}`);
397
+ }
398
+ }
399
+ }
400
+ return { deleted, freedBytes, errors };
401
+ }
402
+ /**
403
+ * Clean logs by size (keep total under limit)
404
+ */
405
+ export function cleanBySize(maxTotalMB = 500) {
406
+ const maxBytes = maxTotalMB * 1024 * 1024;
407
+ const files = getLogFiles();
408
+ let totalSize = files.reduce((sum, f) => sum + f.size, 0);
409
+ let deleted = 0;
410
+ let freedBytes = 0;
411
+ const errors = [];
412
+ // Delete oldest files until under limit
413
+ for (const file of files.slice().reverse()) {
414
+ if (totalSize <= maxBytes)
415
+ break;
416
+ try {
417
+ unlinkSync(file.path);
418
+ freedBytes += file.size;
419
+ totalSize -= file.size;
420
+ deleted++;
421
+ }
422
+ catch (err) {
423
+ errors.push(`Failed to delete ${file.name}: ${err}`);
424
+ }
425
+ }
426
+ return { deleted, freedBytes, errors };
427
+ }
428
+ // ============================================
429
+ // Exports
430
+ // ============================================
431
+ export { LOG_DIR };
432
+ //# sourceMappingURL=log-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-store.js","sourceRoot":"","sources":["../../src/utils/log-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Logger Module - Optimized Version
3
+ *
4
+ * Centralized logging system using pino with enhanced features:
5
+ * - Contextual logging with requestId/sessionId tracking
6
+ * - Log rotation with automatic cleanup
7
+ * - Sampling for high-frequency debug logs
8
+ * - Async logging with proper flush on shutdown
9
+ * - Unified configuration via XOPCBOT_* environment variables
10
+ *
11
+ * Log Levels (in order of severity):
12
+ * - trace: Most detailed, for development debugging only
13
+ * - debug: Detailed info for troubleshooting (supports sampling)
14
+ * - info: General operational events (startup, shutdown, major state changes)
15
+ * - warn: Unexpected but non-fatal issues
16
+ * - error: Errors that affect functionality
17
+ * - fatal: Critical errors that prevent operation
18
+ */
19
+ import pino from 'pino';
20
+ import type { LogLevel, LogContext, ContextualLogger, LoggerConfig, RotationResult } from './logger.types.js';
21
+ export declare const logger: ContextualLogger;
22
+ export { pino as Pino };
23
+ /**
24
+ * Create a child logger with a specific prefix/context
25
+ */
26
+ export declare function createLogger(prefix: string, context?: LogContext): ContextualLogger;
27
+ /**
28
+ * Create a logger for a specific module/component
29
+ */
30
+ export declare function createModuleLogger(moduleName: string, modulePath?: string): ContextualLogger;
31
+ /**
32
+ * Create a logger for plugins with consistent interface
33
+ */
34
+ export declare function createPluginLogger(pluginName: string): ContextualLogger;
35
+ /**
36
+ * Create a logger for cron services
37
+ */
38
+ export declare function createServiceLogger(serviceId: string): ContextualLogger;
39
+ /**
40
+ * Create a request-scoped logger with tracking ID
41
+ */
42
+ export declare function createRequestLogger(requestId: string, initialContext?: LogContext): ContextualLogger;
43
+ /**
44
+ * Remove request context when done
45
+ */
46
+ export declare function clearRequestContext(requestId: string): void;
47
+ /**
48
+ * Get context for a request ID
49
+ */
50
+ export declare function getRequestContext(requestId: string): LogContext | undefined;
51
+ export { LogLevel };
52
+ export declare function setLogLevel(level: LogLevel): void;
53
+ export declare function getLogLevel(): LogLevel;
54
+ /**
55
+ * Temporarily change log level for a block of code
56
+ */
57
+ export declare function withLogLevel<T>(level: LogLevel, fn: () => T): T;
58
+ /**
59
+ * Rotate logs if they exceed max size
60
+ */
61
+ export declare function rotateLogs(): Promise<RotationResult>;
62
+ /**
63
+ * Clean old logs based on retention policy
64
+ */
65
+ export declare function cleanOldLogs(keepDays?: number): RotationResult;
66
+ /**
67
+ * Get current log directory
68
+ */
69
+ export declare function getLogDir(): string;
70
+ /**
71
+ * Get logger configuration
72
+ */
73
+ export declare function getLoggerConfig(): Readonly<LoggerConfig>;
74
+ /**
75
+ * Register shutdown handler to flush logs
76
+ */
77
+ export declare function registerShutdownHandler(): void;
78
+ /**
79
+ * Check if a log level is enabled
80
+ */
81
+ export declare function isLevelEnabled(level: LogLevel): boolean;
82
+ /**
83
+ * Log with sampling (for high-frequency debug logs)
84
+ */
85
+ export declare function logWithSample(logger: ContextualLogger, level: LogLevel, sampleRate: number, message: string, data?: unknown): void;
86
+ export type { ContextualLogger as Logger, LogContext } from './logger.types.js';
87
+ /**
88
+ * Logging Best Practices:
89
+ *
90
+ * 1. TRACE (development only):
91
+ * - Function entry/exit with parameters
92
+ * - Variable values during execution
93
+ * - Loop iterations and detailed state
94
+ *
95
+ * 2. DEBUG:
96
+ * - Detailed troubleshooting information
97
+ * - Request/response payloads (sanitized)
98
+ * - State transitions and decisions
99
+ * - Use sampling for high-frequency logs
100
+ *
101
+ * 3. INFO (default level):
102
+ * - Service startup/shutdown
103
+ * - Major state transitions
104
+ * - Important business events
105
+ * - Configuration changes
106
+ * - User actions (login, logout, etc.)
107
+ *
108
+ * 4. WARN:
109
+ * - Deprecated feature usage
110
+ * - Recoverable errors with fallback
111
+ * - Performance degradation
112
+ * - Missing optional configuration
113
+ * - Rate limit approaching
114
+ *
115
+ * 5. ERROR:
116
+ * - Failed operations with impact
117
+ * - Unhandled exceptions
118
+ * - Data validation failures
119
+ * - External service failures
120
+ * - Always include error context
121
+ *
122
+ * 6. FATAL:
123
+ * - System cannot continue operating
124
+ * - Critical initialization failure
125
+ * - Data corruption detected
126
+ * - Requires immediate attention
127
+ */