ideaco 1.1.5
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/.dockerignore +33 -0
- package/.nvmrc +1 -0
- package/ARCHITECTURE.md +394 -0
- package/Dockerfile +50 -0
- package/LICENSE +29 -0
- package/README.md +206 -0
- package/bin/i18n.js +46 -0
- package/bin/ideaco.js +494 -0
- package/deploy.sh +15 -0
- package/docker-compose.yml +30 -0
- package/electron/main.cjs +986 -0
- package/electron/preload.cjs +14 -0
- package/electron/web-backends.cjs +854 -0
- package/jsconfig.json +8 -0
- package/next.config.mjs +34 -0
- package/package.json +134 -0
- package/postcss.config.mjs +6 -0
- package/public/demo/dashboard.png +0 -0
- package/public/demo/employee.png +0 -0
- package/public/demo/messages.png +0 -0
- package/public/demo/office.png +0 -0
- package/public/demo/requirement.png +0 -0
- package/public/logo.jpeg +0 -0
- package/public/logo.png +0 -0
- package/scripts/prepare-electron.js +67 -0
- package/scripts/release.js +76 -0
- package/src/app/api/agents/[agentId]/chat/route.js +70 -0
- package/src/app/api/agents/[agentId]/conversations/route.js +35 -0
- package/src/app/api/agents/[agentId]/route.js +106 -0
- package/src/app/api/avatar/route.js +104 -0
- package/src/app/api/browse-dir/route.js +44 -0
- package/src/app/api/chat/route.js +265 -0
- package/src/app/api/company/factory-reset/route.js +43 -0
- package/src/app/api/company/route.js +82 -0
- package/src/app/api/departments/[deptId]/agents/[agentId]/dismiss/route.js +19 -0
- package/src/app/api/departments/route.js +92 -0
- package/src/app/api/group-chat-loop/events/route.js +70 -0
- package/src/app/api/group-chat-loop/route.js +94 -0
- package/src/app/api/mailbox/route.js +100 -0
- package/src/app/api/messages/route.js +14 -0
- package/src/app/api/providers/[id]/configure/route.js +21 -0
- package/src/app/api/providers/[id]/refresh-cookie/route.js +38 -0
- package/src/app/api/providers/[id]/test-cookie/route.js +28 -0
- package/src/app/api/providers/route.js +11 -0
- package/src/app/api/requirements/route.js +242 -0
- package/src/app/api/secretary/route.js +65 -0
- package/src/app/api/system/cli-backends/route.js +91 -0
- package/src/app/api/system/cron/route.js +110 -0
- package/src/app/api/system/knowledge/route.js +104 -0
- package/src/app/api/system/plugins/route.js +40 -0
- package/src/app/api/system/skills/route.js +46 -0
- package/src/app/api/system/status/route.js +46 -0
- package/src/app/api/talent-market/[profileId]/recall/route.js +22 -0
- package/src/app/api/talent-market/[profileId]/route.js +17 -0
- package/src/app/api/talent-market/route.js +26 -0
- package/src/app/api/teams/route.js +773 -0
- package/src/app/api/ws-files/[departmentId]/file/route.js +27 -0
- package/src/app/api/ws-files/[departmentId]/files/route.js +22 -0
- package/src/app/globals.css +130 -0
- package/src/app/layout.jsx +40 -0
- package/src/app/page.jsx +97 -0
- package/src/components/AgentChatModal.jsx +164 -0
- package/src/components/AgentDetailModal.jsx +425 -0
- package/src/components/AgentSpyModal.jsx +481 -0
- package/src/components/AvatarGrid.jsx +29 -0
- package/src/components/BossProfileModal.jsx +162 -0
- package/src/components/CachedAvatar.jsx +77 -0
- package/src/components/ChatPanel.jsx +219 -0
- package/src/components/ChatShared.jsx +255 -0
- package/src/components/DepartmentDetail.jsx +842 -0
- package/src/components/DepartmentView.jsx +367 -0
- package/src/components/FileReference.jsx +260 -0
- package/src/components/FilesView.jsx +465 -0
- package/src/components/GroupChatView.jsx +799 -0
- package/src/components/Mailbox.jsx +926 -0
- package/src/components/MessagesView.jsx +112 -0
- package/src/components/OnboardingGuide.jsx +209 -0
- package/src/components/OrgTree.jsx +151 -0
- package/src/components/Overview.jsx +391 -0
- package/src/components/PixelOffice.jsx +2281 -0
- package/src/components/ProviderGrid.jsx +551 -0
- package/src/components/ProvidersBoard.jsx +16 -0
- package/src/components/RequirementDetail.jsx +1279 -0
- package/src/components/RequirementsBoard.jsx +187 -0
- package/src/components/SecretarySettings.jsx +295 -0
- package/src/components/SetupWizard.jsx +388 -0
- package/src/components/Sidebar.jsx +169 -0
- package/src/components/SystemMonitor.jsx +808 -0
- package/src/components/TalentMarket.jsx +183 -0
- package/src/components/TeamDetail.jsx +697 -0
- package/src/core/agent/base-agent.js +104 -0
- package/src/core/agent/chat-store.js +602 -0
- package/src/core/agent/cli-agent/backends/claude-code/README.md +52 -0
- package/src/core/agent/cli-agent/backends/claude-code/config.js +27 -0
- package/src/core/agent/cli-agent/backends/codebuddy/README.md +236 -0
- package/src/core/agent/cli-agent/backends/codebuddy/config.js +27 -0
- package/src/core/agent/cli-agent/backends/codex/README.md +51 -0
- package/src/core/agent/cli-agent/backends/codex/config.js +27 -0
- package/src/core/agent/cli-agent/backends/index.js +27 -0
- package/src/core/agent/cli-agent/backends/registry.js +580 -0
- package/src/core/agent/cli-agent/index.js +154 -0
- package/src/core/agent/index.js +60 -0
- package/src/core/agent/llm-agent/client.js +320 -0
- package/src/core/agent/llm-agent/index.js +97 -0
- package/src/core/agent/message-bus.js +211 -0
- package/src/core/agent/session.js +608 -0
- package/src/core/agent/tools.js +596 -0
- package/src/core/agent/web-agent/backends/base-backend.js +180 -0
- package/src/core/agent/web-agent/backends/chatgpt/client.js +146 -0
- package/src/core/agent/web-agent/backends/chatgpt/config.js +148 -0
- package/src/core/agent/web-agent/backends/chatgpt/dom-scripts.js +303 -0
- package/src/core/agent/web-agent/backends/index.js +91 -0
- package/src/core/agent/web-agent/index.js +278 -0
- package/src/core/agent/web-agent/web-client.js +407 -0
- package/src/core/employee/base-employee.js +1088 -0
- package/src/core/employee/index.js +35 -0
- package/src/core/employee/knowledge.js +327 -0
- package/src/core/employee/lifecycle.js +990 -0
- package/src/core/employee/memory/index.js +642 -0
- package/src/core/employee/memory/store.js +143 -0
- package/src/core/employee/performance.js +224 -0
- package/src/core/employee/secretary.js +625 -0
- package/src/core/employee/skills.js +398 -0
- package/src/core/index.js +38 -0
- package/src/core/organization/company.js +2600 -0
- package/src/core/organization/department.js +737 -0
- package/src/core/organization/group-chat-loop.js +264 -0
- package/src/core/organization/index.js +8 -0
- package/src/core/organization/persistence.js +111 -0
- package/src/core/organization/team.js +267 -0
- package/src/core/organization/workforce/hr.js +377 -0
- package/src/core/organization/workforce/providers.js +468 -0
- package/src/core/organization/workforce/role-archetypes.js +805 -0
- package/src/core/organization/workforce/talent-market.js +205 -0
- package/src/core/prompts.js +532 -0
- package/src/core/requirement.js +1789 -0
- package/src/core/system/audit.js +483 -0
- package/src/core/system/cron.js +449 -0
- package/src/core/system/index.js +7 -0
- package/src/core/system/plugin.js +2183 -0
- package/src/core/utils/json-parse.js +188 -0
- package/src/core/workspace.js +239 -0
- package/src/lib/api-i18n.js +211 -0
- package/src/lib/avatar.js +268 -0
- package/src/lib/client-store.js +1025 -0
- package/src/lib/config-validator.js +483 -0
- package/src/lib/format-time.js +22 -0
- package/src/lib/hooks.js +414 -0
- package/src/lib/i18n.js +134 -0
- package/src/lib/paths.js +23 -0
- package/src/lib/store.js +72 -0
- package/src/locales/de.js +393 -0
- package/src/locales/en.js +1054 -0
- package/src/locales/es.js +393 -0
- package/src/locales/fr.js +393 -0
- package/src/locales/ja.js +501 -0
- package/src/locales/ko.js +513 -0
- package/src/locales/zh.js +828 -0
- package/tailwind.config.mjs +11 -0
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skills System - Skill management framework
|
|
3
|
+
*
|
|
4
|
+
* Distilled from OpenClaw's Skills system (vendor/openclaw/src/config/types.skills.ts)
|
|
5
|
+
* Re-implemented as an "employee training & certification" system
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Skill registration and discovery
|
|
9
|
+
* - Skill installation/enabling/disabling
|
|
10
|
+
* - Per-agent skill assignment
|
|
11
|
+
* - Skill categorization and search
|
|
12
|
+
* - Skill configuration and environment variables
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Skill states
|
|
17
|
+
*/
|
|
18
|
+
export const SkillState = {
|
|
19
|
+
AVAILABLE: 'available', // Available (not installed)
|
|
20
|
+
INSTALLED: 'installed', // Installed
|
|
21
|
+
ENABLED: 'enabled', // Enabled
|
|
22
|
+
DISABLED: 'disabled', // Disabled
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Skill categories
|
|
27
|
+
*/
|
|
28
|
+
export const SkillCategory = {
|
|
29
|
+
CODING: 'coding', // Programming/development
|
|
30
|
+
ANALYSIS: 'analysis', // Data analysis
|
|
31
|
+
CREATIVE: 'creative', // Creative content
|
|
32
|
+
COMMUNICATION: 'communication', // Communication/collaboration
|
|
33
|
+
AUTOMATION: 'automation', // Automation
|
|
34
|
+
RESEARCH: 'research', // Research/investigation
|
|
35
|
+
DESIGN: 'design', // Design
|
|
36
|
+
DEVOPS: 'devops', // DevOps/deployment
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Skill definition
|
|
41
|
+
*/
|
|
42
|
+
export class SkillDefinition {
|
|
43
|
+
constructor(config) {
|
|
44
|
+
this.id = config.id;
|
|
45
|
+
this.name = config.name;
|
|
46
|
+
this.version = config.version || '1.0.0';
|
|
47
|
+
this.category = config.category || SkillCategory.CODING;
|
|
48
|
+
this.description = config.description || '';
|
|
49
|
+
this.instructions = config.instructions || ''; // Usage instructions for the Agent (like SKILL.md)
|
|
50
|
+
this.requiredTools = config.requiredTools || []; // Required tool dependencies
|
|
51
|
+
this.requiredPlugins = config.requiredPlugins || []; // Required plugin dependencies
|
|
52
|
+
this.configSchema = config.configSchema || {};
|
|
53
|
+
this.env = config.env || {}; // Environment variables
|
|
54
|
+
this.tags = config.tags || [];
|
|
55
|
+
this.author = config.author || 'Built-in';
|
|
56
|
+
this.icon = config.icon || '⚡';
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Skill registry - manages all available skills
|
|
62
|
+
*/
|
|
63
|
+
export class SkillRegistry {
|
|
64
|
+
constructor() {
|
|
65
|
+
/** @type {Map<string, {definition: SkillDefinition, state: string, config: object, installedAt: Date|null}>} */
|
|
66
|
+
this.skills = new Map();
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Register a skill
|
|
71
|
+
* @param {SkillDefinition} definition
|
|
72
|
+
*/
|
|
73
|
+
register(definition) {
|
|
74
|
+
if (this.skills.has(definition.id)) return;
|
|
75
|
+
this.skills.set(definition.id, {
|
|
76
|
+
definition,
|
|
77
|
+
state: SkillState.AVAILABLE,
|
|
78
|
+
config: {},
|
|
79
|
+
installedAt: null,
|
|
80
|
+
enabledAt: null,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Install a skill
|
|
86
|
+
*/
|
|
87
|
+
install(skillId, config = {}) {
|
|
88
|
+
const skill = this.skills.get(skillId);
|
|
89
|
+
if (!skill) throw new Error(`Skill not found: ${skillId}`);
|
|
90
|
+
skill.state = SkillState.INSTALLED;
|
|
91
|
+
skill.config = { ...config };
|
|
92
|
+
skill.installedAt = new Date();
|
|
93
|
+
console.log(`📚 Skill installed: ${skill.definition.name}`);
|
|
94
|
+
return skill;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Enable a skill
|
|
99
|
+
*/
|
|
100
|
+
enable(skillId) {
|
|
101
|
+
const skill = this.skills.get(skillId);
|
|
102
|
+
if (!skill) throw new Error(`Skill not found: ${skillId}`);
|
|
103
|
+
if (skill.state === SkillState.AVAILABLE) {
|
|
104
|
+
this.install(skillId);
|
|
105
|
+
}
|
|
106
|
+
skill.state = SkillState.ENABLED;
|
|
107
|
+
skill.enabledAt = new Date();
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Disable a skill
|
|
112
|
+
*/
|
|
113
|
+
disable(skillId) {
|
|
114
|
+
const skill = this.skills.get(skillId);
|
|
115
|
+
if (!skill) throw new Error(`Skill not found: ${skillId}`);
|
|
116
|
+
skill.state = SkillState.DISABLED;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Get a skill
|
|
121
|
+
*/
|
|
122
|
+
get(skillId) {
|
|
123
|
+
return this.skills.get(skillId) || null;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Get all enabled skills
|
|
128
|
+
*/
|
|
129
|
+
getEnabledSkills() {
|
|
130
|
+
return [...this.skills.values()]
|
|
131
|
+
.filter(s => s.state === SkillState.ENABLED)
|
|
132
|
+
.map(s => s.definition);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Resolve available skills for a specific Agent (filtered by Agent's skills list)
|
|
137
|
+
* @param {string[]} agentSkillIds - Skill ID list configured for the Agent
|
|
138
|
+
* @returns {SkillDefinition[]}
|
|
139
|
+
*/
|
|
140
|
+
resolveAgentSkills(agentSkillIds = []) {
|
|
141
|
+
if (!agentSkillIds || agentSkillIds.length === 0) {
|
|
142
|
+
return this.getEnabledSkills();
|
|
143
|
+
}
|
|
144
|
+
return agentSkillIds
|
|
145
|
+
.map(id => this.skills.get(id))
|
|
146
|
+
.filter(s => s && s.state === SkillState.ENABLED)
|
|
147
|
+
.map(s => s.definition);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Build skills prompt block (injected into Agent system prompt)
|
|
152
|
+
* @param {SkillDefinition[]} skills
|
|
153
|
+
* @returns {string}
|
|
154
|
+
*/
|
|
155
|
+
buildSkillsPrompt(skills) {
|
|
156
|
+
if (!skills || skills.length === 0) return '';
|
|
157
|
+
const lines = skills.map(s =>
|
|
158
|
+
`- **${s.name}**: ${s.description}${s.instructions ? `\n Instructions: ${s.instructions}` : ''}`
|
|
159
|
+
);
|
|
160
|
+
return `\n## Available Skills\nYou have the following trained skills:\n${lines.join('\n')}\n`;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Get skills by category
|
|
165
|
+
*/
|
|
166
|
+
getByCategory(category) {
|
|
167
|
+
return [...this.skills.values()]
|
|
168
|
+
.filter(s => s.definition.category === category);
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Search skills
|
|
173
|
+
*/
|
|
174
|
+
search(query) {
|
|
175
|
+
const q = query.toLowerCase();
|
|
176
|
+
return [...this.skills.values()].filter(s => {
|
|
177
|
+
const d = s.definition;
|
|
178
|
+
return d.name.toLowerCase().includes(q) ||
|
|
179
|
+
d.description.toLowerCase().includes(q) ||
|
|
180
|
+
d.tags.some(t => t.toLowerCase().includes(q));
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* List all skills and their states
|
|
186
|
+
*/
|
|
187
|
+
list() {
|
|
188
|
+
return [...this.skills.values()].map(s => ({
|
|
189
|
+
id: s.definition.id,
|
|
190
|
+
name: s.definition.name,
|
|
191
|
+
version: s.definition.version,
|
|
192
|
+
category: s.definition.category,
|
|
193
|
+
description: s.definition.description,
|
|
194
|
+
icon: s.definition.icon,
|
|
195
|
+
state: s.state,
|
|
196
|
+
tags: s.definition.tags,
|
|
197
|
+
author: s.definition.author,
|
|
198
|
+
toolCount: s.definition.requiredTools.length,
|
|
199
|
+
installedAt: s.installedAt,
|
|
200
|
+
enabledAt: s.enabledAt,
|
|
201
|
+
}));
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Configure a skill
|
|
206
|
+
*/
|
|
207
|
+
configure(skillId, config) {
|
|
208
|
+
const skill = this.skills.get(skillId);
|
|
209
|
+
if (!skill) throw new Error(`Skill not found: ${skillId}`);
|
|
210
|
+
skill.config = { ...skill.config, ...config };
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// ====================================================================
|
|
215
|
+
// Built-in skill definitions (aligned with OpenClaw bundled skills)
|
|
216
|
+
// ====================================================================
|
|
217
|
+
|
|
218
|
+
const builtinSkills = [
|
|
219
|
+
// === Programming/Development ===
|
|
220
|
+
new SkillDefinition({
|
|
221
|
+
id: 'web-development',
|
|
222
|
+
name: 'Web Development',
|
|
223
|
+
category: SkillCategory.CODING,
|
|
224
|
+
description: 'Full-stack web development with modern frameworks (React, Vue, Next.js, Node.js)',
|
|
225
|
+
instructions: 'Use file_write to create web application files. Follow modern best practices.',
|
|
226
|
+
requiredTools: ['file_write', 'file_read', 'shell_exec'],
|
|
227
|
+
tags: ['react', 'vue', 'nextjs', 'nodejs', 'html', 'css', 'javascript'],
|
|
228
|
+
icon: '🌐',
|
|
229
|
+
}),
|
|
230
|
+
new SkillDefinition({
|
|
231
|
+
id: 'api-development',
|
|
232
|
+
name: 'API Development',
|
|
233
|
+
category: SkillCategory.CODING,
|
|
234
|
+
description: 'Design and build RESTful and GraphQL APIs with authentication and documentation',
|
|
235
|
+
instructions: 'Design clean API interfaces. Use proper HTTP methods and status codes.',
|
|
236
|
+
requiredTools: ['file_write', 'shell_exec'],
|
|
237
|
+
tags: ['rest', 'graphql', 'api', 'swagger', 'openapi'],
|
|
238
|
+
icon: '🔌',
|
|
239
|
+
}),
|
|
240
|
+
new SkillDefinition({
|
|
241
|
+
id: 'testing',
|
|
242
|
+
name: 'Testing & QA',
|
|
243
|
+
category: SkillCategory.CODING,
|
|
244
|
+
description: 'Write unit tests, integration tests, and end-to-end tests',
|
|
245
|
+
instructions: 'Write comprehensive tests with good coverage. Use common testing frameworks.',
|
|
246
|
+
requiredTools: ['file_write', 'shell_exec'],
|
|
247
|
+
tags: ['jest', 'mocha', 'cypress', 'testing', 'qa'],
|
|
248
|
+
icon: '🧪',
|
|
249
|
+
}),
|
|
250
|
+
new SkillDefinition({
|
|
251
|
+
id: 'code-refactoring',
|
|
252
|
+
name: 'Code Refactoring',
|
|
253
|
+
category: SkillCategory.CODING,
|
|
254
|
+
description: 'Improve code quality, reduce complexity, and optimize performance',
|
|
255
|
+
instructions: 'Analyze code for improvement opportunities. Apply SOLID principles.',
|
|
256
|
+
requiredTools: ['file_read', 'file_write'],
|
|
257
|
+
tags: ['refactoring', 'optimization', 'clean-code', 'solid'],
|
|
258
|
+
icon: '🔧',
|
|
259
|
+
}),
|
|
260
|
+
new SkillDefinition({
|
|
261
|
+
id: 'database-design',
|
|
262
|
+
name: 'Database Design',
|
|
263
|
+
category: SkillCategory.CODING,
|
|
264
|
+
description: 'Design database schemas, write migrations, optimize queries',
|
|
265
|
+
instructions: 'Design normalized schemas. Write efficient queries. Consider indexing.',
|
|
266
|
+
requiredTools: ['file_write', 'shell_exec'],
|
|
267
|
+
tags: ['sql', 'mongodb', 'postgresql', 'mysql', 'redis'],
|
|
268
|
+
icon: '🗄️',
|
|
269
|
+
}),
|
|
270
|
+
// === Data Analysis ===
|
|
271
|
+
new SkillDefinition({
|
|
272
|
+
id: 'data-analysis',
|
|
273
|
+
name: 'Data Analysis',
|
|
274
|
+
category: SkillCategory.ANALYSIS,
|
|
275
|
+
description: 'Analyze datasets, find patterns, generate insights and reports',
|
|
276
|
+
instructions: 'Use data_parse tool when available. Present findings clearly with charts.',
|
|
277
|
+
requiredTools: ['file_read'],
|
|
278
|
+
requiredPlugins: ['builtin-data-processing'],
|
|
279
|
+
tags: ['analytics', 'statistics', 'insights', 'reports'],
|
|
280
|
+
icon: '📊',
|
|
281
|
+
}),
|
|
282
|
+
new SkillDefinition({
|
|
283
|
+
id: 'web-research',
|
|
284
|
+
name: 'Web Research',
|
|
285
|
+
category: SkillCategory.RESEARCH,
|
|
286
|
+
description: 'Search the web, gather information, and synthesize findings',
|
|
287
|
+
instructions: 'Use web_search and web_fetch tools to gather information from multiple sources.',
|
|
288
|
+
requiredTools: [],
|
|
289
|
+
requiredPlugins: ['builtin-web-search', 'builtin-web-fetch'],
|
|
290
|
+
tags: ['research', 'web', 'search', 'information-gathering'],
|
|
291
|
+
icon: '🔍',
|
|
292
|
+
}),
|
|
293
|
+
// === Creative Content ===
|
|
294
|
+
new SkillDefinition({
|
|
295
|
+
id: 'content-writing',
|
|
296
|
+
name: 'Content Writing',
|
|
297
|
+
category: SkillCategory.CREATIVE,
|
|
298
|
+
description: 'Write articles, blog posts, documentation, and marketing copy',
|
|
299
|
+
instructions: 'Produce clear, engaging content. Adapt tone to audience.',
|
|
300
|
+
requiredTools: ['file_write'],
|
|
301
|
+
tags: ['writing', 'blog', 'documentation', 'copywriting'],
|
|
302
|
+
icon: '✍️',
|
|
303
|
+
}),
|
|
304
|
+
new SkillDefinition({
|
|
305
|
+
id: 'image-generation',
|
|
306
|
+
name: 'Image Generation',
|
|
307
|
+
category: SkillCategory.CREATIVE,
|
|
308
|
+
description: 'Generate images using AI from text descriptions',
|
|
309
|
+
instructions: 'Use image_generate tool to create images. Write descriptive prompts.',
|
|
310
|
+
requiredPlugins: ['builtin-image'],
|
|
311
|
+
tags: ['image', 'art', 'visual', 'generation'],
|
|
312
|
+
icon: '🎨',
|
|
313
|
+
}),
|
|
314
|
+
// === Communication/Collaboration ===
|
|
315
|
+
new SkillDefinition({
|
|
316
|
+
id: 'project-management',
|
|
317
|
+
name: 'Project Management',
|
|
318
|
+
category: SkillCategory.COMMUNICATION,
|
|
319
|
+
description: 'Plan, track, and coordinate project tasks and timelines',
|
|
320
|
+
instructions: 'Break down projects into tasks. Track progress and coordinate team.',
|
|
321
|
+
requiredTools: ['send_message'],
|
|
322
|
+
tags: ['planning', 'tracking', 'coordination', 'agile'],
|
|
323
|
+
icon: '📋',
|
|
324
|
+
}),
|
|
325
|
+
new SkillDefinition({
|
|
326
|
+
id: 'team-collaboration',
|
|
327
|
+
name: 'Team Collaboration',
|
|
328
|
+
category: SkillCategory.COMMUNICATION,
|
|
329
|
+
description: 'Communicate effectively with team members, review work, provide feedback',
|
|
330
|
+
instructions: 'Use send_message to coordinate. Give constructive feedback.',
|
|
331
|
+
requiredTools: ['send_message'],
|
|
332
|
+
tags: ['teamwork', 'review', 'feedback', 'communication'],
|
|
333
|
+
icon: '🤝',
|
|
334
|
+
}),
|
|
335
|
+
// === Automation ===
|
|
336
|
+
new SkillDefinition({
|
|
337
|
+
id: 'task-automation',
|
|
338
|
+
name: 'Task Automation',
|
|
339
|
+
category: SkillCategory.AUTOMATION,
|
|
340
|
+
description: 'Create automated workflows, scripts, and scheduled tasks',
|
|
341
|
+
instructions: 'Write automation scripts. Use cron for scheduling when available.',
|
|
342
|
+
requiredTools: ['file_write', 'shell_exec'],
|
|
343
|
+
tags: ['automation', 'scripts', 'cron', 'workflow'],
|
|
344
|
+
icon: '🤖',
|
|
345
|
+
}),
|
|
346
|
+
new SkillDefinition({
|
|
347
|
+
id: 'web-scraping',
|
|
348
|
+
name: 'Web Scraping',
|
|
349
|
+
category: SkillCategory.AUTOMATION,
|
|
350
|
+
description: 'Extract and process data from websites',
|
|
351
|
+
instructions: 'Use browser tools and web_fetch to extract structured data.',
|
|
352
|
+
requiredPlugins: ['builtin-browser', 'builtin-web-fetch'],
|
|
353
|
+
tags: ['scraping', 'extraction', 'crawling'],
|
|
354
|
+
icon: '🕷️',
|
|
355
|
+
}),
|
|
356
|
+
// === Design ===
|
|
357
|
+
new SkillDefinition({
|
|
358
|
+
id: 'ui-design',
|
|
359
|
+
name: 'UI/UX Design',
|
|
360
|
+
category: SkillCategory.DESIGN,
|
|
361
|
+
description: 'Design user interfaces, wireframes, and interactive prototypes',
|
|
362
|
+
instructions: 'Focus on usability and visual hierarchy. Follow design system conventions.',
|
|
363
|
+
requiredTools: ['file_write'],
|
|
364
|
+
tags: ['ui', 'ux', 'wireframe', 'prototype', 'design-system'],
|
|
365
|
+
icon: '🎨',
|
|
366
|
+
}),
|
|
367
|
+
// === DevOps ===
|
|
368
|
+
new SkillDefinition({
|
|
369
|
+
id: 'devops',
|
|
370
|
+
name: 'DevOps & Deployment',
|
|
371
|
+
category: SkillCategory.DEVOPS,
|
|
372
|
+
description: 'CI/CD pipelines, Docker, cloud deployment, infrastructure management',
|
|
373
|
+
instructions: 'Write Dockerfiles, CI configs, and deployment scripts.',
|
|
374
|
+
requiredTools: ['file_write', 'shell_exec'],
|
|
375
|
+
tags: ['docker', 'ci-cd', 'kubernetes', 'aws', 'deployment'],
|
|
376
|
+
icon: '🚀',
|
|
377
|
+
}),
|
|
378
|
+
new SkillDefinition({
|
|
379
|
+
id: 'monitoring',
|
|
380
|
+
name: 'Monitoring & Logging',
|
|
381
|
+
category: SkillCategory.DEVOPS,
|
|
382
|
+
description: 'Set up monitoring, alerting, and log analysis',
|
|
383
|
+
instructions: 'Configure monitoring tools and analyze logs for issues.',
|
|
384
|
+
requiredTools: ['shell_exec', 'file_read'],
|
|
385
|
+
tags: ['monitoring', 'logging', 'alerting', 'observability'],
|
|
386
|
+
icon: '📡',
|
|
387
|
+
}),
|
|
388
|
+
];
|
|
389
|
+
|
|
390
|
+
// Global singleton
|
|
391
|
+
export const skillRegistry = new SkillRegistry();
|
|
392
|
+
|
|
393
|
+
// Register all built-in skills and enable them by default
|
|
394
|
+
builtinSkills.forEach(skill => {
|
|
395
|
+
skillRegistry.register(skill);
|
|
396
|
+
skillRegistry.install(skill.id);
|
|
397
|
+
skillRegistry.enable(skill.id);
|
|
398
|
+
});
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Enterprise Management System - Core Engine Entry
|
|
3
|
+
* Exports all core modules
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export { Company } from './organization/company.js';
|
|
7
|
+
export { createAgent, deserializeAgent, BaseAgent, LLMAgent, CLIAgent } from './agent/index.js';
|
|
8
|
+
export { Employee, createEmployee, deserializeEmployee, Secretary, HRAssistant } from './employee/index.js';
|
|
9
|
+
export { Department } from './organization/department.js';
|
|
10
|
+
export { HRSystem, JobTemplates } from './organization/workforce/hr.js';
|
|
11
|
+
export { ProviderRegistry, ModelProviders, JobCategory, JobCategoryLabel } from './organization/workforce/providers.js';
|
|
12
|
+
export { Memory } from './employee/memory/index.js';
|
|
13
|
+
export { PerformanceSystem, PerformanceReview, PerformanceDimensions, PerformanceLevel } from './employee/performance.js';
|
|
14
|
+
export { TalentMarket } from './organization/workforce/talent-market.js';
|
|
15
|
+
export { LLMClient, llmClient } from './agent/llm-agent/client.js';
|
|
16
|
+
export { AgentToolKit } from './agent/tools.js';
|
|
17
|
+
export { MessageBus, Message, MessageType } from './agent/message-bus.js';
|
|
18
|
+
export { WorkspaceManager } from './workspace.js';
|
|
19
|
+
export { saveState, loadState, clearState, debouncedSave } from './organization/persistence.js';
|
|
20
|
+
export { saveAgentMemory, loadAgentMemory, saveAllAgentMemories, deleteAgentMemory, listMemoryFiles, clearAllMemories } from './employee/memory/store.js';
|
|
21
|
+
|
|
22
|
+
// Distilled modules (inspired by OpenClaw - see THIRD-PARTY-NOTICES.md)
|
|
23
|
+
export { AuditLogger, SecurityGuard, auditLogger, securityGuard, AuditLevel, AuditCategory } from './system/audit.js';
|
|
24
|
+
export { PluginRegistry, pluginRegistry, PluginManifest, HookPoint, PluginState, initPluginRuntime } from './system/plugin.js';
|
|
25
|
+
export { CronScheduler, cronScheduler, JobStatus, parseCronExpression } from './system/cron.js';
|
|
26
|
+
export { HookRegistry, hookRegistry, HookEvent, HookEventType, createHookEvent } from '../lib/hooks.js';
|
|
27
|
+
export { SessionManager, sessionManager, SessionState, SendPolicy, buildSessionKey } from './agent/session.js';
|
|
28
|
+
export { ConfigValidator, configValidator, ConfigType, enterpriseConfigSchema } from '../lib/config-validator.js';
|
|
29
|
+
export { SkillRegistry, skillRegistry, SkillDefinition, SkillCategory, SkillState } from './employee/skills.js';
|
|
30
|
+
export { KnowledgeManager, knowledgeManager, KnowledgeType, EntryType } from './employee/knowledge.js';
|
|
31
|
+
export { ChatStore, chatStore } from './agent/chat-store.js';
|
|
32
|
+
export { CLIBackendRegistry, cliBackendRegistry, CLIBackendState } from './agent/cli-agent/backends/index.js';
|
|
33
|
+
export { GroupChatLoop, groupChatLoop } from './organization/group-chat-loop.js';
|
|
34
|
+
export { TeamManager, Team, Sprint, SprintStatus } from './organization/team.js';
|
|
35
|
+
// Prompt locale is now English-only (see core/prompts.js).
|
|
36
|
+
// Kept as no-op stubs for API backward compatibility.
|
|
37
|
+
export function setPromptLocale(_locale) { /* no-op: English only */ }
|
|
38
|
+
export function getPromptLocaleCode() { return 'en'; }
|