@somosocta/tasker-mcp-server 1.0.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 +74 -0
- package/dist/api-client.d.ts +41 -0
- package/dist/api-client.d.ts.map +1 -0
- package/dist/api-client.js +96 -0
- package/dist/api-client.js.map +1 -0
- package/dist/config.d.ts +10 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +24 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +96 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/analytics.d.ts +15 -0
- package/dist/tools/analytics.d.ts.map +1 -0
- package/dist/tools/analytics.js +262 -0
- package/dist/tools/analytics.js.map +1 -0
- package/dist/tools/backlog.d.ts +10 -0
- package/dist/tools/backlog.d.ts.map +1 -0
- package/dist/tools/backlog.js +165 -0
- package/dist/tools/backlog.js.map +1 -0
- package/dist/tools/clients.d.ts +9 -0
- package/dist/tools/clients.d.ts.map +1 -0
- package/dist/tools/clients.js +43 -0
- package/dist/tools/clients.js.map +1 -0
- package/dist/tools/epics.d.ts +10 -0
- package/dist/tools/epics.d.ts.map +1 -0
- package/dist/tools/epics.js +161 -0
- package/dist/tools/epics.js.map +1 -0
- package/dist/tools/planning.d.ts +11 -0
- package/dist/tools/planning.d.ts.map +1 -0
- package/dist/tools/planning.js +74 -0
- package/dist/tools/planning.js.map +1 -0
- package/dist/tools/projects.d.ts +10 -0
- package/dist/tools/projects.d.ts.map +1 -0
- package/dist/tools/projects.js +87 -0
- package/dist/tools/projects.js.map +1 -0
- package/dist/tools/sprints.d.ts +12 -0
- package/dist/tools/sprints.d.ts.map +1 -0
- package/dist/tools/sprints.js +196 -0
- package/dist/tools/sprints.js.map +1 -0
- package/dist/tools/stories.d.ts +10 -0
- package/dist/tools/stories.d.ts.map +1 -0
- package/dist/tools/stories.js +221 -0
- package/dist/tools/stories.js.map +1 -0
- package/dist/tools/tasks.d.ts +12 -0
- package/dist/tools/tasks.d.ts.map +1 -0
- package/dist/tools/tasks.js +341 -0
- package/dist/tools/tasks.js.map +1 -0
- package/dist/tools/timesheets.d.ts +10 -0
- package/dist/tools/timesheets.d.ts.map +1 -0
- package/dist/tools/timesheets.js +140 -0
- package/dist/tools/timesheets.js.map +1 -0
- package/dist/tools/users.d.ts +9 -0
- package/dist/tools/users.d.ts.map +1 -0
- package/dist/tools/users.js +45 -0
- package/dist/tools/users.js.map +1 -0
- package/dist/types.d.ts +130 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/tools/analytics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tools MCP para Importação de Backlog do Tasker.
|
|
3
|
+
* Permite que agentes de IA importem um planejamento completo de projeto
|
|
4
|
+
* (épicos → user stories → tarefas) de forma atômica.
|
|
5
|
+
*/
|
|
6
|
+
import type { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
7
|
+
import type { TaskerApiClient } from "../api-client.js";
|
|
8
|
+
export declare const tools: Tool[];
|
|
9
|
+
export declare function handleTool(name: string, args: Record<string, unknown>, client: TaskerApiClient): Promise<string>;
|
|
10
|
+
//# sourceMappingURL=backlog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backlog.d.ts","sourceRoot":"","sources":["../../src/tools/backlog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,eAAO,MAAM,KAAK,EAAE,IAAI,EAkIvB,CAAC;AAEF,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,MAAM,CAAC,CAmCjB"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tools MCP para Importação de Backlog do Tasker.
|
|
3
|
+
* Permite que agentes de IA importem um planejamento completo de projeto
|
|
4
|
+
* (épicos → user stories → tarefas) de forma atômica.
|
|
5
|
+
*/
|
|
6
|
+
export const tools = [
|
|
7
|
+
{
|
|
8
|
+
name: "import_backlog",
|
|
9
|
+
description: "Importa um backlog completo (épicos → user stories → tarefas) para um projeto do Tasker. " +
|
|
10
|
+
"A importação é atômica: tudo é criado ou tudo é revertido em caso de erro. " +
|
|
11
|
+
"Calcula automaticamente datas de início e fim baseado no calendário de trabalho e carga diária. " +
|
|
12
|
+
"Valida coerência de estimativas (filhos vs pai) e viabilidade de carga horária. " +
|
|
13
|
+
"Use get_project primeiro para obter dados do projeto, get_app_config para saber horas_uteis_dia, " +
|
|
14
|
+
"e get_working_days para consultar o calendário antes de montar o planejamento. " +
|
|
15
|
+
"IMPORTANTE: As datas são calculadas automaticamente pelo sistema — você NÃO precisa calcular datas. " +
|
|
16
|
+
"Basta informar as estimativas em horas e a data_inicio no metadata. " +
|
|
17
|
+
"Suporta dois formatos: JSON estruturado ou markdown.",
|
|
18
|
+
inputSchema: {
|
|
19
|
+
type: "object",
|
|
20
|
+
properties: {
|
|
21
|
+
project_id: {
|
|
22
|
+
type: "number",
|
|
23
|
+
description: "ID do projeto onde o backlog será importado (obrigatório)",
|
|
24
|
+
},
|
|
25
|
+
format: {
|
|
26
|
+
type: "string",
|
|
27
|
+
enum: ["json", "markdown"],
|
|
28
|
+
description: "Formato da importação: 'json' para estruturado ou 'markdown' para arquivo markdown (default: json)",
|
|
29
|
+
},
|
|
30
|
+
content: {
|
|
31
|
+
type: "string",
|
|
32
|
+
description: "Conteúdo markdown do backlog (obrigatório se format='markdown'). " +
|
|
33
|
+
"Formato esperado: frontmatter YAML com metadata + hierarquia de épicos/stories/tasks.",
|
|
34
|
+
},
|
|
35
|
+
metadata: {
|
|
36
|
+
type: "object",
|
|
37
|
+
description: "Metadados do projeto para a importação (usado quando format='json')",
|
|
38
|
+
properties: {
|
|
39
|
+
data_inicio: {
|
|
40
|
+
type: "string",
|
|
41
|
+
description: "Data de início do planejamento (YYYY-MM-DD). Se omitido, usa a data atual.",
|
|
42
|
+
},
|
|
43
|
+
tipo_cobranca: {
|
|
44
|
+
type: "string",
|
|
45
|
+
description: "Tipo de cobrança do projeto",
|
|
46
|
+
},
|
|
47
|
+
tipo_contrato: {
|
|
48
|
+
type: "string",
|
|
49
|
+
description: "Tipo de contrato do projeto",
|
|
50
|
+
},
|
|
51
|
+
valor_projeto: {
|
|
52
|
+
type: "number",
|
|
53
|
+
description: "Valor total do projeto",
|
|
54
|
+
},
|
|
55
|
+
valor_hora: {
|
|
56
|
+
type: "number",
|
|
57
|
+
description: "Valor por hora do projeto",
|
|
58
|
+
},
|
|
59
|
+
carga_diaria: {
|
|
60
|
+
type: "number",
|
|
61
|
+
description: "Carga horária diária (default: horas_uteis_dia da app_config, geralmente 6h)",
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
epics: {
|
|
66
|
+
type: "array",
|
|
67
|
+
description: "Lista de épicos com suas user stories e tarefas (obrigatório se format='json'). " +
|
|
68
|
+
"Cada épico contém userStories, cada userStory contém tasks.",
|
|
69
|
+
items: {
|
|
70
|
+
type: "object",
|
|
71
|
+
properties: {
|
|
72
|
+
title: {
|
|
73
|
+
type: "string",
|
|
74
|
+
description: "Título do épico",
|
|
75
|
+
},
|
|
76
|
+
estimativa: {
|
|
77
|
+
type: "number",
|
|
78
|
+
description: "Estimativa total do épico em horas (deve ser >= soma das stories)",
|
|
79
|
+
},
|
|
80
|
+
userStories: {
|
|
81
|
+
type: "array",
|
|
82
|
+
description: "Lista de user stories do épico",
|
|
83
|
+
items: {
|
|
84
|
+
type: "object",
|
|
85
|
+
properties: {
|
|
86
|
+
title: {
|
|
87
|
+
type: "string",
|
|
88
|
+
description: "Título da user story",
|
|
89
|
+
},
|
|
90
|
+
description: {
|
|
91
|
+
type: "string",
|
|
92
|
+
description: "Descrição da user story",
|
|
93
|
+
},
|
|
94
|
+
estimativa: {
|
|
95
|
+
type: "number",
|
|
96
|
+
description: "Estimativa da story em horas (deve ser >= soma das tasks)",
|
|
97
|
+
},
|
|
98
|
+
tasks: {
|
|
99
|
+
type: "array",
|
|
100
|
+
description: "Lista de tarefas da user story",
|
|
101
|
+
items: {
|
|
102
|
+
type: "object",
|
|
103
|
+
properties: {
|
|
104
|
+
title: {
|
|
105
|
+
type: "string",
|
|
106
|
+
description: "Título da tarefa",
|
|
107
|
+
},
|
|
108
|
+
description: {
|
|
109
|
+
type: "string",
|
|
110
|
+
description: "Descrição da tarefa",
|
|
111
|
+
},
|
|
112
|
+
estimativa: {
|
|
113
|
+
type: "number",
|
|
114
|
+
description: "Estimativa da tarefa em horas",
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
required: ["title", "estimativa"],
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
required: ["title", "estimativa"],
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
required: ["title", "estimativa"],
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
required: ["project_id"],
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
];
|
|
133
|
+
export async function handleTool(name, args, client) {
|
|
134
|
+
switch (name) {
|
|
135
|
+
case "import_backlog": {
|
|
136
|
+
const projectId = args.project_id;
|
|
137
|
+
if (!projectId)
|
|
138
|
+
throw new Error("project_id é obrigatório");
|
|
139
|
+
const format = args.format || "json";
|
|
140
|
+
let body;
|
|
141
|
+
if (format === "markdown") {
|
|
142
|
+
if (!args.content)
|
|
143
|
+
throw new Error("content é obrigatório para format='markdown'");
|
|
144
|
+
body = {
|
|
145
|
+
format: "markdown",
|
|
146
|
+
content: args.content,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
if (!args.epics)
|
|
151
|
+
throw new Error("epics é obrigatório para format='json'");
|
|
152
|
+
body = {
|
|
153
|
+
format: "json",
|
|
154
|
+
metadata: args.metadata || {},
|
|
155
|
+
epics: args.epics,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
const data = await client.post(`/backlog/import?project_id=${projectId}`, body);
|
|
159
|
+
return JSON.stringify(data, null, 2);
|
|
160
|
+
}
|
|
161
|
+
default:
|
|
162
|
+
throw new Error(`Tool não encontrada: ${name}`);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=backlog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backlog.js","sourceRoot":"","sources":["../../src/tools/backlog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tools MCP para leitura de Clientes do Tasker.
|
|
3
|
+
* REQ-16.10: list_clients — Lista clientes
|
|
4
|
+
*/
|
|
5
|
+
import type { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
6
|
+
import type { TaskerApiClient } from "../api-client.js";
|
|
7
|
+
export declare const tools: Tool[];
|
|
8
|
+
export declare function handleTool(name: string, args: Record<string, unknown>, client: TaskerApiClient): Promise<string>;
|
|
9
|
+
//# sourceMappingURL=clients.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clients.d.ts","sourceRoot":"","sources":["../../src/tools/clients.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,eAAO,MAAM,KAAK,EAAE,IAAI,EAuBvB,CAAC;AAEF,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,MAAM,CAAC,CAajB"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tools MCP para leitura de Clientes do Tasker.
|
|
3
|
+
* REQ-16.10: list_clients — Lista clientes
|
|
4
|
+
*/
|
|
5
|
+
export const tools = [
|
|
6
|
+
{
|
|
7
|
+
name: "list_clients",
|
|
8
|
+
description: "Lista todos os clientes cadastrados no Tasker. " +
|
|
9
|
+
"Clientes são empresas ou pessoas que contratam projetos. " +
|
|
10
|
+
"Use para encontrar o ID de um cliente ao criar projetos ou filtrar dados. " +
|
|
11
|
+
"Retorna: id, name, email, status. " +
|
|
12
|
+
"Status possíveis: Ativo, Suspenso, Demitido.",
|
|
13
|
+
inputSchema: {
|
|
14
|
+
type: "object",
|
|
15
|
+
properties: {
|
|
16
|
+
page: {
|
|
17
|
+
type: "number",
|
|
18
|
+
description: "Número da página (default: 1)",
|
|
19
|
+
},
|
|
20
|
+
limit: {
|
|
21
|
+
type: "number",
|
|
22
|
+
description: "Itens por página (default: 50, max: 200)",
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
export async function handleTool(name, args, client) {
|
|
29
|
+
switch (name) {
|
|
30
|
+
case "list_clients": {
|
|
31
|
+
const params = {};
|
|
32
|
+
if (args.page)
|
|
33
|
+
params.page = String(args.page);
|
|
34
|
+
if (args.limit)
|
|
35
|
+
params.limit = String(args.limit);
|
|
36
|
+
const data = await client.get("/clients", params);
|
|
37
|
+
return JSON.stringify(data, null, 2);
|
|
38
|
+
}
|
|
39
|
+
default:
|
|
40
|
+
throw new Error(`Tool não encontrada: ${name}`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=clients.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clients.js","sourceRoot":"","sources":["../../src/tools/clients.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,CAAC,MAAM,KAAK,GAAW;IAC3B;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EACT,iDAAiD;YACjD,2DAA2D;YAC3D,4EAA4E;YAC5E,oCAAoC;YACpC,8CAA8C;QAChD,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,+BAA+B;iBAC7C;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,0CAA0C;iBACxD;aACF;SACF;KACF;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAY,EACZ,IAA6B,EAC7B,MAAuB;IAEvB,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,MAAM,GAA2B,EAAE,CAAC;YAC1C,IAAI,IAAI,CAAC,IAAI;gBAAE,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,IAAI,IAAI,CAAC,KAAK;gBAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACvC,CAAC;QAED;YACE,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tools MCP para Épicos do Tasker.
|
|
3
|
+
* REQ-16.7: list_epics — Lista épicos com filtros
|
|
4
|
+
* REQ-17.6: create_epic — Cria um novo épico
|
|
5
|
+
*/
|
|
6
|
+
import type { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
7
|
+
import type { TaskerApiClient } from "../api-client.js";
|
|
8
|
+
export declare const tools: Tool[];
|
|
9
|
+
export declare function handleTool(name: string, args: Record<string, unknown>, client: TaskerApiClient): Promise<string>;
|
|
10
|
+
//# sourceMappingURL=epics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"epics.d.ts","sourceRoot":"","sources":["../../src/tools/epics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,eAAO,MAAM,KAAK,EAAE,IAAI,EAoGvB,CAAC;AAEF,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,MAAM,CAAC,CAiDjB"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tools MCP para Épicos do Tasker.
|
|
3
|
+
* REQ-16.7: list_epics — Lista épicos com filtros
|
|
4
|
+
* REQ-17.6: create_epic — Cria um novo épico
|
|
5
|
+
*/
|
|
6
|
+
export const tools = [
|
|
7
|
+
{
|
|
8
|
+
name: "list_epics",
|
|
9
|
+
description: "Lista épicos (epics) do Tasker com filtros opcionais. " +
|
|
10
|
+
"Épicos são agrupamentos de alto nível que contêm histórias de usuário e tarefas. " +
|
|
11
|
+
"Use para ver os épicos de um projeto e seu progresso. " +
|
|
12
|
+
"Retorna: id, titulo, projeto, situacao, data_inicio, data_fim.",
|
|
13
|
+
inputSchema: {
|
|
14
|
+
type: "object",
|
|
15
|
+
properties: {
|
|
16
|
+
project_id: {
|
|
17
|
+
type: "number",
|
|
18
|
+
description: "Filtrar por ID do projeto",
|
|
19
|
+
},
|
|
20
|
+
situacao: {
|
|
21
|
+
type: "string",
|
|
22
|
+
description: "Filtrar por situação do épico",
|
|
23
|
+
},
|
|
24
|
+
page: {
|
|
25
|
+
type: "number",
|
|
26
|
+
description: "Número da página (default: 1)",
|
|
27
|
+
},
|
|
28
|
+
limit: {
|
|
29
|
+
type: "number",
|
|
30
|
+
description: "Itens por página (default: 50, max: 200)",
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: "create_epic",
|
|
37
|
+
description: "Cria um novo épico no Tasker. Épicos são agrupamentos de alto nível que organizam " +
|
|
38
|
+
"histórias de usuário e tarefas em entregas maiores. " +
|
|
39
|
+
"Requer título e projeto. Opcionalmente pode definir descrição e datas de início/fim. " +
|
|
40
|
+
"Após criar o épico, use create_story ou update_task para vincular itens a ele.",
|
|
41
|
+
inputSchema: {
|
|
42
|
+
type: "object",
|
|
43
|
+
properties: {
|
|
44
|
+
titulo: {
|
|
45
|
+
type: "string",
|
|
46
|
+
description: "Título do épico (obrigatório, ex: 'Módulo de Pagamentos')",
|
|
47
|
+
},
|
|
48
|
+
projeto_id: {
|
|
49
|
+
type: "number",
|
|
50
|
+
description: "ID do projeto ao qual o épico pertence (obrigatório)",
|
|
51
|
+
},
|
|
52
|
+
descricao: {
|
|
53
|
+
type: "string",
|
|
54
|
+
description: "Descrição detalhada do épico e seus objetivos",
|
|
55
|
+
},
|
|
56
|
+
data_inicio: {
|
|
57
|
+
type: "string",
|
|
58
|
+
description: "Data prevista de início (formato YYYY-MM-DD)",
|
|
59
|
+
},
|
|
60
|
+
data_fim: {
|
|
61
|
+
type: "string",
|
|
62
|
+
description: "Data prevista de conclusão (formato YYYY-MM-DD)",
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
required: ["titulo", "projeto_id"],
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: "update_epic",
|
|
70
|
+
description: "Atualiza um épico existente no Tasker. Informe o ID do épico e os campos a alterar. " +
|
|
71
|
+
"Pode atualizar título, descrição, situação, datas de início/fim e situação financeira.",
|
|
72
|
+
inputSchema: {
|
|
73
|
+
type: "object",
|
|
74
|
+
properties: {
|
|
75
|
+
epic_id: {
|
|
76
|
+
type: "number",
|
|
77
|
+
description: "ID do épico a atualizar (obrigatório)",
|
|
78
|
+
},
|
|
79
|
+
titulo: {
|
|
80
|
+
type: "string",
|
|
81
|
+
description: "Novo título do épico",
|
|
82
|
+
},
|
|
83
|
+
descricao: {
|
|
84
|
+
type: "string",
|
|
85
|
+
description: "Nova descrição do épico",
|
|
86
|
+
},
|
|
87
|
+
situacao: {
|
|
88
|
+
type: "string",
|
|
89
|
+
description: "Nova situação do épico",
|
|
90
|
+
},
|
|
91
|
+
data_inicio: {
|
|
92
|
+
type: "string",
|
|
93
|
+
description: "Nova data de início (formato YYYY-MM-DD)",
|
|
94
|
+
},
|
|
95
|
+
data_fim: {
|
|
96
|
+
type: "string",
|
|
97
|
+
description: "Nova data de fim (formato YYYY-MM-DD)",
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
required: ["epic_id"],
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
];
|
|
104
|
+
export async function handleTool(name, args, client) {
|
|
105
|
+
switch (name) {
|
|
106
|
+
case "list_epics": {
|
|
107
|
+
const params = {};
|
|
108
|
+
if (args.project_id)
|
|
109
|
+
params.projeto_id = String(args.project_id);
|
|
110
|
+
if (args.situacao)
|
|
111
|
+
params.situacao = String(args.situacao);
|
|
112
|
+
if (args.page)
|
|
113
|
+
params.page = String(args.page);
|
|
114
|
+
if (args.limit)
|
|
115
|
+
params.limit = String(args.limit);
|
|
116
|
+
const data = await client.get("/epics", params);
|
|
117
|
+
return JSON.stringify(data, null, 2);
|
|
118
|
+
}
|
|
119
|
+
case "create_epic": {
|
|
120
|
+
const titulo = args.titulo;
|
|
121
|
+
const projetoId = args.projeto_id;
|
|
122
|
+
if (!titulo)
|
|
123
|
+
throw new Error("titulo é obrigatório");
|
|
124
|
+
if (!projetoId)
|
|
125
|
+
throw new Error("projeto_id é obrigatório");
|
|
126
|
+
const body = {
|
|
127
|
+
titulo,
|
|
128
|
+
projeto_id: projetoId,
|
|
129
|
+
};
|
|
130
|
+
if (args.descricao)
|
|
131
|
+
body.descricao = args.descricao;
|
|
132
|
+
if (args.data_inicio)
|
|
133
|
+
body.data_inicio = args.data_inicio;
|
|
134
|
+
if (args.data_fim)
|
|
135
|
+
body.data_fim = args.data_fim;
|
|
136
|
+
const data = await client.post("/epics", body);
|
|
137
|
+
return JSON.stringify(data, null, 2);
|
|
138
|
+
}
|
|
139
|
+
case "update_epic": {
|
|
140
|
+
const epicId = args.epic_id;
|
|
141
|
+
if (!epicId)
|
|
142
|
+
throw new Error("epic_id é obrigatório");
|
|
143
|
+
const body = {};
|
|
144
|
+
if (args.titulo !== undefined)
|
|
145
|
+
body.titulo = args.titulo;
|
|
146
|
+
if (args.descricao !== undefined)
|
|
147
|
+
body.descricao = args.descricao;
|
|
148
|
+
if (args.situacao !== undefined)
|
|
149
|
+
body.situacao = args.situacao;
|
|
150
|
+
if (args.data_inicio !== undefined)
|
|
151
|
+
body.data_inicio = args.data_inicio;
|
|
152
|
+
if (args.data_fim !== undefined)
|
|
153
|
+
body.data_fim = args.data_fim;
|
|
154
|
+
const data = await client.put(`/epics/${epicId}`, body);
|
|
155
|
+
return JSON.stringify(data, null, 2);
|
|
156
|
+
}
|
|
157
|
+
default:
|
|
158
|
+
throw new Error(`Tool não encontrada: ${name}`);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=epics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"epics.js","sourceRoot":"","sources":["../../src/tools/epics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tools MCP para Planejamento do Tasker.
|
|
3
|
+
* Ferramentas auxiliares para agentes de IA planejarem projetos:
|
|
4
|
+
* - get_working_days: consulta dias úteis do calendário
|
|
5
|
+
* - get_app_config: consulta parâmetros de configuração (horas_uteis_dia, etc.)
|
|
6
|
+
*/
|
|
7
|
+
import type { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
8
|
+
import type { TaskerApiClient } from "../api-client.js";
|
|
9
|
+
export declare const tools: Tool[];
|
|
10
|
+
export declare function handleTool(name: string, args: Record<string, unknown>, client: TaskerApiClient): Promise<string>;
|
|
11
|
+
//# sourceMappingURL=planning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planning.d.ts","sourceRoot":"","sources":["../../src/tools/planning.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,eAAO,MAAM,KAAK,EAAE,IAAI,EA0CvB,CAAC;AAEF,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,MAAM,CAAC,CA0BjB"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tools MCP para Planejamento do Tasker.
|
|
3
|
+
* Ferramentas auxiliares para agentes de IA planejarem projetos:
|
|
4
|
+
* - get_working_days: consulta dias úteis do calendário
|
|
5
|
+
* - get_app_config: consulta parâmetros de configuração (horas_uteis_dia, etc.)
|
|
6
|
+
*/
|
|
7
|
+
export const tools = [
|
|
8
|
+
{
|
|
9
|
+
name: "get_working_days",
|
|
10
|
+
description: "Retorna os dias úteis do calendário de trabalho do Tasker para um período. " +
|
|
11
|
+
"Use para calcular quantos dias úteis existem entre duas datas, " +
|
|
12
|
+
"identificar feriados, e planejar cronogramas. " +
|
|
13
|
+
"Retorna: lista de dias úteis, feriados, e contagens.",
|
|
14
|
+
inputSchema: {
|
|
15
|
+
type: "object",
|
|
16
|
+
properties: {
|
|
17
|
+
start: {
|
|
18
|
+
type: "string",
|
|
19
|
+
description: "Data de início do período (formato YYYY-MM-DD, obrigatório)",
|
|
20
|
+
},
|
|
21
|
+
end: {
|
|
22
|
+
type: "string",
|
|
23
|
+
description: "Data de fim do período (formato YYYY-MM-DD, obrigatório)",
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
required: ["start", "end"],
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: "get_app_config",
|
|
31
|
+
description: "Retorna parâmetros de configuração do Tasker. " +
|
|
32
|
+
"Parâmetros disponíveis: horas_uteis_dia (default 6), dias_uteis_da_semana (default 5), " +
|
|
33
|
+
"percentual_impostos (default 0.12). " +
|
|
34
|
+
"Use para saber a carga horária diária padrão antes de planejar um projeto. " +
|
|
35
|
+
"Se chave não for informada, retorna todos os parâmetros.",
|
|
36
|
+
inputSchema: {
|
|
37
|
+
type: "object",
|
|
38
|
+
properties: {
|
|
39
|
+
chave: {
|
|
40
|
+
type: "string",
|
|
41
|
+
description: "Chave específica do parâmetro (ex: 'horas_uteis_dia'). Se omitida, retorna todos.",
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
];
|
|
47
|
+
export async function handleTool(name, args, client) {
|
|
48
|
+
switch (name) {
|
|
49
|
+
case "get_working_days": {
|
|
50
|
+
const start = args.start;
|
|
51
|
+
const end = args.end;
|
|
52
|
+
if (!start)
|
|
53
|
+
throw new Error("start é obrigatório");
|
|
54
|
+
if (!end)
|
|
55
|
+
throw new Error("end é obrigatório");
|
|
56
|
+
const params = {
|
|
57
|
+
start: String(start),
|
|
58
|
+
end: String(end),
|
|
59
|
+
};
|
|
60
|
+
const data = await client.get("/working-days", params);
|
|
61
|
+
return JSON.stringify(data, null, 2);
|
|
62
|
+
}
|
|
63
|
+
case "get_app_config": {
|
|
64
|
+
const params = {};
|
|
65
|
+
if (args.chave)
|
|
66
|
+
params.chave = String(args.chave);
|
|
67
|
+
const data = await client.get("/config", params);
|
|
68
|
+
return JSON.stringify(data, null, 2);
|
|
69
|
+
}
|
|
70
|
+
default:
|
|
71
|
+
throw new Error(`Tool não encontrada: ${name}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=planning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planning.js","sourceRoot":"","sources":["../../src/tools/planning.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,CAAC,MAAM,KAAK,GAAW;IAC3B;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,6EAA6E;YAC7E,iEAAiE;YACjE,gDAAgD;YAChD,sDAAsD;QACxD,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,6DAA6D;iBAC3E;gBACD,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,0DAA0D;iBACxE;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC;SAC3B;KACF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,gDAAgD;YAChD,yFAAyF;YACzF,sCAAsC;YACtC,6EAA6E;YAC7E,0DAA0D;QAC5D,WAAW,EAAE;YACX,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,mFAAmF;iBACtF;aACF;SACF;KACF;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAY,EACZ,IAA6B,EAC7B,MAAuB;IAEvB,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACnD,IAAI,CAAC,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAE/C,MAAM,MAAM,GAA2B;gBACrC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;gBACpB,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;aACjB,CAAC;YACF,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACvC,CAAC;QAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,MAAM,GAA2B,EAAE,CAAC;YAC1C,IAAI,IAAI,CAAC,KAAK;gBAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACvC,CAAC;QAED;YACE,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tools MCP para leitura de Projetos do Tasker.
|
|
3
|
+
* REQ-16.1: list_projects — Lista projetos com filtros opcionais
|
|
4
|
+
* REQ-16.2: get_project — Detalhe de um projeto com dados financeiros
|
|
5
|
+
*/
|
|
6
|
+
import type { Tool } from "@modelcontextprotocol/sdk/types.js";
|
|
7
|
+
import type { TaskerApiClient } from "../api-client.js";
|
|
8
|
+
export declare const tools: Tool[];
|
|
9
|
+
export declare function handleTool(name: string, args: Record<string, unknown>, client: TaskerApiClient): Promise<string>;
|
|
10
|
+
//# sourceMappingURL=projects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,eAAO,MAAM,KAAK,EAAE,IAAI,EAqDvB,CAAC;AAEF,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,MAAM,CAAC,CAyBjB"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tools MCP para leitura de Projetos do Tasker.
|
|
3
|
+
* REQ-16.1: list_projects — Lista projetos com filtros opcionais
|
|
4
|
+
* REQ-16.2: get_project — Detalhe de um projeto com dados financeiros
|
|
5
|
+
*/
|
|
6
|
+
export const tools = [
|
|
7
|
+
{
|
|
8
|
+
name: "list_projects",
|
|
9
|
+
description: "Lista todos os projetos do Tasker com filtros opcionais. " +
|
|
10
|
+
"Use para ver projetos ativos, filtrar por cliente, ou por tipo de contrato. " +
|
|
11
|
+
"Retorna: id, titulo, apelido, cliente, situacao, tipo_contrato, tipo_cobranca. " +
|
|
12
|
+
"Situações possíveis: Aguardando, Ativo, Completo, Cancelado.",
|
|
13
|
+
inputSchema: {
|
|
14
|
+
type: "object",
|
|
15
|
+
properties: {
|
|
16
|
+
situacao: {
|
|
17
|
+
type: "string",
|
|
18
|
+
enum: ["Aguardando", "Ativo", "Completo", "Cancelado"],
|
|
19
|
+
description: "Filtrar por situação do projeto",
|
|
20
|
+
},
|
|
21
|
+
cliente_id: {
|
|
22
|
+
type: "number",
|
|
23
|
+
description: "Filtrar por ID do cliente",
|
|
24
|
+
},
|
|
25
|
+
tipo_contrato: {
|
|
26
|
+
type: "string",
|
|
27
|
+
enum: ["Ateliê Digital", "Squad As a Services", "Produto Interno"],
|
|
28
|
+
description: "Filtrar por tipo de contrato",
|
|
29
|
+
},
|
|
30
|
+
page: {
|
|
31
|
+
type: "number",
|
|
32
|
+
description: "Número da página (default: 1)",
|
|
33
|
+
},
|
|
34
|
+
limit: {
|
|
35
|
+
type: "number",
|
|
36
|
+
description: "Itens por página (default: 50, max: 200)",
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: "get_project",
|
|
43
|
+
description: "Retorna detalhes completos de um projeto específico, incluindo dados financeiros " +
|
|
44
|
+
"(receita, custo, lucro, margem). Use quando precisar de informações detalhadas " +
|
|
45
|
+
"sobre um projeto, como valor do contrato, datas, progresso e indicadores financeiros.",
|
|
46
|
+
inputSchema: {
|
|
47
|
+
type: "object",
|
|
48
|
+
properties: {
|
|
49
|
+
project_id: {
|
|
50
|
+
type: "number",
|
|
51
|
+
description: "ID do projeto",
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
required: ["project_id"],
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
];
|
|
58
|
+
export async function handleTool(name, args, client) {
|
|
59
|
+
switch (name) {
|
|
60
|
+
case "list_projects": {
|
|
61
|
+
const params = {};
|
|
62
|
+
if (args.situacao)
|
|
63
|
+
params.situacao = String(args.situacao);
|
|
64
|
+
if (args.cliente_id)
|
|
65
|
+
params.cliente_id = String(args.cliente_id);
|
|
66
|
+
if (args.tipo_contrato)
|
|
67
|
+
params.tipo_contrato = String(args.tipo_contrato);
|
|
68
|
+
if (args.page)
|
|
69
|
+
params.page = String(args.page);
|
|
70
|
+
if (args.limit)
|
|
71
|
+
params.limit = String(args.limit);
|
|
72
|
+
const data = await client.get("/projects", params);
|
|
73
|
+
return JSON.stringify(data, null, 2);
|
|
74
|
+
}
|
|
75
|
+
case "get_project": {
|
|
76
|
+
const projectId = args.project_id;
|
|
77
|
+
if (!projectId) {
|
|
78
|
+
throw new Error("project_id é obrigatório");
|
|
79
|
+
}
|
|
80
|
+
const data = await client.get(`/projects/${projectId}`);
|
|
81
|
+
return JSON.stringify(data, null, 2);
|
|
82
|
+
}
|
|
83
|
+
default:
|
|
84
|
+
throw new Error(`Tool não encontrada: ${name}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=projects.js.map
|