erosolar-cli 2.1.167 → 2.1.168

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 (128) hide show
  1. package/agents/erosolar-code.rules.json +2 -2
  2. package/agents/general.rules.json +3 -21
  3. package/dist/StringUtils.d.ts +8 -0
  4. package/dist/StringUtils.d.ts.map +1 -0
  5. package/dist/StringUtils.js +11 -0
  6. package/dist/StringUtils.js.map +1 -0
  7. package/dist/capabilities/statusCapability.js +2 -2
  8. package/dist/capabilities/statusCapability.js.map +1 -1
  9. package/dist/contracts/agent-schemas.json +0 -5
  10. package/dist/core/agent.d.ts +11 -72
  11. package/dist/core/agent.d.ts.map +1 -1
  12. package/dist/core/agent.js +182 -869
  13. package/dist/core/agent.js.map +1 -1
  14. package/dist/core/aiFlowSupervisor.d.ts +44 -0
  15. package/dist/core/aiFlowSupervisor.d.ts.map +1 -0
  16. package/dist/core/aiFlowSupervisor.js +299 -0
  17. package/dist/core/aiFlowSupervisor.js.map +1 -0
  18. package/dist/core/cliTestHarness.d.ts +200 -0
  19. package/dist/core/cliTestHarness.d.ts.map +1 -0
  20. package/dist/core/cliTestHarness.js +549 -0
  21. package/dist/core/cliTestHarness.js.map +1 -0
  22. package/dist/core/preferences.d.ts +0 -1
  23. package/dist/core/preferences.d.ts.map +1 -1
  24. package/dist/core/preferences.js +2 -9
  25. package/dist/core/preferences.js.map +1 -1
  26. package/dist/core/schemaValidator.js +3 -3
  27. package/dist/core/schemaValidator.js.map +1 -1
  28. package/dist/core/testUtils.d.ts +121 -0
  29. package/dist/core/testUtils.d.ts.map +1 -0
  30. package/dist/core/testUtils.js +235 -0
  31. package/dist/core/testUtils.js.map +1 -0
  32. package/dist/core/toolPreconditions.d.ts +11 -0
  33. package/dist/core/toolPreconditions.d.ts.map +1 -1
  34. package/dist/core/toolPreconditions.js +164 -33
  35. package/dist/core/toolPreconditions.js.map +1 -1
  36. package/dist/core/toolRuntime.d.ts.map +1 -1
  37. package/dist/core/toolRuntime.js +114 -9
  38. package/dist/core/toolRuntime.js.map +1 -1
  39. package/dist/core/toolValidation.d.ts +116 -0
  40. package/dist/core/toolValidation.d.ts.map +1 -0
  41. package/dist/core/toolValidation.js +282 -0
  42. package/dist/core/toolValidation.js.map +1 -0
  43. package/dist/core/updateChecker.d.ts +1 -61
  44. package/dist/core/updateChecker.d.ts.map +1 -1
  45. package/dist/core/updateChecker.js +3 -147
  46. package/dist/core/updateChecker.js.map +1 -1
  47. package/dist/headless/headlessApp.d.ts.map +1 -1
  48. package/dist/headless/headlessApp.js +39 -0
  49. package/dist/headless/headlessApp.js.map +1 -1
  50. package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -1
  51. package/dist/plugins/tools/nodeDefaults.js +2 -0
  52. package/dist/plugins/tools/nodeDefaults.js.map +1 -1
  53. package/dist/providers/openaiResponsesProvider.d.ts.map +1 -1
  54. package/dist/providers/openaiResponsesProvider.js +74 -79
  55. package/dist/providers/openaiResponsesProvider.js.map +1 -1
  56. package/dist/runtime/agentController.d.ts.map +1 -1
  57. package/dist/runtime/agentController.js +0 -6
  58. package/dist/runtime/agentController.js.map +1 -1
  59. package/dist/runtime/agentSession.d.ts.map +1 -1
  60. package/dist/runtime/agentSession.js +2 -3
  61. package/dist/runtime/agentSession.js.map +1 -1
  62. package/dist/shell/interactiveShell.d.ts +8 -16
  63. package/dist/shell/interactiveShell.d.ts.map +1 -1
  64. package/dist/shell/interactiveShell.js +159 -388
  65. package/dist/shell/interactiveShell.js.map +1 -1
  66. package/dist/shell/systemPrompt.d.ts.map +1 -1
  67. package/dist/shell/systemPrompt.js +15 -4
  68. package/dist/shell/systemPrompt.js.map +1 -1
  69. package/dist/subagents/taskRunner.js +1 -2
  70. package/dist/subagents/taskRunner.js.map +1 -1
  71. package/dist/tools/bashTools.d.ts.map +1 -1
  72. package/dist/tools/bashTools.js +8 -101
  73. package/dist/tools/bashTools.js.map +1 -1
  74. package/dist/tools/diffUtils.d.ts +2 -8
  75. package/dist/tools/diffUtils.d.ts.map +1 -1
  76. package/dist/tools/diffUtils.js +13 -72
  77. package/dist/tools/diffUtils.js.map +1 -1
  78. package/dist/tools/grepTools.d.ts.map +1 -1
  79. package/dist/tools/grepTools.js +2 -10
  80. package/dist/tools/grepTools.js.map +1 -1
  81. package/dist/tools/searchTools.d.ts.map +1 -1
  82. package/dist/tools/searchTools.js +2 -4
  83. package/dist/tools/searchTools.js.map +1 -1
  84. package/dist/ui/PromptController.d.ts +0 -2
  85. package/dist/ui/PromptController.d.ts.map +1 -1
  86. package/dist/ui/PromptController.js +0 -2
  87. package/dist/ui/PromptController.js.map +1 -1
  88. package/dist/ui/ShellUIAdapter.d.ts +18 -71
  89. package/dist/ui/ShellUIAdapter.d.ts.map +1 -1
  90. package/dist/ui/ShellUIAdapter.js +139 -237
  91. package/dist/ui/ShellUIAdapter.js.map +1 -1
  92. package/dist/ui/UnifiedUIController.d.ts +1 -0
  93. package/dist/ui/UnifiedUIController.d.ts.map +1 -1
  94. package/dist/ui/UnifiedUIController.js +1 -0
  95. package/dist/ui/UnifiedUIController.js.map +1 -1
  96. package/dist/ui/UnifiedUIRenderer.d.ts +5 -122
  97. package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -1
  98. package/dist/ui/UnifiedUIRenderer.js +125 -830
  99. package/dist/ui/UnifiedUIRenderer.js.map +1 -1
  100. package/dist/ui/compactRenderer.d.ts +139 -0
  101. package/dist/ui/compactRenderer.d.ts.map +1 -0
  102. package/dist/ui/compactRenderer.js +398 -0
  103. package/dist/ui/compactRenderer.js.map +1 -0
  104. package/dist/ui/display.d.ts +48 -13
  105. package/dist/ui/display.d.ts.map +1 -1
  106. package/dist/ui/display.js +105 -22
  107. package/dist/ui/display.js.map +1 -1
  108. package/dist/ui/streamingFormatter.d.ts +30 -0
  109. package/dist/ui/streamingFormatter.d.ts.map +1 -0
  110. package/dist/ui/streamingFormatter.js +91 -0
  111. package/dist/ui/streamingFormatter.js.map +1 -0
  112. package/dist/ui/unified/index.d.ts +1 -1
  113. package/dist/ui/unified/index.d.ts.map +1 -1
  114. package/dist/ui/unified/index.js +2 -0
  115. package/dist/ui/unified/index.js.map +1 -1
  116. package/dist/utils/errorUtils.d.ts +16 -0
  117. package/dist/utils/errorUtils.d.ts.map +1 -0
  118. package/dist/utils/errorUtils.js +66 -0
  119. package/dist/utils/errorUtils.js.map +1 -0
  120. package/package.json +2 -1
  121. package/dist/core/reliabilityPrompt.d.ts +0 -9
  122. package/dist/core/reliabilityPrompt.d.ts.map +0 -1
  123. package/dist/core/reliabilityPrompt.js +0 -31
  124. package/dist/core/reliabilityPrompt.js.map +0 -1
  125. package/dist/ui/animatedStatus.d.ts +0 -129
  126. package/dist/ui/animatedStatus.d.ts.map +0 -1
  127. package/dist/ui/animatedStatus.js +0 -384
  128. package/dist/ui/animatedStatus.js.map +0 -1
