erosolar-cli 2.1.264 → 2.1.266
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/capabilities/orchestrationCapability.d.ts.map +1 -1
- package/dist/capabilities/orchestrationCapability.js +51 -0
- package/dist/capabilities/orchestrationCapability.js.map +1 -1
- package/dist/core/completeAttackOrchestrator.d.ts.map +1 -1
- package/dist/core/completeAttackOrchestrator.js +2 -1
- package/dist/core/completeAttackOrchestrator.js.map +1 -1
- package/dist/core/realExecutionOrchestrator.d.ts +93 -0
- package/dist/core/realExecutionOrchestrator.d.ts.map +1 -0
- package/dist/core/realExecutionOrchestrator.js +306 -0
- package/dist/core/realExecutionOrchestrator.js.map +1 -0
- package/dist/core/unifiedRealOrchestrator.d.ts +126 -0
- package/dist/core/unifiedRealOrchestrator.d.ts.map +1 -0
- package/dist/core/unifiedRealOrchestrator.js +381 -0
- package/dist/core/unifiedRealOrchestrator.js.map +1 -0
- package/dist/shell/interactiveShell.d.ts +5 -0
- package/dist/shell/interactiveShell.d.ts.map +1 -1
- package/dist/shell/interactiveShell.js +25 -8
- package/dist/shell/interactiveShell.js.map +1 -1
- package/dist/tools/offensiveTransparencyTools.d.ts.map +1 -1
- package/dist/tools/offensiveTransparencyTools.js +8 -2
- package/dist/tools/offensiveTransparencyTools.js.map +1 -1
- package/dist/tools/taoTools.js +4 -7
- package/dist/tools/taoTools.js.map +1 -1
- package/dist/ui/UnifiedUIRenderer.d.ts +15 -1
- package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -1
- package/dist/ui/UnifiedUIRenderer.js +95 -53
- package/dist/ui/UnifiedUIRenderer.js.map +1 -1
- package/dist/ui/toolDisplay.d.ts +1 -1
- package/dist/ui/toolDisplay.d.ts.map +1 -1
- package/dist/ui/toolDisplay.js +5 -26
- package/dist/ui/toolDisplay.js.map +1 -1
- package/package.json +1 -1
|
@@ -134,6 +134,16 @@ export declare class UnifiedUIRenderer extends EventEmitter {
|
|
|
134
134
|
private setupInputHandlers;
|
|
135
135
|
private emitInputChange;
|
|
136
136
|
private handleKeypress;
|
|
137
|
+
/**
|
|
138
|
+
* Ensure horizontal cursor position stays within the visible input window.
|
|
139
|
+
* Prevents jumps when using left/right arrows on long lines.
|
|
140
|
+
*/
|
|
141
|
+
private ensureCursorVisible;
|
|
142
|
+
/**
|
|
143
|
+
* Parse raw escape sequences when readline doesn't populate key metadata.
|
|
144
|
+
* Prevents control codes (e.g., ^[[200~) from leaking into the buffer.
|
|
145
|
+
*/
|
|
146
|
+
private parseEscapeSequence;
|
|
137
147
|
/**
|
|
138
148
|
* Queue characters for deferred insertion. This prevents visual "leak" of
|
|
139
149
|
* pasted content by holding characters until we're confident it's not a paste.
|
|
@@ -337,9 +347,13 @@ export declare class UnifiedUIRenderer extends EventEmitter {
|
|
|
337
347
|
* Format: ⏵⏵ accept edits on (shift+tab to cycle)
|
|
338
348
|
* Returns wrapped lines to ensure all toggles (including RL) are visible below the chat box.
|
|
339
349
|
*/
|
|
350
|
+
/**
|
|
351
|
+
* Build unified toggle status line with color-coded states and integrated explanations.
|
|
352
|
+
* Single-line format: icon status [hotkey] — explanation | next toggle...
|
|
353
|
+
*/
|
|
340
354
|
private buildInlineToggleLine;
|
|
341
355
|
/**
|
|
342
|
-
*
|
|
356
|
+
* @deprecated Legend is now integrated into buildInlineToggleLine for unified display
|
|
343
357
|
*/
|
|
344
358
|
private buildToggleLegend;
|
|
345
359
|
private buildChromeLines;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnifiedUIRenderer.d.ts","sourceRoot":"","sources":["../../src/ui/UnifiedUIRenderer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"UnifiedUIRenderer.d.ts","sourceRoot":"","sources":["../../src/ui/UnifiedUIRenderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -316,36 +316,40 @@ export class UnifiedUIRenderer extends EventEmitter {
|
|
|
316
316
|
this.emit('change', payload);
|
|
317
317
|
}
|
|
318
318
|
handleKeypress(str, key) {
|
|
319
|
-
|
|
319
|
+
// Normalize missing key metadata (common for some terminals emitting raw escape codes)
|
|
320
|
+
const normalizedKey = key ?? this.parseEscapeSequence(str);
|
|
321
|
+
const keyForPaste = normalizedKey ?? (str ? { sequence: str } : key);
|
|
322
|
+
if (this.handleBracketedPaste(str, keyForPaste)) {
|
|
320
323
|
return;
|
|
321
|
-
|
|
324
|
+
}
|
|
325
|
+
if (this.handlePlainPaste(str, keyForPaste)) {
|
|
322
326
|
return;
|
|
323
327
|
}
|
|
324
|
-
if (
|
|
328
|
+
if (!normalizedKey) {
|
|
325
329
|
return;
|
|
326
330
|
}
|
|
327
|
-
if (this.inputCapture &&
|
|
331
|
+
if (this.inputCapture && normalizedKey.ctrl && (normalizedKey.name === 'c' || normalizedKey.name === 'd')) {
|
|
328
332
|
this.cancelInputCapture(new Error('Input capture cancelled'));
|
|
329
333
|
this.clearBuffer();
|
|
330
334
|
return;
|
|
331
335
|
}
|
|
332
|
-
if (
|
|
336
|
+
if (normalizedKey.ctrl && normalizedKey.shift && normalizedKey.name?.toLowerCase() === 'a') {
|
|
333
337
|
this.emit('toggle-critical-approval');
|
|
334
338
|
return;
|
|
335
339
|
}
|
|
336
|
-
if (
|
|
340
|
+
if (normalizedKey.ctrl && normalizedKey.shift && normalizedKey.name?.toLowerCase() === 'g') {
|
|
337
341
|
this.emit('toggle-auto-continue');
|
|
338
342
|
return;
|
|
339
343
|
}
|
|
340
|
-
if (
|
|
344
|
+
if (normalizedKey.ctrl && normalizedKey.shift && normalizedKey.name?.toLowerCase() === 'd') {
|
|
341
345
|
this.emit('toggle-dual-rl');
|
|
342
346
|
return;
|
|
343
347
|
}
|
|
344
|
-
if (
|
|
348
|
+
if (normalizedKey.ctrl && normalizedKey.name?.toLowerCase() === 'r') {
|
|
345
349
|
this.emit('resume');
|
|
346
350
|
return;
|
|
347
351
|
}
|
|
348
|
-
if (
|
|
352
|
+
if (normalizedKey.ctrl && normalizedKey.name === 'c') {
|
|
349
353
|
// Ctrl+C behavior:
|
|
350
354
|
// 1. If buffer has text: clear it first, then notify shell
|
|
351
355
|
// 2. If buffer is empty: let shell decide to pause AI or quit
|
|
@@ -404,7 +408,7 @@ export class UnifiedUIRenderer extends EventEmitter {
|
|
|
404
408
|
this.submitText(this.buffer);
|
|
405
409
|
return;
|
|
406
410
|
}
|
|
407
|
-
if (
|
|
411
|
+
if (normalizedKey.name === 'backspace') {
|
|
408
412
|
if (this.collapsedPaste) {
|
|
409
413
|
this.collapsedPaste = null;
|
|
410
414
|
this.renderPrompt();
|
|
@@ -420,7 +424,7 @@ export class UnifiedUIRenderer extends EventEmitter {
|
|
|
420
424
|
}
|
|
421
425
|
return;
|
|
422
426
|
}
|
|
423
|
-
if (
|
|
427
|
+
if (normalizedKey.name === 'delete') {
|
|
424
428
|
if (this.cursor < this.buffer.length) {
|
|
425
429
|
this.buffer = this.buffer.slice(0, this.cursor) + this.buffer.slice(this.cursor + 1);
|
|
426
430
|
this.updateSuggestions();
|
|
@@ -429,23 +433,25 @@ export class UnifiedUIRenderer extends EventEmitter {
|
|
|
429
433
|
}
|
|
430
434
|
return;
|
|
431
435
|
}
|
|
432
|
-
if (
|
|
436
|
+
if (normalizedKey.name === 'left') {
|
|
433
437
|
if (this.cursor > 0) {
|
|
434
438
|
this.cursor--;
|
|
439
|
+
this.ensureCursorVisible();
|
|
435
440
|
this.renderPrompt();
|
|
436
441
|
this.emitInputChange();
|
|
437
442
|
}
|
|
438
443
|
return;
|
|
439
444
|
}
|
|
440
|
-
if (
|
|
445
|
+
if (normalizedKey.name === 'right') {
|
|
441
446
|
if (this.cursor < this.buffer.length) {
|
|
442
447
|
this.cursor++;
|
|
448
|
+
this.ensureCursorVisible();
|
|
443
449
|
this.renderPrompt();
|
|
444
450
|
this.emitInputChange();
|
|
445
451
|
}
|
|
446
452
|
return;
|
|
447
453
|
}
|
|
448
|
-
if (
|
|
454
|
+
if (normalizedKey.name === 'up') {
|
|
449
455
|
if (this.navigateSuggestions(-1)) {
|
|
450
456
|
return;
|
|
451
457
|
}
|
|
@@ -472,7 +478,7 @@ export class UnifiedUIRenderer extends EventEmitter {
|
|
|
472
478
|
}
|
|
473
479
|
return;
|
|
474
480
|
}
|
|
475
|
-
if (
|
|
481
|
+
if (normalizedKey.name === 'down') {
|
|
476
482
|
if (this.navigateSuggestions(1)) {
|
|
477
483
|
return;
|
|
478
484
|
}
|
|
@@ -498,16 +504,51 @@ export class UnifiedUIRenderer extends EventEmitter {
|
|
|
498
504
|
}
|
|
499
505
|
return;
|
|
500
506
|
}
|
|
501
|
-
if (
|
|
507
|
+
if (normalizedKey.name === 'tab') {
|
|
502
508
|
if (this.applySuggestion(false))
|
|
503
509
|
return;
|
|
504
510
|
return;
|
|
505
511
|
}
|
|
506
|
-
if (str && !
|
|
512
|
+
if (str && !normalizedKey.ctrl && !normalizedKey.meta) {
|
|
507
513
|
// Defer insertion to allow paste detection window to catch rapid input
|
|
508
514
|
this.queuePendingInsert(str);
|
|
509
515
|
}
|
|
510
516
|
}
|
|
517
|
+
/**
|
|
518
|
+
* Ensure horizontal cursor position stays within the visible input window.
|
|
519
|
+
* Prevents jumps when using left/right arrows on long lines.
|
|
520
|
+
*/
|
|
521
|
+
ensureCursorVisible() {
|
|
522
|
+
const maxWidth = Math.max(10, this.safeWidth() - 12); // margin for prompt/toggles and padding
|
|
523
|
+
// If cursor is left of current window, shift window left
|
|
524
|
+
if (this.cursor < this.inputRenderOffset) {
|
|
525
|
+
this.inputRenderOffset = this.cursor;
|
|
526
|
+
return;
|
|
527
|
+
}
|
|
528
|
+
// If cursor is beyond visible window, shift window right
|
|
529
|
+
if (this.cursor - this.inputRenderOffset >= maxWidth) {
|
|
530
|
+
this.inputRenderOffset = this.cursor - maxWidth + 1;
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
/**
|
|
534
|
+
* Parse raw escape sequences when readline doesn't populate key metadata.
|
|
535
|
+
* Prevents control codes (e.g., ^[[200~) from leaking into the buffer.
|
|
536
|
+
*/
|
|
537
|
+
parseEscapeSequence(sequence) {
|
|
538
|
+
if (!sequence)
|
|
539
|
+
return null;
|
|
540
|
+
const map = {
|
|
541
|
+
'\x1b[A': { name: 'up', sequence },
|
|
542
|
+
'\x1b[B': { name: 'down', sequence },
|
|
543
|
+
'\x1b[C': { name: 'right', sequence },
|
|
544
|
+
'\x1b[D': { name: 'left', sequence },
|
|
545
|
+
'\x1b[H': { name: 'home', sequence },
|
|
546
|
+
'\x1b[F': { name: 'end', sequence },
|
|
547
|
+
'\x1b[200~': { name: 'paste-start', sequence },
|
|
548
|
+
'\x1b[201~': { name: 'paste-end', sequence },
|
|
549
|
+
};
|
|
550
|
+
return map[sequence] ?? null;
|
|
551
|
+
}
|
|
511
552
|
/**
|
|
512
553
|
* Queue characters for deferred insertion. This prevents visual "leak" of
|
|
513
554
|
* pasted content by holding characters until we're confident it's not a paste.
|
|
@@ -2148,52 +2189,53 @@ export class UnifiedUIRenderer extends EventEmitter {
|
|
|
2148
2189
|
* Format: ⏵⏵ accept edits on (shift+tab to cycle)
|
|
2149
2190
|
* Returns wrapped lines to ensure all toggles (including RL) are visible below the chat box.
|
|
2150
2191
|
*/
|
|
2192
|
+
/**
|
|
2193
|
+
* Build unified toggle status line with color-coded states and integrated explanations.
|
|
2194
|
+
* Single-line format: icon status [hotkey] — explanation | next toggle...
|
|
2195
|
+
*/
|
|
2151
2196
|
buildInlineToggleLine() {
|
|
2152
|
-
const parts = [];
|
|
2153
|
-
const format = (label, value, hotkey) => `${theme.ui.muted(label)} ${theme.info(value)}${hotkey ? theme.ui.muted(` [${hotkey.toUpperCase()}]`) : ''}`;
|
|
2154
2197
|
const autoVerifyActive = this.toggleState.autoContinueEnabled ?? false;
|
|
2155
2198
|
const verificationActive = this.toggleState.verificationEnabled || autoVerifyActive;
|
|
2156
|
-
// RL mode (first so it never gets truncated)
|
|
2157
|
-
const rlIcon = this.toggleState.dualRlEnabled ? '🤖' : '⚡';
|
|
2158
|
-
const rlLabel = this.toggleState.dualRlEnabled ? 'RL mode' : 'single';
|
|
2159
|
-
const rlStatus = this.toggleState.dualRlEnabled ? theme.success('on') : theme.ui.muted('off');
|
|
2160
|
-
parts.push(`${rlIcon} ${rlLabel} ${rlStatus} ${theme.ui.muted('[CTRL+SHIFT+D]')}`);
|
|
2161
|
-
// Edit acceptance mode - Claude Code style with ⏵⏵
|
|
2162
|
-
const editIcon = '⏵⏵';
|
|
2163
|
-
const editState = verificationActive ? 'verify edits' : 'accept edits';
|
|
2164
|
-
const editStatus = verificationActive ? theme.warning('on') : theme.success('on');
|
|
2165
|
-
parts.push(`${theme.ui.muted(editIcon)} ${editState} ${editStatus} ${theme.ui.muted('[SHIFT+TAB]')}`);
|
|
2166
|
-
// Verification toggle
|
|
2167
|
-
const verifyLabel = autoVerifyActive
|
|
2168
|
-
? 'verify on (auto)'
|
|
2169
|
-
: verificationActive
|
|
2170
|
-
? 'verify on'
|
|
2171
|
-
: 'verify off';
|
|
2172
|
-
parts.push(format('verify', verifyLabel, this.toggleState.verificationHotkey));
|
|
2173
|
-
// Approvals toggle
|
|
2174
2199
|
const approvalMode = this.toggleState.criticalApprovalMode || 'auto';
|
|
2175
|
-
const approvalsLabel = approvalMode === 'approval' ? 'approvals ask' : 'approvals auto';
|
|
2176
|
-
parts.push(format('approvals', approvalsLabel, this.toggleState.criticalApprovalHotkey));
|
|
2177
|
-
// Thinking mode
|
|
2178
2200
|
const thinkingLabel = (this.toggleState.thinkingModeLabel || 'balanced').trim().toLowerCase();
|
|
2179
|
-
|
|
2180
|
-
|
|
2201
|
+
// Build unified toggle segments with color-coded status and inline explanation
|
|
2202
|
+
const toggles = [];
|
|
2203
|
+
// RL mode: 🤖 on [CTRL+SHIFT+D] — multi-agent loop
|
|
2204
|
+
const rlOn = this.toggleState.dualRlEnabled;
|
|
2205
|
+
const rlIcon = rlOn ? '🤖' : '⚡';
|
|
2206
|
+
const rlStatus = rlOn ? theme.success('RL on') : theme.ui.muted('RL off');
|
|
2207
|
+
const rlExplain = rlOn ? 'multi-agent loop' : 'one-pass agent';
|
|
2208
|
+
toggles.push(`${rlIcon} ${rlStatus} ${theme.ui.muted('[CTRL+SHIFT+D]')} ${theme.ui.muted('—')} ${theme.ui.muted(rlExplain)}`);
|
|
2209
|
+
// Edit mode: ⏵⏵ accept/verify [SHIFT+TAB] — explanation
|
|
2210
|
+
const editIcon = '⏵⏵';
|
|
2211
|
+
const editStatus = verificationActive ? theme.warning('verify') : theme.success('accept');
|
|
2212
|
+
const editExplain = verificationActive ? 'gate edits' : 'apply directly';
|
|
2213
|
+
toggles.push(`${theme.ui.muted(editIcon)} ${editStatus} ${theme.ui.muted('[SHIFT+TAB]')} ${theme.ui.muted('—')} ${theme.ui.muted(editExplain)}`);
|
|
2214
|
+
// Verify: on/off/auto [CTRL+SHIFT+V]
|
|
2215
|
+
const verifyStatus = autoVerifyActive
|
|
2216
|
+
? theme.info('auto')
|
|
2217
|
+
: verificationActive
|
|
2218
|
+
? theme.warning('on')
|
|
2219
|
+
: theme.ui.muted('off');
|
|
2220
|
+
toggles.push(`${theme.ui.muted('verify')} ${verifyStatus} ${theme.ui.muted(`[${(this.toggleState.verificationHotkey || 'CTRL+SHIFT+V').toUpperCase()}]`)}`);
|
|
2221
|
+
// Approvals: auto/ask [CTRL+SHIFT+A]
|
|
2222
|
+
const approvalsStatus = approvalMode === 'approval' ? theme.warning('ask') : theme.success('auto');
|
|
2223
|
+
const approvalsExplain = approvalMode === 'approval' ? 'prompt for all' : 'low-risk auto';
|
|
2224
|
+
toggles.push(`${theme.ui.muted('approvals')} ${approvalsStatus} ${theme.ui.muted(`[${(this.toggleState.criticalApprovalHotkey || 'CTRL+SHIFT+A').toUpperCase()}]`)} ${theme.ui.muted('—')} ${theme.ui.muted(approvalsExplain)}`);
|
|
2225
|
+
// Thinking: balanced/deep [TAB]
|
|
2226
|
+
const thinkingIsDeep = thinkingLabel === 'extended' || thinkingLabel === 'deep';
|
|
2227
|
+
const thinkingStatus = thinkingIsDeep ? theme.info('deep') : theme.ui.muted('balanced');
|
|
2228
|
+
const thinkingExplain = thinkingIsDeep ? 'richer reasoning' : 'concise';
|
|
2229
|
+
toggles.push(`${theme.ui.muted('thinking')} ${thinkingStatus} ${theme.ui.muted(`[${(this.toggleState.thinkingHotkey || 'TAB').toUpperCase()}]`)} ${theme.ui.muted('—')} ${theme.ui.muted(thinkingExplain)}`);
|
|
2181
2230
|
const maxWidth = Math.max(10, this.safeWidth() - 2);
|
|
2182
|
-
return this.wrapSegments(
|
|
2231
|
+
return this.wrapSegments(toggles, maxWidth);
|
|
2183
2232
|
}
|
|
2184
2233
|
/**
|
|
2185
|
-
*
|
|
2234
|
+
* @deprecated Legend is now integrated into buildInlineToggleLine for unified display
|
|
2186
2235
|
*/
|
|
2187
2236
|
buildToggleLegend() {
|
|
2188
|
-
|
|
2189
|
-
|
|
2190
|
-
add('RL mode', 'on = reinforcement-style multi-agent loop; off/single = one-pass agent');
|
|
2191
|
-
add('Verify', 'on/auto = gate edits with verification; off = apply edits directly');
|
|
2192
|
-
add('Auto-continue', 'on = continue through steps without pausing; off = wait between steps');
|
|
2193
|
-
add('Approvals', 'auto = approve low-risk; ask = prompt for critical actions');
|
|
2194
|
-
add('Thinking', 'balanced = concise; deep = richer reasoning output');
|
|
2195
|
-
const maxWidth = Math.max(10, this.safeWidth() - 2);
|
|
2196
|
-
return this.wrapSegments(items, maxWidth);
|
|
2237
|
+
// Legend explanations now integrated directly into toggle line
|
|
2238
|
+
return [];
|
|
2197
2239
|
}
|
|
2198
2240
|
buildChromeLines() {
|
|
2199
2241
|
const maxWidth = this.safeWidth();
|