@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.
- package/LICENSE +21 -0
- package/README.md +145 -0
- package/dist/agent/ResearchAgent.d.ts +35 -0
- package/dist/agent/ResearchAgent.js +818 -0
- package/dist/agent/ResearchAgent.js.map +1 -0
- package/dist/agent/subagent/SubAgent.d.ts +23 -0
- package/dist/agent/subagent/SubAgent.js +87 -0
- package/dist/agent/subagent/SubAgent.js.map +1 -0
- package/dist/agent/subagent/SubAgentManager.d.ts +19 -0
- package/dist/agent/subagent/SubAgentManager.js +40 -0
- package/dist/agent/subagent/SubAgentManager.js.map +1 -0
- package/dist/bin.d.ts +2 -0
- package/dist/bin.js +34 -0
- package/dist/bin.js.map +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +179 -0
- package/dist/cli.js.map +1 -0
- package/dist/events/EventManager.d.ts +39 -0
- package/dist/events/EventManager.js +20 -0
- package/dist/events/EventManager.js.map +1 -0
- package/dist/gateway/index.d.ts +9 -0
- package/dist/gateway/index.js +474 -0
- package/dist/gateway/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +97 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/LLMClient.d.ts +30 -0
- package/dist/llm/LLMClient.js +21 -0
- package/dist/llm/LLMClient.js.map +1 -0
- package/dist/llm/OpenAIClient.d.ts +16 -0
- package/dist/llm/OpenAIClient.js +58 -0
- package/dist/llm/OpenAIClient.js.map +1 -0
- package/dist/memory/MemoryManager.d.ts +41 -0
- package/dist/memory/MemoryManager.js +221 -0
- package/dist/memory/MemoryManager.js.map +1 -0
- package/dist/memory/evolution/MemoryEvolutionSystem.d.ts +17 -0
- package/dist/memory/evolution/MemoryEvolutionSystem.js +71 -0
- package/dist/memory/evolution/MemoryEvolutionSystem.js.map +1 -0
- package/dist/memory/search/BM25Search.d.ts +22 -0
- package/dist/memory/search/BM25Search.js +61 -0
- package/dist/memory/search/BM25Search.js.map +1 -0
- package/dist/memory/structure/PageIndex.d.ts +26 -0
- package/dist/memory/structure/PageIndex.js +156 -0
- package/dist/memory/structure/PageIndex.js.map +1 -0
- package/dist/quality/QualityManager.d.ts +12 -0
- package/dist/quality/QualityManager.js +61 -0
- package/dist/quality/QualityManager.js.map +1 -0
- package/dist/scheduling/CronManager.d.ts +21 -0
- package/dist/scheduling/CronManager.js +66 -0
- package/dist/scheduling/CronManager.js.map +1 -0
- package/dist/session/SessionManager.d.ts +37 -0
- package/dist/session/SessionManager.js +238 -0
- package/dist/session/SessionManager.js.map +1 -0
- package/dist/skills/SkillManager.d.ts +31 -0
- package/dist/skills/SkillManager.js +254 -0
- package/dist/skills/SkillManager.js.map +1 -0
- package/dist/skills/agent/PACK.md +13 -0
- package/dist/skills/agent/agent-orchestration/SKILL.md +37 -0
- package/dist/skills/agent/agent-orchestration/index.d.ts +9 -0
- package/dist/skills/agent/agent-orchestration/index.js +70 -0
- package/dist/skills/agent/agent-orchestration/index.js.map +1 -0
- package/dist/skills/agent/evolution/SKILL.md +25 -0
- package/dist/skills/agent/evolution/index.d.ts +9 -0
- package/dist/skills/agent/evolution/index.js +57 -0
- package/dist/skills/agent/evolution/index.js.map +1 -0
- package/dist/skills/agent/heartbeat/index.d.ts +8 -0
- package/dist/skills/agent/heartbeat/index.js +44 -0
- package/dist/skills/agent/heartbeat/index.js.map +1 -0
- package/dist/skills/agent/memory-management/SKILL.md +40 -0
- package/dist/skills/agent/memory-management/index.d.ts +8 -0
- package/dist/skills/agent/memory-management/index.js +44 -0
- package/dist/skills/agent/memory-management/index.js.map +1 -0
- package/dist/skills/agent/scheduling/SKILL.md +33 -0
- package/dist/skills/agent/scheduling/index.d.ts +13 -0
- package/dist/skills/agent/scheduling/index.js +80 -0
- package/dist/skills/agent/scheduling/index.js.map +1 -0
- package/dist/skills/agent/session-management/SKILL.md +35 -0
- package/dist/skills/agent/session-management/index.d.ts +11 -0
- package/dist/skills/agent/session-management/index.js +54 -0
- package/dist/skills/agent/session-management/index.js.map +1 -0
- package/dist/skills/agent/skill-management/SKILL.md +31 -0
- package/dist/skills/agent/skill-management/index.d.ts +8 -0
- package/dist/skills/agent/skill-management/index.js +25 -0
- package/dist/skills/agent/skill-management/index.js.map +1 -0
- package/dist/skills/evolution/SkillEvolutionSystem.d.ts +12 -0
- package/dist/skills/evolution/SkillEvolutionSystem.js +157 -0
- package/dist/skills/evolution/SkillEvolutionSystem.js.map +1 -0
- package/dist/skills/lib/ScholarTool.d.ts +14 -0
- package/dist/skills/lib/ScholarTool.js +71 -0
- package/dist/skills/lib/ScholarTool.js.map +1 -0
- package/dist/skills/research/PACK.md +7 -0
- package/dist/skills/research/academic-survey-self-improve/SKILL.md +17 -0
- package/dist/skills/research/academic-survey-self-improve/index.d.ts +10 -0
- package/dist/skills/research/academic-survey-self-improve/index.js +75 -0
- package/dist/skills/research/academic-survey-self-improve/index.js.map +1 -0
- package/dist/skills/research/concept-explainer/SKILL.md +3 -0
- package/dist/skills/research/concept-explainer/index.d.ts +8 -0
- package/dist/skills/research/concept-explainer/index.js +37 -0
- package/dist/skills/research/concept-explainer/index.js.map +1 -0
- package/dist/skills/research/literature-review/SKILL.md +25 -0
- package/dist/skills/research/literature-review/index.d.ts +9 -0
- package/dist/skills/research/literature-review/index.js +132 -0
- package/dist/skills/research/literature-review/index.js.map +1 -0
- package/dist/skills/research/paper-analysis/SKILL.md +3 -0
- package/dist/skills/research/paper-analysis/index.d.ts +9 -0
- package/dist/skills/research/paper-analysis/index.js +64 -0
- package/dist/skills/research/paper-analysis/index.js.map +1 -0
- package/dist/skills/research/pdf-generator/SKILL.md +16 -0
- package/dist/skills/research/pdf-generator/index.d.ts +10 -0
- package/dist/skills/research/pdf-generator/index.js +88 -0
- package/dist/skills/research/pdf-generator/index.js.map +1 -0
- package/dist/skills/system/PACK.md +8 -0
- package/dist/skills/system/code-analysis/SKILL.md +43 -0
- package/dist/skills/system/code-analysis/index.d.ts +12 -0
- package/dist/skills/system/code-analysis/index.js +172 -0
- package/dist/skills/system/code-analysis/index.js.map +1 -0
- package/dist/skills/system/local-file-ops/SKILL.md +55 -0
- package/dist/skills/system/local-file-ops/index.d.ts +9 -0
- package/dist/skills/system/local-file-ops/index.js +111 -0
- package/dist/skills/system/local-file-ops/index.js.map +1 -0
- package/dist/skills/types.d.ts +41 -0
- package/dist/skills/types.js +2 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/skills/vendor/PACK.md +11 -0
- package/dist/skills/vendor/agent-browser/CONTRIBUTING.md +63 -0
- package/dist/skills/vendor/agent-browser/SKILL.md +328 -0
- package/dist/skills/vendor/find-skills/SKILL.md +133 -0
- package/dist/skills/vendor/proactive-agent/SKILL-v2.3-backup.md +554 -0
- package/dist/skills/vendor/proactive-agent/SKILL-v3-draft.md +499 -0
- package/dist/skills/vendor/proactive-agent/SKILL.md +632 -0
- package/dist/skills/vendor/proactive-agent/assets/AGENTS.md +155 -0
- package/dist/skills/vendor/proactive-agent/assets/HEARTBEAT.md +128 -0
- package/dist/skills/vendor/proactive-agent/assets/MEMORY.md +47 -0
- package/dist/skills/vendor/proactive-agent/assets/ONBOARDING.md +103 -0
- package/dist/skills/vendor/proactive-agent/assets/SOUL.md +40 -0
- package/dist/skills/vendor/proactive-agent/assets/TOOLS.md +55 -0
- package/dist/skills/vendor/proactive-agent/assets/USER.md +36 -0
- package/dist/skills/vendor/proactive-agent/references/onboarding-flow.md +158 -0
- package/dist/skills/vendor/proactive-agent/references/security-patterns.md +109 -0
- package/dist/skills/vendor/searxng/CHANGELOG.md +38 -0
- package/dist/skills/vendor/searxng/PUBLISH.md +147 -0
- package/dist/skills/vendor/searxng/PUBLISHING_CHECKLIST.md +111 -0
- package/dist/skills/vendor/searxng/README.md +168 -0
- package/dist/skills/vendor/searxng/SKILL.md +69 -0
- package/dist/skills/vendor/self-improving-agent/.learnings/ERRORS.md +5 -0
- package/dist/skills/vendor/self-improving-agent/.learnings/FEATURE_REQUESTS.md +5 -0
- package/dist/skills/vendor/self-improving-agent/.learnings/LEARNINGS.md +5 -0
- package/dist/skills/vendor/self-improving-agent/SKILL.md +647 -0
- package/dist/skills/vendor/self-improving-agent/assets/LEARNINGS.md +45 -0
- package/dist/skills/vendor/self-improving-agent/assets/SKILL-TEMPLATE.md +177 -0
- package/dist/skills/vendor/self-improving-agent/hooks/openclaw/HOOK.md +23 -0
- package/dist/skills/vendor/self-improving-agent/hooks/openclaw/handler.d.ts +9 -0
- package/dist/skills/vendor/self-improving-agent/hooks/openclaw/handler.js +54 -0
- package/dist/skills/vendor/self-improving-agent/hooks/openclaw/handler.js.map +1 -0
- package/dist/skills/vendor/self-improving-agent/references/examples.md +374 -0
- package/dist/skills/vendor/self-improving-agent/references/hooks-setup.md +223 -0
- package/dist/skills/vendor/self-improving-agent/references/openclaw-integration.md +248 -0
- package/dist/skills/vendor/skill-vetter/SKILL.md +138 -0
- package/dist/src/agent/ResearchAgent.d.ts +35 -0
- package/dist/src/agent/ResearchAgent.js +818 -0
- package/dist/src/agent/ResearchAgent.js.map +1 -0
- package/dist/src/agent/subagent/SubAgent.d.ts +23 -0
- package/dist/src/agent/subagent/SubAgent.js +87 -0
- package/dist/src/agent/subagent/SubAgent.js.map +1 -0
- package/dist/src/agent/subagent/SubAgentManager.d.ts +19 -0
- package/dist/src/agent/subagent/SubAgentManager.js +40 -0
- package/dist/src/agent/subagent/SubAgentManager.js.map +1 -0
- package/dist/src/bin.d.ts +2 -0
- package/dist/src/bin.js +34 -0
- package/dist/src/bin.js.map +1 -0
- package/dist/src/cli.d.ts +1 -0
- package/dist/src/cli.js +179 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/events/EventManager.d.ts +39 -0
- package/dist/src/events/EventManager.js +20 -0
- package/dist/src/events/EventManager.js.map +1 -0
- package/dist/src/gateway/index.d.ts +9 -0
- package/dist/src/gateway/index.js +474 -0
- package/dist/src/gateway/index.js.map +1 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.js +105 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/llm/LLMClient.d.ts +30 -0
- package/dist/src/llm/LLMClient.js +21 -0
- package/dist/src/llm/LLMClient.js.map +1 -0
- package/dist/src/llm/OpenAIClient.d.ts +16 -0
- package/dist/src/llm/OpenAIClient.js +58 -0
- package/dist/src/llm/OpenAIClient.js.map +1 -0
- package/dist/src/memory/MemoryManager.d.ts +41 -0
- package/dist/src/memory/MemoryManager.js +221 -0
- package/dist/src/memory/MemoryManager.js.map +1 -0
- package/dist/src/memory/evolution/MemoryEvolutionSystem.d.ts +17 -0
- package/dist/src/memory/evolution/MemoryEvolutionSystem.js +71 -0
- package/dist/src/memory/evolution/MemoryEvolutionSystem.js.map +1 -0
- package/dist/src/memory/search/BM25Search.d.ts +22 -0
- package/dist/src/memory/search/BM25Search.js +61 -0
- package/dist/src/memory/search/BM25Search.js.map +1 -0
- package/dist/src/memory/structure/PageIndex.d.ts +26 -0
- package/dist/src/memory/structure/PageIndex.js +156 -0
- package/dist/src/memory/structure/PageIndex.js.map +1 -0
- package/dist/src/quality/QualityManager.d.ts +12 -0
- package/dist/src/quality/QualityManager.js +61 -0
- package/dist/src/quality/QualityManager.js.map +1 -0
- package/dist/src/scheduling/CronManager.d.ts +21 -0
- package/dist/src/scheduling/CronManager.js +66 -0
- package/dist/src/scheduling/CronManager.js.map +1 -0
- package/dist/src/session/SessionManager.d.ts +37 -0
- package/dist/src/session/SessionManager.js +238 -0
- package/dist/src/session/SessionManager.js.map +1 -0
- package/dist/src/skills/SkillManager.d.ts +33 -0
- package/dist/src/skills/SkillManager.js +260 -0
- package/dist/src/skills/SkillManager.js.map +1 -0
- package/dist/src/skills/evolution/SkillEvolutionSystem.d.ts +12 -0
- package/dist/src/skills/evolution/SkillEvolutionSystem.js +157 -0
- package/dist/src/skills/evolution/SkillEvolutionSystem.js.map +1 -0
- package/dist/src/skills/lib/ScholarTool.d.ts +14 -0
- package/dist/src/skills/lib/ScholarTool.js +71 -0
- package/dist/src/skills/lib/ScholarTool.js.map +1 -0
- package/dist/src/skills/types.d.ts +41 -0
- package/dist/src/skills/types.js +2 -0
- package/dist/src/skills/types.js.map +1 -0
- package/dist/src/storage/sqlite.d.ts +8 -0
- package/dist/src/storage/sqlite.js +73 -0
- package/dist/src/storage/sqlite.js.map +1 -0
- package/dist/src/utils/logger.d.ts +12 -0
- package/dist/src/utils/logger.js +53 -0
- package/dist/src/utils/logger.js.map +1 -0
- package/dist/storage/sqlite.d.ts +8 -0
- package/dist/storage/sqlite.js +73 -0
- package/dist/storage/sqlite.js.map +1 -0
- package/dist/utils/logger.d.ts +12 -0
- package/dist/utils/logger.js +53 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +71 -0
- package/skills/agent/PACK.md +13 -0
- package/skills/agent/agent-orchestration/SKILL.md +37 -0
- package/skills/agent/agent-orchestration/index.ts +84 -0
- package/skills/agent/evolution/SKILL.md +25 -0
- package/skills/agent/evolution/index.ts +67 -0
- package/skills/agent/heartbeat/index.ts +48 -0
- package/skills/agent/memory-management/SKILL.md +40 -0
- package/skills/agent/memory-management/index.ts +48 -0
- package/skills/agent/scheduling/SKILL.md +33 -0
- package/skills/agent/scheduling/index.ts +97 -0
- package/skills/agent/session-management/SKILL.md +35 -0
- package/skills/agent/session-management/index.ts +65 -0
- package/skills/agent/skill-management/SKILL.md +31 -0
- package/skills/agent/skill-management/index.ts +32 -0
- package/skills/research/PACK.md +7 -0
- package/skills/research/academic-survey-self-improve/SKILL.md +17 -0
- package/skills/research/academic-survey-self-improve/index.ts +87 -0
- package/skills/research/concept-explainer/SKILL.md +3 -0
- package/skills/research/concept-explainer/index.ts +42 -0
- package/skills/research/literature-review/SKILL.md +25 -0
- package/skills/research/literature-review/index.ts +168 -0
- package/skills/research/paper-analysis/SKILL.md +3 -0
- package/skills/research/paper-analysis/index.ts +73 -0
- package/skills/research/pdf-generator/SKILL.md +16 -0
- package/skills/research/pdf-generator/index.d.ts +10 -0
- package/skills/research/pdf-generator/index.js +114 -0
- package/skills/research/pdf-generator/index.js.map +1 -0
- package/skills/research/pdf-generator/index.ts +97 -0
- package/skills/system/PACK.md +8 -0
- package/skills/system/code-analysis/SKILL.md +43 -0
- package/skills/system/code-analysis/index.ts +180 -0
- package/skills/system/local-file-ops/SKILL.md +55 -0
- package/skills/system/local-file-ops/index.ts +123 -0
- package/skills/vendor/PACK.md +11 -0
- package/skills/vendor/agent-browser/.clawhub/origin.json +7 -0
- package/skills/vendor/agent-browser/CONTRIBUTING.md +63 -0
- package/skills/vendor/agent-browser/SKILL.md +328 -0
- package/skills/vendor/agent-browser/_meta.json +6 -0
- package/skills/vendor/find-skills/.clawhub/origin.json +7 -0
- package/skills/vendor/find-skills/SKILL.md +133 -0
- package/skills/vendor/find-skills/_meta.json +6 -0
- package/skills/vendor/proactive-agent/.clawhub/origin.json +7 -0
- package/skills/vendor/proactive-agent/SKILL-v2.3-backup.md +554 -0
- package/skills/vendor/proactive-agent/SKILL-v3-draft.md +499 -0
- package/skills/vendor/proactive-agent/SKILL.md +632 -0
- package/skills/vendor/proactive-agent/_meta.json +6 -0
- package/skills/vendor/proactive-agent/assets/AGENTS.md +155 -0
- package/skills/vendor/proactive-agent/assets/HEARTBEAT.md +128 -0
- package/skills/vendor/proactive-agent/assets/MEMORY.md +47 -0
- package/skills/vendor/proactive-agent/assets/ONBOARDING.md +103 -0
- package/skills/vendor/proactive-agent/assets/SOUL.md +40 -0
- package/skills/vendor/proactive-agent/assets/TOOLS.md +55 -0
- package/skills/vendor/proactive-agent/assets/USER.md +36 -0
- package/skills/vendor/proactive-agent/references/onboarding-flow.md +158 -0
- package/skills/vendor/proactive-agent/references/security-patterns.md +109 -0
- package/skills/vendor/proactive-agent/scripts/security-audit.sh +149 -0
- package/skills/vendor/searxng/.clawdhub/origin.json +7 -0
- package/skills/vendor/searxng/CHANGELOG.md +38 -0
- package/skills/vendor/searxng/PUBLISH.md +147 -0
- package/skills/vendor/searxng/PUBLISHING_CHECKLIST.md +111 -0
- package/skills/vendor/searxng/README.md +168 -0
- package/skills/vendor/searxng/SKILL.md +69 -0
- package/skills/vendor/searxng/_meta.json +6 -0
- package/skills/vendor/searxng/config/settings.yml +36 -0
- package/skills/vendor/searxng/run-searxng.sh +48 -0
- package/skills/vendor/searxng/scripts/searxng.py +211 -0
- package/skills/vendor/self-improving-agent/.clawhub/origin.json +7 -0
- package/skills/vendor/self-improving-agent/.learnings/ERRORS.md +5 -0
- package/skills/vendor/self-improving-agent/.learnings/FEATURE_REQUESTS.md +5 -0
- package/skills/vendor/self-improving-agent/.learnings/LEARNINGS.md +5 -0
- package/skills/vendor/self-improving-agent/SKILL.md +647 -0
- package/skills/vendor/self-improving-agent/_meta.json +6 -0
- package/skills/vendor/self-improving-agent/assets/LEARNINGS.md +45 -0
- package/skills/vendor/self-improving-agent/assets/SKILL-TEMPLATE.md +177 -0
- package/skills/vendor/self-improving-agent/hooks/openclaw/HOOK.md +23 -0
- package/skills/vendor/self-improving-agent/hooks/openclaw/handler.js +56 -0
- package/skills/vendor/self-improving-agent/hooks/openclaw/handler.ts +62 -0
- package/skills/vendor/self-improving-agent/references/examples.md +374 -0
- package/skills/vendor/self-improving-agent/references/hooks-setup.md +223 -0
- package/skills/vendor/self-improving-agent/references/openclaw-integration.md +248 -0
- package/skills/vendor/self-improving-agent/scripts/activator.sh +20 -0
- package/skills/vendor/self-improving-agent/scripts/error-detector.sh +55 -0
- package/skills/vendor/self-improving-agent/scripts/extract-skill.sh +221 -0
- package/skills/vendor/skill-vetter/.clawhub/origin.json +7 -0
- package/skills/vendor/skill-vetter/SKILL.md +138 -0
- package/skills/vendor/skill-vetter/_meta.json +6 -0
- package/web/README.md +73 -0
- 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":"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"}
|
|
@@ -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":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AAEjF,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAGnE,MAAM,CAAC,OAAO,OAAO,uBAAuB;IAC1C,EAAE,GAAG,qBAAqB,CAAC;IAC3B,IAAI,GAAG,qBAAqB,CAAC;IAC7B,WAAW,GAAG,8BAA8B,CAAC;IAC7C,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;IAE5C,gFAAgF;IACxE,MAAM,CAAC,OAAO,GAA2B,IAAI,CAAC;IAEtD,KAAK,CAAC,OAAO,CAAC,GAAiB,EAAE,MAAmB;QAClD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,aAAa,CAAC;QAEpD,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,CAAC;YACnC,qBAAqB;YACrB,oFAAoF;YACpF,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAClC,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACxE,MAAM,YAAY,CAAC,kBAAkB,EAAE,CAAC;YAExC,uBAAuB,CAAC,OAAO,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC7F,CAAC;QAED,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,CAAC;QAEhD,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,mCAAmC,SAAS,EAAE,CAAC,CAAC;QAEpE,IAAI,CAAC;YACH,QAAQ,SAAS,EAAE,CAAC;gBAClB,KAAK,cAAc;oBACjB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;oBACzB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;oBACzB,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;wBAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;oBAElE,MAAM,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBACjD,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,iBAAiB,IAAI,KAAK,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;oBAC9D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;gBAEhE,KAAK,aAAa;oBAChB,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;oBACzC,OAAO;wBACH,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;qBACtE,CAAC;gBAEJ,KAAK,UAAU;oBACb,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;oBAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;oBAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;oBAEnC,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ;wBAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;oBAE5E,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;oBAC9C,IAAI,CAAC,QAAQ;wBAAE,MAAM,IAAI,KAAK,CAAC,SAAS,OAAO,YAAY,CAAC,CAAC;oBAE7D,MAAM,IAAI,GAAiB;wBACvB,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;wBACzB,WAAW,EAAE,QAAQ;wBACrB,MAAM,EAAE,SAAS;wBACjB,cAAc,EAAE,MAAM;qBACzB,CAAC;oBAEF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAChD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;gBAE3C,KAAK,cAAc;oBACjB,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;oBAChC,IAAI,CAAC,QAAQ;wBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;oBACtD,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;oBACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;gBAErD;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,yBAAyB,KAAK,EAAE,CAAC,CAAC;YACnD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC"}
|
|
@@ -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
|
+
}
|