@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,49 @@
1
+ import { SessionStore } from './store.js';
2
+ import type { ChatInfo, ChatListQuery, ChatListResult } from './chat-types.js';
3
+ export declare class ChatManager {
4
+ private store;
5
+ constructor(store: SessionStore);
6
+ /**
7
+ * List all known chats from sessions
8
+ */
9
+ listChats(query?: ChatListQuery): Promise<ChatListResult>;
10
+ /**
11
+ * Get a single chat by ID (channel:chatId)
12
+ */
13
+ getChat(chatId: string): Promise<ChatInfo | null>;
14
+ /**
15
+ * Get the most recently active chat
16
+ */
17
+ getLastActiveChat(): Promise<ChatInfo | null>;
18
+ /**
19
+ * Get recent chats for quick selection
20
+ */
21
+ getRecentChats(limit?: number): Promise<ChatInfo[]>;
22
+ /**
23
+ * Resolve a chat reference for cron job delivery
24
+ * Supports:
25
+ * - "last" -> most recently active chat
26
+ * - "channel:chatId" -> specific chat
27
+ * - "telegram:123456" -> specific Telegram chat
28
+ */
29
+ resolveChatForDelivery(ref: string): Promise<{
30
+ channel: string;
31
+ chatId: string;
32
+ chat?: ChatInfo;
33
+ } | null>;
34
+ /**
35
+ * Convert session metadata to chat info
36
+ */
37
+ private sessionToChatInfo;
38
+ /**
39
+ * Build display options for UI dropdown
40
+ */
41
+ buildChatOptions(): Promise<Array<{
42
+ value: string;
43
+ label: string;
44
+ displayName: string;
45
+ channel: string;
46
+ type: string;
47
+ lastActivity: string;
48
+ }>>;
49
+ }
@@ -0,0 +1,167 @@
1
+ // Chat manager - provides chat discovery for cron job configuration
2
+ // Inspired by openclaw's channel metadata design
3
+ import { createLogger } from '../utils/logger.js';
4
+ import { parseSessionKey, buildChatDisplayName, buildChatLabel } from './chat-types.js';
5
+ const log = createLogger('ChatManager');
6
+ export class ChatManager {
7
+ store;
8
+ constructor(store) {
9
+ this.store = store;
10
+ }
11
+ /**
12
+ * List all known chats from sessions
13
+ */
14
+ async listChats(query = {}) {
15
+ // Get all sessions from store
16
+ const sessions = await this.store.list({
17
+ limit: 1000, // Get more to filter
18
+ });
19
+ // Convert sessions to chat info
20
+ let chats = sessions.items.map((session) => this.sessionToChatInfo(session));
21
+ // Remove duplicates (same channel:chatId)
22
+ const seen = new Set();
23
+ chats = chats.filter((chat) => {
24
+ if (seen.has(chat.id)) {
25
+ return false;
26
+ }
27
+ seen.add(chat.id);
28
+ return true;
29
+ });
30
+ // Apply filters
31
+ if (query.channel) {
32
+ chats = chats.filter((c) => c.channel === query.channel);
33
+ }
34
+ if (query.type) {
35
+ chats = chats.filter((c) => c.type === query.type);
36
+ }
37
+ if (query.search) {
38
+ const searchLower = query.search.toLowerCase();
39
+ chats = chats.filter((c) => c.chatId.toLowerCase().includes(searchLower) ||
40
+ c.name?.toLowerCase().includes(searchLower) ||
41
+ c.channel.toLowerCase().includes(searchLower));
42
+ }
43
+ // Apply sorting
44
+ const sortBy = query.sortBy || 'lastActivity';
45
+ const sortOrder = query.sortOrder || 'desc';
46
+ chats.sort((a, b) => {
47
+ let comparison = 0;
48
+ switch (sortBy) {
49
+ case 'lastActivity':
50
+ comparison = new Date(a.lastActivityAt).getTime() - new Date(b.lastActivityAt).getTime();
51
+ break;
52
+ case 'name':
53
+ comparison = (a.name || '').localeCompare(b.name || '');
54
+ break;
55
+ case 'messageCount':
56
+ comparison = a.messageCount - b.messageCount;
57
+ break;
58
+ }
59
+ return sortOrder === 'asc' ? comparison : -comparison;
60
+ });
61
+ // Apply pagination
62
+ const total = chats.length;
63
+ const limit = query.limit || 50;
64
+ const offset = query.offset || 0;
65
+ const items = chats.slice(offset, offset + limit);
66
+ return {
67
+ chats: items,
68
+ total,
69
+ limit,
70
+ offset,
71
+ hasMore: offset + limit < total,
72
+ };
73
+ }
74
+ /**
75
+ * Get a single chat by ID (channel:chatId)
76
+ */
77
+ async getChat(chatId) {
78
+ const result = await this.listChats({ search: chatId, limit: 1 });
79
+ return result.chats.find((c) => c.id === chatId) || null;
80
+ }
81
+ /**
82
+ * Get the most recently active chat
83
+ */
84
+ async getLastActiveChat() {
85
+ const result = await this.listChats({
86
+ sortBy: 'lastActivity',
87
+ sortOrder: 'desc',
88
+ limit: 1,
89
+ });
90
+ return result.chats[0] || null;
91
+ }
92
+ /**
93
+ * Get recent chats for quick selection
94
+ */
95
+ async getRecentChats(limit = 10) {
96
+ const result = await this.listChats({
97
+ sortBy: 'lastActivity',
98
+ sortOrder: 'desc',
99
+ limit,
100
+ });
101
+ return result.chats;
102
+ }
103
+ /**
104
+ * Resolve a chat reference for cron job delivery
105
+ * Supports:
106
+ * - "last" -> most recently active chat
107
+ * - "channel:chatId" -> specific chat
108
+ * - "telegram:123456" -> specific Telegram chat
109
+ */
110
+ async resolveChatForDelivery(ref) {
111
+ // Handle "last" reference
112
+ if (ref === 'last') {
113
+ const chat = await this.getLastActiveChat();
114
+ if (!chat) {
115
+ return null;
116
+ }
117
+ return {
118
+ channel: chat.channel,
119
+ chatId: chat.chatId,
120
+ chat,
121
+ };
122
+ }
123
+ // Parse channel:chatId format
124
+ const parsed = parseSessionKey(ref);
125
+ if (parsed.channel === 'unknown') {
126
+ return null;
127
+ }
128
+ // Try to find the chat for additional metadata
129
+ const chat = await this.getChat(ref);
130
+ return {
131
+ channel: parsed.channel,
132
+ chatId: parsed.chatId,
133
+ chat: chat || undefined,
134
+ };
135
+ }
136
+ /**
137
+ * Convert session metadata to chat info
138
+ */
139
+ sessionToChatInfo(session) {
140
+ const { channel, chatId, type } = parseSessionKey(session.key);
141
+ return {
142
+ id: `${channel}:${chatId}`,
143
+ channel,
144
+ chatId,
145
+ name: session.name,
146
+ type,
147
+ lastActivityAt: session.lastAccessedAt,
148
+ sessionKey: session.key,
149
+ messageCount: session.messageCount,
150
+ };
151
+ }
152
+ /**
153
+ * Build display options for UI dropdown
154
+ */
155
+ async buildChatOptions() {
156
+ const chats = await this.getRecentChats(20);
157
+ return chats.map((chat) => ({
158
+ value: chat.id,
159
+ label: buildChatLabel(chat),
160
+ displayName: buildChatDisplayName(chat),
161
+ channel: chat.channel,
162
+ type: chat.type,
163
+ lastActivity: chat.lastActivityAt,
164
+ }));
165
+ }
166
+ }
167
+ //# sourceMappingURL=chat-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-manager.js","sourceRoot":"","sources":["../../src/session/chat-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ export interface ChatInfo {
2
+ /** Unique identifier: channel:chatId */
3
+ id: string;
4
+ /** Channel type: telegram, whatsapp, etc. */
5
+ channel: string;
6
+ /** Chat ID (numeric or string) */
7
+ chatId: string;
8
+ /** Human-readable name */
9
+ name?: string;
10
+ /** Chat type: direct (DM) or group */
11
+ type: 'direct' | 'group' | 'unknown';
12
+ /** Last activity timestamp */
13
+ lastActivityAt: string;
14
+ /** Session key associated with this chat */
15
+ sessionKey: string;
16
+ /** Number of messages in session */
17
+ messageCount: number;
18
+ }
19
+ export interface ChatListQuery {
20
+ /** Filter by channel */
21
+ channel?: string;
22
+ /** Filter by chat type */
23
+ type?: 'direct' | 'group';
24
+ /** Search by name or chatId */
25
+ search?: string;
26
+ /** Sort by: lastActivity, name, messageCount */
27
+ sortBy?: 'lastActivity' | 'name' | 'messageCount';
28
+ /** Sort order */
29
+ sortOrder?: 'asc' | 'desc';
30
+ /** Limit results */
31
+ limit?: number;
32
+ /** Offset for pagination */
33
+ offset?: number;
34
+ }
35
+ export interface ChatListResult {
36
+ chats: ChatInfo[];
37
+ total: number;
38
+ limit: number;
39
+ offset: number;
40
+ hasMore: boolean;
41
+ }
42
+ /** Channel labels for display */
43
+ export declare const CHANNEL_LABELS: Record<string, string>;
44
+ /** Parse a session key to extract chat information */
45
+ export declare function parseSessionKey(key: string): {
46
+ channel: string;
47
+ chatId: string;
48
+ type: 'direct' | 'group' | 'unknown';
49
+ };
50
+ /** Build a display name for a chat */
51
+ export declare function buildChatDisplayName(chat: ChatInfo): string;
52
+ /** Build a short display label for a chat */
53
+ export declare function buildChatLabel(chat: ChatInfo): string;
@@ -0,0 +1,63 @@
1
+ // Chat types for cron job channel selection
2
+ // Inspired by openclaw's channel metadata design
3
+ /** Channel labels for display */
4
+ export const CHANNEL_LABELS = {
5
+ telegram: 'Telegram',
6
+ whatsapp: 'WhatsApp',
7
+ gateway: 'Web UI',
8
+ cli: 'CLI',
9
+ };
10
+ /** Parse a session key to extract chat information */
11
+ export function parseSessionKey(key) {
12
+ // Format: channel:chatId (e.g., telegram:123456, whatsapp:123456@g.us)
13
+ const parts = key.split(':');
14
+ if (parts.length < 2) {
15
+ return { channel: 'unknown', chatId: key, type: 'unknown' };
16
+ }
17
+ const channel = parts[0];
18
+ const chatId = parts.slice(1).join(':');
19
+ // Detect type based on patterns
20
+ let type = 'unknown';
21
+ if (channel === 'telegram') {
22
+ // Telegram: negative IDs are groups/channels, positive are DMs
23
+ const numId = parseInt(chatId, 10);
24
+ if (!isNaN(numId)) {
25
+ type = numId < 0 ? 'group' : 'direct';
26
+ }
27
+ }
28
+ else if (channel === 'whatsapp') {
29
+ // WhatsApp: ends with @g.us is group, @s.whatsapp.net is DM
30
+ if (chatId.endsWith('@g.us')) {
31
+ type = 'group';
32
+ }
33
+ else if (chatId.endsWith('@s.whatsapp.net') || chatId.endsWith('@c.us')) {
34
+ type = 'direct';
35
+ }
36
+ }
37
+ else if (channel === 'gateway' || channel === 'cli') {
38
+ type = 'direct';
39
+ }
40
+ return { channel, chatId, type };
41
+ }
42
+ /** Build a display name for a chat */
43
+ export function buildChatDisplayName(chat) {
44
+ const channelLabel = CHANNEL_LABELS[chat.channel] || chat.channel;
45
+ if (chat.name) {
46
+ return `${channelLabel} · ${chat.name}`;
47
+ }
48
+ if (chat.type === 'direct') {
49
+ return `${channelLabel} · ${chat.chatId}`;
50
+ }
51
+ return `${channelLabel} · Group ${chat.chatId}`;
52
+ }
53
+ /** Build a short display label for a chat */
54
+ export function buildChatLabel(chat) {
55
+ if (chat.name) {
56
+ return chat.name;
57
+ }
58
+ if (chat.type === 'direct') {
59
+ return 'Direct Message';
60
+ }
61
+ return `Group ${chat.chatId.slice(0, 8)}...`;
62
+ }
63
+ //# sourceMappingURL=chat-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-types.js","sourceRoot":"","sources":["../../src/session/chat-types.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,iDAAiD;AA8CjD,iCAAiC;AACjC,MAAM,CAAC,MAAM,cAAc,GAA2B;IACpD,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,QAAQ;IACjB,GAAG,EAAE,KAAK;CACX,CAAC;AAEF,sDAAsD;AACtD,MAAM,UAAU,eAAe,CAAC,GAAW;IAKzC,uEAAuE;IACvE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE7B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC9D,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAExC,gCAAgC;IAChC,IAAI,IAAI,GAAmC,SAAS,CAAC;IAErD,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,+DAA+D;QAC/D,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAClB,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;QACxC,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAClC,4DAA4D;QAC5D,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,IAAI,GAAG,OAAO,CAAC;QACjB,CAAC;aAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1E,IAAI,GAAG,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtD,IAAI,GAAG,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,oBAAoB,CAAC,IAAc;IACjD,MAAM,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC;IAElE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,GAAG,YAAY,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,GAAG,YAAY,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5C,CAAC;IAED,OAAO,GAAG,YAAY,YAAY,IAAI,CAAC,MAAM,EAAE,CAAC;AAClD,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,cAAc,CAAC,IAAc;IAC3C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,OAAO,SAAS,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { SessionManager } from './manager.js';
2
+ export { SessionStore } from './store.js';
3
+ export { SessionStatus, type SessionMetadata, type SessionDetail, type SessionIndex, type SessionListQuery, type PaginatedResult, type SessionStats, type ExportFormat, type SessionExport, } from './types.js';
4
+ export type { CompactionConfig, CompactionResult } from '../agent/memory/compaction.js';
5
+ export type { WindowConfig } from '../agent/memory/window.js';
@@ -0,0 +1,5 @@
1
+ // Session module exports
2
+ export { SessionManager } from './manager.js';
3
+ export { SessionStore } from './store.js';
4
+ export { SessionStatus, } from './types.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/session/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AAEzB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EACL,aAAa,GASd,MAAM,YAAY,CAAC"}
@@ -0,0 +1,103 @@
1
+ import EventEmitter from 'events';
2
+ import type { SessionMetadata, SessionDetail, SessionListQuery, PaginatedResult, SessionStats, ExportFormat, SessionStatus } from './types.js';
3
+ import type { Message } from '../types/index.js';
4
+ import type { CompactionConfig, CompactionResult } from '../agent/memory/compaction.js';
5
+ import type { WindowConfig } from '../agent/memory/window.js';
6
+ export interface SessionManagerConfig {
7
+ workspace: string;
8
+ windowConfig?: Partial<WindowConfig>;
9
+ compactionConfig?: Partial<CompactionConfig>;
10
+ }
11
+ export declare class SessionManager extends EventEmitter {
12
+ private store;
13
+ constructor(config: SessionManagerConfig);
14
+ initialize(): Promise<void>;
15
+ listSessions(query?: SessionListQuery): Promise<PaginatedResult<SessionMetadata>>;
16
+ /**
17
+ * List all subagent sessions.
18
+ * Subagent sessions have keys starting with 'subagent:'.
19
+ */
20
+ listSubagents(query?: SessionListQuery): Promise<PaginatedResult<SessionMetadata>>;
21
+ getSession(key: string): Promise<SessionDetail | null>;
22
+ getSessionMetadata(key: string): Promise<SessionMetadata | null>;
23
+ deleteSession(key: string): Promise<boolean>;
24
+ deleteSessions(keys: string[]): Promise<{
25
+ success: string[];
26
+ failed: string[];
27
+ }>;
28
+ renameSession(key: string, name: string): Promise<void>;
29
+ tagSession(key: string, tags: string[]): Promise<void>;
30
+ untagSession(key: string, tags: string[]): Promise<void>;
31
+ setSessionTags(key: string, tags: string[]): Promise<void>;
32
+ archiveSession(key: string): Promise<void>;
33
+ unarchiveSession(key: string): Promise<void>;
34
+ pinSession(key: string): Promise<void>;
35
+ unpinSession(key: string): Promise<void>;
36
+ setSessionStatus(key: string, status: SessionStatus): Promise<void>;
37
+ searchSessions(query: string): Promise<SessionMetadata[]>;
38
+ searchInSession(key: string, keyword: string): Promise<Message[]>;
39
+ exportSession(key: string, format: ExportFormat): Promise<string>;
40
+ getStats(): Promise<SessionStats>;
41
+ archiveOldSessions(olderThanDays: number): Promise<number>;
42
+ migrateFromLegacy(): Promise<number>;
43
+ onSessionCreated(callback: (metadata: SessionMetadata) => void): void;
44
+ onSessionUpdated(callback: (data: {
45
+ key: string;
46
+ name?: string;
47
+ tags?: string[];
48
+ }) => void): void;
49
+ onSessionDeleted(callback: (data: {
50
+ key: string;
51
+ }) => void): void;
52
+ onSessionArchived(callback: (data: {
53
+ key: string;
54
+ }) => void): void;
55
+ onSessionRestored(callback: (data: {
56
+ key: string;
57
+ }) => void): void;
58
+ onSessionPinned(callback: (data: {
59
+ key: string;
60
+ }) => void): void;
61
+ onSessionUnpinned(callback: (data: {
62
+ key: string;
63
+ }) => void): void;
64
+ onSessionStatusChanged(callback: (data: {
65
+ key: string;
66
+ status: SessionStatus;
67
+ }) => void): void;
68
+ onSessionAccessed(callback: (data: {
69
+ key: string;
70
+ }) => void): void;
71
+ /** Load messages (MemoryStore API) */
72
+ loadMessages(key: string): Promise<import("@mariozechner/pi-agent-core/dist/types.js").AgentMessage[]>;
73
+ /** Save messages (MemoryStore API) */
74
+ saveMessages(key: string, messages: any[]): Promise<void>;
75
+ /** Delete session (MemoryStore API) */
76
+ delete(key: string): Promise<void>;
77
+ /** Get window stats (MemoryStore API) */
78
+ getWindowStats(messages: any[]): {
79
+ total: number;
80
+ system: number;
81
+ user: number;
82
+ assistant: number;
83
+ tool: number;
84
+ needsTrim: boolean;
85
+ };
86
+ /** Prepare compaction (MemoryStore API) */
87
+ prepareCompaction(key: string, messages: any[], contextWindow: number): {
88
+ needsCompaction: boolean;
89
+ messages: import("@mariozechner/pi-agent-core/dist/types.js").AgentMessage[];
90
+ stats?: ReturnType<any>;
91
+ };
92
+ /** Compact session (MemoryStore API) */
93
+ compact(key: string, messages: any[], contextWindow: number, instructions?: string): Promise<CompactionResult>;
94
+ /** Get compaction stats (MemoryStore API) */
95
+ getCompactionStats(key: string): Promise<{
96
+ compactionCount: number;
97
+ totalTokensBefore: number;
98
+ totalTokensAfter: number;
99
+ lastCompactionAt: any;
100
+ }>;
101
+ /** Estimate token usage (MemoryStore API) */
102
+ estimateTokenUsage(key: string, messages: any[]): Promise<number>;
103
+ }
@@ -0,0 +1,200 @@
1
+ // Session manager - high-level session management service
2
+ import EventEmitter from 'events';
3
+ import { createLogger } from '../utils/logger.js';
4
+ import { SessionStore } from './store.js';
5
+ const log = createLogger('SessionManager');
6
+ export class SessionManager extends EventEmitter {
7
+ store;
8
+ constructor(config) {
9
+ super();
10
+ this.store = new SessionStore(config.workspace, config.windowConfig, config.compactionConfig);
11
+ }
12
+ async initialize() {
13
+ await this.store.initialize();
14
+ this.emit('ready');
15
+ }
16
+ // ========== CRUD Operations ==========
17
+ async listSessions(query) {
18
+ return this.store.list(query);
19
+ }
20
+ /**
21
+ * List all subagent sessions.
22
+ * Subagent sessions have keys starting with 'subagent:'.
23
+ */
24
+ async listSubagents(query = {}) {
25
+ // Filter for subagent sessions only
26
+ const subagentQuery = {
27
+ ...query,
28
+ search: query.search ? `subagent:${query.search}` : 'subagent:',
29
+ };
30
+ const result = await this.store.list(subagentQuery);
31
+ // Additional filtering to ensure only subagent sessions
32
+ const subagentSessions = result.items.filter((s) => s.key.startsWith('subagent:'));
33
+ return {
34
+ ...result,
35
+ items: subagentSessions,
36
+ total: subagentSessions.length,
37
+ hasMore: false, // Simplified for now
38
+ };
39
+ }
40
+ async getSession(key) {
41
+ const session = await this.store.get(key);
42
+ if (session) {
43
+ this.emit('sessionAccessed', { key });
44
+ }
45
+ return session;
46
+ }
47
+ async getSessionMetadata(key) {
48
+ return this.store.getMetadata(key);
49
+ }
50
+ async deleteSession(key) {
51
+ const result = await this.store.delete(key);
52
+ if (result) {
53
+ this.emit('sessionDeleted', { key });
54
+ }
55
+ return result;
56
+ }
57
+ async deleteSessions(keys) {
58
+ const result = await this.store.deleteMany(keys);
59
+ for (const key of result.success) {
60
+ this.emit('sessionDeleted', { key });
61
+ }
62
+ return result;
63
+ }
64
+ // ========== Metadata Updates ==========
65
+ async renameSession(key, name) {
66
+ await this.store.updateMetadata(key, { name });
67
+ this.emit('sessionUpdated', { key, name });
68
+ }
69
+ async tagSession(key, tags) {
70
+ const existing = await this.store.getMetadata(key);
71
+ if (!existing) {
72
+ throw new Error(`Session not found: ${key}`);
73
+ }
74
+ // Merge tags, remove duplicates
75
+ const mergedTags = [...new Set([...existing.tags, ...tags])];
76
+ await this.store.updateMetadata(key, { tags: mergedTags });
77
+ this.emit('sessionUpdated', { key, tags: mergedTags });
78
+ }
79
+ async untagSession(key, tags) {
80
+ const existing = await this.store.getMetadata(key);
81
+ if (!existing) {
82
+ throw new Error(`Session not found: ${key}`);
83
+ }
84
+ const filteredTags = existing.tags.filter((t) => !tags.includes(t));
85
+ await this.store.updateMetadata(key, { tags: filteredTags });
86
+ this.emit('sessionUpdated', { key, tags: filteredTags });
87
+ }
88
+ async setSessionTags(key, tags) {
89
+ await this.store.updateMetadata(key, { tags: [...new Set(tags)] });
90
+ this.emit('sessionUpdated', { key, tags });
91
+ }
92
+ // ========== Status Management ==========
93
+ async archiveSession(key) {
94
+ await this.store.archive(key);
95
+ this.emit('sessionArchived', { key });
96
+ }
97
+ async unarchiveSession(key) {
98
+ await this.store.unarchive(key);
99
+ this.emit('sessionRestored', { key });
100
+ }
101
+ async pinSession(key) {
102
+ await this.store.pin(key);
103
+ this.emit('sessionPinned', { key });
104
+ }
105
+ async unpinSession(key) {
106
+ await this.store.unpin(key);
107
+ this.emit('sessionUnpinned', { key });
108
+ }
109
+ async setSessionStatus(key, status) {
110
+ await this.store.setStatus(key, status);
111
+ this.emit('sessionStatusChanged', { key, status });
112
+ }
113
+ // ========== Search ==========
114
+ async searchSessions(query) {
115
+ const result = await this.store.list({ search: query, limit: 100 });
116
+ return result.items;
117
+ }
118
+ async searchInSession(key, keyword) {
119
+ return this.store.searchInSession(key, keyword);
120
+ }
121
+ // ========== Export/Import ==========
122
+ async exportSession(key, format) {
123
+ return this.store.exportSession(key, format);
124
+ }
125
+ // ========== Statistics ==========
126
+ async getStats() {
127
+ return this.store.getStats();
128
+ }
129
+ // ========== Maintenance ==========
130
+ async archiveOldSessions(olderThanDays) {
131
+ const count = await this.store.archiveOld(olderThanDays);
132
+ log.info({ count, olderThanDays }, 'Archived old sessions');
133
+ return count;
134
+ }
135
+ async migrateFromLegacy() {
136
+ return this.store.migrateFromLegacy();
137
+ }
138
+ // ========== Event Helpers ==========
139
+ onSessionCreated(callback) {
140
+ this.on('sessionCreated', callback);
141
+ }
142
+ onSessionUpdated(callback) {
143
+ this.on('sessionUpdated', callback);
144
+ }
145
+ onSessionDeleted(callback) {
146
+ this.on('sessionDeleted', callback);
147
+ }
148
+ onSessionArchived(callback) {
149
+ this.on('sessionArchived', callback);
150
+ }
151
+ onSessionRestored(callback) {
152
+ this.on('sessionRestored', callback);
153
+ }
154
+ onSessionPinned(callback) {
155
+ this.on('sessionPinned', callback);
156
+ }
157
+ onSessionUnpinned(callback) {
158
+ this.on('sessionUnpinned', callback);
159
+ }
160
+ onSessionStatusChanged(callback) {
161
+ this.on('sessionStatusChanged', callback);
162
+ }
163
+ onSessionAccessed(callback) {
164
+ this.on('sessionAccessed', callback);
165
+ }
166
+ // ========== Legacy Compatibility (MemoryStore API) ==========
167
+ /** Load messages (MemoryStore API) */
168
+ async loadMessages(key) {
169
+ return this.store.loadMessages(key);
170
+ }
171
+ /** Save messages (MemoryStore API) */
172
+ async saveMessages(key, messages) {
173
+ return this.store.saveMessages(key, messages);
174
+ }
175
+ /** Delete session (MemoryStore API) */
176
+ async delete(key) {
177
+ await this.store.delete(key);
178
+ }
179
+ /** Get window stats (MemoryStore API) */
180
+ getWindowStats(messages) {
181
+ return this.store.getWindowStats(messages);
182
+ }
183
+ /** Prepare compaction (MemoryStore API) */
184
+ prepareCompaction(key, messages, contextWindow) {
185
+ return this.store.prepareCompaction(key, messages, contextWindow);
186
+ }
187
+ /** Compact session (MemoryStore API) */
188
+ compact(key, messages, contextWindow, instructions) {
189
+ return this.store.compact(key, messages, contextWindow, instructions);
190
+ }
191
+ /** Get compaction stats (MemoryStore API) */
192
+ async getCompactionStats(key) {
193
+ return this.store.getCompactionStats(key);
194
+ }
195
+ /** Estimate token usage (MemoryStore API) */
196
+ async estimateTokenUsage(key, messages) {
197
+ return this.store.estimateTokens(messages);
198
+ }
199
+ }
200
+ //# sourceMappingURL=manager.js.map