hanseol-dev 5.0.1-dev.2 → 5.0.1-dev.3
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.js +11 -5
- package/dist/cli.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.js +1 -1
- package/dist/pipe/index.d.ts +2 -0
- package/dist/pipe/index.d.ts.map +1 -0
- package/dist/pipe/index.js +2 -0
- package/dist/pipe/index.js.map +1 -0
- package/dist/pipe/pipe-runner.d.ts +15 -0
- package/dist/pipe/pipe-runner.d.ts.map +1 -0
- package/dist/pipe/pipe-runner.js +186 -0
- package/dist/pipe/pipe-runner.js.map +1 -0
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -10,7 +10,7 @@ import { DASHBOARD_URL } from './constants.js';
|
|
|
10
10
|
import { ensureAuthenticated, syncModelsFromDashboard } from './core/auth/auth-gate.js';
|
|
11
11
|
import { PlanExecuteApp } from './ui/components/PlanExecuteApp.js';
|
|
12
12
|
import { setupLogging, logger, setErrorReportCallback } from './utils/logger.js';
|
|
13
|
-
import {
|
|
13
|
+
import { runPipeMode } from './pipe/index.js';
|
|
14
14
|
import { initializeOptionalTools } from './tools/registry.js';
|
|
15
15
|
import { sessionManager } from './core/session/session-manager.js';
|
|
16
16
|
import { reportError } from './core/telemetry/error-reporter.js';
|
|
@@ -30,13 +30,19 @@ program
|
|
|
30
30
|
.version(packageJson.version)
|
|
31
31
|
.helpOption(false);
|
|
32
32
|
program
|
|
33
|
+
.argument('[prompt]', 'Pipe 모드(-p)에서 실행할 명령')
|
|
34
|
+
.option('-p, --pipe', 'Pipe 모드: UI 없이 명령 처리 후 결과만 출력')
|
|
35
|
+
.option('-s, --specific', 'Pipe 모드 상세 출력 (-p와 함께 사용)')
|
|
33
36
|
.option('--verbose', 'Enable verbose logging')
|
|
34
37
|
.option('--debug', 'Enable debug logging')
|
|
35
38
|
.option('--llm-log', 'Enable LLM logging')
|
|
36
|
-
.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
39
|
+
.action(async (prompt, options) => {
|
|
40
|
+
if (options.pipe) {
|
|
41
|
+
if (!prompt) {
|
|
42
|
+
console.error('Error: -p 옵션에는 프롬프트가 필요합니다. 예: hanseol -p "파일 목록 보여줘"');
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
await runPipeMode(prompt, options.specific ?? false);
|
|
40
46
|
return;
|
|
41
47
|
}
|
|
42
48
|
let cleanup = null;
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAUA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAGjE,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAGtE,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;IACxC,WAAW,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AACpE,CAAC,CAAC,CAAC;AACH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;IAC1C,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AACtE,CAAC,CAAC,CAAC;AAGH,sBAAsB,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC;AAE5E,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAK9B,OAAO;KACJ,IAAI,CAAC,aAAa,CAAC;KACnB,WAAW,CAAC,uBAAuB,CAAC;KACpC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;KAC5B,UAAU,CAAC,KAAK,CAAC,CAAC;AAKrB,OAAO;KACJ,MAAM,CAAC,WAAW,EAAE,wBAAwB,CAAC;KAC7C,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC;KACzC,MAAM,CAAC,WAAW,EAAE,oBAAoB,CAAC;KACzC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export declare const PROJECTS_DIR: string;
|
|
|
7
7
|
export declare const CREDENTIALS_FILE_PATH: string;
|
|
8
8
|
export declare const APP_NAME = "hanseol-dev";
|
|
9
9
|
export declare const SERVICE_ID = "hanseol";
|
|
10
|
-
export declare const APP_VERSION = "5.0.1-dev.
|
|
10
|
+
export declare const APP_VERSION = "5.0.1-dev.3";
|
|
11
11
|
export declare const DASHBOARD_URL = "https://52.78.246.50.nip.io";
|
|
12
12
|
export declare const ONCE_URL = "https://52.78.246.50.nip.io:5090";
|
|
13
13
|
export declare const FREE_URL = "https://52.78.246.50.nip.io:6090";
|
package/dist/constants.js
CHANGED
|
@@ -9,7 +9,7 @@ export const PROJECTS_DIR = path.join(LOCAL_HOME_DIR, 'projects');
|
|
|
9
9
|
export const CREDENTIALS_FILE_PATH = path.join(LOCAL_HOME_DIR, 'credentials.json');
|
|
10
10
|
export const APP_NAME = 'hanseol-dev';
|
|
11
11
|
export const SERVICE_ID = 'hanseol';
|
|
12
|
-
export const APP_VERSION = '5.0.1-dev.
|
|
12
|
+
export const APP_VERSION = '5.0.1-dev.3';
|
|
13
13
|
export const DASHBOARD_URL = 'https://52.78.246.50.nip.io';
|
|
14
14
|
export const ONCE_URL = 'https://52.78.246.50.nip.io:5090';
|
|
15
15
|
export const FREE_URL = 'https://52.78.246.50.nip.io:6090';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pipe/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pipe/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare class PipeRunner {
|
|
2
|
+
private specific;
|
|
3
|
+
private llmClient;
|
|
4
|
+
private planExecutor;
|
|
5
|
+
private lastResponse;
|
|
6
|
+
private todos;
|
|
7
|
+
private prompt;
|
|
8
|
+
constructor(specific: boolean);
|
|
9
|
+
run(prompt: string): Promise<void>;
|
|
10
|
+
private createCallbacks;
|
|
11
|
+
private handleAskUser;
|
|
12
|
+
private summarizeToolArgs;
|
|
13
|
+
}
|
|
14
|
+
export declare function runPipeMode(prompt: string, specific: boolean): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=pipe-runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipe-runner.d.ts","sourceRoot":"","sources":["../../src/pipe/pipe-runner.ts"],"names":[],"mappings":"AAyBA,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,MAAM,CAAc;gBAEhB,QAAQ,EAAE,OAAO;IAKvB,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyCxC,OAAO,CAAC,eAAe;YA6FT,aAAa;IAqD3B,OAAO,CAAC,iBAAiB;CAU1B;AAKD,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAGlF"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { LLMClient } from '../core/llm/llm-client.js';
|
|
3
|
+
import { DASHBOARD_URL } from '../constants.js';
|
|
4
|
+
import { ensureAuthenticated, syncModelsFromDashboard } from '../core/auth/auth-gate.js';
|
|
5
|
+
import { configManager } from '../core/config/config-manager.js';
|
|
6
|
+
import { PlanExecutor } from '../orchestration/plan-executor.js';
|
|
7
|
+
function log(msg) {
|
|
8
|
+
process.stderr.write(msg + '\n');
|
|
9
|
+
}
|
|
10
|
+
export class PipeRunner {
|
|
11
|
+
specific;
|
|
12
|
+
llmClient = null;
|
|
13
|
+
planExecutor;
|
|
14
|
+
lastResponse = '';
|
|
15
|
+
todos = [];
|
|
16
|
+
prompt = '';
|
|
17
|
+
constructor(specific) {
|
|
18
|
+
this.specific = specific;
|
|
19
|
+
this.planExecutor = new PlanExecutor();
|
|
20
|
+
}
|
|
21
|
+
async run(prompt) {
|
|
22
|
+
this.prompt = prompt;
|
|
23
|
+
try {
|
|
24
|
+
await configManager.initialize();
|
|
25
|
+
const creds = await ensureAuthenticated(DASHBOARD_URL);
|
|
26
|
+
await syncModelsFromDashboard(DASHBOARD_URL, creds.token);
|
|
27
|
+
if (!configManager.hasEndpoints()) {
|
|
28
|
+
log(chalk.red('Error: Dashboard에서 사용 가능한 모델이 없습니다.'));
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
this.llmClient = new LLMClient(creds.token);
|
|
32
|
+
const messages = [];
|
|
33
|
+
const isInterruptedRef = { current: false };
|
|
34
|
+
const callbacks = this.createCallbacks();
|
|
35
|
+
await this.planExecutor.executeAutoMode(prompt, this.llmClient, messages, this.todos, isInterruptedRef, callbacks);
|
|
36
|
+
if (this.lastResponse) {
|
|
37
|
+
console.log(this.lastResponse);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
log(chalk.red(`Error: ${error instanceof Error ? error.message : String(error)}`));
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
createCallbacks() {
|
|
46
|
+
let previousMessages = [];
|
|
47
|
+
return {
|
|
48
|
+
setTodos: (todosOrFn) => {
|
|
49
|
+
const newTodos = typeof todosOrFn === 'function'
|
|
50
|
+
? todosOrFn(this.todos)
|
|
51
|
+
: todosOrFn;
|
|
52
|
+
if (this.specific) {
|
|
53
|
+
for (const todo of newTodos) {
|
|
54
|
+
const existing = this.todos.find(t => t.id === todo.id);
|
|
55
|
+
if (!existing) {
|
|
56
|
+
log(chalk.dim(` #${newTodos.indexOf(todo) + 1} ${todo.title}`));
|
|
57
|
+
}
|
|
58
|
+
else if (existing.status !== todo.status) {
|
|
59
|
+
if (todo.status === 'in_progress') {
|
|
60
|
+
log(chalk.cyan(`\n[Executing] #${newTodos.indexOf(todo) + 1} ${todo.title}`));
|
|
61
|
+
}
|
|
62
|
+
else if (todo.status === 'completed') {
|
|
63
|
+
log(chalk.green(` ✓ ${todo.title}`));
|
|
64
|
+
}
|
|
65
|
+
else if (todo.status === 'failed') {
|
|
66
|
+
log(chalk.red(` ✗ ${todo.title}`));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (this.todos.length === 0 && newTodos.length > 0) {
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
this.todos = newTodos;
|
|
74
|
+
},
|
|
75
|
+
setCurrentTodoId: () => { },
|
|
76
|
+
setExecutionPhase: (phase) => {
|
|
77
|
+
if (this.specific && phase === 'planning') {
|
|
78
|
+
log(chalk.yellow('\n[Planning] TODO 생성 중...'));
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
setIsInterrupted: () => { },
|
|
82
|
+
setCurrentActivity: () => { },
|
|
83
|
+
setMessages: (messagesOrFn) => {
|
|
84
|
+
const newMessages = typeof messagesOrFn === 'function'
|
|
85
|
+
? messagesOrFn(previousMessages)
|
|
86
|
+
: messagesOrFn;
|
|
87
|
+
const addedMessages = newMessages.slice(previousMessages.length);
|
|
88
|
+
for (const msg of addedMessages) {
|
|
89
|
+
if (this.specific && msg.role === 'assistant' && msg.tool_calls) {
|
|
90
|
+
for (const toolCall of msg.tool_calls) {
|
|
91
|
+
let args = {};
|
|
92
|
+
try {
|
|
93
|
+
args = JSON.parse(toolCall.function.arguments);
|
|
94
|
+
}
|
|
95
|
+
catch { }
|
|
96
|
+
const summary = this.summarizeToolArgs(toolCall.function.name, args);
|
|
97
|
+
log(chalk.dim(` → ${toolCall.function.name} ${summary}`));
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (this.specific && msg.role === 'tool') {
|
|
101
|
+
const isSuccess = !msg.content?.startsWith('Error:');
|
|
102
|
+
if (isSuccess) {
|
|
103
|
+
log(chalk.dim(` ← OK`));
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
log(chalk.red(` ← Error: ${msg.content?.slice(0, 100)}`));
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (msg.role === 'assistant' && !msg.tool_calls && msg.content) {
|
|
110
|
+
this.lastResponse = msg.content;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
previousMessages = newMessages;
|
|
114
|
+
},
|
|
115
|
+
setAskUserRequest: () => { },
|
|
116
|
+
askUser: async (request) => {
|
|
117
|
+
return this.handleAskUser(request);
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
async handleAskUser(request) {
|
|
122
|
+
const optionsList = request.options.length > 0
|
|
123
|
+
? request.options.map((o, i) => `${i + 1}. ${o}`).join('\n')
|
|
124
|
+
: '(선택지 없음 — 자유 답변)';
|
|
125
|
+
try {
|
|
126
|
+
const response = await this.llmClient.chatCompletion({
|
|
127
|
+
messages: [
|
|
128
|
+
{
|
|
129
|
+
role: 'system',
|
|
130
|
+
content: `You are an autonomous agent answering a sub-agent's question on behalf of the user.
|
|
131
|
+
Use the task context to make the best decision.
|
|
132
|
+
If options are given, reply with EXACTLY one of the option texts.
|
|
133
|
+
Reply in Korean. No explanation, just the answer.`,
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
role: 'user',
|
|
137
|
+
content: `<TASK>\n${this.prompt}\n</TASK>\n\n질문: ${request.question}\n\n선택지:\n${optionsList}`,
|
|
138
|
+
},
|
|
139
|
+
],
|
|
140
|
+
temperature: 0.3,
|
|
141
|
+
max_tokens: 200,
|
|
142
|
+
});
|
|
143
|
+
const answer = response.choices?.[0]?.message?.content?.trim() || '';
|
|
144
|
+
if (request.options.length > 0) {
|
|
145
|
+
const exact = request.options.find(o => o === answer);
|
|
146
|
+
const partial = !exact ? request.options.find(o => answer.includes(o) || o.includes(answer)) : undefined;
|
|
147
|
+
const selected = exact ?? partial ?? request.options[0] ?? '';
|
|
148
|
+
if (this.specific) {
|
|
149
|
+
log(chalk.magenta(` [Auto] Q: ${request.question} → A: ${selected}`));
|
|
150
|
+
}
|
|
151
|
+
return { selectedOption: selected, isOther: false };
|
|
152
|
+
}
|
|
153
|
+
if (this.specific) {
|
|
154
|
+
log(chalk.magenta(` [Auto] Q: ${request.question} → A: ${answer || 'Yes'}`));
|
|
155
|
+
}
|
|
156
|
+
return { selectedOption: answer || 'Yes', isOther: true };
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
const fallback = request.options[0] || 'Yes';
|
|
160
|
+
if (this.specific) {
|
|
161
|
+
log(chalk.magenta(` [Auto] Q: ${request.question} → A: ${fallback} (fallback)`));
|
|
162
|
+
}
|
|
163
|
+
return { selectedOption: fallback, isOther: false };
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
summarizeToolArgs(toolName, args) {
|
|
167
|
+
if (toolName === 'bash' && args['command'])
|
|
168
|
+
return String(args['command']).slice(0, 80);
|
|
169
|
+
if (toolName.includes('file') && args['path'])
|
|
170
|
+
return String(args['path']);
|
|
171
|
+
if (toolName.includes('search') && args['query'])
|
|
172
|
+
return String(args['query']).slice(0, 60);
|
|
173
|
+
const keys = Object.keys(args);
|
|
174
|
+
if (keys.length === 0)
|
|
175
|
+
return '';
|
|
176
|
+
const firstKey = keys[0];
|
|
177
|
+
if (!firstKey)
|
|
178
|
+
return '';
|
|
179
|
+
return String(args[firstKey]).slice(0, 60);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
export async function runPipeMode(prompt, specific) {
|
|
183
|
+
const runner = new PipeRunner(specific);
|
|
184
|
+
await runner.run(prompt);
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=pipe-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipe-runner.js","sourceRoot":"","sources":["../../src/pipe/pipe-runner.ts"],"names":[],"mappings":"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"}
|