@@ -0,0 +1,549 @@
1
+ /**
2
+ * CLI Test Harness - PTY-based interactive CLI testing
3
+ *
4
+ * This module provides real runtime verification of CLI behavior by:
5
+ * 1. Spawning the CLI in a pseudo-terminal (PTY)
6
+ * 2. Sending simulated user input (including paste sequences)
7
+ * 3. Capturing and analyzing output
8
+ * 4. Verifying expected behaviors
9
+ *
10
+ * @license MIT
11
+ */
12
+ import { spawn } from 'node:child_process';
13
+ import { join } from 'node:path';
14
+ import { EventEmitter } from 'node:events';
15
+ // ============================================================================
16
+ // CONSTANTS
17
+ // ============================================================================
18
+ const BRACKETED_PASTE_START = '\x1b[200~';
19
+ const BRACKETED_PASTE_END = '\x1b[201~';
20
+ const SPECIAL_KEYS = {
21
+ 'enter': '\r',
22
+ 'tab': '\t',
23
+ 'escape': '\x1b',
24
+ 'ctrl-c': '\x03',
25
+ 'ctrl-d': '\x04',
26
+ };
27
+ // ============================================================================
28
+ // CLI TEST HARNESS
29
+ // ============================================================================
30
+ export class CLITestHarness extends EventEmitter {
31
+ config;
32
+ process = null;
33
+ output = '';
34
+ errors = '';
35
+ exitCode = null;
36
+ ptyModule = null;
37
+ constructor(config) {
38
+ super();
39
+ this.config = {
40
+ cwd: config.cwd,
41
+ env: config.env ?? {},
42
+ timeout: config.timeout ?? 30000,
43
+ usePty: config.usePty ?? false,
44
+ cliPath: config.cliPath ?? join(config.cwd, 'dist/bin/erosolar-optimized.js'),
45
+ };
46
+ }
47
+ /**
48
+ * Try to load node-pty for true PTY support
49
+ */
50
+ async loadPtyModule() {
51
+ if (this.ptyModule)
52
+ return true;
53
+ try {
54
+ // Dynamic import to avoid hard dependency
55
+ // @ts-expect-error - node-pty is optional
56
+ this.ptyModule = await import('node-pty');
57
+ return true;
58
+ }
59
+ catch {
60
+ return false;
61
+ }
62
+ }
63
+ /**
64
+ * Start the CLI process
65
+ */
66
+ async start() {
67
+ this.output = '';
68
+ this.errors = '';
69
+ this.exitCode = null;
70
+ const env = {
71
+ ...process.env,
72
+ ...this.config.env,
73
+ // Disable color output for easier parsing
74
+ NO_COLOR: '1',
75
+ FORCE_COLOR: '0',
76
+ // Set non-interactive mode hints
77
+ CI: '1',
78
+ };
79
+ if (this.config.usePty && await this.loadPtyModule()) {
80
+ await this.startWithPty(env);
81
+ }
82
+ else {
83
+ await this.startWithStdio(env);
84
+ }
85
+ }
86
+ /**
87
+ * Start CLI with PTY (for interactive features like bracketed paste)
88
+ */
89
+ async startWithPty(env) {
90
+ const pty = this.ptyModule;
91
+ this.process = pty.spawn('node', [this.config.cliPath], {
92
+ name: 'xterm-256color',
93
+ cols: 120,
94
+ rows: 30,
95
+ cwd: this.config.cwd,
96
+ env,
97
+ });
98
+ this.process.onData((data) => {
99
+ this.output += data;
100
+ this.emit('output', data);
101
+ });
102
+ this.process.onExit(({ exitCode }) => {
103
+ this.exitCode = exitCode;
104
+ this.emit('exit', exitCode);
105
+ });
106
+ }
107
+ /**
108
+ * Start CLI with standard stdio (fallback, limited interactive support)
109
+ */
110
+ async startWithStdio(env) {
111
+ this.process = spawn('node', [this.config.cliPath], {
112
+ cwd: this.config.cwd,
113
+ env,
114
+ stdio: ['pipe', 'pipe', 'pipe'],
115
+ });
116
+ this.process.stdout?.on('data', (data) => {
117
+ const str = data.toString();
118
+ this.output += str;
119
+ this.emit('output', str);
120
+ });
121
+ this.process.stderr?.on('data', (data) => {
122
+ const str = data.toString();
123
+ this.errors += str;
124
+ this.emit('error', str);
125
+ });
126
+ this.process.on('exit', (code) => {
127
+ this.exitCode = code ?? 0;
128
+ this.emit('exit', code);
129
+ });
130
+ }
131
+ /**
132
+ * Send input to the CLI
133
+ */
134
+ write(input) {
135
+ if (!this.process) {
136
+ throw new Error('CLI process not started');
137
+ }
138
+ if (this.config.usePty && this.ptyModule) {
139
+ this.process.write(input);
140
+ }
141
+ else {
142
+ this.process.stdin?.write(input);
143
+ }
144
+ }
145
+ /**
146
+ * Send a bracketed paste sequence
147
+ */
148
+ paste(content) {
149
+ this.write(BRACKETED_PASTE_START + content + BRACKETED_PASTE_END);
150
+ }
151
+ /**
152
+ * Send a special key
153
+ */
154
+ sendKey(key) {
155
+ const sequence = SPECIAL_KEYS[key];
156
+ if (sequence) {
157
+ this.write(sequence);
158
+ }
159
+ }
160
+ /**
161
+ * Wait for output matching a pattern
162
+ */
163
+ async waitForOutput(pattern, timeout = 5000) {
164
+ const startTime = Date.now();
165
+ const regex = typeof pattern === 'string' ? new RegExp(pattern, 'i') : pattern;
166
+ return new Promise((resolve, reject) => {
167
+ const check = () => {
168
+ if (regex.test(this.output)) {
169
+ resolve(this.output);
170
+ return;
171
+ }
172
+ if (Date.now() - startTime > timeout) {
173
+ reject(new Error(`Timeout waiting for pattern: ${pattern}`));
174
+ return;
175
+ }
176
+ setTimeout(check, 100);
177
+ };
178
+ check();
179
+ });
180
+ }
181
+ /**
182
+ * Wait for a specified duration
183
+ */
184
+ async wait(ms) {
185
+ return new Promise(resolve => setTimeout(resolve, ms));
186
+ }
187
+ /**
188
+ * Get current output
189
+ */
190
+ getOutput() {
191
+ return this.output;
192
+ }
193
+ /**
194
+ * Get current errors
195
+ */
196
+ getErrors() {
197
+ return this.errors;
198
+ }
199
+ /**
200
+ * Stop the CLI process
201
+ */
202
+ async stop() {
203
+ if (!this.process) {
204
+ return this.exitCode ?? 0;
205
+ }
206
+ return new Promise((resolve) => {
207
+ const timeout = setTimeout(() => {
208
+ this.process?.kill('SIGKILL');
209
+ }, 5000);
210
+ this.process.on('exit', (code) => {
211
+ clearTimeout(timeout);
212
+ resolve(code ?? 0);
213
+ });
214
+ // Try graceful shutdown first
215
+ this.sendKey('ctrl-c');
216
+ setTimeout(() => {
217
+ this.sendKey('ctrl-d');
218
+ }, 500);
219
+ });
220
+ }
221
+ /**
222
+ * Run a complete test scenario
223
+ */
224
+ async runScenario(scenario) {
225
+ const startTime = Date.now();
226
+ const result = {
227
+ scenario,
228
+ passed: true,
229
+ duration: 0,
230
+ output: '',
231
+ errors: [],
232
+ expectations: [],
233
+ };
234
+ try {
235
+ // Start the CLI
236
+ await this.start();
237
+ // Wait for initial startup
238
+ await this.wait(1000);
239
+ // Execute input sequence
240
+ for (const input of scenario.inputs) {
241
+ await this.executeInput(input);
242
+ }
243
+ // Wait for processing
244
+ await this.wait(500);
245
+ // Check expectations
246
+ for (const expectation of scenario.expectations) {
247
+ const expResult = await this.checkExpectation(expectation);
248
+ result.expectations.push(expResult);
249
+ if (!expResult.passed) {
250
+ result.passed = false;
251
+ result.errors.push(expResult.reason || 'Expectation failed');
252
+ }
253
+ }
254
+ }
255
+ catch (error) {
256
+ result.passed = false;
257
+ result.errors.push(error instanceof Error ? error.message : String(error));
258
+ }
259
+ finally {
260
+ await this.stop();
261
+ result.output = this.output;
262
+ result.duration = Date.now() - startTime;
263
+ }
264
+ return result;
265
+ }
266
+ /**
267
+ * Execute a single input action
268
+ */
269
+ async executeInput(input) {
270
+ switch (input.type) {
271
+ case 'text':
272
+ if (input.content) {
273
+ this.write(input.content);
274
+ }
275
+ break;
276
+ case 'paste':
277
+ if (input.content) {
278
+ this.paste(input.content);
279
+ }
280
+ break;
281
+ case 'key':
282
+ if (input.key) {
283
+ this.sendKey(input.key);
284
+ }
285
+ break;
286
+ case 'wait':
287
+ await this.wait(input.delay ?? 100);
288
+ break;
289
+ }
290
+ }
291
+ /**
292
+ * Check a single expectation
293
+ */
294
+ async checkExpectation(expectation) {
295
+ const timeout = expectation.timeout ?? 5000;
296
+ try {
297
+ switch (expectation.type) {
298
+ case 'output_contains': {
299
+ const pattern = expectation.value;
300
+ try {
301
+ await this.waitForOutput(pattern, timeout);
302
+ return { expectation, passed: true, actual: this.output };
303
+ }
304
+ catch {
305
+ return {
306
+ expectation,
307
+ passed: false,
308
+ actual: this.output.slice(-500),
309
+ reason: `Output does not contain: "${pattern}"`,
310
+ };
311
+ }
312
+ }
313
+ case 'output_matches': {
314
+ const regex = expectation.value instanceof RegExp
315
+ ? expectation.value
316
+ : new RegExp(expectation.value);
317
+ if (regex.test(this.output)) {
318
+ return { expectation, passed: true, actual: this.output };
319
+ }
320
+ return {
321
+ expectation,
322
+ passed: false,
323
+ actual: this.output.slice(-500),
324
+ reason: `Output does not match: ${regex}`,
325
+ };
326
+ }
327
+ case 'output_not_contains': {
328
+ const pattern = expectation.value;
329
+ if (!this.output.includes(pattern)) {
330
+ return { expectation, passed: true };
331
+ }
332
+ return {
333
+ expectation,
334
+ passed: false,
335
+ actual: this.output.slice(-500),
336
+ reason: `Output unexpectedly contains: "${pattern}"`,
337
+ };
338
+ }
339
+ case 'exit_code': {
340
+ const expected = expectation.value;
341
+ if (this.exitCode === expected) {
342
+ return { expectation, passed: true, actual: String(this.exitCode) };
343
+ }
344
+ return {
345
+ expectation,
346
+ passed: false,
347
+ actual: String(this.exitCode),
348
+ reason: `Exit code ${this.exitCode} !== expected ${expected}`,
349
+ };
350
+ }
351
+ default:
352
+ return {
353
+ expectation,
354
+ passed: false,
355
+ reason: `Unknown expectation type: ${expectation.type}`,
356
+ };
357
+ }
358
+ }
359
+ catch (error) {
360
+ return {
361
+ expectation,
362
+ passed: false,
363
+ reason: error instanceof Error ? error.message : String(error),
364
+ };
365
+ }
366
+ }
367
+ }
368
+ // ============================================================================
369
+ // PREDEFINED TEST SCENARIOS
370
+ // ============================================================================
371
+ /**
372
+ * Create a paste handling test scenario
373
+ */
374
+ export function createPasteTestScenario(content, expectedLineCount) {
375
+ return {
376
+ id: `paste-${expectedLineCount}-lines`,
377
+ description: `Test pasting ${expectedLineCount} lines of content`,
378
+ category: 'paste',
379
+ inputs: [
380
+ { type: 'wait', delay: 2000 }, // Wait for CLI to initialize
381
+ { type: 'paste', content },
382
+ { type: 'wait', delay: 500 },
383
+ { type: 'key', key: 'enter' },
384
+ { type: 'wait', delay: 1000 },
385
+ ],
386
+ expectations: [
387
+ {
388
+ type: 'output_contains',
389
+ value: `${expectedLineCount} line`,
390
+ description: 'Should show line count in preview',
391
+ },
392
+ ],
393
+ };
394
+ }
395
+ /**
396
+ * Create a multi-line input test scenario
397
+ */
398
+ export function createMultiLineInputScenario() {
399
+ const multiLineContent = 'function test() {\n console.log("hello");\n return true;\n}';
400
+ return {
401
+ id: 'multi-line-input',
402
+ description: 'Test multi-line code input handling',
403
+ category: 'input',
404
+ inputs: [
405
+ { type: 'wait', delay: 2000 },
406
+ { type: 'paste', content: multiLineContent },
407
+ { type: 'wait', delay: 500 },
408
+ { type: 'key', key: 'enter' },
409
+ { type: 'wait', delay: 2000 },
410
+ ],
411
+ expectations: [
412
+ {
413
+ type: 'output_contains',
414
+ value: '4 line',
415
+ description: 'Should show 4 lines in preview',
416
+ },
417
+ {
418
+ type: 'output_not_contains',
419
+ value: 'error',
420
+ description: 'Should not show errors',
421
+ },
422
+ ],
423
+ };
424
+ }
425
+ /**
426
+ * Create a slash command test scenario
427
+ */
428
+ export function createSlashCommandScenario(command) {
429
+ return {
430
+ id: `slash-${command.replace('/', '')}`,
431
+ description: `Test /${command} slash command`,
432
+ category: 'command',
433
+ inputs: [
434
+ { type: 'wait', delay: 2000 },
435
+ { type: 'text', content: `/${command}` },
436
+ { type: 'key', key: 'enter' },
437
+ { type: 'wait', delay: 1000 },
438
+ ],
439
+ expectations: [
440
+ {
441
+ type: 'output_not_contains',
442
+ value: 'Unknown command',
443
+ description: 'Command should be recognized',
444
+ },
445
+ ],
446
+ };
447
+ }
448
+ // ============================================================================
449
+ // VERIFICATION INTEGRATION
450
+ // ============================================================================
451
+ /**
452
+ * Run verification tests for a specific claim type
453
+ */
454
+ export async function runVerificationTests(claimType, workingDir) {
455
+ const harness = new CLITestHarness({
456
+ cwd: workingDir,
457
+ timeout: 60000,
458
+ usePty: true, // Try PTY first
459
+ });
460
+ const scenarios = [];
461
+ // Select scenarios based on claim type
462
+ switch (claimType) {
463
+ case 'paste_handling':
464
+ scenarios.push(createPasteTestScenario('line1\nline2\nline3', 3), createPasteTestScenario('a\nb\nc\nd\ne\nf\ng\nh\ni\nj', 10), createMultiLineInputScenario());
465
+ break;
466
+ case 'slash_commands':
467
+ scenarios.push(createSlashCommandScenario('help'), createSlashCommandScenario('model'), createSlashCommandScenario('clear'));
468
+ break;
469
+ case 'build_success':
470
+ // For build claims, we don't need PTY - just run npm build
471
+ scenarios.push({
472
+ id: 'build-check',
473
+ description: 'Verify project builds successfully',
474
+ category: 'command',
475
+ inputs: [],
476
+ expectations: [],
477
+ });
478
+ break;
479
+ default:
480
+ // Generic behavior test
481
+ scenarios.push({
482
+ id: 'startup-check',
483
+ description: 'Verify CLI starts without errors',
484
+ category: 'behavior',
485
+ inputs: [
486
+ { type: 'wait', delay: 3000 },
487
+ { type: 'key', key: 'ctrl-c' },
488
+ ],
489
+ expectations: [
490
+ {
491
+ type: 'output_not_contains',
492
+ value: 'Error:',
493
+ description: 'Should not show errors on startup',
494
+ },
495
+ ],
496
+ });
497
+ }
498
+ const results = [];
499
+ let allPassed = true;
500
+ for (const scenario of scenarios) {
501
+ const result = await harness.runScenario(scenario);
502
+ results.push(result);
503
+ if (!result.passed) {
504
+ allPassed = false;
505
+ }
506
+ }
507
+ const passed = results.filter(r => r.passed).length;
508
+ const failed = results.filter(r => !r.passed).length;
509
+ const summary = `${passed}/${results.length} tests passed${failed > 0 ? `, ${failed} failed` : ''}`;
510
+ return {
511
+ passed: allPassed,
512
+ results,
513
+ summary,
514
+ };
515
+ }
516
+ /**
517
+ * Verify a single claim using the appropriate method (PTY-based)
518
+ */
519
+ export async function verifyClaim(claim, workingDir) {
520
+ const startTime = Date.now();
521
+ // Route ALL claims through PTY-based verification
522
+ const verification = await runVerificationTests(claim.context['feature'] || claim.category, workingDir);
523
+ return {
524
+ claim,
525
+ passed: verification.passed,
526
+ method: 'pty',
527
+ output: verification.results.map(r => r.output).join('\n'),
528
+ error: verification.passed ? undefined : verification.summary,
529
+ duration: Date.now() - startTime,
530
+ };
531
+ }
532
+ /**
533
+ * Verify all claims using unified PTY harness
534
+ */
535
+ export async function verifyAllClaims(claims, workingDir) {
536
+ const results = [];
537
+ for (const claim of claims) {
538
+ const result = await verifyClaim(claim, workingDir);
539
+ results.push(result);
540
+ }
541
+ const passed = results.filter(r => r.passed).length;
542
+ const failed = results.filter(r => !r.passed).length;
543
+ return {
544
+ results,
545
+ summary: { total: claims.length, passed, failed },
546
+ };
547
+ }
548
+ export default CLITestHarness;
549
+ //# sourceMappingURL=cliTestHarness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cliTestHarness.js","sourceRoot":"","sources":["../../src/core/cliTestHarness.ts"],"names":[],"mappings":"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"}
@@ -29,7 +29,6 @@ export interface SessionPreferences {
29
29
  autosave: boolean;
30
30
  autoResume: boolean;
31
31
  autoContinue: boolean;
32
- autoUpdate: boolean | null;
33
32
  lastSessionId: string | null;
34
33
  thinkingMode: ThinkingMode;
35
34
  criticalApprovalMode: CriticalApprovalMode;
@@ -1 +1 @@
1
- {"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../../src/core/preferences.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAMhD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,UAAU,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,oBAAoB,CAAC;CACxC;AAyBD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAMD,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC;AACnD,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,UAAU,CAAC;AAEvD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,YAAY,CAAC;IAC3B,oBAAoB,EAAE,oBAAoB,CAAC;CAC5C;AAED,wBAAgB,2BAA2B,IAAI,WAAW,GAAG,IAAI,CAMhE;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAUtE;AAED,wBAAgB,4BAA4B,IAAI,IAAI,CASnD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,wBAAwB,GAAG,IAAI,CAazF;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,wBAAwB,GACnC,IAAI,CAMN;AAED,wBAAgB,gBAAgB,IAAI,YAAY,GAAG,IAAI,CAOtD;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAQ7D;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAWxC;AAED,wBAAgB,sBAAsB,IAAI,kBAAkB,CAgB3D;AAED,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI,CA8BrF;AAsID;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,YASnC,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,CAQ/C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAM1D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,YAAY,CAMxF;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,YAAY,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAiChG,CAAC"}
1
+ {"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../../src/core/preferences.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAMhD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,UAAU,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,oBAAoB,CAAC;CACxC;AAwBD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAMD,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,UAAU,CAAC;AACnD,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,UAAU,CAAC;AAEvD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,YAAY,CAAC;IAC3B,oBAAoB,EAAE,oBAAoB,CAAC;CAC5C;AAED,wBAAgB,2BAA2B,IAAI,WAAW,GAAG,IAAI,CAMhE;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAUtE;AAED,wBAAgB,4BAA4B,IAAI,IAAI,CASnD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,wBAAwB,GAAG,IAAI,CAazF;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,wBAAwB,GACnC,IAAI,CAMN;AAED,wBAAgB,gBAAgB,IAAI,YAAY,GAAG,IAAI,CAOtD;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAQ7D;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAWxC;AAED,wBAAgB,sBAAsB,IAAI,kBAAkB,CAe3D;AAED,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI,CA2BrF;AAmID;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,YASnC,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,CAQ/C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAM1D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,YAAY,CAMxF;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,YAAY,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAiChG,CAAC"}
@@ -86,11 +86,10 @@ export function loadSessionPreferences() {
86
86
  const payload = readSettingsFile();
87
87
  const section = payload?.session;
88
88
  return {
89
- // autoContinue defaults to true - ensures models that express intent get prompted to use tools
89
+ // All toggles default to false except thinking mode
90
90
  autosave: typeof section?.autosave === 'boolean' ? section.autosave : false,
91
91
  autoResume: typeof section?.autoResume === 'boolean' ? section.autoResume : false,
92
- autoContinue: typeof section?.autoContinue === 'boolean' ? section.autoContinue : true,
93
- autoUpdate: typeof section?.autoUpdate === 'boolean' ? section.autoUpdate : null,
92
+ autoContinue: typeof section?.autoContinue === 'boolean' ? section.autoContinue : false,
94
93
  lastSessionId: typeof section?.lastSessionId === 'string' && section.lastSessionId.trim()
95
94
  ? section.lastSessionId.trim()
96
95
  : null,
@@ -112,9 +111,6 @@ export function saveSessionPreferences(preferences) {
112
111
  if (typeof preferences.autoContinue === 'boolean') {
113
112
  section.autoContinue = preferences.autoContinue;
114
113
  }
115
- if ('autoUpdate' in preferences) {
116
- section.autoUpdate = preferences.autoUpdate ?? undefined;
117
- }
118
114
  if ('lastSessionId' in preferences) {
119
115
  section.lastSessionId = preferences.lastSessionId ?? undefined;
120
116
  }
@@ -195,9 +191,6 @@ function parseSessionPreferences(value) {
195
191
  if (typeof record.autoContinue === 'boolean') {
196
192
  section.autoContinue = record.autoContinue;
197
193
  }
198
- if (typeof record.autoUpdate === 'boolean') {
199
- section.autoUpdate = record.autoUpdate;
200
- }
201
194
  if (typeof record.lastSessionId === 'string' && record.lastSessionId.trim()) {
202
195
  section.lastSessionId = record.lastSessionId.trim();
203
196
  }