@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,73 @@
1
+ import Database from 'better-sqlite3';
2
+ import path from 'path';
3
+ import fs from 'fs';
4
+ export class SQLiteStorage {
5
+ db;
6
+ constructor(dbPath) {
7
+ const defaultPath = path.join(process.cwd(), 'data', 'redigg.db');
8
+ const finalPath = dbPath || defaultPath;
9
+ // Ensure directory exists
10
+ const dir = path.dirname(finalPath);
11
+ if (!fs.existsSync(dir)) {
12
+ fs.mkdirSync(dir, { recursive: true });
13
+ }
14
+ this.db = new Database(finalPath);
15
+ this.init();
16
+ }
17
+ init() {
18
+ // Initialize Memory Table
19
+ this.db.exec(`
20
+ CREATE TABLE IF NOT EXISTS memories (
21
+ id TEXT PRIMARY KEY,
22
+ user_id TEXT NOT NULL,
23
+ type TEXT NOT NULL, -- 'preference', 'fact', 'context', 'paper', 'experiment'
24
+ content TEXT NOT NULL,
25
+ metadata TEXT, -- JSON string for structured data (e.g. paper details, URLs)
26
+ weight REAL DEFAULT 1.0,
27
+ created_at TEXT DEFAULT (datetime('now')),
28
+ updated_at TEXT DEFAULT (datetime('now'))
29
+ );
30
+
31
+ CREATE INDEX IF NOT EXISTS idx_memories_user ON memories(user_id);
32
+ CREATE INDEX IF NOT EXISTS idx_memories_type ON memories(type);
33
+
34
+ -- Sessions Table
35
+ CREATE TABLE IF NOT EXISTS sessions (
36
+ id TEXT PRIMARY KEY,
37
+ user_id TEXT NOT NULL,
38
+ title TEXT,
39
+ created_at TEXT DEFAULT (datetime('now')),
40
+ updated_at TEXT DEFAULT (datetime('now')),
41
+ metadata TEXT
42
+ );
43
+ CREATE INDEX IF NOT EXISTS idx_sessions_user ON sessions(user_id);
44
+
45
+ -- Messages Table
46
+ CREATE TABLE IF NOT EXISTS messages (
47
+ id TEXT PRIMARY KEY,
48
+ session_id TEXT NOT NULL,
49
+ role TEXT NOT NULL, -- 'system', 'user', 'assistant'
50
+ content TEXT NOT NULL,
51
+ timestamp TEXT DEFAULT (datetime('now')),
52
+ metadata TEXT,
53
+ FOREIGN KEY(session_id) REFERENCES sessions(id) ON DELETE CASCADE
54
+ );
55
+ CREATE INDEX IF NOT EXISTS idx_messages_session ON messages(session_id);
56
+ `);
57
+ // Simple migration for existing tables (if any)
58
+ try {
59
+ this.db.exec(`ALTER TABLE memories ADD COLUMN metadata TEXT`);
60
+ }
61
+ catch (e) {
62
+ // Ignore error if column already exists
63
+ }
64
+ console.log('SQLite Storage initialized.');
65
+ }
66
+ getDb() {
67
+ return this.db;
68
+ }
69
+ close() {
70
+ this.db.close();
71
+ }
72
+ }
73
+ //# sourceMappingURL=sqlite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../src/storage/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,OAAO,aAAa;IAChB,EAAE,CAAoB;IAE9B,YAAY,MAAe;QACzB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,MAAM,IAAI,WAAW,CAAC;QAExC,0BAA0B;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAEO,IAAI;QACV,0BAA0B;QAC1B,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAqCZ,CAAC,CAAC;QAEH,gDAAgD;QAChD,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,wCAAwC;QAC1C,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC7C,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ declare class Logger {
2
+ private scope;
3
+ constructor(scope: string);
4
+ private formatMessage;
5
+ info(message: string, meta?: any): void;
6
+ warn(message: string, meta?: any): void;
7
+ error(message: string, meta?: any): void;
8
+ debug(message: string, meta?: any): void;
9
+ success(message: string, meta?: any): void;
10
+ }
11
+ export declare const createLogger: (scope: string) => Logger;
12
+ export {};
@@ -0,0 +1,53 @@
1
+ import chalk from 'chalk';
2
+ class Logger {
3
+ scope;
4
+ constructor(scope) {
5
+ this.scope = scope;
6
+ }
7
+ formatMessage(level, message, meta) {
8
+ const timestamp = new Date().toISOString();
9
+ const scopeStr = chalk.gray(`[${this.scope}]`);
10
+ let levelStr = '';
11
+ switch (level) {
12
+ case 'info':
13
+ levelStr = chalk.blue('INFO');
14
+ break;
15
+ case 'warn':
16
+ levelStr = chalk.yellow('WARN');
17
+ break;
18
+ case 'error':
19
+ levelStr = chalk.red('ERROR');
20
+ break;
21
+ case 'debug':
22
+ levelStr = chalk.magenta('DEBUG');
23
+ break;
24
+ case 'success':
25
+ levelStr = chalk.green('SUCCESS');
26
+ break;
27
+ }
28
+ let log = `${chalk.dim(timestamp)} ${levelStr} ${scopeStr} ${message}`;
29
+ if (meta) {
30
+ log += `\n${JSON.stringify(meta, null, 2)}`;
31
+ }
32
+ return log;
33
+ }
34
+ info(message, meta) {
35
+ console.log(this.formatMessage('info', message, meta));
36
+ }
37
+ warn(message, meta) {
38
+ console.warn(this.formatMessage('warn', message, meta));
39
+ }
40
+ error(message, meta) {
41
+ console.error(this.formatMessage('error', message, meta));
42
+ }
43
+ debug(message, meta) {
44
+ if (process.env.DEBUG) {
45
+ console.debug(this.formatMessage('debug', message, meta));
46
+ }
47
+ }
48
+ success(message, meta) {
49
+ console.log(this.formatMessage('success', message, meta));
50
+ }
51
+ }
52
+ export const createLogger = (scope) => new Logger(scope);
53
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,MAAM;IACF,KAAK,CAAS;IAEtB,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEO,aAAa,CAAC,KAAe,EAAE,OAAe,EAAE,IAAU;QAChE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QAE/C,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,MAAM;gBACT,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC9B,MAAM;YACR,KAAK,MAAM;gBACT,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAChC,MAAM;YACR,KAAK,OAAO;gBACV,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC9B,MAAM;YACR,KAAK,OAAO;gBACV,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAClC,MAAM;YACR,KAAK,SAAS;gBACZ,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAClC,MAAM;QACV,CAAC;QAED,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,QAAQ,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;QACvE,IAAI,IAAI,EAAE,CAAC;YACT,GAAG,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QAC9C,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEM,IAAI,CAAC,OAAe,EAAE,IAAU;QACrC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IACzD,CAAC;IAEM,IAAI,CAAC,OAAe,EAAE,IAAU;QACrC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEM,KAAK,CAAC,OAAe,EAAE,IAAU;QACtC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5D,CAAC;IAEM,KAAK,CAAC,OAAe,EAAE,IAAU;QACtC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAEM,OAAO,CAAC,OAAe,EAAE,IAAU;QACxC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5D,CAAC;CACF;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import Database from 'better-sqlite3';
2
+ export declare class SQLiteStorage {
3
+ private db;
4
+ constructor(dbPath?: string);
5
+ private init;
6
+ getDb(): Database.Database;
7
+ close(): void;
8
+ }
@@ -0,0 +1,73 @@
1
+ import Database from 'better-sqlite3';
2
+ import path from 'path';
3
+ import fs from 'fs';
4
+ export class SQLiteStorage {
5
+ db;
6
+ constructor(dbPath) {
7
+ const defaultPath = path.join(process.cwd(), 'data', 'redigg.db');
8
+ const finalPath = dbPath || defaultPath;
9
+ // Ensure directory exists
10
+ const dir = path.dirname(finalPath);
11
+ if (!fs.existsSync(dir)) {
12
+ fs.mkdirSync(dir, { recursive: true });
13
+ }
14
+ this.db = new Database(finalPath);
15
+ this.init();
16
+ }
17
+ init() {
18
+ // Initialize Memory Table
19
+ this.db.exec(`
20
+ CREATE TABLE IF NOT EXISTS memories (
21
+ id TEXT PRIMARY KEY,
22
+ user_id TEXT NOT NULL,
23
+ type TEXT NOT NULL, -- 'preference', 'fact', 'context', 'paper', 'experiment'
24
+ content TEXT NOT NULL,
25
+ metadata TEXT, -- JSON string for structured data (e.g. paper details, URLs)
26
+ weight REAL DEFAULT 1.0,
27
+ created_at TEXT DEFAULT (datetime('now')),
28
+ updated_at TEXT DEFAULT (datetime('now'))
29
+ );
30
+
31
+ CREATE INDEX IF NOT EXISTS idx_memories_user ON memories(user_id);
32
+ CREATE INDEX IF NOT EXISTS idx_memories_type ON memories(type);
33
+
34
+ -- Sessions Table
35
+ CREATE TABLE IF NOT EXISTS sessions (
36
+ id TEXT PRIMARY KEY,
37
+ user_id TEXT NOT NULL,
38
+ title TEXT,
39
+ created_at TEXT DEFAULT (datetime('now')),
40
+ updated_at TEXT DEFAULT (datetime('now')),
41
+ metadata TEXT
42
+ );
43
+ CREATE INDEX IF NOT EXISTS idx_sessions_user ON sessions(user_id);
44
+
45
+ -- Messages Table
46
+ CREATE TABLE IF NOT EXISTS messages (
47
+ id TEXT PRIMARY KEY,
48
+ session_id TEXT NOT NULL,
49
+ role TEXT NOT NULL, -- 'system', 'user', 'assistant'
50
+ content TEXT NOT NULL,
51
+ timestamp TEXT DEFAULT (datetime('now')),
52
+ metadata TEXT,
53
+ FOREIGN KEY(session_id) REFERENCES sessions(id) ON DELETE CASCADE
54
+ );
55
+ CREATE INDEX IF NOT EXISTS idx_messages_session ON messages(session_id);
56
+ `);
57
+ // Simple migration for existing tables (if any)
58
+ try {
59
+ this.db.exec(`ALTER TABLE memories ADD COLUMN metadata TEXT`);
60
+ }
61
+ catch (e) {
62
+ // Ignore error if column already exists
63
+ }
64
+ console.log('SQLite Storage initialized.');
65
+ }
66
+ getDb() {
67
+ return this.db;
68
+ }
69
+ close() {
70
+ this.db.close();
71
+ }
72
+ }
73
+ //# sourceMappingURL=sqlite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../src/storage/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,MAAM,OAAO,aAAa;IAChB,EAAE,CAAoB;IAE9B,YAAY,MAAe;QACzB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,MAAM,IAAI,WAAW,CAAC;QAExC,0BAA0B;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,CAAC;IAEO,IAAI;QACV,0BAA0B;QAC1B,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAqCZ,CAAC,CAAC;QAEH,gDAAgD;QAChD,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,wCAAwC;QAC1C,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC7C,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ declare class Logger {
2
+ private scope;
3
+ constructor(scope: string);
4
+ private formatMessage;
5
+ info(message: string, meta?: any): void;
6
+ warn(message: string, meta?: any): void;
7
+ error(message: string, meta?: any): void;
8
+ debug(message: string, meta?: any): void;
9
+ success(message: string, meta?: any): void;
10
+ }
11
+ export declare const createLogger: (scope: string) => Logger;
12
+ export {};
@@ -0,0 +1,53 @@
1
+ import chalk from 'chalk';
2
+ class Logger {
3
+ scope;
4
+ constructor(scope) {
5
+ this.scope = scope;
6
+ }
7
+ formatMessage(level, message, meta) {
8
+ const timestamp = new Date().toISOString();
9
+ const scopeStr = chalk.gray(`[${this.scope}]`);
10
+ let levelStr = '';
11
+ switch (level) {
12
+ case 'info':
13
+ levelStr = chalk.blue('INFO');
14
+ break;
15
+ case 'warn':
16
+ levelStr = chalk.yellow('WARN');
17
+ break;
18
+ case 'error':
19
+ levelStr = chalk.red('ERROR');
20
+ break;
21
+ case 'debug':
22
+ levelStr = chalk.magenta('DEBUG');
23
+ break;
24
+ case 'success':
25
+ levelStr = chalk.green('SUCCESS');
26
+ break;
27
+ }
28
+ let log = `${chalk.dim(timestamp)} ${levelStr} ${scopeStr} ${message}`;
29
+ if (meta) {
30
+ log += `\n${JSON.stringify(meta, null, 2)}`;
31
+ }
32
+ return log;
33
+ }
34
+ info(message, meta) {
35
+ console.log(this.formatMessage('info', message, meta));
36
+ }
37
+ warn(message, meta) {
38
+ console.warn(this.formatMessage('warn', message, meta));
39
+ }
40
+ error(message, meta) {
41
+ console.error(this.formatMessage('error', message, meta));
42
+ }
43
+ debug(message, meta) {
44
+ if (process.env.DEBUG) {
45
+ console.debug(this.formatMessage('debug', message, meta));
46
+ }
47
+ }
48
+ success(message, meta) {
49
+ console.log(this.formatMessage('success', message, meta));
50
+ }
51
+ }
52
+ export const createLogger = (scope) => new Logger(scope);
53
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,MAAM;IACF,KAAK,CAAS;IAEtB,YAAY,KAAa;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAEO,aAAa,CAAC,KAAe,EAAE,OAAe,EAAE,IAAU;QAChE,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QAE/C,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,MAAM;gBACT,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC9B,MAAM;YACR,KAAK,MAAM;gBACT,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAChC,MAAM;YACR,KAAK,OAAO;gBACV,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC9B,MAAM;YACR,KAAK,OAAO;gBACV,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAClC,MAAM;YACR,KAAK,SAAS;gBACZ,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAClC,MAAM;QACV,CAAC;QAED,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,QAAQ,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC;QACvE,IAAI,IAAI,EAAE,CAAC;YACT,GAAG,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QAC9C,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEM,IAAI,CAAC,OAAe,EAAE,IAAU;QACrC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IACzD,CAAC;IAEM,IAAI,CAAC,OAAe,EAAE,IAAU;QACrC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEM,KAAK,CAAC,OAAe,EAAE,IAAU;QACtC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5D,CAAC;IAEM,KAAK,CAAC,OAAe,EAAE,IAAU;QACtC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAEM,OAAO,CAAC,OAAe,EAAE,IAAU;QACxC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5D,CAAC;CACF;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,71 @@
1
+ {
2
+ "name": "@redigg/redigg",
3
+ "version": "0.1.0",
4
+ "description": "Autonomous Research Agent for Scientific Discovery",
5
+ "type": "module",
6
+ "publishConfig": {
7
+ "access": "public"
8
+ },
9
+ "main": "dist/src/index.js",
10
+ "bin": {
11
+ "redigg": "./dist/src/bin.js"
12
+ },
13
+ "files": [
14
+ "dist",
15
+ "web/dist",
16
+ "skills",
17
+ "README.md",
18
+ "package.json"
19
+ ],
20
+ "scripts": {
21
+ "build": "tsc && rsync -avm --include='*.md' --include='*/' --exclude='*' skills/ dist/skills/ && npm run build --prefix web",
22
+ "start": "node dist/src/index.js",
23
+ "dev": "concurrently \"npm run dev:backend\" \"npm run dev:frontend\" --names \"gateway,ui\" --prefix-colors \"blue,magenta\" --kill-others",
24
+ "dev:backend": "tsx watch src/index.ts",
25
+ "dev:frontend": "npm run dev --prefix web",
26
+ "test": "vitest run",
27
+ "lint": "oxlint",
28
+ "postinstall": "npm install --prefix web",
29
+ "prepublishOnly": "npm run build"
30
+ },
31
+ "dependencies": {
32
+ "@a2a-js/sdk": "^0.3.10",
33
+ "@agentclientprotocol/sdk": "^0.15.0",
34
+ "@types/node-cron": "^3.0.11",
35
+ "better-sqlite3": "^11.0.0",
36
+ "chalk": "^5.3.0",
37
+ "commander": "^14.0.3",
38
+ "dotenv": "^16.4.5",
39
+ "eventemitter3": "^5.0.4",
40
+ "express": "^4.22.1",
41
+ "fast-xml-parser": "^5.4.2",
42
+ "multer": "^2.1.1",
43
+ "node-cron": "^4.2.1",
44
+ "openai": "^4.28.0",
45
+ "ora": "^9.3.0",
46
+ "pdfkit": "^0.17.2",
47
+ "sqlite-vec": "^0.1.0",
48
+ "tiktoken": "^1.0.22",
49
+ "uuid": "^13.0.0",
50
+ "ws": "^8.16.0",
51
+ "zod": "^3.22.4"
52
+ },
53
+ "devDependencies": {
54
+ "@types/better-sqlite3": "^7.6.9",
55
+ "@types/express": "^4.17.25",
56
+ "@types/multer": "^2.1.0",
57
+ "@types/node": "^22.0.0",
58
+ "@types/pdfkit": "^0.17.5",
59
+ "@types/uuid": "^10.0.0",
60
+ "@types/ws": "^8.5.10",
61
+ "@vitest/coverage-v8": "^1.6.1",
62
+ "concurrently": "^9.2.1",
63
+ "oxlint": "^0.2.10",
64
+ "tsx": "^4.7.1",
65
+ "typescript": "^5.3.3",
66
+ "vitest": "^1.3.1"
67
+ },
68
+ "engines": {
69
+ "node": ">=22.0.0"
70
+ }
71
+ }
@@ -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,84 @@
1
+ import { Skill, SkillContext, SkillParams, SkillResult } from '../../../src/skills/types.js';
2
+ import { SubAgentManager } from '../../../src/agent/subagent/SubAgentManager.js';
3
+ import { SubAgentTask } from '../../../src/agent/subagent/SubAgent.js';
4
+ import { SkillManager } from '../../../src/skills/SkillManager.js';
5
+ import path from 'path';
6
+
7
+ export default class AgentOrchestrationSkill implements Skill {
8
+ id = 'agent_orchestration';
9
+ name = 'Agent Orchestration';
10
+ description = 'Create and manage sub-agents';
11
+ tags = ['system', 'agent', 'orchestration'];
12
+
13
+ // Static instance to persist agents across skill executions in the same process
14
+ private static manager: SubAgentManager | null = null;
15
+
16
+ async execute(ctx: SkillContext, params: SkillParams): Promise<SkillResult> {
17
+ const operation = params.operation || 'list_agents';
18
+
19
+ if (!AgentOrchestrationSkill.manager) {
20
+ // Initialize manager
21
+ // We need a SkillManager instance. We can create a new one sharing the same config.
22
+ const projectRoot = process.cwd();
23
+ const skillManager = new SkillManager(ctx.llm, ctx.memory, projectRoot);
24
+ await skillManager.loadSkillsFromDisk();
25
+
26
+ AgentOrchestrationSkill.manager = new SubAgentManager(ctx.llm, ctx.memory, skillManager);
27
+ }
28
+
29
+ const manager = AgentOrchestrationSkill.manager;
30
+
31
+ ctx.log('thinking', `Performing agent orchestration: ${operation}`);
32
+
33
+ try {
34
+ switch (operation) {
35
+ case 'create_agent':
36
+ const name = params.name;
37
+ const role = params.role;
38
+ if (!name || !role) throw new Error('Name and role are required');
39
+
40
+ const agent = manager.createSubAgent(name, role);
41
+ ctx.log('tool_result', `Created agent ${name} (${agent.id})`);
42
+ return { success: true, agentId: agent.id, name: agent.name };
43
+
44
+ case 'list_agents':
45
+ const agents = manager.getAllSubAgents();
46
+ return {
47
+ agents: agents.map(a => ({ id: a.id, name: a.name, role: a.role }))
48
+ };
49
+
50
+ case 'delegate':
51
+ const agentId = params.agentId;
52
+ const taskDesc = params.task;
53
+ const skills = params.skills || [];
54
+
55
+ if (!agentId || !taskDesc) throw new Error('AgentId and task are required');
56
+
57
+ const subAgent = manager.getSubAgent(agentId);
58
+ if (!subAgent) throw new Error(`Agent ${agentId} not found`);
59
+
60
+ const task: SubAgentTask = {
61
+ id: Date.now().toString(),
62
+ description: taskDesc,
63
+ status: 'pending',
64
+ requiredSkills: skills
65
+ };
66
+
67
+ const result = await subAgent.executeTask(task);
68
+ return { success: true, result: result };
69
+
70
+ case 'remove_agent':
71
+ const removeId = params.agentId;
72
+ if (!removeId) throw new Error('AgentId is required');
73
+ manager.terminateSubAgent(removeId);
74
+ return { success: true, message: 'Agent removed' };
75
+
76
+ default:
77
+ throw new Error(`Unknown operation: ${operation}`);
78
+ }
79
+ } catch (error) {
80
+ ctx.log('error', `Orchestration failed: ${error}`);
81
+ throw error;
82
+ }
83
+ }
84
+ }
@@ -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,67 @@
1
+ import { Skill, SkillContext, SkillParams, SkillResult } from '../../../src/skills/types.js';
2
+ import { SkillEvolutionSystem } from '../../../src/skills/evolution/SkillEvolutionSystem.js';
3
+ import path from 'path';
4
+
5
+ export default class EvolutionSkill implements Skill {
6
+ id = 'evolution';
7
+ name = 'Evolution';
8
+ description = 'Self-evolve by creating or improving skills';
9
+ tags = ['system', 'evolution', 'meta'];
10
+
11
+ private evoSystem: SkillEvolutionSystem | null = null;
12
+
13
+ async execute(ctx: SkillContext, params: SkillParams): Promise<SkillResult> {
14
+ const operation = params.operation || 'create_skill';
15
+
16
+ // Lazy init of the evolution system to avoid circular dependency issues at startup if possible
17
+ if (!this.evoSystem) {
18
+ // Dynamic import to avoid circular dependency
19
+ const { SkillManager } = await import('../../../src/skills/SkillManager.js');
20
+
21
+ // We need to point to the correct skills directory
22
+ // Assuming current file is in skills/evolution/index.ts, we want to go up to skills/
23
+ const skillsDir = path.resolve(path.dirname(new URL(import.meta.url).pathname), '..');
24
+ // Or just use process.cwd()/skills which is safer for now
25
+ const projectRoot = process.cwd();
26
+
27
+ const tempSkillManager = new SkillManager(ctx.llm, ctx.memory, projectRoot);
28
+ // Load existing skills so the EvoSystem knows what exists
29
+ await tempSkillManager.loadSkillsFromDisk();
30
+
31
+ // Point EvoSystem to the 'skills' directory, NOT 'src/skills/impl/generated'
32
+ // This is crucial: we want new skills to land in the main skills folder
33
+ const targetSkillsDir = path.join(projectRoot, 'skills');
34
+
35
+ this.evoSystem = new SkillEvolutionSystem(tempSkillManager, ctx.llm, targetSkillsDir);
36
+ }
37
+
38
+ ctx.log('thinking', `Performing evolution operation: ${operation}`);
39
+
40
+ try {
41
+ switch (operation) {
42
+ case 'create_skill':
43
+ const intent = params.intent;
44
+ if (!intent) throw new Error('Intent is required for creation');
45
+
46
+ const result = await this.evoSystem.evolveSkill(intent, params.feedback);
47
+
48
+ if (result) {
49
+ ctx.log('tool_result', `Successfully evolved skill: ${result.skillId}`);
50
+ return {
51
+ success: true,
52
+ skillId: result.skillId,
53
+ message: 'New skill created. It will be available after reload or dynamic registration.'
54
+ };
55
+ } else {
56
+ return { success: false, message: 'No new skill was generated (maybe not needed).' };
57
+ }
58
+
59
+ default:
60
+ throw new Error(`Unknown operation: ${operation}`);
61
+ }
62
+ } catch (error) {
63
+ ctx.log('error', `Evolution failed: ${error}`);
64
+ throw error;
65
+ }
66
+ }
67
+ }
@@ -0,0 +1,48 @@
1
+ import { Skill, SkillContext, SkillParams, SkillResult } from '../../../src/skills/types.js';
2
+
3
+ export default class HeartbeatSkill implements Skill {
4
+ id = 'heartbeat';
5
+ name = 'System Heartbeat';
6
+ description = 'Performs periodic system maintenance and checks';
7
+ tags = ['system', 'maintenance', 'heartbeat'];
8
+
9
+ async execute(ctx: SkillContext, params: SkillParams): Promise<SkillResult> {
10
+ const userId = ctx.userId || 'web-user'; // Default user for system tasks
11
+
12
+ ctx.log('action', 'Executing heartbeat...');
13
+
14
+ // 1. Memory Consolidation
15
+ let memoryStats = { moved: 0, promoted: 0, pruned: 0 };
16
+ try {
17
+ if (ctx.memory) {
18
+ // ctx.log('action', 'Consolidating memories...');
19
+ memoryStats = await ctx.memory.consolidateMemories(userId);
20
+ if (memoryStats.moved > 0 || memoryStats.promoted > 0 || memoryStats.pruned > 0) {
21
+ ctx.log('result', `Memory consolidation: Moved ${memoryStats.moved}, Promoted ${memoryStats.promoted}, Pruned ${memoryStats.pruned}`);
22
+ }
23
+ }
24
+ } catch (e) {
25
+ ctx.log('error', `Memory consolidation failed: ${e}`);
26
+ }
27
+
28
+ // 2. Skill Evolution Check (Proactive)
29
+ let skillStats = null;
30
+ try {
31
+ if (ctx.managers?.skill) {
32
+ skillStats = (ctx.managers.skill as any).getSkillStats();
33
+ if (skillStats && skillStats.totalSkills > 0) {
34
+ ctx.log('result', `[Evolution] Active Skills: ${skillStats.totalSkills} (${skillStats.totalPacks} packs)`);
35
+ }
36
+ }
37
+ } catch (e) {
38
+ ctx.log('error', `Skill evolution check failed: ${e}`);
39
+ }
40
+
41
+ return {
42
+ status: 'completed',
43
+ timestamp: Date.now(),
44
+ memory: memoryStats,
45
+ skills: skillStats
46
+ };
47
+ }
48
+ }