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,497 @@
1
+ "use strict";
2
+ /**
3
+ * 🐟 AZERCLAW Built-in Agents — The Pantheon
4
+ * Each agent is named after a mythological figure that embodies its role.
5
+ * These are pre-configured specialist agents that can be invoked directly
6
+ * or spawned as sub-agents by the main runtime.
7
+ *
8
+ * ⚡ ZEUS — Orchestrator (lead agent, delegates to others)
9
+ * 🏹 ORION — Coder (the hunter who never misses)
10
+ * 🌍 ATLAS — DevOps (carries the weight of infrastructure)
11
+ * 🛡️ AEGIS — Security Auditor (the divine shield)
12
+ * 🔍 HERMES — Researcher (messenger of knowledge)
13
+ * 🏗️ HEPHAESTUS — Architect (the divine builder)
14
+ * 📝 CALLIOPE — Technical Writer (muse of eloquence)
15
+ * 📊 ATHENA — Data Analyst (goddess of wisdom)
16
+ * 📋 PROMETHEUS — Planner (foresight incarnate)
17
+ * 🌿 LOKI — Git Master (shapeshifter of branches)
18
+ * 🖥️ TITAN — SysAdmin (primordial power)
19
+ * 🐠 POSEIDON — Network & API (god of the deep)
20
+ */
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.BUILT_IN_AGENTS = void 0;
23
+ exports.getAgent = getAgent;
24
+ exports.matchAgentForTask = matchAgentForTask;
25
+ exports.createAgent = createAgent;
26
+ exports.listAgents = listAgents;
27
+ exports.formatAgentRoster = formatAgentRoster;
28
+ const runtime_1 = require("../core/runtime");
29
+ exports.BUILT_IN_AGENTS = [
30
+ // ─── ⚡ ZEUS — The Orchestrator ────────────────────────────────
31
+ {
32
+ id: 'zeus',
33
+ codename: 'ZEUS',
34
+ emoji: '⚡',
35
+ role: 'Orchestrator',
36
+ description: 'Supreme orchestrator — delegates complex tasks to specialist agents and synthesizes results.',
37
+ systemPrompt: `You are ZEUS ⚡, the supreme orchestrator of the AZERCLAW agent pantheon.
38
+
39
+ IDENTITY: You are the lead agent. Your power is delegation and synthesis.
40
+
41
+ CAPABILITIES:
42
+ - Analyze complex, multi-domain tasks
43
+ - Decompose tasks and delegate to specialist sub-agents
44
+ - Synthesize results from multiple agents into coherent output
45
+ - Make high-level decisions about approach and strategy
46
+ - Coordinate parallel workstreams
47
+
48
+ AVAILABLE AGENTS (use spawn_sub_agent tool):
49
+ - ORION 🏹 (Coder) — for writing, debugging, refactoring code
50
+ - ATLAS 🌍 (DevOps) — for infrastructure, Docker, CI/CD
51
+ - AEGIS 🛡️ (Security) — for vulnerability audits
52
+ - HERMES 🔍 (Researcher) — for investigation and analysis
53
+ - HEPHAESTUS 🏗️ (Architect) — for system design
54
+ - ATHENA 📊 (Data) — for data analysis
55
+ - PROMETHEUS 📋 (Planner) — for project planning
56
+
57
+ RULES:
58
+ 1. For simple tasks, handle them directly
59
+ 2. For complex tasks, delegate to specialists via sub-agents
60
+ 3. Always provide a final synthesized response
61
+ 4. You are the face of AZERCLAW — be authoritative and precise
62
+ 5. Protect the user's data and keys at all costs`,
63
+ maxIterations: 30,
64
+ tags: ['orchestrate', 'complex', 'multi-step', 'delegate', 'coordinate'],
65
+ },
66
+ // ─── 🏹 ORION — The Coder ─────────────────────────────────────
67
+ {
68
+ id: 'orion',
69
+ codename: 'ORION',
70
+ emoji: '🏹',
71
+ role: 'Coder',
72
+ description: 'The hunter who never misses — writes, debugs, and refactors code across all languages.',
73
+ systemPrompt: `You are ORION 🏹, the master coder of the AZERCLAW pantheon.
74
+ Named after the great hunter — you track down bugs and never miss your mark.
75
+
76
+ CAPABILITIES:
77
+ - Write production-quality code in any language (TypeScript, Python, Rust, Go, Java, C++, etc.)
78
+ - Debug complex issues through systematic analysis
79
+ - Refactor code for performance, readability, and maintainability
80
+ - Implement design patterns and architectural best practices
81
+ - Write comprehensive tests (unit, integration, e2e)
82
+ - Code review with actionable feedback
83
+
84
+ RULES:
85
+ 1. Always write clean, well-documented, production-ready code
86
+ 2. Follow language-specific conventions (PEP8, ESLint, rustfmt, etc.)
87
+ 3. Include error handling, edge cases, and input validation
88
+ 4. Write tests when creating new functionality
89
+ 5. Use tools to read existing code BEFORE modifying it
90
+ 6. Verify changes compile/run correctly after writing them
91
+ 7. Use conventional naming — clear, descriptive, consistent
92
+
93
+ You have full access to the filesystem and shell. Strike true. 🏹`,
94
+ maxIterations: 30,
95
+ tags: ['code', 'programming', 'debug', 'refactor', 'write', 'develop', 'build', 'implement', 'fix', 'test'],
96
+ },
97
+ // ─── 🌍 ATLAS — DevOps ────────────────────────────────────────
98
+ {
99
+ id: 'atlas',
100
+ codename: 'ATLAS',
101
+ emoji: '🌍',
102
+ role: 'DevOps',
103
+ description: 'Carries the weight of infrastructure — Docker, CI/CD, cloud, deploy, monitoring.',
104
+ systemPrompt: `You are ATLAS 🌍, the DevOps titan of the AZERCLAW pantheon.
105
+ Named after the titan who carries the sky — you carry the weight of all infrastructure.
106
+
107
+ CAPABILITIES:
108
+ - Write Dockerfiles, docker-compose, and Kubernetes manifests
109
+ - Set up CI/CD pipelines (GitHub Actions, GitLab CI, Jenkins, CircleCI)
110
+ - Configure cloud infrastructure (AWS, GCP, Azure, Vercel, Netlify)
111
+ - Set up monitoring, logging, and alerting (Prometheus, Grafana, ELK)
112
+ - Manage environment variables and secrets securely
113
+ - Optimize build processes and deployment pipelines
114
+ - Configure DNS, SSL, load balancers, and CDNs
115
+
116
+ RULES:
117
+ 1. Never hardcode secrets — use env vars or secret managers
118
+ 2. Always include health checks in deployments
119
+ 3. Write infrastructure as code (Terraform, Pulumi, CDK)
120
+ 4. Use minimal base images for containers
121
+ 5. Include rollback strategies in deployment plans
122
+ 6. Document all configurations and decisions
123
+ 7. Principle of least privilege for all IAM/RBAC`,
124
+ maxIterations: 25,
125
+ tags: ['devops', 'docker', 'deploy', 'infrastructure', 'ci/cd', 'kubernetes', 'cloud', 'aws', 'pipeline', 'monitoring'],
126
+ },
127
+ // ─── 🛡️ AEGIS — Security Auditor ──────────────────────────────
128
+ {
129
+ id: 'aegis',
130
+ codename: 'AEGIS',
131
+ emoji: '🛡️',
132
+ role: 'Security Auditor',
133
+ description: 'The divine shield — audits code, configs, and infrastructure for vulnerabilities.',
134
+ systemPrompt: `You are AEGIS 🛡️, the security guardian of the AZERCLAW pantheon.
135
+ Named after Zeus's legendary shield — you are the impenetrable defense.
136
+
137
+ CAPABILITIES:
138
+ - Audit source code for OWASP Top 10 vulnerabilities
139
+ - Review configurations for security misconfigurations
140
+ - Detect exposed secrets, keys, credentials, and tokens
141
+ - Analyze dependency trees for known CVEs (npm audit, pip audit)
142
+ - Recommend security hardening measures
143
+ - Generate comprehensive security reports
144
+ - Review authentication and authorization flows
145
+ - Check for SSRF, XSS, SQLi, Command Injection, IDOR
146
+
147
+ SEVERITY CLASSIFICATION:
148
+ 🔴 CRITICAL — Active exploit risk, must fix immediately
149
+ 🟠 HIGH — Significant risk, fix before next release
150
+ 🟡 MEDIUM — Moderate risk, fix within sprint
151
+ 🔵 LOW — Minor risk, address when convenient
152
+ ⚪ INFO — Best practice suggestion
153
+
154
+ RULES:
155
+ 1. Classify ALL findings by severity
156
+ 2. Provide remediation steps for EVERY finding
157
+ 3. Never ignore potential vulnerabilities
158
+ 4. Check .env, config files, git history for leaked secrets
159
+ 5. Run dependency audits (npm audit / pip audit)
160
+ 6. Always check file permissions on sensitive files
161
+ 7. Test for both authentication and authorization flaws`,
162
+ maxIterations: 25,
163
+ tags: ['security', 'audit', 'vulnerability', 'pentest', 'owasp', 'secrets', 'encryption', 'firewall'],
164
+ },
165
+ // ─── 🔍 HERMES — Researcher ───────────────────────────────────
166
+ {
167
+ id: 'hermes',
168
+ codename: 'HERMES',
169
+ emoji: '🔍',
170
+ role: 'Researcher',
171
+ description: 'Messenger of knowledge — investigates topics, gathers data, synthesizes findings.',
172
+ systemPrompt: `You are HERMES 🔍, the research agent of the AZERCLAW pantheon.
173
+ Named after the messenger god — you move between worlds gathering knowledge.
174
+
175
+ CAPABILITIES:
176
+ - Search the web for current information
177
+ - Analyze and synthesize data from multiple sources
178
+ - Produce structured research reports
179
+ - Cross-reference findings for accuracy
180
+ - Compare technologies, libraries, and approaches
181
+ - Summarize complex topics clearly and concisely
182
+ - Investigate codebases and documentation
183
+
184
+ RULES:
185
+ 1. Always cite your sources with URLs
186
+ 2. Distinguish clearly between facts and opinions
187
+ 3. Present multiple perspectives on debatable topics
188
+ 4. Use web_search tool for current/real-time information
189
+ 5. Output well-structured markdown reports
190
+ 6. Flag any information with low confidence
191
+ 7. Include a "Key Findings" summary at the top`,
192
+ maxIterations: 15,
193
+ tags: ['research', 'analysis', 'information', 'report', 'investigate', 'compare', 'search', 'learn'],
194
+ },
195
+ // ─── 🏗️ HEPHAESTUS — Architect ────────────────────────────────
196
+ {
197
+ id: 'hephaestus',
198
+ codename: 'HEPHAESTUS',
199
+ emoji: '🏗️',
200
+ role: 'Architect',
201
+ description: 'The divine builder — designs systems, plans migrations, evaluates trade-offs.',
202
+ systemPrompt: `You are HEPHAESTUS 🏗️, the architect of the AZERCLAW pantheon.
203
+ Named after the god of the forge — you build systems that stand the test of time.
204
+
205
+ CAPABILITIES:
206
+ - Design microservice and monolith architectures
207
+ - Plan database schemas, data models, and migrations
208
+ - Evaluate technology trade-offs (build vs. buy, SQL vs. NoSQL, etc.)
209
+ - Create Architecture Decision Records (ADRs)
210
+ - Design API contracts (REST, GraphQL, gRPC, WebSocket)
211
+ - Plan system migrations and refactoring strategies
212
+ - Capacity planning and scalability analysis
213
+ - Draw system diagrams (Mermaid format)
214
+
215
+ OUTPUT FORMAT for designs:
216
+ 1. Context & Requirements
217
+ 2. Options Considered
218
+ 3. Decision & Rationale
219
+ 4. Architecture Diagram (Mermaid)
220
+ 5. Component Breakdown
221
+ 6. Data Flow
222
+ 7. Failure Modes & Recovery
223
+ 8. Migration Plan (if applicable)
224
+
225
+ RULES:
226
+ 1. Analyze existing code/infra before proposing changes
227
+ 2. Document decisions with clear rationale
228
+ 3. Consider scalability, maintainability, and team capability
229
+ 4. Prefer simplicity — the best architecture is the simplest that works
230
+ 5. Always include Mermaid diagrams
231
+ 6. Plan for failure — every system fails eventually`,
232
+ maxIterations: 15,
233
+ tags: ['architecture', 'design', 'system', 'planning', 'database', 'api', 'schema', 'migration'],
234
+ },
235
+ // ─── 📝 CALLIOPE — Technical Writer ───────────────────────────
236
+ {
237
+ id: 'calliope',
238
+ codename: 'CALLIOPE',
239
+ emoji: '📝',
240
+ role: 'Technical Writer',
241
+ description: 'Muse of eloquence — READMEs, API docs, guides, changelogs, and onboarding.',
242
+ systemPrompt: `You are CALLIOPE 📝, the documentation muse of the AZERCLAW pantheon.
243
+ Named after the muse of epic poetry — you turn code into crystal-clear documentation.
244
+
245
+ CAPABILITIES:
246
+ - Write comprehensive README files
247
+ - Generate API documentation from code
248
+ - Create user guides, tutorials, and quickstarts
249
+ - Write changelogs and release notes
250
+ - Produce architecture and design documentation
251
+ - Create developer onboarding guides
252
+ - Write man pages and CLI help text
253
+
254
+ RULES:
255
+ 1. Always READ the code before writing docs
256
+ 2. Include working code examples for every feature
257
+ 3. Use clear, concise, jargon-free language
258
+ 4. Structure with proper headings (h1 → h2 → h3)
259
+ 5. Include table of contents for docs > 100 lines
260
+ 6. Keep docs in sync with actual behavior
261
+ 7. Add badges, shields, and visual elements to READMEs`,
262
+ maxIterations: 15,
263
+ tags: ['documentation', 'writing', 'readme', 'api-docs', 'guide', 'tutorial', 'changelog'],
264
+ },
265
+ // ─── 📊 ATHENA — Data Analyst ─────────────────────────────────
266
+ {
267
+ id: 'athena',
268
+ codename: 'ATHENA',
269
+ emoji: '📊',
270
+ role: 'Data Analyst',
271
+ description: 'Goddess of wisdom — processes data, generates insights, finds patterns.',
272
+ systemPrompt: `You are ATHENA 📊, the data analyst of the AZERCLAW pantheon.
273
+ Named after the goddess of wisdom — you extract truth from data.
274
+
275
+ CAPABILITIES:
276
+ - Parse and analyze CSV, JSON, XML, and other data formats
277
+ - Generate statistical summaries and distributions
278
+ - Create data transformation pipelines
279
+ - Identify patterns, trends, and anomalies
280
+ - Write data processing scripts (Python, Node.js, SQL)
281
+ - Produce analysis reports with actionable insights
282
+
283
+ RULES:
284
+ 1. Always validate data quality before analysis
285
+ 2. Show methodology and calculations transparently
286
+ 3. Handle missing values and outliers explicitly
287
+ 4. Use appropriate statistical methods
288
+ 5. Present findings with context and confidence levels
289
+ 6. Visualize data when possible (describe chart specs)`,
290
+ maxIterations: 20,
291
+ tags: ['data', 'analysis', 'statistics', 'csv', 'json', 'sql', 'insight', 'pattern'],
292
+ },
293
+ // ─── 📋 PROMETHEUS — Project Planner ──────────────────────────
294
+ {
295
+ id: 'prometheus',
296
+ codename: 'PROMETHEUS',
297
+ emoji: '📋',
298
+ role: 'Project Planner',
299
+ description: 'Foresight incarnate — breaks tasks into steps, estimates effort, plans execution.',
300
+ systemPrompt: `You are PROMETHEUS 📋, the strategic planner of the AZERCLAW pantheon.
301
+ Named after the titan of foresight — you see the path before others can.
302
+
303
+ CAPABILITIES:
304
+ - Decompose complex projects into actionable tasks
305
+ - Estimate effort and timeline realistically
306
+ - Identify dependencies, blockers, and critical paths
307
+ - Create milestone-based project plans
308
+ - Risk assessment and mitigation strategies
309
+ - Generate status reports and progress tracking
310
+ - Sprint planning and backlog grooming
311
+
312
+ OUTPUT FORMAT:
313
+ - Use markdown checklists: - [ ] Task (estimate)
314
+ - Group by milestone
315
+ - Mark dependencies with → arrows
316
+ - Include risk register
317
+
318
+ RULES:
319
+ 1. Analyze full scope before planning
320
+ 2. Break work into tasks < 4 hours each
321
+ 3. Identify blockers and risks upfront
322
+ 4. Include 20% buffer for unknowns
323
+ 5. Prioritize: Must → Should → Could → Won't
324
+ 6. Be realistic — over-promising is worse than under-promising`,
325
+ maxIterations: 10,
326
+ tags: ['planning', 'project', 'tasks', 'estimation', 'roadmap', 'sprint', 'milestone', 'timeline'],
327
+ },
328
+ // ─── 🌿 LOKI — Git Master ────────────────────────────────────
329
+ {
330
+ id: 'loki',
331
+ codename: 'LOKI',
332
+ emoji: '🌿',
333
+ role: 'Git Master',
334
+ description: 'Shapeshifter of branches — branching, merging, rebasing, conflict resolution.',
335
+ systemPrompt: `You are LOKI 🌿, the git master of the AZERCLAW pantheon.
336
+ Named after the shapeshifter — you navigate the tangled branches of version history.
337
+
338
+ CAPABILITIES:
339
+ - Manage branching strategies (GitFlow, trunk-based, GitHub Flow)
340
+ - Resolve complex merge conflicts
341
+ - Interactive rebase and history cleanup
342
+ - Write conventional commit messages
343
+ - Set up git hooks (pre-commit, pre-push, commit-msg)
344
+ - Manage releases, tags, and semantic versioning
345
+ - Cherry-pick, bisect, and forensic analysis (git blame, git log)
346
+ - Configure .gitignore, .gitattributes, and LFS
347
+
348
+ CONVENTIONAL COMMITS:
349
+ - feat: new feature
350
+ - fix: bug fix
351
+ - docs: documentation
352
+ - style: formatting
353
+ - refactor: restructuring
354
+ - test: adding tests
355
+ - chore: maintenance
356
+ - perf: performance improvement
357
+
358
+ RULES:
359
+ 1. ALWAYS check git status before any operation
360
+ 2. NEVER force-push to main/master without explicit approval
361
+ 3. Create backups (stash/branch) before destructive operations
362
+ 4. Explain the impact of every git operation
363
+ 5. Prefer rebase for linear history, merge for feature branches
364
+ 6. Use signed commits when possible`,
365
+ maxIterations: 15,
366
+ tags: ['git', 'version-control', 'merge', 'branch', 'rebase', 'commit', 'conflict', 'tag'],
367
+ },
368
+ // ─── 🖥️ TITAN — SysAdmin ─────────────────────────────────────
369
+ {
370
+ id: 'titan',
371
+ codename: 'TITAN',
372
+ emoji: '🖥️',
373
+ role: 'SysAdmin',
374
+ description: 'Primordial power — OS config, networking, processes, disk, and system health.',
375
+ systemPrompt: `You are TITAN 🖥️, the system administrator of the AZERCLAW pantheon.
376
+ Named after the primordial forces — you command the raw power of the machine.
377
+
378
+ CAPABILITIES:
379
+ - Manage processes (ps, top, kill, systemctl, launchctl)
380
+ - Configure networking (ports, firewall, DNS, hosts)
381
+ - Monitor disk usage, memory, CPU, and I/O
382
+ - Manage users, groups, and permissions
383
+ - Set up cron jobs and scheduled tasks
384
+ - Troubleshoot system issues and crashes
385
+ - Install and configure system services
386
+ - Manage package managers (apt, brew, yum, pacman)
387
+
388
+ RULES:
389
+ 1. Always check current state before making changes
390
+ 2. Back up configs before modifying them
391
+ 3. Explain the impact of system-level changes to the user
392
+ 4. NEVER run rm -rf without explicit approval
393
+ 5. Use sudo/elevated privileges only when necessary
394
+ 6. Check disk space before large operations
395
+ 7. Log all system modifications`,
396
+ maxIterations: 20,
397
+ tags: ['sysadmin', 'system', 'networking', 'processes', 'disk', 'monitor', 'cron', 'service'],
398
+ },
399
+ // ─── 🐠 POSEIDON — Network & API Specialist ──────────────────
400
+ {
401
+ id: 'poseidon',
402
+ codename: 'POSEIDON',
403
+ emoji: '🐠',
404
+ role: 'Network & API Specialist',
405
+ description: 'God of the deep — API design, HTTP debugging, WebSocket, networking diagnostics.',
406
+ systemPrompt: `You are POSEIDON 🐠, the network specialist of the AZERCLAW pantheon.
407
+ Named after the god of the sea — you command all currents of data.
408
+
409
+ CAPABILITIES:
410
+ - Design and implement REST, GraphQL, and WebSocket APIs
411
+ - Debug HTTP requests and responses (curl, fetch)
412
+ - Analyze network traffic and latency
413
+ - Configure proxies, load balancers, and reverse proxies
414
+ - Implement authentication flows (OAuth, JWT, API keys)
415
+ - Rate limiting, caching, and CDN configuration
416
+ - DNS resolution and SSL/TLS certificate management
417
+ - WebSocket real-time communication
418
+
419
+ RULES:
420
+ 1. Always validate API inputs and outputs
421
+ 2. Implement proper error handling with status codes
422
+ 3. Use HTTPS everywhere — no exceptions
423
+ 4. Rate-limit all public endpoints
424
+ 5. Log all API requests for debugging
425
+ 6. Version APIs from day one (/v1/, /v2/)
426
+ 7. Include OpenAPI/Swagger documentation`,
427
+ maxIterations: 20,
428
+ tags: ['api', 'network', 'http', 'websocket', 'rest', 'graphql', 'curl', 'dns', 'ssl', 'oauth'],
429
+ },
430
+ ];
431
+ // ─── Agent Factory ──────────────────────────────────────────────
432
+ /**
433
+ * Get an agent definition by codename or ID.
434
+ */
435
+ function getAgent(nameOrId) {
436
+ const key = nameOrId.toLowerCase();
437
+ return exports.BUILT_IN_AGENTS.find(a => a.id === key || a.codename.toLowerCase() === key);
438
+ }
439
+ /**
440
+ * Auto-match the best agent for a given task description.
441
+ */
442
+ function matchAgentForTask(task) {
443
+ const t = task.toLowerCase();
444
+ let bestAgent = exports.BUILT_IN_AGENTS[0]; // Default to ZEUS
445
+ let bestScore = 0;
446
+ for (const agent of exports.BUILT_IN_AGENTS) {
447
+ let score = 0;
448
+ // Tag matching (highest weight)
449
+ for (const tag of agent.tags) {
450
+ if (t.includes(tag))
451
+ score += 10;
452
+ }
453
+ // Role keyword matching
454
+ if (t.includes(agent.role.toLowerCase()))
455
+ score += 15;
456
+ // Codename matching (user explicitly asked for this agent)
457
+ if (t.includes(agent.codename.toLowerCase()))
458
+ score += 100;
459
+ if (score > bestScore) {
460
+ bestScore = score;
461
+ bestAgent = agent;
462
+ }
463
+ }
464
+ return bestAgent;
465
+ }
466
+ /**
467
+ * Create a runtime from an agent definition.
468
+ */
469
+ function createAgent(definition, eventHandler) {
470
+ return new runtime_1.AgentRuntime({
471
+ sessionId: `${definition.codename}_${Date.now()}`,
472
+ systemPrompt: definition.systemPrompt,
473
+ maxIterations: definition.maxIterations,
474
+ eventHandler,
475
+ });
476
+ }
477
+ /**
478
+ * List all agents in the pantheon.
479
+ */
480
+ function listAgents() {
481
+ return [...exports.BUILT_IN_AGENTS];
482
+ }
483
+ /**
484
+ * Format agents as a display table.
485
+ */
486
+ function formatAgentRoster() {
487
+ let roster = ' ╔═══════════════════════════════════════════════════════════╗\n';
488
+ roster += ' ║ ⚡ THE AZERCLAW PANTHEON ⚡ ║\n';
489
+ roster += ' ╠═══════════════════════════════════════════════════════════╣\n';
490
+ for (const agent of exports.BUILT_IN_AGENTS) {
491
+ const line = ` ║ ${agent.emoji} ${agent.codename.padEnd(12)} │ ${agent.role.padEnd(20)} │ ${agent.tags.slice(0, 3).join(', ').padEnd(18)} ║`;
492
+ roster += line + '\n';
493
+ }
494
+ roster += ' ╚═══════════════════════════════════════════════════════════╝';
495
+ return roster;
496
+ }
497
+ //# sourceMappingURL=builtin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtin.js","sourceRoot":"","sources":["../../../src/agents/builtin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * 🐟 AZERCLAW Agent Loader
3
+ * Loads agent definitions from .md files in the agents/ directory,
4
+ * merging file-based definitions with the built-in TypeScript definitions.
5
+ * Supports /AGENT command routing.
6
+ */
7
+ import { AgentDefinition } from './builtin';
8
+ export declare function loadAgentsFromDirectory(dir: string): AgentDefinition[];
9
+ export interface ParsedCommand {
10
+ agent: string;
11
+ flags: string[];
12
+ task: string;
13
+ }
14
+ /**
15
+ * Parse /AGENT //flag task format.
16
+ * Returns null if not a command.
17
+ */
18
+ export declare function parseAgentCommand(input: string): ParsedCommand | null;
19
+ /**
20
+ * Get agents for group commands.
21
+ */
22
+ export declare function resolveGroupCommand(group: string): AgentDefinition[];
23
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/agents/loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,eAAe,EAA6B,MAAM,WAAW,CAAC;AAIvE,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,EAAE,CAetE;AAoDD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CA4BrE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,EAAE,CAcpE"}