@athenaintel/react 0.60.1 → 0.61.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.
Files changed (105) hide show
  1. package/README.md +157 -5
  2. package/dist/agent-ui/AgentTarget.cjs +11 -0
  3. package/dist/agent-ui/AgentTarget.cjs.map +1 -0
  4. package/dist/agent-ui/AgentTarget.d.ts +17 -0
  5. package/dist/agent-ui/AgentTarget.js +11 -0
  6. package/dist/agent-ui/AgentTarget.js.map +1 -0
  7. package/dist/agent-ui/AgentUiLayer.cjs +387 -0
  8. package/dist/agent-ui/AgentUiLayer.cjs.map +1 -0
  9. package/dist/agent-ui/AgentUiLayer.d.ts +40 -0
  10. package/dist/agent-ui/AgentUiLayer.js +387 -0
  11. package/dist/agent-ui/AgentUiLayer.js.map +1 -0
  12. package/dist/agent-ui/contract.cjs +104 -0
  13. package/dist/agent-ui/contract.cjs.map +1 -0
  14. package/dist/agent-ui/contract.d.ts +113 -0
  15. package/dist/agent-ui/contract.js +104 -0
  16. package/dist/agent-ui/contract.js.map +1 -0
  17. package/dist/agent-ui/driver.cjs +335 -0
  18. package/dist/agent-ui/driver.cjs.map +1 -0
  19. package/dist/agent-ui/driver.d.ts +66 -0
  20. package/dist/agent-ui/driver.js +335 -0
  21. package/dist/agent-ui/driver.js.map +1 -0
  22. package/dist/agent-ui/index.cjs +33 -0
  23. package/dist/agent-ui/index.cjs.map +1 -0
  24. package/dist/agent-ui/index.d.ts +19 -0
  25. package/dist/agent-ui/index.js +33 -0
  26. package/dist/agent-ui/index.js.map +1 -0
  27. package/dist/agent-ui/pace.cjs +121 -0
  28. package/dist/agent-ui/pace.cjs.map +1 -0
  29. package/dist/agent-ui/pace.d.ts +66 -0
  30. package/dist/agent-ui/pace.js +121 -0
  31. package/dist/agent-ui/pace.js.map +1 -0
  32. package/dist/agent-ui/screen.cjs +471 -0
  33. package/dist/agent-ui/screen.cjs.map +1 -0
  34. package/dist/agent-ui/screen.d.ts +97 -0
  35. package/dist/agent-ui/screen.js +471 -0
  36. package/dist/agent-ui/screen.js.map +1 -0
  37. package/dist/agent-ui/secret-fields.cjs +50 -0
  38. package/dist/agent-ui/secret-fields.cjs.map +1 -0
  39. package/dist/agent-ui/secret-fields.d.ts +15 -0
  40. package/dist/agent-ui/secret-fields.js +50 -0
  41. package/dist/agent-ui/secret-fields.js.map +1 -0
  42. package/dist/agent-ui/stage.cjs +196 -0
  43. package/dist/agent-ui/stage.cjs.map +1 -0
  44. package/dist/agent-ui/stage.d.ts +110 -0
  45. package/dist/agent-ui/stage.js +196 -0
  46. package/dist/agent-ui/stage.js.map +1 -0
  47. package/dist/agent-ui/tools.cjs +448 -0
  48. package/dist/agent-ui/tools.cjs.map +1 -0
  49. package/dist/agent-ui/tools.d.ts +103 -0
  50. package/dist/agent-ui/tools.js +448 -0
  51. package/dist/agent-ui/tools.js.map +1 -0
  52. package/dist/agent-ui/use-agent-target.cjs +63 -0
  53. package/dist/agent-ui/use-agent-target.cjs.map +1 -0
  54. package/dist/agent-ui/use-agent-target.d.ts +27 -0
  55. package/dist/agent-ui/use-agent-target.js +63 -0
  56. package/dist/agent-ui/use-agent-target.js.map +1 -0
  57. package/dist/agent-ui/use-agent-ui.cjs +15 -0
  58. package/dist/agent-ui/use-agent-ui.cjs.map +1 -0
  59. package/dist/agent-ui/use-agent-ui.d.ts +24 -0
  60. package/dist/agent-ui/use-agent-ui.js +15 -0
  61. package/dist/agent-ui/use-agent-ui.js.map +1 -0
  62. package/dist/chat/AthenaChat.cjs +17 -4
  63. package/dist/chat/AthenaChat.cjs.map +1 -1
  64. package/dist/chat/AthenaChat.d.ts +13 -0
  65. package/dist/chat/AthenaChat.js +17 -4
  66. package/dist/chat/AthenaChat.js.map +1 -1
  67. package/dist/chat/StatewireClientToolBridge.cjs +17 -12
  68. package/dist/chat/StatewireClientToolBridge.cjs.map +1 -1
  69. package/dist/chat/StatewireClientToolBridge.d.ts +4 -2
  70. package/dist/chat/StatewireClientToolBridge.js +17 -12
  71. package/dist/chat/StatewireClientToolBridge.js.map +1 -1
  72. package/dist/chat/StatewireClientToolConsentCard.cjs +3 -2
  73. package/dist/chat/StatewireClientToolConsentCard.cjs.map +1 -1
  74. package/dist/chat/StatewireClientToolConsentCard.d.ts +2 -1
  75. package/dist/chat/StatewireClientToolConsentCard.js +3 -2
  76. package/dist/chat/StatewireClientToolConsentCard.js.map +1 -1
  77. package/dist/chat/chat-voice-controls.cjs +5 -2
  78. package/dist/chat/chat-voice-controls.cjs.map +1 -1
  79. package/dist/chat/chat-voice-controls.d.ts +6 -1
  80. package/dist/chat/chat-voice-controls.js +6 -3
  81. package/dist/chat/chat-voice-controls.js.map +1 -1
  82. package/dist/chat/client-tool-write-consent.cjs +16 -5
  83. package/dist/chat/client-tool-write-consent.cjs.map +1 -1
  84. package/dist/chat/client-tool-write-consent.d.ts +12 -4
  85. package/dist/chat/client-tool-write-consent.js +16 -5
  86. package/dist/chat/client-tool-write-consent.js.map +1 -1
  87. package/dist/chat-ui/messages/message-components.cjs +1 -1
  88. package/dist/chat-ui/messages/message-components.cjs.map +1 -1
  89. package/dist/chat-ui/messages/message-components.d.ts +2 -2
  90. package/dist/chat-ui/messages/message-components.js +1 -1
  91. package/dist/chat-ui/messages/message-components.js.map +1 -1
  92. package/dist/index.cjs +7 -0
  93. package/dist/index.cjs.map +1 -1
  94. package/dist/index.d.ts +6 -0
  95. package/dist/index.js +7 -0
  96. package/dist/index.js.map +1 -1
  97. package/dist/provider/AthenaProvider.cjs +37 -8
  98. package/dist/provider/AthenaProvider.cjs.map +1 -1
  99. package/dist/provider/AthenaProvider.d.ts +18 -1
  100. package/dist/provider/AthenaProvider.js +33 -4
  101. package/dist/provider/AthenaProvider.js.map +1 -1
  102. package/dist/react/package.json.cjs +1 -1
  103. package/dist/react/package.json.js +1 -1
  104. package/dist/styles.css +1 -1
  105. package/package.json +6 -1
