docuking-mcp 2.0.0 → 2.0.1

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/README.md CHANGED
@@ -1,29 +1,23 @@
1
- # docurepo-mcp
1
+ # docuking-mcp
2
2
 
3
- 문서용 Git - AI가 문서를 Push/Pull 할 수 있게 해주는 MCP 서버
3
+ AI가 문서를 Push/Pull 할 수 있게 해주는 MCP 서버
4
4
 
5
5
  ## 설치
6
6
 
7
7
  ```bash
8
- npx docurepo-mcp
8
+ npx docuking-mcp
9
9
  ```
10
10
 
11
11
  ## MCP 설정
12
12
 
13
- ### Claude Code (CLI/VSCode)
14
-
15
- `~/.claude.json` 또는 프로젝트의 `.claude/settings.json`에 추가:
13
+ ### Claude Code
16
14
 
17
15
  ```json
18
16
  {
19
17
  "mcpServers": {
20
- "docurepo": {
18
+ "docuking": {
21
19
  "command": "npx",
22
- "args": ["docurepo-mcp"],
23
- "env": {
24
- "DOCUREPO_API_KEY": "sk_xxx",
25
- "DOCUREPO_REPOS": "{\"C:/my-project\":\"project-uuid\"}"
26
- }
20
+ "args": ["-y", "docuking-mcp"]
27
21
  }
28
22
  }
29
23
  }
@@ -36,13 +30,9 @@ npx docurepo-mcp
36
30
  ```json
