specweave 0.28.19 → 0.28.20

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 (85) hide show
  1. package/dist/plugins/specweave-ado/lib/ado-spec-sync.d.ts +16 -0
  2. package/dist/plugins/specweave-ado/lib/ado-spec-sync.d.ts.map +1 -1
  3. package/dist/plugins/specweave-ado/lib/ado-spec-sync.js +63 -3
  4. package/dist/plugins/specweave-ado/lib/ado-spec-sync.js.map +1 -1
  5. package/dist/plugins/specweave-ado/lib/ado-status-sync.d.ts +12 -3
  6. package/dist/plugins/specweave-ado/lib/ado-status-sync.d.ts.map +1 -1
  7. package/dist/plugins/specweave-ado/lib/ado-status-sync.js +37 -3
  8. package/dist/plugins/specweave-ado/lib/ado-status-sync.js.map +1 -1
  9. package/dist/plugins/specweave-github/lib/github-increment-sync-cli.d.ts +8 -6
  10. package/dist/plugins/specweave-github/lib/github-increment-sync-cli.d.ts.map +1 -1
  11. package/dist/plugins/specweave-github/lib/github-increment-sync-cli.js +230 -165
  12. package/dist/plugins/specweave-github/lib/github-increment-sync-cli.js.map +1 -1
  13. package/dist/plugins/specweave-github/lib/github-status-sync.d.ts +10 -0
  14. package/dist/plugins/specweave-github/lib/github-status-sync.d.ts.map +1 -1
  15. package/dist/plugins/specweave-github/lib/github-status-sync.js +40 -2
  16. package/dist/plugins/specweave-github/lib/github-status-sync.js.map +1 -1
  17. package/dist/plugins/specweave-github/lib/increment-issue-builder.d.ts +2 -0
  18. package/dist/plugins/specweave-github/lib/increment-issue-builder.d.ts.map +1 -1
  19. package/dist/plugins/specweave-github/lib/increment-issue-builder.js +25 -5
  20. package/dist/plugins/specweave-github/lib/increment-issue-builder.js.map +1 -1
  21. package/dist/plugins/specweave-jira/lib/jira-spec-sync.d.ts +12 -0
  22. package/dist/plugins/specweave-jira/lib/jira-spec-sync.d.ts.map +1 -1
  23. package/dist/plugins/specweave-jira/lib/jira-spec-sync.js +57 -5
  24. package/dist/plugins/specweave-jira/lib/jira-spec-sync.js.map +1 -1
  25. package/dist/plugins/specweave-jira/lib/jira-status-sync.d.ts +5 -1
  26. package/dist/plugins/specweave-jira/lib/jira-status-sync.d.ts.map +1 -1
  27. package/dist/plugins/specweave-jira/lib/jira-status-sync.js +12 -4
  28. package/dist/plugins/specweave-jira/lib/jira-status-sync.js.map +1 -1
  29. package/dist/src/cli/helpers/init/external-import.d.ts.map +1 -1
  30. package/dist/src/cli/helpers/init/external-import.js +186 -19
  31. package/dist/src/cli/helpers/init/external-import.js.map +1 -1
  32. package/dist/src/cli/helpers/init/jira-ado-auto-detect.d.ts +115 -0
  33. package/dist/src/cli/helpers/init/jira-ado-auto-detect.d.ts.map +1 -0
  34. package/dist/src/cli/helpers/init/jira-ado-auto-detect.js +590 -0
  35. package/dist/src/cli/helpers/init/jira-ado-auto-detect.js.map +1 -0
  36. package/dist/src/config/types.d.ts +6 -6
  37. package/dist/src/core/background/index.d.ts +11 -0
  38. package/dist/src/core/background/index.d.ts.map +1 -0
  39. package/dist/src/core/background/index.js +11 -0
  40. package/dist/src/core/background/index.js.map +1 -0
  41. package/dist/src/core/background/job-manager.d.ts +65 -0
  42. package/dist/src/core/background/job-manager.d.ts.map +1 -0
  43. package/dist/src/core/background/job-manager.js +192 -0
  44. package/dist/src/core/background/job-manager.js.map +1 -0
  45. package/dist/src/core/background/types.d.ts +59 -0
  46. package/dist/src/core/background/types.d.ts.map +1 -0
  47. package/dist/src/core/background/types.js +8 -0
  48. package/dist/src/core/background/types.js.map +1 -0
  49. package/dist/src/core/repo-structure/multi-repo-configurator.d.ts +25 -0
  50. package/dist/src/core/repo-structure/multi-repo-configurator.d.ts.map +1 -0
  51. package/dist/src/core/repo-structure/multi-repo-configurator.js +614 -0
  52. package/dist/src/core/repo-structure/multi-repo-configurator.js.map +1 -0
  53. package/dist/src/core/repo-structure/repo-initializer.d.ts +40 -0
  54. package/dist/src/core/repo-structure/repo-initializer.d.ts.map +1 -0
  55. package/dist/src/core/repo-structure/repo-initializer.js +252 -0
  56. package/dist/src/core/repo-structure/repo-initializer.js.map +1 -0
  57. package/dist/src/core/repo-structure/repo-structure-manager.d.ts +3 -37
  58. package/dist/src/core/repo-structure/repo-structure-manager.d.ts.map +1 -1
  59. package/dist/src/core/repo-structure/repo-structure-manager.js +23 -803
  60. package/dist/src/core/repo-structure/repo-structure-manager.js.map +1 -1
  61. package/dist/src/core/types/spec-metadata.d.ts +2 -0
  62. package/dist/src/core/types/spec-metadata.d.ts.map +1 -1
  63. package/dist/src/importers/import-coordinator.d.ts +20 -0
  64. package/dist/src/importers/import-coordinator.d.ts.map +1 -1
  65. package/dist/src/importers/import-coordinator.js.map +1 -1
  66. package/dist/src/init/architecture/types.d.ts +2 -2
  67. package/dist/src/init/compliance/types.d.ts +1 -1
  68. package/package.json +1 -1
  69. package/plugins/specweave/commands/specweave-jobs.md +160 -0
  70. package/plugins/specweave-ado/lib/ado-spec-sync.js +59 -3
  71. package/plugins/specweave-ado/lib/ado-spec-sync.ts +72 -3
  72. package/plugins/specweave-ado/lib/ado-status-sync.js +35 -3
  73. package/plugins/specweave-ado/lib/ado-status-sync.ts +48 -4
  74. package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +6 -0
  75. package/plugins/specweave-github/lib/github-increment-sync-cli.js +268 -155
  76. package/plugins/specweave-github/lib/github-increment-sync-cli.ts +313 -209
  77. package/plugins/specweave-github/lib/github-status-sync.js +37 -1
  78. package/plugins/specweave-github/lib/github-status-sync.ts +60 -4
  79. package/plugins/specweave-github/lib/increment-issue-builder.js +26 -5
  80. package/plugins/specweave-github/lib/increment-issue-builder.ts +36 -5
  81. package/plugins/specweave-jira/lib/jira-spec-sync.js +53 -5
  82. package/plugins/specweave-jira/lib/jira-spec-sync.ts +87 -7
  83. package/plugins/specweave-jira/lib/jira-status-sync.js +9 -3
  84. package/plugins/specweave-jira/lib/jira-status-sync.ts +15 -6
  85. package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +9 -0
