@opencx/widget-react-headless 5.0.0 → 5.2.0

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.
@@ -1,7 +1,7 @@
1
1
  declare const _default: {
2
2
  "name": "@opencx/widget-react-headless",
3
3
  "private": false,
4
- "version": "5.0.0",
4
+ "version": "5.2.0",
5
5
  "type": "module",
6
6
  "repository": {
7
7
  "type": "git",
@@ -44,9 +44,11 @@ declare const _default: {
44
44
  "@opencx/tsconfig": "workspace:*",
45
45
  "@types/react": "^19.2.18",
46
46
  "@types/react-dom": "^19.2.5",
47
+ "@types/react-test-renderer": "^19.3.0",
47
48
  "ai": "^7.0.31",
48
49
  "react": "^19.2.8",
49
- "react-dom": "^19.2.8"
50
+ "react-dom": "^19.2.8",
51
+ "react-test-renderer": "^19.2.8"
50
52
  }
51
53
  }
52
54
  ;
@@ -30,6 +30,13 @@ export type AgentChatUiValue = {
30
30
  /** The last turn failed — the transcript shows an error row with retry. */
31
31
  turnFailed: boolean;
32
32
  retryFailedTurn: () => void;
33
+ /**
34
+ * Resume a reply whose stream dropped mid-turn; a no-op unless the last
35
+ * turn is unresolved. Browsers trigger it when the tab is visible again or
36
+ * the network returns. Hosts without a DOM call it themselves, e.g. React
37
+ * Native on `AppState` becoming `active` and on reconnect.
38
+ */
39
+ resumeInterruptedTurn: () => void;
33
40
  /** Messages the user queued mid-turn — rendered in the composer's queue pill. */
34
41
  queuedUserMessages: WidgetUserMessage[];
35
42
  /** Drop one queued (not-yet-sent) message from the pill. */
@@ -1 +1 @@
1
- {"version":3,"file":"AgentChatContext.d.ts","sourceRoot":"","sources":["../../../src/agent-chat/AgentChatContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAQN,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACvB,MAAM,gBAAgB,CAAC;AAGxB;;;;;;;;GAQG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B;;;;OAIG;IACH,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC;;;OAGG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,2EAA2E;IAC3E,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,iFAAiF;IACjF,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACxC,4DAA4D;IAC5D,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,sEAAsE;IACtE,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,0EAA0E;IAC1E,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC;;;;OAIG;IACH;;;OAGG;IACH,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC5C,yCAAyC;IACzC,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9D,6EAA6E;IAC7E,wBAAwB,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3E,eAAe,EAAE,CACf,MAAM,EAAE,MAAM,EACd,OAAO,EACH,MAAM,GACN,SAAS,GACT,MAAM,GACN,QAAQ,GACR,aAAa,GACb,WAAW,GACX,UAAU,EACd,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;QACL,QAAQ,EAAE;YACR,GAAG,EAAE,MAAM,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,CAAC,EAAE,OAAO,CAAC;SACpB,EAAE,CAAC;QACJ,SAAS,EAAE,OAAO,CAAC;KACpB,KACE,IAAI,CAAC;IACV;;;OAGG;IACH,oBAAoB,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACjD,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAC7C,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,gBAiBnC,CAAC;AAEF,eAAO,MAAM,gBAAgB,wCAA+C,CAAC;AAE7E,mFAAmF;AACnF,wBAAgB,cAAc,IAAI,gBAAgB,CAEjD;AAwKD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,SAAS,EACT,MAAM,GACP,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;CACtB,qBAeA"}
1
+ {"version":3,"file":"AgentChatContext.d.ts","sourceRoot":"","sources":["../../../src/agent-chat/AgentChatContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAQN,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACvB,MAAM,gBAAgB,CAAC;AAGxB;;;;;;;;GAQG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B;;;;OAIG;IACH,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC;;;OAGG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,2EAA2E;IAC3E,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B;;;;;OAKG;IACH,qBAAqB,EAAE,MAAM,IAAI,CAAC;IAClC,iFAAiF;IACjF,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;IACxC,4DAA4D;IAC5D,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,sEAAsE;IACtE,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,0EAA0E;IAC1E,WAAW,EAAE,mBAAmB,EAAE,CAAC;IACnC;;;;OAIG;IACH;;;OAGG;IACH,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC5C,yCAAyC;IACzC,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9D,6EAA6E;IAC7E,wBAAwB,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3E,eAAe,EAAE,CACf,MAAM,EAAE,MAAM,EACd,OAAO,EACH,MAAM,GACN,SAAS,GACT,MAAM,GACN,QAAQ,GACR,aAAa,GACb,WAAW,GACX,UAAU,EACd,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,CAAC,EAAE;QACL,QAAQ,EAAE;YACR,GAAG,EAAE,MAAM,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,CAAC,EAAE,OAAO,CAAC;SACpB,EAAE,CAAC;QACJ,SAAS,EAAE,OAAO,CAAC;KACpB,KACE,IAAI,CAAC;IACV;;;OAGG;IACH,oBAAoB,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACjD,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAC7C,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,gBAkBnC,CAAC;AAEF,eAAO,MAAM,gBAAgB,wCAA+C,CAAC;AAE7E,mFAAmF;AACnF,wBAAgB,cAAc,IAAI,gBAAgB,CAEjD;AA2KD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,SAAS,EACT,MAAM,GACP,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;CACtB,qBAeA"}
@@ -1,3 +1,4 @@
1
+ import { WidgetConfig } from '@opencx/widget-core';
1
2
  import { DefaultChatTransport, UIMessage } from 'ai';
2
3
  /** Wiring the api layer hands the agent-chat transport (send + reconnect URLs + auth). */
3
4
  export type AgentChatTransportOptions = {
@@ -12,7 +13,15 @@ export type AgentChatTransportOptions = {
12
13
  * without Authorization (401) for the rest of the session.
13
14
  */
14
15
  headers: () => Record<string, string>;
16
+ /** Sends and resumes the stream; the global fetch when omitted. */
17
+ fetch?: typeof fetch;
15
18
  };
19
+ /**
20
+ * The reconnect URL carrying the embed's presentation choices. Built as a
21
+ * string: React Native 0.76 (Expo 52) throws "URLSearchParams.set is not
22
+ * implemented".
23
+ */
24
+ export declare function appendPresentationParams(url: string, presentation: WidgetConfig['presentation']): string;
16
25
  /** Build the reconnect request used by `useChat` to resume a session stream. */
17
26
  export declare function agentChatReconnectPreparer(options: AgentChatTransportOptions): ({ id }: {
18
27
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-chat-transport.d.ts","sourceRoot":"","sources":["../../../src/agent-chat/agent-chat-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,KAAK,SAAS,EAAE,MAAM,IAAI,CAAC;AAE1D,0FAA0F;AAC1F,MAAM,MAAM,yBAAyB,GAAG;IACtC,uDAAuD;IACvD,GAAG,EAAE,MAAM,CAAC;IACZ,2EAA2E;IAC3E,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5C;;;;;OAKG;IACH,OAAO,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACvC,CAAC;AAEF,gFAAgF;AAChF,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,yBAAyB,IACnE,QAAQ;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE;;;EAI/B;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,yBAAyB,GACjC,oBAAoB,CAAC,SAAS,CAAC,CASjC"}
1
+ {"version":3,"file":"agent-chat-transport.d.ts","sourceRoot":"","sources":["../../../src/agent-chat/agent-chat-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,KAAK,SAAS,EAAE,MAAM,IAAI,CAAC;AAE1D,0FAA0F;AAC1F,MAAM,MAAM,yBAAyB,GAAG;IACtC,uDAAuD;IACvD,GAAG,EAAE,MAAM,CAAC;IACZ,2EAA2E;IAC3E,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAC5C;;;;;OAKG;IACH,OAAO,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,mEAAmE;IACnE,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,YAAY,CAAC,cAAc,CAAC,GACzC,MAAM,CAUR;AAED,gFAAgF;AAChF,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,yBAAyB,IACnE,QAAQ;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE;;;EAI/B;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,yBAAyB,GACjC,oBAAoB,CAAC,SAAS,CAAC,CAUjC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Calls `onSignal` when a browser tab is visible again after being hidden, or
3
+ * the network comes back while it is visible: the moments a dropped stream
4
+ * can be resumed. Returns the unsubscribe.
5
+ *
6
+ * Hosts without a DOM (React Native has no `document`, and its `window` has
7
+ * no `addEventListener`) get a no-op; they call `resumeInterruptedTurn` from
8
+ * their own app-state and network listeners instead.
9
+ */
10
+ export declare function subscribeToResumeSignals(onSignal: () => void): () => void;
11
+ //# sourceMappingURL=resume-signals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume-signals.d.ts","sourceRoot":"","sources":["../../../src/agent-chat/resume-signals.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAgBzE"}
@@ -62,6 +62,7 @@ export declare function useAgentChat({ widgetCtx, config, sessionId, persistedMe
62
62
  /** The last turn failed — the transcript renders a visible error row. */
63
63
  turnFailed: boolean;
64
64
  retryFailedTurn: () => void;
65
+ resumeInterruptedTurn: () => void;
65
66
  queuedUserMessages: import('@opencx/widget-core').WidgetUserMessage[];
66
67
  removeQueued: (messageId: string) => void;
67
68
  stop: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"useAgentChat.d.ts","sourceRoot":"","sources":["../../../src/agent-chat/useAgentChat.ts"],"names":[],"mappings":"AACA,OAAO,EAOL,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAU7B,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEhF,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAS9B;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,gFAAgF;AAChF,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,mBAAmB,GAAG,aAAa,CAAC;IAC1C,KAAK,EAAE,OAAO,CAAC;IACf;;;;;OAKG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAqBF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,MAAM,EACN,SAAS,EACT,iBAAiB,GAClB,EAAE;IACD,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iBAAiB,EAAE,cAAc,EAAE,CAAC;CACrC;;;IA+8BG,+DAA+D;;IAE/D,wEAAwE;;IAExE,yEAAyE;;;;8BArf9B,MAAM;;;8BAuLvC,MAAM,WAEV,MAAM,GACN,SAAS,GACT,MAAM,GACN,QAAQ,GACR,aAAa,GACb,WAAW,GACX,UAAU,WACL,MAAM,SACR;QACL,QAAQ,EAAE;YACR,GAAG,EAAE,MAAM,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,CAAC,EAAE,OAAO,CAAC;SACpB,EAAE,CAAC;QACJ,SAAS,EAAE,OAAO,CAAC;KACpB;;wCAgDO,iBAAiB;gCAiBkB,MAAM,WAAW,OAAO;;;EAyPxE"}
1
+ {"version":3,"file":"useAgentChat.d.ts","sourceRoot":"","sources":["../../../src/agent-chat/useAgentChat.ts"],"names":[],"mappings":"AACA,OAAO,EAOL,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAU7B,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAKhF,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAU9B;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,WAAW,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,gFAAgF;AAChF,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,mBAAmB,GAAG,aAAa,CAAC;IAC1C,KAAK,EAAE,OAAO,CAAC;IACf;;;;;OAKG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAqBF;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,MAAM,EACN,SAAS,EACT,iBAAiB,GAClB,EAAE;IACD,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iBAAiB,EAAE,cAAc,EAAE,CAAC;CACrC;;;IA28BG,+DAA+D;;IAE/D,wEAAwE;;IAExE,yEAAyE;;;;;8BAjf9B,MAAM;;;8BAuLvC,MAAM,WAEV,MAAM,GACN,SAAS,GACT,MAAM,GACN,QAAQ,GACR,aAAa,GACb,WAAW,GACX,UAAU,WACL,MAAM,SACR;QACL,QAAQ,EAAE;YACR,GAAG,EAAE,MAAM,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,CAAC,EAAE,OAAO,CAAC;SACpB,EAAE,CAAC;QACJ,SAAS,EAAE,OAAO,CAAC;KACpB;;wCAgDO,iBAAiB;gCAiBkB,MAAM,WAAW,OAAO;;;EAsPxE"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@opencx/widget-react-headless",
3
3
  "private": false,
4
- "version": "5.0.0",
4
+ "version": "5.2.0",
5
5
  "type": "module",
6
6
  "repository": {
7
7
  "type": "git",
@@ -20,7 +20,7 @@
20
20
  "dependencies": {
21
21
  "uuid": "^11.0.4",
22
22
  "zod": "^4.3.6",
23
- "@opencx/widget-core": "5.0.0"
23
+ "@opencx/widget-core": "5.2.0"
24
24
  },
25
25
  "peerDependencies": {
26
26
  "@types/react": ">=18 <20",
@@ -32,9 +32,11 @@
32
32
  "@ai-sdk/react": "4.0.34",
33
33
  "@types/react": "^19.2.18",
34
34
  "@types/react-dom": "^19.2.5",
35
+ "@types/react-test-renderer": "^19.3.0",
35
36
  "ai": "^7.0.31",
36
37
  "react": "^19.2.8",
37
38
  "react-dom": "^19.2.8",
39
+ "react-test-renderer": "^19.2.8",
38
40
  "@opencx/eslint-config": "0.0.1",
39
41
  "@opencx/tsconfig": "0.0.2"
40
42
  },