@chozzz/vargos 3.1.5 → 3.2.1

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 (295) hide show
  1. package/CONTRIBUTING.md +2 -3
  2. package/README.md +25 -34
  3. package/dist/.templates/workspace/AGENTS.md +2 -2
  4. package/dist/boot.d.ts +5 -0
  5. package/dist/boot.d.ts.map +1 -1
  6. package/dist/boot.js +62 -87
  7. package/dist/boot.js.map +1 -1
  8. package/dist/cli/channels.d.ts +6 -23
  9. package/dist/cli/channels.d.ts.map +1 -1
  10. package/dist/cli/channels.js +15 -124
  11. package/dist/cli/channels.js.map +1 -1
  12. package/dist/cli/chat.d.ts +6 -0
  13. package/dist/cli/chat.d.ts.map +1 -0
  14. package/dist/cli/chat.js +49 -0
  15. package/dist/cli/chat.js.map +1 -0
  16. package/dist/cli/onboard.d.ts.map +1 -1
  17. package/dist/cli/onboard.js +2 -8
  18. package/dist/cli/onboard.js.map +1 -1
  19. package/dist/cli.d.ts +9 -7
  20. package/dist/cli.d.ts.map +1 -1
  21. package/dist/cli.js +207 -290
  22. package/dist/cli.js.map +1 -1
  23. package/dist/core/bus.d.ts +32 -0
  24. package/dist/core/bus.d.ts.map +1 -0
  25. package/dist/core/bus.js +133 -0
  26. package/dist/core/bus.js.map +1 -0
  27. package/dist/core/cli.d.ts +38 -0
  28. package/dist/core/cli.d.ts.map +1 -0
  29. package/dist/core/cli.js +199 -0
  30. package/dist/core/cli.js.map +1 -0
  31. package/dist/core/errors.d.ts +21 -0
  32. package/dist/core/errors.d.ts.map +1 -0
  33. package/dist/core/errors.js +30 -0
  34. package/dist/core/errors.js.map +1 -0
  35. package/dist/core/loader.d.ts +31 -0
  36. package/dist/core/loader.d.ts.map +1 -0
  37. package/dist/core/loader.js +73 -0
  38. package/dist/core/loader.js.map +1 -0
  39. package/dist/core/local.d.ts +12 -0
  40. package/dist/core/local.d.ts.map +1 -0
  41. package/dist/core/local.js +23 -0
  42. package/dist/core/local.js.map +1 -0
  43. package/dist/core/rpc-server.d.ts +11 -0
  44. package/dist/core/rpc-server.d.ts.map +1 -0
  45. package/dist/core/rpc-server.js +69 -0
  46. package/dist/core/rpc-server.js.map +1 -0
  47. package/dist/core/services.d.ts +8 -0
  48. package/dist/core/services.d.ts.map +1 -0
  49. package/dist/core/services.js +33 -0
  50. package/dist/core/services.js.map +1 -0
  51. package/dist/core/types.d.ts +63 -0
  52. package/dist/core/types.d.ts.map +1 -0
  53. package/dist/core/types.js +2 -0
  54. package/dist/core/types.js.map +1 -0
  55. package/dist/edge/mcp/index.d.ts +11 -11
  56. package/dist/edge/mcp/index.d.ts.map +1 -1
  57. package/dist/edge/mcp/index.js +24 -28
  58. package/dist/edge/mcp/index.js.map +1 -1
  59. package/dist/edge/webhooks/index.d.ts +8 -14
  60. package/dist/edge/webhooks/index.d.ts.map +1 -1
  61. package/dist/edge/webhooks/index.js +140 -194
  62. package/dist/edge/webhooks/index.js.map +1 -1
  63. package/dist/lib/logger.d.ts +2 -3
  64. package/dist/lib/logger.d.ts.map +1 -1
  65. package/dist/lib/logger.js +1 -1
  66. package/dist/lib/logger.js.map +1 -1
  67. package/dist/lib/paginate.d.ts +5 -1
  68. package/dist/lib/paginate.d.ts.map +1 -1
  69. package/dist/lib/retry.js +1 -1
  70. package/dist/lib/retry.js.map +1 -1
  71. package/dist/lib/util.d.ts +16 -0
  72. package/dist/lib/util.d.ts.map +1 -0
  73. package/dist/lib/util.js +63 -0
  74. package/dist/lib/util.js.map +1 -0
  75. package/dist/scripts/verify-core.d.ts +8 -0
  76. package/dist/scripts/verify-core.d.ts.map +1 -0
  77. package/dist/scripts/verify-core.js +191 -0
  78. package/dist/scripts/verify-core.js.map +1 -0
  79. package/dist/services/agent/index.d.ts +14 -18
  80. package/dist/services/agent/index.d.ts.map +1 -1
  81. package/dist/services/agent/index.js +469 -530
  82. package/dist/services/agent/index.js.map +1 -1
  83. package/dist/services/agent/tools.d.ts +3 -3
  84. package/dist/services/agent/tools.d.ts.map +1 -1
  85. package/dist/services/agent/tools.js +11 -19
  86. package/dist/services/agent/tools.js.map +1 -1
  87. package/dist/services/agent/types.d.ts +1 -1
  88. package/dist/services/agent/types.d.ts.map +1 -1
  89. package/dist/services/{channels → channel}/base-adapter.d.ts +5 -6
  90. package/dist/services/channel/base-adapter.d.ts.map +1 -0
  91. package/dist/services/channel/base-adapter.js.map +1 -0
  92. package/dist/services/channel/debounce.d.ts.map +1 -0
  93. package/dist/services/channel/debounce.js.map +1 -0
  94. package/dist/services/channel/dedupe.d.ts.map +1 -0
  95. package/dist/services/channel/dedupe.js.map +1 -0
  96. package/dist/services/channel/delivery.d.ts.map +1 -0
  97. package/dist/services/{channels → channel}/delivery.js +1 -1
  98. package/dist/services/channel/delivery.js.map +1 -0
  99. package/dist/services/{channels → channel}/index.d.ts +14 -17
  100. package/dist/services/channel/index.d.ts.map +1 -0
  101. package/dist/services/channel/index.js +354 -0
  102. package/dist/services/channel/index.js.map +1 -0
  103. package/dist/services/channel/link-expand.d.ts.map +1 -0
  104. package/dist/services/channel/link-expand.js.map +1 -0
  105. package/dist/services/channel/media-paths.d.ts.map +1 -0
  106. package/dist/services/channel/media-paths.js.map +1 -0
  107. package/dist/services/{channels → channel}/pipeline.d.ts +1 -1
  108. package/dist/services/channel/pipeline.d.ts.map +1 -0
  109. package/dist/services/channel/pipeline.js.map +1 -0
  110. package/dist/services/channel/provider-loader.d.ts.map +1 -0
  111. package/dist/services/channel/provider-loader.js.map +1 -0
  112. package/dist/services/channel/providers/telegram/adapter.d.ts.map +1 -0
  113. package/dist/services/{channels → channel}/providers/telegram/adapter.js +1 -1
  114. package/dist/services/channel/providers/telegram/adapter.js.map +1 -0
  115. package/dist/services/channel/providers/telegram/index.d.ts.map +1 -0
  116. package/dist/services/channel/providers/telegram/index.js.map +1 -0
  117. package/dist/services/channel/providers/telegram/normalizer.d.ts.map +1 -0
  118. package/dist/services/channel/providers/telegram/normalizer.js.map +1 -0
  119. package/dist/services/channel/providers/telegram/types.d.ts.map +1 -0
  120. package/dist/services/channel/providers/telegram/types.js.map +1 -0
  121. package/dist/services/channel/providers/whatsapp/adapter.d.ts.map +1 -0
  122. package/dist/services/channel/providers/whatsapp/adapter.js.map +1 -0
  123. package/dist/services/channel/providers/whatsapp/index.d.ts.map +1 -0
  124. package/dist/services/channel/providers/whatsapp/index.js.map +1 -0
  125. package/dist/services/channel/providers/whatsapp/normalizer.d.ts.map +1 -0
  126. package/dist/services/channel/providers/whatsapp/normalizer.js.map +1 -0
  127. package/dist/services/channel/providers/whatsapp/session.d.ts.map +1 -0
  128. package/dist/services/channel/providers/whatsapp/session.js.map +1 -0
  129. package/dist/services/channel/providers/whatsapp/types.d.ts.map +1 -0
  130. package/dist/services/channel/providers/whatsapp/types.js.map +1 -0
  131. package/dist/services/channel/reconnect.d.ts.map +1 -0
  132. package/dist/services/channel/reconnect.js.map +1 -0
  133. package/dist/services/channel/status-reactions.d.ts.map +1 -0
  134. package/dist/services/channel/status-reactions.js.map +1 -0
  135. package/dist/services/{channels → channel}/types.d.ts +1 -1
  136. package/dist/services/channel/types.d.ts.map +1 -0
  137. package/dist/services/channel/types.js.map +1 -0
  138. package/dist/services/channel/typing-state.d.ts.map +1 -0
  139. package/dist/services/channel/typing-state.js.map +1 -0
  140. package/dist/services/config/index.d.ts +45 -46
  141. package/dist/services/config/index.d.ts.map +1 -1
  142. package/dist/services/config/index.js +89 -182
  143. package/dist/services/config/index.js.map +1 -1
  144. package/dist/services/config/schemas/cron.d.ts +3 -3
  145. package/dist/services/config/schemas/providers.d.ts +12 -12
  146. package/dist/services/config/schemas/webhooks.d.ts +2 -2
  147. package/dist/services/cron/index.d.ts +16 -19
  148. package/dist/services/cron/index.d.ts.map +1 -1
  149. package/dist/services/cron/index.js +340 -396
  150. package/dist/services/cron/index.js.map +1 -1
  151. package/dist/services/log/index.d.ts +9 -8
  152. package/dist/services/log/index.d.ts.map +1 -1
  153. package/dist/services/log/index.js +71 -123
  154. package/dist/services/log/index.js.map +1 -1
  155. package/dist/services/{mcp-client → mcp}/index.d.ts +9 -11
  156. package/dist/services/mcp/index.d.ts.map +1 -0
  157. package/dist/services/{mcp-client → mcp}/index.js +19 -35
  158. package/dist/services/mcp/index.js.map +1 -0
  159. package/dist/services/media/index.d.ts +9 -13
  160. package/dist/services/media/index.d.ts.map +1 -1
  161. package/dist/services/media/index.js +53 -105
  162. package/dist/services/media/index.js.map +1 -1
  163. package/dist/services/memory/index.d.ts +12 -18
  164. package/dist/services/memory/index.d.ts.map +1 -1
  165. package/dist/services/memory/index.js +70 -132
  166. package/dist/services/memory/index.js.map +1 -1
  167. package/dist/services/web/index.d.ts +7 -7
  168. package/dist/services/web/index.d.ts.map +1 -1
  169. package/dist/services/web/index.js +41 -86
  170. package/dist/services/web/index.js.map +1 -1
  171. package/package.json +3 -2
  172. package/dist/gateway/bus.d.ts +0 -50
  173. package/dist/gateway/bus.d.ts.map +0 -1
  174. package/dist/gateway/bus.js +0 -2
  175. package/dist/gateway/bus.js.map +0 -1
  176. package/dist/gateway/decorators.d.ts +0 -40
  177. package/dist/gateway/decorators.d.ts.map +0 -1
  178. package/dist/gateway/decorators.js +0 -43
  179. package/dist/gateway/decorators.js.map +0 -1
  180. package/dist/gateway/emitter.d.ts +0 -52
  181. package/dist/gateway/emitter.d.ts.map +0 -1
  182. package/dist/gateway/emitter.js +0 -304
  183. package/dist/gateway/emitter.js.map +0 -1
  184. package/dist/gateway/events.d.ts +0 -329
  185. package/dist/gateway/events.d.ts.map +0 -1
  186. package/dist/gateway/events.js +0 -7
  187. package/dist/gateway/events.js.map +0 -1
  188. package/dist/gateway/tcp-server.d.ts +0 -7
  189. package/dist/gateway/tcp-server.d.ts.map +0 -1
  190. package/dist/gateway/tcp-server.js +0 -118
  191. package/dist/gateway/tcp-server.js.map +0 -1
  192. package/dist/lib/id.d.ts +0 -3
  193. package/dist/lib/id.d.ts.map +0 -1
  194. package/dist/lib/id.js +0 -5
  195. package/dist/lib/id.js.map +0 -1
  196. package/dist/lib/sleep.d.ts +0 -6
  197. package/dist/lib/sleep.d.ts.map +0 -1
  198. package/dist/lib/sleep.js +0 -22
  199. package/dist/lib/sleep.js.map +0 -1
  200. package/dist/lib/strip-markdown.d.ts +0 -7
  201. package/dist/lib/strip-markdown.d.ts.map +0 -1
  202. package/dist/lib/strip-markdown.js +0 -32
  203. package/dist/lib/strip-markdown.js.map +0 -1
  204. package/dist/lib/timeout.d.ts +0 -6
  205. package/dist/lib/timeout.d.ts.map +0 -1
  206. package/dist/lib/timeout.js +0 -11
  207. package/dist/lib/timeout.js.map +0 -1
  208. package/dist/lib/truncate.d.ts +0 -11
  209. package/dist/lib/truncate.d.ts.map +0 -1
  210. package/dist/lib/truncate.js +0 -17
  211. package/dist/lib/truncate.js.map +0 -1
  212. package/dist/services/channels/base-adapter.d.ts.map +0 -1
  213. package/dist/services/channels/base-adapter.js.map +0 -1
  214. package/dist/services/channels/debounce.d.ts.map +0 -1
  215. package/dist/services/channels/debounce.js.map +0 -1
  216. package/dist/services/channels/dedupe.d.ts.map +0 -1
  217. package/dist/services/channels/dedupe.js.map +0 -1
  218. package/dist/services/channels/delivery.d.ts.map +0 -1
  219. package/dist/services/channels/delivery.js.map +0 -1
  220. package/dist/services/channels/index.d.ts.map +0 -1
  221. package/dist/services/channels/index.js +0 -413
  222. package/dist/services/channels/index.js.map +0 -1
  223. package/dist/services/channels/link-expand.d.ts.map +0 -1
  224. package/dist/services/channels/link-expand.js.map +0 -1
  225. package/dist/services/channels/media-paths.d.ts.map +0 -1
  226. package/dist/services/channels/media-paths.js.map +0 -1
  227. package/dist/services/channels/pipeline.d.ts.map +0 -1
  228. package/dist/services/channels/pipeline.js.map +0 -1
  229. package/dist/services/channels/provider-loader.d.ts.map +0 -1
  230. package/dist/services/channels/provider-loader.js.map +0 -1
  231. package/dist/services/channels/providers/telegram/adapter.d.ts.map +0 -1
  232. package/dist/services/channels/providers/telegram/adapter.js.map +0 -1
  233. package/dist/services/channels/providers/telegram/index.d.ts.map +0 -1
  234. package/dist/services/channels/providers/telegram/index.js.map +0 -1
  235. package/dist/services/channels/providers/telegram/normalizer.d.ts.map +0 -1
  236. package/dist/services/channels/providers/telegram/normalizer.js.map +0 -1
  237. package/dist/services/channels/providers/telegram/types.d.ts.map +0 -1
  238. package/dist/services/channels/providers/telegram/types.js.map +0 -1
  239. package/dist/services/channels/providers/whatsapp/adapter.d.ts.map +0 -1
  240. package/dist/services/channels/providers/whatsapp/adapter.js.map +0 -1
  241. package/dist/services/channels/providers/whatsapp/index.d.ts.map +0 -1
  242. package/dist/services/channels/providers/whatsapp/index.js.map +0 -1
  243. package/dist/services/channels/providers/whatsapp/normalizer.d.ts.map +0 -1
  244. package/dist/services/channels/providers/whatsapp/normalizer.js.map +0 -1
  245. package/dist/services/channels/providers/whatsapp/session.d.ts.map +0 -1
  246. package/dist/services/channels/providers/whatsapp/session.js.map +0 -1
  247. package/dist/services/channels/providers/whatsapp/types.d.ts.map +0 -1
  248. package/dist/services/channels/providers/whatsapp/types.js.map +0 -1
  249. package/dist/services/channels/reconnect.d.ts.map +0 -1
  250. package/dist/services/channels/reconnect.js.map +0 -1
  251. package/dist/services/channels/status-reactions.d.ts.map +0 -1
  252. package/dist/services/channels/status-reactions.js.map +0 -1
  253. package/dist/services/channels/types.d.ts.map +0 -1
  254. package/dist/services/channels/types.js.map +0 -1
  255. package/dist/services/channels/typing-state.d.ts.map +0 -1
  256. package/dist/services/channels/typing-state.js.map +0 -1
  257. package/dist/services/mcp-client/index.d.ts.map +0 -1
  258. package/dist/services/mcp-client/index.js.map +0 -1
  259. /package/dist/services/{channels → channel}/base-adapter.js +0 -0
  260. /package/dist/services/{channels → channel}/debounce.d.ts +0 -0
  261. /package/dist/services/{channels → channel}/debounce.js +0 -0
  262. /package/dist/services/{channels → channel}/dedupe.d.ts +0 -0
  263. /package/dist/services/{channels → channel}/dedupe.js +0 -0
  264. /package/dist/services/{channels → channel}/delivery.d.ts +0 -0
  265. /package/dist/services/{channels → channel}/link-expand.d.ts +0 -0
  266. /package/dist/services/{channels → channel}/link-expand.js +0 -0
  267. /package/dist/services/{channels → channel}/media-paths.d.ts +0 -0
  268. /package/dist/services/{channels → channel}/media-paths.js +0 -0
  269. /package/dist/services/{channels → channel}/pipeline.js +0 -0
  270. /package/dist/services/{channels → channel}/provider-loader.d.ts +0 -0
  271. /package/dist/services/{channels → channel}/provider-loader.js +0 -0
  272. /package/dist/services/{channels → channel}/providers/telegram/adapter.d.ts +0 -0
  273. /package/dist/services/{channels → channel}/providers/telegram/index.d.ts +0 -0
  274. /package/dist/services/{channels → channel}/providers/telegram/index.js +0 -0
  275. /package/dist/services/{channels → channel}/providers/telegram/normalizer.d.ts +0 -0
  276. /package/dist/services/{channels → channel}/providers/telegram/normalizer.js +0 -0
  277. /package/dist/services/{channels → channel}/providers/telegram/types.d.ts +0 -0
  278. /package/dist/services/{channels → channel}/providers/telegram/types.js +0 -0
  279. /package/dist/services/{channels → channel}/providers/whatsapp/adapter.d.ts +0 -0
  280. /package/dist/services/{channels → channel}/providers/whatsapp/adapter.js +0 -0
  281. /package/dist/services/{channels → channel}/providers/whatsapp/index.d.ts +0 -0
  282. /package/dist/services/{channels → channel}/providers/whatsapp/index.js +0 -0
  283. /package/dist/services/{channels → channel}/providers/whatsapp/normalizer.d.ts +0 -0
  284. /package/dist/services/{channels → channel}/providers/whatsapp/normalizer.js +0 -0
  285. /package/dist/services/{channels → channel}/providers/whatsapp/session.d.ts +0 -0
  286. /package/dist/services/{channels → channel}/providers/whatsapp/session.js +0 -0
  287. /package/dist/services/{channels → channel}/providers/whatsapp/types.d.ts +0 -0
  288. /package/dist/services/{channels → channel}/providers/whatsapp/types.js +0 -0
  289. /package/dist/services/{channels → channel}/reconnect.d.ts +0 -0
  290. /package/dist/services/{channels → channel}/reconnect.js +0 -0
  291. /package/dist/services/{channels → channel}/status-reactions.d.ts +0 -0
  292. /package/dist/services/{channels → channel}/status-reactions.js +0 -0
  293. /package/dist/services/{channels → channel}/types.js +0 -0
  294. /package/dist/services/{channels → channel}/typing-state.d.ts +0 -0
  295. /package/dist/services/{channels → channel}/typing-state.js +0 -0
