specweave 1.0.487 → 1.0.489

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 (148) hide show
  1. package/README.md +1 -1
  2. package/dist/plugins/specweave-ado/lib/ado-ac-checkbox-sync.d.ts +13 -5
  3. package/dist/plugins/specweave-ado/lib/ado-ac-checkbox-sync.d.ts.map +1 -1
  4. package/dist/plugins/specweave-ado/lib/ado-ac-checkbox-sync.js +28 -26
  5. package/dist/plugins/specweave-ado/lib/ado-ac-checkbox-sync.js.map +1 -1
  6. package/dist/plugins/specweave-ado/lib/ado-client.d.ts +10 -0
  7. package/dist/plugins/specweave-ado/lib/ado-client.d.ts.map +1 -1
  8. package/dist/plugins/specweave-ado/lib/ado-client.js +14 -0
  9. package/dist/plugins/specweave-ado/lib/ado-client.js.map +1 -1
  10. package/dist/plugins/specweave-ado/lib/ado-pull-sync.d.ts +35 -0
  11. package/dist/plugins/specweave-ado/lib/ado-pull-sync.d.ts.map +1 -0
  12. package/dist/plugins/specweave-ado/lib/ado-pull-sync.js +53 -0
  13. package/dist/plugins/specweave-ado/lib/ado-pull-sync.js.map +1 -0
  14. package/dist/plugins/specweave-ado/lib/ado-rate-limiter.d.ts +46 -0
  15. package/dist/plugins/specweave-ado/lib/ado-rate-limiter.d.ts.map +1 -0
  16. package/dist/plugins/specweave-ado/lib/ado-rate-limiter.js +65 -0
  17. package/dist/plugins/specweave-ado/lib/ado-rate-limiter.js.map +1 -0
  18. package/dist/plugins/specweave-ado/lib/ado-spec-sync.d.ts +7 -1
  19. package/dist/plugins/specweave-ado/lib/ado-spec-sync.d.ts.map +1 -1
  20. package/dist/plugins/specweave-ado/lib/ado-spec-sync.js +25 -1
  21. package/dist/plugins/specweave-ado/lib/ado-spec-sync.js.map +1 -1
  22. package/dist/plugins/specweave-ado/lib/ado-status-sync.d.ts +17 -1
  23. package/dist/plugins/specweave-ado/lib/ado-status-sync.d.ts.map +1 -1
  24. package/dist/plugins/specweave-ado/lib/ado-status-sync.js +51 -9
  25. package/dist/plugins/specweave-ado/lib/ado-status-sync.js.map +1 -1
  26. package/dist/plugins/specweave-github/lib/github-client-v2.js +1 -1
  27. package/dist/plugins/specweave-github/lib/github-client-v2.js.map +1 -1
  28. package/dist/plugins/specweave-github/lib/github-push-sync.d.ts.map +1 -1
  29. package/dist/plugins/specweave-github/lib/github-push-sync.js +15 -3
  30. package/dist/plugins/specweave-github/lib/github-push-sync.js.map +1 -1
  31. package/dist/plugins/specweave-jira/lib/jira-spec-sync.d.ts +31 -1
  32. package/dist/plugins/specweave-jira/lib/jira-spec-sync.d.ts.map +1 -1
  33. package/dist/plugins/specweave-jira/lib/jira-spec-sync.js +170 -97
  34. package/dist/plugins/specweave-jira/lib/jira-spec-sync.js.map +1 -1
  35. package/dist/plugins/specweave-jira/lib/jira-status-sync.d.ts +36 -1
  36. package/dist/plugins/specweave-jira/lib/jira-status-sync.d.ts.map +1 -1
  37. package/dist/plugins/specweave-jira/lib/jira-status-sync.js +185 -82
  38. package/dist/plugins/specweave-jira/lib/jira-status-sync.js.map +1 -1
  39. package/dist/src/adapters/adapter-loader.d.ts.map +1 -1
  40. package/dist/src/adapters/adapter-loader.js +8 -2
  41. package/dist/src/adapters/adapter-loader.js.map +1 -1
  42. package/dist/src/adapters/codex/adapter.d.ts.map +1 -1
  43. package/dist/src/adapters/codex/adapter.js +1 -0
  44. package/dist/src/adapters/codex/adapter.js.map +1 -1
  45. package/dist/src/adapters/cursor/adapter.d.ts.map +1 -1
  46. package/dist/src/adapters/cursor/adapter.js +1 -0
  47. package/dist/src/adapters/cursor/adapter.js.map +1 -1
  48. package/dist/src/adapters/generic/adapter.d.ts +6 -3
  49. package/dist/src/adapters/generic/adapter.d.ts.map +1 -1
  50. package/dist/src/adapters/generic/adapter.js +53 -47
  51. package/dist/src/adapters/generic/adapter.js.map +1 -1
  52. package/dist/src/adapters/kimi/adapter.d.ts +21 -0
  53. package/dist/src/adapters/kimi/adapter.d.ts.map +1 -0
  54. package/dist/src/adapters/kimi/adapter.js +57 -0
  55. package/dist/src/adapters/kimi/adapter.js.map +1 -0
  56. package/dist/src/adapters/opencode/adapter.d.ts +24 -0
  57. package/dist/src/adapters/opencode/adapter.d.ts.map +1 -0
  58. package/dist/src/adapters/opencode/adapter.js +71 -0
  59. package/dist/src/adapters/opencode/adapter.js.map +1 -0
  60. package/dist/src/adapters/registry.yaml +59 -0
  61. package/dist/src/adapters/trae/adapter.d.ts +21 -0
  62. package/dist/src/adapters/trae/adapter.d.ts.map +1 -0
  63. package/dist/src/adapters/trae/adapter.js +64 -0
  64. package/dist/src/adapters/trae/adapter.js.map +1 -0
  65. package/dist/src/cli/commands/init.d.ts.map +1 -1
  66. package/dist/src/cli/commands/init.js +156 -5
  67. package/dist/src/cli/commands/init.js.map +1 -1
  68. package/dist/src/cli/commands/update-instructions.d.ts.map +1 -1
  69. package/dist/src/cli/commands/update-instructions.js +10 -0
  70. package/dist/src/cli/commands/update-instructions.js.map +1 -1
  71. package/dist/src/cli/helpers/init/index.d.ts +1 -0
  72. package/dist/src/cli/helpers/init/index.d.ts.map +1 -1
  73. package/dist/src/cli/helpers/init/index.js +2 -0
  74. package/dist/src/cli/helpers/init/index.js.map +1 -1
  75. package/dist/src/cli/helpers/init/next-steps.d.ts.map +1 -1
  76. package/dist/src/cli/helpers/init/next-steps.js +52 -0
  77. package/dist/src/cli/helpers/init/next-steps.js.map +1 -1
  78. package/dist/src/cli/helpers/init/skill-creator-installer.d.ts +24 -0
  79. package/dist/src/cli/helpers/init/skill-creator-installer.d.ts.map +1 -0
  80. package/dist/src/cli/helpers/init/skill-creator-installer.js +54 -0
  81. package/dist/src/cli/helpers/init/skill-creator-installer.js.map +1 -0
  82. package/dist/src/core/ado-description-updater.d.ts +22 -0
  83. package/dist/src/core/ado-description-updater.d.ts.map +1 -0
  84. package/dist/src/core/ado-description-updater.js +46 -0
  85. package/dist/src/core/ado-description-updater.js.map +1 -0
  86. package/dist/src/core/closure-dispatcher.d.ts +96 -0
  87. package/dist/src/core/closure-dispatcher.d.ts.map +1 -0
  88. package/dist/src/core/closure-dispatcher.js +116 -0
  89. package/dist/src/core/closure-dispatcher.js.map +1 -0
  90. package/dist/src/core/config/types.d.ts +2 -0
  91. package/dist/src/core/config/types.d.ts.map +1 -1
  92. package/dist/src/core/config/types.js.map +1 -1
  93. package/dist/src/core/errors/sync-error.d.ts +12 -0
  94. package/dist/src/core/errors/sync-error.d.ts.map +1 -0
  95. package/dist/src/core/errors/sync-error.js +19 -0
  96. package/dist/src/core/errors/sync-error.js.map +1 -0
  97. package/dist/src/core/skill-gen/rule-collector.d.ts +28 -0
  98. package/dist/src/core/skill-gen/rule-collector.d.ts.map +1 -0
  99. package/dist/src/core/skill-gen/rule-collector.js +112 -0
  100. package/dist/src/core/skill-gen/rule-collector.js.map +1 -0
  101. package/dist/src/core/skill-gen/signal-collector.d.ts +2 -1
  102. package/dist/src/core/skill-gen/signal-collector.d.ts.map +1 -1
  103. package/dist/src/core/skill-gen/signal-collector.js +21 -5
  104. package/dist/src/core/skill-gen/signal-collector.js.map +1 -1
  105. package/dist/src/core/sync/persistent-circuit-breaker.d.ts +22 -0
  106. package/dist/src/core/sync/persistent-circuit-breaker.d.ts.map +1 -0
  107. package/dist/src/core/sync/persistent-circuit-breaker.js +65 -0
  108. package/dist/src/core/sync/persistent-circuit-breaker.js.map +1 -0
  109. package/dist/src/core/sync/retry-wrapper.d.ts +13 -0
  110. package/dist/src/core/sync/retry-wrapper.d.ts.map +1 -0
  111. package/dist/src/core/sync/retry-wrapper.js +37 -0
  112. package/dist/src/core/sync/retry-wrapper.js.map +1 -0
  113. package/dist/src/importers/ac-parser.d.ts +27 -0
  114. package/dist/src/importers/ac-parser.d.ts.map +1 -0
  115. package/dist/src/importers/ac-parser.js +47 -0
  116. package/dist/src/importers/ac-parser.js.map +1 -0
  117. package/dist/src/sync/types.d.ts +8 -0
  118. package/dist/src/sync/types.d.ts.map +1 -1
  119. package/dist/src/sync/types.js +12 -0
  120. package/dist/src/sync/types.js.map +1 -1
  121. package/package.json +1 -1
  122. package/plugins/specweave/hooks/stop-sync.sh +16 -0
  123. package/plugins/specweave/skills/code-reviewer/agents/reviewer-silent-failures.md +65 -0
  124. package/plugins/specweave/skills/code-reviewer/agents/reviewer-spec-compliance.md +83 -0
  125. package/plugins/specweave/skills/code-reviewer/agents/reviewer-types.md +68 -0
  126. package/plugins/specweave/skills/skill-gen/SKILL.md +20 -3
  127. package/plugins/specweave/skills/team-lead/agents/architect.md +52 -0
  128. package/plugins/specweave/skills/team-lead/agents/pm.md +50 -0
  129. package/plugins/specweave/skills/team-lead/agents/researcher.md +64 -0
  130. package/plugins/specweave-ado/lib/ado-ac-checkbox-sync.js +23 -21
  131. package/plugins/specweave-ado/lib/ado-ac-checkbox-sync.ts +37 -29
  132. package/plugins/specweave-ado/lib/ado-client.js +14 -0
  133. package/plugins/specweave-ado/lib/ado-client.ts +18 -0
  134. package/plugins/specweave-ado/lib/ado-pull-sync.js +35 -0
  135. package/plugins/specweave-ado/lib/ado-pull-sync.ts +74 -0
  136. package/plugins/specweave-ado/lib/ado-rate-limiter.js +56 -0
  137. package/plugins/specweave-ado/lib/ado-rate-limiter.ts +86 -0
  138. package/plugins/specweave-ado/lib/ado-spec-sync.js +25 -1
  139. package/plugins/specweave-ado/lib/ado-spec-sync.ts +32 -2
  140. package/plugins/specweave-ado/lib/ado-status-sync.js +52 -14
  141. package/plugins/specweave-ado/lib/ado-status-sync.ts +64 -16
  142. package/plugins/specweave-github/lib/github-client-v2.ts +1 -1
  143. package/plugins/specweave-github/lib/github-push-sync.js +11 -3
  144. package/plugins/specweave-github/lib/github-push-sync.ts +16 -3
  145. package/plugins/specweave-jira/lib/jira-spec-sync.js +60 -1
  146. package/plugins/specweave-jira/lib/jira-spec-sync.ts +93 -1
  147. package/plugins/specweave-jira/lib/jira-status-sync.js +151 -109
  148. package/plugins/specweave-jira/lib/jira-status-sync.ts +161 -39