@@ -19,6 +19,12 @@ export interface AthenaChatProps {
19
19
  welcomeMessage?: string;
20
20
  /** Welcome subheading text. */
21
21
  welcomeSubtext?: string;
22
+ /**
23
+ * The host's own empty-state welcome, in place of the greeting (`welcomeMessage`,
24
+ * `welcomeSubtext`): rendered as given where the greeting sits, in the viewport's free space while
25
+ * the thread is empty. Absent: the greeting.
26
+ */
27
+ welcomeContent?: ReactNode;
22
28
  /**
23
29
  * Maximum width of the reading column (messages, welcome, composer).
24
30
  * Defaults to "46rem" — about 760 px, a comfortable measure for 15 px text.
@@ -181,6 +187,13 @@ export interface AthenaChatComposerSlots {
181
187
  toolbarStart?: ReactNode;
182
188
  /** Toolbar contents before the mic and the send/stop control. */
183
189
  toolbarEnd?: ReactNode;
190
+ /**
191
+ * One button for voice and Send, as ChatGPT's composer has it: while the draft is empty, no run is
192
+ * live and no call is connecting or live, the voice control stands in for Send (drawn as Send);
193
+ * once the person types, Send takes its place. A call that is connecting or live keeps its own
194
+ * mute or cancel beside Send or Stop. Default `false`: voice and Send side by side.
195
+ */
196
+ voiceInSend?: boolean;
184
197
  /**
185
198
  * The composer's own attach button (the paperclip). `false` leaves it out, for a host that offers
186
199
  * attaching from a control of its own in a slot (`useAthenaComposerActions().openFilePicker`);
@@ -181,6 +181,7 @@ const AthenaChatContent = ({
181
181
  className,
182
182
  welcomeMessage = "Hello there!",
183
183
  welcomeSubtext = "What can I help you with?",
184
+ welcomeContent,
184
185
  maxWidth = "46rem",
185
186
  turnAnchor = "bottom",
186
187
  readOnly = false,
@@ -348,7 +349,7 @@ const AthenaChatContent = ({
348
349
  /* @__PURE__ */ jsx(HandoffCursorReveal, { threadId: statewireThreadId }),
349
350
  /* @__PURE__ */ jsx(ThreadScrollToTop, {})
350
351
  ] }),
