@blockspool/cli 0.4.1 → 0.4.2

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 (149) hide show
  1. package/dist/bin/blockspool.d.ts +16 -0
  2. package/dist/bin/blockspool.d.ts.map +1 -0
  3. package/dist/bin/blockspool.js +45 -0
  4. package/dist/bin/blockspool.js.map +1 -0
  5. package/dist/commands/solo-auto.d.ts +6 -0
  6. package/dist/commands/solo-auto.d.ts.map +1 -0
  7. package/dist/commands/solo-auto.js +418 -0
  8. package/dist/commands/solo-auto.js.map +1 -0
  9. package/dist/commands/solo-exec.d.ts +6 -0
  10. package/dist/commands/solo-exec.d.ts.map +1 -0
  11. package/dist/commands/solo-exec.js +656 -0
  12. package/dist/commands/solo-exec.js.map +1 -0
  13. package/dist/commands/solo-inspect.d.ts +6 -0
  14. package/dist/commands/solo-inspect.d.ts.map +1 -0
  15. package/dist/commands/solo-inspect.js +690 -0
  16. package/dist/commands/solo-inspect.js.map +1 -0
  17. package/dist/commands/solo-lifecycle.d.ts +6 -0
  18. package/dist/commands/solo-lifecycle.d.ts.map +1 -0
  19. package/dist/commands/solo-lifecycle.js +188 -0
  20. package/dist/commands/solo-lifecycle.js.map +1 -0
  21. package/dist/commands/solo-nudge.d.ts +6 -0
  22. package/dist/commands/solo-nudge.d.ts.map +1 -0
  23. package/dist/commands/solo-nudge.js +49 -0
  24. package/dist/commands/solo-nudge.js.map +1 -0
  25. package/dist/commands/solo-qa.d.ts +6 -0
  26. package/dist/commands/solo-qa.d.ts.map +1 -0
  27. package/dist/commands/solo-qa.js +254 -0
  28. package/dist/commands/solo-qa.js.map +1 -0
  29. package/dist/commands/solo.d.ts +11 -0
  30. package/dist/commands/solo.d.ts.map +1 -0
  31. package/dist/commands/solo.js +43 -0
  32. package/dist/commands/solo.js.map +1 -0
  33. package/dist/index.d.ts +18 -0
  34. package/dist/index.d.ts.map +1 -0
  35. package/dist/index.js +18 -0
  36. package/dist/index.js.map +1 -0
  37. package/dist/lib/artifacts.d.ts +136 -0
  38. package/dist/lib/artifacts.d.ts.map +1 -0
  39. package/dist/lib/artifacts.js +146 -0
  40. package/dist/lib/artifacts.js.map +1 -0
  41. package/dist/lib/doctor.d.ts +45 -0
  42. package/dist/lib/doctor.d.ts.map +1 -0
  43. package/dist/lib/doctor.js +383 -0
  44. package/dist/lib/doctor.js.map +1 -0
  45. package/dist/lib/exec.d.ts +24 -0
  46. package/dist/lib/exec.d.ts.map +1 -0
  47. package/dist/lib/exec.js +295 -0
  48. package/dist/lib/exec.js.map +1 -0
  49. package/dist/lib/formulas.d.ts +78 -0
  50. package/dist/lib/formulas.d.ts.map +1 -0
  51. package/dist/lib/formulas.js +295 -0
  52. package/dist/lib/formulas.js.map +1 -0
  53. package/dist/lib/git.d.ts +9 -0
  54. package/dist/lib/git.d.ts.map +1 -0
  55. package/dist/lib/git.js +60 -0
  56. package/dist/lib/git.js.map +1 -0
  57. package/dist/lib/guidelines.d.ts +43 -0
  58. package/dist/lib/guidelines.d.ts.map +1 -0
  59. package/dist/lib/guidelines.js +195 -0
  60. package/dist/lib/guidelines.js.map +1 -0
  61. package/dist/lib/logger.d.ts +17 -0
  62. package/dist/lib/logger.d.ts.map +1 -0
  63. package/dist/lib/logger.js +42 -0
  64. package/dist/lib/logger.js.map +1 -0
  65. package/dist/lib/retention.d.ts +62 -0
  66. package/dist/lib/retention.d.ts.map +1 -0
  67. package/dist/lib/retention.js +285 -0
  68. package/dist/lib/retention.js.map +1 -0
  69. package/dist/lib/run-history.d.ts +52 -0
  70. package/dist/lib/run-history.d.ts.map +1 -0
  71. package/dist/lib/run-history.js +116 -0
  72. package/dist/lib/run-history.js.map +1 -0
  73. package/dist/lib/run-state.d.ts +58 -0
  74. package/dist/lib/run-state.d.ts.map +1 -0
  75. package/dist/lib/run-state.js +119 -0
  76. package/dist/lib/run-state.js.map +1 -0
  77. package/dist/lib/scope.d.ts +95 -0
  78. package/dist/lib/scope.d.ts.map +1 -0
  79. package/dist/lib/scope.js +291 -0
  80. package/dist/lib/scope.js.map +1 -0
  81. package/dist/lib/selection.d.ts +35 -0
  82. package/dist/lib/selection.d.ts.map +1 -0
  83. package/dist/lib/selection.js +110 -0
  84. package/dist/lib/selection.js.map +1 -0
  85. package/dist/lib/solo-auto.d.ts +87 -0
  86. package/dist/lib/solo-auto.d.ts.map +1 -0
  87. package/dist/lib/solo-auto.js +1230 -0
  88. package/dist/lib/solo-auto.js.map +1 -0
  89. package/dist/lib/solo-ci.d.ts +84 -0
  90. package/dist/lib/solo-ci.d.ts.map +1 -0
  91. package/dist/lib/solo-ci.js +300 -0
  92. package/dist/lib/solo-ci.js.map +1 -0
  93. package/dist/lib/solo-config.d.ts +155 -0
  94. package/dist/lib/solo-config.d.ts.map +1 -0
  95. package/dist/lib/solo-config.js +236 -0
  96. package/dist/lib/solo-config.js.map +1 -0
  97. package/dist/lib/solo-git.d.ts +44 -0
  98. package/dist/lib/solo-git.d.ts.map +1 -0
  99. package/dist/lib/solo-git.js +174 -0
  100. package/dist/lib/solo-git.js.map +1 -0
  101. package/dist/lib/solo-hints.d.ts +32 -0
  102. package/dist/lib/solo-hints.d.ts.map +1 -0
  103. package/dist/lib/solo-hints.js +98 -0
  104. package/dist/lib/solo-hints.js.map +1 -0
  105. package/dist/lib/solo-remote.d.ts +14 -0
  106. package/dist/lib/solo-remote.d.ts.map +1 -0
  107. package/dist/lib/solo-remote.js +48 -0
  108. package/dist/lib/solo-remote.js.map +1 -0
  109. package/dist/lib/solo-stdin.d.ts +13 -0
  110. package/dist/lib/solo-stdin.d.ts.map +1 -0
  111. package/dist/lib/solo-stdin.js +33 -0
  112. package/dist/lib/solo-stdin.js.map +1 -0
  113. package/dist/lib/solo-ticket.d.ts +213 -0
  114. package/dist/lib/solo-ticket.d.ts.map +1 -0
  115. package/dist/lib/solo-ticket.js +850 -0
  116. package/dist/lib/solo-ticket.js.map +1 -0
  117. package/dist/lib/solo-utils.d.ts +133 -0
  118. package/dist/lib/solo-utils.d.ts.map +1 -0
  119. package/dist/lib/solo-utils.js +300 -0
  120. package/dist/lib/solo-utils.js.map +1 -0
  121. package/dist/lib/spindle.d.ts +144 -0
  122. package/dist/lib/spindle.d.ts.map +1 -0
  123. package/dist/lib/spindle.js +388 -0
  124. package/dist/lib/spindle.js.map +1 -0
  125. package/dist/tui/app.d.ts +17 -0
  126. package/dist/tui/app.d.ts.map +1 -0
  127. package/dist/tui/app.js +139 -0
  128. package/dist/tui/app.js.map +1 -0
  129. package/dist/tui/index.d.ts +8 -0
  130. package/dist/tui/index.d.ts.map +1 -0
  131. package/dist/tui/index.js +7 -0
  132. package/dist/tui/index.js.map +1 -0
  133. package/dist/tui/poller.d.ts +42 -0
  134. package/dist/tui/poller.d.ts.map +1 -0
  135. package/dist/tui/poller.js +62 -0
  136. package/dist/tui/poller.js.map +1 -0
  137. package/dist/tui/screens/overview.d.ts +9 -0
  138. package/dist/tui/screens/overview.d.ts.map +1 -0
  139. package/dist/tui/screens/overview.js +189 -0
  140. package/dist/tui/screens/overview.js.map +1 -0
  141. package/dist/tui/state.d.ts +93 -0
  142. package/dist/tui/state.d.ts.map +1 -0
  143. package/dist/tui/state.js +169 -0
  144. package/dist/tui/state.js.map +1 -0
  145. package/dist/tui/types.d.ts +18 -0
  146. package/dist/tui/types.d.ts.map +1 -0
  147. package/dist/tui/types.js +5 -0
  148. package/dist/tui/types.js.map +1 -0
  149. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solo-ticket.js","sourceRoot":"","sources":["../../src/lib/solo-ticket.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Solo mode utility functions
