specweave 1.0.450 → 1.0.451

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 (37) hide show
  1. package/bin/specweave.js +1 -1
  2. package/dist/plugins/specweave-jira/lib/jira-spec-sync.d.ts.map +1 -1
  3. package/dist/plugins/specweave-jira/lib/jira-spec-sync.js +15 -2
  4. package/dist/plugins/specweave-jira/lib/jira-spec-sync.js.map +1 -1
  5. package/dist/src/cli/commands/validate-jira.js +1 -1
  6. package/dist/src/cli/commands/validate-jira.js.map +1 -1
  7. package/dist/src/core/hooks/LifecycleHookDispatcher.d.ts.map +1 -1
  8. package/dist/src/core/hooks/LifecycleHookDispatcher.js +25 -1
  9. package/dist/src/core/hooks/LifecycleHookDispatcher.js.map +1 -1
  10. package/dist/src/core/increment/completion-validator.js +5 -5
  11. package/dist/src/core/increment/completion-validator.js.map +1 -1
  12. package/dist/src/core/increment/status-commands.d.ts.map +1 -1
  13. package/dist/src/core/increment/status-commands.js +9 -14
  14. package/dist/src/core/increment/status-commands.js.map +1 -1
  15. package/dist/src/core/living-docs/living-docs-sync.d.ts +10 -5
  16. package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -1
  17. package/dist/src/core/living-docs/living-docs-sync.js +50 -151
  18. package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
  19. package/dist/src/core/project/project-resolution.d.ts +1 -1
  20. package/dist/src/core/project/project-resolution.js +1 -1
  21. package/dist/src/core/types/increment-metadata.d.ts +2 -0
  22. package/dist/src/core/types/increment-metadata.d.ts.map +1 -1
  23. package/package.json +2 -2
  24. package/plugins/specweave/lib/vendor/core/types/increment-metadata.d.ts +2 -0
  25. package/plugins/specweave-ado/lib/ado-multi-project-sync.js +1 -0
  26. package/plugins/specweave-jira/lib/jira-spec-sync.js +17 -1
  27. package/plugins/specweave-jira/lib/jira-spec-sync.ts +20 -3
  28. package/plugins/specweave/hooks/.specweave/logs/auto-iterations.log +0 -1
  29. package/plugins/specweave/hooks/.specweave/logs/auto-stop-reasons.log +0 -1
  30. package/plugins/specweave/skills/.specweave/logs/reflect/auto-reflect.log +0 -15
  31. package/plugins/specweave/skills/.specweave/logs/reflect/reflect.log +0 -3
  32. package/plugins/specweave/skills/.specweave/logs/stop-auto.log +0 -1
  33. package/plugins/specweave-ado/lib/enhanced-ado-sync.js +0 -180
  34. package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +0 -1266
  35. package/plugins/specweave-github/lib/enhanced-github-sync.js +0 -249
  36. package/plugins/specweave-jira/lib/enhanced-jira-sync.js +0 -150
  37. package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +0 -1260
