activo 0.3.3 → 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli/index.js CHANGED
@@ -2,14 +2,17 @@
2
2
  import { Command } from "commander";
3
3
  import { render } from "ink";
4
4
  import React from "react";
5
+ import { createRequire } from "module";
5
6
  import { App } from "../ui/App.js";
6
7
  import { showBanner } from "./banner.js";
7
8
  import { loadConfig } from "../core/config.js";
9
+ const require = createRequire(import.meta.url);
10
+ const pkg = require("../../package.json");
8
11
  const program = new Command();
9
12
  program
10
13
  .name("activo")
11
14
  .description("AI-powered code quality analyzer with Tool Calling and MCP support")
12
- .version("0.2.0", "-v, --version", "Display version number");
15
+ .version(pkg.version, "-v, --version", "Display version number");
13
16
  program
14
17
  .option("-p, --print", "Non-interactive mode (print and exit)")
15
18
  .option("--headless", "Headless mode for CI/CD")
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,oEAAoE,CAAC;KACjF,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,wBAAwB,CAAC,CAAC;AAE/D,OAAO;KACJ,MAAM,CAAC,aAAa,EAAE,uCAAuC,CAAC;KAC9D,MAAM,CAAC,YAAY,EAAE,yBAAyB,CAAC;KAC/C,MAAM,CAAC,UAAU,EAAE,0BAA0B,CAAC;KAC9C,MAAM,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;KACjD,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;KACtC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;IAChC,oBAAoB;IACpB,UAAU,EAAE,CAAC;IAEb,cAAc;IACd,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAE5B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IACtC,CAAC;IAED,sBAAsB;IACtB,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACtD,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClC,OAAO;IACT,CAAC;IAED,uBAAuB;IACvB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAC9B,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE;QACvB,aAAa,EAAE,MAAM;QACrB,MAAM;QACN,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CACH,CAAC;IAEF,MAAM,aAAa,EAAE,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAE1C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,oEAAoE,CAAC;KACjF,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,wBAAwB,CAAC,CAAC;AAEnE,OAAO;KACJ,MAAM,CAAC,aAAa,EAAE,uCAAuC,CAAC;KAC9D,MAAM,CAAC,YAAY,EAAE,yBAAyB,CAAC;KAC/C,MAAM,CAAC,UAAU,EAAE,0BAA0B,CAAC;KAC9C,MAAM,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;KACjD,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;KACtC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;IAChC,oBAAoB;IACpB,UAAU,EAAE,CAAC;IAEb,cAAc;IACd,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAE5B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IACtC,CAAC;IAED,sBAAsB;IACtB,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACtD,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClC,OAAO;IACT,CAAC;IAED,uBAAuB;IACvB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAC9B,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE;QACvB,aAAa,EAAE,MAAM;QACrB,MAAM;QACN,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CACH,CAAC;IAEF,MAAM,aAAa,EAAE,CAAC;AACxB,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAsC,UAAU,EAAQ,MAAM,kBAAkB,CAAC;AAExF,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,aAAa,GAAG,MAAM,GAAG,OAAO,CAAC;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9B,MAAM,EAAE,UAAU,CAAC;KACpB,CAAC,CAAC;CACJ;AA+BD,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,WAAW,EAAE,EACtB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GACpC,OAAO,CAAC,WAAW,CAAC,CA+EtB;AAED,wBAAuB,oBAAoB,CACzC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,WAAW,EAAE,EACtB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,WAAW,GACxB,cAAc,CAAC,UAAU,CAAC,CAyF5B"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAsC,UAAU,EAAQ,MAAM,kBAAkB,CAAC;AAExF,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,aAAa,GAAG,MAAM,GAAG,OAAO,CAAC;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,KAAK,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9B,MAAM,EAAE,UAAU,CAAC;KACpB,CAAC,CAAC;CACJ;AA6CD,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,WAAW,EAAE,EACtB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GACpC,OAAO,CAAC,WAAW,CAAC,CA+EtB;AAED,wBAAuB,oBAAoB,CACzC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,WAAW,EAAE,EACtB,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,WAAW,GACxB,cAAc,CAAC,UAAU,CAAC,CAyF5B"}
@@ -1,32 +1,46 @@
1
1
  import { getAllTools, executeTool } from "./tools/index.js";
