@chozzz/vargos 2.0.3

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 (429) hide show
  1. package/.templates/vargos/agent/extensions/anthropic-custom-payload.patch.json +34 -0
  2. package/.templates/vargos/agent/extensions/anthropic-custom-payload.ts +74 -0
  3. package/.templates/vargos/agent/mcp.json +9 -0
  4. package/.templates/vargos/agent/skills/skill-creator/SKILL.md +77 -0
  5. package/.templates/vargos/agent/skills/token-capture/SKILL.md +33 -0
  6. package/.templates/vargos/agent/skills/token-capture/scripts/capture-bearer-token.sh +139 -0
  7. package/.templates/vargos/agents/README +5 -0
  8. package/.templates/vargos/agents/default.md +7 -0
  9. package/.templates/vargos/config.json +1 -0
  10. package/.templates/vargos/cron/heartbeat.md +11 -0
  11. package/.templates/vargos/workspace/AGENTS.md +70 -0
  12. package/.templates/vargos/workspace/HEARTBEAT.md +26 -0
  13. package/.templates/vargos/workspace/MEMORY.md +15 -0
  14. package/.templates/vargos/workspace/SOUL.md +51 -0
  15. package/.templates/vargos/workspace/TOOLS.md +36 -0
  16. package/CHANGELOG.md +23 -0
  17. package/CODE_OF_CONDUCT.md +47 -0
  18. package/CONTRIBUTING.md +65 -0
  19. package/LICENSE +191 -0
  20. package/README.md +117 -0
  21. package/SECURITY.md +30 -0
  22. package/dist/.templates/vargos/agent/extensions/anthropic-custom-payload.patch.json +34 -0
  23. package/dist/.templates/vargos/agent/extensions/anthropic-custom-payload.ts +74 -0
  24. package/dist/.templates/vargos/agent/mcp.json +9 -0
  25. package/dist/.templates/vargos/agent/skills/skill-creator/SKILL.md +77 -0
  26. package/dist/.templates/vargos/agent/skills/token-capture/SKILL.md +33 -0
  27. package/dist/.templates/vargos/agent/skills/token-capture/scripts/capture-bearer-token.sh +139 -0
  28. package/dist/.templates/vargos/agents/README +5 -0
  29. package/dist/.templates/vargos/agents/default.md +7 -0
  30. package/dist/.templates/vargos/config.json +1 -0
  31. package/dist/.templates/vargos/cron/heartbeat.md +11 -0
  32. package/dist/.templates/vargos/workspace/AGENTS.md +70 -0
  33. package/dist/.templates/vargos/workspace/HEARTBEAT.md +26 -0
  34. package/dist/.templates/vargos/workspace/MEMORY.md +15 -0
  35. package/dist/.templates/vargos/workspace/SOUL.md +51 -0
  36. package/dist/.templates/vargos/workspace/TOOLS.md +36 -0
  37. package/dist/cli/onboard.d.ts +10 -0
  38. package/dist/cli/onboard.d.ts.map +1 -0
  39. package/dist/cli/onboard.js +207 -0
  40. package/dist/cli/onboard.js.map +1 -0
  41. package/dist/cli.d.ts +13 -0
  42. package/dist/cli.d.ts.map +1 -0
  43. package/dist/cli.js +118 -0
  44. package/dist/cli.js.map +1 -0
  45. package/dist/edge/mcp/index.d.ts +33 -0
  46. package/dist/edge/mcp/index.d.ts.map +1 -0
  47. package/dist/edge/mcp/index.js +217 -0
  48. package/dist/edge/mcp/index.js.map +1 -0
  49. package/dist/edge/webhooks/index.d.ts +33 -0
  50. package/dist/edge/webhooks/index.d.ts.map +1 -0
  51. package/dist/edge/webhooks/index.js +231 -0
  52. package/dist/edge/webhooks/index.js.map +1 -0
  53. package/dist/edge/webhooks/transform.d.ts +8 -0
  54. package/dist/edge/webhooks/transform.d.ts.map +1 -0
  55. package/dist/edge/webhooks/transform.js +29 -0
  56. package/dist/edge/webhooks/transform.js.map +1 -0
  57. package/dist/gateway/bus.d.ts +48 -0
  58. package/dist/gateway/bus.d.ts.map +1 -0
  59. package/dist/gateway/bus.js +2 -0
  60. package/dist/gateway/bus.js.map +1 -0
  61. package/dist/gateway/decorators.d.ts +40 -0
  62. package/dist/gateway/decorators.d.ts.map +1 -0
  63. package/dist/gateway/decorators.js +43 -0
  64. package/dist/gateway/decorators.js.map +1 -0
  65. package/dist/gateway/emitter.d.ts +42 -0
  66. package/dist/gateway/emitter.d.ts.map +1 -0
  67. package/dist/gateway/emitter.js +259 -0
  68. package/dist/gateway/emitter.js.map +1 -0
  69. package/dist/gateway/events.d.ts +343 -0
  70. package/dist/gateway/events.d.ts.map +1 -0
  71. package/dist/gateway/events.js +7 -0
  72. package/dist/gateway/events.js.map +1 -0
  73. package/dist/gateway/tcp-server.d.ts +7 -0
  74. package/dist/gateway/tcp-server.d.ts.map +1 -0
  75. package/dist/gateway/tcp-server.js +115 -0
  76. package/dist/gateway/tcp-server.js.map +1 -0
  77. package/dist/index.d.ts +2 -0
  78. package/dist/index.d.ts.map +1 -0
  79. package/dist/index.js +74 -0
  80. package/dist/index.js.map +1 -0
  81. package/dist/lib/async-handlers.d.ts +13 -0
  82. package/dist/lib/async-handlers.d.ts.map +1 -0
  83. package/dist/lib/async-handlers.js +6 -0
  84. package/dist/lib/async-handlers.js.map +1 -0
  85. package/dist/lib/error-store.d.ts +19 -0
  86. package/dist/lib/error-store.d.ts.map +1 -0
  87. package/dist/lib/error-store.js +19 -0
  88. package/dist/lib/error-store.js.map +1 -0
  89. package/dist/lib/error.d.ts +11 -0
  90. package/dist/lib/error.d.ts.map +1 -0
  91. package/dist/lib/error.js +41 -0
  92. package/dist/lib/error.js.map +1 -0
  93. package/dist/lib/frontmatter.d.ts +23 -0
  94. package/dist/lib/frontmatter.d.ts.map +1 -0
  95. package/dist/lib/frontmatter.js +136 -0
  96. package/dist/lib/frontmatter.js.map +1 -0
  97. package/dist/lib/glob.d.ts +14 -0
  98. package/dist/lib/glob.d.ts.map +1 -0
  99. package/dist/lib/glob.js +22 -0
  100. package/dist/lib/glob.js.map +1 -0
  101. package/dist/lib/heartbeat.d.ts +23 -0
  102. package/dist/lib/heartbeat.d.ts.map +1 -0
  103. package/dist/lib/heartbeat.js +62 -0
  104. package/dist/lib/heartbeat.js.map +1 -0
  105. package/dist/lib/html.d.ts +8 -0
  106. package/dist/lib/html.d.ts.map +1 -0
  107. package/dist/lib/html.js +28 -0
  108. package/dist/lib/html.js.map +1 -0
  109. package/dist/lib/http-validate.d.ts +12 -0
  110. package/dist/lib/http-validate.d.ts.map +1 -0
  111. package/dist/lib/http-validate.js +11 -0
  112. package/dist/lib/http-validate.js.map +1 -0
  113. package/dist/lib/id.d.ts +3 -0
  114. package/dist/lib/id.d.ts.map +1 -0
  115. package/dist/lib/id.js +5 -0
  116. package/dist/lib/id.js.map +1 -0
  117. package/dist/lib/logger.d.ts +12 -0
  118. package/dist/lib/logger.d.ts.map +1 -0
  119. package/dist/lib/logger.js +28 -0
  120. package/dist/lib/logger.js.map +1 -0
  121. package/dist/lib/media-transcribe.d.ts +57 -0
  122. package/dist/lib/media-transcribe.d.ts.map +1 -0
  123. package/dist/lib/media-transcribe.js +98 -0
  124. package/dist/lib/media-transcribe.js.map +1 -0
  125. package/dist/lib/media.d.ts +7 -0
  126. package/dist/lib/media.d.ts.map +1 -0
  127. package/dist/lib/media.js +18 -0
  128. package/dist/lib/media.js.map +1 -0
  129. package/dist/lib/mime.d.ts +6 -0
  130. package/dist/lib/mime.d.ts.map +1 -0
  131. package/dist/lib/mime.js +71 -0
  132. package/dist/lib/mime.js.map +1 -0
  133. package/dist/lib/paginate.d.ts +3 -0
  134. package/dist/lib/paginate.d.ts.map +1 -0
  135. package/dist/lib/paginate.js +5 -0
  136. package/dist/lib/paginate.js.map +1 -0
  137. package/dist/lib/paths.d.ts +14 -0
  138. package/dist/lib/paths.d.ts.map +1 -0
  139. package/dist/lib/paths.js +29 -0
  140. package/dist/lib/paths.js.map +1 -0
  141. package/dist/lib/provider-loader.d.ts +10 -0
  142. package/dist/lib/provider-loader.d.ts.map +1 -0
  143. package/dist/lib/provider-loader.js +24 -0
  144. package/dist/lib/provider-loader.js.map +1 -0
  145. package/dist/lib/retry.d.ts +20 -0
  146. package/dist/lib/retry.d.ts.map +1 -0
  147. package/dist/lib/retry.js +40 -0
  148. package/dist/lib/retry.js.map +1 -0
  149. package/dist/lib/safe-async.d.ts +27 -0
  150. package/dist/lib/safe-async.d.ts.map +1 -0
  151. package/dist/lib/safe-async.js +38 -0
  152. package/dist/lib/safe-async.js.map +1 -0
  153. package/dist/lib/skills.d.ts +9 -0
  154. package/dist/lib/skills.d.ts.map +1 -0
  155. package/dist/lib/skills.js +15 -0
  156. package/dist/lib/skills.js.map +1 -0
  157. package/dist/lib/sleep.d.ts +6 -0
  158. package/dist/lib/sleep.d.ts.map +1 -0
  159. package/dist/lib/sleep.js +22 -0
  160. package/dist/lib/sleep.js.map +1 -0
  161. package/dist/lib/strip-markdown.d.ts +7 -0
  162. package/dist/lib/strip-markdown.d.ts.map +1 -0
  163. package/dist/lib/strip-markdown.js +32 -0
  164. package/dist/lib/strip-markdown.js.map +1 -0
  165. package/dist/lib/subagent.d.ts +14 -0
  166. package/dist/lib/subagent.d.ts.map +1 -0
  167. package/dist/lib/subagent.js +25 -0
  168. package/dist/lib/subagent.js.map +1 -0
  169. package/dist/lib/templates.d.ts +8 -0
  170. package/dist/lib/templates.d.ts.map +1 -0
  171. package/dist/lib/templates.js +39 -0
  172. package/dist/lib/templates.js.map +1 -0
  173. package/dist/lib/timeout.d.ts +6 -0
  174. package/dist/lib/timeout.d.ts.map +1 -0
  175. package/dist/lib/timeout.js +11 -0
  176. package/dist/lib/timeout.js.map +1 -0
  177. package/dist/lib/truncate.d.ts +11 -0
  178. package/dist/lib/truncate.d.ts.map +1 -0
  179. package/dist/lib/truncate.js +17 -0
  180. package/dist/lib/truncate.js.map +1 -0
  181. package/dist/lib/url-expand.d.ts +22 -0
  182. package/dist/lib/url-expand.d.ts.map +1 -0
  183. package/dist/lib/url-expand.js +74 -0
  184. package/dist/lib/url-expand.js.map +1 -0
  185. package/dist/scripts/migrate-cron-sessions.d.ts +10 -0
  186. package/dist/scripts/migrate-cron-sessions.d.ts.map +1 -0
  187. package/dist/scripts/migrate-cron-sessions.js +139 -0
  188. package/dist/scripts/migrate-cron-sessions.js.map +1 -0
  189. package/dist/scripts/seed.d.ts +2 -0
  190. package/dist/scripts/seed.d.ts.map +1 -0
  191. package/dist/scripts/seed.js +4 -0
  192. package/dist/scripts/seed.js.map +1 -0
  193. package/dist/services/agent/directives.d.ts +14 -0
  194. package/dist/services/agent/directives.d.ts.map +1 -0
  195. package/dist/services/agent/directives.js +32 -0
  196. package/dist/services/agent/directives.js.map +1 -0
  197. package/dist/services/agent/index.d.ts +104 -0
  198. package/dist/services/agent/index.d.ts.map +1 -0
  199. package/dist/services/agent/index.js +534 -0
  200. package/dist/services/agent/index.js.map +1 -0
  201. package/dist/services/agent/persona.d.ts +15 -0
  202. package/dist/services/agent/persona.d.ts.map +1 -0
  203. package/dist/services/agent/persona.js +63 -0
  204. package/dist/services/agent/persona.js.map +1 -0
  205. package/dist/services/agent/prompt-interpolate.d.ts +41 -0
  206. package/dist/services/agent/prompt-interpolate.d.ts.map +1 -0
  207. package/dist/services/agent/prompt-interpolate.js +102 -0
  208. package/dist/services/agent/prompt-interpolate.js.map +1 -0
  209. package/dist/services/agent/schema.d.ts +10 -0
  210. package/dist/services/agent/schema.d.ts.map +1 -0
  211. package/dist/services/agent/schema.js +5 -0
  212. package/dist/services/agent/schema.js.map +1 -0
  213. package/dist/services/agent/tools.d.ts +26 -0
  214. package/dist/services/agent/tools.d.ts.map +1 -0
  215. package/dist/services/agent/tools.js +85 -0
  216. package/dist/services/agent/tools.js.map +1 -0
  217. package/dist/services/channels/base-adapter.d.ts +61 -0
  218. package/dist/services/channels/base-adapter.d.ts.map +1 -0
  219. package/dist/services/channels/base-adapter.js +181 -0
  220. package/dist/services/channels/base-adapter.js.map +1 -0
  221. package/dist/services/channels/contracts.d.ts +75 -0
  222. package/dist/services/channels/contracts.d.ts.map +1 -0
  223. package/dist/services/channels/contracts.js +6 -0
  224. package/dist/services/channels/contracts.js.map +1 -0
  225. package/dist/services/channels/debounce.d.ts +22 -0
  226. package/dist/services/channels/debounce.d.ts.map +1 -0
  227. package/dist/services/channels/debounce.js +53 -0
  228. package/dist/services/channels/debounce.js.map +1 -0
  229. package/dist/services/channels/dedupe.d.ts +19 -0
  230. package/dist/services/channels/dedupe.d.ts.map +1 -0
  231. package/dist/services/channels/dedupe.js +52 -0
  232. package/dist/services/channels/dedupe.js.map +1 -0
  233. package/dist/services/channels/delivery.d.ts +12 -0
  234. package/dist/services/channels/delivery.d.ts.map +1 -0
  235. package/dist/services/channels/delivery.js +53 -0
  236. package/dist/services/channels/delivery.js.map +1 -0
  237. package/dist/services/channels/index.d.ts +53 -0
  238. package/dist/services/channels/index.d.ts.map +1 -0
  239. package/dist/services/channels/index.js +405 -0
  240. package/dist/services/channels/index.js.map +1 -0
  241. package/dist/services/channels/link-expand.d.ts +8 -0
  242. package/dist/services/channels/link-expand.d.ts.map +1 -0
  243. package/dist/services/channels/link-expand.js +28 -0
  244. package/dist/services/channels/link-expand.js.map +1 -0
  245. package/dist/services/channels/media-extract.d.ts +7 -0
  246. package/dist/services/channels/media-extract.d.ts.map +1 -0
  247. package/dist/services/channels/media-extract.js +31 -0
  248. package/dist/services/channels/media-extract.js.map +1 -0
  249. package/dist/services/channels/pipeline.d.ts +29 -0
  250. package/dist/services/channels/pipeline.d.ts.map +1 -0
  251. package/dist/services/channels/pipeline.js +120 -0
  252. package/dist/services/channels/pipeline.js.map +1 -0
  253. package/dist/services/channels/provider-loader.d.ts +7 -0
  254. package/dist/services/channels/provider-loader.d.ts.map +1 -0
  255. package/dist/services/channels/provider-loader.js +13 -0
  256. package/dist/services/channels/provider-loader.js.map +1 -0
  257. package/dist/services/channels/providers/telegram/adapter.d.ts +34 -0
  258. package/dist/services/channels/providers/telegram/adapter.d.ts.map +1 -0
  259. package/dist/services/channels/providers/telegram/adapter.js +278 -0
  260. package/dist/services/channels/providers/telegram/adapter.js.map +1 -0
  261. package/dist/services/channels/providers/telegram/index.d.ts +11 -0
  262. package/dist/services/channels/providers/telegram/index.d.ts.map +1 -0
  263. package/dist/services/channels/providers/telegram/index.js +11 -0
  264. package/dist/services/channels/providers/telegram/index.js.map +1 -0
  265. package/dist/services/channels/providers/telegram/normalizer.d.ts +12 -0
  266. package/dist/services/channels/providers/telegram/normalizer.d.ts.map +1 -0
  267. package/dist/services/channels/providers/telegram/normalizer.js +50 -0
  268. package/dist/services/channels/providers/telegram/normalizer.js.map +1 -0
  269. package/dist/services/channels/providers/telegram/types.d.ts +72 -0
  270. package/dist/services/channels/providers/telegram/types.d.ts.map +1 -0
  271. package/dist/services/channels/providers/telegram/types.js +3 -0
  272. package/dist/services/channels/providers/telegram/types.js.map +1 -0
  273. package/dist/services/channels/providers/whatsapp/adapter.d.ts +36 -0
  274. package/dist/services/channels/providers/whatsapp/adapter.d.ts.map +1 -0
  275. package/dist/services/channels/providers/whatsapp/adapter.js +261 -0
  276. package/dist/services/channels/providers/whatsapp/adapter.js.map +1 -0
  277. package/dist/services/channels/providers/whatsapp/index.d.ts +11 -0
  278. package/dist/services/channels/providers/whatsapp/index.d.ts.map +1 -0
  279. package/dist/services/channels/providers/whatsapp/index.js +11 -0
  280. package/dist/services/channels/providers/whatsapp/index.js.map +1 -0
  281. package/dist/services/channels/providers/whatsapp/normalizer.d.ts +11 -0
  282. package/dist/services/channels/providers/whatsapp/normalizer.d.ts.map +1 -0
  283. package/dist/services/channels/providers/whatsapp/normalizer.js +47 -0
  284. package/dist/services/channels/providers/whatsapp/normalizer.js.map +1 -0
  285. package/dist/services/channels/providers/whatsapp/session.d.ts +9 -0
  286. package/dist/services/channels/providers/whatsapp/session.d.ts.map +1 -0
  287. package/dist/services/channels/providers/whatsapp/session.js +118 -0
  288. package/dist/services/channels/providers/whatsapp/session.js.map +1 -0
  289. package/dist/services/channels/providers/whatsapp/types.d.ts +23 -0
  290. package/dist/services/channels/providers/whatsapp/types.d.ts.map +1 -0
  291. package/dist/services/channels/providers/whatsapp/types.js +3 -0
  292. package/dist/services/channels/providers/whatsapp/types.js.map +1 -0
  293. package/dist/services/channels/reconnect.d.ts +23 -0
  294. package/dist/services/channels/reconnect.d.ts.map +1 -0
  295. package/dist/services/channels/reconnect.js +32 -0
  296. package/dist/services/channels/reconnect.js.map +1 -0
  297. package/dist/services/channels/status-reactions.d.ts +27 -0
  298. package/dist/services/channels/status-reactions.d.ts.map +1 -0
  299. package/dist/services/channels/status-reactions.js +63 -0
  300. package/dist/services/channels/status-reactions.js.map +1 -0
  301. package/dist/services/channels/types.d.ts +16 -0
  302. package/dist/services/channels/types.d.ts.map +1 -0
  303. package/dist/services/channels/types.js +2 -0
  304. package/dist/services/channels/types.js.map +1 -0
  305. package/dist/services/channels/typing-state.d.ts +22 -0
  306. package/dist/services/channels/typing-state.d.ts.map +1 -0
  307. package/dist/services/channels/typing-state.js +88 -0
  308. package/dist/services/channels/typing-state.js.map +1 -0
  309. package/dist/services/config/index.d.ts +2426 -0
  310. package/dist/services/config/index.d.ts.map +1 -0
  311. package/dist/services/config/index.js +232 -0
  312. package/dist/services/config/index.js.map +1 -0
  313. package/dist/services/config/schemas/agent.d.ts +720 -0
  314. package/dist/services/config/schemas/agent.d.ts.map +1 -0
  315. package/dist/services/config/schemas/agent.js +86 -0
  316. package/dist/services/config/schemas/agent.js.map +1 -0
  317. package/dist/services/config/schemas/auth.d.ts +60 -0
  318. package/dist/services/config/schemas/auth.d.ts.map +1 -0
  319. package/dist/services/config/schemas/auth.js +18 -0
  320. package/dist/services/config/schemas/auth.js.map +1 -0
  321. package/dist/services/config/schemas/channels.d.ts +117 -0
  322. package/dist/services/config/schemas/channels.d.ts.map +1 -0
  323. package/dist/services/config/schemas/channels.js +22 -0
  324. package/dist/services/config/schemas/channels.js.map +1 -0
  325. package/dist/services/config/schemas/cron.d.ts +97 -0
  326. package/dist/services/config/schemas/cron.d.ts.map +1 -0
  327. package/dist/services/config/schemas/cron.js +18 -0
  328. package/dist/services/config/schemas/cron.js.map +1 -0
  329. package/dist/services/config/schemas/features.d.ts +43 -0
  330. package/dist/services/config/schemas/features.d.ts.map +1 -0
  331. package/dist/services/config/schemas/features.js +20 -0
  332. package/dist/services/config/schemas/features.js.map +1 -0
  333. package/dist/services/config/schemas/index.d.ts +24 -0
  334. package/dist/services/config/schemas/index.d.ts.map +1 -0
  335. package/dist/services/config/schemas/index.js +24 -0
  336. package/dist/services/config/schemas/index.js.map +1 -0
  337. package/dist/services/config/schemas/mcp.d.ts +31 -0
  338. package/dist/services/config/schemas/mcp.d.ts.map +1 -0
  339. package/dist/services/config/schemas/mcp.js +39 -0
  340. package/dist/services/config/schemas/mcp.js.map +1 -0
  341. package/dist/services/config/schemas/primitives.d.ts +13 -0
  342. package/dist/services/config/schemas/primitives.d.ts.map +1 -0
  343. package/dist/services/config/schemas/primitives.js +17 -0
  344. package/dist/services/config/schemas/primitives.js.map +1 -0
  345. package/dist/services/config/schemas/providers.d.ts +335 -0
  346. package/dist/services/config/schemas/providers.d.ts.map +1 -0
  347. package/dist/services/config/schemas/providers.js +27 -0
  348. package/dist/services/config/schemas/providers.js.map +1 -0
  349. package/dist/services/config/schemas/storage.d.ts +16 -0
  350. package/dist/services/config/schemas/storage.d.ts.map +1 -0
  351. package/dist/services/config/schemas/storage.js +9 -0
  352. package/dist/services/config/schemas/storage.js.map +1 -0
  353. package/dist/services/config/schemas/webhooks.d.ts +25 -0
  354. package/dist/services/config/schemas/webhooks.d.ts.map +1 -0
  355. package/dist/services/config/schemas/webhooks.js +12 -0
  356. package/dist/services/config/schemas/webhooks.js.map +1 -0
  357. package/dist/services/cron/index.d.ts +50 -0
  358. package/dist/services/cron/index.d.ts.map +1 -0
  359. package/dist/services/cron/index.js +460 -0
  360. package/dist/services/cron/index.js.map +1 -0
  361. package/dist/services/log/index.d.ts +14 -0
  362. package/dist/services/log/index.d.ts.map +1 -0
  363. package/dist/services/log/index.js +137 -0
  364. package/dist/services/log/index.js.map +1 -0
  365. package/dist/services/mcp-client/index.d.ts +37 -0
  366. package/dist/services/mcp-client/index.d.ts.map +1 -0
  367. package/dist/services/mcp-client/index.js +258 -0
  368. package/dist/services/mcp-client/index.js.map +1 -0
  369. package/dist/services/media/extract-document.d.ts +8 -0
  370. package/dist/services/media/extract-document.d.ts.map +1 -0
  371. package/dist/services/media/extract-document.js +85 -0
  372. package/dist/services/media/extract-document.js.map +1 -0
  373. package/dist/services/media/index.d.ts +21 -0
  374. package/dist/services/media/index.d.ts.map +1 -0
  375. package/dist/services/media/index.js +116 -0
  376. package/dist/services/media/index.js.map +1 -0
  377. package/dist/services/media/providers/anthropic.d.ts +6 -0
  378. package/dist/services/media/providers/anthropic.d.ts.map +1 -0
  379. package/dist/services/media/providers/anthropic.js +38 -0
  380. package/dist/services/media/providers/anthropic.js.map +1 -0
  381. package/dist/services/media/providers/index.d.ts +6 -0
  382. package/dist/services/media/providers/index.d.ts.map +1 -0
  383. package/dist/services/media/providers/index.js +15 -0
  384. package/dist/services/media/providers/index.js.map +1 -0
  385. package/dist/services/media/providers/openai.d.ts +6 -0
  386. package/dist/services/media/providers/openai.d.ts.map +1 -0
  387. package/dist/services/media/providers/openai.js +48 -0
  388. package/dist/services/media/providers/openai.js.map +1 -0
  389. package/dist/services/media/providers/provider.d.ts +5 -0
  390. package/dist/services/media/providers/provider.d.ts.map +1 -0
  391. package/dist/services/media/providers/provider.js +2 -0
  392. package/dist/services/media/providers/provider.js.map +1 -0
  393. package/dist/services/memory/chunker.d.ts +7 -0
  394. package/dist/services/memory/chunker.d.ts.map +1 -0
  395. package/dist/services/memory/chunker.js +46 -0
  396. package/dist/services/memory/chunker.js.map +1 -0
  397. package/dist/services/memory/context.d.ts +68 -0
  398. package/dist/services/memory/context.d.ts.map +1 -0
  399. package/dist/services/memory/context.js +223 -0
  400. package/dist/services/memory/context.js.map +1 -0
  401. package/dist/services/memory/embedding.d.ts +9 -0
  402. package/dist/services/memory/embedding.d.ts.map +1 -0
  403. package/dist/services/memory/embedding.js +49 -0
  404. package/dist/services/memory/embedding.js.map +1 -0
  405. package/dist/services/memory/index.d.ts +24 -0
  406. package/dist/services/memory/index.d.ts.map +1 -0
  407. package/dist/services/memory/index.js +140 -0
  408. package/dist/services/memory/index.js.map +1 -0
  409. package/dist/services/memory/session-indexer.d.ts +5 -0
  410. package/dist/services/memory/session-indexer.d.ts.map +1 -0
  411. package/dist/services/memory/session-indexer.js +62 -0
  412. package/dist/services/memory/session-indexer.js.map +1 -0
  413. package/dist/services/memory/sqlite-storage.d.ts +23 -0
  414. package/dist/services/memory/sqlite-storage.d.ts.map +1 -0
  415. package/dist/services/memory/sqlite-storage.js +75 -0
  416. package/dist/services/memory/sqlite-storage.js.map +1 -0
  417. package/dist/services/memory/types.d.ts +31 -0
  418. package/dist/services/memory/types.d.ts.map +1 -0
  419. package/dist/services/memory/types.js +2 -0
  420. package/dist/services/memory/types.js.map +1 -0
  421. package/dist/services/web/index.d.ts +9 -0
  422. package/dist/services/web/index.d.ts.map +1 -0
  423. package/dist/services/web/index.js +101 -0
  424. package/dist/services/web/index.js.map +1 -0
  425. package/dist/vitest.config.d.ts +3 -0
  426. package/dist/vitest.config.d.ts.map +1 -0
  427. package/dist/vitest.config.js +9 -0
  428. package/dist/vitest.config.js.map +1 -0
  429. package/package.json +102 -0
