specweave 0.12.0 → 0.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/utils/external-resource-validator.d.ts.map +1 -1
- package/dist/utils/external-resource-validator.js +101 -59
- package/dist/utils/external-resource-validator.js.map +1 -1
- package/package.json +1 -1
- package/plugins/specweave/hooks/post-increment-change.sh +94 -0
- package/plugins/specweave/hooks/post-increment-status-change.sh +143 -0
- package/plugins/specweave/lib/hooks/sync-living-docs.ts +57 -16
- package/plugins/specweave-github/commands/specweave-github-sync-from.md +147 -0
- package/plugins/specweave-github/lib/cli-sync-increment-changes.ts +33 -0
- package/plugins/specweave-github/lib/github-issue-updater.ts +449 -0
- package/plugins/specweave-github/lib/github-sync-bidirectional.ts +342 -0
- package/plugins/specweave-github/lib/github-sync-increment-changes.ts +380 -0
- package/src/templates/AGENTS.md.template +55 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-resource-validator.d.ts","sourceRoot":"","sources":["../../src/utils/external-resource-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAeH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE;QACP,MAAM,EAAE,OAAO,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,MAAM,EAAE;QACN,KAAK,EAAE,OAAO,CAAC;QACf,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC9C,CAAC;IACF,UAAU,EAAE,OAAO,CAAC;CACrB;AAMD,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,GAAE,MAAe;IASpC;;OAEG;IACH,OAAO,CAAC,OAAO;IAwBf;;OAEG;YACW,SAAS;IAyBvB;;OAEG;YACW,WAAW;IAmBzB;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAa7C;;OAEG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAanE;;OAEG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAwBlF;;OAEG;YACW,gBAAgB;IAS9B;;OAEG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAa3D;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAa5D;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IA2B5E;;OAEG;YACW,iBAAiB;IAgB/B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"external-resource-validator.d.ts","sourceRoot":"","sources":["../../src/utils/external-resource-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAeH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE;QACP,MAAM,EAAE,OAAO,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,MAAM,EAAE;QACN,KAAK,EAAE,OAAO,CAAC;QACf,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,EAAE,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC9C,CAAC;IACF,UAAU,EAAE,OAAO,CAAC;CACrB;AAMD,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,GAAE,MAAe;IASpC;;OAEG;IACH,OAAO,CAAC,OAAO;IAwBf;;OAEG;YACW,SAAS;IAyBvB;;OAEG;YACW,WAAW;IAmBzB;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAa7C;;OAEG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAanE;;OAEG;IACG,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAwBlF;;OAEG;YACW,gBAAgB;IAS9B;;OAEG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAa3D;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAa5D;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IA2B5E;;OAEG;YACW,iBAAiB;IAgB/B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,oBAAoB,CAAC;CAuMhD;AAMD;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,GAAE,MAAe,GACvB,OAAO,CAAC,oBAAoB,CAAC,CAG/B"}
|
|
@@ -259,79 +259,121 @@ export class JiraResourceValidator {
|
|
|
259
259
|
envUpdated: false,
|
|
260
260
|
};
|
|
261
261
|
const env = this.loadEnv();
|
|
262
|
-
const
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
const existingProjects = await this.fetchProjects();
|
|
271
|
-
// Prompt user
|
|
272
|
-
const { action } = await inquirer.prompt([
|
|
273
|
-
{
|
|
274
|
-
type: 'list',
|
|
275
|
-
name: 'action',
|
|
276
|
-
message: 'What would you like to do?',
|
|
277
|
-
choices: [
|
|
278
|
-
{ name: 'Select an existing project', value: 'select' },
|
|
279
|
-
{ name: 'Create a new project', value: 'create' },
|
|
280
|
-
{ name: 'Cancel', value: 'cancel' },
|
|
281
|
-
],
|
|
282
|
-
},
|
|
283
|
-
]);
|
|
284
|
-
if (action === 'cancel') {
|
|
262
|
+
const strategy = env.JIRA_STRATEGY || 'project-per-team';
|
|
263
|
+
// Determine project key(s) based on strategy
|
|
264
|
+
let projectKeys = [];
|
|
265
|
+
if (strategy === 'project-per-team') {
|
|
266
|
+
// Multiple projects (JIRA_PROJECTS is comma-separated)
|
|
267
|
+
const projectsEnv = env.JIRA_PROJECTS || '';
|
|
268
|
+
if (!projectsEnv) {
|
|
269
|
+
console.log(chalk.red('❌ JIRA_PROJECTS not found in .env'));
|
|
285
270
|
result.valid = false;
|
|
286
271
|
return result;
|
|
287
272
|
}
|
|
288
|
-
|
|
289
|
-
|
|
273
|
+
projectKeys = projectsEnv.split(',').map(p => p.trim()).filter(p => p);
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
// Single project (component-based or board-based)
|
|
277
|
+
const projectKey = env.JIRA_PROJECT;
|
|
278
|
+
if (!projectKey) {
|
|
279
|
+
console.log(chalk.red('❌ JIRA_PROJECT not found in .env'));
|
|
280
|
+
result.valid = false;
|
|
281
|
+
return result;
|
|
282
|
+
}
|
|
283
|
+
projectKeys = [projectKey];
|
|
284
|
+
}
|
|
285
|
+
// 1. Validate project(s)
|
|
286
|
+
console.log(chalk.gray(`Strategy: ${strategy}`));
|
|
287
|
+
console.log(chalk.gray(`Checking project(s): ${projectKeys.join(', ')}...\n`));
|
|
288
|
+
for (const projectKey of projectKeys) {
|
|
289
|
+
const project = await this.checkProject(projectKey);
|
|
290
|
+
if (!project) {
|
|
291
|
+
console.log(chalk.yellow(`⚠️ Project "${projectKey}" not found\n`));
|
|
292
|
+
// Fetch existing projects
|
|
293
|
+
const existingProjects = await this.fetchProjects();
|
|
294
|
+
// Prompt user
|
|
295
|
+
const { action } = await inquirer.prompt([
|
|
290
296
|
{
|
|
291
297
|
type: 'list',
|
|
292
|
-
name: '
|
|
293
|
-
message:
|
|
294
|
-
choices:
|
|
295
|
-
name:
|
|
296
|
-
value:
|
|
297
|
-
|
|
298
|
+
name: 'action',
|
|
299
|
+
message: `What would you like to do for project "${projectKey}"?`,
|
|
300
|
+
choices: [
|
|
301
|
+
{ name: 'Select an existing project', value: 'select' },
|
|
302
|
+
{ name: 'Create a new project', value: 'create' },
|
|
303
|
+
{ name: 'Skip this project', value: 'skip' },
|
|
304
|
+
{ name: 'Cancel validation', value: 'cancel' },
|
|
305
|
+
],
|
|
298
306
|
},
|
|
299
307
|
]);
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
308
|
+
if (action === 'cancel') {
|
|
309
|
+
result.valid = false;
|
|
310
|
+
return result;
|
|
311
|
+
}
|
|
312
|
+
if (action === 'skip') {
|
|
313
|
+
console.log(chalk.yellow(`⏭️ Skipped project "${projectKey}"\n`));
|
|
314
|
+
continue;
|
|
315
|
+
}
|
|
316
|
+
if (action === 'select') {
|
|
317
|
+
const { selectedProject } = await inquirer.prompt([
|
|
318
|
+
{
|
|
319
|
+
type: 'list',
|
|
320
|
+
name: 'selectedProject',
|
|
321
|
+
message: 'Select a project:',
|
|
322
|
+
choices: existingProjects.map((p) => ({
|
|
323
|
+
name: `${p.key} - ${p.name}`,
|
|
324
|
+
value: p.key,
|
|
325
|
+
})),
|
|
326
|
+
},
|
|
327
|
+
]);
|
|
328
|
+
// Update .env (handle both single and multiple projects)
|
|
329
|
+
if (strategy === 'project-per-team') {
|
|
330
|
+
// Replace this project key in JIRA_PROJECTS
|
|
331
|
+
const updatedKeys = projectKeys.map(k => k === projectKey ? selectedProject : k);
|
|
332
|
+
await this.updateEnv({ JIRA_PROJECTS: updatedKeys.join(',') });
|
|
333
|
+
}
|
|
334
|
+
else {
|
|
335
|
+
await this.updateEnv({ JIRA_PROJECT: selectedProject });
|
|
336
|
+
}
|
|
337
|
+
result.project = { exists: true, key: selectedProject };
|
|
338
|
+
result.envUpdated = true;
|
|
339
|
+
console.log(chalk.green(`✅ Project "${selectedProject}" selected\n`));
|
|
340
|
+
}
|
|
341
|
+
else if (action === 'create') {
|
|
342
|
+
const { projectName } = await inquirer.prompt([
|
|
343
|
+
{
|
|
344
|
+
type: 'input',
|
|
345
|
+
name: 'projectName',
|
|
346
|
+
message: 'Enter project name:',
|
|
347
|
+
default: projectKey,
|
|
348
|
+
},
|
|
349
|
+
]);
|
|
350
|
+
const newProject = await this.createProject(projectKey, projectName);
|
|
351
|
+
result.project = {
|
|
352
|
+
exists: true,
|
|
353
|
+
key: newProject.key,
|
|
354
|
+
id: newProject.id,
|
|
355
|
+
name: newProject.name,
|
|
356
|
+
};
|
|
357
|
+
}
|
|
304
358
|
}
|
|
305
|
-
else
|
|
306
|
-
|
|
307
|
-
{
|
|
308
|
-
type: 'input',
|
|
309
|
-
name: 'projectName',
|
|
310
|
-
message: 'Enter project name:',
|
|
311
|
-
default: projectKey,
|
|
312
|
-
},
|
|
313
|
-
]);
|
|
314
|
-
const newProject = await this.createProject(projectKey, projectName);
|
|
359
|
+
else {
|
|
360
|
+
console.log(chalk.green(`✅ Project "${projectKey}" exists`));
|
|
315
361
|
result.project = {
|
|
316
362
|
exists: true,
|
|
317
|
-
key:
|
|
318
|
-
id:
|
|
319
|
-
name:
|
|
363
|
+
key: project.key,
|
|
364
|
+
id: project.id,
|
|
365
|
+
name: project.name,
|
|
320
366
|
};
|
|
321
367
|
}
|
|
322
368
|
}
|
|
323
|
-
|
|
324
|
-
console.log(chalk.green(`✅ Project "${projectKey}" exists\n`));
|
|
325
|
-
result.project = {
|
|
326
|
-
exists: true,
|
|
327
|
-
key: project.key,
|
|
328
|
-
id: project.id,
|
|
329
|
-
name: project.name,
|
|
330
|
-
};
|
|
331
|
-
}
|
|
369
|
+
console.log(); // Empty line after project validation
|
|
332
370
|
// 2. Validate boards (smart per-board detection)
|
|
333
|
-
|
|
371
|
+
// Boards only apply to board-based strategy
|
|
372
|
+
const boardsConfig = env.JIRA_BOARDS || '';
|
|
373
|
+
if (boardsConfig && strategy === 'board-based') {
|
|
334
374
|
console.log(chalk.gray(`Checking boards: ${boardsConfig}...`));
|
|
375
|
+
// For board-based strategy, use the single project key
|
|
376
|
+
const projectKeyForBoards = projectKeys[0];
|
|
335
377
|
const boardEntries = boardsConfig.split(',').map((b) => b.trim());
|
|
336
378
|
const finalBoardIds = [];
|
|
337
379
|
for (const entry of boardEntries) {
|
|
@@ -355,7 +397,7 @@ export class JiraResourceValidator {
|
|
|
355
397
|
// Entry is a board name - create it
|
|
356
398
|
console.log(chalk.blue(` 📦 Creating board: ${entry}...`));
|
|
357
399
|
try {
|
|
358
|
-
const board = await this.createBoard(entry,
|
|
400
|
+
const board = await this.createBoard(entry, projectKeyForBoards);
|
|
359
401
|
console.log(chalk.green(` ✅ Created: ${entry} (ID: ${board.id})`));
|
|
360
402
|
result.boards.created.push({ name: entry, id: board.id });
|
|
361
403
|
finalBoardIds.push(board.id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-resource-validator.js","sourceRoot":"","sources":["../../src/utils/external-resource-validator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"external-resource-validator.js","sourceRoot":"","sources":["../../src/utils/external-resource-validator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "specweave",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.1",
|
|
4
4
|
"description": "Spec-driven development framework for Claude Code. AI-native workflow with living documentation, intelligent agents, and multilingual support (9 languages). Enterprise-grade traceability with permanent specs and temporary increments.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# SpecWeave Post-Increment-Change Hook
|
|
4
|
+
# Runs automatically after increment files (spec.md, plan.md, tasks.md) are modified
|
|
5
|
+
#
|
|
6
|
+
# Trigger: File watcher or git hook (pre-commit/post-commit)
|
|
7
|
+
# Purpose: Sync increment file changes to GitHub issues
|
|
8
|
+
#
|
|
9
|
+
# What it does:
|
|
10
|
+
# 1. Detects which file changed (spec.md, plan.md, tasks.md)
|
|
11
|
+
# 2. Invokes GitHub sync for increment changes
|
|
12
|
+
# 3. Updates GitHub issue with scope/plan/task changes
|
|
13
|
+
#
|
|
14
|
+
# Usage:
|
|
15
|
+
# ./post-increment-change.sh <incrementId> <changedFile>
|
|
16
|
+
#
|
|
17
|
+
# Example:
|
|
18
|
+
# ./post-increment-change.sh 0015-hierarchical-sync spec.md
|
|
19
|
+
|
|
20
|
+
set -e
|
|
21
|
+
|
|
22
|
+
# Find project root
|
|
23
|
+
find_project_root() {
|
|
24
|
+
local dir="$1"
|
|
25
|
+
while [ "$dir" != "/" ]; do
|
|
26
|
+
if [ -d "$dir/.specweave" ]; then
|
|
27
|
+
echo "$dir"
|
|
28
|
+
return 0
|
|
29
|
+
fi
|
|
30
|
+
dir="$(dirname "$dir")"
|
|
31
|
+
done
|
|
32
|
+
pwd
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
PROJECT_ROOT="$(find_project_root "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")"
|
|
36
|
+
cd "$PROJECT_ROOT" 2>/dev/null || true
|
|
37
|
+
|
|
38
|
+
# Configuration
|
|
39
|
+
LOGS_DIR=".specweave/logs"
|
|
40
|
+
DEBUG_LOG="$LOGS_DIR/hooks-debug.log"
|
|
41
|
+
|
|
42
|
+
mkdir -p "$LOGS_DIR" 2>/dev/null || true
|
|
43
|
+
|
|
44
|
+
# Arguments
|
|
45
|
+
INCREMENT_ID="$1"
|
|
46
|
+
CHANGED_FILE="$2"
|
|
47
|
+
|
|
48
|
+
if [ -z "$INCREMENT_ID" ] || [ -z "$CHANGED_FILE" ]; then
|
|
49
|
+
echo "Usage: $0 <incrementId> <changedFile>" >&2
|
|
50
|
+
echo "Example: $0 0015-hierarchical-sync spec.md" >&2
|
|
51
|
+
exit 1
|
|
52
|
+
fi
|
|
53
|
+
|
|
54
|
+
echo "[$(date)] 📝 Increment file changed: $CHANGED_FILE" >> "$DEBUG_LOG" 2>/dev/null || true
|
|
55
|
+
|
|
56
|
+
# Validate changed file
|
|
57
|
+
case "$CHANGED_FILE" in
|
|
58
|
+
spec.md|plan.md|tasks.md)
|
|
59
|
+
;;
|
|
60
|
+
*)
|
|
61
|
+
echo "[$(date)] ⚠️ Unknown file type: $CHANGED_FILE (skipping sync)" >> "$DEBUG_LOG" 2>/dev/null || true
|
|
62
|
+
exit 0
|
|
63
|
+
;;
|
|
64
|
+
esac
|
|
65
|
+
|
|
66
|
+
# Check if Node.js available
|
|
67
|
+
if ! command -v node &> /dev/null; then
|
|
68
|
+
echo "[$(date)] ⚠️ Node.js not found, skipping sync" >> "$DEBUG_LOG" 2>/dev/null || true
|
|
69
|
+
exit 0
|
|
70
|
+
fi
|
|
71
|
+
|
|
72
|
+
# Check if GitHub CLI available
|
|
73
|
+
if ! command -v gh &> /dev/null; then
|
|
74
|
+
echo "[$(date)] ℹ️ GitHub CLI not found, skipping sync" >> "$DEBUG_LOG" 2>/dev/null || true
|
|
75
|
+
exit 0
|
|
76
|
+
fi
|
|
77
|
+
|
|
78
|
+
# Check if authenticated
|
|
79
|
+
if ! gh auth status &> /dev/null; then
|
|
80
|
+
echo "[$(date)] ℹ️ GitHub CLI not authenticated, skipping sync" >> "$DEBUG_LOG" 2>/dev/null || true
|
|
81
|
+
exit 0
|
|
82
|
+
fi
|
|
83
|
+
|
|
84
|
+
# Sync to GitHub
|
|
85
|
+
echo "[$(date)] 🔄 Syncing $CHANGED_FILE changes to GitHub..." >> "$DEBUG_LOG" 2>/dev/null || true
|
|
86
|
+
|
|
87
|
+
node dist/plugins/specweave-github/lib/github-sync-increment-changes.js "$INCREMENT_ID" "$CHANGED_FILE" 2>&1 | tee -a "$DEBUG_LOG" >/dev/null || {
|
|
88
|
+
echo "[$(date)] ⚠️ Failed to sync increment changes (non-blocking)" >> "$DEBUG_LOG" 2>/dev/null || true
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
echo "[$(date)] ✅ Post-increment-change hook complete" >> "$DEBUG_LOG" 2>/dev/null || true
|
|
92
|
+
|
|
93
|
+
# Return success (non-blocking)
|
|
94
|
+
exit 0
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# SpecWeave Post-Increment-Status-Change Hook
|
|
4
|
+
# Runs automatically after increment status changes (pause/resume/abandon)
|
|
5
|
+
#
|
|
6
|
+
# Trigger: /specweave:pause, /specweave:resume, /specweave:abandon commands
|
|
7
|
+
# Purpose: Notify GitHub when increment status changes
|
|
8
|
+
#
|
|
9
|
+
# What it does:
|
|
10
|
+
# 1. Detects status change (paused, resumed, abandoned)
|
|
11
|
+
# 2. Posts comment to GitHub issue
|
|
12
|
+
# 3. Updates metadata
|
|
13
|
+
#
|
|
14
|
+
# Usage:
|
|
15
|
+
# ./post-increment-status-change.sh <incrementId> <newStatus> <reason>
|
|
16
|
+
#
|
|
17
|
+
# Example:
|
|
18
|
+
# ./post-increment-status-change.sh 0015-hierarchical-sync paused "Waiting for API keys"
|
|
19
|
+
|
|
20
|
+
set -e
|
|
21
|
+
|
|
22
|
+
# Find project root
|
|
23
|
+
find_project_root() {
|
|
24
|
+
local dir="$1"
|
|
25
|
+
while [ "$dir" != "/" ]; do
|
|
26
|
+
if [ -d "$dir/.specweave" ]; then
|
|
27
|
+
echo "$dir"
|
|
28
|
+
return 0
|
|
29
|
+
fi
|
|
30
|
+
dir="$(dirname "$dir")"
|
|
31
|
+
done
|
|
32
|
+
pwd
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
PROJECT_ROOT="$(find_project_root "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")"
|
|
36
|
+
cd "$PROJECT_ROOT" 2>/dev/null || true
|
|
37
|
+
|
|
38
|
+
# Configuration
|
|
39
|
+
LOGS_DIR=".specweave/logs"
|
|
40
|
+
DEBUG_LOG="$LOGS_DIR/hooks-debug.log"
|
|
41
|
+
|
|
42
|
+
mkdir -p "$LOGS_DIR" 2>/dev/null || true
|
|
43
|
+
|
|
44
|
+
# Arguments
|
|
45
|
+
INCREMENT_ID="$1"
|
|
46
|
+
NEW_STATUS="$2"
|
|
47
|
+
REASON="$3"
|
|
48
|
+
|
|
49
|
+
if [ -z "$INCREMENT_ID" ] || [ -z "$NEW_STATUS" ]; then
|
|
50
|
+
echo "Usage: $0 <incrementId> <newStatus> [reason]" >&2
|
|
51
|
+
echo "Example: $0 0015-hierarchical-sync paused 'Waiting for API'" >&2
|
|
52
|
+
exit 1
|
|
53
|
+
fi
|
|
54
|
+
|
|
55
|
+
echo "[$(date)] 📊 Status changed: $NEW_STATUS" >> "$DEBUG_LOG" 2>/dev/null || true
|
|
56
|
+
|
|
57
|
+
# Validate status
|
|
58
|
+
case "$NEW_STATUS" in
|
|
59
|
+
paused|resumed|abandoned)
|
|
60
|
+
;;
|
|
61
|
+
*)
|
|
62
|
+
echo "[$(date)] ⚠️ Unknown status: $NEW_STATUS (skipping sync)" >> "$DEBUG_LOG" 2>/dev/null || true
|
|
63
|
+
exit 0
|
|
64
|
+
;;
|
|
65
|
+
esac
|
|
66
|
+
|
|
67
|
+
# Check if GitHub CLI available
|
|
68
|
+
if ! command -v gh &> /dev/null; then
|
|
69
|
+
echo "[$(date)] ℹ️ GitHub CLI not found, skipping sync" >> "$DEBUG_LOG" 2>/dev/null || true
|
|
70
|
+
exit 0
|
|
71
|
+
fi
|
|
72
|
+
|
|
73
|
+
# Check if authenticated
|
|
74
|
+
if ! gh auth status &> /dev/null; then
|
|
75
|
+
echo "[$(date)] ℹ️ GitHub CLI not authenticated, skipping sync" >> "$DEBUG_LOG" 2>/dev/null || true
|
|
76
|
+
exit 0
|
|
77
|
+
fi
|
|
78
|
+
|
|
79
|
+
# Load metadata
|
|
80
|
+
METADATA_FILE=".specweave/increments/$INCREMENT_ID/metadata.json"
|
|
81
|
+
|
|
82
|
+
if [ ! -f "$METADATA_FILE" ]; then
|
|
83
|
+
echo "[$(date)] ℹ️ No metadata.json found, skipping sync" >> "$DEBUG_LOG" 2>/dev/null || true
|
|
84
|
+
exit 0
|
|
85
|
+
fi
|
|
86
|
+
|
|
87
|
+
# Extract GitHub issue number
|
|
88
|
+
GITHUB_ISSUE=$(jq -r '.github.issue // empty' "$METADATA_FILE" 2>/dev/null)
|
|
89
|
+
|
|
90
|
+
if [ -z "$GITHUB_ISSUE" ]; then
|
|
91
|
+
echo "[$(date)] ℹ️ No GitHub issue linked, skipping sync" >> "$DEBUG_LOG" 2>/dev/null || true
|
|
92
|
+
exit 0
|
|
93
|
+
fi
|
|
94
|
+
|
|
95
|
+
# Detect repository
|
|
96
|
+
GITHUB_REMOTE=$(git remote get-url origin 2>/dev/null || echo "")
|
|
97
|
+
REPO_MATCH=$(echo "$GITHUB_REMOTE" | grep -o 'github\.com[:/][^/]*/[^/]*' | sed 's/github\.com[:/]//')
|
|
98
|
+
|
|
99
|
+
if [ -z "$REPO_MATCH" ]; then
|
|
100
|
+
echo "[$(date)] ⚠️ Could not detect GitHub repository" >> "$DEBUG_LOG" 2>/dev/null || true
|
|
101
|
+
exit 0
|
|
102
|
+
fi
|
|
103
|
+
|
|
104
|
+
echo "[$(date)] 🔄 Posting status change to GitHub issue #$GITHUB_ISSUE" >> "$DEBUG_LOG" 2>/dev/null || true
|
|
105
|
+
|
|
106
|
+
# Build comment based on status
|
|
107
|
+
EMOJI=""
|
|
108
|
+
TITLE=""
|
|
109
|
+
case "$NEW_STATUS" in
|
|
110
|
+
paused)
|
|
111
|
+
EMOJI="⏸️"
|
|
112
|
+
TITLE="Increment Paused"
|
|
113
|
+
;;
|
|
114
|
+
resumed)
|
|
115
|
+
EMOJI="▶️"
|
|
116
|
+
TITLE="Increment Resumed"
|
|
117
|
+
;;
|
|
118
|
+
abandoned)
|
|
119
|
+
EMOJI="🗑️"
|
|
120
|
+
TITLE="Increment Abandoned"
|
|
121
|
+
;;
|
|
122
|
+
esac
|
|
123
|
+
|
|
124
|
+
TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
125
|
+
|
|
126
|
+
COMMENT="$EMOJI **$TITLE**
|
|
127
|
+
|
|
128
|
+
**Reason**: ${REASON:-Not specified}
|
|
129
|
+
|
|
130
|
+
**Timestamp**: $TIMESTAMP
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
🤖 Auto-updated by SpecWeave"
|
|
134
|
+
|
|
135
|
+
# Post comment
|
|
136
|
+
echo "$COMMENT" | gh issue comment "$GITHUB_ISSUE" --body-file - 2>&1 | tee -a "$DEBUG_LOG" >/dev/null || {
|
|
137
|
+
echo "[$(date)] ⚠️ Failed to post comment (non-blocking)" >> "$DEBUG_LOG" 2>/dev/null || true
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
echo "[$(date)] ✅ Status change synced to GitHub" >> "$DEBUG_LOG" 2>/dev/null || true
|
|
141
|
+
|
|
142
|
+
# Return success (non-blocking)
|
|
143
|
+
exit 0
|
|
@@ -70,18 +70,10 @@ async function syncLivingDocs(incrementId: string): Promise<void> {
|
|
|
70
70
|
console.log(`📄 Detected ${changedDocs.length} changed doc(s):`);
|
|
71
71
|
changedDocs.forEach((doc) => console.log(` - ${doc}`));
|
|
72
72
|
|
|
73
|
-
// 4.
|
|
74
|
-
|
|
75
|
-
// For now, just log what would happen
|
|
73
|
+
// 4. Sync to GitHub if configured
|
|
74
|
+
await syncToGitHub(incrementId, changedDocs);
|
|
76
75
|
|
|
77
|
-
console.log('
|
|
78
|
-
console.log(' (Actual sync command invocation to be implemented in future version)');
|
|
79
|
-
console.log(' Would invoke: /sync-docs update');
|
|
80
|
-
|
|
81
|
-
// Future implementation:
|
|
82
|
-
// await invokeSyncDocsCommand(incrementId);
|
|
83
|
-
|
|
84
|
-
console.log('✅ Living docs sync check complete\n');
|
|
76
|
+
console.log('✅ Living docs sync complete\n');
|
|
85
77
|
|
|
86
78
|
} catch (error) {
|
|
87
79
|
console.error('❌ Error syncing living docs:', error);
|
|
@@ -118,12 +110,61 @@ function detectChangedDocs(): string[] {
|
|
|
118
110
|
}
|
|
119
111
|
|
|
120
112
|
/**
|
|
121
|
-
*
|
|
122
|
-
* TODO: Implement actual command invocation
|
|
113
|
+
* Sync changed docs to GitHub
|
|
123
114
|
*/
|
|
124
|
-
async function
|
|
125
|
-
|
|
126
|
-
|
|
115
|
+
async function syncToGitHub(incrementId: string, changedDocs: string[]): Promise<void> {
|
|
116
|
+
try {
|
|
117
|
+
console.log('\n🔄 Syncing to GitHub...');
|
|
118
|
+
|
|
119
|
+
// Dynamic import to avoid circular dependencies
|
|
120
|
+
const {
|
|
121
|
+
loadIncrementMetadata,
|
|
122
|
+
detectRepo,
|
|
123
|
+
collectLivingDocs,
|
|
124
|
+
updateIssueLivingDocs,
|
|
125
|
+
postArchitectureComment
|
|
126
|
+
} = await import('../../../specweave-github/lib/github-issue-updater.js');
|
|
127
|
+
|
|
128
|
+
// 1. Load metadata
|
|
129
|
+
const metadata = await loadIncrementMetadata(incrementId);
|
|
130
|
+
if (!metadata?.github?.issue) {
|
|
131
|
+
console.log('ℹ️ No GitHub issue linked, skipping GitHub sync');
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// 2. Detect repository
|
|
136
|
+
const repoInfo = await detectRepo();
|
|
137
|
+
if (!repoInfo) {
|
|
138
|
+
console.log('⚠️ Could not detect GitHub repository, skipping GitHub sync');
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
const { owner, repo } = repoInfo;
|
|
143
|
+
const issueNumber = metadata.github.issue;
|
|
144
|
+
|
|
145
|
+
console.log(` Syncing to ${owner}/${repo}#${issueNumber}`);
|
|
146
|
+
|
|
147
|
+
// 3. Collect all living docs
|
|
148
|
+
const livingDocs = await collectLivingDocs(incrementId);
|
|
149
|
+
|
|
150
|
+
// 4. Update issue with living docs section
|
|
151
|
+
if (livingDocs.specs.length > 0 || livingDocs.architecture.length > 0 || livingDocs.diagrams.length > 0) {
|
|
152
|
+
await updateIssueLivingDocs(issueNumber, livingDocs, owner, repo);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// 5. Post comments for newly created architecture docs
|
|
156
|
+
for (const docPath of changedDocs) {
|
|
157
|
+
if (docPath.includes('/architecture/')) {
|
|
158
|
+
await postArchitectureComment(issueNumber, docPath, owner, repo);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
console.log('✅ GitHub sync complete');
|
|
163
|
+
|
|
164
|
+
} catch (error) {
|
|
165
|
+
console.error('❌ Error syncing to GitHub:', error);
|
|
166
|
+
console.error(' (Non-blocking - continuing...)');
|
|
167
|
+
}
|
|
127
168
|
}
|
|
128
169
|
|
|
129
170
|
// CLI entry point
|