activo 0.2.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 (86) hide show
  1. package/FINAL_SIMPLIFIED_SPEC.md +456 -0
  2. package/README.md +62 -0
  3. package/TODO.md +193 -0
  4. package/dist/cli/banner.d.ts +3 -0
  5. package/dist/cli/banner.d.ts.map +1 -0
  6. package/dist/cli/banner.js +30 -0
  7. package/dist/cli/banner.js.map +1 -0
  8. package/dist/cli/headless.d.ts +3 -0
  9. package/dist/cli/headless.d.ts.map +1 -0
  10. package/dist/cli/headless.js +34 -0
  11. package/dist/cli/headless.js.map +1 -0
  12. package/dist/cli/index.d.ts +3 -0
  13. package/dist/cli/index.d.ts.map +1 -0
  14. package/dist/cli/index.js +42 -0
  15. package/dist/cli/index.js.map +1 -0
  16. package/dist/core/agent.d.ts +23 -0
  17. package/dist/core/agent.d.ts.map +1 -0
  18. package/dist/core/agent.js +171 -0
  19. package/dist/core/agent.js.map +1 -0
  20. package/dist/core/config.d.ts +24 -0
  21. package/dist/core/config.d.ts.map +1 -0
  22. package/dist/core/config.js +66 -0
  23. package/dist/core/config.js.map +1 -0
  24. package/dist/core/llm/ollama.d.ts +30 -0
  25. package/dist/core/llm/ollama.d.ts.map +1 -0
  26. package/dist/core/llm/ollama.js +173 -0
  27. package/dist/core/llm/ollama.js.map +1 -0
  28. package/dist/core/mcp/client.d.ts +22 -0
  29. package/dist/core/mcp/client.d.ts.map +1 -0
  30. package/dist/core/mcp/client.js +116 -0
  31. package/dist/core/mcp/client.js.map +1 -0
  32. package/dist/core/tools/builtIn.d.ts +9 -0
  33. package/dist/core/tools/builtIn.d.ts.map +1 -0
  34. package/dist/core/tools/builtIn.js +219 -0
  35. package/dist/core/tools/builtIn.js.map +1 -0
  36. package/dist/core/tools/index.d.ts +13 -0
  37. package/dist/core/tools/index.d.ts.map +1 -0
  38. package/dist/core/tools/index.js +43 -0
  39. package/dist/core/tools/index.js.map +1 -0
  40. package/dist/core/tools/standards.d.ts +6 -0
  41. package/dist/core/tools/standards.d.ts.map +1 -0
  42. package/dist/core/tools/standards.js +215 -0
  43. package/dist/core/tools/standards.js.map +1 -0
  44. package/dist/core/tools/types.d.ts +34 -0
  45. package/dist/core/tools/types.d.ts.map +1 -0
  46. package/dist/core/tools/types.js +2 -0
  47. package/dist/core/tools/types.js.map +1 -0
  48. package/dist/ui/App.d.ts +10 -0
  49. package/dist/ui/App.d.ts.map +1 -0
  50. package/dist/ui/App.js +167 -0
  51. package/dist/ui/App.js.map +1 -0
  52. package/dist/ui/components/InputBox.d.ts +11 -0
  53. package/dist/ui/components/InputBox.d.ts.map +1 -0
  54. package/dist/ui/components/InputBox.js +7 -0
  55. package/dist/ui/components/InputBox.js.map +1 -0
  56. package/dist/ui/components/MessageList.d.ts +17 -0
  57. package/dist/ui/components/MessageList.d.ts.map +1 -0
  58. package/dist/ui/components/MessageList.js +18 -0
  59. package/dist/ui/components/MessageList.js.map +1 -0
  60. package/dist/ui/components/StatusBar.d.ts +9 -0
  61. package/dist/ui/components/StatusBar.d.ts.map +1 -0
  62. package/dist/ui/components/StatusBar.js +6 -0
  63. package/dist/ui/components/StatusBar.js.map +1 -0
  64. package/dist/ui/components/ToolStatus.d.ts +8 -0
  65. package/dist/ui/components/ToolStatus.d.ts.map +1 -0
  66. package/dist/ui/components/ToolStatus.js +7 -0
  67. package/dist/ui/components/ToolStatus.js.map +1 -0
  68. package/package.json +64 -0
  69. package/screenshot.png +0 -0
  70. package/src/cli/banner.ts +34 -0
  71. package/src/cli/headless.ts +37 -0
  72. package/src/cli/index.ts +53 -0
  73. package/src/core/agent.ts +235 -0
  74. package/src/core/config.ts +98 -0
  75. package/src/core/llm/ollama.ts +238 -0
  76. package/src/core/mcp/client.ts +143 -0
  77. package/src/core/tools/builtIn.ts +221 -0
  78. package/src/core/tools/index.ts +53 -0
  79. package/src/core/tools/standards.ts +246 -0
  80. package/src/core/tools/types.ts +37 -0
  81. package/src/ui/App.tsx +238 -0
  82. package/src/ui/components/InputBox.tsx +37 -0
  83. package/src/ui/components/MessageList.tsx +80 -0
  84. package/src/ui/components/StatusBar.tsx +36 -0
  85. package/src/ui/components/ToolStatus.tsx +38 -0
  86. package/tsconfig.json +21 -0
