@mcp-consultant-tools/azure-devops 28.0.0-beta.7 → 28.0.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 (98) hide show
  1. package/build/azure-devops-client.d.ts +8 -0
  2. package/build/azure-devops-client.d.ts.map +1 -1
  3. package/build/azure-devops-client.js +47 -0
  4. package/build/azure-devops-client.js.map +1 -1
  5. package/build/cli/commands/build-commands.d.ts +7 -0
  6. package/build/cli/commands/build-commands.d.ts.map +1 -0
  7. package/build/cli/commands/build-commands.js +59 -0
  8. package/build/cli/commands/build-commands.js.map +1 -0
  9. package/build/cli/commands/checklist-commands.d.ts +7 -0
  10. package/build/cli/commands/checklist-commands.d.ts.map +1 -0
  11. package/build/cli/commands/checklist-commands.js +141 -0
  12. package/build/cli/commands/checklist-commands.js.map +1 -0
  13. package/build/cli/commands/configuration-commands.d.ts +7 -0
  14. package/build/cli/commands/configuration-commands.d.ts.map +1 -0
  15. package/build/cli/commands/configuration-commands.js +24 -0
  16. package/build/cli/commands/configuration-commands.js.map +1 -0
  17. package/build/cli/commands/index.d.ts +15 -0
  18. package/build/cli/commands/index.d.ts.map +1 -0
  19. package/build/cli/commands/index.js +30 -0
  20. package/build/cli/commands/index.js.map +1 -0
  21. package/build/cli/commands/pull-request-commands.d.ts +7 -0
  22. package/build/cli/commands/pull-request-commands.d.ts.map +1 -0
  23. package/build/cli/commands/pull-request-commands.js +234 -0
  24. package/build/cli/commands/pull-request-commands.js.map +1 -0
  25. package/build/cli/commands/sync-commands.d.ts +7 -0
  26. package/build/cli/commands/sync-commands.d.ts.map +1 -0
  27. package/build/cli/commands/sync-commands.js +148 -0
  28. package/build/cli/commands/sync-commands.js.map +1 -0
  29. package/build/cli/commands/variable-group-commands.d.ts +7 -0
  30. package/build/cli/commands/variable-group-commands.d.ts.map +1 -0
  31. package/build/cli/commands/variable-group-commands.js +36 -0
  32. package/build/cli/commands/variable-group-commands.js.map +1 -0
  33. package/build/cli/commands/wiki-commands.d.ts +7 -0
  34. package/build/cli/commands/wiki-commands.d.ts.map +1 -0
  35. package/build/cli/commands/wiki-commands.js +152 -0
  36. package/build/cli/commands/wiki-commands.js.map +1 -0
  37. package/build/cli/commands/work-item-commands.d.ts +7 -0
  38. package/build/cli/commands/work-item-commands.d.ts.map +1 -0
  39. package/build/cli/commands/work-item-commands.js +169 -0
  40. package/build/cli/commands/work-item-commands.js.map +1 -0
  41. package/build/cli/output.d.ts +11 -0
  42. package/build/cli/output.d.ts.map +1 -0
  43. package/build/cli/output.js +10 -0
  44. package/build/cli/output.js.map +1 -0
  45. package/build/cli.d.ts +9 -0
  46. package/build/cli.d.ts.map +1 -0
  47. package/build/cli.js +27 -0
  48. package/build/cli.js.map +1 -0
  49. package/build/context-factory.d.ts +10 -0
  50. package/build/context-factory.d.ts.map +1 -0
  51. package/build/context-factory.js +63 -0
  52. package/build/context-factory.js.map +1 -0
  53. package/build/index.d.ts +1 -0
  54. package/build/index.d.ts.map +1 -1
  55. package/build/index.js +20 -53
  56. package/build/index.js.map +1 -1
  57. package/build/models/api-types.d.ts +62 -0
  58. package/build/models/api-types.d.ts.map +1 -1
  59. package/build/services/checklist-service.d.ts +42 -0
  60. package/build/services/checklist-service.d.ts.map +1 -0
  61. package/build/services/checklist-service.js +326 -0
  62. package/build/services/checklist-service.js.map +1 -0
  63. package/build/services/index.d.ts +1 -0
  64. package/build/services/index.d.ts.map +1 -1
  65. package/build/services/index.js +1 -0
  66. package/build/services/index.js.map +1 -1
  67. package/build/services/sync-service.d.ts.map +1 -1
  68. package/build/services/sync-service.js +28 -4
  69. package/build/services/sync-service.js.map +1 -1
  70. package/build/services/work-item-service.d.ts.map +1 -1
  71. package/build/services/work-item-service.js +2 -1
  72. package/build/services/work-item-service.js.map +1 -1
  73. package/build/sync/markdown-serializer.d.ts +15 -1
  74. package/build/sync/markdown-serializer.d.ts.map +1 -1
  75. package/build/sync/markdown-serializer.js +121 -56
  76. package/build/sync/markdown-serializer.js.map +1 -1
  77. package/build/sync/task-serializer.d.ts.map +1 -1
  78. package/build/sync/task-serializer.js +21 -12
  79. package/build/sync/task-serializer.js.map +1 -1
  80. package/build/tool-examples.d.ts +16 -0
  81. package/build/tool-examples.d.ts.map +1 -1
  82. package/build/tool-examples.js +34 -0
  83. package/build/tool-examples.js.map +1 -1
  84. package/build/tools/checklist-tools.d.ts +3 -0
  85. package/build/tools/checklist-tools.d.ts.map +1 -0
  86. package/build/tools/checklist-tools.js +197 -0
  87. package/build/tools/checklist-tools.js.map +1 -0
  88. package/build/tools/index.d.ts +1 -0
  89. package/build/tools/index.d.ts.map +1 -1
  90. package/build/tools/index.js +5 -2
  91. package/build/tools/index.js.map +1 -1
  92. package/build/tools/work-item-tools.d.ts.map +1 -1
  93. package/build/tools/work-item-tools.js +52 -24
  94. package/build/tools/work-item-tools.js.map +1 -1
  95. package/build/types.d.ts +2 -0
  96. package/build/types.d.ts.map +1 -1
  97. package/build/ui/work-items-app.html +236 -0
  98. package/package.json +10 -5
