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.
- package/LICENSE +21 -0
- package/README.md +222 -0
- package/bin/azerclaw.ts +290 -0
- package/dist/bin/azerclaw.d.ts +19 -0
- package/dist/bin/azerclaw.d.ts.map +1 -0
- package/dist/bin/azerclaw.js +247 -0
- package/dist/bin/azerclaw.js.map +1 -0
- package/dist/skills/code-review/SKILL.md +46 -0
- package/dist/skills/daily-briefing/SKILL.md +35 -0
- package/dist/skills/git-assistant/SKILL.md +31 -0
- package/dist/src/agents/builtin.d.ts +52 -0
- package/dist/src/agents/builtin.d.ts.map +1 -0
- package/dist/src/agents/builtin.js +497 -0
- package/dist/src/agents/builtin.js.map +1 -0
- package/dist/src/agents/loader.d.ts +23 -0
- package/dist/src/agents/loader.d.ts.map +1 -0
- package/dist/src/agents/loader.js +154 -0
- package/dist/src/agents/loader.js.map +1 -0
- package/dist/src/channels/adapter.d.ts +57 -0
- package/dist/src/channels/adapter.d.ts.map +1 -0
- package/dist/src/channels/adapter.js +45 -0
- package/dist/src/channels/adapter.js.map +1 -0
- package/dist/src/channels/discord.d.ts +23 -0
- package/dist/src/channels/discord.d.ts.map +1 -0
- package/dist/src/channels/discord.js +129 -0
- package/dist/src/channels/discord.js.map +1 -0
- package/dist/src/channels/slack.d.ts +19 -0
- package/dist/src/channels/slack.d.ts.map +1 -0
- package/dist/src/channels/slack.js +97 -0
- package/dist/src/channels/slack.js.map +1 -0
- package/dist/src/channels/telegram.d.ts +20 -0
- package/dist/src/channels/telegram.d.ts.map +1 -0
- package/dist/src/channels/telegram.js +87 -0
- package/dist/src/channels/telegram.js.map +1 -0
- package/dist/src/channels/webhook.d.ts +19 -0
- package/dist/src/channels/webhook.d.ts.map +1 -0
- package/dist/src/channels/webhook.js +124 -0
- package/dist/src/channels/webhook.js.map +1 -0
- package/dist/src/cli/animations/fish.d.ts +33 -0
- package/dist/src/cli/animations/fish.d.ts.map +1 -0
- package/dist/src/cli/animations/fish.js +297 -0
- package/dist/src/cli/animations/fish.js.map +1 -0
- package/dist/src/cli/commands/agents.d.ts +8 -0
- package/dist/src/cli/commands/agents.d.ts.map +1 -0
- package/dist/src/cli/commands/agents.js +104 -0
- package/dist/src/cli/commands/agents.js.map +1 -0
- package/dist/src/cli/commands/chat.d.ts +9 -0
- package/dist/src/cli/commands/chat.d.ts.map +1 -0
- package/dist/src/cli/commands/chat.js +236 -0
- package/dist/src/cli/commands/chat.js.map +1 -0
- package/dist/src/cli/commands/config.d.ts +9 -0
- package/dist/src/cli/commands/config.d.ts.map +1 -0
- package/dist/src/cli/commands/config.js +97 -0
- package/dist/src/cli/commands/config.js.map +1 -0
- package/dist/src/cli/commands/doctor.d.ts +8 -0
- package/dist/src/cli/commands/doctor.d.ts.map +1 -0
- package/dist/src/cli/commands/doctor.js +159 -0
- package/dist/src/cli/commands/doctor.js.map +1 -0
- package/dist/src/cli/commands/models.d.ts +7 -0
- package/dist/src/cli/commands/models.d.ts.map +1 -0
- package/dist/src/cli/commands/models.js +64 -0
- package/dist/src/cli/commands/models.js.map +1 -0
- package/dist/src/cli/commands/onboard.d.ts +6 -0
- package/dist/src/cli/commands/onboard.d.ts.map +1 -0
- package/dist/src/cli/commands/onboard.js +150 -0
- package/dist/src/cli/commands/onboard.js.map +1 -0
- package/dist/src/cli/commands/run.d.ts +9 -0
- package/dist/src/cli/commands/run.d.ts.map +1 -0
- package/dist/src/cli/commands/run.js +84 -0
- package/dist/src/cli/commands/run.js.map +1 -0
- package/dist/src/cli/commands/tui.d.ts +6 -0
- package/dist/src/cli/commands/tui.d.ts.map +1 -0
- package/dist/src/cli/commands/tui.js +252 -0
- package/dist/src/cli/commands/tui.js.map +1 -0
- package/dist/src/config/manager.d.ts +80 -0
- package/dist/src/config/manager.d.ts.map +1 -0
- package/dist/src/config/manager.js +232 -0
- package/dist/src/config/manager.js.map +1 -0
- package/dist/src/config/schema.d.ts +910 -0
- package/dist/src/config/schema.d.ts.map +1 -0
- package/dist/src/config/schema.js +138 -0
- package/dist/src/config/schema.js.map +1 -0
- package/dist/src/core/gateway.d.ts +35 -0
- package/dist/src/core/gateway.d.ts.map +1 -0
- package/dist/src/core/gateway.js +205 -0
- package/dist/src/core/gateway.js.map +1 -0
- package/dist/src/core/runtime.d.ts +69 -0
- package/dist/src/core/runtime.d.ts.map +1 -0
- package/dist/src/core/runtime.js +188 -0
- package/dist/src/core/runtime.js.map +1 -0
- package/dist/src/core/security.d.ts +55 -0
- package/dist/src/core/security.d.ts.map +1 -0
- package/dist/src/core/security.js +241 -0
- package/dist/src/core/security.js.map +1 -0
- package/dist/src/index.d.ts +24 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +46 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/memory/store.d.ts +65 -0
- package/dist/src/memory/store.d.ts.map +1 -0
- package/dist/src/memory/store.js +250 -0
- package/dist/src/memory/store.js.map +1 -0
- package/dist/src/providers/anthropic.d.ts +25 -0
- package/dist/src/providers/anthropic.d.ts.map +1 -0
- package/dist/src/providers/anthropic.js +163 -0
- package/dist/src/providers/anthropic.js.map +1 -0
- package/dist/src/providers/base.d.ts +90 -0
- package/dist/src/providers/base.d.ts.map +1 -0
- package/dist/src/providers/base.js +12 -0
- package/dist/src/providers/base.js.map +1 -0
- package/dist/src/providers/google.d.ts +23 -0
- package/dist/src/providers/google.d.ts.map +1 -0
- package/dist/src/providers/google.js +118 -0
- package/dist/src/providers/google.js.map +1 -0
- package/dist/src/providers/ollama.d.ts +24 -0
- package/dist/src/providers/ollama.d.ts.map +1 -0
- package/dist/src/providers/ollama.js +81 -0
- package/dist/src/providers/ollama.js.map +1 -0
- package/dist/src/providers/openai.d.ts +30 -0
- package/dist/src/providers/openai.d.ts.map +1 -0
- package/dist/src/providers/openai.js +187 -0
- package/dist/src/providers/openai.js.map +1 -0
- package/dist/src/providers/router.d.ts +20 -0
- package/dist/src/providers/router.d.ts.map +1 -0
- package/dist/src/providers/router.js +156 -0
- package/dist/src/providers/router.js.map +1 -0
- package/dist/src/scheduler/heartbeat.d.ts +62 -0
- package/dist/src/scheduler/heartbeat.d.ts.map +1 -0
- package/dist/src/scheduler/heartbeat.js +267 -0
- package/dist/src/scheduler/heartbeat.js.map +1 -0
- package/dist/src/skills/loader.d.ts +25 -0
- package/dist/src/skills/loader.d.ts.map +1 -0
- package/dist/src/skills/loader.js +165 -0
- package/dist/src/skills/loader.js.map +1 -0
- package/dist/src/tools/advanced.d.ts +15 -0
- package/dist/src/tools/advanced.d.ts.map +1 -0
- package/dist/src/tools/advanced.js +102 -0
- package/dist/src/tools/advanced.js.map +1 -0
- package/dist/src/tools/filesystem.d.ts +10 -0
- package/dist/src/tools/filesystem.d.ts.map +1 -0
- package/dist/src/tools/filesystem.js +160 -0
- package/dist/src/tools/filesystem.js.map +1 -0
- package/dist/src/tools/registry.d.ts +26 -0
- package/dist/src/tools/registry.d.ts.map +1 -0
- package/dist/src/tools/registry.js +49 -0
- package/dist/src/tools/registry.js.map +1 -0
- package/dist/src/tools/shell.d.ts +7 -0
- package/dist/src/tools/shell.d.ts.map +1 -0
- package/dist/src/tools/shell.js +46 -0
- package/dist/src/tools/shell.js.map +1 -0
- package/dist/src/workflow/engine.d.ts +65 -0
- package/dist/src/workflow/engine.d.ts.map +1 -0
- package/dist/src/workflow/engine.js +297 -0
- package/dist/src/workflow/engine.js.map +1 -0
- package/package.json +113 -0
- package/skills/code-review/SKILL.md +46 -0
- package/skills/daily-briefing/SKILL.md +35 -0
- package/skills/git-assistant/SKILL.md +31 -0
- package/templates/HEARTBEAT.md +27 -0
- package/templates/IDENTITY.md +23 -0
- package/templates/deploy-pipeline.fishbone +39 -0
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* 🐟 AZERCLAW — CLI Entry Point
|
|
5
|
+
*
|
|
6
|
+
* An open-source, BYOK AI agent for your terminal.
|
|
7
|
+
* Inspired by OpenClaw, themed with a fish 🐟 instead of a lobster.
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* azerclaw — Launch TUI (or onboard if first run)
|
|
11
|
+
* azerclaw chat — Interactive chat
|
|
12
|
+
* azerclaw run "task" — Execute a task
|
|
13
|
+
* azerclaw tui — Premium terminal UI
|
|
14
|
+
* azerclaw onboard — Setup wizard
|
|
15
|
+
* azerclaw config — Manage configuration
|
|
16
|
+
* azerclaw models — Manage AI models
|
|
17
|
+
* azerclaw doctor — Health check
|
|
18
|
+
*/
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
const { Command } = require('commander');
|
|
21
|
+
const { playSplashScreen, printQuickSplash, fishError, fishInfo } = require('../src/cli/animations/fish');
|
|
22
|
+
const { getConfigManager } = require('../src/config/manager');
|
|
23
|
+
const VERSION = '1.0.0';
|
|
24
|
+
const program = new Command();
|
|
25
|
+
// ─── Program Setup ──────────────────────────────────────────────
|
|
26
|
+
program
|
|
27
|
+
.name('azerclaw')
|
|
28
|
+
.description('🐟 AZERCLAW — Your AI, Your Keys, Your Way')
|
|
29
|
+
.version(VERSION, '-v, --version', 'Display version')
|
|
30
|
+
.option('--no-splash', 'Skip the splash screen')
|
|
31
|
+
.option('--no-color', 'Disable colors');
|
|
32
|
+
// ─── Default Action (no command) ────────────────────────────────
|
|
33
|
+
program
|
|
34
|
+
.action(async (opts) => {
|
|
35
|
+
const config = getConfigManager();
|
|
36
|
+
config.resolveEnvOverrides();
|
|
37
|
+
if (config.isFirstRun()) {
|
|
38
|
+
// First run: show full splash + onboard
|
|
39
|
+
await playSplashScreen(VERSION);
|
|
40
|
+
const { runOnboard } = require('../src/cli/commands/onboard');
|
|
41
|
+
await runOnboard();
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
// Launch TUI by default
|
|
45
|
+
const { runTUI } = require('../src/cli/commands/tui');
|
|
46
|
+
await runTUI();
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
// ─── Chat Command ───────────────────────────────────────────────
|
|
50
|
+
program
|
|
51
|
+
.command('chat')
|
|
52
|
+
.description('Start an interactive chat session')
|
|
53
|
+
.option('-m, --model <model>', 'Override the default model')
|
|
54
|
+
.option('-p, --provider <provider>', 'Override the default provider')
|
|
55
|
+
.action(async (opts) => {
|
|
56
|
+
const config = getConfigManager();
|
|
57
|
+
config.resolveEnvOverrides();
|
|
58
|
+
if (!opts.parent?.splash === false) {
|
|
59
|
+
printQuickSplash(VERSION);
|
|
60
|
+
}
|
|
61
|
+
if (config.isFirstRun()) {
|
|
62
|
+
fishInfo('First time? Run `azerclaw onboard` to configure your AI providers.');
|
|
63
|
+
const { runOnboard } = require('../src/cli/commands/onboard');
|
|
64
|
+
await runOnboard();
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const { runChat } = require('../src/cli/commands/chat');
|
|
68
|
+
await runChat(opts);
|
|
69
|
+
});
|
|
70
|
+
// ─── Run Command ────────────────────────────────────────────────
|
|
71
|
+
program
|
|
72
|
+
.command('run <task>')
|
|
73
|
+
.description('Execute a single task')
|
|
74
|
+
.option('-m, --model <model>', 'Override the default model')
|
|
75
|
+
.option('-V, --verbose', 'Show tool calls in detail')
|
|
76
|
+
.action(async (task, opts) => {
|
|
77
|
+
const config = getConfigManager();
|
|
78
|
+
config.resolveEnvOverrides();
|
|
79
|
+
printQuickSplash(VERSION);
|
|
80
|
+
const { runTask } = require('../src/cli/commands/run');
|
|
81
|
+
await runTask(task, opts);
|
|
82
|
+
});
|
|
83
|
+
// ─── TUI Command ────────────────────────────────────────────────
|
|
84
|
+
program
|
|
85
|
+
.command('tui')
|
|
86
|
+
.description('Launch the premium terminal UI')
|
|
87
|
+
.action(async () => {
|
|
88
|
+
const config = getConfigManager();
|
|
89
|
+
config.resolveEnvOverrides();
|
|
90
|
+
const { runTUI } = require('../src/cli/commands/tui');
|
|
91
|
+
await runTUI();
|
|
92
|
+
});
|
|
93
|
+
// ─── Onboard Command ───────────────────────────────────────────
|
|
94
|
+
program
|
|
95
|
+
.command('onboard')
|
|
96
|
+
.description('Run the interactive setup wizard')
|
|
97
|
+
.action(async () => {
|
|
98
|
+
await playSplashScreen(VERSION);
|
|
99
|
+
const { runOnboard } = require('../src/cli/commands/onboard');
|
|
100
|
+
await runOnboard();
|
|
101
|
+
});
|
|
102
|
+
// ─── Config Command ─────────────────────────────────────────────
|
|
103
|
+
const configCmd = program
|
|
104
|
+
.command('config')
|
|
105
|
+
.description('Manage configuration');
|
|
106
|
+
configCmd
|
|
107
|
+
.command('get <key>')
|
|
108
|
+
.description('Get a configuration value')
|
|
109
|
+
.action((key) => {
|
|
110
|
+
const { configGet } = require('../src/cli/commands/config');
|
|
111
|
+
configGet(key);
|
|
112
|
+
});
|
|
113
|
+
configCmd
|
|
114
|
+
.command('set <key> <value>')
|
|
115
|
+
.description('Set a configuration value')
|
|
116
|
+
.action((key, value) => {
|
|
117
|
+
const { configSet } = require('../src/cli/commands/config');
|
|
118
|
+
configSet(key, value);
|
|
119
|
+
});
|
|
120
|
+
configCmd
|
|
121
|
+
.command('list')
|
|
122
|
+
.description('Show all configuration')
|
|
123
|
+
.action(() => {
|
|
124
|
+
const { configList } = require('../src/cli/commands/config');
|
|
125
|
+
configList();
|
|
126
|
+
});
|
|
127
|
+
configCmd
|
|
128
|
+
.command('reset')
|
|
129
|
+
.description('Reset to default configuration')
|
|
130
|
+
.action(() => {
|
|
131
|
+
const { configReset } = require('../src/cli/commands/config');
|
|
132
|
+
configReset();
|
|
133
|
+
});
|
|
134
|
+
// Default config action (no sub-command) shows list
|
|
135
|
+
configCmd.action(() => {
|
|
136
|
+
const { configList } = require('../src/cli/commands/config');
|
|
137
|
+
configList();
|
|
138
|
+
});
|
|
139
|
+
// ─── Models Command ─────────────────────────────────────────────
|
|
140
|
+
const modelsCmd = program
|
|
141
|
+
.command('models')
|
|
142
|
+
.description('Manage AI models');
|
|
143
|
+
modelsCmd
|
|
144
|
+
.command('list')
|
|
145
|
+
.description('List all available models')
|
|
146
|
+
.action(async () => {
|
|
147
|
+
const { modelsList } = require('../src/cli/commands/models');
|
|
148
|
+
await modelsList();
|
|
149
|
+
});
|
|
150
|
+
modelsCmd
|
|
151
|
+
.command('status')
|
|
152
|
+
.description('Show current model status')
|
|
153
|
+
.action(async () => {
|
|
154
|
+
const { modelsStatus } = require('../src/cli/commands/models');
|
|
155
|
+
await modelsStatus();
|
|
156
|
+
});
|
|
157
|
+
modelsCmd.action(async () => {
|
|
158
|
+
const { modelsStatus } = require('../src/cli/commands/models');
|
|
159
|
+
await modelsStatus();
|
|
160
|
+
});
|
|
161
|
+
// ─── Doctor Command ─────────────────────────────────────────────
|
|
162
|
+
program
|
|
163
|
+
.command('doctor')
|
|
164
|
+
.description('Run health checks on your AZERCLAW installation')
|
|
165
|
+
.option('-f, --fix', 'Attempt to auto-fix issues')
|
|
166
|
+
.action(async (opts) => {
|
|
167
|
+
printQuickSplash(VERSION);
|
|
168
|
+
const { runDoctor } = require('../src/cli/commands/doctor');
|
|
169
|
+
await runDoctor(opts);
|
|
170
|
+
});
|
|
171
|
+
// ─── Security Audit Command ────────────────────────────────────
|
|
172
|
+
program
|
|
173
|
+
.command('security')
|
|
174
|
+
.description('Security audit')
|
|
175
|
+
.command('audit')
|
|
176
|
+
.option('-f, --fix', 'Auto-fix security issues')
|
|
177
|
+
.action(async (opts) => {
|
|
178
|
+
printQuickSplash(VERSION);
|
|
179
|
+
fishInfo('Running security audit...');
|
|
180
|
+
const fs = require('fs');
|
|
181
|
+
const config = getConfigManager();
|
|
182
|
+
const issues = [];
|
|
183
|
+
// Check config file permissions
|
|
184
|
+
try {
|
|
185
|
+
const stats = fs.statSync(config.paths.configFile);
|
|
186
|
+
const mode = (stats.mode & 0o777).toString(8);
|
|
187
|
+
if (mode !== '600') {
|
|
188
|
+
issues.push(`Config file has permissions 0${mode} (should be 0600)`);
|
|
189
|
+
if (opts.fix) {
|
|
190
|
+
fs.chmodSync(config.paths.configFile, 0o600);
|
|
191
|
+
fishInfo('Fixed: Config permissions set to 0600');
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
catch { /* skip */ }
|
|
196
|
+
// Check for keys in environment
|
|
197
|
+
const envKeys = ['OPENAI_API_KEY', 'ANTHROPIC_API_KEY', 'GOOGLE_API_KEY'];
|
|
198
|
+
for (const key of envKeys) {
|
|
199
|
+
if (process.env[key]) {
|
|
200
|
+
fishInfo(`${key} found in environment (normal for CI/CD, prefer config file for local use)`);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
if (issues.length === 0) {
|
|
204
|
+
const { fishSuccess } = require('../src/cli/animations/fish');
|
|
205
|
+
fishSuccess('Security audit passed! 🔒');
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
for (const issue of issues) {
|
|
209
|
+
const { fishWarn } = require('../src/cli/animations/fish');
|
|
210
|
+
fishWarn(issue);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
// ─── Agents Command ─────────────────────────────────────────────
|
|
215
|
+
const agentsCmd = program
|
|
216
|
+
.command('agents')
|
|
217
|
+
.description('Manage the Pantheon of built-in agents');
|
|
218
|
+
agentsCmd
|
|
219
|
+
.command('list')
|
|
220
|
+
.description('List all available agents')
|
|
221
|
+
.action(() => {
|
|
222
|
+
const { agentsList } = require('../src/cli/commands/agents');
|
|
223
|
+
agentsList();
|
|
224
|
+
});
|
|
225
|
+
agentsCmd
|
|
226
|
+
.command('invoke <name> <task>')
|
|
227
|
+
.description('Invoke a specific agent')
|
|
228
|
+
.action(async (name, task, opts) => {
|
|
229
|
+
printQuickSplash(VERSION);
|
|
230
|
+
const { agentInvoke } = require('../src/cli/commands/agents');
|
|
231
|
+
await agentInvoke(name, task, opts);
|
|
232
|
+
});
|
|
233
|
+
agentsCmd
|
|
234
|
+
.command('auto <task>')
|
|
235
|
+
.description('Auto-match the best agent for a task')
|
|
236
|
+
.action(async (task) => {
|
|
237
|
+
printQuickSplash(VERSION);
|
|
238
|
+
const { agentAuto } = require('../src/cli/commands/agents');
|
|
239
|
+
await agentAuto(task);
|
|
240
|
+
});
|
|
241
|
+
agentsCmd.action(() => {
|
|
242
|
+
const { agentsList } = require('../src/cli/commands/agents');
|
|
243
|
+
agentsList();
|
|
244
|
+
});
|
|
245
|
+
// ─── Parse & Run ────────────────────────────────────────────────
|
|
246
|
+
program.parse(process.argv);
|
|
247
|
+
//# sourceMappingURL=azerclaw.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azerclaw.js","sourceRoot":"","sources":["../../bin/azerclaw.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Code Review
|
|
3
|
+
description: Review code for bugs, security issues, best practices, and style.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
author: AZERCLAW
|
|
6
|
+
tags: code, review, quality
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Code Review Skill
|
|
10
|
+
|
|
11
|
+
When asked to review code, follow this structured approach:
|
|
12
|
+
|
|
13
|
+
## Process
|
|
14
|
+
|
|
15
|
+
1. **Read the file(s)** using `read_file`
|
|
16
|
+
2. **Analyze** for the following categories:
|
|
17
|
+
- 🐛 **Bugs**: Logic errors, off-by-one, null references, race conditions
|
|
18
|
+
- 🔒 **Security**: Injection, XSS, auth issues, exposed secrets, SSRF
|
|
19
|
+
- ⚡ **Performance**: N+1 queries, unnecessary loops, memory leaks
|
|
20
|
+
- 📐 **Style**: Naming conventions, code organization, readability
|
|
21
|
+
- 🧪 **Testing**: Missing edge cases, untested paths
|
|
22
|
+
|
|
23
|
+
3. **Format findings** with severity levels:
|
|
24
|
+
- 🔴 CRITICAL — Must fix before merge
|
|
25
|
+
- 🟡 WARNING — Should fix soon
|
|
26
|
+
- 🔵 INFO — Suggestion for improvement
|
|
27
|
+
|
|
28
|
+
4. **Provide fixes** — Don't just identify, suggest or implement solutions.
|
|
29
|
+
|
|
30
|
+
## Output Format
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
## Code Review: [filename]
|
|
34
|
+
|
|
35
|
+
### Summary
|
|
36
|
+
[1-2 sentence overview]
|
|
37
|
+
|
|
38
|
+
### Findings
|
|
39
|
+
|
|
40
|
+
🔴 CRITICAL: [description]
|
|
41
|
+
File: [path]:[line]
|
|
42
|
+
Fix: [suggested fix]
|
|
43
|
+
|
|
44
|
+
🟡 WARNING: [description]
|
|
45
|
+
...
|
|
46
|
+
```
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Daily Briefing
|
|
3
|
+
description: Generate a daily summary of project status, git activity, and tasks.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
author: AZERCLAW
|
|
6
|
+
tags: productivity, summary, briefing
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Daily Briefing Skill
|
|
10
|
+
|
|
11
|
+
Generate a comprehensive daily briefing:
|
|
12
|
+
|
|
13
|
+
## Data Collection
|
|
14
|
+
1. Run `git log --since="24 hours ago" --oneline` for recent commits
|
|
15
|
+
2. Run `git diff --stat HEAD~5` for recent changes summary
|
|
16
|
+
3. Check for TODO/FIXME comments: `grep -rnI "TODO\|FIXME\|HACK\|XXX" . --include="*.ts" --include="*.js" --include="*.py" | head -20`
|
|
17
|
+
4. Check for any failing tests if test script exists
|
|
18
|
+
|
|
19
|
+
## Report Format
|
|
20
|
+
```
|
|
21
|
+
📊 Daily Briefing — [date]
|
|
22
|
+
═══════════════════════════
|
|
23
|
+
|
|
24
|
+
📝 Recent Commits (24h): [count]
|
|
25
|
+
[list top 5]
|
|
26
|
+
|
|
27
|
+
📁 Files Changed: [count]
|
|
28
|
+
[summary]
|
|
29
|
+
|
|
30
|
+
⚠️ TODOs/FIXMEs: [count]
|
|
31
|
+
[top 5]
|
|
32
|
+
|
|
33
|
+
🎯 Suggested Focus Areas:
|
|
34
|
+
[based on analysis]
|
|
35
|
+
```
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Git Assistant
|
|
3
|
+
description: Help with git operations, branching, merging, and commit messages.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
author: AZERCLAW
|
|
6
|
+
tags: git, version-control
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Git Assistant Skill
|
|
10
|
+
|
|
11
|
+
When helping with git operations:
|
|
12
|
+
|
|
13
|
+
## Commit Messages
|
|
14
|
+
Follow Conventional Commits:
|
|
15
|
+
- `feat:` new feature
|
|
16
|
+
- `fix:` bug fix
|
|
17
|
+
- `docs:` documentation
|
|
18
|
+
- `refactor:` code refactoring
|
|
19
|
+
- `test:` adding tests
|
|
20
|
+
- `chore:` maintenance
|
|
21
|
+
|
|
22
|
+
## Common Operations
|
|
23
|
+
1. Check status with `git status` and `git log --oneline -10`
|
|
24
|
+
2. Create branches with descriptive names: `feature/description`, `fix/description`
|
|
25
|
+
3. Always verify changes before committing with `git diff`
|
|
26
|
+
4. Use `git stash` before risky operations
|
|
27
|
+
|
|
28
|
+
## Safety Rules
|
|
29
|
+
- Never force push to `main` or `master`
|
|
30
|
+
- Always confirm before destructive operations (reset, rebase)
|
|
31
|
+
- Create backups before complex rebases
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🐟 AZERCLAW Built-in Agents — The Pantheon
|
|
3
|
+
* Each agent is named after a mythological figure that embodies its role.
|
|
4
|
+
* These are pre-configured specialist agents that can be invoked directly
|
|
5
|
+
* or spawned as sub-agents by the main runtime.
|
|
6
|
+
*
|
|
7
|
+
* ⚡ ZEUS — Orchestrator (lead agent, delegates to others)
|
|
8
|
+
* 🏹 ORION — Coder (the hunter who never misses)
|
|
9
|
+
* 🌍 ATLAS — DevOps (carries the weight of infrastructure)
|
|
10
|
+
* 🛡️ AEGIS — Security Auditor (the divine shield)
|
|
11
|
+
* 🔍 HERMES — Researcher (messenger of knowledge)
|
|
12
|
+
* 🏗️ HEPHAESTUS — Architect (the divine builder)
|
|
13
|
+
* 📝 CALLIOPE — Technical Writer (muse of eloquence)
|
|
14
|
+
* 📊 ATHENA — Data Analyst (goddess of wisdom)
|
|
15
|
+
* 📋 PROMETHEUS — Planner (foresight incarnate)
|
|
16
|
+
* 🌿 LOKI — Git Master (shapeshifter of branches)
|
|
17
|
+
* 🖥️ TITAN — SysAdmin (primordial power)
|
|
18
|
+
* 🐠 POSEIDON — Network & API (god of the deep)
|
|
19
|
+
*/
|
|
20
|
+
import { AgentRuntime, AgentEventHandler } from '../core/runtime';
|
|
21
|
+
export interface AgentDefinition {
|
|
22
|
+
id: string;
|
|
23
|
+
codename: string;
|
|
24
|
+
emoji: string;
|
|
25
|
+
role: string;
|
|
26
|
+
description: string;
|
|
27
|
+
systemPrompt: string;
|
|
28
|
+
maxIterations: number;
|
|
29
|
+
tags: string[];
|
|
30
|
+
}
|
|
31
|
+
export declare const BUILT_IN_AGENTS: AgentDefinition[];
|
|
32
|
+
/**
|
|
33
|
+
* Get an agent definition by codename or ID.
|
|
34
|
+
*/
|
|
35
|
+
export declare function getAgent(nameOrId: string): AgentDefinition | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* Auto-match the best agent for a given task description.
|
|
38
|
+
*/
|
|
39
|
+
export declare function matchAgentForTask(task: string): AgentDefinition;
|
|
40
|
+
/**
|
|
41
|
+
* Create a runtime from an agent definition.
|
|
42
|
+
*/
|
|
43
|
+
export declare function createAgent(definition: AgentDefinition, eventHandler: AgentEventHandler): AgentRuntime;
|
|
44
|
+
/**
|
|
45
|
+
* List all agents in the pantheon.
|
|
46
|
+
*/
|
|
47
|
+
export declare function listAgents(): AgentDefinition[];
|
|
48
|
+
/**
|
|
49
|
+
* Format agents as a display table.
|
|
50
|
+
*/
|
|
51
|
+
export declare function formatAgentRoster(): string;
|
|
52
|
+
//# sourceMappingURL=builtin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtin.d.ts","sourceRoot":"","sources":["../../../src/agents/builtin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAIlE,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,eAAO,MAAM,eAAe,EAAE,eAAe,EA4Z5C,CAAC;AAIF;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAGtE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CA2B/D;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,eAAe,EAC3B,YAAY,EAAE,iBAAiB,GAC9B,YAAY,CAOd;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,eAAe,EAAE,CAE9C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAY1C"}
|