pty-manager 1.3.0 → 1.3.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/README.md +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -0
- package/dist/index.mjs.map +1 -1
- package/dist/pty-worker.js +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -445,7 +445,7 @@ await session.selectMenuOption(2); // Sends Down, Down, Enter with 50ms delays
|
|
|
445
445
|
|
|
446
446
|
## Stall Detection & Task Completion
|
|
447
447
|
|
|
448
|
-
Content-based stall detection monitors sessions for output that stops changing. When a stall is detected, the session first tries the adapter's `detectTaskComplete()` fast-path. If the adapter recognizes the output as a completed task (e.g. duration summary + idle prompt), it transitions directly to `ready` and emits `task_complete` — skipping the expensive LLM stall classifier entirely.
|
|
448
|
+
Content-based stall detection monitors sessions for output that stops changing. The content hash normalizes ANSI escape codes, TUI spinner characters, and countdown/duration text (e.g. `8m 17s` → constant) so that live timers don't perpetually reset the stall timer. When a stall is detected, the session first tries the adapter's `detectTaskComplete()` fast-path. If the adapter recognizes the output as a completed task (e.g. duration summary + idle prompt), it transitions directly to `ready` and emits `task_complete` — skipping the expensive LLM stall classifier entirely.
|
|
449
449
|
|
|
450
450
|
If the adapter doesn't recognize the output, the session falls back to emitting `stall_detected` for external classification.
|
|
451
451
|
|
package/dist/index.js
CHANGED
|
@@ -541,6 +541,7 @@ var PTYSession = class _PTYSession extends import_events.EventEmitter {
|
|
|
541
541
|
result = result.replace(/\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])/g, "");
|
|
542
542
|
result = result.replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]/g, "");
|
|
543
543
|
result = result.replace(/[│╭╰╮╯─═╌║╔╗╚╝╠╣╦╩╬┌┐└┘├┤┬┴┼●○❯❮▶◀⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏⣾⣽⣻⢿⡿⣟⣯⣷✻✶✳✢⏺←→↑↓⬆⬇◆◇▪▫■□▲△▼▽◈⟨⟩⌘⏎⏏⌫⌦⇧⇪⌥]/g, " ");
|
|
544
|
+
result = result.replace(/\d+[hms](?:\s+\d+[hms])*/g, "0s");
|
|
544
545
|
result = result.replace(/ {2,}/g, " ");
|
|
545
546
|
return result;
|
|
546
547
|
}
|