@chozzz/vargos 2.0.3 → 2.0.5

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 (296) hide show
  1. package/package.json +8 -3
  2. package/.templates/vargos/agent/extensions/anthropic-custom-payload.patch.json +0 -34
  3. package/.templates/vargos/agent/extensions/anthropic-custom-payload.ts +0 -74
  4. package/.templates/vargos/agent/mcp.json +0 -9
  5. package/.templates/vargos/agent/skills/skill-creator/SKILL.md +0 -77
  6. package/.templates/vargos/agent/skills/token-capture/SKILL.md +0 -33
  7. package/.templates/vargos/agent/skills/token-capture/scripts/capture-bearer-token.sh +0 -139
  8. package/.templates/vargos/agents/README +0 -5
  9. package/.templates/vargos/agents/default.md +0 -7
  10. package/.templates/vargos/config.json +0 -1
  11. package/.templates/vargos/cron/heartbeat.md +0 -11
  12. package/.templates/vargos/workspace/AGENTS.md +0 -70
  13. package/.templates/vargos/workspace/HEARTBEAT.md +0 -26
  14. package/.templates/vargos/workspace/MEMORY.md +0 -15
  15. package/.templates/vargos/workspace/SOUL.md +0 -51
  16. package/.templates/vargos/workspace/TOOLS.md +0 -36
  17. package/dist/edge/mcp/index.d.ts +0 -33
  18. package/dist/edge/mcp/index.d.ts.map +0 -1
  19. package/dist/edge/mcp/index.js +0 -217
  20. package/dist/edge/mcp/index.js.map +0 -1
  21. package/dist/edge/webhooks/index.d.ts +0 -33
  22. package/dist/edge/webhooks/index.d.ts.map +0 -1
  23. package/dist/edge/webhooks/index.js +0 -231
  24. package/dist/edge/webhooks/index.js.map +0 -1
  25. package/dist/edge/webhooks/transform.d.ts +0 -8
  26. package/dist/edge/webhooks/transform.d.ts.map +0 -1
  27. package/dist/edge/webhooks/transform.js +0 -29
  28. package/dist/edge/webhooks/transform.js.map +0 -1
  29. package/dist/gateway/bus.d.ts +0 -48
  30. package/dist/gateway/bus.d.ts.map +0 -1
  31. package/dist/gateway/bus.js +0 -2
  32. package/dist/gateway/bus.js.map +0 -1
  33. package/dist/gateway/decorators.d.ts +0 -40
  34. package/dist/gateway/decorators.d.ts.map +0 -1
  35. package/dist/gateway/decorators.js +0 -43
  36. package/dist/gateway/decorators.js.map +0 -1
  37. package/dist/gateway/emitter.d.ts +0 -42
  38. package/dist/gateway/emitter.d.ts.map +0 -1
  39. package/dist/gateway/emitter.js +0 -259
  40. package/dist/gateway/emitter.js.map +0 -1
  41. package/dist/gateway/events.d.ts +0 -343
  42. package/dist/gateway/events.d.ts.map +0 -1
  43. package/dist/gateway/events.js +0 -7
  44. package/dist/gateway/events.js.map +0 -1
  45. package/dist/gateway/tcp-server.d.ts +0 -7
  46. package/dist/gateway/tcp-server.d.ts.map +0 -1
  47. package/dist/gateway/tcp-server.js +0 -115
  48. package/dist/gateway/tcp-server.js.map +0 -1
  49. package/dist/index.d.ts +0 -2
  50. package/dist/index.d.ts.map +0 -1
  51. package/dist/index.js +0 -74
  52. package/dist/index.js.map +0 -1
  53. package/dist/scripts/migrate-cron-sessions.d.ts +0 -10
  54. package/dist/scripts/migrate-cron-sessions.d.ts.map +0 -1
  55. package/dist/scripts/migrate-cron-sessions.js +0 -139
  56. package/dist/scripts/migrate-cron-sessions.js.map +0 -1
  57. package/dist/scripts/seed.d.ts +0 -2
  58. package/dist/scripts/seed.d.ts.map +0 -1
  59. package/dist/scripts/seed.js +0 -4
  60. package/dist/scripts/seed.js.map +0 -1
  61. package/dist/services/agent/directives.d.ts +0 -14
  62. package/dist/services/agent/directives.d.ts.map +0 -1
  63. package/dist/services/agent/directives.js +0 -32
  64. package/dist/services/agent/directives.js.map +0 -1
  65. package/dist/services/agent/index.d.ts +0 -104
  66. package/dist/services/agent/index.d.ts.map +0 -1
  67. package/dist/services/agent/index.js +0 -534
  68. package/dist/services/agent/index.js.map +0 -1
  69. package/dist/services/agent/persona.d.ts +0 -15
  70. package/dist/services/agent/persona.d.ts.map +0 -1
  71. package/dist/services/agent/persona.js +0 -63
  72. package/dist/services/agent/persona.js.map +0 -1
  73. package/dist/services/agent/prompt-interpolate.d.ts +0 -41
  74. package/dist/services/agent/prompt-interpolate.d.ts.map +0 -1
  75. package/dist/services/agent/prompt-interpolate.js +0 -102
  76. package/dist/services/agent/prompt-interpolate.js.map +0 -1
  77. package/dist/services/agent/schema.d.ts +0 -10
  78. package/dist/services/agent/schema.d.ts.map +0 -1
  79. package/dist/services/agent/schema.js +0 -5
  80. package/dist/services/agent/schema.js.map +0 -1
  81. package/dist/services/agent/tools.d.ts +0 -26
  82. package/dist/services/agent/tools.d.ts.map +0 -1
  83. package/dist/services/agent/tools.js +0 -85
  84. package/dist/services/agent/tools.js.map +0 -1
  85. package/dist/services/channels/base-adapter.d.ts +0 -61
  86. package/dist/services/channels/base-adapter.d.ts.map +0 -1
  87. package/dist/services/channels/base-adapter.js +0 -181
  88. package/dist/services/channels/base-adapter.js.map +0 -1
  89. package/dist/services/channels/contracts.d.ts +0 -75
  90. package/dist/services/channels/contracts.d.ts.map +0 -1
  91. package/dist/services/channels/contracts.js +0 -6
  92. package/dist/services/channels/contracts.js.map +0 -1
  93. package/dist/services/channels/debounce.d.ts +0 -22
  94. package/dist/services/channels/debounce.d.ts.map +0 -1
  95. package/dist/services/channels/debounce.js +0 -53
  96. package/dist/services/channels/debounce.js.map +0 -1
  97. package/dist/services/channels/dedupe.d.ts +0 -19
  98. package/dist/services/channels/dedupe.d.ts.map +0 -1
  99. package/dist/services/channels/dedupe.js +0 -52
  100. package/dist/services/channels/dedupe.js.map +0 -1
  101. package/dist/services/channels/delivery.d.ts +0 -12
  102. package/dist/services/channels/delivery.d.ts.map +0 -1
  103. package/dist/services/channels/delivery.js +0 -53
  104. package/dist/services/channels/delivery.js.map +0 -1
  105. package/dist/services/channels/index.d.ts +0 -53
  106. package/dist/services/channels/index.d.ts.map +0 -1
  107. package/dist/services/channels/index.js +0 -405
  108. package/dist/services/channels/index.js.map +0 -1
  109. package/dist/services/channels/link-expand.d.ts +0 -8
  110. package/dist/services/channels/link-expand.d.ts.map +0 -1
  111. package/dist/services/channels/link-expand.js +0 -28
  112. package/dist/services/channels/link-expand.js.map +0 -1
  113. package/dist/services/channels/media-extract.d.ts +0 -7
  114. package/dist/services/channels/media-extract.d.ts.map +0 -1
  115. package/dist/services/channels/media-extract.js +0 -31
  116. package/dist/services/channels/media-extract.js.map +0 -1
  117. package/dist/services/channels/pipeline.d.ts +0 -29
  118. package/dist/services/channels/pipeline.d.ts.map +0 -1
  119. package/dist/services/channels/pipeline.js +0 -120
  120. package/dist/services/channels/pipeline.js.map +0 -1
  121. package/dist/services/channels/provider-loader.d.ts +0 -7
  122. package/dist/services/channels/provider-loader.d.ts.map +0 -1
  123. package/dist/services/channels/provider-loader.js +0 -13
  124. package/dist/services/channels/provider-loader.js.map +0 -1
  125. package/dist/services/channels/providers/telegram/adapter.d.ts +0 -34
  126. package/dist/services/channels/providers/telegram/adapter.d.ts.map +0 -1
  127. package/dist/services/channels/providers/telegram/adapter.js +0 -278
  128. package/dist/services/channels/providers/telegram/adapter.js.map +0 -1
  129. package/dist/services/channels/providers/telegram/index.d.ts +0 -11
  130. package/dist/services/channels/providers/telegram/index.d.ts.map +0 -1
  131. package/dist/services/channels/providers/telegram/index.js +0 -11
  132. package/dist/services/channels/providers/telegram/index.js.map +0 -1
  133. package/dist/services/channels/providers/telegram/normalizer.d.ts +0 -12
  134. package/dist/services/channels/providers/telegram/normalizer.d.ts.map +0 -1
  135. package/dist/services/channels/providers/telegram/normalizer.js +0 -50
  136. package/dist/services/channels/providers/telegram/normalizer.js.map +0 -1
  137. package/dist/services/channels/providers/telegram/types.d.ts +0 -72
  138. package/dist/services/channels/providers/telegram/types.d.ts.map +0 -1
  139. package/dist/services/channels/providers/telegram/types.js +0 -3
  140. package/dist/services/channels/providers/telegram/types.js.map +0 -1
  141. package/dist/services/channels/providers/whatsapp/adapter.d.ts +0 -36
  142. package/dist/services/channels/providers/whatsapp/adapter.d.ts.map +0 -1
  143. package/dist/services/channels/providers/whatsapp/adapter.js +0 -261
  144. package/dist/services/channels/providers/whatsapp/adapter.js.map +0 -1
  145. package/dist/services/channels/providers/whatsapp/index.d.ts +0 -11
  146. package/dist/services/channels/providers/whatsapp/index.d.ts.map +0 -1
  147. package/dist/services/channels/providers/whatsapp/index.js +0 -11
  148. package/dist/services/channels/providers/whatsapp/index.js.map +0 -1
  149. package/dist/services/channels/providers/whatsapp/normalizer.d.ts +0 -11
  150. package/dist/services/channels/providers/whatsapp/normalizer.d.ts.map +0 -1
  151. package/dist/services/channels/providers/whatsapp/normalizer.js +0 -47
  152. package/dist/services/channels/providers/whatsapp/normalizer.js.map +0 -1
  153. package/dist/services/channels/providers/whatsapp/session.d.ts +0 -9
  154. package/dist/services/channels/providers/whatsapp/session.d.ts.map +0 -1
  155. package/dist/services/channels/providers/whatsapp/session.js +0 -118
  156. package/dist/services/channels/providers/whatsapp/session.js.map +0 -1
  157. package/dist/services/channels/providers/whatsapp/types.d.ts +0 -23
  158. package/dist/services/channels/providers/whatsapp/types.d.ts.map +0 -1
  159. package/dist/services/channels/providers/whatsapp/types.js +0 -3
  160. package/dist/services/channels/providers/whatsapp/types.js.map +0 -1
  161. package/dist/services/channels/reconnect.d.ts +0 -23
  162. package/dist/services/channels/reconnect.d.ts.map +0 -1
  163. package/dist/services/channels/reconnect.js +0 -32
  164. package/dist/services/channels/reconnect.js.map +0 -1
  165. package/dist/services/channels/status-reactions.d.ts +0 -27
  166. package/dist/services/channels/status-reactions.d.ts.map +0 -1
  167. package/dist/services/channels/status-reactions.js +0 -63
  168. package/dist/services/channels/status-reactions.js.map +0 -1
  169. package/dist/services/channels/types.d.ts +0 -16
  170. package/dist/services/channels/types.d.ts.map +0 -1
  171. package/dist/services/channels/types.js +0 -2
  172. package/dist/services/channels/types.js.map +0 -1
  173. package/dist/services/channels/typing-state.d.ts +0 -22
  174. package/dist/services/channels/typing-state.d.ts.map +0 -1
  175. package/dist/services/channels/typing-state.js +0 -88
  176. package/dist/services/channels/typing-state.js.map +0 -1
  177. package/dist/services/config/index.d.ts +0 -2426
  178. package/dist/services/config/index.d.ts.map +0 -1
  179. package/dist/services/config/index.js +0 -232
  180. package/dist/services/config/index.js.map +0 -1
  181. package/dist/services/config/schemas/agent.d.ts +0 -720
  182. package/dist/services/config/schemas/agent.d.ts.map +0 -1
  183. package/dist/services/config/schemas/agent.js +0 -86
  184. package/dist/services/config/schemas/agent.js.map +0 -1
  185. package/dist/services/config/schemas/auth.d.ts +0 -60
  186. package/dist/services/config/schemas/auth.d.ts.map +0 -1
  187. package/dist/services/config/schemas/auth.js +0 -18
  188. package/dist/services/config/schemas/auth.js.map +0 -1
  189. package/dist/services/config/schemas/channels.d.ts +0 -117
  190. package/dist/services/config/schemas/channels.d.ts.map +0 -1
  191. package/dist/services/config/schemas/channels.js +0 -22
  192. package/dist/services/config/schemas/channels.js.map +0 -1
  193. package/dist/services/config/schemas/cron.d.ts +0 -97
  194. package/dist/services/config/schemas/cron.d.ts.map +0 -1
  195. package/dist/services/config/schemas/cron.js +0 -18
  196. package/dist/services/config/schemas/cron.js.map +0 -1
  197. package/dist/services/config/schemas/features.d.ts +0 -43
  198. package/dist/services/config/schemas/features.d.ts.map +0 -1
  199. package/dist/services/config/schemas/features.js +0 -20
  200. package/dist/services/config/schemas/features.js.map +0 -1
  201. package/dist/services/config/schemas/index.d.ts +0 -24
  202. package/dist/services/config/schemas/index.d.ts.map +0 -1
  203. package/dist/services/config/schemas/index.js +0 -24
  204. package/dist/services/config/schemas/index.js.map +0 -1
  205. package/dist/services/config/schemas/mcp.d.ts +0 -31
  206. package/dist/services/config/schemas/mcp.d.ts.map +0 -1
  207. package/dist/services/config/schemas/mcp.js +0 -39
  208. package/dist/services/config/schemas/mcp.js.map +0 -1
  209. package/dist/services/config/schemas/primitives.d.ts +0 -13
  210. package/dist/services/config/schemas/primitives.d.ts.map +0 -1
  211. package/dist/services/config/schemas/primitives.js +0 -17
  212. package/dist/services/config/schemas/primitives.js.map +0 -1
  213. package/dist/services/config/schemas/providers.d.ts +0 -335
  214. package/dist/services/config/schemas/providers.d.ts.map +0 -1
  215. package/dist/services/config/schemas/providers.js +0 -27
  216. package/dist/services/config/schemas/providers.js.map +0 -1
  217. package/dist/services/config/schemas/storage.d.ts +0 -16
  218. package/dist/services/config/schemas/storage.d.ts.map +0 -1
  219. package/dist/services/config/schemas/storage.js +0 -9
  220. package/dist/services/config/schemas/storage.js.map +0 -1
  221. package/dist/services/config/schemas/webhooks.d.ts +0 -25
  222. package/dist/services/config/schemas/webhooks.d.ts.map +0 -1
  223. package/dist/services/config/schemas/webhooks.js +0 -12
  224. package/dist/services/config/schemas/webhooks.js.map +0 -1
  225. package/dist/services/cron/index.d.ts +0 -50
  226. package/dist/services/cron/index.d.ts.map +0 -1
  227. package/dist/services/cron/index.js +0 -460
  228. package/dist/services/cron/index.js.map +0 -1
  229. package/dist/services/log/index.d.ts +0 -14
  230. package/dist/services/log/index.d.ts.map +0 -1
  231. package/dist/services/log/index.js +0 -137
  232. package/dist/services/log/index.js.map +0 -1
  233. package/dist/services/mcp-client/index.d.ts +0 -37
  234. package/dist/services/mcp-client/index.d.ts.map +0 -1
  235. package/dist/services/mcp-client/index.js +0 -258
  236. package/dist/services/mcp-client/index.js.map +0 -1
  237. package/dist/services/media/extract-document.d.ts +0 -8
  238. package/dist/services/media/extract-document.d.ts.map +0 -1
  239. package/dist/services/media/extract-document.js +0 -85
  240. package/dist/services/media/extract-document.js.map +0 -1
  241. package/dist/services/media/index.d.ts +0 -21
  242. package/dist/services/media/index.d.ts.map +0 -1
  243. package/dist/services/media/index.js +0 -116
  244. package/dist/services/media/index.js.map +0 -1
  245. package/dist/services/media/providers/anthropic.d.ts +0 -6
  246. package/dist/services/media/providers/anthropic.d.ts.map +0 -1
  247. package/dist/services/media/providers/anthropic.js +0 -38
  248. package/dist/services/media/providers/anthropic.js.map +0 -1
  249. package/dist/services/media/providers/index.d.ts +0 -6
  250. package/dist/services/media/providers/index.d.ts.map +0 -1
  251. package/dist/services/media/providers/index.js +0 -15
  252. package/dist/services/media/providers/index.js.map +0 -1
  253. package/dist/services/media/providers/openai.d.ts +0 -6
  254. package/dist/services/media/providers/openai.d.ts.map +0 -1
  255. package/dist/services/media/providers/openai.js +0 -48
  256. package/dist/services/media/providers/openai.js.map +0 -1
  257. package/dist/services/media/providers/provider.d.ts +0 -5
  258. package/dist/services/media/providers/provider.d.ts.map +0 -1
  259. package/dist/services/media/providers/provider.js +0 -2
  260. package/dist/services/media/providers/provider.js.map +0 -1
  261. package/dist/services/memory/chunker.d.ts +0 -7
  262. package/dist/services/memory/chunker.d.ts.map +0 -1
  263. package/dist/services/memory/chunker.js +0 -46
  264. package/dist/services/memory/chunker.js.map +0 -1
  265. package/dist/services/memory/context.d.ts +0 -68
  266. package/dist/services/memory/context.d.ts.map +0 -1
  267. package/dist/services/memory/context.js +0 -223
  268. package/dist/services/memory/context.js.map +0 -1
  269. package/dist/services/memory/embedding.d.ts +0 -9
  270. package/dist/services/memory/embedding.d.ts.map +0 -1
  271. package/dist/services/memory/embedding.js +0 -49
  272. package/dist/services/memory/embedding.js.map +0 -1
  273. package/dist/services/memory/index.d.ts +0 -24
  274. package/dist/services/memory/index.d.ts.map +0 -1
  275. package/dist/services/memory/index.js +0 -140
  276. package/dist/services/memory/index.js.map +0 -1
  277. package/dist/services/memory/session-indexer.d.ts +0 -5
  278. package/dist/services/memory/session-indexer.d.ts.map +0 -1
  279. package/dist/services/memory/session-indexer.js +0 -62
  280. package/dist/services/memory/session-indexer.js.map +0 -1
  281. package/dist/services/memory/sqlite-storage.d.ts +0 -23
  282. package/dist/services/memory/sqlite-storage.d.ts.map +0 -1
  283. package/dist/services/memory/sqlite-storage.js +0 -75
  284. package/dist/services/memory/sqlite-storage.js.map +0 -1
  285. package/dist/services/memory/types.d.ts +0 -31
  286. package/dist/services/memory/types.d.ts.map +0 -1
  287. package/dist/services/memory/types.js +0 -2
  288. package/dist/services/memory/types.js.map +0 -1
  289. package/dist/services/web/index.d.ts +0 -9
  290. package/dist/services/web/index.d.ts.map +0 -1
  291. package/dist/services/web/index.js +0 -101
  292. package/dist/services/web/index.js.map +0 -1
  293. package/dist/vitest.config.d.ts +0 -3
  294. package/dist/vitest.config.d.ts.map +0 -1
  295. package/dist/vitest.config.js +0 -9
  296. package/dist/vitest.config.js.map +0 -1
