@lisa.ai/agent 1.1.7 → 1.1.9

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.
@@ -46,9 +46,9 @@ async function coverageCommand(command, modelProvider, attempt = 1, maxRetries =
46
46
  let executionPassed = true;
47
47
  try {
48
48
  // 1. Run the test command which should ideally produce coverage-summary.json
49
- // Use 'inherit' so that long-running test commands (like Angular/Karma) print their progress
50
- // in real-time directly to the user's terminal instead of appearing frozen.
51
- (0, child_process_1.execSync)(command, { encoding: 'utf-8', stdio: 'inherit' });
49
+ // Use 'pipe' to strictly capture output and prevent generic test suite spam in the terminal.
50
+ console.log(`[Lisa.ai Coverage] Booting testing framework silently in the background. This may take a moment...`);
51
+ (0, child_process_1.execSync)(command, { encoding: 'utf-8', stdio: 'pipe' });
52
52
  console.log(`\n✅ [Lisa.ai Coverage] Tests passed successfully on attempt ${attempt}.`);
53
53
  }
54
54
  catch (error) {
@@ -71,7 +71,7 @@ async function healCommand(command, modelProvider, attempt = 1, healedFilePath =
71
71
  catch (error) {
72
72
  console.log(`\n❌ [Lisa.ai Failure] Global Command failed.`);
73
73
  const errorLog = (error.stderr || '') + '\n' + (error.stdout || '') + '\n' + (error.message || '');
74
- console.error(errorLog);
74
+ // console.error(errorLog); // Suppressed to keep "Pure Magic" CLI clean. Error is parsed abstractly.
75
75
  console.log(`\n[Lisa.ai Auto-Heal] Analyzing errors...`);
76
76
  const filePath = (0, parser_1.extractFilePath)(errorLog, skipLedger, process.cwd());
77
77
  if (!filePath) {
package/dist/index.js CHANGED
@@ -5,6 +5,13 @@ const commander_1 = require("commander");
5
5
  const config_service_1 = require("./services/config.service");
6
6
  const heal_1 = require("./commands/heal");
7
7
  const coverage_1 = require("./commands/coverage");
8
+ function printBanner() {
9
+ const pkg = require('../package.json');
10
+ console.log(`\n======================================================`);
11
+ console.log(`✨ Lisa.ai Agent v${pkg.version} Running... `);
12
+ console.log(` Where pure magic happens! 🪄`);
13
+ console.log(`======================================================\n`);
14
+ }
8
15
  const program = new commander_1.Command();
9
16
  program
10
17
  .name('lisa-agent')
@@ -17,6 +24,7 @@ program
17
24
  .option('-m, --model <provider>', 'LLM provider to use (gemini, claude, openai)', 'gemini')
18
25
  .option('-p, --project-id <id>', 'Control Plane Project ID to fetch dynamic config')
19
26
  .action(async (options) => {
27
+ printBanner();
20
28
  let maxRetries = 3;
21
29
  let model = options.model;
22
30
  let apiKey = undefined;
@@ -44,6 +52,7 @@ program
44
52
  .option('-m, --model <provider>', 'LLM provider to use (gemini, claude, openai)', 'gemini')
45
53
  .option('-p, --project-id <id>', 'Control Plane Project ID to fetch dynamic config')
46
54
  .action(async (options) => {
55
+ printBanner();
47
56
  let maxRetries = 3;
48
57
  let model = options.model;
49
58
  let apiKey = undefined;
@@ -47,8 +47,11 @@ function extractFilePath(errorLog, skipFiles = [], searchDir = process.cwd()) {
47
47
  let match;
48
48
  while ((match = exactErrorRegex.exec(cleanLog)) !== null) {
49
49
  const foundPath = match[1];
50
- if (foundPath && !normalizedSkips.includes(path.resolve(foundPath))) {
51
- return foundPath;
50
+ if (foundPath) {
51
+ const absoluteFoundPath = path.resolve(searchDir, foundPath);
52
+ if (!normalizedSkips.includes(absoluteFoundPath) && fs.existsSync(absoluteFoundPath)) {
53
+ return foundPath;
54
+ }
52
55
  }
53
56
  }
54
57
  // 2. Second Pass (Fallback): Find anything that looks like a source file
@@ -56,8 +59,11 @@ function extractFilePath(errorLog, skipFiles = [], searchDir = process.cwd()) {
56
59
  let fallbackMatch;
57
60
  while ((fallbackMatch = fallbackRegex.exec(cleanLog)) !== null) {
58
61
  const foundPath = fallbackMatch[1];
59
- if (foundPath && !normalizedSkips.includes(path.resolve(foundPath))) {
60
- return foundPath;
62
+ if (foundPath) {
63
+ const absoluteFoundPath = path.resolve(searchDir, foundPath);
64
+ if (!normalizedSkips.includes(absoluteFoundPath) && fs.existsSync(absoluteFoundPath)) {
65
+ return foundPath;
66
+ }
61
67
  }
62
68
  }
63
69
  // 3. Third Pass (Abstract Testing Fallback): Match exported PascalCase symbols
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lisa.ai/agent",
3
- "version": "1.1.7",
3
+ "version": "1.1.9",
4
4
  "description": "Lisa.ai Autonomous CI/CD Worker Agent",
5
5
  "main": "dist/index.js",
6
6
  "bin": {