package/build/index.js CHANGED
@@ -6,66 +6,30 @@
6
6
  * Entry point: MCP server startup + backward-compatible registerAzureDevOpsTools().
7
7
  */
8
8
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
9
+ import { registerAppResource, RESOURCE_MIME_TYPE } from "@modelcontextprotocol/ext-apps/server";
9
10
  import { pathToFileURL } from "node:url";
10
11
  import { realpathSync } from "node:fs";
12
+ import fs from "node:fs/promises";
13
+ import path from "node:path";
11
14
  import { createMcpServer, createEnvLoader } from "@mcp-consultant-tools/core";
12
- import { AzureDevOpsClient } from './azure-devops-client.js';
13
- import { WikiService, WorkItemService, PullRequestService, BuildService, VariableGroupService, SyncService, ConfigurationService, } from './services/index.js';
15
+ import { createServiceContext } from './context-factory.js';
14
16
  import { registerAllTools } from './tools/index.js';
15
17
  import { registerAllPrompts } from './prompts/index.js';
16
18
  /**
17
- * Build a ServiceContext from environment variables (lazy client initialization).
19
+ * Register UI resources (MCP Apps) for interactive views.
18
20
  */
19
- function createServiceContext() {
20
- let client = null;
21
- function getClient() {
22
- if (!client) {
23
- const missingConfig = [];
24
- if (!process.env.AZUREDEVOPS_ORGANIZATION)
25
- missingConfig.push("AZUREDEVOPS_ORGANIZATION");
26
- if (!process.env.AZUREDEVOPS_PAT)
27
- missingConfig.push("AZUREDEVOPS_PAT");
28
- if (!process.env.AZUREDEVOPS_PROJECTS)
29
- missingConfig.push("AZUREDEVOPS_PROJECTS");
30
- if (missingConfig.length > 0) {
31
- throw new Error(`Missing required Azure DevOps configuration: ${missingConfig.join(", ")}. ` +
32
- `Set environment variables for organization, PAT, and allowed projects.`);
33
- }
34
- const config = {
35
- organization: process.env.AZUREDEVOPS_ORGANIZATION,
36
- pat: process.env.AZUREDEVOPS_PAT,
37
- projects: process.env.AZUREDEVOPS_PROJECTS.split(",").map(p => p.trim()).filter(p => p),
38
- apiVersion: process.env.AZUREDEVOPS_API_VERSION || "7.1",
39
- enableWorkItemWrite: process.env.AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE === "true",
40
- enableWorkItemDelete: process.env.AZUREDEVOPS_ENABLE_WORK_ITEM_DELETE === "true",
41
- enableWikiWrite: process.env.AZUREDEVOPS_ENABLE_WIKI_WRITE === "true",
42
- enableWikiDelete: process.env.AZUREDEVOPS_ENABLE_WIKI_DELETE === "true",
43
- enablePullRequestWrite: process.env.AZUREDEVOPS_ENABLE_PR_WRITE === "true",
44
- commentFormat: process.env.AZUREDEVOPS_COMMENT_FORMAT || 'markdown',
45
- };
46
- client = new AzureDevOpsClient(config);
47
- console.error("Azure DevOps service initialized");
48
- }
49
- return client;
50
- }
51
- // Lazy service singletons
52
- let wiki = null;
53
- let workItem = null;
54
- let pullRequest = null;
55
- let build = null;
56
- let variableGroup = null;
57
- let sync = null;
58
- let configuration = null;
59
- return {
60
- get client() { return getClient(); },
61
- get wiki() { return wiki ??= new WikiService(getClient()); },
62
- get workItem() { return workItem ??= new WorkItemService(getClient()); },
63
- get pullRequest() { return pullRequest ??= new PullRequestService(getClient()); },
64
- get build() { return build ??= new BuildService(getClient()); },
65
- get variableGroup() { return variableGroup ??= new VariableGroupService(getClient()); },
66
- get sync() { return sync ??= new SyncService(workItem ??= new WorkItemService(getClient())); },
67
- get configuration() { return configuration ??= new ConfigurationService(); },
68
- };
21
+ function registerUiResources(server) {
22
+ const resourceUri = "ui://ado/work-items";
23
+ const htmlPath = path.join(import.meta.dirname, "ui", "work-items-app.html");
24
+ registerAppResource(server, resourceUri, resourceUri, { mimeType: RESOURCE_MIME_TYPE }, async () => ({
25
+ contents: [
26
+ {
27
+ uri: resourceUri,
28
+ mimeType: RESOURCE_MIME_TYPE,
29
+ text: await fs.readFile(htmlPath, "utf-8"),
30
+ },
31
+ ],
32
+ }));
69
33
  }
70
34
  /**
71
35
  * Register azure-devops tools and prompts to an MCP server.
@@ -73,11 +37,13 @@ function createServiceContext() {
73
37
  */
74
38
  export function registerAzureDevOpsTools(server) {
75
39
  const ctx = createServiceContext();
40
+ registerUiResources(server);
76
41
  registerAllTools(server, ctx);
77
42
  registerAllPrompts(server, ctx);
78
43
  }
79
44
  // Backward-compatible exports
80
45
  export { AzureDevOpsClient } from './azure-devops-client.js';
46
+ export { createServiceContext } from './context-factory.js';
81
47
  /**
82
48
  * Standalone CLI server (when run directly)
83
49
  * Uses realpathSync to resolve symlinks created by npx
@@ -91,6 +57,7 @@ if (import.meta.url === pathToFileURL(realpathSync(process.argv[1])).href) {
91
57
  capabilities: {
92
58
  tools: {},
93
59
  prompts: {},
60
+ resources: {},
94
61
  },
95
62
  });
96
63
  registerAzureDevOpsTools(server);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD;;GAEG;AACH,SAAS,mBAAmB,CAAC,MAAW;IACtC,MAAM,WAAW,GAAG,qBAAqB,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;IAE7E,mBAAmB,CACjB,MAAM,EACN,WAAW,EACX,WAAW,EACX,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAChC,KAAK,IAAI,EAAE,CAAC,CAAC;QACX,QAAQ,EAAE;YACR;gBACE,GAAG,EAAE,WAAW;gBAChB,QAAQ,EAAE,kBAAkB;gBAC5B,IAAI,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;aAC3C;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAW;IAClD,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;IACnC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,8BAA8B;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAI5D;;;GAGG;AACH,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1E,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAClC,OAAO,EAAE,CAAC;IAEV,MAAM,MAAM,GAAG,eAAe,CAAC;QAC7B,IAAI,EAAE,oCAAoC;QAC1C,OAAO,EAAE,OAAO;QAChB,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;YACT,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,EAAE;SACd;KACF,CAAC,CAAC;IAEH,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAEjC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,KAAY,EAAE,EAAE;QAC/C,OAAO,CAAC,KAAK,CAAC,gEAAgE,EAAE,KAAK,CAAC,CAAC;QACvF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;AAC9E,CAAC"}
@@ -156,4 +156,66 @@ export interface PullRequestChange {
156
156
  url?: string;
157
157
  };
158
158
  }
159
+ export type ChecklistItemState = 'New' | 'In Progress' | 'Blocked' | 'N/A' | 'Completed';
160
+ export interface ChecklistIdentityRef {
161
+ id?: string;
162
+ displayName: string;
163
+ uniqueName?: string;
164
+ imageUrl?: string;
165
+ }
166
+ export interface IChecklistItem {
167
+ id: string;
168
+ text: string;
169
+ required?: boolean;
170
+ state: ChecklistItemState;
171
+ completedBy?: ChecklistIdentityRef;
172
+ completedDate?: string;
173
+ labels?: string[];
174
+ }
175
+ export interface IChecklist {
176
+ id: string;
177
+ __etag?: number;
178
+ checklistItems: IChecklistItem[];
179
+ }
180
+ export interface MergedChecklistItem extends IChecklistItem {
181
+ /** Whether this item comes from the WIT template (true) or is a custom item (false) */
182
+ isTemplateItem: boolean;
183
+ }
184
+ export interface MergedChecklist {
185
+ workItemId: number;
186
+ workItemType: string;
187
+ project: string;
188
+ templateItemCount: number;
189
+ completedCount: number;
190
+ totalCount: number;
191
+ completionPercent: number;
192
+ items: MergedChecklistItem[];
193
+ }
194
+ export interface ChecklistTemplateSummary {
195
+ workItemType: string;
196
+ itemCount: number;
197
+ requiredCount: number;
198
+ }
199
+ export interface ChecklistReportEntry {
200
+ workItemId: number;
201
+ title: string;
202
+ state: string;
203
+ assignedTo: string | null;
204
+ workItemType: string;
205
+ totalItems: number;
206
+ completedItems: number;
207
+ completionPercent: number;
208
+ incompleteRequired: number;
209
+ incompleteItems: string[];
210
+ }
211
+ export interface ChecklistReport {
212
+ project: string;
213
+ workItemType: string | null;
214
+ workItemState: string | null;
215
+ totalWorkItems: number;
216
+ fullyComplete: number;
217
+ partiallyComplete: number;
218
+ notStarted: number;
219
+ entries: ChecklistReportEntry[];
220
+ }
159
221
  //# sourceMappingURL=api-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-types.d.ts","sourceRoot":"","sources":["../../src/models/api-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,aAAa,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAGpC,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAGD,MAAM,WAAW,wBAAwB,CAAC,CAAC;IACzC,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAMD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,WAAW,GAAG,KAAK,CAAC;IACrD,SAAS,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACnE,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAClC,MAAM,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACxC,iBAAiB,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,iBAAiB,CAAC,EAAE,GAAG,CAAC;IACxB,UAAU,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IACvF,aAAa,CAAC,EAAE;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QACjD,WAAW,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/C,cAAc,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QAClD,YAAY,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KACjD,CAAC;IACF,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,WAAW,EAAE,SAAS,GAAG,MAAM,GAAG,YAAY,GAAG,QAAQ,CAAC;IAC1D,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,eAAe,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,eAAe,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,aAAa,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;CACH"}
