activo 0.3.5 → 0.3.7
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/headless.d.ts.map +1 -1
- package/dist/cli/headless.js +19 -1
- package/dist/cli/headless.js.map +1 -1
- package/dist/core/agent.d.ts +2 -2
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +54 -38
- package/dist/core/agent.js.map +1 -1
- package/dist/core/conversation.d.ts +22 -0
- package/dist/core/conversation.d.ts.map +1 -0
- package/dist/core/conversation.js +191 -0
- package/dist/core/conversation.js.map +1 -0
- package/dist/core/tools/standards.d.ts +1 -0
- package/dist/core/tools/standards.d.ts.map +1 -1
- package/dist/core/tools/standards.js +211 -33
- package/dist/core/tools/standards.js.map +1 -1
- package/dist/ui/App.d.ts.map +1 -1
- package/dist/ui/App.js +54 -2
- package/dist/ui/App.js.map +1 -1
- package/package.json +2 -1
- package/src/cli/headless.ts +27 -1
- package/src/core/agent.ts +58 -38
- package/src/core/conversation.ts +235 -0
- package/src/core/tools/standards.ts +232 -33
- package/src/ui/App.tsx +62 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headless.d.ts","sourceRoot":"","sources":["../../src/cli/headless.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"headless.d.ts","sourceRoot":"","sources":["../../src/cli/headless.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAS3C,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmD3F"}
|
package/dist/cli/headless.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { OllamaClient } from "../core/llm/ollama.js";
|
|
2
2
|
import { processMessage } from "../core/agent.js";
|
|
3
3
|
import chalk from "chalk";
|
|
4
|
+
import { createSession, saveSession, getSessionContext, cleanOldSessions, } from "../core/conversation.js";
|
|
4
5
|
export async function runHeadless(prompt, config) {
|
|
5
6
|
if (!prompt) {
|
|
6
7
|
console.error(chalk.red("Error: Prompt is required in headless mode"));
|
|
@@ -15,6 +16,17 @@ export async function runHeadless(prompt, config) {
|
|
|
15
16
|
console.error(chalk.yellow(`Make sure Ollama is running at ${config.ollama.baseUrl}`));
|
|
16
17
|
process.exit(1);
|
|
17
18
|
}
|
|
19
|
+
// Load previous context
|
|
20
|
+
let contextSummary = "";
|
|
21
|
+
try {
|
|
22
|
+
const { summary } = await getSessionContext(client, 5);
|
|
23
|
+
contextSummary = summary;
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
// Ignore context loading errors
|
|
27
|
+
}
|
|
28
|
+
// Create new session
|
|
29
|
+
const session = createSession();
|
|
18
30
|
try {
|
|
19
31
|
const result = await processMessage(prompt, [], client, config, (event) => {
|
|
20
32
|
if (event.type === "tool_use") {
|
|
@@ -23,8 +35,14 @@ export async function runHeadless(prompt, config) {
|
|
|
23
35
|
else if (event.type === "thinking") {
|
|
24
36
|
// Skip thinking in headless mode
|
|
25
37
|
}
|
|
26
|
-
});
|
|
38
|
+
}, contextSummary);
|
|
27
39
|
console.log(result.content);
|
|
40
|
+
// Save conversation to session
|
|
41
|
+
session.messages.push({ role: "user", content: prompt });
|
|
42
|
+
session.messages.push({ role: "assistant", content: result.content });
|
|
43
|
+
saveSession(session);
|
|
44
|
+
// Clean old sessions
|
|
45
|
+
cleanOldSessions(10);
|
|
28
46
|
}
|
|
29
47
|
catch (error) {
|
|
30
48
|
console.error(chalk.red(`Error: ${error}`));
|
package/dist/cli/headless.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headless.js","sourceRoot":"","sources":["../../src/cli/headless.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"headless.js","sourceRoot":"","sources":["../../src/cli/headless.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAA0B,EAAE,MAAc;IAC1E,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE/C,mBAAmB;IACnB,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IAC/C,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,kCAAkC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACvF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,wBAAwB;IACxB,IAAI,cAAc,GAAG,EAAE,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACvD,cAAc,GAAG,OAAO,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,gCAAgC;IAClC,CAAC;IAED,qBAAqB;IACrB,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAEhC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YACxE,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACpE,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACrC,iCAAiC;YACnC,CAAC;QACH,CAAC,EAAE,cAAc,CAAC,CAAC;QAEnB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE5B,+BAA+B;QAC/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QACtE,WAAW,CAAC,OAAO,CAAC,CAAC;QAErB,qBAAqB;QACrB,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
package/dist/core/agent.d.ts
CHANGED
|
@@ -18,6 +18,6 @@ export interface AgentResult {
|
|
|
18
18
|
result: ToolResult;
|
|
19
19
|
}>;
|
|
20
20
|
}
|
|
21
|
-
export declare function processMessage(userMessage: string, history: ChatMessage[], client: OllamaClient, config: Config, onEvent?: (event: AgentEvent) => void): Promise<AgentResult>;
|
|
22
|
-
export declare function streamProcessMessage(userMessage: string, history: ChatMessage[], client: OllamaClient, config: Config, abortSignal?: AbortSignal): AsyncGenerator<AgentEvent>;
|
|
21
|
+
export declare function processMessage(userMessage: string, history: ChatMessage[], client: OllamaClient, config: Config, onEvent?: (event: AgentEvent) => void, contextSummary?: string): Promise<AgentResult>;
|
|
22
|
+
export declare function streamProcessMessage(userMessage: string, history: ChatMessage[], client: OllamaClient, config: Config, abortSignal?: AbortSignal, contextSummary?: string): AsyncGenerator<AgentEvent>;
|
|
23
23
|
//# sourceMappingURL=agent.d.ts.map
|
package/dist/core/agent.d.ts.map
CHANGED
|
@@ -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;
|
|
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;AAkED,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,EACrC,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,WAAW,CAAC,CA2EtB;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,EACzB,cAAc,CAAC,EAAE,MAAM,GACtB,cAAc,CAAC,UAAU,CAAC,CA0F5B"}
|
package/dist/core/agent.js
CHANGED
|
@@ -1,55 +1,70 @@
|
|
|
1
1
|
import { getAllTools, executeTool } from "./tools/index.js";
|
|
2
|
-
const
|
|
2
|
+
const BASE_SYSTEM_PROMPT = `You are ACTIVO, a code quality analyzer.
|
|
3
3
|
|
|
4
|
-
##
|
|
4
|
+
## ABSOLUTE RULE: NO TEXT WHEN CALLING TOOLS
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
When you call a tool, output NOTHING else. No text before, no text after. ONLY the tool call.
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
WRONG (NEVER DO THIS):
|
|
9
|
+
\`\`\`
|
|
10
|
+
실행 중... ← NO!
|
|
11
|
+
[some explanation] ← NO!
|
|
12
|
+
tool_call(...)
|
|
13
|
+
결과: ... ← NO! (you don't have results yet)
|
|
14
|
+
\`\`\`
|
|
9
15
|
|
|
10
|
-
|
|
16
|
+
CORRECT:
|
|
17
|
+
\`\`\`
|
|
18
|
+
tool_call(...)
|
|
19
|
+
\`\`\`
|
|
11
20
|
|
|
12
|
-
|
|
21
|
+
## AFTER TOOL RETURNS
|
|
13
22
|
|
|
14
|
-
|
|
23
|
+
Only AFTER you receive the actual tool result, you may write a response summarizing what the tool returned.
|
|
15
24
|
|
|
16
|
-
|
|
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: 파일 작업
|
|
25
|
+
## HALLUCINATION = FAILURE
|
|
23
26
|
|
|
24
|
-
|
|
27
|
+
If you write ANY of these WITHOUT a tool result, you have FAILED:
|
|
28
|
+
- File names (e.g., "UserService.java")
|
|
29
|
+
- Numbers (e.g., "복잡도: 15", "3개 파일")
|
|
30
|
+
- Paths (e.g., "/path/to/file.md")
|
|
31
|
+
- Status messages (e.g., "변환 완료!", "성공")
|
|
25
32
|
|
|
26
|
-
|
|
27
|
-
→ IMMEDIATELY call: analyze_all(path="src", include=["java"])
|
|
28
|
-
→ Then summarize the ACTUAL results returned by the tool
|
|
33
|
+
## Tools
|
|
29
34
|
|
|
30
|
-
|
|
35
|
+
- analyze_all: 코드 분석
|
|
36
|
+
- import_pdf_standards: PDF→마크다운 (pdfPath 필수)
|
|
37
|
+
- import_hwp_standards: HWP→마크다운 (hwpPath 필수)
|
|
38
|
+
- read_file, write_file, list_directory, grep_search, glob_search: 파일
|
|
31
39
|
|
|
32
|
-
|
|
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
|
|
40
|
+
## Example
|
|
37
41
|
|
|
38
|
-
|
|
42
|
+
User: "HWP 파일을 마크다운으로 변환해줘"
|
|
39
43
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
44
|
+
YOUR RESPONSE (no other text):
|
|
45
|
+
→ Call import_hwp_standards with hwpPath
|
|
46
|
+
|
|
47
|
+
AFTER tool returns result:
|
|
48
|
+
→ Now you can summarize the actual result`;
|
|
49
|
+
// Build system prompt with optional context
|
|
50
|
+
function buildSystemPrompt(contextSummary) {
|
|
51
|
+
if (!contextSummary) {
|
|
52
|
+
return BASE_SYSTEM_PROMPT;
|
|
53
|
+
}
|
|
54
|
+
return `${BASE_SYSTEM_PROMPT}
|
|
55
|
+
|
|
56
|
+
## 이전 대화 컨텍스트
|
|
57
|
+
|
|
58
|
+
${contextSummary}
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
위 내용은 이전 세션에서의 대화 요약입니다. 필요시 참고하세요.`;
|
|
62
|
+
}
|
|
63
|
+
export async function processMessage(userMessage, history, client, config, onEvent, contextSummary) {
|
|
45
64
|
const tools = getAllTools();
|
|
46
|
-
const
|
|
47
|
-
name: t.name,
|
|
48
|
-
description: t.description,
|
|
49
|
-
parameters: t.parameters,
|
|
50
|
-
}));
|
|
65
|
+
const systemPrompt = buildSystemPrompt(contextSummary);
|
|
51
66
|
const messages = [
|
|
52
|
-
{ role: "system", content:
|
|
67
|
+
{ role: "system", content: systemPrompt },
|
|
53
68
|
...history,
|
|
54
69
|
{ role: "user", content: userMessage },
|
|
55
70
|
];
|
|
@@ -106,10 +121,11 @@ export async function processMessage(userMessage, history, client, config, onEve
|
|
|
106
121
|
toolCalls: toolCallResults,
|
|
107
122
|
};
|
|
108
123
|
}
|
|
109
|
-
export async function* streamProcessMessage(userMessage, history, client, config, abortSignal) {
|
|
124
|
+
export async function* streamProcessMessage(userMessage, history, client, config, abortSignal, contextSummary) {
|
|
110
125
|
const tools = getAllTools();
|
|
126
|
+
const systemPrompt = buildSystemPrompt(contextSummary);
|
|
111
127
|
const messages = [
|
|
112
|
-
{ role: "system", content:
|
|
128
|
+
{ role: "system", content: systemPrompt },
|
|
113
129
|
...history,
|
|
114
130
|
{ role: "user", content: userMessage },
|
|
115
131
|
];
|
package/dist/core/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,WAAW,EAA8B,MAAM,kBAAkB,CAAC;AAqBxF,MAAM,
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ChatMessage, OllamaClient } from "./llm/ollama.js";
|
|
2
|
+
interface SessionData {
|
|
3
|
+
id: string;
|
|
4
|
+
startedAt: string;
|
|
5
|
+
updatedAt: string;
|
|
6
|
+
messages: ChatMessage[];
|
|
7
|
+
summary?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function generateSessionId(): string;
|
|
10
|
+
export declare function loadSession(sessionId: string): SessionData | null;
|
|
11
|
+
export declare function loadLatestSession(): SessionData | null;
|
|
12
|
+
export declare function saveSession(session: SessionData): void;
|
|
13
|
+
export declare function createSession(): SessionData;
|
|
14
|
+
export declare function addMessageToSession(session: SessionData, message: ChatMessage): void;
|
|
15
|
+
export declare function getSessionContext(client: OllamaClient, recentCount?: number): Promise<{
|
|
16
|
+
summary: string;
|
|
17
|
+
recentMessages: ChatMessage[];
|
|
18
|
+
}>;
|
|
19
|
+
export declare function buildContextPrompt(summary: string): string;
|
|
20
|
+
export declare function cleanOldSessions(keepCount?: number): void;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=conversation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../src/core/conversation.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAM5D,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAgBD,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AA2BD,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAWjE;AAGD,wBAAgB,iBAAiB,IAAI,WAAW,GAAG,IAAI,CAWtD;AAGD,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAItD;AAGD,wBAAgB,aAAa,IAAI,WAAW,CAO3C;AAGD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI,CAGpF;AAmDD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,YAAY,EACpB,WAAW,GAAE,MAAU,GACtB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,WAAW,EAAE,CAAA;CAAE,CAAC,CAmC7D;AAGD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAa1D;AAGD,wBAAgB,gBAAgB,CAAC,SAAS,GAAE,MAAW,GAAG,IAAI,CAmB7D"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
// Conversation storage directory
|
|
4
|
+
const CONVERSATION_DIR = ".activo/conversations";
|
|
5
|
+
// Get conversation directory path
|
|
6
|
+
function getConversationDir() {
|
|
7
|
+
return path.resolve(process.cwd(), CONVERSATION_DIR);
|
|
8
|
+
}
|
|
9
|
+
// Ensure conversation directory exists
|
|
10
|
+
function ensureConversationDir() {
|
|
11
|
+
const dir = getConversationDir();
|
|
12
|
+
if (!fs.existsSync(dir)) {
|
|
13
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
// Generate session ID
|
|
17
|
+
export function generateSessionId() {
|
|
18
|
+
return `session_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
|
|
19
|
+
}
|
|
20
|
+
// Get session file path
|
|
21
|
+
function getSessionPath(sessionId) {
|
|
22
|
+
return path.join(getConversationDir(), `${sessionId}.json`);
|
|
23
|
+
}
|
|
24
|
+
// Get latest session file
|
|
25
|
+
function getLatestSessionPath() {
|
|
26
|
+
const dir = getConversationDir();
|
|
27
|
+
if (!fs.existsSync(dir)) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
const files = fs.readdirSync(dir)
|
|
31
|
+
.filter(f => f.startsWith("session_") && f.endsWith(".json"))
|
|
32
|
+
.sort()
|
|
33
|
+
.reverse();
|
|
34
|
+
if (files.length === 0) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
return path.join(dir, files[0]);
|
|
38
|
+
}
|
|
39
|
+
// Load session data
|
|
40
|
+
export function loadSession(sessionId) {
|
|
41
|
+
const sessionPath = getSessionPath(sessionId);
|
|
42
|
+
if (!fs.existsSync(sessionPath)) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
try {
|
|
46
|
+
return JSON.parse(fs.readFileSync(sessionPath, "utf-8"));
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// Load latest session
|
|
53
|
+
export function loadLatestSession() {
|
|
54
|
+
const latestPath = getLatestSessionPath();
|
|
55
|
+
if (!latestPath) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
return JSON.parse(fs.readFileSync(latestPath, "utf-8"));
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Save session data
|
|
66
|
+
export function saveSession(session) {
|
|
67
|
+
ensureConversationDir();
|
|
68
|
+
session.updatedAt = new Date().toISOString();
|
|
69
|
+
fs.writeFileSync(getSessionPath(session.id), JSON.stringify(session, null, 2));
|
|
70
|
+
}
|
|
71
|
+
// Create new session
|
|
72
|
+
export function createSession() {
|
|
73
|
+
return {
|
|
74
|
+
id: generateSessionId(),
|
|
75
|
+
startedAt: new Date().toISOString(),
|
|
76
|
+
updatedAt: new Date().toISOString(),
|
|
77
|
+
messages: [],
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
// Add message to session
|
|
81
|
+
export function addMessageToSession(session, message) {
|
|
82
|
+
session.messages.push(message);
|
|
83
|
+
saveSession(session);
|
|
84
|
+
}
|
|
85
|
+
// Summarize old messages using LLM
|
|
86
|
+
async function summarizeMessages(messages, client) {
|
|
87
|
+
if (messages.length === 0) {
|
|
88
|
+
return "";
|
|
89
|
+
}
|
|
90
|
+
// Format messages for summarization
|
|
91
|
+
const conversationText = messages
|
|
92
|
+
.filter(m => m.role !== "system" && m.role !== "tool")
|
|
93
|
+
.map(m => {
|
|
94
|
+
if (m.role === "user") {
|
|
95
|
+
return `사용자: ${m.content}`;
|
|
96
|
+
}
|
|
97
|
+
else if (m.role === "assistant") {
|
|
98
|
+
const toolInfo = m.toolCalls?.length
|
|
99
|
+
? ` [도구 호출: ${m.toolCalls.map(t => t.name).join(", ")}]`
|
|
100
|
+
: "";
|
|
101
|
+
return `어시스턴트: ${m.content.slice(0, 200)}${m.content.length > 200 ? "..." : ""}${toolInfo}`;
|
|
102
|
+
}
|
|
103
|
+
return "";
|
|
104
|
+
})
|
|
105
|
+
.filter(s => s)
|
|
106
|
+
.join("\n");
|
|
107
|
+
const summaryPrompt = `다음 대화를 3-5개의 핵심 포인트로 요약해주세요. 한국어로 작성하고, 각 포인트는 한 줄로 작성하세요.
|
|
108
|
+
|
|
109
|
+
대화:
|
|
110
|
+
${conversationText}
|
|
111
|
+
|
|
112
|
+
요약 (핵심 포인트만):`;
|
|
113
|
+
try {
|
|
114
|
+
const response = await client.chat([
|
|
115
|
+
{ role: "user", content: summaryPrompt }
|
|
116
|
+
]);
|
|
117
|
+
return response.content.trim();
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
// Fallback: simple extraction
|
|
121
|
+
const userMessages = messages
|
|
122
|
+
.filter(m => m.role === "user")
|
|
123
|
+
.map(m => m.content.slice(0, 50))
|
|
124
|
+
.slice(-3);
|
|
125
|
+
return `이전 요청: ${userMessages.join(", ")}`;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// Get context for new session (hybrid approach)
|
|
129
|
+
export async function getSessionContext(client, recentCount = 5) {
|
|
130
|
+
const latestSession = loadLatestSession();
|
|
131
|
+
if (!latestSession || latestSession.messages.length === 0) {
|
|
132
|
+
return { summary: "", recentMessages: [] };
|
|
133
|
+
}
|
|
134
|
+
const allMessages = latestSession.messages;
|
|
135
|
+
// Filter out system messages for context
|
|
136
|
+
const contextMessages = allMessages.filter(m => m.role !== "system");
|
|
137
|
+
if (contextMessages.length <= recentCount) {
|
|
138
|
+
// Not enough messages to summarize, return all as recent
|
|
139
|
+
return {
|
|
140
|
+
summary: latestSession.summary || "",
|
|
141
|
+
recentMessages: contextMessages
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
// Split: old messages for summary, recent messages to keep
|
|
145
|
+
const oldMessages = contextMessages.slice(0, -recentCount);
|
|
146
|
+
const recentMessages = contextMessages.slice(-recentCount);
|
|
147
|
+
// Generate or use existing summary
|
|
148
|
+
let summary = latestSession.summary || "";
|
|
149
|
+
if (oldMessages.length > 0 && !summary) {
|
|
150
|
+
summary = await summarizeMessages(oldMessages, client);
|
|
151
|
+
// Save summary back to session
|
|
152
|
+
latestSession.summary = summary;
|
|
153
|
+
saveSession(latestSession);
|
|
154
|
+
}
|
|
155
|
+
return { summary, recentMessages };
|
|
156
|
+
}
|
|
157
|
+
// Build context string for system prompt
|
|
158
|
+
export function buildContextPrompt(summary) {
|
|
159
|
+
if (!summary) {
|
|
160
|
+
return "";
|
|
161
|
+
}
|
|
162
|
+
return `
|
|
163
|
+
## 이전 대화 컨텍스트
|
|
164
|
+
|
|
165
|
+
${summary}
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
위 내용은 이전 세션에서의 대화 요약입니다. 필요시 참고하세요.
|
|
169
|
+
`;
|
|
170
|
+
}
|
|
171
|
+
// Clean old sessions (keep only last N)
|
|
172
|
+
export function cleanOldSessions(keepCount = 10) {
|
|
173
|
+
const dir = getConversationDir();
|
|
174
|
+
if (!fs.existsSync(dir)) {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
const files = fs.readdirSync(dir)
|
|
178
|
+
.filter(f => f.startsWith("session_") && f.endsWith(".json"))
|
|
179
|
+
.sort()
|
|
180
|
+
.reverse();
|
|
181
|
+
// Delete old sessions beyond keepCount
|
|
182
|
+
for (let i = keepCount; i < files.length; i++) {
|
|
183
|
+
try {
|
|
184
|
+
fs.unlinkSync(path.join(dir, files[i]));
|
|
185
|
+
}
|
|
186
|
+
catch {
|
|
187
|
+
// Ignore deletion errors
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=conversation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation.js","sourceRoot":"","sources":["../../src/core/conversation.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,6 @@ import { Tool } from "./types.js";
|
|
|
2
2
|
export declare const importPdfTool: Tool;
|
|
3
3
|
export declare const listStandardsTool: Tool;
|
|
4
4
|
export declare const checkQualityTool: Tool;
|
|
5
|
+
export declare const importHwpTool: Tool;
|
|
5
6
|
export declare const standardsTools: Tool[];
|
|
6
7
|
//# sourceMappingURL=standards.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards.d.ts","sourceRoot":"","sources":["../../../src/core/tools/standards.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"standards.d.ts","sourceRoot":"","sources":["../../../src/core/tools/standards.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAc,MAAM,YAAY,CAAC;AAmC9C,eAAO,MAAM,aAAa,EAAE,IAwH3B,CAAC;AAGF,eAAO,MAAM,iBAAiB,EAAE,IA2C/B,CAAC;AAGF,eAAO,MAAM,gBAAgB,EAAE,IA0D9B,CAAC;AA+CF,eAAO,MAAM,aAAa,EAAE,IA2H3B,CAAC;AAGF,eAAO,MAAM,cAAc,EAAE,IAAI,EAKhC,CAAC"}
|