@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.
@@ -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: z
215
+ thumbnail: THUMBNAIL_FIELD,
216
+ series_id: z
75
217
  .string()
76
- .refine(isSafeImageUrl, 'http(s) 이미지 URL 만 허용합니다')
77
218
  .optional()
78
- .describe('썸네일 이미지 URL (http/https 만)'),
79
- series_id: z
219
+ .describe('소속시킬 시리즈 id. 벨로그가 임시저장 생성 단계에서 이걸 버리므로 ' +
220
+ '이 도구가 저장 직후 한 번 더 붙이고, 붙었는지 확인해 결과에 적는다. ' +
221
+ '생략하면 결과에 내 시리즈 목록을 함께 돌려준다'),
222
+ series_name: z
80
223
  .string()
224
+ .min(1)
81
225
  .optional()
82
- .describe('소속시킬 시리즈 id. ★ 벨로그는 임시저장 단계에서 이걸 무시한다 — ' +
83
- '초안 생성 후 velog_update_draft 로 다시 지정해야 실제로 붙는다'),
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
- if (series_id)
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
- if (thumbnail)
104
- input['thumbnail'] = thumbnail;
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 경로에는 이 조건이 없어 update_draft 로는 붙는다. 이 비대칭을
114
- // 사용자가 알 방법이 없으므로 직접 알린다.
270
+ // edit 경로에는 이 조건이 없다. 그래서 여기서 edit 을 한 번 더 쳐서 붙인다.
115
271
  const seriesNote = series_id
