@opencx/widget-react-headless 5.0.0-beta.0 → 5.0.0-beta.10

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.
Files changed (85) hide show
  1. package/README.md +61 -0
  2. package/dist/index.cjs +20 -20
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.js +3221 -2572
  5. package/dist/index.js.map +1 -1
  6. package/dist/package.json.d.ts +4 -3
  7. package/dist/src/ComponentRegistry.d.ts.map +1 -1
  8. package/dist/src/ConversationWorkspace.d.ts +61 -0
  9. package/dist/src/ConversationWorkspace.d.ts.map +1 -0
  10. package/dist/src/WidgetProvider.d.ts.map +1 -1
  11. package/dist/src/agent-chat/AgentChatContext.d.ts +28 -2
  12. package/dist/src/agent-chat/AgentChatContext.d.ts.map +1 -1
  13. package/dist/src/agent-chat/agent-chat-stream.d.ts +24 -0
  14. package/dist/src/agent-chat/agent-chat-stream.d.ts.map +1 -1
  15. package/dist/src/agent-chat/agent-turn-sources.d.ts +3 -1
  16. package/dist/src/agent-chat/agent-turn-sources.d.ts.map +1 -1
  17. package/dist/src/agent-chat/apply-presentation.d.ts +5 -0
  18. package/dist/src/agent-chat/apply-presentation.d.ts.map +1 -0
  19. package/dist/src/agent-chat/session-plan.d.ts +10 -0
  20. package/dist/src/agent-chat/session-plan.d.ts.map +1 -0
  21. package/dist/src/agent-chat/useAgentChat.d.ts +37 -11
  22. package/dist/src/agent-chat/useAgentChat.d.ts.map +1 -1
  23. package/dist/src/agent-chat/useConnection.d.ts +39 -0
  24. package/dist/src/agent-chat/useConnection.d.ts.map +1 -0
  25. package/dist/src/hooks/useComposerDraft.d.ts +11 -0
  26. package/dist/src/hooks/useComposerDraft.d.ts.map +1 -0
  27. package/dist/src/hooks/useIsAwaitingBotReply.d.ts.map +1 -1
  28. package/dist/src/hooks/useMessages.d.ts +1 -0
  29. package/dist/src/hooks/useMessages.d.ts.map +1 -1
  30. package/dist/src/hooks/useSessions.d.ts +4 -0
  31. package/dist/src/hooks/useSessions.d.ts.map +1 -1
  32. package/dist/src/hooks/useUploadFiles.d.ts +6 -14
  33. package/dist/src/hooks/useUploadFiles.d.ts.map +1 -1
  34. package/dist/src/hooks/useWidgetRouter.d.ts +1 -1
  35. package/dist/src/index.d.ts +7 -0
  36. package/dist/src/index.d.ts.map +1 -1
  37. package/dist/src/widget-user-identity.d.ts +8 -0
  38. package/dist/src/widget-user-identity.d.ts.map +1 -0
  39. package/package.json +5 -5
  40. package/dist/src/__tests__/WidgetProvider.initialization.spec.d.ts +0 -2
  41. package/dist/src/__tests__/WidgetProvider.initialization.spec.d.ts.map +0 -1
  42. package/dist/src/agent-chat/__tests__/WidgetProvider.agent-chat.spec.d.ts +0 -2
  43. package/dist/src/agent-chat/__tests__/WidgetProvider.agent-chat.spec.d.ts.map +0 -1
  44. package/dist/src/agent-chat/__tests__/agent-chat-queue.spec.d.ts +0 -2
  45. package/dist/src/agent-chat/__tests__/agent-chat-queue.spec.d.ts.map +0 -1
  46. package/dist/src/agent-chat/__tests__/agent-chat-stream.spec.d.ts +0 -2
  47. package/dist/src/agent-chat/__tests__/agent-chat-stream.spec.d.ts.map +0 -1
  48. package/dist/src/agent-chat/__tests__/agent-chat-transport.spec.d.ts +0 -2
  49. package/dist/src/agent-chat/__tests__/agent-chat-transport.spec.d.ts.map +0 -1
  50. package/dist/src/agent-chat/__tests__/agent-turn-sources.spec.d.ts +0 -2
  51. package/dist/src/agent-chat/__tests__/agent-turn-sources.spec.d.ts.map +0 -1
  52. package/dist/src/agent-chat/__tests__/ask-questions.spec.d.ts +0 -2
  53. package/dist/src/agent-chat/__tests__/ask-questions.spec.d.ts.map +0 -1
  54. package/dist/src/agent-chat/__tests__/pending-clarification.spec.d.ts +0 -2
  55. package/dist/src/agent-chat/__tests__/pending-clarification.spec.d.ts.map +0 -1
  56. package/dist/src/agent-chat/__tests__/stop-agent-chat-turn.spec.d.ts +0 -2
  57. package/dist/src/agent-chat/__tests__/stop-agent-chat-turn.spec.d.ts.map +0 -1
  58. package/dist/src/agent-chat/__tests__/use-agent-chat.client-context.spec.d.ts +0 -2
  59. package/dist/src/agent-chat/__tests__/use-agent-chat.client-context.spec.d.ts.map +0 -1
  60. package/dist/src/agent-chat/__tests__/use-agent-chat.drain-order.spec.d.ts +0 -2
  61. package/dist/src/agent-chat/__tests__/use-agent-chat.drain-order.spec.d.ts.map +0 -1
  62. package/dist/src/agent-chat/__tests__/use-agent-chat.failed-turn.spec.d.ts +0 -2
  63. package/dist/src/agent-chat/__tests__/use-agent-chat.failed-turn.spec.d.ts.map +0 -1
  64. package/dist/src/agent-chat/__tests__/use-agent-chat.feature-narrowing.spec.d.ts +0 -2
  65. package/dist/src/agent-chat/__tests__/use-agent-chat.feature-narrowing.spec.d.ts.map +0 -1
  66. package/dist/src/agent-chat/__tests__/use-agent-chat.send-features.spec.d.ts +0 -2
  67. package/dist/src/agent-chat/__tests__/use-agent-chat.send-features.spec.d.ts.map +0 -1
  68. package/dist/src/agent-chat/__tests__/use-agent-chat.steer.spec.d.ts +0 -2
  69. package/dist/src/agent-chat/__tests__/use-agent-chat.steer.spec.d.ts.map +0 -1
  70. package/dist/src/agent-chat/__tests__/use-agent-chat.stop-partial.spec.d.ts +0 -2
  71. package/dist/src/agent-chat/__tests__/use-agent-chat.stop-partial.spec.d.ts.map +0 -1
  72. package/dist/src/agent-chat/__tests__/use-agent-chat.stream-handoff.spec.d.ts +0 -2
  73. package/dist/src/agent-chat/__tests__/use-agent-chat.stream-handoff.spec.d.ts.map +0 -1
  74. package/dist/src/agent-chat/__tests__/use-agent-chat.turn-retention.spec.d.ts +0 -2
  75. package/dist/src/agent-chat/__tests__/use-agent-chat.turn-retention.spec.d.ts.map +0 -1
  76. package/dist/src/agent-chat/__tests__/use-chat-post-finish-data-part.spec.d.ts +0 -2
  77. package/dist/src/agent-chat/__tests__/use-chat-post-finish-data-part.spec.d.ts.map +0 -1
  78. package/dist/src/agent-chat/steer-into-live-turn.d.ts +0 -35
  79. package/dist/src/agent-chat/steer-into-live-turn.d.ts.map +0 -1
  80. package/dist/src/hooks/__tests__/use-display-mode.spec.d.ts +0 -2
  81. package/dist/src/hooks/__tests__/use-display-mode.spec.d.ts.map +0 -1
  82. package/dist/src/hooks/__tests__/use-widget-layout.spec.d.ts +0 -2
  83. package/dist/src/hooks/__tests__/use-widget-layout.spec.d.ts.map +0 -1
  84. package/dist/src/hooks/__tests__/useHostLocation.spec.d.ts +0 -2
  85. package/dist/src/hooks/__tests__/useHostLocation.spec.d.ts.map +0 -1