37
31
  {
38
32
  "mcpServers": {
39
- "docurepo": {
33
+ "docuking": {
40
34
  "command": "npx",
41
- "args": ["docurepo-mcp"],
42
- "env": {
43
- "DOCUREPO_API_KEY": "sk_xxx",
44
- "DOCUREPO_REPOS": "{\"C:/my-project\":\"project-uuid\"}"
45
- }
35
+ "args": ["-y", "docuking-mcp"]
46
36
  }
47
37
  }
48
38
  }
@@ -50,68 +40,39 @@ npx docurepo-mcp
50
40
 
51
41
  ## 도구
52
42
 
53
- ### docurepo_init
54
-
55
- 프로젝트를 DocuRepo에 연결합니다.
56
-
57
- ```
58
- docurepo_init(projectId, localPath)
59
- ```
60
-
61
- - Z_DocuRepo/ 폴더 생성
62
- - 레포 매핑 추가 안내
63
-
64
- ### docurepo_push
65
-
66
- Z_DocuRepo/ 폴더의 문서를 서버에 업로드합니다.
67
-
68
- ```
69
- docurepo_push(localPath, [filePath])
70
- ```
71
-
72
- - "피터해" 요청 시 사용
73
- - filePath 생략 시 전체 동기화
74
-
75
- ### docurepo_pull
76
-
77
- 서버에서 문서를 다운로드합니다.
78
-
79
- ```
80
- docurepo_pull(localPath, [filePath])
81
- ```
82
-
83
- - "피터에서 가져와" 요청 시 사용
84
- - filePath 생략 시 전체 동기화
85
-
86
- ### docurepo_list
87
-
88
- 서버에 저장된 파일 목록을 조회합니다.
89
-
90
- ```
91
- docurepo_list(localPath)
92
- ```
93
-
94
- ## 환경변수
95
-
96
- | 변수 | 설명 |
43
+ | 도구 | 설명 |
97
44
  |------|------|
98
- | DOCUREPO_API_KEY | API (필수) |
99
- | DOCUREPO_API_ENDPOINT | API 엔드포인트 (기본: https://peeter.kr/api) |
100
- | DOCUREPO_REPOS | 로컬경로projectId 매핑 (JSON) |
101
-
102
- ## 동기화 대상
45
+ | docuking_init | 프로젝트 연결, yy_All_Docu/ 및 zz_ai_* 폴더 생성 |
46
+ | docuking_push | yy_All_Docu/ 서버 업로드 |
47
+ | docuking_pull | 서버yy_All_Docu/ 다운로드 |
48
+ | docuking_status | 동기화 상태 확인 |
49
+ | docuking_list | 서버 파일 목록 조회 |
50
+ | docuking_log | 커밋 히스토리 조회 |
51
+ | docuking_diff | 버전 간 차이 비교 |
52
+ | docuking_rollback | 특정 커밋으로 롤백 |
53
+ | docuking_talk | AI 대화록 저장 (zz_ai_Talk/) |
54
+ | docuking_plan | 작업 계획 관리 (zzz_ai_Plan/) |
55
+ | docuking_done | 작업 완료 처리 |
56
+ | docuking_todo | 킹투두 관리 (zz_ai_Todo/) |
57
+
58
+ ## 폴더 구조
103
59
 
104
60
  ```
105
61
  프로젝트/
106
- ├── src/ ← 대상 아님
107
- ├── 기타/ 대상 아님
108
- └── Z_DocuRepo/ 대상 ( 폴더만)
109
- ├── 정책/
110
- ├── 회의록/
111
- └── 뭐든지/
62
+ ├── yy_All_Docu/ 동기화 대상 (Push/Pull)
63
+ │ └── yy_Coworker_{이름}/ 협업자 작업 폴더
64
+ ├── zz_ai_Talk/ AI 대화록 (로컬 전용)
65
+ ├── zz_ai_Todo/ ← AI 투두 (로컬 전용)
66
+ └── zzz_ai_Plan/ ← AI 플랜 (로컬 전용)
112
67
  ```
113
68
 
114
- **Z_DocuRepo/ 폴더만** 동기화됩니다.
69
+ **접두사 규칙:**
70
+ - `yy_*`: 동기화 대상
71
+ - `zz_*`: 로컬 전용 (Push 제외)
72
+
73
+ ## 웹사이트
74
+
75
+ https://docuking.ai
115
76
 
116
77
  ## 라이센스
117
78
 
package/index.js CHANGED
@@ -8,9 +8,9 @@
8
8
  * 폴더 구조:
9
9
  * - yy_All_Docu/ : 킹폴더와 동기화 (Push/Pull 대상)
10
10
  * - yy_All_Docu/yy_{이름}/ : 협업자 폴더 (동기화 대상)
11
- * - zz_AI_Talk/ : AI 대화록 (로컬 전용, 킹톡)
12
- * - zz_AI_Todo/ : AI 투두 (로컬 전용, 킹투두)
13
- * - zz_AI_Plan/ : AI 플랜 (로컬 전용, 킹플랜)
11
+ * - zz_ai_Talk/ : AI 대화록 (로컬 전용, 킹톡)
12
+ * - zz_ai_Todo/ : AI 투두 (로컬 전용, 킹투두)
13
+ * - zzz_ai_Plan/ : AI 플랜 (로컬 전용, 킹플랜)
14
14
  *
15
15
  * 접두사 규칙:
16
16
  * - yy_* : 동기화 대상 (Push/Pull)
@@ -141,7 +141,7 @@ docuking_done({
141
141
  ### 절대 규칙
142
142
  - **작업 시작 전 반드시 \`docuking_plan\` 호출**
143
143
  - **작업 완료 후 반드시 \`docuking_done\` 호출**
144
- - 결과는 \`zz_AI_Plan/\`에 자동 저장됨 (로컬 전용)
144
+ - 결과는 \`zzz_ai_Plan/\`에 자동 저장됨 (로컬 전용)
145
145
  `;
146
146
 
147
147
  try {
@@ -423,7 +423,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
423
423
  },
424
424
  {
425
425
  name: 'docuking_talk',
426
- description: '의미 있는 대화 내용을 zz_AI_Talk/ 폴더에 기록합니다 (로컬 전용, 킹톡). AI가 중요한 논의/결정이라고 판단하거나, 사용자가 "이거 기록해줘"라고 요청할 때 사용.',
426
+ description: '의미 있는 대화 내용을 zz_ai_Talk/ 폴더에 기록합니다 (로컬 전용, 킹톡). AI가 중요한 논의/결정이라고 판단하거나, 사용자가 "이거 기록해줘"라고 요청할 때 사용.',
427
427
  inputSchema: {
428
428
  type: 'object',
429
429
  properties: {
@@ -450,7 +450,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
450
450
  },
451
451
  {
452
452
  name: 'docuking_plan',
453
- description: '작업 계획 문서를 zz_AI_Plan/ 폴더에 생성/업데이트합니다 (로컬 전용, 킹플랜). 작업 시작 시 계획을 작성하고, 진행하면서 결과를 upsert합니다.',
453
+ description: '작업 계획 문서를 zzz_ai_Plan/ 폴더에 생성/업데이트합니다 (로컬 전용, 킹플랜). 작업 시작 시 계획을 작성하고, 진행하면서 결과를 upsert합니다.',
454
454
  inputSchema: {
455
455
  type: 'object',
456
456
  properties: {
@@ -519,7 +519,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
519
519
  },
520
520
  {
521
521
  name: 'docuking_todo',
522
- description: `킹투두(King Todo) - 프로젝트 공식 할일을 zz_AI_Todo/z_King_Todo.md에 관리합니다 (로컬 전용).
522
+ description: `킹투두(King Todo) - 프로젝트 공식 할일을 zz_ai_Todo/z_King_Todo.md에 관리합니다 (로컬 전용).
523
523
 
524
524
  **AI 내장 TodoWrite와 다름!** 킹투두는 웹에 동기화되고 팀과 공유됩니다.
525
525
 
@@ -593,7 +593,7 @@ DocuKing은 문서 버전 관리 시스템입니다. Git이 코드를 관리하
593
593
  - **로컬**: 사용자의 yy_All_Docu/ 폴더 (동기화 대상)
594
594
  - **웹탐색기**: DocuKing 서버의 파일 저장소 (킹폴더)
595
595
  - **캔버스**: 선택된 파일을 시각화하는 작업 공간
596
- - **AI 작업 폴더**: zz_AI_Talk/, zz_AI_Todo/, zz_AI_Plan/ (로컬 전용)
596
+ - **AI 작업 폴더**: zz_ai_Talk/, zz_ai_Todo/, zzz_ai_Plan/ (로컬 전용)
597
597
 
598
598
  작동 방식: 로컬 yy_All_Docu/ → Push → 킹폴더 → 캔버스에서 시각화
599
599
 
@@ -628,9 +628,9 @@ DocuKing 문서 폴더는 git에서 제외해야 합니다. 코드는 git으로,
628
628
  \`\`\`gitignore
629
629
  # DocuKing 문서 폴더 (문서는 DocuKing으로 관리)
630
630
  yy_All_Docu/
631
- zz_AI_Talk/
632
- zz_AI_Todo/
633
- zz_AI_Plan/
631
+ zz_ai_Talk/
632
+ zz_ai_Todo/
633
+ zzz_ai_Plan/
634
634
  \`\`\`
635
635
 
636
636
  **왜 gitignore에 등록해야 하나요?**
@@ -666,12 +666,12 @@ zz_AI_Plan/
666
666
  특정 커밋으로 되돌립니다. (웹 탐색기에서 사용 가능)
667
667
 
668
668
  ### 9. docuking_talk
669
- 의미 있는 대화 내용을 \`zz_AI_Talk/\` 폴더에 기록합니다 (로컬 전용, 킹톡).
669
+ 의미 있는 대화 내용을 \`zz_ai_Talk/\` 폴더에 기록합니다 (로컬 전용, 킹톡).
670
670
  - AI가 중요한 논의/결정이라고 판단할 때
671
671
  - 사용자가 "이거 기록해줘"라고 요청할 때
672
672
 
673
673
  ### 10. docuking_plan
674
- 작업 계획을 \`zz_AI_Plan/\` 폴더에 생성/업데이트합니다 (로컬 전용, 킹플랜).
674
+ 작업 계획을 \`zzz_ai_Plan/\` 폴더에 생성/업데이트합니다 (로컬 전용, 킹플랜).
675
675
  - 작업 시작 시 계획 생성
676
676
  - 진행하면서 단계별 결과 upsert
677
677
  - planId로 기존 계획 찾아서 업데이트
@@ -743,7 +743,7 @@ DocuKing에는 **오너(Owner)**와 **참여자(Co-worker)** 두 가지 권한
743
743
 
744
744
  **예시:**
745
745
  \`\`\`
746
- z_DocuKing/
746
+ yy_All_Docu/
747
747
  ├── 정책/
748
748
  │ └── README.md ← 오너가 작성
749
749
  ├── 기획/
@@ -757,7 +757,7 @@ z_DocuKing/
757
757
  **특징:**
758
758
  - 프로젝트에 초대받아 참여한 사람
759
759
  - **읽기**: 전체 문서 Pull 가능 (오너의 문서도 볼 수 있음)
760
- - **쓰기**: 자신의 폴더(\`zz_Coworker_{이름}/\`)에만 Push 가능
760
+ - **쓰기**: 자신의 폴더(\`yy_All_Docu/yy_Coworker_{이름}/\`)에만 Push 가능
761
761
  - API Key: \`sk_cw_\`로 시작
762
762
  - 프로젝트 설정 변경 불가능
763
763
 
@@ -766,36 +766,39 @@ z_DocuKing/
766
766
  2. MCP 설정 (한 번만)
767
767
  3. 프로젝트 연결 (\`docuking_init\`)
768
768
  4. Pull로 오너의 문서 가져오기 (\`docuking_pull\`)
769
- 5. 내 폴더에 문서 작성 (\`zz_Coworker_{이름}/\`)
769
+ 5. 내 폴더에 문서 작성 (\`yy_All_Docu/yy_Coworker_{이름}/\`)
770
770
  6. Push (\`docuking_push\`)
771
771
 
772
- **폴더 구조 (z_DocuKing과 zz_Coworker는 같은 레벨):**
772
+ **폴더 구조:**
773
773
  \`\`\`
774
774
  프로젝트/
775
- ├── src/ ← 소스 코드 (git 관리)
776
- ├── z_DocuKing/ 오너의 문서 공간
775
+ ├── src/ ← 소스 코드 (git 관리)
776
+ ├── yy_All_Docu/ 동기화 대상 (Push/Pull)
777
777
  │ ├── 정책/
778
- │ │ └── README.md ← 오너의 파일 (읽기만 가능)
779
- └── 기획/
780
- └── 요구사항.md ← 오너의 파일 (읽기만 가능)
781
- └── zz_Coworker_김개발/ ← 참여자 "김개발"의 폴더 (z_DocuKing과 같은 레벨!)
782
- ├── 제안서.md ← 여기에만 Push 가능
783
- └── 수정안.md ← 여기에만 Push 가능
778
+ │ │ └── README.md ← 오너의 파일 (읽기만 가능)
779
+ ├── 기획/
780
+ └── 요구사항.md ← 오너의 파일 (읽기만 가능)
781
+ └── yy_Coworker_김개발/ ← 참여자 "김개발"의 폴더
782
+ ├── 제안서.md ← 여기에만 Push 가능
783
+ └── 수정안.md ← 여기에만 Push 가능
784
+ ├── zz_ai_Talk/ ← AI 대화록 (로컬 전용)
785
+ ├── zz_ai_Todo/ ← AI 투두 (로컬 전용)
786
+ └── zzz_ai_Plan/ ← AI 플랜 (로컬 전용)
784
787
  \`\`\`
785
788
 
786
789
  **중요 규칙:**
787
- - 코워커 폴더(\`zz_Coworker_{이름}/\`)는 z_DocuKing과 같은 레벨에 생성됨
788
- - 참여자는 Pull로 z_DocuKing/ 폴더의 오너 문서를 볼 수 있음
790
+ - 코워커 폴더(\`yy_Coworker_{이름}/\`)는 yy_All_Docu/ 안에 생성됨
791
+ - 참여자는 Pull로 yy_All_Docu/ 폴더의 오너 문서를 볼 수 있음
789
792
  - 참여자는 자신의 폴더에만 Push 가능
790
793
  - \`docuking_status\`로 현재 권한과 작업 폴더 확인 가능
791
794
 
792
795
  **참여자가 오너의 파일을 수정하고 싶을 때:**
793
- 1. Pull로 오너의 파일을 로컬에 가져옴 (z_DocuKing/에 저장됨)
796
+ 1. Pull로 오너의 파일을 로컬에 가져옴 (yy_All_Docu/에 저장됨)
794
797
  2. 내용을 참고하여 자신의 폴더에 수정 제안 작성
795
- - 예: \`zz_Coworker_김개발/정책_README_수정제안.md\`로 작성 후 Push
798
+ - 예: \`yy_All_Docu/yy_Coworker_김개발/정책_README_수정제안.md\`로 작성 후 Push
796
799
 
797
800
  **AI가 참여자에게 안내해야 할 내용:**
798
- - 참여자의 작업 폴더는 \`zz_Coworker_{이름}/\` (z_DocuKing이 아님)
801
+ - 참여자의 작업 폴더는 \`yy_All_Docu/yy_Coworker_{이름}/\`
799
802
  - 오너의 파일을 직접 수정할 수 없으므로, 제안서 형태로 작성하도록 안내
800
803
 
801
804
  ## AI 응답 가이드 (중요!)
@@ -849,7 +852,7 @@ Push 완료! 총 10개 파일 중 3개 업로드, 6개 스킵(변경 없음), 1
849
852
  ### 핵심 원칙 (AI 행동 지침)
850
853
 
851
854
  1. **프로젝트 = 폴더**: 하나의 폴더가 하나의 프로젝트
852
- 2. **각 폴더마다 z_DocuKing/ 생성**: 여러 폴더를 각각 연결 가능
855
+ 2. **각 폴더마다 yy_All_Docu/ 생성**: 여러 폴더를 각각 연결 가능
853
856
  3. **현재 열려있는 폴더 기준**: 명령어는 현재 작업 중인 폴더에 적용
854
857
  4. **커밋 메시지 필수**: push 시 반드시 message 파라미터 포함
855
858
  5. **변경 없는 파일 자동 스킵**: 해시 비교로 변경 감지, 스킵된 파일은 결과에 명시
@@ -879,7 +882,7 @@ AI: (결정이 내려졌으므로 docuking_talk 호출)
879
882
  })
880
883
  \`\`\`
881
884
 
882
- **저장 위치:** \`z_DocuKing/z_Talk/YYYY-MM-DD_HHMM__제목.md\` (플랫 구조)
885
+ **저장 위치:** \`zz_ai_Talk/YYYY-MM-DD_HHMM__제목.md\` (플랫 구조, 로컬 전용)
883
886
 
884
887
  ### 작업 계획 관리 (docuking_plan, docuking_done)
885
888
 
@@ -930,7 +933,7 @@ AI: docuking_done({
930
933
  })
931
934
  \`\`\`
932
935
 
933
- **저장 위치:** \`z_DocuKing/zz_Plan_Result/YYYY-MM-DD_HHMM__제목__planId.md\` (플랫 구조)
936
+ **저장 위치:** \`zzz_ai_Plan/YYYY-MM-DD_HHMM__제목__planId.md\` (플랫 구조, 로컬 전용)
934
937
 
935
938
  **핵심 가치:**
936
939
  - AI 세션이 끊겨도 (컴팩션, 세션 종료) 다음 AI가 계획 문서를 보고 이어서 작업 가능
@@ -985,7 +988,7 @@ AI: docuking_done({
985
988
  2. 프로젝트 ID, 이름, API 키 확인 (사용자가 제공하거나 요청)
986
989
  3. \`docuking_init(projectId, projectName, apiKey, localPath)\` 호출
987
990
  4. 연결 완료 메시지 전달:
988
- - "DocuKing 연결 완료! 📁 z_DocuKing/ 폴더가 생성되었습니다."
991
+ - "DocuKing 연결 완료! 📁 yy_All_Docu/ 폴더가 생성되었습니다."
989
992
  - "이제 'DocuKing에 올려줘' 명령을 사용할 수 있습니다."
990
993
 
991
994
  **⚠️ 매우 중요:**
@@ -998,28 +1001,28 @@ AI: docuking_done({
998
1001
  **핵심 개념:**
999
1002
  - **프로젝트 = 하나의 폴더**
1000
1003
  - 한 컴퓨터에서 여러 폴더를 각각 다른 DocuKing 프로젝트와 연결 가능
1001
- - 각 폴더마다 \`z_DocuKing/\` 폴더가 독립적으로 생성됨
1004
+ - 각 폴더마다 \`yy_All_Docu/\` 폴더가 독립적으로 생성됨
1002
1005
 
1003
1006
  **예시:**
1004
1007
  \`\`\`
1005
1008
  C:\\Projects\\MyApp\\
1006
1009
  ├── src/
1007
1010
  ├── package.json
1008
- └── z_DocuKing/ ← 프로젝트 A와 연결
1011
+ ├── yy_All_Docu/ ← 프로젝트 A와 연결 (동기화)
1012
+ ├── zz_ai_Talk/ ← AI 대화록 (로컬 전용)
1013
+ ├── zz_ai_Todo/ ← AI 투두 (로컬 전용)
1014
+ └── zzz_ai_Plan/ ← AI 플랜 (로컬 전용)
1009
1015
 
1010
1016
  C:\\Projects\\MyWebsite\\
1011
1017
  ├── pages/
1012
1018
  ├── components/
1013
- └── z_DocuKing/ ← 프로젝트 B와 연결
1014
-
1015
- D:\\Work\\ClientProject\\
1016
- ├── docs/
1017
- └── z_DocuKing/ ← 프로젝트 C와 연결
1019
+ ├── yy_All_Docu/ ← 프로젝트 B와 연결
1020
+ └── zz_ai_*/ ← 로컬 전용 폴더들
1018
1021
  \`\`\`
1019
1022
 
1020
1023
  **AI가 해야 할 일:**
1021
1024
  - 각 폴더에서 \`docuking_init\`을 호출하면 해당 폴더만 연결됨
1022
- - 다른 폴더로 이동하면 해당 폴더의 \`z_DocuKing/\`가 사용됨
1025
+ - 다른 폴더로 이동하면 해당 폴더의 \`yy_All_Docu/\`가 사용됨
1023
1026
  - 여러 프로젝트를 동시에 관리할 수 있음을 인지하고, 현재 작업 중인 폴더 기준으로 동작
1024
1027
 
1025
1028
  **고급: DOCUKING_REPOS 환경변수 (선택사항)**
@@ -1136,12 +1139,21 @@ docuking_init 호출 시 apiKey 파라미터를 포함해주세요.`,
1136
1139
  fs.mkdirSync(mainFolderPath, { recursive: true });
1137
1140
  }
1138
1141
 
1142
+ // zz_ai_* 폴더도 함께 생성 (로컬 전용)
1143
+ const aiFolders = ['zz_ai_Talk', 'zz_ai_Todo', 'zzz_ai_Plan'];
1144
+ for (const folder of aiFolders) {
1145
+ const folderPath = path.join(localPath, folder);
1146
+ if (!fs.existsSync(folderPath)) {
1147
+ fs.mkdirSync(folderPath, { recursive: true });
1148
+ }
1149
+ }
1150
+
1139
1151
  let coworkerFolderName = null;
1140
1152
  let coworkerFolderPath = null;
1141
1153
 
1142
1154
  if (isCoworker) {
1143
- // 협업자: yy_All_Docu/yy_{이름}/ 폴더 추가 생성
1144
- coworkerFolderName = `yy_${coworkerName}`;
1155
+ // 협업자: yy_All_Docu/yy_Coworker_{이름}/ 폴더 추가 생성
1156
+ coworkerFolderName = `yy_Coworker_${coworkerName}`;
1145
1157
  coworkerFolderPath = path.join(mainFolderPath, coworkerFolderName);
1146
1158
  if (!fs.existsSync(coworkerFolderPath)) {
1147
1159
  fs.mkdirSync(coworkerFolderPath, { recursive: true });
@@ -1193,9 +1205,9 @@ docuking_init 호출 시 apiKey 파라미터를 포함해주세요.`,
1193
1205
 
1194
1206
  폴더 구조:
1195
1207
  - yy_All_Docu/ : 동기화 대상 (킹폴더)
1196
- - zz_AI_Talk/ : AI 대화록 (로컬 전용, 킹톡)
1197
- - zz_AI_Todo/ : AI 투두 (로컬 전용, 킹투두)
1198
- - zz_AI_Plan/ : AI 플랜 (로컬 전용, 킹플랜)`,
1208
+ - zz_ai_Talk/ : AI 대화록 (로컬 전용, 킹톡)
1209
+ - zz_ai_Todo/ : AI 투두 (로컬 전용, 킹투두)
1210
+ - zzz_ai_Plan/ : AI 플랜 (로컬 전용, 킹플랜)`,
1199
1211
  },
1200
1212
  ],
1201
1213
  };
@@ -1255,15 +1267,15 @@ Git처럼 무엇을 변경했는지 명확히 작성해주세요.
1255
1267
  const coworkerMatch = apiKey.match(/^sk_[a-f0-9]+_cw_([^_]+)_/);
1256
1268
  const isCoworker = !!coworkerMatch;
1257
1269
  const coworkerName = coworkerMatch ? coworkerMatch[1] : null;
1258
- const coworkerFolderName = isCoworker ? `yy_${coworkerName}` : null;
1270
+ const coworkerFolderName = isCoworker ? `yy_Coworker_${coworkerName}` : null;
1259
1271
 
1260
- // 작업 폴더 결정: 모두 yy_All_Docu/ 사용, 협업자는 yy_All_Docu/yy_{이름}/ 에서 작업
1272
+ // 작업 폴더 결정: 모두 yy_All_Docu/ 사용, 협업자는 yy_All_Docu/yy_Coworker_{이름}/ 에서 작업
1261
1273
  const mainFolderPath = path.join(localPath, 'yy_All_Docu');
1262
1274
  let workingPath;
1263
1275
  let serverPathPrefix = ''; // 서버에 저장될 때 경로 접두사
1264
1276
 
1265
1277
  if (isCoworker) {
1266
- // 협업자: yy_All_Docu/yy_{이름}/ 폴더에서 Push
1278
+ // 협업자: yy_All_Docu/yy_Coworker_{이름}/ 폴더에서 Push
1267
1279
  workingPath = path.join(mainFolderPath, coworkerFolderName);
1268
1280
  serverPathPrefix = `${coworkerFolderName}/`;
1269
1281
 
@@ -1308,7 +1320,7 @@ docuking_init을 먼저 실행하세요.`,
1308
1320
  };
1309
1321
  }
1310
1322
 
1311
- // 서버 경로: 코워커는 zz_Coworker_{이름}/파일경로, 오너는 파일경로
1323
+ // 서버 경로: 코워커는 yy_Coworker_{이름}/파일경로, 오너는 파일경로
1312
1324
  const serverFilePath = serverPathPrefix + filePath;
1313
1325
  filesToPush.push({ path: filePath, serverPath: serverFilePath, fullPath, fileType });
1314
1326
  }
@@ -1475,7 +1487,7 @@ docuking_init을 먼저 실행하세요.`,
1475
1487
  },
1476
1488
  body: JSON.stringify({
1477
1489
  projectId,
1478
- path: file.serverPath, // 서버 경로 (코워커는 zz_Coworker_{이름}/파일경로)
1490
+ path: file.serverPath, // 서버 경로 (코워커는 yy_Coworker_{이름}/파일경로)
1479
1491
  content,
1480
1492
  encoding, // 'utf-8' 또는 'base64'
1481
1493
  message, // 커밋 메시지
@@ -2057,7 +2069,7 @@ async function handleStatus(args) {
2057
2069
  const coworkerMatch = apiKey.match(/^sk_[a-f0-9]+_cw_([^_]+)_/);
2058
2070
  const isCoworker = !!coworkerMatch;
2059
2071
  const coworkerName = coworkerMatch ? coworkerMatch[1] : null;
2060
- const coworkerFolderName = isCoworker ? `yy_${coworkerName}` : null;
2072
+ const coworkerFolderName = isCoworker ? `yy_Coworker_${coworkerName}` : null;
2061
2073
 
2062
2074
  // 권한 정보 구성
2063
2075
  let permissionInfo = '';
@@ -2252,8 +2264,8 @@ function generatePlanId() {
2252
2264
  async function handleTodo(args) {
2253
2265
  const { localPath, action, todo, todoId } = args;
2254
2266
 
2255
- // zz_AI_Todo 폴더 경로 (로컬 전용, 킹투두)
2256
- const todoBasePath = path.join(localPath, 'zz_AI_Todo');
2267
+ // zz_ai_Todo 폴더 경로 (로컬 전용, 킹투두)
2268
+ const todoBasePath = path.join(localPath, 'zz_ai_Todo');
2257
2269
  const todoFilePath = path.join(todoBasePath, 'z_King_Todo.md');
2258
2270
 
2259
2271
  // 폴더 생성
@@ -2414,7 +2426,7 @@ async function handleTodo(args) {
2414
2426
  text: `📋 킹투두 미결: 없음
2415
2427
 
2416
2428
  ✅ 완료: ${completedCount}개
2417
- 📁 전체 기록: zz_AI_Todo/z_King_Todo.md`,
2429
+ 📁 전체 기록: zz_ai_Todo/z_King_Todo.md`,
2418
2430
  }],
2419
2431
  };
2420
2432
  }
@@ -2429,7 +2441,7 @@ async function handleTodo(args) {
2429
2441
  ${listText}
2430
2442
 
2431
2443
  ✅ 완료: ${completedCount}개
2432
- 📁 전체 기록: zz_AI_Todo/z_King_Todo.md`,
2444
+ 📁 전체 기록: zz_ai_Todo/z_King_Todo.md`,
2433
2445
  }],
2434
2446
  };
2435
2447
  }
