kernelbot 1.0.28 → 1.0.30

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 (56) hide show
  1. package/.env.example +4 -0
  2. package/README.md +0 -0
  3. package/bin/kernel.js +13 -6
  4. package/config.example.yaml +14 -1
  5. package/package.json +1 -1
  6. package/src/agent.js +482 -27
  7. package/src/automation/automation-manager.js +0 -0
  8. package/src/automation/automation.js +0 -0
  9. package/src/automation/index.js +0 -0
  10. package/src/automation/scheduler.js +0 -0
  11. package/src/bot.js +340 -3
  12. package/src/claude-auth.js +93 -0
  13. package/src/coder.js +48 -6
  14. package/src/conversation.js +0 -0
  15. package/src/intents/detector.js +0 -0
  16. package/src/intents/index.js +0 -0
  17. package/src/intents/planner.js +0 -0
  18. package/src/persona.js +0 -0
  19. package/src/prompts/orchestrator.js +53 -5
  20. package/src/prompts/persona.md +0 -0
  21. package/src/prompts/system.js +0 -0
  22. package/src/prompts/workers.js +61 -2
  23. package/src/providers/anthropic.js +0 -0
  24. package/src/providers/base.js +0 -0
  25. package/src/providers/index.js +0 -0
  26. package/src/providers/models.js +0 -0
  27. package/src/providers/openai-compat.js +0 -0
  28. package/src/security/audit.js +0 -0
  29. package/src/security/auth.js +0 -0
  30. package/src/security/confirm.js +0 -0
  31. package/src/self.js +122 -0
  32. package/src/services/stt.js +139 -0
  33. package/src/services/tts.js +124 -0
  34. package/src/skills/catalog.js +0 -0
  35. package/src/skills/custom.js +0 -0
  36. package/src/swarm/job-manager.js +54 -7
  37. package/src/swarm/job.js +19 -1
  38. package/src/swarm/worker-registry.js +5 -0
  39. package/src/tools/browser.js +0 -0
  40. package/src/tools/categories.js +0 -0
  41. package/src/tools/coding.js +5 -0
  42. package/src/tools/docker.js +0 -0
  43. package/src/tools/git.js +0 -0
  44. package/src/tools/github.js +0 -0
  45. package/src/tools/index.js +0 -0
  46. package/src/tools/jira.js +0 -0
  47. package/src/tools/monitor.js +0 -0
  48. package/src/tools/network.js +0 -0
  49. package/src/tools/orchestrator-tools.js +76 -19
  50. package/src/tools/os.js +14 -1
  51. package/src/tools/persona.js +0 -0
  52. package/src/tools/process.js +0 -0
  53. package/src/utils/config.js +105 -2
  54. package/src/utils/display.js +0 -0
  55. package/src/utils/logger.js +0 -0
  56. package/src/worker.js +96 -5
package/.env.example CHANGED
@@ -9,6 +9,10 @@ TELEGRAM_BOT_TOKEN=123456:ABC-DEF...
9
9
 
10
10
  # Optional
11
11
  GITHUB_TOKEN=ghp_...
12
+
13
+ # ElevenLabs Voice (optional — enables voice replies and transcription)
14
+ ELEVENLABS_API_KEY=xi_...
15
+ ELEVENLABS_VOICE_ID=JBFqnCBsd6RMkjVDRZzb
12
16
  JIRA_BASE_URL=https://yourcompany.atlassian.net
13
17
  JIRA_EMAIL=you@company.com
14
18
  JIRA_API_TOKEN=your-jira-api-token