package/CONTRIBUTING.md CHANGED
@@ -50,9 +50,8 @@ pnpm lint # ESLint + typecheck
50
50
 
51
51
  For deeper understanding of the project:
52
52
 
53
- - [Architecture Deep Dive](./docs/architecture/bus-design.md) — Event bus design, service patterns
54
- - [Channels Design](./docs/architecture/channels-design.md) — Channel provider architecture
55
- - [API Reference](./docs/api-reference.md) — Complete bus RPC reference
53
+ - [Architecture](./docs/architecture.md) — bus registry, service contract, surfaces, hot reload
54
+ - [Extending](./docs/extending.md) — add tools, skills, providers
56
55
  - [Debugging](./docs/debugging.md) — Debug modes and logging
57
56
 
58
57
  ## Project Status
package/README.md CHANGED
@@ -33,22 +33,20 @@ After setup: `vargos start` boots the server, `vargos onboard` re-runs the wizar
33
33
 
34
34
  ## Architecture
35
35
 
36
+ One **bus** owns one **registry** of methods. The CLI, the agent's tools, and the JSON-RPC
37
+ server are all projections of that registry — register a method once, it appears everywhere.
38
+
36
39
  ```
37
- ┌──────────────────────────────────────┐
38
- │ Gateway (EventEmitterBus + TCP) │
39
- └────────────┬─────────────────────────┘
40
-
41
- ┌───────────────────────┼────────────────────────┐
42
- │ │ │
43
- ↓ ↓ ↓
44
- ┌─────────┐ ┌──────────┐ ┌────────────┐
45
- │ Config │ │ Agent │ │ CLI │
46
- │ Log │ │ Channels │ │ External │
47
- │ Memory │ │ Cron │ │ Clients │
48
- └─────────┘ └──────────┘ └────────────┘
40
+ CLI Agent tools JSON-RPC :9000
41
+ \ | /
42
+ └────────── Bus (registry) ───────┘
43
+
44
+ config · log · web · memory · media · agent · channel · cron · mcp
45
+ (services/<name>/ — discovered from disk, loaded by the bus)
49
46
  ```
