@livx.cc/agentx 0.98.1 → 0.98.2

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.d.ts CHANGED
@@ -952,6 +952,7 @@ declare class DuplexAgent {
952
952
  private turnDispatched;
953
953
  private turnBriefs;
954
954
  private spokeThisTurn;
955
+ private heldThisTurn;
955
956
  private nudging;
956
957
  private reflexBuf;
957
958
  private reflexForwarded;
package/dist/index.js CHANGED
@@ -4983,6 +4983,8 @@ var DuplexAgent = class _DuplexAgent {
4983
4983
  // briefs dispatched this turn (detect identical re-dispatch)
4984
4984
  spokeThisTurn = false;
4985
4985
  // any non-empty text_delta streamed this turn
4986
+ heldThisTurn = false;
4987
+ // Hold called this turn → turn is INTENTIONALLY silent (suppress reflex text + no dead-air ack)
4986
4988
  nudging = false;
4987
4989
  // re-ack pass in flight: block ALL tools, prevent recursion
4988
4990
  reflexBuf = "";
@@ -5045,6 +5047,7 @@ Today's date: ${(/* @__PURE__ */ new Date()).toDateString()}.`;
5045
5047
  confirm: host.confirm ? (p, m) => host.confirm(p, m) : void 0,
5046
5048
  notify: (ev) => {
5047
5049
  if (ev?.kind === "text_delta" && typeof ev.message === "string") {
5050
+ if (this.heldThisTurn) return;
5048
5051
  if (this.fabricationCut) return;
5049
5052
  const msg = ev.message;
5050
5053
  this.reflexBuf += msg;
@@ -5114,6 +5117,7 @@ Today's date: ${(/* @__PURE__ */ new Date()).toDateString()}.`;
5114
5117
  this.turnDispatched = false;
5115
5118
  this.turnBriefs.clear();
5116
5119
  this.spokeThisTurn = false;
5120
+ this.heldThisTurn = false;
5117
5121
  this.reflexBuf = "";
5118
5122
  this.reflexForwarded = 0;
5119
5123
  this.fabricationCut = false;
@@ -5142,7 +5146,7 @@ Today's date: ${(/* @__PURE__ */ new Date()).toDateString()}.`;
5142
5146
  * voice) and emits an empty `final`, so no text_delta ever streams. Both ship silence; both repair.
5143
5147
  * Requires a host: without one there's no stream to detect speech on (and no one to speak to). */
5144
5148
  get silentTurn() {
5145
- return !!this.options.host && !this.spokeThisTurn;
5149
+ return !!this.options.host && !this.spokeThisTurn && !this.heldThisTurn;
5146
5150
  }
5147
5151
  /** A turn that voiced nothing is dead air. Re-prompt the reflex ONCE so the LLM itself voices a short
5148
5152
  * line (no template). If it STILL says nothing, fall back to a minimal line so silence never ships.
@@ -5703,6 +5707,7 @@ Another agent just implemented the above. Independently check the CURRENT state
5703
5707
  }
5704
5708
  },
5705
5709
  run: async ({ filler }) => {
5710
+ this.heldThisTurn = true;
5706
5711
  if (filler) this.notify("hold_filler", String(filler));
5707
5712
  return "Holding \u2014 listening for the rest of the user's thought. Do not respond further this turn.";
5708
5713
  }