@sascha384/tic 0.1.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.
Files changed (87) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +221 -0
  3. package/dist/app.d.ts +17 -0
  4. package/dist/app.js +27 -0
  5. package/dist/app.js.map +1 -0
  6. package/dist/backends/factory.d.ts +5 -0
  7. package/dist/backends/factory.js +42 -0
  8. package/dist/backends/factory.js.map +1 -0
  9. package/dist/backends/github/gh.d.ts +2 -0
  10. package/dist/backends/github/gh.js +17 -0
  11. package/dist/backends/github/gh.js.map +1 -0
  12. package/dist/backends/github/index.d.ts +26 -0
  13. package/dist/backends/github/index.js +188 -0
  14. package/dist/backends/github/index.js.map +1 -0
  15. package/dist/backends/github/mappers.d.ts +33 -0
  16. package/dist/backends/github/mappers.js +26 -0
  17. package/dist/backends/github/mappers.js.map +1 -0
  18. package/dist/backends/gitlab/glab.d.ts +2 -0
  19. package/dist/backends/gitlab/glab.js +17 -0
  20. package/dist/backends/gitlab/glab.js.map +1 -0
  21. package/dist/backends/gitlab/group.d.ts +1 -0
  22. package/dist/backends/gitlab/group.js +33 -0
  23. package/dist/backends/gitlab/group.js.map +1 -0
  24. package/dist/backends/gitlab/index.d.ts +29 -0
  25. package/dist/backends/gitlab/index.js +296 -0
  26. package/dist/backends/gitlab/index.js.map +1 -0
  27. package/dist/backends/gitlab/mappers.d.ts +43 -0
  28. package/dist/backends/gitlab/mappers.js +44 -0
  29. package/dist/backends/gitlab/mappers.js.map +1 -0
  30. package/dist/backends/local/config.d.ts +12 -0
  31. package/dist/backends/local/config.js +28 -0
  32. package/dist/backends/local/config.js.map +1 -0
  33. package/dist/backends/local/index.d.ts +26 -0
  34. package/dist/backends/local/index.js +212 -0
  35. package/dist/backends/local/index.js.map +1 -0
  36. package/dist/backends/local/items.d.ts +6 -0
  37. package/dist/backends/local/items.js +118 -0
  38. package/dist/backends/local/items.js.map +1 -0
  39. package/dist/backends/types.d.ts +56 -0
  40. package/dist/backends/types.js +39 -0
  41. package/dist/backends/types.js.map +1 -0
  42. package/dist/cli/commands/config.d.ts +2 -0
  43. package/dist/cli/commands/config.js +40 -0
  44. package/dist/cli/commands/config.js.map +1 -0
  45. package/dist/cli/commands/init.d.ts +6 -0
  46. package/dist/cli/commands/init.js +12 -0
  47. package/dist/cli/commands/init.js.map +1 -0
  48. package/dist/cli/commands/item.d.ts +41 -0
  49. package/dist/cli/commands/item.js +80 -0
  50. package/dist/cli/commands/item.js.map +1 -0
  51. package/dist/cli/commands/iteration.d.ts +7 -0
  52. package/dist/cli/commands/iteration.js +10 -0
  53. package/dist/cli/commands/iteration.js.map +1 -0
  54. package/dist/cli/commands/mcp.d.ts +85 -0
  55. package/dist/cli/commands/mcp.js +448 -0
  56. package/dist/cli/commands/mcp.js.map +1 -0
  57. package/dist/cli/format.d.ts +3 -0
  58. package/dist/cli/format.js +10 -0
  59. package/dist/cli/format.js.map +1 -0
  60. package/dist/cli/index.d.ts +4 -0
  61. package/dist/cli/index.js +426 -0
  62. package/dist/cli/index.js.map +1 -0
  63. package/dist/components/IterationPicker.d.ts +1 -0
  64. package/dist/components/IterationPicker.js +18 -0
  65. package/dist/components/IterationPicker.js.map +1 -0
  66. package/dist/components/Settings.d.ts +1 -0
  67. package/dist/components/Settings.js +40 -0
  68. package/dist/components/Settings.js.map +1 -0
  69. package/dist/components/WorkItemForm.d.ts +1 -0
  70. package/dist/components/WorkItemForm.js +270 -0
  71. package/dist/components/WorkItemForm.js.map +1 -0
  72. package/dist/components/WorkItemList.d.ts +1 -0
  73. package/dist/components/WorkItemList.js +219 -0
  74. package/dist/components/WorkItemList.js.map +1 -0
  75. package/dist/git.d.ts +38 -0
  76. package/dist/git.js +115 -0
  77. package/dist/git.js.map +1 -0
  78. package/dist/implement.d.ts +25 -0
  79. package/dist/implement.js +130 -0
  80. package/dist/implement.js.map +1 -0
  81. package/dist/index.d.ts +2 -0
  82. package/dist/index.js +14 -0
  83. package/dist/index.js.map +1 -0
  84. package/dist/types.d.ts +26 -0
  85. package/dist/types.js +2 -0
  86. package/dist/types.js.map +1 -0
  87. package/package.json +66 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item.js","sourceRoot":"","sources":["../../../src/cli/commands/item.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Backend } from '../../backends/types.js';