50
47
 
51
- Services are isolated — no shared state, communication only through internal APIs. This makes Vargos reliable and easy to extend.
48
+ Services are isolated — no shared state, no cross-imports; they talk only via `bus.call` /
49
+ `bus.emit`. See [Architecture](./docs/architecture.md).
52
50
 
53
51
  ## Key Concepts
54
52
 
@@ -61,7 +59,7 @@ Services are isolated — no shared state, communication only through internal A
61
59
 
62
60
  ### Message Handling
63
61
 
64
- Messages go through a simple pipeline: **receive → process → execute → respond**. The agent has access to all Vargos tools and your workspace context. See [Channels](./docs/usage/channels.md) for details.
62
+ Messages go through a simple pipeline: **receive → process → execute → respond**. The agent has access to all Vargos tools and your workspace context. See [Usage](./docs/usage.md) for details.
65
63
 
66
64
  ## Documentation
67
65
 
@@ -69,48 +67,41 @@ Messages go through a simple pipeline: **receive → process → execute → res
69
67
  |-----|-------------|
70
68
  | [Getting Started](./docs/getting-started.md) | Install, first run, config wizard |
71
69
  | [Configuration](./docs/configuration.md) | Full config reference |
72
- | [Channels](./docs/usage/channels.md) | WhatsApp and Telegram setup |
73
- | [MCP](./docs/usage/mcp.md) | MCP server and client integration |
74
- | [Sessions](./docs/usage/sessions.md) | Session types and lifecycle |
75
- | [Runtime](./docs/usage/runtime.md) | How agents execute |
76
- | [Workspace Files](./docs/usage/workspace-files.md) | AGENTS.md, SOUL.md, TOOLS.md reference |
77
- | [Troubleshooting](./docs/usage/troubleshooting.md) | Common issues and fixes |
70
+ | [Architecture](./docs/architecture.md) | Bus registry, service contract, surfaces, hot reload |
71
+ | [Usage](./docs/usage.md) | Channels, sessions, MCP, runtime, personas, workspace files |
72
+ | [Extending](./docs/extending.md) | Add tools, skills, providers |
73
+ | [Examples](./docs/examples.md) | MCP integration, scheduled research, multi-channel |
74
+ | [Debugging](./docs/debugging.md) | Debug modes and logging |
78
75
  | [Roadmap](./docs/ROADMAP.md) | Planned features |