@@ -1,534 +0,0 @@
1
- /**
2
- * Agent — PiAgent-powered runtime
3
- *
4
- * Features:
5
- * - PiAgent session persistence
6
- * - PiAgent ResourceLoader for skills/prompts
7
- * - Debug mode for inspecting tools, prompts, history
8
- * - Streaming events passthrough to bus (agent.onDelta, agent.onTool, agent.onCompleted)
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 { z } from 'zod';
45
- import path from 'node:path';
46
- import { register } from '../../gateway/decorators.js';
47
- import { createLogger } from '../../lib/logger.js';
48
- import { parseDirectives } from './directives.js';
49
- import { withTimeout } from '../../lib/timeout.js';
50
- import { interpolatePrompt } from './prompt-interpolate.js';
51
- import { truncate } from '../../lib/truncate.js';
52
- import { existsSync, promises as fs } from 'node:fs';
53
- import { getDataPaths } from '../../lib/paths.js';
54
- import { parseSessionKey } from '../../lib/subagent.js';
55
- // Pi SDK imports
56
- import { createAgentSession, SessionManager, SettingsManager, AuthStorage, ModelRegistry, DefaultResourceLoader, } from '@mariozechner/pi-coding-agent';
57
- import { createCustomTools } from './tools.js';
58
- import { loadChannelPersona } from './persona.js';
59
- import { resolveSkillPaths } from '../../lib/skills.js';
60
- import { matchesGlob } from '../../lib/glob.js';
61
- const log = createLogger('agent');
62
- // Hardcoded agent execution constants
63
- const EXECUTION_TIMEOUT_MS = 30 * 60 * 1000; // 30 minutes
64
- // ── AgentService ─────────────────────────────────────────────────────────────
65
- let AgentService = (() => {
66
- let _instanceExtraInitializers = [];
67
- let _execute_decorators;
68
- let _appendMessage_decorators;
69
- let _status_decorators;
70
- return class AgentService {
71
- static {
72
- const _metadata_1 = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
73
- _execute_decorators = [register('agent.execute', {
74
- description: 'Executes a task with the agent, optionally delegating to a subagent.',
75
- schema: z.object({
76
- task: z.string().describe('The task to execute.'),
77
- metadata: z.object({
78
- cwd: z.string().optional().describe('The current working directory to use for the agent.'),
79
- model: z.string().optional().describe('Model override in format provider:modelId.'),
80
- channelType: z.string().optional().describe('Type of channel (e.g., telegram, whatsapp).'),
81
- fromUserId: z.string().optional().describe('Sender user ID on the platform.'),
82
- fromUser: z.string().optional().describe('Sender display name.'),
83
- fromUserHandle: z.string().optional().describe('Sender @handle on the platform.'),
84
- botUserId: z.string().optional().describe('Bot user ID on the platform.'),
85
- botName: z.string().optional().describe('Bot display name.'),
86
- botHandle: z.string().optional().describe('Bot @handle on the platform.'),
87
- }).optional().describe('Optional metadata for the execution context.'),
88
- }).passthrough(),
89
- })];
90
- _appendMessage_decorators = [register('agent.appendMessage')];
91
- _status_decorators = [register('agent.status', {
92
- description: 'Return currently active agent session keys.',
93
- schema: z.object({ sessionKey: z.string().optional() }),
94
- })];
95
- __esDecorate(this, null, _execute_decorators, { kind: "method", name: "execute", static: false, private: false, access: { has: obj => "execute" in obj, get: obj => obj.execute }, metadata: _metadata_1 }, null, _instanceExtraInitializers);
96
- __esDecorate(this, null, _appendMessage_decorators, { kind: "method", name: "appendMessage", static: false, private: false, access: { has: obj => "appendMessage" in obj, get: obj => obj.appendMessage }, metadata: _metadata_1 }, null, _instanceExtraInitializers);
97
- __esDecorate(this, null, _status_decorators, { kind: "method", name: "status", static: false, private: false, access: { has: obj => "status" in obj, get: obj => obj.status }, metadata: _metadata_1 }, null, _instanceExtraInitializers);
98
- if (_metadata_1) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata_1 });
99
- }
100
- bus = __runInitializers(this, _instanceExtraInitializers);
101
- config;
102
- sessions = new Map();
103
- activeRuns = new Set();
104
- agentDir;
105
- authStorage;
106
- modelRegistry;
107
- settings;
108
- constructor(deps) {
109
- this.bus = deps.bus;
110
- this.config = deps.config;
111
- const paths = getDataPaths();
112
- this.agentDir = path.join(paths.dataDir, 'agent');
113
- // Use ~/.vargos/agent for auth and models (override PiAgent defaults)
114
- const authJsonPath = path.join(this.agentDir, 'auth.json');
115
- const modelsJsonPath = path.join(this.agentDir, 'models.json');
116
- this.authStorage = AuthStorage.create(authJsonPath);
117
- this.modelRegistry = ModelRegistry.create(this.authStorage, modelsJsonPath);
118
- // Report model loading errors instead of silently falling back
119
- const modelError = this.modelRegistry.getError();
120
- if (modelError) {
121
- throw new Error(`Failed to load models from ${modelsJsonPath}: ${modelError}`);
122
- }
123
- this.settings = SettingsManager.create(paths.dataDir, this.agentDir);
124
- // NOTE: SettingsManager loads ~/.vargos/agent/models.json which has the
125
- // authoritative provider + model definitions. Pi Agent is the source of truth.
126
- // Apply retry settings for transient error recovery
127
- this.settings.applyOverrides({
128
- retry: {
129
- enabled: true,
130
- maxRetries: 3,
131
- baseDelayMs: 1000,
132
- provider: {
133
- timeoutMs: 120000, // 2 min per API call
134
- maxRetries: 3,
135
- maxRetryDelayMs: 30000, // exponential backoff up to 30s
136
- },
137
- },
138
- });
139
- }
140
- /**
141
- * Persist retry settings to disk during boot
142
- */
143
- async start() {
144
- try {
145
- const settingsPath = path.join(this.agentDir, 'settings.json');
146
- const currentData = await fs.readFile(settingsPath, 'utf-8');
147
- const currentSettings = JSON.parse(currentData);
148
- const updated = {
149
- ...currentSettings,
150
- retry: {
151
- enabled: true,
152
- maxRetries: 3,
153
- baseDelayMs: 1000,
154
- provider: {
155
- timeoutMs: 120000,
156
- maxRetries: 3,
157
- maxRetryDelayMs: 30000,
158
- },
159
- },
160
- };
161
- await fs.writeFile(settingsPath, JSON.stringify(updated, null, 2), 'utf-8');
162
- log.debug('Agent retry settings persisted to settings.json');
163
- }
164
- catch (err) {
165
- log.warn(`Failed to persist retry settings: ${err instanceof Error ? err.message : String(err)}`);
166
- }
167
- }
168
- /**
169
- * agent.execute — Run a task
170
- *
171
- * Note: sessionKey is declared optional here because it's auto-injected by
172
- * wrapEventAsToolDefinition() when the agent calls this as a tool. Direct callers
173
- * (channels, cron, webhooks, TCP) still provide sessionKey via EventMap.
174
- *
175
- * Schema for bus event is different than runtime types AgentExecuteParams.
176
- * e.g. metadata is not injected here on purpose.
177
- */
178
- async execute(params) {
179
- if (!params.sessionKey) {
180
- throw new Error('sessionKey is required for agent.execute');
181
- }
182
- log.info(`execute: START ${params.sessionKey}`);
183
- const metadata = params.metadata ?? {};
184
- // Validate model override if provided
185
- if (metadata?.model) {
186
- log.debug(`Validating metadata model: ${metadata.model}`);
187
- this.validateModel(metadata.model);
188
- }
189
- const directives = parseDirectives(params.task);
190
- const task = interpolatePrompt(directives.cleaned || params.task);
191
- const session = await this.getOrCreateSession(params.sessionKey, params.metadata);
192
- // Set thinking level from task directives if present
193
- if (directives.thinkingLevel) {
194
- session.setThinkingLevel(directives.thinkingLevel);
195
- }
196
- // Log model being used by session
197
- log.info(`Using model: ${session.model?.provider}:${session.model?.id} (${session.model?.name})`);
198
- this.activeRuns.add(params.sessionKey);
199
- const startTime = Date.now();
200
- try {
201
- log.debug(`execute: calling session.prompt() for ${params.sessionKey}`);
202
- await withTimeout(session.prompt(task, { streamingBehavior: 'steer' }), EXECUTION_TIMEOUT_MS, `Agent execution timeout after ${EXECUTION_TIMEOUT_MS}ms`);
203
- log.debug(`execute: session.prompt() completed in ${Date.now() - startTime}ms`);
204
- }
205
- finally {
206
- this.activeRuns.delete(params.sessionKey);
207
- }
208
- const { content, error } = this.extractFinalAssistant(session);
209
- if (error) {
210
- log.error(`execute: ${params.sessionKey} ended with error: ${error}`);
211
- throw new Error(error);
212
- }
213
- log.info(`execute: END ${params.sessionKey} (${content.length} chars, ${Date.now() - startTime}ms)`);
214
- return { response: content };
215
- }
216
- /**
217
- * agent.appendMessage — Append message to session JSONL without executing agent.
218
- * Used for non-whitelisted messages (skipAgent=true) to record in history silently.
219
- * Internal only — not exposed as an agent tool.
220
- */
221
- async appendMessage(params) {
222
- const session = await this.getOrCreateSession(params.sessionKey, params.metadata);
223
- const sessionFile = session.sessionManager.getSessionFile();
224
- if (!sessionFile) {
225
- log.debug(`No session file for ${params.sessionKey}, skipping append`);
226
- return;
227
- }
228
- log.debug(`Appending message to session ${params.sessionKey} (no execution)`);
229
- session.sessionManager.appendMessage({
230
- timestamp: Date.now(),
231
- role: 'user',
232
- content: params.content,
233
- });
234
- session.exportToJsonl(sessionFile);
235
- }
236
- /**
237
- * agent.status — Return currently active agent session keys.
238
- */
239
- async status(_params) {
240
- return { activeRuns: Array.from(this.activeRuns) };
241
- }
242
- /**
243
- * Get or create AgentSession for sessionKey.
244
- */
245
- async getOrCreateSession(sessionKey, metadata) {
246
- const cached = this.sessions.get(sessionKey);
247
- if (cached)
248
- return cached;
249
- const paths = getDataPaths();
250
- const effectiveCwd = metadata?.cwd ?? paths.dataDir;
251
- const sessionDir = path.join(paths.sessionsDir, sessionKey.replace(/:/g, path.sep));
252
- const sessionManager = SessionManager.create(effectiveCwd, sessionDir);
253
- await fs.mkdir(sessionDir, { recursive: true });
254
- await fs.mkdir(this.agentDir, { recursive: true });
255
- const persona = await this.loadPersonaIfChannel(sessionKey);
256
- const customTools = await this.getCustomTools(sessionKey, persona?.meta.allowedTools);
257
- const rawSystemPrompt = await this.getSystemPrompt(sessionKey, metadata, persona?.body);
258
- const resourceLoader = await this.createResourceLoader(rawSystemPrompt, effectiveCwd);
259
- log.debug(`Creating agent session for ${sessionKey} in ${effectiveCwd}. (with ${customTools.length} tools and ${rawSystemPrompt?.length} chars system prompt).`);
260
- const { session } = await createAgentSession({
261
- cwd: effectiveCwd,
262
- agentDir: this.agentDir,
263
- sessionManager,
264
- settingsManager: this.settings,
265
- authStorage: this.authStorage,
266
- modelRegistry: this.modelRegistry,
267
- customTools,
268
- resourceLoader,
269
- });
270
- // Store system prompt in session directory
271
- if (process.env.LOG_LEVEL === 'debug') {
272
- log.debug(`Storing debug files (modelRegistry, settings, systemPrompt, customTools) in session directory: ${sessionDir}`);
273
- await Promise.all([
274
- fs.writeFile(path.join(sessionDir, `modelRegistry.json`), JSON.stringify(this.modelRegistry, null, 2), 'utf-8'),
275
- fs.writeFile(path.join(sessionDir, `settings.json`), JSON.stringify(this.settings, null, 2), 'utf-8'),
276
- fs.writeFile(path.join(sessionDir, `systemPrompt.md`), session.systemPrompt ?? '', 'utf-8'),
277
- fs.writeFile(path.join(sessionDir, `customTools.md`), customTools.map(tool => `- ${tool.name}: ${tool.description}`).join('\n'), 'utf-8'),
278
- ]);
279
- }
280
- this.subscribeToSessionEvents(session, sessionKey);
281
- this.sessions.set(sessionKey, session);
282
- return session;
283
- }
284
- /**
285
- * Subscribe to PiAgent sessionsubscription - emit to bus for streaming + debug logging.
286
- */
287
- subscribeToSessionEvents(session, sessionKey, _metadata) {
288
- session.subscribe((event) => {
289
- const eventType = event.type;
290
- // log.debug(` --- :: Agent Lifecycle = ${eventType} --- :: ${sessionKey} --- :: `);
291
- // Skip session-specific events (auto_retry_start, auto_retry_end) - not emitted as bus events
292
- if (eventType === 'auto_retry_start' || eventType === 'auto_retry_end') {
293
- return;
294
- }
295
- // Map PiAgent events to our bus events
296
- // Bridge PiAgent's untyped event structure to our typed EventMap
297
- switch (eventType) {
298
- case 'tool_execution_start': {
299
- const e = event;
300
- if (e.toolName) {
301
- this.bus.emit('agent.onTool', {
302
- sessionKey,
303
- toolName: e.toolName,
304
- phase: 'start',
305
- args: (e.args ?? {}),
306
- });
307
- }
308
- break;
309
- }
310
- case 'tool_execution_end': {
311
- const e = event;
312
- if (e.toolName) {
313
- this.bus.emit('agent.onTool', {
314
- sessionKey,
315
- toolName: e.toolName,
316
- phase: 'end',
317
- result: (e.result ?? {}),
318
- });
319
- }
320
- break;
321
- }
322
- case 'message_update': {
323
- const e = event;
324
- const delta = e.delta || e.text || '';
325
- if (delta) {
326
- this.bus.emit('agent.onDelta', { sessionKey, chunk: delta });
327
- }
328
- break;
329
- }
330
- case 'turn_end': {
331
- break;
332
- }
333
- case 'agent_end': {
334
- const { content, error } = this.extractFinalAssistant(session);
335
- if (error) {
336
- log.error(`agent_end with error for ${sessionKey}: ${error}`);
337
- this.bus.emit('agent.onCompleted', { sessionKey, success: false, error });
338
- }
339
- else {
340
- log.debug(` emitting agent.onCompleted with ${content.length} chars`);
341
- this.bus.emit('agent.onCompleted', { sessionKey, success: true, response: content });
342
- }
343
- break;
344
- }
345
- default: {
346
- break;
347
- }
348
- }
349
- });
350
- }
351
- /**
352
- * Create ResourceLoader. PiAgent's DefaultResourceLoader handles skills, themes, and
353
- * prompt templates. We override systemPrompt with our Vargos bootstrap files.
354
- */
355
- async createResourceLoader(systemPromptOverride, cwd) {
356
- const paths = getDataPaths();
357
- const effectiveCwd = cwd ?? paths.workspaceDir;
358
- // Only workspace + cwd here — Pi SDK already auto-loads <agentDir>/skills and <cwd>/.pi/skills.
359
- const skillPaths = resolveSkillPaths(paths.workspaceDir, ...(cwd ? [cwd] : []));
360
- const resourceLoader = new DefaultResourceLoader({
361
- cwd: effectiveCwd,
362
- agentDir: this.agentDir,
363
- settingsManager: this.settings,
364
- extensionFactories: [],
365
- additionalSkillPaths: skillPaths,
366
- noSkills: false,
367
- ...(systemPromptOverride && { systemPrompt: systemPromptOverride }),
368
- });
369
- await resourceLoader.reload();
370
- const { skills } = resourceLoader.getSkills();
371
- log.debug(`Resource loader loaded with ${skills.length} skills.`);
372
- return resourceLoader;
373
- }
374
- /**
375
- * Load persona for the given sessionKey if it maps to a configured channel. Subagent
376
- * sessionKeys naturally inherit because parseSessionKey strips the `:subagent:` suffix.
377
- * Cron / CLI / other types return null (no persona override applied).
378
- */
379
- async loadPersonaIfChannel(sessionKey) {
380
- const { type } = parseSessionKey(sessionKey);
381
- const isChannel = this.config.channels.some(c => c.id === type);
382
- if (!isChannel)
383
- return null;
384
- return loadChannelPersona(type);
385
- }
386
- /**
387
- * Build system prompt by merging bootstrap files from workspace and optional cwd, then
388
- * appending the channel persona body if provided.
389
- */
390
- async getSystemPrompt(sessionKey, metadata, personaBody) {
391
- const bootstrapFiles = ['AGENTS.md', 'SOUL.md', 'TOOLS.md'];
392
- const maxCharsPerFile = 6000;
393
- const dirs = this.collectBootstrapDirs(metadata);
394
- const filePathsToLoad = [];
395
- for (const dir of dirs) {
396
- for (const filename of bootstrapFiles) {
397
- filePathsToLoad.push({ dir, filename, path: path.join(dir, filename) });
398
- }
399
- }
400
- const fileContents = await Promise.all(filePathsToLoad.map(async (item) => {
401
- try {
402
- const content = await fs.readFile(item.path, 'utf-8');
403
- const truncated = truncate(content, maxCharsPerFile);
404
- log.debug(`Loaded ${item.dir}/${item.filename}: ${truncated.length} chars`);
405
- return {
406
- label: `<!-- ${item.dir}/${item.filename} -->`,
407
- content: truncated.trim(),
408
- };
409
- }
410
- catch {
411
- log.debug(`${item.dir}/${item.filename}: not found`);
412
- return null;
413
- }
414
- }));
415
- const sections = [];
416
- for (const result of fileContents) {
417
- if (result)
418
- sections.push(result.label, result.content, '');
419
- }
420
- if (personaBody) {
421
- sections.push('<!-- channel persona -->', personaBody.trim(), '');
422
- }
423
- if (sections.length === 0) {
424
- log.debug('No bootstrap files found, using PiAgent default');
425
- return undefined;
426
- }
427
- const prompt = sections.join('\n');
428
- const context = this.buildPromptContext(sessionKey, metadata);
429
- return interpolatePrompt(prompt, context);
430
- }
431
- /**
432
- * Load custom tools from bus callable events. When `allowedPatterns` is provided
433
- * (from a channel persona), filter the tool list down to names matching at least
434
- * one glob pattern. Empty/undefined patterns = all tools allowed.
435
- */
436
- async getCustomTools(sessionKey, allowedPatterns) {
437
- const tools = await createCustomTools(sessionKey, this.bus);
438
- if (!allowedPatterns?.length)
439
- return tools;
440
- return tools.filter(t => allowedPatterns.some(p => matchesGlob(p, t.name)));
441
- }
442
- /**
443
- * Validate model override if provided.
444
- */
445
- validateModel(modelSpec) {
446
- const [provider, modelId] = modelSpec.split(':');
447
- const model = this.modelRegistry.find(provider, modelId);
448
- if (!model) {
449
- throw new Error(`Model not found: ${modelSpec}. Expected format: provider:modelId`);
450
- }
451
- }
452
- /**
453
- * Build context variables for prompt interpolation from sessionKey and metadata.
454
- */
455
- buildPromptContext(sessionKey, metadata) {
456
- const { type: channelId, id: chatId } = parseSessionKey(sessionKey);
457
- return {
458
- SESSION_KEY: sessionKey,
459
- CHANNEL_ID: channelId,
460
- CHAT_ID: chatId,
461
- ...(metadata?.channelType && { CHANNEL_TYPE: metadata.channelType }),
462
- ...(metadata?.fromUserId && { USER_ID: metadata.fromUserId }),
463
- ...(metadata?.fromUser && { USER_NAME: metadata.fromUser }),
464
- ...(metadata?.fromUserHandle && { USER_HANDLE: metadata.fromUserHandle }),
465
- ...(metadata?.botUserId && { BOT_ID: metadata.botUserId }),
466
- ...(metadata?.botName && { BOT_NAME: metadata.botName }),
467
- ...(metadata?.botHandle && { BOT_HANDLE: metadata.botHandle }),
468
- };
469
- }
470
- /**
471
- * Collect directory paths in order: workspace first, then cwd if different.
472
- */
473
- collectBootstrapDirs(metadata) {
474
- const paths = getDataPaths();
475
- const workspaceDir = paths.workspaceDir;
476
- const dirs = [workspaceDir];
477
- if (metadata?.cwd && path.resolve(metadata.cwd) !== path.resolve(workspaceDir)) {
478
- dirs.push(metadata.cwd);
479
- }
480
- // Filter dirs that do not exist
481
- return dirs.filter(dir => existsSync(dir));
482
- }
483
- // ── Private Helpers ────────────────────────────────────────────────────────
484
- /**
485
- * Extract the final assistant message: text content + error (when stopReason === 'error').
486
- * Pi SDK records inference failures (e.g. missing API key) as assistant messages with
487
- * empty content and `errorMessage` populated, instead of throwing — without inspecting
488
- * `stopReason`/`errorMessage` here, those would surface as silent empty completions.
489
- */
490
- extractFinalAssistant(session) {
491
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
492
- const messages = session.state?.messages || [];
493
- for (let i = messages.length - 1; i >= 0; i--) {
494
- const msg = messages[i];
495
- if (msg?.role !== 'assistant')
496
- continue;
497
- const error = msg.stopReason === 'error'
498
- ? (msg.errorMessage ?? 'unknown inference error')
499
- : undefined;
500
- let content = '';
501
- if (typeof msg.content === 'string') {
502
- content = msg.content;
503
- }
504
- else if (Array.isArray(msg.content)) {
505
- content = msg.content
506
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
507
- .filter((block) => block.type === 'text')
508
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
509
- .map((block) => block.text || '')
510
- .filter(Boolean)
511
- .join('\n');
512
- }
513
- return error ? { content, error } : { content };
514
- }
515
- return { content: '' };
516
- }
517
- stop() {
518
- this.sessions.forEach((_session) => {
519
- _session.dispose();
520
- });
521
- this.sessions.clear();
522
- }
523
- };
524
- })();
525
- export { AgentService };
526
- // ── Boot ─────────────────────────────────────────────────────────────────────
527
- export async function boot(bus) {
528
- const config = await bus.call('config.get', {});
529
- const runtime = new AgentService({ bus, config });
530
- bus.bootstrap(runtime);
531
- await runtime.start(); // Persist retry settings
532
- return { stop: () => runtime.stop() };
533
- }
534
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../services/agent/index.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- export interface PersonaMeta {
2
- /** Glob whitelist of customTools the channel agent can call. Empty/missing = all customTools allowed. */
3
- allowedTools?: string[];
4
- }
5
- export interface Persona {
6
- meta: PersonaMeta;
7
- body: string;
8
- }
9
- /**
10
- * Load persona for `channelId` from `~/.vargos/agents/<channelId>.md`. Re-reads from disk on
11
- * every call (no in-memory cache). Returns null when the file is missing, totally empty,
12
- * or has neither frontmatter nor body content.
13
- */
14
- export declare function loadChannelPersona(channelId: string): Promise<Persona | null>;
15
- //# sourceMappingURL=persona.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"persona.d.ts","sourceRoot":"","sources":["../../../services/agent/persona.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,WAAW;IAC1B,yGAAyG;IACzG,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAmCnF"}
@@ -1,63 +0,0 @@
1
- import { promises as fs, existsSync } from 'node:fs';
2
- import path from 'node:path';
3
- import { parseFrontmatter } from '../../lib/frontmatter.js';
4
- import { getDataPaths } from '../../lib/paths.js';
5
- import { createLogger } from '../../lib/logger.js';
6
- const log = createLogger('agent-persona');
7
- /**
8
- * Load persona for `channelId` from `~/.vargos/agents/<channelId>.md`. Re-reads from disk on
9
- * every call (no in-memory cache). Returns null when the file is missing, totally empty,
10
- * or has neither frontmatter nor body content.
11
- */
12
- export async function loadChannelPersona(channelId) {
13
- const files = await ensureChannelPersonaFiles([channelId]);
14
- if (files.length === 0) {
15
- log.warn(`agents/${channelId}.md is missing — not loaded`);
16
- return null;
17
- }
18
- const file = files?.[0];
19
- if (!file || !existsSync(file)) {
20
- log.warn(`agents/${channelId}.md exists but is not readable — not loaded`);
21
- return null;
22
- }
23
- const content = await fs.readFile(file, 'utf-8');
24
- if (!content || !content.trim()) {
25
- log.warn(`agents/${channelId}.md is empty — not loaded`);
26
- return null;
27
- }
28
- const parsed = parseFrontmatter(content);
29
- if (!parsed) {
30
- return { meta: {}, body: content.trim() };
31
- }
32
- const body = parsed.body.trim();
33
- const hasAllowedTools = Array.isArray(parsed.meta.allowedTools) && parsed.meta.allowedTools.length > 0;
34
- if (!body && !hasAllowedTools) {
35
- log.warn(`agents/${channelId}.md has no overrides — not loaded`);
36
- return null;
37
- }
38
- return { meta: parsed.meta, body };
39
- }
40
- /**
41
- * Ensure a persona file exists for each channel id. Copies `default.md` to
42
- * `~/.vargos/agents/<id>.md` if missing. Idempotent — runs at every startup.
43
- */
44
- async function ensureChannelPersonaFiles(channelIds) {
45
- const agentsDir = path.join(getDataPaths().dataDir, 'agents');
46
- const defaultFile = path.join(agentsDir, 'default.md');
47
- if (!existsSync(defaultFile)) {
48
- log.warn(`${defaultFile} missing — startup template seed should have copied it`);
49
- return [];
50
- }
51
- await fs.mkdir(agentsDir, { recursive: true });
52
- const files = [];
53
- for (const id of channelIds) {
54
- const file = path.join(agentsDir, `${id}.md`);
55
- if (!existsSync(file)) {
56
- await fs.copyFile(defaultFile, file);
57
- log.info(`seeded agent persona file: ${file}`);
58
- }
59
- files.push(file);
60
- }
61
- return files;
62
- }
63
- //# sourceMappingURL=persona.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"persona.js","sourceRoot":"","sources":["../../../services/agent/persona.ts"],"names":[],"mappings":"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"}