2
- const SYSTEM_PROMPT = `You are ACTIVO, an AI-powered code quality analyzer.
2
+ const SYSTEM_PROMPT = `You are ACTIVO, a code quality analyzer that MUST use tools.
3
3
 
4
- You help developers:
5
- 1. Analyze code quality and find issues
6
- 2. Import development standards from PDFs
7
- 3. Check code against standards
8
- 4. Navigate and understand codebases
4
+ ## CRITICAL RULES - NEVER VIOLATE
9
5
 
10
- You have access to these tools:
11
- - read_file: Read file contents
12
- - write_file: Write content to files
13
- - list_directory: List directory contents
14
- - grep_search: Search for patterns in files
15
- - glob_search: Find files by pattern
16
- - run_command: Execute shell commands
17
- - import_pdf_standards: Convert PDF to markdown rules
18
- - list_standards: List loaded standards
19
- - check_code_quality: Check code against standards
6
+ 1. **NEVER FABRICATE RESULTS**: You MUST NOT invent file names, method names, class names, or analysis results. ALL information must come from actual tool execution.
20
7
 
21
- When users ask in natural language, use the appropriate tools to help them.
22
- Examples:
23
- - "이 프로젝트 분석해줘" → Use list_directory, read_file to explore
24
- - "PDF 규칙으로 변환해줘" → Use import_pdf_standards
25
- - "코드 품질 검사해줘" → Use check_code_quality
26
- - "UserService 찾아줘" → Use grep_search or glob_search
8
+ 2. **ALWAYS CALL TOOLS FIRST**: Before providing ANY analysis, you MUST call the appropriate tool. Do NOT write fake results.
27
9
 