79
76
 
80
- ### Examples
81
-
82
- - [MCP Integration](./docs/examples/mcp-integration.md) — Connect external tool servers
83
- - [Scheduled Research](./docs/examples/scheduled-research.md) — Daily reports via cron
84
- - [Multi-Channel Presence](./docs/examples/multi-channel-presence.md) — WhatsApp + Telegram + CLI
85
- - [Architecture Deep Dive](./docs/architecture/bus-design.md) — Event bus patterns
86
- - [Extending](./docs/extending/) — Tools, skills, providers
87
-
88
77
  ## Usage
89
78
 
90
79
  ```bash
91
80
  vargos # First-run wizard or help
92
- vargos start # Boot the server (gateway + all services)
81
+ vargos start # Boot the daemon (bus + all services + JSON-RPC :9000)
82
+ vargos <service> # List a service's methods (e.g. vargos channel)
83
+ vargos <service> --help # Methods, descriptions, arg shapes
84
+ vargos <service> <method> … # Invoke a method (e.g. vargos channel send <to> "<msg>")
93
85
  vargos onboard # Re-run setup wizard
94
- vargos config # Show current configuration
95
86
  ```
96
87
 
97
88
  ## Development
98
89
 
99
90
  ```bash
100
91
  pnpm install # Install deps
101
- pnpm start # Start gateway + all services (alias: vargos start)
92
+ pnpm start # Boot the daemon (alias: vargos start)
102
93
  pnpm chat # Pi SDK interactive REPL bound to ~/.vargos/agent
103
- pnpm seed # Re-seed .templates/ → ~/.vargos/ (idempotent)
104
94
  pnpm cli # Run the CLI entrypoint directly (tsx cli.ts)
105
- pnpm test # Tests (watch mode)
95
+ pnpm verify # Run the core acceptance checks (scripts/verify-core.ts)
106
96
  pnpm run test:run # Tests (single run)
107
97
  pnpm run typecheck # TypeScript check
108
98
  pnpm lint # ESLint + typecheck
109
99
  pnpm build # Clean + compile + copy templates → dist/
100
+ ```
110
101
 
111
102
  ## Contributing
112
103
 
113
- See [CONTRIBUTING.md](./CONTRIBUTING.md) for architecture details, event reference, and development guidelines.
104
+ See [CONTRIBUTING.md](./CONTRIBUTING.md) for architecture and development guidelines.
114
105
 
115
106
  ## License
116
107
 
@@ -43,7 +43,7 @@ A good long-running job:
43
43
  Notify with the CLI — it reaches the running gateway and handles the channel key format for you:
44
44
 
45
45
  ```bash
46
- vargos channels send "${SESSION_KEY}" "✅ Job done — log: /tmp/job.log"
46
+ vargos channel send "${SESSION_KEY}" "✅ Job done — log: /tmp/job.log"
47
47
  ```
48
48
 
49
49
  That is shorthand for the raw gateway call:
@@ -56,7 +56,7 @@ Detach so the work survives the run, and notify on exit:
56
56
 
57
57
  ```bash
58
58
  nohup bash -c 'my_command > /tmp/job.log 2>&1; \
59
- vargos channels send "${SESSION_KEY}" "Job finished (exit $?) — log: /tmp/job.log"' >/dev/null 2>&1 &
59
+ vargos channel send "${SESSION_KEY}" "Job finished (exit $?) — log: /tmp/job.log"' >/dev/null 2>&1 &
60
60
  echo "Started PID $! → /tmp/job.log"
61
61
  ```
62
62
 
package/dist/boot.d.ts CHANGED
@@ -1,2 +1,7 @@
1
+ /**
2
+ * Daemon entry. Builds the bus, loads services from disk via the loader (so reload
3
+ * picks up new code), registers lifecycle methods, starts the JSON-RPC surface, and
4
+ * signals readiness. The supervisor (index.ts) respawns this on RESTART_EXIT_CODE.
5
+ */
1
6
  export {};
2
7
  //# sourceMappingURL=boot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../boot.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"boot.d.ts","sourceRoot":"","sources":["../boot.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
package/dist/boot.js CHANGED
@@ -1,114 +1,89 @@
1
- import { EventEmitterBus } from './gateway/emitter.js';
2
- import { startTCPServer } from './gateway/tcp-server.js';
1
+ /**
2
+ * Daemon entry. Builds the bus, loads services from disk via the loader (so reload
3
+ * picks up new code), registers lifecycle methods, starts the JSON-RPC surface, and
4
+ * signals readiness. The supervisor (index.ts) respawns this on RESTART_EXIT_CODE.
5
+ */
6
+ import path from 'node:path';
7
+ import { fileURLToPath } from 'node:url';
8
+ import { z } from 'zod';
9
+ import { EmitterBus } from './core/bus.js';
10
+ import { ServiceLoader } from './core/loader.js';
11
+ import { discoverServices } from './core/services.js';
12
+ import { startRpcServer } from './core/rpc-server.js';
3
13
  import { createLogger } from './lib/logger.js';
4
14
  import { seedDataDir } from './lib/templates.js';
5
15
  import { runMigrations } from './lib/migrate.js';
6
- import { z } from 'zod';
7
- // ── Boot order ────────────────────────────────────────────────────────────────
8
- // Each entry: [label, () => import(module)]
9
- // Comment out services not yet built — add them back as they land.
10
- const SERVICES = [
11
- ['config', () => import('./services/config/index.js')],
12
- ['log', () => import('./services/log/index.js')],
13
- ['web', () => import('./services/web/index.js')],
14
- ['memory', () => import('./services/memory/index.js')],
15
- ['media', () => import('./services/media/index.js')],
16
- ['agent', () => import('./services/agent/index.js')],
17
- ['channels', () => import('./services/channels/index.js')],
18
- ['cron', () => import('./services/cron/index.js')],
19
- ['mcp-client', () => import('./services/mcp-client/index.js')],
20
- // ['webhooks', () => import('./edge/webhooks/index.js')],
21
- // ['mcp', () => import('./edge/mcp/index.js')],
22
- ];
23
- // Fail fast on a duplicated label — each service boots exactly once.
24
- const labels = SERVICES.map(([label]) => label);
25
- if (new Set(labels).size !== labels.length) {
26
- throw new Error(`duplicate service label in SERVICES: ${labels.join(', ')}`);
27
- }
28
- // ── Boot ──────────────────────────────────────────────────────────────────────
29
16
  const RESTART_EXIT_CODE = 42;
30
- const bus = new EventEmitterBus();
31
17
  const log = createLogger('boot');
32
- const serviceStops = new Map(); // label → stop(); kept current across restarts
33
- let tcpStop;
34
- const drain = () => Promise.allSettled([...serviceStops.values(), ...(tcpStop ? [tcpStop] : [])].map(s => s()));
35
- // Bootstrap the bus itself (registers bus.search and bus.inspect)
36
- bus.bootstrap();
37
- // Seed bundled templates into the VARGOS data dir before services boot.
18
+ const here = path.dirname(fileURLToPath(import.meta.url));
19
+ const ext = import.meta.url.endsWith('.ts') ? 'ts' : 'js';
20
+ const specs = discoverServices(here, ext);
21
+ const bus = new EmitterBus();
22
+ const loader = new ServiceLoader(bus);
23
+ let rpcStop;
24
+ const drain = async () => {
25
+ await loader.disposeAll();
26
+ if (rpcStop)
27
+ await rpcStop();
28
+ };
29
+ // ── Lifecycle methods (need the loader) ─────────────────────────────────────────
30
+ bus.register('bus.restart', {
31
+ description: 'Reload one service from disk in-process (same PID). Picks up new code after a git pull without killing the process; other services keep running.',
32
+ schema: z.object({ service: z.string().describe('Service name, e.g. "channel", "memory", "agent"') }),
33
+ cli: { positional: ['service'] },
34
+ }, async (p) => {
35
+ await loader.restart(p.service);
36
+ return { ok: true };
37
+ });
38
+ bus.register('bus.status', {
39
+ description: 'List loaded services.',
40
+ schema: z.object({}),
41
+ }, () => ({ services: loader.names().map(name => ({ name, status: 'running' })) }));
42
+ bus.register('bus.restartProcess', {
43
+ description: 'Restart the whole process via the supervisor — reloads all services and transitive deps from disk. Returns immediately; teardown runs after the response is sent.',
44
+ schema: z.object({}),
45
+ }, () => {
46
+ setImmediate(async () => {
47
+ log.info('process restart requested — draining and exiting');
48
+ await drain();
49
+ process.exit(RESTART_EXIT_CODE);
50
+ });
51
+ return { ok: true };
52
+ });
53
+ // ── Boot sequence ───────────────────────────────────────────────────────────────
38
54
  await seedDataDir(log);
39
- // Apply pending one-time data migrations (run-once, tracked in ~/.vargos/.migrations.json).
40
55
  await runMigrations(log);