1
+ {"version":3,"file":"api-types.d.ts","sourceRoot":"","sources":["../../src/models/api-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Checklist Service - Read/write operations for the mohitbagra/workitem-checklist extension.
3
+ *
4
+ * Uses the Azure DevOps Extension Data Service REST API (extmgmt.dev.azure.com).
5
+ * Data is stored in extension-scoped collections, NOT in work item fields.
6
+ *
7
+ * Collections:
8
+ * - DefaultCheckList: Per-work-item state overrides (org-level)
9
+ * - dcwit_{projectId}: Per-work-item-type default templates (org-level)
10
+ * - CheckListItems: Custom shared/personal checklist items
11
+ */
12
+ import type { AzureDevOpsClient } from '../azure-devops-client.js';
13
+ import type { WorkItemService } from './work-item-service.js';
14
+ import type { IChecklist, ChecklistItemState, MergedChecklist, ChecklistTemplateSummary, ChecklistReport } from '../models/index.js';
15
+ export declare class ChecklistService {
16
+ private readonly client;
17
+ private readonly workItemService;
18
+ private projectIdCache;
19
+ constructor(client: AzureDevOpsClient, workItemService: WorkItemService);
20
+ private extPath;
21
+ private resolveProjectId;
22
+ private templateCollection;
23
+ private getDocument;
24
+ private listDocuments;
25
+ private upsertDocument;
26
+ private deleteDocument;
27
+ private mergeItems;
28
+ private checkWriteEnabled;
29
+ getChecklist(project: string, workItemId: number): Promise<MergedChecklist>;
30
+ getTemplate(project: string, workItemType: string): Promise<IChecklist | null>;
31
+ listTemplates(project: string): Promise<ChecklistTemplateSummary[]>;
32
+ updateItemState(project: string, workItemId: number, itemId: string, state: ChecklistItemState, completedByDisplayName?: string): Promise<MergedChecklist>;
33
+ addItem(project: string, workItemId: number, text: string, required?: boolean): Promise<MergedChecklist>;
34
+ removeItem(project: string, workItemId: number, itemId: string): Promise<MergedChecklist>;
35
+ updateTemplate(project: string, workItemType: string, items: Array<{
36
+ text: string;
37
+ required?: boolean;
38
+ labels?: string[];
39
+ }>): Promise<IChecklist>;
40
+ getReport(project: string, workItemType?: string, workItemState?: string, maxResults?: number): Promise<ChecklistReport>;
41
+ }
42
+ //# sourceMappingURL=checklist-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checklist-service.d.ts","sourceRoot":"","sources":["../../src/services/checklist-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EACV,UAAU,EAEV,kBAAkB,EAClB,eAAe,EAEf,wBAAwB,EACxB,eAAe,EAEhB,MAAM,oBAAoB,CAAC;AAM5B,qBAAa,gBAAgB;IAIzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAJlC,OAAO,CAAC,cAAc,CAA6B;gBAGhC,MAAM,EAAE,iBAAiB,EACzB,eAAe,EAAE,eAAe;IAKnD,OAAO,CAAC,OAAO;YAID,gBAAgB;YAWhB,kBAAkB;YAKlB,WAAW;YAWX,aAAa;YAYb,cAAc;YAQd,cAAc;IAa5B,OAAO,CAAC,UAAU;IAqClB,OAAO,CAAC,iBAAiB;IAUnB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA0C3E,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAM9E,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC;IAYnE,eAAe,CACnB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,kBAAkB,EACzB,sBAAsB,CAAC,EAAE,MAAM,GAC9B,OAAO,CAAC,eAAe,CAAC;IAkCrB,OAAO,CACX,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,OAAe,GACxB,OAAO,CAAC,eAAe,CAAC;IA0BrB,UAAU,CACd,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,CAAC;IA6BrB,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,GACpE,OAAO,CAAC,UAAU,CAAC;IAoChB,SAAS,CACb,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,MAAM,EACtB,UAAU,GAAE,MAAY,GACvB,OAAO,CAAC,eAAe,CAAC;CAgG5B"}
@@ -0,0 +1,326 @@
1
+ const EXTENSION_PUBLISHER = 'mohitbagra';
2
+ const EXTENSION_ID = 'workitem-checklist';
3
+ const API_VERSION = '7.1-preview.1';
4
+ export class ChecklistService {
5
+ client;
6
+ workItemService;
7
+ projectIdCache = new Map();
8
+ constructor(client, workItemService) {
9
+ this.client = client;
10
+ this.workItemService = workItemService;
11
+ }
12
+ // ─── Helpers ───────────────────────────────────────────────────────────────
13
+ extPath(collection, scope = 'Default') {
14
+ return `_apis/ExtensionManagement/InstalledExtensions/${EXTENSION_PUBLISHER}/${EXTENSION_ID}/Data/Scopes/${scope}/Current/Collections/${collection}`;
15
+ }
16
+ async resolveProjectId(project) {
17
+ const cached = this.projectIdCache.get(project);
18
+ if (cached)
19
+ return cached;
20
+ const resp = await this.client.get(`_apis/projects/${encodeURIComponent(project)}?api-version=${this.client.apiVersion}`);
21
+ this.projectIdCache.set(project, resp.id);
22
+ return resp.id;
23
+ }
24
+ async templateCollection(project) {
25
+ const projectId = await this.resolveProjectId(project);
26
+ return `dcwit_${projectId}`;
27
+ }
28
+ async getDocument(collection, documentId) {
29
+ try {
30
+ return await this.client.extRequest(`${this.extPath(collection)}/Documents/${encodeURIComponent(documentId)}?api-version=${API_VERSION}`);
31
+ }
32
+ catch (error) {
33
+ if (error.message?.includes('not found'))
34
+ return null;
35
+ throw error;
36
+ }
37
+ }
38
+ async listDocuments(collection) {
39
+ try {
40
+ const resp = await this.client.extRequest(`${this.extPath(collection)}/Documents?api-version=${API_VERSION}`);
41
+ return Array.isArray(resp) ? resp : (resp.value ?? []);
42
+ }
43
+ catch (error) {
44
+ if (error.message?.includes('not found'))
45
+ return [];
46
+ throw error;
47
+ }
48
+ }
49
+ async upsertDocument(collection, doc) {
50
+ return this.client.extRequest(`${this.extPath(collection)}/Documents?api-version=${API_VERSION}`, 'PUT', { ...doc, __etag: -1 });
51
+ }
52
+ async deleteDocument(collection, documentId) {
53
+ try {
54
+ await this.client.extRequest(`${this.extPath(collection)}/Documents/${encodeURIComponent(documentId)}?api-version=${API_VERSION}`, 'DELETE');
55
+ return true;
56
+ }
57
+ catch (error) {
58
+ if (error.message?.includes('not found'))
59
+ return false;
60
+ throw error;
61
+ }
62
+ }
63
+ mergeItems(templateItems, overrideItems) {
64
+ const overrideMap = new Map();
65
+ for (const item of overrideItems) {
66
+ overrideMap.set(item.id.toLowerCase(), item);
67
+ }
68
+ const merged = templateItems.map(tItem => {
69
+ const override = overrideMap.get(tItem.id.toLowerCase());
70
+ return {
71
+ id: tItem.id,
72
+ text: tItem.text,
73
+ required: tItem.required ?? true,
74
+ state: override?.state ?? 'New',
75
+ completedBy: override?.completedBy,
76
+ completedDate: override?.completedDate,
77
+ labels: tItem.labels,
78
+ isTemplateItem: true,
79
+ };
80
+ });
81
+ const templateIds = new Set(templateItems.map(t => t.id.toLowerCase()));
82
+ for (const oItem of overrideItems) {
83
+ if (!templateIds.has(oItem.id.toLowerCase())) {
84
+ merged.push({
85
+ ...oItem,
86
+ required: oItem.required ?? false,
87
+ isTemplateItem: false,
88
+ });
89
+ }
90
+ }
91
+ return merged;
92
+ }
93
+ checkWriteEnabled() {
94
+ if (!this.client.config.enableWorkItemWrite) {
95
+ throw new Error('Checklist write operations are disabled. Set AZUREDEVOPS_ENABLE_WORK_ITEM_WRITE=true to enable.');
96
+ }
97
+ }
98
+ // ─── Public API ────────────────────────────────────────────────────────────
99
+ async getChecklist(project, workItemId) {
100
+ this.client.validateProject(project);
101
+ const wi = await this.workItemService.getWorkItem(project, workItemId);
102
+ const workItemType = wi.fields['System.WorkItemType'];
103
+ const templateCollectionName = await this.templateCollection(project);
104
+ const template = await this.getDocument(templateCollectionName, workItemType);
105
+ const templateItems = template?.checklistItems ?? [];
106
+ const overrides = await this.getDocument('DefaultCheckList', String(workItemId));
107
+ const overrideItems = overrides?.checklistItems ?? [];
108
+ const sharedCustom = await this.getDocument('CheckListItems', String(workItemId));
109
+ const sharedCustomItems = sharedCustom?.checklistItems ?? [];
110
+ const merged = this.mergeItems(templateItems, overrideItems);
111
+ for (const item of sharedCustomItems) {
112
+ if (!merged.some(m => m.id.toLowerCase() === item.id.toLowerCase())) {
113
+ merged.push({
114
+ ...item,
115
+ required: item.required ?? false,
116
+ isTemplateItem: false,
117
+ });
118
+ }
119
+ }
120
+ const completedCount = merged.filter(i => i.state === 'Completed').length;
121
+ return {
122
+ workItemId,
123
+ workItemType,
124
+ project,
125
+ templateItemCount: templateItems.length,
126
+ completedCount,
127
+ totalCount: merged.length,
128
+ completionPercent: merged.length > 0 ? Math.round((completedCount / merged.length) * 100) : 100,
129
+ items: merged,
130
+ };
131
+ }
132
+ async getTemplate(project, workItemType) {
133
+ this.client.validateProject(project);
134
+ const collection = await this.templateCollection(project);
135
+ return this.getDocument(collection, workItemType);
136
+ }
137
+ async listTemplates(project) {
138
+ this.client.validateProject(project);
139
+ const collection = await this.templateCollection(project);
140
+ const docs = await this.listDocuments(collection);
141
+ return docs.map(doc => ({
142
+ workItemType: doc.id,
143
+ itemCount: doc.checklistItems.length,
144
+ requiredCount: doc.checklistItems.filter(i => i.required !== false).length,
145
+ }));
146
+ }
147
+ async updateItemState(project, workItemId, itemId, state, completedByDisplayName) {
148
+ this.client.validateProject(project);
149
+ this.checkWriteEnabled();
150
+ const overrides = await this.getDocument('DefaultCheckList', String(workItemId));
151
+ const items = overrides?.checklistItems ? [...overrides.checklistItems] : [];
152
+ const idx = items.findIndex(i => i.id.toLowerCase() === itemId.toLowerCase());
153
+ const updatedItem = {
154
+ id: itemId,
155
+ text: idx >= 0 ? items[idx].text : '',
156
+ required: idx >= 0 ? items[idx].required : undefined,
157
+ state,
158
+ completedBy: state === 'Completed' ? {
159
+ displayName: completedByDisplayName || 'MCP Automation',
160
+ } : undefined,
161
+ completedDate: state === 'Completed' ? new Date().toISOString() : undefined,
162
+ };
163
+ if (idx >= 0) {
164
+ items[idx] = updatedItem;
165
+ }
166
+ else {
167
+ items.push(updatedItem);
168
+ }
169
+ await this.upsertDocument('DefaultCheckList', {
170
+ id: String(workItemId),
171
+ checklistItems: items,
172
+ });
173
+ return this.getChecklist(project, workItemId);
174
+ }
175
+ async addItem(project, workItemId, text, required = false) {
176
+ this.client.validateProject(project);
177
+ this.checkWriteEnabled();
178
+ if (text.length > 128) {
179
+ throw new Error(`Checklist item text exceeds 128 character limit (${text.length} chars).`);
180
+ }
181
+ const existing = await this.getDocument('CheckListItems', String(workItemId));
182
+ const items = existing?.checklistItems ? [...existing.checklistItems] : [];
183
+ items.push({
184
+ id: Date.now().toString(),
185
+ text,
186
+ required,
187
+ state: 'New',
188
+ });
189
+ await this.upsertDocument('CheckListItems', {
190
+ id: String(workItemId),
191
+ checklistItems: items,
192
+ });
193
+ return this.getChecklist(project, workItemId);
194
+ }
195
+ async removeItem(project, workItemId, itemId) {
196
+ this.client.validateProject(project);
197
+ this.checkWriteEnabled();
198
+ const existing = await this.getDocument('CheckListItems', String(workItemId));
199
+ if (!existing) {
200
+ throw new Error(`No custom checklist items found for work item ${workItemId}.`);
201
+ }
202
+ const filtered = existing.checklistItems.filter(i => i.id.toLowerCase() !== itemId.toLowerCase());
203
+ if (filtered.length === existing.checklistItems.length) {
204
+ throw new Error(`Checklist item '${itemId}' not found in custom items for work item ${workItemId}.`);
205
+ }
206
+ if (filtered.length === 0) {
207
+ await this.deleteDocument('CheckListItems', String(workItemId));
208
+ }
209
+ else {
210
+ await this.upsertDocument('CheckListItems', {
211
+ id: String(workItemId),
212
+ checklistItems: filtered,
213
+ });
214
+ }
215
+ return this.getChecklist(project, workItemId);
216
+ }
217
+ async updateTemplate(project, workItemType, items) {
218
+ this.client.validateProject(project);
219
+ this.checkWriteEnabled();
220
+ for (const item of items) {
221
+ if (item.text.length > 128) {
222
+ throw new Error(`Checklist item text exceeds 128 character limit: "${item.text.substring(0, 50)}..."`);
223
+ }
224
+ }
225
+ const collection = await this.templateCollection(project);
226
+ const existing = await this.getDocument(collection, workItemType);
227
+ const existingMap = new Map();
228
+ if (existing) {
229
+ for (const item of existing.checklistItems) {
230
+ existingMap.set(item.text.toLowerCase(), item.id);
231
+ }
232
+ }
233
+ const checklistItems = items.map(item => ({
234
+ id: existingMap.get(item.text.toLowerCase()) || Date.now().toString() + Math.random().toString(36).slice(2, 6),
235
+ text: item.text,
236
+ required: item.required ?? true,
237
+ state: 'New',
238
+ labels: item.labels,
239
+ }));
240
+ const doc = {
241
+ id: workItemType,
242
+ checklistItems,
243
+ };
244
+ return this.upsertDocument(collection, doc);
245
+ }
246
+ async getReport(project, workItemType, workItemState, maxResults = 200) {
247
+ this.client.validateProject(project);
248
+ const conditions = [`[System.TeamProject] = '${project}'`];
249
+ if (workItemType) {
250
+ conditions.push(`[System.WorkItemType] = '${workItemType}'`);
251
+ }
252
+ if (workItemState) {
253
+ conditions.push(`[System.State] = '${workItemState}'`);
254
+ }
255
+ const wiql = `SELECT [System.Id] FROM WorkItems WHERE ${conditions.join(' AND ')} ORDER BY [System.ChangedDate] DESC`;
256
+ const queryResult = await this.workItemService.queryWorkItems(project, wiql, maxResults);
257
+ const workItems = queryResult.workItems || [];
258
+ if (workItems.length === 0) {
259
+ return {
260
+ project,
261
+ workItemType: workItemType || null,
262
+ workItemState: workItemState || null,
263
+ totalWorkItems: 0,
264
+ fullyComplete: 0,
265
+ partiallyComplete: 0,
266
+ notStarted: 0,
267
+ entries: [],
268
+ };
269
+ }
270
+ const overrideDocs = await this.listDocuments('DefaultCheckList');
271
+ const overrideMap = new Map();
272
+ for (const doc of overrideDocs) {
273
+ overrideMap.set(doc.id, doc);
274
+ }
275
+ const templateCache = new Map();
276
+ const entries = [];
277
+ for (const wi of workItems) {
278
+ const wiType = wi.fields?.['System.WorkItemType'] ?? wi.type;
279
+ const wiId = wi.id;
280
+ if (!templateCache.has(wiType)) {
281
+ const tmpl = await this.getTemplate(project, wiType);
282
+ templateCache.set(wiType, tmpl?.checklistItems ?? []);
283
+ }
284
+ const templateItems = templateCache.get(wiType);
285
+ if (templateItems.length === 0)
286
+ continue;
287
+ const overrideDoc = overrideMap.get(String(wiId));
288
+ const overrideItems = overrideDoc?.checklistItems ?? [];
289
+ const merged = this.mergeItems(templateItems, overrideItems);
290
+ const completedCount = merged.filter(i => i.state === 'Completed').length;
291
+ const incompleteRequired = merged.filter(i => i.state !== 'Completed' && i.required).length;
292
+ const incompleteItems = merged
293
+ .filter(i => i.state !== 'Completed')
294
+ .map(i => `[${i.state}] ${i.text}`);
295
+ entries.push({
296
+ workItemId: wiId,
297
+ title: wi.fields?.['System.Title'] ?? wi.title ?? '',
298
+ state: wi.fields?.['System.State'] ?? wi.state ?? '',
299
+ assignedTo: wi.fields?.['System.AssignedTo']?.displayName
300
+ ?? wi.fields?.['System.AssignedTo']
301
+ ?? wi.assignedTo
302
+ ?? null,
303
+ workItemType: wiType,
304
+ totalItems: merged.length,
305
+ completedItems: completedCount,
306
+ completionPercent: Math.round((completedCount / merged.length) * 100),
307
+ incompleteRequired,
308
+ incompleteItems,
309
+ });
310
+ }
311
+ entries.sort((a, b) => a.completionPercent - b.completionPercent);
312
+ const fullyComplete = entries.filter(e => e.completionPercent === 100).length;
313
+ const notStarted = entries.filter(e => e.completedItems === 0).length;
314
+ return {
315
+ project,
316
+ workItemType: workItemType || null,
317
+ workItemState: workItemState || null,
318
+ totalWorkItems: entries.length,
319
+ fullyComplete,
320
+ partiallyComplete: entries.length - fullyComplete - notStarted,
321
+ notStarted,
322
+ entries,
323
+ };
324
+ }
325
+ }
326
+ //# sourceMappingURL=checklist-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checklist-service.js","sourceRoot":"","sources":["../../src/services/checklist-service.ts"],"names":[],"mappings":"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"}
@@ -8,4 +8,5 @@ export { BuildService } from './build-service.js';
8
8
  export { VariableGroupService } from './variable-group-service.js';
9
9
  export { SyncService } from './sync-service.js';
10
10
  export { ConfigurationService } from './configuration-service.js';
11
+ export { ChecklistService } from './checklist-service.js';
11
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -8,4 +8,5 @@ export { BuildService } from './build-service.js';
8
8
  export { VariableGroupService } from './variable-group-service.js';
9
9
  export { SyncService } from './sync-service.js';
10
10
  export { ConfigurationService } from './configuration-service.js';
11
+ export { ChecklistService } from './checklist-service.js';
11
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}