va-claw 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/CONTRIBUTING.md +36 -0
  2. package/LICENSE +21 -0
  3. package/README.md +337 -0
  4. package/bin/va-claw +3 -0
  5. package/bin/va-claw.mjs +3 -0
  6. package/docs/README.md +6 -0
  7. package/index.html +728 -0
  8. package/package.json +43 -0
  9. package/packages/channels/discord/dist/.tsbuildinfo +1 -0
  10. package/packages/channels/discord/dist/cli-runner.d.ts +18 -0
  11. package/packages/channels/discord/dist/cli-runner.d.ts.map +1 -0
  12. package/packages/channels/discord/dist/cli-runner.js +58 -0
  13. package/packages/channels/discord/dist/cli-runner.js.map +1 -0
  14. package/packages/channels/discord/dist/cli-runner.test.d.ts +2 -0
  15. package/packages/channels/discord/dist/cli-runner.test.d.ts.map +1 -0
  16. package/packages/channels/discord/dist/cli-runner.test.js +173 -0
  17. package/packages/channels/discord/dist/cli-runner.test.js.map +1 -0
  18. package/packages/channels/discord/dist/discord-client.d.ts +3 -0
  19. package/packages/channels/discord/dist/discord-client.d.ts.map +1 -0
  20. package/packages/channels/discord/dist/discord-client.js +49 -0
  21. package/packages/channels/discord/dist/discord-client.js.map +1 -0
  22. package/packages/channels/discord/dist/format.d.ts +6 -0
  23. package/packages/channels/discord/dist/format.d.ts.map +1 -0
  24. package/packages/channels/discord/dist/format.js +19 -0
  25. package/packages/channels/discord/dist/format.js.map +1 -0
  26. package/packages/channels/discord/dist/format.test.d.ts +2 -0
  27. package/packages/channels/discord/dist/format.test.d.ts.map +1 -0
  28. package/packages/channels/discord/dist/format.test.js +63 -0
  29. package/packages/channels/discord/dist/format.test.js.map +1 -0
  30. package/packages/channels/discord/dist/index.d.ts +3 -0
  31. package/packages/channels/discord/dist/index.d.ts.map +1 -0
  32. package/packages/channels/discord/dist/index.js +2 -0
  33. package/packages/channels/discord/dist/index.js.map +1 -0
  34. package/packages/channels/discord/dist/prompt.d.ts +4 -0
  35. package/packages/channels/discord/dist/prompt.d.ts.map +1 -0
  36. package/packages/channels/discord/dist/prompt.js +28 -0
  37. package/packages/channels/discord/dist/prompt.js.map +1 -0
  38. package/packages/channels/discord/dist/prompt.test.d.ts +2 -0
  39. package/packages/channels/discord/dist/prompt.test.d.ts.map +1 -0
  40. package/packages/channels/discord/dist/prompt.test.js +130 -0
  41. package/packages/channels/discord/dist/prompt.test.js.map +1 -0
  42. package/packages/channels/discord/dist/runtime.d.ts +11 -0
  43. package/packages/channels/discord/dist/runtime.d.ts.map +1 -0
  44. package/packages/channels/discord/dist/runtime.js +66 -0
  45. package/packages/channels/discord/dist/runtime.js.map +1 -0
  46. package/packages/channels/discord/dist/runtime.test.d.ts +2 -0
  47. package/packages/channels/discord/dist/runtime.test.d.ts.map +1 -0
  48. package/packages/channels/discord/dist/runtime.test.js +107 -0
  49. package/packages/channels/discord/dist/runtime.test.js.map +1 -0
  50. package/packages/channels/discord/dist/types.d.ts +30 -0
  51. package/packages/channels/discord/dist/types.d.ts.map +1 -0
  52. package/packages/channels/discord/dist/types.js +2 -0
  53. package/packages/channels/discord/dist/types.js.map +1 -0
  54. package/packages/channels/discord/package.json +21 -0
  55. package/packages/channels/dist/.tsbuildinfo +1 -0
  56. package/packages/channels/dist/index.d.ts +14 -0
  57. package/packages/channels/dist/index.d.ts.map +1 -0
  58. package/packages/channels/dist/index.js +25 -0
  59. package/packages/channels/dist/index.js.map +1 -0
  60. package/packages/channels/package.json +23 -0
  61. package/packages/channels/slack/dist/.tsbuildinfo +1 -0
  62. package/packages/channels/slack/dist/cli.d.ts +7 -0
  63. package/packages/channels/slack/dist/cli.d.ts.map +1 -0
  64. package/packages/channels/slack/dist/cli.js +53 -0
  65. package/packages/channels/slack/dist/cli.js.map +1 -0
  66. package/packages/channels/slack/dist/cli.test.d.ts +2 -0
  67. package/packages/channels/slack/dist/cli.test.d.ts.map +1 -0
  68. package/packages/channels/slack/dist/cli.test.js +43 -0
  69. package/packages/channels/slack/dist/cli.test.js.map +1 -0
  70. package/packages/channels/slack/dist/index.d.ts +7 -0
  71. package/packages/channels/slack/dist/index.d.ts.map +1 -0
  72. package/packages/channels/slack/dist/index.js +28 -0
  73. package/packages/channels/slack/dist/index.js.map +1 -0
  74. package/packages/channels/slack/dist/message.d.ts +15 -0
  75. package/packages/channels/slack/dist/message.d.ts.map +1 -0
  76. package/packages/channels/slack/dist/message.js +38 -0
  77. package/packages/channels/slack/dist/message.js.map +1 -0
  78. package/packages/channels/slack/dist/slack.test.d.ts +2 -0
  79. package/packages/channels/slack/dist/slack.test.d.ts.map +1 -0
  80. package/packages/channels/slack/dist/slack.test.js +23 -0
  81. package/packages/channels/slack/dist/slack.test.js.map +1 -0
  82. package/packages/channels/slack/dist/types.d.ts +22 -0
  83. package/packages/channels/slack/dist/types.d.ts.map +1 -0
  84. package/packages/channels/slack/dist/types.js +2 -0
  85. package/packages/channels/slack/dist/types.js.map +1 -0
  86. package/packages/channels/slack/package.json +21 -0
  87. package/packages/channels/telegram/dist/.tsbuildinfo +1 -0
  88. package/packages/channels/telegram/dist/cli.d.ts +13 -0
  89. package/packages/channels/telegram/dist/cli.d.ts.map +1 -0
  90. package/packages/channels/telegram/dist/cli.js +53 -0
  91. package/packages/channels/telegram/dist/cli.js.map +1 -0
  92. package/packages/channels/telegram/dist/cli.test.d.ts +2 -0
  93. package/packages/channels/telegram/dist/cli.test.d.ts.map +1 -0
  94. package/packages/channels/telegram/dist/cli.test.js +167 -0
  95. package/packages/channels/telegram/dist/cli.test.js.map +1 -0
  96. package/packages/channels/telegram/dist/index.d.ts +7 -0
  97. package/packages/channels/telegram/dist/index.d.ts.map +1 -0
  98. package/packages/channels/telegram/dist/index.js +21 -0
  99. package/packages/channels/telegram/dist/index.js.map +1 -0
  100. package/packages/channels/telegram/dist/message.d.ts +6 -0
  101. package/packages/channels/telegram/dist/message.d.ts.map +1 -0
  102. package/packages/channels/telegram/dist/message.js +33 -0
  103. package/packages/channels/telegram/dist/message.js.map +1 -0
  104. package/packages/channels/telegram/dist/telegram.test.d.ts +2 -0
  105. package/packages/channels/telegram/dist/telegram.test.d.ts.map +1 -0
  106. package/packages/channels/telegram/dist/telegram.test.js +25 -0
  107. package/packages/channels/telegram/dist/telegram.test.js.map +1 -0
  108. package/packages/channels/telegram/dist/types.d.ts +20 -0
  109. package/packages/channels/telegram/dist/types.d.ts.map +1 -0
  110. package/packages/channels/telegram/dist/types.js +2 -0
  111. package/packages/channels/telegram/dist/types.js.map +1 -0
  112. package/packages/channels/telegram/package.json +21 -0
  113. package/packages/cli/dist/.tsbuildinfo +1 -0
  114. package/packages/cli/dist/bin/va-claw.d.mts +3 -0
  115. package/packages/cli/dist/bin/va-claw.d.mts.map +1 -0
  116. package/packages/cli/dist/bin/va-claw.mjs +4 -0
  117. package/packages/cli/dist/bin/va-claw.mjs.map +1 -0
  118. package/packages/cli/dist/channel-handlers.d.ts +8 -0
  119. package/packages/cli/dist/channel-handlers.d.ts.map +1 -0
  120. package/packages/cli/dist/channel-handlers.js +80 -0
  121. package/packages/cli/dist/channel-handlers.js.map +1 -0
  122. package/packages/cli/dist/deps-exports.d.ts +3 -0
  123. package/packages/cli/dist/deps-exports.d.ts.map +1 -0
  124. package/packages/cli/dist/deps-exports.js +3 -0
  125. package/packages/cli/dist/deps-exports.js.map +1 -0
  126. package/packages/cli/dist/deps.d.ts +3 -0
  127. package/packages/cli/dist/deps.d.ts.map +1 -0
  128. package/packages/cli/dist/deps.js +81 -0
  129. package/packages/cli/dist/deps.js.map +1 -0
  130. package/packages/cli/dist/handlers.d.ts +33 -0
  131. package/packages/cli/dist/handlers.d.ts.map +1 -0
  132. package/packages/cli/dist/handlers.js +207 -0
  133. package/packages/cli/dist/handlers.js.map +1 -0
  134. package/packages/cli/dist/index.d.ts +10 -0
  135. package/packages/cli/dist/index.d.ts.map +1 -0
  136. package/packages/cli/dist/index.js +9 -0
  137. package/packages/cli/dist/index.js.map +1 -0
  138. package/packages/cli/dist/install-files.d.ts +11 -0
  139. package/packages/cli/dist/install-files.d.ts.map +1 -0
  140. package/packages/cli/dist/install-files.js +72 -0
  141. package/packages/cli/dist/install-files.js.map +1 -0
  142. package/packages/cli/dist/memory-status.d.ts +3 -0
  143. package/packages/cli/dist/memory-status.d.ts.map +1 -0
  144. package/packages/cli/dist/memory-status.js +45 -0
  145. package/packages/cli/dist/memory-status.js.map +1 -0
  146. package/packages/cli/dist/output.d.ts +8 -0
  147. package/packages/cli/dist/output.d.ts.map +1 -0
  148. package/packages/cli/dist/output.js +45 -0
  149. package/packages/cli/dist/output.js.map +1 -0
  150. package/packages/cli/dist/platform.d.ts +6 -0
  151. package/packages/cli/dist/platform.d.ts.map +1 -0
  152. package/packages/cli/dist/platform.js +31 -0
  153. package/packages/cli/dist/platform.js.map +1 -0
  154. package/packages/cli/dist/program.d.ts +5 -0
  155. package/packages/cli/dist/program.d.ts.map +1 -0
  156. package/packages/cli/dist/program.js +116 -0
  157. package/packages/cli/dist/program.js.map +1 -0
  158. package/packages/cli/dist/test-helpers.d.ts +7 -0
  159. package/packages/cli/dist/test-helpers.d.ts.map +1 -0
  160. package/packages/cli/dist/test-helpers.js +91 -0
  161. package/packages/cli/dist/test-helpers.js.map +1 -0
  162. package/packages/cli/dist/types.d.ts +82 -0
  163. package/packages/cli/dist/types.d.ts.map +1 -0
  164. package/packages/cli/dist/types.js +2 -0
  165. package/packages/cli/dist/types.js.map +1 -0
  166. package/packages/cli/dist/wait.d.ts +2 -0
  167. package/packages/cli/dist/wait.d.ts.map +1 -0
  168. package/packages/cli/dist/wait.js +25 -0
  169. package/packages/cli/dist/wait.js.map +1 -0
  170. package/packages/cli/package.json +29 -0
  171. package/packages/daemon/dist/.tsbuildinfo +1 -0
  172. package/packages/daemon/dist/cli-adapter.d.ts +14 -0
  173. package/packages/daemon/dist/cli-adapter.d.ts.map +1 -0
  174. package/packages/daemon/dist/cli-adapter.js +30 -0
  175. package/packages/daemon/dist/cli-adapter.js.map +1 -0
  176. package/packages/daemon/dist/index.d.ts +5 -0
  177. package/packages/daemon/dist/index.d.ts.map +1 -0
  178. package/packages/daemon/dist/index.js +4 -0
  179. package/packages/daemon/dist/index.js.map +1 -0
  180. package/packages/daemon/dist/runner.d.ts +2 -0
  181. package/packages/daemon/dist/runner.d.ts.map +1 -0
  182. package/packages/daemon/dist/runner.js +18 -0
  183. package/packages/daemon/dist/runner.js.map +1 -0
  184. package/packages/daemon/dist/runtime.d.ts +24 -0
  185. package/packages/daemon/dist/runtime.d.ts.map +1 -0
  186. package/packages/daemon/dist/runtime.js +83 -0
  187. package/packages/daemon/dist/runtime.js.map +1 -0
  188. package/packages/daemon/dist/service-files.d.ts +13 -0
  189. package/packages/daemon/dist/service-files.d.ts.map +1 -0
  190. package/packages/daemon/dist/service-files.js +84 -0
  191. package/packages/daemon/dist/service-files.js.map +1 -0
  192. package/packages/daemon/dist/service.d.ts +4 -0
  193. package/packages/daemon/dist/service.d.ts.map +1 -0
  194. package/packages/daemon/dist/service.js +31 -0
  195. package/packages/daemon/dist/service.js.map +1 -0
  196. package/packages/daemon/dist/types.d.ts +11 -0
  197. package/packages/daemon/dist/types.d.ts.map +1 -0
  198. package/packages/daemon/dist/types.js +2 -0
  199. package/packages/daemon/dist/types.js.map +1 -0
  200. package/packages/daemon/dist/wake-cycle.d.ts +17 -0
  201. package/packages/daemon/dist/wake-cycle.d.ts.map +1 -0
  202. package/packages/daemon/dist/wake-cycle.js +58 -0
  203. package/packages/daemon/dist/wake-cycle.js.map +1 -0
  204. package/packages/daemon/package.json +22 -0
  205. package/packages/identity/dist/.tsbuildinfo +1 -0
  206. package/packages/identity/dist/defaults.d.ts +5 -0
  207. package/packages/identity/dist/defaults.d.ts.map +1 -0
  208. package/packages/identity/dist/defaults.js +70 -0
  209. package/packages/identity/dist/defaults.js.map +1 -0
  210. package/packages/identity/dist/index.d.ts +6 -0
  211. package/packages/identity/dist/index.d.ts.map +1 -0
  212. package/packages/identity/dist/index.js +5 -0
  213. package/packages/identity/dist/index.js.map +1 -0
  214. package/packages/identity/dist/path.d.ts +3 -0
  215. package/packages/identity/dist/path.d.ts.map +1 -0
  216. package/packages/identity/dist/path.js +16 -0
  217. package/packages/identity/dist/path.js.map +1 -0
  218. package/packages/identity/dist/render.d.ts +4 -0
  219. package/packages/identity/dist/render.d.ts.map +1 -0
  220. package/packages/identity/dist/render.js +34 -0
  221. package/packages/identity/dist/render.js.map +1 -0
  222. package/packages/identity/dist/storage.d.ts +4 -0
  223. package/packages/identity/dist/storage.d.ts.map +1 -0
  224. package/packages/identity/dist/storage.js +27 -0
  225. package/packages/identity/dist/storage.js.map +1 -0
  226. package/packages/identity/dist/types.d.ts +29 -0
  227. package/packages/identity/dist/types.d.ts.map +1 -0
  228. package/packages/identity/dist/types.js +2 -0
  229. package/packages/identity/dist/types.js.map +1 -0
  230. package/packages/identity/dist/wizard.d.ts +3 -0
  231. package/packages/identity/dist/wizard.d.ts.map +1 -0
  232. package/packages/identity/dist/wizard.js +37 -0
  233. package/packages/identity/dist/wizard.js.map +1 -0
  234. package/packages/identity/package.json +21 -0
  235. package/packages/identity/test/identity.test.mjs +71 -0
  236. package/packages/identity/test/storage.test.mjs +91 -0
  237. package/packages/identity/vendor/clack-prompts/index.d.ts +10 -0
  238. package/packages/identity/vendor/clack-prompts/index.js +55 -0
  239. package/packages/identity/vendor/clack-prompts/package.json +11 -0
  240. package/packages/memory/dist/.tsbuildinfo +1 -0
  241. package/packages/memory/dist/default-store.d.ts +21 -0
  242. package/packages/memory/dist/default-store.d.ts.map +1 -0
  243. package/packages/memory/dist/default-store.js +52 -0
  244. package/packages/memory/dist/default-store.js.map +1 -0
  245. package/packages/memory/dist/embedding.d.ts +6 -0
  246. package/packages/memory/dist/embedding.d.ts.map +1 -0
  247. package/packages/memory/dist/embedding.js +56 -0
  248. package/packages/memory/dist/embedding.js.map +1 -0
  249. package/packages/memory/dist/forgetting-curve.d.ts +3 -0
  250. package/packages/memory/dist/forgetting-curve.d.ts.map +1 -0
  251. package/packages/memory/dist/forgetting-curve.js +21 -0
  252. package/packages/memory/dist/forgetting-curve.js.map +1 -0
  253. package/packages/memory/dist/index.d.ts +5 -0
  254. package/packages/memory/dist/index.d.ts.map +1 -0
  255. package/packages/memory/dist/index.js +4 -0
  256. package/packages/memory/dist/index.js.map +1 -0
  257. package/packages/memory/dist/memory-store.d.ts +39 -0
  258. package/packages/memory/dist/memory-store.d.ts.map +1 -0
  259. package/packages/memory/dist/memory-store.js +417 -0
  260. package/packages/memory/dist/memory-store.js.map +1 -0
  261. package/packages/memory/dist/sqlite.d.ts +19 -0
  262. package/packages/memory/dist/sqlite.d.ts.map +1 -0
  263. package/packages/memory/dist/sqlite.js +195 -0
  264. package/packages/memory/dist/sqlite.js.map +1 -0
  265. package/packages/memory/dist/types.d.ts +43 -0
  266. package/packages/memory/dist/types.d.ts.map +1 -0
  267. package/packages/memory/dist/types.js +2 -0
  268. package/packages/memory/dist/types.js.map +1 -0
  269. package/packages/memory/package.json +18 -0
  270. package/packages/skills/dist/.tsbuildinfo +1 -0
  271. package/packages/skills/dist/frontmatter.d.ts +3 -0
  272. package/packages/skills/dist/frontmatter.d.ts.map +1 -0
  273. package/packages/skills/dist/frontmatter.js +85 -0
  274. package/packages/skills/dist/frontmatter.js.map +1 -0
  275. package/packages/skills/dist/index.d.ts +6 -0
  276. package/packages/skills/dist/index.d.ts.map +1 -0
  277. package/packages/skills/dist/index.js +5 -0
  278. package/packages/skills/dist/index.js.map +1 -0
  279. package/packages/skills/dist/paths.d.ts +13 -0
  280. package/packages/skills/dist/paths.d.ts.map +1 -0
  281. package/packages/skills/dist/paths.js +43 -0
  282. package/packages/skills/dist/paths.js.map +1 -0
  283. package/packages/skills/dist/search.d.ts +3 -0
  284. package/packages/skills/dist/search.d.ts.map +1 -0
  285. package/packages/skills/dist/search.js +20 -0
  286. package/packages/skills/dist/search.js.map +1 -0
  287. package/packages/skills/dist/store.d.ts +8 -0
  288. package/packages/skills/dist/store.d.ts.map +1 -0
  289. package/packages/skills/dist/store.js +75 -0
  290. package/packages/skills/dist/store.js.map +1 -0
  291. package/packages/skills/dist/types.d.ts +9 -0
  292. package/packages/skills/dist/types.d.ts.map +1 -0
  293. package/packages/skills/dist/types.js +2 -0
  294. package/packages/skills/dist/types.js.map +1 -0
  295. package/packages/skills/package.json +18 -0
  296. package/skills/install-va-claw.md +180 -0
  297. package/vendor/commander/index.d.ts +16 -0
  298. package/vendor/commander/index.js +110 -0
  299. package/vendor/commander/package.json +11 -0
  300. package/vendor/croner/LICENSE +22 -0
  301. package/vendor/croner/README.md +339 -0
  302. package/vendor/croner/dist/croner.cjs +1 -0
  303. package/vendor/croner/dist/croner.d.cts +693 -0
  304. package/vendor/croner/dist/croner.d.ts +693 -0
  305. package/vendor/croner/dist/croner.js +1 -0
  306. package/vendor/croner/dist/croner.umd.js +1 -0
  307. package/vendor/croner/package.json +73 -0
  308. package/vendor/discord.js/index.d.ts +22 -0
  309. package/vendor/discord.js/index.js +37 -0
  310. package/vendor/discord.js/package.json +7 -0
  311. package/vendor/grammy/index.d.ts +43 -0
  312. package/vendor/grammy/index.js +89 -0
  313. package/vendor/grammy/package.json +7 -0
  314. package/vendor/slack-bolt/index.d.ts +29 -0
  315. package/vendor/slack-bolt/index.js +72 -0
  316. package/vendor/slack-bolt/package.json +7 -0
