@levinariy.fedorov/youtrack-mcp 0.1.0 → 0.1.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
@@ -16,7 +16,7 @@ MCP-сервер прямо в продукте, и если он у вас ес
16
16
  "mcpServers": {
17
17
  "youtrack": {
18
18
  "command": "npx",
19
- "args": ["-y", "@levinariy.fedorov/youtrack-mcp@0.1.0"]
19
+ "args": ["-y", "@levinariy.fedorov/youtrack-mcp@0.1.1"]
20
20
  }
21
21
  }
22
22
  }
@@ -56,8 +56,8 @@ npx @levinariy.fedorov/youtrack-mcp profiles
56
56
  вызывающий получает объект, а не JSON внутри текста.
57
57
 
58
58
  `read_issue` отдаёт поля плоской картой (`fields["Type"]`), у комментария —
59
- булево `public` вместо разбора видимости, у вложения — комментарий, к которому оно
60
- приложено. Даты приходят датами: у YouTrack они лежат миллисекундами эпохи и от
59
+ булево `public` вместо разбора видимости, у вложения — `commentId` того комментария,
60
+ к которому оно приложено (нет поля — приложено к самой задаче). Даты приходят датами: у YouTrack они лежат миллисекундами эпохи и от
61
61
  обычного целого неотличимы, поэтому тип поля запрашивается вместе со значением.
62
62
  С `attachments: true` файлы скачиваются на диск и получают `path`: содержимое в
63
63
  ответ не попадает, читать файл — отдельный шаг.
package/dist/issues.d.ts CHANGED
@@ -16,8 +16,8 @@ export type Attachment = {
16
16
  name: string;
17
17
  mimeType: string;
18
18
  size: number;
19
- /** Комментарий, к которому приложен файл, либо nullесли к самой задаче. */
20
- commentId: string | null;
19
+ /** Комментарий, к которому приложен файл. Нет поляфайл приложен к самой задаче. */
20
+ commentId?: string;
21
21
  /** Путь на диске. Появляется, только если файлы просили скачать. */
22
22
  path?: string;
23
23
  };
@@ -38,7 +38,8 @@ export type Issue = {
38
38
  reporter: Person;
39
39
  created: string;
40
40
  updated: string;
41
- resolved: string | null;
41
+ /** Когда задача решена. Нет поля — не решена. */
42
+ resolved?: string;
42
43
  /** Значения полей задачи по именам: Type, State, Business solution, Priority. */
43
44
  fields: Record<string, string>;
44
45
  comments: Comment[];
package/dist/issues.js CHANGED
@@ -88,7 +88,7 @@ function toIssue(raw, baseUrl) {
88
88
  reporter: person(raw.reporter),
89
89
  created: moment(raw.created) ?? "",
90
90
  updated: moment(raw.updated) ?? "",
91
- resolved: moment(raw.resolved),
91
+ ...(moment(raw.resolved) === null ? {} : { resolved: moment(raw.resolved) }),
92
92
  fields: collectFields(raw),
93
93
  comments: (raw.comments ?? []).map((comment) => ({
94
94
  id: comment.id ?? "",
@@ -104,7 +104,7 @@ function toIssue(raw, baseUrl) {
104
104
  name: attachment.name ?? "",
105
105
  mimeType: attachment.mimeType ?? "",
106
106
  size: attachment.size ?? 0,
107
- commentId: attachment.comment?.id ?? null
107
+ ...(attachment.comment?.id ? { commentId: attachment.comment.id } : {})
108
108
  })),
109
109
  links: (raw.links ?? [])
110
110
  .filter((link) => (link.issues ?? []).length > 0)
package/dist/server.js CHANGED
@@ -31,7 +31,9 @@ const IssueSchema = z.object({
31
31
  reporter: PersonSchema,
32
32
  created: z.string(),
33
33
  updated: z.string(),
34
- resolved: z.string().nullable(),
34
+ // Не nullable и не union: оба дают type: ["string","null"], а часть MCP-клиентов
35
+ // читает type только как строку. Нерешённая задача — поле просто отсутствует.
36
+ resolved: z.string().optional(),
35
37
  fields: z.record(z.string(), z.string()),
36
38
  comments: z.array(z.object({
37
39
  id: z.string(),
@@ -45,7 +47,7 @@ const IssueSchema = z.object({
45
47
  name: z.string(),
46
48
  mimeType: z.string(),
47
49
  size: z.number(),
48
- commentId: z.string().nullable(),
50
+ commentId: z.string().optional(),
49
51
  path: z.string().optional()
50
52
  })),
51
53
  links: z.array(z.object({ type: z.string(), issues: z.array(z.object({ id: z.string(), summary: z.string() })) }))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@levinariy.fedorov/youtrack-mcp",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "type": "module",
5
5
  "description": "MCP-сервер и библиотека для YouTrack: задача целиком одним вызовом — поля, комментарии, вложения, связи.",
6
6
  "keywords": [