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 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/config/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAgFxB,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMlB,CAAC;AAIH,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;EASrB,CAAC;AAIH,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;EAKlB,CAAC;AAIH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCvB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAC1D,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAGtD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,CAAC"}
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ /**
3
+ * 🐟 AZERCLAW Configuration Schema
4
+ * Defines the full configuration structure with Zod validation.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ConfigSchema = void 0;
8
+ const zod_1 = require("zod");
9
+ // ─── Provider Schemas ───────────────────────────────────────────
10
+ const OpenAIProviderSchema = zod_1.z.object({
11
+ apiKey: zod_1.z.string().default(''),
12
+ baseUrl: zod_1.z.string().default('https://api.openai.com/v1'),
13
+ defaultModel: zod_1.z.string().default('gpt-4o'),
14
+ enabled: zod_1.z.boolean().default(false),
15
+ });
16
+ const AnthropicProviderSchema = zod_1.z.object({
17
+ apiKey: zod_1.z.string().default(''),
18
+ baseUrl: zod_1.z.string().default('https://api.anthropic.com'),
19
+ defaultModel: zod_1.z.string().default('claude-sonnet-4-20250514'),
20
+ enabled: zod_1.z.boolean().default(false),
21
+ });
22
+ const GoogleProviderSchema = zod_1.z.object({
23
+ apiKey: zod_1.z.string().default(''),
24
+ defaultModel: zod_1.z.string().default('gemini-2.5-flash'),
25
+ enabled: zod_1.z.boolean().default(false),
26
+ });
27
+ const OllamaProviderSchema = zod_1.z.object({
28
+ baseUrl: zod_1.z.string().default('http://localhost:11434'),
29
+ defaultModel: zod_1.z.string().default('llama3.1'),
30
+ enabled: zod_1.z.boolean().default(false),
31
+ });
32
+ const GroqProviderSchema = zod_1.z.object({
33
+ apiKey: zod_1.z.string().default(''),
34
+ baseUrl: zod_1.z.string().default('https://api.groq.com/openai/v1'),
35
+ defaultModel: zod_1.z.string().default('llama-3.3-70b-versatile'),
36
+ enabled: zod_1.z.boolean().default(false),
37
+ });
38
+ const DeepSeekProviderSchema = zod_1.z.object({
39
+ apiKey: zod_1.z.string().default(''),
40
+ baseUrl: zod_1.z.string().default('https://api.deepseek.com'),
41
+ defaultModel: zod_1.z.string().default('deepseek-chat'),
42
+ enabled: zod_1.z.boolean().default(false),
43
+ });
44
+ const OpenRouterProviderSchema = zod_1.z.object({
45
+ apiKey: zod_1.z.string().default(''),
46
+ baseUrl: zod_1.z.string().default('https://openrouter.ai/api/v1'),
47
+ defaultModel: zod_1.z.string().default('anthropic/claude-sonnet-4'),
48
+ enabled: zod_1.z.boolean().default(false),
49
+ });
50
+ const CustomProviderSchema = zod_1.z.object({
51
+ apiKey: zod_1.z.string().default(''),
52
+ baseUrl: zod_1.z.string().default(''),
53
+ defaultModel: zod_1.z.string().default(''),
54
+ enabled: zod_1.z.boolean().default(false),
55
+ });
56
+ // ─── AI Config ──────────────────────────────────────────────────
57
+ const ProvidersSchema = zod_1.z.object({
58
+ openai: OpenAIProviderSchema,
59
+ anthropic: AnthropicProviderSchema,
60
+ google: GoogleProviderSchema,
61
+ ollama: OllamaProviderSchema,
62
+ groq: GroqProviderSchema,
63
+ deepseek: DeepSeekProviderSchema,
64
+ openrouter: OpenRouterProviderSchema,
65
+ custom: CustomProviderSchema,
66
+ }).default(() => ({
67
+ openai: { apiKey: '', baseUrl: 'https://api.openai.com/v1', defaultModel: 'gpt-4o', enabled: false },
68
+ anthropic: { apiKey: '', baseUrl: 'https://api.anthropic.com', defaultModel: 'claude-sonnet-4-20250514', enabled: false },
69
+ google: { apiKey: '', defaultModel: 'gemini-2.5-flash', enabled: false },
70
+ ollama: { baseUrl: 'http://localhost:11434', defaultModel: 'llama3.1', enabled: false },
71
+ groq: { apiKey: '', baseUrl: 'https://api.groq.com/openai/v1', defaultModel: 'llama-3.3-70b-versatile', enabled: false },
72
+ deepseek: { apiKey: '', baseUrl: 'https://api.deepseek.com', defaultModel: 'deepseek-chat', enabled: false },
73
+ openrouter: { apiKey: '', baseUrl: 'https://openrouter.ai/api/v1', defaultModel: 'anthropic/claude-sonnet-4', enabled: false },
74
+ custom: { apiKey: '', baseUrl: '', defaultModel: '', enabled: false },
75
+ }));
76
+ const AIConfigSchema = zod_1.z.object({
77
+ defaultProvider: zod_1.z.string().default('openai'),
78
+ fallbackChain: zod_1.z.array(zod_1.z.string()).default(['openai', 'anthropic', 'google']),
79
+ maxTokens: zod_1.z.number().default(4096),
80
+ temperature: zod_1.z.number().default(0.7),
81
+ providers: ProvidersSchema,
82
+ });
83
+ // ─── Agent Config ───────────────────────────────────────────────
84
+ const AgentConfigSchema = zod_1.z.object({
85
+ name: zod_1.z.string().default('Azerclaw'),
86
+ personality: zod_1.z.string().default('helpful, precise, and proactive'),
87
+ maxIterations: zod_1.z.number().default(25),
88
+ approvalRequired: zod_1.z.boolean().default(true),
89
+ allowShellCommands: zod_1.z.boolean().default(true),
90
+ allowFileWrite: zod_1.z.boolean().default(true),
91
+ allowNetworkAccess: zod_1.z.boolean().default(true),
92
+ sandboxMode: zod_1.z.boolean().default(false),
93
+ });
94
+ // ─── UI Config ──────────────────────────────────────────────────
95
+ const UIConfigSchema = zod_1.z.object({
96
+ theme: zod_1.z.enum(['dark', 'light', 'ocean', 'neon']).default('ocean'),
97
+ showSplash: zod_1.z.boolean().default(true),
98
+ animationSpeed: zod_1.z.enum(['slow', 'normal', 'fast', 'none']).default('normal'),
99
+ colorMode: zod_1.z.enum(['auto', 'ansi256', 'truecolor', 'none']).default('auto'),
100
+ });
101
+ // ─── Full Config ────────────────────────────────────────────────
102
+ exports.ConfigSchema = zod_1.z.object({
103
+ ai: AIConfigSchema.default(() => ({
104
+ defaultProvider: 'openai',
105
+ fallbackChain: ['openai', 'anthropic', 'google'],
106
+ maxTokens: 4096,
107
+ temperature: 0.7,
108
+ providers: {
109
+ openai: { apiKey: '', baseUrl: 'https://api.openai.com/v1', defaultModel: 'gpt-4o', enabled: false },
110
+ anthropic: { apiKey: '', baseUrl: 'https://api.anthropic.com', defaultModel: 'claude-sonnet-4-20250514', enabled: false },
111
+ google: { apiKey: '', defaultModel: 'gemini-2.5-flash', enabled: false },
112
+ ollama: { baseUrl: 'http://localhost:11434', defaultModel: 'llama3.1', enabled: false },
113
+ groq: { apiKey: '', baseUrl: 'https://api.groq.com/openai/v1', defaultModel: 'llama-3.3-70b-versatile', enabled: false },
114
+ deepseek: { apiKey: '', baseUrl: 'https://api.deepseek.com', defaultModel: 'deepseek-chat', enabled: false },
115
+ openrouter: { apiKey: '', baseUrl: 'https://openrouter.ai/api/v1', defaultModel: 'anthropic/claude-sonnet-4', enabled: false },
116
+ custom: { apiKey: '', baseUrl: '', defaultModel: '', enabled: false },
117
+ },
118
+ })),
119
+ agent: AgentConfigSchema.default(() => ({
120
+ name: 'Azerclaw',
121
+ personality: 'helpful, precise, and proactive',
122
+ maxIterations: 25,
123
+ approvalRequired: true,
124
+ allowShellCommands: true,
125
+ allowFileWrite: true,
126
+ allowNetworkAccess: true,
127
+ sandboxMode: false,
128
+ })),
129
+ ui: UIConfigSchema.default(() => ({
130
+ theme: 'ocean',
131
+ showSplash: true,
132
+ animationSpeed: 'normal',
133
+ colorMode: 'auto',
134
+ })),
135
+ version: zod_1.z.string().default('1.0.0'),
136
+ firstRun: zod_1.z.boolean().default(true),
137
+ });
138
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/config/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * 🐟 AZERCLAW Gateway Server
3
+ * WebSocket-based control plane that connects CLI, TUI, messenger adapters,
4
+ * heartbeat scheduler, and agent runtime together.
5
+ */
6
+ export declare class Gateway {
7
+ private server;
8
+ private wss;
9
+ private heartbeat;
10
+ private channels;
11
+ private clients;
12
+ private port;
13
+ constructor(port?: number);
14
+ /**
15
+ * Start the gateway server.
16
+ */
17
+ start(): Promise<void>;
18
+ /**
19
+ * Stop the gateway.
20
+ */
21
+ stop(): Promise<void>;
22
+ /**
23
+ * Handle incoming WebSocket messages.
24
+ */
25
+ private handleClientMessage;
26
+ /**
27
+ * Connect a messenger channel.
28
+ */
29
+ private connectChannel;
30
+ /**
31
+ * Broadcast a message to all connected clients.
32
+ */
33
+ private broadcast;
34
+ }
35
+ //# sourceMappingURL=gateway.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../../src/core/gateway.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiBH,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,GAAG,CAAgC;IAC3C,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,IAAI,CAAS;gBAET,IAAI,SAAO;IAKvB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2D5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAU3B;;OAEG;YACW,mBAAmB;IAqCjC;;OAEG;YACW,cAAc;IAe5B;;OAEG;IACH,OAAO,CAAC,SAAS;CAQlB"}
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+ /**
3
+ * 🐟 AZERCLAW Gateway Server
4
+ * WebSocket-based control plane that connects CLI, TUI, messenger adapters,
5
+ * heartbeat scheduler, and agent runtime together.
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.Gateway = void 0;
42
+ const http = __importStar(require("http"));
43
+ const ws_1 = require("ws");
44
+ const runtime_1 = require("../core/runtime");
45
+ const heartbeat_1 = require("../scheduler/heartbeat");
46
+ const discord_1 = require("../channels/discord");
47
+ const telegram_1 = require("../channels/telegram");
48
+ const slack_1 = require("../channels/slack");
49
+ const webhook_1 = require("../channels/webhook");
50
+ const security_1 = require("../core/security");
51
+ const registry_1 = require("../tools/registry");
52
+ const shell_1 = require("../tools/shell");
53
+ const filesystem_1 = require("../tools/filesystem");
54
+ const advanced_1 = require("../tools/advanced");
55
+ class Gateway {
56
+ server = null;
57
+ wss = null;
58
+ heartbeat;
59
+ channels = new Map();
60
+ clients = new Set();
61
+ port;
62
+ constructor(port = 3142) {
63
+ this.port = port;
64
+ this.heartbeat = new heartbeat_1.HeartbeatEngine();
65
+ }
66
+ /**
67
+ * Start the gateway server.
68
+ */
69
+ async start() {
70
+ const registry = (0, registry_1.getToolRegistry)();
71
+ registry.register(shell_1.shellTool);
72
+ registry.register(filesystem_1.readFileTool);
73
+ registry.register(filesystem_1.writeFileTool);
74
+ registry.register(filesystem_1.listDirTool);
75
+ registry.register(filesystem_1.searchFilesTool);
76
+ registry.register(advanced_1.spawnSubAgentTool);
77
+ registry.register(advanced_1.webSearchTool);
78
+ registry.register(advanced_1.codeAnalysisTool);
79
+ this.server = http.createServer((req, res) => {
80
+ if (req.url === '/health') {
81
+ res.writeHead(200, { 'Content-Type': 'application/json' });
82
+ res.end(JSON.stringify({
83
+ status: 'ok',
84
+ version: '1.0.0',
85
+ uptime: process.uptime(),
86
+ channels: Array.from(this.channels.keys()),
87
+ clients: this.clients.size,
88
+ }));
89
+ return;
90
+ }
91
+ res.writeHead(404);
92
+ res.end();
93
+ });
94
+ this.wss = new ws_1.WebSocketServer({ server: this.server });
95
+ this.wss.on('connection', (ws) => {
96
+ this.clients.add(ws);
97
+ (0, security_1.auditLog)('GATEWAY_CLIENT', `Connected (${this.clients.size} total)`);
98
+ ws.on('message', async (data) => {
99
+ try {
100
+ const msg = JSON.parse(data.toString());
101
+ await this.handleClientMessage(ws, msg);
102
+ }
103
+ catch (e) {
104
+ ws.send(JSON.stringify({ type: 'error', error: e.message }));
105
+ }
106
+ });
107
+ ws.on('close', () => {
108
+ this.clients.delete(ws);
109
+ });
110
+ });
111
+ // Bind to loopback only
112
+ this.server.listen(this.port, '127.0.0.1', () => {
113
+ (0, security_1.auditLog)('GATEWAY_STARTED', `ws://127.0.0.1:${this.port}`);
114
+ });
115
+ // Start heartbeat
116
+ this.heartbeat.onEvent((event, details) => {
117
+ this.broadcast({ type: 'heartbeat', event, details });
118
+ });
119
+ this.heartbeat.start();
120
+ }
121
+ /**
122
+ * Stop the gateway.
123
+ */
124
+ async stop() {
125
+ this.heartbeat.stop();
126
+ for (const [, channel] of this.channels) {
127
+ await channel.disconnect();
128
+ }
129
+ this.wss?.close();
130
+ this.server?.close();
131
+ (0, security_1.auditLog)('GATEWAY_STOPPED', '');
132
+ }
133
+ /**
134
+ * Handle incoming WebSocket messages.
135
+ */
136
+ async handleClientMessage(ws, msg) {
137
+ switch (msg.type) {
138
+ case 'chat': {
139
+ const agent = new runtime_1.AgentRuntime({
140
+ eventHandler: async (event) => {
141
+ ws.send(JSON.stringify({ agentType: 'agent_event', ...event }));
142
+ },
143
+ });
144
+ await agent.chat(msg.content);
145
+ break;
146
+ }
147
+ case 'heartbeat_status': {
148
+ ws.send(JSON.stringify({
149
+ type: 'heartbeat_status',
150
+ tasks: this.heartbeat.getStatus(),
151
+ }));
152
+ break;
153
+ }
154
+ case 'heartbeat_trigger': {
155
+ const result = await this.heartbeat.triggerTask(msg.taskName);
156
+ ws.send(JSON.stringify({ type: 'heartbeat_result', result }));
157
+ break;
158
+ }
159
+ case 'connect_channel': {
160
+ await this.connectChannel(msg.platform, msg.config);
161
+ ws.send(JSON.stringify({ type: 'channel_connected', platform: msg.platform }));
162
+ break;
163
+ }
164
+ default:
165
+ ws.send(JSON.stringify({ type: 'error', error: `Unknown message type: ${msg.type}` }));
166
+ }
167
+ }
168
+ /**
169
+ * Connect a messenger channel.
170
+ */
171
+ async connectChannel(platform, config) {
172
+ let adapter;
173
+ switch (platform) {
174
+ case 'discord':
175
+ adapter = new discord_1.DiscordAdapter();
176
+ break;
177
+ case 'telegram':
178
+ adapter = new telegram_1.TelegramAdapter();
179
+ break;
180
+ case 'slack':
181
+ adapter = new slack_1.SlackAdapter();
182
+ break;
183
+ case 'webhook':
184
+ adapter = new webhook_1.WebhookAdapter();
185
+ break;
186
+ default: throw new Error(`Unknown platform: ${platform}`);
187
+ }
188
+ await adapter.connect(config);
189
+ this.channels.set(platform, adapter);
190
+ (0, security_1.auditLog)('CHANNEL_CONNECTED', platform);
191
+ }
192
+ /**
193
+ * Broadcast a message to all connected clients.
194
+ */
195
+ broadcast(msg) {
196
+ const data = JSON.stringify(msg);
197
+ for (const client of this.clients) {
198
+ if (client.readyState === ws_1.WebSocket.OPEN) {
199
+ client.send(data);
200
+ }
201
+ }
202
+ }
203
+ }
204
+ exports.Gateway = Gateway;
205
+ //# sourceMappingURL=gateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../../src/core/gateway.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * 🐟 AZERCLAW Agent Runtime
3
+ * Core autonomous agent loop with sub-agent spawning, tool execution,
4
+ * approval gates, and multi-agent orchestration.
5
+ */
6
+ import { ToolResult } from '../tools/registry';
7
+ import { ChatMessage } from '../providers/base';
8
+ export interface AgentContext {
9
+ sessionId: string;
10
+ messages: ChatMessage[];
11
+ systemPrompt: string;
12
+ maxIterations: number;
13
+ currentIteration: number;
14
+ parentAgentId?: string;
15
+ metadata: Record<string, unknown>;
16
+ }
17
+ export interface AgentEvent {
18
+ type: 'thinking' | 'response' | 'tool_call' | 'tool_result' | 'sub_agent_spawn' | 'sub_agent_done' | 'approval_needed' | 'error' | 'done';
19
+ content?: string;
20
+ toolName?: string;
21
+ toolArgs?: Record<string, unknown>;
22
+ toolResult?: ToolResult;
23
+ subAgentId?: string;
24
+ error?: string;
25
+ }
26
+ export type AgentEventHandler = (event: AgentEvent) => void | Promise<void>;
27
+ export declare class AgentRuntime {
28
+ private context;
29
+ private eventHandler;
30
+ private aborted;
31
+ private subAgents;
32
+ constructor(options: {
33
+ sessionId?: string;
34
+ systemPrompt?: string;
35
+ maxIterations?: number;
36
+ parentAgentId?: string;
37
+ eventHandler: AgentEventHandler;
38
+ });
39
+ /**
40
+ * Send a user message and run the agent loop.
41
+ */
42
+ run(userMessage: string): Promise<string>;
43
+ /**
44
+ * Continue a conversation with a new message.
45
+ */
46
+ chat(userMessage: string): Promise<string>;
47
+ /**
48
+ * Core agent loop — iterates until task completion or max iterations.
49
+ */
50
+ private agentLoop;
51
+ /**
52
+ * Spawn a sub-agent for parallel/delegated tasks.
53
+ */
54
+ private handleSubAgent;
55
+ /**
56
+ * Abort the current agent loop.
57
+ */
58
+ abort(): void;
59
+ /**
60
+ * Get conversation history.
61
+ */
62
+ getHistory(): ChatMessage[];
63
+ /**
64
+ * Get session ID.
65
+ */
66
+ getSessionId(): string;
67
+ private emit;
68
+ }
69
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/core/runtime.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAmB,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEhE,OAAO,EAAE,WAAW,EAA8B,MAAM,mBAAmB,CAAC;AAI5E,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,OAAO,GAAG,MAAM,CAAC;IAC1I,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AA2B5E,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAwC;gBAE7C,OAAO,EAAE;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,iBAAiB,CAAC;KACjC;IAcD;;OAEG;IACG,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK/C;;OAEG;IACG,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKhD;;OAEG;YACW,SAAS;IA+EvB;;OAEG;YACW,cAAc;IA8B5B;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;OAEG;IACH,UAAU,IAAI,WAAW,EAAE;IAI3B;;OAEG;IACH,YAAY,IAAI,MAAM;YAIR,IAAI;CAGnB"}