pty-manager 1.2.17 → 1.2.18

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/dist/index.mjs CHANGED
@@ -286,6 +286,7 @@ var PTYSession = class extends EventEmitter {
286
286
  messageCounter = 0;
287
287
  logger;
288
288
  sessionRules = [];
289
+ _firedOnceRules = /* @__PURE__ */ new Set();
289
290
  _lastBlockingPromptHash = null;
290
291
  // Stall detection
291
292
  _stallTimer = null;
@@ -392,7 +393,7 @@ var PTYSession = class extends EventEmitter {
392
393
  return;
393
394
  }
394
395
  const tail = this.outputBuffer.slice(-500);
395
- const stripped = this.stripAnsiForStall(tail);
396
+ const stripped = this.stripAnsiForStall(tail).trim();
396
397
  const hash = this.simpleHash(stripped);
397
398
  if (hash === this._lastContentHash) {
398
399
  return;
@@ -462,12 +463,19 @@ var PTYSession = class extends EventEmitter {
462
463
  return hash.toString(36);
463
464
  }
464
465
  /**
465
- * Strip ANSI codes for stall detection output.
466
- * Replaces cursor-forward sequences with spaces first.
466
+ * Strip ANSI codes, cursor movement, box-drawing, and spinner characters.
467
+ * Used for stall detection hashing and auto-response pattern matching.
468
+ *
469
+ * Cursor movement codes are replaced with spaces (not removed) to preserve
470
+ * word boundaries — e.g. "Do\x1b[5Cyou" becomes "Do you", not "Doyou".
467
471
  */
468
472
  stripAnsiForStall(str) {
469
- const withSpaces = str.replace(/\x1b\[\d*C/g, " ");
470
- return withSpaces.replace(/\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])/g, "");
473
+ let result = str.replace(/\x1b\[\d*[CDABG]/g, " ");
474
+ result = result.replace(/\x1b\[\d*(?:;\d+)?[Hf]/g, " ");
475
+ result = result.replace(/\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])/g, "");
476
+ result = result.replace(/[│╭╰╮╯─═╌║╔╗╚╝╠╣╦╩╬┌┐└┘├┤┬┴┼●○❯❮▶◀⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏⣾⣽⣻⢿⡿⣟⣯⣷✻✶✳✢⏺←→↑↓]/g, " ");
477
+ result = result.replace(/ {2,}/g, " ");
478
+ return result;
471
479
  }
472
480
  /**
473
481
  * Handle external stall classification result.
@@ -703,10 +711,14 @@ var PTYSession = class extends EventEmitter {
703
711
  if (allRules.length === 0) {
704
712
  return false;
705
713
  }
706
- let stripped = this.stripAnsiForStall(this.outputBuffer);
707
- stripped = stripped.replace(/[│╭╰╮╯─═╌║╔╗╚╝╠╣╦╩╬┌┐└┘├┤┬┴┼●○❯❮▶◀⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏⏺←→↑↓]/g, " ");
708
- stripped = stripped.replace(/ {2,}/g, " ");
714
+ const stripped = this.stripAnsiForStall(this.outputBuffer);
709
715
  for (const rule of allRules) {
716
+ if (rule.once) {
717
+ const ruleKey = `${rule.pattern.source}:${rule.pattern.flags}`;
718
+ if (this._firedOnceRules.has(ruleKey)) {
719
+ continue;
720
+ }
721
+ }
710
722
  if (rule.pattern.test(stripped)) {
711
723
  const safe = rule.safe !== false;
712
724
  const isSessionRule = this.sessionRules.includes(rule);
@@ -730,6 +742,10 @@ var PTYSession = class extends EventEmitter {
730
742
  } else {
731
743
  this.writeRaw(rule.response + "\r");
732
744
  }
745
+ if (rule.once) {
746
+ const ruleKey = `${rule.pattern.source}:${rule.pattern.flags}`;
747
+ this._firedOnceRules.add(ruleKey);
748
+ }
733
749
  this.outputBuffer = this.outputBuffer.replace(rule.pattern, "");
734
750
  const promptInfo = {
735
751
  type: rule.type,
@@ -1964,7 +1980,8 @@ var BunCompatiblePTYManager = class extends EventEmitter3 {
1964
1980
  responseType: r.responseType,
1965
1981
  keys: r.keys,
1966
1982
  description: r.description,
1967
- safe: r.safe
1983
+ safe: r.safe,
1984
+ once: r.once
1968
1985
  }));
1969
1986
  this.resolvePending(`getRules:${id}`, rules);
1970
1987
  break;
@@ -2118,7 +2135,8 @@ var BunCompatiblePTYManager = class extends EventEmitter3 {
2118
2135
  responseType: rule.responseType,
2119
2136
  keys: rule.keys,
2120
2137
  description: rule.description,
2121
- safe: rule.safe
2138
+ safe: rule.safe,
2139
+ once: rule.once
2122
2140
  };
2123
2141
  }
2124
2142
  /**