@@ -55,8 +55,8 @@ export declare const ResearchConfigSchema: z.ZodObject<{
55
55
  dataTypes: z.ZodArray<z.ZodEnum<{
56
56
  healthcare: "healthcare";
57
57
  personal: "personal";
58
- location: "location";
59
58
  payment: "payment";
59
+ location: "location";
60
60
  government: "government";
61
61
  student: "student";
62
62
  financial: "financial";
@@ -107,12 +107,12 @@ export declare const ResearchConfigSchema: z.ZodObject<{
107
107
  }, z.core.$strip>>>;
108
108
  architecture: z.ZodOptional<z.ZodObject<{
109
109
  architecture: z.ZodEnum<{
110
+ hybrid: "hybrid";
110
111
  microservices: "microservices";
111
112
  serverless: "serverless";
112
113
  "traditional-monolith": "traditional-monolith";
113
114
  "modular-monolith": "modular-monolith";
114
115
  jamstack: "jamstack";
115
- hybrid: "hybrid";
116
116
  }>;
117
117
  infrastructure: z.ZodArray<z.ZodString>;
118
118
  rationale: z.ZodString;
@@ -140,12 +140,12 @@ export declare const ResearchConfigSchema: z.ZodObject<{
140
140
  }>;
141
141
  alternatives: z.ZodOptional<z.ZodArray<z.ZodObject<{
142
142
  architecture: z.ZodEnum<{
143
+ hybrid: "hybrid";
143
144
  microservices: "microservices";
144
145
  serverless: "serverless";
145
146
  "traditional-monolith": "traditional-monolith";
146
147
  "modular-monolith": "modular-monolith";
147
148
  jamstack: "jamstack";
148
- hybrid: "hybrid";
149
149
  }>;
150
150
  pros: z.ZodArray<z.ZodString>;
151
151
  cons: z.ZodArray<z.ZodString>;
@@ -226,8 +226,8 @@ export declare const SpecWeaveConfigSchema: z.ZodObject<{
226
226
  dataTypes: z.ZodArray<z.ZodEnum<{
227
227
  healthcare: "healthcare";
228
228
  personal: "personal";
229
- location: "location";
230
229
  payment: "payment";
230
+ location: "location";
231
231
  government: "government";
232
232
  student: "student";
233
233
  financial: "financial";
@@ -278,12 +278,12 @@ export declare const SpecWeaveConfigSchema: z.ZodObject<{
278
278
  }, z.core.$strip>>>;
279
279
  architecture: z.ZodOptional<z.ZodObject<{
280
280
  architecture: z.ZodEnum<{
281
+ hybrid: "hybrid";
281
282
  microservices: "microservices";
282
283
  serverless: "serverless";
283
284
  "traditional-monolith": "traditional-monolith";
284
285
  "modular-monolith": "modular-monolith";
285
286
  jamstack: "jamstack";
286
- hybrid: "hybrid";
287
287
  }>;
288
288
  infrastructure: z.ZodArray<z.ZodString>;
289
289
  rationale: z.ZodString;
@@ -311,12 +311,12 @@ export declare const SpecWeaveConfigSchema: z.ZodObject<{
311
311
  }>;
312
312
  alternatives: z.ZodOptional<z.ZodArray<z.ZodObject<{
313
313
  architecture: z.ZodEnum<{
314
+ hybrid: "hybrid";
314
315
  microservices: "microservices";
315
316
  serverless: "serverless";
316
317
  "traditional-monolith": "traditional-monolith";
317
318
  "modular-monolith": "modular-monolith";
318
319
  jamstack: "jamstack";
319
- hybrid: "hybrid";
320
320
  }>;
321
321
  pros: z.ZodArray<z.ZodString>;
322
322
  cons: z.ZodArray<z.ZodString>;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Background Jobs Module
3
+ *
4
+ * Long-running operations that can run in background:
5
+ * - Repository cloning (multi-repo setup)
6
+ * - Issue import (10K+ items from GitHub/JIRA/ADO)
7
+ * - External sync operations
8
+ */
9
+ export * from './types.js';
10
+ export * from './job-manager.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/background/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Background Jobs Module
3
+ *
4
+ * Long-running operations that can run in background:
5
+ * - Repository cloning (multi-repo setup)
6
+ * - Issue import (10K+ items from GitHub/JIRA/ADO)
7
+ * - External sync operations
8
+ */
9
+ export * from './types.js';
10
+ export * from './job-manager.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/background/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Background Job Manager
3
+ *
4
+ * Manages long-running operations with persistent state.
5
+ * Jobs survive session restarts - can check progress later.
6
+ */
7
+ import type { BackgroundJob, JobConfig, JobStatus, JobType } from './types.js';
8
+ export declare class BackgroundJobManager {
9
+ private projectPath;
10
+ private statePath;
11
+ constructor(projectPath: string);
12
+ /**
13
+ * Create a new background job
14
+ */
15
+ createJob(type: JobType, config: JobConfig, totalItems: number): BackgroundJob;
16
+ /**
17
+ * Start a job (mark as running)
18
+ */
19
+ startJob(jobId: string): BackgroundJob | null;
20
+ /**
21
+ * Update job progress
22
+ */
23
+ updateProgress(jobId: string, current: number, currentItem?: string, completed?: string, failed?: string): BackgroundJob | null;
24
+ /**
25
+ * Complete a job
26
+ */
27
+ completeJob(jobId: string, error?: string): BackgroundJob | null;
28
+ /**
29
+ * Pause a job (can resume later)
30
+ */
31
+ pauseJob(jobId: string): BackgroundJob | null;
32
+ /**
33
+ * Get a specific job
34
+ */
35
+ getJob(jobId: string): BackgroundJob | null;
36
+ /**
37
+ * Get all jobs (optionally filtered by type or status)
38
+ */
39
+ getJobs(filter?: {
40
+ type?: JobType;
41
+ status?: JobStatus;
42
+ }): BackgroundJob[];
43
+ /**
44
+ * Get active (running/paused) jobs
45
+ */
46
+ getActiveJobs(): BackgroundJob[];
47
+ /**
48
+ * Clean up old completed jobs (keep last 10)
49
+ */
50
+ cleanup(): void;
51
+ /**
52
+ * Load state from disk
53
+ */
54
+ private loadState;
55
+ /**
56
+ * Save state to disk
57
+ */
58
+ private saveState;
59
+ /**
60
+ * Save a single job (merge into state)
61
+ */
62
+ private saveJob;
63
+ }
64
+ export declare function getJobManager(projectPath: string): BackgroundJobManager;
65
+ //# sourceMappingURL=job-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job-manager.d.ts","sourceRoot":"","sources":["../../../../src/core/background/job-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EAGT,SAAS,EACT,OAAO,EACR,MAAM,YAAY,CAAC;AAIpB,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;gBAEd,WAAW,EAAE,MAAM;IAK/B;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,GAAG,aAAa;IAqB9E;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAU7C;;OAEG;IACH,cAAc,CACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,aAAa,GAAG,IAAI;IA4BvB;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAahE;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAU7C;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAK3C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,SAAS,CAAA;KAAE,GAAG,aAAa,EAAE;IAiBzE;;OAEG;IACH,aAAa,IAAI,aAAa,EAAE;IAMhC;;OAEG;IACH,OAAO,IAAI,IAAI;IAcf;;OAEG;IACH,OAAO,CAAC,SAAS;IAYjB;;OAEG;IACH,OAAO,CAAC,SAAS;IAKjB;;OAEG;IACH,OAAO,CAAC,OAAO;CAYhB;AAOD,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,oBAAoB,CAKvE"}
@@ -0,0 +1,192 @@
1
+ /**
2
+ * Background Job Manager
3
+ *
4
+ * Manages long-running operations with persistent state.
5
+ * Jobs survive session restarts - can check progress later.
6
+ */
7
+ import * as fs from '../../utils/fs-native.js';
8
+ import * as path from 'path';
9
+ import * as crypto from 'crypto';
10
+ const STATE_FILE = '.specweave/state/background-jobs.json';
11
+ export class BackgroundJobManager {
12
+ constructor(projectPath) {
13
+ this.projectPath = projectPath;
14
+ this.statePath = path.join(projectPath, STATE_FILE);
15
+ }
16
+ /**
17
+ * Create a new background job
18
+ */
19
+ createJob(type, config, totalItems) {
20
+ const job = {
21
+ id: crypto.randomUUID().slice(0, 8),
22
+ type,
23
+ status: 'pending',
24
+ progress: {
25
+ current: 0,
26
+ total: totalItems,
27
+ percentage: 0,
28
+ itemsCompleted: [],
29
+ itemsFailed: []
30
+ },
31
+ startedAt: new Date(),
32
+ updatedAt: new Date(),
33
+ config
34
+ };
35
+ this.saveJob(job);
36
+ return job;
37
+ }
38
+ /**
39
+ * Start a job (mark as running)
40
+ */
41
+ startJob(jobId) {
42
+ const job = this.getJob(jobId);
43
+ if (!job)
44
+ return null;
45
+ job.status = 'running';
46
+ job.updatedAt = new Date();
47
+ this.saveJob(job);
48
+ return job;
49
+ }
50
+ /**
51
+ * Update job progress
52
+ */
53
+ updateProgress(jobId, current, currentItem, completed, failed) {
54
+ const job = this.getJob(jobId);
55
+ if (!job)
56
+ return null;
57
+ job.progress.current = current;
58
+ job.progress.percentage = Math.round((current / job.progress.total) * 100);
59
+ job.progress.currentItem = currentItem;
60
+ job.updatedAt = new Date();
61
+ if (completed) {
62
+ job.progress.itemsCompleted.push(completed);
63
+ }
64
+ if (failed) {
65
+ job.progress.itemsFailed.push(failed);
66
+ }
67
+ // Calculate rate and ETA
68
+ const elapsed = (Date.now() - new Date(job.startedAt).getTime()) / 1000;
69
+ if (elapsed > 0 && current > 0) {
70
+ job.progress.rate = Math.round((current / elapsed) * 10) / 10;
71
+ const remaining = job.progress.total - current;
72
+ job.progress.eta = Math.round(remaining / job.progress.rate);
73
+ }
74
+ this.saveJob(job);
75
+ return job;
76
+ }
77
+ /**
78
+ * Complete a job
79
+ */
80
+ completeJob(jobId, error) {
81
+ const job = this.getJob(jobId);
82
+ if (!job)
83
+ return null;
84
+ job.status = error ? 'failed' : 'completed';
85
+ job.completedAt = new Date();
86
+ job.updatedAt = new Date();
87
+ if (error)
88
+ job.error = error;
89
+ this.saveJob(job);
90
+ return job;
91
+ }
92
+ /**
93
+ * Pause a job (can resume later)
94
+ */
95
+ pauseJob(jobId) {
96
+ const job = this.getJob(jobId);
97
+ if (!job)
98
+ return null;
99
+ job.status = 'paused';
100
+ job.updatedAt = new Date();
101
+ this.saveJob(job);
102
+ return job;
103
+ }
104
+ /**
105
+ * Get a specific job
106
+ */
107
+ getJob(jobId) {
108
+ const state = this.loadState();
109
+ return state.jobs.find(j => j.id === jobId) || null;
110
+ }
111
+ /**
112
+ * Get all jobs (optionally filtered by type or status)
113
+ */
114
+ getJobs(filter) {
115
+ const state = this.loadState();
116
+ let jobs = state.jobs;
117
+ if (filter?.type) {
118
+ jobs = jobs.filter(j => j.type === filter.type);
119
+ }
120
+ if (filter?.status) {
121
+ jobs = jobs.filter(j => j.status === filter.status);
122
+ }
123
+ // Sort by most recent first
124
+ return jobs.sort((a, b) => new Date(b.updatedAt).getTime() - new Date(a.updatedAt).getTime());
125
+ }
126
+ /**
127
+ * Get active (running/paused) jobs
128
+ */
129
+ getActiveJobs() {
130
+ return this.getJobs().filter(j => j.status === 'running' || j.status === 'paused' || j.status === 'pending');
131
+ }
132
+ /**
133
+ * Clean up old completed jobs (keep last 10)
134
+ */
135
+ cleanup() {
136
+ const state = this.loadState();
137
+ const active = state.jobs.filter(j => j.status === 'running' || j.status === 'paused' || j.status === 'pending');
138
+ const completed = state.jobs
139
+ .filter(j => j.status === 'completed' || j.status === 'failed')
140
+ .sort((a, b) => new Date(b.updatedAt).getTime() - new Date(a.updatedAt).getTime())
141
+ .slice(0, 10);
142
+ state.jobs = [...active, ...completed];
143
+ this.saveState(state);
144
+ }
145
+ /**
146
+ * Load state from disk
147
+ */
148
+ loadState() {
149
+ try {
150
+ if (fs.existsSync(this.statePath)) {
151
+ const content = fs.readFileSync(this.statePath, 'utf-8');
152
+ return JSON.parse(content);
153
+ }
154
+ }
155
+ catch {
156
+ // Corrupted state - start fresh
157
+ }
158
+ return { jobs: [] };
159
+ }
160
+ /**
161
+ * Save state to disk
162
+ */
163
+ saveState(state) {
164
+ fs.ensureDirSync(path.dirname(this.statePath));
165
+ fs.writeFileSync(this.statePath, JSON.stringify(state, null, 2));
166
+ }
167
+ /**
168
+ * Save a single job (merge into state)
169
+ */
170
+ saveJob(job) {
171
+ const state = this.loadState();
172
+ const index = state.jobs.findIndex(j => j.id === job.id);
173
+ if (index >= 0) {
174
+ state.jobs[index] = job;
175
+ }
176
+ else {
177
+ state.jobs.push(job);
178
+ }
179
+ this.saveState(state);
180
+ }
181
+ }
182
+ /**
183
+ * Get job manager singleton for a project
184
+ */
185
+ const managers = new Map();
186
+ export function getJobManager(projectPath) {
187
+ if (!managers.has(projectPath)) {
188
+ managers.set(projectPath, new BackgroundJobManager(projectPath));
189
+ }
190
+ return managers.get(projectPath);
191
+ }
192
+ //# sourceMappingURL=job-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job-manager.js","sourceRoot":"","sources":["../../../../src/core/background/job-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Background Jobs - Type Definitions
3
+ *
4
+ * Supports long-running operations (repo cloning, issue import)
5
+ * that can run in background while user continues working.
6
+ */
7
+ export type JobType = 'clone-repos' | 'import-issues' | 'sync-external';
8
+ export type JobStatus = 'pending' | 'running' | 'paused' | 'completed' | 'failed';
9
+ export interface JobProgress {
10
+ current: number;
11
+ total: number;
12
+ percentage: number;
13
+ currentItem?: string;
14
+ itemsCompleted: string[];
15
+ itemsFailed: string[];
16
+ rate?: number;
17
+ eta?: number;
18
+ }
19
+ export interface BackgroundJob {
20
+ id: string;
21
+ type: JobType;
22
+ status: JobStatus;
23
+ progress: JobProgress;
24
+ startedAt: Date;
25
+ updatedAt: Date;
26
+ completedAt?: Date;
27
+ error?: string;
28
+ config: JobConfig;
29
+ }
30
+ export interface CloneJobConfig {
31
+ type: 'clone-repos';
32
+ repositories: Array<{
33
+ owner: string;
34
+ name: string;
35
+ path: string;
36
+ }>;
37
+ projectPath: string;
38
+ }
39
+ export interface ImportJobConfig {
40
+ type: 'import-issues';
41
+ provider: 'github' | 'jira' | 'ado';
42
+ repositories?: string[];
43
+ projectKey?: string;
44
+ timeRangeMonths: number;
45
+ projectPath: string;
46
+ }
47
+ export interface SyncJobConfig {
48
+ type: 'sync-external';
49
+ provider: 'github' | 'jira' | 'ado';
50
+ direction: 'import' | 'export' | 'bidirectional';
51
+ profileId: string;
52
+ projectPath: string;
53
+ }
54
+ export type JobConfig = CloneJobConfig | ImportJobConfig | SyncJobConfig;
55
+ export interface JobState {
56
+ jobs: BackgroundJob[];
57
+ activeJobId?: string;
58
+ }
59
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/background/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,OAAO,GAAG,aAAa,GAAG,eAAe,GAAG,eAAe,CAAC;AAExE,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;AAElF,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,WAAW,CAAC;IACtB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,aAAa,CAAC;IACpB,YAAY,EAAE,KAAK,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;IACpC,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,eAAe,CAAC;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,eAAe,GAAG,aAAa,CAAC;AAEzE,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Background Jobs - Type Definitions
3
+ *
4
+ * Supports long-running operations (repo cloning, issue import)
5
+ * that can run in background while user continues working.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/core/background/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Multi-Repository Configuration
3
+ *
4
+ * Extracted from repo-structure-manager.ts to reduce file size and prevent crashes.
5
+ * Handles configuration of multi-repository setups including parent repos and discovery.
6
+ */
7
+ import { SetupStateManager } from './setup-state-manager.js';
8
+ import type { GitProvider, GitPlatformType } from './git-provider.js';
9
+ import type { RepoStructureConfig } from './repo-structure-manager.js';
10
+ export interface MultiRepoConfigOptions {
11
+ projectPath: string;
12
+ githubToken?: string;
13
+ stateManager: SetupStateManager;
14
+ useParent?: boolean;
15
+ isLocalParent?: boolean;
16
+ urlType?: 'ssh' | 'https';
17
+ platform?: GitPlatformType;
18
+ provider: GitProvider;
19
+ }
20
+ /**
21
+ * Configure multi-repository architecture
22
+ * @param options - Configuration options
23
+ */
24
+ export declare function configureMultiRepo(options: MultiRepoConfigOptions): Promise<RepoStructureConfig>;
25
+ //# sourceMappingURL=multi-repo-configurator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-repo-configurator.d.ts","sourceRoot":"","sources":["../../../../src/core/repo-structure/multi-repo-configurator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,EAAE,iBAAiB,EAAsC,MAAM,0BAA0B,CAAC;AAOjG,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEvE,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,iBAAiB,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,QAAQ,EAAE,WAAW,CAAC;CACvB;AAaD;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAgpBtG"}