polyai-agent 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 (142) hide show
  1. package/README.md +464 -0
  2. package/REQUIREMENTS.md +158 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +500 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/cluster-monitor/cluster-monitor.d.ts +49 -0
  8. package/dist/cluster-monitor/cluster-monitor.d.ts.map +1 -0
  9. package/dist/cluster-monitor/cluster-monitor.js +374 -0
  10. package/dist/cluster-monitor/cluster-monitor.js.map +1 -0
  11. package/dist/cluster-monitor/index.d.ts +9 -0
  12. package/dist/cluster-monitor/index.d.ts.map +1 -0
  13. package/dist/cluster-monitor/index.js +19 -0
  14. package/dist/cluster-monitor/index.js.map +1 -0
  15. package/dist/cluster-monitor/kubernetes-connector.d.ts +21 -0
  16. package/dist/cluster-monitor/kubernetes-connector.d.ts.map +1 -0
  17. package/dist/cluster-monitor/kubernetes-connector.js +109 -0
  18. package/dist/cluster-monitor/kubernetes-connector.js.map +1 -0
  19. package/dist/cluster-monitor/notifications.d.ts +26 -0
  20. package/dist/cluster-monitor/notifications.d.ts.map +1 -0
  21. package/dist/cluster-monitor/notifications.js +182 -0
  22. package/dist/cluster-monitor/notifications.js.map +1 -0
  23. package/dist/cluster-monitor/remediation.d.ts +33 -0
  24. package/dist/cluster-monitor/remediation.d.ts.map +1 -0
  25. package/dist/cluster-monitor/remediation.js +134 -0
  26. package/dist/cluster-monitor/remediation.js.map +1 -0
  27. package/dist/cluster-monitor/rules.d.ts +26 -0
  28. package/dist/cluster-monitor/rules.d.ts.map +1 -0
  29. package/dist/cluster-monitor/rules.js +133 -0
  30. package/dist/cluster-monitor/rules.js.map +1 -0
  31. package/dist/cluster-monitor/types.d.ts +184 -0
  32. package/dist/cluster-monitor/types.d.ts.map +1 -0
  33. package/dist/cluster-monitor/types.js +3 -0
  34. package/dist/cluster-monitor/types.js.map +1 -0
  35. package/dist/index.d.ts +47 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +115 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/live-debugger/index.d.ts +32 -0
  40. package/dist/live-debugger/index.d.ts.map +1 -0
  41. package/dist/live-debugger/index.js +119 -0
  42. package/dist/live-debugger/index.js.map +1 -0
  43. package/dist/live-debugger/log-watcher.d.ts +19 -0
  44. package/dist/live-debugger/log-watcher.d.ts.map +1 -0
  45. package/dist/live-debugger/log-watcher.js +77 -0
  46. package/dist/live-debugger/log-watcher.js.map +1 -0
  47. package/dist/live-debugger/service-connector.d.ts +33 -0
  48. package/dist/live-debugger/service-connector.d.ts.map +1 -0
  49. package/dist/live-debugger/service-connector.js +123 -0
  50. package/dist/live-debugger/service-connector.js.map +1 -0
  51. package/dist/providers/anthropic.d.ts +9 -0
  52. package/dist/providers/anthropic.d.ts.map +1 -0
  53. package/dist/providers/anthropic.js +71 -0
  54. package/dist/providers/anthropic.js.map +1 -0
  55. package/dist/providers/base.d.ts +29 -0
  56. package/dist/providers/base.d.ts.map +1 -0
  57. package/dist/providers/base.js +14 -0
  58. package/dist/providers/base.js.map +1 -0
  59. package/dist/providers/gemini.d.ts +11 -0
  60. package/dist/providers/gemini.d.ts.map +1 -0
  61. package/dist/providers/gemini.js +73 -0
  62. package/dist/providers/gemini.js.map +1 -0
  63. package/dist/providers/index.d.ts +14 -0
  64. package/dist/providers/index.d.ts.map +1 -0
  65. package/dist/providers/index.js +38 -0
  66. package/dist/providers/index.js.map +1 -0
  67. package/dist/providers/openai.d.ts +9 -0
  68. package/dist/providers/openai.d.ts.map +1 -0
  69. package/dist/providers/openai.js +59 -0
  70. package/dist/providers/openai.js.map +1 -0
  71. package/dist/session/guardrails.d.ts +20 -0
  72. package/dist/session/guardrails.d.ts.map +1 -0
  73. package/dist/session/guardrails.js +83 -0
  74. package/dist/session/guardrails.js.map +1 -0
  75. package/dist/session/index.d.ts +6 -0
  76. package/dist/session/index.d.ts.map +1 -0
  77. package/dist/session/index.js +12 -0
  78. package/dist/session/index.js.map +1 -0
  79. package/dist/session/session-manager.d.ts +15 -0
  80. package/dist/session/session-manager.d.ts.map +1 -0
  81. package/dist/session/session-manager.js +89 -0
  82. package/dist/session/session-manager.js.map +1 -0
  83. package/dist/session/session.d.ts +63 -0
  84. package/dist/session/session.d.ts.map +1 -0
  85. package/dist/session/session.js +123 -0
  86. package/dist/session/session.js.map +1 -0
  87. package/dist/speckits/base.d.ts +9 -0
  88. package/dist/speckits/base.d.ts.map +1 -0
  89. package/dist/speckits/base.js +3 -0
  90. package/dist/speckits/base.js.map +1 -0
  91. package/dist/speckits/cluster-debugger.d.ts +3 -0
  92. package/dist/speckits/cluster-debugger.d.ts.map +1 -0
  93. package/dist/speckits/cluster-debugger.js +48 -0
  94. package/dist/speckits/cluster-debugger.js.map +1 -0
  95. package/dist/speckits/code-review.d.ts +3 -0
  96. package/dist/speckits/code-review.d.ts.map +1 -0
  97. package/dist/speckits/code-review.js +41 -0
  98. package/dist/speckits/code-review.js.map +1 -0
  99. package/dist/speckits/debugger.d.ts +3 -0
  100. package/dist/speckits/debugger.d.ts.map +1 -0
  101. package/dist/speckits/debugger.js +38 -0
  102. package/dist/speckits/debugger.js.map +1 -0
  103. package/dist/speckits/index.d.ts +11 -0
  104. package/dist/speckits/index.d.ts.map +1 -0
  105. package/dist/speckits/index.js +40 -0
  106. package/dist/speckits/index.js.map +1 -0
  107. package/dist/speckits/more-speckits.d.ts +6 -0
  108. package/dist/speckits/more-speckits.d.ts.map +1 -0
  109. package/dist/speckits/more-speckits.js +136 -0
  110. package/dist/speckits/more-speckits.js.map +1 -0
  111. package/dist/speckits/vibe-coder.d.ts +3 -0
  112. package/dist/speckits/vibe-coder.d.ts.map +1 -0
  113. package/dist/speckits/vibe-coder.js +32 -0
  114. package/dist/speckits/vibe-coder.js.map +1 -0
  115. package/dist/utils/config.d.ts +18 -0
  116. package/dist/utils/config.d.ts.map +1 -0
  117. package/dist/utils/config.js +107 -0
  118. package/dist/utils/config.js.map +1 -0
  119. package/dist/utils/file-ops.d.ts +15 -0
  120. package/dist/utils/file-ops.d.ts.map +1 -0
  121. package/dist/utils/file-ops.js +109 -0
  122. package/dist/utils/file-ops.js.map +1 -0
  123. package/dist/utils/logger.d.ts +4 -0
  124. package/dist/utils/logger.d.ts.map +1 -0
  125. package/dist/utils/logger.js +25 -0
  126. package/dist/utils/logger.js.map +1 -0
  127. package/dist/web/public/css/app.css +370 -0
  128. package/dist/web/public/index.html +91 -0
  129. package/dist/web/public/js/app.js +212 -0
  130. package/dist/web/routes/sessions.d.ts +4 -0
  131. package/dist/web/routes/sessions.d.ts.map +1 -0
  132. package/dist/web/routes/sessions.js +51 -0
  133. package/dist/web/routes/sessions.js.map +1 -0
  134. package/dist/web/routes/settings.d.ts +3 -0
  135. package/dist/web/routes/settings.d.ts.map +1 -0
  136. package/dist/web/routes/settings.js +33 -0
  137. package/dist/web/routes/settings.js.map +1 -0
  138. package/dist/web/server.d.ts +16 -0
  139. package/dist/web/server.d.ts.map +1 -0
  140. package/dist/web/server.js +76 -0
  141. package/dist/web/server.js.map +1 -0
  142. package/package.json +86 -0