@@ -0,0 +1,231 @@
1
+ /**
2
+ * Webhooks edge service — inbound HTTP webhooks that trigger agent runs.
3
+ *
4
+ * Callable: webhook.search
5
+ * Subscribes: agent.onCompleted (delivery to notify targets)
6
+ *
7
+ * Inbound flow: POST /hooks/:id → validate token → transform payload
8
+ * → session create/addMessage → agent.execute → deliver to notify targets
9
+ */
10
+ var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
11
+ var useValue = arguments.length > 2;
12
+ for (var i = 0; i < initializers.length; i++) {
13
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
14
+ }
15
+ return useValue ? value : void 0;
16
+ };
17
+ var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
18
+ function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
19
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
20
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
21
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
22
+ var _, done = false;
23
+ for (var i = decorators.length - 1; i >= 0; i--) {
24
+ var context = {};
25
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
26
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
27
+ context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
28
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
29
+ if (kind === "accessor") {
30
+ if (result === void 0) continue;
31
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
32
+ if (_ = accept(result.get)) descriptor.get = _;
33
+ if (_ = accept(result.set)) descriptor.set = _;
34
+ if (_ = accept(result.init)) initializers.unshift(_);
35
+ }
36
+ else if (_ = accept(result)) {
37
+ if (kind === "field") initializers.unshift(_);
38
+ else descriptor[key] = _;
39
+ }
40
+ }
41
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
42
+ done = true;
43
+ };
44
+ import http from 'node:http';
45
+ import { timingSafeEqual, createHash } from 'node:crypto';
46
+ import { z } from 'zod';
47
+ import { register } from '../../gateway/decorators.js';
48
+ import { createLogger } from '../../lib/logger.js';
49
+ import { toMessage } from '../../lib/error.js';
50
+ import { getDataPaths } from '../../lib/paths.js';
51
+ import { webhookSessionKey, parseSessionKey } from '../../lib/subagent.js';
52
+ import { paginate } from '../../lib/paginate.js';
53
+ import { passthroughTransform, loadTransform } from './transform.js';
54
+ const log = createLogger('webhooks');
55
+ const MAX_BODY = 1024 * 1024; // 1 MB
56
+ const HOOK_ID_RE = /^[a-z0-9_-]+$/i;
57
+ const HTTP_PORT = 9002;
58
+ const HTTP_HOST = '127.0.0.1';
59
+ // ── WebhooksEdge ──────────────────────────────────────────────────────────────
60
+ let WebhooksEdge = (() => {
61
+ let _instanceExtraInitializers = [];
62
+ let _search_decorators;
63
+ return class WebhooksEdge {
64
+ static {
65
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
66
+ _search_decorators = [register('webhook.search', {
67
+ description: 'List registered webhook endpoints.',
68
+ schema: z.object({
69
+ query: z.string().optional(),
70
+ page: z.number(),
71
+ limit: z.number().optional(),
72
+ }),
73
+ })];
74
+ __esDecorate(this, null, _search_decorators, { kind: "method", name: "search", static: false, private: false, access: { has: obj => "search" in obj, get: obj => obj.search }, metadata: _metadata }, null, _instanceExtraInitializers);
75
+ if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
76
+ }
77
+ bus = __runInitializers(this, _instanceExtraInitializers);
78
+ config;
79
+ hooks;
80
+ activeHooks = new Set();
81
+ server = null;
82
+ unsubscribeCompleted;
83
+ constructor(bus, config) {
84
+ this.bus = bus;
85
+ this.config = config;
86
+ this.hooks = new Map(config.webhooks.map(h => [h.id, h]));
87
+ }
88
+ async start() {
89
+ this.unsubscribeCompleted = this.bus.on('agent.onCompleted', (payload) => this.onAgentCompleted(payload));
90
+ await this.startHttp();
91
+ this.bus.bootstrap(this);
92
+ log.info(`started with ${this.hooks.size} webhook(s) on ${HTTP_HOST}:${HTTP_PORT}`);
93
+ }
94
+ async stop() {
95
+ this.unsubscribeCompleted?.();
96
+ await this.stopHttp();
97
+ }
98
+ // ── Callable handler ─────────────────────────────────────────────────────
99
+ async search(params) {
100
+ // Strip tokens — never expose secrets
101
+ const all = Array.from(this.hooks.values()).map(({ id, name, transform, notify }) => ({ id, name, token: '', transform, notify }));
102
+ const filtered = params.query
103
+ ? all.filter(h => h.id.includes(params.query) || h.name.includes(params.query))
104
+ : all;
105
+ return paginate(filtered, params.page, params.limit ?? 20);
106
+ }
107
+ // ── Agent completed handler ───────────────────────────────────────────────
108
+ onAgentCompleted(payload) {
109
+ const parsed = parseSessionKey(payload.sessionKey);
110
+ if (parsed.type !== 'webhook')
111
+ return;
112
+ // webhookSessionKey format: "webhook:<hookId>:<timestamp>"
113
+ const hookId = parsed.id.replace(/:\d+$/, '');
114
+ this.activeHooks.delete(hookId);
115
+ }
116
+ // ── HTTP server ───────────────────────────────────────────────────────────
117
+ startHttp() {
118
+ return new Promise((resolve, reject) => {
119
+ this.server = http.createServer((req, res) => this.handleRequest(req, res));
120
+ this.server.headersTimeout = 10_000;
121
+ this.server.requestTimeout = 30_000;
122
+ this.server.on('error', reject);
123
+ this.server.listen(HTTP_PORT, HTTP_HOST, () => {
124
+ log.info(`http listening on ${HTTP_HOST}:${HTTP_PORT}`);
125
+ resolve();
126
+ });
127
+ });
128
+ }
129
+ stopHttp() {
130
+ const srv = this.server;
131
+ if (!srv)
132
+ return Promise.resolve();
133
+ this.server = null;
134
+ return new Promise(resolve => srv.close(() => resolve()));
135
+ }
136
+ // ── Request handling ──────────────────────────────────────────────────────
137
+ handleRequest(req, res) {
138
+ if (req.method !== 'POST' || !req.url?.startsWith('/hooks/')) {
139
+ res.writeHead(404, { 'Content-Type': 'application/json' });
140
+ res.end(JSON.stringify({ error: 'Not found' }));
141
+ return;
142
+ }
143
+ const hookId = req.url.slice('/hooks/'.length).split('?')[0];
144
+ if (!HOOK_ID_RE.test(hookId)) {
145
+ res.writeHead(400, { 'Content-Type': 'application/json' });
146
+ res.end(JSON.stringify({ error: 'Invalid hook ID' }));
147
+ return;
148
+ }
149
+ const hook = this.hooks.get(hookId);
150
+ if (!hook) {
151
+ res.writeHead(404, { 'Content-Type': 'application/json' });
152
+ res.end(JSON.stringify({ error: 'Unknown hook' }));
153
+ return;
154
+ }
155
+ // Timing-safe comparison (hash prevents length leakage)
156
+ const auth = req.headers.authorization ?? '';
157
+ const expectedHash = createHash('sha256').update(`Bearer ${hook.token}`).digest();
158
+ const authHash = createHash('sha256').update(auth).digest();
159
+ if (!timingSafeEqual(authHash, expectedHash)) {
160
+ res.writeHead(401, { 'Content-Type': 'application/json' });
161
+ res.end(JSON.stringify({ error: 'Unauthorized' }));
162
+ return;
163
+ }
164
+ const chunks = [];
165
+ let size = 0;
166
+ let destroyed = false;
167
+ req.on('error', () => {
168
+ if (!res.writableEnded) {
169
+ res.writeHead(400, { 'Content-Type': 'application/json' });
170
+ res.end(JSON.stringify({ error: 'Request error' }));
171
+ }
172
+ });
173
+ req.on('data', (chunk) => {
174
+ if (destroyed)
175
+ return;
176
+ size += chunk.length;
177
+ if (size > MAX_BODY) {
178
+ destroyed = true;
179
+ req.destroy();
180
+ res.writeHead(413, { 'Content-Type': 'application/json' });
181
+ res.end(JSON.stringify({ error: 'Payload too large' }));
182
+ return;
183
+ }
184
+ chunks.push(chunk);
185
+ });
186
+ req.on('end', () => {
187
+ if (res.writableEnded)
188
+ return;
189
+ // Respond immediately — fire and forget
190
+ res.writeHead(200, { 'Content-Type': 'application/json' });
191
+ res.end(JSON.stringify({ ok: true }));
192
+ let payload;
193
+ try {
194
+ payload = JSON.parse(Buffer.concat(chunks).toString());
195
+ }
196
+ catch {
197
+ payload = {};
198
+ }
199
+ this.fireHook(hook, payload).catch(err => log.error(`fire hook ${hookId}: ${toMessage(err)}`));
200
+ });
201
+ }
202
+ // ── Fire ──────────────────────────────────────────────────────────────────
203
+ async fireHook(hook, payload) {
204
+ const { dataDir } = getDataPaths();
205
+ const task = hook.transform
206
+ ? await loadTransform(hook.transform, dataDir).then(fn => fn(payload))
207
+ : passthroughTransform(payload);
208
+ const sessionKey = webhookSessionKey(hook.id);
209
+ log.info(`fired: ${hook.id} → ${sessionKey}`);
210
+ this.activeHooks.add(hook.id);
211
+ const result = await this.bus.call('agent.execute', { sessionKey, task });
212
+ if (result.response && hook.notify?.length) {
213
+ log.info(`${hook.id} delivering response to ${hook.notify.length} targets`);
214
+ await Promise.all(hook.notify.map(target => this.bus.call('channel.send', {
215
+ sessionKey: target,
216
+ text: result.response,
217
+ fromSessionKey: sessionKey,
218
+ }).catch(err => log.error(`notify send to ${target}: ${toMessage(err)}`))));
219
+ }
220
+ }
221
+ };
222
+ })();
223
+ export { WebhooksEdge };
224
+ // ── Boot ───────────────────────────────────────────────────────────────────────
225
+ export async function boot(bus) {
226
+ const config = await bus.call('config.get', {});
227
+ const svc = new WebhooksEdge(bus, config);
228
+ await svc.start();
229
+ return { stop: () => svc.stop() };
230
+ }
231
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../edge/webhooks/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export type TransformFn = (payload: unknown) => string;
2
+ export declare function passthroughTransform(payload: unknown): string;
3
+ /**
4
+ * Load a transform module. Path must resolve within baseDir.
5
+ * Caches loaded modules to avoid re-importing.
6
+ */
7
+ export declare function loadTransform(modulePath: string, baseDir?: string): Promise<TransformFn>;
8
+ //# sourceMappingURL=transform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../../edge/webhooks/transform.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC;AAIvD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAE7D;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAmB9F"}
@@ -0,0 +1,29 @@
1
+ import path from 'node:path';
2
+ const cache = new Map();
3
+ export function passthroughTransform(payload) {
4
+ return JSON.stringify(payload, null, 2);
5
+ }
6
+ /**
7
+ * Load a transform module. Path must resolve within baseDir.
8
+ * Caches loaded modules to avoid re-importing.
9
+ */
10
+ export async function loadTransform(modulePath, baseDir) {
11
+ const cached = cache.get(modulePath);
12
+ if (cached)
13
+ return cached;
14
+ // Restrict to baseDir (dataDir) when provided
15
+ if (baseDir) {
16
+ const resolved = path.resolve(baseDir, modulePath);
17
+ if (!resolved.startsWith(path.resolve(baseDir))) {
18
+ throw new Error(`Transform path "${modulePath}" escapes data directory`);
19
+ }
20
+ }
21
+ const mod = await import(modulePath);
22
+ const fn = mod.default ?? mod.transform;
23
+ if (typeof fn !== 'function') {
24
+ throw new Error(`Transform module "${modulePath}" must export a function`);
25
+ }
26
+ cache.set(modulePath, fn);
27
+ return fn;
28
+ }
29
+ //# sourceMappingURL=transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../edge/webhooks/transform.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAuB,CAAC;AAE7C,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,UAAkB,EAAE,OAAgB;IACtE,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACrC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,8CAA8C;IAC9C,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,mBAAmB,UAAU,0BAA0B,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,EAAE,GAAgB,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS,CAAC;IACrD,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,qBAAqB,UAAU,0BAA0B,CAAC,CAAC;IAC7E,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC1B,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1,48 @@
1
+ import type { EventMap } from './events.js';
2
+ /** Keys whose EventMap entry is callable ({ params, result }) */
3
+ export type CallableEventKey = {
4
+ [E in keyof EventMap]: EventMap[E] extends {
5
+ params: unknown;
6
+ result: unknown;
7
+ } ? E : never;
8
+ }[keyof EventMap];
9
+ /** Keys whose EventMap entry is a plain payload */
10
+ export type PureEventKey = Exclude<keyof EventMap, CallableEventKey>;
11
+ /** Extract params type from a callable event */
12
+ export type EventParams<E extends CallableEventKey> = EventMap[E] extends {
13
+ params: infer P;
14
+ } ? P : never;
15
+ /** Extract result type from a callable event */
16
+ export type EventResult<E extends CallableEventKey> = EventMap[E] extends {
17
+ result: infer R;
18
+ } ? R : never;
19
+ /**
20
+ * Expected method signature for a handler of event E.
21
+ * Pure event → receives the payload, returns void
22
+ * Callable event → receives params, returns Promise<result>
23
+ */
24
+ export type HandlerOf<E extends keyof EventMap> = E extends CallableEventKey ? (params: EventParams<E>) => Promise<EventResult<E>> : (payload: EventMap[E]) => void | Promise<void>;
25
+ export interface Bus {
26
+ /** Fire a pure event. Callable events cannot be emitted — use call(). */
27
+ emit<E extends PureEventKey>(event: E, payload: EventMap[E]): void;
28
+ /**
29
+ * Subscribe to a pure event (listener only).
30
+ * Handler receives the payload and returns void.
31
+ * Returns an unsubscribe function.
32
+ *
33
+ * Note: Callable events are wired exclusively via @register decorators
34
+ * and registerService(). Direct on() calls for callable events are not supported.
35
+ */
36
+ on<E extends PureEventKey>(event: E, handler: HandlerOf<E>): () => void;
37
+ /** Invoke a callable event and await the result. */
38
+ call<E extends CallableEventKey>(event: E, params: EventParams<E>): Promise<EventResult<E>>;
39
+ /** Check if an event is callable (only @register decorated events). */
40
+ isCallable(eventName: string): boolean;
41
+ /** Bootstrap a service (or the bus itself if no service provided) by wiring all @on and @register decorated methods to this bus. */
42
+ bootstrap(service?: object): void;
43
+ /** Register a new callable tool at runtime (used by services like MCP). Returns unsubscribe function. */
44
+ registerTool(event: string, handler: (params: unknown) => Promise<unknown>, schema: import('./decorators.js').ToolSchema): () => void;
45
+ /** Unregister a callable tool that was previously registered at runtime. */
46
+ unregisterTool(event: string): boolean;
47
+ }
48
+ //# sourceMappingURL=bus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bus.d.ts","sourceRoot":"","sources":["../../gateway/bus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAI5C,iEAAiE;AACjE,MAAM,MAAM,gBAAgB,GAAG;KAC5B,CAAC,IAAI,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG,CAAC,GAAG,KAAK;CAC5F,CAAC,MAAM,QAAQ,CAAC,CAAC;AAElB,mDAAmD;AACnD,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AAErE,gDAAgD;AAChD,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,gBAAgB,IAChD,QAAQ,CAAC,CAAC,CAAC,SAAS;IAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,KAAK,CAAC;AAEtD,gDAAgD;AAChD,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,gBAAgB,IAChD,QAAQ,CAAC,CAAC,CAAC,SAAS;IAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,KAAK,CAAC;AAEtD;;;;GAIG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,MAAM,QAAQ,IAC5C,CAAC,SAAS,gBAAgB,GACtB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GACnD,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAIrD,MAAM,WAAW,GAAG;IAClB,yEAAyE;IACzE,IAAI,CAAC,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAEnE;;;;;;;OAOG;IACH,EAAE,CAAC,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC;IAExE,oDAAoD;IACpD,IAAI,CAAC,CAAC,SAAS,gBAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5F,uEAAuE;IACvE,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAEvC,oIAAoI;IACpI,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAElC,yGAAyG;IACzG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,iBAAiB,EAAE,UAAU,GAAG,MAAM,IAAI,CAAC;IAEtI,4EAA4E;IAC5E,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CACxC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bus.js","sourceRoot":"","sources":["../../gateway/bus.ts"],"names":[],"mappings":""}
@@ -0,0 +1,40 @@
1
+ import { z } from 'zod';
2
+ import type { EventMap } from './events.js';
3
+ import type { HandlerOf } from './bus.js';
4
+ export interface ToolSchema {
5
+ description: string;
6
+ schema: z.ZodTypeAny;
7
+ format?: (result: unknown) => string;
8
+ }
9
+ export declare const HANDLERS: unique symbol;
10
+ export declare const TOOLS: unique symbol;
11
+ export interface HandlerEntry {
12
+ event: keyof EventMap;
13
+ method: string;
14
+ }
15
+ export interface RegisteredEntry extends HandlerEntry {
16
+ schema?: ToolSchema;
17
+ }
18
+ /**
19
+ * Marks a method as a listener for a bus event.
20
+ * Pure event → (payload: EventMap[E]) => void | Promise<void>
21
+ * Callable event (rare) → (params: EventMap[E]['params']) => Promise<EventMap[E]['result']>
22
+ *
23
+ * Use @register instead for callable events that should be agent-accessible.
24
+ * Handlers are wired by bus.bootstrap() at boot.
25
+ */
26
+ export declare function on<E extends keyof EventMap>(event: E): (method: HandlerOf<E>, context: ClassMethodDecoratorContext) => HandlerOf<E>;
27
+ /**
28
+ * Marks a method as a callable event provider.
29
+ *
30
+ * Params:
31
+ * - event: the callable event name (e.g., 'agent.execute')
32
+ * - tool: optional ToolSchema with description and zod schema
33
+ * If omitted, the callable is internal (not exposed as an agent tool)
34
+ *
35
+ * Signature: (params: EventMap[E]['params']) => Promise<EventMap[E]['result']>
36
+ *
37
+ * Handlers are wired by bus.bootstrap() at boot.
38
+ */
39
+ export declare function register<E extends keyof EventMap>(event: E, tool?: ToolSchema): (method: HandlerOf<E>, context: ClassMethodDecoratorContext) => HandlerOf<E>;
40
+ //# sourceMappingURL=decorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../gateway/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAK1C,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAO,CAAC,CAAC,UAAU,CAAC;IAC1B,MAAM,CAAC,EAAM,CAAC,MAAM,EAAE,OAAO,KAAK,MAAM,CAAC;CAC1C;AAID,eAAO,MAAM,QAAQ,eAA4B,CAAC;AAClD,eAAO,MAAM,KAAK,eAA4B,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAG,MAAM,QAAQ,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AASD;;;;;;;GAOG;AACH,wBAAgB,EAAE,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,KAAK,EAAE,CAAC,IAEjD,QAAQ,SAAS,CAAC,CAAC,CAAC,EACpB,SAAS,2BAA2B,KACnC,SAAS,CAAC,CAAC,CAAC,CAOhB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,MAAM,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,UAAU,IAE1E,QAAQ,SAAS,CAAC,CAAC,CAAC,EACpB,SAAS,2BAA2B,KACnC,SAAS,CAAC,CAAC,CAAC,CAOhB"}
@@ -0,0 +1,43 @@
1
+ // ─── Internal metadata storage ────────────────────────────────────────────────
2
+ export const HANDLERS = Symbol('vargos.handlers'); // @on decorated methods
3
+ export const TOOLS = Symbol('vargos.tools'); // @register decorated methods
4
+ // ─── Decorator ────────────────────────────────────────────────────────────────
5
+ /**
6
+ * Marks a method as a listener for a bus event.
7
+ * Pure event → (payload: EventMap[E]) => void | Promise<void>
8
+ * Callable event (rare) → (params: EventMap[E]['params']) => Promise<EventMap[E]['result']>
9
+ *
10
+ * Use @register instead for callable events that should be agent-accessible.
11
+ * Handlers are wired by bus.bootstrap() at boot.
12
+ */
13
+ export function on(event) {
14
+ return function (method, context) {
15
+ context.addInitializer(function () {
16
+ const self = this;
17
+ (self[HANDLERS] ??= []).push({ event, method: String(context.name) });
18
+ });
19
+ return method;
20
+ };
21
+ }
22
+ /**
23
+ * Marks a method as a callable event provider.
24
+ *
25
+ * Params:
26
+ * - event: the callable event name (e.g., 'agent.execute')
27
+ * - tool: optional ToolSchema with description and zod schema
28
+ * If omitted, the callable is internal (not exposed as an agent tool)
29
+ *
30
+ * Signature: (params: EventMap[E]['params']) => Promise<EventMap[E]['result']>
31
+ *
32
+ * Handlers are wired by bus.bootstrap() at boot.
33
+ */
34
+ export function register(event, tool) {
35
+ return function (method, context) {
36
+ context.addInitializer(function () {
37
+ const self = this;
38
+ (self[TOOLS] ??= []).push({ event, method: String(context.name), schema: tool });
39
+ });
40
+ return method;
41
+ };
42
+ }
43
+ //# sourceMappingURL=decorators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../gateway/decorators.ts"],"names":[],"mappings":"AAaA,iFAAiF;AAEjF,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAK,wBAAwB;AAC/E,MAAM,CAAC,MAAM,KAAK,GAAM,MAAM,CAAC,cAAc,CAAC,CAAC,CAAS,8BAA8B;AAgBtF,iFAAiF;AAEjF;;;;;;;GAOG;AACH,MAAM,UAAU,EAAE,CAA2B,KAAQ;IACnD,OAAO,UACL,MAAoB,EACpB,OAAoC;QAEpC,OAAO,CAAC,cAAc,CAAC;YACrB,MAAM,IAAI,GAAG,IAAmB,CAAC;YACjC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,QAAQ,CAA2B,KAAQ,EAAE,IAAiB;IAC5E,OAAO,UACL,MAAoB,EACpB,OAAoC;QAEpC,OAAO,CAAC,cAAc,CAAC;YACrB,MAAM,IAAI,GAAG,IAAmB,CAAC;YACjC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,42 @@
1
+ import type { EventMap, EventMetadata } from './events.js';
2
+ import type { Bus, HandlerOf, CallableEventKey, PureEventKey } from './bus.js';
3
+ import { type ToolSchema } from './decorators.js';
4
+ import type { EventParams, EventResult } from './bus.js';
5
+ /**
6
+ * Predicate: is this event metadata a usable tool?
7
+ * (type === 'tool', has a description, and has a schema)
8
+ */
9
+ export declare function isToolEvent(metadata: EventMetadata): boolean;
10
+ export declare class EventEmitterBus implements Bus {
11
+ private readonly ee;
12
+ private readonly timeoutMs;
13
+ private readonly callableRegistry;
14
+ private readonly handlersRegistry;
15
+ constructor(timeoutMs?: number);
16
+ emit<E extends PureEventKey>(event: E, payload: EventMap[E]): void;
17
+ on<E extends PureEventKey>(event: E, handler: HandlerOf<E>): () => void;
18
+ /** Check if an event is callable (only events registered via @register). */
19
+ isCallable(eventName: string): boolean;
20
+ call<E extends CallableEventKey>(event: E, params: EventParams<E>): Promise<EventResult<E>>;
21
+ /**
22
+ * Reads @on and @register decorator metadata from a service instance (or the bus itself
23
+ * if no service provided) and wires all declared handlers to this bus.
24
+ */
25
+ bootstrap(service?: object): void;
26
+ /**
27
+ * Register a new callable tool at runtime.
28
+ * Used by services (like MCP) to dynamically register tools after boot.
29
+ * Returns an unsubscribe function to remove the tool.
30
+ */
31
+ registerTool(event: string, handler: (params: unknown) => Promise<unknown>, schema: ToolSchema): () => void;
32
+ /**
33
+ * Unregister a callable tool that was previously registered at runtime.
34
+ * Returns true if the tool existed and was removed, false otherwise.
35
+ */
36
+ unregisterTool(event: string): boolean;
37
+ search(params?: EventMap['bus.search']['params']): Promise<EventMetadata[]>;
38
+ inspect(params: EventMap['bus.inspect']['params']): Promise<EventMetadata | null>;
39
+ private registerHandlers;
40
+ private registerTools;
41
+ }
42
+ //# sourceMappingURL=emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../gateway/emitter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3D,OAAO,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC/E,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAiBzD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAE5D;AAED,qBAAa,eAAgB,YAAW,GAAG;IACzC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAsB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiC;IAClE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqB;gBAE1C,SAAS,SAA0B;IAO/C,IAAI,CAAC,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAIlE,EAAE,CAAC,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAKvE,4EAA4E;IAC5E,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAItC,IAAI,CAAC,CAAC,SAAS,gBAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IA0B3F;;;OAGG;IACH,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAgCjC;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,IAAI;IAQ3G;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAchC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IA2C3E,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAkCvF,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,aAAa;CAiBtB"}