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.
Files changed (159) hide show
  1. package/.dockerignore +33 -0
  2. package/.nvmrc +1 -0
  3. package/ARCHITECTURE.md +394 -0
  4. package/Dockerfile +50 -0
  5. package/LICENSE +29 -0
  6. package/README.md +206 -0
  7. package/bin/i18n.js +46 -0
  8. package/bin/ideaco.js +494 -0
  9. package/deploy.sh +15 -0
  10. package/docker-compose.yml +30 -0
  11. package/electron/main.cjs +986 -0
  12. package/electron/preload.cjs +14 -0
  13. package/electron/web-backends.cjs +854 -0
  14. package/jsconfig.json +8 -0
  15. package/next.config.mjs +34 -0
  16. package/package.json +134 -0
  17. package/postcss.config.mjs +6 -0
  18. package/public/demo/dashboard.png +0 -0
  19. package/public/demo/employee.png +0 -0
  20. package/public/demo/messages.png +0 -0
  21. package/public/demo/office.png +0 -0
  22. package/public/demo/requirement.png +0 -0
  23. package/public/logo.jpeg +0 -0
  24. package/public/logo.png +0 -0
  25. package/scripts/prepare-electron.js +67 -0
  26. package/scripts/release.js +76 -0
  27. package/src/app/api/agents/[agentId]/chat/route.js +70 -0
  28. package/src/app/api/agents/[agentId]/conversations/route.js +35 -0
  29. package/src/app/api/agents/[agentId]/route.js +106 -0
  30. package/src/app/api/avatar/route.js +104 -0
  31. package/src/app/api/browse-dir/route.js +44 -0
  32. package/src/app/api/chat/route.js +265 -0
  33. package/src/app/api/company/factory-reset/route.js +43 -0
  34. package/src/app/api/company/route.js +82 -0
  35. package/src/app/api/departments/[deptId]/agents/[agentId]/dismiss/route.js +19 -0
  36. package/src/app/api/departments/route.js +92 -0
  37. package/src/app/api/group-chat-loop/events/route.js +70 -0
  38. package/src/app/api/group-chat-loop/route.js +94 -0
  39. package/src/app/api/mailbox/route.js +100 -0
  40. package/src/app/api/messages/route.js +14 -0
  41. package/src/app/api/providers/[id]/configure/route.js +21 -0
  42. package/src/app/api/providers/[id]/refresh-cookie/route.js +38 -0
  43. package/src/app/api/providers/[id]/test-cookie/route.js +28 -0
  44. package/src/app/api/providers/route.js +11 -0
  45. package/src/app/api/requirements/route.js +242 -0
  46. package/src/app/api/secretary/route.js +65 -0
  47. package/src/app/api/system/cli-backends/route.js +91 -0
  48. package/src/app/api/system/cron/route.js +110 -0
  49. package/src/app/api/system/knowledge/route.js +104 -0
  50. package/src/app/api/system/plugins/route.js +40 -0
  51. package/src/app/api/system/skills/route.js +46 -0
  52. package/src/app/api/system/status/route.js +46 -0
  53. package/src/app/api/talent-market/[profileId]/recall/route.js +22 -0
  54. package/src/app/api/talent-market/[profileId]/route.js +17 -0
  55. package/src/app/api/talent-market/route.js +26 -0
  56. package/src/app/api/teams/route.js +773 -0
  57. package/src/app/api/ws-files/[departmentId]/file/route.js +27 -0
  58. package/src/app/api/ws-files/[departmentId]/files/route.js +22 -0
  59. package/src/app/globals.css +130 -0
  60. package/src/app/layout.jsx +40 -0
  61. package/src/app/page.jsx +97 -0
  62. package/src/components/AgentChatModal.jsx +164 -0
  63. package/src/components/AgentDetailModal.jsx +425 -0
  64. package/src/components/AgentSpyModal.jsx +481 -0
  65. package/src/components/AvatarGrid.jsx +29 -0
  66. package/src/components/BossProfileModal.jsx +162 -0
  67. package/src/components/CachedAvatar.jsx +77 -0
  68. package/src/components/ChatPanel.jsx +219 -0
  69. package/src/components/ChatShared.jsx +255 -0
  70. package/src/components/DepartmentDetail.jsx +842 -0
  71. package/src/components/DepartmentView.jsx +367 -0
  72. package/src/components/FileReference.jsx +260 -0
  73. package/src/components/FilesView.jsx +465 -0
  74. package/src/components/GroupChatView.jsx +799 -0
  75. package/src/components/Mailbox.jsx +926 -0
  76. package/src/components/MessagesView.jsx +112 -0
  77. package/src/components/OnboardingGuide.jsx +209 -0
  78. package/src/components/OrgTree.jsx +151 -0
  79. package/src/components/Overview.jsx +391 -0
  80. package/src/components/PixelOffice.jsx +2281 -0
  81. package/src/components/ProviderGrid.jsx +551 -0
  82. package/src/components/ProvidersBoard.jsx +16 -0
  83. package/src/components/RequirementDetail.jsx +1279 -0
  84. package/src/components/RequirementsBoard.jsx +187 -0
  85. package/src/components/SecretarySettings.jsx +295 -0
  86. package/src/components/SetupWizard.jsx +388 -0
  87. package/src/components/Sidebar.jsx +169 -0
  88. package/src/components/SystemMonitor.jsx +808 -0
  89. package/src/components/TalentMarket.jsx +183 -0
  90. package/src/components/TeamDetail.jsx +697 -0
  91. package/src/core/agent/base-agent.js +104 -0
  92. package/src/core/agent/chat-store.js +602 -0
  93. package/src/core/agent/cli-agent/backends/claude-code/README.md +52 -0
  94. package/src/core/agent/cli-agent/backends/claude-code/config.js +27 -0
  95. package/src/core/agent/cli-agent/backends/codebuddy/README.md +236 -0
  96. package/src/core/agent/cli-agent/backends/codebuddy/config.js +27 -0
  97. package/src/core/agent/cli-agent/backends/codex/README.md +51 -0
  98. package/src/core/agent/cli-agent/backends/codex/config.js +27 -0
  99. package/src/core/agent/cli-agent/backends/index.js +27 -0
  100. package/src/core/agent/cli-agent/backends/registry.js +580 -0
  101. package/src/core/agent/cli-agent/index.js +154 -0
  102. package/src/core/agent/index.js +60 -0
  103. package/src/core/agent/llm-agent/client.js +320 -0
  104. package/src/core/agent/llm-agent/index.js +97 -0
  105. package/src/core/agent/message-bus.js +211 -0
  106. package/src/core/agent/session.js +608 -0
  107. package/src/core/agent/tools.js +596 -0
  108. package/src/core/agent/web-agent/backends/base-backend.js +180 -0
  109. package/src/core/agent/web-agent/backends/chatgpt/client.js +146 -0
  110. package/src/core/agent/web-agent/backends/chatgpt/config.js +148 -0
  111. package/src/core/agent/web-agent/backends/chatgpt/dom-scripts.js +303 -0
  112. package/src/core/agent/web-agent/backends/index.js +91 -0
  113. package/src/core/agent/web-agent/index.js +278 -0
  114. package/src/core/agent/web-agent/web-client.js +407 -0
  115. package/src/core/employee/base-employee.js +1088 -0
  116. package/src/core/employee/index.js +35 -0
  117. package/src/core/employee/knowledge.js +327 -0
  118. package/src/core/employee/lifecycle.js +990 -0
  119. package/src/core/employee/memory/index.js +642 -0
  120. package/src/core/employee/memory/store.js +143 -0
  121. package/src/core/employee/performance.js +224 -0
  122. package/src/core/employee/secretary.js +625 -0
  123. package/src/core/employee/skills.js +398 -0
  124. package/src/core/index.js +38 -0
  125. package/src/core/organization/company.js +2600 -0
  126. package/src/core/organization/department.js +737 -0
  127. package/src/core/organization/group-chat-loop.js +264 -0
  128. package/src/core/organization/index.js +8 -0
  129. package/src/core/organization/persistence.js +111 -0
  130. package/src/core/organization/team.js +267 -0
  131. package/src/core/organization/workforce/hr.js +377 -0
  132. package/src/core/organization/workforce/providers.js +468 -0
  133. package/src/core/organization/workforce/role-archetypes.js +805 -0
  134. package/src/core/organization/workforce/talent-market.js +205 -0
  135. package/src/core/prompts.js +532 -0
  136. package/src/core/requirement.js +1789 -0
  137. package/src/core/system/audit.js +483 -0
  138. package/src/core/system/cron.js +449 -0
  139. package/src/core/system/index.js +7 -0
  140. package/src/core/system/plugin.js +2183 -0
  141. package/src/core/utils/json-parse.js +188 -0
  142. package/src/core/workspace.js +239 -0
  143. package/src/lib/api-i18n.js +211 -0
  144. package/src/lib/avatar.js +268 -0
  145. package/src/lib/client-store.js +1025 -0
  146. package/src/lib/config-validator.js +483 -0
  147. package/src/lib/format-time.js +22 -0
  148. package/src/lib/hooks.js +414 -0
  149. package/src/lib/i18n.js +134 -0
  150. package/src/lib/paths.js +23 -0
  151. package/src/lib/store.js +72 -0
  152. package/src/locales/de.js +393 -0
  153. package/src/locales/en.js +1054 -0
  154. package/src/locales/es.js +393 -0
  155. package/src/locales/fr.js +393 -0
  156. package/src/locales/ja.js +501 -0
  157. package/src/locales/ko.js +513 -0
  158. package/src/locales/zh.js +828 -0
  159. 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'; }