snow-flow 10.0.129 → 10.0.130

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.129",
3
+ "version": "10.0.130",
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,15 +116,20 @@ 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
+ // In hosted mode, use stderr for pre-render logs to keep terminal clean for the renderer
120
+ const forceThread = !!process.env.OTUI_FORCE_THREAD
121
+ const log = forceThread
122
+ ? (msg: string) => process.stderr.write(`${msg}\n`)
123
+ : (msg: string) => console.log(msg)
119
124
  // promise to prevent immediate exit
120
125
  return new Promise<void>(async (resolve) => {
121
126
  let mode: "dark" | "light" = "dark"
122
127
  if (skipThemeDetection) {
123
- console.log("[snow-flow] skipping theme detection")
128
+ log("[snow-flow] skipping theme detection")
124
129
  } else {
125
- console.log("[snow-flow] detecting theme...")
130
+ log("[snow-flow] detecting theme...")
126
131
  mode = await getTerminalBackgroundColor()
127
- console.log(`[snow-flow] theme: ${mode}`)
132
+ log(`[snow-flow] theme: ${mode}`)
128
133
  }
129
134
  const onExit = async () => {
130
135
  await input.onExit?.()
@@ -148,14 +153,13 @@ export function tui(input: {
148
153
 
149
154
  // On Linux, @opentui disables Zig renderer threading which prevents PTY output.
150
155
  // OTUI_FORCE_THREAD=1 temporarily spoofs platform so @opentui keeps threading enabled.
151
- const forceThread = !!process.env.OTUI_FORCE_THREAD
152
156
  if (forceThread) {
153
- console.log("[snow-flow] forcing renderer threading (OTUI_FORCE_THREAD)")
157
+ log("[snow-flow] forcing renderer threading (OTUI_FORCE_THREAD)")
154
158
  Object.defineProperty(process, "platform", { value: "darwin", configurable: true })
155
159
  }
156
160
 
157
161
  try {
158
- console.log("[snow-flow] starting tui...")
162
+ log("[snow-flow] starting tui...")
159
163
  await render(
160
164
  () => {
161
165
  return (
@@ -219,50 +223,15 @@ function HostedRendererDiag() {
219
223
  const renderer = useRenderer()
220
224
  onMount(() => {
221
225
  const r = renderer as any
222
- const log = (msg: string) => process.stderr.write(`[sf-diag] ${msg}\n`)
223
- log(`useThread=${r._useThread} isRunning=${r._isRunning} state=${r._controlState} live=${r.liveRequestCounter}`)
224
- log(`platform=${process.platform} altScreen=${r._useAlternateScreen}`)
225
- log(`termSetup=${r._terminalIsSetup} root=${!!r.root} buffer=${!!r.nextRenderBuffer}`)
226
226
 
227
- // Try 1: force-start the render loop if not running
227
+ // Clear screen to remove console.log messages, then start render loop
228
228
  if (!r._isRunning) {
229
- log("calling renderer.start()")
230
- r.start()
231
- log(`after start: isRunning=${r._isRunning} state=${r._controlState}`)
232
- }
233
-
234
- // Try 2: after 2s, check state and try manual output
235
- setTimeout(() => {
236
- log(`2s check: isRunning=${r._isRunning} state=${r._controlState} rendering=${r.rendering}`)
237
- // Test direct write via realStdoutWrite (saved reference to actual stdout.write)
238
229
  const realWrite = r.realStdoutWrite
239
230
  if (realWrite) {
240
- realWrite.call(r.stdout, "\x1b[2J\x1b[H\x1b[1;31m[sf-diag] REAL STDOUT WRITE OK\x1b[0m\r\n")
241
- log("realStdoutWrite sent")
242
- }
243
- // Test lib.writeOut
244
- try {
245
- r.writeOut("\x1b[3;1H\x1b[1;32m[sf-diag] WRITEOUT OK\x1b[0m\r\n")
246
- log("writeOut sent")
247
- } catch (e: any) {
248
- log(`writeOut error: ${e.message}`)
231
+ realWrite.call(r.stdout, "\x1b[2J\x1b[H")
249
232
  }
250
- }, 2000)
251
-
252
- // Try 3: after 4s, try manual render cycle
253
- setTimeout(() => {
254
- log(`4s check: isRunning=${r._isRunning} rendering=${r.rendering}`)
255
- try {
256
- if (r.root && r.nextRenderBuffer) {
257
- r.root.render(r.nextRenderBuffer, 0)
258
- log("root.render done")
259
- }
260
- r.renderNative()
261
- log("renderNative done")
262
- } catch (e: any) {
263
- log(`manual render error: ${e.message}`)
264
- }
265
- }, 4000)
233
+ r.start()
234
+ }
266
235
  })
267
236
  return null
268
237
  }