@@ -1 +1 @@
1
- {"version":3,"file":"increment-metadata.d.ts","sourceRoot":"","sources":["../../../../src/core/types/increment-metadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"increment-metadata.d.ts","sourceRoot":"","sources":["../../../../src/core/types/increment-metadata.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specweave",
3
- "version": "1.0.450",
3
+ "version": "1.0.451",
4
4
  "description": "100+ domain-expert AI skills — PM, Architect, Frontend, QA, Security and more. Skills learn your team's patterns permanently. Spec-first planning, autonomous execution, multi-agent teams, synced to GitHub/JIRA. Claude Code, Cursor, Copilot & more.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -73,7 +73,7 @@
73
73
  "bugs": {
74
74
  "url": "https://github.com/anton-abyzov/specweave/issues"
75
75
  },
76
- "homepage": "https://verified-skill.com",
76
+ "homepage": "https://spec-weave.com",
77
77
  "engines": {
78
78
  "node": ">=20.12.0"
79
79
  },
@@ -419,6 +419,8 @@ export interface IncrementMetadataV2 extends IncrementMetadata {
419
419
  * ```
420
420
  */
421
421
  prRefs?: PrRef[];
422
+ /** When true, skip living docs sync for this increment (per-increment override) */
423
+ skipLivingDocsSync?: boolean;
422
424
  }
423
425
  /**
424
426
  * Pull request reference for a single repository (v1.0.437+)
@@ -373,6 +373,7 @@ ${userStory.technicalContext}
373
373
  return mapping.task || "Task";
374
374
  case "Subtask":
375
375
  return mapping.task || "Task";
376
+ // ADO doesn't have subtasks, use Task
376
377
  default:
377
378
  return "User Story";
378
379
  }
@@ -229,7 +229,8 @@ class JiraSpecSync {
229
229
  await this.updateStory(existingStory.key, {
230
230
  summary: storySummary,
231
231
  description: storyDescription,
232
- status: us.status === "done" ? "Done" : us.status === "in-progress" ? "In Progress" : "To Do"
232
+ status: us.status === "done" ? "Done" : us.status === "in-progress" ? "In Progress" : "To Do",
233
+ epicLink: epicKey
233
234
  });
234
235
  updated.push(us.id);
235
236
  console.log(` \u2705 Updated ${us.id}`);
@@ -257,8 +258,11 @@ class JiraSpecSync {
257
258
  h1. ${spec.metadata.title}
258
259
 
259
260
  *Spec ID*: ${spec.metadata.id}
261
+
260
262
  *Priority*: ${spec.metadata.priority}
263
+
261
264
  *Status*: ${spec.metadata.status}
265
+
262
266
  ${progressText}
263
267
 
264
268
  ----
@@ -470,6 +474,18 @@ ${acList}
470
474
  if (updates.description) {
471
475
  payload.fields.description = toDescription(updates.description, this.config.domain);
472
476
  }
477
+ if (updates.epicLink) {
478
+ const { field: epicField, style } = await getEpicLinkFieldForProject(
479
+ this.config.domain,
480
+ this.config.projectKey,
481
+ { email: this.config.email, apiToken: this.config.apiToken }
482
+ );
483
+ if (style === "next-gen") {
484
+ payload.fields.parent = { key: updates.epicLink };
485
+ } else {
486
+ payload.fields[epicField] = updates.epicLink;
487
+ }
488
+ }
473
489
  await this.client.put(`/issue/${storyKey}`, payload);
474
490
  if (updates.status) {
475
491
  await this.transitionIssue(storyKey, updates.status);
@@ -352,11 +352,12 @@ export class JiraSpecSync {
352
352
  const existingStory = await this.findStoryByTitle(us.id);
353
353
 
354
354
  if (existingStory) {
355
- // UPDATE existing story
355
+ // UPDATE existing story (also set epicLink to fix orphaned stories)
356
356
  await this.updateStory(existingStory.key, {
357
357
  summary: storySummary,
358
358
  description: storyDescription,
359
- status: us.status === 'done' ? 'Done' : us.status === 'in-progress' ? 'In Progress' : 'To Do'
359
+ status: us.status === 'done' ? 'Done' : us.status === 'in-progress' ? 'In Progress' : 'To Do',
360
+ epicLink: epicKey
360
361
  });
361
362
 
362
363
  updated.push(us.id);
@@ -392,8 +393,11 @@ export class JiraSpecSync {
392
393
  h1. ${spec.metadata.title}
393
394
 
394
395
  *Spec ID*: ${spec.metadata.id}
396
+
395
397
  *Priority*: ${spec.metadata.priority}
398
+
396
399
  *Status*: ${spec.metadata.status}
400
+
397
401
  ${progressText}
398
402
 
399
403
  ----
@@ -649,7 +653,7 @@ ${acList}
649
653
  */
650
654
  private async updateStory(
651
655
  storyKey: string,
652
- updates: { summary?: string; description?: string; status?: string }
656
+ updates: { summary?: string; description?: string; status?: string; epicLink?: string }
653
657
  ): Promise<void> {
654
658
  const payload: any = {
655
659
  fields: {}
@@ -663,6 +667,19 @@ ${acList}
663
667
  payload.fields.description = toDescription(updates.description, this.config.domain);
664
668
  }
665
669
 
670
+ if (updates.epicLink) {
671
+ const { field: epicField, style } = await getEpicLinkFieldForProject(
672
+ this.config.domain,
673
+ this.config.projectKey,
674
+ { email: this.config.email, apiToken: this.config.apiToken }
675
+ );
676
+ if (style === 'next-gen') {
677
+ payload.fields.parent = { key: updates.epicLink };
678
+ } else {
679
+ payload.fields[epicField] = updates.epicLink;
680
+ }
681
+ }
682
+
666
683
  await this.client.put(`/issue/${storyKey}`, payload);
667
684
 
668
685
  // Handle status transition if needed
@@ -1 +0,0 @@
1
- {"timestamp":"2026-01-04T16:11:43Z","event":"session_stop","reason":"No auto session active","details":"approve_called:main","success":false,"iteration":0,"increment":"none"}
@@ -1 +0,0 @@
1
- {"timestamp":"2026-01-04T16:11:43Z","sessionId":"unknown","reason":"No auto session active","details":"approve_called:main","success":false,"iteration":0,"increment":"none","testsRun":false,"testsPassed":0,"testsFailed":0}
@@ -1,15 +0,0 @@
1
- {
2
- "ran": false,
3
- "inputSummary": {
4
- "transcriptLines": 266
5
- },
6
- "extracted": {
7
- "skillLearnings": []
8
- },
9
- "written": {
10
- "learningsAdded": 0,
11
- "learningsSkippedDuplicate": 0
12
- },
13
- "durationMs": 1.4448749999999997,
14
- "reason": "CLAUDE.md not found in project"
15
- }
@@ -1,3 +0,0 @@
1
- [2026-02-03T22:03:06Z] [info] Starting reflection (265 lines)
2
- [2026-02-03T22:03:06Z] [info] Reflection started in background
3
- [2026-02-03T22:03:06Z] [info] Reflection completed - no learnings
@@ -1 +0,0 @@
1
- [2026-02-03T22:03:06Z] APPROVE: No increments directory
@@ -1,180 +0,0 @@
1
- import { AdoClientV2 } from "./ado-client-v2.js";
2
- import { EnhancedContentBuilder } from "../../../src/core/sync/enhanced-content-builder.js";
3
- import { SpecIncrementMapper } from "../../../src/core/sync/spec-increment-mapper.js";
4
- import { parseSpecContent } from "../../../src/core/spec-content-sync.js";
5
- import path from "path";
6
- import fs from "fs/promises";
7
- async function syncSpecToAdoWithEnhancedContent(options) {
8
- const { specPath, organization, project, dryRun = false, verbose = false } = options;
9
- try {
10
- const baseSpec = await parseSpecContent(specPath);
11
- if (!baseSpec) {
12
- return {
13
- success: false,
14
- action: "error",
15
- error: "Failed to parse spec content"
16
- };
17
- }
18
- if (verbose) {
19
- console.log(`\u{1F4C4} Parsed spec: ${baseSpec.identifier.compact}`);
20
- }
21
- const specId = baseSpec.identifier.full || baseSpec.identifier.compact;
22
- const rootDir = await findSpecWeaveRoot(specPath);
23
- const mapper = new SpecIncrementMapper(rootDir);
24
- const mapping = await mapper.mapSpecToIncrements(specId);
25
- if (verbose) {
26
- console.log(`\u{1F517} Found ${mapping.increments.length} related increments`);
27
- }
28
- const taskMapping = buildTaskMapping(mapping.increments, organization, project);
29
- const architectureDocs = await findArchitectureDocs(rootDir, specId);
30
- const enhancedSpec = {
31
- ...baseSpec,
32
- summary: baseSpec.description,
33
- taskMapping,
34
- architectureDocs
35
- };
36
- const builder = new EnhancedContentBuilder();
37
- const description = builder.buildExternalDescription(enhancedSpec);
38
- if (verbose) {
39
- console.log(`\u{1F4DD} Generated description: ${description.length} characters`);
40
- }
41
- if (dryRun) {
42
- console.log("\u{1F50D} DRY RUN - Would create/update feature with:");
43
- console.log(` Title: ${baseSpec.title}`);
44
- console.log(` Description length: ${description.length}`);
45
- return {
46
- success: true,
47
- action: "no-change",
48
- tasksLinked: taskMapping?.tasks.length || 0
49
- };
50
- }
51
- if (!organization || !project) {
52
- return {
53
- success: false,
54
- action: "error",
55
- error: "Azure DevOps organization/project not specified"
56
- };
57
- }
58
- const profile = {
59
- provider: "ado",
60
- displayName: `${organization}/${project}`,
61
- config: {
62
- organization,
63
- project
64
- },
65
- timeRange: { default: "1M", max: "6M" }
66
- };
67
- const pat = process.env.AZURE_DEVOPS_PAT || "";
68
- const client = new AdoClientV2(profile, pat);
69
- const existingFeature = await findExistingFeature(client, baseSpec.identifier.compact);
70
- let result;
71
- if (existingFeature) {
72
- await client.updateWorkItem(existingFeature.id, {
73
- title: `[${baseSpec.identifier.compact}] ${baseSpec.title}`,
74
- description
75
- });
76
- result = {
77
- success: true,
78
- action: "updated",
79
- featureId: existingFeature.id,
80
- featureUrl: `https://dev.azure.com/${organization}/${project}/_workitems/edit/${existingFeature.id}`,
81
- tasksLinked: taskMapping?.tasks.length || 0
82
- };
83
- } else {
84
- const feature = await client.createEpic({
85
- title: `[${baseSpec.identifier.compact}] ${baseSpec.title}`,
86
- description,
87
- tags: ["spec", "external-tool-sync"]
88
- });
89
- result = {
90
- success: true,
91
- action: "created",
92
- featureId: feature.id,
93
- featureUrl: `https://dev.azure.com/${organization}/${project}/_workitems/edit/${feature.id}`,
94
- tasksLinked: taskMapping?.tasks.length || 0
95
- };
96
- }
97
- if (verbose) {
98
- console.log(`\u2705 ${result.action === "created" ? "Created" : "Updated"} feature #${result.featureId}`);
99
- }
100
- return result;
101
- } catch (error) {
102
- return {
103
- success: false,
104
- action: "error",
105
- error: error.message
106
- };
107
- }
108
- }
109
- async function findSpecWeaveRoot(specPath) {
110
- let currentDir = path.dirname(specPath);
111
- while (true) {
112
- const specweaveDir = path.join(currentDir, ".specweave");
113
- try {
114
- await fs.access(specweaveDir);
115
- return currentDir;
116
- } catch {
117
- const parentDir = path.dirname(currentDir);
118
- if (parentDir === currentDir) {
119
- throw new Error(".specweave directory not found");
120
- }
121
- currentDir = parentDir;
122
- }
123
- }
124
- }
125
- function buildTaskMapping(increments, organization, project) {
126
- if (increments.length === 0) return void 0;
127
- const firstIncrement = increments[0];
128
- const tasks = firstIncrement.tasks.map((task) => ({
129
- id: task.id,
130
- title: task.title,
131
- userStories: task.userStories
132
- }));
133
- // Derive repository name from git remote or fall back to project name
134
- let repoName = project;
135
- try {
136
- const { execSync } = require("child_process");
137
- const remoteUrl = execSync("git remote get-url origin", { encoding: "utf-8" }).trim();
138
- const match = remoteUrl.match(/\/([^/]+?)(?:\.git)?$/);
139
- if (match) repoName = match[1];
140
- } catch {
141
- // Fallback to project name if git is unavailable
142
- }
143
- return {
144
- incrementId: firstIncrement.id,
145
- tasks,
146
- tasksUrl: `https://dev.azure.com/${organization}/${project}/_git/${repoName}?path=/.specweave/increments/${firstIncrement.id}/tasks.md`
147
- };
148
- }
149
- async function findArchitectureDocs(rootDir, specId) {
150
- const docs = [];
151
- const archDir = path.join(rootDir, ".specweave/docs/internal/architecture");
152
- try {
153
- const adrDir = path.join(archDir, "adr");
154
- try {
155
- const adrs = await fs.readdir(adrDir);
156
- const relatedAdrs = adrs.filter((file) => file.includes(specId.replace("spec-", "")));
157
- for (const adr of relatedAdrs) {
158
- docs.push({
159
- type: "adr",
160
- path: path.join(adrDir, adr),
161
- title: adr.replace(".md", "").replace(/-/g, " ")
162
- });
163
- }
164
- } catch {
165
- }
166
- } catch {
167
- }
168
- return docs;
169
- }
170
- async function findExistingFeature(client, specId) {
171
- try {
172
- const features = await client.queryWorkItems(`[System.Title] Contains '[${specId}]' AND [System.WorkItemType] = 'Feature'`);
173
- return features[0] || null;
174
- } catch {
175
- return null;
176
- }
177
- }
178
- export {
179
- syncSpecToAdoWithEnhancedContent
180
- };