@promptwheel/core 0.6.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.
- package/dist/codebase-index/index.d.ts +23 -0
- package/dist/codebase-index/index.d.ts.map +1 -0
- package/dist/codebase-index/index.js +361 -0
- package/dist/codebase-index/index.js.map +1 -0
- package/dist/codebase-index/shared.d.ts +95 -0
- package/dist/codebase-index/shared.d.ts.map +1 -0
- package/dist/codebase-index/shared.js +319 -0
- package/dist/codebase-index/shared.js.map +1 -0
- package/dist/config/defaults.d.ts +45 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +79 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/critic/shared.d.ts +49 -0
- package/dist/critic/shared.d.ts.map +1 -0
- package/dist/critic/shared.js +204 -0
- package/dist/critic/shared.js.map +1 -0
- package/dist/db/adapter.d.ts +191 -0
- package/dist/db/adapter.d.ts.map +1 -0
- package/dist/db/adapter.js +40 -0
- package/dist/db/adapter.js.map +1 -0
- package/dist/db/contract.d.ts +47 -0
- package/dist/db/contract.d.ts.map +1 -0
- package/dist/db/contract.js +258 -0
- package/dist/db/contract.js.map +1 -0
- package/dist/db/index.d.ts +6 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +7 -0
- package/dist/db/index.js.map +1 -0
- package/dist/dedup/shared.d.ts +82 -0
- package/dist/dedup/shared.d.ts.map +1 -0
- package/dist/dedup/shared.js +215 -0
- package/dist/dedup/shared.js.map +1 -0
- package/dist/exec/index.d.ts +5 -0
- package/dist/exec/index.d.ts.map +1 -0
- package/dist/exec/index.js +5 -0
- package/dist/exec/index.js.map +1 -0
- package/dist/exec/types.d.ts +64 -0
- package/dist/exec/types.d.ts.map +1 -0
- package/dist/exec/types.js +8 -0
- package/dist/exec/types.js.map +1 -0
- package/dist/formulas/shared.d.ts +42 -0
- package/dist/formulas/shared.d.ts.map +1 -0
- package/dist/formulas/shared.js +204 -0
- package/dist/formulas/shared.js.map +1 -0
- package/dist/guidelines/shared.d.ts +46 -0
- package/dist/guidelines/shared.d.ts.map +1 -0
- package/dist/guidelines/shared.js +128 -0
- package/dist/guidelines/shared.js.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -0
- package/dist/learnings/shared.d.ts +112 -0
- package/dist/learnings/shared.d.ts.map +1 -0
- package/dist/learnings/shared.js +402 -0
- package/dist/learnings/shared.js.map +1 -0
- package/dist/proposals/shared.d.ts +137 -0
- package/dist/proposals/shared.d.ts.map +1 -0
- package/dist/proposals/shared.js +254 -0
- package/dist/proposals/shared.js.map +1 -0
- package/dist/repos/index.d.ts +15 -0
- package/dist/repos/index.d.ts.map +1 -0
- package/dist/repos/index.js +11 -0
- package/dist/repos/index.js.map +1 -0
- package/dist/repos/projects.d.ts +41 -0
- package/dist/repos/projects.d.ts.map +1 -0
- package/dist/repos/projects.js +75 -0
- package/dist/repos/projects.js.map +1 -0
- package/dist/repos/run_steps.d.ts +152 -0
- package/dist/repos/run_steps.d.ts.map +1 -0
- package/dist/repos/run_steps.js +328 -0
- package/dist/repos/run_steps.js.map +1 -0
- package/dist/repos/runs.d.ts +92 -0
- package/dist/repos/runs.d.ts.map +1 -0
- package/dist/repos/runs.js +185 -0
- package/dist/repos/runs.js.map +1 -0
- package/dist/repos/tickets.d.ts +71 -0
- package/dist/repos/tickets.d.ts.map +1 -0
- package/dist/repos/tickets.js +158 -0
- package/dist/repos/tickets.js.map +1 -0
- package/dist/scope/shared.d.ts +67 -0
- package/dist/scope/shared.d.ts.map +1 -0
- package/dist/scope/shared.js +355 -0
- package/dist/scope/shared.js.map +1 -0
- package/dist/scout/index.d.ts +18 -0
- package/dist/scout/index.d.ts.map +1 -0
- package/dist/scout/index.js +445 -0
- package/dist/scout/index.js.map +1 -0
- package/dist/scout/kimi-runner.d.ts +21 -0
- package/dist/scout/kimi-runner.d.ts.map +1 -0
- package/dist/scout/kimi-runner.js +76 -0
- package/dist/scout/kimi-runner.js.map +1 -0
- package/dist/scout/mcp-batch-server.d.ts +37 -0
- package/dist/scout/mcp-batch-server.d.ts.map +1 -0
- package/dist/scout/mcp-batch-server.js +144 -0
- package/dist/scout/mcp-batch-server.js.map +1 -0
- package/dist/scout/openai-local-runner.d.ts +20 -0
- package/dist/scout/openai-local-runner.d.ts.map +1 -0
- package/dist/scout/openai-local-runner.js +82 -0
- package/dist/scout/openai-local-runner.js.map +1 -0
- package/dist/scout/prompt.d.ts +49 -0
- package/dist/scout/prompt.d.ts.map +1 -0
- package/dist/scout/prompt.js +153 -0
- package/dist/scout/prompt.js.map +1 -0
- package/dist/scout/runner.d.ts +101 -0
- package/dist/scout/runner.d.ts.map +1 -0
- package/dist/scout/runner.js +521 -0
- package/dist/scout/runner.js.map +1 -0
- package/dist/scout/scanner.d.ts +61 -0
- package/dist/scout/scanner.d.ts.map +1 -0
- package/dist/scout/scanner.js +315 -0
- package/dist/scout/scanner.js.map +1 -0
- package/dist/scout/types.d.ts +221 -0
- package/dist/scout/types.d.ts.map +1 -0
- package/dist/scout/types.js +44 -0
- package/dist/scout/types.js.map +1 -0
- package/dist/sectors/shared.d.ts +146 -0
- package/dist/sectors/shared.d.ts.map +1 -0
- package/dist/sectors/shared.js +408 -0
- package/dist/sectors/shared.js.map +1 -0
- package/dist/services/index.d.ts +10 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +9 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/qa.d.ts +76 -0
- package/dist/services/qa.d.ts.map +1 -0
- package/dist/services/qa.js +228 -0
- package/dist/services/qa.js.map +1 -0
- package/dist/services/scout.d.ts +164 -0
- package/dist/services/scout.d.ts.map +1 -0
- package/dist/services/scout.js +215 -0
- package/dist/services/scout.js.map +1 -0
- package/dist/spindle/shared.d.ts +14 -0
- package/dist/spindle/shared.d.ts.map +1 -0
- package/dist/spindle/shared.js +65 -0
- package/dist/spindle/shared.js.map +1 -0
- package/dist/tools/shared.d.ts +35 -0
- package/dist/tools/shared.d.ts.map +1 -0
- package/dist/tools/shared.js +247 -0
- package/dist/tools/shared.js.map +1 -0
- package/dist/trace/shared.d.ts +147 -0
- package/dist/trace/shared.d.ts.map +1 -0
- package/dist/trace/shared.js +414 -0
- package/dist/trace/shared.js.map +1 -0
- package/dist/trajectory/shared.d.ts +69 -0
- package/dist/trajectory/shared.d.ts.map +1 -0
- package/dist/trajectory/shared.js +336 -0
- package/dist/trajectory/shared.js.map +1 -0
- package/dist/utils/id.d.ts +12 -0
- package/dist/utils/id.d.ts.map +1 -0
- package/dist/utils/id.js +24 -0
- package/dist/utils/id.js.map +1 -0
- package/dist/utils/id.test.d.ts +5 -0
- package/dist/utils/id.test.d.ts.map +1 -0
- package/dist/utils/id.test.js +173 -0
- package/dist/utils/id.test.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/json.d.ts +9 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/dist/utils/json.js +19 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/waves/shared.d.ts +106 -0
- package/dist/waves/shared.d.ts.map +1 -0
- package/dist/waves/shared.js +356 -0
- package/dist/waves/shared.js.map +1 -0
- package/package.json +126 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run Steps repository - Database operations for run steps
|
|
3
|
+
*
|
|
4
|
+
* Steps are individual commands/actions within a run (e.g., QA commands).
|
|
5
|
+
* Supports retry attempts with full history preserved.
|
|
6
|
+
*/
|
|
7
|
+
import type { DatabaseAdapter } from '../db/adapter.js';
|
|
8
|
+
export type StepStatus = 'queued' | 'running' | 'success' | 'failed' | 'skipped' | 'canceled';
|
|
9
|
+
export type StepKind = 'command' | 'llm_fix' | 'git' | 'internal';
|
|
10
|
+
export interface RunStep {
|
|
11
|
+
id: string;
|
|
12
|
+
runId: string;
|
|
13
|
+
attempt: number;
|
|
14
|
+
ordinal: number;
|
|
15
|
+
name: string;
|
|
16
|
+
kind: StepKind;
|
|
17
|
+
status: StepStatus;
|
|
18
|
+
cmd: string | null;
|
|
19
|
+
cwd: string | null;
|
|
20
|
+
timeoutMs: number | null;
|
|
21
|
+
exitCode: number | null;
|
|
22
|
+
signal: string | null;
|
|
23
|
+
startedAtMs: number | null;
|
|
24
|
+
endedAtMs: number | null;
|
|
25
|
+
durationMs: number | null;
|
|
26
|
+
stdoutPath: string | null;
|
|
27
|
+
stderrPath: string | null;
|
|
28
|
+
stdoutBytes: number;
|
|
29
|
+
stderrBytes: number;
|
|
30
|
+
stdoutTruncated: boolean;
|
|
31
|
+
stderrTruncated: boolean;
|
|
32
|
+
stdoutTail: string | null;
|
|
33
|
+
stderrTail: string | null;
|
|
34
|
+
errorMessage: string | null;
|
|
35
|
+
metadata: Record<string, unknown>;
|
|
36
|
+
createdAtMs: number;
|
|
37
|
+
updatedAtMs: number;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get step by ID
|
|
41
|
+
*/
|
|
42
|
+
export declare function getById(db: DatabaseAdapter, id: string): Promise<RunStep | null>;
|
|
43
|
+
/**
|
|
44
|
+
* Create a new step
|
|
45
|
+
*/
|
|
46
|
+
export declare function create(db: DatabaseAdapter, opts: {
|
|
47
|
+
runId: string;
|
|
48
|
+
attempt?: number;
|
|
49
|
+
ordinal: number;
|
|
50
|
+
name: string;
|
|
51
|
+
kind?: StepKind;
|
|
52
|
+
cmd?: string;
|
|
53
|
+
cwd?: string;
|
|
54
|
+
timeoutMs?: number;
|
|
55
|
+
metadata?: Record<string, unknown>;
|
|
56
|
+
}): Promise<RunStep>;
|
|
57
|
+
/**
|
|
58
|
+
* Create multiple steps at once (for initializing a QA run)
|
|
59
|
+
*/
|
|
60
|
+
export declare function createMany(db: DatabaseAdapter, runId: string, steps: Array<{
|
|
61
|
+
name: string;
|
|
62
|
+
cmd: string;
|
|
63
|
+
cwd?: string;
|
|
64
|
+
timeoutMs?: number;
|
|
65
|
+
}>, attempt?: number): Promise<RunStep[]>;
|
|
66
|
+
/**
|
|
67
|
+
* Mark step as started
|
|
68
|
+
*/
|
|
69
|
+
export declare function markStarted(db: DatabaseAdapter, id: string): Promise<RunStep | null>;
|
|
70
|
+
/**
|
|
71
|
+
* Mark step as successful
|
|
72
|
+
*/
|
|
73
|
+
export declare function markSuccess(db: DatabaseAdapter, id: string, opts?: {
|
|
74
|
+
exitCode?: number;
|
|
75
|
+
stdoutPath?: string;
|
|
76
|
+
stderrPath?: string;
|
|
77
|
+
stdoutBytes?: number;
|
|
78
|
+
stderrBytes?: number;
|
|
79
|
+
stdoutTruncated?: boolean;
|
|
80
|
+
stderrTruncated?: boolean;
|
|
81
|
+
stdoutTail?: string;
|
|
82
|
+
stderrTail?: string;
|
|
83
|
+
metadata?: Record<string, unknown>;
|
|
84
|
+
}): Promise<RunStep | null>;
|
|
85
|
+
/**
|
|
86
|
+
* Mark step as failed
|
|
87
|
+
*/
|
|
88
|
+
export declare function markFailed(db: DatabaseAdapter, id: string, opts: {
|
|
89
|
+
exitCode?: number;
|
|
90
|
+
signal?: string;
|
|
91
|
+
errorMessage?: string;
|
|
92
|
+
stdoutPath?: string;
|
|
93
|
+
stderrPath?: string;
|
|
94
|
+
stdoutBytes?: number;
|
|
95
|
+
stderrBytes?: number;
|
|
96
|
+
stdoutTruncated?: boolean;
|
|
97
|
+
stderrTruncated?: boolean;
|
|
98
|
+
stdoutTail?: string;
|
|
99
|
+
stderrTail?: string;
|
|
100
|
+
metadata?: Record<string, unknown>;
|
|
101
|
+
}): Promise<RunStep | null>;
|
|
102
|
+
/**
|
|
103
|
+
* Mark step as skipped
|
|
104
|
+
*/
|
|
105
|
+
export declare function markSkipped(db: DatabaseAdapter, id: string, reason?: string): Promise<RunStep | null>;
|
|
106
|
+
/**
|
|
107
|
+
* Mark step as canceled
|
|
108
|
+
*/
|
|
109
|
+
export declare function markCanceled(db: DatabaseAdapter, id: string, reason?: string): Promise<RunStep | null>;
|
|
110
|
+
/**
|
|
111
|
+
* List steps for a run
|
|
112
|
+
*/
|
|
113
|
+
export declare function listByRun(db: DatabaseAdapter, runId: string, opts?: {
|
|
114
|
+
attempt?: number;
|
|
115
|
+
status?: StepStatus | StepStatus[];
|
|
116
|
+
}): Promise<RunStep[]>;
|
|
117
|
+
/**
|
|
118
|
+
* Get the latest attempt number for a run
|
|
119
|
+
*/
|
|
120
|
+
export declare function getLatestAttempt(db: DatabaseAdapter, runId: string): Promise<number>;
|
|
121
|
+
/**
|
|
122
|
+
* Get step counts for a run attempt
|
|
123
|
+
*/
|
|
124
|
+
export interface StepCounts {
|
|
125
|
+
passed: number;
|
|
126
|
+
failed: number;
|
|
127
|
+
active: number;
|
|
128
|
+
skipped: number;
|
|
129
|
+
total: number;
|
|
130
|
+
}
|
|
131
|
+
export declare function getStepCounts(db: DatabaseAdapter, runId: string, attempt?: number): Promise<StepCounts>;
|
|
132
|
+
/**
|
|
133
|
+
* Get the first failed step for a run attempt
|
|
134
|
+
*/
|
|
135
|
+
export declare function getFirstFailedStep(db: DatabaseAdapter, runId: string, attempt?: number): Promise<RunStep | null>;
|
|
136
|
+
/**
|
|
137
|
+
* Get the currently running step for a run
|
|
138
|
+
*/
|
|
139
|
+
export declare function getRunningStep(db: DatabaseAdapter, runId: string, attempt?: number): Promise<RunStep | null>;
|
|
140
|
+
/**
|
|
141
|
+
* Get run step summary for display
|
|
142
|
+
*/
|
|
143
|
+
export interface StepSummary {
|
|
144
|
+
runId: string;
|
|
145
|
+
latestAttempt: number;
|
|
146
|
+
counts: StepCounts;
|
|
147
|
+
firstFailedStep: string | null;
|
|
148
|
+
runningStep: string | null;
|
|
149
|
+
totalDurationMs: number;
|
|
150
|
+
}
|
|
151
|
+
export declare function getSummary(db: DatabaseAdapter, runId: string): Promise<StepSummary>;
|
|
152
|
+
//# sourceMappingURL=run_steps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run_steps.d.ts","sourceRoot":"","sources":["../../src/repos/run_steps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run Steps repository - Database operations for run steps
|
|
3
|
+
*
|
|
4
|
+
* Steps are individual commands/actions within a run (e.g., QA commands).
|
|
5
|
+
* Supports retry attempts with full history preserved.
|
|
6
|
+
*/
|
|
7
|
+
import { nanoid } from '../utils/id.js';
|
|
8
|
+
function rowToStep(row) {
|
|
9
|
+
return {
|
|
10
|
+
id: row.id,
|
|
11
|
+
runId: row.run_id,
|
|
12
|
+
attempt: row.attempt,
|
|
13
|
+
ordinal: row.ordinal,
|
|
14
|
+
name: row.name,
|
|
15
|
+
kind: row.kind,
|
|
16
|
+
status: row.status,
|
|
17
|
+
cmd: row.cmd,
|
|
18
|
+
cwd: row.cwd,
|
|
19
|
+
timeoutMs: row.timeout_ms,
|
|
20
|
+
exitCode: row.exit_code,
|
|
21
|
+
signal: row.signal,
|
|
22
|
+
startedAtMs: row.started_at_ms,
|
|
23
|
+
endedAtMs: row.ended_at_ms,
|
|
24
|
+
durationMs: row.duration_ms,
|
|
25
|
+
stdoutPath: row.stdout_path,
|
|
26
|
+
stderrPath: row.stderr_path,
|
|
27
|
+
stdoutBytes: row.stdout_bytes,
|
|
28
|
+
stderrBytes: row.stderr_bytes,
|
|
29
|
+
stdoutTruncated: row.stdout_truncated === 1,
|
|
30
|
+
stderrTruncated: row.stderr_truncated === 1,
|
|
31
|
+
stdoutTail: row.stdout_tail,
|
|
32
|
+
stderrTail: row.stderr_tail,
|
|
33
|
+
errorMessage: row.error_message,
|
|
34
|
+
metadata: row.meta_json ? JSON.parse(row.meta_json) : {},
|
|
35
|
+
createdAtMs: row.created_at_ms,
|
|
36
|
+
updatedAtMs: row.updated_at_ms,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get step by ID
|
|
41
|
+
*/
|
|
42
|
+
export async function getById(db, id) {
|
|
43
|
+
const result = await db.query('SELECT * FROM run_steps WHERE id = $1', [id]);
|
|
44
|
+
return result.rows[0] ? rowToStep(result.rows[0]) : null;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Create a new step
|
|
48
|
+
*/
|
|
49
|
+
export async function create(db, opts) {
|
|
50
|
+
const id = `stp_${nanoid(12)}`;
|
|
51
|
+
const now = Date.now();
|
|
52
|
+
await db.query(`INSERT INTO run_steps (
|
|
53
|
+
id, run_id, attempt, ordinal, name, kind,
|
|
54
|
+
cmd, cwd, timeout_ms, meta_json,
|
|
55
|
+
created_at_ms, updated_at_ms
|
|
56
|
+
) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)`, [
|
|
57
|
+
id,
|
|
58
|
+
opts.runId,
|
|
59
|
+
opts.attempt ?? 1,
|
|
60
|
+
opts.ordinal,
|
|
61
|
+
opts.name,
|
|
62
|
+
opts.kind ?? 'command',
|
|
63
|
+
opts.cmd ?? null,
|
|
64
|
+
opts.cwd ?? null,
|
|
65
|
+
opts.timeoutMs ?? null,
|
|
66
|
+
JSON.stringify(opts.metadata ?? {}),
|
|
67
|
+
now,
|
|
68
|
+
now,
|
|
69
|
+
]);
|
|
70
|
+
const step = await getById(db, id);
|
|
71
|
+
if (!step) {
|
|
72
|
+
throw new Error('Failed to create run step');
|
|
73
|
+
}
|
|
74
|
+
return step;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Create multiple steps at once (for initializing a QA run)
|
|
78
|
+
*/
|
|
79
|
+
export async function createMany(db, runId, steps, attempt = 1) {
|
|
80
|
+
return db.withTransaction(async (tx) => {
|
|
81
|
+
const created = [];
|
|
82
|
+
for (let i = 0; i < steps.length; i++) {
|
|
83
|
+
const id = `stp_${nanoid(12)}`;
|
|
84
|
+
const now = Date.now();
|
|
85
|
+
await tx.query(`INSERT INTO run_steps (
|
|
86
|
+
id, run_id, attempt, ordinal, name, kind,
|
|
87
|
+
cmd, cwd, timeout_ms, meta_json,
|
|
88
|
+
created_at_ms, updated_at_ms
|
|
89
|
+
) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)`, [
|
|
90
|
+
id, runId, attempt, i, steps[i].name, 'command',
|
|
91
|
+
steps[i].cmd, steps[i].cwd ?? null, steps[i].timeoutMs ?? null,
|
|
92
|
+
JSON.stringify({}), now, now,
|
|
93
|
+
]);
|
|
94
|
+
const result = await tx.query('SELECT * FROM run_steps WHERE id = $1', [id]);
|
|
95
|
+
if (!result.rows[0])
|
|
96
|
+
throw new Error('Failed to create run step');
|
|
97
|
+
created.push(rowToStep(result.rows[0]));
|
|
98
|
+
}
|
|
99
|
+
return created;
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Mark step as started
|
|
104
|
+
*/
|
|
105
|
+
export async function markStarted(db, id) {
|
|
106
|
+
const now = Date.now();
|
|
107
|
+
await db.query(`UPDATE run_steps SET
|
|
108
|
+
status = 'running',
|
|
109
|
+
started_at_ms = $1,
|
|
110
|
+
updated_at_ms = $2
|
|
111
|
+
WHERE id = $3`, [now, now, id]);
|
|
112
|
+
return getById(db, id);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Mark step as successful
|
|
116
|
+
*/
|
|
117
|
+
export async function markSuccess(db, id, opts) {
|
|
118
|
+
const existing = await getById(db, id);
|
|
119
|
+
if (!existing)
|
|
120
|
+
return null;
|
|
121
|
+
const now = Date.now();
|
|
122
|
+
const durationMs = existing.startedAtMs ? now - existing.startedAtMs : null;
|
|
123
|
+
const merged = { ...existing.metadata, ...opts?.metadata };
|
|
124
|
+
await db.query(`UPDATE run_steps SET
|
|
125
|
+
status = 'success',
|
|
126
|
+
exit_code = $1,
|
|
127
|
+
ended_at_ms = $2,
|
|
128
|
+
duration_ms = $3,
|
|
129
|
+
stdout_path = COALESCE($4, stdout_path),
|
|
130
|
+
stderr_path = COALESCE($5, stderr_path),
|
|
131
|
+
stdout_bytes = COALESCE($6, stdout_bytes),
|
|
132
|
+
stderr_bytes = COALESCE($7, stderr_bytes),
|
|
133
|
+
stdout_truncated = COALESCE($8, stdout_truncated),
|
|
134
|
+
stderr_truncated = COALESCE($9, stderr_truncated),
|
|
135
|
+
stdout_tail = COALESCE($10, stdout_tail),
|
|
136
|
+
stderr_tail = COALESCE($11, stderr_tail),
|
|
137
|
+
meta_json = $12,
|
|
138
|
+
updated_at_ms = $13
|
|
139
|
+
WHERE id = $14`, [
|
|
140
|
+
opts?.exitCode ?? 0,
|
|
141
|
+
now,
|
|
142
|
+
durationMs,
|
|
143
|
+
opts?.stdoutPath ?? null,
|
|
144
|
+
opts?.stderrPath ?? null,
|
|
145
|
+
opts?.stdoutBytes ?? null,
|
|
146
|
+
opts?.stderrBytes ?? null,
|
|
147
|
+
opts?.stdoutTruncated ? 1 : null,
|
|
148
|
+
opts?.stderrTruncated ? 1 : null,
|
|
149
|
+
opts?.stdoutTail ?? null,
|
|
150
|
+
opts?.stderrTail ?? null,
|
|
151
|
+
JSON.stringify(merged),
|
|
152
|
+
now,
|
|
153
|
+
id,
|
|
154
|
+
]);
|
|
155
|
+
return getById(db, id);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Mark step as failed
|
|
159
|
+
*/
|
|
160
|
+
export async function markFailed(db, id, opts) {
|
|
161
|
+
const existing = await getById(db, id);
|
|
162
|
+
if (!existing)
|
|
163
|
+
return null;
|
|
164
|
+
const now = Date.now();
|
|
165
|
+
const durationMs = existing.startedAtMs ? now - existing.startedAtMs : null;
|
|
166
|
+
const merged = { ...existing.metadata, ...opts.metadata };
|
|
167
|
+
await db.query(`UPDATE run_steps SET
|
|
168
|
+
status = 'failed',
|
|
169
|
+
exit_code = $1,
|
|
170
|
+
signal = $2,
|
|
171
|
+
error_message = $3,
|
|
172
|
+
ended_at_ms = $4,
|
|
173
|
+
duration_ms = $5,
|
|
174
|
+
stdout_path = COALESCE($6, stdout_path),
|
|
175
|
+
stderr_path = COALESCE($7, stderr_path),
|
|
176
|
+
stdout_bytes = COALESCE($8, stdout_bytes),
|
|
177
|
+
stderr_bytes = COALESCE($9, stderr_bytes),
|
|
178
|
+
stdout_truncated = COALESCE($10, stdout_truncated),
|
|
179
|
+
stderr_truncated = COALESCE($11, stderr_truncated),
|
|
180
|
+
stdout_tail = COALESCE($12, stdout_tail),
|
|
181
|
+
stderr_tail = COALESCE($13, stderr_tail),
|
|
182
|
+
meta_json = $14,
|
|
183
|
+
updated_at_ms = $15
|
|
184
|
+
WHERE id = $16`, [
|
|
185
|
+
opts.exitCode ?? null,
|
|
186
|
+
opts.signal ?? null,
|
|
187
|
+
opts.errorMessage ?? null,
|
|
188
|
+
now,
|
|
189
|
+
durationMs,
|
|
190
|
+
opts.stdoutPath ?? null,
|
|
191
|
+
opts.stderrPath ?? null,
|
|
192
|
+
opts.stdoutBytes ?? null,
|
|
193
|
+
opts.stderrBytes ?? null,
|
|
194
|
+
opts.stdoutTruncated ? 1 : null,
|
|
195
|
+
opts.stderrTruncated ? 1 : null,
|
|
196
|
+
opts.stdoutTail ?? null,
|
|
197
|
+
opts.stderrTail ?? null,
|
|
198
|
+
JSON.stringify(merged),
|
|
199
|
+
now,
|
|
200
|
+
id,
|
|
201
|
+
]);
|
|
202
|
+
return getById(db, id);
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Mark step as skipped
|
|
206
|
+
*/
|
|
207
|
+
export async function markSkipped(db, id, reason) {
|
|
208
|
+
const now = Date.now();
|
|
209
|
+
await db.query(`UPDATE run_steps SET
|
|
210
|
+
status = 'skipped',
|
|
211
|
+
error_message = $1,
|
|
212
|
+
ended_at_ms = $2,
|
|
213
|
+
updated_at_ms = $3
|
|
214
|
+
WHERE id = $4`, [reason ?? null, now, now, id]);
|
|
215
|
+
return getById(db, id);
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Mark step as canceled
|
|
219
|
+
*/
|
|
220
|
+
export async function markCanceled(db, id, reason) {
|
|
221
|
+
const now = Date.now();
|
|
222
|
+
await db.query(`UPDATE run_steps SET
|
|
223
|
+
status = 'canceled',
|
|
224
|
+
error_message = $1,
|
|
225
|
+
ended_at_ms = $2,
|
|
226
|
+
updated_at_ms = $3
|
|
227
|
+
WHERE id = $4`, [reason ?? null, now, now, id]);
|
|
228
|
+
return getById(db, id);
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* List steps for a run
|
|
232
|
+
*/
|
|
233
|
+
export async function listByRun(db, runId, opts) {
|
|
234
|
+
let sql = 'SELECT * FROM run_steps WHERE run_id = $1';
|
|
235
|
+
const params = [runId];
|
|
236
|
+
let paramIndex = 2;
|
|
237
|
+
if (opts?.attempt !== undefined) {
|
|
238
|
+
sql += ` AND attempt = $${paramIndex++}`;
|
|
239
|
+
params.push(opts.attempt);
|
|
240
|
+
}
|
|
241
|
+
if (opts?.status) {
|
|
242
|
+
const statuses = Array.isArray(opts.status) ? opts.status : [opts.status];
|
|
243
|
+
const placeholders = statuses.map(() => `$${paramIndex++}`).join(', ');
|
|
244
|
+
sql += ` AND status IN (${placeholders})`;
|
|
245
|
+
params.push(...statuses);
|
|
246
|
+
}
|
|
247
|
+
sql += ' ORDER BY attempt ASC, ordinal ASC';
|
|
248
|
+
const result = await db.query(sql, params);
|
|
249
|
+
return result.rows.map(rowToStep);
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Get the latest attempt number for a run
|
|
253
|
+
*/
|
|
254
|
+
export async function getLatestAttempt(db, runId) {
|
|
255
|
+
const result = await db.query('SELECT COALESCE(MAX(attempt), 0) AS attempt FROM run_steps WHERE run_id = $1', [runId]);
|
|
256
|
+
return result.rows[0]?.attempt ?? 0;
|
|
257
|
+
}
|
|
258
|
+
export async function getStepCounts(db, runId, attempt) {
|
|
259
|
+
const actualAttempt = attempt ?? (await getLatestAttempt(db, runId));
|
|
260
|
+
const result = await db.query(`SELECT
|
|
261
|
+
SUM(CASE WHEN status = 'success' THEN 1 ELSE 0 END) AS passed,
|
|
262
|
+
SUM(CASE WHEN status = 'failed' THEN 1 ELSE 0 END) AS failed,
|
|
263
|
+
SUM(CASE WHEN status IN ('queued', 'running') THEN 1 ELSE 0 END) AS active,
|
|
264
|
+
SUM(CASE WHEN status IN ('skipped', 'canceled') THEN 1 ELSE 0 END) AS skipped,
|
|
265
|
+
COUNT(*) AS total
|
|
266
|
+
FROM run_steps
|
|
267
|
+
WHERE run_id = $1 AND attempt = $2`, [runId, actualAttempt]);
|
|
268
|
+
const row = result.rows[0];
|
|
269
|
+
return {
|
|
270
|
+
passed: parseInt(row?.passed ?? '0', 10),
|
|
271
|
+
failed: parseInt(row?.failed ?? '0', 10),
|
|
272
|
+
active: parseInt(row?.active ?? '0', 10),
|
|
273
|
+
skipped: parseInt(row?.skipped ?? '0', 10),
|
|
274
|
+
total: parseInt(row?.total ?? '0', 10),
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Get the first failed step for a run attempt
|
|
279
|
+
*/
|
|
280
|
+
export async function getFirstFailedStep(db, runId, attempt) {
|
|
281
|
+
const actualAttempt = attempt ?? (await getLatestAttempt(db, runId));
|
|
282
|
+
const result = await db.query(`SELECT * FROM run_steps
|
|
283
|
+
WHERE run_id = $1 AND attempt = $2 AND status = 'failed'
|
|
284
|
+
ORDER BY ordinal ASC
|
|
285
|
+
LIMIT 1`, [runId, actualAttempt]);
|
|
286
|
+
return result.rows[0] ? rowToStep(result.rows[0]) : null;
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Get the currently running step for a run
|
|
290
|
+
*/
|
|
291
|
+
export async function getRunningStep(db, runId, attempt) {
|
|
292
|
+
const actualAttempt = attempt ?? (await getLatestAttempt(db, runId));
|
|
293
|
+
const result = await db.query(`SELECT * FROM run_steps
|
|
294
|
+
WHERE run_id = $1 AND attempt = $2 AND status = 'running'
|
|
295
|
+
ORDER BY ordinal ASC
|
|
296
|
+
LIMIT 1`, [runId, actualAttempt]);
|
|
297
|
+
return result.rows[0] ? rowToStep(result.rows[0]) : null;
|
|
298
|
+
}
|
|
299
|
+
export async function getSummary(db, runId) {
|
|
300
|
+
const latestAttempt = await getLatestAttempt(db, runId);
|
|
301
|
+
if (latestAttempt === 0) {
|
|
302
|
+
return {
|
|
303
|
+
runId,
|
|
304
|
+
latestAttempt: 0,
|
|
305
|
+
counts: { passed: 0, failed: 0, active: 0, skipped: 0, total: 0 },
|
|
306
|
+
firstFailedStep: null,
|
|
307
|
+
runningStep: null,
|
|
308
|
+
totalDurationMs: 0,
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
const [counts, firstFailed, running, durationResult] = await Promise.all([
|
|
312
|
+
getStepCounts(db, runId, latestAttempt),
|
|
313
|
+
getFirstFailedStep(db, runId, latestAttempt),
|
|
314
|
+
getRunningStep(db, runId, latestAttempt),
|
|
315
|
+
db.query(`SELECT COALESCE(SUM(duration_ms), 0) AS total_duration
|
|
316
|
+
FROM run_steps
|
|
317
|
+
WHERE run_id = $1 AND attempt = $2`, [runId, latestAttempt]),
|
|
318
|
+
]);
|
|
319
|
+
return {
|
|
320
|
+
runId,
|
|
321
|
+
latestAttempt,
|
|
322
|
+
counts,
|
|
323
|
+
firstFailedStep: firstFailed?.name ?? null,
|
|
324
|
+
runningStep: running?.name ?? null,
|
|
325
|
+
totalDurationMs: parseInt(durationResult.rows[0]?.total_duration ?? '0', 10),
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
//# sourceMappingURL=run_steps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run_steps.js","sourceRoot":"","sources":["../../src/repos/run_steps.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run repository - Database operations for runs
|
|
3
|
+
*/
|
|
4
|
+
import type { DatabaseAdapter } from '../db/adapter.js';
|
|
5
|
+
export type RunStatus = 'pending' | 'running' | 'success' | 'failure' | 'aborted';
|
|
6
|
+
export type RunType = 'scout' | 'worker' | 'qa' | 'merge';
|
|
7
|
+
export interface Run {
|
|
8
|
+
id: string;
|
|
9
|
+
ticketId: string | null;
|
|
10
|
+
projectId: string;
|
|
11
|
+
type: RunType;
|
|
12
|
+
status: RunStatus;
|
|
13
|
+
iteration: number;
|
|
14
|
+
maxIterations: number;
|
|
15
|
+
startedAt: Date | null;
|
|
16
|
+
completedAt: Date | null;
|
|
17
|
+
error: string | null;
|
|
18
|
+
metadata: Record<string, unknown>;
|
|
19
|
+
createdAt: Date;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Get run by ID
|
|
23
|
+
*/
|
|
24
|
+
export declare function getById(db: DatabaseAdapter, id: string): Promise<Run | null>;
|
|
25
|
+
/**
|
|
26
|
+
* Create a new run
|
|
27
|
+
*/
|
|
28
|
+
export declare function create(db: DatabaseAdapter, opts: {
|
|
29
|
+
projectId: string;
|
|
30
|
+
type: RunType;
|
|
31
|
+
ticketId?: string;
|
|
32
|
+
maxIterations?: number;
|
|
33
|
+
metadata?: Record<string, unknown>;
|
|
34
|
+
}): Promise<Run>;
|
|
35
|
+
/**
|
|
36
|
+
* Mark run as successful
|
|
37
|
+
*/
|
|
38
|
+
export declare function markSuccess(db: DatabaseAdapter, id: string, metadata?: Record<string, unknown>): Promise<Run | null>;
|
|
39
|
+
/**
|
|
40
|
+
* Mark run as failed
|
|
41
|
+
*/
|
|
42
|
+
export declare function markFailure(db: DatabaseAdapter, id: string, error: Error | string, metadata?: Record<string, unknown>): Promise<Run | null>;
|
|
43
|
+
/**
|
|
44
|
+
* List runs for a project
|
|
45
|
+
*/
|
|
46
|
+
export declare function listByProject(db: DatabaseAdapter, projectId: string, opts?: {
|
|
47
|
+
type?: RunType;
|
|
48
|
+
status?: RunStatus | RunStatus[];
|
|
49
|
+
limit?: number;
|
|
50
|
+
}): Promise<Run[]>;
|
|
51
|
+
/**
|
|
52
|
+
* Count active runs
|
|
53
|
+
*/
|
|
54
|
+
export declare function countActive(db: DatabaseAdapter, projectId?: string): Promise<number>;
|
|
55
|
+
/**
|
|
56
|
+
* Get the latest run of a specific type for a project
|
|
57
|
+
*/
|
|
58
|
+
export declare function getLatestByType(db: DatabaseAdapter, projectId: string, type: RunType): Promise<Run | null>;
|
|
59
|
+
/**
|
|
60
|
+
* Get run summary for status display
|
|
61
|
+
*/
|
|
62
|
+
export interface RunSummary {
|
|
63
|
+
lastScout: {
|
|
64
|
+
id: string;
|
|
65
|
+
status: RunStatus;
|
|
66
|
+
completedAt: Date | null;
|
|
67
|
+
proposalCount: number;
|
|
68
|
+
ticketCount: number;
|
|
69
|
+
scannedFiles: number;
|
|
70
|
+
durationMs: number;
|
|
71
|
+
} | null;
|
|
72
|
+
lastQa: {
|
|
73
|
+
id: string;
|
|
74
|
+
status: RunStatus;
|
|
75
|
+
completedAt: Date | null;
|
|
76
|
+
stepsPassed: number;
|
|
77
|
+
stepsFailed: number;
|
|
78
|
+
durationMs: number;
|
|
79
|
+
} | null;
|
|
80
|
+
lastExecute: {
|
|
81
|
+
id: string;
|
|
82
|
+
ticketId: string | null;
|
|
83
|
+
status: RunStatus;
|
|
84
|
+
completedAt: Date | null;
|
|
85
|
+
branchName: string | null;
|
|
86
|
+
prUrl: string | null;
|
|
87
|
+
durationMs: number;
|
|
88
|
+
} | null;
|
|
89
|
+
activeRuns: number;
|
|
90
|
+
}
|
|
91
|
+
export declare function getSummary(db: DatabaseAdapter, projectId: string): Promise<RunSummary>;
|
|
92
|
+
//# sourceMappingURL=runs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runs.d.ts","sourceRoot":"","sources":["../../src/repos/runs.ts"],"names":[],"mappings":"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"}
|