@athenaintel/react 0.42.2 → 0.43.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.
- package/README.md +10 -0
- package/dist/agent-runtime/src/conversation-list-groups.d.ts +74 -0
- package/dist/agent-runtime/src/index.d.ts +1 -0
- package/dist/agent-runtime/src/tool-metadata.cjs +0 -8
- package/dist/agent-runtime/src/tool-metadata.cjs.map +1 -1
- package/dist/agent-runtime/src/tool-metadata.js +0 -8
- package/dist/agent-runtime/src/tool-metadata.js.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-voice.cjs +30 -15
- package/dist/agent-runtime/src/use-deep-agent-voice.cjs.map +1 -1
- package/dist/agent-runtime/src/use-deep-agent-voice.d.ts +8 -0
- package/dist/agent-runtime/src/use-deep-agent-voice.js +30 -15
- package/dist/agent-runtime/src/use-deep-agent-voice.js.map +1 -1
- package/dist/chat/super-grouping/SuperGroupingCard.cjs +8 -2
- package/dist/chat/super-grouping/SuperGroupingCard.cjs.map +1 -1
- package/dist/chat/super-grouping/SuperGroupingCard.d.ts +6 -1
- package/dist/chat/super-grouping/SuperGroupingCard.js +8 -2
- package/dist/chat/super-grouping/SuperGroupingCard.js.map +1 -1
- package/dist/chat/super-grouping/ToolTimeline.cjs +27 -0
- package/dist/chat/super-grouping/ToolTimeline.cjs.map +1 -1
- package/dist/chat/super-grouping/ToolTimeline.d.ts +5 -1
- package/dist/chat/super-grouping/ToolTimeline.js +27 -0
- package/dist/chat/super-grouping/ToolTimeline.js.map +1 -1
- package/dist/chat/super-grouping/index.d.ts +1 -0
- package/dist/chat/super-grouping/timeline-step.cjs +61 -2
- package/dist/chat/super-grouping/timeline-step.cjs.map +1 -1
- package/dist/chat/super-grouping/timeline-step.d.ts +13 -1
- package/dist/chat/super-grouping/timeline-step.js +61 -2
- package/dist/chat/super-grouping/timeline-step.js.map +1 -1
- package/dist/chat-ui/mentions/mention-chip.cjs +144 -35
- package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -1
- package/dist/chat-ui/mentions/mention-chip.d.ts +17 -1
- package/dist/chat-ui/mentions/mention-chip.js +146 -37
- package/dist/chat-ui/mentions/mention-chip.js.map +1 -1
- package/dist/chat-ui/mentions/use-mention-asset.cjs +140 -0
- package/dist/chat-ui/mentions/use-mention-asset.cjs.map +1 -0
- package/dist/chat-ui/mentions/use-mention-asset.d.ts +16 -0
- package/dist/chat-ui/mentions/use-mention-asset.js +140 -0
- package/dist/chat-ui/mentions/use-mention-asset.js.map +1 -0
- package/dist/chat-ui/rich-text/chat-link.cjs +5 -4
- package/dist/chat-ui/rich-text/chat-link.cjs.map +1 -1
- package/dist/chat-ui/rich-text/chat-link.d.ts +2 -3
- package/dist/chat-ui/rich-text/chat-link.js +6 -5
- package/dist/chat-ui/rich-text/chat-link.js.map +1 -1
- package/dist/chat-ui/rich-text/chat-node-views.cjs +1 -0
- package/dist/chat-ui/rich-text/chat-node-views.cjs.map +1 -1
- package/dist/chat-ui/rich-text/chat-node-views.js +1 -0
- package/dist/chat-ui/rich-text/chat-node-views.js.map +1 -1
- package/dist/react/package.json.cjs +1 -1
- package/dist/react/package.json.js +1 -1
- package/dist/references/src/tool-option-schemas.d.ts +0 -34
- package/dist/styles.css +1 -1
- package/dist/threads/statewire-thread-list.cjs +6 -2
- package/dist/threads/statewire-thread-list.cjs.map +1 -1
- package/dist/threads/statewire-thread-list.js +6 -2
- package/dist/threads/statewire-thread-list.js.map +1 -1
- package/dist/tools/tool-summary.cjs +0 -2
- package/dist/tools/tool-summary.cjs.map +1 -1
- package/dist/tools/tool-summary.js +0 -2
- package/dist/tools/tool-summary.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -883,6 +883,16 @@ Both use the same bearer / API key as session creation. The full recipe
|
|
|
883
883
|
template skill `voice-session-guide.md`. `createAthenaVoiceSession` is also
|
|
884
884
|
exported if you hold the bridge state yourself.
|
|
885
885
|
|
|
886
|
+
## What's new in 0.43.0
|
|
887
|
+
|
|
888
|
+
**Asset and citation chips look and read like Olympus's.** A chip is now Olympus's mention pill in your theme's colours (grey on the default theme, still legible on a dark one): the asset's icon, its name, then the cited place in brackets (`Q4 report [p.5]`). Like Olympus's chips, it looks the asset up and shows the asset's own title and its type's icon instead of the link's label and `type=`. The lookup is agora's `getAssetsByIds` with the chat's credentials, which returns only the assets the viewer may read. Chips that render together ask in one request. Each answer is cached for a minute per backend and per signed-in person or API key (TanStack Query, on the host's `QueryClient` when there is one); a credential that names neither shares nothing beyond its own chat. Until the answer arrives, and for an asset the viewer may not read, the chip keeps the link's label and `type=`. A chip asks only where the answer changes it: never for a repository file's catalog (the chip reads as the file either way) or for a session (agora would read its whole row, transcript ledgers included). A chip with no credential to send (no token, API key or session cookie) asks for nothing.
|
|
889
|
+
|
|
890
|
+
**A repository file citation reads as the file and its lines, with GitHub's mark.** A citation of a GitHub repository's lines (`type=catalog&anchor=file_line_range`) now reads `route.ts:18-24` whatever label the model wrote: the repository's name, a long path, or a label in backticks. A long file name shortens before its lines do. The tooltip carries what the chip leaves out: the model's label when it says something else, the repository, the whole path and the cited passage.
|
|
891
|
+
|
|
892
|
+
**A place is drawn once.** A label that already ends with its place (`Q4 report p.5`, `olympus/…/route.ts:18-24`) is no longer followed by the place again. Nothing to change in your app.
|
|
893
|
+
|
|
894
|
+
Also first on npm in 0.43.0 (0.42.3 was tagged, not published): an asset link whose text markdown split shows its text, not `[object Object]` (#48739); a new chat's title poll waits for a session-list read already in flight (#48730); shared voice commands are scoped to their call (#48761).
|
|
895
|
+
|
|
886
896
|
## What's new in 0.42.2
|
|
887
897
|
|
|
888
898
|
**A message one signed-in user queued is never sent as the next user who signs in to the same chat.** The chat keeps each conversation's unconfirmed commands in this browser under the signed-in user, so a reload can resend them. When the signed-in user changed while the chat stayed mounted (a sign-in provider of your own that signs a signed-out person in, or `AthenaSSOProvider` with `revalidateOnWindowFocus` picking up another account), the conversation moved to the new user's key and took the previous user's client id, command numbers and unsent commands with it. A message the previous user sent while offline, or that had not yet reached Athena, could then go out on the new user's connection, as the new user. With the chat connected at the time, the reverse happened: the new user's messages went out on the connection the previous user had opened, and Athena ran them as the previous user.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { type ConversationAttention } from "./conversation-list";
|
|
2
|
+
/**
|
|
3
|
+
* Pure rules behind the session-list rows' attention affordances: Olympus's
|
|
4
|
+
* Sessions pane and Recent Conversations dropdown and Midas's sessions sidebar
|
|
5
|
+
* render the same indicator, next-action line and group placement from these,
|
|
6
|
+
* so the render tests stay thin and the surfaces cannot disagree
|
|
7
|
+
* (`docs/SESSIONS_LIST_GUIDE.md`, "Session attention").
|
|
8
|
+
*/
|
|
9
|
+
/** The fields a row needs to answer every rule here; a subset of `ConversationItem`. */
|
|
10
|
+
export interface ConversationAttentionInput {
|
|
11
|
+
attention?: ConversationAttention | null;
|
|
12
|
+
runStatus: string | null;
|
|
13
|
+
sessionStatus: string | null;
|
|
14
|
+
state?: string | null;
|
|
15
|
+
nextAction?: string | null;
|
|
16
|
+
isFavorited?: boolean;
|
|
17
|
+
isUnread: boolean;
|
|
18
|
+
updatedAt: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* The server-derived attention when the transport reports one Olympus knows,
|
|
22
|
+
* else the shared client fallback from the status planes — so a row from an
|
|
23
|
+
* older backend still reads `needs_you` on a human gate and `error` on a
|
|
24
|
+
* failed run.
|
|
25
|
+
*/
|
|
26
|
+
export declare function resolveConversationAttention(conversation: Pick<ConversationAttentionInput, "attention" | "runStatus" | "sessionStatus" | "state">): ConversationAttention | null;
|
|
27
|
+
/**
|
|
28
|
+
* The one indicator a row shows, in precedence order: a pending action for
|
|
29
|
+
* the viewer beats a live run, which beats the unread dot, which beats
|
|
30
|
+
* "waiting on someone else", which beats a terminal error. `running` is the
|
|
31
|
+
* caller's resolved running state (the live stream signal wins for the open
|
|
32
|
+
* thread), not the attention field, so the spinner keeps today's behaviour.
|
|
33
|
+
*/
|
|
34
|
+
export type ConversationAttentionIndicator = "needs_you" | "running" | "unread" | "watching" | "error" | null;
|
|
35
|
+
export declare function conversationAttentionIndicator({ attention, isRunning, isUnread, }: {
|
|
36
|
+
attention: ConversationAttention | null;
|
|
37
|
+
isRunning: boolean;
|
|
38
|
+
isUnread: boolean;
|
|
39
|
+
}): ConversationAttentionIndicator;
|
|
40
|
+
/** Tone of the next-action line, named after the design tokens that paint it. */
|
|
41
|
+
export type ConversationNextActionTone = "warning" | "success" | "muted" | "destructive";
|
|
42
|
+
export interface ConversationNextAction {
|
|
43
|
+
text: string;
|
|
44
|
+
tone: ConversationNextActionTone;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* The row's second line when the server derived a next step: the text as
|
|
48
|
+
* sent (already ≤ 80 characters), toned by what the session asks — orange
|
|
49
|
+
* for `needs_you`, green for `ready`, red for `error`, muted otherwise.
|
|
50
|
+
* `null` when there is nothing to do, so the row shows its timestamp.
|
|
51
|
+
*/
|
|
52
|
+
export declare function conversationNextAction({ attention, nextAction, }: {
|
|
53
|
+
attention: ConversationAttention | null;
|
|
54
|
+
nextAction?: string | null;
|
|
55
|
+
}): ConversationNextAction | null;
|
|
56
|
+
export type ConversationTimeGroup = "Today" | "Yesterday" | "This Week" | "This Month" | "Older";
|
|
57
|
+
/**
|
|
58
|
+
* Where a row lands in the Sessions pane: sessions that need the viewer
|
|
59
|
+
* first, then the viewer's pinned sessions, then everything else by when it
|
|
60
|
+
* last changed. A row appears once, in the FIRST group that applies.
|
|
61
|
+
*/
|
|
62
|
+
export type ConversationListGroup = "Needs you" | "Pinned" | ConversationTimeGroup;
|
|
63
|
+
export declare const CONVERSATION_LIST_GROUP_ORDER: readonly ConversationListGroup[];
|
|
64
|
+
export declare function conversationTimeGroup(dateStr: string, now?: Date): ConversationTimeGroup;
|
|
65
|
+
export declare function conversationListGroupOf(conversation: ConversationAttentionInput, now?: Date): ConversationListGroup;
|
|
66
|
+
export interface ConversationListSection<T extends ConversationAttentionInput> {
|
|
67
|
+
group: ConversationListGroup;
|
|
68
|
+
items: T[];
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Sections in display order; empty groups are omitted and the list's own
|
|
72
|
+
* newest-first order is kept within each group.
|
|
73
|
+
*/
|
|
74
|
+
export declare function groupConversationsForList<T extends ConversationAttentionInput>(conversations: readonly T[], now?: Date): ConversationListSection<T>[];
|
|
@@ -4,6 +4,7 @@ export { CLIENT_TOOL_INTERRUPT_SOURCE, clientToolCallArgs, type ClientToolCached
|
|
|
4
4
|
export { CLIENT_TOOL_WRITE_DECLINED_MESSAGE, type ClientToolBridgeTool, type ClientToolCallSettledEvent, clientToolClaimKey, type ClientToolWriteConsentDecision, defaultMissingClientToolMessage, executeClientToolBatch, type ExecuteClientToolBatchOptions, isPendingClientToolRequest, jsonSafeClientToolResult, useStatewireClientToolBridge, type UseStatewireClientToolBridgeOptions, } from "./client-tool-bridge";
|
|
5
5
|
export { conversationIndexFingerprint, conversationIndexId, conversationIndexUrlFromStatewireUrl, type ConversationIndexEntry, type ConversationWatchActivity, useConversationIndex, type UseConversationIndexOptions, type UseConversationIndexResult, watchActivityFingerprint, } from "./conversation-index";
|
|
6
6
|
export { cancelConversationListCaches, CONVERSATION_ATTENTIONS, CONVERSATION_LIST_DEFAULT_SCOPE_KEY, CONVERSATION_LIST_QUERY_KEY_ROOT, type ConversationAttention, type ConversationAttentionSource, type ConversationListFetcher, type ConversationListFetchParams, type ConversationListFilter, type ConversationListPage, conversationListFilterKey, conversationListQueryKeys, type ConversationPullRequest, type ConversationSummary, type ConversationWake, deriveConversationAttention, invalidateConversationListCaches, isConversationRunning, mergeConversationIndexIntoPage, mergeConversationPages, normalizeConversationListFilter, patchConversationListCaches, patchConversationsInPage, prependConversationToPage, removeConversationFromListCaches, removeConversationFromPage, summaryFromConversationIndexEntry, } from "./conversation-list";
|
|
7
|
+
export { CONVERSATION_LIST_GROUP_ORDER, type ConversationAttentionIndicator, type ConversationAttentionInput, type ConversationListGroup, type ConversationListSection, type ConversationNextAction, type ConversationNextActionTone, type ConversationTimeGroup, conversationAttentionIndicator, conversationListGroupOf, conversationNextAction, conversationTimeGroup, groupConversationsForList, resolveConversationAttention, } from "./conversation-list-groups";
|
|
7
8
|
export { CATEGORY_EMOJI, defaultToolDisplayMeta, describeDelegation, describeNamed, describePackage, describePath, describeQuery, describeRange, describeSql, describeTable, describeToolArgs, describeUrl, formatToolName, getCategoryEmoji, getToolDisplayMeta, hasToolDisplayMeta, isInlineTool, knownToolNames, TOOL_DISPLAY_META, type ToolArgsDescriber, type ToolCategory, toolActiveLabel, toolCompletedLabel, type ToolDisplayMeta, type ToolDisplayMetaEntry, type ToolIconKey, toolStatusLabel, type ToolStatusLabelState, truncateLine, } from "./tool-metadata";
|
|
8
9
|
export { classifyToolResult, isRecord, isRejectedToolResult, isToolResultSuccess, parseJsonRecord, readRejectedToolResult, type RejectedToolResult, resultMessage, resultRecord, stringField, type ToolCallStatusLike, toolFailure, type ToolFailure, type ToolResultClassification, type ToolResultState, } from "./tool-result";
|
|
9
10
|
export { type ConversationListController, useConversationList, type UseConversationListOptions, } from "./use-conversation-list";
|
|
@@ -105,14 +105,6 @@ const TOOL_DISPLAY_META = {
|
|
|
105
105
|
emoji: "🔍",
|
|
106
106
|
describe: describeQuery
|
|
107
107
|
},
|
|
108
|
-
perplexity_search: {
|
|
109
|
-
displayName: "Web Search",
|
|
110
|
-
activeLabel: "Searching the web",
|
|
111
|
-
category: "Web",
|
|
112
|
-
icon: "search",
|
|
113
|
-
emoji: "🔍",
|
|
114
|
-
describe: describeQuery
|
|
115
|
-
},
|
|
116
108
|
grounded_search: {
|
|
117
109
|
displayName: "Grounded Search",
|
|
118
110
|
activeLabel: "Searching",
|