package/README.md CHANGED
File without changes
package/bin/kernel.js CHANGED
@@ -20,6 +20,7 @@ import {
20
20
  import { createAuditLogger } from '../src/security/audit.js';
21
21
  import { ConversationManager } from '../src/conversation.js';
22
22
  import { UserPersonaManager } from '../src/persona.js';
23
+ import { SelfManager } from '../src/self.js';
23
24
  import { Agent } from '../src/agent.js';
24
25
  import { JobManager } from '../src/swarm/job-manager.js';
25
26
  import { startBot } from '../src/bot.js';
@@ -125,14 +126,19 @@ async function startBotFlow(config) {
125
126
 
126
127
  const checks = [];
127
128
 
128
- // Orchestrator always needs Anthropic API key
129
+ // Orchestrator check dynamic provider
130
+ const orchProviderKey = config.orchestrator.provider || 'anthropic';
131
+ const orchProviderDef = PROVIDERS[orchProviderKey];
132
+ const orchLabel = orchProviderDef ? orchProviderDef.name : orchProviderKey;
129
133
  checks.push(
130
- await showStartupCheck('Orchestrator (Anthropic) API', async () => {
131
- const orchestratorKey = config.orchestrator.api_key || process.env.ANTHROPIC_API_KEY;
132
- if (!orchestratorKey) throw new Error('ANTHROPIC_API_KEY is required for the orchestrator');
134
+ await showStartupCheck(`Orchestrator (${orchLabel}) API`, async () => {
135
+ const orchestratorKey = config.orchestrator.api_key
136
+ || (orchProviderDef && process.env[orchProviderDef.envKey])
137
+ || process.env.ANTHROPIC_API_KEY;
138
+ if (!orchestratorKey) throw new Error(`${orchProviderDef?.envKey || 'ANTHROPIC_API_KEY'} is required for the orchestrator`);
133
139
  const provider = createProvider({
134
140
  brain: {
135
- provider: 'anthropic',
141
+ provider: orchProviderKey,
136
142
  model: config.orchestrator.model,
137
143
  max_tokens: config.orchestrator.max_tokens,
138
144
  temperature: config.orchestrator.temperature,
@@ -168,6 +174,7 @@ async function startBotFlow(config) {
168
174
 
169
175
  const conversationManager = new ConversationManager(config);
170
176
  const personaManager = new UserPersonaManager();
177
+ const selfManager = new SelfManager();
171
178
  const jobManager = new JobManager({
172
179
  jobTimeoutSeconds: config.swarm.job_timeout_seconds,
173
180
  cleanupIntervalMinutes: config.swarm.cleanup_interval_minutes,
@@ -175,7 +182,7 @@ async function startBotFlow(config) {
175
182
 
176
183
  const automationManager = new AutomationManager();
177
184
 
178
- const agent = new Agent({ config, conversationManager, personaManager, jobManager, automationManager });
185
+ const agent = new Agent({ config, conversationManager, personaManager, selfManager, jobManager, automationManager });
179
186
 
180
187
  startBot(config, agent, conversationManager, jobManager, automationManager);
181
188
 
@@ -5,16 +5,22 @@ bot:
5
5
  name: KernelBot
6
6
  description: AI engineering agent with full OS control
7
7
 
8
+ orchestrator:
9
+ provider: anthropic # anthropic | openai | google | groq — switchable via /orchestrator
10
+ # model: claude-opus-4-6
11
+
8
12
  brain:
9
- provider: anthropic # anthropic | openai | google | groq
13
+ provider: anthropic # anthropic | openai | google | groq — switchable via /brain
10
14
  model: claude-sonnet-4-20250514
11
15
  max_tokens: 8192
12
16
  temperature: 0.3
13
17
  max_tool_depth: 25
14
18
 
15
19
  claude_code:
20
+ # model: claude-opus-4-6 # switchable via /claudemodel
16
21
  max_turns: 50
17
22
  timeout_seconds: 600
23
+ # auth_mode: system # system | api_key | oauth_token — switchable via /claude
18
24
  # workspace_dir: /tmp/kernelbot-workspaces # default: ~/.kernelbot/workspaces
19
25
 
20
26
  github:
@@ -43,3 +49,10 @@ logging:
43
49
 
44
50
  conversation:
45
51
  max_history: 50
52
+
53
+ # Voice — ElevenLabs TTS & STT
54
+ # Requires ELEVENLABS_API_KEY in .env
55
+ voice:
56
+ tts_enabled: true # Send voice replies alongside text (default: true if API key present)
57
+ stt_enabled: true # Transcribe user voice messages (default: true if API key present)
58
+ # voice_id: JBFqnCBsd6RMkjVDRZzb # ElevenLabs voice ID (override ELEVENLABS_VOICE_ID env var)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kernelbot",
3
- "version": "1.0.28",
3
+ "version": "1.0.30",
4
4
  "description": "KernelBot — AI engineering agent with full OS control",
5
5
  "type": "module",
6
6
  "author": "Abdullah Al-Taheri <abdullah@altaheri.me>",