@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
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Acceptance verification for the re-architected core. Loads real service modules
3
+ * from a temp dir through the actual ServiceLoader, exercises all three surfaces
4
+ * (CLI projection, agent-tool projection, JSON-RPC), reloads from disk, and checks
5
+ * bus semantics + dispose discipline. Run: pnpm tsx scripts/verify-core.ts
6
+ */
7
+ import { mkdtempSync, writeFileSync, rmSync } from 'node:fs';
8
+ import { tmpdir } from 'node:os';
9
+ import path from 'node:path';
10
+ import { createConnection } from 'node:net';
11
+ import { z } from 'zod';
12
+ import { EmitterBus } from '../core/bus.js';
13
+ import { ServiceLoader } from '../core/loader.js';
14
+ import { startRpcServer } from '../core/rpc-server.js';
15
+ import { buildParams, renderHelp, RpcClient } from '../core/cli.js';
16
+ import { bootLocal } from '../core/local.js';
17
+ import { MethodNotFoundError } from '../core/errors.js';
18
+ let pass = 0, fail = 0;
19
+ function ok(label, cond, detail = '') {
20
+ console.log(`${cond ? ' ✅' : ' ❌'} ${label}${detail ? ` — ${detail}` : ''}`);
21
+ if (cond)
22
+ pass++;
23
+ else
24
+ fail++;
25
+ }
26
+ const dir = mkdtempSync(path.join(tmpdir(), 'vargos-verify-'));
27
+ const g = globalThis;
28
+ g.__ticks = 0;
29
+ const channelV1 = `
30
+ export function createService() {
31
+ let timer;
32
+ return {
33
+ name: 'channel',
34
+ init(bus) {
35
+ bus.register('channel.send', {
36
+ description: 'Send a message via a channel',
37
+ schema: { safeParse: (p) => (p && typeof p.recipient === 'string' && typeof p.message === 'string')
38
+ ? { success: true, data: p }
39
+ : { success: false, error: { issues: [{ path: ['message'], message: 'Required' }] } } },
40
+ cli: { positional: ['recipient', 'message'] },
41
+ }, (p) => ({ sent: true, via: 'v1', to: p.recipient, text: p.message }));
42
+ timer = setInterval(() => { globalThis.__ticks++; }, 25);
43
+ },
44
+ dispose() { clearInterval(timer); },
45
+ };
46
+ }
47
+ `;
48
+ // v2: changed return value (D1), removed channel.send, added channel.ping (D3).
49
+ const channelV2 = `
50
+ export function createService() {
51
+ let timer;
52
+ return {
53
+ name: 'channel',
54
+ init(bus) {
55
+ bus.register('channel.ping', {
56
+ description: 'Ping',
57
+ schema: { safeParse: (p) => ({ success: true, data: p ?? {} }) },
58
+ }, () => ({ via: 'v2', pong: true }));
59
+ timer = setInterval(() => { globalThis.__ticks++; }, 25);
60
+ },
61
+ dispose() { clearInterval(timer); },
62
+ };
63
+ }
64
+ `;
65
+ const memory = `
66
+ export function createService() {
67
+ return {
68
+ name: 'memory',
69
+ init(bus) {
70
+ bus.register('memory.search', {
71
+ description: 'Search memory',
72
+ schema: { safeParse: (p) => (p && typeof p.query === 'string')
73
+ ? { success: true, data: p }
74
+ : { success: false, error: { issues: [{ path: ['query'], message: 'Required' }] } } },
75
+ cli: { positional: ['query'] },
76
+ }, (p) => [{ citation: 'MEMORY.md', content: 'found: ' + p.query }]);
77
+ },
78
+ dispose() {},
79
+ };
80
+ }
81
+ `;
82
+ const chanPath = path.join(dir, 'channel.mjs');
83
+ const memPath = path.join(dir, 'memory.mjs');
84
+ writeFileSync(chanPath, channelV1);
85
+ writeFileSync(memPath, memory);
86
+ const rpcCall = (port, body) => new Promise((resolve, reject) => {
87
+ const s = createConnection({ host: '127.0.0.1', port }, () => s.write(JSON.stringify(body) + '\n'));
88
+ let buf = '';
89
+ s.on('data', (d) => { buf += d; if (buf.includes('\n')) {
90
+ s.end();
91
+ resolve(JSON.parse(buf.split('\n')[0]));
92
+ } });
93
+ s.on('error', reject);
94
+ });
95
+ async function main() {
96
+ const pid = process.pid;
97
+ const bus = new EmitterBus();
98
+ const loader = new ServiceLoader(bus);
99
+ await loader.load({ name: 'channel', modulePath: chanPath });
100
+ await loader.load({ name: 'memory', modulePath: memPath });
101
+ console.log('\nA. Centralization — one registration, three surfaces');
102
+ const list = bus.list();
103
+ const send = list.find(m => m.name === 'channel.send');
104
+ ok('A1 channel.send in registry/CLI list with description', !!send && send.description === 'Send a message via a channel');
105
+ ok('A1 --help renders description + arg shape', renderHelp('channel', bus.list('channel')).includes('Send a message via a channel'));
106
+ const sendRes = await bus.call('channel.send', { recipient: 'telegram:42', message: 'hi' });
107
+ ok('A2 invocable via bus/CLI path', JSON.stringify(sendRes) === JSON.stringify({ sent: true, via: 'v1', to: 'telegram:42', text: 'hi' }));
108
+ const rpcStop = await startRpcServer(bus, '127.0.0.1', 19099);
109
+ const r = await rpcCall(19099, { jsonrpc: '2.0', method: 'channel.send', params: { recipient: 'x', message: 'y' }, id: 1 });
110
+ ok('A3 invocable via JSON-RPC', r.result?.sent === true, JSON.stringify(r.result));
111
+ const agentTools = bus.list().filter(m => !m.internal); // agent-tool projection
112
+ ok('A4 present in agent tool list with matching description', agentTools.some(m => m.name === 'channel.send' && m.description === send.description));
113
+ console.log('\nB. CLI introspection');
114
+ ok('B1 vargos <service> lists exactly that service', bus.list('channel').every(m => m.service === 'channel') && bus.list('channel').length === 1);
115
+ // B2 with a real zod schema (the fake schema above can't be converted to JSON Schema):
116
+ const zbus = new EmitterBus();
117
+ zbus.register('demo.send', {
118
+ description: 'Send a message via a channel',
119
+ schema: z.object({ recipient: z.string(), message: z.string() }),
120
+ cli: { positional: ['recipient', 'message'] },
121
+ }, () => ({}));
122
+ ok('B2 --help shows arg shape from registry', /<recipient>.*<message>/s.test(renderHelp('demo', zbus.list('demo'))));
123
+ ok('B3 positional args map to schema keys', JSON.stringify(buildParams(send, ['telegram:7', 'hello'])) === JSON.stringify({ recipient: 'telegram:7', message: 'hello' }));
124
+ let usageErr = '';
125
+ try {
126
+ buildParams(send, ['a', 'b', 'c']);
127
+ }
128
+ catch (e) {
129
+ usageErr = e.message;
130
+ }
131
+ ok('B3 wrong arg count → clear usage error (not stack trace)', usageErr.includes('too many arguments'));
132
+ // B4: same validation error on every surface
133
+ let directErr = '';
134
+ try {
135
+ await bus.call('channel.send', { recipient: 'only' });
136
+ }
137
+ catch (e) {
138
+ directErr = e.message;
139
+ }
140
+ const rpcErr = await rpcCall(19099, { jsonrpc: '2.0', method: 'channel.send', params: { recipient: 'only' }, id: 2 });
141
+ ok('B4 same validation error on direct + RPC', directErr.includes('Invalid params') && rpcErr.error?.code === -32602, `${directErr} | rpc=${rpcErr.error?.code}`);
142
+ console.log('\nC. Bus semantics');
143
+ let notFound;
144
+ try {
145
+ await bus.call('nope.missing');
146
+ }
147
+ catch (e) {
148
+ notFound = e;
149
+ }
150
+ ok('C1 call unregistered → MethodNotFoundError', notFound instanceof MethodNotFoundError && notFound.code === -32601);
151
+ const rpcMissing = await rpcCall(19099, { jsonrpc: '2.0', method: 'nope.missing', params: {}, id: 3 });
152
+ ok('C1 RPC returns -32601', rpcMissing.error?.code === -32601);
153
+ let emitThrew = false;
154
+ try {
155
+ bus.emit('event.with.no.listeners', { a: 1 });
156
+ }
157
+ catch {
158
+ emitThrew = true;
159
+ }
160
+ ok('C2 emit with no listeners is a silent no-op', !emitThrew);
161
+ console.log('\nD. Hot in-process reload (same PID)');
162
+ await new Promise(r => setTimeout(r, 120));
163
+ const ticksBefore = g.__ticks;
164
+ writeFileSync(chanPath, channelV2); // git pull simulation
165
+ await loader.restart('channel');
166
+ ok('D1 same PID across reload', process.pid === pid);
167
+ const afterList = bus.list('channel');
168
+ ok('D1 new code observed (return value changed v1→v2)', JSON.stringify(await bus.call('channel.ping')) === JSON.stringify({ via: 'v2', pong: true }));
169
+ ok('D3 added method appears on all surfaces', afterList.some(m => m.name === 'channel.ping') && (await rpcCall(19099, { jsonrpc: '2.0', method: 'channel.ping', id: 4 })).result?.pong === true);
170
+ ok('D3 removed method disappears from all surfaces', !bus.has('channel.send') && (await rpcCall(19099, { jsonrpc: '2.0', method: 'channel.send', params: {}, id: 5 })).error?.code === -32601);
171
+ ok('D4 other service untouched (memory still works)', JSON.stringify(await bus.call('memory.search', { query: 'z' })) === JSON.stringify([{ citation: 'MEMORY.md', content: 'found: z' }]));
172
+ // D2: old interval cleared on dispose → exactly one timer running, not two.
173
+ const t1 = g.__ticks;
174
+ await new Promise(r => setTimeout(r, 250));
175
+ const rate = (g.__ticks - t1) / 0.25; // ticks/sec
176
+ ok('D2 no duplicate timers after reload (≈40/s, one interval)', rate > 20 && rate < 60, `${rate.toFixed(0)}/s`);
177
+ void ticksBefore;
178
+ await rpcStop();
179
+ console.log('\nE. CLI ↔ daemon coexistence');
180
+ const client = new RpcClient('127.0.0.1', 19098);
181
+ ok('E2 no daemon → isUp() false', !(await client.isUp()));
182
+ const stack = await bootLocal(['config'], path.resolve('.'), 'ts'); // boots real config service locally
183
+ ok('E2 local stack boots only needed services (config)', stack.bus.list('config').some(m => m.name === 'config.get'));
184
+ await stack.dispose();
185
+ ok('E2 local stack disposes cleanly', true);
186
+ rmSync(dir, { recursive: true, force: true });
187
+ console.log(`\n${fail === 0 ? '✅ ALL PASS' : '❌ FAILURES'} — ${pass} passed, ${fail} failed\n`);
188
+ process.exit(fail === 0 ? 0 : 1);
189
+ }
190
+ main().catch(err => { console.error(err); process.exit(1); });
191
+ //# sourceMappingURL=verify-core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-core.js","sourceRoot":"","sources":["../../scripts/verify-core.ts"],"names":[],"mappings":"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"}
@@ -7,12 +7,11 @@
7
7
  * - Debug mode for inspecting tools, prompts, history
