@milcho0604/velog-mcp 0.4.2 → 0.6.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/README.ko.md +44 -6
- package/README.md +40 -6
- package/dist/client.d.ts +1 -1
- package/dist/client.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/series.d.ts +47 -0
- package/dist/series.js +109 -0
- package/dist/series.js.map +1 -0
- package/dist/thumbnail.d.ts +63 -0
- package/dist/thumbnail.js +139 -0
- package/dist/thumbnail.js.map +1 -0
- package/dist/tools/drafts.js +203 -26
- package/dist/tools/drafts.js.map +1 -1
- package/dist/tools/publish.js +71 -19
- package/dist/tools/publish.js.map +1 -1
- package/docs/architecture.md +1 -1
- package/docs/decisions/0001-why-build-our-own.md +1 -1
- package/docs/tools.md +1 -1
- package/npm-shrinkwrap.json +3 -3
- package/package.json +2 -4
package/dist/tools/drafts.js
CHANGED
|
@@ -16,6 +16,8 @@ import { resolveMyUsername } from "../me.js";
|
|
|
16
16
|
import { assertOwned, assertOwnsSeries } from "../ownership.js";
|
|
17
17
|
import { READ_ONLY } from "./posts.js";
|
|
18
18
|
import { serializeWrite } from "../serial.js";
|
|
19
|
+
import { chooseThumbnail, describeThumbnail } from "../thumbnail.js";
|
|
20
|
+
import { seriesHintSafely, resolveSeriesId } from "../series.js";
|
|
19
21
|
/**
|
|
20
22
|
* ★ 발행 차단 지점. 이 값은 파라미터가 아니라 상수다.
|
|
21
23
|
* true = 임시저장(남에게 보이지 않음), false = 발행(되돌릴 수 없음).
|
|
@@ -37,6 +39,35 @@ const QUERY_POST_STATE = `
|
|
|
37
39
|
post(input: $input) { id title is_temp meta user { username } }
|
|
38
40
|
}
|
|
39
41
|
`;
|
|
42
|
+
/**
|
|
43
|
+
* 초안 생성 직후 시리즈를 붙일 때 쓴다. `meta` 는 다시 실어 보내야 하고
|
|
44
|
+
* (editPost 는 전체 교체다), `series` 는 붙었는지 **확인**하는 데 쓴다.
|
|
45
|
+
*/
|
|
46
|
+
const QUERY_POST_FOR_SERIES = `
|
|
47
|
+
query PostForSeries($input: ReadPostInput!) {
|
|
48
|
+
post(input: $input) {
|
|
49
|
+
id title body tags url_slug thumbnail is_temp meta
|
|
50
|
+
series { id name }
|
|
51
|
+
user { username }
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
`;
|
|
55
|
+
/**
|
|
56
|
+
* 썸네일 입력 — 세 상태를 구분해야 한다.
|
|
57
|
+
*
|
|
58
|
+
* 미지정(undefined) → 본문 첫 이미지로 **자동** 채운다
|
|
59
|
+
* URL → 그대로 쓴다
|
|
60
|
+
* `null` / `""` → **자동 채움을 끈다** (일부러 비워 두는 사람의 의도를 지킨다)
|
|
61
|
+
*
|
|
62
|
+
* ★ nullable 을 뺐다가는 "끄는 방법"이 사라진다. 그러면 자동 채움이 강제가 된다.
|
|
63
|
+
*/
|
|
64
|
+
const THUMBNAIL_FIELD = z
|
|
65
|
+
.string()
|
|
66
|
+
.refine((v) => v === '' || isSafeImageUrl(v), 'http(s) 이미지 URL 만 허용합니다')
|
|
67
|
+
.nullable()
|
|
68
|
+
.optional()
|
|
69
|
+
.describe('썸네일 이미지 URL (http/https). 생략하면 본문 첫 이미지로 자동 설정한다. ' +
|
|
70
|
+
'자동 설정을 원하지 않으면 null 을 준다');
|
|
40
71
|
/** 벨로그가 정말 임시저장으로 받았는지 응답으로 확인한다. */
|
|
41
72
|
function assertStayedDraft(post) {
|
|
42
73
|
if (post.is_temp !== true) {
|
|
@@ -44,6 +75,116 @@ function assertStayedDraft(post) {
|
|
|
44
75
|
`(is_temp=${post.is_temp}, id=${post.id}). 즉시 벨로그에서 확인하세요.`);
|
|
45
76
|
}
|
|
46
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* 초안을 만든 **직후** 시리즈를 붙인다.
|
|
80
|
+
*
|
|
81
|
+
* ★★ 왜 한 번 더 부르나 — 벨로그는 임시저장 **생성** 단계에서 `series_id` 를
|
|
82
|
+
* 조용히 버린다(호출부 주석의 서버 코드). `edit` 경로에는 그 조건이 없다.
|
|
83
|
+
* 이 시점의 서버는 초안 id 와 해석 끝난 series_id 를 이미 쥐고 있으므로
|
|
84
|
+
* 사용자가 두 번 부를 이유가 없다.
|
|
85
|
+
*
|
|
86
|
+
* ★★ **`post:<id>` 줄에서 돈다.** 생성은 `post:new` 줄에 있는데, 그 줄에 그대로
|
|
87
|
+
* 두면 `update_draft` 나 `publish_draft` 와 **다른 줄**이 되어 서로를 못 본다.
|
|
88
|
+
* 실제로 겹치면 늦게 도착한 이 edit 이 `DRAFT_ONLY` 로 방금 발행된 글을 다시
|
|
89
|
+
* 비공개 초안으로 내린다. 두 도구 다 성공을 보고하므로 아무도 모른다.
|
|
90
|
+
* (코덱스 교차검증 1차에서 재현됨. `velog_list_drafts` 는 직렬화되지 않아
|
|
91
|
+
* 생성이 끝나기 전에도 새 id 를 볼 수 있다.)
|
|
92
|
+
*
|
|
93
|
+
* ★★ 어떤 경우에도 **던지지 않는다.** 초안은 이미 저장됐다. 여기서 던지면 저장이
|
|
94
|
+
* 끝난 호출이 실패로 보고되고 사용자가 다시 부른다.
|
|
95
|
+
* ⚠️ 다만 이것이 중복 생성을 **막지는 못한다.** MCP SDK 는 호출이 취소되면
|
|
96
|
+
* 서버가 무엇을 반환하든 호출자 쪽 Promise 를 reject 한다. 취소된 뒤 재시도하면
|
|
97
|
+
* 초안은 두 개가 된다. 이건 이 함수가 없을 때도 마찬가지이고(생성 자체가 그렇다),
|
|
98
|
+
* 여기서 하는 일은 그 창을 넓히지 않는 것뿐이다. 예전 주석은 이걸 막는다고
|
|
99
|
+
* 적고 있었는데 사실이 아니었다.
|
|
100
|
+
*
|
|
101
|
+
* ★ `meta` 를 다시 읽어서 실어 보낸다. editPost 는 전체 교체라 `{}` 를 보내면
|
|
102
|
+
* 벨로그가 생성 때 만들어 둔 short_description 등이 지워진다.
|
|
103
|
+
*
|
|
104
|
+
* ★ 붙었다고 **말하기 전에 재조회로 확인한다.** editPost 응답은 갱신 전에 읽은
|
|
105
|
+
* post 를 돌려주므로 그것만 보고는 알 수 없다.
|
|
106
|
+
*
|
|
107
|
+
* ★ 실패를 두 종류로 나눈다. 아무것도 안 쓴 것이 확실하면 '적용되지 않음'이고,
|
|
108
|
+
* edit 을 보낸 뒤 확인에 실패했으면 '반영 여부 불명'이다. 후자를 전자로 적으면
|
|
109
|
+
* 사용자가 붙어 있는 시리즈를 다시 붙이려 든다.
|
|
110
|
+
*
|
|
111
|
+
* @returns 결과에 이어붙일 안내문. 성공이든 실패든 사람이 읽을 말을 돌려준다.
|
|
112
|
+
*/
|
|
113
|
+
function manualFixNote(postId, seriesId, lead) {
|
|
114
|
+
return (`${lead}\n\n` +
|
|
115
|
+
` 이어서 붙이려면 \`velog_update_draft\` 를 부르되, **전체 교체**라서 원래 값을 ` +
|
|
116
|
+
`다시 줘야 합니다. \`id="${postId}"\`, \`series_id="${seriesId}"\`, 그리고 방금 저장한 ` +
|
|
117
|
+
`title 과 body 를 그대로. tags 와 url_slug 와 thumbnail 을 생략하면 지워지거나 ` +
|
|
118
|
+
`새로 만들어집니다. 현재 값은 \`velog_get_post\` 로 읽을 수 있습니다.`);
|
|
119
|
+
}
|
|
120
|
+
async function attachSeriesToNewDraft(client, postId, seriesId, signal) {
|
|
121
|
+
const notApplied = manualFixNote(postId, seriesId, '\n\n⚠️ 시리즈는 **적용되지 않았습니다.** 벨로그가 임시저장 생성 단계에서' +
|
|
122
|
+
' series_id 를 무시하는데, 이어서 붙이려던 시도도 실패했습니다.');
|
|
123
|
+
const unknown = manualFixNote(postId, seriesId, '\n\n⚠️ 시리즈가 **붙었는지 확인하지 못했습니다.** 수정 요청은 보냈지만 결과를' +
|
|
124
|
+
' 확인하는 조회가 실패했습니다. 이미 붙어 있을 수 있으니 먼저 확인하세요.');
|
|
125
|
+
// ★ 이 글 전용 줄로 넘긴다. 이유는 위 주석.
|
|
126
|
+
// ⚠️ 바깥은 `post:new` 줄이다. 서버가 id 로 하필 "new" 를 돌려주면 두 키가 같아져
|
|
127
|
+
// 안쪽이 바깥쪽을 기다리는 교착이 된다. 그때는 붙이기를 포기하는 쪽이 낫다.
|
|
128
|
+
if (postId === 'new')
|
|
129
|
+
return notApplied;
|
|
130
|
+
return serializeWrite(`post:${postId}`, async () => {
|
|
131
|
+
let sent = false;
|
|
132
|
+
try {
|
|
133
|
+
const before = await client.request(QUERY_POST_FOR_SERIES, { input: { id: postId } }, { signal });
|
|
134
|
+
// 방금 만든 글을 못 읽으면 손대지 않는다.
|
|
135
|
+
if (!before.post || before.post.is_temp !== true)
|
|
136
|
+
return notApplied;
|
|
137
|
+
// ★ 이미 붙어 있으면 아무것도 쓰지 않는다. 벨로그가 언젠가 생성 단계에서도
|
|
138
|
+
// 붙이기 시작하면 이 함수는 조회 한 번으로 끝나야 한다.
|
|
139
|
+
if (before.post.series?.id === seriesId) {
|
|
140
|
+
return `\n\n📚 시리즈 **${before.post.series.name ?? seriesId}** 에 넣었습니다.`;
|
|
141
|
+
}
|
|
142
|
+
// ★ 우리가 방금 만든 글이라 소유권은 자명해 보이지만 검증한다. 이 레포는
|
|
143
|
+
// "자명하다"에 이미 당했고(ownership.ts), 구조 테스트가 editPost 마다 짝을
|
|
144
|
+
// 요구한다. 여기에 예외를 만들면 그 가드가 그만큼 헐거워진다.
|
|
145
|
+
await assertOwned(client, before.post, 'velog_create_draft');
|
|
146
|
+
// ★★ **생성 당시의 입력이 아니라 방금 읽은 현재 값**으로 전체교체를 만든다.
|
|
147
|
+
// editPost 는 전체 교체다. 생성 응답이 늦는 사이 update_draft 가 먼저
|
|
148
|
+
// `post:<id>` 줄을 잡고 제목·본문을 고칠 수 있는데, 그때 낡은 생성 입력을
|
|
149
|
+
// 다시 펼치면 그 수정이 통째로 되돌아간다. 두 호출 다 성공을 보고하므로
|
|
150
|
+
// 아무도 모른다. (코덱스 재검증에서 재현됨)
|
|
151
|
+
const input = {
|
|
152
|
+
id: postId,
|
|
153
|
+
title: before.post.title ?? '',
|
|
154
|
+
body: before.post.body ?? '',
|
|
155
|
+
tags: before.post.tags ?? [],
|
|
156
|
+
url_slug: before.post.url_slug ?? undefined,
|
|
157
|
+
meta: before.post.meta ?? {},
|
|
158
|
+
series_id: seriesId,
|
|
159
|
+
...DRAFT_ONLY, // ★ 마지막에 펼친다 — 초안 상태를 무엇도 못 덮게
|
|
160
|
+
};
|
|
161
|
+
// ★ 썸네일은 있을 때만 싣는다. 빈 값을 보내면 일부러 비워 둔 상태를 덮는다.
|
|
162
|
+
if (before.post.thumbnail)
|
|
163
|
+
input['thumbnail'] = before.post.thumbnail;
|
|
164
|
+
// ★ `sent` 를 세우는 자리가 중요하다. mutate() 는 fetch 보다 **먼저**
|
|
165
|
+
// 취소를 검사한다(client.ts 의 `options.signal?.throwIfAborted()`).
|
|
166
|
+
// 호출 직전에 무조건 세우면 요청이 0회인데도 '보냈다'가 되어, 아무것도
|
|
167
|
+
// 안 쓴 실패를 '반영 여부 불명'으로 잘못 보고한다. 같은 검사를 여기서
|
|
168
|
+
// 먼저 해서 그 경우를 '미적용' 쪽으로 갈라낸다.
|
|
169
|
+
signal?.throwIfAborted();
|
|
170
|
+
sent = true;
|
|
171
|
+
await client.mutate(MUTATION_EDIT_POST, { input }, { signal });
|
|
172
|
+
const after = await client.request(QUERY_POST_FOR_SERIES, { input: { id: postId } }, { signal });
|
|
173
|
+
// ★ 초안이 아니게 됐으면 붙었는지보다 그게 급하다.
|
|
174
|
+
if (after.post?.is_temp !== true) {
|
|
175
|
+
return ('\n\n🚨 시리즈를 붙이는 과정에서 이 글이 **임시저장이 아니게 됐습니다**' +
|
|
176
|
+
` (is_temp=${String(after.post?.is_temp)}, id=${postId}). 즉시 벨로그에서 확인하세요.`);
|
|
177
|
+
}
|
|
178
|
+
if (after.post.series?.id !== seriesId)
|
|
179
|
+
return notApplied;
|
|
180
|
+
return `\n\n📚 시리즈 **${after.post.series.name ?? seriesId}** 에 넣었습니다.`;
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
// 보내기 전에 죽었으면 아무것도 안 썼다. 보낸 뒤라면 반영됐을 수 있다.
|
|
184
|
+
return sent ? unknown : notApplied;
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
}
|
|
47
188
|
function draftResult(post, verb) {
|
|
48
189
|
const username = post.user?.username;
|
|
49
190
|
const where = username
|
|
@@ -71,24 +212,38 @@ export function registerDraftTools(server, client) {
|
|
|
71
212
|
body: z.string().min(1).describe('본문 (마크다운)'),
|
|
72
213
|
tags: z.array(z.string()).default([]).describe('태그 목록'),
|
|
73
214
|
url_slug: z.string().optional().describe('생략하면 제목에서 생성'),
|
|
74
|
-
thumbnail:
|
|
215
|
+
thumbnail: THUMBNAIL_FIELD,
|
|
216
|
+
series_id: z
|
|
75
217
|
.string()
|
|
76
|
-
.refine(isSafeImageUrl, 'http(s) 이미지 URL 만 허용합니다')
|
|
77
218
|
.optional()
|
|
78
|
-
.describe('
|
|
79
|
-
|
|
219
|
+
.describe('소속시킬 시리즈 id. 벨로그가 임시저장 생성 단계에서 이걸 버리므로 ' +
|
|
220
|
+
'이 도구가 저장 직후 한 번 더 붙이고, 붙었는지 확인해 결과에 적는다. ' +
|
|
221
|
+
'생략하면 결과에 내 시리즈 목록을 함께 돌려준다'),
|
|
222
|
+
series_name: z
|
|
80
223
|
.string()
|
|
224
|
+
.min(1)
|
|
81
225
|
.optional()
|
|
82
|
-
.describe('
|
|
83
|
-
'
|
|
226
|
+
.describe('시리즈 **이름**(id 대신). 저장 전에 내 시리즈에서 찾는다. ' +
|
|
227
|
+
'못 찾으면 저장하지 않고 목록을 알려준다'),
|
|
84
228
|
},
|
|
85
229
|
// 되돌릴 수 있는 쓰기다 — 비공개 초안이므로 파괴적이지 않다.
|
|
86
230
|
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false },
|
|
87
|
-
}, async ({ title, body, tags, url_slug, thumbnail, series_id }, extra) =>
|
|
231
|
+
}, async ({ title, body, tags, url_slug, thumbnail, series_id: rawSeriesId, series_name }, extra) =>
|
|
88
232
|
// ★ 같은 대상에 대한 쓰기는 줄을 세운다 — 이유는 src/serial.ts
|
|
89
233
|
serializeWrite('post:new', async () => {
|
|
90
234
|
client.requireAuth('velog_create_draft');
|
|
91
|
-
|
|
235
|
+
let series_id = rawSeriesId?.trim() || undefined;
|
|
236
|
+
let seriesFromName = false;
|
|
237
|
+
// ★ 이름을 id 로. **저장 전에** 한다 — 못 찾으면 아무것도 안 쓴 채 멈춘다.
|
|
238
|
+
if (series_name !== undefined && series_id === undefined) {
|
|
239
|
+
series_id = await resolveSeriesId(client, await resolveMyUsername(client, extra.signal), series_name, 'velog_create_draft', extra.signal);
|
|
240
|
+
seriesFromName = true;
|
|
241
|
+
}
|
|
242
|
+
// ★ 이름으로 찾은 id 는 **내 시리즈 목록에서 고른 것**이라 소유권이 이미
|
|
243
|
+
// 증명돼 있다. 다시 목록을 받아 확인하면 같은 질의를 두 번 하는 것뿐이다.
|
|
244
|
+
// 검사가 필요한 것은 **사용자가 준** series_id 다 — safety.test.ts 의 A11 이
|
|
245
|
+
// 스스로 그 범위를 적어두고 있다.
|
|
246
|
+
if (series_id && !seriesFromName)
|
|
92
247
|
await assertOwnsSeries(client, series_id, 'velog_create_draft');
|
|
93
248
|
// ★ 초안은 is_private:true 라 벨로그 계수(is_private:false 만 셈)에
|
|
94
249
|
// 잡히지 않는다. 그래서 상한을 걸지 않는다 — 상한은 '공개 발행' 쪽에 있다.
|
|
@@ -100,8 +255,10 @@ export function registerDraftTools(server, client) {
|
|
|
100
255
|
meta: {},
|
|
101
256
|
...DRAFT_ONLY, // ★ 마지막에 펼쳐서 위 값들이 덮어쓸 수 없게 한다
|
|
102
257
|
};
|
|
103
|
-
|
|
104
|
-
|
|
258
|
+
// ★ 본문에 그림이 있으면 썸네일로 쓴다. 결정 근거는 아래에서 그대로 알린다.
|
|
259
|
+
const thumb = chooseThumbnail(thumbnail, body);
|
|
260
|
+
if (thumb.url)
|
|
261
|
+
input['thumbnail'] = thumb.url;
|
|
105
262
|
if (series_id)
|
|
106
263
|
input['series_id'] = series_id;
|
|
107
264
|
// mutate 는 재시도하지 않는다 — 응답 유실 시 초안이 중복 생성된다.
|
|
@@ -110,14 +267,14 @@ export function registerDraftTools(server, client) {
|
|
|
110
267
|
// ★ 벨로그는 임시저장 생성 시 series_id 를 조용히 버린다:
|
|
111
268
|
// // apps/server/src/services/PostApiService/index.mts
|
|
112
269
|
// if (series_id && !data.is_temp) await appendToSeries(...)
|
|
113
|
-
// edit 경로에는 이 조건이
|
|
114
|
-
// 사용자가 알 방법이 없으므로 직접 알린다.
|
|
270
|
+
// edit 경로에는 이 조건이 없다. 그래서 여기서 edit 을 한 번 더 쳐서 붙인다.
|
|
115
271
|
const seriesNote = series_id
|
|
116
|
-
?
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
272
|
+
? // ★ 버려진 series_id 를 여기서 직접 다시 붙인다. 던지지 않는다.
|
|
273
|
+
await attachSeriesToNewDraft(client, data.writePost.id, series_id, extra.signal)
|
|
274
|
+
: // ★ 힌트 조회가 실패해도 저장은 이미 끝났다 — 전부 삼킨다.
|
|
275
|
+
await seriesHintSafely(client, async () => data.writePost.user?.username ??
|
|
276
|
+
(await resolveMyUsername(client, extra.signal)), series_id, extra.signal);
|
|
277
|
+
return textResult(draftResult(data.writePost, '저장') + describeThumbnail(thumb) + seriesNote);
|
|
121
278
|
}));
|
|
122
279
|
server.registerTool('velog_update_draft', {
|
|
123
280
|
title: '벨로그 초안 수정',
|
|
@@ -133,16 +290,19 @@ export function registerDraftTools(server, client) {
|
|
|
133
290
|
body: z.string().min(1).describe('본문 전체 (마크다운). 부분 수정이 아니라 교체다'),
|
|
134
291
|
tags: z.array(z.string()).default([]),
|
|
135
292
|
url_slug: z.string().optional(),
|
|
136
|
-
thumbnail:
|
|
137
|
-
.string()
|
|
138
|
-
.refine(isSafeImageUrl, 'http(s) 이미지 URL 만 허용합니다')
|
|
139
|
-
.optional(),
|
|
293
|
+
thumbnail: THUMBNAIL_FIELD,
|
|
140
294
|
series_id: z.string().optional(),
|
|
295
|
+
series_name: z
|
|
296
|
+
.string()
|
|
297
|
+
.min(1)
|
|
298
|
+
.optional()
|
|
299
|
+
.describe('시리즈 **이름**(id 대신). 저장 전에 내 시리즈에서 찾는다. ' +
|
|
300
|
+
'못 찾으면 저장하지 않고 목록을 알려준다'),
|
|
141
301
|
},
|
|
142
302
|
// ★ destructive 가 맞다. 생략 필드가 보존되지 않고 초기화된다 —
|
|
143
303
|
// MCP 명세상 destructiveHint:false 는 '추가만 한다'는 뜻이라 거짓이 된다.
|
|
144
304
|
annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true },
|
|
145
|
-
}, async ({ id, title, body, tags, url_slug, thumbnail, series_id }, extra) =>
|
|
305
|
+
}, async ({ id, title, body, tags, url_slug, thumbnail, series_id: rawSeriesId, series_name }, extra) =>
|
|
146
306
|
// ★ 같은 대상에 대한 쓰기는 줄을 세운다 — 이유는 src/serial.ts
|
|
147
307
|
serializeWrite(`post:${id}`, async () => {
|
|
148
308
|
client.requireAuth('velog_update_draft');
|
|
@@ -155,7 +315,17 @@ export function registerDraftTools(server, client) {
|
|
|
155
315
|
throw new Error(`id=${id} 인 글을 찾지 못했습니다. velog_list_drafts 로 id 를 확인하세요.`);
|
|
156
316
|
}
|
|
157
317
|
await assertOwned(client, before.post, 'velog_update_draft');
|
|
158
|
-
|
|
318
|
+
let series_id = rawSeriesId?.trim() || undefined;
|
|
319
|
+
let seriesFromName = false;
|
|
320
|
+
if (series_name !== undefined && series_id === undefined) {
|
|
321
|
+
series_id = await resolveSeriesId(client, before.post.user?.username ?? (await resolveMyUsername(client, extra.signal)), series_name, 'velog_update_draft', extra.signal);
|
|
322
|
+
seriesFromName = true;
|
|
323
|
+
}
|
|
324
|
+
// ★ 이름으로 찾은 id 는 **내 시리즈 목록에서 고른 것**이라 소유권이 이미
|
|
325
|
+
// 증명돼 있다. 다시 목록을 받아 확인하면 같은 질의를 두 번 하는 것뿐이다.
|
|
326
|
+
// 검사가 필요한 것은 **사용자가 준** series_id 다 — safety.test.ts 의 A11 이
|
|
327
|
+
// 스스로 그 범위를 적어두고 있다.
|
|
328
|
+
if (series_id && !seriesFromName)
|
|
159
329
|
await assertOwnsSeries(client, series_id, 'velog_update_draft');
|
|
160
330
|
if (before.post.is_temp !== true) {
|
|
161
331
|
throw new Error(`id=${id} 는 이미 발행된 글입니다. 이 도구로 수정하면 임시저장으로 내려가 ` +
|
|
@@ -173,8 +343,9 @@ export function registerDraftTools(server, client) {
|
|
|
173
343
|
meta: before.post.meta ?? {},
|
|
174
344
|
...DRAFT_ONLY,
|
|
175
345
|
};
|
|
176
|
-
|
|
177
|
-
|
|
346
|
+
const thumb = chooseThumbnail(thumbnail, body);
|
|
347
|
+
if (thumb.url)
|
|
348
|
+
input['thumbnail'] = thumb.url;
|
|
178
349
|
if (series_id)
|
|
179
350
|
input['series_id'] = series_id;
|
|
180
351
|
const data = await client.mutate(MUTATION_EDIT_POST, { input }, { signal: extra.signal });
|
|
@@ -198,7 +369,13 @@ export function registerDraftTools(server, client) {
|
|
|
198
369
|
// ★ data.editPost 는 '갱신 전' 객체다(공식 서버가 그렇게 반환한다).
|
|
199
370
|
// 그걸로 문구를 만들면 제목을 바꿔도 옛 제목이 표시된다.
|
|
200
371
|
// 이미 재조회했으므로 그 결과를 얹는다.
|
|
201
|
-
|
|
372
|
+
// ★ 초안 수정은 series_id 가 실제로 먹는 경로다(생성과 달리). 그래서
|
|
373
|
+
// 여기서는 "안 넣었으면 무엇에 넣을 수 있는지"를 알리는 값이 크다.
|
|
374
|
+
const ownerName = before.post.user?.username;
|
|
375
|
+
const seriesNote = await seriesHintSafely(client, async () => ownerName ?? (await resolveMyUsername(client, extra.signal)), series_id, extra.signal);
|
|
376
|
+
return textResult(draftResult({ ...data.editPost, title: after.post.title ?? data.editPost.title ?? null }, '수정') +
|
|
377
|
+
describeThumbnail(thumb) +
|
|
378
|
+
seriesNote);
|
|
202
379
|
}));
|
|
203
380
|
server.registerTool('velog_list_drafts', {
|
|
204
381
|
title: '내 초안 목록',
|
package/dist/tools/drafts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drafts.js","sourceRoot":"","sources":["../../src/tools/drafts.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"drafts.js","sourceRoot":"","sources":["../../src/tools/drafts.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/publish.js
CHANGED
|
@@ -14,6 +14,9 @@ import { textResult } from "../format.js";
|
|
|
14
14
|
import { toUrlSlug, isSafeImageUrl } from "../slug.js";
|
|
15
15
|
import { assertOwned, assertOwnsSeries } from "../ownership.js";
|
|
16
16
|
import { serializeWrite } from "../serial.js";
|
|
17
|
+
import { chooseThumbnail, chooseThumbnailForUpdate, describeThumbnail, } from "../thumbnail.js";
|
|
18
|
+
import { seriesHintSafely, resolveSeriesId } from "../series.js";
|
|
19
|
+
import { resolveMyUsername } from "../me.js";
|
|
17
20
|
const MUTATION_WRITE_POST = `
|
|
18
21
|
mutation PublishPost($input: WritePostInput!) {
|
|
19
22
|
writePost(input: $input) { id title url_slug is_temp is_private user { username } }
|
|
@@ -33,6 +36,17 @@ const QUERY_POST_FULL = `
|
|
|
33
36
|
}
|
|
34
37
|
}
|
|
35
38
|
`;
|
|
39
|
+
/**
|
|
40
|
+
* 썸네일 입력 — 세 상태를 구분한다 (drafts.ts 와 같은 규약).
|
|
41
|
+
* 미지정 → 본문 첫 이미지로 자동 / URL → 그대로 / null·"" → 자동 채움 끄기
|
|
42
|
+
*/
|
|
43
|
+
const THUMBNAIL_FIELD = z
|
|
44
|
+
.string()
|
|
45
|
+
.refine((v) => v === '' || isSafeImageUrl(v), 'http(s) 이미지 URL 만 허용합니다')
|
|
46
|
+
.nullable()
|
|
47
|
+
.optional()
|
|
48
|
+
.describe('썸네일 이미지 URL (http/https). 생략하면 본문 첫 이미지로 자동 설정한다. ' +
|
|
49
|
+
'자동 설정을 원하지 않으면 null 을 준다');
|
|
36
50
|
function resultLines(post, verb) {
|
|
37
51
|
const username = post.user?.username;
|
|
38
52
|
const url = username && post.url_slug
|
|
@@ -211,11 +225,14 @@ export function registerPublishTools(server, client, capabilities, limiter) {
|
|
|
211
225
|
body: z.string().min(1).describe('본문 (마크다운)'),
|
|
212
226
|
tags: z.array(z.string()).default([]),
|
|
213
227
|
url_slug: z.string().optional().describe('생략하면 제목에서 생성'),
|
|
214
|
-
thumbnail:
|
|
215
|
-
.string()
|
|
216
|
-
.refine(isSafeImageUrl, 'http(s) 이미지 URL 만 허용합니다')
|
|
217
|
-
.optional(),
|
|
228
|
+
thumbnail: THUMBNAIL_FIELD,
|
|
218
229
|
series_id: z.string().optional(),
|
|
230
|
+
series_name: z
|
|
231
|
+
.string()
|
|
232
|
+
.min(1)
|
|
233
|
+
.optional()
|
|
234
|
+
.describe('시리즈 **이름**(id 대신). 저장 전에 내 시리즈에서 찾아 같은 요청에 실어 보낸다 — ' +
|
|
235
|
+
'한 번의 호출로 시리즈까지 붙는다. 못 찾으면 저장하지 않고 목록을 알려준다'),
|
|
219
236
|
...visibilityField,
|
|
220
237
|
},
|
|
221
238
|
// 공개 발행은 되돌릴 수 없다(RSS·검색·메일). destructive 로 표시한다.
|
|
@@ -224,9 +241,20 @@ export function registerPublishTools(server, client, capabilities, limiter) {
|
|
|
224
241
|
// ★ 같은 대상에 대한 쓰기는 줄을 세운다 — 이유는 src/serial.ts
|
|
225
242
|
serializeWrite('post:new', async () => {
|
|
226
243
|
client.requireAuth('velog_publish_post');
|
|
227
|
-
const { title, body, tags, url_slug, thumbnail,
|
|
244
|
+
const { title, body, tags, url_slug, thumbnail, series_name } = args;
|
|
245
|
+
let series_id = args.series_id?.trim() || undefined;
|
|
246
|
+
let seriesFromName = false;
|
|
228
247
|
const isPrivate = resolvePrivacy(args.is_private);
|
|
229
|
-
|
|
248
|
+
// ★ 이름을 id 로 바꾼다. **저장 전에** 한다 — 못 찾으면 아무것도 안 쓴 채 멈춘다.
|
|
249
|
+
if (series_name !== undefined && series_id === undefined) {
|
|
250
|
+
series_id = await resolveSeriesId(client, await resolveMyUsername(client, extra.signal), series_name, 'velog_publish_post', extra.signal);
|
|
251
|
+
seriesFromName = true;
|
|
252
|
+
}
|
|
253
|
+
// ★ 이름으로 찾은 id 는 **내 시리즈 목록에서 고른 것**이라 소유권이 이미
|
|
254
|
+
// 증명돼 있다. 다시 목록을 받아 확인하면 같은 질의를 두 번 하는 것뿐이다.
|
|
255
|
+
// 검사가 필요한 것은 **사용자가 준** series_id 다 — safety.test.ts 의 A11 이
|
|
256
|
+
// 스스로 그 범위를 적어두고 있다.
|
|
257
|
+
if (series_id && !seriesFromName)
|
|
230
258
|
await assertOwnsSeries(client, series_id, 'velog_publish_post');
|
|
231
259
|
// ★ 상한은 '검증을 다 통과한 뒤' 소비한다. 앞에 두면 잘못된 입력으로
|
|
232
260
|
// 5번 실패해도 5분간 공개 발행이 막힌다.
|
|
@@ -241,12 +269,15 @@ export function registerPublishTools(server, client, capabilities, limiter) {
|
|
|
241
269
|
is_private: isPrivate,
|
|
242
270
|
meta: {},
|
|
243
271
|
};
|
|
244
|
-
|
|
245
|
-
|
|
272
|
+
const thumb = chooseThumbnail(thumbnail, body);
|
|
273
|
+
if (thumb.url)
|
|
274
|
+
input['thumbnail'] = thumb.url;
|
|
246
275
|
if (series_id)
|
|
247
276
|
input['series_id'] = series_id;
|
|
248
277
|
const data = await client.mutate(MUTATION_WRITE_POST, { input }, { signal: extra.signal });
|
|
249
|
-
|
|
278
|
+
// ★ 힌트 조회가 실패해도 발행은 이미 끝났다 — 삼킨다(취소만 올린다).
|
|
279
|
+
const seriesNote = await seriesHintSafely(client, async () => data.writePost.user?.username ?? (await resolveMyUsername(client, extra.signal)), series_id, extra.signal);
|
|
280
|
+
return textResult(resultLines(data.writePost, '발행') + describeThumbnail(thumb) + seriesNote);
|
|
250
281
|
}));
|
|
251
282
|
server.registerTool('velog_publish_draft', {
|
|
252
283
|
title: '초안 발행',
|
|
@@ -362,11 +393,14 @@ export function registerPublishTools(server, client, capabilities, limiter) {
|
|
|
362
393
|
body: z.string().min(1).optional().describe('생략하면 기존 본문 유지'),
|
|
363
394
|
tags: z.array(z.string()).optional().describe('생략하면 기존 태그 유지'),
|
|
364
395
|
url_slug: z.string().optional().describe('생략하면 기존 주소 유지'),
|
|
365
|
-
thumbnail:
|
|
366
|
-
.string()
|
|
367
|
-
.refine(isSafeImageUrl, 'http(s) 이미지 URL 만 허용합니다')
|
|
368
|
-
.optional(),
|
|
396
|
+
thumbnail: THUMBNAIL_FIELD,
|
|
369
397
|
series_id: z.string().optional(),
|
|
398
|
+
series_name: z
|
|
399
|
+
.string()
|
|
400
|
+
.min(1)
|
|
401
|
+
.optional()
|
|
402
|
+
.describe('시리즈 **이름**(id 대신). 저장 전에 내 시리즈에서 찾아 같은 요청에 실어 보낸다 — ' +
|
|
403
|
+
'한 번의 호출로 시리즈까지 붙는다. 못 찾으면 저장하지 않고 목록을 알려준다'),
|
|
370
404
|
...visibilityFieldForUpdate,
|
|
371
405
|
},
|
|
372
406
|
// 생략 필드는 보존하지만 넘긴 필드는 덮어쓴다. MCP 명세상 false 는
|
|
@@ -376,7 +410,13 @@ export function registerPublishTools(server, client, capabilities, limiter) {
|
|
|
376
410
|
// ★ 같은 대상에 대한 쓰기는 줄을 세운다 — 이유는 src/serial.ts
|
|
377
411
|
serializeWrite(`post:${args.id}`, async () => {
|
|
378
412
|
client.requireAuth('velog_update_post');
|
|
379
|
-
const { id, title, body, tags, url_slug, thumbnail
|
|
413
|
+
const { id, title, body, tags, url_slug, thumbnail } = args;
|
|
414
|
+
// ★ 빈 문자열은 '미지정'으로 읽는다. 예전엔 `'' ?? post.series?.id` 가
|
|
415
|
+
// `''` 로 평가돼 기존 시리즈가 전송에서 빠졌고, 전체교체형 editPost 가
|
|
416
|
+
// **연결을 끊었다.** 끊고 싶으면 벨로그에서 직접 할 일이다.
|
|
417
|
+
let series_id = args.series_id?.trim() || undefined;
|
|
418
|
+
let seriesFromName = false;
|
|
419
|
+
const { series_name } = args;
|
|
380
420
|
// ★ 병합 수정. 기존 값을 읽어 생략 필드를 채운다 — 초안 도구에서
|
|
381
421
|
// '생략하면 초기화'가 사고를 부른다는 걸 확인했으므로 이쪽은 보존한다.
|
|
382
422
|
const current = await client.request(QUERY_POST_FULL, { input: { id } });
|
|
@@ -393,7 +433,16 @@ export function registerPublishTools(server, client, capabilities, limiter) {
|
|
|
393
433
|
throw new Error(`id=${id} 의 발행 상태를 확인할 수 없거나 임시저장 글입니다 ` +
|
|
394
434
|
`(is_temp=${post.is_temp}). 초안 수정은 velog_update_draft 를 쓰세요.`);
|
|
395
435
|
}
|
|
396
|
-
|
|
436
|
+
// ★ 이름을 id 로 바꾼다. **저장 전에** 한다 — 못 찾으면 아무것도 안 쓴 채 멈춘다.
|
|
437
|
+
if (series_name !== undefined && series_id === undefined) {
|
|
438
|
+
series_id = await resolveSeriesId(client, post.user?.username ?? (await resolveMyUsername(client, extra.signal)), series_name, 'velog_update_post', extra.signal);
|
|
439
|
+
seriesFromName = true;
|
|
440
|
+
}
|
|
441
|
+
// ★ 이름으로 찾은 id 는 **내 시리즈 목록에서 고른 것**이라 소유권이 이미
|
|
442
|
+
// 증명돼 있다. 다시 목록을 받아 확인하면 같은 질의를 두 번 하는 것뿐이다.
|
|
443
|
+
// 검사가 필요한 것은 **사용자가 준** series_id 다 — safety.test.ts 의 A11 이
|
|
444
|
+
// 스스로 그 범위를 적어두고 있다.
|
|
445
|
+
if (series_id && !seriesFromName)
|
|
397
446
|
await assertOwnsSeries(client, series_id, 'velog_update_post');
|
|
398
447
|
// ★★ 공개 범위는 **기존 값을 잇는다.** 게이트가 꺼져 있어도 마찬가지다.
|
|
399
448
|
//
|
|
@@ -439,9 +488,10 @@ export function registerPublishTools(server, client, capabilities, limiter) {
|
|
|
439
488
|
// ★ meta 를 {} 로 보내면 short_description 등이 지워진다. 기존 값 유지.
|
|
440
489
|
meta: post.meta ?? {},
|
|
441
490
|
};
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
491
|
+
// ★ 병합 수정이라 기존 썸네일이 우선이다 — 규칙은 thumbnail.ts 참고.
|
|
492
|
+
const thumb = chooseThumbnailForUpdate(thumbnail, post.thumbnail, body ?? post.body ?? '');
|
|
493
|
+
if (thumb.url)
|
|
494
|
+
input['thumbnail'] = thumb.url;
|
|
445
495
|
const nextSeries = series_id ?? post.series?.id;
|
|
446
496
|
if (nextSeries)
|
|
447
497
|
input['series_id'] = nextSeries;
|
|
@@ -451,7 +501,9 @@ export function registerPublishTools(server, client, capabilities, limiter) {
|
|
|
451
501
|
is_private: isPrivate,
|
|
452
502
|
content: input,
|
|
453
503
|
});
|
|
454
|
-
|
|
504
|
+
// ★ 이미 시리즈에 들어 있으면(nextSeries) 참견하지 않는다.
|
|
505
|
+
const seriesNote = await seriesHintSafely(client, async () => post.user?.username ?? (await resolveMyUsername(client, extra.signal)), nextSeries, extra.signal);
|
|
506
|
+
return textResult(resultLines(after, '수정') + describeThumbnail(thumb) + seriesNote);
|
|
455
507
|
}));
|
|
456
508
|
}
|
|
457
509
|
//# sourceMappingURL=publish.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/tools/publish.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/tools/publish.ts"],"names":[],"mappings":"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"}
|
package/docs/architecture.md
CHANGED
|
@@ -40,7 +40,7 @@ MCP 클라이언트 (Claude 등)
|
|
|
40
40
|
|
|
41
41
|
## 이 레포가 쓰지 않는 TypeScript 문법
|
|
42
42
|
|
|
43
|
-
Node
|
|
43
|
+
Node 는 22.18 부터 `.ts` 를 **타입 스트리핑**으로 직접 실행한다. 지우기만 하고 코드를
|
|
44
44
|
생성하지 않으므로, 변환이 필요한 문법은 `ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX` 로
|
|
45
45
|
죽는다. 실제로 겪은 것:
|
|
46
46
|
|
|
@@ -73,7 +73,7 @@ GraphQL POST 한 함수 + 도구 정의들이라 규모가 크지 않다.
|
|
|
73
73
|
|
|
74
74
|
## 결과
|
|
75
75
|
|
|
76
|
-
- 런타임 의존성 2개 유지 (MCP SDK, zod). fetch
|
|
76
|
+
- 런타임 의존성 2개 유지 (MCP SDK, zod). fetch 와 테스트 러너와 타입 스트리핑은 Node 내장
|
|
77
77
|
- introspection 실측을 `docs/api-reference.md` 에 날짜와 함께 고정
|
|
78
78
|
- 발행·삭제·소셜·계정 mutation 은 **미구현**. `docs/security.md` 에 목록과 이유 기록
|
|
79
79
|
|