snow-flow 10.0.132 → 10.0.133

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.132",
3
+ "version": "10.0.133",
4
4
  "name": "snow-flow",
5
5
  "description": "Snow-Flow - ServiceNow Multi-Agent Development Framework powered by AI",
6
6
  "license": "Elastic-2.0",
@@ -222,67 +222,21 @@ function HostedRendererDiag() {
222
222
  const log = (msg: string) => process.stderr.write(`[sf-diag] ${msg}\n`)
223
223
  const realWrite = r.realStdoutWrite
224
224
  const stdout = r.stdout
225
- const write = (s: string) => realWrite?.call(stdout, s)
226
-
227
- log(`useThread=${r._useThread} isRunning=${r._isRunning} state=${r._controlState}`)
228
- log(`platform=${process.platform} altScreen=${r._useAlternateScreen}`)
229
-
230
- // Patch renderNative to count calls and try flushing
231
- let renderCount = 0
232
- if (r.lib && r.rendererPtr) {
233
- const origRenderNative = r.renderNative.bind(r)
234
- r.renderNative = () => {
235
- renderCount++
236
- origRenderNative()
237
- // Try dumpStdoutBuffer to flush Zig's pending render output
238
- try {
239
- r.lib.dumpStdoutBuffer(r.rendererPtr, BigInt(Date.now()))
240
- } catch (e: any) {
241
- if (renderCount === 1) log(`dumpStdoutBuffer error: ${e.message}`)
242
- }
243
- }
244
- log("patched renderNative")
245
- }
246
225
 
247
- // Clear screen and start the render loop
248
- write("\x1b[2J\x1b[H")
249
- if (!r._isRunning) {
250
- r.start()
251
- log(`started: isRunning=${r._isRunning}`)
252
- }
226
+ log(`useThread=${r._useThread} isRunning=${r._isRunning}`)
253
227
 
254
- // After 3s: report render count and buffer state
255
- setTimeout(() => {
256
- log(`3s: renderCount=${renderCount} isRunning=${r._isRunning}`)
257
-
258
- // Check if nextRenderBuffer has any content by reading a few cells
259
- try {
260
- const buf = r.nextRenderBuffer
261
- const w = r.lib.getBufferWidth(buf)
262
- const h = r.lib.getBufferHeight(buf)
263
- log(`buffer: ${w}x${h}`)
264
- } catch (e: any) {
265
- log(`buffer check error: ${e.message}`)
266
- }
228
+ // Clear screen for clean rendering
229
+ realWrite?.call(stdout, "\x1b[2J\x1b[H")
267
230
 
268
- // Check root node children
269
- try {
270
- const root = r.root
271
- log(`root children: ${root?.children?.length ?? "?"}`)
272
- } catch {}
273
-
274
- // Write visible marker so user can confirm terminal works
275
- write("\x1b[5;1H\x1b[1;31m[sf-diag] terminal output works - render loop ran ${renderCount} frames\x1b[0m\r\n")
276
-
277
- // Try fs.writeSync to test raw POSIX write(1, ...)
278
- try {
279
- const { writeSync } = require("fs")
280
- writeSync(1, "\x1b[7;1H\x1b[1;32m[sf-diag] fs.writeSync(1) works\x1b[0m\r\n")
281
- log("fs.writeSync(1) succeeded")
282
- } catch (e: any) {
283
- log(`fs.writeSync error: ${e.message}`)
284
- }
285
- }, 3000)
231
+ // Start the render loop (it doesn't auto-start on Linux)
232
+ if (!r._isRunning) r.start()
233
+
234
+ // Key fix: enable Zig output thread AFTER renderer is safely initialized.
235
+ // On Linux, @opentui creates the renderer with useThread=false.
236
+ // The setter calls lib.setUseThread(ptr, true) which starts the Zig
237
+ // thread that drains the render output buffer and writes to fd 1.
238
+ r.useThread = true
239
+ log(`after useThread=true: useThread=${r._useThread}`)
286
240
  })
287
241
  return null
288
242
  }