@speclife/core 0.1.0 → 0.2.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/adapters/claude-cli-adapter.d.ts +13 -0
- package/dist/adapters/claude-cli-adapter.d.ts.map +1 -1
- package/dist/adapters/claude-cli-adapter.js +73 -0
- package/dist/adapters/claude-cli-adapter.js.map +1 -1
- package/dist/adapters/git-adapter.d.ts +15 -0
- package/dist/adapters/git-adapter.d.ts.map +1 -1
- package/dist/adapters/git-adapter.js +74 -0
- package/dist/adapters/git-adapter.js.map +1 -1
- package/dist/adapters/github-adapter.d.ts +4 -0
- package/dist/adapters/github-adapter.d.ts.map +1 -1
- package/dist/adapters/github-adapter.js +50 -0
- package/dist/adapters/github-adapter.js.map +1 -1
- package/dist/adapters/index.d.ts +1 -1
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +1 -1
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/openspec-adapter.d.ts +2 -0
- package/dist/adapters/openspec-adapter.d.ts.map +1 -1
- package/dist/adapters/openspec-adapter.js +7 -0
- package/dist/adapters/openspec-adapter.js.map +1 -1
- package/dist/config.d.ts +25 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +49 -0
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +90 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/format.d.ts +57 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +154 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/workflows/index.d.ts +1 -0
- package/dist/workflows/index.d.ts.map +1 -1
- package/dist/workflows/index.js +1 -0
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/init.d.ts +6 -0
- package/dist/workflows/init.d.ts.map +1 -1
- package/dist/workflows/init.js +81 -1
- package/dist/workflows/init.js.map +1 -1
- package/dist/workflows/merge.d.ts +8 -0
- package/dist/workflows/merge.d.ts.map +1 -1
- package/dist/workflows/merge.js +10 -1
- package/dist/workflows/merge.js.map +1 -1
- package/dist/workflows/release.d.ts +28 -0
- package/dist/workflows/release.d.ts.map +1 -0
- package/dist/workflows/release.js +212 -0
- package/dist/workflows/release.js.map +1 -0
- package/dist/workflows/submit.d.ts +7 -1
- package/dist/workflows/submit.d.ts.map +1 -1
- package/dist/workflows/submit.js +89 -3
- package/dist/workflows/submit.js.map +1 -1
- package/package.json +7 -3
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAsB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
* Core library for SpecLife - adapters and workflows for spec-driven development.
|
|
5
5
|
*/
|
|
6
6
|
export * from './types.js';
|
|
7
|
-
export { loadConfig, type SpecLifeConfig, type WorktreeConfig, type EnvironmentBootstrapConfig, } from './config.js';
|
|
7
|
+
export { loadConfig, isAutoReleaseAllowed, type SpecLifeConfig, type WorktreeConfig, type EnvironmentBootstrapConfig, type ReleaseConfig, type ReleaseAutoConfig, } from './config.js';
|
|
8
8
|
export * from './adapters/index.js';
|
|
9
9
|
export * from './workflows/index.js';
|
|
10
|
+
export * from './utils/index.js';
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,YAAY,CAAC;AAG3B,OAAO,EACL,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,0BAA0B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,YAAY,CAAC;AAG3B,OAAO,EACL,UAAU,EACV,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,0BAA0B,EAC/B,KAAK,aAAa,EAClB,KAAK,iBAAiB,GACvB,MAAM,aAAa,CAAC;AAGrB,cAAc,qBAAqB,CAAC;AAGpC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,9 +6,11 @@
|
|
|
6
6
|
// Re-export types
|
|
7
7
|
export * from './types.js';
|
|
8
8
|
// Re-export config
|
|
9
|
-
export { loadConfig, } from './config.js';
|
|
9
|
+
export { loadConfig, isAutoReleaseAllowed, } from './config.js';
|
|
10
10
|
// Re-export adapters
|
|
11
11
|
export * from './adapters/index.js';
|
|
12
12
|
// Re-export workflows
|
|
13
13
|
export * from './workflows/index.js';
|
|
14
|
+
// Re-export utilities
|
|
15
|
+
export * from './utils/index.js';
|
|
14
16
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,kBAAkB;AAClB,cAAc,YAAY,CAAC;AAE3B,mBAAmB;AACnB,OAAO,EACL,UAAU,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,kBAAkB;AAClB,cAAc,YAAY,CAAC;AAE3B,mBAAmB;AACnB,OAAO,EACL,UAAU,EACV,oBAAoB,GAMrB,MAAM,aAAa,CAAC;AAErB,qBAAqB;AACrB,cAAc,qBAAqB,CAAC;AAEpC,sBAAsB;AACtB,cAAc,sBAAsB,CAAC;AAErC,sBAAsB;AACtB,cAAc,kBAAkB,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -102,4 +102,94 @@ export interface ProgressEvent {
|
|
|
102
102
|
}
|
|
103
103
|
/** Progress callback type */
|
|
104
104
|
export type ProgressCallback = (event: ProgressEvent) => void;
|
|
105
|
+
/** Version bump types */
|
|
106
|
+
export type VersionBumpType = 'major' | 'minor' | 'patch';
|
|
107
|
+
/** Commit information for version analysis */
|
|
108
|
+
export interface CommitInfo {
|
|
109
|
+
sha: string;
|
|
110
|
+
message: string;
|
|
111
|
+
type?: string;
|
|
112
|
+
scope?: string;
|
|
113
|
+
isBreaking: boolean;
|
|
114
|
+
}
|
|
115
|
+
/** Options for the release workflow */
|
|
116
|
+
export interface ReleaseOptions {
|
|
117
|
+
/** Explicit version to release (skips analysis) */
|
|
118
|
+
version?: string;
|
|
119
|
+
/** Don't create PR, just show what would happen */
|
|
120
|
+
dryRun?: boolean;
|
|
121
|
+
/** Skip changelog generation */
|
|
122
|
+
skipChangelog?: boolean;
|
|
123
|
+
/** Enable auto-merge on the release PR (requires repo settings to allow auto-merge) */
|
|
124
|
+
autoMerge?: boolean;
|
|
125
|
+
}
|
|
126
|
+
/** Result of the release workflow */
|
|
127
|
+
export interface ReleaseResult {
|
|
128
|
+
/** The new version */
|
|
129
|
+
version: string;
|
|
130
|
+
/** Previous version */
|
|
131
|
+
previousVersion: string;
|
|
132
|
+
/** Suggested bump type */
|
|
133
|
+
bumpType: VersionBumpType;
|
|
134
|
+
/** Commits included in this release */
|
|
135
|
+
commits: CommitInfo[];
|
|
136
|
+
/** Generated changelog content */
|
|
137
|
+
changelog?: string;
|
|
138
|
+
/** URL of the created PR (if not dry run) */
|
|
139
|
+
prUrl?: string;
|
|
140
|
+
/** Release branch name */
|
|
141
|
+
branch?: string;
|
|
142
|
+
/** Whether auto-merge was enabled on the PR */
|
|
143
|
+
autoMergeEnabled?: boolean;
|
|
144
|
+
}
|
|
145
|
+
/** Progress information for a change */
|
|
146
|
+
export interface ChangeProgress {
|
|
147
|
+
/** Number of completed tasks */
|
|
148
|
+
completed: number;
|
|
149
|
+
/** Total number of tasks */
|
|
150
|
+
total: number;
|
|
151
|
+
/** Completion percentage (0-100) */
|
|
152
|
+
percentage: number;
|
|
153
|
+
}
|
|
154
|
+
/** PR status for display */
|
|
155
|
+
export type PRDisplayStatus = 'draft' | 'ready' | 'merged' | 'closed' | 'local';
|
|
156
|
+
/** Enriched change item for list display */
|
|
157
|
+
export interface ChangeListItem {
|
|
158
|
+
/** Change identifier */
|
|
159
|
+
id: string;
|
|
160
|
+
/** Task progress */
|
|
161
|
+
progress: ChangeProgress;
|
|
162
|
+
/** PR status */
|
|
163
|
+
prStatus: PRDisplayStatus;
|
|
164
|
+
/** PR number if exists */
|
|
165
|
+
prNumber?: number;
|
|
166
|
+
/** PR URL if exists */
|
|
167
|
+
prUrl?: string;
|
|
168
|
+
/** Last activity timestamp */
|
|
169
|
+
lastActive?: Date;
|
|
170
|
+
/** Whether this is the current branch */
|
|
171
|
+
isCurrent: boolean;
|
|
172
|
+
}
|
|
173
|
+
/** Options for listing changes */
|
|
174
|
+
export interface ListOptions {
|
|
175
|
+
/** Show compact single-line output */
|
|
176
|
+
compact?: boolean;
|
|
177
|
+
/** Filter by PR status */
|
|
178
|
+
status?: PRDisplayStatus;
|
|
179
|
+
/** Sort order */
|
|
180
|
+
sort?: 'activity' | 'progress' | 'name';
|
|
181
|
+
}
|
|
182
|
+
/** Validation status */
|
|
183
|
+
export type ValidationStatus = 'pass' | 'pass_with_warnings' | 'fail';
|
|
184
|
+
/** Validation report from openspec validate */
|
|
185
|
+
export interface ValidationReport {
|
|
186
|
+
/** Overall validation status */
|
|
187
|
+
status: ValidationStatus;
|
|
188
|
+
/** Validation errors (cause failure) */
|
|
189
|
+
errors: string[];
|
|
190
|
+
/** Validation warnings */
|
|
191
|
+
warnings: string[];
|
|
192
|
+
/** Raw output from openspec validate */
|
|
193
|
+
output?: string;
|
|
194
|
+
}
|
|
105
195
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Formatting utilities for display
|
|
3
|
+
*/
|
|
4
|
+
import type { ChangeProgress, ChangeListItem, PRDisplayStatus } from '../types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Format a progress bar using ASCII characters
|
|
7
|
+
* @param progress Progress info
|
|
8
|
+
* @param width Width of the bar (default 10)
|
|
9
|
+
* @returns ASCII progress bar like "████████░░"
|
|
10
|
+
*/
|
|
11
|
+
export declare function formatProgressBar(progress: ChangeProgress, width?: number): string;
|
|
12
|
+
/**
|
|
13
|
+
* Format a relative time string
|
|
14
|
+
* @param date Date to format
|
|
15
|
+
* @returns String like "2 hours ago", "3 days ago"
|
|
16
|
+
*/
|
|
17
|
+
export declare function formatRelativeTime(date: Date | undefined): string;
|
|
18
|
+
/**
|
|
19
|
+
* Format PR status for display
|
|
20
|
+
* @param status PR status
|
|
21
|
+
* @param prNumber PR number (if exists)
|
|
22
|
+
* @returns Formatted string like "PR #42 (draft)" or "local only"
|
|
23
|
+
*/
|
|
24
|
+
export declare function formatPRStatus(status: PRDisplayStatus, prNumber?: number): string;
|
|
25
|
+
/**
|
|
26
|
+
* Format a change item as a compact single line
|
|
27
|
+
* @param item Change list item
|
|
28
|
+
* @returns Compact format string
|
|
29
|
+
*/
|
|
30
|
+
export declare function formatCompactLine(item: ChangeListItem): string;
|
|
31
|
+
/**
|
|
32
|
+
* Format changes as a detailed table
|
|
33
|
+
* @param items Change list items
|
|
34
|
+
* @returns Formatted table string
|
|
35
|
+
*/
|
|
36
|
+
export declare function formatTable(items: ChangeListItem[]): string;
|
|
37
|
+
/**
|
|
38
|
+
* Format a summary line for the list
|
|
39
|
+
* @param items All change items
|
|
40
|
+
* @returns Summary string
|
|
41
|
+
*/
|
|
42
|
+
export declare function formatSummary(items: ChangeListItem[]): string;
|
|
43
|
+
/**
|
|
44
|
+
* Sort change items based on sort option
|
|
45
|
+
* @param items Change list items
|
|
46
|
+
* @param sort Sort option
|
|
47
|
+
* @returns Sorted items
|
|
48
|
+
*/
|
|
49
|
+
export declare function sortItems(items: ChangeListItem[], sort?: 'activity' | 'progress' | 'name'): ChangeListItem[];
|
|
50
|
+
/**
|
|
51
|
+
* Filter change items by status
|
|
52
|
+
* @param items Change list items
|
|
53
|
+
* @param status Status to filter by
|
|
54
|
+
* @returns Filtered items
|
|
55
|
+
*/
|
|
56
|
+
export declare function filterByStatus(items: ChangeListItem[], status?: PRDisplayStatus): ChangeListItem[];
|
|
57
|
+
//# sourceMappingURL=format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnF;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,GAAE,MAAW,GAAG,MAAM,CAItF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,SAAS,GAAG,MAAM,CAkBjE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAMjF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAS9D;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,MAAM,CAwB3D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,MAAM,CAoB7D;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,IAAI,GAAE,UAAU,GAAG,UAAU,GAAG,MAAmB,GAAG,cAAc,EAAE,CAoBxH;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,cAAc,EAAE,CAGlG"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Formatting utilities for display
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Format a progress bar using ASCII characters
|
|
6
|
+
* @param progress Progress info
|
|
7
|
+
* @param width Width of the bar (default 10)
|
|
8
|
+
* @returns ASCII progress bar like "████████░░"
|
|
9
|
+
*/
|
|
10
|
+
export function formatProgressBar(progress, width = 10) {
|
|
11
|
+
const filled = Math.round((progress.percentage / 100) * width);
|
|
12
|
+
const empty = width - filled;
|
|
13
|
+
return '█'.repeat(filled) + '░'.repeat(empty);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Format a relative time string
|
|
17
|
+
* @param date Date to format
|
|
18
|
+
* @returns String like "2 hours ago", "3 days ago"
|
|
19
|
+
*/
|
|
20
|
+
export function formatRelativeTime(date) {
|
|
21
|
+
if (!date)
|
|
22
|
+
return 'unknown';
|
|
23
|
+
const now = new Date();
|
|
24
|
+
const diffMs = now.getTime() - date.getTime();
|
|
25
|
+
const diffSeconds = Math.floor(diffMs / 1000);
|
|
26
|
+
const diffMinutes = Math.floor(diffSeconds / 60);
|
|
27
|
+
const diffHours = Math.floor(diffMinutes / 60);
|
|
28
|
+
const diffDays = Math.floor(diffHours / 24);
|
|
29
|
+
const diffWeeks = Math.floor(diffDays / 7);
|
|
30
|
+
if (diffMinutes < 1)
|
|
31
|
+
return 'just now';
|
|
32
|
+
if (diffMinutes < 60)
|
|
33
|
+
return `${diffMinutes}m ago`;
|
|
34
|
+
if (diffHours < 24)
|
|
35
|
+
return `${diffHours}h ago`;
|
|
36
|
+
if (diffDays < 7)
|
|
37
|
+
return `${diffDays}d ago`;
|
|
38
|
+
if (diffWeeks < 4)
|
|
39
|
+
return `${diffWeeks}w ago`;
|
|
40
|
+
return date.toLocaleDateString();
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Format PR status for display
|
|
44
|
+
* @param status PR status
|
|
45
|
+
* @param prNumber PR number (if exists)
|
|
46
|
+
* @returns Formatted string like "PR #42 (draft)" or "local only"
|
|
47
|
+
*/
|
|
48
|
+
export function formatPRStatus(status, prNumber) {
|
|
49
|
+
if (status === 'local')
|
|
50
|
+
return 'local only';
|
|
51
|
+
if (!prNumber)
|
|
52
|
+
return status;
|
|
53
|
+
const statusLabel = status === 'ready' ? 'ready' : status;
|
|
54
|
+
return `PR #${prNumber} (${statusLabel})`;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Format a change item as a compact single line
|
|
58
|
+
* @param item Change list item
|
|
59
|
+
* @returns Compact format string
|
|
60
|
+
*/
|
|
61
|
+
export function formatCompactLine(item) {
|
|
62
|
+
const name = item.id.padEnd(24);
|
|
63
|
+
const bar = `[${formatProgressBar(item.progress)}]`;
|
|
64
|
+
const progress = `${item.progress.completed}/${item.progress.total}`.padStart(5);
|
|
65
|
+
const pr = formatPRStatus(item.prStatus, item.prNumber).padEnd(16);
|
|
66
|
+
const time = formatRelativeTime(item.lastActive).padStart(8);
|
|
67
|
+
const current = item.isCurrent ? ' ←' : '';
|
|
68
|
+
return `${name} ${bar} ${progress} ${pr} ${time}${current}`;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Format changes as a detailed table
|
|
72
|
+
* @param items Change list items
|
|
73
|
+
* @returns Formatted table string
|
|
74
|
+
*/
|
|
75
|
+
export function formatTable(items) {
|
|
76
|
+
const lines = [];
|
|
77
|
+
// Header
|
|
78
|
+
lines.push('┌─────────────────────────────────┬────────────────┬─────────────────┬──────────────┐');
|
|
79
|
+
lines.push('│ Change │ Progress │ PR Status │ Last Active │');
|
|
80
|
+
lines.push('├─────────────────────────────────┼────────────────┼─────────────────┼──────────────┤');
|
|
81
|
+
// Rows
|
|
82
|
+
for (const item of items) {
|
|
83
|
+
const name = (item.id + (item.isCurrent ? ' ←' : '')).slice(0, 31).padEnd(31);
|
|
84
|
+
const bar = formatProgressBar(item.progress);
|
|
85
|
+
const progressText = `${item.progress.completed}/${item.progress.total}`.padStart(4);
|
|
86
|
+
const progress = `${bar} ${progressText}`.padEnd(14);
|
|
87
|
+
const pr = formatPRStatus(item.prStatus, item.prNumber).slice(0, 15).padEnd(15);
|
|
88
|
+
const time = formatRelativeTime(item.lastActive).padEnd(12);
|
|
89
|
+
lines.push(`│ ${name} │ ${progress} │ ${pr} │ ${time} │`);
|
|
90
|
+
}
|
|
91
|
+
// Footer
|
|
92
|
+
lines.push('└─────────────────────────────────┴────────────────┴─────────────────┴──────────────┘');
|
|
93
|
+
return lines.join('\n');
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Format a summary line for the list
|
|
97
|
+
* @param items All change items
|
|
98
|
+
* @returns Summary string
|
|
99
|
+
*/
|
|
100
|
+
export function formatSummary(items) {
|
|
101
|
+
const total = items.length;
|
|
102
|
+
const withPRs = items.filter(i => i.prStatus !== 'local').length;
|
|
103
|
+
const ready = items.filter(i => i.prStatus === 'ready').length;
|
|
104
|
+
const drafts = items.filter(i => i.prStatus === 'draft').length;
|
|
105
|
+
const parts = [`${total} change${total !== 1 ? 's' : ''}`];
|
|
106
|
+
if (ready > 0) {
|
|
107
|
+
parts.push(`${ready} ready for review`);
|
|
108
|
+
}
|
|
109
|
+
if (drafts > 0) {
|
|
110
|
+
parts.push(`${drafts} draft${drafts !== 1 ? 's' : ''}`);
|
|
111
|
+
}
|
|
112
|
+
if (withPRs < total) {
|
|
113
|
+
const local = total - withPRs;
|
|
114
|
+
parts.push(`${local} local only`);
|
|
115
|
+
}
|
|
116
|
+
return `Summary: ${parts.join(', ')}`;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Sort change items based on sort option
|
|
120
|
+
* @param items Change list items
|
|
121
|
+
* @param sort Sort option
|
|
122
|
+
* @returns Sorted items
|
|
123
|
+
*/
|
|
124
|
+
export function sortItems(items, sort = 'activity') {
|
|
125
|
+
const sorted = [...items];
|
|
126
|
+
switch (sort) {
|
|
127
|
+
case 'activity':
|
|
128
|
+
sorted.sort((a, b) => {
|
|
129
|
+
const aTime = a.lastActive?.getTime() ?? 0;
|
|
130
|
+
const bTime = b.lastActive?.getTime() ?? 0;
|
|
131
|
+
return bTime - aTime; // Most recent first
|
|
132
|
+
});
|
|
133
|
+
break;
|
|
134
|
+
case 'progress':
|
|
135
|
+
sorted.sort((a, b) => b.progress.percentage - a.progress.percentage);
|
|
136
|
+
break;
|
|
137
|
+
case 'name':
|
|
138
|
+
sorted.sort((a, b) => a.id.localeCompare(b.id));
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
141
|
+
return sorted;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Filter change items by status
|
|
145
|
+
* @param items Change list items
|
|
146
|
+
* @param status Status to filter by
|
|
147
|
+
* @returns Filtered items
|
|
148
|
+
*/
|
|
149
|
+
export function filterByStatus(items, status) {
|
|
150
|
+
if (!status)
|
|
151
|
+
return items;
|
|
152
|
+
return items.filter(i => i.prStatus === status);
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/utils/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,SAAS,EACT,cAAc,GACf,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,SAAS,EACT,cAAc,GACf,MAAM,aAAa,CAAC"}
|
|
@@ -6,4 +6,5 @@ export { statusWorkflow, type StatusOptions, type StatusResult } from './status.
|
|
|
6
6
|
export { submitWorkflow, type SubmitOptions, type SubmitResult } from './submit.js';
|
|
7
7
|
export { mergeWorkflow, type MergeOptions, type MergeResult } from './merge.js';
|
|
8
8
|
export { implementWorkflow, type ImplementDependencies } from './implement.js';
|
|
9
|
+
export { releaseWorkflow, parseConventionalCommit, suggestVersionBump, bumpVersion, generateChangelog, } from './release.js';
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workflows/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workflows/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,kBAAkB,EAClB,WAAW,EACX,iBAAiB,GAClB,MAAM,cAAc,CAAC"}
|
package/dist/workflows/index.js
CHANGED
|
@@ -6,4 +6,5 @@ export { statusWorkflow } from './status.js';
|
|
|
6
6
|
export { submitWorkflow } from './submit.js';
|
|
7
7
|
export { mergeWorkflow } from './merge.js';
|
|
8
8
|
export { implementWorkflow } from './implement.js';
|
|
9
|
+
export { releaseWorkflow, parseConventionalCommit, suggestVersionBump, bumpVersion, generateChangelog, } from './release.js';
|
|
9
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflows/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAqC,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAyC,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,cAAc,EAAyC,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,aAAa,EAAuC,MAAM,YAAY,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAA8B,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflows/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAqC,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAyC,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,cAAc,EAAyC,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,aAAa,EAAuC,MAAM,YAAY,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAA8B,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,kBAAkB,EAClB,WAAW,EACX,iBAAiB,GAClB,MAAM,cAAc,CAAC"}
|
package/dist/workflows/init.d.ts
CHANGED
|
@@ -20,6 +20,8 @@ export interface InitOptions {
|
|
|
20
20
|
dryRun?: boolean;
|
|
21
21
|
/** Skip draft PR creation (overrides config.createDraftPR) */
|
|
22
22
|
skipDraftPR?: boolean;
|
|
23
|
+
/** Generate tasks using AI based on description */
|
|
24
|
+
generateTasks?: boolean;
|
|
23
25
|
}
|
|
24
26
|
export interface InitResult {
|
|
25
27
|
/** Created branch name */
|
|
@@ -34,6 +36,10 @@ export interface InitResult {
|
|
|
34
36
|
bootstrapResults?: BootstrapResult[];
|
|
35
37
|
/** Draft PR created (if createDraftPR is enabled) */
|
|
36
38
|
pullRequest?: PullRequest;
|
|
39
|
+
/** Whether tasks were AI-generated */
|
|
40
|
+
tasksGenerated?: boolean;
|
|
41
|
+
/** Preview of generated tasks (first few lines) */
|
|
42
|
+
tasksPreview?: string;
|
|
37
43
|
}
|
|
38
44
|
interface InitDependencies {
|
|
39
45
|
git: GitAdapter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/workflows/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,KAAK,eAAe,EAAyB,MAAM,iCAAiC,CAAC;AAC9F,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,eAAe,EAErB,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/workflows/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,KAAK,eAAe,EAAyB,MAAM,iCAAiC,CAAC;AAC9F,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,eAAe,EAErB,MAAM,oCAAoC,CAAC;AAM5C,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAA6B,KAAK,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEjG,MAAM,WAAW,WAAW;IAC1B,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gEAAgE;IAChE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,uCAAuC;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mDAAmD;IACnD,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0BAA0B;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC,qDAAqD;IACrD,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,sCAAsC;IACtC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,gBAAgB;IACxB,GAAG,EAAE,UAAU,CAAC;IAChB,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,cAAc,CAAC;IACvB,0DAA0D;IAC1D,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,4DAA4D;IAC5D,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,gBAAgB,EACtB,UAAU,CAAC,EAAE,gBAAgB,GAC5B,OAAO,CAAC,UAAU,CAAC,CAwMrB"}
|
package/dist/workflows/init.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { createOpenSpecAdapter } from '../adapters/openspec-adapter.js';
|
|
5
5
|
import { createDefaultEnvironmentRegistry, } from '../adapters/environment-adapter.js';
|
|
6
|
+
import { createClaudeCliAdapter, generateTaskGenerationPrompt, parseTaskGenerationResponse, } from '../adapters/claude-cli-adapter.js';
|
|
6
7
|
import { SpecLifeError, ErrorCodes } from '../types.js';
|
|
7
8
|
/**
|
|
8
9
|
* Initialize a new change
|
|
@@ -11,7 +12,7 @@ import { SpecLifeError, ErrorCodes } from '../types.js';
|
|
|
11
12
|
* Use noWorktree to create a branch in the current worktree instead.
|
|
12
13
|
*/
|
|
13
14
|
export async function initWorkflow(options, deps, onProgress) {
|
|
14
|
-
const { changeId, description, noWorktree = false, skipBootstrap = false, dryRun = false, skipDraftPR = false } = options;
|
|
15
|
+
const { changeId, description, noWorktree = false, skipBootstrap = false, dryRun = false, skipDraftPR = false, generateTasks = false } = options;
|
|
15
16
|
const { git, openspec, config, environmentRegistry, github } = deps;
|
|
16
17
|
// Determine if we should create a draft PR
|
|
17
18
|
const shouldCreateDraftPR = config.createDraftPR && !skipDraftPR && !dryRun;
|
|
@@ -48,6 +49,20 @@ export async function initWorkflow(options, deps, onProgress) {
|
|
|
48
49
|
// Scaffold proposal files in current directory
|
|
49
50
|
onProgress?.({ type: 'step_completed', message: 'Scaffolding proposal files' });
|
|
50
51
|
const { proposalPath, tasksPath } = await openspec.scaffoldChange(changeId, { description });
|
|
52
|
+
// Generate tasks using AI if requested
|
|
53
|
+
let tasksGenerated = false;
|
|
54
|
+
let tasksPreview;
|
|
55
|
+
if (generateTasks && description) {
|
|
56
|
+
const result = await generateTasksWithAI({
|
|
57
|
+
changeId,
|
|
58
|
+
description,
|
|
59
|
+
tasksPath,
|
|
60
|
+
cwd: process.cwd(),
|
|
61
|
+
onProgress,
|
|
62
|
+
});
|
|
63
|
+
tasksGenerated = result.success;
|
|
64
|
+
tasksPreview = result.preview;
|
|
65
|
+
}
|
|
51
66
|
// Create draft PR if enabled
|
|
52
67
|
let pullRequest;
|
|
53
68
|
if (shouldCreateDraftPR && github) {
|
|
@@ -67,6 +82,8 @@ export async function initWorkflow(options, deps, onProgress) {
|
|
|
67
82
|
proposalPath,
|
|
68
83
|
tasksPath,
|
|
69
84
|
pullRequest,
|
|
85
|
+
tasksGenerated,
|
|
86
|
+
tasksPreview,
|
|
70
87
|
};
|
|
71
88
|
}
|
|
72
89
|
// Default: Create worktree for isolated development
|
|
@@ -107,6 +124,20 @@ export async function initWorkflow(options, deps, onProgress) {
|
|
|
107
124
|
// Scaffold proposal files in worktree
|
|
108
125
|
onProgress?.({ type: 'step_completed', message: 'Scaffolding proposal files in worktree' });
|
|
109
126
|
const { proposalPath, tasksPath } = await worktreeOpenspec.scaffoldChange(changeId, { description });
|
|
127
|
+
// Generate tasks using AI if requested
|
|
128
|
+
let tasksGenerated = false;
|
|
129
|
+
let tasksPreview;
|
|
130
|
+
if (generateTasks && description) {
|
|
131
|
+
const result = await generateTasksWithAI({
|
|
132
|
+
changeId,
|
|
133
|
+
description,
|
|
134
|
+
tasksPath,
|
|
135
|
+
cwd: worktreePath,
|
|
136
|
+
onProgress,
|
|
137
|
+
});
|
|
138
|
+
tasksGenerated = result.success;
|
|
139
|
+
tasksPreview = result.preview;
|
|
140
|
+
}
|
|
110
141
|
// Create draft PR if enabled
|
|
111
142
|
// For worktree mode, we need a git adapter for the worktree
|
|
112
143
|
let pullRequest;
|
|
@@ -132,8 +163,57 @@ export async function initWorkflow(options, deps, onProgress) {
|
|
|
132
163
|
tasksPath,
|
|
133
164
|
bootstrapResults,
|
|
134
165
|
pullRequest,
|
|
166
|
+
tasksGenerated,
|
|
167
|
+
tasksPreview,
|
|
135
168
|
};
|
|
136
169
|
}
|
|
170
|
+
/**
|
|
171
|
+
* Helper to generate tasks using AI
|
|
172
|
+
*/
|
|
173
|
+
async function generateTasksWithAI(params) {
|
|
174
|
+
const { changeId, description, tasksPath, cwd, onProgress } = params;
|
|
175
|
+
try {
|
|
176
|
+
onProgress?.({ type: 'step_completed', message: 'Generating tasks with AI...' });
|
|
177
|
+
const claudeCli = createClaudeCliAdapter();
|
|
178
|
+
// Check if Claude CLI is available
|
|
179
|
+
if (!await claudeCli.isAvailable()) {
|
|
180
|
+
onProgress?.({ type: 'step_completed', message: 'Claude CLI not available, skipping task generation' });
|
|
181
|
+
return { success: false };
|
|
182
|
+
}
|
|
183
|
+
// Generate prompt
|
|
184
|
+
const prompt = generateTaskGenerationPrompt({
|
|
185
|
+
changeId,
|
|
186
|
+
description,
|
|
187
|
+
});
|
|
188
|
+
// Run Claude CLI
|
|
189
|
+
const result = await claudeCli.run(prompt, {
|
|
190
|
+
cwd,
|
|
191
|
+
maxTokens: 2000,
|
|
192
|
+
});
|
|
193
|
+
if (!result.success) {
|
|
194
|
+
onProgress?.({ type: 'step_completed', message: 'Task generation failed, using empty template' });
|
|
195
|
+
return { success: false };
|
|
196
|
+
}
|
|
197
|
+
// Parse the response
|
|
198
|
+
const tasks = parseTaskGenerationResponse(result.stdout);
|
|
199
|
+
if (!tasks || tasks.length < 10) {
|
|
200
|
+
onProgress?.({ type: 'step_completed', message: 'Generated tasks too short, using empty template' });
|
|
201
|
+
return { success: false };
|
|
202
|
+
}
|
|
203
|
+
// Write tasks to file
|
|
204
|
+
const { writeFile } = await import('fs/promises');
|
|
205
|
+
await writeFile(tasksPath, tasks + '\n');
|
|
206
|
+
// Get preview (first 5 lines)
|
|
207
|
+
const previewLines = tasks.split('\n').slice(0, 5);
|
|
208
|
+
const preview = previewLines.join('\n') + (tasks.split('\n').length > 5 ? '\n...' : '');
|
|
209
|
+
onProgress?.({ type: 'step_completed', message: `Generated ${tasks.split('\n').filter(l => l.includes('[ ]')).length} tasks` });
|
|
210
|
+
return { success: true, preview };
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
onProgress?.({ type: 'step_completed', message: 'Task generation failed, using empty template' });
|
|
214
|
+
return { success: false };
|
|
215
|
+
}
|
|
216
|
+
}
|
|
137
217
|
/**
|
|
138
218
|
* Helper to create initial commit, push, and draft PR
|
|
139
219
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/workflows/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAwB,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC9F,OAAO,EAGL,gCAAgC,GACjC,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/workflows/init.ts"],"names":[],"mappings":"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"}
|