specweave 0.17.12 â 0.17.15
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/CLAUDE.md +456 -0
- package/README.md +38 -1
- package/dist/src/cli/commands/cicd-monitor.d.ts +11 -0
- package/dist/src/cli/commands/cicd-monitor.d.ts.map +1 -0
- package/dist/src/cli/commands/cicd-monitor.js +154 -0
- package/dist/src/cli/commands/cicd-monitor.js.map +1 -0
- package/dist/src/cli/commands/validate-parent-repo.d.ts +8 -0
- package/dist/src/cli/commands/validate-parent-repo.d.ts.map +1 -0
- package/dist/src/cli/commands/validate-parent-repo.js +15 -0
- package/dist/src/cli/commands/validate-parent-repo.js.map +1 -0
- package/dist/src/cli/helpers/issue-tracker/types.d.ts +5 -0
- package/dist/src/cli/helpers/issue-tracker/types.d.ts.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/types.js.map +1 -1
- package/dist/src/core/cicd/config-loader.d.ts +21 -0
- package/dist/src/core/cicd/config-loader.d.ts.map +1 -0
- package/dist/src/core/cicd/config-loader.js +190 -0
- package/dist/src/core/cicd/config-loader.js.map +1 -0
- package/dist/src/core/cicd/index.d.ts +12 -0
- package/dist/src/core/cicd/index.d.ts.map +1 -0
- package/dist/src/core/cicd/index.js +18 -0
- package/dist/src/core/cicd/index.js.map +1 -0
- package/dist/src/core/cicd/monitor-service.d.ts +92 -0
- package/dist/src/core/cicd/monitor-service.d.ts.map +1 -0
- package/dist/src/core/cicd/monitor-service.js +132 -0
- package/dist/src/core/cicd/monitor-service.js.map +1 -0
- package/dist/src/core/cicd/notifier.d.ts +102 -0
- package/dist/src/core/cicd/notifier.d.ts.map +1 -0
- package/dist/src/core/cicd/notifier.js +184 -0
- package/dist/src/core/cicd/notifier.js.map +1 -0
- package/dist/src/core/cicd/parent-repo-validator.d.ts +42 -0
- package/dist/src/core/cicd/parent-repo-validator.d.ts.map +1 -0
- package/dist/src/core/cicd/parent-repo-validator.js +201 -0
- package/dist/src/core/cicd/parent-repo-validator.js.map +1 -0
- package/dist/src/core/cicd/state-manager.d.ts +79 -0
- package/dist/src/core/cicd/state-manager.d.ts.map +1 -0
- package/dist/src/core/cicd/state-manager.js +197 -0
- package/dist/src/core/cicd/state-manager.js.map +1 -0
- package/dist/src/core/cicd/types.d.ts +119 -0
- package/dist/src/core/cicd/types.d.ts.map +1 -0
- package/dist/src/core/cicd/types.js +18 -0
- package/dist/src/core/cicd/types.js.map +1 -0
- package/dist/src/core/cicd/workflow-monitor.d.ts +98 -0
- package/dist/src/core/cicd/workflow-monitor.d.ts.map +1 -0
- package/dist/src/core/cicd/workflow-monitor.js +215 -0
- package/dist/src/core/cicd/workflow-monitor.js.map +1 -0
- package/dist/src/core/repo-structure/repo-structure-manager.d.ts +3 -0
- package/dist/src/core/repo-structure/repo-structure-manager.d.ts.map +1 -1
- package/dist/src/core/repo-structure/repo-structure-manager.js +5 -2
- package/dist/src/core/repo-structure/repo-structure-manager.js.map +1 -1
- package/dist/src/core/spec-content-sync.d.ts.map +1 -1
- package/dist/src/core/spec-content-sync.js +14 -6
- package/dist/src/core/spec-content-sync.js.map +1 -1
- package/package.json +2 -2
- package/plugins/specweave/agents/pm/AGENT.md +170 -2
- package/plugins/specweave/hooks/post-increment-planning.sh +89 -26
- package/plugins/specweave/hooks/user-prompt-submit.sh +4 -4
- package/plugins/specweave/skills/increment-planner/SKILL.md +15 -10
- package/plugins/specweave-ado/lib/ado-project-detector.js +32 -5
- package/plugins/specweave-ado/lib/ado-project-detector.ts +44 -5
- package/src/templates/AGENTS.md.template +55 -1
- package/src/templates/CLAUDE.md.template +51 -1
- package/dist/locales/de/.gitkeep +0 -0
- package/dist/locales/de/cli.json +0 -108
- package/dist/locales/en/cli.json +0 -287
- package/dist/locales/en/errors.json +0 -7
- package/dist/locales/en/templates.json +0 -6
- package/dist/locales/es/.gitkeep +0 -0
- package/dist/locales/es/cli.json +0 -41
- package/dist/locales/fr/.gitkeep +0 -0
- package/dist/locales/fr/cli.json +0 -108
- package/dist/locales/ja/.gitkeep +0 -0
- package/dist/locales/ja/cli.json +0 -108
- package/dist/locales/ko/.gitkeep +0 -0
- package/dist/locales/ko/cli.json +0 -108
- package/dist/locales/pt/.gitkeep +0 -0
- package/dist/locales/pt/cli.json +0 -108
- package/dist/locales/ru/.gitkeep +0 -0
- package/dist/locales/ru/cli.json +0 -269
- package/dist/locales/zh/.gitkeep +0 -0
- package/dist/locales/zh/cli.json +0 -108
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cicd-monitor.js","sourceRoot":"","sources":["../../../../src/cli/commands/cicd-monitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-parent-repo.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/validate-parent-repo.ts"],"names":[],"mappings":";AAEA;;;;GAIG"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* CLI command to validate parent repo setup
|
|
4
|
+
*
|
|
5
|
+
* Usage: specweave validate-parent-repo
|
|
6
|
+
*/
|
|
7
|
+
import { validateParentRepoSetup, printValidationResult } from '../../core/cicd/parent-repo-validator';
|
|
8
|
+
function main() {
|
|
9
|
+
const projectRoot = process.cwd();
|
|
10
|
+
const result = validateParentRepoSetup(projectRoot);
|
|
11
|
+
printValidationResult(result);
|
|
12
|
+
process.exit(result.valid ? 0 : 1);
|
|
13
|
+
}
|
|
14
|
+
main();
|
|
15
|
+
//# sourceMappingURL=validate-parent-repo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-parent-repo.js","sourceRoot":"","sources":["../../../../src/cli/commands/validate-parent-repo.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAEvG,SAAS,IAAI;IACX,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,MAAM,MAAM,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC;IACpD,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE9B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,IAAI,EAAE,CAAC"}
|
|
@@ -52,6 +52,10 @@ export interface JiraCredentials {
|
|
|
52
52
|
components?: string[];
|
|
53
53
|
boards?: string[];
|
|
54
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Azure DevOps team mapping strategies
|
|
57
|
+
*/
|
|
58
|
+
export type AzureDevOpsStrategy = 'project-per-team' | 'area-path-based' | 'team-based';
|
|
55
59
|
/**
|
|
56
60
|
* Azure DevOps credentials
|
|
57
61
|
*/
|
|
@@ -61,6 +65,7 @@ export interface AzureDevOpsCredentials {
|
|
|
61
65
|
project: string;
|
|
62
66
|
team?: string;
|
|
63
67
|
teams?: string[];
|
|
68
|
+
strategy?: AzureDevOpsStrategy;
|
|
64
69
|
}
|
|
65
70
|
/**
|
|
66
71
|
* Union type for all credentials
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/issue-tracker/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,YAAY,CAAC;AAExD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,qBAAqB,GACrB,YAAY,GACZ,iBAAiB,CAAC;AAEtB;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,kBAAkB,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAGjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAGjB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,kBAAkB,GAClB,iBAAiB,GACjB,aAAa,CAAC;AAElB;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,gBAAgB,CAAC;IAC/B,QAAQ,CAAC,EAAE,YAAY,CAAC;IAGxB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAGpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAGtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/cli/helpers/issue-tracker/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/issue-tracker/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/cli/helpers/issue-tracker/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA6IH;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,YACE,OAAe,EACR,aAA4B;QAEnC,KAAK,CAAC,OAAO,CAAC,CAAC;QAFR,kBAAa,GAAb,aAAa,CAAe;QAGnC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CI/CD Monitor Configuration Loader
|
|
3
|
+
*
|
|
4
|
+
* Loads configuration from environment variables, .env files, and
|
|
5
|
+
* .specweave/config.json with validation and defaults.
|
|
6
|
+
*/
|
|
7
|
+
import { MonitorServiceConfig } from './monitor-service';
|
|
8
|
+
/**
|
|
9
|
+
* Load and validate configuration from all sources
|
|
10
|
+
*
|
|
11
|
+
* Priority: env > .specweave/config.json > defaults
|
|
12
|
+
*
|
|
13
|
+
* @param rootDir - Project root directory (optional)
|
|
14
|
+
* @returns Validated configuration
|
|
15
|
+
*/
|
|
16
|
+
export declare function loadConfig(rootDir?: string): Promise<MonitorServiceConfig>;
|
|
17
|
+
/**
|
|
18
|
+
* Create example configuration file
|
|
19
|
+
*/
|
|
20
|
+
export declare function createExampleConfig(rootDir?: string): Promise<void>;
|
|
21
|
+
//# sourceMappingURL=config-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../../../src/core/cicd/config-loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AA8LzD;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,OAAO,GAAE,MAAsB,GAC9B,OAAO,CAAC,oBAAoB,CAAC,CAgB/B;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,GAAE,MAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BxF"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CI/CD Monitor Configuration Loader
|
|
3
|
+
*
|
|
4
|
+
* Loads configuration from environment variables, .env files, and
|
|
5
|
+
* .specweave/config.json with validation and defaults.
|
|
6
|
+
*/
|
|
7
|
+
import * as fs from 'fs-extra';
|
|
8
|
+
import * as path from 'path';
|
|
9
|
+
/**
|
|
10
|
+
* Load configuration from environment variables
|
|
11
|
+
*/
|
|
12
|
+
function loadFromEnv() {
|
|
13
|
+
const token = process.env.GITHUB_TOKEN;
|
|
14
|
+
const owner = process.env.GITHUB_OWNER;
|
|
15
|
+
const repo = process.env.GITHUB_REPO;
|
|
16
|
+
const pollInterval = process.env.CICD_POLL_INTERVAL
|
|
17
|
+
? parseInt(process.env.CICD_POLL_INTERVAL, 10)
|
|
18
|
+
: undefined;
|
|
19
|
+
const channels = process.env.CICD_NOTIFICATION_CHANNELS
|
|
20
|
+
? process.env.CICD_NOTIFICATION_CHANNELS.split(',').map((c) => c.trim())
|
|
21
|
+
: undefined;
|
|
22
|
+
const webhookUrl = process.env.CICD_WEBHOOK_URL;
|
|
23
|
+
const autoNotify = process.env.CICD_AUTO_NOTIFY === 'true';
|
|
24
|
+
const config = {};
|
|
25
|
+
if (token || owner || repo || pollInterval) {
|
|
26
|
+
config.monitor = {
|
|
27
|
+
token: token || '',
|
|
28
|
+
owner: owner || '',
|
|
29
|
+
repo: repo || '',
|
|
30
|
+
pollInterval: pollInterval || 60000
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
if (channels || webhookUrl) {
|
|
34
|
+
config.notifier = {
|
|
35
|
+
channels: channels || ['console'],
|
|
36
|
+
webhookUrl,
|
|
37
|
+
logFile: undefined
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
if (autoNotify !== undefined) {
|
|
41
|
+
config.autoNotify = autoNotify;
|
|
42
|
+
}
|
|
43
|
+
return config;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Load configuration from .specweave/config.json
|
|
47
|
+
*/
|
|
48
|
+
async function loadFromConfigFile(rootDir) {
|
|
49
|
+
const configPath = path.join(rootDir, '.specweave/config.json');
|
|
50
|
+
if (!(await fs.pathExists(configPath))) {
|
|
51
|
+
return {};
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
const content = await fs.readFile(configPath, 'utf-8');
|
|
55
|
+
const rawConfig = JSON.parse(content);
|
|
56
|
+
const config = {};
|
|
57
|
+
if (rawConfig.cicd?.github) {
|
|
58
|
+
config.monitor = {
|
|
59
|
+
token: rawConfig.cicd.github.token || '',
|
|
60
|
+
owner: rawConfig.cicd.github.owner || '',
|
|
61
|
+
repo: rawConfig.cicd.github.repo || '',
|
|
62
|
+
pollInterval: rawConfig.cicd.monitoring?.pollInterval || 60000
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
if (rawConfig.cicd?.notifications) {
|
|
66
|
+
config.notifier = {
|
|
67
|
+
channels: (rawConfig.cicd.notifications.channels || ['console']),
|
|
68
|
+
webhookUrl: rawConfig.cicd.notifications.webhookUrl,
|
|
69
|
+
logFile: rawConfig.cicd.notifications.logFile
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
if (rawConfig.cicd?.monitoring?.autoNotify !== undefined) {
|
|
73
|
+
config.autoNotify = rawConfig.cicd.monitoring.autoNotify;
|
|
74
|
+
}
|
|
75
|
+
return config;
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
console.warn('Failed to load .specweave/config.json:', error);
|
|
79
|
+
return {};
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Get default configuration
|
|
84
|
+
*/
|
|
85
|
+
function getDefaults() {
|
|
86
|
+
return {
|
|
87
|
+
monitor: {
|
|
88
|
+
token: '',
|
|
89
|
+
owner: '',
|
|
90
|
+
repo: '',
|
|
91
|
+
pollInterval: 60000,
|
|
92
|
+
debug: false
|
|
93
|
+
},
|
|
94
|
+
notifier: {
|
|
95
|
+
channels: ['console', 'file'],
|
|
96
|
+
logFile: '.specweave/logs/cicd-notifications.log',
|
|
97
|
+
webhookUrl: undefined,
|
|
98
|
+
debug: false
|
|
99
|
+
},
|
|
100
|
+
rootDir: process.cwd(),
|
|
101
|
+
autoNotify: true
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Merge configurations with priority:
|
|
106
|
+
* env > configFile > defaults
|
|
107
|
+
*/
|
|
108
|
+
function mergeConfigs(defaults, configFile, env) {
|
|
109
|
+
return {
|
|
110
|
+
monitor: {
|
|
111
|
+
...defaults.monitor,
|
|
112
|
+
...(configFile.monitor || {}),
|
|
113
|
+
...(env.monitor || {})
|
|
114
|
+
},
|
|
115
|
+
notifier: {
|
|
116
|
+
...defaults.notifier,
|
|
117
|
+
...(configFile.notifier || {}),
|
|
118
|
+
...(env.notifier || {})
|
|
119
|
+
},
|
|
120
|
+
rootDir: env.rootDir || configFile.rootDir || defaults.rootDir,
|
|
121
|
+
autoNotify: env.autoNotify ?? configFile.autoNotify ?? defaults.autoNotify
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Validate configuration
|
|
126
|
+
*/
|
|
127
|
+
function validateConfig(config) {
|
|
128
|
+
if (!config.monitor.token) {
|
|
129
|
+
throw new Error('GitHub token is required (set GITHUB_TOKEN or add to .specweave/config.json)');
|
|
130
|
+
}
|
|
131
|
+
if (!config.monitor.owner || !config.monitor.repo) {
|
|
132
|
+
throw new Error('GitHub owner and repo are required (set GITHUB_OWNER/GITHUB_REPO or add to .specweave/config.json)');
|
|
133
|
+
}
|
|
134
|
+
if (config.monitor.pollInterval < 10000) {
|
|
135
|
+
throw new Error('Poll interval must be at least 10 seconds (10000ms) to avoid rate limiting');
|
|
136
|
+
}
|
|
137
|
+
if (config.notifier.channels.length === 0) {
|
|
138
|
+
throw new Error('At least one notification channel must be configured');
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Load and validate configuration from all sources
|
|
143
|
+
*
|
|
144
|
+
* Priority: env > .specweave/config.json > defaults
|
|
145
|
+
*
|
|
146
|
+
* @param rootDir - Project root directory (optional)
|
|
147
|
+
* @returns Validated configuration
|
|
148
|
+
*/
|
|
149
|
+
export async function loadConfig(rootDir = process.cwd()) {
|
|
150
|
+
// Load from all sources
|
|
151
|
+
const defaults = getDefaults();
|
|
152
|
+
const configFile = await loadFromConfigFile(rootDir);
|
|
153
|
+
const env = loadFromEnv();
|
|
154
|
+
// Merge with priority
|
|
155
|
+
const config = mergeConfigs(defaults, configFile, env);
|
|
156
|
+
// Update rootDir
|
|
157
|
+
config.rootDir = rootDir;
|
|
158
|
+
// Validate
|
|
159
|
+
validateConfig(config);
|
|
160
|
+
return config;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Create example configuration file
|
|
164
|
+
*/
|
|
165
|
+
export async function createExampleConfig(rootDir = process.cwd()) {
|
|
166
|
+
const configPath = path.join(rootDir, '.specweave/config.json');
|
|
167
|
+
const exampleConfig = {
|
|
168
|
+
cicd: {
|
|
169
|
+
github: {
|
|
170
|
+
token: '${GITHUB_TOKEN}',
|
|
171
|
+
owner: 'your-github-username',
|
|
172
|
+
repo: 'your-repo-name'
|
|
173
|
+
},
|
|
174
|
+
monitoring: {
|
|
175
|
+
pollInterval: 60000,
|
|
176
|
+
autoNotify: true
|
|
177
|
+
},
|
|
178
|
+
notifications: {
|
|
179
|
+
channels: ['console', 'file'],
|
|
180
|
+
webhookUrl: 'https://your-webhook-url.com/cicd-alerts',
|
|
181
|
+
logFile: '.specweave/logs/cicd-notifications.log'
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
await fs.ensureDir(path.dirname(configPath));
|
|
186
|
+
await fs.writeFile(configPath, JSON.stringify(exampleConfig, null, 2), 'utf-8');
|
|
187
|
+
console.log(`â
Created example config at ${configPath}`);
|
|
188
|
+
console.log(' Edit this file and set your GitHub token, owner, and repo');
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=config-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../../../src/core/cicd/config-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CI/CD Monitoring Module
|
|
3
|
+
*
|
|
4
|
+
* Automated workflow failure detection and auto-fix system for GitHub Actions.
|
|
5
|
+
*/
|
|
6
|
+
export * from './types';
|
|
7
|
+
export { StateManager } from './state-manager';
|
|
8
|
+
export { WorkflowMonitor, MonitorConfig, PollResult } from './workflow-monitor';
|
|
9
|
+
export { Notifier, NotifierConfig, Notification } from './notifier';
|
|
10
|
+
export { MonitorService, MonitorServiceConfig, ServiceStatus } from './monitor-service';
|
|
11
|
+
export { loadConfig, createExampleConfig } from './config-loader';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/cicd/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhF,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGpE,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGxF,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CI/CD Monitoring Module
|
|
3
|
+
*
|
|
4
|
+
* Automated workflow failure detection and auto-fix system for GitHub Actions.
|
|
5
|
+
*/
|
|
6
|
+
// Core types
|
|
7
|
+
export * from './types';
|
|
8
|
+
// State management
|
|
9
|
+
export { StateManager } from './state-manager';
|
|
10
|
+
// Workflow monitoring
|
|
11
|
+
export { WorkflowMonitor } from './workflow-monitor';
|
|
12
|
+
// Notifications
|
|
13
|
+
export { Notifier } from './notifier';
|
|
14
|
+
// Service orchestration
|
|
15
|
+
export { MonitorService } from './monitor-service';
|
|
16
|
+
// Configuration loading
|
|
17
|
+
export { loadConfig, createExampleConfig } from './config-loader';
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/cicd/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,aAAa;AACb,cAAc,SAAS,CAAC;AAExB,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,sBAAsB;AACtB,OAAO,EAAE,eAAe,EAA6B,MAAM,oBAAoB,CAAC;AAEhF,gBAAgB;AAChB,OAAO,EAAE,QAAQ,EAAgC,MAAM,YAAY,CAAC;AAEpE,wBAAwB;AACxB,OAAO,EAAE,cAAc,EAAuC,MAAM,mBAAmB,CAAC;AAExF,wBAAwB;AACxB,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CI/CD Monitor Service
|
|
3
|
+
*
|
|
4
|
+
* High-level orchestration service that coordinates the workflow monitor,
|
|
5
|
+
* state manager, and notifier for end-to-end failure detection and notification.
|
|
6
|
+
*/
|
|
7
|
+
import { MonitorConfig } from './workflow-monitor';
|
|
8
|
+
import { NotifierConfig } from './notifier';
|
|
9
|
+
import { FailureRecord } from './types';
|
|
10
|
+
/**
|
|
11
|
+
* Service configuration
|
|
12
|
+
*/
|
|
13
|
+
export interface MonitorServiceConfig {
|
|
14
|
+
/** Monitor configuration */
|
|
15
|
+
monitor: MonitorConfig;
|
|
16
|
+
/** Notifier configuration */
|
|
17
|
+
notifier: NotifierConfig;
|
|
18
|
+
/** State manager root directory (optional) */
|
|
19
|
+
rootDir?: string;
|
|
20
|
+
/** Auto-notify on failure detection */
|
|
21
|
+
autoNotify?: boolean;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Service status
|
|
25
|
+
*/
|
|
26
|
+
export interface ServiceStatus {
|
|
27
|
+
/** Is service running */
|
|
28
|
+
running: boolean;
|
|
29
|
+
/** Monitor uptime (milliseconds) */
|
|
30
|
+
uptime: number;
|
|
31
|
+
/** Total failures detected */
|
|
32
|
+
totalFailures: number;
|
|
33
|
+
/** Unprocessed failures */
|
|
34
|
+
unprocessedFailures: number;
|
|
35
|
+
/** Last poll timestamp */
|
|
36
|
+
lastPoll: string | null;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* MonitorService - Orchestrates CI/CD monitoring components
|
|
40
|
+
*
|
|
41
|
+
* Features:
|
|
42
|
+
* - Coordinates WorkflowMonitor, StateManager, and Notifier
|
|
43
|
+
* - Automatic failure notifications
|
|
44
|
+
* - Service status and health checks
|
|
45
|
+
* - Graceful startup and shutdown
|
|
46
|
+
* - Event-driven architecture
|
|
47
|
+
*/
|
|
48
|
+
export declare class MonitorService {
|
|
49
|
+
private config;
|
|
50
|
+
private monitor;
|
|
51
|
+
private stateManager;
|
|
52
|
+
private notifier;
|
|
53
|
+
private startTime;
|
|
54
|
+
private pollCallback;
|
|
55
|
+
/**
|
|
56
|
+
* Create monitor service
|
|
57
|
+
*
|
|
58
|
+
* @param config - Service configuration
|
|
59
|
+
*/
|
|
60
|
+
constructor(config: MonitorServiceConfig);
|
|
61
|
+
/**
|
|
62
|
+
* Start service
|
|
63
|
+
*/
|
|
64
|
+
start(): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Stop service
|
|
67
|
+
*/
|
|
68
|
+
stop(): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Get service status
|
|
71
|
+
*/
|
|
72
|
+
getStatus(): Promise<ServiceStatus>;
|
|
73
|
+
/**
|
|
74
|
+
* Check for new failures and send notifications
|
|
75
|
+
*/
|
|
76
|
+
private checkForNewFailures;
|
|
77
|
+
/**
|
|
78
|
+
* Manually trigger notification for a failure
|
|
79
|
+
*
|
|
80
|
+
* @param runId - Workflow run ID
|
|
81
|
+
*/
|
|
82
|
+
notifyFailure(runId: number): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* Get all unprocessed failures
|
|
85
|
+
*/
|
|
86
|
+
getUnprocessedFailures(): Promise<FailureRecord[]>;
|
|
87
|
+
/**
|
|
88
|
+
* Mark failure as processed
|
|
89
|
+
*/
|
|
90
|
+
markProcessed(runId: number): Promise<void>;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=monitor-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monitor-service.d.ts","sourceRoot":"","sources":["../../../../src/core/cicd/monitor-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAmB,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEpE,OAAO,EAAY,cAAc,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,4BAA4B;IAC5B,OAAO,EAAE,aAAa,CAAC;IAEvB,6BAA6B;IAC7B,QAAQ,EAAE,cAAc,CAAC;IAEzB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,uCAAuC;IACvC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,yBAAyB;IACzB,OAAO,EAAE,OAAO,CAAC;IAEjB,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IAEf,8BAA8B;IAC9B,aAAa,EAAE,MAAM,CAAC;IAEtB,2BAA2B;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAE5B,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,YAAY,CAAsC;IAE1D;;;;OAIG;gBACS,MAAM,EAAE,oBAAoB;IAaxC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAiB3B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC;IAazC;;OAEG;YACW,mBAAmB;IAYjC;;;;OAIG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWjD;;OAEG;IACG,sBAAsB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAIxD;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGlD"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CI/CD Monitor Service
|
|
3
|
+
*
|
|
4
|
+
* High-level orchestration service that coordinates the workflow monitor,
|
|
5
|
+
* state manager, and notifier for end-to-end failure detection and notification.
|
|
6
|
+
*/
|
|
7
|
+
import { WorkflowMonitor } from './workflow-monitor';
|
|
8
|
+
import { StateManager } from './state-manager';
|
|
9
|
+
import { Notifier } from './notifier';
|
|
10
|
+
/**
|
|
11
|
+
* MonitorService - Orchestrates CI/CD monitoring components
|
|
12
|
+
*
|
|
13
|
+
* Features:
|
|
14
|
+
* - Coordinates WorkflowMonitor, StateManager, and Notifier
|
|
15
|
+
* - Automatic failure notifications
|
|
16
|
+
* - Service status and health checks
|
|
17
|
+
* - Graceful startup and shutdown
|
|
18
|
+
* - Event-driven architecture
|
|
19
|
+
*/
|
|
20
|
+
export class MonitorService {
|
|
21
|
+
/**
|
|
22
|
+
* Create monitor service
|
|
23
|
+
*
|
|
24
|
+
* @param config - Service configuration
|
|
25
|
+
*/
|
|
26
|
+
constructor(config) {
|
|
27
|
+
this.startTime = null;
|
|
28
|
+
this.pollCallback = null;
|
|
29
|
+
this.config = {
|
|
30
|
+
...config,
|
|
31
|
+
rootDir: config.rootDir ?? process.cwd(),
|
|
32
|
+
autoNotify: config.autoNotify ?? true
|
|
33
|
+
};
|
|
34
|
+
// Initialize components
|
|
35
|
+
this.stateManager = new StateManager(this.config.rootDir);
|
|
36
|
+
this.notifier = new Notifier(this.config.notifier);
|
|
37
|
+
this.monitor = new WorkflowMonitor(this.config.monitor, this.stateManager);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Start service
|
|
41
|
+
*/
|
|
42
|
+
async start() {
|
|
43
|
+
if (this.monitor.isRunning()) {
|
|
44
|
+
throw new Error('Service already running');
|
|
45
|
+
}
|
|
46
|
+
console.log('đ Starting CI/CD Monitor Service...');
|
|
47
|
+
// Record start time
|
|
48
|
+
this.startTime = Date.now();
|
|
49
|
+
// Set up poll callback for notifications
|
|
50
|
+
if (this.config.autoNotify) {
|
|
51
|
+
this.pollCallback = async () => {
|
|
52
|
+
await this.checkForNewFailures();
|
|
53
|
+
};
|
|
54
|
+
// Register callback (executed after each poll)
|
|
55
|
+
// Note: WorkflowMonitor doesn't have callback support yet, but this demonstrates the pattern
|
|
56
|
+
// In production, we'd extend WorkflowMonitor to support event listeners
|
|
57
|
+
}
|
|
58
|
+
// Start monitor
|
|
59
|
+
this.monitor.start();
|
|
60
|
+
console.log('â
Service started');
|
|
61
|
+
console.log(` Repository: ${this.config.monitor.owner}/${this.config.monitor.repo}`);
|
|
62
|
+
console.log(` Poll interval: ${this.config.monitor.pollInterval}ms`);
|
|
63
|
+
console.log(` Notifications: ${this.config.notifier.channels.join(', ')}`);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Stop service
|
|
67
|
+
*/
|
|
68
|
+
async stop() {
|
|
69
|
+
if (!this.monitor.isRunning()) {
|
|
70
|
+
throw new Error('Service not running');
|
|
71
|
+
}
|
|
72
|
+
console.log('âšī¸ Stopping CI/CD Monitor Service...');
|
|
73
|
+
// Stop monitor
|
|
74
|
+
this.monitor.stop();
|
|
75
|
+
// Clear start time
|
|
76
|
+
this.startTime = null;
|
|
77
|
+
this.pollCallback = null;
|
|
78
|
+
console.log('â
Service stopped');
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Get service status
|
|
82
|
+
*/
|
|
83
|
+
async getStatus() {
|
|
84
|
+
const state = await this.stateManager.loadState();
|
|
85
|
+
const unprocessed = await this.stateManager.getUnprocessedFailures();
|
|
86
|
+
return {
|
|
87
|
+
running: this.monitor.isRunning(),
|
|
88
|
+
uptime: this.startTime ? Date.now() - this.startTime : 0,
|
|
89
|
+
totalFailures: state.totalFailures,
|
|
90
|
+
unprocessedFailures: unprocessed.length,
|
|
91
|
+
lastPoll: state.lastPoll
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Check for new failures and send notifications
|
|
96
|
+
*/
|
|
97
|
+
async checkForNewFailures() {
|
|
98
|
+
const unprocessed = await this.stateManager.getUnprocessedFailures();
|
|
99
|
+
for (const failure of unprocessed) {
|
|
100
|
+
// Send notification
|
|
101
|
+
await this.notifier.notifyFailureDetected(failure);
|
|
102
|
+
// Mark as processed (notification sent)
|
|
103
|
+
await this.stateManager.markProcessed(failure.runId);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Manually trigger notification for a failure
|
|
108
|
+
*
|
|
109
|
+
* @param runId - Workflow run ID
|
|
110
|
+
*/
|
|
111
|
+
async notifyFailure(runId) {
|
|
112
|
+
const state = await this.stateManager.loadState();
|
|
113
|
+
const failure = state.failures[runId];
|
|
114
|
+
if (!failure) {
|
|
115
|
+
throw new Error(`Failure not found: ${runId}`);
|
|
116
|
+
}
|
|
117
|
+
await this.notifier.notifyFailureDetected(failure);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Get all unprocessed failures
|
|
121
|
+
*/
|
|
122
|
+
async getUnprocessedFailures() {
|
|
123
|
+
return this.stateManager.getUnprocessedFailures();
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Mark failure as processed
|
|
127
|
+
*/
|
|
128
|
+
async markProcessed(runId) {
|
|
129
|
+
await this.stateManager.markProcessed(runId);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=monitor-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monitor-service.js","sourceRoot":"","sources":["../../../../src/core/cicd/monitor-service.ts"],"names":[],"mappings":"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"}
|