3
+ */
4
+ import type { DatabaseAdapter } from '@blockspool/core/db';
5
+ import { tickets } from '@blockspool/core/repos';
6
+ import type { TicketProposal } from '@blockspool/core/scout';
7
+ import type { QaConfig } from '@blockspool/core/services';
8
+ import type { SoloConfig } from './solo-config.js';
9
+ /**
10
+ * Format duration in human-readable form
11
+ */
12
+ export declare function formatDuration(ms: number): string;
13
+ /**
14
+ * Format relative time
15
+ */
16
+ export declare function formatRelativeTime(date: Date): string;
17
+ /**
18
+ * Status output for JSON mode
19
+ */
20
+ export interface StatusOutput {
21
+ dbPath: string;
22
+ projects: Array<{
23
+ id: string;
24
+ name: string;
25
+ ticketCounts: Record<string, number>;
26
+ lastScout: {
27
+ id: string;
28
+ status: string;
29
+ completedAt: string | null;
30
+ proposalCount: number;
31
+ ticketCount: number;
32
+ scannedFiles: number;
33
+ durationMs: number;
34
+ } | null;
35
+ lastQa: {
36
+ id: string;
37
+ status: string;
38
+ completedAt: string | null;
39
+ stepsPassed: number;
40
+ stepsFailed: number;
41
+ durationMs: number;
42
+ } | null;
43
+ lastExecute: {
44
+ id: string;
45
+ ticketId: string | null;
46
+ status: string;
47
+ completedAt: string | null;
48
+ branchName: string | null;
49
+ prUrl: string | null;
50
+ durationMs: number;
51
+ completionOutcome: string | null;
52
+ } | null;
53
+ activeRuns: number;
54
+ }>;
55
+ }
56
+ /**
57
+ * Proposals artifact structure
58
+ */
59
+ export interface ProposalsArtifact {
60
+ runId: string;
61
+ projectId: string;
62
+ projectName: string;
63
+ createdAt: string;
64
+ proposals: TicketProposal[];
65
+ }
66
+ /**
67
+ * Pre-flight check result
68
+ */
69
+ export interface PreflightResult {
70
+ ok: boolean;
71
+ error?: string;
72
+ warnings: string[];
73
+ hasRemote: boolean;
74
+ ghAuthenticated: boolean;
75
+ }
76
+ /**
77
+ * QA output for JSON mode
78
+ */
79
+ export interface QaOutput {
80
+ runId: string;
81
+ projectId: string;
82
+ status: 'success' | 'failed' | 'canceled';
83
+ attempts: number;
84
+ durationMs: number;
85
+ failedAt?: {
86
+ attempt: number;
87
+ stepName: string;
88
+ };
89
+ steps: Array<{
90
+ name: string;
91
+ status: string;
92
+ exitCode: number | null;
93
+ durationMs: number | null;
94
+ errorMessage: string | null;
95
+ stdoutPath: string | null;
96
+ stderrPath: string | null;
97
+ stdoutTail: string | null;
98
+ stderrTail: string | null;
99
+ }>;
100
+ }
101
+ /**
102
+ * Run pre-flight checks before execution
103
+ */
104
+ export declare function runPreflightChecks(repoRoot: string, opts: {
105
+ needsPr: boolean;
106
+ skipRemoteCheck?: boolean;
107
+ }): Promise<PreflightResult>;
108
+ /**
109
+ * Check if two path patterns could overlap
110
+ */
111
+ export declare function pathsOverlap(pathA: string, pathB: string): boolean;
112
+ /**
113
+ * Find in-progress tickets that have overlapping allowed_paths with the given ticket
114
+ */
115
+ export declare function findConflictingTickets(db: DatabaseAdapter, ticket: NonNullable<Awaited<ReturnType<typeof tickets.getById>>>): Promise<Array<{
116
+ ticket: NonNullable<Awaited<ReturnType<typeof tickets.getById>>>;
117
+ overlappingPaths: string[];
118
+ }>>;
119
+ /**
120
+ * Expand allowed paths for test tickets to include test file locations
121
+ */
122
+ export declare function expandPathsForTests(paths: string[]): string[];
123
+ /**
124
+ * Regenerate allowed_paths for a ticket using current scope expansion logic
125
+ */
126
+ export declare function regenerateAllowedPaths(ticket: NonNullable<Awaited<ReturnType<typeof tickets.getById>>>): string[];
127
+ /**
128
+ * Normalize QA config from raw config file
129
+ */
130
+ export declare function normalizeQaConfig(config: SoloConfig, overrides?: {
131
+ maxAttempts?: number;
132
+ }): QaConfig;
133
+ //# sourceMappingURL=solo-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solo-utils.d.ts","sourceRoot":"","sources":["../../src/lib/solo-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,300 @@
1
+ /**
2
+ * Solo mode utility functions
3
+ */
4
+ import { tickets } from '@blockspool/core/repos';
5
+ /**
6
+ * Format duration in human-readable form
7
+ */
8
+ export function formatDuration(ms) {
9
+ if (ms < 1000)
10
+ return `${ms}ms`;
11
+ if (ms < 60000)
12
+ return `${(ms / 1000).toFixed(1)}s`;
13
+ return `${(ms / 60000).toFixed(1)}m`;
14
+ }
15
+ /**
16
+ * Format relative time
17
+ */
18
+ export function formatRelativeTime(date) {
19
+ const now = Date.now();
20
+ const diff = now - date.getTime();
21
+ if (diff < 60000)
22
+ return 'just now';
23
+ if (diff < 3600000)
24
+ return `${Math.floor(diff / 60000)}m ago`;
25
+ if (diff < 86400000)
26
+ return `${Math.floor(diff / 3600000)}h ago`;
27
+ return `${Math.floor(diff / 86400000)}d ago`;
28
+ }
29
+ /**
30
+ * Run pre-flight checks before execution
31
+ */
32
+ export async function runPreflightChecks(repoRoot, opts) {
33
+ const warnings = [];
34
+ const { execSync, spawnSync } = await import('child_process');
35
+ // Check Claude CLI installed
36
+ try {
37
+ const result = spawnSync('claude', ['--version'], { encoding: 'utf-8', timeout: 5000 });
38
+ if (result.status !== 0) {
39
+ return {
40
+ ok: false,
41
+ error: 'Claude CLI not found. Install from: https://claude.ai/code',
42
+ warnings,
43
+ hasRemote: false,
44
+ ghAuthenticated: false,
45
+ };
46
+ }
47
+ }
48
+ catch {
49
+ return {
50
+ ok: false,
51
+ error: 'Claude CLI not found. Install from: https://claude.ai/code',
52
+ warnings,
53
+ hasRemote: false,
54
+ ghAuthenticated: false,
55
+ };
56
+ }
57
+ // Check if repo has a remote
58
+ let hasRemote = false;
59
+ try {
60
+ const remotes = execSync('git remote', { cwd: repoRoot, encoding: 'utf-8' }).trim();
61
+ hasRemote = remotes.length > 0;
62
+ }
63
+ catch {
64
+ hasRemote = false;
65
+ }
66
+ if (!hasRemote) {
67
+ return {
68
+ ok: false,
69
+ error: 'No git remote configured. Run: git remote add origin <url>',
70
+ warnings,
71
+ hasRemote: false,
72
+ ghAuthenticated: false,
73
+ };
74
+ }
75
+ // Validate origin matches the remote recorded at init time
76
+ if (!opts.skipRemoteCheck) {
77
+ try {
78
+ const { loadConfig } = await import('./solo-config.js');
79
+ const config = loadConfig(repoRoot);
80
+ if (config?.allowedRemote) {
81
+ const { normalizeRemoteUrl } = await import('./solo-remote.js');
82
+ const currentRemote = execSync('git remote get-url origin', { cwd: repoRoot, encoding: 'utf-8' }).trim();
83
+ if (normalizeRemoteUrl(currentRemote) !== normalizeRemoteUrl(config.allowedRemote)) {
84
+ return {
85
+ ok: false,
86
+ error: `Remote mismatch: origin points to "${currentRemote}" but solo init recorded "${config.allowedRemote}". ` +
87
+ 'Re-run "blockspool solo init --force" if this is intentional.',
88
+ warnings,
89
+ hasRemote,
90
+ ghAuthenticated: false,
91
+ };
92
+ }
93
+ }
94
+ }
95
+ catch {
96
+ // If we can't check, don't block — just warn
97
+ warnings.push('Could not verify origin remote against config');
98
+ }
99
+ }
100
+ // Check gh auth (only if --pr requested)
101
+ let ghAuthenticated = false;
102
+ if (opts.needsPr) {
103
+ // First check if gh is installed
104
+ try {
105
+ const ghResult = spawnSync('gh', ['--version'], { encoding: 'utf-8', timeout: 5000 });
106
+ if (ghResult.status !== 0) {
107
+ return {
108
+ ok: false,
109
+ error: 'GitHub CLI not found. Install from: https://cli.github.com/',
110
+ warnings,
111
+ hasRemote,
112
+ ghAuthenticated: false,
113
+ };
114
+ }
115
+ }
116
+ catch {
117
+ return {
118
+ ok: false,
119
+ error: 'GitHub CLI not found. Install from: https://cli.github.com/',
120
+ warnings,
121
+ hasRemote,
122
+ ghAuthenticated: false,
123
+ };
124
+ }
125
+ // Then check auth
126
+ try {
127
+ execSync('gh auth status', { stdio: 'ignore' });
128
+ ghAuthenticated = true;
129
+ }
130
+ catch {
131
+ return {
132
+ ok: false,
133
+ error: 'GitHub CLI not authenticated. Run: gh auth login',
134
+ warnings,
135
+ hasRemote,
136
+ ghAuthenticated: false,
137
+ };
138
+ }
139
+ }
140
+ return {
141
+ ok: true,
142
+ warnings,
143
+ hasRemote,
144
+ ghAuthenticated,
145
+ };
146
+ }
147
+ /**
148
+ * Check if two path patterns could overlap
149
+ */
150
+ export function pathsOverlap(pathA, pathB) {
151
+ // Normalize paths (remove trailing slashes, handle ./prefix)
152
+ const normA = pathA.replace(/^\.\//, '').replace(/\/$/, '');
153
+ const normB = pathB.replace(/^\.\//, '').replace(/\/$/, '');
154
+ // Exact match
155
+ if (normA === normB) {
156
+ return true;
157
+ }
158
+ // One is prefix of other (directory containment)
159
+ if (normA.startsWith(normB + '/') || normB.startsWith(normA + '/')) {
160
+ return true;
161
+ }
162
+ // Check for glob pattern overlaps
163
+ const hasGlobA = normA.includes('*');
164
+ const hasGlobB = normB.includes('*');
165
+ if (hasGlobA || hasGlobB) {
166
+ const baseA = normA.split('*')[0].replace(/\/$/, '');
167
+ const baseB = normB.split('*')[0].replace(/\/$/, '');
168
+ if (baseA === baseB || baseA.startsWith(baseB + '/') || baseB.startsWith(baseA + '/')) {
169
+ return true;
170
+ }
171
+ }
172
+ return false;
173
+ }
174
+ /**
175
+ * Find in-progress tickets that have overlapping allowed_paths with the given ticket
176
+ */
177
+ export async function findConflictingTickets(db, ticket) {
178
+ const inProgressTickets = await tickets.listByProject(db, ticket.projectId, {
179
+ status: ['in_progress', 'leased'],
180
+ });
181
+ const conflicts = [];
182
+ for (const other of inProgressTickets) {
183
+ if (other.id === ticket.id) {
184
+ continue;
185
+ }
186
+ if (other.allowedPaths.length === 0 || ticket.allowedPaths.length === 0) {
187
+ continue;
188
+ }
189
+ const overlappingPaths = [];
190
+ for (const pA of ticket.allowedPaths) {
191
+ for (const pB of other.allowedPaths) {
192
+ if (pathsOverlap(pA, pB)) {
193
+ overlappingPaths.push(`${pA} <-> ${pB}`);
194
+ }
195
+ }
196
+ }
197
+ if (overlappingPaths.length > 0) {
198
+ conflicts.push({ ticket: other, overlappingPaths });
199
+ }
200
+ }
201
+ return conflicts;
202
+ }
203
+ /**
204
+ * Expand allowed paths for test tickets to include test file locations
205
+ */
206
+ export function expandPathsForTests(paths) {
207
+ const expanded = new Set(paths);
208
+ for (const filePath of paths) {
209
+ if (filePath.includes('.test.') || filePath.includes('.spec.') || filePath.includes('__tests__')) {
210
+ continue;
211
+ }
212
+ const lastSlash = filePath.lastIndexOf('/');
213
+ const dir = lastSlash >= 0 ? filePath.slice(0, lastSlash) : '';
214
+ const filename = lastSlash >= 0 ? filePath.slice(lastSlash + 1) : filePath;
215
+ const lastDot = filename.lastIndexOf('.');
216
+ const ext = lastDot >= 0 ? filename.slice(lastDot) : '';
217
+ const baseName = lastDot >= 0 ? filename.slice(0, lastDot) : filename;
218
+ if (dir) {
219
+ expanded.add(`${dir}/${baseName}.test${ext}`);
220
+ expanded.add(`${dir}/${baseName}.spec${ext}`);
221
+ }
222
+ else {
223
+ expanded.add(`${baseName}.test${ext}`);
224
+ expanded.add(`${baseName}.spec${ext}`);
225
+ }
226
+ if (dir) {
227
+ expanded.add(`${dir}/__tests__/${baseName}.test${ext}`);
228
+ expanded.add(`${dir}/__tests__/${baseName}${ext}`);
229
+ }
230
+ if (dir.startsWith('src/')) {
231
+ const relPath = dir.slice(4);
232
+ expanded.add(`src/test/${relPath ? relPath + '/' : ''}${baseName}.test${ext}`);
233
+ expanded.add(`test/${relPath ? relPath + '/' : ''}${baseName}.test${ext}`);
234
+ expanded.add(`tests/${relPath ? relPath + '/' : ''}${baseName}.test${ext}`);
235
+ }
236
+ expanded.add(`src/test/${baseName}.test${ext}`);
237
+ expanded.add(`test/${baseName}.test${ext}`);
238
+ expanded.add(`tests/${baseName}.test${ext}`);
239
+ expanded.add(`__tests__/${baseName}.test${ext}`);
240
+ }
241
+ return Array.from(expanded);
242
+ }
243
+ /**
244
+ * Regenerate allowed_paths for a ticket using current scope expansion logic
245
+ */
246
+ export function regenerateAllowedPaths(ticket) {
247
+ const currentPaths = ticket.allowedPaths;
248
+ if (currentPaths.length === 0) {
249
+ return [];
250
+ }
251
+ if (ticket.category === 'test') {
252
+ const expandedPaths = expandPathsForTests(currentPaths);
253
+ if (!expandedPaths.includes('package.json')) {
254
+ expandedPaths.push('package.json');
255
+ }
256
+ if (!expandedPaths.includes('package-lock.json')) {
257
+ expandedPaths.push('package-lock.json');
258
+ }
259
+ return expandedPaths;
260
+ }
261
+ return currentPaths;
262
+ }
263
+ /**
264
+ * Normalize QA config from raw config file
265
+ */
266
+ export function normalizeQaConfig(config, overrides) {
267
+ const qa = config.qa;
268
+ if (!qa?.commands?.length) {
269
+ throw new Error('QA is not configured. Add qa.commands to .blockspool/config.json\n\n' +
270
+ 'Example:\n' +
271
+ '{\n' +
272
+ ' "qa": {\n' +
273
+ ' "commands": [\n' +
274
+ ' { "name": "lint", "cmd": "npm run lint" },\n' +
275
+ ' { "name": "test", "cmd": "npm test" }\n' +
276
+ ' ]\n' +
277
+ ' }\n' +
278
+ '}');
279
+ }
280
+ const commands = qa.commands.map((c) => ({
281
+ name: String(c.name ?? '').trim(),
282
+ cmd: String(c.cmd ?? '').trim(),
283
+ cwd: c.cwd ?? '.',
284
+ timeoutMs: c.timeoutMs ?? (c.timeoutSec ? c.timeoutSec * 1000 : undefined),
285
+ }));
286
+ const artifactsDir = qa.artifacts?.storeDir ?? '.blockspool/artifacts';
287
+ const maxLogBytes = qa.artifacts?.maxLogBytes ?? 200_000;
288
+ const tailBytes = qa.artifacts?.tailBytes ?? 16_384;
289
+ const retryEnabled = qa.retry?.enabled ?? false;
290
+ const retryMax = qa.retry?.maxAttempts ?? 1;
291
+ return {
292
+ commands,
293
+ artifacts: { dir: artifactsDir, maxLogBytes, tailBytes },
294
+ retry: {
295
+ enabled: overrides?.maxAttempts ? true : retryEnabled,
296
+ maxAttempts: overrides?.maxAttempts ?? retryMax,
297
+ },
298
+ };
299
+ }
300
+ //# sourceMappingURL=solo-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solo-utils.js","sourceRoot":"","sources":["../../src/lib/solo-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Spindle Loop Detection
3
+ *
4
+ * Monitors agent execution for unproductive patterns:
5
+ * - Oscillation: Similar diffs being applied and reverted
6
+ * - Spinning: High tool call rate without progress
7
+ * - Stalling: Verbose output without meaningful changes
8
+ * - Repetition: Same errors or phrases repeated
9
+ *
10
+ * Named "Spindle" after the spinning wheel component — when the spindle
11
+ * jams, it spins without producing thread.
12
+ */
13
+ /**
14
+ * Configuration for Spindle loop detection
15
+ */
16
+ export interface SpindleConfig {
17
+ /** Enable Spindle detection (default: true) */
18
+ enabled: boolean;
19
+ /** Similarity threshold for duplicate detection (0-1, default: 0.8) */
20
+ similarityThreshold: number;
21
+ /** Max consecutive similar outputs before abort (default: 3) */
22
+ maxSimilarOutputs: number;
23
+ /** Max iterations without file changes (default: 5) */
24
+ maxStallIterations: number;
25
+ /** Output/action ratio threshold (default: 10) - high = verbose without action */
26
+ verbosityThreshold: number;
27
+ /** Estimated token budget before warning (default: 100000) */
28
+ tokenBudgetWarning: number;
29
+ /** Estimated token budget before abort (default: 140000) */
30
+ tokenBudgetAbort: number;
31
+ }
32
+ /**
33
+ * Default Spindle configuration
34
+ */
35
+ export declare const DEFAULT_SPINDLE_CONFIG: SpindleConfig;
36
+ /**
37
+ * Tracked state for Spindle detection across iterations
38
+ */
39
+ export interface SpindleState {
40
+ /** Recent agent outputs for similarity comparison */
41
+ outputs: string[];
42
+ /** Recent diffs for oscillation detection */
43
+ diffs: string[];
44
+ /** Count of iterations without meaningful file changes */
45
+ iterationsSinceChange: number;
46
+ /** Estimated total tokens consumed */
47
+ estimatedTokens: number;
48
+ /** Accumulated warnings */
49
+ warnings: string[];
50
+ /** Total characters of output (for verbosity ratio) */
51
+ totalOutputChars: number;
52
+ /** Total characters of actual changes (for verbosity ratio) */
53
+ totalChangeChars: number;
54
+ }
55
+ /**
56
+ * Create initial Spindle state
57
+ */
58
+ export declare function createSpindleState(): SpindleState;
59
+ /**
60
+ * Result of Spindle loop check
61
+ */
62
+ export interface SpindleResult {
63
+ /** Whether the agent should be aborted */
64
+ shouldAbort: boolean;
65
+ /** Reason for abort if shouldAbort is true */
66
+ reason?: 'oscillation' | 'spinning' | 'stalling' | 'repetition' | 'token_budget';
67
+ /** Confidence in the detection (0-1) */
68
+ confidence: number;
69
+ /** Diagnostic information for artifact */
70
+ diagnostics: {
71
+ similarityScore?: number;
72
+ iterationsWithoutChange?: number;
73
+ estimatedTokens?: number;
74
+ repeatedPatterns?: string[];
75
+ verbosityRatio?: number;
76
+ oscillationPattern?: string;
77
+ };
78
+ }
79
+ /**
80
+ * Estimate token count from text
81
+ * Rough approximation: ~4 characters per token for English text
82
+ */
83
+ export declare function estimateTokens(text: string): number;
84
+ /**
85
+ * Compute similarity between two strings using Jaccard index on word tokens
86
+ *
87
+ * @returns Similarity score from 0 (completely different) to 1 (identical)
88
+ */
89
+ export declare function computeSimilarity(a: string, b: string): number;
90
+ /**
91
+ * Detect oscillation pattern in diffs
92
+ *
93
+ * Looks for add→remove→add or remove→add→remove patterns where similar
94
+ * content is being repeatedly changed back and forth.
95
+ *
96
+ * @returns Object with detected flag and pattern description
97
+ */
98
+ export declare function detectOscillation(diffs: string[], similarityThreshold?: number): {
99
+ detected: boolean;
100
+ pattern?: string;
101
+ confidence: number;
102
+ };
103
+ /**
104
+ * Detect repetition in agent outputs
105
+ *
106
+ * Looks for consecutive similar outputs that indicate the agent is stuck
107
+ * in a loop saying the same things.
108
+ */
109
+ export declare function detectRepetition(outputs: string[], latestOutput: string, config: SpindleConfig): {
110
+ detected: boolean;
111
+ patterns: string[];
112
+ confidence: number;
113
+ };
114
+ /**
115
+ * Check if agent is in a Spindle loop
116
+ *
117
+ * Updates state in-place and returns detection result.
118
+ *
119
+ * @param state - Current Spindle state (will be mutated)
120
+ * @param latestOutput - Agent's latest output text
121
+ * @param latestDiff - Latest git diff (null if no changes)
122
+ * @param config - Spindle configuration
123
+ * @returns Detection result
124
+ */
125
+ export declare function checkSpindleLoop(state: SpindleState, latestOutput: string, latestDiff: string | null, config: SpindleConfig): SpindleResult;
126
+ /**
127
+ * Format Spindle result for display
128
+ */
129
+ export declare function formatSpindleResult(result: SpindleResult): string;
130
+ /** @deprecated Use SpindleConfig */
131
+ export type RalphConfig = SpindleConfig;
132
+ /** @deprecated Use SpindleState */
133
+ export type RalphState = SpindleState;
134
+ /** @deprecated Use SpindleResult */
135
+ export type RalphResult = SpindleResult;
136
+ /** @deprecated Use DEFAULT_SPINDLE_CONFIG */
137
+ export declare const DEFAULT_RALPH_CONFIG: SpindleConfig;
138
+ /** @deprecated Use createSpindleState */
139
+ export declare const createRalphState: typeof createSpindleState;
140
+ /** @deprecated Use checkSpindleLoop */
141
+ export declare const checkRalphLoop: typeof checkSpindleLoop;
142
+ /** @deprecated Use formatSpindleResult */
143
+ export declare const formatRalphResult: typeof formatSpindleResult;
144
+ //# sourceMappingURL=spindle.d.ts.map