41
- for (const [label, load] of SERVICES) {
56
+ for (const spec of specs) {
42
57
  try {
43
- const { boot } = await load();
44
- const { stop } = await boot(bus);
45
- if (stop)
46
- serviceStops.set(label, stop);
47
- // Per-service restart via bus.restart({ service }). The cached module is reused,
48
- // so this resets in-memory state but does NOT reload code — bus.bootstrap()
49
- // un-wires the old instance's listeners, restartProcess reloads code from disk.
50
- bus.onRestart(label, async () => {
51
- log.info(`restarting "${label}" — re-instantiating from cached module`);
52
- await serviceStops.get(label)?.();
53
- const { boot: reBoot } = await load();
54
- const { stop: newStop } = await reBoot(bus);
55
- if (newStop)
56
- serviceStops.set(label, newStop);
57
- else
58
- serviceStops.delete(label);
59
- log.info(` ✅ "${label}" restarted`);
60
- });
61
- log.info(` ✅ "${label}" service booted`);
58
+ await loader.load(spec);
62
59
  }
63
60
  catch (err) {
64
- log.error(`❌ failed to boot ${label}: ${err instanceof Error ? err.message : String(err)}`);
61
+ log.error(`❌ failed to load ${spec.name}: ${err instanceof Error ? err.message : String(err)}`);
65
62
  process.exit(1);
66
63
  }
67
64
  }
68
- // Start TCP server for CLI access
69
65
  const config = await bus.call('config.get', {});
70
- const tcpHost = config.gateway.host ?? (process.env.BUS_HOST || '127.0.0.1');
71
- const tcpPort = parseInt(config.gateway.port ? String(config.gateway.port) : (process.env.BUS_PORT || '9000'), 10);
66
+ const host = config.gateway.host ?? process.env.BUS_HOST ?? '127.0.0.1';
67
+ const port = parseInt(config.gateway.port ? String(config.gateway.port) : (process.env.BUS_PORT || '9000'), 10);
72
68
  try {
73
- const socketTimeoutMs = config.gateway.requestTimeout ?? 30_000;
74
- tcpStop = await startTCPServer(bus, tcpHost, tcpPort, socketTimeoutMs);
69
+ rpcStop = await startRpcServer(bus, host, port, config.gateway.requestTimeout ?? 35 * 60 * 1000);
75
70
  }
76
71
  catch (err) {
77
- log.error(`failed to start TCP server: ${err instanceof Error ? err.message : String(err)}`);
72
+ log.error(`failed to start RPC server: ${err instanceof Error ? err.message : String(err)}`);
78
73
  process.exit(1);
79
74
  }
80
- // Signal that boot is complete — deferred startup can proceed
81
75
  bus.emit('bus.onReady', {});
82
- // Boot summary
83
- log.info(`✅ ${labels.length} services booted: ${labels.join(', ')}`);
84
- // ── Process restart (registered as a runtime tool) ──────────────────────────
85
- // Returns ok immediately; cleanup + exit happen on the next tick so the caller
86
- // (e.g. an agent) receives the response before the process exits. The supervisor
87
- // (index.ts) respawns this process on RESTART_EXIT_CODE.
88
- bus.registerTool('bus.restartProcess', async () => {
89
- setImmediate(async () => {
90
- log.info('process restart requested — draining and exiting');
91
- await drain();
92
- process.exit(RESTART_EXIT_CODE);
93
- });
94
- return { ok: true };
95
- }, {
96
- description: 'Restart the entire vargos process. The supervisor respawns boot.ts so new code from disk (e.g. after git pull or npm update) takes effect. Returns immediately; teardown runs after the response is sent.',
97
- schema: z.object({}).default({}),
98
- });
99
- // ── Global error handlers ────────────────────────────────────────────────────
100
- // Prevent undici socket errors (UND_ERR_SOCKET "other side closed") from
101
- // crashing the process when LLM providers close connections after streaming.
76
+ log.info(`✅ ${specs.length} services ready: ${specs.map(s => s.name).join(', ')}`);
77
+ // ── Process-level handlers ──────────────────────────────────────────────────────
102
78
  process.on('uncaughtException', (err) => {
79
+ // undici "other side closed" and similar stream teardown noise must not crash the daemon.
103
80
  log.error(`uncaughtException: ${err.stack ?? err.message ?? err}`);
104
- // Do NOT exit — most undici/stream errors are non-fatal teardown noise.
105
81
  });
106
- // ── Shutdown ──────────────────────────────────────────────────────────────────
107
- process.on('SIGTERM', shutdown);
108
- process.on('SIGINT', shutdown);
109
- async function shutdown() {
82
+ const shutdown = async () => {
110
83
  log.info('shutting down');
111
84
  await drain();
112
85
  process.exit(0);
113
- }
86
+ };
87
+ process.on('SIGTERM', shutdown);
88
+ process.on('SIGINT', shutdown);
114
89
  //# sourceMappingURL=boot.js.map
package/dist/boot.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"boot.js","sourceRoot":"","sources":["../boot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,iFAAiF;AACjF,4CAA4C;AAC5C,mEAAmE;AAEnE,MAAM,QAAQ,GAAkG;IAC9G,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC;IACtD,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAChD,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAChD,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC;IACtD,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;IACpD,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;IACpD,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;IAC1D,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;IAClD,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC;IAC9D,0DAA0D;IAC1D,qDAAqD;CACtD,CAAC;AAEF,qEAAqE;AACrE,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;AAChD,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;IAC3C,MAAM,IAAI,KAAK,CAAC,wCAAwC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED,iFAAiF;AAEjF,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,GAAG,GAAG,IAAI,eAAe,EAAE,CAAC;AAClC,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AACjC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAyB,CAAC,CAAC,+CAA+C;AACtG,IAAI,OAAoC,CAAC;AAEzC,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEhH,kEAAkE;AAClE,GAAG,CAAC,SAAS,EAAE,CAAC;AAEhB,wEAAwE;AACxE,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;AAEvB,4FAA4F;AAC5F,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;AAEzB,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;QAC9B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,IAAI;YAAE,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACxC,iFAAiF;QACjF,4EAA4E;QAC5E,gFAAgF;QAChF,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;YAC9B,GAAG,CAAC,IAAI,CAAC,eAAe,KAAK,yCAAyC,CAAC,CAAC;YACxE,MAAM,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;YAClC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;YACtC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,OAAO;gBAAE,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;;gBACzC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAChC,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,aAAa,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,kBAAkB,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,CAAC,oBAAoB,KAAK,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,kCAAkC;AAClC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAChD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,WAAW,CAAC,CAAC;AAC7E,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;AACnH,IAAI,CAAC;IACH,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,IAAI,MAAM,CAAC;IAChE,OAAO,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;AACzE,CAAC;AAAC,OAAO,GAAG,EAAE,CAAC;IACb,GAAG,CAAC,KAAK,CAAC,+BAA+B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,8DAA8D;AAC9D,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AAE5B,eAAe;AACf,GAAG,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,qBAAqB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAErE,+EAA+E;AAC/E,+EAA+E;AAC/E,iFAAiF;AACjF,yDAAyD;AAEzD,GAAG,CAAC,YAAY,CACd,oBAAoB,EACpB,KAAK,IAAI,EAAE;IACT,YAAY,CAAC,KAAK,IAAI,EAAE;QACtB,GAAG,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QAC7D,MAAM,KAAK,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC,EACD;IACE,WAAW,EAAE,2MAA2M;IACxN,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACjC,CACF,CAAC;AAEF,gFAAgF;AAChF,yEAAyE;AACzE,6EAA6E;AAE7E,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,EAAE;IACtC,GAAG,CAAC,KAAK,CAAC,sBAAsB,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;IACnE,wEAAwE;AAC1E,CAAC,CAAC,CAAC;AAEH,iFAAiF;AAEjF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAChC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAE/B,KAAK,UAAU,QAAQ;IACrB,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC1B,MAAM,KAAK,EAAE,CAAC;IACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"boot.js","sourceRoot":"","sources":["../boot.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;AAEjC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1D,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAE1C,MAAM,GAAG,GAAG,IAAI,UAAU,EAAE,CAAC;AAC7B,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;AACtC,IAAI,OAA0C,CAAC;AAE/C,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;IACvB,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC1B,IAAI,OAAO;QAAE,MAAM,OAAO,EAAE,CAAC;AAC/B,CAAC,CAAC;AAEF,mFAAmF;AAEnF,GAAG,CAAC,QAAQ,CAAC,aAAa,EAAE;IAC1B,WAAW,EAAE,kJAAkJ;IAC/J,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC,EAAE,CAAC;IACrG,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE;CACjC,EAAE,KAAK,EAAE,CAAsB,EAAE,EAAE;IAClC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAChC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC,CAAC,CAAC;AAEH,GAAG,CAAC,QAAQ,CAAC,YAAY,EAAE;IACzB,WAAW,EAAE,uBAAuB;IACpC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;CACrB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAkB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAE7F,GAAG,CAAC,QAAQ,CAAC,oBAAoB,EAAE;IACjC,WAAW,EAAE,mKAAmK;IAChL,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;CACrB,EAAE,GAAG,EAAE;IACN,YAAY,CAAC,KAAK,IAAI,EAAE;QACtB,GAAG,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QAC7D,MAAM,KAAK,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC,CAAC,CAAC;AAEH,mFAAmF;AAEnF,MAAM,WAAW,CAAC,GAAG,CAAC,CAAC;AACvB,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;AAEzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,IAAI,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAY,YAAY,EAAE,EAAE,CAAC,CAAC;AAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,WAAW,CAAC;AACxE,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;AAEhH,IAAI,CAAC;IACH,OAAO,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;AACnG,CAAC;AAAC,OAAO,GAAG,EAAE,CAAC;IACb,GAAG,CAAC,KAAK,CAAC,+BAA+B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;AAC5B,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,oBAAoB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAEnF,mFAAmF;AAEnF,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,GAAG,EAAE,EAAE;IACtC,0FAA0F;IAC1F,GAAG,CAAC,KAAK,CAAC,sBAAsB,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;AACrE,CAAC,CAAC,CAAC;AAEH,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;IAC1B,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC1B,MAAM,KAAK,EAAE,CAAC;IACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;AACF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAChC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC"}
@@ -1,38 +1,21 @@
1
1
  /**
2
- * Channel management shared CRUD used by onboard wizard and vargos channels CLI.
3
- *
4
- * Exports:
5
- * listChannels() → array of { id, type, botToken? }
6
- * registerChannel() → upsert into config.json (returns whether it was newly created)
7
- * deregisterChannel() → remove from config.json
8
- * pairWhatsApp() → standalone QR pairing (stops after connected)
9
- * sendChannelMessage() → deliver a message via the running gateway (channel.send)
2
+ * Channel setup helpers for the onboard wizard. Writes config.json directly because
3
+ * onboarding runs before any daemon exists. Live channel ops go through the bus
4
+ * (`vargos channel …` / RpcClient), not here.
10
5
  */
11
6
  import type { ChannelEntry } from '../services/config/schemas/channels.js';
12
- export interface ChannelInfo {
13
- id: string;
14
- type: ChannelEntry['type'];
15
- botToken?: string;
16
- enabled?: boolean;
17
- registered?: boolean;
18
- }
19
7
  export interface RegisterChannelParams {
20
8
  id: string;
21
9
  type: ChannelEntry['type'];
22
10
  botToken?: string;
23
11
  }
24
- export declare function listChannels(): ChannelInfo[];
25
12
  /**
26
- * Upsert a channel into config.json. Idempotent: re-registering an existing id
27
- * leaves it in place (refreshing the bot token if a new one is supplied) so that
28
- * `register whatsapp <id>` can mean "ensure set up, then (re)pair".
29
- * Returns whether the entry was newly created.
13
+ * Upsert a channel into config.json. Idempotent: re-registering an existing id leaves
14
+ * it in place (refreshing the bot token if supplied). Returns whether it was created.
30
15
  */
31
16
  export declare function registerChannel(params: RegisterChannelParams): {
32
17
  created: boolean;
33
18
  };
34
- export declare function deregisterChannel(id: string): void;
19
+ /** Standalone WhatsApp QR pairing (loads Baileys only when called). */
35
20
  export declare function pairWhatsApp(id: string): Promise<void>;
36
- /** Deliver a message to a channel session via the running gateway. */
37
- export declare function sendChannelMessage(sessionKey: string, text: string): Promise<boolean>;
38
21
  //# sourceMappingURL=channels.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../../cli/channels.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAI3E,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA6BD,wBAAgB,YAAY,IAAI,WAAW,EAAE,CAmB5C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAuBnF;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAQlD;AAID,wBAAsB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqC5D;AA6CD,sEAAsE;AACtE,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG3F"}
1
+ {"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../../cli/channels.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAE3E,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAgBD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAkBnF;AAED,uEAAuE;AACvE,wBAAsB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB5D"}
@@ -1,60 +1,21 @@
1
1
  /**
2
- * Channel management shared CRUD used by onboard wizard and vargos channels CLI.
3
- *
4
- * Exports:
5
- * listChannels() → array of { id, type, botToken? }
6
- * registerChannel() → upsert into config.json (returns whether it was newly created)
7
- * deregisterChannel() → remove from config.json
8
- * pairWhatsApp() → standalone QR pairing (stops after connected)
9
- * sendChannelMessage() → deliver a message via the running gateway (channel.send)
2
+ * Channel setup helpers for the onboard wizard. Writes config.json directly because
3
+ * onboarding runs before any daemon exists. Live channel ops go through the bus
4
+ * (`vargos channel …` / RpcClient), not here.
10
5
  */
11
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
12
- import { createConnection } from 'node:net';
13
6
  import path from 'node:path';
14
7
  import { getDataPaths } from '../lib/paths.js';
8
+ import { readJson, writeJson } from '../lib/util.js';
15
9
  function readConfig() {
16
10
  const { configFile } = getDataPaths();
17
- if (!existsSync(configFile))
18
- return {};
19
- try {
20
- return JSON.parse(readFileSync(configFile, 'utf-8'));
21
- }
22
- catch {
23
- return {};
24
- }
11
+ return readJson(configFile) ?? {};
25
12
  }
26
13
  function writeConfig(config) {
27
- const { configFile } = getDataPaths();
28
- if (!existsSync(path.dirname(configFile))) {
29
- mkdirSync(path.dirname(configFile), { recursive: true });
30
- }
31
- writeFileSync(configFile, JSON.stringify(config, null, 2), { mode: 0o600 });
32
- }
33
- // ── Public API ────────────────────────────────────────────────────────────────
34
- export function listChannels() {
35
- const config = readConfig();
36
- const channels = (config.channels ?? []);
37
- return channels.map((ch) => {
38
- const info = {
39
- id: String(ch.id ?? ''),
40
- type: ch.type ?? 'whatsapp',
41
- enabled: ch.enabled !== false,
42
- };
43
- if (ch.botToken != null)
44
- info['botToken'] = String(ch.botToken);
45
- // WhatsApp: check if paired (creds.json exists)
46
- if (info.type === 'whatsapp') {
47
- const authDir = path.join(getDataPaths().channelsDir, info.id);
48
- info.registered = existsSync(path.join(authDir, 'creds.json'));
49
- }
50
- return info;
51
- });
14
+ writeJson(getDataPaths().configFile, config);
52
15
  }
53
16
  /**
54
- * Upsert a channel into config.json. Idempotent: re-registering an existing id
55
- * leaves it in place (refreshing the bot token if a new one is supplied) so that
56
- * `register whatsapp <id>` can mean "ensure set up, then (re)pair".
57
- * Returns whether the entry was newly created.
17
+ * Upsert a channel into config.json. Idempotent: re-registering an existing id leaves
18
+ * it in place (refreshing the bot token if supplied). Returns whether it was created.
58
19
  */
59
20
  export function registerChannel(params) {
60
21
  const config = readConfig();
@@ -67,11 +28,7 @@ export function registerChannel(params) {
67
28
  writeConfig(config);
68
29
  return { created: false };
69
30
  }
70
- const entry = {
71
- id: params.id,
72
- type: params.type,
73
- enabled: true,
74
- };
31
+ const entry = { id: params.id, type: params.type, enabled: true };
75
32
  if (params.botToken)
76
33
  entry['botToken'] = params.botToken;
77
34
  channels.push(entry);
@@ -79,96 +36,30 @@ export function registerChannel(params) {
79
36
  writeConfig(config);
80
37
  return { created: true };
81
38
  }
82
- export function deregisterChannel(id) {
83
- const config = readConfig();
84
- const channels = (config.channels ?? []);
85
- const idx = channels.findIndex((c) => c.id === id);
86
- if (idx === -1)
87
- throw new Error(`Channel "${id}" not found.`);
88
- channels.splice(idx, 1);
89
- config.channels = channels;
90
- writeConfig(config);
91
- }
92
- // ── WhatsApp standalone pairing ───────────────────────────────────────────────
39
+ /** Standalone WhatsApp QR pairing (loads Baileys only when called). */
93
40
  export async function pairWhatsApp(id) {
94
41
  const authDir = path.join(getDataPaths().channelsDir, id);
95
- // Dynamic import only loads Baileys when this function is called
96
- const { createWhatsAppSocket } = await import('../services/channels/providers/whatsapp/session.js');
42
+ const { createWhatsAppSocket } = await import('../services/channel/providers/whatsapp/session.js');
97
43
  return new Promise((resolve, reject) => {
98
44
  createWhatsAppSocket(authDir, {
99
- onQR: () => {
100
- // QR printed automatically by qrcode-terminal inside session.ts
101
- },
45
+ onQR: () => { },
102
46
  onConnected: (name) => {
103
47
  console.log(`\n✅ Connected as ${name}`);
104
48
  console.log(` Credentials saved to ${authDir}/creds.json\n`);
105
49
  resolve();
106
50
  },
107
51
  onDisconnected: (reason) => {
108
- if (reason === 'logged_out') {
52
+ if (reason === 'logged_out')
109
53
  reject(new Error('Pairing failed — device logged out. Try again.'));
110
- }
111
- else if (reason === 'forbidden') {
54
+ else if (reason === 'forbidden')
112
55
  reject(new Error('Pairing failed — access forbidden.'));
113
- }
114
56
  else {
115
- // Connection closed for other reasons — may still have succeeded
116
57
  console.log(`\n⚠ Connection closed (${reason}). If you scanned the QR, pairing may have succeeded.`);
117
58
  resolve();
118
59
  }
119
60
  },
120
- onMessage: () => {
121
- // Ignore messages during pairing
122
- },
123
- }).then(() => {
124
- // Socket created, wait for onConnected to resolve
125
- // If the process exits before onConnected, the promise rejects via onDisconnected
61
+ onMessage: () => { },
126
62
  }).catch(reject);
127
63
  });
128
64
  }
129
- // ── Gateway client (talks to a running `vargos start`) ─────────────────────────
130
- /** Resolve the gateway address from config.json, mirroring boot.ts defaults. */
131
- function gatewayAddress() {
132
- const gw = (readConfig().gateway ?? {});
133
- const host = gw.host ?? process.env.BUS_HOST ?? '127.0.0.1';
134
- const port = gw.port ?? (process.env.BUS_PORT ? parseInt(process.env.BUS_PORT, 10) : 9000);
135
- return { host, port };
136
- }
137
- /** Send one JSON-RPC request to the gateway and resolve with its result. */
138
- function gatewayCall(method, params) {
139
- const { host, port } = gatewayAddress();
140
- return new Promise((resolve, reject) => {
141
- const socket = createConnection({ host, port }, () => {
142
- socket.write(JSON.stringify({ jsonrpc: '2.0', method, params, id: 1 }) + '\n');
143
- });
144
- let buffer = '';
145
- socket.on('data', (chunk) => {
146
- buffer += chunk.toString();
147
- const nl = buffer.indexOf('\n');
148
- if (nl === -1)
149
- return; // wait for the full line
150
- socket.end();
151
- try {
152
- const res = JSON.parse(buffer.slice(0, nl));
153
- if (res.error)
154
- reject(new Error(res.error.message ?? 'gateway error'));
155
- else
156
- resolve(res.result);
157
- }
158
- catch (err) {
159
- reject(err instanceof Error ? err : new Error(String(err)));
160
- }
161
- });
162
- socket.setTimeout(10_000, () => {
163
- socket.destroy();
164
- reject(new Error(`gateway not reachable at ${host}:${port} — is "vargos start" running?`));
165
- });
166
- socket.on('error', (err) => reject(new Error(`gateway not reachable at ${host}:${port} — is "vargos start" running? (${err.message})`)));
167
- });
168
- }
169
- /** Deliver a message to a channel session via the running gateway. */
170
- export async function sendChannelMessage(sessionKey, text) {
171
- const result = await gatewayCall('channel.send', { sessionKey, text });
172
- return result?.sent === true;
173
- }
174
65
  //# sourceMappingURL=channels.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"channels.js","sourceRoot":"","sources":["../../cli/channels.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channels.js","sourceRoot":"","sources":["../../cli/channels.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * `vargos chat` — launch the pi coding-agent CLI against the Vargos data dir.
3
+ * Seeds templates, ensures the MCP adapter is installed, then hands off to pi.
4
+ */
5
+ export declare function chat(): Promise<void>;
6
+ //# sourceMappingURL=chat.d.ts.map