sequant 1.12.0 → 1.13.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/README.md +10 -8
- package/dist/bin/cli.js +19 -9
- package/dist/src/commands/doctor.js +42 -20
- package/dist/src/commands/init.js +152 -65
- package/dist/src/commands/logs.js +7 -6
- package/dist/src/commands/run.d.ts +13 -1
- package/dist/src/commands/run.js +122 -32
- package/dist/src/commands/stats.js +67 -48
- package/dist/src/commands/status.js +30 -12
- package/dist/src/commands/sync.d.ts +28 -0
- package/dist/src/commands/sync.js +102 -0
- package/dist/src/index.d.ts +6 -0
- package/dist/src/index.js +4 -0
- package/dist/src/lib/cli-ui.d.ts +196 -0
- package/dist/src/lib/cli-ui.js +544 -0
- package/dist/src/lib/content-analyzer.d.ts +89 -0
- package/dist/src/lib/content-analyzer.js +437 -0
- package/dist/src/lib/phase-signal.d.ts +94 -0
- package/dist/src/lib/phase-signal.js +171 -0
- package/dist/src/lib/phase-spinner.d.ts +146 -0
- package/dist/src/lib/phase-spinner.js +255 -0
- package/dist/src/lib/solve-comment-parser.d.ts +84 -0
- package/dist/src/lib/solve-comment-parser.js +200 -0
- package/dist/src/lib/stack-config.d.ts +51 -0
- package/dist/src/lib/stack-config.js +77 -0
- package/dist/src/lib/stacks.d.ts +52 -0
- package/dist/src/lib/stacks.js +173 -0
- package/dist/src/lib/templates.d.ts +2 -0
- package/dist/src/lib/templates.js +9 -2
- package/dist/src/lib/upstream/assessment.d.ts +70 -0
- package/dist/src/lib/upstream/assessment.js +385 -0
- package/dist/src/lib/upstream/index.d.ts +11 -0
- package/dist/src/lib/upstream/index.js +14 -0
- package/dist/src/lib/upstream/issues.d.ts +38 -0
- package/dist/src/lib/upstream/issues.js +267 -0
- package/dist/src/lib/upstream/relevance.d.ts +50 -0
- package/dist/src/lib/upstream/relevance.js +209 -0
- package/dist/src/lib/upstream/report.d.ts +29 -0
- package/dist/src/lib/upstream/report.js +391 -0
- package/dist/src/lib/upstream/types.d.ts +207 -0
- package/dist/src/lib/upstream/types.js +5 -0
- package/dist/src/lib/workflow/log-writer.d.ts +1 -1
- package/dist/src/lib/workflow/metrics-schema.d.ts +3 -3
- package/dist/src/lib/workflow/qa-cache.d.ts +199 -0
- package/dist/src/lib/workflow/qa-cache.js +440 -0
- package/dist/src/lib/workflow/run-log-schema.d.ts +34 -6
- package/dist/src/lib/workflow/run-log-schema.js +12 -1
- package/dist/src/lib/workflow/state-schema.d.ts +4 -4
- package/dist/src/lib/workflow/types.d.ts +4 -0
- package/package.json +6 -1
- package/templates/skills/qa/scripts/quality-checks.sh +509 -53
- package/templates/skills/solve/SKILL.md +375 -83
- package/templates/skills/spec/SKILL.md +107 -5
|
@@ -33,9 +33,9 @@ export type Phase = z.infer<typeof PhaseSchema>;
|
|
|
33
33
|
* Phase execution status
|
|
34
34
|
*/
|
|
35
35
|
export declare const PhaseStatusSchema: z.ZodEnum<{
|
|
36
|
-
skipped: "skipped";
|
|
37
36
|
success: "success";
|
|
38
37
|
failure: "failure";
|
|
38
|
+
skipped: "skipped";
|
|
39
39
|
timeout: "timeout";
|
|
40
40
|
}>;
|
|
41
41
|
export type PhaseStatus = z.infer<typeof PhaseStatusSchema>;
|
|
@@ -48,6 +48,16 @@ export declare const IssueStatusSchema: z.ZodEnum<{
|
|
|
48
48
|
partial: "partial";
|
|
49
49
|
}>;
|
|
50
50
|
export type IssueStatus = z.infer<typeof IssueStatusSchema>;
|
|
51
|
+
/**
|
|
52
|
+
* Valid QA verdicts schema
|
|
53
|
+
*/
|
|
54
|
+
export declare const QaVerdictSchema: z.ZodEnum<{
|
|
55
|
+
READY_FOR_MERGE: "READY_FOR_MERGE";
|
|
56
|
+
AC_MET_BUT_NOT_A_PLUS: "AC_MET_BUT_NOT_A_PLUS";
|
|
57
|
+
AC_NOT_MET: "AC_NOT_MET";
|
|
58
|
+
NEEDS_VERIFICATION: "NEEDS_VERIFICATION";
|
|
59
|
+
}>;
|
|
60
|
+
export type QaVerdict = z.infer<typeof QaVerdictSchema>;
|
|
51
61
|
/**
|
|
52
62
|
* Log entry for a single phase execution
|
|
53
63
|
*/
|
|
@@ -66,9 +76,9 @@ export declare const PhaseLogSchema: z.ZodObject<{
|
|
|
66
76
|
endTime: z.ZodString;
|
|
67
77
|
durationSeconds: z.ZodNumber;
|
|
68
78
|
status: z.ZodEnum<{
|
|
69
|
-
skipped: "skipped";
|
|
70
79
|
success: "success";
|
|
71
80
|
failure: "failure";
|
|
81
|
+
skipped: "skipped";
|
|
72
82
|
timeout: "timeout";
|
|
73
83
|
}>;
|
|
74
84
|
error: z.ZodOptional<z.ZodString>;
|
|
@@ -76,6 +86,12 @@ export declare const PhaseLogSchema: z.ZodObject<{
|
|
|
76
86
|
filesModified: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
77
87
|
testsRun: z.ZodOptional<z.ZodNumber>;
|
|
78
88
|
testsPassed: z.ZodOptional<z.ZodNumber>;
|
|
89
|
+
verdict: z.ZodOptional<z.ZodEnum<{
|
|
90
|
+
READY_FOR_MERGE: "READY_FOR_MERGE";
|
|
91
|
+
AC_MET_BUT_NOT_A_PLUS: "AC_MET_BUT_NOT_A_PLUS";
|
|
92
|
+
AC_NOT_MET: "AC_NOT_MET";
|
|
93
|
+
NEEDS_VERIFICATION: "NEEDS_VERIFICATION";
|
|
94
|
+
}>>;
|
|
79
95
|
}, z.core.$strip>;
|
|
80
96
|
export type PhaseLog = z.infer<typeof PhaseLogSchema>;
|
|
81
97
|
/**
|
|
@@ -105,9 +121,9 @@ export declare const IssueLogSchema: z.ZodObject<{
|
|
|
105
121
|
endTime: z.ZodString;
|
|
106
122
|
durationSeconds: z.ZodNumber;
|
|
107
123
|
status: z.ZodEnum<{
|
|
108
|
-
skipped: "skipped";
|
|
109
124
|
success: "success";
|
|
110
125
|
failure: "failure";
|
|
126
|
+
skipped: "skipped";
|
|
111
127
|
timeout: "timeout";
|
|
112
128
|
}>;
|
|
113
129
|
error: z.ZodOptional<z.ZodString>;
|
|
@@ -115,6 +131,12 @@ export declare const IssueLogSchema: z.ZodObject<{
|
|
|
115
131
|
filesModified: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
116
132
|
testsRun: z.ZodOptional<z.ZodNumber>;
|
|
117
133
|
testsPassed: z.ZodOptional<z.ZodNumber>;
|
|
134
|
+
verdict: z.ZodOptional<z.ZodEnum<{
|
|
135
|
+
READY_FOR_MERGE: "READY_FOR_MERGE";
|
|
136
|
+
AC_MET_BUT_NOT_A_PLUS: "AC_MET_BUT_NOT_A_PLUS";
|
|
137
|
+
AC_NOT_MET: "AC_NOT_MET";
|
|
138
|
+
NEEDS_VERIFICATION: "NEEDS_VERIFICATION";
|
|
139
|
+
}>>;
|
|
118
140
|
}, z.core.$strip>>;
|
|
119
141
|
totalDurationSeconds: z.ZodNumber;
|
|
120
142
|
}, z.core.$strip>;
|
|
@@ -195,9 +217,9 @@ export declare const RunLogSchema: z.ZodObject<{
|
|
|
195
217
|
endTime: z.ZodString;
|
|
196
218
|
durationSeconds: z.ZodNumber;
|
|
197
219
|
status: z.ZodEnum<{
|
|
198
|
-
skipped: "skipped";
|
|
199
220
|
success: "success";
|
|
200
221
|
failure: "failure";
|
|
222
|
+
skipped: "skipped";
|
|
201
223
|
timeout: "timeout";
|
|
202
224
|
}>;
|
|
203
225
|
error: z.ZodOptional<z.ZodString>;
|
|
@@ -205,6 +227,12 @@ export declare const RunLogSchema: z.ZodObject<{
|
|
|
205
227
|
filesModified: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
206
228
|
testsRun: z.ZodOptional<z.ZodNumber>;
|
|
207
229
|
testsPassed: z.ZodOptional<z.ZodNumber>;
|
|
230
|
+
verdict: z.ZodOptional<z.ZodEnum<{
|
|
231
|
+
READY_FOR_MERGE: "READY_FOR_MERGE";
|
|
232
|
+
AC_MET_BUT_NOT_A_PLUS: "AC_MET_BUT_NOT_A_PLUS";
|
|
233
|
+
AC_NOT_MET: "AC_NOT_MET";
|
|
234
|
+
NEEDS_VERIFICATION: "NEEDS_VERIFICATION";
|
|
235
|
+
}>>;
|
|
208
236
|
}, z.core.$strip>>;
|
|
209
237
|
totalDurationSeconds: z.ZodNumber;
|
|
210
238
|
}, z.core.$strip>>;
|
|
@@ -253,10 +281,10 @@ export declare function createPhaseLog(phase: Phase, issueNumber: number): Omit<
|
|
|
253
281
|
*
|
|
254
282
|
* @param phaseLog - Partial phase log
|
|
255
283
|
* @param status - Final status
|
|
256
|
-
* @param options - Additional fields (error, filesModified, etc.)
|
|
284
|
+
* @param options - Additional fields (error, filesModified, verdict, etc.)
|
|
257
285
|
* @returns Complete PhaseLog
|
|
258
286
|
*/
|
|
259
|
-
export declare function completePhaseLog(phaseLog: Omit<PhaseLog, "endTime" | "durationSeconds" | "status">, status: PhaseStatus, options?: Partial<Pick<PhaseLog, "error" | "iterations" | "filesModified" | "testsRun" | "testsPassed">>): PhaseLog;
|
|
287
|
+
export declare function completePhaseLog(phaseLog: Omit<PhaseLog, "endTime" | "durationSeconds" | "status">, status: PhaseStatus, options?: Partial<Pick<PhaseLog, "error" | "iterations" | "filesModified" | "testsRun" | "testsPassed" | "verdict">>): PhaseLog;
|
|
260
288
|
/**
|
|
261
289
|
* Finalize a run log with summary statistics
|
|
262
290
|
*
|
|
@@ -42,6 +42,15 @@ export const PhaseStatusSchema = z.enum([
|
|
|
42
42
|
* Issue execution status
|
|
43
43
|
*/
|
|
44
44
|
export const IssueStatusSchema = z.enum(["success", "failure", "partial"]);
|
|
45
|
+
/**
|
|
46
|
+
* Valid QA verdicts schema
|
|
47
|
+
*/
|
|
48
|
+
export const QaVerdictSchema = z.enum([
|
|
49
|
+
"READY_FOR_MERGE",
|
|
50
|
+
"AC_MET_BUT_NOT_A_PLUS",
|
|
51
|
+
"AC_NOT_MET",
|
|
52
|
+
"NEEDS_VERIFICATION",
|
|
53
|
+
]);
|
|
45
54
|
/**
|
|
46
55
|
* Log entry for a single phase execution
|
|
47
56
|
*/
|
|
@@ -68,6 +77,8 @@ export const PhaseLogSchema = z.object({
|
|
|
68
77
|
testsRun: z.number().int().nonnegative().optional(),
|
|
69
78
|
/** Number of tests passed */
|
|
70
79
|
testsPassed: z.number().int().nonnegative().optional(),
|
|
80
|
+
/** Parsed QA verdict (only for qa phase) */
|
|
81
|
+
verdict: QaVerdictSchema.optional(),
|
|
71
82
|
});
|
|
72
83
|
/**
|
|
73
84
|
* Complete execution record for a single issue
|
|
@@ -195,7 +206,7 @@ export function createPhaseLog(phase, issueNumber) {
|
|
|
195
206
|
*
|
|
196
207
|
* @param phaseLog - Partial phase log
|
|
197
208
|
* @param status - Final status
|
|
198
|
-
* @param options - Additional fields (error, filesModified, etc.)
|
|
209
|
+
* @param options - Additional fields (error, filesModified, verdict, etc.)
|
|
199
210
|
* @returns Complete PhaseLog
|
|
200
211
|
*/
|
|
201
212
|
export function completePhaseLog(phaseLog, status, options) {
|
|
@@ -25,9 +25,9 @@ export declare const WORKFLOW_PHASES: readonly ["spec", "security-review", "exec
|
|
|
25
25
|
* Phase status - tracks individual phase progress
|
|
26
26
|
*/
|
|
27
27
|
export declare const PhaseStatusSchema: z.ZodEnum<{
|
|
28
|
+
pending: "pending";
|
|
28
29
|
skipped: "skipped";
|
|
29
30
|
completed: "completed";
|
|
30
|
-
pending: "pending";
|
|
31
31
|
in_progress: "in_progress";
|
|
32
32
|
failed: "failed";
|
|
33
33
|
}>;
|
|
@@ -65,9 +65,9 @@ export type Phase = z.infer<typeof PhaseSchema>;
|
|
|
65
65
|
*/
|
|
66
66
|
export declare const PhaseStateSchema: z.ZodObject<{
|
|
67
67
|
status: z.ZodEnum<{
|
|
68
|
+
pending: "pending";
|
|
68
69
|
skipped: "skipped";
|
|
69
70
|
completed: "completed";
|
|
70
|
-
pending: "pending";
|
|
71
71
|
in_progress: "in_progress";
|
|
72
72
|
failed: "failed";
|
|
73
73
|
}>;
|
|
@@ -198,9 +198,9 @@ export declare const IssueStateSchema: z.ZodObject<{
|
|
|
198
198
|
}>>;
|
|
199
199
|
phases: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
200
200
|
status: z.ZodEnum<{
|
|
201
|
+
pending: "pending";
|
|
201
202
|
skipped: "skipped";
|
|
202
203
|
completed: "completed";
|
|
203
|
-
pending: "pending";
|
|
204
204
|
in_progress: "in_progress";
|
|
205
205
|
failed: "failed";
|
|
206
206
|
}>;
|
|
@@ -286,9 +286,9 @@ export declare const WorkflowStateSchema: z.ZodObject<{
|
|
|
286
286
|
}>>;
|
|
287
287
|
phases: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
288
288
|
status: z.ZodEnum<{
|
|
289
|
+
pending: "pending";
|
|
289
290
|
skipped: "skipped";
|
|
290
291
|
completed: "completed";
|
|
291
|
-
pending: "pending";
|
|
292
292
|
in_progress: "in_progress";
|
|
293
293
|
failed: "failed";
|
|
294
294
|
}>;
|
|
@@ -40,6 +40,8 @@ export interface ExecutionConfig {
|
|
|
40
40
|
* Default execution configuration
|
|
41
41
|
*/
|
|
42
42
|
export declare const DEFAULT_CONFIG: ExecutionConfig;
|
|
43
|
+
import type { QaVerdict } from "./run-log-schema.js";
|
|
44
|
+
export type { QaVerdict } from "./run-log-schema.js";
|
|
43
45
|
/**
|
|
44
46
|
* Result of executing a single phase
|
|
45
47
|
*/
|
|
@@ -50,6 +52,8 @@ export interface PhaseResult {
|
|
|
50
52
|
error?: string;
|
|
51
53
|
/** Captured output from the phase (used for parsing spec recommendations) */
|
|
52
54
|
output?: string;
|
|
55
|
+
/** Parsed QA verdict (only for qa phase) */
|
|
56
|
+
verdict?: QaVerdict;
|
|
53
57
|
}
|
|
54
58
|
/**
|
|
55
59
|
* Result of executing all phases for an issue
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sequant",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.13.1",
|
|
4
4
|
"description": "Quantize your development workflow - Sequential AI phases with quality gates",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -56,19 +56,24 @@
|
|
|
56
56
|
"dependencies": {
|
|
57
57
|
"@anthropic-ai/claude-agent-sdk": "^0.2.11",
|
|
58
58
|
"@hono/node-server": "^1.19.9",
|
|
59
|
+
"boxen": "^8.0.1",
|
|
59
60
|
"chalk": "^5.3.0",
|
|
60
61
|
"chokidar": "^5.0.0",
|
|
62
|
+
"cli-table3": "^0.6.5",
|
|
61
63
|
"commander": "^12.1.0",
|
|
62
64
|
"diff": "^7.0.0",
|
|
65
|
+
"gradient-string": "^3.0.0",
|
|
63
66
|
"hono": "^4.11.4",
|
|
64
67
|
"inquirer": "^12.3.2",
|
|
65
68
|
"open": "^11.0.0",
|
|
69
|
+
"ora": "^8.2.0",
|
|
66
70
|
"yaml": "^2.7.0",
|
|
67
71
|
"zod": "^4.3.5"
|
|
68
72
|
},
|
|
69
73
|
"devDependencies": {
|
|
70
74
|
"@eslint/js": "^9.39.2",
|
|
71
75
|
"@types/diff": "^7.0.0",
|
|
76
|
+
"@types/gradient-string": "^1.1.6",
|
|
72
77
|
"@types/inquirer": "^9.0.7",
|
|
73
78
|
"@types/node": "^22.10.5",
|
|
74
79
|
"@typescript-eslint/eslint-plugin": "^8.52.0",
|