28
- Always explain what you're doing and provide helpful insights.
29
- Respond in the same language as the user's input.`;
10
+ 3. **NO PLANNING OR PROMISES**: Do NOT say "I will analyze", "Let me check", "작업 계획", "실행 순서", "진행 중" etc. Just call the tool immediately.
11
+
12
+ 4. **ONLY REPORT ACTUAL TOOL OUTPUT**: After a tool returns results, summarize ONLY what the tool actually returned. Never add fictional examples.
13
+
14
+ ## Available Tools
15
+
16
+ - analyze_all: 디렉토리 전체 분석 (권장)
17
+ - java_analyze, java_complexity, spring_check: Java 분석
18
+ - sql_check, mybatis_check: SQL/MyBatis 분석
19
+ - ast_analyze, react_check, vue_check, jquery_check: JS/TS 분석
20
+ - css_check, html_check: CSS/HTML 분석
21
+ - dependency_check, openapi_check, python_check: 기타
22
+ - read_file, list_directory, grep_search, glob_search: 파일 작업
23
+
24
+ ## Correct Behavior
25
+
26
+ User: "src/**/*.java 분석해줘"
27
+ → IMMEDIATELY call: analyze_all(path="src", include=["java"])
28
+ → Then summarize the ACTUAL results returned by the tool
29
+
30
+ ## WRONG Behavior (NEVER DO THIS)
31
+
32
+ ❌ Writing fake file names like "OrderService.java", "UserController.java"
33
+ ❌ Making up complexity scores like "복잡도: 15"
34
+ ❌ Inventing issues that weren't found by tools
35
+ ❌ Saying "실행 결과:" without actually executing tools
36
+ ❌ Creating tables with fictional data
37
+
38
+ ## Response Format
39
+
40
+ 1. Call the appropriate tool(s)
41
+ 2. Wait for actual results
42
+ 3. Summarize ONLY what the tool returned
43
+ 4. Use Korean if user speaks Korean`;
30
44
  export async function processMessage(userMessage, history, client, config, onEvent) {
31
45
  const tools = getAllTools();
32
46
  const toolDefinitions = tools.map((t) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "activo",
3
- "version": "0.3.3",
3
+ "version": "0.3.5",
4
4
  "description": "AI-powered code quality analyzer with React Ink TUI, Tool Calling, and MCP support",
5
5
  "repository": {
6
6
  "type": "git",
package/src/cli/index.ts CHANGED
@@ -3,16 +3,20 @@
3
3
  import { Command } from "commander";
4
4
  import { render } from "ink";
5
5
  import React from "react";
6
+ import { createRequire } from "module";
6
7
  import { App } from "../ui/App.js";
7
8
  import { showBanner } from "./banner.js";
8
9
  import { loadConfig } from "../core/config.js";
9
10
 
11
+ const require = createRequire(import.meta.url);
12
+ const pkg = require("../../package.json");
13
+
10
14
  const program = new Command();
11
15
 
12
16
  program
13
17
  .name("activo")
14
18
  .description("AI-powered code quality analyzer with Tool Calling and MCP support")
15
- .version("0.2.0", "-v, --version", "Display version number");
19
+ .version(pkg.version, "-v, --version", "Display version number");
16
20
 
17
21
  program
18
22
  .option("-p, --print", "Non-interactive mode (print and exit)")
package/src/core/agent.ts CHANGED
@@ -21,34 +21,48 @@ export interface AgentResult {
21
21
  }>;
22
22
  }
23
23
 
24
- const SYSTEM_PROMPT = `You are ACTIVO, an AI-powered code quality analyzer.
25
-
26
- You help developers:
27
- 1. Analyze code quality and find issues
28
- 2. Import development standards from PDFs
29
- 3. Check code against standards
30
- 4. Navigate and understand codebases
31
-
32
- You have access to these tools:
33
- - read_file: Read file contents
34
- - write_file: Write content to files
35
- - list_directory: List directory contents
36
- - grep_search: Search for patterns in files
37
- - glob_search: Find files by pattern
38
- - run_command: Execute shell commands
39
- - import_pdf_standards: Convert PDF to markdown rules
40
- - list_standards: List loaded standards
41
- - check_code_quality: Check code against standards
42
-
43
- When users ask in natural language, use the appropriate tools to help them.
44
- Examples:
45
- - "이 프로젝트 분석해줘" → Use list_directory, read_file to explore
46
- - "PDF 규칙으로 변환해줘" → Use import_pdf_standards
47
- - "코드 품질 검사해줘" → Use check_code_quality
48
- - "UserService 찾아줘" → Use grep_search or glob_search
49
-
50
- Always explain what you're doing and provide helpful insights.
51
- Respond in the same language as the user's input.`;
24
+ const SYSTEM_PROMPT = `You are ACTIVO, a code quality analyzer that MUST use tools.
25
+
26
+ ## CRITICAL RULES - NEVER VIOLATE
27
+
28
+ 1. **NEVER FABRICATE RESULTS**: You MUST NOT invent file names, method names, class names, or analysis results. ALL information must come from actual tool execution.
29
+
30
+ 2. **ALWAYS CALL TOOLS FIRST**: Before providing ANY analysis, you MUST call the appropriate tool. Do NOT write fake results.
31
+
32
+ 3. **NO PLANNING OR PROMISES**: Do NOT say "I will analyze", "Let me check", "작업 계획", "실행 순서", "진행 중" etc. Just call the tool immediately.
33
+
34
+ 4. **ONLY REPORT ACTUAL TOOL OUTPUT**: After a tool returns results, summarize ONLY what the tool actually returned. Never add fictional examples.
35
+
36
+ ## Available Tools
37
+
38
+ - analyze_all: 디렉토리 전체 분석 (권장)
39
+ - java_analyze, java_complexity, spring_check: Java 분석
40
+ - sql_check, mybatis_check: SQL/MyBatis 분석
41
+ - ast_analyze, react_check, vue_check, jquery_check: JS/TS 분석
42
+ - css_check, html_check: CSS/HTML 분석
43
+ - dependency_check, openapi_check, python_check: 기타
44
+ - read_file, list_directory, grep_search, glob_search: 파일 작업
45
+
46
+ ## Correct Behavior
47
+
48
+ User: "src/**/*.java 분석해줘"
49
+ → IMMEDIATELY call: analyze_all(path="src", include=["java"])
50
+ Then summarize the ACTUAL results returned by the tool
51
+
52
+ ## WRONG Behavior (NEVER DO THIS)
53
+
54
+ ❌ Writing fake file names like "OrderService.java", "UserController.java"
55
+ ❌ Making up complexity scores like "복잡도: 15"
56
+ ❌ Inventing issues that weren't found by tools
57
+ ❌ Saying "실행 결과:" without actually executing tools
58
+ ❌ Creating tables with fictional data
59
+
60
+ ## Response Format
61
+
62
+ 1. Call the appropriate tool(s)
63
+ 2. Wait for actual results
64
+ 3. Summarize ONLY what the tool returned
65
+ 4. Use Korean if user speaks Korean`;
52
66
 
53
67
  export async function processMessage(
54
68
  userMessage: string,