@mcp-consultant-tools/azure-devops 27.0.0 → 28.0.0-beta.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.
Files changed (109) hide show
  1. package/build/azure-devops-client.d.ts +42 -0
  2. package/build/azure-devops-client.d.ts.map +1 -0
  3. package/build/azure-devops-client.js +144 -0
  4. package/build/azure-devops-client.js.map +1 -0
  5. package/build/index.d.ts +8 -11
  6. package/build/index.d.ts.map +1 -1
  7. package/build/index.js +40 -1878
  8. package/build/index.js.map +1 -1
  9. package/build/models/api-types.d.ts +159 -0
  10. package/build/models/api-types.d.ts.map +1 -0
  11. package/build/models/api-types.js +5 -0
  12. package/build/models/api-types.js.map +1 -0
  13. package/build/models/index.d.ts +5 -0
  14. package/build/models/index.d.ts.map +1 -0
  15. package/build/models/index.js +5 -0
  16. package/build/models/index.js.map +1 -0
  17. package/build/prompts/index.d.ts +3 -0
  18. package/build/prompts/index.d.ts.map +1 -0
  19. package/build/prompts/index.js +83 -0
  20. package/build/prompts/index.js.map +1 -0
  21. package/build/prompts/templates.d.ts +8 -0
  22. package/build/prompts/templates.d.ts.map +1 -0
  23. package/build/prompts/templates.js +126 -0
  24. package/build/prompts/templates.js.map +1 -0
  25. package/build/services/build-service.d.ts +16 -0
  26. package/build/services/build-service.d.ts.map +1 -0
  27. package/build/services/build-service.js +195 -0
  28. package/build/services/build-service.js.map +1 -0
  29. package/build/services/configuration-service.d.ts +7 -0
  30. package/build/services/configuration-service.d.ts.map +1 -0
  31. package/build/services/configuration-service.js +24 -0
  32. package/build/services/configuration-service.js.map +1 -0
  33. package/build/services/index.d.ts +11 -0
  34. package/build/services/index.d.ts.map +1 -0
  35. package/build/services/index.js +11 -0
  36. package/build/services/index.js.map +1 -0
  37. package/build/services/pull-request-service.d.ts +29 -0
  38. package/build/services/pull-request-service.d.ts.map +1 -0
  39. package/build/services/pull-request-service.js +390 -0
  40. package/build/services/pull-request-service.js.map +1 -0
  41. package/build/services/sync-service.d.ts +19 -0
  42. package/build/services/sync-service.d.ts.map +1 -0
  43. package/build/services/sync-service.js +439 -0
  44. package/build/services/sync-service.js.map +1 -0
  45. package/build/services/variable-group-service.d.ts +11 -0
  46. package/build/services/variable-group-service.d.ts.map +1 -0
  47. package/build/services/variable-group-service.js +62 -0
  48. package/build/services/variable-group-service.js.map +1 -0
  49. package/build/services/wiki-service.d.ts +41 -0
  50. package/build/services/wiki-service.d.ts.map +1 -0
  51. package/build/services/wiki-service.js +346 -0
  52. package/build/services/wiki-service.js.map +1 -0
  53. package/build/services/work-item-service.d.ts +22 -0
  54. package/build/services/work-item-service.d.ts.map +1 -0
  55. package/build/services/work-item-service.js +284 -0
  56. package/build/services/work-item-service.js.map +1 -0
  57. package/build/sync/file-utils.d.ts +7 -5
  58. package/build/sync/file-utils.d.ts.map +1 -1
  59. package/build/sync/file-utils.js +17 -8
  60. package/build/sync/file-utils.js.map +1 -1
  61. package/build/sync/markdown-serializer.d.ts +5 -4
  62. package/build/sync/markdown-serializer.d.ts.map +1 -1
  63. package/build/sync/markdown-serializer.js +21 -9
  64. package/build/sync/markdown-serializer.js.map +1 -1
  65. package/build/tool-examples.d.ts +8 -0
  66. package/build/tool-examples.d.ts.map +1 -1
  67. package/build/tool-examples.js +28 -0
  68. package/build/tool-examples.js.map +1 -1
  69. package/build/tools/build-tools.d.ts +3 -0
  70. package/build/tools/build-tools.d.ts.map +1 -0
  71. package/build/tools/build-tools.js +56 -0
  72. package/build/tools/build-tools.js.map +1 -0
  73. package/build/tools/configuration-tools.d.ts +6 -0
  74. package/build/tools/configuration-tools.d.ts.map +1 -0
  75. package/build/tools/configuration-tools.js +30 -0
  76. package/build/tools/configuration-tools.js.map +1 -0
  77. package/build/tools/index.d.ts +13 -0
  78. package/build/tools/index.d.ts.map +1 -0
  79. package/build/tools/index.js +30 -0
  80. package/build/tools/index.js.map +1 -0
  81. package/build/tools/pull-request-tools.d.ts +5 -0
  82. package/build/tools/pull-request-tools.d.ts.map +1 -0
  83. package/build/tools/pull-request-tools.js +227 -0
  84. package/build/tools/pull-request-tools.js.map +1 -0
  85. package/build/tools/sync-tools.d.ts +3 -0
  86. package/build/tools/sync-tools.d.ts.map +1 -0
  87. package/build/tools/sync-tools.js +146 -0
  88. package/build/tools/sync-tools.js.map +1 -0
  89. package/build/tools/variable-group-tools.d.ts +3 -0
  90. package/build/tools/variable-group-tools.d.ts.map +1 -0
  91. package/build/tools/variable-group-tools.js +32 -0
  92. package/build/tools/variable-group-tools.js.map +1 -0
  93. package/build/tools/wiki-tools.d.ts +3 -0
  94. package/build/tools/wiki-tools.d.ts.map +1 -0
  95. package/build/tools/wiki-tools.js +151 -0
  96. package/build/tools/wiki-tools.js.map +1 -0
  97. package/build/tools/work-item-tools.d.ts +3 -0
  98. package/build/tools/work-item-tools.d.ts.map +1 -0
  99. package/build/tools/work-item-tools.js +188 -0
  100. package/build/tools/work-item-tools.js.map +1 -0
  101. package/build/types.d.ts +23 -0
  102. package/build/types.d.ts.map +1 -0
  103. package/build/types.js +2 -0
  104. package/build/types.js.map +1 -0
  105. package/package.json +2 -2
  106. package/build/AzureDevOpsService.d.ts +0 -489
  107. package/build/AzureDevOpsService.d.ts.map +0 -1
  108. package/build/AzureDevOpsService.js +0 -1558
  109. package/build/AzureDevOpsService.js.map +0 -1
