snow-flow 10.0.122 → 10.0.123

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
- "version": "10.0.122",
3
+ "version": "10.0.123",
4
4
  "name": "snow-flow",
5
5
  "description": "Snow-Flow - ServiceNow Multi-Agent Development Framework powered by AI",
6
6
  "license": "Elastic-2.0",
@@ -116,6 +116,7 @@ export function tui(input: {
116
116
  }) {
117
117
  _onUpgrade = input.onUpgrade
118
118
  const skipThemeDetection = !!process.env.OPENCODE_SKIP_THEME_DETECTION || !!process.env.OPENCODE_REMOTE_TUI
119
+ const log = (msg: string) => process.stderr.write("[sf] " + msg + "\n")
119
120
  // promise to prevent immediate exit
120
121
  return new Promise<void>(async (resolve) => {
121
122
  let mode: "dark" | "light" = "dark"
@@ -127,9 +128,49 @@ export function tui(input: {
127
128
  resolve()
128
129
  }
129
130
 
130
- // Clear screen before render ensures terminal viewport starts at row 0
131
- // so @opentui's absolute ANSI positioning aligns with visible area
132
- process.stdout.write("\x1b[2J\x1b[H")
131
+ const { createCliRenderer } = await import("@opentui/core")
132
+
133
+ const renderer = await createCliRenderer({
134
+ targetFps: 60,
135
+ gatherStats: false,
136
+ exitOnCtrlC: false,
137
+ useKittyKeyboard: process.env.OPENCODE_DISABLE_KITTY_KEYBOARD ? undefined : {},
138
+ consoleOptions: {
139
+ keyBindings: [{ name: "y", ctrl: true, action: "copy-selection" }],
140
+ onCopySelection: (text: string) => {
141
+ Clipboard.copy(text).catch(() => {})
142
+ },
143
+ },
144
+ })
145
+
146
+ // Diagnostic: check renderer internals
147
+ const r = renderer as any
148
+ log("renderer.lib=" + !!r.lib)
149
+ log("renderer.rendererPtr=" + !!r.rendererPtr)
150
+ log("renderer._useThread=" + r._useThread)
151
+ log("renderer._useAlternateScreen=" + r._useAlternateScreen)
152
+ log("renderer.width=" + r.width + " height=" + r.height)
153
+ if (r.lib) {
154
+ log("lib.render=" + typeof r.lib.render)
155
+ log("lib.writeOut=" + typeof r.lib.writeOut)
156
+ }
157
+
158
+ // Test: can we write to terminal via renderer.writeOut()?
159
+ try {
160
+ r.writeOut("\x1b[2J\x1b[H\x1b[32m=== RENDERER WRITEOUT TEST ===\x1b[0m\r\n")
161
+ log("writeOut succeeded")
162
+ } catch (e: any) {
163
+ log("writeOut FAILED: " + e.message)
164
+ }
165
+
166
+ // Test: can we write to terminal via realStdoutWrite?
167
+ try {
168
+ const write = r.realStdoutWrite || process.stdout.write
169
+ write.call(process.stdout, "\x1b[33m=== REAL STDOUT TEST ===\x1b[0m\r\n")
170
+ log("realStdoutWrite succeeded")
171
+ } catch (e: any) {
172
+ log("realStdoutWrite FAILED: " + e.message)
173
+ }
133
174
 
134
175
  await render(
135
176
  () => (
@@ -176,18 +217,7 @@ export function tui(input: {
176
217
  </ArgsProvider>
177
218
  </ErrorBoundary>
178
219
  ),
179
- {
180
- targetFps: 60,
181
- gatherStats: false,
182
- exitOnCtrlC: false,
183
- useKittyKeyboard: process.env.OPENCODE_DISABLE_KITTY_KEYBOARD ? undefined : {},
184
- consoleOptions: {
185
- keyBindings: [{ name: "y", ctrl: true, action: "copy-selection" }],
186
- onCopySelection: (text: string) => {
187
- Clipboard.copy(text).catch(() => {})
188
- },
189
- },
190
- },
220
+ renderer,
191
221
  )
192
222
  })
193
223
  }
package/src/pty/index.ts CHANGED
@@ -115,6 +115,7 @@ export namespace Pty {
115
115
  extraEnv = {
116
116
  OPENCODE_SKIP_THEME_DETECTION: "1",
117
117
  OPENCODE_DISABLE_KITTY_KEYBOARD: "1",
118
+ OTUI_USE_ALTERNATE_SCREEN: "0",
118
119
  COLORTERM: "truecolor",
119
120
  FORCE_COLOR: "3",
120
121
  }
@@ -56,6 +56,7 @@ async function spawnTui(cols: number, rows: number, env?: Record<string, string>
56
56
  FORCE_COLOR: "3",
57
57
  OPENCODE_SKIP_THEME_DETECTION: "1",
58
58
  OPENCODE_DISABLE_KITTY_KEYBOARD: "1",
59
+ OTUI_USE_ALTERNATE_SCREEN: "0",
59
60
  },
60
61
  },
61
62
  )