351
- welcome: /* @__PURE__ */ jsx(AthenaChatWelcome, { welcomeMessage, welcomeSubtext }),
352
+ welcome: welcomeContent ?? /* @__PURE__ */ jsx(AthenaChatWelcome, { welcomeMessage, welcomeSubtext }),
352
353
  beforeMessages: /* @__PURE__ */ jsx(StatewireHistoryEdge, { className: "aui-thread-history-edge" }),
353
354
  components: messageComponents,
354
355
  runningIndicator: null,
@@ -597,6 +598,10 @@ const AthenaChatComposer = ({
597
598
  const hasExtras = attachments.length > 0 || quote !== null;
598
599
  const sendStateRef = useRef({ isRunning, liveVoice: false });
599
600
  sendStateRef.current = { isRunning, liveVoice: voice.phase === "live" && !hasExtras };
601
+ const voiceDisabled = isUploading || dictationCtl.isActive || !isStatewireChannelLive(connection);
602
+ const voiceCallIdle = voice.phase !== "live" && voice.phase !== "connecting";
603
+ const voiceMerged = (slots == null ? void 0 : slots.voiceInSend) === true && voiceEnabled && voiceCallIdle;
604
+ const voiceAsSend = voiceMerged && !hasText && !hasExtras && !isRunning;
600
605
  const onBeforeSend = slots == null ? void 0 : slots.onBeforeSend;
601
606
  const beforeSubmit = useCallback(
602
607
  async ({ text }) => {
@@ -929,15 +934,23 @@ const AthenaChatComposer = ({
929
934
  disabledReason: needsConnectionReason
930
935
  }
931
936
  ),
932
- voiceEnabled && /* @__PURE__ */ jsx(
937
+ voiceEnabled && !voiceMerged && /* @__PURE__ */ jsx(
933
938
  ChatVoiceButton,
934
939
  {
935
940
  voice,
936
- disabled: isUploading || dictationCtl.isActive || !isStatewireChannelLive(connection),
941
+ disabled: voiceDisabled,
937
942
  disabledReason: needsConnectionReason
938
943
  }
939
944
  ),
940
- /* @__PURE__ */ jsx(
945
+ voiceAsSend ? /* @__PURE__ */ jsx(
946
+ ChatVoiceButton,
947
+ {
948
+ voice,
949
+ appearance: "send",
950
+ disabled: voiceDisabled,
951
+ disabledReason: needsConnectionReason
952
+ }
953
+ ) : /* @__PURE__ */ jsx(
941
954
  ComposerSendOrStop,
942
955
  {
943
956
  composerRef,