azerclaw 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +222 -0
  3. package/bin/azerclaw.ts +290 -0
  4. package/dist/bin/azerclaw.d.ts +19 -0
  5. package/dist/bin/azerclaw.d.ts.map +1 -0
  6. package/dist/bin/azerclaw.js +247 -0
  7. package/dist/bin/azerclaw.js.map +1 -0
  8. package/dist/skills/code-review/SKILL.md +46 -0
  9. package/dist/skills/daily-briefing/SKILL.md +35 -0
  10. package/dist/skills/git-assistant/SKILL.md +31 -0
  11. package/dist/src/agents/builtin.d.ts +52 -0
  12. package/dist/src/agents/builtin.d.ts.map +1 -0
  13. package/dist/src/agents/builtin.js +497 -0
  14. package/dist/src/agents/builtin.js.map +1 -0
  15. package/dist/src/agents/loader.d.ts +23 -0
  16. package/dist/src/agents/loader.d.ts.map +1 -0
  17. package/dist/src/agents/loader.js +154 -0
  18. package/dist/src/agents/loader.js.map +1 -0
  19. package/dist/src/channels/adapter.d.ts +57 -0
  20. package/dist/src/channels/adapter.d.ts.map +1 -0
  21. package/dist/src/channels/adapter.js +45 -0
  22. package/dist/src/channels/adapter.js.map +1 -0
  23. package/dist/src/channels/discord.d.ts +23 -0
  24. package/dist/src/channels/discord.d.ts.map +1 -0
  25. package/dist/src/channels/discord.js +129 -0
  26. package/dist/src/channels/discord.js.map +1 -0
  27. package/dist/src/channels/slack.d.ts +19 -0
  28. package/dist/src/channels/slack.d.ts.map +1 -0
  29. package/dist/src/channels/slack.js +97 -0
  30. package/dist/src/channels/slack.js.map +1 -0
  31. package/dist/src/channels/telegram.d.ts +20 -0
  32. package/dist/src/channels/telegram.d.ts.map +1 -0
  33. package/dist/src/channels/telegram.js +87 -0
  34. package/dist/src/channels/telegram.js.map +1 -0
  35. package/dist/src/channels/webhook.d.ts +19 -0
  36. package/dist/src/channels/webhook.d.ts.map +1 -0
  37. package/dist/src/channels/webhook.js +124 -0
  38. package/dist/src/channels/webhook.js.map +1 -0
  39. package/dist/src/cli/animations/fish.d.ts +33 -0
  40. package/dist/src/cli/animations/fish.d.ts.map +1 -0
  41. package/dist/src/cli/animations/fish.js +297 -0
  42. package/dist/src/cli/animations/fish.js.map +1 -0
  43. package/dist/src/cli/commands/agents.d.ts +8 -0
  44. package/dist/src/cli/commands/agents.d.ts.map +1 -0
  45. package/dist/src/cli/commands/agents.js +104 -0
  46. package/dist/src/cli/commands/agents.js.map +1 -0
  47. package/dist/src/cli/commands/chat.d.ts +9 -0
  48. package/dist/src/cli/commands/chat.d.ts.map +1 -0
  49. package/dist/src/cli/commands/chat.js +236 -0
  50. package/dist/src/cli/commands/chat.js.map +1 -0
  51. package/dist/src/cli/commands/config.d.ts +9 -0
  52. package/dist/src/cli/commands/config.d.ts.map +1 -0
  53. package/dist/src/cli/commands/config.js +97 -0
  54. package/dist/src/cli/commands/config.js.map +1 -0
  55. package/dist/src/cli/commands/doctor.d.ts +8 -0
  56. package/dist/src/cli/commands/doctor.d.ts.map +1 -0
  57. package/dist/src/cli/commands/doctor.js +159 -0
  58. package/dist/src/cli/commands/doctor.js.map +1 -0
  59. package/dist/src/cli/commands/models.d.ts +7 -0
  60. package/dist/src/cli/commands/models.d.ts.map +1 -0
  61. package/dist/src/cli/commands/models.js +64 -0
  62. package/dist/src/cli/commands/models.js.map +1 -0
  63. package/dist/src/cli/commands/onboard.d.ts +6 -0
  64. package/dist/src/cli/commands/onboard.d.ts.map +1 -0
  65. package/dist/src/cli/commands/onboard.js +150 -0
  66. package/dist/src/cli/commands/onboard.js.map +1 -0
  67. package/dist/src/cli/commands/run.d.ts +9 -0
  68. package/dist/src/cli/commands/run.d.ts.map +1 -0
  69. package/dist/src/cli/commands/run.js +84 -0
  70. package/dist/src/cli/commands/run.js.map +1 -0
  71. package/dist/src/cli/commands/tui.d.ts +6 -0
  72. package/dist/src/cli/commands/tui.d.ts.map +1 -0
  73. package/dist/src/cli/commands/tui.js +252 -0
  74. package/dist/src/cli/commands/tui.js.map +1 -0
  75. package/dist/src/config/manager.d.ts +80 -0
  76. package/dist/src/config/manager.d.ts.map +1 -0
  77. package/dist/src/config/manager.js +232 -0
  78. package/dist/src/config/manager.js.map +1 -0
  79. package/dist/src/config/schema.d.ts +910 -0
  80. package/dist/src/config/schema.d.ts.map +1 -0
  81. package/dist/src/config/schema.js +138 -0
  82. package/dist/src/config/schema.js.map +1 -0
  83. package/dist/src/core/gateway.d.ts +35 -0
  84. package/dist/src/core/gateway.d.ts.map +1 -0
  85. package/dist/src/core/gateway.js +205 -0
  86. package/dist/src/core/gateway.js.map +1 -0
  87. package/dist/src/core/runtime.d.ts +69 -0
  88. package/dist/src/core/runtime.d.ts.map +1 -0
  89. package/dist/src/core/runtime.js +188 -0
  90. package/dist/src/core/runtime.js.map +1 -0
  91. package/dist/src/core/security.d.ts +55 -0
  92. package/dist/src/core/security.d.ts.map +1 -0
  93. package/dist/src/core/security.js +241 -0
  94. package/dist/src/core/security.js.map +1 -0
  95. package/dist/src/index.d.ts +24 -0
  96. package/dist/src/index.d.ts.map +1 -0
  97. package/dist/src/index.js +46 -0
  98. package/dist/src/index.js.map +1 -0
  99. package/dist/src/memory/store.d.ts +65 -0
  100. package/dist/src/memory/store.d.ts.map +1 -0
  101. package/dist/src/memory/store.js +250 -0
  102. package/dist/src/memory/store.js.map +1 -0
  103. package/dist/src/providers/anthropic.d.ts +25 -0
  104. package/dist/src/providers/anthropic.d.ts.map +1 -0
  105. package/dist/src/providers/anthropic.js +163 -0
  106. package/dist/src/providers/anthropic.js.map +1 -0
  107. package/dist/src/providers/base.d.ts +90 -0
  108. package/dist/src/providers/base.d.ts.map +1 -0
  109. package/dist/src/providers/base.js +12 -0
  110. package/dist/src/providers/base.js.map +1 -0
  111. package/dist/src/providers/google.d.ts +23 -0
  112. package/dist/src/providers/google.d.ts.map +1 -0
  113. package/dist/src/providers/google.js +118 -0
  114. package/dist/src/providers/google.js.map +1 -0
  115. package/dist/src/providers/ollama.d.ts +24 -0
  116. package/dist/src/providers/ollama.d.ts.map +1 -0
  117. package/dist/src/providers/ollama.js +81 -0
  118. package/dist/src/providers/ollama.js.map +1 -0
  119. package/dist/src/providers/openai.d.ts +30 -0
  120. package/dist/src/providers/openai.d.ts.map +1 -0
  121. package/dist/src/providers/openai.js +187 -0
  122. package/dist/src/providers/openai.js.map +1 -0
  123. package/dist/src/providers/router.d.ts +20 -0
  124. package/dist/src/providers/router.d.ts.map +1 -0
  125. package/dist/src/providers/router.js +156 -0
  126. package/dist/src/providers/router.js.map +1 -0
  127. package/dist/src/scheduler/heartbeat.d.ts +62 -0
  128. package/dist/src/scheduler/heartbeat.d.ts.map +1 -0
  129. package/dist/src/scheduler/heartbeat.js +267 -0
  130. package/dist/src/scheduler/heartbeat.js.map +1 -0
  131. package/dist/src/skills/loader.d.ts +25 -0
  132. package/dist/src/skills/loader.d.ts.map +1 -0
  133. package/dist/src/skills/loader.js +165 -0
  134. package/dist/src/skills/loader.js.map +1 -0
  135. package/dist/src/tools/advanced.d.ts +15 -0
  136. package/dist/src/tools/advanced.d.ts.map +1 -0
  137. package/dist/src/tools/advanced.js +102 -0
  138. package/dist/src/tools/advanced.js.map +1 -0
  139. package/dist/src/tools/filesystem.d.ts +10 -0
  140. package/dist/src/tools/filesystem.d.ts.map +1 -0
  141. package/dist/src/tools/filesystem.js +160 -0
  142. package/dist/src/tools/filesystem.js.map +1 -0
  143. package/dist/src/tools/registry.d.ts +26 -0
  144. package/dist/src/tools/registry.d.ts.map +1 -0
  145. package/dist/src/tools/registry.js +49 -0
  146. package/dist/src/tools/registry.js.map +1 -0
  147. package/dist/src/tools/shell.d.ts +7 -0
  148. package/dist/src/tools/shell.d.ts.map +1 -0
  149. package/dist/src/tools/shell.js +46 -0
  150. package/dist/src/tools/shell.js.map +1 -0
  151. package/dist/src/workflow/engine.d.ts +65 -0
  152. package/dist/src/workflow/engine.d.ts.map +1 -0
  153. package/dist/src/workflow/engine.js +297 -0
  154. package/dist/src/workflow/engine.js.map +1 -0
  155. package/package.json +113 -0
  156. package/skills/code-review/SKILL.md +46 -0
  157. package/skills/daily-briefing/SKILL.md +35 -0
  158. package/skills/git-assistant/SKILL.md +31 -0
  159. package/templates/HEARTBEAT.md +27 -0
  160. package/templates/IDENTITY.md +23 -0
  161. package/templates/deploy-pipeline.fishbone +39 -0
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ /**
3
+ * 🐟 AZERCLAW Doctor Command
4
+ * Health check and auto-repair for the AZERCLAW installation.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.runDoctor = runDoctor;
8
+ const chalk = require('chalk');
9
+ const gradientString = require('gradient-string');
10
+ const { getConfigManager } = require('../../config/manager');
11
+ const { getRouter, resetRouter } = require('../../providers/router');
12
+ const { fishSuccess, fishError, fishInfo, fishWarn, fishBox, FishThinkingAnimation, renderFishProgress } = require('../animations/fish');
13
+ const LUXE = gradientString(['#c084fc', '#818cf8', '#60a5fa', '#34d399']);
14
+ async function runDoctor(options) {
15
+ const checks = [];
16
+ const config = getConfigManager();
17
+ fishBox('🩺 AZERCLAW Doctor', [
18
+ chalk.dim('Running health checks...'),
19
+ ]);
20
+ console.log('');
21
+ const totalChecks = 7;
22
+ let completed = 0;
23
+ // 1. Config file
24
+ renderFishProgress(++completed, totalChecks, 'Config file');
25
+ const fs = require('fs');
26
+ if (fs.existsSync(config.paths.configFile)) {
27
+ checks.push({ name: 'Config File', status: 'pass', message: `Found at ${config.paths.configFile}` });
28
+ }
29
+ else {
30
+ checks.push({ name: 'Config File', status: 'fail', message: 'Missing', fix: () => config.reset() });
31
+ }
32
+ // 2. Config directories
33
+ renderFishProgress(++completed, totalChecks, 'Directories');
34
+ const dirs = [config.paths.configDir, config.paths.skillsDir, config.paths.memoryDir, config.paths.logsDir];
35
+ const missingDirs = dirs.filter(d => !fs.existsSync(d));
36
+ if (missingDirs.length === 0) {
37
+ checks.push({ name: 'Directories', status: 'pass', message: 'All present' });
38
+ }
39
+ else {
40
+ checks.push({
41
+ name: 'Directories',
42
+ status: 'warn',
43
+ message: `Missing: ${missingDirs.length}`,
44
+ fix: () => missingDirs.forEach(d => fs.mkdirSync(d, { recursive: true })),
45
+ });
46
+ }
47
+ // 3. File permissions
48
+ renderFishProgress(++completed, totalChecks, 'Permissions');
49
+ try {
50
+ const stats = fs.statSync(config.paths.configFile);
51
+ const mode = (stats.mode & 0o777).toString(8);
52
+ if (mode === '600') {
53
+ checks.push({ name: 'Permissions', status: 'pass', message: 'Config is 0600 (secure)' });
54
+ }
55
+ else {
56
+ checks.push({
57
+ name: 'Permissions',
58
+ status: 'warn',
59
+ message: `Config is 0${mode} (should be 0600)`,
60
+ fix: () => fs.chmodSync(config.paths.configFile, 0o600),
61
+ });
62
+ }
63
+ }
64
+ catch {
65
+ checks.push({ name: 'Permissions', status: 'warn', message: 'Cannot check permissions' });
66
+ }
67
+ // 4. Providers configured
68
+ renderFishProgress(++completed, totalChecks, 'Providers');
69
+ const enabled = config.getEnabledProviders();
70
+ if (enabled.length > 0) {
71
+ checks.push({ name: 'Providers', status: 'pass', message: `${enabled.length} configured: ${enabled.map((p) => p.name).join(', ')}` });
72
+ }
73
+ else {
74
+ checks.push({
75
+ name: 'Providers',
76
+ status: 'fail',
77
+ message: 'No providers configured',
78
+ });
79
+ }
80
+ // 5. Provider connectivity
81
+ renderFishProgress(++completed, totalChecks, 'Connectivity');
82
+ if (enabled.length > 0) {
83
+ resetRouter();
84
+ const router = getRouter();
85
+ const available = router.getAvailableProviders();
86
+ if (available.length > 0) {
87
+ checks.push({ name: 'Connectivity', status: 'pass', message: `${available.length} providers initialized` });
88
+ }
89
+ else {
90
+ checks.push({ name: 'Connectivity', status: 'warn', message: 'No providers could initialize' });
91
+ }
92
+ }
93
+ else {
94
+ checks.push({ name: 'Connectivity', status: 'warn', message: 'Skipped (no providers)' });
95
+ }
96
+ // 6. Node.js version
97
+ renderFishProgress(++completed, totalChecks, 'Node.js');
98
+ const nodeVersion = process.version;
99
+ const major = parseInt(nodeVersion.slice(1));
100
+ if (major >= 18) {
101
+ checks.push({ name: 'Node.js', status: 'pass', message: nodeVersion });
102
+ }
103
+ else {
104
+ checks.push({ name: 'Node.js', status: 'warn', message: `${nodeVersion} (recommend 18+)` });
105
+ }
106
+ // 7. System info
107
+ renderFishProgress(++completed, totalChecks, 'System');
108
+ const os = require('os');
109
+ checks.push({
110
+ name: 'System',
111
+ status: 'pass',
112
+ message: `${os.platform()} ${os.arch()} | ${os.cpus().length} cores | ${Math.round(os.totalmem() / 1073741824)}GB RAM`,
113
+ });
114
+ // Display results
115
+ console.log('');
116
+ console.log('');
117
+ const passed = checks.filter(c => c.status === 'pass').length;
118
+ const warnings = checks.filter(c => c.status === 'warn').length;
119
+ const failures = checks.filter(c => c.status === 'fail').length;
120
+ for (const check of checks) {
121
+ const icon = check.status === 'pass' ? chalk.hex('#34d399')('βœ“') :
122
+ check.status === 'warn' ? chalk.hex('#fbbf24')('⚠') :
123
+ chalk.hex('#f87171')('βœ—');
124
+ const nameStr = chalk.hex('#e2e8f0')(check.name.padEnd(16));
125
+ const msgStr = check.status === 'pass' ? chalk.dim(check.message) :
126
+ check.status === 'warn' ? chalk.hex('#fbbf24')(check.message) :
127
+ chalk.hex('#f87171')(check.message);
128
+ console.log(` ${icon} ${nameStr} ${msgStr}`);
129
+ }
130
+ console.log('');
131
+ // Auto-fix if requested
132
+ if (options.fix && (warnings > 0 || failures > 0)) {
133
+ const fixable = checks.filter(c => c.fix && c.status !== 'pass');
134
+ if (fixable.length > 0) {
135
+ fishInfo(`Attempting to fix ${fixable.length} issue(s)...`);
136
+ for (const check of fixable) {
137
+ try {
138
+ check.fix();
139
+ fishSuccess(`Fixed: ${check.name}`);
140
+ }
141
+ catch (e) {
142
+ fishError(`Cannot fix ${check.name}: ${e.message}`);
143
+ }
144
+ }
145
+ }
146
+ }
147
+ // Summary
148
+ if (failures > 0) {
149
+ fishError(`${failures} check(s) failed. Run 'azerclaw onboard' to fix.`);
150
+ }
151
+ else if (warnings > 0) {
152
+ fishWarn(`${passed} passed, ${warnings} warning(s). Run 'azerclaw doctor --fix' to repair.`);
153
+ }
154
+ else {
155
+ fishSuccess(`All ${passed} checks passed! 🐟`);
156
+ }
157
+ }
158
+ module.exports = { runDoctor };
159
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * 🐟 AZERCLAW Models Command
3
+ * List and manage AI models across all providers.
4
+ */
5
+ export declare function modelsStatus(): Promise<void>;
6
+ export declare function modelsList(): Promise<void>;
7
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/models.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAalD;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAuChD"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ /**
3
+ * 🐟 AZERCLAW Models Command
4
+ * List and manage AI models across all providers.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.modelsStatus = modelsStatus;
8
+ exports.modelsList = modelsList;
9
+ const chalk = require('chalk');
10
+ const gradientString = require('gradient-string');
11
+ const { getRouter, resetRouter } = require('../../providers/router');
12
+ const { getConfigManager } = require('../../config/manager');
13
+ const { fishSuccess, fishInfo, fishBox, FishThinkingAnimation } = require('../animations/fish');
14
+ const LUXE = gradientString(['#c084fc', '#818cf8', '#60a5fa', '#34d399']);
15
+ async function modelsStatus() {
16
+ const config = getConfigManager();
17
+ const aiConfig = config.getAll().ai;
18
+ fishBox('🧠 Model Status', [
19
+ chalk.hex('#818cf8')(`Default Provider: `) + chalk.hex('#34d399')(aiConfig.defaultProvider),
20
+ chalk.hex('#818cf8')(`Default Model: `) + chalk.hex('#34d399')(aiConfig.providers[aiConfig.defaultProvider]?.defaultModel || 'auto'),
21
+ chalk.hex('#818cf8')(`Fallback Chain: `) + chalk.dim(aiConfig.fallbackChain.join(' β†’ ')),
22
+ chalk.hex('#818cf8')(`Temperature: `) + chalk.dim(String(aiConfig.temperature)),
23
+ chalk.hex('#818cf8')(`Max Tokens: `) + chalk.dim(String(aiConfig.maxTokens)),
24
+ ]);
25
+ }
26
+ async function modelsList() {
27
+ const spinner = new FishThinkingAnimation('Fetching models');
28
+ spinner.start();
29
+ try {
30
+ resetRouter();
31
+ const router = getRouter();
32
+ const models = await router.listAllModels();
33
+ spinner.stop('Models loaded');
34
+ if (models.length === 0) {
35
+ fishInfo('No models available. Configure providers with: azerclaw onboard');
36
+ return;
37
+ }
38
+ // Group by provider
39
+ const byProvider = new Map();
40
+ for (const model of models) {
41
+ if (!byProvider.has(model.provider))
42
+ byProvider.set(model.provider, []);
43
+ byProvider.get(model.provider).push(model);
44
+ }
45
+ console.log('');
46
+ for (const [provider, provModels] of byProvider) {
47
+ console.log(LUXE(` ─── ${provider.toUpperCase()} ───`));
48
+ for (const model of provModels) {
49
+ const tools = model.supportsTools ? chalk.hex('#34d399')('πŸ”§') : ' ';
50
+ const stream = model.supportsStreaming ? chalk.hex('#60a5fa')('⚑') : ' ';
51
+ const ctx = chalk.dim(`${Math.round(model.contextWindow / 1000)}K ctx`);
52
+ console.log(` ${tools} ${stream} ${chalk.hex('#e2e8f0')(model.id.padEnd(35))} ${ctx}`);
53
+ }
54
+ console.log('');
55
+ }
56
+ console.log(chalk.dim(' πŸ”§ = Tool Use ⚑ = Streaming'));
57
+ console.log('');
58
+ }
59
+ catch (error) {
60
+ spinner.fail('Failed to fetch models');
61
+ }
62
+ }
63
+ module.exports = { modelsStatus, modelsList };
64
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../../../src/cli/commands/models.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * 🐟 AZERCLAW Onboard Command
3
+ * Interactive first-time setup wizard with premium UI.
4
+ */
5
+ export declare function runOnboard(): Promise<void>;
6
+ //# sourceMappingURL=onboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboard.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/onboard.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsBH,wBAAsB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAuIhD"}
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ /**
3
+ * 🐟 AZERCLAW Onboard Command
4
+ * Interactive first-time setup wizard with premium UI.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.runOnboard = runOnboard;
8
+ const chalk = require('chalk');
9
+ const gradientString = require('gradient-string');
10
+ const Enquirer = require('enquirer');
11
+ const { getConfigManager } = require('../../config/manager');
12
+ const { fishSuccess, fishError, fishInfo, fishBox, FishThinkingAnimation } = require('../animations/fish');
13
+ const LUXE = gradientString(['#c084fc', '#818cf8', '#60a5fa', '#34d399']);
14
+ const OCEAN = gradientString(['#0ea5e9', '#06b6d4', '#14b8a6']);
15
+ const PROVIDERS = [
16
+ { name: 'OpenAI', value: 'openai', hint: 'GPT-4o, GPT-4.1, o3, o4-mini', keyPrefix: 'sk-' },
17
+ { name: 'Anthropic', value: 'anthropic', hint: 'Claude Opus 4, Sonnet 4, Haiku', keyPrefix: 'sk-ant-' },
18
+ { name: 'Google Gemini', value: 'google', hint: 'Gemini 2.5 Pro/Flash', keyPrefix: 'AI' },
19
+ { name: 'Groq', value: 'groq', hint: 'Llama 3.3, Mixtral (fast inference)', keyPrefix: 'gsk_' },
20
+ { name: 'DeepSeek', value: 'deepseek', hint: 'DeepSeek V3, R1', keyPrefix: 'sk-' },
21
+ { name: 'OpenRouter', value: 'openrouter', hint: '100+ models via one key', keyPrefix: 'sk-or-' },
22
+ { name: 'Ollama (Local)', value: 'ollama', hint: 'Free, runs on your machine', keyPrefix: '' },
23
+ { name: 'Custom (OpenAI-compatible)', value: 'custom', hint: 'Any endpoint', keyPrefix: '' },
24
+ ];
25
+ async function runOnboard() {
26
+ const config = getConfigManager();
27
+ console.log('');
28
+ fishBox('🐟 AZERCLAW Setup Wizard', [
29
+ chalk.dim('Welcome! Let\'s configure your AI providers.'),
30
+ chalk.dim('Your keys are stored locally at ~/.azerclaw/config.json'),
31
+ chalk.dim('You can change these anytime with: azerclaw config'),
32
+ '',
33
+ LUXE('BYOK β€” Bring Your Own Key β€” Zero platform fees'),
34
+ ]);
35
+ console.log('');
36
+ // Provider selection
37
+ const { providers } = await new Enquirer.MultiSelect({
38
+ name: 'providers',
39
+ message: OCEAN('Which AI providers would you like to configure?'),
40
+ choices: PROVIDERS.map(p => ({
41
+ name: p.value,
42
+ message: `${p.name}`,
43
+ hint: chalk.dim(p.hint),
44
+ })),
45
+ result(names) { return names; },
46
+ }).run().catch(() => ({ providers: [] }));
47
+ if (!providers || providers.length === 0) {
48
+ fishWarnMsg('No providers selected. You can configure later with: azerclaw config set ai.providers.<name>.apiKey <key>');
49
+ return;
50
+ }
51
+ // Configure each provider
52
+ for (const providerValue of providers) {
53
+ const provider = PROVIDERS.find(p => p.value === providerValue);
54
+ if (!provider)
55
+ continue;
56
+ console.log('');
57
+ console.log(LUXE(` ─── ${provider.name} ───`));
58
+ if (provider.value === 'ollama') {
59
+ const { baseUrl } = await new Enquirer.Input({
60
+ name: 'baseUrl',
61
+ message: 'Ollama base URL:',
62
+ initial: 'http://localhost:11434',
63
+ }).run().then((val) => ({ baseUrl: val })).catch(() => ({ baseUrl: 'http://localhost:11434' }));
64
+ config.set(`ai.providers.ollama.baseUrl`, baseUrl);
65
+ config.set(`ai.providers.ollama.enabled`, true);
66
+ fishSuccess(`Ollama configured at ${baseUrl}`);
67
+ continue;
68
+ }
69
+ if (provider.value === 'custom') {
70
+ const baseUrl = await new Enquirer.Input({
71
+ message: 'API Base URL:',
72
+ initial: 'https://api.example.com/v1',
73
+ }).run().catch(() => '');
74
+ const apiKey = await new Enquirer.Password({
75
+ message: 'API Key:',
76
+ }).run().catch(() => '');
77
+ const model = await new Enquirer.Input({
78
+ message: 'Default model name:',
79
+ }).run().catch(() => '');
80
+ if (baseUrl && apiKey) {
81
+ config.set('ai.providers.custom.baseUrl', baseUrl);
82
+ config.set('ai.providers.custom.apiKey', apiKey);
83
+ config.set('ai.providers.custom.defaultModel', model);
84
+ config.set('ai.providers.custom.enabled', true);
85
+ fishSuccess('Custom provider configured');
86
+ }
87
+ continue;
88
+ }
89
+ // Standard API key providers
90
+ const apiKey = await new Enquirer.Password({
91
+ name: 'apiKey',
92
+ message: `${provider.name} API Key:`,
93
+ hint: provider.keyPrefix ? chalk.dim(`starts with ${provider.keyPrefix}...`) : undefined,
94
+ }).run().catch(() => '');
95
+ if (apiKey) {
96
+ config.setProviderKey(provider.value, apiKey);
97
+ fishSuccess(`${provider.name} configured`);
98
+ }
99
+ else {
100
+ fishError(`${provider.name} skipped`);
101
+ }
102
+ }
103
+ // Select default provider
104
+ const enabledProviders = config.getEnabledProviders();
105
+ if (enabledProviders.length > 1) {
106
+ console.log('');
107
+ const { defaultProvider } = await new Enquirer.Select({
108
+ name: 'defaultProvider',
109
+ message: OCEAN('Select your default AI provider:'),
110
+ choices: enabledProviders.map((p) => ({
111
+ name: p.name,
112
+ message: PROVIDERS.find(pr => pr.value === p.name)?.name || p.name,
113
+ })),
114
+ }).run().then((val) => ({ defaultProvider: val })).catch(() => ({ defaultProvider: enabledProviders[0].name }));
115
+ config.set('ai.defaultProvider', defaultProvider);
116
+ }
117
+ // Agent settings
118
+ console.log('');
119
+ fishBox('βš™οΈ Agent Settings', [
120
+ chalk.dim('Configure how your AI agent behaves'),
121
+ ]);
122
+ const { agentName } = await new Enquirer.Input({
123
+ name: 'agentName',
124
+ message: 'Agent name:',
125
+ initial: 'Azerclaw',
126
+ }).run().then((val) => ({ agentName: val })).catch(() => ({ agentName: 'Azerclaw' }));
127
+ config.set('agent.name', agentName);
128
+ config.completeFirstRun();
129
+ // Final summary
130
+ console.log('');
131
+ fishBox('βœ… Setup Complete', [
132
+ LUXE(`Agent: ${agentName}`),
133
+ chalk.hex('#60a5fa')(`Providers: ${enabledProviders.map((p) => p.name).join(', ')}`),
134
+ chalk.hex('#34d399')(`Default: ${config.getAll().ai.defaultProvider}`),
135
+ '',
136
+ chalk.dim('Get started:'),
137
+ chalk.hex('#818cf8')(' azerclaw chat β€” Interactive chat'),
138
+ chalk.hex('#818cf8')(' azerclaw run β€” Execute a task'),
139
+ chalk.hex('#818cf8')(' azerclaw tui β€” Premium terminal UI'),
140
+ chalk.hex('#818cf8')(' azerclaw doctor β€” Health check'),
141
+ ]);
142
+ console.log('');
143
+ }
144
+ function fishWarnMsg(msg) {
145
+ const chalk = require('chalk');
146
+ const gradientString = require('gradient-string');
147
+ console.log(gradientString(['#f59e0b', '#f97316'])(` ><(((º>`) + chalk.hex('#fbbf24')(` ⚠ ${msg}`));
148
+ }
149
+ module.exports = { runOnboard };
150
+ //# sourceMappingURL=onboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboard.js","sourceRoot":"","sources":["../../../../src/cli/commands/onboard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * 🐟 AZERCLAW Run Command
3
+ * Execute a single task and exit.
4
+ */
5
+ export declare function runTask(task: string, options: {
6
+ model?: string;
7
+ verbose?: boolean;
8
+ }): Promise<void>;
9
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/run.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDzG"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ /**
3
+ * 🐟 AZERCLAW Run Command
4
+ * Execute a single task and exit.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.runTask = runTask;
8
+ const chalk = require('chalk');
9
+ const gradientString = require('gradient-string');
10
+ const { AgentRuntime } = require('../../core/runtime');
11
+ const { registerAllTools } = require('./chat');
12
+ const { FishThinkingAnimation, fishSuccess, fishError, fishBox } = require('../animations/fish');
13
+ const LUXE = gradientString(['#c084fc', '#818cf8', '#60a5fa', '#34d399']);
14
+ const OCEAN = gradientString(['#0ea5e9', '#06b6d4', '#14b8a6']);
15
+ async function runTask(task, options) {
16
+ registerAllTools();
17
+ const thinking = new FishThinkingAnimation('Working');
18
+ let isThinking = false;
19
+ let toolCount = 0;
20
+ console.log('');
21
+ console.log(OCEAN(' ><(((ΒΊ>') + chalk.dim(` Task: ${task.slice(0, 70)}${task.length > 70 ? '...' : ''}`));
22
+ console.log('');
23
+ const agent = new AgentRuntime({
24
+ eventHandler: async (event) => {
25
+ switch (event.type) {
26
+ case 'thinking':
27
+ if (!isThinking) {
28
+ isThinking = true;
29
+ thinking.start();
30
+ }
31
+ break;
32
+ case 'response':
33
+ if (isThinking) {
34
+ thinking.stop();
35
+ isThinking = false;
36
+ }
37
+ if (event.content) {
38
+ console.log(chalk.hex('#c4b5fd')(' β”Œβ”€ 🐟 Result'));
39
+ event.content.split('\n').forEach((line) => {
40
+ console.log(chalk.hex('#6366f1')(' β”‚ ') + chalk.hex('#e2e8f0')(line));
41
+ });
42
+ console.log(chalk.hex('#c4b5fd')(' └─'));
43
+ }
44
+ break;
45
+ case 'tool_call':
46
+ toolCount++;
47
+ if (isThinking)
48
+ thinking.updateMessage(`Tool: ${event.toolName}`);
49
+ if (options.verbose) {
50
+ console.log(chalk.hex('#818cf8')(` πŸ”§ ${event.toolName}(${JSON.stringify(event.toolArgs).slice(0, 80)})`));
51
+ }
52
+ break;
53
+ case 'sub_agent_spawn':
54
+ console.log(chalk.hex('#818cf8')(` 🐠 Sub-agent: ${event.content?.slice(0, 60)}`));
55
+ break;
56
+ case 'error':
57
+ if (isThinking) {
58
+ thinking.fail(event.error);
59
+ isThinking = false;
60
+ }
61
+ else
62
+ fishError(event.error || 'Error');
63
+ break;
64
+ case 'done':
65
+ if (isThinking) {
66
+ thinking.stop();
67
+ isThinking = false;
68
+ }
69
+ break;
70
+ }
71
+ },
72
+ });
73
+ try {
74
+ await agent.run(task);
75
+ console.log('');
76
+ fishSuccess(`Completed with ${toolCount} tool call(s)`);
77
+ }
78
+ catch (error) {
79
+ fishError(error.message || 'Task failed');
80
+ process.exit(1);
81
+ }
82
+ }
83
+ module.exports = { runTask };
84
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../../src/cli/commands/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * 🐟 AZERCLAW Premium TUI
3
+ * Full-featured terminal user interface with panels, status bar, and rich formatting.
4
+ */
5
+ export declare function runTUI(): Promise<void>;
6
+ //# sourceMappingURL=tui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/tui.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsHH,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAiJ5C"}