@mcp-consultant-tools/azure-devops 30.0.0-beta.16 → 30.0.0-beta.18

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 (41) hide show
  1. package/build/services/sync-service.d.ts.map +1 -1
  2. package/build/services/sync-service.js +16 -12
  3. package/build/services/sync-service.js.map +1 -1
  4. package/build/sync/annotation-parser.d.ts +49 -0
  5. package/build/sync/annotation-parser.d.ts.map +1 -0
  6. package/build/sync/annotation-parser.js +81 -0
  7. package/build/sync/annotation-parser.js.map +1 -0
  8. package/build/sync/field-aliases.d.ts +35 -0
  9. package/build/sync/field-aliases.d.ts.map +1 -0
  10. package/build/sync/field-aliases.js +76 -0
  11. package/build/sync/field-aliases.js.map +1 -0
  12. package/build/sync/html-detection.d.ts +16 -65
  13. package/build/sync/html-detection.d.ts.map +1 -1
  14. package/build/sync/html-detection.js +63 -112
  15. package/build/sync/html-detection.js.map +1 -1
  16. package/build/sync/image-sync.d.ts +8 -5
  17. package/build/sync/image-sync.d.ts.map +1 -1
  18. package/build/sync/image-sync.js +18 -10
  19. package/build/sync/image-sync.js.map +1 -1
  20. package/build/sync/index.d.ts +4 -0
  21. package/build/sync/index.d.ts.map +1 -1
  22. package/build/sync/index.js +4 -0
  23. package/build/sync/index.js.map +1 -1
  24. package/build/sync/legacy-mappings.d.ts +37 -0
  25. package/build/sync/legacy-mappings.d.ts.map +1 -0
  26. package/build/sync/legacy-mappings.js +75 -0
  27. package/build/sync/legacy-mappings.js.map +1 -0
  28. package/build/sync/markdown-serializer.d.ts +52 -60
  29. package/build/sync/markdown-serializer.d.ts.map +1 -1
  30. package/build/sync/markdown-serializer.js +603 -603
  31. package/build/sync/markdown-serializer.js.map +1 -1
  32. package/build/sync/template-loader.d.ts +56 -0
  33. package/build/sync/template-loader.d.ts.map +1 -0
  34. package/build/sync/template-loader.js +138 -0
  35. package/build/sync/template-loader.js.map +1 -0
  36. package/build/sync/templates/bug.md +25 -0
  37. package/build/sync/templates/epic.md +23 -0
  38. package/build/sync/templates/feature.md +23 -0
  39. package/build/sync/templates/task.md +14 -0
  40. package/build/sync/templates/user-story.md +26 -0
  41. package/package.json +2 -2
@@ -2,7 +2,22 @@
2
2
  * Markdown Serialization Utilities
3
3
  *
4
4
  * Convert between ADO work items and local markdown files.
5
- * Uses YAML frontmatter for metadata and markdown sections for content.
5
+ *
6
+ * Files use YAML frontmatter (scalar fields — ADO refnames or friendly
7
+ * aliases) + body sections (long text fields tagged with
8
+ * `<!-- ado-field: REFNAME -->` comments). The sync engine is generic:
9
+ * any field named in the file is pushed to ADO, any field not named is
10
+ * left alone.
11
+ *
12
+ * Legacy files (pre-annotation) are detected and parsed via a
13
+ * legacy-mappings fallback table. They auto-upgrade to the annotated
14
+ * format on the next pull.
15
+ */
16
+ import { type LocalOnlySection } from './annotation-parser.js';
17
+ /**
18
+ * Subset of frontmatter values used by downstream services (sync-service,
19
+ * file-utils) via stable friendly names. Always populated on parse by
20
+ * pulling the corresponding refname out of `fieldMap`.
6
21
  */
