@intentsolutions/blueprint 2.2.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,279 @@
1
+ /**
2
+ * GitHub API Client
3
+ * Handles all GitHub API interactions using Octokit
4
+ */
5
+ import { Octokit } from '@octokit/rest';
6
+ import { CATEGORY_LABELS, PRIORITY_LABELS, } from './types.js';
7
+ export class GitHubClient {
8
+ octokit;
9
+ owner;
10
+ repo;
11
+ constructor(config) {
12
+ this.octokit = new Octokit({
13
+ auth: config.token,
14
+ baseUrl: config.baseUrl,
15
+ });
16
+ this.owner = config.owner;
17
+ this.repo = config.repo;
18
+ }
19
+ /**
20
+ * Verify connection and permissions
21
+ */
22
+ async verify() {
23
+ try {
24
+ const { data } = await this.octokit.repos.get({
25
+ owner: this.owner,
26
+ repo: this.repo,
27
+ });
28
+ if (!data.permissions?.push) {
29
+ return { valid: false, error: 'No push access to repository' };
30
+ }
31
+ return { valid: true };
32
+ }
33
+ catch (error) {
34
+ return {
35
+ valid: false,
36
+ error: error instanceof Error ? error.message : 'Unknown error',
37
+ };
38
+ }
39
+ }
40
+ /**
41
+ * Create or update labels
42
+ */
43
+ async ensureLabels(labels) {
44
+ let created = 0;
45
+ let updated = 0;
46
+ for (const label of labels) {
47
+ try {
48
+ await this.octokit.issues.createLabel({
49
+ owner: this.owner,
50
+ repo: this.repo,
51
+ name: label.name,
52
+ color: label.color,
53
+ description: label.description,
54
+ });
55
+ created++;
56
+ }
57
+ catch (error) {
58
+ // Label might already exist, try to update
59
+ if (error.status === 422) {
60
+ try {
61
+ await this.octokit.issues.updateLabel({
62
+ owner: this.owner,
63
+ repo: this.repo,
64
+ name: label.name,
65
+ color: label.color,
66
+ description: label.description,
67
+ });
68
+ updated++;
69
+ }
70
+ catch {
71
+ // Ignore update errors
72
+ }
73
+ }
74
+ }
75
+ }
76
+ return { created, updated };
77
+ }
78
+ /**
79
+ * Create a milestone
80
+ */
81
+ async createMilestone(milestone) {
82
+ try {
83
+ const { data } = await this.octokit.issues.createMilestone({
84
+ owner: this.owner,
85
+ repo: this.repo,
86
+ title: milestone.title,
87
+ description: milestone.description,
88
+ due_on: milestone.dueOn,
89
+ state: milestone.state || 'open',
90
+ });
91
+ return data.number;
92
+ }
93
+ catch (error) {
94
+ // Milestone might already exist
95
+ if (error.status === 422) {
96
+ const existing = await this.findMilestone(milestone.title);
97
+ return existing;
98
+ }
99
+ return null;
100
+ }
101
+ }
102
+ /**
103
+ * Find milestone by title
104
+ */
105
+ async findMilestone(title) {
106
+ try {
107
+ const { data } = await this.octokit.issues.listMilestones({
108
+ owner: this.owner,
109
+ repo: this.repo,
110
+ state: 'all',
111
+ });
112
+ const milestone = data.find((m) => m.title === title);
113
+ return milestone?.number || null;
114
+ }
115
+ catch {
116
+ return null;
117
+ }
118
+ }
119
+ /**
120
+ * Create an issue
121
+ */
122
+ async createIssue(issue) {
123
+ try {
124
+ const { data } = await this.octokit.issues.create({
125
+ owner: this.owner,
126
+ repo: this.repo,
127
+ title: issue.title,
128
+ body: issue.body,
129
+ labels: issue.labels,
130
+ milestone: issue.milestone,
131
+ assignees: issue.assignees,
132
+ });
133
+ return { number: data.number, url: data.html_url };
134
+ }
135
+ catch {
136
+ return null;
137
+ }
138
+ }
139
+ /**
140
+ * Create multiple issues from task breakdown
141
+ */
142
+ async createIssuesFromTasks(tasks, options = {}) {
143
+ const results = [];
144
+ for (const task of tasks) {
145
+ const labels = ['blueprint', 'task'];
146
+ // Add priority label
147
+ if (task.priority && PRIORITY_LABELS[task.priority]) {
148
+ labels.push(PRIORITY_LABELS[task.priority].name);
149
+ }
150
+ // Add category label
151
+ if (task.category && CATEGORY_LABELS[task.category]) {
152
+ labels.push(CATEGORY_LABELS[task.category].name);
153
+ }
154
+ // Add prefix if specified
155
+ if (options.labelPrefix) {
156
+ labels.push(`${options.labelPrefix}:task`);
157
+ }
158
+ const body = this.formatTaskBody(task);
159
+ const result = await this.createIssue({
160
+ title: task.title,
161
+ body,
162
+ labels,
163
+ milestone: options.milestoneId,
164
+ });
165
+ if (result) {
166
+ results.push({ ...result, title: task.title });
167
+ }
168
+ }
169
+ return results;
170
+ }
171
+ /**
172
+ * Format task body for GitHub issue
173
+ */
174
+ formatTaskBody(task) {
175
+ const lines = [];
176
+ lines.push('## Description');
177
+ lines.push(task.description);
178
+ lines.push('');
179
+ if (task.estimatedHours) {
180
+ lines.push(`**Estimated Time:** ${task.estimatedHours} hours`);
181
+ lines.push('');
182
+ }
183
+ if (task.dependencies && task.dependencies.length > 0) {
184
+ lines.push('## Dependencies');
185
+ for (const dep of task.dependencies) {
186
+ lines.push(`- [ ] ${dep}`);
187
+ }
188
+ lines.push('');
189
+ }
190
+ if (task.acceptanceCriteria && task.acceptanceCriteria.length > 0) {
191
+ lines.push('## Acceptance Criteria');
192
+ for (const ac of task.acceptanceCriteria) {
193
+ lines.push(`- [ ] ${ac}`);
194
+ }
195
+ lines.push('');
196
+ }
197
+ lines.push('---');
198
+ lines.push('*Generated by [Intent Blueprint](https://github.com/intent-solutions-io/intent-blueprint-docs)*');
199
+ return lines.join('\n');
200
+ }
201
+ /**
202
+ * Create milestones from release phases
203
+ */
204
+ async createMilestonesFromPhases(phases) {
205
+ const results = [];
206
+ for (const phase of phases) {
207
+ const milestoneId = await this.createMilestone({
208
+ title: phase.name,
209
+ description: phase.description,
210
+ dueOn: phase.endDate,
211
+ });
212
+ if (milestoneId) {
213
+ results.push({ number: milestoneId, title: phase.name });
214
+ }
215
+ }
216
+ return results;
217
+ }
218
+ /**
219
+ * Create PR templates
220
+ */
221
+ async createPRTemplates(templates) {
222
+ let created = 0;
223
+ for (const template of templates) {
224
+ try {
225
+ const path = template.name === 'default'
226
+ ? '.github/PULL_REQUEST_TEMPLATE.md'
227
+ : `.github/PULL_REQUEST_TEMPLATE/${template.name}.md`;
228
+ // Check if file exists
229
+ let sha;
230
+ try {
231
+ const { data } = await this.octokit.repos.getContent({
232
+ owner: this.owner,
233
+ repo: this.repo,
234
+ path,
235
+ });
236
+ if ('sha' in data) {
237
+ sha = data.sha;
238
+ }
239
+ }
240
+ catch {
241
+ // File doesn't exist, that's fine
242
+ }
243
+ await this.octokit.repos.createOrUpdateFileContents({
244
+ owner: this.owner,
245
+ repo: this.repo,
246
+ path,
247
+ message: `docs: add ${template.name} PR template (Intent Blueprint)`,
248
+ content: Buffer.from(template.content).toString('base64'),
249
+ sha,
250
+ });
251
+ created++;
252
+ }
253
+ catch {
254
+ // Ignore errors for individual templates
255
+ }
256
+ }
257
+ return created;
258
+ }
259
+ /**
260
+ * Get repository info
261
+ */
262
+ async getRepoInfo() {
263
+ try {
264
+ const { data } = await this.octokit.repos.get({
265
+ owner: this.owner,
266
+ repo: this.repo,
267
+ });
268
+ return {
269
+ name: data.full_name,
270
+ url: data.html_url,
271
+ defaultBranch: data.default_branch,
272
+ };
273
+ }
274
+ catch {
275
+ return null;
276
+ }
277
+ }
278
+ }
279
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/integrations/github/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAWxC,OAAO,EACL,eAAe,EACf,eAAe,GAEhB,MAAM,YAAY,CAAC;AAEpB,MAAM,OAAO,YAAY;IACf,OAAO,CAAU;IACjB,KAAK,CAAS;IACd,IAAI,CAAS;IAErB,YAAY,MAAoB;QAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC;YACzB,IAAI,EAAE,MAAM,CAAC,KAAK;YAClB,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;gBAC5C,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;gBAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC;YACjE,CAAC;YAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAChE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,MAAqB;QACtC,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;oBACpC,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,WAAW,EAAE,KAAK,CAAC,WAAW;iBAC/B,CAAC,CAAC;gBACH,OAAO,EAAE,CAAC;YACZ,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,2CAA2C;gBAC3C,IAAK,KAA6B,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBAClD,IAAI,CAAC;wBACH,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC;4BACpC,KAAK,EAAE,IAAI,CAAC,KAAK;4BACjB,IAAI,EAAE,IAAI,CAAC,IAAI;4BACf,IAAI,EAAE,KAAK,CAAC,IAAI;4BAChB,KAAK,EAAE,KAAK,CAAC,KAAK;4BAClB,WAAW,EAAE,KAAK,CAAC,WAAW;yBAC/B,CAAC,CAAC;wBACH,OAAO,EAAE,CAAC;oBACZ,CAAC;oBAAC,MAAM,CAAC;wBACP,uBAAuB;oBACzB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe,CAAC,SAA0B;QAC9C,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC;gBACzD,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,WAAW,EAAE,SAAS,CAAC,WAAW;gBAClC,MAAM,EAAE,SAAS,CAAC,KAAK;gBACvB,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,MAAM;aACjC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,gCAAgC;YAChC,IAAK,KAA6B,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAClD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC3D,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,KAAa;QAC/B,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;gBACxD,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;YACtD,OAAO,SAAS,EAAE,MAAM,IAAI,IAAI,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,KAAkB;QAClC,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;gBAChD,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;aAC3B,CAAC,CAAC;YACH,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB,CACzB,KAAsB,EACtB,UAA0D,EAAE;QAE5D,MAAM,OAAO,GAA0D,EAAE,CAAC;QAE1E,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAErC,qBAAqB;YACrB,IAAI,IAAI,CAAC,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpD,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;YACnD,CAAC;YAED,qBAAqB;YACrB,IAAI,IAAI,CAAC,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpD,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;YACnD,CAAC;YAED,0BAA0B;YAC1B,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,WAAW,OAAO,CAAC,CAAC;YAC7C,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAEvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC;gBACpC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI;gBACJ,MAAM;gBACN,SAAS,EAAE,OAAO,CAAC,WAAW;aAC/B,CAAC,CAAC;YAEH,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,IAAmB;QACxC,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,cAAc,QAAQ,CAAC,CAAC;YAC/D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtD,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC9B,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;YAC7B,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClE,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACrC,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACzC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC5B,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,iGAAiG,CAAC,CAAC;QAE9G,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,0BAA0B,CAC9B,MAAsB;QAEtB,MAAM,OAAO,GAA6C,EAAE,CAAC;QAE7D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC;gBAC7C,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,KAAK,EAAE,KAAK,CAAC,OAAO;aACrB,CAAC,CAAC;YAEH,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,SAAmD;QACzE,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,KAAK,SAAS;oBACtC,CAAC,CAAC,kCAAkC;oBACpC,CAAC,CAAC,iCAAiC,QAAQ,CAAC,IAAI,KAAK,CAAC;gBAExD,uBAAuB;gBACvB,IAAI,GAAuB,CAAC;gBAC5B,IAAI,CAAC;oBACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;wBACnD,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,IAAI;qBACL,CAAC,CAAC;oBACH,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;wBAClB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;oBACjB,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,kCAAkC;gBACpC,CAAC;gBAED,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC;oBAClD,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,IAAI;oBACJ,OAAO,EAAE,aAAa,QAAQ,CAAC,IAAI,iCAAiC;oBACpE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBACzD,GAAG;iBACJ,CAAC,CAAC;gBAEH,OAAO,EAAE,CAAC;YACZ,CAAC;YAAC,MAAM,CAAC;gBACP,yCAAyC;YAC3C,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;gBAC5C,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB,CAAC,CAAC;YAEH,OAAO;gBACL,IAAI,EAAE,IAAI,CAAC,SAAS;gBACpB,GAAG,EAAE,IAAI,CAAC,QAAQ;gBAClB,aAAa,EAAE,IAAI,CAAC,cAAc;aACnC,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * GitHub Exporter
3
+ * Converts Blueprint documents to GitHub artifacts (issues, milestones, templates)
4
+ */
5
+ import type { GitHubConfig, ExportResult, ExportOptions, TaskBreakdown, ReleasePhase, GitHubLabel } from './types.js';
6
+ import type { GeneratedDocument, TemplateContext } from '../../core/index.js';
7
+ export declare class GitHubExporter {
8
+ private client;
9
+ private options;
10
+ constructor(config: GitHubConfig, options?: ExportOptions);
11
+ /**
12
+ * Export generated documents to GitHub
13
+ */
14
+ export(documents: GeneratedDocument[], context: TemplateContext): Promise<ExportResult>;
15
+ /**
16
+ * Get all labels to create
17
+ */
18
+ private getAllLabels;
19
+ /**
20
+ * Extract tasks from generated documents
21
+ */
22
+ private extractTasks;
23
+ /**
24
+ * Parse tasks from markdown content
25
+ */
26
+ private parseTasksFromMarkdown;
27
+ /**
28
+ * Extract release phases from documents
29
+ */
30
+ private extractPhases;
31
+ /**
32
+ * Parse release phases from markdown
33
+ */
34
+ private parsePhasesFromMarkdown;
35
+ /**
36
+ * Generate PR templates based on project context
37
+ */
38
+ private generatePRTemplates;
39
+ /**
40
+ * Preview what would be exported (dry run)
41
+ */
42
+ preview(documents: GeneratedDocument[], context: TemplateContext): Promise<{
43
+ labels: GitHubLabel[];
44
+ tasks: TaskBreakdown[];
45
+ phases: ReleasePhase[];
46
+ prTemplates: string[];
47
+ }>;
48
+ }
49
+ /**
50
+ * Quick export function
51
+ */
52
+ export declare function exportToGitHub(config: GitHubConfig, documents: GeneratedDocument[], context: TemplateContext, options?: ExportOptions): Promise<ExportResult>;
53
+ //# sourceMappingURL=exporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["../../../src/integrations/github/exporter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,aAAa,EACb,YAAY,EACZ,WAAW,EACZ,MAAM,YAAY,CAAC;AAMpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE9E,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,OAAO,CAAgB;gBAEnB,MAAM,EAAE,YAAY,EAAE,OAAO,GAAE,aAAkB;IAY7D;;OAEG;IACG,MAAM,CACV,SAAS,EAAE,iBAAiB,EAAE,EAC9B,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,YAAY,CAAC;IAyExB;;OAEG;IACH,OAAO,CAAC,YAAY;IAyBpB;;OAEG;IACH,OAAO,CAAC,YAAY;IAiBpB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAuF9B;;OAEG;IACH,OAAO,CAAC,aAAa;IAarB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAsD/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkG3B;;OAEG;IACG,OAAO,CACX,SAAS,EAAE,iBAAiB,EAAE,EAC9B,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC;QACT,MAAM,EAAE,WAAW,EAAE,CAAC;QACtB,KAAK,EAAE,aAAa,EAAE,CAAC;QACvB,MAAM,EAAE,YAAY,EAAE,CAAC;QACvB,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;CAQH;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,iBAAiB,EAAE,EAC9B,OAAO,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,YAAY,CAAC,CAGvB"}