package/README.md CHANGED
@@ -290,7 +290,7 @@ Claude: *automatically uses React Hook Form + Zod*
290
290
 
291
291
  **[Skills deep dive](https://verified-skill.com/docs/overview/skills-as-programs)** | **[Skill development guidelines](https://verified-skill.com/docs/guides/skill-development-guidelines)** | **[Skill generation](https://verified-skill.com/docs/skills/extensible/skill-generation)**
292
292
 
293
- **Auto-generate project skills:** SpecWeave detects recurring patterns across increment closures and can generate project-local skills on demand via `/sw:skill-gen`. [Learn more](https://verified-skill.com/docs/skills/extensible/skill-generation).
293
+ **AI-Powered Skill Generation:** SpecWeave automatically detects recurring patterns across your project's living docs using LLM analysis -- not hardcoded keyword matching. When patterns mature, it suggests generating project-specific Claude Code skills complete with evals and benchmarks. Use `--seed` mode to bootstrap instantly on existing projects. [Learn more](https://verified-skill.com/docs/skills/extensible/skill-generation).
294
294
 
295
295
  ---
296
296
 
@@ -2,11 +2,12 @@
2
2
  * ADO AC Checkbox Sync
3
3
  *
4
4
  * When ACs are marked complete in spec.md, updates the HTML description
5
- * of the linked ADO work item (☐ → ā˜‘) and posts a progress comment.
5
+ * of the linked ADO work item using API-based section update (not regex).
6
6
  *
7
- * Mirrors jira-ac-checkbox-sync.ts pattern for ADO.
8
- * The ADO description is HTML — we use regex to flip ☐/ā˜‘ by AC ID.
7
+ * Uses AdoDescriptionUpdater for clean HTML section manipulation via
8
+ * sentinel comments (<!-- AC_SECTION_START/END -->).
9
9
  */
10
+ import { AxiosInstance } from 'axios';
10
11
  import { Logger } from '../../specweave/lib/vendor/utils/logger.js';
11
12
  import type { SpecWeaveConfig } from '../../../src/core/config/types.js';
12
13
  export interface AdoACCheckboxSyncResult {
@@ -25,8 +26,15 @@ export declare class AdoACCheckboxSync {
25
26
  });
26
27
  syncACCheckboxesToAdo(config: SpecWeaveConfig): Promise<AdoACCheckboxSyncResult>;
27
28
  /**
28
- * Fetch current HTML description, regex-flip ☐/ā˜‘ for matching ACs, PATCH back.
29
- * Posts a comment listing all AC statuses when any AC changed.
29
+ * Update a work item's AC section using API-based section manipulation.
30
+ *
31
+ * GET description → formatACCheckboxes → updateAcSection → PATCH with
32
+ * JSON Patch op:"replace". No regex used at any point.
33
+ */
34
+ updateWorkItemACSection(client: AxiosInstance, storyId: number, acStatus: Map<string, boolean>): Promise<number>;
35
+ /**
36
+ * Legacy: Fetch current HTML description, regex-flip checkboxes, PATCH back.
37
+ * Kept for backward compatibility. New code should use updateWorkItemACSection.
30
38
  */
31
39
  private updateStoryCheckboxes;
32
40
  private buildClient;
@@ -1 +1 @@
1
- {"version":3,"file":"ado-ac-checkbox-sync.d.ts","sourceRoot":"","sources":["../../../../plugins/specweave-ado/lib/ado-ac-checkbox-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAAE,MAAM,EAAiB,MAAM,4CAA4C,CAAC;AAGnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAGzE,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,EAAE;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB;IAMK,qBAAqB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,uBAAuB,CAAC;IA2FtF;;;OAGG;YACW,qBAAqB;IA2DnC,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,gBAAgB;YA8BV,2BAA2B;CAiE1C"}
1
+ {"version":3,"file":"ado-ac-checkbox-sync.d.ts","sourceRoot":"","sources":["../../../../plugins/specweave-ado/lib/ado-ac-checkbox-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAc,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAiB,MAAM,4CAA4C,CAAC;AAInF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAGzE,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAS;gBAEX,OAAO,EAAE;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB;IAMK,qBAAqB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,uBAAuB,CAAC;IA2FtF;;;;;OAKG;IACG,uBAAuB,CAC3B,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,MAAM,CAAC;IA+ClB;;;OAGG;YACW,qBAAqB;IASnC,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,gBAAgB;YA8BV,2BAA2B;CAiE1C"}
@@ -2,10 +2,10 @@
2
2
  * ADO AC Checkbox Sync
3
3
  *
4
4
  * When ACs are marked complete in spec.md, updates the HTML description
5
- * of the linked ADO work item (☐ → ā˜‘) and posts a progress comment.
5
+ * of the linked ADO work item using API-based section update (not regex).
6
6
  *
7
- * Mirrors jira-ac-checkbox-sync.ts pattern for ADO.
8
- * The ADO description is HTML — we use regex to flip ☐/ā˜‘ by AC ID.
7
+ * Uses AdoDescriptionUpdater for clean HTML section manipulation via
8
+ * sentinel comments (<!-- AC_SECTION_START/END -->).
9
9
  */
10
10
  import { promises as fs, existsSync } from 'fs';
11
11
  import path from 'path';
@@ -14,6 +14,7 @@ import axios from 'axios';
14
14
  import { consoleLogger } from '../../specweave/lib/vendor/utils/logger.js';
15
15
  import { deriveFeatureId } from '../../specweave/lib/vendor/utils/feature-id-derivation.js';
16
16
  import { GitHubACCheckboxSync } from '../../specweave-github/lib/github-ac-checkbox-sync.js';
17
+ import { AdoDescriptionUpdater } from '../../../src/core/ado-description-updater.js';
17
18
  export class AdoACCheckboxSync {
18
19
  constructor(options) {
19
20
  this.projectRoot = options.projectRoot;
@@ -89,29 +90,23 @@ export class AdoACCheckboxSync {
89
90
  }
90
91
  }
91
92
  /**
92
- * Fetch current HTML description, regex-flip ☐/ā˜‘ for matching ACs, PATCH back.
93
- * Posts a comment listing all AC statuses when any AC changed.
93
+ * Update a work item's AC section using API-based section manipulation.
94
+ *
95
+ * GET description → formatACCheckboxes → updateAcSection → PATCH with
96
+ * JSON Patch op:"replace". No regex used at any point.
94
97
  */
95
- async updateStoryCheckboxes(client, adoConfig, storyId, acStatus) {
98
+ async updateWorkItemACSection(client, storyId, acStatus) {
99
+ const updater = new AdoDescriptionUpdater();
96
100
  const resp = await client.get(`/wit/workitems/${storyId}?fields=System.Description&api-version=7.0`);
97
- let description = resp.data?.fields?.['System.Description'] ?? '';
98
- const original = description;
99
- let updatedCount = 0;
100
- for (const [acId, completed] of acStatus) {
101
- const escaped = acId.replace(/-/g, '\\-');
102
- // Pattern: ☐ AC-US1-01: or ā˜‘ AC-US1-01:
103
- const beforeRegex = new RegExp(`(☐|ā˜‘)\\s+(${escaped}:)`, 'g');
104
- const newCheckbox = completed ? 'ā˜‘' : '☐';
105
- const replaced = description.replace(beforeRegex, `${newCheckbox} $2`);
106
- if (replaced !== description) {
107
- updatedCount++;
108
- description = replaced;
109
- }
110
- }
111
- if (description === original)
101
+ const currentDescription = resp.data?.fields?.['System.Description'] ?? '';
102
+ const newAcHtml = updater.formatACCheckboxes(acStatus);
103
+ if (!newAcHtml)
104
+ return 0;
105
+ const updatedDescription = updater.updateAcSection(currentDescription, newAcHtml);
106
+ if (updatedDescription === currentDescription)
112
107
  return 0;
113
- // PATCH description
114
- await client.patch(`/wit/workitems/${storyId}?api-version=7.0`, [{ op: 'replace', path: '/fields/System.Description', value: description }], { headers: { 'Content-Type': 'application/json-patch+json' } });
108
+ // PATCH description via JSON Patch
109
+ await client.patch(`/wit/workitems/${storyId}?api-version=7.0`, [{ op: 'replace', path: '/fields/System.Description', value: updatedDescription }], { headers: { 'Content-Type': 'application/json-patch+json' } });
115
110
  // Post progress comment
116
111
  const completedCount = [...acStatus.values()].filter(Boolean).length;
117
112
  const totalCount = acStatus.size;
@@ -119,14 +114,21 @@ export class AdoACCheckboxSync {
119
114
  const acLines = [...acStatus.entries()]
120
115
  .map(([id, done]) => `<li>${done ? 'āœ…' : '⬜'} ${id}</li>`)
121
116
  .join('\n');
122
- const commentHtml = `<h3>šŸ“Š AC Progress Update</h3>
117
+ const commentHtml = `<h3>AC Progress Update</h3>
123
118
  <p><strong>Acceptance Criteria</strong>: ${completedCount}/${totalCount} (${percentage}%)</p>
124
119
  <ul>
125
120
  ${acLines}
126
121
  </ul>
127
- <p>šŸ¤– Auto-updated by SpecWeave AC Completion Gate</p>`;
122
+ <p>Auto-updated by SpecWeave</p>`;
128
123
  await client.post(`/wit/workItems/${storyId}/comments?api-version=7.1-preview.3`, { text: commentHtml });
129
- return updatedCount;
124
+ return acStatus.size;
125
+ }
126
+ /**
127
+ * Legacy: Fetch current HTML description, regex-flip checkboxes, PATCH back.
128
+ * Kept for backward compatibility. New code should use updateWorkItemACSection.
129
+ */
130
+ async updateStoryCheckboxes(client, adoConfig, storyId, acStatus) {
131
+ return this.updateWorkItemACSection(client, storyId, acStatus);
130
132
  }
131
133
  buildClient(adoConfig) {
132
134
  const token = Buffer.from(`:${adoConfig.pat}`).toString('base64');
@@ -1 +1 @@
1
- {"version":3,"file":"ado-ac-checkbox-sync.js","sourceRoot":"","sources":["../../../../plugins/specweave-ado/lib/ado-ac-checkbox-sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ado-ac-checkbox-sync.js","sourceRoot":"","sources":["../../../../plugins/specweave-ado/lib/ado-ac-checkbox-sync.ts"],"names":[],"mappings":"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"}
@@ -83,6 +83,16 @@ export declare class AdoClient {
83
83
  * @see https://learn.microsoft.com/en-us/rest/api/azure/devops/wit/work-items/delete
84
84
  */
85
85
  deleteWorkItem(id: number): Promise<void>;
86
+ /**
87
+ * Pull the current state of a work item for bidirectional sync.
88
+ *
89
+ * @param id - ADO work item ID
90
+ * @returns state and last-modified timestamp
91
+ */
92
+ pullWorkItemState(id: number): Promise<{
93
+ state: string;
94
+ modifiedAt: Date;
95
+ }>;
86
96
  /**
87
97
  * Add comment to work item
88
98
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ado-client.d.ts","sourceRoot":"","sources":["../../../../plugins/specweave-ado/lib/ado-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ado-client.d.ts","sourceRoot":"","sources":["../../../../plugins/specweave-ado/lib/ado-client.ts"],"names":[],"mappings":"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"}
@@ -127,6 +127,20 @@ export class AdoClient {
127
127
  const url = `${this.baseUrl}/_apis/wit/workitems/${id}?api-version=7.1`;
128
128
  await this.request('DELETE', url);
129
129
  }
130
+ /**
131
+ * Pull the current state of a work item for bidirectional sync.
132
+ *
133
+ * @param id - ADO work item ID
134
+ * @returns state and last-modified timestamp
135
+ */
136
+ async pullWorkItemState(id) {
137
+ const url = `${this.baseUrl}/_apis/wit/workitems/${id}?$select=System.State,System.ChangedDate&api-version=7.1`;
138
+ const item = await this.request('GET', url);
139
+ return {
140
+ state: item.fields['System.State'],
141
+ modifiedAt: new Date(item.fields['System.ChangedDate']),
142
+ };
143
+ }
130
144
  // ==========================================================================
131
145
  // Comment Operations
132
146
  // ==========================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"ado-client.js","sourceRoot":"","sources":["../../../../plugins/specweave-ado/lib/ado-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ado-client.js","sourceRoot":"","sources":["../../../../plugins/specweave-ado/lib/ado-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * ADO Pull Sync — Bidirectional state synchronization
3
+ *
4
+ * Implements last-write-wins conflict resolution for pulling
5
+ * ADO work item state changes back into SpecWeave metadata.
6
+ *
7
+ * @module ado-pull-sync
8
+ */
9
+ export interface PullSyncContext {
10
+ localStatus: string;
11
+ localUpdatedAt: Date;
12
+ adoState: string;
13
+ adoModifiedAt: Date;
14
+ workItemId: number;
15
+ canUpsertInternalItems: boolean;
16
+ }
17
+ export interface PullSyncResult {
18
+ changed: boolean;
19
+ newStatus?: string;
20
+ reason?: string;
21
+ }
22
+ /**
23
+ * Map ADO work item states to SpecWeave statuses.
24
+ *
25
+ * Covers Agile/Scrum/Basic process templates.
26
+ */
27
+ export declare function mapAdoStateToSpecweave(adoState: string): string;
28
+ /**
29
+ * Determine if ADO changes should override local state.
30
+ *
31
+ * Uses last-write-wins: if ADO was modified more recently than local,
32
+ * and the mapped state differs, update local metadata.
33
+ */
34
+ export declare function pullAdoChanges(ctx: PullSyncContext): PullSyncResult;
35
+ //# sourceMappingURL=ado-pull-sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ado-pull-sync.d.ts","sourceRoot":"","sources":["../../../../plugins/specweave-ado/lib/ado-pull-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAc/D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,cAAc,CAsBnE"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * ADO Pull Sync — Bidirectional state synchronization
3
+ *
4
+ * Implements last-write-wins conflict resolution for pulling
5
+ * ADO work item state changes back into SpecWeave metadata.
6
+ *
7
+ * @module ado-pull-sync
8
+ */
9
+ /**
10
+ * Map ADO work item states to SpecWeave statuses.
11
+ *
12
+ * Covers Agile/Scrum/Basic process templates.
13
+ */
14
+ export function mapAdoStateToSpecweave(adoState) {
15
+ const map = {
16
+ 'New': 'planned',
17
+ 'To Do': 'planned',
18
+ 'Active': 'active',
19
+ 'Doing': 'active',
20
+ 'In Progress': 'active',
21
+ 'Resolved': 'completed',
22
+ 'Closed': 'completed',
23
+ 'Done': 'completed',
24
+ 'Removed': 'abandoned',
25
+ };
26
+ return map[adoState] ?? 'active';
27
+ }
28
+ /**
29
+ * Determine if ADO changes should override local state.
30
+ *
31
+ * Uses last-write-wins: if ADO was modified more recently than local,
32
+ * and the mapped state differs, update local metadata.
33
+ */
34
+ export function pullAdoChanges(ctx) {
35
+ if (!ctx.canUpsertInternalItems) {
36
+ return { changed: false, reason: 'canUpsertInternalItems is false' };
37
+ }
38
+ const mappedStatus = mapAdoStateToSpecweave(ctx.adoState);
39
+ // Same effective status — no change needed
40
+ if (mappedStatus === ctx.localStatus) {
41
+ return { changed: false, reason: 'states are equivalent' };
42
+ }
43
+ // Last-write-wins: ADO must be newer
44
+ if (ctx.adoModifiedAt.getTime() <= ctx.localUpdatedAt.getTime()) {
45
+ return { changed: false, reason: 'local is newer' };
46
+ }
47
+ return {
48
+ changed: true,
49
+ newStatus: mappedStatus,
50
+ reason: `ADO state "${ctx.adoState}" is newer — updating to "${mappedStatus}"`,
51
+ };
52
+ }
53
+ //# sourceMappingURL=ado-pull-sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ado-pull-sync.js","sourceRoot":"","sources":["../../../../plugins/specweave-ado/lib/ado-pull-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAiBH;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACrD,MAAM,GAAG,GAA2B;QAClC,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,QAAQ;QACjB,aAAa,EAAE,QAAQ;QACvB,UAAU,EAAE,WAAW;QACvB,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,WAAW;QACnB,SAAS,EAAE,WAAW;KACvB,CAAC;IAEF,OAAO,GAAG,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;AACnC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,GAAoB;IACjD,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC;QAChC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAC;IACvE,CAAC;IAED,MAAM,YAAY,GAAG,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE1D,2CAA2C;IAC3C,IAAI,YAAY,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC;QACrC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,uBAAuB,EAAE,CAAC;IAC7D,CAAC;IAED,qCAAqC;IACrC,IAAI,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC;QAChE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IACtD,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,SAAS,EAAE,YAAY;QACvB,MAAM,EAAE,cAAc,GAAG,CAAC,QAAQ,6BAA6B,YAAY,GAAG;KAC/E,CAAC;AACJ,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * ADO Token Bucket Rate Limiter
3
+ *
4
+ * Simple token bucket that prevents exceeding Azure DevOps API rate limits.
5
+ * ADO's documented limit is ~200 requests per minute for PAT-based auth.
6
+ *
7
+ * Supports Retry-After header handling: when ADO returns 429, call
8
+ * applyRetryAfter(seconds) to block consumption until the cooldown expires.
9
+ *
10
+ * @module ado-rate-limiter
11
+ */
12
+ export interface AdoRateLimiterOptions {
13
+ /** Max tokens per window (default: 200) */
14
+ capacity?: number;
15
+ /** Window duration in ms (default: 60000 = 1 minute) */
16
+ windowMs?: number;
17
+ }
18
+ export declare class AdoRateLimiter {
19
+ private readonly capacity;
20
+ private readonly windowMs;
21
+ private tokens;
22
+ private windowStart;
23
+ private retryAfterUntil;
24
+ constructor(options?: AdoRateLimiterOptions);
25
+ /**
26
+ * Try to consume one token. Returns true if allowed, false if exhausted.
27
+ */
28
+ consume(): boolean;
29
+ /**
30
+ * Number of tokens remaining in the current window.
31
+ */
32
+ remaining(): number;
33
+ /**
34
+ * Whether the bucket is fully exhausted (0 tokens remaining).
35
+ */
36
+ isExhausted(): boolean;
37
+ /**
38
+ * Apply a Retry-After delay (from ADO 429 response).
39
+ * Blocks all consumption until the delay expires.
40
+ *
41
+ * @param seconds - Number of seconds to wait
42
+ */
43
+ applyRetryAfter(seconds: number): void;
44
+ private refillIfWindowExpired;
45
+ }
46
+ //# sourceMappingURL=ado-rate-limiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ado-rate-limiter.d.ts","sourceRoot":"","sources":["../../../../plugins/specweave-ado/lib/ado-rate-limiter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,qBAAqB;IACpC,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,eAAe,CAAS;gBAEpB,OAAO,CAAC,EAAE,qBAAqB;IAQ3C;;OAEG;IACH,OAAO,IAAI,OAAO;IAelB;;OAEG;IACH,SAAS,IAAI,MAAM;IAKnB;;OAEG;IACH,WAAW,IAAI,OAAO;IAKtB;;;;;OAKG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAItC,OAAO,CAAC,qBAAqB;CAO9B"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * ADO Token Bucket Rate Limiter
3
+ *
4
+ * Simple token bucket that prevents exceeding Azure DevOps API rate limits.
5
+ * ADO's documented limit is ~200 requests per minute for PAT-based auth.
6
+ *
7
+ * Supports Retry-After header handling: when ADO returns 429, call
8
+ * applyRetryAfter(seconds) to block consumption until the cooldown expires.
9
+ *
10
+ * @module ado-rate-limiter
11
+ */
12
+ export class AdoRateLimiter {
13
+ constructor(options) {
14
+ this.capacity = options?.capacity ?? 200;
15
+ this.windowMs = options?.windowMs ?? 60000;
16
+ this.tokens = this.capacity;
17
+ this.windowStart = Date.now();
18
+ this.retryAfterUntil = 0;
19
+ }
20
+ /**
21
+ * Try to consume one token. Returns true if allowed, false if exhausted.
22
+ */
23
+ consume() {
24
+ this.refillIfWindowExpired();
25
+ if (Date.now() < this.retryAfterUntil) {
26
+ return false;
27
+ }
28
+ if (this.tokens <= 0) {
29
+ return false;
30
+ }
31
+ this.tokens--;
32
+ return true;
33
+ }
34
+ /**
35
+ * Number of tokens remaining in the current window.
36
+ */
37
+ remaining() {
38
+ this.refillIfWindowExpired();
39
+ return this.tokens;
40
+ }
41
+ /**
42
+ * Whether the bucket is fully exhausted (0 tokens remaining).
43
+ */
44
+ isExhausted() {
45
+ this.refillIfWindowExpired();
46
+ return this.tokens <= 0;
47
+ }
48
+ /**
49
+ * Apply a Retry-After delay (from ADO 429 response).
50
+ * Blocks all consumption until the delay expires.
51
+ *
52
+ * @param seconds - Number of seconds to wait
53
+ */
54
+ applyRetryAfter(seconds) {
55
+ this.retryAfterUntil = Date.now() + seconds * 1000;
56
+ }
57
+ refillIfWindowExpired() {
58
+ const now = Date.now();
59
+ if (now - this.windowStart >= this.windowMs) {
60
+ this.tokens = this.capacity;
61
+ this.windowStart = now;
62
+ }
63
+ }
64
+ }
65
+ //# sourceMappingURL=ado-rate-limiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ado-rate-limiter.js","sourceRoot":"","sources":["../../../../plugins/specweave-ado/lib/ado-rate-limiter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH,MAAM,OAAO,cAAc;IAOzB,YAAY,OAA+B;QACzC,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,GAAG,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,KAAM,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACtC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,SAAS;QACP,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,WAAW;QACT,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;;;;OAKG;IACH,eAAe,CAAC,OAAe;QAC7B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC;IACrD,CAAC;IAEO,qBAAqB;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC5B,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;QACzB,CAAC;IACH,CAAC;CACF"}
@@ -13,6 +13,7 @@
13
13
  * @module ado-spec-sync
14
14
  */
15
15
  import { SpecSyncResult } from '../../../src/core/types/spec-metadata.js';
16
+ import { SyncCircuitBreaker } from '../../../src/core/increment/sync-circuit-breaker.js';
16
17
  export interface AdoFeature {
17
18
  id: number;
18
19
  url: string;
@@ -45,7 +46,8 @@ export declare class AdoSpecSync {
45
46
  private config;
46
47
  private projectRoot;
47
48
  private availableTypes;
48
- constructor(config: AdoConfig, projectRoot?: string, projectId?: string);
49
+ private breaker;
50
+ constructor(config: AdoConfig, projectRoot?: string, projectId?: string, breaker?: SyncCircuitBreaker);
49
51
  /**
50
52
  * Detect available work item types for this ADO project.
51
53
  * Basic process has Epic/Issue/Task; Agile/Scrum has Feature/User Story/Bug/Task.
@@ -137,5 +139,9 @@ export declare class AdoSpecSync {
137
139
  * Supports: Feature, User Story, Bug, Task
138
140
  */
139
141
  private mapTypeToAdo;
142
+ /**
143
+ * Check whether the circuit is closed (sync allowed).
144
+ */
145
+ canSync(): boolean;
140
146
  }
141
147
  //# sourceMappingURL=ado-spec-sync.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ado-spec-sync.d.ts","sourceRoot":"","sources":["../../../../plugins/specweave-ado/lib/ado-spec-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,EAGL,cAAc,EAEf,MAAM,0CAA0C,CAAC;AAOlD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE;QACN,cAAc,EAAE,MAAM,CAAC;QACvB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE;QACN,cAAc,EAAE,MAAM,CAAC;QACvB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAA4B;gBAEtC,MAAM,EAAE,SAAS,EAAE,WAAW,GAAE,MAAsB,EAAE,SAAS,CAAC,EAAE,MAAM;IAqBtF;;;OAGG;YACW,oBAAoB;IAYlC;;;OAGG;YACW,mBAAmB;IAiBjC;;;;;;OAMG;IACH,OAAO,CAAC,UAAU,CAAkC;YACtC,oBAAoB;IA+BlC;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IA+D5D;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAsE1D;;OAEG;YACW,gBAAgB;IAqD9B;;OAEG;YACW,gBAAgB;IAkD9B;;OAEG;YACW,eAAe;IA4E7B;;OAEG;YACW,kBAAkB;IAqChC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IA4BlC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAuBhC;;OAEG;YACW,eAAe;IAwB7B;;OAEG;YACW,gBAAgB;IAiB9B;;OAEG;YACW,eAAe;IAW7B;;OAEG;YACW,gBAAgB;IAmC9B;;OAEG;YACW,WAAW;IAiEzB;;OAEG;YACW,WAAW;IA2DzB;;;;;;;;OAQG;IACH,OAAO,CAAC,gBAAgB;IAiBxB;;;;OAIG;IACH,OAAO,CAAC,YAAY;CAgBrB"}
1
+ {"version":3,"file":"ado-spec-sync.d.ts","sourceRoot":"","sources":["../../../../plugins/specweave-ado/lib/ado-spec-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,EAGL,cAAc,EAEf,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qDAAqD,CAAC;AAQzF,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE;QACN,cAAc,EAAE,MAAM,CAAC;QACvB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE;QACN,cAAc,EAAE,MAAM,CAAC;QACvB,oBAAoB,EAAE,MAAM,CAAC;QAC7B,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,OAAO,CAAqB;gBAExB,MAAM,EAAE,SAAS,EAAE,WAAW,GAAE,MAAsB,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB;IAsBpH;;;OAGG;YACW,oBAAoB;IAYlC;;;OAGG;YACW,mBAAmB;IAiBjC;;;;;;OAMG;IACH,OAAO,CAAC,UAAU,CAAkC;YACtC,oBAAoB;IA+BlC;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAwE5D;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IA+E1D;;OAEG;YACW,gBAAgB;IAqD9B;;OAEG;YACW,gBAAgB;IAkD9B;;OAEG;YACW,eAAe;IA4E7B;;OAEG;YACW,kBAAkB;IAqChC;;OAEG;IACH,OAAO,CAAC,0BAA0B;IA4BlC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAuBhC;;OAEG;YACW,eAAe;IAwB7B;;OAEG;YACW,gBAAgB;IAiB9B;;OAEG;YACW,eAAe;IAW7B;;OAEG;YACW,gBAAgB;IAmC9B;;OAEG;YACW,WAAW;IAiEzB;;OAEG;YACW,WAAW;IA2DzB;;;;;;;;OAQG;IACH,OAAO,CAAC,gBAAgB;IAiBxB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAiBpB;;OAEG;IACH,OAAO,IAAI,OAAO;CAGnB"}
@@ -14,12 +14,13 @@
14
14
  */
15
15
  import { SpecMetadataManager } from '../../../src/core/specs/spec-metadata-manager.js';
16
16
  import { SpecParser } from '../../../src/core/specs/spec-parser.js';
17
+ import { SyncCircuitBreaker } from '../../../src/core/increment/sync-circuit-breaker.js';
17
18
  import axios from 'axios';
18
19
  import { promises as fsPromises, existsSync } from 'fs';
19
20
  import path from 'path';
20
21
  import yaml from 'yaml';
21
22
  export class AdoSpecSync {
22
- constructor(config, projectRoot = process.cwd(), projectId) {
23
+ constructor(config, projectRoot = process.cwd(), projectId, breaker) {
23
24
  this.availableTypes = null;
24
25
  /**
25
26
  * Resolve a work item state name for the given type.
@@ -32,6 +33,7 @@ export class AdoSpecSync {
32
33
  this.projectRoot = projectRoot;
33
34
  this.specManager = new SpecMetadataManager(projectRoot, projectId);
34
35
  this.config = config;
36
+ this.breaker = breaker ?? new SyncCircuitBreaker();
35
37
  // Create ADO API client
36
38
  // NOTE: Do NOT set a default Content-Type here. Work item create/update
37
39
  // requires 'application/json-patch+json', but WIQL queries require
@@ -116,6 +118,14 @@ export class AdoSpecSync {
116
118
  */
117
119
  async syncSpecToAdo(specId) {
118
120
  console.log(`\nšŸ”„ Syncing spec ${specId} to ADO Feature...`);
121
+ if (!this.breaker.canSync()) {
122
+ return {
123
+ success: false,
124
+ specId,
125
+ provider: 'ado',
126
+ error: 'Circuit breaker open — sync blocked',
127
+ };
128
+ }
119
129
  try {
120
130
  // 1. Load spec
121
131
  const spec = await this.specManager.loadSpec(specId);
@@ -174,6 +184,14 @@ export class AdoSpecSync {
174
184
  */
175
185
  async syncFromAdo(specId) {
176
186
  console.log(`\nšŸ”„ Syncing FROM ADO to spec ${specId}...`);
187
+ if (!this.breaker.canSync()) {
188
+ return {
189
+ success: false,
190
+ specId,
191
+ provider: 'ado',
192
+ error: 'Circuit breaker open — sync blocked',
193
+ };
194
+ }
177
195
  try {
178
196
  // 1. Load spec
179
197
  const spec = await this.specManager.loadSpec(specId);
@@ -721,5 +739,11 @@ ${acList}
721
739
  };
722
740
  return map[normalizedType] || defaultType;
723
741
  }
742
+ /**
743
+ * Check whether the circuit is closed (sync allowed).
744
+ */
745
+ canSync() {
746
+ return this.breaker.canSync();
747
+ }
724
748
  }
725
749
  //# sourceMappingURL=ado-spec-sync.js.map