@@ -2443,8 +2455,8 @@ ${listText}
2443
2455
  async function handleTalk(args) {
2444
2456
  const { localPath, title, content, tags = [] } = args;
2445
2457
 
2446
- // zz_AI_Talk 폴더 경로 (로컬 전용, 킹톡)
2447
- const talkBasePath = path.join(localPath, 'zz_AI_Talk');
2458
+ // zz_ai_Talk 폴더 경로 (로컬 전용, 킹톡)
2459
+ const talkBasePath = path.join(localPath, 'zz_ai_Talk');
2448
2460
 
2449
2461
  // 날짜 기반 파일명 생성
2450
2462
  const { fileName, timestamp } = generateDateFileName(title);
@@ -2496,8 +2508,8 @@ ${content}
2496
2508
  async function handlePlan(args) {
2497
2509
  const { localPath, planId, title, goal, steps = [], notes } = args;
2498
2510
 
2499
- // zz_AI_Plan 폴더 경로 (로컬 전용, 킹플랜)
2500
- const planBasePath = path.join(localPath, 'zz_AI_Plan');
2511
+ // zzz_ai_Plan 폴더 경로 (로컬 전용, 킹플랜)
2512
+ const planBasePath = path.join(localPath, 'zzz_ai_Plan');
2501
2513
 
2502
2514
  // 기존 계획 업데이트 또는 새 계획 생성
2503
2515
  let targetPlanId = planId;
@@ -2646,8 +2658,8 @@ function findPlanFiles(basePath, planId) {
2646
2658
  async function handleDone(args) {
2647
2659
  const { localPath, planId, summary, artifacts = [] } = args;
2648
2660
 
2649
- // zz_AI_Plan 폴더 경로 (로컬 전용, 킹플랜)
2650
- const planBasePath = path.join(localPath, 'zz_AI_Plan');
2661
+ // zzz_ai_Plan 폴더 경로 (로컬 전용, 킹플랜)
2662
+ const planBasePath = path.join(localPath, 'zzz_ai_Plan');
2651
2663
 
2652
2664
  // 계획 파일 찾기
2653
2665
  const planFiles = findPlanFiles(planBasePath, planId);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "docuking-mcp",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "description": "DocuKing MCP Server - AI 시대의 문서 협업 플랫폼",
5
5
  "type": "module",
6
6
  "main": "index.js",
package/DEPLOY_TASK.md DELETED
@@ -1,33 +0,0 @@
1
- # MCP 패키지 배포 작업지시
2
-
3
- ## 작업 개요
4
- docurepo-mcp 패키지 v1.0.5를 npm에 배포
5
-
6
- ## 변경 사항
7
- - Push 시 Sync 상태 API 호출 추가
8
- - 시작: `POST /projects/:id/sync/start` (totalFiles 전달)
9
- - 진행: `POST /projects/:id/sync/progress` (5개마다)
10
- - 완료: `POST /projects/:id/sync/complete`
11
-
12
- ## 배포 절차
13
-
14
- ### 1. npm 로그인 확인
15
- ```bash
16
- cd c:\2025_Project\docurepo\docurepo-mcp
17
- npm whoami
18
- ```
19
- - 로그인 안되어 있으면: `npm login`
20
-
21
- ### 2. 패키지 배포
22
- ```bash
23
- npm publish
24
- ```
25
-
26
- ### 3. 배포 확인
27
- ```bash
28
- npm view docurepo-mcp version
29
- ```
30
- - 1.0.5가 나오면 성공
31
-
32
- ## 완료 후
33
- - 사용자가 `npx docurepo-mcp` 재실행하면 새 버전 적용됨