7
22
  export interface WorkItemFrontmatter {
8
23
  id: number;
@@ -20,6 +35,11 @@ export interface WorkItemFrontmatter {
20
35
  lastSyncedRevision: number;
21
36
  lastSyncedAt: string;
22
37
  }
38
+ /**
39
+ * Legacy slot for the four historically-supported custom fields. Retained
40
+ * so that pre-annotation callers (and reports) keep working. New-style
41
+ * consumers should read `bodyFieldMap` instead.
42
+ */
23
43
  export interface AdditionalFields {
24
44
  howToTest?: string;
25
45
  deploymentInformation?: string;
@@ -27,13 +47,23 @@ export interface AdditionalFields {
27
47
  postdeploymentSteps?: string;
28
48
  }
29
49
  export interface ParsedWorkItemFile {
50
+ /** Friendly-name frontmatter view for back-compat. */
30
51
  frontmatter: WorkItemFrontmatter;
52
+ /** All scalar ADO fields from frontmatter, keyed by refname. */
53
+ fieldMap: Record<string, FieldValue>;
54
+ /** All body text fields (from annotated sections OR legacy headings), keyed by refname. */
55
+ bodyFieldMap: Record<string, string>;
56
+ /** Sections with no ADO-field annotation — preserved in the file but not pushed. */
57
+ localOnlySections: LocalOnlySection[];
58
+ /** Work item type (mirrors frontmatter.type). */
59
+ workItemType: string;
31
60
  description: string;
32
61
  reproSteps: string;
33
62
  acceptanceCriteria: string;
34
63
  additionalFields: AdditionalFields;
35
64
  rawContent: string;
36
65
  }
66
+ export type FieldValue = string | number | boolean | string[];
37
67
  export interface CommentsFrontmatter {
38
68
  id: number;
39
69
  title: string;
@@ -45,50 +75,25 @@ export interface ParsedComment {
45
75
  date: string;
46
76
  content: string;
47
77
  }
48
- /**
49
- * Result of converting work item to markdown
50
- */
51
78
  export interface WorkItemToMarkdownResult {
52
79
  content: string;
53
80
  skippedFields: string[];
54
81
  }
55
82
  /**
56
- * Convert an ADO work item to markdown file content
83
+ * Serialize an ADO work item to an annotated markdown file.
57
84
  *
58
- * @param workItem - The work item from ADO API
59
- * @param revision - The revision number
60
- * @returns Object with markdown content and list of skipped fields (if any were HTML)
85
+ * Follows the template for `fields['System.WorkItemType']`. Frontmatter
86
+ * order and body-section order come from the template. Fields the ADO
87
+ * response carries but the template doesn't mention are appended to the
88
+ * frontmatter with a discovery comment (see D4 in the design plan).
61
89
  */
62
90
  export declare function workItemToMarkdown(workItem: any, revision: number): WorkItemToMarkdownResult;
63
- /**
64
- * Parse a markdown file to extract frontmatter and content sections
65
- */
66
91
  export declare function parseWorkItemMarkdown(content: string): ParsedWorkItemFile;
67
- /**
68
- * Convert ADO comments to a read-only markdown file
69
- */
70
- export declare function commentsToMarkdown(workItem: any, comments: any[]): string;
71
- /**
72
- * Build ADO patch operations from parsed markdown changes
73
- * Only updates fields that have actually changed.
74
- * Auto-converts HTML fields to markdown format unless skipAutoConvert is true.
75
- *
76
- * @param parsed - Parsed work item file
77
- * @param currentWorkItem - Current work item from ADO
78
- * @param skipAutoConvert - Skip automatic HTML-to-markdown conversion (default: false)
79
- */
80
92
  export declare function buildPatchOperations(parsed: ParsedWorkItemFile, currentWorkItem: any, skipAutoConvert?: boolean): {
81
93
  operations: any[];
82
94
  skippedFields: string[];
83
95
  convertedFields: string[];
84
96
  };
85
- /**
86
- * Update the lastSyncedRevision in a markdown file content
87
- */
88
- export declare function updateSyncRevision(content: string, newRevision: number): string;
89
- /**
90
- * Frontmatter for new work items (before they have an ID)
91
- */
92
97
  export interface NewWorkItemFrontmatter {
93
98
  title: string;
94
99
  type: string;
@@ -101,53 +106,40 @@ export interface NewWorkItemFrontmatter {
101
106
  areaPath?: string;
102
107
  iterationPath?: string;
103
108
  }
104
- /**
105
- * Parsed new work item file structure
106
- */
107
109
  export interface ParsedNewWorkItemFile {
108
110
  frontmatter: NewWorkItemFrontmatter;
111
+ fieldMap: Record<string, FieldValue>;
112
+ bodyFieldMap: Record<string, string>;
113
+ localOnlySections: LocalOnlySection[];
114
+ workItemType: string;
109
115
  description: string;
110
116
  reproSteps: string;
111
117
  acceptanceCriteria: string;
112
118
  additionalFields: AdditionalFields;
113
119
  rawContent: string;
114
120
  }
115
- /**
116
- * Check if a work item frontmatter indicates a new (not yet created) work item
117
- * New work items don't have an 'id' field
118
- */
119
121
  export declare function isNewWorkItem(frontmatter: Record<string, any>): boolean;
120
- /**
121
- * Parse a markdown file for a NEW work item (no id required)
122
- */
123
122
  export declare function parseNewWorkItemMarkdown(content: string): ParsedNewWorkItemFile;
124
123
  /**
125
- * Result of building new work item fields, split into standard and custom.
126
- * Custom fields (MoSCoW, HowToTest, Deployment fields) cannot be set during
127
- * ADO work item creation — they must be set via a follow-up update.
124
+ * Split new-work-item fields into standard (safe for creation) and custom
125
+ * (must be set via a follow-up update because ADO rejects custom fields
126
+ * during creation).
127
+ *
128
+ * Standard = refname starts with `System.*` or `Microsoft.VSTS.*`.
129
+ * Custom = everything else (conventionally `Custom.*`).
128
130
  */
129
131
  export interface NewWorkItemFieldSplit {
130
- /** Standard ADO fields safe for creation */
131
132
  standardFields: Record<string, any>;
132
- /** Custom fields that must be set via update after creation */
133
133
  customFields: Record<string, any>;
134
134
  }
135
- /**
136
- * Build ADO fields object for creating a new work item
137
- * Inherits areaPath and iterationPath from parent work item when available
138
- *
139
- * Returns fields split into standard (safe for creation) and custom (require
140
- * a follow-up update) because ADO rejects custom fields during work item creation.
141
- */
142
135
  export declare function buildNewWorkItemFields(parsed: ParsedNewWorkItemFile, parentWorkItem?: any): NewWorkItemFieldSplit;
143
- /**
144
- * Generate a new work item template markdown file
145
- * When parentId is undefined, creates a standalone work item template
146
- */
147
136
  export declare function generateNewWorkItemTemplate(parentId: number | undefined, parentTitle: string, project: string, workItemType?: string): string;
137
+ export declare function commentsToMarkdown(workItem: any, comments: any[]): string;
138
+ export declare function updateSyncRevision(content: string, newRevision: number): string;
139
+ export declare function convertNewFileToSynced(content: string, workItemId: number, revision: number, url: string): string;
148
140
  /**
149
- * Update a new work item file after creation with the assigned ID
150
- * Converts it from a "new" file to a synced file with proper frontmatter
141
+ * Return the list of large-text (body) refnames that should be HTML-checked
142
+ * for a given work-item type. Driven by the loaded template.
151
143
  */
152
- export declare function convertNewFileToSynced(content: string, workItemId: number, revision: number, url: string): string;
144
+ export declare function templateBodyRefnamesForType(workItemType: string): string[];
153
145
  //# sourceMappingURL=markdown-serializer.d.ts.map
@@ -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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"}