snow-flow 10.0.127 → 10.0.129

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.127",
3
+ "version": "10.0.129",
4
4
  "name": "snow-flow",
5
5
  "description": "Snow-Flow - ServiceNow Multi-Agent Development Framework powered by AI",
6
6
  "license": "Elastic-2.0",
@@ -146,14 +146,12 @@ export function tui(input: {
146
146
  },
147
147
  } as Parameters<typeof render>[1]
148
148
 
149
- // On Linux, @opentui disables Zig renderer threading which prevents output.
150
- // OTUI_FORCE_THREAD=1 overrides this for hosted PTY environments (Docker/Cloud Run).
151
- let rendererOrConfig: any = renderConfig
152
- if (process.env.OTUI_FORCE_THREAD) {
153
- const { createCliRenderer } = await import("@opentui/core")
154
- const cliRenderer = await createCliRenderer(renderConfig as any)
155
- ;(cliRenderer as any).useThread = true
156
- rendererOrConfig = cliRenderer
149
+ // On Linux, @opentui disables Zig renderer threading which prevents PTY output.
150
+ // OTUI_FORCE_THREAD=1 temporarily spoofs platform so @opentui keeps threading enabled.
151
+ const forceThread = !!process.env.OTUI_FORCE_THREAD
152
+ if (forceThread) {
153
+ console.log("[snow-flow] forcing renderer threading (OTUI_FORCE_THREAD)")
154
+ Object.defineProperty(process, "platform", { value: "darwin", configurable: true })
157
155
  }
158
156
 
159
157
  try {
@@ -185,6 +183,7 @@ export function tui(input: {
185
183
  <FrecencyProvider>
186
184
  <PromptHistoryProvider>
187
185
  <PromptRefProvider>
186
+ <HostedRendererDiag />
188
187
  <App />
189
188
  </PromptRefProvider>
190
189
  </PromptHistoryProvider>
@@ -205,7 +204,7 @@ export function tui(input: {
205
204
  </ErrorBoundary>
206
205
  )
207
206
  },
208
- rendererOrConfig,
207
+ renderConfig,
209
208
  )
210
209
  } catch (e) {
211
210
  console.error("[snow-flow] render failed:", e instanceof Error ? e.message : e)
@@ -215,6 +214,59 @@ export function tui(input: {
215
214
  })
216
215
  }
217
216
 
217
+ function HostedRendererDiag() {
218
+ if (!process.env.OTUI_FORCE_THREAD) return null
219
+ const renderer = useRenderer()
220
+ onMount(() => {
221
+ 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
+
227
+ // Try 1: force-start the render loop if not running
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
+ const realWrite = r.realStdoutWrite
239
+ 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}`)
249
+ }
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)
266
+ })
267
+ return null
268
+ }
269
+
218
270
  function App() {
219
271
  const route = useRoute()
220
272
  const dimensions = useTerminalDimensions()