@@ -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-beta.0",
4
+ "version": "5.0.0-beta.10",
5
5
  "type": "module",
6
6
  "repository": {
7
7
  "type": "git",
@@ -10,11 +10,12 @@ declare const _default: {
10
10
  "scripts": {
11
11
  "clean": "rm -rf node_modules dist .turbo",
12
12
  "clean:dist": "rm -rf dist .turbo",
13
- "build": "vite build",
13
+ "build": "NODE_ENV=production vite build && node ../../scripts/check-production-build.mjs dist",
14
14
  "test": "vitest run",
15
15
  "type-check": "tsc --noEmit",
16
16
  "lint": "eslint .",
17
- "format": "prettier --write ."
17
+ "format": "prettier --write .",
18
+ "prepack": "node ../../scripts/check-production-build.mjs dist"
18
19
  },
19
20
  "files": [
20
21
  "dist"
@@ -1 +1 @@
1
- {"version":3,"file":"ComponentRegistry.d.ts","sourceRoot":"","sources":["../../src/ComponentRegistry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,qBAAa,iBAAiB;IAC5B,UAAU,EAAE,mBAAmB,EAAE,CAAM;gBAE3B,IAAI,EAAE;QAAE,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAA;KAAE;IAgBxD,QAAQ,CAAC,SAAS,EAAE,mBAAmB;IAWvC,OAAO,CAAC,GAAG;IAQJ,YAAY,CAAC,GAAG,EAAE,MAAM;CAGhC"}
1
+ {"version":3,"file":"ComponentRegistry.d.ts","sourceRoot":"","sources":["../../src/ComponentRegistry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,qBAAa,iBAAiB;IAC5B,UAAU,EAAE,mBAAmB,EAAE,CAAM;gBAE3B,IAAI,EAAE;QAAE,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAA;KAAE;IAexD,QAAQ,CAAC,SAAS,EAAE,mBAAmB;IAavC,OAAO,CAAC,GAAG;IAQJ,YAAY,CAAC,GAAG,EAAE,MAAM;CAGhC"}
@@ -0,0 +1,61 @@
1
+ import { default as React } from 'react';
2
+ import { PrimitiveState, WidgetConfig, WidgetCtx } from '@opencx/widget-core';
3
+ import { AgentChatUiValue } from './agent-chat/AgentChatContext';
4
+ import { ConnectionState } from './agent-chat/useConnection';
5
+ export type CompanionChat = {
6
+ id: number;
7
+ ctx: WidgetCtx;
8
+ title: string;
9
+ working: boolean;
10
+ hasSession: boolean;
11
+ hasDraft: boolean;
12
+ ui: AgentChatUiValue;
13
+ connection: ConnectionState | null;
14
+ /** A closed tab may finish its current turn before its runtime is released. */
15
+ closed?: boolean;
16
+ };
17
+ /** Keeps each send engine mounted while the visible conversation changes. */
18
+ export declare class ConversationWorkspace {
19
+ private root;
20
+ state: PrimitiveState<{
21
+ chats: CompanionChat[];
22
+ activeId: number;
23
+ }>;
24
+ private nextId;
25
+ private mountVersion;
26
+ private disposed;
27
+ constructor(root: WidgetCtx);
28
+ private makeChat;
29
+ /** Attach only after commit: Strict Mode may discard render-time workspaces. */
30
+ mount: () => () => void;
31
+ dispose: () => void;
32
+ select: (id: number) => void;
33
+ close: (id: number) => void;
34
+ private releaseChat;
35
+ private isWorking;
36
+ canCreateChat: () => boolean;
37
+ private isEmpty;
38
+ open: (sessionId?: string) => WidgetCtx | undefined;
39
+ update: (id: number, update: Partial<Pick<CompanionChat, "title" | "working" | "hasSession" | "hasDraft" | "ui" | "connection">>) => void;
40
+ }
41
+ /** Optional only for shared hooks that also serve popover and inline widgets. */
42
+ export declare function useConversationWorkspace(): {
43
+ workspace: ConversationWorkspace | null;
44
+ chats: CompanionChat[];
45
+ openChats: CompanionChat[];
46
+ activeId: number;
47
+ };
48
+ export declare function useCompanionChats(): {
49
+ selectChat: (id: number) => void;
50
+ closeChat: (id: number) => void;
51
+ newChat: (sessionId?: string) => WidgetCtx | undefined;
52
+ chats: CompanionChat[];
53
+ openChats: CompanionChat[];
54
+ activeId: number;
55
+ };
56
+ export declare function CompanionConversationProvider({ widgetCtx, config, children, }: {
57
+ widgetCtx: WidgetCtx;
58
+ config?: WidgetConfig;
59
+ children: (active: WidgetCtx) => React.ReactNode;
60
+ }): React.JSX.Element;
61
+ //# sourceMappingURL=ConversationWorkspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConversationWorkspace.d.ts","sourceRoot":"","sources":["../../src/ConversationWorkspace.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AACf,OAAO,EACL,cAAc,EACd,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAKL,KAAK,gBAAgB,EACtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,4BAA4B,CAAC;AAGpC,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,EAAE,EAAE,gBAAgB,CAAC;IACrB,UAAU,EAAE,eAAe,GAAG,IAAI,CAAC;IACnC,+EAA+E;IAC/E,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,6EAA6E;AAC7E,qBAAa,qBAAqB;IAKpB,OAAO,CAAC,IAAI;IAJxB,KAAK,EAAE,cAAc,CAAC;QAAE,KAAK,EAAE,aAAa,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpE,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAS;gBACL,IAAI,EAAE,SAAS;IAInC,OAAO,CAAC,QAAQ;IAYhB,gFAAgF;IAChF,KAAK,mBAgBH;IAEF,OAAO,aAaL;IAEF,MAAM,GAAI,IAAI,MAAM,UAiBlB;IACF,KAAK,GAAI,IAAI,MAAM,UA2BjB;IACF,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,SAAS;IAOjB,aAAa,gBAU2B;IAExC,OAAO,CAAC,OAAO;IAcf,IAAI,GAAI,YAAY,MAAM,2BAiCxB;IACF,MAAM,GACJ,IAAI,MAAM,EACV,QAAQ,OAAO,CACb,IAAI,CACF,aAAa,EACb,OAAO,GAAG,SAAS,GAAG,YAAY,GAAG,UAAU,GAAG,IAAI,GAAG,YAAY,CACtE,CACF,UA2BD;CACH;AAQD,iFAAiF;AACjF,wBAAgB,wBAAwB;;;;;EAQvC;AAED,wBAAgB,iBAAiB;qBA7KjB,MAAM;oBAkBP,MAAM;0BAmEC,MAAM;;;;EAkG3B;AA4DD,wBAAgB,6BAA6B,CAAC,EAC5C,SAAS,EACT,MAAyB,EACzB,QAAQ,GACT,EAAE;IACD,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC;CAClD,qBA+BA"}
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetProvider.d.ts","sourceRoot":"","sources":["../../src/WidgetProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AAEf,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,YAAY,EAEjB,SAAS,EACV,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,UAAU,mBAAmB;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACnC,cAAc,EAAE,iBAAiB,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;CACrE;AAID,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EAAE,MAAM,EACf,QAAQ,EACR,UAAU,EACV,OAAO,EACP,gBAAgB,EAChB,cAAc,GACf,EAAE;IACD,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACnC,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC;CACpD,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAkE5B;AAED,wBAAgB,SAAS,wBAMxB"}
1
+ {"version":3,"file":"WidgetProvider.d.ts","sourceRoot":"","sources":["../../src/WidgetProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAEf,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,YAAY,EAEjB,SAAS,EACV,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG9D,UAAU,mBAAmB;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACnC,cAAc,EAAE,iBAAiB,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;CACrE;AAID,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EAAE,MAAM,EACf,QAAQ,EACR,UAAU,EACV,OAAO,EACP,gBAAgB,EAChB,cAAc,GACf,EAAE;IACD,OAAO,EAAE,YAAY,CAAC;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACnC,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC,SAAS,CAAC;CACpD,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CA8I5B;AAED,wBAAgB,SAAS,wBAMxB"}
@@ -1,9 +1,9 @@
1
1
  import { WidgetConfig, WidgetCtx, WidgetUserMessage } from '@opencx/widget-core';
2
2
  import { default as React } from 'react';
3
- import { StreamingTurnItem } from './agent-chat-stream';
3
+ import { ConnectionRequest, StreamingTurnItem } from './agent-chat-stream';
4
4
  import { TurnRenderSource } from './agent-turn-sources';
5
5
  import { AskQuestionsRequest } from './ask-questions';
6
- import { AgentChatPageEffect } from './useAgentChat';
6
+ import { AgentChatPageEffect, PendingPageAction } from './useAgentChat';
7
7
  /**
8
8
  * Streaming state for the agent-chat surface, produced by the single
9
9
  * `useAgentChat` (one useChat instance) and consumed by the message list
@@ -38,12 +38,38 @@ export type AgentChatUiValue = {
38
38
  stop: () => void;
39
39
  /** Host-page effects normalized from the current assistant tool parts. */
40
40
  pageEffects: AgentChatPageEffect[];
41
+ /**
42
+ * Tell the waiting turn what actually happened on the page. The adapter
43
+ * that performs an effect owes exactly one of these per call; without it
44
+ * the agent only knows that it asked.
45
+ */
46
+ /**
47
+ * The committing action waiting on the visitor's yes, or null. Shown as a
48
+ * chip naming the exact control; a decline is final.
49
+ */
50
+ pendingPageAction: PendingPageAction | null;
51
+ /** The visitor's answer to that chip. */
52
+ resolvePageAction: (callId: string, allowed: boolean) => void;
53
+ /** Raised by the adapter that is about to act. Resolves false on decline. */
54
+ requestPageActionConsent: (request: PendingPageAction) => Promise<boolean>;
55
+ replyToPageCall: (callId: string, outcome: 'done' | 'covered' | 'gone' | 'hidden' | 'unsupported' | 'no_change' | 'declined', detail?: string, page?: {
56
+ controls: {
57
+ ref: string;
58
+ role: string;
59
+ name: string;
60
+ disabled?: boolean;
61
+ }[];
62
+ truncated: boolean;
63
+ }) => void;
41
64
  /**
42
65
  * The clarification the agent is waiting on — the composer shows the
43
66
  * questionnaire in its place — or null.
44
67
  */
45
68
  pendingClarification: AskQuestionsRequest | null;
69
+ pendingConnection: ConnectionRequest | null;
46
70
  };
71
+ export declare const DEFAULT_AGENT_CHAT_UI: AgentChatUiValue;
72
+ export declare const AgentChatContext: React.Context<AgentChatUiValue | null>;
47
73
  /** Reads the agent streaming state; safe defaults when not in an agent surface. */
48
74
  export declare function useAgentChatUi(): AgentChatUiValue;
49
75
  /**
@@ -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,KAA6C,MAAM,OAAO,CAAC;AAElE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAExE;;;;;;;;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;;;OAGG;IACH,oBAAoB,EAAE,mBAAmB,GAAG,IAAI,CAAC;CAClD,CAAC;AAkBF,mFAAmF;AACnF,wBAAgB,cAAc,IAAI,gBAAgB,CAEjD;AA6ED;;;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,qBAaA"}
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,3 +1,4 @@
1
+ import { z } from 'zod';
1
2
  import { AskQuestionsRequest } from './ask-questions';
2
3
  /** One line of a turn's activity trace (reasoning or a tool call). */
3
4
  export type StreamingStep = {
@@ -19,7 +20,23 @@ export type StreamingStep = {
19
20
  * drains out of model text as typed `data-spec` UIMessage parts. The styled
20
21
  * renderer assembles these into a renderable element-tree spec.
21
22
  */
23
+ export declare const connectionRequestSchema: z.ZodObject<{
24
+ request_id: z.ZodString;
25
+ server_id: z.ZodString;
26
+ name: z.ZodString;
27
+ }, z.core.$strip>;
28
+ export type ConnectionRequest = z.infer<typeof connectionRequestSchema>;
22
29
  declare const SPEC_DATA_PART_TYPE = "data-spec";
30
+ declare const planSchema: z.ZodObject<{
31
+ plan: z.ZodArray<z.ZodObject<{
32
+ step: z.ZodString;
33
+ status: z.ZodEnum<{
34
+ pending: "pending";
35
+ in_progress: "in_progress";
36
+ completed: "completed";
37
+ }>;
38
+ }, z.core.$strip>>;
39
+ }, z.core.$strip>;
23
40
  export type SpecDataPart = {
24
41
  type: typeof SPEC_DATA_PART_TYPE;
25
42
  data: unknown;
@@ -28,12 +45,16 @@ export type SpecDataPart = {
28
45
  export type StreamingTurnItem = {
29
46
  kind: 'text';
30
47
  text: string;
48
+ streaming?: boolean;
31
49
  } | {
32
50
  kind: 'steps';
33
51
  steps: StreamingStep[];
34
52
  } | {
35
53
  kind: 'spec';
36
54
  parts: SpecDataPart[];
55
+ } | {
56
+ kind: 'plan';
57
+ plan: z.infer<typeof planSchema>['plan'];
37
58
  }
38
59
  /**
39
60
  * A clarification the agent asked. Never rendered in the transcript: the
@@ -43,6 +64,9 @@ export type StreamingTurnItem = {
43
64
  | {
44
65
  kind: 'questions';
45
66
  request: AskQuestionsRequest;
67
+ } | {
68
+ kind: 'connection';
69
+ request: ConnectionRequest;
46
70
  };
47
71
  /** The in-flight turn's render state: active + its ordered items. */
48
72
  export type StreamingTurnState = {
@@ -1 +1 @@
1
- {"version":3,"file":"agent-chat-stream.d.ts","sourceRoot":"","sources":["../../../src/agent-chat/agent-chat-stream.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAC;AAEzB,sEAAsE;AACtE,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC;IAC3B,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;;;GAIG;AACH,QAAA,MAAM,mBAAmB,cAAc,CAAC;AAExC,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,OAAO,mBAAmB,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAE/E,uDAAuD;AACvD,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,aAAa,EAAE,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,EAAE,CAAA;CAAE;AACzC;;;;GAIG;GACD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAExD,qEAAqE;AACrE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,iBAAiB,EAAE,CAAC;CAC5B,CAAC;AAEF;;;GAGG;AACH,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,uDAAuD;AACvD,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CAClC,CAAC;AAEF,+DAA+D;AAC/D,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,GAC/B,iBAAiB,EAAE,CA0DrB"}
1
+ {"version":3,"file":"agent-chat-stream.d.ts","sourceRoot":"","sources":["../../../src/agent-chat/agent-chat-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAC;AAEzB,sEAAsE;AACtE,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,WAAW,GAAG,MAAM,CAAC;IAC3B,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;;;;iBAIlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAIxE,QAAA,MAAM,mBAAmB,cAAc,CAAC;AAExC,QAAA,MAAM,UAAU;;;;;;;;;iBAOd,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,OAAO,mBAAmB,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAE/E,uDAAuD;AACvD,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,aAAa,EAAE,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,YAAY,EAAE,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAA;CAAE;AAC5D;;;;GAIG;GACD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,mBAAmB,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAEvD,qEAAqE;AACrE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,iBAAiB,EAAE,CAAC;CAC5B,CAAC;AAEF;;;GAGG;AACH,KAAK,UAAU,GAAG;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,uDAAuD;AACvD,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;CAClC,CAAC;AAEF,+DAA+D;AAC/D,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,GAC/B,iBAAiB,EAAE,CAiGrB"}
@@ -8,9 +8,11 @@ export type TurnRenderSource = {
8
8
  items: StreamingTurnItem[];
9
9
  };
10
10
  /** Fold a fresh history fetch into the current list of turn render sources. */
11
- export declare function mergeTurnSources({ existing, fetched, }: {
11
+ export declare function mergeTurnSources({ existing, fetched, refreshItems, }: {
12
12
  existing: TurnRenderSource[];
13
13
  fetched: AgentTurnMessagesDto;
14
+ /** Replace stale visibility projections while preserving each turn’s React key. */
15
+ refreshItems?: boolean;
14
16
  }): TurnRenderSource[];
15
17
  /** Read the terminal turn identity emitted on a finished useChat message. */
16
18
  export declare function parseTurnSettledPart(parts: ReadonlyArray<{
@@ -1 +1 @@
1
- {"version":3,"file":"agent-turn-sources.d.ts","sourceRoot":"","sources":["../../../src/agent-chat/agent-turn-sources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEhF,sEAAsE;AACtE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,iBAAiB,EAAE,CAAC;CAC5B,CAAC;AAEF,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,OAAO,GACR,EAAE;IACD,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,OAAO,EAAE,oBAAoB,CAAC;CAC/B,GAAG,gBAAgB,EAAE,CAyCrB;AAQD,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GACrD;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAc7C"}
1
+ {"version":3,"file":"agent-turn-sources.d.ts","sourceRoot":"","sources":["../../../src/agent-chat/agent-turn-sources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEhF,sEAAsE;AACtE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,iBAAiB,EAAE,CAAC;CAC5B,CAAC;AAEF,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,OAAO,EACP,YAAoB,GACrB,EAAE;IACD,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,OAAO,EAAE,oBAAoB,CAAC;IAC9B,mFAAmF;IACnF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,GAAG,gBAAgB,EAAE,CAyCrB;AAQD,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GACrD;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAc7C"}
@@ -0,0 +1,5 @@
1
+ import { WidgetConfig } from '@opencx/widget-core';
2
+ import { StreamingTurnItem } from './agent-chat-stream';
3
+ /** Narrow cached or live activity immediately, even before history refreshes. */
4
+ export declare function applyPresentation(items: StreamingTurnItem[], presentation: WidgetConfig['presentation']): StreamingTurnItem[];
5
+ //# sourceMappingURL=apply-presentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-presentation.d.ts","sourceRoot":"","sources":["../../../src/agent-chat/apply-presentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAiB,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE5E,iFAAiF;AACjF,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,iBAAiB,EAAE,EAC1B,YAAY,EAAE,YAAY,CAAC,cAAc,CAAC,GACzC,iBAAiB,EAAE,CAkCrB"}
@@ -0,0 +1,10 @@
1
+ import { StreamingTurnItem } from './agent-chat-stream';
2
+ import { TurnRenderSource } from './agent-turn-sources';
3
+ /** The latest plan snapshot belongs to the session, even when later turns have no plan update. */
4
+ export declare function sessionPlan({ liveItems, turnSources, }: {
5
+ liveItems: readonly StreamingTurnItem[];
6
+ turnSources: ReadonlyArray<Pick<TurnRenderSource, 'items'>>;
7
+ }): Extract<StreamingTurnItem, {
8
+ kind: 'plan';
9
+ }>['plan'] | undefined;
10
+ //# sourceMappingURL=session-plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-plan.d.ts","sourceRoot":"","sources":["../../../src/agent-chat/session-plan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,kGAAkG;AAClG,wBAAgB,WAAW,CAAC,EAC1B,SAAS,EACT,WAAW,GACZ,EAAE;IACD,SAAS,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACxC,WAAW,EAAE,aAAa,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC;CAC7D,GAAG,OAAO,CAAC,iBAAiB,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,CAYnE"}
@@ -1,27 +1,39 @@
1
1
  import { WidgetConfig, WidgetCtx, WidgetMessageU } from '@opencx/widget-core';
2
2
  import { StreamingTurnItem } from './agent-chat-stream';
3
3
  import { TurnRenderSource } from './agent-turn-sources';
4
+ /**
5
+ * Something the visitor has to say yes to before it happens. Raised by the
6
+ * adapter that is about to act — it is the one that knows which control the
7
+ * reference points at, and what that control is called.
8
+ */
9
+ export type PendingPageAction = {
10
+ callId: string;
11
+ /** What is about to be done: clicked, filled in, switched on. */
12
+ action: string;
13
+ /** The control's own name on the page, read off the page, not the model. */
14
+ controlName: string;
15
+ };
4
16
  /** A normalized browser effect for a styled renderer to perform on its host. */
5
17
  export type AgentChatPageEffect = {
6
18
  key: string;
7
- type: 'highlight-element';
19
+ type: 'highlight-element' | 'act-on-page';
8
20
  input: unknown;
21
+ /**
22
+ * The tool call this effect belongs to. The adapter performs the effect,
23
+ * sees what happened, and answers with `replyToPageCall(callId, …)` —
24
+ * which is how the turn finds out anything at all about the page it just
25
+ * touched.
26
+ */
27
+ callId: string;
9
28
  };
10
29
  /**
11
30
  * The agent-chat engine, powered by the AI SDK `useChat`.
12
31
  *
13
32
  * - **Streaming** is driven by `status` ('submitted' | 'streaming' | 'ready').
14
33
  * - **Resume** is native (`resume: true` reconnects to a live turn on mount).
15
- * - **Steering**: a message sent while a turn is STREAMING enters the
16
- * transcript at once and is POSTed at once; the backend steers it into the
17
- * live turn (`data-turn-steered`), whose single reply — still rendering on
18
- * this engine's stream, untouched — answers both messages. When the live
19
- * turn cannot take it (already over), the backend opens a new turn for it
20
- * on that request's stream, which is replayed here via resume.
21
- * - **Multi-send queues** cover the gaps steering cannot: a turn that has
22
- * not started streaming yet, a stop awaiting its ACK, and the post-turn
23
- * reconcile window. A queued message is held in a queue pill above the
24
- * composer and enters the transcript when its own turn starts.
34
+ * - **Multi-send queues** hold follow-ups until the active reply has settled
35
+ * and its persisted rows have been reconciled. Each queued message enters
36
+ * the transcript when its own turn starts.
25
37
  * - **Stop cancels the RESPONSE, not the conversation**: it aborts the client
26
38
  * stream and POSTs `/stop` so the server cancels generation, then the next
27
39
  * queued message (if any) is sent to the API immediately. The queue is
@@ -50,5 +62,19 @@ export declare function useAgentChat({ widgetCtx, config, sessionId, persistedMe
50
62
  removeQueued: (messageId: string) => void;
51
63
  stop: () => void;
52
64
  pageEffects: AgentChatPageEffect[];
65
+ replyToPageCall: (callId: string, outcome: "done" | "covered" | "gone" | "hidden" | "unsupported" | "no_change" | "declined", detail?: string, page?: {
66
+ controls: {
67
+ ref: string;
68
+ role: string;
69
+ name: string;
70
+ disabled?: boolean;
71
+ }[];
72
+ truncated: boolean;
73
+ }) => void;
74
+ pendingPageAction: PendingPageAction | null;
75
+ requestPageActionConsent: (request: PendingPageAction) => Promise<boolean>;
76
+ resolvePageAction: (callId: string, allowed: boolean) => void;
77
+ handledConnectionRequestIds: string[];
78
+ sourceSessionId: string | null;
53
79
  };
54
80
  //# sourceMappingURL=useAgentChat.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAgentChat.d.ts","sourceRoot":"","sources":["../../../src/agent-chat/useAgentChat.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEhF,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAS9B,gFAAgF;AAChF,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,mBAAmB,CAAC;IAC1B,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAqBF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;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;;;IAwsBG,+DAA+D;;IAE/D,wEAAwE;;IAExE,yEAAyE;;;;8BA7M9B,MAAM;;;EAqNpD"}
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;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;;;IA63BG,+DAA+D;;IAE/D,wEAAwE;;IAExE,yEAAyE;;;;8BA1a9B,MAAM;;;8BA8JvC,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;;wCAoCO,iBAAiB;gCAQkB,MAAM,WAAW,OAAO;;;EA4NxE"}
@@ -0,0 +1,39 @@
1
+ import { WidgetCtx } from '@opencx/widget-core';
2
+ import { default as React } from 'react';
3
+ import { ConnectionRequest } from './agent-chat-stream';
4
+ export type ConnectionPhase = 'idle' | 'loading' | 'ready' | 'waiting' | 'connected' | 'external';
5
+ type ContinuationKind = 'resume' | 'external' | 'renew' | 'dismiss';
6
+ export type ConnectionState = {
7
+ request: ConnectionRequest;
8
+ phase: ConnectionPhase;
9
+ authorization: {
10
+ url: string;
11
+ host: string;
12
+ completion: 'oauth' | 'external';
13
+ attemptId?: string;
14
+ } | null;
15
+ continuation: ContinuationKind | null;
16
+ error: string | null;
17
+ start: () => Promise<void>;
18
+ opened: () => void;
19
+ cancel: () => Promise<void>;
20
+ retryContinuation: () => Promise<void>;
21
+ };
22
+ /** Owns one authorization attempt above the card/view lifecycle. */
23
+ export declare function ConnectionAttemptProvider({ children, request, widgetCtx, onHandled, }: {
24
+ children: React.ReactNode;
25
+ request: ConnectionRequest | null;
26
+ widgetCtx: WidgetCtx;
27
+ onHandled: (requestId: string) => void;
28
+ }): React.FunctionComponentElement<React.ProviderProps<ConnectionState | null>>;
29
+ /** Re-exposes an already-owned controller across a companion workspace boundary. */
30
+ export declare function ConnectionControllerProvider({ children, connection, }: {
31
+ children: React.ReactNode;
32
+ connection: ConnectionState | null;
33
+ }): React.FunctionComponentElement<React.ProviderProps<ConnectionState | null>>;
34
+ /** Reads the active controller without requiring a connection request. */
35
+ export declare function useConnectionController(): ConnectionState | null;
36
+ /** Reads the provider-owned attempt; rendering the card never owns cleanup. */
37
+ export declare function useConnection(request: ConnectionRequest): ConnectionState;
38
+ export {};
39
+ //# sourceMappingURL=useConnection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useConnection.d.ts","sourceRoot":"","sources":["../../../src/agent-chat/useConnection.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,SAAS,EACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAQN,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAM7D,MAAM,MAAM,eAAe,GACvB,MAAM,GACN,SAAS,GACT,OAAO,GACP,SAAS,GACT,WAAW,GACX,UAAU,CAAC;AAEf,KAAK,gBAAgB,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;AAEpE,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,KAAK,EAAE,eAAe,CAAC;IACvB,aAAa,EAAE;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,OAAO,GAAG,UAAU,CAAC;QACjC,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,IAAI,CAAC;IACT,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACtC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,iBAAiB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC,CAAC;AAmCF,oEAAoE;AACpE,wBAAgB,yBAAyB,CAAC,EACxC,QAAQ,EACR,OAAO,EACP,SAAS,EACT,SAAS,GACV,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAClC,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC,+EAiVA;AAED,oFAAoF;AACpF,wBAAgB,4BAA4B,CAAC,EAC3C,QAAQ,EACR,UAAU,GACX,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,UAAU,EAAE,eAAe,GAAG,IAAI,CAAC;CACpC,+EAMA;AAED,0EAA0E;AAC1E,wBAAgB,uBAAuB,IAAI,eAAe,GAAG,IAAI,CAEhE;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,eAAe,CAQzE"}
@@ -0,0 +1,11 @@
1
+ import { SetStateAction } from 'react';
2
+ import { WidgetMention } from '@opencx/widget-core';
3
+ /** The composer reads and writes its conversation's draft directly. */
4
+ export declare function useComposerDraft(): {
5
+ setText: (value: SetStateAction<string>) => void;
6
+ setMentions: (value: SetStateAction<WidgetMention[]>) => void;
7
+ clearSubmitted: () => boolean;
8
+ text: string;
9
+ mentions: WidgetMention[];
10
+ };
11
+ //# sourceMappingURL=useComposerDraft.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useComposerDraft.d.ts","sourceRoot":"","sources":["../../../src/hooks/useComposerDraft.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIzD,uEAAuE;AACvE,wBAAgB,gBAAgB;qBAKpB,cAAc,CAAC,MAAM,CAAC;yBAQtB,cAAc,CAAC,aAAa,EAAE,CAAC;;;;EAc1C"}
@@ -1 +1 @@
1
- {"version":3,"file":"useIsAwaitingBotReply.d.ts","sourceRoot":"","sources":["../../../src/hooks/useIsAwaitingBotReply.ts"],"names":[],"mappings":"AAGA,wBAAgB,qBAAqB;;EAqBpC"}
1
+ {"version":3,"file":"useIsAwaitingBotReply.d.ts","sourceRoot":"","sources":["../../../src/hooks/useIsAwaitingBotReply.ts"],"names":[],"mappings":"AAGA,wBAAgB,qBAAqB;;EAuBpC"}
@@ -3,6 +3,7 @@ export declare function useMessages(): {
3
3
  messages: import('@opencx/widget-core').WidgetMessageU[];
4
4
  isSendingMessage: boolean;
5
5
  isSendingMessageToAI: boolean;
6
+ settledAgentUserMessageId: string | null;
6
7
  lastAIResMightSolveUserIssue: boolean;
7
8
  isInitialFetchLoading: boolean;
8
9
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useMessages.d.ts","sourceRoot":"","sources":["../../../src/hooks/useMessages.ts"],"names":[],"mappings":"AAIA,wBAAgB,WAAW;;;;;;;;;;;EAkB1B"}
1
+ {"version":3,"file":"useMessages.d.ts","sourceRoot":"","sources":["../../../src/hooks/useMessages.ts"],"names":[],"mappings":"AAIA,wBAAgB,WAAW;;;;;;;;;;;;EAkB1B"}
@@ -16,6 +16,10 @@ export declare function useSessions(): {
16
16
  readonly success: false;
17
17
  readonly error: "Session is not opened";
18
18
  readonly data?: undefined;
19
+ } | {
20
+ readonly success: false;
21
+ readonly error: "Session was reset";
22
+ readonly data?: undefined;
19
23
  } | {
20
24
  readonly success: true;
21
25
  readonly data: {
@@ -1 +1 @@
1
- {"version":3,"file":"useSessions.d.ts","sourceRoot":"","sources":["../../../src/hooks/useSessions.ts"],"names":[],"mappings":"AAKA,wBAAgB,WAAW;;;;;;;;;;;;;;;;;qBA+BmuD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAA2lC,CAAC;;;;sBAAwG,CAAC;mBAA6B,CAAC;iBAA2B,CAAC;;qBAA0C,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EADxiG"}
1
+ {"version":3,"file":"useSessions.d.ts","sourceRoot":"","sources":["../../../src/hooks/useSessions.ts"],"names":[],"mappings":"AAMA,wBAAgB,WAAW;;;;;;;;;;;;;;;;;qBAgC6uE,CAAC;;;;qBAA0H,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAA2lC,CAAC;;;;sBAAwG,CAAC;mBAA6B,CAAC;iBAA2B,CAAC;;qBAA0C,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAD7qH"}
@@ -1,22 +1,14 @@
1
- interface FileWithProgress {
2
- status: 'pending' | 'uploading' | 'success' | 'error';
3
- id: string;
4
- file: File;
5
- fileUrl?: string;
6
- progress: number;
7
- error?: string;
8
- }
9
- declare function useUploadFiles(): {
10
- allFiles: FileWithProgress[];
1
+ export type { FileWithProgress } from '@opencx/widget-core';
2
+ export declare function useUploadFiles(): {
3
+ allFiles: import('@opencx/widget-core').FileWithProgress[];
11
4
  appendFiles: (files: File[]) => void;
12
- handleCancelUpload: (fileId: string) => void;
13
- successFiles: FileWithProgress[];
5
+ handleCancelUpload: (id: string) => void;
6
+ successFiles: import('@opencx/widget-core').FileWithProgress[];
14
7
  emptyTheFiles: () => void;
15
- getFileById: (id: string) => FileWithProgress | undefined;
8
+ getFileById: (id: string) => import('@opencx/widget-core').FileWithProgress | undefined;
16
9
  getUploadProgress: (id: string) => number;
17
10
  getUploadStatus: (id: string) => "success" | "error" | "pending" | "uploading" | undefined;
18
11
  hasErrors: boolean;
19
12
  isUploading: boolean;
20
13
  };
21
- export { useUploadFiles, type FileWithProgress };
22
14
  //# sourceMappingURL=useUploadFiles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useUploadFiles.d.ts","sourceRoot":"","sources":["../../../src/hooks/useUploadFiles.ts"],"names":[],"mappings":"AAMA,UAAU,gBAAgB;IACxB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;IACtD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,iBAAS,cAAc;;yBAKO,IAAI,EAAE;iCA2DE,MAAM;;;sBAgCtB,MAAM;4BACA,MAAM;0BAER,MAAM;;;EAI/B;AAED,OAAO,EAAE,cAAc,EAAE,KAAK,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"useUploadFiles.d.ts","sourceRoot":"","sources":["../../../src/hooks/useUploadFiles.ts"],"names":[],"mappings":"AAIA,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,wBAAgB,cAAc;;;;;;sBAeR,MAAM;4BACA,MAAM;0BAER,MAAM;;;EAK/B"}
@@ -3,6 +3,6 @@ export declare function useWidgetRouter(): {
3
3
  screen: import('@opencx/widget-core').ScreenU;
4
4
  };
5
5
  toSessionsScreen: () => void;
6
- toChatScreen: (sessionId?: string) => void;
6
+ toChatScreen: (sessionId?: string) => import('@opencx/widget-core').WidgetCtx | undefined;
7
7
  };
8
8
  //# sourceMappingURL=useWidgetRouter.d.ts.map
@@ -1,6 +1,8 @@
1
1
  export type { WidgetComponentType, WidgetComponentProps, } from './types/components';
2
2
  export { WidgetProvider, useWidget } from './WidgetProvider';
3
3
  export { useAgentChatUi } from './agent-chat/AgentChatContext';
4
+ export { applyPresentation } from './agent-chat/apply-presentation';
5
+ export { sessionPlan } from './agent-chat/session-plan';
4
6
  export type { SpecDataPart, StreamingStep, StreamingTurnState, StreamingTurnItem, } from './agent-chat/agent-chat-stream';
5
7
  export type { TurnRenderSource } from './agent-chat/agent-turn-sources';
6
8
  export { formatAskQuestionsAnswers } from './agent-chat/ask-questions';
@@ -22,4 +24,9 @@ export { useWidgetLayout, WidgetLayoutProvider } from './hooks/useWidgetLayout';
22
24
  export { useModes } from './hooks/useModes';
23
25
  export { useCsat } from './hooks/useCsat';
24
26
  export { useDictation } from './hooks/useDictation';
27
+ export { useCompanionChats } from './ConversationWorkspace';
28
+ export { useComposerDraft } from './hooks/useComposerDraft';
29
+ export type { ConnectionRequest } from './agent-chat/agent-chat-stream';
30
+ export type { PendingPageAction } from './agent-chat/useAgentChat';
31
+ export { useConnection } from './agent-chat/useConnection';
25
32
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,YAAY,EACV,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,YAAY,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EACL,0BAA0B,EAC1B,eAAe,GAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,KAAK,gBAAgB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EACL,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,YAAY,EACV,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,YAAY,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EACL,0BAA0B,EAC1B,eAAe,GAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,KAAK,gBAAgB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EACL,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,YAAY,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACxE,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { WidgetConfig } from '@opencx/widget-core';
2
+ /**
3
+ * A local lifecycle fingerprint, never an authorization decision. Expiry and
4
+ * signatures intentionally do not participate, so a newly minted token for
5
+ * the same owner updates the transport without destroying session state.
6
+ */
7
+ export declare const widgetUserIdentity: (config: WidgetConfig) => string;
8
+ //# sourceMappingURL=widget-user-identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget-user-identity.d.ts","sourceRoot":"","sources":["../../src/widget-user-identity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AA4BxD;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,QAAQ,YAAY,KAAG,MAoCzD,CAAC"}
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-beta.0",
4
+ "version": "5.0.0-beta.10",
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-beta.0"
23
+ "@opencx/widget-core": "5.0.0-beta.10"
24
24
  },
25
25
  "peerDependencies": {
26
26
  "@types/react": ">=18 <20",
@@ -35,13 +35,13 @@
35
35
  "ai": "^7.0.31",
36
36
  "react": "^19.2.8",
37
37
  "react-dom": "^19.2.8",
38
- "@opencx/eslint-config": "0.0.1",
39
- "@opencx/tsconfig": "0.0.2"
38
+ "@opencx/tsconfig": "0.0.2",
39
+ "@opencx/eslint-config": "0.0.1"
40
40
  },
41
41
  "scripts": {
42
42
  "clean": "rm -rf node_modules dist .turbo",
43
43
  "clean:dist": "rm -rf dist .turbo",
44
- "build": "vite build",
44
+ "build": "NODE_ENV=production vite build && node ../../scripts/check-production-build.mjs dist",
45
45
  "test": "vitest run",
46
46
  "type-check": "tsc --noEmit",
47
47
  "lint": "eslint .",
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=WidgetProvider.initialization.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WidgetProvider.initialization.spec.d.ts","sourceRoot":"","sources":["../../../src/__tests__/WidgetProvider.initialization.spec.tsx"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=WidgetProvider.agent-chat.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WidgetProvider.agent-chat.spec.d.ts","sourceRoot":"","sources":["../../../../src/agent-chat/__tests__/WidgetProvider.agent-chat.spec.tsx"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=agent-chat-queue.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-chat-queue.spec.d.ts","sourceRoot":"","sources":["../../../../src/agent-chat/__tests__/agent-chat-queue.spec.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=agent-chat-stream.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-chat-stream.spec.d.ts","sourceRoot":"","sources":["../../../../src/agent-chat/__tests__/agent-chat-stream.spec.ts"],"names":[],"mappings":""}