@livx.cc/agentx 0.99.119 → 0.99.121

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.
@@ -960,6 +960,9 @@ declare class SecondChannelOptions {
960
960
  /** Duplex v3 (§3 first sound): a bridge skips the decider (the veto stays for backchannels/fillers) and speaks a
961
961
  * canned line at once; a generated one is started at dispatch and used only if it already landed. */
962
962
  instantBridge: boolean;
963
+ /** Duplex v3 §3 late bridge: a turn that expects an answer (not a closer) and got no bridge yet gets one canned bridge
964
+ * this long after the user's last word if channel-1 is still silent — the short turns the 0ms rule skips ("Hi"). 0 = off. */
965
+ lateBridgeMs: number;
963
966
  /** No new interim for this long → a pause (hosts may also call onPause). */
964
967
  fillerPauseMs: number;
965
968
  fillerMinWords: number;
@@ -994,6 +997,9 @@ declare class SecondChannel {
994
997
  private pauseTimer;
995
998
  private bcTimer;
996
999
  private bridgeTimer;
1000
+ private lateTimer;
1001
+ private late;
1002
+ private lastWordAgo;
997
1003
  private lastAt;
998
1004
  private lastKind;
999
1005
  private live;
@@ -1038,7 +1044,7 @@ declare class SecondChannel {
1038
1044
  /** Channel-1 lifecycle. `queued` = the user's turn was dispatched to the main agent. */
1039
1045
  onAgentState(s: MainState): void;
1040
1046
  /** The user's final line was dispatched to the main agent (its words are the bridge's micro-context). */
1041
- onUserTurn(text: string): void;
1047
+ onUserTurn(text: string, lastWordAgoMs?: number): void;
1042
1048
  /** The main answer's streamed text (before its audio): channel-1 is responding — no bridge from here on. */
1043
1049
  onMainTokens(text: string): void;
1044
1050
  /** Channel-1's reply text (a delta) — only the plan's context; no state change (hosts without onMainTokens). */
@@ -1061,6 +1067,7 @@ declare class SecondChannel {
1061
1067
  blocked(k: LineKind): string;
1062
1068
  /** Why this turn gets no bridge by rule ('' = it may) — language, a quick/phatic turn, or blocked(). */
1063
1069
  bridgeBlock(): string;
1070
+ private shortTurn;
1064
1071
  private bcTimes;
1065
1072
  private capped;
1066
1073
  /** 0ms rule: the candidate line for this trigger, or silence. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@livx.cc/agentx",
3
- "version": "0.99.119",
3
+ "version": "0.99.121",
4
4
  "description": "Edge-native AI agent runtime — drives a virtual filesystem via any LLM (ai.libx.js). Same bytes run in node, browser, or edge.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -82,7 +82,7 @@
82
82
  "@bod.ee/db": "~2.14.3",
83
83
  "@livx.cc/mcp-jev": "^0.1.0",
84
84
  "@livx.cc/wcli": "^2.2.5",
85
- "ai.libx.js": "0.18.69",
85
+ "ai.libx.js": "0.18.77",
86
86
  "libx.js": "^6.3.0"
87
87
  },
88
88
  "devDependencies": {