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,75 @@
1
+ import { access, mkdir, readFile, readdir, rm, writeFile } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { parseSkillMarkdown } from "./frontmatter.js";
4
+ import { resolveInstalledSkillsDir, resolvePathInput, resolveSkillLookupDirs, toSkillFileName, } from "./paths.js";
5
+ import { matchesSkillQuery } from "./search.js";
6
+ export async function loadSkill(nameOrPath) {
7
+ const path = await resolveSkillPath(nameOrPath);
8
+ return readSkillFile(path);
9
+ }
10
+ export async function listSkills(dir) {
11
+ const skills = [];
12
+ const seen = new Set();
13
+ for (const lookupDir of resolveSkillLookupDirs(dir)) {
14
+ for (const skill of await readSkillsFromDir(lookupDir)) {
15
+ if (seen.has(skill.name)) {
16
+ continue;
17
+ }
18
+ seen.add(skill.name);
19
+ skills.push(skill);
20
+ }
21
+ }
22
+ return skills;
23
+ }
24
+ export async function installSkill(content, name) {
25
+ const skillPath = join(resolveInstalledSkillsDir(), toSkillFileName(name));
26
+ parseSkillMarkdown(content, skillPath);
27
+ await mkdir(resolveInstalledSkillsDir(), { recursive: true });
28
+ await writeFile(skillPath, content, "utf8");
29
+ return skillPath;
30
+ }
31
+ export async function removeSkill(name) {
32
+ await rm(join(resolveInstalledSkillsDir(), toSkillFileName(name)), { force: true });
33
+ }
34
+ export async function searchSkills(query) {
35
+ return (await listSkills()).filter((skill) => matchesSkillQuery(skill, query));
36
+ }
37
+ export function injectSkillIntoPrompt(skill, basePrompt) {
38
+ const prompt = basePrompt.trimEnd();
39
+ const skillBlock = [`[Skill: ${skill.name}@${skill.version}]`, skill.content.trim()].join("\n");
40
+ return prompt === "" ? skillBlock : `${prompt}\n\n${skillBlock}`;
41
+ }
42
+ async function resolveSkillPath(nameOrPath) {
43
+ const candidates = looksLikePath(nameOrPath)
44
+ ? [resolvePathInput(nameOrPath)]
45
+ : resolveSkillLookupDirs().map((dir) => join(dir, toSkillFileName(nameOrPath)));
46
+ for (const candidate of candidates) {
47
+ if (await exists(candidate)) {
48
+ return candidate;
49
+ }
50
+ }
51
+ throw new Error(`Skill not found: ${nameOrPath}`);
52
+ }
53
+ async function readSkillsFromDir(dir) {
54
+ if (!(await exists(dir))) {
55
+ return [];
56
+ }
57
+ const names = (await readdir(dir)).filter((entry) => entry.toLowerCase().endsWith(".md")).sort();
58
+ return Promise.all(names.map((name) => readSkillFile(join(dir, name))));
59
+ }
60
+ async function readSkillFile(path) {
61
+ return parseSkillMarkdown(await readFile(path, "utf8"), path);
62
+ }
63
+ async function exists(path) {
64
+ try {
65
+ await access(path);
66
+ return true;
67
+ }
68
+ catch {
69
+ return false;
70
+ }
71
+ }
72
+ function looksLikePath(value) {
73
+ return /[\\/]/.test(value) || value.startsWith(".") || value.startsWith("~") || value.endsWith(".md");
74
+ }
75
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export type SkillDefinition = {
2
+ name: string;
3
+ description: string;
4
+ version: string;
5
+ triggers: string[];
6
+ content: string;
7
+ path: string;
8
+ };
9
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,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,18 @@
1
+ {
2
+ "name": "@va-claw/skills",
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": "tsc -b",
10
+ "test": "pnpm run build && node --test dist/*.test.js"
11
+ },
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist/index.d.ts",
15
+ "default": "./dist/index.js"
16
+ }
17
+ }
18
+ }
@@ -0,0 +1,180 @@
1
+ ---
2
+ name: install-va-claw
3
+ description: Install and configure va-claw — persistent memory, identity, and wake-loop for Claude Code, OpenCode, or Codex
4
+ version: 1.0.0
5
+ triggers:
6
+ - install va-claw
7
+ - setup va-claw
8
+ - va-claw
9
+ - persistent memory
10
+ - wake loop
11
+ - agent memory
12
+ ---
13
+
14
+ # Install va-claw
15
+
16
+ va-claw gives your CLI agent (Claude Code / OpenCode / Codex) persistent memory, a custom identity, and a scheduled wake-loop — turning it into a continuously running autonomous agent.
17
+
18
+ ## Prerequisites check
19
+
20
+ First verify Node.js version (must be ≥22):
21
+
22
+ ```bash
23
+ node --version
24
+ ```
25
+
26
+ Also verify you have at least one supported CLI agent installed:
27
+
28
+ ```bash
29
+ # Check Claude Code
30
+ claude --version 2>/dev/null && echo "✓ Claude Code found" || echo "✗ Claude Code not found"
31
+
32
+ # Check OpenCode
33
+ opencode --version 2>/dev/null && echo "✓ OpenCode found" || echo "✗ OpenCode not found"
34
+
35
+ # Check Codex
36
+ codex --version 2>/dev/null && echo "✓ Codex found" || echo "✗ Codex not found"
37
+ ```
38
+
39
+ ## Step 1 — Install va-claw globally
40
+
41
+ ```bash
42
+ npm install -g va-claw
43
+ ```
44
+
45
+ Verify the installation:
46
+
47
+ ```bash
48
+ va-claw --version
49
+ ```
50
+
51
+ ## Step 2 — Set up your identity
52
+
53
+ Run the interactive identity wizard. This defines your agent's name, persona, system prompt, wake prompt, and loop schedule:
54
+
55
+ ```bash
56
+ va-claw identity setup
57
+ ```
58
+
59
+ You'll be asked to provide:
60
+ - **Name**: Your agent's identity (e.g. "Nova")
61
+ - **Persona**: Tone and style (e.g. "Precise, calm, senior engineer mindset")
62
+ - **System prompt**: Base behavior (e.g. "Check memory before starting any task")
63
+ - **Wake prompt**: What to do on each scheduled wake (e.g. "Review repo health and summarize what needs attention")
64
+ - **Loop interval**: Cron expression (e.g. `0 * * * *` for hourly, `*/30 * * * *` for every 30 min)
65
+
66
+ ## Step 3 — Install identity into your CLI agents
67
+
68
+ ```bash
69
+ # Install for all detected agents
70
+ va-claw install
71
+
72
+ # Or target a specific agent
73
+ va-claw install --for claude-code
74
+ va-claw install --for opencode
75
+ va-claw install --for codex
76
+ ```
77
+
78
+ This injects your identity into:
79
+ - `~/.claude/CLAUDE.md` (Claude Code)
80
+ - `~/.codex/instructions.md` (Codex)
81
+ - OpenCode config (auto-detected)
82
+
83
+ ## Step 4 — Start the wake-loop daemon
84
+
85
+ ```bash
86
+ va-claw start
87
+ ```
88
+
89
+ Check it's running:
90
+
91
+ ```bash
92
+ va-claw status
93
+ ```
94
+
95
+ ## Optional: Connect to Discord
96
+
97
+ To receive wake outputs and send commands via Discord:
98
+
99
+ ```bash
100
+ va-claw channel discord setup
101
+ # Follow the prompts to enter your bot token and channel ID
102
+ va-claw channel discord start
103
+ ```
104
+
105
+ Get a Discord bot token at: https://discord.com/developers/applications
106
+
107
+ ## Optional: Connect to Telegram
108
+
109
+ ```bash
110
+ va-claw channel telegram setup --token <your-bot-token>
111
+ va-claw channel telegram start
112
+ ```
113
+
114
+ Get a Telegram bot token from @BotFather: https://t.me/BotFather
115
+
116
+ ## Optional: Connect to Slack
117
+
118
+ ```bash
119
+ va-claw channel slack setup \
120
+ --bot-token xoxb-your-bot-token \
121
+ --app-token xapp-your-app-token
122
+ va-claw channel slack start
123
+ ```
124
+
125
+ Create a Slack app at: https://api.slack.com/apps
126
+
127
+ ## Verify everything is working
128
+
129
+ ```bash
130
+ # Check daemon status
131
+ va-claw status
132
+
133
+ # Check memory (should be empty initially)
134
+ va-claw memory list
135
+
136
+ # Manually trigger a wake cycle to test
137
+ va-claw memory memorize "setup-complete" "va-claw installed and configured" --tags setup,milestone
138
+
139
+ # Search memory
140
+ va-claw memory recall "setup"
141
+ ```
142
+
143
+ ## Managing your agent
144
+
145
+ ```bash
146
+ # Stop the daemon
147
+ va-claw stop
148
+
149
+ # Update your identity config
150
+ va-claw identity edit
151
+
152
+ # View what's in memory
153
+ va-claw memory list
154
+ va-claw memory recall "<query>"
155
+
156
+ # Consolidate memory (prune forgotten, reinforce recent)
157
+ va-claw memory consolidate
158
+
159
+ # Get a memory reflection summary
160
+ va-claw memory reflect
161
+
162
+ # Uninstall (removes from CLI config files, stops daemon)
163
+ va-claw uninstall
164
+ ```
165
+
166
+ ## Troubleshooting
167
+
168
+ **"No CLI agent detected"**
169
+ Make sure `claude`, `opencode`, or `codex` is in your PATH. You can also force a specific command:
170
+ ```bash
171
+ VA_CLAW_CLI=claude-copilot va-claw start
172
+ ```
173
+
174
+ **Wake loop not triggering**
175
+ Check that your cron expression is valid. Use `va-claw status` to see last wake time.
176
+
177
+ **Memory not persisting**
178
+ Memory is stored at `~/.va-claw/memory.db`. Ensure the directory is writable.
179
+
180
+ For more help: https://github.com/Vadaski/va-claw/issues
@@ -0,0 +1,16 @@
1
+ export type ActionHandler = (...args: any[]) => void | Promise<void>;
2
+
3
+ export class Command {
4
+ readonly commands: Command[];
5
+ constructor(name?: string);
6
+ name(value: string): this;
7
+ description(value: string): this;
8
+ showHelpAfterError(): this;
9
+ command(spec: string): Command;
10
+ argument(spec: string, description?: string): this;
11
+ option(flags: string, description?: string, defaultValue?: string): this;
12
+ action(handler: ActionHandler): this;
13
+ parseAsync(argv: string[]): Promise<void>;
14
+ helpInformation(): string;
15
+ opts(): Record<string, unknown>;
16
+ }
@@ -0,0 +1,110 @@
1
+ class Command {
2
+ constructor(name = "") {
3
+ this._name = name;
4
+ this._description = "";
5
+ this._action = null;
6
+ this._arguments = [];
7
+ this._options = [];
8
+ this._parsedOptions = {};
9
+ this.commands = [];
10
+ this.parent = null;
11
+ }
12
+
13
+ name(value) { this._name = value; return this; }
14
+ description(value) { this._description = value; return this; }
15
+ showHelpAfterError() { return this; }
16
+
17
+ command(spec) {
18
+ const child = new Command(spec.trim().split(/\s+/)[0]);
19
+ child.parent = this;
20
+ this.commands.push(child);
21
+ return child;
22
+ }
23
+
24
+ argument(spec) {
25
+ this._arguments.push({ required: spec.startsWith("<"), name: spec.slice(1, -1) });
26
+ return this;
27
+ }
28
+
29
+ option(flags, _description, defaultValue) {
30
+ const long = flags.match(/--([a-z0-9-]+)/i)?.[1];
31
+ if (!long) throw new Error(`Unsupported option flags: ${flags}`);
32
+ const key = long.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
33
+ this._options.push({ key, flag: `--${long}`, requiresValue: /<.+>/.test(flags), defaultValue });
34
+ return this;
35
+ }
36
+
37
+ action(handler) { this._action = handler; return this; }
38
+ opts() { return { ...this._parsedOptions }; }
39
+
40
+ async parseAsync(argv) {
41
+ await this._dispatch(argv.slice(2));
42
+ }
43
+
44
+ async _dispatch(tokens) {
45
+ if (tokens.includes("--help") || tokens.includes("-h")) {
46
+ process.stdout.write(`${this.helpInformation()}\n`);
47
+ return;
48
+ }
49
+ const child = tokens[0] ? this.commands.find((command) => command._name === tokens[0]) : null;
50
+ if (child) {
51
+ await child._dispatch(tokens.slice(1));
52
+ return;
53
+ }
54
+ const { options, positionals } = this._parseTokens(tokens);
55
+ this._parsedOptions = options;
56
+ const required = this._arguments.filter((argument) => argument.required).length;
57
+ if (positionals.length < required) {
58
+ throw new Error(`Missing required argument for ${this._commandPath()}.`);
59
+ }
60
+ if (!this._action) {
61
+ process.stdout.write(`${this.helpInformation()}\n`);
62
+ return;
63
+ }
64
+ await this._action(...positionals, options, this);
65
+ }
66
+
67
+ _parseTokens(tokens) {
68
+ const options = Object.fromEntries(this._options.map((option) => [option.key, option.defaultValue]));
69
+ const positionals = [];
70
+ for (let index = 0; index < tokens.length; index += 1) {
71
+ const token = tokens[index];
72
+ const option = this._options.find((entry) => entry.flag === token);
73
+ if (!option) {
74
+ positionals.push(token);
75
+ continue;
76
+ }
77
+ options[option.key] = option.requiresValue ? tokens[++index] : true;
78
+ }
79
+ return { options, positionals };
80
+ }
81
+
82
+ helpInformation() {
83
+ const lines = [`Usage: ${this._commandPath()}${this.commands.length ? " [command]" : ""}`];
84
+ if (this._description) lines.push("", this._description);
85
+ const commands = this._flattenCommands();
86
+ if (commands.length) {
87
+ lines.push("", "Commands:");
88
+ for (const entry of commands) lines.push(` ${entry}`);
89
+ }
90
+ return lines.join("\n");
91
+ }
92
+
93
+ _flattenCommands(prefix = "") {
94
+ const nextPrefix = prefix ? `${prefix} ${this._name}`.trim() : this._name;
95
+ return this.commands.flatMap((command) => {
96
+ const label = `${nextPrefix} ${command._name}`.trim();
97
+ return [label, ...command._flattenCommands(nextPrefix)];
98
+ });
99
+ }
100
+
101
+ _commandPath() {
102
+ const names = [];
103
+ for (let current = this; current; current = current.parent) {
104
+ if (current._name) names.push(current._name);
105
+ }
106
+ return names.reverse().join(" ");
107
+ }
108
+ }
109
+
110
+ export { Command };
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "commander",
3
+ "version": "14.0.0-local",
4
+ "type": "module",
5
+ "exports": {
6
+ ".": {
7
+ "types": "./index.d.ts",
8
+ "default": "./index.js"
9
+ }
10
+ }
11
+ }
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2015-2021 Hexagon <github.com/Hexagon>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+