8
8
  * - Streaming events passthrough to bus (agent.onDelta, agent.onTool, agent.onCompleted)
9
9
  */
10
- import type { Bus } from '../../gateway/bus.js';
11
- import type { EventMap } from '../../gateway/events.js';
10
+ import type { Bus, Service } from '../../core/types.js';
12
11
  import type { AppConfig } from '../../services/config/index.js';
13
- import type { AgentDeps } from './types.js';
14
12
  import { SettingsManager, AuthStorage, ModelRegistry, DefaultResourceLoader, type AgentSession, type ToolDefinition, type CreateAgentSessionOptions, type CreateAgentSessionResult } from '@earendil-works/pi-coding-agent';
15
- export declare class AgentService {
13
+ export declare class AgentService implements Service {
14
+ readonly name = "agent";
16
15
  protected bus: Bus;
17
16
  protected config: AppConfig;
18
17
  protected sessions: Map<string, AgentSession>;
@@ -23,32 +22,32 @@ export declare class AgentService {
23
22
  protected authStorage: AuthStorage;
24
23
  protected modelRegistry: ModelRegistry;
25
24
  protected settings: SettingsManager;
26
- constructor(deps: AgentDeps);
25
+ init(bus: Bus): Promise<void>;
26
+ private registerMethods;
27
+ dispose(): void;
27
28
  /**
28
29
  * Persist retry settings to disk during boot
29
30
  */
30
- start(): Promise<void>;
31
+ private persistRetrySettings;
31
32
  /**
32
- * agent.execute — Run a task
33
- *
34
- * Note: sessionKey is declared optional here because it's auto-injected by
35
- * wrapEventAsToolDefinition() when the agent calls this as a tool. Direct callers
36
- * (channels, cron, webhooks, TCP) still provide sessionKey via EventMap.
33
+ * agent.execute — Run a task. `sessionKey` is auto-injected by the tool wrapper when
34
+ * the agent calls this as a tool; direct callers (channels, cron, webhooks, RPC)
35
+ * supply it. It survives validation via the schema's .passthrough().
37
36
  */
38
- execute(params: EventMap['agent.execute']['params']): Promise<EventMap['agent.execute']['result']>;
37
+ private execute;
39
38
  /**
40
39
  * agent.appendMessage — Append message to session JSONL without executing agent.
41
40
  * Records inbound messages in session history (observe-only for non-whitelisted).
42
41
  * Internal only — not exposed as an agent tool.
43
42
  */
44
- appendMessage(params: EventMap['agent.appendMessage']['params']): Promise<void>;
43
+ private appendMessage;
45
44
  /**
46
45
  * agent.status — Inventory cached sessions (parents, subagents, idle) with their
47
46
  * run state, parent relationship, and model. When `sessionKey` is given, the result
48
47
  * is scoped to that session and its subagents — letting a parent observe its own
49
48
  * subtree. `activeRuns` is kept for callers that only need the executing keys.
50
49
  */
51
- status(params: EventMap['agent.status']['params']): Promise<EventMap['agent.status']['result']>;
50
+ private status;
52
51
  /**
53
52
  * Get or create AgentSession for sessionKey.
54
53
  * Uses SessionManager.continueRecent() to load the latest session file,
@@ -112,9 +111,6 @@ export declare class AgentService {
112
111
  * `stopReason`/`errorMessage` here, those would surface as silent empty completions.
113
112
  */
114
113
  private extractFinalAssistant;
115
- stop(): void;
116
114
  }
117
- export declare function boot(bus: Bus): Promise<{
118
- stop(): void;
119
- }>;
115
+ export declare function createService(): Service;
120
116
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../services/agent/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAQ,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAMhE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAM5C,OAAO,EAGL,eAAe,EACf,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC9B,MAAM,iCAAiC,CAAC;AAoBzC,qBAAa,YAAY;IACvB,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IACnB,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC;IAC5B,SAAS,CAAC,QAAQ,4BAAmC;IACrD,mFAAmF;IACnF,SAAS,CAAC,WAAW,sBAA6B;IAClD,SAAS,CAAC,UAAU,cAAqB;IAEzC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,WAAW,EAAE,WAAW,CAAC;IACnC,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IACvC,SAAS,CAAC,QAAQ,EAAE,eAAe,CAAC;gBAExB,IAAI,EAAE,SAAS;IAuC3B;;OAEG;IACG,KAAK;IAyBX;;;;;;OAMG;IAaG,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,CAAC;IA2CxG;;;;OAIG;IAEG,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCrF;;;;;OAKG;IAKG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,CAAC;IAkBrG;;;;OAIG;cACa,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAqEzH;;;OAGG;IACH,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAIhG;;;OAGG;YACW,kBAAkB;IAQhC,wFAAwF;IACxF,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,SAAS,CAAC,wBAAwB,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAsEnF;;;OAGG;cACa,oBAAoB,CAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAsBjH;;;;;OAKG;YACW,oBAAoB;IAQlC;;;;;;;OAOG;YACW,eAAe;IAsD7B;;;;OAIG;cACa,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IASzG;;OAEG;IACH,OAAO,CAAC,YAAY;IAMpB;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAuC7B,IAAI,IAAI,IAAI;CAOb;AAID,wBAAsB,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC;IAAE,IAAI,IAAI,IAAI,CAAA;CAAE,CAAC,CAM9D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../services/agent/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAQ,MAAM,qBAAqB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAWhE,OAAO,EAGL,eAAe,EACf,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC9B,MAAM,iCAAiC,CAAC;AA4BzC,qBAAa,YAAa,YAAW,OAAO;IAC1C,QAAQ,CAAC,IAAI,WAAW;IACxB,SAAS,CAAC,GAAG,EAAG,GAAG,CAAC;IACpB,SAAS,CAAC,MAAM,EAAG,SAAS,CAAC;IAC7B,SAAS,CAAC,QAAQ,4BAAmC;IACrD,mFAAmF;IACnF,SAAS,CAAC,WAAW,sBAA6B;IAClD,SAAS,CAAC,UAAU,cAAqB;IAEzC,SAAS,CAAC,QAAQ,EAAG,MAAM,CAAC;IAC5B,SAAS,CAAC,WAAW,EAAG,WAAW,CAAC;IACpC,SAAS,CAAC,aAAa,EAAG,aAAa,CAAC;IACxC,SAAS,CAAC,QAAQ,EAAG,eAAe,CAAC;IAE/B,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCnC,OAAO,CAAC,eAAe;IA0BvB,OAAO,IAAI,IAAI;IAMf;;OAEG;YACW,oBAAoB;IAyBlC;;;;OAIG;YACW,OAAO;IA2CrB;;;;OAIG;YACW,aAAa;IAoC3B;;;;;OAKG;YACW,MAAM;IAkBpB;;;;OAIG;cACa,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC;IAqEzH;;;OAGG;IACH,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAIhG;;;OAGG;YACW,kBAAkB;IAQhC,wFAAwF;IACxF,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,SAAS,CAAC,wBAAwB,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAqEnF;;;OAGG;cACa,oBAAoB,CAAC,oBAAoB,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAsBjH;;;;;OAKG;YACW,oBAAoB;IAQlC;;;;;;;OAOG;YACW,eAAe;IAsD7B;;;;OAIG;cACa,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IASzG;;OAEG;IACH,OAAO,CAAC,YAAY;IAMpB;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;CAoC9B;AAED,wBAAgB,aAAa,IAAI,OAAO,CAEvC"}