@@ -0,0 +1,456 @@
1
+ # activo-code 최종 방안 (간소화)
2
+
3
+ ## 0. 참조 레포지토리
4
+
5
+ ### continue-cli GitHub
6
+ - **메인 레포**: https://github.com/continuedev/continue
7
+ - **CLI 코드 위치**: `extensions/cli/`
8
+ - **Core 코드 위치**: `core/`
9
+
10
+ ### 작업 전 준비 (필수)
11
+
12
+ ```bash
13
+ # continue 레포 클론 (참조용)
14
+ cd ~/Downloads
15
+ git clone https://github.com/continuedev/continue.git
16
+ cd continue
17
+
18
+ # CLI 구조 확인
19
+ ls -la extensions/cli/
20
+ ls -la extensions/cli/src/
21
+
22
+ # Core 구조 확인
23
+ ls -la core/
24
+ ls -la core/llm/
25
+ ```
26
+
27
+ ### 참조할 주요 파일
28
+
29
+ ```
30
+ ~/Downloads/continue/
31
+ ├── extensions/cli/
32
+ │ ├── src/
33
+ │ │ ├── index.ts # CLI 엔트리포인트
34
+ │ │ ├── commands/ # 명령어 구현
35
+ │ │ ├── tui/ # Terminal UI (React Ink)
36
+ │ │ └── headless/ # Headless 모드
37
+ │ └── package.json # 의존성 참조
38
+ ├── core/
39
+ │ ├── llm/
40
+ │ │ ├── llms/ # LLM 프로바이더들
41
+ │ │ └── templates/ # 프롬프트 템플릿
42
+ │ ├── config/ # 설정 로딩
43
+ │ └── tools/ # Agent Tools
44
+ └── packages/
45
+ └── openai-adapters/ # OpenAI 호환 어댑터
46
+ ```
47
+
48
+ ### 참조 시 주의사항
49
+ - continue-cli는 범용 코딩 에이전트 (우리는 품질 분석 특화)
50
+ - Ollama 연동 방식, CLI 구조, 세션 관리 참조
51
+ - LLM Provider 추상화 패턴 참조
52
+ - 프롬프트 구조는 우리 목적에 맞게 재설계
53
+
54
+ ---
55
+
56
+ ## 1. 결론 요약
57
+
58
+ ### 인터페이스: CLI 단일화
59
+ ```
60
+ PDF → MD 변환: CLI (activo standards import)
61
+ MD 수정: 에디터로 직접 (VS Code 등)
62
+ 코드 분석: CLI (activo improve, activo check)
63
+ ```
64
+
65
+ ### continue-cli RAG 기능
66
+ **있음**, 하지만 제한적:
67
+ - `.continue/rules/` 폴더에 MD 파일 배치 → 자동 컨텍스트 로드
68
+ - `@docs` context provider → 문서 참조 (deprecated, MCP로 대체 중)
69
+ - Custom Context Provider → 자체 RAG 서버 연동 가능
70
+
71
+ **activo-code에서 활용 방안:**
72
+ - 규칙 MD를 `.continue/rules/` 또는 `.activo/standards/`에 배치
73
+ - 분석 시 해당 MD를 직접 로드하여 프롬프트에 포함 (자체 구현)
74
+
75
+ ---
76
+
77
+ ## 2. PDF → MD 변환 전략
78
+
79
+ ### 2.1 CLI 명령어
80
+
81
+ ```bash
82
+ # PDF 변환 (청크 분할, 여러 MD 생성)
83
+ activo standards import ./개발표준.pdf
84
+
85
+ # 결과
86
+ .activo/standards/
87
+ ├── _index.md # 전체 목록/요약
88
+ ├── 01_명명규칙.md # 청크 1
89
+ ├── 02_코드구조.md # 청크 2
90
+ ├── 03_보안.md # 청크 3
91
+ ├── 04_예외처리.md # 청크 4
92
+ └── 05_주석문서화.md # 청크 5
93
+ ```
94
+
95
+ ### 2.2 청크 분할 전략
96
+
97
+ | PDF 크기 | 청크 크기 | MD 파일 수 |
98
+ |----------|----------|-----------|
99
+ | ~20페이지 | 전체 1개 | 1개 |
100
+ | 20~50페이지 | 장/절 단위 | 3~5개 |
101
+ | 50페이지+ | 2000자 단위 | 다수 |
102
+
103
+ **분할 기준:**
104
+ 1. 목차 기반 (장/절 경계)
105
+ 2. 페이지 단위 (목차 없을 경우)
106
+ 3. 고정 길이 (마지막 수단)
107
+
108
+ ### 2.3 생성되는 MD 구조
109
+
110
+ ```markdown
111
+ # 명명규칙 (01_명명규칙.md)
112
+
113
+ > 원본: 개발표준_v2.1.pdf (페이지 5-12)
114
+ > 추출일: 2025-01-30
115
+
116
+ ## NR-001: 클래스명
117
+ - 심각도: error
118
+ - 규칙: PascalCase 사용
119
+ - 예시: UserService (O), userService (X)
120
+
121
+ ## NR-002: 변수명
122
+ - 심각도: warning
123
+ - 규칙: camelCase 사용
124
+ - 예시: userName (O), user_name (X)
125
+
126
+ ---
127
+ [수동 수정 필요 시 이 파일을 직접 편집하세요]
128
+ ```
129
+
130
+ ### 2.4 수동 편집 가이드
131
+
132
+ ```bash
133
+ # 변환 후 안내 메시지
134
+ $ activo standards import ./개발표준.pdf
135
+
136
+ PDF 변환 완료!
137
+ - 생성된 파일: 5개
138
+ - 위치: .activo/standards/
139
+
140
+ [다음 단계]
141
+ 1. 생성된 MD 파일을 에디터로 확인하세요
142
+ 2. 잘못 추출된 규칙은 직접 수정/삭제하세요
143
+ 3. 누락된 규칙은 수동으로 추가하세요
144
+
145
+ $ code .activo/standards/ # VS Code로 열기
146
+ ```
147
+
148
+ ---
149
+
150
+ ## 3. 아키텍처 (간소화)
151
+
152
+ ```
153
+ ┌─────────────────────────────────────────────────┐
154
+ │ activo-code │
155
+ ├─────────────────────────────────────────────────┤
156
+ │ │
157
+ │ [CLI] │
158
+ │ ├── activo standards import <pdf> │
159
+ │ │ └── PDF → 청크 분할 → Ollama 추출 → MD들 │
160
+ │ │ │
161
+ │ ├── activo standards list │
162
+ │ │ └── 현재 로드된 규칙 목록 │
163
+ │ │ │
164
+ │ ├── activo improve <path> │
165
+ │ │ └── 코드 개선점 분석 (Why/How) │
166
+ │ │ │
167
+ │ ├── activo check <path> │
168
+ │ │ └── 표준 규칙 준수 여부 점검 │
169
+ │ │ │
170
+ │ └── activo explain --input <cqc-result.json> │
171
+ │ └── code-quality-checker 결과 설명 추가 │
172
+ │ │
173
+ ├─────────────────────────────────────────────────┤
174
+ │ │
175
+ │ [Standards Loader] │
176
+ │ └── .activo/standards/*.md 로드 │
177
+ │ └── 여러 MD 병합 → 프롬프트 컨텍스트 │
178
+ │ │
179
+ ├─────────────────────────────────────────────────┤
180
+ │ │
181
+ │ [Ollama Engine] │
182
+ │ ├── PDF 규칙 추출: qwen2.5:7b (한국어) │
183
+ │ └── 코드 분석: codellama:7b │
184
+ │ │
185
+ └─────────────────────────────────────────────────┘
186
+ ```
187
+
188
+ ---
189
+
190
+ ## 4. 분석 시 규칙 로드 방식
191
+
192
+ ### 4.1 단순 방식 (권장)
193
+
194
+ ```
195
+ [분석 요청]
196
+
197
+ [.activo/standards/*.md 전체 로드]
198
+
199
+ [관련 규칙만 필터링] ← 파일 확장자, 카테고리 기반
200
+
201
+ [프롬프트에 규칙 포함]
202
+
203
+ [Ollama 호출]
204
+ ```
205
+
206
+ **예시: Java 파일 분석 시**
207
+ ```
208
+ 로드할 규칙:
209
+ - 01_명명규칙.md (전체)
210
+ - 02_코드구조.md (전체)
211
+ - 03_보안.md (전체)
212
+
213
+ 제외:
214
+ - 06_HTML규칙.md
215
+ - 07_CSS규칙.md
216
+ ```
217
+
218
+ ### 4.2 프롬프트 구성
219
+
220
+ ```
221
+ [시스템]
222
+ 당신은 코드 품질 전문가입니다.
223
+ 아래 개발표준 규칙에 따라 코드를 점검하세요.
224
+
225
+ [개발표준 규칙]
226
+ ## 명명규칙
227
+ - NR-001: 클래스명 PascalCase (error)
228
+ - NR-002: 변수명 camelCase (warning)
229
+ ...
230
+
231
+ ## 코드구조
232
+ - CS-001: 메서드 50줄 이하 (warning)
233
+ ...
234
+
235
+ [분석 대상 코드]
236
+ ```java
237
+ public class userService { ... }
238
+ ```
239
+
240
+ [질문]
241
+ 위 코드가 개발표준을 위반하는 부분을 찾고,
242
+ 각 위반에 대해 다음을 설명하세요:
243
+ 1. 위반 규칙 ID
244
+ 2. 위반 위치 (라인)
245
+ 3. 위반 이유
246
+ 4. 수정 방안
247
+ ```
248
+
249
+ ### 4.3 8GB Ollama 대응
250
+
251
+ **규칙 MD가 너무 클 경우:**
252
+ ```
253
+ 전체 규칙: 10,000자 → 컨텍스트 초과
254
+
255
+ 해결책:
256
+ 1. 분석 대상 언어의 규칙만 로드
257
+ 2. 카테고리별로 나눠서 여러 번 호출
258
+ 3. 규칙 요약본 사용 (_index.md)
259
+ ```
260
+
261
+ ---
262
+
263
+ ## 5. CLI 명령어 최종
264
+
265
+ ```bash
266
+ # 개발표준 관리
267
+ activo standards import <pdf> # PDF → MD 변환 (청크 분할)
268
+ activo standards list # 현재 규칙 목록
269
+ activo standards validate # MD 문법 검증
270
+
271
+ # 코드 분석
272
+ activo improve <path> # 개선점 분석
273
+ activo improve --focus naming # 특정 영역 집중
274
+ activo check <path> # 표준 준수 점검
275
+ activo check --strict # 엄격 모드
276
+
277
+ # code-quality-checker 연동
278
+ activo explain -i result.json # cqc 결과 설명
279
+
280
+ # 설정
281
+ activo config # 설정 확인/수정
282
+ activo config set model codellama:7b
283
+ ```
284
+
285
+ ---
286
+
287
+ ## 6. continue-cli 참조 vs 자체 구현
288
+
289
+ ### continue-cli 레포 구조 (~/Downloads/continue/)
290
+
291
+ ```
292
+ ~/Downloads/continue/
293
+ ├── extensions/cli/ # ← 메인 참조 대상
294
+ │ ├── src/
295
+ │ │ ├── index.ts # CLI 메인 (Commander.js)
296
+ │ │ ├── commands/ # 명령어 핸들러
297
+ │ │ ├── tui/ # React Ink TUI
298
+ │ │ ├── headless/ # CI용 헤드리스 모드
299
+ │ │ └── session/ # 세션 관리
300
+ │ ├── package.json # 의존성 목록
301
+ │ └── tsconfig.json
302
+ ├── core/ # ← LLM/Tool 참조
303
+ │ ├── llm/
304
+ │ │ ├── llms/ # 각 프로바이더 구현
305
+ │ │ │ ├── Ollama.ts # ★ Ollama 연동 참조
306
+ │ │ │ ├── OpenAI.ts
307
+ │ │ │ └── Anthropic.ts
308
+ │ │ └── templates/ # 프롬프트 템플릿
309
+ │ ├── config/ # 설정 로딩
310
+ │ ├── tools/ # Agent Tools
311
+ │ └── index.d.ts # 타입 정의
312
+ └── packages/
313
+ ├── config-types/ # 설정 타입
314
+ └── fetch/ # HTTP 클라이언트
315
+ ```
316
+
317
+ ### continue-cli에서 가져올 것
318
+ - CLI 구조 (Commander.js 패턴) → `extensions/cli/src/index.ts`
319
+ - Ollama 연동 방식 → `core/llm/llms/Ollama.ts`
320
+ - 세션/히스토리 관리 → `extensions/cli/src/session/`
321
+ - 설정 로딩 패턴 → `core/config/`
322
+
323
+ ### 자체 구현할 것
324
+ - PDF 파싱 및 청크 분할
325
+ - 개발표준 규칙 로더
326
+ - 코드 품질 분석 프롬프트
327
+ - code-quality-checker 연동
328
+
329
+ ### continue-cli RAG 활용 여부
330
+ **활용 안 함** (자체 구현)
331
+ - continue-cli RAG는 IDE 통합 위주
332
+ - 우리는 단순히 MD 파일 로드 → 프롬프트 포함
333
+ - 복잡한 벡터 DB 불필요 (규칙 MD는 작음)
334
+
335
+ ---
336
+
337
+ ## 7. 개발 우선순위
338
+
339
+ ### Phase 1 (1주)
340
+ - [ ] CLI 프레임워크
341
+ - [ ] Ollama 연동 (ollama-js)
342
+ - [ ] 단일 파일 개선점 분석
343
+
344
+ ### Phase 2 (1주)
345
+ - [ ] PDF 파싱 (pdf-parse)
346
+ - [ ] 청크 분할 로직
347
+ - [ ] MD 생성
348
+
349
+ ### Phase 3 (1주)
350
+ - [ ] 규칙 MD 로더
351
+ - [ ] 표준 준수 점검
352
+ - [ ] cqc 연동
353
+
354
+ ---
355
+
356
+ ## 8. 파일 구조
357
+
358
+ ```
359
+ activo-code/
360
+ ├── src/
361
+ │ ├── cli/
362
+ │ │ ├── index.ts
363
+ │ │ └── commands/
364
+ │ │ ├── standards.ts # import, list, validate
365
+ │ │ ├── improve.ts # 개선점 분석
366
+ │ │ ├── check.ts # 표준 점검
367
+ │ │ └── explain.ts # cqc 연동
368
+ │ ├── core/
369
+ │ │ ├── pdf-parser.ts # PDF → 텍스트
370
+ │ │ ├── chunk-splitter.ts # 청크 분할
371
+ │ │ ├── rule-extractor.ts # Ollama로 규칙 추출
372
+ │ │ ├── rule-loader.ts # MD 로드
373
+ │ │ └── analyzer.ts # 코드 분석
374
+ │ └── llm/
375
+ │ ├── ollama.ts # Ollama 클라이언트
376
+ │ └── prompts.ts # 프롬프트 템플릿
377
+ ├── package.json
378
+ └── .activo/ # 프로젝트별 설정
379
+ └── standards/ # 규칙 MD 저장 위치
380
+ ```
381
+
382
+ ---
383
+
384
+ ## 9. 기술 스택
385
+
386
+ | 영역 | 기술 |
387
+ |------|------|
388
+ | 언어 | TypeScript (Node.js) |
389
+ | CLI | Commander.js |
390
+ | PDF | pdf-parse |
391
+ | LLM | ollama (npm 패키지) |
392
+ | 출력 | chalk, ora |
393
+
394
+ 또는 Go로 통일 (code-quality-checker와 맞춤):
395
+
396
+ | 영역 | 기술 |
397
+ |------|------|
398
+ | 언어 | Go |
399
+ | CLI | cobra |
400
+ | PDF | pdfcpu |
401
+ | LLM | ollama Go client |
402
+
403
+ ---
404
+
405
+ ## 10. 개발 시작 전 체크리스트
406
+
407
+ ### 환경 준비
408
+
409
+ ```bash
410
+ # 1. continue 레포 클론 (참조용)
411
+ cd ~/Downloads
412
+ git clone https://github.com/continuedev/continue.git
413
+
414
+ # 2. continue-cli 구조 파악
415
+ cd continue
416
+ cat extensions/cli/package.json # 의존성 확인
417
+ cat extensions/cli/src/index.ts # CLI 엔트리 확인
418
+ cat core/llm/llms/Ollama.ts # Ollama 연동 확인
419
+
420
+ # 3. Ollama 설치 및 모델 다운로드
421
+ ollama pull codellama:7b # 코드 분석용
422
+ ollama pull qwen2.5:7b # 한국어 PDF용 (선택)
423
+
424
+ # 4. activo-code 프로젝트 생성
425
+ cd ~/Projects # 또는 원하는 위치
426
+ mkdir activo-code && cd activo-code
427
+ pnpm init
428
+ ```
429
+
430
+ ### 참조 파일 복사 (선택)
431
+
432
+ ```bash
433
+ # Ollama 연동 코드 참조용 복사
434
+ cp ~/Downloads/continue/core/llm/llms/Ollama.ts ./reference/
435
+
436
+ # CLI 구조 참조용 복사
437
+ cp ~/Downloads/continue/extensions/cli/src/index.ts ./reference/
438
+ ```
439
+
440
+ ### Claude Code 작업 시 지시문
441
+
442
+ ```
443
+ activo-code 프로젝트를 만들어주세요.
444
+
445
+ 참조 레포: ~/Downloads/continue/
446
+ - CLI 구조: extensions/cli/src/
447
+ - Ollama 연동: core/llm/llms/Ollama.ts
448
+ - 설정 패턴: core/config/
449
+
450
+ 주요 기능:
451
+ 1. PDF → MD 변환 (청크 분할)
452
+ 2. 개발표준 규칙 점검
453
+ 3. 코드 개선점 분석
454
+
455
+ Ollama 모델: codellama:7b (8GB 메모리 제한)
456
+ ```
package/README.md ADDED
@@ -0,0 +1,62 @@
1
+ # ACTIVO
2
+
3
+ AI 기반 코드 품질 분석 CLI 도구
4
+
5
+ ![Screenshot](screenshot.png)
6
+
7
+ ## 설치
8
+
9
+ ```bash
10
+ pnpm install
11
+ pnpm build
12
+ npm link
13
+ ```
14
+
15
+ ## 사용법
16
+
17
+ ```bash
18
+ # 대화형 모드
19
+ activo
20
+
21
+ # 프롬프트와 함께 실행
22
+ activo "src 폴더 구조 보여줘"
23
+
24
+ # 비대화형 모드
25
+ activo --print "package.json 분석해줘"
26
+ ```
27
+
28
+ ## 주요 기능
29
+
30
+ - **자연어 인터페이스**: 한글로 명령 입력
31
+ - **Tool Calling**: 파일 읽기/쓰기, 검색, 명령 실행
32
+ - **PDF 변환**: 개발표준 PDF → Markdown 변환
33
+ - **코드 품질 분석**: 규칙 기반 코드 점검
34
+
35
+ ## 요구사항
36
+
37
+ - Node.js 18+
38
+ - [Ollama](https://ollama.ai) 실행 중
39
+
40
+ ## 설정
41
+
42
+ `~/.activo/config.json`:
43
+ ```json
44
+ {
45
+ "ollama": {
46
+ "baseUrl": "http://localhost:11434",
47
+ "model": "mistral:latest"
48
+ }
49
+ }
50
+ ```
51
+
52
+ ## 단축키
53
+
54
+ | 키 | 동작 |
55
+ |---|------|
56
+ | `Enter` | 메시지 전송 |
57
+ | `ESC` | 진행 중 작업 취소 |
58
+ | `Ctrl+C` x2 | 종료 |
59
+
60
+ ## 라이선스
61
+
62
+ MIT
package/TODO.md ADDED
@@ -0,0 +1,193 @@
1
+ # TODO.md - activo-code 개발 계획
2
+
3
+ ## 아키텍처 (v0.2.0 - React Ink TUI)
4
+
5
+ ### continue-cli 기반 새 구조
6
+ ```
7
+ activo-code/
8
+ ├── src/
9
+ │ ├── cli/
10
+ │ │ ├── index.ts # CLI 엔트리 (Commander.js + React Ink)
11
+ │ │ ├── banner.ts # ACTIVO ASCII 아트 배너
12
+ │ │ └── headless.ts # 비대화형 모드
13
+ │ ├── core/
14
+ │ │ ├── config.ts # 설정 관리 (Ollama, MCP)
15
+ │ │ ├── agent.ts # 에이전트 (Tool Calling 루프)
16
+ │ │ ├── llm/
17
+ │ │ │ └── ollama.ts # Ollama 클라이언트 (스트리밍, Tool Calling)
18
+ │ │ ├── tools/
19
+ │ │ │ ├── types.ts # Tool, ToolCall, ToolResult 타입
20
+ │ │ │ ├── builtIn.ts # 내장 도구 (파일, 검색, 명령)
21
+ │ │ │ ├── standards.ts # 표준 도구 (PDF, 품질 체크)
22
+ │ │ │ └── index.ts # 도구 레지스트리
23
+ │ │ └── mcp/
24
+ │ │ └── client.ts # MCP 프로토콜 클라이언트
25
+ │ └── ui/
26
+ │ ├── App.tsx # 메인 React Ink 앱
27
+ │ └── components/
28
+ │ ├── InputBox.tsx # 입력창 컴포넌트
29
+ │ ├── MessageList.tsx # 메시지 목록
30
+ │ ├── StatusBar.tsx # 상태바 (모델, 메시지 수)
31
+ │ └── ToolStatus.tsx # 도구 실행 상태
32
+ ├── package.json
33
+ └── tsconfig.json
34
+ ```
35
+
36
+ ### 핵심 기능
37
+ - **자연어 인터페이스**: 터미널에서 한글로 명령 입력
38
+ - **Tool Calling**: Ollama가 필요한 도구 자동 선택/실행
39
+ - **MCP 지원**: 외부 도구 서버 연결 가능
40
+ - **스트리밍**: 실시간 응답 출력
41
+
42
+ ---
43
+
44
+ ## Phase 0: 프로젝트 리빌드 ✅
45
+
46
+ ### 0.1 React Ink TUI 구축
47
+ - [x] ink, ink-spinner, ink-text-input 설치
48
+ - [x] Commander.js + React Ink 통합
49
+ - [x] ASCII 배너 (gradient-string)
50
+ - [x] 대화형/비대화형 모드 분리
51
+
52
+ **테스트:**
53
+ ```bash
54
+ node dist/cli/index.js --version # 0.2.0
55
+ node dist/cli/index.js --help # 옵션 목록
56
+ node dist/cli/index.js --print "test" # 배너 + 응답
57
+ ```
58
+
59
+ ### 0.2 Ollama 클라이언트
60
+ - [x] 스트리밍 chat 지원
61
+ - [x] Tool Calling 지원
62
+ - [x] 연결 상태 확인
63
+
64
+ ---
65
+
66
+ ## Phase 1: Tool Calling 시스템 ✅
67
+
68
+ ### 1.1 내장 도구 (Built-in Tools)
69
+ - [x] `read_file` - 파일 읽기
70
+ - [x] `write_file` - 파일 쓰기
71
+ - [x] `list_directory` - 디렉토리 목록
72
+ - [x] `grep_search` - 텍스트 검색
73
+ - [x] `glob_search` - 파일 패턴 검색
74
+ - [x] `run_command` - 명령 실행
75
+
76
+ ### 1.2 표준 도구 (Standards Tools)
77
+ - [x] `import_pdf_standards` - PDF → MD 변환
78
+ - [x] `list_standards` - 규칙 목록 조회
79
+ - [x] `check_code_quality` - 코드 품질 체크
80
+
81
+ ### 1.3 에이전트 루프
82
+ - [x] 시스템 프롬프트 정의
83
+ - [x] 반복 Tool Calling 처리
84
+ - [x] 스트리밍 이벤트 생성
85
+
86
+ ---
87
+
88
+ ## Phase 2: MCP 지원 ✅
89
+
90
+ ### 2.1 MCP 클라이언트
91
+ - [x] StdioClientTransport 연동
92
+ - [x] 도구 목록 조회
93
+ - [x] 도구 호출 프록시
94
+
95
+ ### 2.2 설정
96
+ - [x] ~/.activo/config.json 지원
97
+ - [x] MCP 서버 설정 구조
98
+
99
+ ---
100
+
101
+ ## Phase 3: UI 컴포넌트 ✅
102
+
103
+ ### 3.1 React Ink 컴포넌트
104
+ - [x] InputBox - 입력창 + 처리중 상태
105
+ - [x] MessageList - 대화 기록 표시
106
+ - [x] StatusBar - 모델, 메시지 수, 상태
107
+ - [x] ToolStatus - 도구 실행 표시
108
+
109
+ ### 3.2 상태 관리
110
+ - [x] 메시지 히스토리
111
+ - [x] 도구 호출 추적
112
+ - [x] 에러 표시
113
+ - [x] Ctrl+C 처리 (2회 종료)
114
+
115
+ ---
116
+
117
+ ## Phase 4: 통합 및 테스트
118
+
119
+ ### 4.1 빌드 검증
120
+ - [x] TypeScript 컴파일
121
+ - [x] 배너 출력 확인
122
+ - [ ] Ollama 연동 테스트
123
+ - [ ] Tool Calling 실행 테스트
124
+
125
+ ### 4.2 사용 시나리오 테스트
126
+ - [ ] "src 폴더 구조 보여줘"
127
+ - [ ] "이 프로젝트의 코드 품질 분석해줘"
128
+ - [ ] "PDF 파일을 규칙으로 변환해줘"
129
+ - [ ] "명명규칙 위반 찾아줘"
130
+
131
+ ### 4.3 패키징
132
+ - [ ] npm link 테스트
133
+ - [ ] 글로벌 설치 테스트
134
+
135
+ ---
136
+
137
+ ## 테스트 체크리스트
138
+
139
+ ### 빌드 & 기본 테스트
140
+ | 항목 | 명령어 | 예상 결과 | 상태 |
141
+ |------|--------|-----------|------|
142
+ | 빌드 | `pnpm build` | 성공 | ✅ |
143
+ | 버전 | `node dist/cli/index.js --version` | 0.2.0 | ✅ |
144
+ | 도움말 | `node dist/cli/index.js --help` | 옵션 목록 | ✅ |
145
+ | 배너 | `node dist/cli/index.js --print "test"` | ASCII 아트 | ✅ |
146
+
147
+ ### 대화 테스트
148
+ | 항목 | 명령어 | 예상 결과 | 상태 |
149
+ |------|--------|-----------|------|
150
+ | 파일 목록 | "src 폴더에 뭐가 있어?" | list_directory 호출 | ⬜ |
151
+ | 파일 읽기 | "package.json 보여줘" | read_file 호출 | ⬜ |
152
+ | 검색 | "TODO 찾아줘" | grep_search 호출 | ⬜ |
153
+ | 품질 체크 | "코드 품질 분석해줘" | check_code_quality 호출 | ⬜ |
154
+
155
+ ---
156
+
157
+ ## 핵심 의존성
158
+
159
+ ```json
160
+ {
161
+ "dependencies": {
162
+ "commander": "^14.0.0",
163
+ "chalk": "^5.4.1",
164
+ "ink": "^6.1.0",
165
+ "ink-spinner": "^5.0.0",
166
+ "ink-text-input": "^6.0.0",
167
+ "react": "^19.1.0",
168
+ "gradient-string": "^3.0.0",
169
+ "pdf-parse": "^1.1.1",
170
+ "@modelcontextprotocol/sdk": "^1.25.0",
171
+ "@anthropic-ai/sdk": "^0.52.0",
172
+ "uuid": "^9.0.1",
173
+ "date-fns": "^4.1.0"
174
+ }
175
+ }
176
+ ```
177
+
178
+ ---
179
+
180
+ ## 진행 상황
181
+
182
+ - **버전**: v0.2.0 (React Ink TUI 버전)
183
+ - **현재 단계**: Phase 4.1 (빌드 검증)
184
+ - **마지막 업데이트**: 2025-01-30
185
+ - **다음 작업**: Ollama 연동 테스트, 실사용 시나리오 검증
186
+
187
+ ### 완료된 작업
188
+ - [x] continue-cli 아키텍처 분석
189
+ - [x] React Ink TUI 구현
190
+ - [x] Tool Calling 시스템 구현
191
+ - [x] MCP 클라이언트 구현
192
+ - [x] ASCII 배너 구현
193
+ - [x] 빌드 성공
@@ -0,0 +1,3 @@
1
+ export declare function showBanner(): void;
2
+ export declare function getShortBanner(): string;
3
+ //# sourceMappingURL=banner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/cli/banner.ts"],"names":[],"mappings":"AAaA,wBAAgB,UAAU,IAAI,IAAI,CAgBjC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC"}