116
- ? '\n\n⚠️ 시리즈는 **적용되지 않았습니다.** 벨로그가 임시저장 생성 단계에서는' +
117
- ' series_id 를 무시합니다. 방금 만든 초안 id 로 velog_update_draft 를' +
118
- ' 한 번 호출하면 그때 실제로 붙습니다.'
119
- : '';
120
- return textResult(draftResult(data.writePost, '저장') + seriesNote);
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: z
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
- if (series_id)
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
- if (thumbnail)
177
- input['thumbnail'] = thumbnail;
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
- return textResult(draftResult({ ...data.editPost, title: after.post.title ?? data.editPost.title ?? null }, '수정'));
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: '내 초안 목록',
@@ -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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"}
@@ -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: z
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, series_id } = args;
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
- if (series_id)
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
- if (thumbnail)
245
- input['thumbnail'] = thumbnail;
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
- return textResult(resultLines(data.writePost, '발행'));
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: z
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, series_id } = args;
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
- if (series_id)
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
- const nextThumbnail = thumbnail ?? post.thumbnail;
443
- if (nextThumbnail)
444
- input['thumbnail'] = nextThumbnail;
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
- return textResult(resultLines(after, '수정'));
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":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,mBAAmB,GAAG;;;;CAI3B,CAAC;AAEF,MAAM,kBAAkB,GAAG;;;;CAI1B,CAAC;AAEF,MAAM,eAAe,GAAG;;;;;;;;CAQvB,CAAC;AAkDF,SAAS,WAAW,CAAC,IAAe,EAAE,IAAY;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;IACrC,MAAM,GAAG,GACR,QAAQ,IAAI,IAAI,CAAC,QAAQ;QACxB,CAAC,CAAC,qBAAqB,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;QAClD,CAAC,CAAC,QAAQ,IAAI,CAAC,EAAE,GAAG,CAAC;IACvB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;IACxD,OAAO;QACN,KAAK,IAAI,OAAO;QAChB,EAAE;QACF,SAAS,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE;QAClC,SAAS,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,UAAU,EAAE;QACxD,UAAU,GAAG,EAAE;QACf,WAAW,IAAI,CAAC,EAAE,IAAI;KACtB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC;AAED;;;;;;;;;GASG;AACH,kDAAkD;AAClD,SAAS,SAAS,CAAC,CAAU,EAAE,CAAU;IACxC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAChF,OAAO,KAAK,CAAC;IACd,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACxD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1C,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CACrB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;QACnB,SAAS,CAAE,CAA6B,CAAC,CAAC,CAAC,EAAG,CAA6B,CAAC,CAAC,CAAC,CAAC,CAC/E,CAAC;AACH,CAAC;AAED,iCAAiC;AACjC,MAAM,cAAc,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAEhD,KAAK,UAAU,WAAW,CACzB,MAAmB,EACnB,EAAU,EACV,QAAgB,EAChB,QAYC;IAED,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,OAAO,CAA6B,eAAe,EAAE;QAC/E,KAAK,EAAE,EAAE,EAAE,EAAE;KACb,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACd,GAAG,QAAQ,eAAe,EAAE,kBAAkB;YAC7C,qBAAqB,CACtB,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;QACvC,UAAU,CAAC,IAAI,CACd,+BAA+B,QAAQ,CAAC,OAAO,QAAQ,IAAI,CAAC,OAAO,GAAG,CACtE,CAAC;IACH,CAAC;IACD,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC7C,UAAU,CAAC,IAAI,CACd,kCAAkC,QAAQ,CAAC,UAAU,QAAQ,IAAI,CAAC,UAAU,GAAG;YAC9E,CAAC,CAAC,QAAQ,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI;gBAChD,CAAC,CAAC,mCAAmC;gBACrC,CAAC,CAAC,EAAE,CAAC,CACP,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC;IAC9B,IAAI,IAAI,EAAE,CAAC;QACV,MAAM,MAAM,GAAsC;YACjD,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC;YACjC,yCAAyC;YACzC,6CAA6C;YAC7C,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;YACzF,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC;YACjD,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;YAC1D,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,IAAI,CAAC;SAC3D,CAAC;QACF,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,EAAE,CAAC;YACzC,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBAClB,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,gCAAgC,CAAC,CAAC;YAC3D,CAAC;QACF,CAAC;QACD,sCAAsC;QACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAyB,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAChE,UAAU,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAClD,CAAC;QACD,6DAA6D;QAC7D,oDAAoD;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC9C,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAA4B,CAAC;YAC/D,4DAA4D;YAC5D,wDAAwD;YACxD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,QAAmC,CAAC,CAAC,MAAM,CACtE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CACvC,CAAC;YACF,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,UAAU,CAAC,IAAI,CACd,sBAAsB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACxD,CAAC;YACH,CAAC;QACF,CAAC;IACF,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,MAAM,QAAQ,mBAAmB,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,aAAa,CAAC,IAA0C;IAChE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,QAAQ,CAAC,CAAuC,EAAE,CAAuC;IACjG,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,4CAA4C;AAC5C,SAAS,aAAa,CAAC,SAAkB,EAAE,OAA2B;IACrE,IAAI,CAAC,SAAS;QAAE,OAAO,CAAC,KAAK,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,oBAAoB,CACnC,MAAiB,EACjB,MAAmB,EACnB,YAA0B,EAC1B,OAA2B;IAE3B;;;;;;;OAOG;IACH,MAAM,eAAe,GAAG,YAAY,CAAC,aAAa;QACjD,CAAC,CAAC;YACA,UAAU,EAAE,CAAC;iBACX,OAAO,EAAE;iBACT,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CACR,gCAAgC;gBAC/B,sCAAsC,CACvC;SACF;QACF,CAAC,CAAC,EAAE,CAAC;IAEN,2CAA2C;IAC3C,MAAM,wBAAwB,GAAG,YAAY,CAAC,aAAa;QAC1D,CAAC,CAAC;YACA,UAAU,EAAE,CAAC;iBACX,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACR,8BAA8B;gBAC7B,6BAA6B,CAC9B;SACF;QACF,CAAC,CAAC,EAAE,CAAC;IAEN,oDAAoD;IACpD,SAAS,cAAc,CAAC,SAA8B;QACrD,IAAI,CAAC,YAAY,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC,CAAC,kBAAkB;QAChE,OAAO,SAAS,IAAI,IAAI,CAAC;IAC1B,CAAC;IAED,MAAM,UAAU,GAAG,YAAY,CAAC,aAAa;QAC5C,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,2BAA2B;YAC5B,uCAAuC,CAAC;IAE1C,MAAM,CAAC,YAAY,CAClB,oBAAoB,EACpB;QACC,KAAK,EAAE,UAAU;QACjB,WAAW,EACV,4BAA4B;YAC5B,UAAU;YACV,6CAA6C;QAC9C,WAAW,EAAE;YACZ,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACxB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC7C,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;YACrC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;YACxD,SAAS,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,MAAM,CAAC,cAAc,EAAE,yBAAyB,CAAC;iBACjD,QAAQ,EAAE;YACZ,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAChC,GAAG,eAAe;SAClB;QACD,kDAAkD;QAClD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE;KAClF,EACD,KAAK,EAAE,IAAiB,EAAE,KAAgB,EAAE,EAAE;IAC7C,6CAA6C;IAC7C,cAAc,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;QACzC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QACnE,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClD,IAAI,SAAS;YAAE,MAAM,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;QAC/E,2CAA2C;QAC3C,4BAA4B;QAC5B,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAElC,MAAM,KAAK,GAA4B;YACtC,KAAK;YACL,IAAI;YACJ,IAAI;YACJ,QAAQ,EAAE,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC;YACpC,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,SAAS;YACrB,IAAI,EAAE,EAAE;SACR,CAAC;QACF,IAAI,SAAS;YAAE,KAAK,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;QAC9C,IAAI,SAAS;YAAE,KAAK,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;QAE9C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,MAAM,CAC/B,mBAAmB,EACnB,EAAE,KAAK,EAAE,EACT,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CACxB,CAAC;QACF,OAAO,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,YAAY,CAClB,qBAAqB,EACrB;QACC,KAAK,EAAE,OAAO;QACd,WAAW,EACV,wCAAwC;YACxC,eAAe;YACf,UAAU;QACX,WAAW,EAAE;YACZ,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YAChE,GAAG,eAAe;SAClB;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE;KAClF,EACD,KAAK,EAAE,IAAsB,EAAE,KAAgB,EAAE,EAAE;IAClD,6CAA6C;IAC7C,cAAc,CAAC,QAAQ,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;QAC1C,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QACpB,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAElD,yCAAyC;QACzC,kDAAkD;QAClD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CACnC,eAAe,EACf,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CACjB,CAAC;QACF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QACtD,MAAM,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACd,MAAM,EAAE,sDAAsD,CAC9D,CAAC;QACH,CAAC;QACD,yBAAyB;QACzB,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAElC,MAAM,KAAK,GAA4B;YACtC,EAAE;YACF,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,SAAS;YAC9B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACtD,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,SAAS;YACrB,uDAAuD;YACvD,8CAA8C;YAC9C,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;SACrB,CAAC;QACF,IAAI,IAAI,CAAC,SAAS;YAAE,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QACxD,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YAAE,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAEzD,MAAM,MAAM,CAAC,MAAM,CAClB,kBAAkB,EAClB,EAAE,KAAK,EAAE,EACT,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CACxB,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,qBAAqB,EAAE;YAClE,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,SAAS;YACrB,OAAO,EAAE,KAAK;SACd,CAAC,CAAC;QACH,OAAO,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,YAAY,CAClB,sBAAsB,EACtB;QACC,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EACV,6CAA6C;YAC7C,iDAAiD;QAClD,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE;QAC5D,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;KACjF,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;IACvB,6CAA6C;IAC7C,cAAc,CAAC,QAAQ,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;QAE3C,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CACnC,eAAe,EACf,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CACjB,CAAC;QACF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QACtD,MAAM,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,sBAAsB,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC3B,OAAO,UAAU,CAAC,MAAM,EAAE,kCAAkC,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,KAAK,GAA4B;YACtC,EAAE;YACF,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,SAAS;YAC9B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACtD,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,IAAI;YACb,8CAA8C;YAC9C,uDAAuD;YACvD,4CAA4C;YAC5C,6CAA6C;YAC7C,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;SACrB,CAAC;QACF,IAAI,IAAI,CAAC,SAAS;YAAE,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QACxD,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;YAAE,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAEzD,MAAM,MAAM,CAAC,MAAM,CAClB,kBAAkB,EAClB,EAAE,KAAK,EAAE,EACT,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CACxB,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,sBAAsB,EAAE;YACnE,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,KAAK;SACd,CAAC,CAAC;QACH,OAAO,UAAU,CAChB,GAAG,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM;YACvC,yCAAyC,CAC1C,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,YAAY,CAClB,mBAAmB,EACnB;QACC,KAAK,EAAE,QAAQ;QACf,WAAW,EACV,8CAA8C;YAC9C,qDAAqD;YACrD,0CAA0C;YAC1C,CAAC,YAAY,CAAC,aAAa;gBAC1B,CAAC,CAAC,iDAAiD;gBACnD,CAAC,CAAC,wCAAwC;oBACzC,2CAA2C,CAAC;QAC/C,WAAW,EAAE;YACZ,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACrB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;YAC5D,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;YAC9D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;YACzD,SAAS,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,MAAM,CAAC,cAAc,EAAE,yBAAyB,CAAC;iBACjD,QAAQ,EAAE;YACZ,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAChC,GAAG,wBAAwB;SAC3B;QACD,4CAA4C;QAC5C,wBAAwB;QACxB,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;KACjF,EACD,KAAK,EAAE,IAAoB,EAAE,KAAgB,EAAE,EAAE;IAChD,6CAA6C;IAC7C,cAAc,CAAC,QAAQ,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;QACxC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QAEvE,yCAAyC;QACzC,4CAA4C;QAC5C,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CACnC,eAAe,EACf,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CACjB,CAAC;QACF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QACtD,MAAM,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC;QACrD,yDAAyD;QACzD,oBAAoB;QACpB,yDAAyD;QACzD,gDAAgD;QAChD,4BAA4B;QAC5B,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACd,MAAM,EAAE,gCAAgC;gBACvC,YAAY,IAAI,CAAC,OAAO,qCAAqC,CAC9D,CAAC;QACH,CAAC;QAED,IAAI,SAAS;YAAE,MAAM,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,mBAAmB,CAAC,CAAC;QAE9E,8CAA8C;QAC9C,EAAE;QACF,6CAA6C;QAC7C,2CAA2C;QAC3C,4CAA4C;QAC5C,sDAAsD;QACtD,iCAAiC;QACjC,EAAE;QACF,mDAAmD;QACnD,2CAA2C;QAC3C,sCAAsC;QACtC,4CAA4C;QAC5C,EAAE;QACF,gCAAgC;QAChC,2CAA2C;QAC3C,6CAA6C;QAC7C,4CAA4C;QAC5C,gDAAgD;QAChD,yCAAyC;QACzC,6CAA6C;QAC7C,MAAM,SAAS,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3E,sDAAsD;QACtD,oDAAoD;QACpD,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YACrE,MAAM,IAAI,KAAK,CACd,2BAA2B,EAAE,4BAA4B;gBACxD,eAAe,IAAI,CAAC,UAAU,8BAA8B,CAC7D,CAAC;QACH,CAAC;QACD,MAAM,SAAS,GAAG,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC;QACxD,gCAAgC;QAChC,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,IAAI,CAAC,SAAS;YAAE,OAAO,CAAC,KAAK,EAAE,CAAC;QAE7D,MAAM,SAAS,GAAG,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC;QACnD,MAAM,KAAK,GAA4B;YACtC,EAAE;YACF,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE;YAC7B,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE;YAC7B,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC;YAC7F,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,SAAS;YACrB,wDAAwD;YACxD,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;SACrB,CAAC;QACF,MAAM,aAAa,GAAG,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;QAClD,IAAI,aAAa;YAAE,KAAK,CAAC,WAAW,CAAC,GAAG,aAAa,CAAC;QACtD,MAAM,UAAU,GAAG,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAChD,IAAI,UAAU;YAAE,KAAK,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC;QAEhD,MAAM,MAAM,CAAC,MAAM,CAClB,kBAAkB,EAClB,EAAE,KAAK,EAAE,EACT,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CACxB,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,mBAAmB,EAAE;YAChE,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,SAAS;YACrB,OAAO,EAAE,KAAK;SACd,CAAC,CAAC;QACH,OAAO,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/tools/publish.ts"],"names":[],"mappings":"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"}
@@ -40,7 +40,7 @@ MCP 클라이언트 (Claude 등)
40
40
 
41
41
  ## 이 레포가 쓰지 않는 TypeScript 문법
42
42
 
43
- Node 24 는 `.ts` 를 **타입 스트리핑**으로 직접 실행한다. 지우기만 하고 코드를
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·테스트 러너·타입 스트리핑은 Node 24 내장
76
+ - 런타임 의존성 2개 유지 (MCP SDK, zod). fetch 와 테스트 러너와 타입 스트리핑은 Node 내장
77
77
  - introspection 실측을 `docs/api-reference.md` 에 날짜와 함께 고정
78
78
  - 발행·삭제·소셜·계정 mutation 은 **미구현**. `docs/security.md` 에 목록과 이유 기록
79
79