package/dist/cli.js ADDED
@@ -0,0 +1,500 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const commander_1 = require("commander");
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const readline_1 = __importDefault(require("readline"));
10
+ const ora_1 = __importDefault(require("ora"));
11
+ const path_1 = __importDefault(require("path"));
12
+ const os_1 = __importDefault(require("os"));
13
+ const config_1 = require("./utils/config");
14
+ const providers_1 = require("./providers");
15
+ const session_manager_1 = require("./session/session-manager");
16
+ const speckits_1 = require("./speckits");
17
+ const live_debugger_1 = require("./live-debugger");
18
+ const file_ops_1 = require("./utils/file-ops");
19
+ const server_1 = require("./web/server");
20
+ const guardrails_1 = require("./session/guardrails");
21
+ const logger_1 = require("./utils/logger");
22
+ const cluster_monitor_1 = require("./cluster-monitor/cluster-monitor");
23
+ const rules_1 = require("./cluster-monitor/rules");
24
+ const program = new commander_1.Command();
25
+ program
26
+ .name('ai-agent')
27
+ .description('AI-powered vibe coder, debugger, and session manager')
28
+ .version('1.0.0');
29
+ // ── chat command ─────────────────────────────────────────────
30
+ program
31
+ .command('chat')
32
+ .description('Start an interactive chat session (vibe coder mode)')
33
+ .option('-p, --provider <provider>', 'AI provider (openai|anthropic|gemini)')
34
+ .option('-m, --model <model>', 'Model name')
35
+ .option('-s, --session <name>', 'Session name (creates or resumes)', 'default')
36
+ .option('-k, --speckit <speckit>', 'Speckit to use (e.g. vibe-coder, debugger)')
37
+ .option('-g, --guardrail <rule>', 'Add a guardrail rule (can be repeated)', collectArray, [])
38
+ .option('--context', 'Include project context in first message', false)
39
+ .action(async (opts) => {
40
+ const config = (0, config_1.loadConfig)({
41
+ provider: opts.provider,
42
+ model: opts.model,
43
+ });
44
+ if (!config.apiKey) {
45
+ console.error(chalk_1.default.red(`✗ No API key found for provider "${config.provider}".`));
46
+ console.error(chalk_1.default.yellow(` Set the ${providerEnvVar(config.provider)} environment variable.`));
47
+ process.exit(1);
48
+ }
49
+ const speckit = opts.speckit ? speckits_1.SPECKITS[opts.speckit] : speckits_1.SPECKITS['vibe-coder'];
50
+ if (opts.speckit && !speckit) {
51
+ console.error(chalk_1.default.red(`✗ Unknown speckit: ${opts.speckit}`));
52
+ process.exit(1);
53
+ }
54
+ const guardrails = opts.guardrail.map((r) => (0, guardrails_1.createGuardrail)('custom', r));
55
+ const sessionsDir = config.sessionDir || path_1.default.join(os_1.default.homedir(), '.polyai-agent', 'sessions');
56
+ const sessionManager = new session_manager_1.SessionManager(sessionsDir);
57
+ const provider = (0, providers_1.createProvider)({ provider: config.provider, model: config.model, apiKey: config.apiKey });
58
+ // Try to find existing session by name
59
+ const existing = sessionManager.listSessions().find((s) => s.name === opts.session);
60
+ let session;
61
+ if (existing) {
62
+ session = sessionManager.loadSession(existing.id, config.apiKey);
63
+ session.resume();
64
+ console.log(chalk_1.default.cyan(`\n Resumed session: ${chalk_1.default.bold(session.name)} (${session.id.slice(0, 8)}…)\n`));
65
+ }
66
+ else {
67
+ session = sessionManager.createSession({
68
+ name: opts.session,
69
+ provider: config.provider,
70
+ model: config.model || provider.getModel(),
71
+ speckit: opts.speckit || 'vibe-coder',
72
+ systemPrompt: speckit?.systemPrompt,
73
+ guardrails,
74
+ projectDir: process.cwd(),
75
+ }, config.apiKey);
76
+ console.log(chalk_1.default.green(`\n New session: ${chalk_1.default.bold(session.name)} (${session.id.slice(0, 8)}…)`));
77
+ if (speckit) {
78
+ console.log(chalk_1.default.dim(` Speckit: ${speckit.name} — ${speckit.description}\n`));
79
+ }
80
+ }
81
+ // Optionally inject project context
82
+ if (opts.context) {
83
+ const ctx = (0, file_ops_1.gatherProjectContext)(process.cwd());
84
+ const spinner = (0, ora_1.default)('Loading project context…').start();
85
+ await session.chat(`Here is the project context:\n\n${ctx}\n\nPlease acknowledge and let me know if you have any questions.`, { stream: false });
86
+ spinner.succeed('Project context loaded');
87
+ }
88
+ printHelp();
89
+ await interactiveLoop(session, sessionManager);
90
+ });
91
+ // ── speckit command ─────────────────────────────────────────
92
+ program
93
+ .command('speckit [name]')
94
+ .description('List or run a prebuilt speckit')
95
+ .action((name) => {
96
+ if (!name) {
97
+ console.log(chalk_1.default.bold('\n Available Speckits:\n'));
98
+ for (const sk of (0, speckits_1.listSpeckits)()) {
99
+ console.log(` ${chalk_1.default.cyan(sk.name.padEnd(18))} ${chalk_1.default.dim(sk.description)}`);
100
+ }
101
+ console.log();
102
+ return;
103
+ }
104
+ const sk = speckits_1.SPECKITS[name];
105
+ if (!sk) {
106
+ console.error(chalk_1.default.red(`✗ Unknown speckit: ${name}`));
107
+ process.exit(1);
108
+ }
109
+ console.log(chalk_1.default.bold(`\n ${sk.name}`));
110
+ console.log(chalk_1.default.dim(` ${sk.description}\n`));
111
+ console.log(chalk_1.default.gray(' System prompt preview:'));
112
+ console.log(chalk_1.default.dim(sk.systemPrompt.slice(0, 300) + (sk.systemPrompt.length > 300 ? '…' : '')));
113
+ if (sk.examples?.length) {
114
+ console.log(chalk_1.default.gray('\n Examples:'));
115
+ sk.examples.forEach((ex) => console.log(chalk_1.default.dim(` • ${ex}`)));
116
+ }
117
+ console.log();
118
+ });
119
+ // ── debug command ─────────────────────────────────────────────
120
+ program
121
+ .command('debug')
122
+ .description('Attach to a live service and start AI-assisted debugging')
123
+ .option('-p, --provider <provider>', 'AI provider')
124
+ .option('-m, --model <model>', 'Model name')
125
+ .option('-f, --file <logFile>', 'Watch a log file')
126
+ .option('-d, --docker <container>', 'Attach to Docker container logs')
127
+ .option('-c, --cmd <command>', 'Run and attach to a process command')
128
+ .option('-s, --session <name>', 'Session name', 'debug-session')
129
+ .option('--batch <n>', 'Lines to batch before analysis', '20')
130
+ .action(async (opts) => {
131
+ const config = (0, config_1.loadConfig)({ provider: opts.provider, model: opts.model });
132
+ if (!config.apiKey) {
133
+ console.error(chalk_1.default.red(`✗ No API key for provider "${config.provider}".`));
134
+ process.exit(1);
135
+ }
136
+ if (!opts.file && !opts.docker && !opts.cmd) {
137
+ console.error(chalk_1.default.red('✗ Provide --file, --docker, or --cmd to connect to a service.'));
138
+ process.exit(1);
139
+ }
140
+ const sessionsDir = config.sessionDir || path_1.default.join(os_1.default.homedir(), '.polyai-agent', 'sessions');
141
+ const sessionManager = new session_manager_1.SessionManager(sessionsDir);
142
+ const session = sessionManager.createSession({
143
+ name: opts.session,
144
+ provider: config.provider,
145
+ model: config.model || '',
146
+ speckit: 'debugger',
147
+ systemPrompt: speckits_1.SPECKITS['debugger']?.systemPrompt,
148
+ projectDir: process.cwd(),
149
+ }, config.apiKey);
150
+ console.log(chalk_1.default.yellow('\n 🔍 Live Debugger started'));
151
+ console.log(chalk_1.default.dim(' AI will analyze errors as they appear. Press Ctrl+C to stop.\n'));
152
+ const debugger_ = new live_debugger_1.LiveDebugger({
153
+ session,
154
+ batchSize: parseInt(opts.batch, 10),
155
+ onLog: (line) => process.stdout.write(chalk_1.default.dim(` ${line}\n`)),
156
+ onAnalysis: (analysis) => {
157
+ console.log(chalk_1.default.bold.yellow('\n ━━ AI Analysis ━━━━━━━━━━━━━━━━━━━━━━━━'));
158
+ console.log(chalk_1.default.white(analysis));
159
+ console.log(chalk_1.default.yellow(' ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n'));
160
+ sessionManager.persistSession(session);
161
+ },
162
+ });
163
+ if (opts.file) {
164
+ debugger_.watchLogFile(opts.file);
165
+ }
166
+ else if (opts.docker) {
167
+ debugger_.connectToService({ type: 'docker', container: opts.docker });
168
+ }
169
+ else if (opts.cmd) {
170
+ const [cmd, ...args] = opts.cmd.split(' ');
171
+ debugger_.connectToService({ type: 'process', command: cmd, args });
172
+ }
173
+ process.on('SIGINT', () => {
174
+ debugger_.stop();
175
+ sessionManager.persistSession(session);
176
+ console.log(chalk_1.default.green('\n Debugger stopped. Session saved.\n'));
177
+ process.exit(0);
178
+ });
179
+ });
180
+ // ── session command ─────────────────────────────────────────
181
+ program
182
+ .command('session')
183
+ .description('Manage sessions')
184
+ .option('-l, --list', 'List all sessions')
185
+ .option('-d, --delete <id>', 'Delete a session by ID')
186
+ .option('-e, --export <id>', 'Export a session as JSON')
187
+ .action((opts) => {
188
+ const config = (0, config_1.loadConfig)();
189
+ const sessionsDir = config.sessionDir || path_1.default.join(os_1.default.homedir(), '.polyai-agent', 'sessions');
190
+ const sessionManager = new session_manager_1.SessionManager(sessionsDir);
191
+ if (opts.list || (!opts.delete && !opts.export)) {
192
+ const sessions = sessionManager.listSessions();
193
+ if (!sessions.length) {
194
+ console.log(chalk_1.default.dim('\n No sessions found.\n'));
195
+ return;
196
+ }
197
+ console.log(chalk_1.default.bold('\n Sessions:\n'));
198
+ for (const s of sessions) {
199
+ const status = s.status === 'active' ? chalk_1.default.green('●') : chalk_1.default.dim('○');
200
+ console.log(` ${status} ${chalk_1.default.bold(s.name.padEnd(20))} ${chalk_1.default.dim(s.id.slice(0, 8))} ${chalk_1.default.dim(s.config.provider + '/' + (s.config.model || 'default'))} ${chalk_1.default.dim(new Date(s.updatedAt).toLocaleString())}`);
201
+ }
202
+ console.log();
203
+ }
204
+ if (opts.delete) {
205
+ try {
206
+ sessionManager.deleteSession(opts.delete);
207
+ console.log(chalk_1.default.green(` ✓ Session ${opts.delete} deleted.\n`));
208
+ }
209
+ catch (err) {
210
+ console.error(chalk_1.default.red(` ✗ ${err}\n`));
211
+ }
212
+ }
213
+ if (opts.export) {
214
+ try {
215
+ const json = sessionManager.exportSession(opts.export);
216
+ console.log(json);
217
+ }
218
+ catch (err) {
219
+ console.error(chalk_1.default.red(` ✗ ${err}\n`));
220
+ }
221
+ }
222
+ });
223
+ // ── ui command ──────────────────────────────────────────────
224
+ program
225
+ .command('ui')
226
+ .description('Launch the Web UI for session viewing and management')
227
+ .option('--port <port>', 'Port to listen on', '3000')
228
+ .action(async (opts) => {
229
+ const config = (0, config_1.loadConfig)({ port: parseInt(opts.port, 10) });
230
+ const sessionsDir = config.sessionDir || path_1.default.join(os_1.default.homedir(), '.polyai-agent', 'sessions');
231
+ const sessionManager = new session_manager_1.SessionManager(sessionsDir);
232
+ const server = (0, server_1.createWebServer)({ port: config.port, sessionManager });
233
+ await server.start();
234
+ console.log(chalk_1.default.green(`\n ✓ AI Agent Web UI running at ${chalk_1.default.bold(`http://localhost:${config.port}`)}`));
235
+ console.log(chalk_1.default.dim(' Press Ctrl+C to stop.\n'));
236
+ process.on('SIGINT', async () => {
237
+ await server.stop();
238
+ console.log(chalk_1.default.yellow('\n Web UI stopped.\n'));
239
+ process.exit(0);
240
+ });
241
+ });
242
+ // ── config command ──────────────────────────────────────────
243
+ program
244
+ .command('config')
245
+ .description('Configure API keys and default settings')
246
+ .option('--provider <provider>', 'Set default provider')
247
+ .option('--model <model>', 'Set default model')
248
+ .option('--port <port>', 'Set default Web UI port')
249
+ .option('--show', 'Show current configuration')
250
+ .action((opts) => {
251
+ const config = (0, config_1.loadConfig)();
252
+ if (opts.show) {
253
+ const { apiKey: _key, ...safeConfig } = config;
254
+ console.log(chalk_1.default.bold('\n Current Configuration:\n'));
255
+ console.log(JSON.stringify(safeConfig, null, 2));
256
+ console.log();
257
+ return;
258
+ }
259
+ const updates = {};
260
+ if (opts.provider)
261
+ updates.provider = opts.provider;
262
+ if (opts.model)
263
+ updates.model = opts.model;
264
+ if (opts.port)
265
+ updates.port = parseInt(opts.port, 10);
266
+ if (Object.keys(updates).length) {
267
+ (0, config_1.saveConfig)(updates);
268
+ console.log(chalk_1.default.green(' ✓ Configuration saved.\n'));
269
+ }
270
+ else {
271
+ program.commands.find((c) => c.name() === 'config')?.help();
272
+ }
273
+ });
274
+ // ── helpers ──────────────────────────────────────────────────
275
+ function collectArray(value, previous) {
276
+ return previous.concat([value]);
277
+ }
278
+ function providerEnvVar(provider) {
279
+ const map = {
280
+ openai: 'OPENAI_API_KEY',
281
+ anthropic: 'ANTHROPIC_API_KEY',
282
+ gemini: 'GEMINI_API_KEY',
283
+ };
284
+ return map[provider] || 'API_KEY';
285
+ }
286
+ function printHelp() {
287
+ console.log(chalk_1.default.dim(' Type your message and press Enter. Special commands:'));
288
+ console.log(chalk_1.default.dim(' /exit or /quit — end session'));
289
+ console.log(chalk_1.default.dim(' /context — inject project context'));
290
+ console.log(chalk_1.default.dim(' /save — save session'));
291
+ console.log(chalk_1.default.dim(' /turns — show conversation history'));
292
+ console.log();
293
+ }
294
+ async function interactiveLoop(session, sessionManager) {
295
+ const rl = readline_1.default.createInterface({
296
+ input: process.stdin,
297
+ output: process.stdout,
298
+ terminal: true,
299
+ });
300
+ const prompt = () => new Promise((resolve) => {
301
+ rl.question(chalk_1.default.cyan(' You: '), resolve);
302
+ });
303
+ while (true) {
304
+ let input;
305
+ try {
306
+ input = (await prompt()).trim();
307
+ }
308
+ catch {
309
+ break;
310
+ }
311
+ if (!input)
312
+ continue;
313
+ // Special commands
314
+ if (input === '/exit' || input === '/quit') {
315
+ sessionManager.persistSession(session);
316
+ console.log(chalk_1.default.green(' Session saved. Goodbye!\n'));
317
+ rl.close();
318
+ process.exit(0);
319
+ }
320
+ if (input === '/save') {
321
+ sessionManager.persistSession(session);
322
+ console.log(chalk_1.default.green(' ✓ Session saved.\n'));
323
+ continue;
324
+ }
325
+ if (input === '/turns') {
326
+ const turns = session.getTurns();
327
+ console.log(chalk_1.default.bold(`\n ${turns.length} turn(s) in this session:\n`));
328
+ turns.forEach((t, i) => {
329
+ console.log(chalk_1.default.dim(` [${i + 1}] ${new Date(t.timestamp).toLocaleTimeString()} — ${t.userMessage.slice(0, 60)}…`));
330
+ });
331
+ console.log();
332
+ continue;
333
+ }
334
+ if (input === '/context') {
335
+ const spinner = (0, ora_1.default)('Gathering project context…').start();
336
+ const ctx = (0, file_ops_1.gatherProjectContext)(process.cwd());
337
+ await session.chat(`Project context:\n\n${ctx}`, { stream: false });
338
+ spinner.succeed('Context injected');
339
+ sessionManager.persistSession(session);
340
+ continue;
341
+ }
342
+ // Regular chat message
343
+ process.stdout.write(chalk_1.default.green('\n Assistant: '));
344
+ try {
345
+ await session.chat(input, {
346
+ stream: true,
347
+ onChunk: (chunk) => process.stdout.write(chunk),
348
+ });
349
+ process.stdout.write('\n\n');
350
+ sessionManager.persistSession(session);
351
+ }
352
+ catch (err) {
353
+ const msg = err instanceof Error ? err.message : String(err);
354
+ console.error(chalk_1.default.red(`\n ✗ Error: ${msg}\n`));
355
+ logger_1.logger.debug(String(err));
356
+ }
357
+ }
358
+ rl.close();
359
+ }
360
+ // ── cluster-debug command ─────────────────────────────────────────────────────
361
+ program
362
+ .command('cluster-debug')
363
+ .description('Monitor cluster services and auto-debug failures with AI assistance')
364
+ .option('-c, --config <file>', 'Path to cluster rules YAML/JSON config file')
365
+ .option('-s, --service <spec>', 'Service to monitor: name:type:target (can repeat)', collectArray, [])
366
+ .option('--all', 'Discover and monitor all deployments in the namespace', false)
367
+ .option('-n, --namespace <ns>', 'Kubernetes namespace', 'default')
368
+ .option('-m, --mode <mode>', 'Mode: auto-fix | notify-only | human-in-loop', 'human-in-loop')
369
+ .option('-p, --provider <provider>', 'AI provider (openai|anthropic|gemini)')
370
+ .option('--model <model>', 'Model name')
371
+ .option('--batch-size <n>', 'Log lines before AI analysis (default: 20)', '20')
372
+ .option('--max-wait <s>', 'Max seconds before flushing partial batch (default: 30)', '30')
373
+ .action(async (opts) => {
374
+ const config = (0, config_1.loadConfig)({ provider: opts.provider, model: opts.model });
375
+ if (!config.apiKey) {
376
+ console.error(chalk_1.default.red(`✗ No API key found for provider "${config.provider}".`));
377
+ console.error(chalk_1.default.yellow(` Set ${providerEnvVar(config.provider)} environment variable.`));
378
+ process.exit(1);
379
+ }
380
+ // Load rules file if provided
381
+ let clusterCfg;
382
+ if (opts.config) {
383
+ try {
384
+ const rulesFile = (0, rules_1.loadClusterRules)(opts.config);
385
+ clusterCfg = {
386
+ services: [],
387
+ provider: config.provider,
388
+ model: config.model,
389
+ apiKey: config.apiKey,
390
+ rules: rulesFile.rules,
391
+ notifications: rulesFile.notifications,
392
+ mode: opts.mode || 'human-in-loop',
393
+ monitorAll: opts.all,
394
+ namespace: opts.namespace,
395
+ batchSize: parseInt(opts.batchSize, 10),
396
+ maxWaitSeconds: parseInt(opts.maxWait, 10),
397
+ };
398
+ }
399
+ catch (err) {
400
+ console.error(chalk_1.default.red(`✗ Failed to load rules file: ${err instanceof Error ? err.message : err}`));
401
+ process.exit(1);
402
+ }
403
+ }
404
+ else {
405
+ clusterCfg = {
406
+ services: [],
407
+ provider: config.provider,
408
+ model: config.model,
409
+ apiKey: config.apiKey,
410
+ rules: rules_1.DEFAULT_CLUSTER_RULES,
411
+ mode: opts.mode || 'human-in-loop',
412
+ monitorAll: opts.all,
413
+ namespace: opts.namespace,
414
+ batchSize: parseInt(opts.batchSize, 10),
415
+ maxWaitSeconds: parseInt(opts.maxWait, 10),
416
+ };
417
+ }
418
+ // Parse --service name:type:target specs
419
+ for (const spec of opts.service) {
420
+ const parts = spec.split(':');
421
+ if (parts.length < 3) {
422
+ console.error(chalk_1.default.red(`✗ Invalid --service spec "${spec}". Expected name:type:target`));
423
+ process.exit(1);
424
+ }
425
+ const [name, type, ...targetParts] = parts;
426
+ const target = targetParts.join(':');
427
+ let svc;
428
+ if (type === 'kubernetes') {
429
+ svc = { name, connection: { type: 'kubernetes', selector: target, namespace: opts.namespace } };
430
+ }
431
+ else if (type === 'log-file') {
432
+ svc = { name, connection: { type: 'log-file', filePath: target } };
433
+ }
434
+ else if (type === 'docker') {
435
+ svc = { name, connection: { type: 'docker', container: target } };
436
+ }
437
+ else if (type === 'process') {
438
+ svc = { name, connection: { type: 'process', command: target } };
439
+ }
440
+ else if (type === 'http') {
441
+ svc = { name, connection: { type: 'http-poll', url: target } };
442
+ }
443
+ else {
444
+ console.error(chalk_1.default.red(`✗ Unknown service type "${type}". Use: kubernetes|log-file|docker|process|http`));
445
+ process.exit(1);
446
+ }
447
+ clusterCfg.services.push(svc);
448
+ }
449
+ if (!clusterCfg.services.length && !clusterCfg.monitorAll) {
450
+ console.error(chalk_1.default.red('✗ No services specified. Use --service or --all.'));
451
+ console.error(chalk_1.default.yellow(' Example: ai-agent cluster-debug --service api:kubernetes:deployment/api'));
452
+ process.exit(1);
453
+ }
454
+ // Build session
455
+ const sessionsDir = config.sessionDir || path_1.default.join(os_1.default.homedir(), '.polyai-agent', 'sessions');
456
+ const sessionManager = new session_manager_1.SessionManager(sessionsDir);
457
+ const speckit = speckits_1.SPECKITS['cluster-debugger'];
458
+ const session = sessionManager.createSession({
459
+ name: `cluster-debug-${Date.now()}`,
460
+ provider: config.provider,
461
+ model: config.model || '',
462
+ speckit: 'cluster-debugger',
463
+ systemPrompt: speckit?.systemPrompt,
464
+ guardrails: [],
465
+ projectDir: process.cwd(),
466
+ }, config.apiKey);
467
+ const monitor = new cluster_monitor_1.ClusterMonitor(clusterCfg, session);
468
+ monitor.on('failure', (f) => {
469
+ logger_1.logger.debug(`Failure detected in ${f.serviceName}: ${f.errorSummary}`);
470
+ });
471
+ monitor.on('analysis', (f) => {
472
+ logger_1.logger.debug(`Analysis complete for ${f.serviceName}`);
473
+ });
474
+ monitor.on('fix-applied', (f, result) => {
475
+ if (result.success) {
476
+ console.log(chalk_1.default.green(`\n✅ Fix applied for ${f.serviceName}: ${result.output || result.action}`));
477
+ }
478
+ });
479
+ console.log(chalk_1.default.cyan(`\n🔍 Cluster debug monitor starting in ${chalk_1.default.bold(clusterCfg.mode)} mode…`));
480
+ if (clusterCfg.services.length) {
481
+ console.log(chalk_1.default.dim(` Services: ${clusterCfg.services.map((s) => s.name).join(', ')}`));
482
+ }
483
+ if (clusterCfg.monitorAll) {
484
+ console.log(chalk_1.default.dim(` Namespace: ${clusterCfg.namespace}`));
485
+ }
486
+ console.log(chalk_1.default.dim(' Press Ctrl+C to stop.\n'));
487
+ await monitor.start();
488
+ process.on('SIGINT', () => {
489
+ monitor.stop();
490
+ process.exit(0);
491
+ });
492
+ process.on('SIGTERM', () => {
493
+ monitor.stop();
494
+ process.exit(0);
495
+ });
496
+ // Keep alive
497
+ await new Promise(() => { });
498
+ });
499
+ program.parse(process.argv);
500
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { EventEmitter } from 'events';
2
+ import { Session } from '../session/session';
3
+ import { ClusterMonitorConfig, DetectedFailure, HITLResponse } from './types';
4
+ /**
5
+ * Monitors one or more services in a cluster (Kubernetes, Docker, process,
6
+ * log files or HTTP endpoints), detects failures, and either:
7
+ *
8
+ * - **auto-fix**: applies a matching remediation rule without human input,
9
+ * - **notify-only**: sends a notification with the AI analysis, or
10
+ * - **human-in-loop**: sends a HITL notification and waits for approval.
11
+ *
12
+ * Rules define what the agent *can* auto-fix and what it must *avoid*.
13
+ */
14
+ export declare class ClusterMonitor extends EventEmitter {
15
+ private config;
16
+ private session;
17
+ private remediation;
18
+ private notificationManager?;
19
+ private errorKeywords;
20
+ private watchers;
21
+ private failures;
22
+ private analyzing;
23
+ private consecutiveAutoFixes;
24
+ constructor(config: ClusterMonitorConfig, session: Session);
25
+ /**
26
+ * Start monitoring all configured (and, optionally, auto-discovered) services.
27
+ */
28
+ start(): Promise<void>;
29
+ /** Stop all watchers and release resources. */
30
+ stop(): void;
31
+ /** Return all tracked failures (read-only snapshot). */
32
+ getFailures(): DetectedFailure[];
33
+ /**
34
+ * Process an approve/reject/debug-more decision from an external system
35
+ * (e.g. Slack interactivity, a webhook endpoint).
36
+ */
37
+ processHITLResponse(response: HITLResponse): Promise<void>;
38
+ private attachWatcher;
39
+ private handleLine;
40
+ private flush;
41
+ private dispatchFailure;
42
+ private autoFix;
43
+ private requestApproval;
44
+ private notify;
45
+ private cliPrompt;
46
+ private cliDebugSession;
47
+ private buildErrorSummary;
48
+ }
49
+ //# sourceMappingURL=cluster-monitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cluster-monitor.d.ts","sourceRoot":"","sources":["../../src/cluster-monitor/cluster-monitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAItC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAM7C,OAAO,EACL,oBAAoB,EAEpB,eAAe,EAGf,YAAY,EAGb,MAAM,SAAS,CAAC;AAyBjB;;;;;;;;;GASG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,mBAAmB,CAAC,CAAsB;IAClD,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,QAAQ,CAAsC;IACtD,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,oBAAoB,CAAK;gBAErB,MAAM,EAAE,oBAAoB,EAAE,OAAO,EAAE,OAAO;IAe1D;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmC5B,+CAA+C;IAC/C,IAAI,IAAI,IAAI;IASZ,wDAAwD;IACxD,WAAW,IAAI,eAAe,EAAE;IAMhC;;;OAGG;IACG,mBAAmB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA0ChE,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,UAAU;YAaJ,KAAK;YA8CL,eAAe;YAgCf,OAAO;YA+BP,eAAe;YAkBf,MAAM;YAuBN,SAAS;YA0CT,eAAe;IAuB7B,OAAO,CAAC,iBAAiB;CAO1B"}