@redigg/redigg 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 (322) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +145 -0
  3. package/dist/agent/ResearchAgent.d.ts +35 -0
  4. package/dist/agent/ResearchAgent.js +818 -0
  5. package/dist/agent/ResearchAgent.js.map +1 -0
  6. package/dist/agent/subagent/SubAgent.d.ts +23 -0
  7. package/dist/agent/subagent/SubAgent.js +87 -0
  8. package/dist/agent/subagent/SubAgent.js.map +1 -0
  9. package/dist/agent/subagent/SubAgentManager.d.ts +19 -0
  10. package/dist/agent/subagent/SubAgentManager.js +40 -0
  11. package/dist/agent/subagent/SubAgentManager.js.map +1 -0
  12. package/dist/bin.d.ts +2 -0
  13. package/dist/bin.js +34 -0
  14. package/dist/bin.js.map +1 -0
  15. package/dist/cli.d.ts +1 -0
  16. package/dist/cli.js +179 -0
  17. package/dist/cli.js.map +1 -0
  18. package/dist/events/EventManager.d.ts +39 -0
  19. package/dist/events/EventManager.js +20 -0
  20. package/dist/events/EventManager.js.map +1 -0
  21. package/dist/gateway/index.d.ts +9 -0
  22. package/dist/gateway/index.js +474 -0
  23. package/dist/gateway/index.js.map +1 -0
  24. package/dist/index.d.ts +3 -0
  25. package/dist/index.js +97 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/llm/LLMClient.d.ts +30 -0
  28. package/dist/llm/LLMClient.js +21 -0
  29. package/dist/llm/LLMClient.js.map +1 -0
  30. package/dist/llm/OpenAIClient.d.ts +16 -0
  31. package/dist/llm/OpenAIClient.js +58 -0
  32. package/dist/llm/OpenAIClient.js.map +1 -0
  33. package/dist/memory/MemoryManager.d.ts +41 -0
  34. package/dist/memory/MemoryManager.js +221 -0
  35. package/dist/memory/MemoryManager.js.map +1 -0
  36. package/dist/memory/evolution/MemoryEvolutionSystem.d.ts +17 -0
  37. package/dist/memory/evolution/MemoryEvolutionSystem.js +71 -0
  38. package/dist/memory/evolution/MemoryEvolutionSystem.js.map +1 -0
  39. package/dist/memory/search/BM25Search.d.ts +22 -0
  40. package/dist/memory/search/BM25Search.js +61 -0
  41. package/dist/memory/search/BM25Search.js.map +1 -0
  42. package/dist/memory/structure/PageIndex.d.ts +26 -0
  43. package/dist/memory/structure/PageIndex.js +156 -0
  44. package/dist/memory/structure/PageIndex.js.map +1 -0
  45. package/dist/quality/QualityManager.d.ts +12 -0
  46. package/dist/quality/QualityManager.js +61 -0
  47. package/dist/quality/QualityManager.js.map +1 -0
  48. package/dist/scheduling/CronManager.d.ts +21 -0
  49. package/dist/scheduling/CronManager.js +66 -0
  50. package/dist/scheduling/CronManager.js.map +1 -0
  51. package/dist/session/SessionManager.d.ts +37 -0
  52. package/dist/session/SessionManager.js +238 -0
  53. package/dist/session/SessionManager.js.map +1 -0
  54. package/dist/skills/SkillManager.d.ts +31 -0
  55. package/dist/skills/SkillManager.js +254 -0
  56. package/dist/skills/SkillManager.js.map +1 -0
  57. package/dist/skills/agent/PACK.md +13 -0
  58. package/dist/skills/agent/agent-orchestration/SKILL.md +37 -0
  59. package/dist/skills/agent/agent-orchestration/index.d.ts +9 -0
  60. package/dist/skills/agent/agent-orchestration/index.js +70 -0
  61. package/dist/skills/agent/agent-orchestration/index.js.map +1 -0
  62. package/dist/skills/agent/evolution/SKILL.md +25 -0
  63. package/dist/skills/agent/evolution/index.d.ts +9 -0
  64. package/dist/skills/agent/evolution/index.js +57 -0
  65. package/dist/skills/agent/evolution/index.js.map +1 -0
  66. package/dist/skills/agent/heartbeat/index.d.ts +8 -0
  67. package/dist/skills/agent/heartbeat/index.js +44 -0
  68. package/dist/skills/agent/heartbeat/index.js.map +1 -0
  69. package/dist/skills/agent/memory-management/SKILL.md +40 -0
  70. package/dist/skills/agent/memory-management/index.d.ts +8 -0
  71. package/dist/skills/agent/memory-management/index.js +44 -0
  72. package/dist/skills/agent/memory-management/index.js.map +1 -0
  73. package/dist/skills/agent/scheduling/SKILL.md +33 -0
  74. package/dist/skills/agent/scheduling/index.d.ts +13 -0
  75. package/dist/skills/agent/scheduling/index.js +80 -0
  76. package/dist/skills/agent/scheduling/index.js.map +1 -0
  77. package/dist/skills/agent/session-management/SKILL.md +35 -0
  78. package/dist/skills/agent/session-management/index.d.ts +11 -0
  79. package/dist/skills/agent/session-management/index.js +54 -0
  80. package/dist/skills/agent/session-management/index.js.map +1 -0
  81. package/dist/skills/agent/skill-management/SKILL.md +31 -0
  82. package/dist/skills/agent/skill-management/index.d.ts +8 -0
  83. package/dist/skills/agent/skill-management/index.js +25 -0
  84. package/dist/skills/agent/skill-management/index.js.map +1 -0
  85. package/dist/skills/evolution/SkillEvolutionSystem.d.ts +12 -0
  86. package/dist/skills/evolution/SkillEvolutionSystem.js +157 -0
  87. package/dist/skills/evolution/SkillEvolutionSystem.js.map +1 -0
  88. package/dist/skills/lib/ScholarTool.d.ts +14 -0
  89. package/dist/skills/lib/ScholarTool.js +71 -0
  90. package/dist/skills/lib/ScholarTool.js.map +1 -0
  91. package/dist/skills/research/PACK.md +7 -0
  92. package/dist/skills/research/academic-survey-self-improve/SKILL.md +17 -0
  93. package/dist/skills/research/academic-survey-self-improve/index.d.ts +10 -0
  94. package/dist/skills/research/academic-survey-self-improve/index.js +75 -0
  95. package/dist/skills/research/academic-survey-self-improve/index.js.map +1 -0
  96. package/dist/skills/research/concept-explainer/SKILL.md +3 -0
  97. package/dist/skills/research/concept-explainer/index.d.ts +8 -0
  98. package/dist/skills/research/concept-explainer/index.js +37 -0
  99. package/dist/skills/research/concept-explainer/index.js.map +1 -0
  100. package/dist/skills/research/literature-review/SKILL.md +25 -0
  101. package/dist/skills/research/literature-review/index.d.ts +9 -0
  102. package/dist/skills/research/literature-review/index.js +132 -0
  103. package/dist/skills/research/literature-review/index.js.map +1 -0
  104. package/dist/skills/research/paper-analysis/SKILL.md +3 -0
  105. package/dist/skills/research/paper-analysis/index.d.ts +9 -0
  106. package/dist/skills/research/paper-analysis/index.js +64 -0
  107. package/dist/skills/research/paper-analysis/index.js.map +1 -0
  108. package/dist/skills/research/pdf-generator/SKILL.md +16 -0
  109. package/dist/skills/research/pdf-generator/index.d.ts +10 -0
  110. package/dist/skills/research/pdf-generator/index.js +88 -0
  111. package/dist/skills/research/pdf-generator/index.js.map +1 -0
  112. package/dist/skills/system/PACK.md +8 -0
  113. package/dist/skills/system/code-analysis/SKILL.md +43 -0
  114. package/dist/skills/system/code-analysis/index.d.ts +12 -0
  115. package/dist/skills/system/code-analysis/index.js +172 -0
  116. package/dist/skills/system/code-analysis/index.js.map +1 -0
  117. package/dist/skills/system/local-file-ops/SKILL.md +55 -0
  118. package/dist/skills/system/local-file-ops/index.d.ts +9 -0
  119. package/dist/skills/system/local-file-ops/index.js +111 -0
  120. package/dist/skills/system/local-file-ops/index.js.map +1 -0
  121. package/dist/skills/types.d.ts +41 -0
  122. package/dist/skills/types.js +2 -0
  123. package/dist/skills/types.js.map +1 -0
  124. package/dist/skills/vendor/PACK.md +11 -0
  125. package/dist/skills/vendor/agent-browser/CONTRIBUTING.md +63 -0
  126. package/dist/skills/vendor/agent-browser/SKILL.md +328 -0
  127. package/dist/skills/vendor/find-skills/SKILL.md +133 -0
  128. package/dist/skills/vendor/proactive-agent/SKILL-v2.3-backup.md +554 -0
  129. package/dist/skills/vendor/proactive-agent/SKILL-v3-draft.md +499 -0
  130. package/dist/skills/vendor/proactive-agent/SKILL.md +632 -0
  131. package/dist/skills/vendor/proactive-agent/assets/AGENTS.md +155 -0
  132. package/dist/skills/vendor/proactive-agent/assets/HEARTBEAT.md +128 -0
  133. package/dist/skills/vendor/proactive-agent/assets/MEMORY.md +47 -0
  134. package/dist/skills/vendor/proactive-agent/assets/ONBOARDING.md +103 -0
  135. package/dist/skills/vendor/proactive-agent/assets/SOUL.md +40 -0
  136. package/dist/skills/vendor/proactive-agent/assets/TOOLS.md +55 -0
  137. package/dist/skills/vendor/proactive-agent/assets/USER.md +36 -0
  138. package/dist/skills/vendor/proactive-agent/references/onboarding-flow.md +158 -0
  139. package/dist/skills/vendor/proactive-agent/references/security-patterns.md +109 -0
  140. package/dist/skills/vendor/searxng/CHANGELOG.md +38 -0
  141. package/dist/skills/vendor/searxng/PUBLISH.md +147 -0
  142. package/dist/skills/vendor/searxng/PUBLISHING_CHECKLIST.md +111 -0
  143. package/dist/skills/vendor/searxng/README.md +168 -0
  144. package/dist/skills/vendor/searxng/SKILL.md +69 -0
  145. package/dist/skills/vendor/self-improving-agent/.learnings/ERRORS.md +5 -0
  146. package/dist/skills/vendor/self-improving-agent/.learnings/FEATURE_REQUESTS.md +5 -0
  147. package/dist/skills/vendor/self-improving-agent/.learnings/LEARNINGS.md +5 -0
  148. package/dist/skills/vendor/self-improving-agent/SKILL.md +647 -0
  149. package/dist/skills/vendor/self-improving-agent/assets/LEARNINGS.md +45 -0
  150. package/dist/skills/vendor/self-improving-agent/assets/SKILL-TEMPLATE.md +177 -0
  151. package/dist/skills/vendor/self-improving-agent/hooks/openclaw/HOOK.md +23 -0
  152. package/dist/skills/vendor/self-improving-agent/hooks/openclaw/handler.d.ts +9 -0
  153. package/dist/skills/vendor/self-improving-agent/hooks/openclaw/handler.js +54 -0
  154. package/dist/skills/vendor/self-improving-agent/hooks/openclaw/handler.js.map +1 -0
  155. package/dist/skills/vendor/self-improving-agent/references/examples.md +374 -0
  156. package/dist/skills/vendor/self-improving-agent/references/hooks-setup.md +223 -0
  157. package/dist/skills/vendor/self-improving-agent/references/openclaw-integration.md +248 -0
  158. package/dist/skills/vendor/skill-vetter/SKILL.md +138 -0
  159. package/dist/src/agent/ResearchAgent.d.ts +35 -0
  160. package/dist/src/agent/ResearchAgent.js +818 -0
  161. package/dist/src/agent/ResearchAgent.js.map +1 -0
  162. package/dist/src/agent/subagent/SubAgent.d.ts +23 -0
  163. package/dist/src/agent/subagent/SubAgent.js +87 -0
  164. package/dist/src/agent/subagent/SubAgent.js.map +1 -0
  165. package/dist/src/agent/subagent/SubAgentManager.d.ts +19 -0
  166. package/dist/src/agent/subagent/SubAgentManager.js +40 -0
  167. package/dist/src/agent/subagent/SubAgentManager.js.map +1 -0
  168. package/dist/src/bin.d.ts +2 -0
  169. package/dist/src/bin.js +34 -0
  170. package/dist/src/bin.js.map +1 -0
  171. package/dist/src/cli.d.ts +1 -0
  172. package/dist/src/cli.js +179 -0
  173. package/dist/src/cli.js.map +1 -0
  174. package/dist/src/events/EventManager.d.ts +39 -0
  175. package/dist/src/events/EventManager.js +20 -0
  176. package/dist/src/events/EventManager.js.map +1 -0
  177. package/dist/src/gateway/index.d.ts +9 -0
  178. package/dist/src/gateway/index.js +474 -0
  179. package/dist/src/gateway/index.js.map +1 -0
  180. package/dist/src/index.d.ts +3 -0
  181. package/dist/src/index.js +105 -0
  182. package/dist/src/index.js.map +1 -0
  183. package/dist/src/llm/LLMClient.d.ts +30 -0
  184. package/dist/src/llm/LLMClient.js +21 -0
  185. package/dist/src/llm/LLMClient.js.map +1 -0
  186. package/dist/src/llm/OpenAIClient.d.ts +16 -0
  187. package/dist/src/llm/OpenAIClient.js +58 -0
  188. package/dist/src/llm/OpenAIClient.js.map +1 -0
  189. package/dist/src/memory/MemoryManager.d.ts +41 -0
  190. package/dist/src/memory/MemoryManager.js +221 -0
  191. package/dist/src/memory/MemoryManager.js.map +1 -0
  192. package/dist/src/memory/evolution/MemoryEvolutionSystem.d.ts +17 -0
  193. package/dist/src/memory/evolution/MemoryEvolutionSystem.js +71 -0
  194. package/dist/src/memory/evolution/MemoryEvolutionSystem.js.map +1 -0
  195. package/dist/src/memory/search/BM25Search.d.ts +22 -0
  196. package/dist/src/memory/search/BM25Search.js +61 -0
  197. package/dist/src/memory/search/BM25Search.js.map +1 -0
  198. package/dist/src/memory/structure/PageIndex.d.ts +26 -0
  199. package/dist/src/memory/structure/PageIndex.js +156 -0
  200. package/dist/src/memory/structure/PageIndex.js.map +1 -0
  201. package/dist/src/quality/QualityManager.d.ts +12 -0
  202. package/dist/src/quality/QualityManager.js +61 -0
  203. package/dist/src/quality/QualityManager.js.map +1 -0
  204. package/dist/src/scheduling/CronManager.d.ts +21 -0
  205. package/dist/src/scheduling/CronManager.js +66 -0
  206. package/dist/src/scheduling/CronManager.js.map +1 -0
  207. package/dist/src/session/SessionManager.d.ts +37 -0
  208. package/dist/src/session/SessionManager.js +238 -0
  209. package/dist/src/session/SessionManager.js.map +1 -0
  210. package/dist/src/skills/SkillManager.d.ts +33 -0
  211. package/dist/src/skills/SkillManager.js +260 -0
  212. package/dist/src/skills/SkillManager.js.map +1 -0
  213. package/dist/src/skills/evolution/SkillEvolutionSystem.d.ts +12 -0
  214. package/dist/src/skills/evolution/SkillEvolutionSystem.js +157 -0
  215. package/dist/src/skills/evolution/SkillEvolutionSystem.js.map +1 -0
  216. package/dist/src/skills/lib/ScholarTool.d.ts +14 -0
  217. package/dist/src/skills/lib/ScholarTool.js +71 -0
  218. package/dist/src/skills/lib/ScholarTool.js.map +1 -0
  219. package/dist/src/skills/types.d.ts +41 -0
  220. package/dist/src/skills/types.js +2 -0
  221. package/dist/src/skills/types.js.map +1 -0
  222. package/dist/src/storage/sqlite.d.ts +8 -0
  223. package/dist/src/storage/sqlite.js +73 -0
  224. package/dist/src/storage/sqlite.js.map +1 -0
  225. package/dist/src/utils/logger.d.ts +12 -0
  226. package/dist/src/utils/logger.js +53 -0
  227. package/dist/src/utils/logger.js.map +1 -0
  228. package/dist/storage/sqlite.d.ts +8 -0
  229. package/dist/storage/sqlite.js +73 -0
  230. package/dist/storage/sqlite.js.map +1 -0
  231. package/dist/utils/logger.d.ts +12 -0
  232. package/dist/utils/logger.js +53 -0
  233. package/dist/utils/logger.js.map +1 -0
  234. package/package.json +71 -0
  235. package/skills/agent/PACK.md +13 -0
  236. package/skills/agent/agent-orchestration/SKILL.md +37 -0
  237. package/skills/agent/agent-orchestration/index.ts +84 -0
  238. package/skills/agent/evolution/SKILL.md +25 -0
  239. package/skills/agent/evolution/index.ts +67 -0
  240. package/skills/agent/heartbeat/index.ts +48 -0
  241. package/skills/agent/memory-management/SKILL.md +40 -0
  242. package/skills/agent/memory-management/index.ts +48 -0
  243. package/skills/agent/scheduling/SKILL.md +33 -0
  244. package/skills/agent/scheduling/index.ts +97 -0
  245. package/skills/agent/session-management/SKILL.md +35 -0
  246. package/skills/agent/session-management/index.ts +65 -0
  247. package/skills/agent/skill-management/SKILL.md +31 -0
  248. package/skills/agent/skill-management/index.ts +32 -0
  249. package/skills/research/PACK.md +7 -0
  250. package/skills/research/academic-survey-self-improve/SKILL.md +17 -0
  251. package/skills/research/academic-survey-self-improve/index.ts +87 -0
  252. package/skills/research/concept-explainer/SKILL.md +3 -0
  253. package/skills/research/concept-explainer/index.ts +42 -0
  254. package/skills/research/literature-review/SKILL.md +25 -0
  255. package/skills/research/literature-review/index.ts +168 -0
  256. package/skills/research/paper-analysis/SKILL.md +3 -0
  257. package/skills/research/paper-analysis/index.ts +73 -0
  258. package/skills/research/pdf-generator/SKILL.md +16 -0
  259. package/skills/research/pdf-generator/index.d.ts +10 -0
  260. package/skills/research/pdf-generator/index.js +114 -0
  261. package/skills/research/pdf-generator/index.js.map +1 -0
  262. package/skills/research/pdf-generator/index.ts +97 -0
  263. package/skills/system/PACK.md +8 -0
  264. package/skills/system/code-analysis/SKILL.md +43 -0
  265. package/skills/system/code-analysis/index.ts +180 -0
  266. package/skills/system/local-file-ops/SKILL.md +55 -0
  267. package/skills/system/local-file-ops/index.ts +123 -0
  268. package/skills/vendor/PACK.md +11 -0
  269. package/skills/vendor/agent-browser/.clawhub/origin.json +7 -0
  270. package/skills/vendor/agent-browser/CONTRIBUTING.md +63 -0
  271. package/skills/vendor/agent-browser/SKILL.md +328 -0
  272. package/skills/vendor/agent-browser/_meta.json +6 -0
  273. package/skills/vendor/find-skills/.clawhub/origin.json +7 -0
  274. package/skills/vendor/find-skills/SKILL.md +133 -0
  275. package/skills/vendor/find-skills/_meta.json +6 -0
  276. package/skills/vendor/proactive-agent/.clawhub/origin.json +7 -0
  277. package/skills/vendor/proactive-agent/SKILL-v2.3-backup.md +554 -0
  278. package/skills/vendor/proactive-agent/SKILL-v3-draft.md +499 -0
  279. package/skills/vendor/proactive-agent/SKILL.md +632 -0
  280. package/skills/vendor/proactive-agent/_meta.json +6 -0
  281. package/skills/vendor/proactive-agent/assets/AGENTS.md +155 -0
  282. package/skills/vendor/proactive-agent/assets/HEARTBEAT.md +128 -0
  283. package/skills/vendor/proactive-agent/assets/MEMORY.md +47 -0
  284. package/skills/vendor/proactive-agent/assets/ONBOARDING.md +103 -0
  285. package/skills/vendor/proactive-agent/assets/SOUL.md +40 -0
  286. package/skills/vendor/proactive-agent/assets/TOOLS.md +55 -0
  287. package/skills/vendor/proactive-agent/assets/USER.md +36 -0
  288. package/skills/vendor/proactive-agent/references/onboarding-flow.md +158 -0
  289. package/skills/vendor/proactive-agent/references/security-patterns.md +109 -0
  290. package/skills/vendor/proactive-agent/scripts/security-audit.sh +149 -0
  291. package/skills/vendor/searxng/.clawdhub/origin.json +7 -0
  292. package/skills/vendor/searxng/CHANGELOG.md +38 -0
  293. package/skills/vendor/searxng/PUBLISH.md +147 -0
  294. package/skills/vendor/searxng/PUBLISHING_CHECKLIST.md +111 -0
  295. package/skills/vendor/searxng/README.md +168 -0
  296. package/skills/vendor/searxng/SKILL.md +69 -0
  297. package/skills/vendor/searxng/_meta.json +6 -0
  298. package/skills/vendor/searxng/config/settings.yml +36 -0
  299. package/skills/vendor/searxng/run-searxng.sh +48 -0
  300. package/skills/vendor/searxng/scripts/searxng.py +211 -0
  301. package/skills/vendor/self-improving-agent/.clawhub/origin.json +7 -0
  302. package/skills/vendor/self-improving-agent/.learnings/ERRORS.md +5 -0
  303. package/skills/vendor/self-improving-agent/.learnings/FEATURE_REQUESTS.md +5 -0
  304. package/skills/vendor/self-improving-agent/.learnings/LEARNINGS.md +5 -0
  305. package/skills/vendor/self-improving-agent/SKILL.md +647 -0
  306. package/skills/vendor/self-improving-agent/_meta.json +6 -0
  307. package/skills/vendor/self-improving-agent/assets/LEARNINGS.md +45 -0
  308. package/skills/vendor/self-improving-agent/assets/SKILL-TEMPLATE.md +177 -0
  309. package/skills/vendor/self-improving-agent/hooks/openclaw/HOOK.md +23 -0
  310. package/skills/vendor/self-improving-agent/hooks/openclaw/handler.js +56 -0
  311. package/skills/vendor/self-improving-agent/hooks/openclaw/handler.ts +62 -0
  312. package/skills/vendor/self-improving-agent/references/examples.md +374 -0
  313. package/skills/vendor/self-improving-agent/references/hooks-setup.md +223 -0
  314. package/skills/vendor/self-improving-agent/references/openclaw-integration.md +248 -0
  315. package/skills/vendor/self-improving-agent/scripts/activator.sh +20 -0
  316. package/skills/vendor/self-improving-agent/scripts/error-detector.sh +55 -0
  317. package/skills/vendor/self-improving-agent/scripts/extract-skill.sh +221 -0
  318. package/skills/vendor/skill-vetter/.clawhub/origin.json +7 -0
  319. package/skills/vendor/skill-vetter/SKILL.md +138 -0
  320. package/skills/vendor/skill-vetter/_meta.json +6 -0
  321. package/web/README.md +73 -0
  322. package/web/package.json +65 -0