2
+ export interface IterationListResult {
3
+ iterations: string[];
4
+ current: string;
5
+ }
6
+ export declare function runIterationList(backend: Backend): IterationListResult;
7
+ export declare function runIterationSet(backend: Backend, name: string): void;
@@ -0,0 +1,10 @@
1
+ export function runIterationList(backend) {
2
+ return {
3
+ iterations: backend.getIterations(),
4
+ current: backend.getCurrentIteration(),
5
+ };
6
+ }
7
+ export function runIterationSet(backend, name) {
8
+ backend.setCurrentIteration(name);
9
+ }
10
+ //# sourceMappingURL=iteration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iteration.js","sourceRoot":"","sources":["../../../src/cli/commands/iteration.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,gBAAgB,CAAC,OAAgB;IAC/C,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,aAAa,EAAE;QACnC,OAAO,EAAE,OAAO,CAAC,mBAAmB,EAAE;KACvC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAgB,EAAE,IAAY;IAC5D,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,85 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { Backend } from '../../backends/types.js';
3
+ export interface ToolResult {
4
+ [key: string]: unknown;
5
+ content: {
6
+ type: 'text';
7
+ text: string;
8
+ }[];
9
+ isError?: boolean;
10
+ }
11
+ export declare function handleInitProject(root: string): ToolResult;
12
+ export interface ListItemsArgs {
13
+ status?: string;
14
+ type?: string;
15
+ iteration?: string;
16
+ all?: boolean;
17
+ }
18
+ export declare function handleGetConfig(backend: Backend, root: string): ToolResult;
19
+ export declare function handleSetBackend(root: string, args: {
20
+ backend: string;
21
+ }): ToolResult;
22
+ export declare function handleListItems(backend: Backend, args: ListItemsArgs): ToolResult;
23
+ export declare function handleShowItem(backend: Backend, args: {
24
+ id: string;
25
+ }): ToolResult;
26
+ export interface CreateItemArgs {
27
+ title: string;
28
+ type?: string;
29
+ status?: string;
30
+ priority?: string;
31
+ assignee?: string;
32
+ labels?: string;
33
+ iteration?: string;
34
+ parent?: string;
35
+ depends_on?: string[];
36
+ description?: string;
37
+ }
38
+ export interface UpdateItemArgs {
39
+ id: string;
40
+ title?: string;
41
+ type?: string;
42
+ status?: string;
43
+ priority?: string;
44
+ assignee?: string;
45
+ labels?: string;
46
+ iteration?: string;
47
+ parent?: string | null;
48
+ depends_on?: string[];
49
+ description?: string;
50
+ }
51
+ export declare function handleCreateItem(backend: Backend, args: CreateItemArgs): ToolResult;
52
+ export declare function handleUpdateItem(backend: Backend, args: UpdateItemArgs): ToolResult;
53
+ export type DeleteTracker = Set<string>;
54
+ export declare function createDeleteTracker(): DeleteTracker;
55
+ export declare function handleDeleteItem(backend: Backend, args: {
56
+ id: string;
57
+ }, pendingDeletes: DeleteTracker): ToolResult;
58
+ export declare function handleConfirmDelete(backend: Backend, args: {
59
+ id: string;
60
+ }, pendingDeletes: DeleteTracker): ToolResult;
61
+ export declare function handleAddComment(backend: Backend, args: {
62
+ id: string;
63
+ text: string;
64
+ author?: string;
65
+ }): ToolResult;
66
+ export declare function handleSetIteration(backend: Backend, args: {
67
+ name: string;
68
+ }): ToolResult;
69
+ export interface SearchItemsArgs {
70
+ query: string;
71
+ status?: string;
72
+ type?: string;
73
+ iteration?: string;
74
+ all?: boolean;
75
+ }
76
+ export declare function handleSearchItems(backend: Backend, args: SearchItemsArgs): ToolResult;
77
+ export declare function handleGetChildren(backend: Backend, args: {
78
+ id: string;
79
+ }): ToolResult;
80
+ export declare function handleGetDependents(backend: Backend, args: {
81
+ id: string;
82
+ }): ToolResult;
83
+ export declare function handleGetItemTree(backend: Backend, args: ListItemsArgs): ToolResult;
84
+ export declare function registerTools(server: McpServer, backend: Backend, pendingDeletes: DeleteTracker, root: string): void;
85
+ export declare function startMcpServer(): Promise<void>;
@@ -0,0 +1,448 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
+ import { z } from 'zod';
4
+ import { createBackend as createBackendFromConfig, VALID_BACKENDS, } from '../../backends/factory.js';
5
+ import { readConfig, writeConfig } from '../../backends/local/config.js';
6
+ import fs from 'node:fs';
7
+ import path from 'node:path';
8
+ import { runInit } from './init.js';
9
+ import { runItemComment, runItemCreate, runItemDelete, runItemList, runItemShow, runItemUpdate, } from './item.js';
10
+ import { runIterationSet } from './iteration.js';
11
+ function success(data) {
12
+ return {
13
+ content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],
14
+ };
15
+ }
16
+ function error(message) {
17
+ return {
18
+ content: [{ type: 'text', text: message }],
19
+ isError: true,
20
+ };
21
+ }
22
+ export function handleInitProject(root) {
23
+ try {
24
+ const result = runInit(root);
25
+ if (result.alreadyExists) {
26
+ return success({ alreadyExists: true });
27
+ }
28
+ return success({ initialized: true });
29
+ }
30
+ catch (err) {
31
+ return error(err instanceof Error ? err.message : String(err));
32
+ }
33
+ }
34
+ export function handleGetConfig(backend, root) {
35
+ try {
36
+ const config = readConfig(root);
37
+ return success({
38
+ backend: config.backend,
39
+ statuses: backend.getStatuses(),
40
+ types: backend.getWorkItemTypes(),
41
+ iterations: backend.getIterations(),
42
+ currentIteration: backend.getCurrentIteration(),
43
+ capabilities: backend.getCapabilities(),
44
+ });
45
+ }
46
+ catch (err) {
47
+ return error(err instanceof Error ? err.message : String(err));
48
+ }
49
+ }
50
+ export function handleSetBackend(root, args) {
51
+ try {
52
+ if (!VALID_BACKENDS.includes(args.backend)) {
53
+ return error(`Invalid backend "${args.backend}". Valid backends: ${VALID_BACKENDS.join(', ')}`);
54
+ }
55
+ const config = readConfig(root);
56
+ config.backend = args.backend;
57
+ writeConfig(root, config);
58
+ return success({ backend: args.backend });
59
+ }
60
+ catch (err) {
61
+ return error(err instanceof Error ? err.message : String(err));
62
+ }
63
+ }
64
+ export function handleListItems(backend, args) {
65
+ try {
66
+ const items = runItemList(backend, {
67
+ status: args.status,
68
+ type: args.type,
69
+ iteration: args.iteration,
70
+ all: args.all,
71
+ });
72
+ return success(items);
73
+ }
74
+ catch (err) {
75
+ return error(err instanceof Error ? err.message : String(err));
76
+ }
77
+ }
78
+ export function handleShowItem(backend, args) {
79
+ try {
80
+ const item = runItemShow(backend, args.id);
81
+ const url = backend.getItemUrl(args.id);
82
+ return success({ ...item, url });
83
+ }
84
+ catch (err) {
85
+ const message = err instanceof Error ? err.message : String(err);
86
+ return error(message);
87
+ }
88
+ }
89
+ export function handleCreateItem(backend, args) {
90
+ try {
91
+ const opts = {};
92
+ if (args.type !== undefined)
93
+ opts.type = args.type;
94
+ if (args.status !== undefined)
95
+ opts.status = args.status;
96
+ if (args.priority !== undefined)
97
+ opts.priority = args.priority;
98
+ if (args.assignee !== undefined)
99
+ opts.assignee = args.assignee;
100
+ if (args.labels !== undefined)
101
+ opts.labels = args.labels;
102
+ if (args.iteration !== undefined)
103
+ opts.iteration = args.iteration;
104
+ if (args.parent !== undefined)
105
+ opts.parent = args.parent;
106
+ if (args.depends_on !== undefined)
107
+ opts.dependsOn = args.depends_on.join(',');
108
+ if (args.description !== undefined)
109
+ opts.description = args.description;
110
+ const item = runItemCreate(backend, args.title, opts);
111
+ return success(item);
112
+ }
113
+ catch (err) {
114
+ const message = err instanceof Error ? err.message : String(err);
115
+ return error(message);
116
+ }
117
+ }
118
+ export function handleUpdateItem(backend, args) {
119
+ try {
120
+ const opts = {};
121
+ if (args.title !== undefined)
122
+ opts.title = args.title;
123
+ if (args.type !== undefined)
124
+ opts.type = args.type;
125
+ if (args.status !== undefined)
126
+ opts.status = args.status;
127
+ if (args.priority !== undefined)
128
+ opts.priority = args.priority;
129
+ if (args.assignee !== undefined)
130
+ opts.assignee = args.assignee;
131
+ if (args.labels !== undefined)
132
+ opts.labels = args.labels;
133
+ if (args.iteration !== undefined)
134
+ opts.iteration = args.iteration;
135
+ if (args.parent !== undefined)
136
+ opts.parent = args.parent === null ? '' : args.parent;
137
+ if (args.depends_on !== undefined)
138
+ opts.dependsOn = args.depends_on.join(',');
139
+ if (args.description !== undefined)
140
+ opts.description = args.description;
141
+ const item = runItemUpdate(backend, args.id, opts);
142
+ return success(item);
143
+ }
144
+ catch (err) {
145
+ const message = err instanceof Error ? err.message : String(err);
146
+ return error(message);
147
+ }
148
+ }
149
+ export function createDeleteTracker() {
150
+ return new Set();
151
+ }
152
+ export function handleDeleteItem(backend, args, pendingDeletes) {
153
+ try {
154
+ const item = backend.getWorkItem(args.id);
155
+ const caps = backend.getCapabilities();
156
+ const children = caps.relationships ? backend.getChildren(args.id) : [];
157
+ const dependents = caps.relationships ? backend.getDependents(args.id) : [];
158
+ pendingDeletes.add(args.id);
159
+ return success({
160
+ preview: true,
161
+ item: {
162
+ id: item.id,
163
+ title: item.title,
164
+ type: item.type,
165
+ status: item.status,
166
+ },
167
+ affectedChildren: children.map((c) => ({ id: c.id, title: c.title })),
168
+ affectedDependents: dependents.map((d) => ({
169
+ id: d.id,
170
+ title: d.title,
171
+ })),
172
+ message: 'Use confirm_delete to proceed with deletion.',
173
+ });
174
+ }
175
+ catch (err) {
176
+ const message = err instanceof Error ? err.message : String(err);
177
+ return error(message);
178
+ }
179
+ }
180
+ export function handleConfirmDelete(backend, args, pendingDeletes) {
181
+ if (!pendingDeletes.has(args.id)) {
182
+ return error(`No pending delete for item ${args.id}. Call delete_item first to preview.`);
183
+ }
184
+ try {
185
+ runItemDelete(backend, args.id);
186
+ pendingDeletes.delete(args.id);
187
+ return success({ deleted: args.id });
188
+ }
189
+ catch (err) {
190
+ const message = err instanceof Error ? err.message : String(err);
191
+ return error(message);
192
+ }
193
+ }
194
+ export function handleAddComment(backend, args) {
195
+ try {
196
+ const comment = runItemComment(backend, args.id, args.text, {
197
+ author: args.author,
198
+ });
199
+ return success(comment);
200
+ }
201
+ catch (err) {
202
+ const message = err instanceof Error ? err.message : String(err);
203
+ return error(message);
204
+ }
205
+ }
206
+ export function handleSetIteration(backend, args) {
207
+ try {
208
+ runIterationSet(backend, args.name);
209
+ return success({ currentIteration: args.name });
210
+ }
211
+ catch (err) {
212
+ const message = err instanceof Error ? err.message : String(err);
213
+ return error(message);
214
+ }
215
+ }
216
+ export function handleSearchItems(backend, args) {
217
+ try {
218
+ const items = runItemList(backend, {
219
+ status: args.status,
220
+ type: args.type,
221
+ iteration: args.iteration,
222
+ all: args.all,
223
+ });
224
+ const query = args.query.toLowerCase();
225
+ const filtered = items.filter((item) => item.title.toLowerCase().includes(query) ||
226
+ item.description.toLowerCase().includes(query));
227
+ return success(filtered);
228
+ }
229
+ catch (err) {
230
+ return error(err instanceof Error ? err.message : String(err));
231
+ }
232
+ }
233
+ export function handleGetChildren(backend, args) {
234
+ try {
235
+ const children = backend.getChildren(args.id);
236
+ return success(children);
237
+ }
238
+ catch (err) {
239
+ const message = err instanceof Error ? err.message : String(err);
240
+ return error(message);
241
+ }
242
+ }
243
+ export function handleGetDependents(backend, args) {
244
+ try {
245
+ const dependents = backend.getDependents(args.id);
246
+ return success(dependents);
247
+ }
248
+ catch (err) {
249
+ const message = err instanceof Error ? err.message : String(err);
250
+ return error(message);
251
+ }
252
+ }
253
+ export function handleGetItemTree(backend, args) {
254
+ try {
255
+ const opts = {};
256
+ if (args.type)
257
+ opts.type = args.type;
258
+ if (args.status)
259
+ opts.status = args.status;
260
+ if (args.iteration)
261
+ opts.iteration = args.iteration;
262
+ if (args.all)
263
+ opts.all = args.all;
264
+ const items = runItemList(backend, opts);
265
+ const nodeMap = new Map();
266
+ for (const item of items) {
267
+ nodeMap.set(item.id, {
268
+ id: item.id,
269
+ title: item.title,
270
+ type: item.type,
271
+ status: item.status,
272
+ priority: item.priority,
273
+ iteration: item.iteration,
274
+ children: [],
275
+ });
276
+ }
277
+ const roots = [];
278
+ for (const item of items) {
279
+ const node = nodeMap.get(item.id);
280
+ if (item.parent !== null && nodeMap.has(item.parent)) {
281
+ nodeMap.get(item.parent).children.push(node);
282
+ }
283
+ else {
284
+ roots.push(node);
285
+ }
286
+ }
287
+ return success(roots);
288
+ }
289
+ catch (err) {
290
+ return error(err instanceof Error ? err.message : String(err));
291
+ }
292
+ }
293
+ export function registerTools(server, backend, pendingDeletes, root) {
294
+ const caps = backend.getCapabilities();
295
+ server.tool('init_project', 'Initialize a new tic project', () => {
296
+ return handleInitProject(root);
297
+ });
298
+ server.tool('get_config', 'Get project configuration', () => {
299
+ return handleGetConfig(backend, root);
300
+ });
301
+ server.tool('list_items', 'List work items with optional filters', {
302
+ type: z.string().optional().describe('Filter by work item type'),
303
+ status: z.string().optional().describe('Filter by status'),
304
+ iteration: z.string().optional().describe('Filter by iteration'),
305
+ all: z.boolean().optional().describe('Show all iterations'),
306
+ }, (args) => {
307
+ return handleListItems(backend, args);
308
+ });
309
+ server.tool('show_item', 'Show work item details', {
310
+ id: z.string().describe('Work item ID'),
311
+ }, (args) => {
312
+ return handleShowItem(backend, args);
313
+ });
314
+ server.tool('create_item', 'Create a new work item', {
315
+ title: z.string().describe('Work item title'),
316
+ type: z.string().optional().describe('Work item type'),
317
+ status: z.string().optional().describe('Initial status'),
318
+ priority: z.string().optional().describe('Priority level'),
319
+ assignee: z.string().optional().describe('Assignee'),
320
+ labels: z.string().optional().describe('Comma-separated labels'),
321
+ iteration: z.string().optional().describe('Iteration'),
322
+ parent: z.string().optional().describe('Parent item ID'),
323
+ depends_on: z
324
+ .array(z.string())
325
+ .optional()
326
+ .describe('Dependency item IDs'),
327
+ description: z.string().optional().describe('Work item description'),
328
+ }, (args) => {
329
+ return handleCreateItem(backend, args);
330
+ });
331
+ server.tool('update_item', 'Update an existing work item', {
332
+ id: z.string().describe('Work item ID'),
333
+ title: z.string().optional().describe('New title'),
334
+ type: z.string().optional().describe('Work item type'),
335
+ status: z.string().optional().describe('Status'),
336
+ priority: z.string().optional().describe('Priority level'),
337
+ assignee: z.string().optional().describe('Assignee'),
338
+ labels: z.string().optional().describe('Comma-separated labels'),
339
+ iteration: z.string().optional().describe('Iteration'),
340
+ parent: z
341
+ .string()
342
+ .nullable()
343
+ .optional()
344
+ .describe('Parent item ID (null to clear)'),
345
+ depends_on: z
346
+ .array(z.string())
347
+ .optional()
348
+ .describe('Dependency item IDs'),
349
+ description: z.string().optional().describe('Work item description'),
350
+ }, (args) => {
351
+ return handleUpdateItem(backend, args);
352
+ });
353
+ server.tool('delete_item', 'Preview deleting a work item (requires confirm_delete to finalize)', {
354
+ id: z.string().describe('Work item ID'),
355
+ }, (args) => {
356
+ return handleDeleteItem(backend, args, pendingDeletes);
357
+ });
358
+ server.tool('confirm_delete', 'Confirm and execute a pending item deletion', {
359
+ id: z.string().describe('Work item ID'),
360
+ }, (args) => {
361
+ return handleConfirmDelete(backend, args, pendingDeletes);
362
+ });
363
+ server.tool('search_items', 'Search work items by text query', {
364
+ query: z.string().describe('Search query'),
365
+ type: z.string().optional().describe('Filter by work item type'),
366
+ status: z.string().optional().describe('Filter by status'),
367
+ iteration: z.string().optional().describe('Filter by iteration'),
368
+ all: z.boolean().optional().describe('Show all iterations'),
369
+ }, (args) => {
370
+ return handleSearchItems(backend, args);
371
+ });
372
+ server.tool('set_backend', 'Set the backend type for this project', {
373
+ backend: z
374
+ .string()
375
+ .describe(`Backend type: ${VALID_BACKENDS.join(', ')}`),
376
+ }, (args) => {
377
+ return handleSetBackend(root, args);
378
+ });
379
+ if (caps.comments) {
380
+ server.tool('add_comment', 'Add a comment to a work item', {
381
+ id: z.string().describe('Work item ID'),
382
+ text: z.string().describe('Comment text'),
383
+ author: z.string().optional().describe('Comment author'),
384
+ }, (args) => {
385
+ return handleAddComment(backend, args);
386
+ });
387
+ }
388
+ if (caps.iterations) {
389
+ server.tool('set_iteration', 'Set the current iteration', {
390
+ name: z.string().describe('Iteration name'),
391
+ }, (args) => {
392
+ return handleSetIteration(backend, args);
393
+ });
394
+ }
395
+ if (caps.relationships) {
396
+ server.tool('get_children', 'Get child items of a work item', {
397
+ id: z.string().describe('Work item ID'),
398
+ }, (args) => {
399
+ return handleGetChildren(backend, args);
400
+ });
401
+ server.tool('get_dependents', 'Get items that depend on a work item', {
402
+ id: z.string().describe('Work item ID'),
403
+ }, (args) => {
404
+ return handleGetDependents(backend, args);
405
+ });
406
+ server.tool('get_item_tree', 'Get work items as a hierarchical tree', {
407
+ type: z.string().optional().describe('Filter by work item type'),
408
+ status: z.string().optional().describe('Filter by status'),
409
+ iteration: z.string().optional().describe('Filter by iteration'),
410
+ all: z.boolean().optional().describe('Show all iterations'),
411
+ }, (args) => {
412
+ return handleGetItemTree(backend, args);
413
+ });
414
+ }
415
+ }
416
+ function isTicProject(root) {
417
+ return fs.existsSync(path.join(root, '.tic'));
418
+ }
419
+ export async function startMcpServer() {
420
+ const root = process.cwd();
421
+ const server = new McpServer({
422
+ name: 'tic',
423
+ version: '0.1.0',
424
+ });
425
+ let backend = isTicProject(root)
426
+ ? createBackendFromConfig(root)
427
+ : null;
428
+ const pendingDeletes = createDeleteTracker();
429
+ const guardedBackend = new Proxy({}, {
430
+ get(_target, prop) {
431
+ if (!backend) {
432
+ // Re-check after init_project may have created the project
433
+ if (isTicProject(root)) {
434
+ backend = createBackendFromConfig(root);
435
+ }
436
+ else {
437
+ throw new Error('Not a tic project. Use the init_project tool first.');
438
+ }
439
+ }
440
+ return backend[prop];
441
+ },
442
+ });
443
+ registerTools(server, guardedBackend, pendingDeletes, root);
444
+ const transport = new StdioServerTransport();
445
+ await server.connect(transport);
446
+ console.error('tic MCP server running on stdio');
447
+ }
448
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../src/cli/commands/mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function formatTsvRow(fields: string[]): string;
2
+ export declare function formatTsvKeyValue(pairs: [string, string][]): string;
3
+ export declare function formatJson(data: unknown): string;
@@ -0,0 +1,10 @@
1
+ export function formatTsvRow(fields) {
2
+ return fields.join('\t');
3
+ }
4
+ export function formatTsvKeyValue(pairs) {
5
+ return pairs.map(([k, v]) => `${k}\t${v}`).join('\n');
6
+ }
7
+ export function formatJson(data) {
8
+ return JSON.stringify(data, null, 2);
9
+ }
10
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/cli/format.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY,CAAC,MAAgB;IAC3C,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAyB;IACzD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAa;IACtC,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Command } from 'commander';
2
+ export declare function requireTicProject(root: string): void;
3
+ export declare function createProgram(): Command;
4
+ export declare function runCli(argv: string[]): Promise<void>;