@@ -0,0 +1,83 @@
1
+ import { Cron } from "croner";
2
+ import { runWakeCycle } from "./wake-cycle.js";
3
+ const runtimeState = {
4
+ discord: null,
5
+ job: null,
6
+ wakeCount: 0,
7
+ };
8
+ let runtimeDeps = {
9
+ createScheduler(pattern, onTick) {
10
+ const job = new Cron(pattern, { catch: false }, () => {
11
+ void onTick().catch((error) => {
12
+ console.warn(`[va-claw/daemon] wake tick failed: ${String(error)}`);
13
+ });
14
+ });
15
+ return { stop: () => job.stop() };
16
+ },
17
+ async startDiscord(config) {
18
+ const moduleUrl = new URL("../../channels/discord/dist/index.js", import.meta.url);
19
+ const channelModule = await import(moduleUrl.href);
20
+ return channelModule.startDiscordChannel(config);
21
+ },
22
+ wake: runWakeCycle,
23
+ };
24
+ export async function startDaemon(config) {
25
+ await stopDaemon();
26
+ runtimeState.wakeCount = 0;
27
+ runtimeState.lastWakeAt = undefined;
28
+ runtimeState.discord = null;
29
+ if (config.channels.discord.autoStart) {
30
+ runtimeState.discord = await runtimeDeps.startDiscord({
31
+ token: config.channels.discord.token,
32
+ clientId: config.channels.discord.clientId,
33
+ cliCommand: config.channels.discord.cliCommand,
34
+ });
35
+ }
36
+ runtimeState.job = runtimeDeps.createScheduler(config.loopInterval, async () => {
37
+ const wokeAt = await runtimeDeps.wake(config);
38
+ if (!wokeAt) {
39
+ return;
40
+ }
41
+ runtimeState.lastWakeAt = wokeAt;
42
+ runtimeState.wakeCount += 1;
43
+ });
44
+ }
45
+ export async function stopDaemon() {
46
+ await runtimeState.discord?.stop();
47
+ runtimeState.discord = null;
48
+ runtimeState.job?.stop();
49
+ runtimeState.job = null;
50
+ }
51
+ export async function getDaemonStatus() {
52
+ return {
53
+ discord: runtimeState.discord?.status() ?? "disconnected",
54
+ running: runtimeState.job !== null,
55
+ lastWakeAt: runtimeState.lastWakeAt ? new Date(runtimeState.lastWakeAt) : undefined,
56
+ wakeCount: runtimeState.wakeCount,
57
+ };
58
+ }
59
+ export function setRuntimeDepsForTests(deps) {
60
+ runtimeDeps = { ...runtimeDeps, ...deps };
61
+ }
62
+ export function resetRuntimeDepsForTests() {
63
+ runtimeDeps = {
64
+ createScheduler(pattern, onTick) {
65
+ const job = new Cron(pattern, { catch: false }, () => {
66
+ void onTick().catch((error) => {
67
+ console.warn(`[va-claw/daemon] wake tick failed: ${String(error)}`);
68
+ });
69
+ });
70
+ return { stop: () => job.stop() };
71
+ },
72
+ async startDiscord() {
73
+ return {
74
+ status() {
75
+ return "connected";
76
+ },
77
+ async stop() { },
78
+ };
79
+ },
80
+ wake: runWakeCycle,
81
+ };
82
+ }
83
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAiB/C,MAAM,YAAY,GAKd;IACF,OAAO,EAAE,IAAI;IACb,GAAG,EAAE,IAAI;IACT,SAAS,EAAE,CAAC;CACb,CAAC;AAEF,IAAI,WAAW,GAAgB;IAC7B,eAAe,CAAC,OAAO,EAAE,MAAM;QAC7B,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE;YACnD,KAAK,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBACrC,OAAO,CAAC,IAAI,CAAC,sCAAsC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;IACpC,CAAC;IACD,KAAK,CAAC,YAAY,CAAC,MAAM;QACvB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,sCAAsC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnF,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,IAAI,CAEhD,CAAC;QACF,OAAO,aAAa,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,EAAE,YAAY;CACnB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAoB;IACpD,MAAM,UAAU,EAAE,CAAC;IACnB,YAAY,CAAC,SAAS,GAAG,CAAC,CAAC;IAC3B,YAAY,CAAC,UAAU,GAAG,SAAS,CAAC;IACpC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC;IAC5B,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACtC,YAAY,CAAC,OAAO,GAAG,MAAM,WAAW,CAAC,YAAY,CAAC;YACpD,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK;YACpC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ;YAC1C,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU;SAC/C,CAAC,CAAC;IACL,CAAC;IACD,YAAY,CAAC,GAAG,GAAG,WAAW,CAAC,eAAe,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QACD,YAAY,CAAC,UAAU,GAAG,MAAM,CAAC;QACjC,YAAY,CAAC,SAAS,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC;IACnC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC;IAC5B,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;IACzB,YAAY,CAAC,GAAG,GAAG,IAAI,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,OAAO;QACL,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,cAAc;QACzD,OAAO,EAAE,YAAY,CAAC,GAAG,KAAK,IAAI;QAClC,UAAU,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;QACnF,SAAS,EAAE,YAAY,CAAC,SAAS;KAClC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAA0B;IAC/D,WAAW,GAAG,EAAE,GAAG,WAAW,EAAE,GAAG,IAAI,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,WAAW,GAAG;QACZ,eAAe,CAAC,OAAO,EAAE,MAAM;YAC7B,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE;gBACnD,KAAK,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;oBACrC,OAAO,CAAC,IAAI,CAAC,sCAAsC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACtE,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACH,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QACpC,CAAC;QACD,KAAK,CAAC,YAAY;YAChB,OAAO;gBACL,MAAM;oBACJ,OAAO,WAAW,CAAC;gBACrB,CAAC;gBACD,KAAK,CAAC,IAAI,KAAI,CAAC;aAChB,CAAC;QACJ,CAAC;QACD,IAAI,EAAE,YAAY;KACnB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { ServiceType } from "./types.js";
2
+ export type ServiceDefinition = {
3
+ path: string;
4
+ content: string;
5
+ command: string;
6
+ args: string[];
7
+ };
8
+ export declare function createServiceDefinition(type: ServiceType): ServiceDefinition;
9
+ export declare function createUninstallCommand(type: ServiceType): {
10
+ command: string;
11
+ args: string[];
12
+ };
13
+ //# sourceMappingURL=service-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-files.d.ts","sourceRoot":"","sources":["../src/service-files.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,WAAW,GAAG,iBAAiB,CAqB5E;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,WAAW,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAW7F"}
@@ -0,0 +1,84 @@
1
+ import { homedir } from "node:os";
2
+ import { dirname, join, resolve } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ export function createServiceDefinition(type) {
5
+ const packageRoot = resolve(dirname(fileURLToPath(import.meta.url)), "..");
6
+ const repoRoot = resolve(packageRoot, "../..");
7
+ const runnerPath = join(packageRoot, "dist", "runner.js");
8
+ const nodePath = process.execPath;
9
+ if (type === "launchd") {
10
+ return {
11
+ path: join(homedir(), "Library", "LaunchAgents", "com.va-claw.daemon.plist"),
12
+ content: renderLaunchdPlist(repoRoot, [nodePath, runnerPath]),
13
+ command: "launchctl",
14
+ args: ["load", join(homedir(), "Library", "LaunchAgents", "com.va-claw.daemon.plist")],
15
+ };
16
+ }
17
+ return {
18
+ path: join(homedir(), ".config", "systemd", "user", "va-claw.service"),
19
+ content: renderSystemdUnit(repoRoot, [nodePath, runnerPath]),
20
+ command: "systemctl",
21
+ args: ["--user", "enable", "--now", "va-claw.service"],
22
+ };
23
+ }
24
+ export function createUninstallCommand(type) {
25
+ if (type === "launchd") {
26
+ return {
27
+ command: "launchctl",
28
+ args: ["unload", join(homedir(), "Library", "LaunchAgents", "com.va-claw.daemon.plist")],
29
+ };
30
+ }
31
+ return {
32
+ command: "systemctl",
33
+ args: ["--user", "disable", "--now", "va-claw.service"],
34
+ };
35
+ }
36
+ function renderLaunchdPlist(workingDirectory, programArguments) {
37
+ const argsXml = programArguments.map((arg) => ` <string>${escapeXml(arg)}</string>`).join("\n");
38
+ return `<?xml version="1.0" encoding="UTF-8"?>
39
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
40
+ <plist version="1.0">
41
+ <dict>
42
+ <key>Label</key>
43
+ <string>com.va-claw.daemon</string>
44
+ <key>ProgramArguments</key>
45
+ <array>
46
+ ${argsXml}
47
+ </array>
48
+ <key>WorkingDirectory</key>
49
+ <string>${escapeXml(workingDirectory)}</string>
50
+ <key>RunAtLoad</key>
51
+ <true/>
52
+ <key>KeepAlive</key>
53
+ <true/>
54
+ </dict>
55
+ </plist>
56
+ `;
57
+ }
58
+ function renderSystemdUnit(workingDirectory, programArguments) {
59
+ return `[Unit]
60
+ Description=va-claw daemon
61
+
62
+ [Service]
63
+ Type=simple
64
+ WorkingDirectory=${workingDirectory}
65
+ ExecStart=${programArguments.map(quoteSystemdArg).join(" ")}
66
+ Restart=always
67
+ RestartSec=5
68
+
69
+ [Install]
70
+ WantedBy=default.target
71
+ `;
72
+ }
73
+ function escapeXml(value) {
74
+ return value
75
+ .replaceAll("&", "&amp;")
76
+ .replaceAll("<", "&lt;")
77
+ .replaceAll(">", "&gt;")
78
+ .replaceAll("\"", "&quot;")
79
+ .replaceAll("'", "&apos;");
80
+ }
81
+ function quoteSystemdArg(value) {
82
+ return `'${value.replaceAll("'", `'\\''`)}'`;
83
+ }
84
+ //# sourceMappingURL=service-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-files.js","sourceRoot":"","sources":["../src/service-files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ServiceType } from "./types.js";
2
+ export declare function installDaemonService(type: ServiceType): Promise<void>;
3
+ export declare function uninstallDaemonService(type: ServiceType): Promise<void>;
4
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ3E;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ7E"}
@@ -0,0 +1,31 @@
1
+ import { mkdir, rm, writeFile } from "node:fs/promises";
2
+ import { dirname } from "node:path";
3
+ import { spawnSync } from "node:child_process";
4
+ import { createServiceDefinition, createUninstallCommand } from "./service-files.js";
5
+ export async function installDaemonService(type) {
6
+ const definition = createServiceDefinition(type);
7
+ await mkdir(dirname(definition.path), { recursive: true });
8
+ await writeFile(definition.path, definition.content, "utf8");
9
+ if (type === "systemd") {
10
+ runCommand("systemctl", ["--user", "daemon-reload"]);
11
+ }
12
+ runCommand(definition.command, definition.args);
13
+ }
14
+ export async function uninstallDaemonService(type) {
15
+ const definition = createServiceDefinition(type);
16
+ const uninstall = createUninstallCommand(type);
17
+ runCommand(uninstall.command, uninstall.args, true);
18
+ await rm(definition.path, { force: true });
19
+ if (type === "systemd") {
20
+ runCommand("systemctl", ["--user", "daemon-reload"], true);
21
+ }
22
+ }
23
+ function runCommand(command, args, allowFailure = false) {
24
+ const result = spawnSync(command, args, { encoding: "utf8" });
25
+ if (allowFailure || result.status === 0) {
26
+ return;
27
+ }
28
+ const stderr = result.stderr?.trim() || result.stdout?.trim() || "unknown error";
29
+ throw new Error(`[va-claw/daemon] command failed: ${command} ${args.join(" ")}: ${stderr}`);
30
+ }
31
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAGrF,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAiB;IAC1D,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAAiB;IAC5D,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAC/C,UAAU,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpD,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,UAAU,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,OAAe,EAAE,IAAc,EAAE,YAAY,GAAG,KAAK;IACvE,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9D,IAAI,YAAY,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,eAAe,CAAC;IACjF,MAAM,IAAI,KAAK,CAAC,oCAAoC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;AAC9F,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { VaClawConfig } from "../../identity/dist/index.js";
2
+ export type { VaClawConfig };
3
+ export type DiscordRuntimeStatus = "connected" | "disconnected";
4
+ export type DaemonStatus = {
5
+ running: boolean;
6
+ lastWakeAt?: Date;
7
+ wakeCount: number;
8
+ discord: DiscordRuntimeStatus;
9
+ };
10
+ export type ServiceType = "launchd" | "systemd";
11
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE,YAAY,EAAE,YAAY,EAAE,CAAC;AAE7B,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG,cAAc,CAAC;AAEhE,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,IAAI,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,oBAAoB,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import { spawnSync } from "node:child_process";
2
+ import { store } from "../../memory/dist/index.js";
3
+ import { injectSkillIntoPrompt, listSkills } from "../../skills/dist/index.js";
4
+ import type { VaClawConfig } from "./types.js";
5
+ import { detectCliAdapter } from "./cli-adapter.js";
6
+ type WakeDeps = {
7
+ detect?: typeof detectCliAdapter;
8
+ injectSkill?: typeof injectSkillIntoPrompt;
9
+ listSkills?: typeof listSkills;
10
+ spawn?: typeof spawnSync;
11
+ storeMemory?: typeof store;
12
+ warn?: (message: string) => void;
13
+ now?: () => Date;
14
+ };
15
+ export declare function runWakeCycle(config: VaClawConfig, deps?: WakeDeps): Promise<Date | null>;
16
+ export {};
17
+ //# sourceMappingURL=wake-cycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wake-cycle.d.ts","sourceRoot":"","sources":["../src/wake-cycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,UAAU,EAAqB,MAAM,4BAA4B,CAAC;AAClG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,KAAK,QAAQ,GAAG;IACd,MAAM,CAAC,EAAE,OAAO,gBAAgB,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,qBAAqB,CAAC;IAC3C,UAAU,CAAC,EAAE,OAAO,UAAU,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,SAAS,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,KAAK,CAAC;IAC3B,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB,CAAC;AAIF,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,IAAI,GAAE,QAAa,GAClB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAmCtB"}
@@ -0,0 +1,58 @@
1
+ import { spawnSync } from "node:child_process";
2
+ import { store } from "../../memory/dist/index.js";
3
+ import { injectSkillIntoPrompt, listSkills, matchesSkillQuery } from "../../skills/dist/index.js";
4
+ import { detectCliAdapter } from "./cli-adapter.js";
5
+ const DEFAULT_WARN = (message) => console.warn(message);
6
+ export async function runWakeCycle(config, deps = {}) {
7
+ const adapter = await (deps.detect ?? detectCliAdapter)({ warn: deps.warn });
8
+ if (!adapter) {
9
+ return null;
10
+ }
11
+ const prompt = await resolveWakePrompt(config, deps);
12
+ const spawnOptions = {
13
+ cwd: process.cwd(),
14
+ encoding: "utf8",
15
+ env: {
16
+ ...readProcessEnv(),
17
+ CLAUDECODE: undefined,
18
+ CLAUDE_CODE_SESSION: undefined,
19
+ },
20
+ maxBuffer: 10 * 1024 * 1024,
21
+ };
22
+ const result = (deps.spawn ?? spawnSync)(adapter.command, [...adapter.args, prompt], spawnOptions);
23
+ if (result.status !== 0) {
24
+ (deps.warn ?? DEFAULT_WARN)(`[va-claw/daemon] ${adapter.name} wake failed: ${readStderr(result.stderr)}`);
25
+ return null;
26
+ }
27
+ const wokeAt = (deps.now ?? (() => new Date()))();
28
+ await (deps.storeMemory ?? store)(result.stdout ?? "", {
29
+ source: "va-claw-daemon",
30
+ kind: "wake",
31
+ cli: adapter.name,
32
+ identity: config.name,
33
+ wokeAt: wokeAt.toISOString(),
34
+ });
35
+ return wokeAt;
36
+ }
37
+ function readStderr(stderr) {
38
+ if (typeof stderr === "string" && stderr.trim() !== "") {
39
+ return stderr.trim();
40
+ }
41
+ return "unknown error";
42
+ }
43
+ function readProcessEnv() {
44
+ return (process.env ?? {});
45
+ }
46
+ async function resolveWakePrompt(config, deps) {
47
+ try {
48
+ const skills = await (deps.listSkills ?? listSkills)();
49
+ return skills
50
+ .filter((skill) => matchesSkillQuery(skill, config.wakePrompt))
51
+ .reduce((prompt, skill) => (deps.injectSkill ?? injectSkillIntoPrompt)(skill, prompt), config.wakePrompt);
52
+ }
53
+ catch (error) {
54
+ (deps.warn ?? DEFAULT_WARN)(`[va-claw/daemon] skill injection skipped: ${String(error)}`);
55
+ return config.wakePrompt;
56
+ }
57
+ }
58
+ //# sourceMappingURL=wake-cycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wake-cycle.js","sourceRoot":"","sources":["../src/wake-cycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "@va-claw/daemon",
3
+ "version": "0.0.0",
4
+ "private": true,
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "scripts": {
9
+ "build": "pnpm --filter @va-claw/memory build && pnpm --filter @va-claw/identity build && pnpm --filter @va-claw/skills build && tsc -b",
10
+ "test": "pnpm run build && node --test dist/*.test.js"
11
+ },
12
+ "dependencies": {
13
+ "@va-claw/skills": "workspace:*",
14
+ "croner": "file:../../vendor/croner"
15
+ },
16
+ "exports": {
17
+ ".": {
18
+ "types": "./dist/index.d.ts",
19
+ "default": "./dist/index.js"
20
+ }
21
+ }
22
+ }
@@ -0,0 +1 @@
1
+ {"fileNames":["../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/.pnpm/typescript@file+vendor+typescript/node_modules/typescript/lib/lib.es2022.full.d.ts","../src/types.ts","../src/defaults.ts","../src/path.ts","../src/storage.ts","../src/render.ts","../../../node_modules/.pnpm/@clack+prompts@file+packages+identity+vendor+clack-prompts/node_modules/@clack/prompts/index.d.ts","../src/wizard.ts","../src/index.ts","../src/node-shims.d.ts"],"fileIdsList":[[64],[64,66,67,68,70],[72],[64,65],[64,65,66,72],[64,65,66,67,69]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"3cbad9a1ba4453443026ed38e4b8be018abb26565fa7c944376463ad9df07c41","impliedFormat":1},{"version":"52a3d3b056fc6672c71d157a432fd0682b116b00772a6087207d29d58b85dc2c","signature":"c482a05324bdb183855141754506b813194543afd068d934f4797c4a0299c67a","impliedFormat":99},{"version":"947b88b8d8a67f53cd15d07c3855d9448453ffc05c5e532df9c6a930efffa62a","signature":"e75d131033c262462c9d95cb452927bedec45d178ce7b4ae2344bb1277882b12","impliedFormat":99},{"version":"89f4981143c17db5aa1abacc85ba1d9607fb206114ea41dd4eb1452f4f053957","signature":"0c97e331361352bccfa2d24e2e46625953a190534cf16e8e566b9a84e07b12ff","impliedFormat":99},{"version":"ba2b17b0ed3742fdce7d63772ea3dfe14f419aa432fe8e784a377df7f08d9e04","signature":"7fbec62b38299205ec520f27fc18ab5315733001fb166a2523f32bd856fafea8","impliedFormat":99},{"version":"fcf1d5f15aef71294ca90c5321f68e94897757485a914d91465846032e6ced9d","signature":"7c5ed18df40661edfa1151e3002efde32b1cdf16818ba650fc1b55427274b020","impliedFormat":99},{"version":"84108a5e5393943ab7dfef25ce18098a69f91de0bb3e3453fc13adecf5fb6dbe","impliedFormat":99},{"version":"a37e9b076f8c51fea781dc3f2ce85bb01f7adb34c68f29d097ad6b563a533c40","signature":"184e07268b0c62bc9585ef90c2fb3971dd033e9a9d6b857768ecd5417a92d8ab","impliedFormat":99},{"version":"5f147b64f55d06de0028de65d93d1e63fc7e94b2376ceb44650e52c320e6dc74","signature":"fe19936f3b0e52495d441d5de9b5b00acb8816cd8d9db7523dd388dc9978ff3b","impliedFormat":99},{"version":"9ca565e3d4f92b82583b916dcd08c16b8b0a81b6ce0faa3dce644bacbf3a2ae8","impliedFormat":99}],"root":[[64,68],[70,72]],"options":{"composite":true,"declaration":true,"declarationMap":true,"module":199,"noEmitOnError":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","verbatimModuleSyntax":true},"referencedMap":[[65,1],[71,2],[66,3],[68,4],[67,5],[70,6]],"latestChangedDtsFile":"./types.d.ts","version":"5.9.3"}
@@ -0,0 +1,5 @@
1
+ import type { VaClawConfig } from "./types.js";
2
+ export declare const DEFAULT_LOOP_INTERVAL = "0 * * * *";
3
+ export declare function getDefaultIdentity(): VaClawConfig;
4
+ export declare function normalizeConfig(input: unknown): VaClawConfig;
5
+ //# sourceMappingURL=defaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,eAAO,MAAM,qBAAqB,cAAc,CAAC;AAqCjD,wBAAgB,kBAAkB,IAAI,YAAY,CAEjD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAsC5D"}
@@ -0,0 +1,70 @@
1
+ export const DEFAULT_LOOP_INTERVAL = "0 * * * *";
2
+ const DEFAULT_CONFIG = {
3
+ name: "va-claw",
4
+ persona: "A pragmatic CLI identity that values clarity, rigor, and continuity.",
5
+ systemPrompt: "You are va-claw. Be direct, honest about uncertainty, and keep actions aligned with the saved identity.",
6
+ wakePrompt: "Wake up, load the saved identity, and continue from the most recent remembered state.",
7
+ loopInterval: DEFAULT_LOOP_INTERVAL,
8
+ channels: {
9
+ discord: {
10
+ token: "",
11
+ clientId: "",
12
+ cliCommand: "",
13
+ autoStart: false,
14
+ },
15
+ telegram: {
16
+ token: "",
17
+ cliCommand: "",
18
+ },
19
+ slack: {
20
+ botToken: "",
21
+ appToken: "",
22
+ cliCommand: "",
23
+ },
24
+ },
25
+ };
26
+ function pickString(value, fallback) {
27
+ return typeof value === "string" ? value : fallback;
28
+ }
29
+ function pickBoolean(value, fallback) {
30
+ return typeof value === "boolean" ? value : fallback;
31
+ }
32
+ export function getDefaultIdentity() {
33
+ return { ...DEFAULT_CONFIG };
34
+ }
35
+ export function normalizeConfig(input) {
36
+ const base = getDefaultIdentity();
37
+ const data = input && typeof input === "object" ? input : {};
38
+ const channels = readObject(Reflect.get(data, "channels"));
39
+ const discord = readObject(Reflect.get(channels, "discord"));
40
+ const telegram = readObject(Reflect.get(channels, "telegram"));
41
+ const slack = readObject(Reflect.get(channels, "slack"));
42
+ return {
43
+ name: pickString(Reflect.get(data, "name"), base.name),
44
+ persona: pickString(Reflect.get(data, "persona"), base.persona),
45
+ systemPrompt: pickString(Reflect.get(data, "systemPrompt"), base.systemPrompt),
46
+ wakePrompt: pickString(Reflect.get(data, "wakePrompt"), base.wakePrompt),
47
+ loopInterval: pickString(Reflect.get(data, "loopInterval"), base.loopInterval),
48
+ channels: {
49
+ discord: {
50
+ token: pickString(Reflect.get(discord, "token"), base.channels.discord.token),
51
+ clientId: pickString(Reflect.get(discord, "clientId"), base.channels.discord.clientId),
52
+ cliCommand: pickString(Reflect.get(discord, "cliCommand"), base.channels.discord.cliCommand),
53
+ autoStart: pickBoolean(Reflect.get(discord, "autoStart"), base.channels.discord.autoStart),
54
+ },
55
+ telegram: {
56
+ token: pickString(Reflect.get(telegram, "token"), base.channels.telegram.token),
57
+ cliCommand: pickString(Reflect.get(telegram, "cliCommand"), base.channels.telegram.cliCommand),
58
+ },
59
+ slack: {
60
+ botToken: pickString(Reflect.get(slack, "botToken"), base.channels.slack.botToken),
61
+ appToken: pickString(Reflect.get(slack, "appToken"), base.channels.slack.appToken),
62
+ cliCommand: pickString(Reflect.get(slack, "cliCommand"), base.channels.slack.cliCommand),
63
+ },
64
+ },
65
+ };
66
+ }
67
+ function readObject(value) {
68
+ return value && typeof value === "object" ? value : {};
69
+ }
70
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export type { VaClawConfig } from "./types.js";
2
+ export { DEFAULT_CONFIG_PATH, resolveConfigPath } from "./path.js";
3
+ export { loadIdentity, saveIdentity } from "./storage.js";
4
+ export { toClaudeMdSnippet, toCodexSystemPrompt } from "./render.js";
5
+ export { runInstallWizard } from "./wizard.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { DEFAULT_CONFIG_PATH, resolveConfigPath } from "./path.js";
2
+ export { loadIdentity, saveIdentity } from "./storage.js";
3
+ export { toClaudeMdSnippet, toCodexSystemPrompt } from "./render.js";
4
+ export { runInstallWizard } from "./wizard.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const DEFAULT_CONFIG_PATH: string;
2
+ export declare function resolveConfigPath(configPath?: string): string;
3
+ //# sourceMappingURL=path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,mBAAmB,QAAgD,CAAC;AAEjF,wBAAgB,iBAAiB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAW7D"}
@@ -0,0 +1,16 @@
1
+ import { homedir } from "node:os";
2
+ import { resolve } from "node:path";
3
+ export const DEFAULT_CONFIG_PATH = resolve(homedir(), ".va-claw", "config.json");
4
+ export function resolveConfigPath(configPath) {
5
+ if (!configPath || configPath.trim() === "") {
6
+ return DEFAULT_CONFIG_PATH;
7
+ }
8
+ if (configPath === "~") {
9
+ return homedir();
10
+ }
11
+ if (configPath.startsWith("~/")) {
12
+ return resolve(homedir(), configPath.slice(2));
13
+ }
14
+ return resolve(configPath);
15
+ }
16
+ //# sourceMappingURL=path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.js","sourceRoot":"","sources":["../src/path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AAEjF,MAAM,UAAU,iBAAiB,CAAC,UAAmB;IACnD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC5C,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IACD,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QACvB,OAAO,OAAO,EAAE,CAAC;IACnB,CAAC;IACD,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { VaClawConfig } from "./types.js";
2
+ export declare function toClaudeMdSnippet(config: VaClawConfig): string;
3
+ export declare function toCodexSystemPrompt(config: VaClawConfig): string;
4
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAc9D;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAehE"}
@@ -0,0 +1,34 @@
1
+ import { normalizeConfig } from "./defaults.js";
2
+ function textBlock(label, value) {
3
+ return [label, "~~~text", value || "(empty)", "~~~"].join("\n");
4
+ }
5
+ export function toClaudeMdSnippet(config) {
6
+ const normalized = normalizeConfig(config);
7
+ return [
8
+ "<!-- va-claw:identity:start -->",
9
+ "## VaClaw Identity",
10
+ `- Name: ${normalized.name}`,
11
+ "",
12
+ "Persona:",
13
+ normalized.persona,
14
+ "",
15
+ textBlock("System Prompt:", normalized.systemPrompt),
16
+ "<!-- va-claw:identity:end -->",
17
+ ].join("\n");
18
+ }
19
+ export function toCodexSystemPrompt(config) {
20
+ const normalized = normalizeConfig(config);
21
+ return [
22
+ `Identity name: ${normalized.name}`,
23
+ `Persona: ${normalized.persona}`,
24
+ "",
25
+ "System prompt:",
26
+ normalized.systemPrompt,
27
+ "",
28
+ "Wake prompt:",
29
+ normalized.wakePrompt,
30
+ "",
31
+ `Loop interval: ${normalized.loopInterval}`,
32
+ ].join("\n");
33
+ }
34
+ //# sourceMappingURL=render.js.map