@@ -0,0 +1,284 @@
1
+ /**
2
+ * Work Item Service - Azure DevOps work item operations
3
+ */
4
+ import { marked } from 'marked';
5
+ import { getAllLargeTextFields } from '../sync/html-detection.js';
6
+ export class WorkItemService {
7
+ client;
8
+ constructor(client) {
9
+ this.client = client;
10
+ }
11
+ static SUMMARY_FIELDS = [
12
+ 'System.Id',
13
+ 'System.Title',
14
+ 'System.AssignedTo',
15
+ 'System.State',
16
+ 'Microsoft.VSTS.Common.Severity',
17
+ 'Microsoft.VSTS.Common.Priority',
18
+ 'System.Tags',
19
+ 'Microsoft.VSTS.Scheduling.StoryPoints',
20
+ 'Microsoft.VSTS.Common.ResolvedReason',
21
+ 'System.WorkItemType',
22
+ ];
23
+ async getWorkItem(project, workItemId) {
24
+ this.client.validateProject(project);
25
+ const response = await this.client.get(`${project}/_apis/wit/workitems/${workItemId}?$expand=all&api-version=${this.client.apiVersion}`);
26
+ return {
27
+ id: response.id,
28
+ rev: response.rev,
29
+ url: response.url,
30
+ fields: response.fields,
31
+ relations: response.relations || [],
32
+ _links: response._links,
33
+ commentVersionRef: response.commentVersionRef,
34
+ project
35
+ };
36
+ }
37
+ async queryWorkItems(project, wiql, maxResults = 200) {
38
+ this.client.validateProject(project);
39
+ const queryResult = await this.client.post(`${project}/_apis/wit/wiql?api-version=${this.client.apiVersion}`, { query: wiql });
40
+ if (!queryResult.workItems || queryResult.workItems.length === 0) {
41
+ return {
42
+ query: wiql,
43
+ project,
44
+ totalCount: 0,
45
+ workItems: []
46
+ };
47
+ }
48
+ const workItemIds = queryResult.workItems
49
+ .slice(0, maxResults)
50
+ .map((wi) => wi.id);
51
+ const workItems = await this.client.post(`${project}/_apis/wit/workitemsbatch?api-version=${this.client.apiVersion}`, {
52
+ ids: workItemIds,
53
+ $expand: 'all'
54
+ });
55
+ return {
56
+ query: wiql,
57
+ project,
58
+ totalCount: workItems.value.length,
59
+ workItems: workItems.value
60
+ };
61
+ }
62
+ async runSavedQuery(project, queryId, maxResults = 50, detail = 'summary', fields, groupBy) {
63
+ this.client.validateProject(project);
64
+ const queryResult = await this.client.get(`${project}/_apis/wit/wiql/${queryId}?api-version=${this.client.apiVersion}`);
65
+ if (!queryResult.workItems || queryResult.workItems.length === 0) {
66
+ return {
67
+ queryId,
68
+ project,
69
+ totalCount: 0,
70
+ queriedCount: queryResult.workItems?.length ?? 0,
71
+ workItems: [],
72
+ };
73
+ }
74
+ const totalAvailable = queryResult.workItems.length;
75
+ const workItemIds = queryResult.workItems
76
+ .slice(0, maxResults)
77
+ .map((wi) => wi.id);
78
+ const isFull = detail === 'full';
79
+ const requestedFields = fields ?? (isFull ? undefined : WorkItemService.SUMMARY_FIELDS);
80
+ const body = { ids: workItemIds };
81
+ if (requestedFields) {
82
+ body.fields = requestedFields;
83
+ }
84
+ else {
85
+ body.$expand = 'all';
86
+ }
87
+ const workItems = await this.client.post(`${project}/_apis/wit/workitemsbatch?api-version=${this.client.apiVersion}`, body);
88
+ const items = workItems.value.map((wi) => {
89
+ if (isFull && !fields)
90
+ return wi;
91
+ const f = wi.fields || {};
92
+ return {
93
+ id: wi.id,
94
+ type: f['System.WorkItemType'],
95
+ title: f['System.Title'],
96
+ assignedTo: f['System.AssignedTo']?.displayName ?? f['System.AssignedTo'] ?? null,
97
+ state: f['System.State'],
98
+ severity: f['Microsoft.VSTS.Common.Severity'] ?? null,
99
+ priority: f['Microsoft.VSTS.Common.Priority'] ?? null,
100
+ tags: f['System.Tags'] ?? null,
101
+ storyPoints: f['Microsoft.VSTS.Scheduling.StoryPoints'] ?? null,
102
+ resolvedReason: f['Microsoft.VSTS.Common.ResolvedReason'] ?? null,
103
+ ...(fields ? Object.fromEntries(Object.entries(f).filter(([k]) => !WorkItemService.SUMMARY_FIELDS.includes(k))) : {}),
104
+ };
105
+ });
106
+ const result = {
107
+ queryId,
108
+ project,
109
+ totalAvailable,
110
+ returnedCount: items.length,
111
+ detail,
112
+ };
113
+ if (groupBy) {
114
+ const groups = {};
115
+ for (const item of items) {
116
+ const key = item[groupBy] ?? item.state ?? 'Unknown';
117
+ if (!groups[key])
118
+ groups[key] = [];
119
+ groups[key].push(item);
120
+ }
121
+ result.groupedBy = groupBy;
122
+ result.groups = Object.fromEntries(Object.entries(groups).map(([k, v]) => [k, { count: v.length, items: v }]));
123
+ }
124
+ else {
125
+ result.workItems = items;
126
+ }
127
+ return result;
128
+ }
129
+ async getSavedQuery(project, queryId) {
130
+ this.client.validateProject(project);
131
+ return this.client.get(`${project}/_apis/wit/queries/${queryId}?api-version=${this.client.apiVersion}`);
132
+ }
133
+ async getWorkItemComments(project, workItemId) {
134
+ this.client.validateProject(project);
135
+ const response = await this.client.get(`${project}/_apis/wit/workItems/${workItemId}/comments?api-version=7.1-preview`);
136
+ const comments = response.comments || response.value || [];
137
+ return {
138
+ workItemId,
139
+ project,
140
+ totalCount: response.totalCount ?? comments.length,
141
+ comments: comments.map((comment) => ({
142
+ id: comment.id,
143
+ text: comment.text,
144
+ createdBy: comment.createdBy?.displayName,
145
+ createdDate: comment.createdDate,
146
+ modifiedBy: comment.modifiedBy?.displayName,
147
+ modifiedDate: comment.modifiedDate,
148
+ url: comment.url
149
+ }))
150
+ };
151
+ }
152
+ async addWorkItemComment(project, workItemId, commentText) {
153
+ this.client.validateProject(project);
154
+ if (!this.client.config.enableWorkItemWrite) {
155
+ throw new Error('Work item write operations are disabled. Set AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE=true to enable.');
156
+ }
157
+ let finalText = commentText;
158
+ const format = this.client.config.commentFormat || 'markdown';
159
+ if (format === 'html') {
160
+ finalText = await marked.parse(commentText);
161
+ }
162
+ const response = await this.client.post(`${project}/_apis/wit/workItems/${workItemId}/comments?api-version=7.1-preview`, { text: finalText });
163
+ return {
164
+ id: response.id,
165
+ workItemId,
166
+ project,
167
+ text: response.text,
168
+ format: format,
169
+ createdBy: response.createdBy?.displayName,
170
+ createdDate: response.createdDate
171
+ };
172
+ }
173
+ async updateWorkItemComment(project, workItemId, commentId, commentText) {
174
+ this.client.validateProject(project);
175
+ if (!this.client.config.enableWorkItemWrite) {
176
+ throw new Error('Work item write operations are disabled. Set AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE=true to enable.');
177
+ }
178
+ let finalText = commentText;
179
+ const format = this.client.config.commentFormat || 'markdown';
180
+ if (format === 'html') {
181
+ finalText = await marked.parse(commentText);
182
+ }
183
+ const response = await this.client.patch(`${project}/_apis/wit/workItems/${workItemId}/comments/${commentId}?api-version=7.1-preview`, { text: finalText });
184
+ return {
185
+ id: response.id,
186
+ workItemId,
187
+ project,
188
+ text: response.text,
189
+ format: format,
190
+ modifiedBy: response.modifiedBy?.displayName,
191
+ modifiedDate: response.modifiedDate
192
+ };
193
+ }
194
+ async updateWorkItem(project, workItemId, patchOperations) {
195
+ this.client.validateProject(project);
196
+ if (!this.client.config.enableWorkItemWrite) {
197
+ throw new Error('Work item write operations are disabled. Set AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE=true to enable.');
198
+ }
199
+ const response = await this.client.patch(`${project}/_apis/wit/workitems/${workItemId}?api-version=${this.client.apiVersion}`, patchOperations);
200
+ return {
201
+ id: response.id,
202
+ rev: response.rev,
203
+ fields: response.fields,
204
+ project
205
+ };
206
+ }
207
+ async setFieldsToMarkdownFormat(project, workItemId, fields) {
208
+ if (!this.client.config.enableWorkItemWrite) {
209
+ throw new Error('Work item write operations are disabled. Set AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE=true to enable.');
210
+ }
211
+ const patchOperations = fields.map(field => ({
212
+ op: 'add',
213
+ path: `/multilineFieldsFormat/${field}`,
214
+ value: 'Markdown'
215
+ }));
216
+ await this.updateWorkItem(project, workItemId, patchOperations);
217
+ }
218
+ async createWorkItem(project, workItemType, fields, parentId, relations) {
219
+ this.client.validateProject(project);
220
+ if (!this.client.config.enableWorkItemWrite) {
221
+ throw new Error('Work item write operations are disabled. Set AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE=true to enable.');
222
+ }
223
+ const patchOperations = [];
224
+ Object.keys(fields).forEach(field => {
225
+ patchOperations.push({
226
+ op: 'add',
227
+ path: `/fields/${field}`,
228
+ value: fields[field]
229
+ });
230
+ });
231
+ const allLargeTextFields = getAllLargeTextFields();
232
+ for (const field of allLargeTextFields) {
233
+ if (fields[field] !== undefined) {
234
+ patchOperations.push({
235
+ op: 'add',
236
+ path: `/multilineFieldsFormat/${field}`,
237
+ value: 'Markdown'
238
+ });
239
+ }
240
+ }
241
+ if (parentId !== undefined) {
242
+ const parentUrl = `${this.client.baseUrl}/${encodeURIComponent(project)}/_apis/wit/workItems/${parentId}`;
243
+ patchOperations.push({
244
+ op: 'add',
245
+ path: '/relations/-',
246
+ value: {
247
+ rel: 'System.LinkTypes.Hierarchy-Reverse',
248
+ url: parentUrl
249
+ }
250
+ });
251
+ }
252
+ if (relations && relations.length > 0) {
253
+ relations.forEach(relation => {
254
+ patchOperations.push({
255
+ op: 'add',
256
+ path: '/relations/-',
257
+ value: relation
258
+ });
259
+ });
260
+ }
261
+ const response = await this.client.patch(`${project}/_apis/wit/workitems/$${workItemType}?api-version=${this.client.apiVersion}`, patchOperations);
262
+ return {
263
+ id: response.id,
264
+ rev: response.rev,
265
+ fields: response.fields,
266
+ relations: response.relations || [],
267
+ url: response._links?.html?.href,
268
+ project
269
+ };
270
+ }
271
+ async deleteWorkItem(project, workItemId) {
272
+ this.client.validateProject(project);
273
+ if (!this.client.config.enableWorkItemDelete) {
274
+ throw new Error('Work item delete operations are disabled. Set AZUREDEVOPS_ENABLE_WORK_ITEM_DELETE=true to enable.');
275
+ }
276
+ await this.client.del(`${project}/_apis/wit/workitems/${workItemId}?api-version=${this.client.apiVersion}`);
277
+ return {
278
+ workItemId,
279
+ project,
280
+ deleted: true
281
+ };
282
+ }
283
+ }
284
+ //# sourceMappingURL=work-item-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work-item-service.js","sourceRoot":"","sources":["../../src/services/work-item-service.ts"],"names":[],"mappings":"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"}
@@ -61,14 +61,15 @@ export declare function listSyncedWorkItems(folder: string): Promise<{
61
61
  export declare function validateFolderPath(folderPath: string): void;
62
62
  /**
63
63
  * Get the file path for a new work item file
64
- * Format: new_{parentId}_{index}.md
64
+ * Format: new_{parentId}_{index}.md (with parent) or new_{index}.md (standalone)
65
65
  */
66
- export declare function getNewWorkItemFilePath(folder: string, parentId: number, index: number): string;
66
+ export declare function getNewWorkItemFilePath(folder: string, parentId: number | undefined, index: number): string;
67
67
  /**
68
- * Find the next available index for a new work item file under a parent
69
- * Scans for existing new_{parentId}_*.md files and returns the next available index
68
+ * Find the next available index for a new work item file
69
+ * When parentId is provided, scans for new_{parentId}_*.md files
70
+ * When parentId is undefined, scans for new_*.md (standalone) files
70
71
  */
71
- export declare function findNextNewFileIndex(folder: string, parentId: number): Promise<number>;
72
+ export declare function findNextNewFileIndex(folder: string, parentId?: number): Promise<number>;
72
73
  /**
73
74
  * Find all new work item files in a folder
74
75
  * Returns paths to all new_*.md files
@@ -81,6 +82,7 @@ export declare function renameFile(oldPath: string, newPath: string): Promise<vo
81
82
  /**
82
83
  * Extract parent ID from a new work item filename
83
84
  * e.g., "new_12345_1.md" -> 12345
85
+ * e.g., "new_1.md" -> null (standalone, no parent)
84
86
  */
85
87
  export declare function extractParentIdFromNewFilename(filename: string): number | null;
86
88
  //# sourceMappingURL=file-utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-utils.d.ts","sourceRoot":"","sources":["../../src/sync/file-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAyB,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAKrF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,UAAU,CAejE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ1E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIxF;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAGpF;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEvE;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACjE,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB,EAAE,CAAC,CAwDH;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAiB3D;AAOD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAE9F;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0B5F;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAuB5E;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhF;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG9E"}
1
+ {"version":3,"file":"file-utils.d.ts","sourceRoot":"","sources":["../../src/sync/file-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAyB,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAKrF;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,UAAU,CAejE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ1E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIxF;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAGpF;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEvE;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACjE,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB,EAAE,CAAC,CAwDH;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAiB3D;AAOD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAK1G;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4B7F;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAyB5E;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEhF;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG9E"}
@@ -153,14 +153,18 @@ export function validateFolderPath(folderPath) {
153
153
  // ===========================================================================
154
154
  /**
155
155
  * Get the file path for a new work item file
156
- * Format: new_{parentId}_{index}.md
156
+ * Format: new_{parentId}_{index}.md (with parent) or new_{index}.md (standalone)
157
157
  */
158
158
  export function getNewWorkItemFilePath(folder, parentId, index) {
159
- return path.join(folder, `new_${parentId}_${index}.md`);
159
+ if (parentId !== undefined) {
160
+ return path.join(folder, `new_${parentId}_${index}.md`);
161
+ }
162
+ return path.join(folder, `new_${index}.md`);
160
163
  }
161
164
  /**
162
- * Find the next available index for a new work item file under a parent
163
- * Scans for existing new_{parentId}_*.md files and returns the next available index
165
+ * Find the next available index for a new work item file
166
+ * When parentId is provided, scans for new_{parentId}_*.md files
167
+ * When parentId is undefined, scans for new_*.md (standalone) files
164
168
  */
165
169
  export async function findNextNewFileIndex(folder, parentId) {
166
170
  const config = getSyncConfig(folder);
@@ -170,8 +174,10 @@ export async function findNextNewFileIndex(folder, parentId) {
170
174
  }
171
175
  // List all .md files
172
176
  const files = await fs.readdir(config.folder);
173
- // Find existing new_{parentId}_*.md files
174
- const pattern = new RegExp(`^new_${parentId}_(\\d+)\\.md$`);
177
+ // Match pattern based on whether we have a parent
178
+ const pattern = parentId !== undefined
179
+ ? new RegExp(`^new_${parentId}_(\\d+)\\.md$`)
180
+ : /^new_(\d+)\.md$/;
175
181
  let maxIndex = 0;
176
182
  for (const file of files) {
177
183
  const match = file.match(pattern);
@@ -197,10 +203,12 @@ export async function findNewWorkItemFiles(folder) {
197
203
  // List all .md files
198
204
  const files = await fs.readdir(config.folder);
199
205
  // Find new_*.md files (excluding task files)
206
+ // Two patterns: new_{parentId}_{seq}.md (with parent) and new_{seq}.md (standalone)
200
207
  const newFiles = [];
201
- const pattern = /^new_\d+_\d+\.md$/;
208
+ const withParentPattern = /^new_\d+_\d+\.md$/;
209
+ const standalonePattern = /^new_\d+\.md$/;
202
210
  for (const file of files) {
203
- if (pattern.test(file)) {
211
+ if (withParentPattern.test(file) || standalonePattern.test(file)) {
204
212
  newFiles.push(path.join(config.folder, file));
205
213
  }
206
214
  }
@@ -216,6 +224,7 @@ export async function renameFile(oldPath, newPath) {
216
224
  /**
217
225
  * Extract parent ID from a new work item filename
218
226
  * e.g., "new_12345_1.md" -> 12345
227
+ * e.g., "new_1.md" -> null (standalone, no parent)
219
228
  */
220
229
  export function extractParentIdFromNewFilename(filename) {
221
230
  const match = filename.match(/^new_(\d+)_\d+\.md$/);
@@ -1 +1 @@
1
- {"version":3,"file":"file-utils.js","sourceRoot":"","sources":["../../src/sync/file-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-utils.js","sourceRoot":"","sources":["../../src/sync/file-utils.ts"],"names":[],"mappings":"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"}
@@ -92,7 +92,7 @@ export interface NewWorkItemFrontmatter {
92
92
  title: string;
93
93
  type: string;
94
94
  state: string;
95
- parent: number;
95
+ parent?: number;
96
96
  assignedTo?: string;
97
97
  storyPoints?: number;
98
98
  moscow?: string;
@@ -121,13 +121,14 @@ export declare function isNewWorkItem(frontmatter: Record<string, any>): boolean
121
121
  export declare function parseNewWorkItemMarkdown(content: string): ParsedNewWorkItemFile;
122
122
  /**
123
123
  * Build ADO fields object for creating a new work item
124
- * Inherits areaPath and iterationPath from parent work item
124
+ * Inherits areaPath and iterationPath from parent work item when available
125
125
  */
126
- export declare function buildNewWorkItemFields(parsed: ParsedNewWorkItemFile, parentWorkItem: any): Record<string, any>;
126
+ export declare function buildNewWorkItemFields(parsed: ParsedNewWorkItemFile, parentWorkItem?: any): Record<string, any>;
127
127
  /**
128
128
  * Generate a new work item template markdown file
129
+ * When parentId is undefined, creates a standalone work item template
129
130
  */
130
- export declare function generateNewWorkItemTemplate(parentId: number, parentTitle: string, project: string, workItemType?: string): string;
131
+ export declare function generateNewWorkItemTemplate(parentId: number | undefined, parentTitle: string, project: string, workItemType?: string): string;
131
132
  /**
132
133
  * Update a new work item file after creation with the assigned ID
133
134
  * Converts it from a "new" file to a synced file with proper frontmatter
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-serializer.d.ts","sourceRoot":"","sources":["../../src/sync/markdown-serializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"markdown-serializer.d.ts","sourceRoot":"","sources":["../../src/sync/markdown-serializer.ts"],"names":[],"mappings":"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"}
@@ -439,17 +439,18 @@ export function parseNewWorkItemMarkdown(content) {
439
439
  const frontmatterRaw = frontmatterMatch[1];
440
440
  const frontmatterData = parseFrontmatter(frontmatterRaw);
441
441
  // Validate required fields for new work items
442
- if (!frontmatterData.parent || typeof frontmatterData.parent !== 'number') {
443
- throw new Error('New work item files require a "parent" field with the parent work item ID');
444
- }
445
442
  if (!frontmatterData.title || typeof frontmatterData.title !== 'string') {
446
443
  throw new Error('New work item files require a "title" field');
447
444
  }
445
+ // Validate parent is a number if present
446
+ if (frontmatterData.parent !== undefined && frontmatterData.parent !== null && typeof frontmatterData.parent !== 'number') {
447
+ throw new Error('The "parent" field must be a number (work item ID)');
448
+ }
448
449
  const frontmatter = {
449
450
  title: frontmatterData.title,
450
451
  type: frontmatterData.type || 'User Story',
451
452
  state: frontmatterData.state || 'New',
452
- parent: frontmatterData.parent,
453
+ parent: frontmatterData.parent ?? undefined,
453
454
  assignedTo: frontmatterData.assignedTo,
454
455
  storyPoints: frontmatterData.storyPoints,
455
456
  moscow: frontmatterData.moscow,
@@ -504,10 +505,10 @@ export function parseNewWorkItemMarkdown(content) {
504
505
  }
505
506
  /**
506
507
  * Build ADO fields object for creating a new work item
507
- * Inherits areaPath and iterationPath from parent work item
508
+ * Inherits areaPath and iterationPath from parent work item when available
508
509
  */
509
510
  export function buildNewWorkItemFields(parsed, parentWorkItem) {
510
- const parentFields = parentWorkItem.fields || {};
511
+ const parentFields = parentWorkItem?.fields || {};
511
512
  const fieldConfig = getAdditionalFieldConfig();
512
513
  const fields = {
513
514
  'System.Title': parsed.frontmatter.title,
@@ -571,25 +572,36 @@ export function buildNewWorkItemFields(parsed, parentWorkItem) {
571
572
  }
572
573
  /**
573
574
  * Generate a new work item template markdown file
575
+ * When parentId is undefined, creates a standalone work item template
574
576
  */
575
577
  export function generateNewWorkItemTemplate(parentId, parentTitle, project, workItemType = 'User Story') {
576
578
  // Only include required fields - optional fields omitted to avoid empty value issues
577
579
  const frontmatter = {
578
- title: 'New User Story Title',
580
+ title: `New ${workItemType} Title`,
579
581
  type: workItemType,
580
582
  state: 'New',
581
- parent: parentId,
582
583
  };
584
+ // Only include parent in frontmatter when provided
585
+ if (parentId !== undefined) {
586
+ frontmatter.parent = parentId;
587
+ }
583
588
  let content = serializeFrontmatter(frontmatter);
584
589
  content += '\n';
585
590
  content += `<!-- Optional frontmatter fields (add to YAML above if needed):\n`;
591
+ if (parentId === undefined) {
592
+ content += `parent: 12345\n`;
593
+ }
586
594
  content += `storyPoints: 3\n`;
587
595
  content += `moscow: Should Have\n`;
596
+ content += `areaPath: Project\\Area\n`;
597
+ content += `iterationPath: Project\\Sprint 1\n`;
588
598
  content += `tags:\n`;
589
599
  content += `- tag1\n`;
590
600
  content += `- tag2\n`;
591
601
  content += `-->\n\n`;
592
- content += `> Parent: **#${parentId}** - ${parentTitle}\n`;
602
+ if (parentId !== undefined) {
603
+ content += `> Parent: **#${parentId}** - ${parentTitle}\n`;
604
+ }
593
605
  content += `> Project: ${project}\n`;
594
606
  content += '\n# Description\n\n';
595
607
  content += '[Your description here]\n\n';