@@ -0,0 +1,31 @@
1
+ import { Skill, SkillContext, SkillParams, SkillResult, SkillPack } from './types.js';
2
+ import { LLMClient } from '../llm/LLMClient.js';
3
+ import { MemoryManager } from '../memory/MemoryManager.js';
4
+ export declare class SkillManager {
5
+ private managers?;
6
+ private skills;
7
+ private packs;
8
+ private llm;
9
+ private memoryManager;
10
+ private workspace;
11
+ private skillsDir;
12
+ constructor(llm: LLMClient, memoryManager: MemoryManager, workspace?: string, managers?: SkillContext['managers']);
13
+ setManagers(managers: SkillContext['managers']): void;
14
+ registerSkill(skill: Skill): void;
15
+ registerPack(pack: SkillPack): void;
16
+ unloadPack(packId: string): void;
17
+ loadSkillsFromDisk(): Promise<void>;
18
+ private loadSkill;
19
+ private parseFrontmatter;
20
+ private loadPack;
21
+ getSkill(id: string): Skill | undefined;
22
+ getPack(id: string): SkillPack | undefined;
23
+ getAllSkills(): Skill[];
24
+ getAllPacks(): SkillPack[];
25
+ getSkillStats(): any;
26
+ executeSkill(skillId: string, userId: string, params: SkillParams, handlers?: {
27
+ onLog?: SkillContext['log'];
28
+ onProgress?: SkillContext['updateProgress'];
29
+ onTodo?: SkillContext['addTodo'];
30
+ } | SkillContext['log']): Promise<SkillResult>;
31
+ }
@@ -0,0 +1,254 @@
1
+ import { createLogger } from '../utils/logger.js';
2
+ import path from 'path';
3
+ import fs from 'fs/promises';
4
+ const logger = createLogger('SkillManager');
5
+ export class SkillManager {
6
+ managers;
7
+ skills = new Map();
8
+ packs = new Map();
9
+ llm;
10
+ memoryManager;
11
+ workspace;
12
+ skillsDir;
13
+ constructor(llm, memoryManager, workspace = process.cwd(), managers) {
14
+ this.managers = managers;
15
+ this.llm = llm;
16
+ this.memoryManager = memoryManager;
17
+ this.workspace = workspace;
18
+ this.skillsDir = path.join(workspace, 'skills');
19
+ // this.registerSkill(new PdfGeneratorSkill());
20
+ }
21
+ setManagers(managers) {
22
+ this.managers = managers;
23
+ }
24
+ registerSkill(skill) {
25
+ this.skills.set(skill.id, skill);
26
+ }
27
+ registerPack(pack) {
28
+ this.packs.set(pack.id, pack);
29
+ for (const skill of pack.skills) {
30
+ this.registerSkill(skill);
31
+ }
32
+ }
33
+ unloadPack(packId) {
34
+ const pack = this.packs.get(packId);
35
+ if (pack) {
36
+ for (const skill of pack.skills) {
37
+ this.skills.delete(skill.id);
38
+ }
39
+ this.packs.delete(packId);
40
+ }
41
+ }
42
+ async loadSkillsFromDisk() {
43
+ try {
44
+ const entries = await fs.readdir(this.skillsDir, { withFileTypes: true });
45
+ for (const entry of entries) {
46
+ if (entry.isDirectory()) {
47
+ const itemPath = path.join(this.skillsDir, entry.name);
48
+ // Check if it's a Pack (has PACK.md)
49
+ const packMdPath = path.join(itemPath, 'PACK.md');
50
+ try {
51
+ await fs.access(packMdPath);
52
+ // It's a Pack
53
+ await this.loadPack(itemPath, entry.name);
54
+ continue;
55
+ }
56
+ catch (e) {
57
+ // Not a pack
58
+ }
59
+ // Check if it's a Skill (has SKILL.md or just index.ts?)
60
+ const skillMdPath = path.join(itemPath, 'SKILL.md');
61
+ const indexTsPath = path.join(itemPath, 'index.ts');
62
+ try {
63
+ await fs.access(skillMdPath);
64
+ // It's a Skill with metadata
65
+ await this.loadSkill(itemPath);
66
+ }
67
+ catch (e) {
68
+ // Maybe it's a skill without metadata?
69
+ try {
70
+ await fs.access(indexTsPath);
71
+ await this.loadSkill(itemPath);
72
+ }
73
+ catch (e2) {
74
+ // Not a skill
75
+ }
76
+ }
77
+ }
78
+ }
79
+ }
80
+ catch (e) {
81
+ logger.warn(`Failed to load skills from disk: ${e}`);
82
+ }
83
+ }
84
+ async loadSkill(skillPath) {
85
+ const implPath = path.join(skillPath, 'index.ts');
86
+ const skillId = path.basename(skillPath);
87
+ // 1. Try loading executable skill (index.ts)
88
+ try {
89
+ await fs.access(implPath);
90
+ // Use pathToFileURL to handle ESM import properly on all platforms
91
+ const { pathToFileURL } = await import('url');
92
+ // Add a timestamp query param to bust the cache when reloading
93
+ const moduleUrl = `${pathToFileURL(implPath).href}?t=${Date.now()}`;
94
+ const module = await import(moduleUrl);
95
+ if (module.default) {
96
+ const skillInstance = new module.default();
97
+ // Check if it's a valid skill
98
+ if (skillInstance.id && skillInstance.execute) {
99
+ // Check for duplicates
100
+ if (this.skills.has(skillInstance.id)) {
101
+ logger.debug(`Overwriting existing skill: ${skillInstance.id}`);
102
+ }
103
+ this.skills.set(skillInstance.id, skillInstance);
104
+ logger.info(`Registered skill: ${skillInstance.id}`);
105
+ return skillInstance;
106
+ }
107
+ }
108
+ }
109
+ catch (e) {
110
+ // If index.ts missing or load failed, fall through to check SKILL.md
111
+ // But only log error if it existed but failed to load
112
+ if (e.code !== 'ENOENT') {
113
+ logger.error(`Failed to load skill from ${implPath}: ${e}`);
114
+ }
115
+ }
116
+ // 2. Try loading declarative skill (SKILL.md)
117
+ const skillMdPath = path.join(skillPath, 'SKILL.md');
118
+ try {
119
+ const content = await fs.readFile(skillMdPath, 'utf-8');
120
+ const frontmatter = this.parseFrontmatter(content);
121
+ if (frontmatter.name) {
122
+ const skill = {
123
+ id: skillId,
124
+ name: frontmatter.name,
125
+ description: frontmatter.description || 'No description provided.',
126
+ tags: ['vendor', 'declarative'],
127
+ execute: async (ctx, params) => {
128
+ return {
129
+ success: true,
130
+ message: `This is a declarative skill (${frontmatter.name}). It provides tools or capabilities but cannot be executed directly.`
131
+ };
132
+ }
133
+ };
134
+ this.skills.set(skill.id, skill);
135
+ logger.info(`Registered declarative skill: ${skill.id}`);
136
+ return skill;
137
+ }
138
+ }
139
+ catch (e) {
140
+ // Ignore if SKILL.md missing
141
+ }
142
+ return null;
143
+ }
144
+ parseFrontmatter(content) {
145
+ const match = content.match(/^---\n([\s\S]*?)\n---/);
146
+ if (!match)
147
+ return {};
148
+ const yaml = match[1];
149
+ const result = {};
150
+ const nameMatch = yaml.match(/^name:\s*(.*)$/m);
151
+ if (nameMatch)
152
+ result.name = nameMatch[1].trim();
153
+ const descMatch = yaml.match(/^description:\s*(.*)$/m);
154
+ if (descMatch)
155
+ result.description = descMatch[1].trim();
156
+ return result;
157
+ }
158
+ async loadPack(packPath, packId) {
159
+ logger.info(`Loading skill pack: ${packId}`);
160
+ const pack = {
161
+ id: packId,
162
+ name: packId, // TODO: Parse from PACK.md
163
+ description: '',
164
+ skills: [],
165
+ path: packPath
166
+ };
167
+ // Scan for sub-directories which are skills
168
+ const entries = await fs.readdir(packPath, { withFileTypes: true });
169
+ for (const entry of entries) {
170
+ if (entry.isDirectory()) {
171
+ const skillPath = path.join(packPath, entry.name);
172
+ // Wait, if it's 'heartbeat' (no SKILL.md), loadSkill should still work because it looks for index.ts
173
+ // But verify loadSkill logic
174
+ const skill = await this.loadSkill(skillPath);
175
+ if (skill) {
176
+ // Assign packId to skill for organization
177
+ skill.packId = packId;
178
+ pack.skills.push(skill);
179
+ }
180
+ }
181
+ }
182
+ this.packs.set(pack.id, pack);
183
+ logger.info(`Registered pack: ${packId} with ${pack.skills.length} skills`);
184
+ }
185
+ getSkill(id) {
186
+ return this.skills.get(id);
187
+ }
188
+ getPack(id) {
189
+ return this.packs.get(id);
190
+ }
191
+ getAllSkills() {
192
+ return Array.from(this.skills.values());
193
+ }
194
+ getAllPacks() {
195
+ return Array.from(this.packs.values());
196
+ }
197
+ getSkillStats() {
198
+ return {
199
+ totalSkills: this.skills.size,
200
+ totalPacks: this.packs.size,
201
+ skills: Array.from(this.skills.values()).map(s => ({
202
+ id: s.id,
203
+ name: s.name,
204
+ packId: s.packId
205
+ })),
206
+ packs: Array.from(this.packs.values()).map(p => ({ id: p.id, skillsCount: p.skills.length }))
207
+ };
208
+ }
209
+ async executeSkill(skillId, userId, params, handlers) {
210
+ const skill = this.skills.get(skillId);
211
+ if (!skill) {
212
+ throw new Error(`Skill ${skillId} not found`);
213
+ }
214
+ // Handle legacy signature where 4th arg was just onLog function
215
+ let onLog = handlers;
216
+ let onProgress = undefined;
217
+ let onTodo = undefined;
218
+ if (typeof handlers === 'object' && handlers !== null && !('apply' in handlers)) {
219
+ onLog = handlers.onLog;
220
+ onProgress = handlers.onProgress;
221
+ onTodo = handlers.onTodo;
222
+ }
223
+ else if (typeof handlers === 'function') {
224
+ onLog = handlers;
225
+ }
226
+ const context = {
227
+ llm: this.llm,
228
+ memory: this.memoryManager,
229
+ workspace: this.workspace,
230
+ userId,
231
+ managers: this.managers,
232
+ log: onLog || ((type, content, metadata) => {
233
+ logger.info(`[Skill:${skillId}] [${type}] ${content}`, metadata || '');
234
+ }),
235
+ updateProgress: onProgress || (async (progress, description, metadata) => {
236
+ logger.info(`[Skill:${skillId}] [PROGRESS] ${progress}% - ${description}`, metadata);
237
+ }),
238
+ addTodo: onTodo || (async (content, priority, step_number) => {
239
+ logger.info(`[Skill:${skillId}] [TODO] [${priority}] ${content} (step ${step_number})`);
240
+ }),
241
+ updateTodo: async (todoId, status, content) => {
242
+ logger.info(`[Skill:${skillId}] [TODO_UPDATE] ${todoId} -> ${status}`);
243
+ }
244
+ };
245
+ try {
246
+ return await skill.execute(context, params);
247
+ }
248
+ catch (error) {
249
+ context.log('error', `Execution failed: ${error}`);
250
+ throw error;
251
+ }
252
+ }
253
+ }
254
+ //# sourceMappingURL=SkillManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkillManager.js","sourceRoot":"","sources":["../../src/skills/SkillManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,aAAa,CAAC;AAE7B,MAAM,MAAM,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;AAE5C,MAAM,OAAO,YAAY;IAYb;IAXF,MAAM,GAAuB,IAAI,GAAG,EAAE,CAAC;IACvC,KAAK,GAA2B,IAAI,GAAG,EAAE,CAAC;IAC1C,GAAG,CAAY;IACf,aAAa,CAAgB;IAC7B,SAAS,CAAS;IAClB,SAAS,CAAS;IAE1B,YACE,GAAc,EACd,aAA4B,EAC5B,YAAoB,OAAO,CAAC,GAAG,EAAE,EACzB,QAAmC;QAAnC,aAAQ,GAAR,QAAQ,CAA2B;QAE3C,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAChD,+CAA+C;IACjD,CAAC;IAEM,WAAW,CAAC,QAAkC;QACjD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAEM,aAAa,CAAC,KAAY;QAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAEM,YAAY,CAAC,IAAe;QACjC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAEM,UAAU,CAAC,MAAc;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,IAAI,EAAE,CAAC;YACT,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC/B,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,kBAAkB;QAC7B,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1E,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC1B,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;oBAEvD,qCAAqC;oBACrC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;oBAElD,IAAI,CAAC;wBACD,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;wBAC5B,cAAc;wBACd,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC1C,SAAS;oBACb,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACT,aAAa;oBACjB,CAAC;oBAED,yDAAyD;oBACzD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;oBACpD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;oBAEpD,IAAI,CAAC;wBACD,MAAM,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;wBAC7B,6BAA6B;wBAC7B,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBACnC,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACT,uCAAuC;wBACvC,IAAI,CAAC;4BACD,MAAM,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;4BAC7B,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;wBACnC,CAAC;wBAAC,OAAO,EAAE,EAAE,CAAC;4BACV,cAAc;wBAClB,CAAC;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,SAAiB;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEzC,6CAA6C;QAC7C,IAAI,CAAC;YACD,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1B,mEAAmE;YACnE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9C,+DAA+D;YAC/D,MAAM,SAAS,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;YACpE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YAEvC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC3C,8BAA8B;gBAC9B,IAAI,aAAa,CAAC,EAAE,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;oBAC5C,uBAAuB;oBACvB,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC;wBACpC,MAAM,CAAC,KAAK,CAAC,+BAA+B,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;oBACpE,CAAC;oBAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;oBACjD,MAAM,CAAC,IAAI,CAAC,qBAAqB,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;oBACrD,OAAO,aAAa,CAAC;gBACzB,CAAC;YACL,CAAC;QACL,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YACd,qEAAqE;YACrE,sDAAsD;YACtD,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACrB,MAAM,CAAC,KAAK,CAAC,6BAA6B,QAAQ,KAAK,CAAC,EAAE,CAAC,CAAC;YACjE,CAAC;QACL,CAAC;QAED,8CAA8C;QAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACrD,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACxD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAEnD,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC;gBACnB,MAAM,KAAK,GAAU;oBACjB,EAAE,EAAE,OAAO;oBACX,IAAI,EAAE,WAAW,CAAC,IAAI;oBACtB,WAAW,EAAE,WAAW,CAAC,WAAW,IAAI,0BAA0B;oBAClE,IAAI,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC;oBAC/B,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE;wBAC3B,OAAO;4BACH,OAAO,EAAE,IAAI;4BACb,OAAO,EAAE,gCAAgC,WAAW,CAAC,IAAI,uEAAuE;yBACnI,CAAC;oBACN,CAAC;iBACJ,CAAC;gBAEF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;gBACjC,MAAM,CAAC,IAAI,CAAC,iCAAiC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzD,OAAO,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,6BAA6B;QACjC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,gBAAgB,CAAC,OAAe;QACpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QAEtB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,MAAM,GAAQ,EAAE,CAAC;QAEvB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAChD,IAAI,SAAS;YAAE,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEjD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACvD,IAAI,SAAS;YAAE,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAExD,OAAO,MAAM,CAAC;IAClB,CAAC;IAGO,KAAK,CAAC,QAAQ,CAAC,QAAgB,EAAE,MAAc;QACrD,MAAM,CAAC,IAAI,CAAC,uBAAuB,MAAM,EAAE,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAc;YACpB,EAAE,EAAE,MAAM;YACV,IAAI,EAAE,MAAM,EAAE,2BAA2B;YACzC,WAAW,EAAE,EAAE;YACf,MAAM,EAAE,EAAE;YACV,IAAI,EAAE,QAAQ;SACjB,CAAC;QAEF,4CAA4C;QAC5C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACtB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAElD,qGAAqG;gBACrG,6BAA6B;gBAE7B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBAC9C,IAAI,KAAK,EAAE,CAAC;oBACR,0CAA0C;oBACzC,KAAa,CAAC,MAAM,GAAG,MAAM,CAAC;oBAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC5B,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,oBAAoB,MAAM,SAAS,IAAI,CAAC,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;IAC9E,CAAC;IAEM,QAAQ,CAAC,EAAU;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAEM,OAAO,CAAC,EAAU;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAEM,YAAY;QACjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAEM,WAAW;QAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAEM,aAAa;QAClB,OAAO;YACH,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;YAC7B,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YAC3B,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC/C,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAG,CAAS,CAAC,MAAM;aAC5B,CAAC,CAAC;YACH,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;SAChG,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,YAAY,CACvB,OAAe,EACf,MAAc,EACd,MAAmB,EACnB,QAIuB;QAEvB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,SAAS,OAAO,YAAY,CAAC,CAAC;QAChD,CAAC;QAED,gEAAgE;QAChE,IAAI,KAAK,GAAG,QAAe,CAAC;QAC5B,IAAI,UAAU,GAAG,SAAS,CAAC;QAC3B,IAAI,MAAM,GAAG,SAAS,CAAC;QAEvB,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,EAAE,CAAC;YAC9E,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;YACvB,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;YACjC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC7B,CAAC;aAAM,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;YACxC,KAAK,GAAG,QAAQ,CAAC;QACrB,CAAC;QAED,MAAM,OAAO,GAAiB;YAC5B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,MAAM,EAAE,IAAI,CAAC,aAAa;YAC1B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM;YACN,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;gBACzC,MAAM,CAAC,IAAI,CAAC,UAAU,OAAO,MAAM,IAAI,KAAK,OAAO,EAAE,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;YACzE,CAAC,CAAC;YACF,cAAc,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE;gBACvE,MAAM,CAAC,IAAI,CAAC,UAAU,OAAO,gBAAgB,QAAQ,OAAO,WAAW,EAAE,EAAE,QAAQ,CAAC,CAAC;YACvF,CAAC,CAAC;YACF,OAAO,EAAE,MAAM,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE;gBAC3D,MAAM,CAAC,IAAI,CAAC,UAAU,OAAO,aAAa,QAAQ,KAAK,OAAO,UAAU,WAAW,GAAG,CAAC,CAAC;YAC1F,CAAC,CAAC;YACF,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;gBAC1C,MAAM,CAAC,IAAI,CAAC,UAAU,OAAO,mBAAmB,MAAM,OAAO,MAAM,EAAE,CAAC,CAAC;YAC3E,CAAC;SACF,CAAC;QAEF,IAAI,CAAC;YACH,OAAO,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,qBAAqB,KAAK,EAAE,CAAC,CAAC;YACnD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ # Agent Skills Pack
2
+
3
+ Core agent capabilities and meta-skills.
4
+
5
+ ## Skills
6
+
7
+ - `agent-orchestration`: Managing sub-agents and task delegation
8
+ - `evolution`: Self-improvement and skill acquisition
9
+ - `memory-management`: Storage and retrieval of information
10
+ - `scheduling`: Task timing and cron jobs
11
+ - `session-management`: User interaction context
12
+ - `skill-management`: Loading and executing other skills
13
+ - `heartbeat`: System pulse and recurring checks
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: agent-orchestration
3
+ description: Create and manage sub-agents to perform tasks in parallel
4
+ tags: [system, agent, orchestration]
5
+ ---
6
+
7
+ # Agent Orchestration
8
+
9
+ This skill allows the main agent to spawn sub-agents and delegate tasks to them.
10
+
11
+ ## Actions
12
+
13
+ ### create_agent
14
+ Create a new sub-agent.
15
+
16
+ **Parameters:**
17
+ - `name` (required): Name of the sub-agent.
18
+ - `role` (required): Role description (e.g. "Researcher", "Coder").
19
+
20
+ ### list_agents
21
+ List all active sub-agents.
22
+
23
+ ### delegate
24
+ Delegate a task to a specific sub-agent.
25
+
26
+ **Parameters:**
27
+ - `agentId` (required): The ID of the sub-agent.
28
+ - `task` (required): Task description.
29
+ - `skills` (optional): Array of skill IDs the sub-agent should use.
30
+
31
+ ### parallel_execution
32
+ Execute multiple tasks in parallel using different agents. (Advanced)
33
+
34
+ ## Examples
35
+
36
+ - "Create a research assistant" -> `create_agent(name="Alice", role="Researcher")`
37
+ - "Ask Alice to search for papers" -> `delegate(agentId="<alice_id>", task="Search for LLM papers", skills=["literature_review"])`
@@ -0,0 +1,9 @@
1
+ import { Skill, SkillContext, SkillParams, SkillResult } from '../../../src/skills/types.js';
2
+ export default class AgentOrchestrationSkill implements Skill {
3
+ id: string;
4
+ name: string;
5
+ description: string;
6
+ tags: string[];
7
+ private static manager;
8
+ execute(ctx: SkillContext, params: SkillParams): Promise<SkillResult>;
9
+ }
@@ -0,0 +1,70 @@
1
+ import { SubAgentManager } from '../../../src/agent/subagent/SubAgentManager.js';
2
+ import { SkillManager } from '../../../src/skills/SkillManager.js';
3
+ export default class AgentOrchestrationSkill {
4
+ id = 'agent_orchestration';
5
+ name = 'Agent Orchestration';
6
+ description = 'Create and manage sub-agents';
7
+ tags = ['system', 'agent', 'orchestration'];
8
+ // Static instance to persist agents across skill executions in the same process
9
+ static manager = null;
10
+ async execute(ctx, params) {
11
+ const operation = params.operation || 'list_agents';
12
+ if (!AgentOrchestrationSkill.manager) {
13
+ // Initialize manager
14
+ // We need a SkillManager instance. We can create a new one sharing the same config.
15
+ const projectRoot = process.cwd();
16
+ const skillManager = new SkillManager(ctx.llm, ctx.memory, projectRoot);
17
+ await skillManager.loadSkillsFromDisk();
18
+ AgentOrchestrationSkill.manager = new SubAgentManager(ctx.llm, ctx.memory, skillManager);
19
+ }
20
+ const manager = AgentOrchestrationSkill.manager;
21
+ ctx.log('thinking', `Performing agent orchestration: ${operation}`);
22
+ try {
23
+ switch (operation) {
24
+ case 'create_agent':
25
+ const name = params.name;
26
+ const role = params.role;
27
+ if (!name || !role)
28
+ throw new Error('Name and role are required');
29
+ const agent = manager.createSubAgent(name, role);
30
+ ctx.log('tool_result', `Created agent ${name} (${agent.id})`);
31
+ return { success: true, agentId: agent.id, name: agent.name };
32
+ case 'list_agents':
33
+ const agents = manager.getAllSubAgents();
34
+ return {
35
+ agents: agents.map(a => ({ id: a.id, name: a.name, role: a.role }))
36
+ };
37
+ case 'delegate':
38
+ const agentId = params.agentId;
39
+ const taskDesc = params.task;
40
+ const skills = params.skills || [];
41
+ if (!agentId || !taskDesc)
42
+ throw new Error('AgentId and task are required');
43
+ const subAgent = manager.getSubAgent(agentId);
44
+ if (!subAgent)
45
+ throw new Error(`Agent ${agentId} not found`);
46
+ const task = {
47
+ id: Date.now().toString(),
48
+ description: taskDesc,
49
+ status: 'pending',
50
+ requiredSkills: skills
51
+ };
52
+ const result = await subAgent.executeTask(task);
53
+ return { success: true, result: result };
54
+ case 'remove_agent':
55
+ const removeId = params.agentId;
56
+ if (!removeId)
57
+ throw new Error('AgentId is required');
58
+ manager.terminateSubAgent(removeId);
59
+ return { success: true, message: 'Agent removed' };
60
+ default:
61
+ throw new Error(`Unknown operation: ${operation}`);
62
+ }
63
+ }
64
+ catch (error) {
65
+ ctx.log('error', `Orchestration failed: ${error}`);
66
+ throw error;
67
+ }
68
+ }
69
+ }
70
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../skills/agent/agent-orchestration/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: evolution
3
+ description: Self-evolve by creating or improving skills
4
+ tags: [system, evolution, meta]
5
+ ---
6
+
7
+ # Evolution
8
+
9
+ This skill allows the agent to modify its own capabilities by generating new skills or updating existing ones.
10
+
11
+ ## Actions
12
+
13
+ ### create_skill
14
+ Generates a new skill based on a description or intent.
15
+
16
+ **Parameters:**
17
+ - `intent` (required): Description of what the new skill should do.
18
+ - `feedback` (optional): Additional context or constraints.
19
+
20
+ ### improve_skill
21
+ Updates an existing skill based on feedback. (Future)
22
+
23
+ ## Examples
24
+
25
+ - "Create a skill to fetch weather data" -> `create_skill(intent="fetch weather data")`
@@ -0,0 +1,9 @@
1
+ import { Skill, SkillContext, SkillParams, SkillResult } from '../../../src/skills/types.js';
2
+ export default class EvolutionSkill implements Skill {
3
+ id: string;
4
+ name: string;
5
+ description: string;
6
+ tags: string[];
7
+ private evoSystem;
8
+ execute(ctx: SkillContext, params: SkillParams): Promise<SkillResult>;
9
+ }
@@ -0,0 +1,57 @@
1
+ import { SkillEvolutionSystem } from '../../../src/skills/evolution/SkillEvolutionSystem.js';
2
+ import path from 'path';
3
+ export default class EvolutionSkill {
4
+ id = 'evolution';
5
+ name = 'Evolution';
6
+ description = 'Self-evolve by creating or improving skills';
7
+ tags = ['system', 'evolution', 'meta'];
8
+ evoSystem = null;
9
+ async execute(ctx, params) {
10
+ const operation = params.operation || 'create_skill';
11
+ // Lazy init of the evolution system to avoid circular dependency issues at startup if possible
12
+ if (!this.evoSystem) {
13
+ // Dynamic import to avoid circular dependency
14
+ const { SkillManager } = await import('../../../src/skills/SkillManager.js');
15
+ // We need to point to the correct skills directory
16
+ // Assuming current file is in skills/evolution/index.ts, we want to go up to skills/
17
+ const skillsDir = path.resolve(path.dirname(new URL(import.meta.url).pathname), '..');
18
+ // Or just use process.cwd()/skills which is safer for now
19
+ const projectRoot = process.cwd();
20
+ const tempSkillManager = new SkillManager(ctx.llm, ctx.memory, projectRoot);
21
+ // Load existing skills so the EvoSystem knows what exists
22
+ await tempSkillManager.loadSkillsFromDisk();
23
+ // Point EvoSystem to the 'skills' directory, NOT 'src/skills/impl/generated'
24
+ // This is crucial: we want new skills to land in the main skills folder
25
+ const targetSkillsDir = path.join(projectRoot, 'skills');
26
+ this.evoSystem = new SkillEvolutionSystem(tempSkillManager, ctx.llm, targetSkillsDir);
27
+ }
28
+ ctx.log('thinking', `Performing evolution operation: ${operation}`);
29
+ try {
30
+ switch (operation) {
31
+ case 'create_skill':
32
+ const intent = params.intent;
33
+ if (!intent)
34
+ throw new Error('Intent is required for creation');
35
+ const result = await this.evoSystem.evolveSkill(intent, params.feedback);
36
+ if (result) {
37
+ ctx.log('tool_result', `Successfully evolved skill: ${result.skillId}`);
38
+ return {
39
+ success: true,
40
+ skillId: result.skillId,
41
+ message: 'New skill created. It will be available after reload or dynamic registration.'
42
+ };
43
+ }
44
+ else {
45
+ return { success: false, message: 'No new skill was generated (maybe not needed).' };
46
+ }
47
+ default:
48
+ throw new Error(`Unknown operation: ${operation}`);
49
+ }
50
+ }
51
+ catch (error) {
52
+ ctx.log('error', `Evolution failed: ${error}`);
53
+ throw error;
54
+ }
55
+ }
56
+ }
57
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../skills/agent/evolution/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uDAAuD,CAAC;AAC7F,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,OAAO,OAAO,cAAc;IACjC,EAAE,GAAG,WAAW,CAAC;IACjB,IAAI,GAAG,WAAW,CAAC;IACnB,WAAW,GAAG,6CAA6C,CAAC;IAC5D,IAAI,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAE/B,SAAS,GAAgC,IAAI,CAAC;IAEtD,KAAK,CAAC,OAAO,CAAC,GAAiB,EAAE,MAAmB;QAClD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,cAAc,CAAC;QAErD,+FAA+F;QAC/F,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAClB,8CAA8C;YAC9C,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,qCAAqC,CAAC,CAAC;YAE7E,mDAAmD;YACnD,qFAAqF;YACrF,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;YACtF,0DAA0D;YAC1D,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAElC,MAAM,gBAAgB,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAC5E,0DAA0D;YAC1D,MAAM,gBAAgB,CAAC,kBAAkB,EAAE,CAAC;YAE5C,6EAA6E;YAC7E,wEAAwE;YACxE,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAEzD,IAAI,CAAC,SAAS,GAAG,IAAI,oBAAoB,CAAC,gBAAgB,EAAE,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;QAC1F,CAAC;QAED,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,mCAAmC,SAAS,EAAE,CAAC,CAAC;QAEpE,IAAI,CAAC;YACH,QAAQ,SAAS,EAAE,CAAC;gBAClB,KAAK,cAAc;oBACjB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;oBAC7B,IAAI,CAAC,MAAM;wBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;oBAEhE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;oBAEzE,IAAI,MAAM,EAAE,CAAC;wBACX,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,+BAA+B,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;wBACxE,OAAO;4BACH,OAAO,EAAE,IAAI;4BACb,OAAO,EAAE,MAAM,CAAC,OAAO;4BACvB,OAAO,EAAE,+EAA+E;yBAC3F,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,gDAAgD,EAAE,CAAC;oBACvF,CAAC;gBAEH;oBACE,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,qBAAqB,KAAK,EAAE,CAAC,CAAC;YAC/C,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ import { Skill, SkillContext, SkillParams, SkillResult } from '../../../src/skills/types.js';
2
+ export default class HeartbeatSkill implements Skill {
3
+ id: string;
4
+ name: string;
5
+ description: string;
6
+ tags: string[];
7
+ execute(ctx: SkillContext, params: SkillParams): Promise<SkillResult>;
8
+ }
@@ -0,0 +1,44 @@
1
+ export default class HeartbeatSkill {
2
+ id = 'heartbeat';
3
+ name = 'System Heartbeat';
4
+ description = 'Performs periodic system maintenance and checks';
5
+ tags = ['system', 'maintenance', 'heartbeat'];
6
+ async execute(ctx, params) {
7
+ const userId = ctx.userId || 'web-user'; // Default user for system tasks
8
+ ctx.log('action', 'Executing heartbeat...');
9
+ // 1. Memory Consolidation
10
+ let memoryStats = { moved: 0, promoted: 0, pruned: 0 };
11
+ try {
12
+ if (ctx.memory) {
13
+ // ctx.log('action', 'Consolidating memories...');
14
+ memoryStats = await ctx.memory.consolidateMemories(userId);
15
+ if (memoryStats.moved > 0 || memoryStats.promoted > 0 || memoryStats.pruned > 0) {
16
+ ctx.log('result', `Memory consolidation: Moved ${memoryStats.moved}, Promoted ${memoryStats.promoted}, Pruned ${memoryStats.pruned}`);
17
+ }
18
+ }
19
+ }
20
+ catch (e) {
21
+ ctx.log('error', `Memory consolidation failed: ${e}`);
22
+ }
23
+ // 2. Skill Evolution Check (Proactive)
24
+ let skillStats = null;
25
+ try {
26
+ if (ctx.managers?.skill) {
27
+ skillStats = ctx.managers.skill.getSkillStats();
28
+ if (skillStats && skillStats.totalSkills > 0) {
29
+ ctx.log('result', `[Evolution] Active Skills: ${skillStats.totalSkills} (${skillStats.totalPacks} packs)`);
30
+ }
31
+ }
32
+ }
33
+ catch (e) {
34
+ ctx.log('error', `Skill evolution check failed: ${e}`);
35
+ }
36
+ return {
37
+ status: 'completed',
38
+ timestamp: Date.now(),
39
+ memory: memoryStats,
40
+ skills: skillStats
41
+ };
42
+ }
43
+ }
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../skills/agent/heartbeat/index.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,OAAO,cAAc;IACjC,EAAE,GAAG,WAAW,CAAC;IACjB,IAAI,GAAG,kBAAkB,CAAC;IAC1B,WAAW,GAAG,iDAAiD,CAAC;IAChE,IAAI,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;IAE9C,KAAK,CAAC,OAAO,CAAC,GAAiB,EAAE,MAAmB;QAClD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC,gCAAgC;QAEzE,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;QAE5C,0BAA0B;QAC1B,IAAI,WAAW,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC;YACD,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACb,kDAAkD;gBAClD,WAAW,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBAC3D,IAAI,WAAW,CAAC,KAAK,GAAG,CAAC,IAAI,WAAW,CAAC,QAAQ,GAAG,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9E,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,+BAA+B,WAAW,CAAC,KAAK,cAAc,WAAW,CAAC,QAAQ,YAAY,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC1I,CAAC;YACL,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,gCAAgC,CAAC,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,uCAAuC;QACvC,IAAI,UAAU,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC;YACD,IAAI,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;gBACrB,UAAU,GAAI,GAAG,CAAC,QAAQ,CAAC,KAAa,CAAC,aAAa,EAAE,CAAC;gBACzD,IAAI,UAAU,IAAI,UAAU,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;oBAC3C,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,8BAA8B,UAAU,CAAC,WAAW,KAAK,UAAU,CAAC,UAAU,SAAS,CAAC,CAAC;gBAC/G,CAAC;YACN,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,iCAAiC,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO;YACH,MAAM,EAAE,WAAW;YACnB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,MAAM,EAAE,WAAW;YACnB,MAAM,EAAE,UAAU;SACrB,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: memory-management
3
+ description: Manage and consolidate agent memories (Working, Short-term, Long-term)
4
+ tags: [memory, system, consolidation]
5
+ ---
6
+
7
+ # Memory Management
8
+
9
+ This skill allows the agent to actively manage its own memory system.
10
+
11
+ ## Actions
12
+
13
+ ### consolidate
14
+ Triggers the memory consolidation process.
15
+ - Moves old working memories to short-term.
16
+ - Promotes high-value short-term memories to long-term.
17
+ - Prunes low-value, old memories.
18
+
19
+ **Parameters:**
20
+ - `userId` (optional): The user ID to consolidate memories for. Defaults to current user.
21
+
22
+ ### search
23
+ Search through the agent's memories.
24
+
25
+ **Parameters:**
26
+ - `query` (required): The search term.
27
+ - `limit` (optional): Max results (default 5).
28
+ - `type` (optional): Filter by type (preference, fact, context, paper, experiment).
29
+ - `tier` (optional): Filter by tier (working, short_term, long_term).
30
+
31
+ ### retrieve
32
+ Retrieve all memories of a specific tier (e.g. "show me long term memories").
33
+
34
+ **Parameters:**
35
+ - `tier` (required): working, short_term, or long_term.
36
+
37
+
38
+ ## Examples
39
+
40
+ - "Consolidate my memories" -> `consolidate`
@@ -0,0 +1,8 @@
1
+ import { Skill, SkillContext, SkillParams, SkillResult } from '../../../src/skills/types.js';
2
+ export default class MemoryManagementSkill implements Skill {
3
+ id: string;
4
+ name: string;
5
+ description: string;
6
+ tags: string[];
7
+ execute(ctx: SkillContext, params: SkillParams): Promise<SkillResult>;
8
+ }