docuking-mcp 1.4.1 → 1.5.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.
- package/index.js +20 -22
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -130,7 +130,7 @@ docuking_done({
|
|
|
130
130
|
### 절대 규칙
|
|
131
131
|
- **작업 시작 전 반드시 \`docuking_plan\` 호출**
|
|
132
132
|
- **작업 완료 후 반드시 \`docuking_done\` 호출**
|
|
133
|
-
- 결과는 \`z_DocuKing/
|
|
133
|
+
- 결과는 \`z_DocuKing/zz_Plan_Result/\`에 자동 저장됨 (플랫 구조)
|
|
134
134
|
`;
|
|
135
135
|
|
|
136
136
|
try {
|
|
@@ -357,7 +357,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
357
357
|
},
|
|
358
358
|
{
|
|
359
359
|
name: 'docuking_talk',
|
|
360
|
-
description: '의미 있는 대화 내용을
|
|
360
|
+
description: '의미 있는 대화 내용을 z_DocuKing/z_Talk/ 폴더에 기록합니다 (플랫 구조). AI가 중요한 논의/결정이라고 판단하거나, 사용자가 "이거 기록해줘"라고 요청할 때 사용.',
|
|
361
361
|
inputSchema: {
|
|
362
362
|
type: 'object',
|
|
363
363
|
properties: {
|
|
@@ -384,7 +384,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
|
384
384
|
},
|
|
385
385
|
{
|
|
386
386
|
name: 'docuking_plan',
|
|
387
|
-
description: '작업 계획 문서를
|
|
387
|
+
description: '작업 계획 문서를 z_DocuKing/zz_Plan_Result/ 폴더에 생성/업데이트합니다 (플랫 구조). 작업 시작 시 계획을 작성하고, 진행하면서 결과를 upsert합니다.',
|
|
388
388
|
inputSchema: {
|
|
389
389
|
type: 'object',
|
|
390
390
|
properties: {
|
|
@@ -553,12 +553,12 @@ zz_Coworker_*/
|
|
|
553
553
|
특정 커밋으로 되돌립니다. (웹 탐색기에서 사용 가능)
|
|
554
554
|
|
|
555
555
|
### 9. docuking_talk
|
|
556
|
-
의미 있는 대화 내용을 \`z_Talk/\` 폴더에
|
|
556
|
+
의미 있는 대화 내용을 \`z_DocuKing/z_Talk/\` 폴더에 기록합니다 (플랫 구조).
|
|
557
557
|
- AI가 중요한 논의/결정이라고 판단할 때
|
|
558
558
|
- 사용자가 "이거 기록해줘"라고 요청할 때
|
|
559
559
|
|
|
560
560
|
### 10. docuking_plan
|
|
561
|
-
작업 계획을 \`
|
|
561
|
+
작업 계획을 \`z_DocuKing/zz_Plan_Result/\` 폴더에 생성/업데이트합니다 (플랫 구조).
|
|
562
562
|
- 작업 시작 시 계획 생성
|
|
563
563
|
- 진행하면서 단계별 결과 upsert
|
|
564
564
|
- planId로 기존 계획 찾아서 업데이트
|
|
@@ -766,7 +766,7 @@ AI: (결정이 내려졌으므로 docuking_talk 호출)
|
|
|
766
766
|
})
|
|
767
767
|
\`\`\`
|
|
768
768
|
|
|
769
|
-
**저장 위치:** \`z_DocuKing/z_Talk/YYYY
|
|
769
|
+
**저장 위치:** \`z_DocuKing/z_Talk/YYYY-MM-DD_HHMM__제목.md\` (플랫 구조)
|
|
770
770
|
|
|
771
771
|
### 작업 계획 관리 (docuking_plan, docuking_done)
|
|
772
772
|
|
|
@@ -817,7 +817,7 @@ AI: docuking_done({
|
|
|
817
817
|
})
|
|
818
818
|
\`\`\`
|
|
819
819
|
|
|
820
|
-
**저장 위치:** \`z_DocuKing/
|
|
820
|
+
**저장 위치:** \`z_DocuKing/zz_Plan_Result/YYYY-MM-DD_HHMM__제목__planId.md\` (플랫 구조)
|
|
821
821
|
|
|
822
822
|
**핵심 가치:**
|
|
823
823
|
- AI 세션이 끊겨도 (컴팩션, 세션 종료) 다음 AI가 계획 문서를 보고 이어서 작업 가능
|
|
@@ -2039,17 +2039,16 @@ function generatePlanId() {
|
|
|
2039
2039
|
async function handleTalk(args) {
|
|
2040
2040
|
const { localPath, title, content, tags = [] } = args;
|
|
2041
2041
|
|
|
2042
|
-
// z_Talk 폴더 경로 (z_DocuKing 아래)
|
|
2042
|
+
// z_Talk 폴더 경로 (z_DocuKing 아래) - 플랫 구조
|
|
2043
2043
|
const talkBasePath = path.join(localPath, 'z_DocuKing', 'z_Talk');
|
|
2044
2044
|
|
|
2045
2045
|
// 날짜 기반 파일명 생성
|
|
2046
|
-
const { fileName,
|
|
2047
|
-
const
|
|
2048
|
-
const talkFilePath = path.join(talkFolderPath, fileName);
|
|
2046
|
+
const { fileName, timestamp } = generateDateFileName(title);
|
|
2047
|
+
const talkFilePath = path.join(talkBasePath, fileName);
|
|
2049
2048
|
|
|
2050
2049
|
// 폴더 생성
|
|
2051
|
-
if (!fs.existsSync(
|
|
2052
|
-
fs.mkdirSync(
|
|
2050
|
+
if (!fs.existsSync(talkBasePath)) {
|
|
2051
|
+
fs.mkdirSync(talkBasePath, { recursive: true });
|
|
2053
2052
|
}
|
|
2054
2053
|
|
|
2055
2054
|
// 태그 문자열
|
|
@@ -2093,8 +2092,8 @@ ${content}
|
|
|
2093
2092
|
async function handlePlan(args) {
|
|
2094
2093
|
const { localPath, planId, title, goal, steps = [], notes } = args;
|
|
2095
2094
|
|
|
2096
|
-
//
|
|
2097
|
-
const planBasePath = path.join(localPath, 'z_DocuKing', '
|
|
2095
|
+
// zz_Plan_Result 폴더 경로 (z_DocuKing 아래) - 플랫 구조
|
|
2096
|
+
const planBasePath = path.join(localPath, 'z_DocuKing', 'zz_Plan_Result');
|
|
2098
2097
|
|
|
2099
2098
|
// 기존 계획 업데이트 또는 새 계획 생성
|
|
2100
2099
|
let targetPlanId = planId;
|
|
@@ -2120,16 +2119,15 @@ async function handlePlan(args) {
|
|
|
2120
2119
|
} else {
|
|
2121
2120
|
// 새 계획 생성
|
|
2122
2121
|
targetPlanId = generatePlanId();
|
|
2123
|
-
const { fileName,
|
|
2124
|
-
const planFolderPath = path.join(planBasePath, yearMonth);
|
|
2122
|
+
const { fileName, timestamp } = generateDateFileName(title);
|
|
2125
2123
|
|
|
2126
|
-
if (!fs.existsSync(
|
|
2127
|
-
fs.mkdirSync(
|
|
2124
|
+
if (!fs.existsSync(planBasePath)) {
|
|
2125
|
+
fs.mkdirSync(planBasePath, { recursive: true });
|
|
2128
2126
|
}
|
|
2129
2127
|
|
|
2130
2128
|
// 파일명에 planId 포함
|
|
2131
2129
|
const fileNameWithId = fileName.replace('.md', `__${targetPlanId}.md`);
|
|
2132
|
-
planFilePath = path.join(
|
|
2130
|
+
planFilePath = path.join(planBasePath, fileNameWithId);
|
|
2133
2131
|
}
|
|
2134
2132
|
|
|
2135
2133
|
// 현재 시간
|
|
@@ -2244,8 +2242,8 @@ function findPlanFiles(basePath, planId) {
|
|
|
2244
2242
|
async function handleDone(args) {
|
|
2245
2243
|
const { localPath, planId, summary, artifacts = [] } = args;
|
|
2246
2244
|
|
|
2247
|
-
//
|
|
2248
|
-
const planBasePath = path.join(localPath, 'z_DocuKing', '
|
|
2245
|
+
// zz_Plan_Result 폴더 경로 (z_DocuKing 아래) - 플랫 구조
|
|
2246
|
+
const planBasePath = path.join(localPath, 'z_DocuKing', 'zz_Plan_Result');
|
|
2249
2247
|
|
|
2250
2248
|
// 계획 파일 찾기
|
|
2251
2249
|
const planFiles = findPlanFiles(planBasePath, planId);
|