senq-mcp 1.4.3 → 1.4.4

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/dist/index.js CHANGED
@@ -9,7 +9,7 @@ if (process.argv[2] === "setup") {
9
9
  await runSetup();
10
10
  process.exit(0);
11
11
  }
12
- const server = new Server({ name: "senq-mcp", version: "1.4.3" }, {
12
+ const server = new Server({ name: "senq-mcp", version: "1.4.4" }, {
13
13
  capabilities: { tools: {}, prompts: {} },
14
14
  instructions: `Ты подключён к Senq — системе управления задачами агентства.
15
15
 
@@ -361,7 +361,7 @@ server.setRequestHandler(CallToolRequestSchema, async (req) => {
361
361
  return {
362
362
  content: [{
363
363
  type: "text",
364
- text: `Найдено задач: ${total}\n\nПри отображении форматируй названия задач как markdown-ссылки [название](url), имена исполнителейкак [имя](assigneeUrl).\n\n${JSON.stringify(tasks, null, 2)}`,
364
+ text: `Найдено задач: ${total}\n\nДля каждой задачи и подзадачи: форматируй название как [название](url). Поле daysOverdueдней просрочки (показывай для всех, включая подзадачи). daysLate < 0 = закрыта раньше срока, > 0 = с опозданием, 0 = в срок. Имя исполнителя — [имя](assigneeUrl).\n\n${JSON.stringify(tasks, null, 2)}`,
365
365
  }],
366
366
  };
367
367
  }
@@ -451,7 +451,7 @@ const PROMPTS = [
451
451
  {
452
452
  name: "что-просрочено",
453
453
  description: "Просроченные задачи — мои или конкретного сотрудника",
454
- arguments: [{ name: "сотрудник", description: "Имя или email сотрудника (необязательно — без него показывает мои задачи)", required: false }],
454
+ arguments: [{ name: "сотрудник", description: "Имя или email (необязательно)", required: false }],
455
455
  },
456
456
  {
457
457
  name: "создать-задачу",
@@ -488,7 +488,7 @@ server.setRequestHandler(GetPromptRequestSchema, async (req) => {
488
488
  else if (name === "что-просрочено") {
489
489
  const emp = promptArgs?.["сотрудник"];
490
490
  if (emp) {
491
- messages.push({ role: "user", content: { type: "text", text: `Сначала найди сотрудника «${emp}» через find_employee, затем покажи его просроченные задачи через list_team_tasks с status=open. Для каждой задачи укажи, на сколько дней она просрочена (поле daysOverdue). Форматируй названия как markdown-ссылки [название](url).` } });
491
+ messages.push({ role: "user", content: { type: "text", text: `Сначала найди сотрудника «${emp}» через find_employee, затем покажи его просроченные задачи через list_team_tasks с status=open. Для каждой задачи и подзадачи укажи сколько дней просрочена (поле daysOverdue). Форматируй названия как markdown-ссылки.` } });
492
492
  }
493
493
  else {
494
494
  messages.push({ role: "user", content: { type: "text", text: "Что у меня просрочено? Используй list_tasks и покажи задачи с прошедшим дедлайном. Для каждой укажи срок и сколько дней просрочено." } });
package/dist/setup.js CHANGED
@@ -78,7 +78,7 @@ function mergeConfig(configPath, apiKey) {
78
78
  catch { /* corrupt — start fresh */ }
79
79
  }
80
80
  const mcpServers = config["mcpServers"] ?? {};
81
- mcpServers["senq"] = { command: "npx", args: ["senq-mcp@latest"], env: { SENQ_API_KEY: apiKey } };
81
+ mcpServers["senq"] = { command: "npx", args: ["senq-mcp"], env: { SENQ_API_KEY: apiKey } };
82
82
  config["mcpServers"] = mcpServers;
83
83
  fs.mkdirSync(path.dirname(configPath), { recursive: true });
84
84
  fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n");
@@ -89,7 +89,7 @@ function mergeCodexConfig(configPath, apiKey) {
89
89
  if (fs.existsSync(configPath)) {
90
90
  existing = fs.readFileSync(configPath, "utf8");
91
91
  }
92
- const senqBlock = `[mcp_servers.senq]\ncommand = "npx"\nargs = ["senq-mcp@latest"]\n\n[mcp_servers.senq.env]\nSENQ_API_KEY = "${apiKey}"`;
92
+ const senqBlock = `[mcp_servers.senq]\ncommand = "npx"\nargs = ["senq-mcp"]\n\n[mcp_servers.senq.env]\nSENQ_API_KEY = "${apiKey}"`;
93
93
  if (existing.includes("[mcp_servers.senq]")) {
94
94
  // Replace existing senq block
95
95
  const updated = existing.replace(/\[mcp_servers\.senq\][\s\S]*?SENQ_API_KEY\s*=\s*"[^"]*"/, senqBlock);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "senq-mcp",
3
- "version": "1.4.3",
3
+ "version": "1.4.4",
4
4
  "description": "MCP server for Senq — connect your AI to tasks and knowledge",
5
5
  "type": "module",
6
6
  "bin": {
package/src/index.ts CHANGED
@@ -17,7 +17,7 @@ if (process.argv[2] === "setup") {
17
17
  }
18
18
 
19
19
  const server = new Server(
20
- { name: "senq-mcp", version: "1.4.3" },
20
+ { name: "senq-mcp", version: "1.4.4" },
21
21
  {
22
22
  capabilities: { tools: {}, prompts: {} },
23
23
  instructions: `Ты подключён к Senq — системе управления задачами агентства.
@@ -342,7 +342,7 @@ server.setRequestHandler(CallToolRequestSchema, async (req) => {
342
342
  return {
343
343
  content: [{
344
344
  type: "text",
345
- text: `Найдено задач: ${total}\n\nПри отображении форматируй названия задач как markdown-ссылки [название](url), имена исполнителейкак [имя](assigneeUrl).\n\n${JSON.stringify(tasks, null, 2)}`,
345
+ text: `Найдено задач: ${total}\n\nДля каждой задачи и подзадачи: форматируй название как [название](url). Поле daysOverdueдней просрочки (показывай для всех, включая подзадачи). daysLate < 0 = закрыта раньше срока, > 0 = с опозданием, 0 = в срок. Имя исполнителя — [имя](assigneeUrl).\n\n${JSON.stringify(tasks, null, 2)}`,
346
346
  }],
347
347
  };
348
348
  }
@@ -439,7 +439,7 @@ const PROMPTS = [
439
439
  {
440
440
  name: "что-просрочено",
441
441
  description: "Просроченные задачи — мои или конкретного сотрудника",
442
- arguments: [{ name: "сотрудник", description: "Имя или email сотрудника (необязательно — без него показывает мои задачи)", required: false }],
442
+ arguments: [{ name: "сотрудник", description: "Имя или email (необязательно)", required: false }],
443
443
  },
444
444
  {
445
445
  name: "создать-задачу",
@@ -478,7 +478,7 @@ server.setRequestHandler(GetPromptRequestSchema, async (req) => {
478
478
  } else if (name === "что-просрочено") {
479
479
  const emp = promptArgs?.["сотрудник"];
480
480
  if (emp) {
481
- messages.push({ role: "user", content: { type: "text", text: `Сначала найди сотрудника «${emp}» через find_employee, затем покажи его просроченные задачи через list_team_tasks с status=open. Для каждой задачи укажи, на сколько дней она просрочена (поле daysOverdue). Форматируй названия как markdown-ссылки [название](url).` } });
481
+ messages.push({ role: "user", content: { type: "text", text: `Сначала найди сотрудника «${emp}» через find_employee, затем покажи его просроченные задачи через list_team_tasks с status=open. Для каждой задачи и подзадачи укажи сколько дней просрочена (поле daysOverdue). Форматируй названия как markdown-ссылки.` } });
482
482
  } else {
483
483
  messages.push({ role: "user", content: { type: "text", text: "Что у меня просрочено? Используй list_tasks и покажи задачи с прошедшим дедлайном. Для каждой укажи срок и сколько дней просрочено." } });
484
484
  }
package/src/setup.ts CHANGED
@@ -82,7 +82,7 @@ function mergeConfig(configPath: string, apiKey: string): void {
82
82
  try { config = JSON.parse(fs.readFileSync(configPath, "utf8")); } catch { /* corrupt — start fresh */ }
83
83
  }
84
84
  const mcpServers = (config["mcpServers"] as Record<string, unknown>) ?? {};
85
- mcpServers["senq"] = { command: "npx", args: ["senq-mcp@latest"], env: { SENQ_API_KEY: apiKey } };
85
+ mcpServers["senq"] = { command: "npx", args: ["senq-mcp"], env: { SENQ_API_KEY: apiKey } };
86
86
  config["mcpServers"] = mcpServers;
87
87
  fs.mkdirSync(path.dirname(configPath), { recursive: true });
88
88
  fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n");
@@ -95,7 +95,7 @@ function mergeCodexConfig(configPath: string, apiKey: string): void {
95
95
  existing = fs.readFileSync(configPath, "utf8");
96
96
  }
97
97
 
98
- const senqBlock = `[mcp_servers.senq]\ncommand = "npx"\nargs = ["senq-mcp@latest"]\n\n[mcp_servers.senq.env]\nSENQ_API_KEY = "${apiKey}"`;
98
+ const senqBlock = `[mcp_servers.senq]\ncommand = "npx"\nargs = ["senq-mcp"]\n\n[mcp_servers.senq.env]\nSENQ_API_KEY = "${apiKey}"`;
99
99
 
100
100
  if (existing.includes("[mcp_servers.senq]")) {
101
101
  // Replace existing senq block