praxis-agent 0.23.0 → 0.23.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli/interactive.js
CHANGED
|
@@ -15,6 +15,7 @@ import { redactSensitiveText, sensitiveEnvironmentValues, } from '../platform/se
|
|
|
15
15
|
import { CommandPalette, BtwPanel, Composer, DiffDashboard, DialogFrame, ExternalEditorWait, HelpMenu, HookDashboard, ListDashboard, MemoryDashboard, MentionPicker, ModelMenu, PermissionDashboard, SelectionMenu, SessionPicker, ThemePicker, CustomThemeEditor, SessionIdentity, Transcript, WelcomePanel, useTerminalRows, useTerminalWidth, } from './tui/claude-style.js';
|
|
16
16
|
import { loadTuiMemoryFiles, openTuiMemoryFolder, } from './tui/memory-files.js';
|
|
17
17
|
import { loadClaudeReleaseNotes } from './tui/release-notes.js';
|
|
18
|
+
import { fullscreenInkRenderOptions } from './tui/fullscreen-renderer.js';
|
|
18
19
|
import { StreamingFrameBuffer } from './tui/streaming-frame-buffer.js';
|
|
19
20
|
import { createClaudeStatusLineInput, StatusLine } from './tui/status-line.js';
|
|
20
21
|
import { FULLSCREEN_TRANSCRIPT_RESERVED_ROWS, transcriptLineCount, } from './tui/transcript-viewport.js';
|
|
@@ -2692,6 +2693,14 @@ export function InteractiveApp({ dataPlane = resolveDataPlane(), configRoot: sup
|
|
|
2692
2693
|
}
|
|
2693
2694
|
setUsage(result.usage);
|
|
2694
2695
|
setCostUsd(result.costUsd);
|
|
2696
|
+
// The active stream and its committed final item must never render in the
|
|
2697
|
+
// same frame. Publish the cleared stream before appending the final
|
|
2698
|
+
// assistant entry; there is no await between these operations, and the
|
|
2699
|
+
// renderer's frame buffer prevents the identical text from being shown
|
|
2700
|
+
// twice during the transition.
|
|
2701
|
+
streamingFrameRef.current?.resetText();
|
|
2702
|
+
streamingFrameRef.current?.resetThinking();
|
|
2703
|
+
streamingFrameRef.current?.flush();
|
|
2695
2704
|
append({ kind: 'assistant', text: result.text });
|
|
2696
2705
|
if (turnMutatedFilesRef.current) {
|
|
2697
2706
|
try {
|
|
@@ -6070,9 +6079,8 @@ export async function runInteractive(options) {
|
|
|
6070
6079
|
? { allowDangerouslySkipPermissions: true }
|
|
6071
6080
|
: {}) }), {
|
|
6072
6081
|
exitOnCtrlC: false,
|
|
6073
|
-
|
|
6082
|
+
...fullscreenInkRenderOptions(currentRenderer, options.axScreenReader),
|
|
6074
6083
|
interactive: true,
|
|
6075
|
-
alternateScreen: currentRenderer === 'fullscreen',
|
|
6076
6084
|
});
|
|
6077
6085
|
await instance.waitUntilExit();
|
|
6078
6086
|
if (activeTurn)
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { TuiRendererMode } from './tui-view-model.js';
|
|
2
|
+
/** Stable terminal-frame policy for the fullscreen renderer. */
|
|
3
|
+
export interface FullscreenInkRenderOptions {
|
|
4
|
+
incrementalRendering: boolean;
|
|
5
|
+
alternateScreen: boolean;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* The Ink render options for an interactive session. Fullscreen uses a stable
|
|
9
|
+
* terminal-frame policy: incremental rendering is disabled (every frame is a
|
|
10
|
+
* full redraw that erases the previous viewport) while classic and screen-reader
|
|
11
|
+
* modes keep their current behavior.
|
|
12
|
+
*/
|
|
13
|
+
export declare function fullscreenInkRenderOptions(currentRenderer: TuiRendererMode, axScreenReader: boolean | undefined): FullscreenInkRenderOptions;
|
|
14
|
+
//# sourceMappingURL=fullscreen-renderer.d.ts.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Ink render options for an interactive session. Fullscreen uses a stable
|
|
3
|
+
* terminal-frame policy: incremental rendering is disabled (every frame is a
|
|
4
|
+
* full redraw that erases the previous viewport) while classic and screen-reader
|
|
5
|
+
* modes keep their current behavior.
|
|
6
|
+
*/
|
|
7
|
+
export function fullscreenInkRenderOptions(currentRenderer, axScreenReader) {
|
|
8
|
+
return {
|
|
9
|
+
incrementalRendering: currentRenderer !== 'fullscreen' && !axScreenReader,
|
|
10
|
+
alternateScreen: currentRenderer === 'fullscreen',
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=fullscreen-renderer.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "praxis-agent",
|
|
3
|
-
"version": "0.23.
|
|
3
|
+
"version": "0.23.1",
|
|
4
4
|
"description": "Local-first, single-user general agent for the command line.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "wuqisen",
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
"test:docs": "node scripts/verify-docs.mjs",
|
|
45
45
|
"test:compat": "npm run build && node scripts/verify-claude-compatibility.mjs && node scripts/verify-claude-advanced-fixtures.mjs",
|
|
46
46
|
"test:compat:all": "npm run build && node scripts/verify-compatibility-matrix.mjs",
|
|
47
|
+
"test:tui:pty": "npm run build && node scripts/verify-fullscreen-rendering.mjs",
|
|
47
48
|
"test:cli-surface-compat": "npm run build && node scripts/verify-cli-surface-parity.mjs",
|
|
48
49
|
"test:cli-controls-compat": "npm run build && node scripts/verify-cli-controls.mjs",
|
|
49
50
|
"test:conditional-compat": "npm run build && node scripts/verify-conditional-rules.mjs",
|