@athenaintel/react 0.20.0 → 0.21.1
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 +86 -0
- package/dist/assets/use-asset-embed.cjs +8 -0
- package/dist/assets/use-asset-embed.cjs.map +1 -1
- package/dist/assets/use-asset-embed.js +8 -0
- package/dist/assets/use-asset-embed.js.map +1 -1
- package/dist/chat/StatewireApprovalCard.cjs +22 -4
- package/dist/chat/StatewireApprovalCard.cjs.map +1 -1
- package/dist/chat/StatewireApprovalCard.d.ts +14 -0
- package/dist/chat/StatewireApprovalCard.js +23 -5
- package/dist/chat/StatewireApprovalCard.js.map +1 -1
- package/dist/chat/StatewireClientToolBridge.cjs +2 -1
- package/dist/chat/StatewireClientToolBridge.cjs.map +1 -1
- package/dist/chat/StatewireClientToolBridge.js +2 -1
- package/dist/chat/StatewireClientToolBridge.js.map +1 -1
- package/dist/chat/StatewireQueuedMessages.cjs +2 -1
- package/dist/chat/StatewireQueuedMessages.cjs.map +1 -1
- package/dist/chat/StatewireQueuedMessages.js +2 -1
- package/dist/chat/StatewireQueuedMessages.js.map +1 -1
- package/dist/chat/athena-citation-links.cjs +17 -1
- package/dist/chat/athena-citation-links.cjs.map +1 -1
- package/dist/chat/athena-citation-links.js +17 -1
- package/dist/chat/athena-citation-links.js.map +1 -1
- package/dist/chat/statewire-client-tools.cjs +2 -1
- package/dist/chat/statewire-client-tools.cjs.map +1 -1
- package/dist/chat/statewire-client-tools.js +2 -1
- package/dist/chat/statewire-client-tools.js.map +1 -1
- package/dist/chat/super-grouping/SuperGroupingCard.cjs +69 -187
- package/dist/chat/super-grouping/SuperGroupingCard.cjs.map +1 -1
- package/dist/chat/super-grouping/SuperGroupingCard.d.ts +10 -6
- package/dist/chat/super-grouping/SuperGroupingCard.js +73 -191
- package/dist/chat/super-grouping/SuperGroupingCard.js.map +1 -1
- package/dist/chat/super-grouping/ToolTimeline.cjs +131 -0
- package/dist/chat/super-grouping/ToolTimeline.cjs.map +1 -0
- package/dist/chat/super-grouping/ToolTimeline.d.ts +16 -0
- package/dist/chat/super-grouping/ToolTimeline.js +131 -0
- package/dist/chat/super-grouping/ToolTimeline.js.map +1 -0
- package/dist/chat/super-grouping/activity-timeline.cjs +14 -8
- package/dist/chat/super-grouping/activity-timeline.cjs.map +1 -1
- package/dist/chat/super-grouping/activity-timeline.d.ts +3 -0
- package/dist/chat/super-grouping/activity-timeline.js +14 -8
- package/dist/chat/super-grouping/activity-timeline.js.map +1 -1
- package/dist/chat/super-grouping/timeline-step.cjs +65 -0
- package/dist/chat/super-grouping/timeline-step.cjs.map +1 -0
- package/dist/chat/super-grouping/timeline-step.d.ts +17 -0
- package/dist/chat/super-grouping/timeline-step.js +65 -0
- package/dist/chat/super-grouping/timeline-step.js.map +1 -0
- package/dist/chat/tiptap-text.cjs +8 -8
- package/dist/chat/tiptap-text.cjs.map +1 -1
- package/dist/chat/use-athena-run-live.cjs +2 -1
- package/dist/chat/use-athena-run-live.cjs.map +1 -1
- package/dist/chat/use-athena-run-live.js +2 -1
- package/dist/chat/use-athena-run-live.js.map +1 -1
- package/dist/chat/use-statewire-approval-request.cjs +7 -2
- package/dist/chat/use-statewire-approval-request.cjs.map +1 -1
- package/dist/chat/use-statewire-approval-request.d.ts +12 -2
- package/dist/chat/use-statewire-approval-request.js +8 -3
- package/dist/chat/use-statewire-approval-request.js.map +1 -1
- package/dist/chat-ui/composer/tiptap-composer.cjs +24 -65
- package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -1
- package/dist/chat-ui/composer/tiptap-composer.js +24 -65
- package/dist/chat-ui/composer/tiptap-composer.js.map +1 -1
- package/dist/chat-ui/index.cjs +2 -1
- package/dist/chat-ui/index.cjs.map +1 -1
- package/dist/chat-ui/index.js +2 -1
- package/dist/chat-ui/index.js.map +1 -1
- package/dist/chat-ui/mentions/mention-chip.cjs +49 -4
- package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -1
- package/dist/chat-ui/mentions/mention-chip.d.ts +11 -0
- package/dist/chat-ui/mentions/mention-chip.js +50 -5
- package/dist/chat-ui/mentions/mention-chip.js.map +1 -1
- package/dist/chat-ui/mentions/mention-extension.cjs +18 -6
- package/dist/chat-ui/mentions/mention-extension.cjs.map +1 -1
- package/dist/chat-ui/mentions/mention-extension.d.ts +2 -0
- package/dist/chat-ui/mentions/mention-extension.js +18 -6
- package/dist/chat-ui/mentions/mention-extension.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.cjs +1 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.js +1 -1
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs +9 -6
- package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/menu-item.d.ts +2 -2
- package/dist/chat-ui/mentions/suggestions/components/menu-item.js +10 -7
- package/dist/chat-ui/mentions/suggestions/components/menu-item.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/menu-list.cjs +2 -2
- package/dist/chat-ui/mentions/suggestions/components/menu-list.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/components/menu-list.d.ts +2 -2
- package/dist/chat-ui/mentions/suggestions/components/menu-list.js +2 -2
- package/dist/chat-ui/mentions/suggestions/components/menu-list.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/api-client.cjs +2 -1
- package/dist/chat-ui/mentions/suggestions/data/api-client.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/api-client.d.ts +3 -2
- package/dist/chat-ui/mentions/suggestions/data/api-client.js +2 -1
- package/dist/chat-ui/mentions/suggestions/data/api-client.js.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.cjs +6 -6
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.cjs.map +1 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.js +6 -6
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.js.map +1 -1
- package/dist/chat-ui/messages/message-components.cjs +6 -29
- package/dist/chat-ui/messages/message-components.cjs.map +1 -1
- package/dist/chat-ui/messages/message-components.d.ts +1 -13
- package/dist/chat-ui/messages/message-components.js +8 -31
- package/dist/chat-ui/messages/message-components.js.map +1 -1
- package/dist/chat-ui/messages/runtime-message.cjs +3 -2
- package/dist/chat-ui/messages/runtime-message.cjs.map +1 -1
- package/dist/chat-ui/messages/runtime-message.js +3 -2
- package/dist/chat-ui/messages/runtime-message.js.map +1 -1
- package/dist/chat-ui/messages/statewire-continue-run.cjs +23 -8
- package/dist/chat-ui/messages/statewire-continue-run.cjs.map +1 -1
- package/dist/chat-ui/messages/statewire-continue-run.d.ts +14 -4
- package/dist/chat-ui/messages/statewire-continue-run.js +23 -8
- package/dist/chat-ui/messages/statewire-continue-run.js.map +1 -1
- package/dist/chat-ui/messages/user-edit-composer.cjs +2 -1
- package/dist/chat-ui/messages/user-edit-composer.cjs.map +1 -1
- package/dist/chat-ui/messages/user-edit-composer.js +2 -1
- package/dist/chat-ui/messages/user-edit-composer.js.map +1 -1
- package/dist/chat-ui/rich-text/chat-message-body.cjs +76 -0
- package/dist/chat-ui/rich-text/chat-message-body.cjs.map +1 -0
- package/dist/chat-ui/rich-text/chat-message-body.d.ts +5 -0
- package/dist/chat-ui/rich-text/chat-message-body.js +76 -0
- package/dist/chat-ui/rich-text/chat-message-body.js.map +1 -0
- package/dist/chat-ui/rich-text/chat-node-views.cjs +51 -0
- package/dist/chat-ui/rich-text/chat-node-views.cjs.map +1 -0
- package/dist/chat-ui/rich-text/chat-node-views.d.ts +13 -0
- package/dist/chat-ui/rich-text/chat-node-views.js +51 -0
- package/dist/chat-ui/rich-text/chat-node-views.js.map +1 -0
- package/dist/chat-ui/rich-text/chat-text-schema.cjs +70 -0
- package/dist/chat-ui/rich-text/chat-text-schema.cjs.map +1 -0
- package/dist/chat-ui/rich-text/chat-text-schema.d.ts +7 -0
- package/dist/chat-ui/rich-text/chat-text-schema.js +70 -0
- package/dist/chat-ui/rich-text/chat-text-schema.js.map +1 -0
- package/dist/chat-ui/rich-text/dom-output-spec.cjs +83 -0
- package/dist/chat-ui/rich-text/dom-output-spec.cjs.map +1 -0
- package/dist/chat-ui/rich-text/dom-output-spec.d.ts +11 -0
- package/dist/chat-ui/rich-text/dom-output-spec.js +83 -0
- package/dist/chat-ui/rich-text/dom-output-spec.js.map +1 -0
- package/dist/chat-ui/statewire.cjs +2 -1
- package/dist/chat-ui/statewire.cjs.map +1 -1
- package/dist/chat-ui/statewire.js +2 -1
- package/dist/chat-ui/statewire.js.map +1 -1
- package/dist/chat-ui/thread/statewire-history-edge.cjs +2 -1
- package/dist/chat-ui/thread/statewire-history-edge.cjs.map +1 -1
- package/dist/chat-ui/thread/statewire-history-edge.js +2 -1
- package/dist/chat-ui/thread/statewire-history-edge.js.map +1 -1
- package/dist/index.cjs +2 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/node_modules/qrcode-generator/dist/qrcode.cjs +32 -0
- package/dist/node_modules/qrcode-generator/dist/qrcode.cjs.map +1 -0
- package/dist/node_modules/qrcode-generator/dist/qrcode.js +31 -0
- package/dist/node_modules/qrcode-generator/dist/qrcode.js.map +1 -0
- package/dist/node_modules/zod/v4/classic/errors.cjs +44 -0
- package/dist/node_modules/zod/v4/classic/errors.cjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/errors.js +44 -0
- package/dist/node_modules/zod/v4/classic/errors.js.map +1 -0
- package/dist/node_modules/zod/v4/classic/iso.cjs +43 -0
- package/dist/node_modules/zod/v4/classic/iso.cjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/iso.js +43 -0
- package/dist/node_modules/zod/v4/classic/iso.js.map +1 -0
- package/dist/node_modules/zod/v4/classic/parse.cjs +29 -0
- package/dist/node_modules/zod/v4/classic/parse.cjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/parse.js +29 -0
- package/dist/node_modules/zod/v4/classic/parse.js.map +1 -0
- package/dist/node_modules/zod/v4/classic/schemas.cjs +871 -0
- package/dist/node_modules/zod/v4/classic/schemas.cjs.map +1 -0
- package/dist/node_modules/zod/v4/classic/schemas.js +871 -0
- package/dist/node_modules/zod/v4/classic/schemas.js.map +1 -0
- package/dist/node_modules/zod/v4/core/api.cjs +570 -0
- package/dist/node_modules/zod/v4/core/api.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/api.js +570 -0
- package/dist/node_modules/zod/v4/core/api.js.map +1 -0
- package/dist/node_modules/zod/v4/core/checks.cjs +411 -0
- package/dist/node_modules/zod/v4/core/checks.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/checks.js +411 -0
- package/dist/node_modules/zod/v4/core/checks.js.map +1 -0
- package/dist/node_modules/zod/v4/core/core.cjs +77 -0
- package/dist/node_modules/zod/v4/core/core.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/core.js +77 -0
- package/dist/node_modules/zod/v4/core/core.js.map +1 -0
- package/dist/node_modules/zod/v4/core/doc.cjs +38 -0
- package/dist/node_modules/zod/v4/core/doc.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/doc.js +38 -0
- package/dist/node_modules/zod/v4/core/doc.js.map +1 -0
- package/dist/node_modules/zod/v4/core/errors.cjs +76 -0
- package/dist/node_modules/zod/v4/core/errors.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/errors.js +76 -0
- package/dist/node_modules/zod/v4/core/errors.js.map +1 -0
- package/dist/node_modules/zod/v4/core/json-schema-processors.cjs +312 -0
- package/dist/node_modules/zod/v4/core/json-schema-processors.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/json-schema-processors.js +312 -0
- package/dist/node_modules/zod/v4/core/json-schema-processors.js.map +1 -0
- package/dist/node_modules/zod/v4/core/parse.cjs +96 -0
- package/dist/node_modules/zod/v4/core/parse.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/parse.js +96 -0
- package/dist/node_modules/zod/v4/core/parse.js.map +1 -0
- package/dist/node_modules/zod/v4/core/regexes.cjs +86 -0
- package/dist/node_modules/zod/v4/core/regexes.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/regexes.js +86 -0
- package/dist/node_modules/zod/v4/core/regexes.js.map +1 -0
- package/dist/node_modules/zod/v4/core/registries.cjs +52 -0
- package/dist/node_modules/zod/v4/core/registries.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/registries.js +52 -0
- package/dist/node_modules/zod/v4/core/registries.js.map +1 -0
- package/dist/node_modules/zod/v4/core/schemas.cjs +1412 -0
- package/dist/node_modules/zod/v4/core/schemas.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/schemas.js +1413 -0
- package/dist/node_modules/zod/v4/core/schemas.js.map +1 -0
- package/dist/node_modules/zod/v4/core/to-json-schema.cjs +370 -0
- package/dist/node_modules/zod/v4/core/to-json-schema.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/to-json-schema.js +370 -0
- package/dist/node_modules/zod/v4/core/to-json-schema.js.map +1 -0
- package/dist/node_modules/zod/v4/core/util.cjs +444 -0
- package/dist/node_modules/zod/v4/core/util.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/util.js +444 -0
- package/dist/node_modules/zod/v4/core/util.js.map +1 -0
- package/dist/node_modules/zod/v4/core/versions.cjs +9 -0
- package/dist/node_modules/zod/v4/core/versions.cjs.map +1 -0
- package/dist/node_modules/zod/v4/core/versions.js +9 -0
- package/dist/node_modules/zod/v4/core/versions.js.map +1 -0
- package/dist/packages/agent-runtime/src/client-tool-bridge.cjs +7 -1
- package/dist/packages/agent-runtime/src/client-tool-bridge.cjs.map +1 -1
- package/dist/packages/agent-runtime/src/client-tool-bridge.js +7 -1
- package/dist/packages/agent-runtime/src/client-tool-bridge.js.map +1 -1
- package/dist/packages/agent-runtime/src/conversation-index.cjs +19 -10
- package/dist/packages/agent-runtime/src/conversation-index.cjs.map +1 -1
- package/dist/packages/agent-runtime/src/conversation-index.js +19 -10
- package/dist/packages/agent-runtime/src/conversation-index.js.map +1 -1
- package/dist/packages/agent-runtime/src/conversation-list.cjs +4 -0
- package/dist/packages/agent-runtime/src/conversation-list.cjs.map +1 -1
- package/dist/packages/agent-runtime/src/conversation-list.js +4 -0
- package/dist/packages/agent-runtime/src/conversation-list.js.map +1 -1
- package/dist/packages/agent-runtime/src/edit-command.cjs.map +1 -1
- package/dist/packages/agent-runtime/src/edit-command.js.map +1 -1
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.cjs +2 -0
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -1
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.js +2 -0
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.js.map +1 -1
- package/dist/packages/agent-runtime/src/interrupts.cjs +31 -7
- package/dist/packages/agent-runtime/src/interrupts.cjs.map +1 -1
- package/dist/packages/agent-runtime/src/interrupts.js +31 -7
- package/dist/packages/agent-runtime/src/interrupts.js.map +1 -1
- package/dist/packages/agent-runtime/src/messages.cjs +35 -5
- package/dist/packages/agent-runtime/src/messages.cjs.map +1 -1
- package/dist/packages/agent-runtime/src/messages.js +35 -5
- package/dist/packages/agent-runtime/src/messages.js.map +1 -1
- package/dist/packages/agent-runtime/src/protocol.cjs +4 -6
- package/dist/packages/agent-runtime/src/protocol.cjs.map +1 -1
- package/dist/packages/agent-runtime/src/protocol.js +4 -6
- package/dist/packages/agent-runtime/src/protocol.js.map +1 -1
- package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.cjs +296 -14
- package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.cjs.map +1 -1
- package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.js +293 -11
- package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.js.map +1 -1
- package/dist/packages/agent-runtime/src/screen-point.cjs +68 -0
- package/dist/packages/agent-runtime/src/screen-point.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/screen-point.js +68 -0
- package/dist/packages/agent-runtime/src/screen-point.js.map +1 -0
- package/dist/packages/agent-runtime/src/statewire-transport.cjs +6 -1
- package/dist/packages/agent-runtime/src/statewire-transport.cjs.map +1 -1
- package/dist/packages/agent-runtime/src/statewire-transport.js +6 -1
- package/dist/packages/agent-runtime/src/statewire-transport.js.map +1 -1
- package/dist/packages/agent-runtime/src/thread-handoff.cjs +85 -0
- package/dist/packages/agent-runtime/src/thread-handoff.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/thread-handoff.js +85 -0
- package/dist/packages/agent-runtime/src/thread-handoff.js.map +1 -0
- package/dist/packages/agent-runtime/src/thread-snapshot-cache.cjs +1 -1
- package/dist/packages/agent-runtime/src/thread-snapshot-cache.cjs.map +1 -1
- package/dist/packages/agent-runtime/src/thread-snapshot-cache.js +1 -1
- package/dist/packages/agent-runtime/src/thread-snapshot-cache.js.map +1 -1
- package/dist/packages/agent-runtime/src/tool-metadata.cjs +0 -8
- package/dist/packages/agent-runtime/src/tool-metadata.cjs.map +1 -1
- package/dist/packages/agent-runtime/src/tool-metadata.js +0 -8
- package/dist/packages/agent-runtime/src/tool-metadata.js.map +1 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-config.cjs +14 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-config.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-config.js +14 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-config.js.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.cjs +21 -5
- package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.cjs.map +1 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.js +21 -5
- package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.js.map +1 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-runtime.cjs +13 -3
- package/dist/packages/agent-runtime/src/use-deep-agent-runtime.cjs.map +1 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-runtime.js +14 -4
- package/dist/packages/agent-runtime/src/use-deep-agent-runtime.js.map +1 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-thread.cjs +35 -15
- package/dist/packages/agent-runtime/src/use-deep-agent-thread.cjs.map +1 -1
- package/dist/packages/agent-runtime/src/use-deep-agent-thread.js +35 -15
- package/dist/packages/agent-runtime/src/use-deep-agent-thread.js.map +1 -1
- package/dist/packages/agent-runtime/src/voice-presentation.cjs.map +1 -1
- package/dist/packages/agent-runtime/src/voice-presentation.js.map +1 -1
- package/dist/packages/react/package.json.cjs +1 -1
- package/dist/packages/react/package.json.js +1 -1
- package/dist/provider/AthenaProvider.cjs +2 -1
- package/dist/provider/AthenaProvider.cjs.map +1 -1
- package/dist/provider/AthenaProvider.js +2 -1
- package/dist/provider/AthenaProvider.js.map +1 -1
- package/dist/runtime/statewire-lifecycle.cjs +2 -1
- package/dist/runtime/statewire-lifecycle.cjs.map +1 -1
- package/dist/runtime/statewire-lifecycle.js +2 -1
- package/dist/runtime/statewire-lifecycle.js.map +1 -1
- package/dist/runtime/useAthenaStatewireRuntime.cjs +2 -1
- package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -1
- package/dist/runtime/useAthenaStatewireRuntime.js +2 -1
- package/dist/runtime/useAthenaStatewireRuntime.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/threads/api.cjs +29 -0
- package/dist/threads/api.cjs.map +1 -1
- package/dist/threads/api.d.ts +15 -0
- package/dist/threads/api.js +29 -0
- package/dist/threads/api.js.map +1 -1
- package/dist/threads/conversation-list-fetcher.cjs +4 -0
- package/dist/threads/conversation-list-fetcher.cjs.map +1 -1
- package/dist/threads/conversation-list-fetcher.js +4 -0
- package/dist/threads/conversation-list-fetcher.js.map +1 -1
- package/dist/threads/credential-shape.cjs +15 -0
- package/dist/threads/credential-shape.cjs.map +1 -0
- package/dist/threads/credential-shape.d.ts +17 -0
- package/dist/threads/credential-shape.js +15 -0
- package/dist/threads/credential-shape.js.map +1 -0
- package/dist/threads/statewire-thread-list.cjs +37 -4
- package/dist/threads/statewire-thread-list.cjs.map +1 -1
- package/dist/threads/statewire-thread-list.js +38 -5
- package/dist/threads/statewire-thread-list.js.map +1 -1
- package/dist/threads/use-rest-conversation-history.cjs +2 -1
- package/dist/threads/use-rest-conversation-history.cjs.map +1 -1
- package/dist/threads/use-rest-conversation-history.js +2 -1
- package/dist/threads/use-rest-conversation-history.js.map +1 -1
- package/dist/threads/use-statewire-conversation-history.cjs +5 -2
- package/dist/threads/use-statewire-conversation-history.cjs.map +1 -1
- package/dist/threads/use-statewire-conversation-history.d.ts +4 -1
- package/dist/threads/use-statewire-conversation-history.js +5 -2
- package/dist/threads/use-statewire-conversation-history.js.map +1 -1
- package/dist/toolkits/index.cjs +0 -7
- package/dist/toolkits/index.cjs.map +1 -1
- package/dist/toolkits/index.d.ts +0 -2
- package/dist/toolkits/index.js +0 -7
- package/dist/toolkits/index.js.map +1 -1
- package/dist/tools/index.cjs +2 -1
- package/dist/tools/index.cjs.map +1 -1
- package/dist/tools/index.js +2 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/misc-tool-uis.cjs +2 -1
- package/dist/tools/misc-tool-uis.cjs.map +1 -1
- package/dist/tools/misc-tool-uis.js +2 -1
- package/dist/tools/misc-tool-uis.js.map +1 -1
- package/dist/tools/primitives.cjs +2 -1
- package/dist/tools/primitives.cjs.map +1 -1
- package/dist/tools/primitives.js +2 -1
- package/dist/tools/primitives.js.map +1 -1
- package/dist/tools/tool-fallback.cjs +2 -1
- package/dist/tools/tool-fallback.cjs.map +1 -1
- package/dist/tools/tool-fallback.js +2 -1
- package/dist/tools/tool-fallback.js.map +1 -1
- package/dist/tools/voice-update-tool-ui.cjs +2 -1
- package/dist/tools/voice-update-tool-ui.cjs.map +1 -1
- package/dist/tools/voice-update-tool-ui.js +2 -1
- package/dist/tools/voice-update-tool-ui.js.map +1 -1
- package/dist/voice/index.cjs +6 -0
- package/dist/voice/index.cjs.map +1 -0
- package/dist/voice/index.d.ts +2 -0
- package/dist/voice/index.js +6 -0
- package/dist/voice/index.js.map +1 -0
- package/dist/voice/use-athena-voice-session.cjs +315 -0
- package/dist/voice/use-athena-voice-session.cjs.map +1 -0
- package/dist/voice/use-athena-voice-session.d.ts +180 -0
- package/dist/voice/use-athena-voice-session.js +315 -0
- package/dist/voice/use-athena-voice-session.js.map +1 -0
- package/package.json +18 -4
|
@@ -7,22 +7,22 @@ const cnfast = require("cnfast");
|
|
|
7
7
|
function MenuItemRow({
|
|
8
8
|
item,
|
|
9
9
|
isSelected,
|
|
10
|
-
|
|
10
|
+
onMouseMove,
|
|
11
11
|
onClick,
|
|
12
12
|
showArrow
|
|
13
13
|
}) {
|
|
14
14
|
var _a, _b, _c, _d;
|
|
15
15
|
const hasTwoLines = item.type === "tool" && item.description || item.type === "user" && item.email || item.type === "workspace_item" && item.description || item.type === "tab" && item.description;
|
|
16
|
+
const nameContent = item.type === "tab" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 truncate", title: item.name, children: item.name }) : item.name;
|
|
16
17
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
17
18
|
"div",
|
|
18
19
|
{
|
|
19
20
|
role: "button",
|
|
20
21
|
tabIndex: -1,
|
|
21
22
|
onClick,
|
|
22
|
-
|
|
23
|
+
onMouseMove,
|
|
23
24
|
className: cnfast.cn(
|
|
24
25
|
"mention-item flex items-center justify-between gap-2 px-2 py-1.5 rounded cursor-pointer transition-colors",
|
|
25
|
-
"hover:bg-gray-100",
|
|
26
26
|
item.menuSection === types.MentionMenuSection.CURRENT_WEBPAGE && !isSelected && "bg-sky-50/70",
|
|
27
27
|
isSelected && "bg-gray-100 is-selected"
|
|
28
28
|
),
|
|
@@ -30,7 +30,10 @@ function MenuItemRow({
|
|
|
30
30
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
31
31
|
"span",
|
|
32
32
|
{
|
|
33
|
-
className:
|
|
33
|
+
className: cnfast.cn(
|
|
34
|
+
"flex items-center flex-shrink-0",
|
|
35
|
+
hasTwoLines && "self-start mt-0.5"
|
|
36
|
+
),
|
|
34
37
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
35
38
|
mentionIcon.MentionIcon,
|
|
36
39
|
{
|
|
@@ -43,13 +46,13 @@ function MenuItemRow({
|
|
|
43
46
|
),
|
|
44
47
|
hasTwoLines ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 flex flex-col gap-0 min-w-0 -mt-0.5", children: [
|
|
45
48
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-sm leading-tight flex items-center gap-1.5", children: [
|
|
46
|
-
|
|
49
|
+
nameContent,
|
|
47
50
|
((_a = item.extra) == null ? void 0 : _a.isAdminOnly) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-purple-400 flex-shrink-0" }),
|
|
48
51
|
((_b = item.extra) == null ? void 0 : _b.isExperimental) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded-full bg-blue-50 px-1.5 py-0.5 text-[9px] font-medium text-blue-700", children: "Experimental" })
|
|
49
52
|
] }),
|
|
50
53
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs text-gray-500 leading-tight mt-0.5 truncate", children: item.type === "user" ? item.email : item.description })
|
|
51
54
|
] }) : /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex-1 text-sm truncate min-w-0 flex items-center gap-1.5", children: [
|
|
52
|
-
|
|
55
|
+
nameContent,
|
|
53
56
|
((_c = item.extra) == null ? void 0 : _c.isAdminOnly) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-purple-400 flex-shrink-0" }),
|
|
54
57
|
((_d = item.extra) == null ? void 0 : _d.isExperimental) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "rounded-full bg-blue-50 px-1.5 py-0.5 text-[9px] font-medium text-blue-700", children: "Experimental" })
|
|
55
58
|
] }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-item.cjs","sources":["../../../../../src/chat-ui/mentions/suggestions/components/menu-item.tsx"],"sourcesContent":["/**\n * Individual menu item in the mention popup.\n * Supports: tools (with description), users (with email), assets, categories.\n */\n\nimport type { MenuItem } from \"../data/types\";\nimport { MentionMenuSection } from \"../data/types\";\nimport { MentionIcon } from \"./mention-icon\";\nimport { cn } from \"../../../../lib/utils\";\n\nexport function MenuItemRow({\n item,\n isSelected,\n
|
|
1
|
+
{"version":3,"file":"menu-item.cjs","sources":["../../../../../src/chat-ui/mentions/suggestions/components/menu-item.tsx"],"sourcesContent":["/**\n * Individual menu item in the mention popup.\n * Supports: tools (with description), users (with email), assets, categories.\n */\n\nimport type { MenuItem } from \"../data/types\";\nimport { MentionMenuSection } from \"../data/types\";\nimport { MentionIcon } from \"./mention-icon\";\nimport { cn } from \"../../../../lib/utils\";\n\nexport function MenuItemRow({\n item,\n isSelected,\n onMouseMove,\n onClick,\n showArrow,\n}: {\n item: MenuItem;\n isSelected: boolean;\n onMouseMove: () => void;\n onClick: () => void;\n showArrow?: boolean;\n}) {\n const hasTwoLines =\n (item.type === \"tool\" && item.description) ||\n (item.type === \"user\" && item.email) ||\n (item.type === \"workspace_item\" && item.description) ||\n (item.type === \"tab\" && item.description);\n const nameContent = item.type === \"tab\" ? (\n <span className=\"min-w-0 truncate\" title={item.name}>\n {item.name}\n </span>\n ) : (\n item.name\n );\n\n return (\n <div\n role=\"button\"\n tabIndex={-1}\n onClick={onClick}\n // Opening or scrolling the popup can place a row under a stationary\n // cursor. Only mouse movement should override the keyboard selection.\n onMouseMove={onMouseMove}\n className={cn(\n \"mention-item flex items-center justify-between gap-2 px-2 py-1.5 rounded cursor-pointer transition-colors\",\n item.menuSection === MentionMenuSection.CURRENT_WEBPAGE &&\n !isSelected &&\n \"bg-sky-50/70\",\n isSelected && \"bg-gray-100 is-selected\",\n )}\n >\n {/* Icon */}\n <span\n className={cn(\n \"flex items-center flex-shrink-0\",\n hasTwoLines && \"self-start mt-0.5\",\n )}\n >\n <MentionIcon\n fallbackIcon={item.fallbackIcon}\n thumbnailUrl={item.thumbnailUrl}\n alt={item.name}\n />\n </span>\n\n {/* Content */}\n {hasTwoLines ? (\n <div className=\"flex-1 flex flex-col gap-0 min-w-0 -mt-0.5\">\n <span className=\"text-sm leading-tight flex items-center gap-1.5\">\n {nameContent}\n {item.extra?.isAdminOnly && (\n <span className=\"w-1.5 h-1.5 rounded-full bg-purple-400 flex-shrink-0\" />\n )}\n {item.extra?.isExperimental && (\n <span className=\"rounded-full bg-blue-50 px-1.5 py-0.5 text-[9px] font-medium text-blue-700\">\n Experimental\n </span>\n )}\n </span>\n <span className=\"text-xs text-gray-500 leading-tight mt-0.5 truncate\">\n {item.type === \"user\" ? item.email : item.description}\n </span>\n </div>\n ) : (\n <span className=\"flex-1 text-sm truncate min-w-0 flex items-center gap-1.5\">\n {nameContent}\n {item.extra?.isAdminOnly && (\n <span className=\"w-1.5 h-1.5 rounded-full bg-purple-400 flex-shrink-0\" />\n )}\n {item.extra?.isExperimental && (\n <span className=\"rounded-full bg-blue-50 px-1.5 py-0.5 text-[9px] font-medium text-blue-700\">\n Experimental\n </span>\n )}\n </span>\n )}\n\n {/* Navigation arrow */}\n {showArrow && (\n <div className=\"flex items-center gap-1 flex-shrink-0\">\n <span className=\"text-gray-400 text-sm px-1 rounded transition-all cursor-pointer hover:text-gray-600 hover:bg-gray-200\">\n →\n </span>\n </div>\n )}\n </div>\n );\n}\n"],"names":["jsxs","cn","MentionMenuSection","jsx","MentionIcon"],"mappings":";;;;;;AAUO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;;AACD,QAAM,cACH,KAAK,SAAS,UAAU,KAAK,eAC7B,KAAK,SAAS,UAAU,KAAK,SAC7B,KAAK,SAAS,oBAAoB,KAAK,eACvC,KAAK,SAAS,SAAS,KAAK;AAC/B,QAAM,cAAc,KAAK,SAAS,uCAC/B,QAAA,EAAK,WAAU,oBAAmB,OAAO,KAAK,MAC5C,UAAA,KAAK,KAAA,CACR,IAEA,KAAK;AAGP,SACEA,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,UAAU;AAAA,MACV;AAAA,MAGA;AAAA,MACA,WAAWC,OAAAA;AAAAA,QACT;AAAA,QACA,KAAK,gBAAgBC,MAAAA,mBAAmB,mBACtC,CAAC,cACD;AAAA,QACF,cAAc;AAAA,MAAA;AAAA,MAIhB,UAAA;AAAA,QAAAC,2BAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWF,OAAAA;AAAAA,cACT;AAAA,cACA,eAAe;AAAA,YAAA;AAAA,YAGjB,UAAAE,2BAAAA;AAAAA,cAACC,YAAAA;AAAAA,cAAA;AAAA,gBACC,cAAc,KAAK;AAAA,gBACnB,cAAc,KAAK;AAAA,gBACnB,KAAK,KAAK;AAAA,cAAA;AAAA,YAAA;AAAA,UACZ;AAAA,QAAA;AAAA,QAID,cACCJ,2BAAAA,KAAC,OAAA,EAAI,WAAU,8CACb,UAAA;AAAA,UAAAA,2BAAAA,KAAC,QAAA,EAAK,WAAU,mDACb,UAAA;AAAA,YAAA;AAAA,cACA,UAAK,UAAL,mBAAY,gBACXG,2BAAAA,IAAC,QAAA,EAAK,WAAU,wDAAuD;AAAA,cAExE,UAAK,UAAL,mBAAY,kDACV,QAAA,EAAK,WAAU,8EAA6E,UAAA,eAAA,CAE7F;AAAA,UAAA,GAEJ;AAAA,UACAA,2BAAAA,IAAC,QAAA,EAAK,WAAU,uDACb,UAAA,KAAK,SAAS,SAAS,KAAK,QAAQ,KAAK,YAAA,CAC5C;AAAA,QAAA,EAAA,CACF,IAEAH,2BAAAA,KAAC,QAAA,EAAK,WAAU,6DACb,UAAA;AAAA,UAAA;AAAA,YACA,UAAK,UAAL,mBAAY,gBACXG,2BAAAA,IAAC,QAAA,EAAK,WAAU,wDAAuD;AAAA,YAExE,UAAK,UAAL,mBAAY,kDACV,QAAA,EAAK,WAAU,8EAA6E,UAAA,eAAA,CAE7F;AAAA,QAAA,GAEJ;AAAA,QAID,aACCA,2BAAAA,IAAC,OAAA,EAAI,WAAU,yCACb,yCAAC,QAAA,EAAK,WAAU,0GAAyG,UAAA,IAAA,CAEzH,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;;"}
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
* Supports: tools (with description), users (with email), assets, categories.
|
|
4
4
|
*/
|
|
5
5
|
import type { MenuItem } from "../data/types";
|
|
6
|
-
export declare function MenuItemRow({ item, isSelected,
|
|
6
|
+
export declare function MenuItemRow({ item, isSelected, onMouseMove, onClick, showArrow, }: {
|
|
7
7
|
item: MenuItem;
|
|
8
8
|
isSelected: boolean;
|
|
9
|
-
|
|
9
|
+
onMouseMove: () => void;
|
|
10
10
|
onClick: () => void;
|
|
11
11
|
showArrow?: boolean;
|
|
12
12
|
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { MentionMenuSection } from "../data/types.js";
|
|
3
3
|
import { MentionIcon } from "./mention-icon.js";
|
|
4
4
|
import { cn } from "cnfast";
|
|
5
5
|
function MenuItemRow({
|
|
6
6
|
item,
|
|
7
7
|
isSelected,
|
|
8
|
-
|
|
8
|
+
onMouseMove,
|
|
9
9
|
onClick,
|
|
10
10
|
showArrow
|
|
11
11
|
}) {
|
|
12
12
|
var _a, _b, _c, _d;
|
|
13
13
|
const hasTwoLines = item.type === "tool" && item.description || item.type === "user" && item.email || item.type === "workspace_item" && item.description || item.type === "tab" && item.description;
|
|
14
|
+
const nameContent = item.type === "tab" ? /* @__PURE__ */ jsx("span", { className: "min-w-0 truncate", title: item.name, children: item.name }) : item.name;
|
|
14
15
|
return /* @__PURE__ */ jsxs(
|
|
15
16
|
"div",
|
|
16
17
|
{
|
|
17
18
|
role: "button",
|
|
18
19
|
tabIndex: -1,
|
|
19
20
|
onClick,
|
|
20
|
-
|
|
21
|
+
onMouseMove,
|
|
21
22
|
className: cn(
|
|
22
23
|
"mention-item flex items-center justify-between gap-2 px-2 py-1.5 rounded cursor-pointer transition-colors",
|
|
23
|
-
"hover:bg-gray-100",
|
|
24
24
|
item.menuSection === MentionMenuSection.CURRENT_WEBPAGE && !isSelected && "bg-sky-50/70",
|
|
25
25
|
isSelected && "bg-gray-100 is-selected"
|
|
26
26
|
),
|
|
@@ -28,7 +28,10 @@ function MenuItemRow({
|
|
|
28
28
|
/* @__PURE__ */ jsx(
|
|
29
29
|
"span",
|
|
30
30
|
{
|
|
31
|
-
className:
|
|
31
|
+
className: cn(
|
|
32
|
+
"flex items-center flex-shrink-0",
|
|
33
|
+
hasTwoLines && "self-start mt-0.5"
|
|
34
|
+
),
|
|
32
35
|
children: /* @__PURE__ */ jsx(
|
|
33
36
|
MentionIcon,
|
|
34
37
|
{
|
|
@@ -41,13 +44,13 @@ function MenuItemRow({
|
|
|
41
44
|
),
|
|
42
45
|
hasTwoLines ? /* @__PURE__ */ jsxs("div", { className: "flex-1 flex flex-col gap-0 min-w-0 -mt-0.5", children: [
|
|
43
46
|
/* @__PURE__ */ jsxs("span", { className: "text-sm leading-tight flex items-center gap-1.5", children: [
|
|
44
|
-
|
|
47
|
+
nameContent,
|
|
45
48
|
((_a = item.extra) == null ? void 0 : _a.isAdminOnly) && /* @__PURE__ */ jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-purple-400 flex-shrink-0" }),
|
|
46
49
|
((_b = item.extra) == null ? void 0 : _b.isExperimental) && /* @__PURE__ */ jsx("span", { className: "rounded-full bg-blue-50 px-1.5 py-0.5 text-[9px] font-medium text-blue-700", children: "Experimental" })
|
|
47
50
|
] }),
|
|
48
51
|
/* @__PURE__ */ jsx("span", { className: "text-xs text-gray-500 leading-tight mt-0.5 truncate", children: item.type === "user" ? item.email : item.description })
|
|
49
52
|
] }) : /* @__PURE__ */ jsxs("span", { className: "flex-1 text-sm truncate min-w-0 flex items-center gap-1.5", children: [
|
|
50
|
-
|
|
53
|
+
nameContent,
|
|
51
54
|
((_c = item.extra) == null ? void 0 : _c.isAdminOnly) && /* @__PURE__ */ jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-purple-400 flex-shrink-0" }),
|
|
52
55
|
((_d = item.extra) == null ? void 0 : _d.isExperimental) && /* @__PURE__ */ jsx("span", { className: "rounded-full bg-blue-50 px-1.5 py-0.5 text-[9px] font-medium text-blue-700", children: "Experimental" })
|
|
53
56
|
] }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-item.js","sources":["../../../../../src/chat-ui/mentions/suggestions/components/menu-item.tsx"],"sourcesContent":["/**\n * Individual menu item in the mention popup.\n * Supports: tools (with description), users (with email), assets, categories.\n */\n\nimport type { MenuItem } from \"../data/types\";\nimport { MentionMenuSection } from \"../data/types\";\nimport { MentionIcon } from \"./mention-icon\";\nimport { cn } from \"../../../../lib/utils\";\n\nexport function MenuItemRow({\n item,\n isSelected,\n
|
|
1
|
+
{"version":3,"file":"menu-item.js","sources":["../../../../../src/chat-ui/mentions/suggestions/components/menu-item.tsx"],"sourcesContent":["/**\n * Individual menu item in the mention popup.\n * Supports: tools (with description), users (with email), assets, categories.\n */\n\nimport type { MenuItem } from \"../data/types\";\nimport { MentionMenuSection } from \"../data/types\";\nimport { MentionIcon } from \"./mention-icon\";\nimport { cn } from \"../../../../lib/utils\";\n\nexport function MenuItemRow({\n item,\n isSelected,\n onMouseMove,\n onClick,\n showArrow,\n}: {\n item: MenuItem;\n isSelected: boolean;\n onMouseMove: () => void;\n onClick: () => void;\n showArrow?: boolean;\n}) {\n const hasTwoLines =\n (item.type === \"tool\" && item.description) ||\n (item.type === \"user\" && item.email) ||\n (item.type === \"workspace_item\" && item.description) ||\n (item.type === \"tab\" && item.description);\n const nameContent = item.type === \"tab\" ? (\n <span className=\"min-w-0 truncate\" title={item.name}>\n {item.name}\n </span>\n ) : (\n item.name\n );\n\n return (\n <div\n role=\"button\"\n tabIndex={-1}\n onClick={onClick}\n // Opening or scrolling the popup can place a row under a stationary\n // cursor. Only mouse movement should override the keyboard selection.\n onMouseMove={onMouseMove}\n className={cn(\n \"mention-item flex items-center justify-between gap-2 px-2 py-1.5 rounded cursor-pointer transition-colors\",\n item.menuSection === MentionMenuSection.CURRENT_WEBPAGE &&\n !isSelected &&\n \"bg-sky-50/70\",\n isSelected && \"bg-gray-100 is-selected\",\n )}\n >\n {/* Icon */}\n <span\n className={cn(\n \"flex items-center flex-shrink-0\",\n hasTwoLines && \"self-start mt-0.5\",\n )}\n >\n <MentionIcon\n fallbackIcon={item.fallbackIcon}\n thumbnailUrl={item.thumbnailUrl}\n alt={item.name}\n />\n </span>\n\n {/* Content */}\n {hasTwoLines ? (\n <div className=\"flex-1 flex flex-col gap-0 min-w-0 -mt-0.5\">\n <span className=\"text-sm leading-tight flex items-center gap-1.5\">\n {nameContent}\n {item.extra?.isAdminOnly && (\n <span className=\"w-1.5 h-1.5 rounded-full bg-purple-400 flex-shrink-0\" />\n )}\n {item.extra?.isExperimental && (\n <span className=\"rounded-full bg-blue-50 px-1.5 py-0.5 text-[9px] font-medium text-blue-700\">\n Experimental\n </span>\n )}\n </span>\n <span className=\"text-xs text-gray-500 leading-tight mt-0.5 truncate\">\n {item.type === \"user\" ? item.email : item.description}\n </span>\n </div>\n ) : (\n <span className=\"flex-1 text-sm truncate min-w-0 flex items-center gap-1.5\">\n {nameContent}\n {item.extra?.isAdminOnly && (\n <span className=\"w-1.5 h-1.5 rounded-full bg-purple-400 flex-shrink-0\" />\n )}\n {item.extra?.isExperimental && (\n <span className=\"rounded-full bg-blue-50 px-1.5 py-0.5 text-[9px] font-medium text-blue-700\">\n Experimental\n </span>\n )}\n </span>\n )}\n\n {/* Navigation arrow */}\n {showArrow && (\n <div className=\"flex items-center gap-1 flex-shrink-0\">\n <span className=\"text-gray-400 text-sm px-1 rounded transition-all cursor-pointer hover:text-gray-600 hover:bg-gray-200\">\n →\n </span>\n </div>\n )}\n </div>\n );\n}\n"],"names":[],"mappings":";;;;AAUO,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;;AACD,QAAM,cACH,KAAK,SAAS,UAAU,KAAK,eAC7B,KAAK,SAAS,UAAU,KAAK,SAC7B,KAAK,SAAS,oBAAoB,KAAK,eACvC,KAAK,SAAS,SAAS,KAAK;AAC/B,QAAM,cAAc,KAAK,SAAS,4BAC/B,QAAA,EAAK,WAAU,oBAAmB,OAAO,KAAK,MAC5C,UAAA,KAAK,KAAA,CACR,IAEA,KAAK;AAGP,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,UAAU;AAAA,MACV;AAAA,MAGA;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA,KAAK,gBAAgB,mBAAmB,mBACtC,CAAC,cACD;AAAA,QACF,cAAc;AAAA,MAAA;AAAA,MAIhB,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA,eAAe;AAAA,YAAA;AAAA,YAGjB,UAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,cAAc,KAAK;AAAA,gBACnB,cAAc,KAAK;AAAA,gBACnB,KAAK,KAAK;AAAA,cAAA;AAAA,YAAA;AAAA,UACZ;AAAA,QAAA;AAAA,QAID,cACC,qBAAC,OAAA,EAAI,WAAU,8CACb,UAAA;AAAA,UAAA,qBAAC,QAAA,EAAK,WAAU,mDACb,UAAA;AAAA,YAAA;AAAA,cACA,UAAK,UAAL,mBAAY,gBACX,oBAAC,QAAA,EAAK,WAAU,wDAAuD;AAAA,cAExE,UAAK,UAAL,mBAAY,uCACV,QAAA,EAAK,WAAU,8EAA6E,UAAA,eAAA,CAE7F;AAAA,UAAA,GAEJ;AAAA,UACA,oBAAC,QAAA,EAAK,WAAU,uDACb,UAAA,KAAK,SAAS,SAAS,KAAK,QAAQ,KAAK,YAAA,CAC5C;AAAA,QAAA,EAAA,CACF,IAEA,qBAAC,QAAA,EAAK,WAAU,6DACb,UAAA;AAAA,UAAA;AAAA,YACA,UAAK,UAAL,mBAAY,gBACX,oBAAC,QAAA,EAAK,WAAU,wDAAuD;AAAA,YAExE,UAAK,UAAL,mBAAY,uCACV,QAAA,EAAK,WAAU,8EAA6E,UAAA,eAAA,CAE7F;AAAA,QAAA,GAEJ;AAAA,QAID,aACC,oBAAC,OAAA,EAAI,WAAU,yCACb,8BAAC,QAAA,EAAK,WAAU,0GAAyG,UAAA,IAAA,CAEzH,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR;"}
|
|
@@ -11,7 +11,7 @@ function MenuList({
|
|
|
11
11
|
isLoading,
|
|
12
12
|
hasMore,
|
|
13
13
|
onSelect,
|
|
14
|
-
|
|
14
|
+
onMouseMove,
|
|
15
15
|
onLoadMore
|
|
16
16
|
}) {
|
|
17
17
|
const selectedRef = react.useRef(null);
|
|
@@ -40,7 +40,7 @@ function MenuList({
|
|
|
40
40
|
{
|
|
41
41
|
item,
|
|
42
42
|
isSelected: index === selectedIndex,
|
|
43
|
-
|
|
43
|
+
onMouseMove: () => onMouseMove(index),
|
|
44
44
|
onClick: () => onSelect(item),
|
|
45
45
|
showArrow: !!item.navigatesToScope
|
|
46
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-list.cjs","sources":["../../../../../src/chat-ui/mentions/suggestions/components/menu-list.tsx"],"sourcesContent":["/**\n * Scrollable list of menu items with loading and empty states.\n */\n\nimport { Fragment, useEffect, useRef } from \"react\";\nimport { MentionMenuSection, type MenuItem } from \"../data/types\";\nimport { MenuItemRow } from \"./menu-item\";\nimport { MenuSkeleton } from \"./menu-skeleton\";\n\nexport function MenuList({\n items,\n selectedIndex,\n isLoading,\n hasMore,\n onSelect,\n
|
|
1
|
+
{"version":3,"file":"menu-list.cjs","sources":["../../../../../src/chat-ui/mentions/suggestions/components/menu-list.tsx"],"sourcesContent":["/**\n * Scrollable list of menu items with loading and empty states.\n */\n\nimport { Fragment, useEffect, useRef } from \"react\";\nimport { MentionMenuSection, type MenuItem } from \"../data/types\";\nimport { MenuItemRow } from \"./menu-item\";\nimport { MenuSkeleton } from \"./menu-skeleton\";\n\nexport function MenuList({\n items,\n selectedIndex,\n isLoading,\n hasMore,\n onSelect,\n onMouseMove,\n onLoadMore,\n}: {\n items: MenuItem[];\n selectedIndex: number;\n isLoading?: boolean;\n hasMore?: boolean;\n onSelect: (item: MenuItem) => void;\n onMouseMove: (index: number) => void;\n onLoadMore?: () => void;\n}) {\n const selectedRef = useRef<HTMLDivElement>(null);\n\n // Auto-scroll selected item into view\n useEffect(() => {\n selectedRef.current?.scrollIntoView({ block: \"nearest\" });\n }, [selectedIndex]);\n\n if (isLoading && items.length === 0) return <MenuSkeleton />;\n\n if (items.length === 0) {\n return (\n <div className=\"px-1 py-1\">\n <div className=\"px-2 py-9 text-center text-sm text-gray-500\">\n <div className=\"mb-1\">No results found</div>\n <div className=\"text-xs text-gray-400\">Try a different search or go back</div>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"px-1 py-1\">\n {items.map((item, index) => {\n const previousSection = items[index - 1]?.menuSection;\n const startsOtherWebpages =\n item.menuSection === MentionMenuSection.OTHER_WEBPAGES &&\n previousSection !== MentionMenuSection.OTHER_WEBPAGES;\n const startsLibrary =\n item.menuSection === MentionMenuSection.LIBRARY &&\n (previousSection === MentionMenuSection.CURRENT_WEBPAGE ||\n previousSection === MentionMenuSection.OTHER_WEBPAGES);\n\n return (\n <Fragment key={item.id}>\n {startsOtherWebpages && (\n <div className=\"px-2 pb-1 pt-2 text-[11px] font-medium uppercase tracking-wide text-gray-400\">\n Other webpages in this group\n </div>\n )}\n {startsLibrary && <div className=\"mx-2 my-1 border-t border-gray-100\" />}\n <div ref={index === selectedIndex ? selectedRef : undefined}>\n <MenuItemRow\n item={item}\n isSelected={index === selectedIndex}\n onMouseMove={() => onMouseMove(index)}\n onClick={() => onSelect(item)}\n showArrow={!!item.navigatesToScope}\n />\n </div>\n </Fragment>\n );\n })}\n\n {/* Loading more indicator */}\n {isLoading && items.length > 0 && (\n <div className=\"px-2 py-2 text-center\">\n <span className=\"text-xs text-gray-400\">Loading more...</span>\n </div>\n )}\n\n {/* Load more sentinel */}\n {hasMore && !isLoading && onLoadMore && (\n <button\n type=\"button\"\n onClick={onLoadMore}\n className=\"w-full px-2 py-1.5 text-xs text-gray-500 hover:text-gray-700 hover:bg-gray-50 rounded transition-colors text-center\"\n >\n ··· Load more\n </button>\n )}\n </div>\n );\n}\n"],"names":["useRef","useEffect","MenuSkeleton","jsxs","jsx","MentionMenuSection","Fragment","MenuItemRow"],"mappings":";;;;;;;AASO,SAAS,SAAS;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAQG;AACD,QAAM,cAAcA,MAAAA,OAAuB,IAAI;AAG/CC,QAAAA,UAAU,MAAM;;AACd,sBAAY,YAAZ,mBAAqB,eAAe,EAAE,OAAO;EAC/C,GAAG,CAAC,aAAa,CAAC;AAElB,MAAI,aAAa,MAAM,WAAW,EAAG,uCAAQC,aAAAA,cAAA,EAAa;AAE1D,MAAI,MAAM,WAAW,GAAG;AACtB,0CACG,OAAA,EAAI,WAAU,aACb,UAAAC,2BAAAA,KAAC,OAAA,EAAI,WAAU,+CACb,UAAA;AAAA,MAAAC,2BAAAA,IAAC,OAAA,EAAI,WAAU,QAAO,UAAA,oBAAgB;AAAA,MACtCA,2BAAAA,IAAC,OAAA,EAAI,WAAU,yBAAwB,UAAA,oCAAA,CAAiC;AAAA,IAAA,EAAA,CAC1E,EAAA,CACF;AAAA,EAEJ;AAEA,SACED,2BAAAA,KAAC,OAAA,EAAI,WAAU,aACZ,UAAA;AAAA,IAAA,MAAM,IAAI,CAAC,MAAM,UAAU;;AAC1B,YAAM,mBAAkB,WAAM,QAAQ,CAAC,MAAf,mBAAkB;AAC1C,YAAM,sBACJ,KAAK,gBAAgBE,MAAAA,mBAAmB,kBACxC,oBAAoBA,MAAAA,mBAAmB;AACzC,YAAM,gBACJ,KAAK,gBAAgBA,MAAAA,mBAAmB,YACvC,oBAAoBA,MAAAA,mBAAmB,mBACtC,oBAAoBA,MAAAA,mBAAmB;AAE3C,6CACGC,gBAAA,EACE,UAAA;AAAA,QAAA,uBACCF,2BAAAA,IAAC,OAAA,EAAI,WAAU,gFAA+E,UAAA,gCAE9F;AAAA,QAED,iBAAiBA,2BAAAA,IAAC,OAAA,EAAI,WAAU,qCAAA,CAAqC;AAAA,uCACrE,OAAA,EAAI,KAAK,UAAU,gBAAgB,cAAc,QAChD,UAAAA,2BAAAA;AAAAA,UAACG,SAAAA;AAAAA,UAAA;AAAA,YACC;AAAA,YACA,YAAY,UAAU;AAAA,YACtB,aAAa,MAAM,YAAY,KAAK;AAAA,YACpC,SAAS,MAAM,SAAS,IAAI;AAAA,YAC5B,WAAW,CAAC,CAAC,KAAK;AAAA,UAAA;AAAA,QAAA,EACpB,CACF;AAAA,MAAA,EAAA,GAfa,KAAK,EAgBpB;AAAA,IAEJ,CAAC;AAAA,IAGA,aAAa,MAAM,SAAS,KAC3BH,2BAAAA,IAAC,OAAA,EAAI,WAAU,yBACb,UAAAA,2BAAAA,IAAC,QAAA,EAAK,WAAU,yBAAwB,6BAAe,GACzD;AAAA,IAID,WAAW,CAAC,aAAa,cACxBA,2BAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAS;AAAA,QACT,WAAU;AAAA,QACX,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAED,GAEJ;AAEJ;;"}
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
* Scrollable list of menu items with loading and empty states.
|
|
3
3
|
*/
|
|
4
4
|
import { type MenuItem } from "../data/types";
|
|
5
|
-
export declare function MenuList({ items, selectedIndex, isLoading, hasMore, onSelect,
|
|
5
|
+
export declare function MenuList({ items, selectedIndex, isLoading, hasMore, onSelect, onMouseMove, onLoadMore, }: {
|
|
6
6
|
items: MenuItem[];
|
|
7
7
|
selectedIndex: number;
|
|
8
8
|
isLoading?: boolean;
|
|
9
9
|
hasMore?: boolean;
|
|
10
10
|
onSelect: (item: MenuItem) => void;
|
|
11
|
-
|
|
11
|
+
onMouseMove: (index: number) => void;
|
|
12
12
|
onLoadMore?: () => void;
|
|
13
13
|
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -9,7 +9,7 @@ function MenuList({
|
|
|
9
9
|
isLoading,
|
|
10
10
|
hasMore,
|
|
11
11
|
onSelect,
|
|
12
|
-
|
|
12
|
+
onMouseMove,
|
|
13
13
|
onLoadMore
|
|
14
14
|
}) {
|
|
15
15
|
const selectedRef = useRef(null);
|
|
@@ -38,7 +38,7 @@ function MenuList({
|
|
|
38
38
|
{
|
|
39
39
|
item,
|
|
40
40
|
isSelected: index === selectedIndex,
|
|
41
|
-
|
|
41
|
+
onMouseMove: () => onMouseMove(index),
|
|
42
42
|
onClick: () => onSelect(item),
|
|
43
43
|
showArrow: !!item.navigatesToScope
|
|
44
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu-list.js","sources":["../../../../../src/chat-ui/mentions/suggestions/components/menu-list.tsx"],"sourcesContent":["/**\n * Scrollable list of menu items with loading and empty states.\n */\n\nimport { Fragment, useEffect, useRef } from \"react\";\nimport { MentionMenuSection, type MenuItem } from \"../data/types\";\nimport { MenuItemRow } from \"./menu-item\";\nimport { MenuSkeleton } from \"./menu-skeleton\";\n\nexport function MenuList({\n items,\n selectedIndex,\n isLoading,\n hasMore,\n onSelect,\n
|
|
1
|
+
{"version":3,"file":"menu-list.js","sources":["../../../../../src/chat-ui/mentions/suggestions/components/menu-list.tsx"],"sourcesContent":["/**\n * Scrollable list of menu items with loading and empty states.\n */\n\nimport { Fragment, useEffect, useRef } from \"react\";\nimport { MentionMenuSection, type MenuItem } from \"../data/types\";\nimport { MenuItemRow } from \"./menu-item\";\nimport { MenuSkeleton } from \"./menu-skeleton\";\n\nexport function MenuList({\n items,\n selectedIndex,\n isLoading,\n hasMore,\n onSelect,\n onMouseMove,\n onLoadMore,\n}: {\n items: MenuItem[];\n selectedIndex: number;\n isLoading?: boolean;\n hasMore?: boolean;\n onSelect: (item: MenuItem) => void;\n onMouseMove: (index: number) => void;\n onLoadMore?: () => void;\n}) {\n const selectedRef = useRef<HTMLDivElement>(null);\n\n // Auto-scroll selected item into view\n useEffect(() => {\n selectedRef.current?.scrollIntoView({ block: \"nearest\" });\n }, [selectedIndex]);\n\n if (isLoading && items.length === 0) return <MenuSkeleton />;\n\n if (items.length === 0) {\n return (\n <div className=\"px-1 py-1\">\n <div className=\"px-2 py-9 text-center text-sm text-gray-500\">\n <div className=\"mb-1\">No results found</div>\n <div className=\"text-xs text-gray-400\">Try a different search or go back</div>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"px-1 py-1\">\n {items.map((item, index) => {\n const previousSection = items[index - 1]?.menuSection;\n const startsOtherWebpages =\n item.menuSection === MentionMenuSection.OTHER_WEBPAGES &&\n previousSection !== MentionMenuSection.OTHER_WEBPAGES;\n const startsLibrary =\n item.menuSection === MentionMenuSection.LIBRARY &&\n (previousSection === MentionMenuSection.CURRENT_WEBPAGE ||\n previousSection === MentionMenuSection.OTHER_WEBPAGES);\n\n return (\n <Fragment key={item.id}>\n {startsOtherWebpages && (\n <div className=\"px-2 pb-1 pt-2 text-[11px] font-medium uppercase tracking-wide text-gray-400\">\n Other webpages in this group\n </div>\n )}\n {startsLibrary && <div className=\"mx-2 my-1 border-t border-gray-100\" />}\n <div ref={index === selectedIndex ? selectedRef : undefined}>\n <MenuItemRow\n item={item}\n isSelected={index === selectedIndex}\n onMouseMove={() => onMouseMove(index)}\n onClick={() => onSelect(item)}\n showArrow={!!item.navigatesToScope}\n />\n </div>\n </Fragment>\n );\n })}\n\n {/* Loading more indicator */}\n {isLoading && items.length > 0 && (\n <div className=\"px-2 py-2 text-center\">\n <span className=\"text-xs text-gray-400\">Loading more...</span>\n </div>\n )}\n\n {/* Load more sentinel */}\n {hasMore && !isLoading && onLoadMore && (\n <button\n type=\"button\"\n onClick={onLoadMore}\n className=\"w-full px-2 py-1.5 text-xs text-gray-500 hover:text-gray-700 hover:bg-gray-50 rounded transition-colors text-center\"\n >\n ··· Load more\n </button>\n )}\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;AASO,SAAS,SAAS;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAQG;AACD,QAAM,cAAc,OAAuB,IAAI;AAG/C,YAAU,MAAM;;AACd,sBAAY,YAAZ,mBAAqB,eAAe,EAAE,OAAO;EAC/C,GAAG,CAAC,aAAa,CAAC;AAElB,MAAI,aAAa,MAAM,WAAW,EAAG,4BAAQ,cAAA,EAAa;AAE1D,MAAI,MAAM,WAAW,GAAG;AACtB,+BACG,OAAA,EAAI,WAAU,aACb,UAAA,qBAAC,OAAA,EAAI,WAAU,+CACb,UAAA;AAAA,MAAA,oBAAC,OAAA,EAAI,WAAU,QAAO,UAAA,oBAAgB;AAAA,MACtC,oBAAC,OAAA,EAAI,WAAU,yBAAwB,UAAA,oCAAA,CAAiC;AAAA,IAAA,EAAA,CAC1E,EAAA,CACF;AAAA,EAEJ;AAEA,SACE,qBAAC,OAAA,EAAI,WAAU,aACZ,UAAA;AAAA,IAAA,MAAM,IAAI,CAAC,MAAM,UAAU;;AAC1B,YAAM,mBAAkB,WAAM,QAAQ,CAAC,MAAf,mBAAkB;AAC1C,YAAM,sBACJ,KAAK,gBAAgB,mBAAmB,kBACxC,oBAAoB,mBAAmB;AACzC,YAAM,gBACJ,KAAK,gBAAgB,mBAAmB,YACvC,oBAAoB,mBAAmB,mBACtC,oBAAoB,mBAAmB;AAE3C,kCACG,UAAA,EACE,UAAA;AAAA,QAAA,uBACC,oBAAC,OAAA,EAAI,WAAU,gFAA+E,UAAA,gCAE9F;AAAA,QAED,iBAAiB,oBAAC,OAAA,EAAI,WAAU,qCAAA,CAAqC;AAAA,4BACrE,OAAA,EAAI,KAAK,UAAU,gBAAgB,cAAc,QAChD,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC;AAAA,YACA,YAAY,UAAU;AAAA,YACtB,aAAa,MAAM,YAAY,KAAK;AAAA,YACpC,SAAS,MAAM,SAAS,IAAI;AAAA,YAC5B,WAAW,CAAC,CAAC,KAAK;AAAA,UAAA;AAAA,QAAA,EACpB,CACF;AAAA,MAAA,EAAA,GAfa,KAAK,EAgBpB;AAAA,IAEJ,CAAC;AAAA,IAGA,aAAa,MAAM,SAAS,KAC3B,oBAAC,OAAA,EAAI,WAAU,yBACb,UAAA,oBAAC,QAAA,EAAK,WAAU,yBAAwB,6BAAe,GACzD;AAAA,IAID,WAAW,CAAC,aAAa,cACxB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAS;AAAA,QACT,WAAU;AAAA,QACX,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAED,GAEJ;AAEJ;"}
|
|
@@ -18,7 +18,8 @@ function useMentionAuth() {
|
|
|
18
18
|
async function fetchGraphQL(auth, query, variables = {}) {
|
|
19
19
|
var _a;
|
|
20
20
|
const url = `${auth.backendUrl.replace(/\/+$/, "")}/graphql`;
|
|
21
|
-
const {
|
|
21
|
+
const requestAuth = auth.getAccessToken ? { ...auth, accessToken: await auth.getAccessToken() } : auth;
|
|
22
|
+
const { headers, credentials } = mentionRequestInit(requestAuth);
|
|
22
23
|
const response = await fetch(url, {
|
|
23
24
|
method: "POST",
|
|
24
25
|
headers: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.cjs","sources":["../../../../../src/chat-ui/mentions/suggestions/data/api-client.ts"],"sourcesContent":["/**\n * API client for mention data fetching.\n *\n * Wraps raw fetch() with GraphQL support. Hosts authenticate with either a\n * bearer token
|
|
1
|
+
{"version":3,"file":"api-client.cjs","sources":["../../../../../src/chat-ui/mentions/suggestions/data/api-client.ts"],"sourcesContent":["/**\n * API client for mention data fetching.\n *\n * Wraps raw fetch() with GraphQL support. Hosts authenticate with either a\n * bearer token or a workspace API key; agora's /graphql accepts both.\n */\n\nimport { createContext, useContext } from \"react\";\n\n// ── Auth context ──\n\nexport interface MentionAuthContext {\n backendUrl: string;\n appUrl?: string;\n /** Bearer credential; hosts without one authenticate with `apiKey`. */\n accessToken?: string;\n /** Resolve a current bearer before each query (for rotating Office sessions). */\n getAccessToken?: () => Promise<string>;\n apiKey?: string;\n /**\n * With neither credential, ride the browser's same-origin session cookie\n * instead of failing — the SDK's AthenaChat, whose REST helpers make the\n * same choice for a host that configured no token and no API key. Hosts\n * that always hold a credential leave this unset so an accidental anonymous\n * query fails loudly.\n */\n credentials?: \"include\";\n workspaceId?: string;\n userId?: string;\n}\n\n/** Credential headers (or the cookie lane) for a mention fetch. */\nexport function mentionRequestInit(\n auth: MentionAuthContext,\n): Pick<RequestInit, \"headers\" | \"credentials\"> {\n if (auth.accessToken) {\n return { headers: { Authorization: `Bearer ${auth.accessToken}` } };\n }\n if (auth.apiKey) return { headers: { \"X-API-KEY\": auth.apiKey } };\n if (auth.credentials) return { headers: {}, credentials: auth.credentials };\n throw new Error(\"MentionAuthCtx needs either an accessToken or an apiKey\");\n}\n\nexport const MentionAuthCtx = createContext<MentionAuthContext | null>(null);\n\nexport function useMentionAuth(): MentionAuthContext {\n const ctx = useContext(MentionAuthCtx);\n if (!ctx) throw new Error(\"MentionAuthCtx not provided\");\n return ctx;\n}\n\n// ── GraphQL client ──\n\nexport async function fetchGraphQL<T = any>(\n auth: MentionAuthContext,\n query: string,\n variables: Record<string, any> = {},\n): Promise<T> {\n const url = `${auth.backendUrl.replace(/\\/+$/, \"\")}/graphql`;\n const requestAuth = auth.getAccessToken\n ? { ...auth, accessToken: await auth.getAccessToken() }\n : auth;\n const { headers, credentials } = mentionRequestInit(requestAuth);\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...headers,\n },\n ...(credentials ? { credentials } : {}),\n body: JSON.stringify({ query, variables }),\n });\n\n if (!response.ok) {\n throw new Error(`GraphQL HTTP ${response.status}: ${response.statusText}`);\n }\n\n const result = await response.json();\n if (result.errors?.length) {\n throw new Error(`GraphQL error: ${result.errors[0].message}`);\n }\n\n return result.data as T;\n}\n\n// ── GraphQL Queries ──\n\n/**\n * Lightweight asset fragment for mention menu items.\n * Only fetches fields needed for display + navigation.\n */\nconst MENTION_ASSET_FIELDS = `\n id\n title\n athenaOriginalType\n athenaConvertedType\n parentFolderId\n updatedAt\n isFavorited\n isArchived\n isHidden\n`;\n\nexport const SIMPLE_SEARCH_QUERY = `\n query SimpleSearch($input: SimpleSearchRequestInput!) {\n simpleSearch(input: $input) {\n assets {\n ${MENTION_ASSET_FIELDS}\n }\n totalCount\n }\n }\n`;\n\nexport const PAGINATED_ASSETS_QUERY = `\n query GetPaginatedAssetsForWorkspace(\n $limit: Int!\n $offset: Int!\n $parentFolderId: String\n $filterTypes: [String!]\n $filterColumns: ColumnFilter\n ) {\n getPaginatedAssetsForWorkspace(\n limit: $limit\n offset: $offset\n parentFolderId: $parentFolderId\n filterTypes: $filterTypes\n filterColumns: $filterColumns\n ) {\n ${MENTION_ASSET_FIELDS}\n }\n }\n`;\n\nexport const WORKSPACE_MEMBERS_QUERY = `\n query GetUsersInWorkspace($workspaceId: String!) {\n getUsersInWorkspace(workspaceId: $workspaceId) {\n id\n email\n firstName\n lastName\n isAdmin\n avatarUrl\n }\n }\n`;\n\nexport const TOOL_CATALOG_QUERY = `\n query MentionToolCatalog {\n getToolkitToToolsMapping {\n tools {\n id\n name\n description\n icon\n adminOnly\n isMentionable\n }\n toolkits {\n name\n displayName\n description\n icon\n onlyAdmin\n hideFromMenu\n isMentionable\n }\n }\n }\n`;\n\n// ── Response types ──\n\nexport interface ToolCatalogTool {\n id: string;\n name: string;\n description: string | null;\n icon: string;\n adminOnly: boolean;\n isMentionable: boolean;\n}\n\nexport interface ToolCatalogToolkit {\n name: string;\n displayName: string;\n description: string;\n icon: string;\n onlyAdmin: boolean;\n hideFromMenu: boolean;\n isMentionable: boolean;\n}\n\nexport interface ToolCatalogResult {\n getToolkitToToolsMapping: {\n tools: ToolCatalogTool[];\n toolkits: ToolCatalogToolkit[];\n };\n}\n\nexport interface AssetResult {\n id: string;\n title: string | null;\n athenaOriginalType: string | null;\n athenaConvertedType: string | null;\n parentFolderId: string | null;\n updatedAt: string | null;\n isFavorited: boolean | null;\n isArchived: boolean | null;\n isHidden: boolean | null;\n}\n\nexport interface WorkspaceMember {\n id: string;\n email: string | null;\n firstName: string | null;\n lastName: string | null;\n isAdmin: boolean;\n avatarUrl: string | null;\n}\n"],"names":["createContext","useContext"],"mappings":";;;AAgCO,SAAS,mBACd,MAC8C;AAC9C,MAAI,KAAK,aAAa;AACpB,WAAO,EAAE,SAAS,EAAE,eAAe,UAAU,KAAK,WAAW,KAAG;AAAA,EAClE;AACA,MAAI,KAAK,OAAQ,QAAO,EAAE,SAAS,EAAE,aAAa,KAAK,SAAO;AAC9D,MAAI,KAAK,YAAa,QAAO,EAAE,SAAS,CAAA,GAAI,aAAa,KAAK,YAAA;AAC9D,QAAM,IAAI,MAAM,yDAAyD;AAC3E;AAEO,MAAM,iBAAiBA,MAAAA,cAAyC,IAAI;AAEpE,SAAS,iBAAqC;AACnD,QAAM,MAAMC,MAAAA,WAAW,cAAc;AACrC,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM,6BAA6B;AACvD,SAAO;AACT;AAIA,eAAsB,aACpB,MACA,OACA,YAAiC,CAAA,GACrB;;AACZ,QAAM,MAAM,GAAG,KAAK,WAAW,QAAQ,QAAQ,EAAE,CAAC;AAClD,QAAM,cAAc,KAAK,iBACrB,EAAE,GAAG,MAAM,aAAa,MAAM,KAAK,eAAA,EAAe,IAClD;AACJ,QAAM,EAAE,SAAS,gBAAgB,mBAAmB,WAAW;AAC/D,QAAM,WAAW,MAAM,MAAM,KAAK;AAAA,IAChC,QAAQ;AAAA,IACR,SAAS;AAAA,MACP,gBAAgB;AAAA,MAChB,GAAG;AAAA,IAAA;AAAA,IAEL,GAAI,cAAc,EAAE,YAAA,IAAgB,CAAA;AAAA,IACpC,MAAM,KAAK,UAAU,EAAE,OAAO,WAAW;AAAA,EAAA,CAC1C;AAED,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,IAAI,MAAM,gBAAgB,SAAS,MAAM,KAAK,SAAS,UAAU,EAAE;AAAA,EAC3E;AAEA,QAAM,SAAS,MAAM,SAAS,KAAA;AAC9B,OAAI,YAAO,WAAP,mBAAe,QAAQ;AACzB,UAAM,IAAI,MAAM,kBAAkB,OAAO,OAAO,CAAC,EAAE,OAAO,EAAE;AAAA,EAC9D;AAEA,SAAO,OAAO;AAChB;AAQA,MAAM,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYtB,MAAM,sBAAsB;AAAA;AAAA;AAAA;AAAA,UAIzB,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAOvB,MAAM,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAe9B,oBAAoB;AAAA;AAAA;AAAA;AAKrB,MAAM,0BAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAahC,MAAM,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;"}
|
|
@@ -2,14 +2,15 @@
|
|
|
2
2
|
* API client for mention data fetching.
|
|
3
3
|
*
|
|
4
4
|
* Wraps raw fetch() with GraphQL support. Hosts authenticate with either a
|
|
5
|
-
* bearer token
|
|
6
|
-
* add-in); agora's /graphql accepts both.
|
|
5
|
+
* bearer token or a workspace API key; agora's /graphql accepts both.
|
|
7
6
|
*/
|
|
8
7
|
export interface MentionAuthContext {
|
|
9
8
|
backendUrl: string;
|
|
10
9
|
appUrl?: string;
|
|
11
10
|
/** Bearer credential; hosts without one authenticate with `apiKey`. */
|
|
12
11
|
accessToken?: string;
|
|
12
|
+
/** Resolve a current bearer before each query (for rotating Office sessions). */
|
|
13
|
+
getAccessToken?: () => Promise<string>;
|
|
13
14
|
apiKey?: string;
|
|
14
15
|
/**
|
|
15
16
|
* With neither credential, ride the browser's same-origin session cookie
|
|
@@ -16,7 +16,8 @@ function useMentionAuth() {
|
|
|
16
16
|
async function fetchGraphQL(auth, query, variables = {}) {
|
|
17
17
|
var _a;
|
|
18
18
|
const url = `${auth.backendUrl.replace(/\/+$/, "")}/graphql`;
|
|
19
|
-
const {
|
|
19
|
+
const requestAuth = auth.getAccessToken ? { ...auth, accessToken: await auth.getAccessToken() } : auth;
|
|
20
|
+
const { headers, credentials } = mentionRequestInit(requestAuth);
|
|
20
21
|
const response = await fetch(url, {
|
|
21
22
|
method: "POST",
|
|
22
23
|
headers: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sources":["../../../../../src/chat-ui/mentions/suggestions/data/api-client.ts"],"sourcesContent":["/**\n * API client for mention data fetching.\n *\n * Wraps raw fetch() with GraphQL support. Hosts authenticate with either a\n * bearer token
|
|
1
|
+
{"version":3,"file":"api-client.js","sources":["../../../../../src/chat-ui/mentions/suggestions/data/api-client.ts"],"sourcesContent":["/**\n * API client for mention data fetching.\n *\n * Wraps raw fetch() with GraphQL support. Hosts authenticate with either a\n * bearer token or a workspace API key; agora's /graphql accepts both.\n */\n\nimport { createContext, useContext } from \"react\";\n\n// ── Auth context ──\n\nexport interface MentionAuthContext {\n backendUrl: string;\n appUrl?: string;\n /** Bearer credential; hosts without one authenticate with `apiKey`. */\n accessToken?: string;\n /** Resolve a current bearer before each query (for rotating Office sessions). */\n getAccessToken?: () => Promise<string>;\n apiKey?: string;\n /**\n * With neither credential, ride the browser's same-origin session cookie\n * instead of failing — the SDK's AthenaChat, whose REST helpers make the\n * same choice for a host that configured no token and no API key. Hosts\n * that always hold a credential leave this unset so an accidental anonymous\n * query fails loudly.\n */\n credentials?: \"include\";\n workspaceId?: string;\n userId?: string;\n}\n\n/** Credential headers (or the cookie lane) for a mention fetch. */\nexport function mentionRequestInit(\n auth: MentionAuthContext,\n): Pick<RequestInit, \"headers\" | \"credentials\"> {\n if (auth.accessToken) {\n return { headers: { Authorization: `Bearer ${auth.accessToken}` } };\n }\n if (auth.apiKey) return { headers: { \"X-API-KEY\": auth.apiKey } };\n if (auth.credentials) return { headers: {}, credentials: auth.credentials };\n throw new Error(\"MentionAuthCtx needs either an accessToken or an apiKey\");\n}\n\nexport const MentionAuthCtx = createContext<MentionAuthContext | null>(null);\n\nexport function useMentionAuth(): MentionAuthContext {\n const ctx = useContext(MentionAuthCtx);\n if (!ctx) throw new Error(\"MentionAuthCtx not provided\");\n return ctx;\n}\n\n// ── GraphQL client ──\n\nexport async function fetchGraphQL<T = any>(\n auth: MentionAuthContext,\n query: string,\n variables: Record<string, any> = {},\n): Promise<T> {\n const url = `${auth.backendUrl.replace(/\\/+$/, \"\")}/graphql`;\n const requestAuth = auth.getAccessToken\n ? { ...auth, accessToken: await auth.getAccessToken() }\n : auth;\n const { headers, credentials } = mentionRequestInit(requestAuth);\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...headers,\n },\n ...(credentials ? { credentials } : {}),\n body: JSON.stringify({ query, variables }),\n });\n\n if (!response.ok) {\n throw new Error(`GraphQL HTTP ${response.status}: ${response.statusText}`);\n }\n\n const result = await response.json();\n if (result.errors?.length) {\n throw new Error(`GraphQL error: ${result.errors[0].message}`);\n }\n\n return result.data as T;\n}\n\n// ── GraphQL Queries ──\n\n/**\n * Lightweight asset fragment for mention menu items.\n * Only fetches fields needed for display + navigation.\n */\nconst MENTION_ASSET_FIELDS = `\n id\n title\n athenaOriginalType\n athenaConvertedType\n parentFolderId\n updatedAt\n isFavorited\n isArchived\n isHidden\n`;\n\nexport const SIMPLE_SEARCH_QUERY = `\n query SimpleSearch($input: SimpleSearchRequestInput!) {\n simpleSearch(input: $input) {\n assets {\n ${MENTION_ASSET_FIELDS}\n }\n totalCount\n }\n }\n`;\n\nexport const PAGINATED_ASSETS_QUERY = `\n query GetPaginatedAssetsForWorkspace(\n $limit: Int!\n $offset: Int!\n $parentFolderId: String\n $filterTypes: [String!]\n $filterColumns: ColumnFilter\n ) {\n getPaginatedAssetsForWorkspace(\n limit: $limit\n offset: $offset\n parentFolderId: $parentFolderId\n filterTypes: $filterTypes\n filterColumns: $filterColumns\n ) {\n ${MENTION_ASSET_FIELDS}\n }\n }\n`;\n\nexport const WORKSPACE_MEMBERS_QUERY = `\n query GetUsersInWorkspace($workspaceId: String!) {\n getUsersInWorkspace(workspaceId: $workspaceId) {\n id\n email\n firstName\n lastName\n isAdmin\n avatarUrl\n }\n }\n`;\n\nexport const TOOL_CATALOG_QUERY = `\n query MentionToolCatalog {\n getToolkitToToolsMapping {\n tools {\n id\n name\n description\n icon\n adminOnly\n isMentionable\n }\n toolkits {\n name\n displayName\n description\n icon\n onlyAdmin\n hideFromMenu\n isMentionable\n }\n }\n }\n`;\n\n// ── Response types ──\n\nexport interface ToolCatalogTool {\n id: string;\n name: string;\n description: string | null;\n icon: string;\n adminOnly: boolean;\n isMentionable: boolean;\n}\n\nexport interface ToolCatalogToolkit {\n name: string;\n displayName: string;\n description: string;\n icon: string;\n onlyAdmin: boolean;\n hideFromMenu: boolean;\n isMentionable: boolean;\n}\n\nexport interface ToolCatalogResult {\n getToolkitToToolsMapping: {\n tools: ToolCatalogTool[];\n toolkits: ToolCatalogToolkit[];\n };\n}\n\nexport interface AssetResult {\n id: string;\n title: string | null;\n athenaOriginalType: string | null;\n athenaConvertedType: string | null;\n parentFolderId: string | null;\n updatedAt: string | null;\n isFavorited: boolean | null;\n isArchived: boolean | null;\n isHidden: boolean | null;\n}\n\nexport interface WorkspaceMember {\n id: string;\n email: string | null;\n firstName: string | null;\n lastName: string | null;\n isAdmin: boolean;\n avatarUrl: string | null;\n}\n"],"names":[],"mappings":";AAgCO,SAAS,mBACd,MAC8C;AAC9C,MAAI,KAAK,aAAa;AACpB,WAAO,EAAE,SAAS,EAAE,eAAe,UAAU,KAAK,WAAW,KAAG;AAAA,EAClE;AACA,MAAI,KAAK,OAAQ,QAAO,EAAE,SAAS,EAAE,aAAa,KAAK,SAAO;AAC9D,MAAI,KAAK,YAAa,QAAO,EAAE,SAAS,CAAA,GAAI,aAAa,KAAK,YAAA;AAC9D,QAAM,IAAI,MAAM,yDAAyD;AAC3E;AAEO,MAAM,iBAAiB,cAAyC,IAAI;AAEpE,SAAS,iBAAqC;AACnD,QAAM,MAAM,WAAW,cAAc;AACrC,MAAI,CAAC,IAAK,OAAM,IAAI,MAAM,6BAA6B;AACvD,SAAO;AACT;AAIA,eAAsB,aACpB,MACA,OACA,YAAiC,CAAA,GACrB;;AACZ,QAAM,MAAM,GAAG,KAAK,WAAW,QAAQ,QAAQ,EAAE,CAAC;AAClD,QAAM,cAAc,KAAK,iBACrB,EAAE,GAAG,MAAM,aAAa,MAAM,KAAK,eAAA,EAAe,IAClD;AACJ,QAAM,EAAE,SAAS,gBAAgB,mBAAmB,WAAW;AAC/D,QAAM,WAAW,MAAM,MAAM,KAAK;AAAA,IAChC,QAAQ;AAAA,IACR,SAAS;AAAA,MACP,gBAAgB;AAAA,MAChB,GAAG;AAAA,IAAA;AAAA,IAEL,GAAI,cAAc,EAAE,YAAA,IAAgB,CAAA;AAAA,IACpC,MAAM,KAAK,UAAU,EAAE,OAAO,WAAW;AAAA,EAAA,CAC1C;AAED,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,IAAI,MAAM,gBAAgB,SAAS,MAAM,KAAK,SAAS,UAAU,EAAE;AAAA,EAC3E;AAEA,QAAM,SAAS,MAAM,SAAS,KAAA;AAC9B,OAAI,YAAO,WAAP,mBAAe,QAAQ;AACzB,UAAM,IAAI,MAAM,kBAAkB,OAAO,OAAO,CAAC,EAAE,OAAO,EAAE;AAAA,EAC9D;AAEA,SAAO,OAAO;AAChB;AAQA,MAAM,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYtB,MAAM,sBAAsB;AAAA;AAAA;AAAA;AAAA,UAIzB,oBAAoB;AAAA;AAAA;AAAA;AAAA;AAAA;AAOvB,MAAM,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAe9B,oBAAoB;AAAA;AAAA;AAAA;AAKrB,MAAM,0BAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAahC,MAAM,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
|
|
@@ -25,13 +25,10 @@ const ASSET_TYPE_ICON_FILE = {
|
|
|
25
25
|
image: "ic-img",
|
|
26
26
|
audio: "ic-audio",
|
|
27
27
|
video: "ic-video",
|
|
28
|
-
voice_memo: "ic-
|
|
28
|
+
voice_memo: "ic-voice_memo",
|
|
29
29
|
// Presentations
|
|
30
|
-
presentation: "ic-power_point",
|
|
31
|
-
office_presentation: "ic-power_point",
|
|
32
30
|
powerpoint_deck: "ic-power_point",
|
|
33
31
|
presentation_pptx_studio: "ic-power_point",
|
|
34
|
-
presentation_onlyoffice: "ic-power_point",
|
|
35
32
|
pptx: "ic-power_point",
|
|
36
33
|
// Email & Calendar
|
|
37
34
|
email: "ic-mail",
|
|
@@ -81,14 +78,16 @@ const ASSET_TYPE_ICON_FILE = {
|
|
|
81
78
|
browse_profile: "ic-profile",
|
|
82
79
|
// Workflows & Automation
|
|
83
80
|
aop: "ic-flow",
|
|
84
|
-
playbook: "ic-
|
|
81
|
+
playbook: "ic-playbook",
|
|
82
|
+
policy: "ic-policy",
|
|
85
83
|
flow: "ic-flow",
|
|
86
|
-
transform_project: "ic-
|
|
84
|
+
transform_project: "ic-transform_project",
|
|
87
85
|
// Collections & Notebooks
|
|
88
86
|
collection: "ic-collection",
|
|
89
87
|
notebook: "ic-notebook",
|
|
90
88
|
// UI & Apps
|
|
91
89
|
user_interface: "ic-app",
|
|
90
|
+
application: "ic-application",
|
|
92
91
|
canvas: "ic-canvas",
|
|
93
92
|
dashboard: "ic-dashboard",
|
|
94
93
|
figure: "ic_figure",
|
|
@@ -97,6 +96,7 @@ const ASSET_TYPE_ICON_FILE = {
|
|
|
97
96
|
company: "ic-company",
|
|
98
97
|
// Misc
|
|
99
98
|
prompt: "ic-ai",
|
|
99
|
+
skill: "ic-skill",
|
|
100
100
|
task_item: "ic-task",
|
|
101
101
|
spaces: "ic-spaces",
|
|
102
102
|
secret: "ic-secret",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset-type-icons.cjs","sources":["../../../../../../src/chat-ui/mentions/suggestions/data/sources/asset-type-icons.ts"],"sourcesContent":["/**\n * Maps Athena asset types to SVG icon file names.\n *\n * The SVG files are bundled by the host app, which declares where they are\n * served from via `configureAssetIconBasePath`. Hosts that don't bundle them\n * fall back to the Lucide icons carried on every menu item.\n */\n\nlet iconBasePath: string | null = null;\n\n/**\n * Point the mention UI at the host's copy of the asset-type SVGs.\n * `basePath` is resolved against the host document; a trailing \"/\" is added\n * when the caller omits it.\n */\nexport function configureAssetIconBasePath({\n basePath,\n}: {\n basePath: string | null;\n}): void {\n iconBasePath = basePath ? basePath.replace(/\\/*$/, \"/\") : basePath;\n}\n\nconst ASSET_TYPE_ICON_FILE: Record<string, string> = {\n // Documents\n folder: \"ic-folder\",\n txt: \"ic-txt\",\n document: \"ic-word\",\n word_document: \"ic-word\",\n markdown: \"ic-md\",\n pdf: \"ic-pdf\",\n html: \"ic-html\",\n web_page: \"ic-html\",\n yaml: \"ic-yaml\",\n json: \"ic-json\",\n\n // Spreadsheets\n spreadsheet: \"ic-excel\",\n table: \"ic-table\",\n\n // Media\n image: \"ic-img\",\n audio: \"ic-audio\",\n video: \"ic-video\",\n voice_memo: \"ic-
|
|
1
|
+
{"version":3,"file":"asset-type-icons.cjs","sources":["../../../../../../src/chat-ui/mentions/suggestions/data/sources/asset-type-icons.ts"],"sourcesContent":["/**\n * Maps Athena asset types to SVG icon file names.\n *\n * The SVG files are bundled by the host app, which declares where they are\n * served from via `configureAssetIconBasePath`. Hosts that don't bundle them\n * fall back to the Lucide icons carried on every menu item.\n */\n\nlet iconBasePath: string | null = null;\n\n/**\n * Point the mention UI at the host's copy of the asset-type SVGs.\n * `basePath` is resolved against the host document; a trailing \"/\" is added\n * when the caller omits it.\n */\nexport function configureAssetIconBasePath({\n basePath,\n}: {\n basePath: string | null;\n}): void {\n iconBasePath = basePath ? basePath.replace(/\\/*$/, \"/\") : basePath;\n}\n\nconst ASSET_TYPE_ICON_FILE: Record<string, string> = {\n // Documents\n folder: \"ic-folder\",\n txt: \"ic-txt\",\n document: \"ic-word\",\n word_document: \"ic-word\",\n markdown: \"ic-md\",\n pdf: \"ic-pdf\",\n html: \"ic-html\",\n web_page: \"ic-html\",\n yaml: \"ic-yaml\",\n json: \"ic-json\",\n\n // Spreadsheets\n spreadsheet: \"ic-excel\",\n table: \"ic-table\",\n\n // Media\n image: \"ic-img\",\n audio: \"ic-audio\",\n video: \"ic-video\",\n voice_memo: \"ic-voice_memo\",\n\n // Presentations\n powerpoint_deck: \"ic-power_point\",\n presentation_pptx_studio: \"ic-power_point\",\n pptx: \"ic-power_point\",\n\n // Email & Calendar\n email: \"ic-mail\",\n email_message: \"ic-mail\",\n live_email_thread: \"ic-mail\",\n live_calendar_event: \"ic-mail\",\n\n // Code\n python: \"ic-py\",\n javascript: \"ic-js\",\n typescript: \"ic-code\",\n jsx: \"ic-code\",\n tsx: \"ic-code\",\n css: \"ic-code\",\n java: \"ic-code\",\n c: \"ic-code\",\n cpp: \"ic-code\",\n csharp: \"ic-code\",\n ruby: \"ic-code\",\n go: \"ic-code\",\n swift: \"ic-code\",\n php: \"ic-code\",\n rust: \"ic-code\",\n vue: \"ic-code\",\n wm_script: \"ic-code\",\n\n // Structured data\n database: \"ic-snippet\",\n schema: \"ic-schema\",\n catalog: \"ic-db\",\n drive: \"ic-db\",\n query_snippet: \"ic-snippet\",\n semantic_query: \"ic-snippet\",\n semantic_model: \"ic-db\",\n dataset: \"ic-db\",\n\n // Meetings & Calls\n meeting: \"ic-meeting\",\n video_session: \"ic-meeting\",\n phone_call: \"ic-phonecall\",\n\n // Sessions & Devices\n session: \"ic-session\",\n browse_session: \"ic-html\",\n virtual_machine: \"ic-html\",\n computer: \"ic-computer\",\n desktop_session: \"ic-desktop_session\",\n mobile_session: \"ic-mobile_session\",\n\n // Projects & Profiles\n project: \"ic-project\",\n browse_profile: \"ic-profile\",\n\n // Workflows & Automation\n aop: \"ic-flow\",\n playbook: \"ic-playbook\",\n policy: \"ic-policy\",\n flow: \"ic-flow\",\n transform_project: \"ic-transform_project\",\n\n // Collections & Notebooks\n collection: \"ic-collection\",\n notebook: \"ic-notebook\",\n\n // UI & Apps\n user_interface: \"ic-app\",\n application: \"ic-application\",\n canvas: \"ic-canvas\",\n dashboard: \"ic-dashboard\",\n figure: \"ic_figure\",\n\n // People & Companies\n person: \"ic-person\",\n company: \"ic-company\",\n\n // Misc\n prompt: \"ic-ai\",\n skill: \"ic-skill\",\n task_item: \"ic-task\",\n spaces: \"ic-spaces\",\n secret: \"ic-secret\",\n photoshop: \"ic-pts\",\n illustrator: \"ic-ai\",\n zip: \"ic-zip\",\n sevenzip: \"ic-zip\",\n\n // Google Drive / SharePoint / Salesforce\n gdrive_folder: \"ic-folder\",\n gdrive_file: \"ic-file\",\n salesforce_record: \"ic-db\",\n salesforce_file: \"ic-db\",\n};\n\nconst ASSET_TYPE_LUCIDE_FALLBACK: Record<string, string> = {\n folder: \"folder\",\n spreadsheet: \"sheet\",\n image: \"image\",\n video: \"video\",\n audio: \"headphones\",\n email: \"mail\",\n database: \"database\",\n project: \"folder-kanban\",\n meeting: \"video\",\n user_interface: \"layout\",\n};\n\n/**\n * Get the SVG thumbnail URL for an Athena asset type, or undefined when the\n * host app does not bundle the icon files.\n */\nexport function assetTypeToThumb(\n assetType: string | null | undefined,\n): string | undefined {\n if (!iconBasePath) return undefined;\n const name: string =\n (assetType ? ASSET_TYPE_ICON_FILE[assetType.toLowerCase()] : undefined) ??\n \"ic-file\";\n return `${iconBasePath}${name}.svg`;\n}\n\n/**\n * Get Lucide icon name fallback for an asset type.\n * Used when thumbnailUrl can't load.\n */\nexport function assetTypeToIcon(assetType: string | null | undefined): string {\n if (!assetType) return \"file\";\n return ASSET_TYPE_LUCIDE_FALLBACK[assetType.toLowerCase()] ?? \"file\";\n}\n"],"names":[],"mappings":";;AAQA,IAAI,eAA8B;AAO3B,SAAS,2BAA2B;AAAA,EACzC;AACF,GAES;AACP,iBAAe,WAAW,SAAS,QAAQ,QAAQ,GAAG,IAAI;AAC5D;AAEA,MAAM,uBAA+C;AAAA;AAAA,EAEnD,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,UAAU;AAAA,EACV,eAAe;AAAA,EACf,UAAU;AAAA,EACV,KAAK;AAAA,EACL,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,MAAM;AAAA;AAAA,EAGN,aAAa;AAAA,EACb,OAAO;AAAA;AAAA,EAGP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,YAAY;AAAA;AAAA,EAGZ,iBAAiB;AAAA,EACjB,0BAA0B;AAAA,EAC1B,MAAM;AAAA;AAAA,EAGN,OAAO;AAAA,EACP,eAAe;AAAA,EACf,mBAAmB;AAAA,EACnB,qBAAqB;AAAA;AAAA,EAGrB,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,MAAM;AAAA,EACN,GAAG;AAAA,EACH,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,KAAK;AAAA,EACL,MAAM;AAAA,EACN,KAAK;AAAA,EACL,WAAW;AAAA;AAAA,EAGX,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,OAAO;AAAA,EACP,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,SAAS;AAAA;AAAA,EAGT,SAAS;AAAA,EACT,eAAe;AAAA,EACf,YAAY;AAAA;AAAA,EAGZ,SAAS;AAAA,EACT,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,gBAAgB;AAAA;AAAA,EAGhB,SAAS;AAAA,EACT,gBAAgB;AAAA;AAAA,EAGhB,KAAK;AAAA,EACL,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,mBAAmB;AAAA;AAAA,EAGnB,YAAY;AAAA,EACZ,UAAU;AAAA;AAAA,EAGV,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,QAAQ;AAAA;AAAA,EAGR,QAAQ;AAAA,EACR,SAAS;AAAA;AAAA,EAGT,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,aAAa;AAAA,EACb,KAAK;AAAA,EACL,UAAU;AAAA;AAAA,EAGV,eAAe;AAAA,EACf,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,iBAAiB;AACnB;AAEA,MAAM,6BAAqD;AAAA,EACzD,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,UAAU;AAAA,EACV,SAAS;AAAA,EACT,SAAS;AAAA,EACT,gBAAgB;AAClB;AAMO,SAAS,iBACd,WACoB;AACpB,MAAI,CAAC,aAAc,QAAO;AAC1B,QAAM,QACH,YAAY,qBAAqB,UAAU,YAAA,CAAa,IAAI,WAC7D;AACF,SAAO,GAAG,YAAY,GAAG,IAAI;AAC/B;AAMO,SAAS,gBAAgB,WAA8C;AAC5E,MAAI,CAAC,UAAW,QAAO;AACvB,SAAO,2BAA2B,UAAU,YAAA,CAAa,KAAK;AAChE;;;;"}
|
|
@@ -23,13 +23,10 @@ const ASSET_TYPE_ICON_FILE = {
|
|
|
23
23
|
image: "ic-img",
|
|
24
24
|
audio: "ic-audio",
|
|
25
25
|
video: "ic-video",
|
|
26
|
-
voice_memo: "ic-
|
|
26
|
+
voice_memo: "ic-voice_memo",
|
|
27
27
|
// Presentations
|
|
28
|
-
presentation: "ic-power_point",
|
|
29
|
-
office_presentation: "ic-power_point",
|
|
30
28
|
powerpoint_deck: "ic-power_point",
|
|
31
29
|
presentation_pptx_studio: "ic-power_point",
|
|
32
|
-
presentation_onlyoffice: "ic-power_point",
|
|
33
30
|
pptx: "ic-power_point",
|
|
34
31
|
// Email & Calendar
|
|
35
32
|
email: "ic-mail",
|
|
@@ -79,14 +76,16 @@ const ASSET_TYPE_ICON_FILE = {
|
|
|
79
76
|
browse_profile: "ic-profile",
|
|
80
77
|
// Workflows & Automation
|
|
81
78
|
aop: "ic-flow",
|
|
82
|
-
playbook: "ic-
|
|
79
|
+
playbook: "ic-playbook",
|
|
80
|
+
policy: "ic-policy",
|
|
83
81
|
flow: "ic-flow",
|
|
84
|
-
transform_project: "ic-
|
|
82
|
+
transform_project: "ic-transform_project",
|
|
85
83
|
// Collections & Notebooks
|
|
86
84
|
collection: "ic-collection",
|
|
87
85
|
notebook: "ic-notebook",
|
|
88
86
|
// UI & Apps
|
|
89
87
|
user_interface: "ic-app",
|
|
88
|
+
application: "ic-application",
|
|
90
89
|
canvas: "ic-canvas",
|
|
91
90
|
dashboard: "ic-dashboard",
|
|
92
91
|
figure: "ic_figure",
|
|
@@ -95,6 +94,7 @@ const ASSET_TYPE_ICON_FILE = {
|
|
|
95
94
|
company: "ic-company",
|
|
96
95
|
// Misc
|
|
97
96
|
prompt: "ic-ai",
|
|
97
|
+
skill: "ic-skill",
|
|
98
98
|
task_item: "ic-task",
|
|
99
99
|
spaces: "ic-spaces",
|
|
100
100
|
secret: "ic-secret",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset-type-icons.js","sources":["../../../../../../src/chat-ui/mentions/suggestions/data/sources/asset-type-icons.ts"],"sourcesContent":["/**\n * Maps Athena asset types to SVG icon file names.\n *\n * The SVG files are bundled by the host app, which declares where they are\n * served from via `configureAssetIconBasePath`. Hosts that don't bundle them\n * fall back to the Lucide icons carried on every menu item.\n */\n\nlet iconBasePath: string | null = null;\n\n/**\n * Point the mention UI at the host's copy of the asset-type SVGs.\n * `basePath` is resolved against the host document; a trailing \"/\" is added\n * when the caller omits it.\n */\nexport function configureAssetIconBasePath({\n basePath,\n}: {\n basePath: string | null;\n}): void {\n iconBasePath = basePath ? basePath.replace(/\\/*$/, \"/\") : basePath;\n}\n\nconst ASSET_TYPE_ICON_FILE: Record<string, string> = {\n // Documents\n folder: \"ic-folder\",\n txt: \"ic-txt\",\n document: \"ic-word\",\n word_document: \"ic-word\",\n markdown: \"ic-md\",\n pdf: \"ic-pdf\",\n html: \"ic-html\",\n web_page: \"ic-html\",\n yaml: \"ic-yaml\",\n json: \"ic-json\",\n\n // Spreadsheets\n spreadsheet: \"ic-excel\",\n table: \"ic-table\",\n\n // Media\n image: \"ic-img\",\n audio: \"ic-audio\",\n video: \"ic-video\",\n voice_memo: \"ic-
|
|
1
|
+
{"version":3,"file":"asset-type-icons.js","sources":["../../../../../../src/chat-ui/mentions/suggestions/data/sources/asset-type-icons.ts"],"sourcesContent":["/**\n * Maps Athena asset types to SVG icon file names.\n *\n * The SVG files are bundled by the host app, which declares where they are\n * served from via `configureAssetIconBasePath`. Hosts that don't bundle them\n * fall back to the Lucide icons carried on every menu item.\n */\n\nlet iconBasePath: string | null = null;\n\n/**\n * Point the mention UI at the host's copy of the asset-type SVGs.\n * `basePath` is resolved against the host document; a trailing \"/\" is added\n * when the caller omits it.\n */\nexport function configureAssetIconBasePath({\n basePath,\n}: {\n basePath: string | null;\n}): void {\n iconBasePath = basePath ? basePath.replace(/\\/*$/, \"/\") : basePath;\n}\n\nconst ASSET_TYPE_ICON_FILE: Record<string, string> = {\n // Documents\n folder: \"ic-folder\",\n txt: \"ic-txt\",\n document: \"ic-word\",\n word_document: \"ic-word\",\n markdown: \"ic-md\",\n pdf: \"ic-pdf\",\n html: \"ic-html\",\n web_page: \"ic-html\",\n yaml: \"ic-yaml\",\n json: \"ic-json\",\n\n // Spreadsheets\n spreadsheet: \"ic-excel\",\n table: \"ic-table\",\n\n // Media\n image: \"ic-img\",\n audio: \"ic-audio\",\n video: \"ic-video\",\n voice_memo: \"ic-voice_memo\",\n\n // Presentations\n powerpoint_deck: \"ic-power_point\",\n presentation_pptx_studio: \"ic-power_point\",\n pptx: \"ic-power_point\",\n\n // Email & Calendar\n email: \"ic-mail\",\n email_message: \"ic-mail\",\n live_email_thread: \"ic-mail\",\n live_calendar_event: \"ic-mail\",\n\n // Code\n python: \"ic-py\",\n javascript: \"ic-js\",\n typescript: \"ic-code\",\n jsx: \"ic-code\",\n tsx: \"ic-code\",\n css: \"ic-code\",\n java: \"ic-code\",\n c: \"ic-code\",\n cpp: \"ic-code\",\n csharp: \"ic-code\",\n ruby: \"ic-code\",\n go: \"ic-code\",\n swift: \"ic-code\",\n php: \"ic-code\",\n rust: \"ic-code\",\n vue: \"ic-code\",\n wm_script: \"ic-code\",\n\n // Structured data\n database: \"ic-snippet\",\n schema: \"ic-schema\",\n catalog: \"ic-db\",\n drive: \"ic-db\",\n query_snippet: \"ic-snippet\",\n semantic_query: \"ic-snippet\",\n semantic_model: \"ic-db\",\n dataset: \"ic-db\",\n\n // Meetings & Calls\n meeting: \"ic-meeting\",\n video_session: \"ic-meeting\",\n phone_call: \"ic-phonecall\",\n\n // Sessions & Devices\n session: \"ic-session\",\n browse_session: \"ic-html\",\n virtual_machine: \"ic-html\",\n computer: \"ic-computer\",\n desktop_session: \"ic-desktop_session\",\n mobile_session: \"ic-mobile_session\",\n\n // Projects & Profiles\n project: \"ic-project\",\n browse_profile: \"ic-profile\",\n\n // Workflows & Automation\n aop: \"ic-flow\",\n playbook: \"ic-playbook\",\n policy: \"ic-policy\",\n flow: \"ic-flow\",\n transform_project: \"ic-transform_project\",\n\n // Collections & Notebooks\n collection: \"ic-collection\",\n notebook: \"ic-notebook\",\n\n // UI & Apps\n user_interface: \"ic-app\",\n application: \"ic-application\",\n canvas: \"ic-canvas\",\n dashboard: \"ic-dashboard\",\n figure: \"ic_figure\",\n\n // People & Companies\n person: \"ic-person\",\n company: \"ic-company\",\n\n // Misc\n prompt: \"ic-ai\",\n skill: \"ic-skill\",\n task_item: \"ic-task\",\n spaces: \"ic-spaces\",\n secret: \"ic-secret\",\n photoshop: \"ic-pts\",\n illustrator: \"ic-ai\",\n zip: \"ic-zip\",\n sevenzip: \"ic-zip\",\n\n // Google Drive / SharePoint / Salesforce\n gdrive_folder: \"ic-folder\",\n gdrive_file: \"ic-file\",\n salesforce_record: \"ic-db\",\n salesforce_file: \"ic-db\",\n};\n\nconst ASSET_TYPE_LUCIDE_FALLBACK: Record<string, string> = {\n folder: \"folder\",\n spreadsheet: \"sheet\",\n image: \"image\",\n video: \"video\",\n audio: \"headphones\",\n email: \"mail\",\n database: \"database\",\n project: \"folder-kanban\",\n meeting: \"video\",\n user_interface: \"layout\",\n};\n\n/**\n * Get the SVG thumbnail URL for an Athena asset type, or undefined when the\n * host app does not bundle the icon files.\n */\nexport function assetTypeToThumb(\n assetType: string | null | undefined,\n): string | undefined {\n if (!iconBasePath) return undefined;\n const name: string =\n (assetType ? ASSET_TYPE_ICON_FILE[assetType.toLowerCase()] : undefined) ??\n \"ic-file\";\n return `${iconBasePath}${name}.svg`;\n}\n\n/**\n * Get Lucide icon name fallback for an asset type.\n * Used when thumbnailUrl can't load.\n */\nexport function assetTypeToIcon(assetType: string | null | undefined): string {\n if (!assetType) return \"file\";\n return ASSET_TYPE_LUCIDE_FALLBACK[assetType.toLowerCase()] ?? \"file\";\n}\n"],"names":[],"mappings":"AAQA,IAAI,eAA8B;AAO3B,SAAS,2BAA2B;AAAA,EACzC;AACF,GAES;AACP,iBAAe,WAAW,SAAS,QAAQ,QAAQ,GAAG,IAAI;AAC5D;AAEA,MAAM,uBAA+C;AAAA;AAAA,EAEnD,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,UAAU;AAAA,EACV,eAAe;AAAA,EACf,UAAU;AAAA,EACV,KAAK;AAAA,EACL,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,MAAM;AAAA;AAAA,EAGN,aAAa;AAAA,EACb,OAAO;AAAA;AAAA,EAGP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,YAAY;AAAA;AAAA,EAGZ,iBAAiB;AAAA,EACjB,0BAA0B;AAAA,EAC1B,MAAM;AAAA;AAAA,EAGN,OAAO;AAAA,EACP,eAAe;AAAA,EACf,mBAAmB;AAAA,EACnB,qBAAqB;AAAA;AAAA,EAGrB,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,MAAM;AAAA,EACN,GAAG;AAAA,EACH,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,IAAI;AAAA,EACJ,OAAO;AAAA,EACP,KAAK;AAAA,EACL,MAAM;AAAA,EACN,KAAK;AAAA,EACL,WAAW;AAAA;AAAA,EAGX,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,OAAO;AAAA,EACP,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,SAAS;AAAA;AAAA,EAGT,SAAS;AAAA,EACT,eAAe;AAAA,EACf,YAAY;AAAA;AAAA,EAGZ,SAAS;AAAA,EACT,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,gBAAgB;AAAA;AAAA,EAGhB,SAAS;AAAA,EACT,gBAAgB;AAAA;AAAA,EAGhB,KAAK;AAAA,EACL,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,mBAAmB;AAAA;AAAA,EAGnB,YAAY;AAAA,EACZ,UAAU;AAAA;AAAA,EAGV,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,QAAQ;AAAA;AAAA,EAGR,QAAQ;AAAA,EACR,SAAS;AAAA;AAAA,EAGT,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,aAAa;AAAA,EACb,KAAK;AAAA,EACL,UAAU;AAAA;AAAA,EAGV,eAAe;AAAA,EACf,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,iBAAiB;AACnB;AAEA,MAAM,6BAAqD;AAAA,EACzD,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,UAAU;AAAA,EACV,SAAS;AAAA,EACT,SAAS;AAAA,EACT,gBAAgB;AAClB;AAMO,SAAS,iBACd,WACoB;AACpB,MAAI,CAAC,aAAc,QAAO;AAC1B,QAAM,QACH,YAAY,qBAAqB,UAAU,YAAA,CAAa,IAAI,WAC7D;AACF,SAAO,GAAG,YAAY,GAAG,IAAI;AAC/B;AAMO,SAAS,gBAAgB,WAA8C;AAC5E,MAAI,CAAC,UAAW,QAAO;AACvB,SAAO,2BAA2B,UAAU,YAAA,CAAa,KAAK;AAChE;"}
|