@orbe-agro/client-core 5.6.262 → 5.6.263
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/dist/@ecme/assets/styles/app.css +235 -5
- package/dist/@ecme/assets/styles/tailwind/index.css +247 -6
- package/dist/@ecme/components/layouts/PostLoginLayout/PostLoginLayout.js +4 -0
- package/dist/@ecme/components/layouts/PostLoginLayout/PostLoginLayout.js.map +1 -1
- package/dist/@ecme/components/layouts/PostLoginLayout/components/CollapsibleSide.stories.js.map +1 -1
- package/dist/@ecme/components/layouts/PostLoginLayout/components/ContentOverlay.stories.js.map +1 -1
- package/dist/@ecme/components/layouts/PostLoginLayout/components/FrameLessSide.stories.js.map +1 -1
- package/dist/@ecme/components/layouts/PostLoginLayout/components/StackedSide.stories.js.map +1 -1
- package/dist/@ecme/components/layouts/PostLoginLayout/components/TopBarClassic.stories.js.map +1 -1
- package/dist/@ecme/components/template/Footer.js +1 -1
- package/dist/@ecme/components/template/Header.stories.js.map +1 -1
- package/dist/@ecme/components/template/Notification/Notification.js +1 -4
- package/dist/@ecme/components/template/Notification/Notification.js.map +1 -1
- package/dist/@ecme/components/template/OrbeAiWidget/OrbeAiChatDrawer.js +121 -0
- package/dist/@ecme/components/template/OrbeAiWidget/OrbeAiChatDrawer.js.map +1 -0
- package/dist/@ecme/components/template/OrbeAiWidget/OrbeAiWidget.js +127 -0
- package/dist/@ecme/components/template/OrbeAiWidget/OrbeAiWidget.js.map +1 -0
- package/dist/@ecme/components/template/OrbeAiWidget/ResizeHandles.js +37 -0
- package/dist/@ecme/components/template/OrbeAiWidget/ResizeHandles.js.map +1 -0
- package/dist/@ecme/components/template/OrbeAiWidget/index.js +5 -0
- package/dist/@ecme/components/template/OrbeAiWidget/index.js.map +1 -0
- package/dist/@ecme/components/template/OrbeAiWidget/useResizablePanel.js +91 -0
- package/dist/@ecme/components/template/OrbeAiWidget/useResizablePanel.js.map +1 -0
- package/dist/@ecme/components/template/Search.js +280 -73
- package/dist/@ecme/components/template/Search.js.map +1 -1
- package/dist/@ecme/components/template/Search.stories.js +17 -2
- package/dist/@ecme/components/template/Search.stories.js.map +1 -1
- package/dist/@ecme/components/ui/Dropdown/DropdownMenu.js +5 -1
- package/dist/@ecme/components/ui/Dropdown/DropdownMenu.js.map +1 -1
- package/dist/@ecme/components/view/ChatBox/ChatBox.js +9 -1
- package/dist/@ecme/components/view/ChatBox/ChatBox.js.map +1 -1
- package/dist/@ecme/components/view/ChatBox/components/MessageList.js +8 -4
- package/dist/@ecme/components/view/ChatBox/components/MessageList.js.map +1 -1
- package/dist/@ecme/configs/navigation.config/concepts.navigation.config.js +0 -16
- package/dist/@ecme/configs/navigation.config/concepts.navigation.config.js.map +1 -1
- package/dist/@ecme/configs/routes.config/conceptsRoute.js +0 -9
- package/dist/@ecme/configs/routes.config/conceptsRoute.js.map +1 -1
- package/dist/@ecme/index.js +7 -7
- package/dist/@ecme/index.js.map +1 -1
- package/dist/@ecme/locales/index.js +1 -4
- package/dist/@ecme/locales/index.js.map +1 -1
- package/dist/@ecme/locales/lang/ptBR/nav.js +1 -0
- package/dist/@ecme/locales/lang/ptBR/nav.js.map +1 -1
- package/dist/@ecme/mock/data/favoritosMenuData.js +5 -0
- package/dist/@ecme/mock/data/favoritosMenuData.js.map +1 -0
- package/dist/@ecme/services/AiService.js +95 -12
- package/dist/@ecme/services/AiService.js.map +1 -1
- package/dist/@ecme/services/aiAuthHeaders.js +35 -0
- package/dist/@ecme/services/aiAuthHeaders.js.map +1 -0
- package/dist/@ecme/services/axios/AxiosBase.js +30 -24
- package/dist/@ecme/services/axios/AxiosBase.js.map +1 -1
- package/dist/@ecme/services/axios/AxiosRequestIntrceptorConfigCallback.js +4 -27
- package/dist/@ecme/services/axios/AxiosRequestIntrceptorConfigCallback.js.map +1 -1
- package/dist/@ecme/services/index.js +8 -3
- package/dist/@ecme/services/sseParser.js +42 -0
- package/dist/@ecme/services/sseParser.js.map +1 -0
- package/dist/@ecme/views/concepts/ai/Chat/components/AiErrorMessage.js +15 -0
- package/dist/@ecme/views/concepts/ai/Chat/components/AiErrorMessage.js.map +1 -0
- package/dist/@ecme/views/concepts/ai/Chat/components/AiThinkingIndicator.js +23 -0
- package/dist/@ecme/views/concepts/ai/Chat/components/AiThinkingIndicator.js.map +1 -0
- package/dist/@ecme/views/concepts/ai/Chat/components/ApprovalCard.js +73 -0
- package/dist/@ecme/views/concepts/ai/Chat/components/ApprovalCard.js.map +1 -0
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatHistory.js +9 -23
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatHistory.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatHistoryItem.js +6 -16
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatHistoryItem.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatHistoryRenameDialog.js +10 -7
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatHistoryRenameDialog.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatLandingView.js +37 -36
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatLandingView.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatView.js +61 -17
- package/dist/@ecme/views/concepts/ai/Chat/components/ChatView.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/components/DataRequestCard.js +99 -0
- package/dist/@ecme/views/concepts/ai/Chat/components/DataRequestCard.js.map +1 -0
- package/dist/@ecme/views/concepts/ai/Chat/components/ToolCallChip.js +153 -0
- package/dist/@ecme/views/concepts/ai/Chat/components/ToolCallChip.js.map +1 -0
- package/dist/@ecme/views/concepts/ai/Chat/components/toolPresentation.js +195 -0
- package/dist/@ecme/views/concepts/ai/Chat/components/toolPresentation.js.map +1 -0
- package/dist/@ecme/views/concepts/ai/Chat/hooks/useChatConversations.js +83 -0
- package/dist/@ecme/views/concepts/ai/Chat/hooks/useChatConversations.js.map +1 -0
- package/dist/@ecme/views/concepts/ai/Chat/hooks/useChatSend.js +139 -22
- package/dist/@ecme/views/concepts/ai/Chat/hooks/useChatSend.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/hooks/useConversationMessages.js +37 -0
- package/dist/@ecme/views/concepts/ai/Chat/hooks/useConversationMessages.js.map +1 -0
- package/dist/@ecme/views/concepts/ai/Chat/store/generativeChatStore.js +53 -13
- package/dist/@ecme/views/concepts/ai/Chat/store/generativeChatStore.js.map +1 -1
- package/dist/@ecme/views/concepts/ai/Chat/utils.js +16 -1
- package/dist/@ecme/views/concepts/ai/Chat/utils.js.map +1 -1
- package/dist/@ecme/views/dashboards/FavoritesLanding/FavoritesLanding.js +92 -0
- package/dist/@ecme/views/dashboards/FavoritesLanding/FavoritesLanding.js.map +1 -0
- package/dist/@ecme/views/dashboards/FavoritesLanding/index.js +5 -0
- package/dist/@ecme/views/dashboards/FavoritesLanding/index.js.map +1 -0
- package/dist/@ecme/views/dashboards/FavoritesLanding/types.js +2 -0
- package/dist/@ecme/views/dashboards/FavoritesLanding/types.js.map +1 -0
- package/dist/@ecme/views/dashboards/FavoritesLanding/utils.js +36 -0
- package/dist/@ecme/views/dashboards/FavoritesLanding/utils.js.map +1 -0
- package/dist/@ecme/views/dashboards/index.js +1 -4
- package/dist/@ecme/views/dashboards/index.js.map +1 -1
- package/dist/@ecme/views/index.js +0 -2
- package/dist/@ecme/views/index.js.map +1 -1
- package/dist/@types/@ecme/components/layouts/PostLoginLayout/PostLoginLayout.d.ts.map +1 -1
- package/dist/@types/@ecme/components/layouts/PostLoginLayout/components/CollapsibleSide.stories.d.ts +7 -0
- package/dist/@types/@ecme/components/layouts/PostLoginLayout/components/CollapsibleSide.stories.d.ts.map +1 -0
- package/dist/@types/@ecme/components/layouts/PostLoginLayout/components/ContentOverlay.stories.d.ts +7 -0
- package/dist/@types/@ecme/components/layouts/PostLoginLayout/components/ContentOverlay.stories.d.ts.map +1 -0
- package/dist/@types/@ecme/components/layouts/PostLoginLayout/components/FrameLessSide.stories.d.ts +7 -0
- package/dist/@types/@ecme/components/layouts/PostLoginLayout/components/FrameLessSide.stories.d.ts.map +1 -0
- package/dist/@types/@ecme/components/layouts/PostLoginLayout/components/StackedSide.stories.d.ts +7 -0
- package/dist/@types/@ecme/components/layouts/PostLoginLayout/components/StackedSide.stories.d.ts.map +1 -0
- package/dist/@types/@ecme/components/layouts/PostLoginLayout/components/TopBarClassic.stories.d.ts +7 -0
- package/dist/@types/@ecme/components/layouts/PostLoginLayout/components/TopBarClassic.stories.d.ts.map +1 -0
- package/dist/@types/@ecme/components/template/Header.stories.d.ts +7 -0
- package/dist/@types/@ecme/components/template/Header.stories.d.ts.map +1 -0
- package/dist/@types/@ecme/components/template/OrbeAiWidget/OrbeAiChatDrawer.d.ts +14 -0
- package/dist/@types/@ecme/components/template/OrbeAiWidget/OrbeAiChatDrawer.d.ts.map +1 -0
- package/dist/@types/@ecme/components/template/OrbeAiWidget/OrbeAiWidget.d.ts +3 -0
- package/dist/@types/@ecme/components/template/OrbeAiWidget/OrbeAiWidget.d.ts.map +1 -0
- package/dist/@types/@ecme/components/template/OrbeAiWidget/ResizeHandles.d.ts +9 -0
- package/dist/@types/@ecme/components/template/OrbeAiWidget/ResizeHandles.d.ts.map +1 -0
- package/dist/@types/@ecme/components/template/OrbeAiWidget/index.d.ts +2 -0
- package/dist/@types/@ecme/components/template/OrbeAiWidget/index.d.ts.map +1 -0
- package/dist/@types/@ecme/components/template/OrbeAiWidget/useResizablePanel.d.ts +26 -0
- package/dist/@types/@ecme/components/template/OrbeAiWidget/useResizablePanel.d.ts.map +1 -0
- package/dist/@types/@ecme/components/template/Search.d.ts +2 -0
- package/dist/@types/@ecme/components/template/Search.d.ts.map +1 -1
- package/dist/@types/@ecme/components/template/Search.stories.d.ts +8 -0
- package/dist/@types/@ecme/components/template/Search.stories.d.ts.map +1 -0
- package/dist/@types/@ecme/components/ui/Dropdown/DropdownMenu.d.ts +2 -0
- package/dist/@types/@ecme/components/ui/Dropdown/DropdownMenu.d.ts.map +1 -1
- package/dist/@types/@ecme/components/view/ChatBox/ChatBox.d.ts.map +1 -1
- package/dist/@types/@ecme/components/view/ChatBox/components/MessageList.d.ts +5 -0
- package/dist/@types/@ecme/components/view/ChatBox/components/MessageList.d.ts.map +1 -1
- package/dist/@types/@ecme/configs/navigation.config/concepts.navigation.config.d.ts.map +1 -1
- package/dist/@types/@ecme/configs/routes.config/conceptsRoute.d.ts.map +1 -1
- package/dist/@types/@ecme/locales/index.d.ts +0 -1
- package/dist/@types/@ecme/locales/index.d.ts.map +1 -1
- package/dist/@types/@ecme/locales/lang/ptBR/nav.d.ts.map +1 -1
- package/dist/@types/@ecme/mock/data/favoritosMenuData.d.ts +3 -0
- package/dist/@types/@ecme/mock/data/favoritosMenuData.d.ts.map +1 -0
- package/dist/@types/@ecme/services/AiService.d.ts +44 -4
- package/dist/@types/@ecme/services/AiService.d.ts.map +1 -1
- package/dist/@types/@ecme/services/aiAuthHeaders.d.ts +12 -0
- package/dist/@types/@ecme/services/aiAuthHeaders.d.ts.map +1 -0
- package/dist/@types/@ecme/services/axios/AxiosBase.d.ts +12 -0
- package/dist/@types/@ecme/services/axios/AxiosBase.d.ts.map +1 -1
- package/dist/@types/@ecme/services/axios/AxiosRequestIntrceptorConfigCallback.d.ts +6 -0
- package/dist/@types/@ecme/services/axios/AxiosRequestIntrceptorConfigCallback.d.ts.map +1 -1
- package/dist/@types/@ecme/services/sseParser.d.ts +20 -0
- package/dist/@types/@ecme/services/sseParser.d.ts.map +1 -0
- package/dist/@types/@ecme/views/concepts/ai/Chat/components/AiErrorMessage.d.ts +8 -0
- package/dist/@types/@ecme/views/concepts/ai/Chat/components/AiErrorMessage.d.ts.map +1 -0
- package/dist/@types/@ecme/views/concepts/ai/Chat/components/AiThinkingIndicator.d.ts +7 -0
- package/dist/@types/@ecme/views/concepts/ai/Chat/components/AiThinkingIndicator.d.ts.map +1 -0
- package/dist/@types/@ecme/views/concepts/ai/Chat/components/ApprovalCard.d.ts +15 -0
- package/dist/@types/@ecme/views/concepts/ai/Chat/components/ApprovalCard.d.ts.map +1 -0
- package/dist/@types/@ecme/views/concepts/ai/Chat/components/ChatHistory.d.ts +3 -1
- package/dist/@types/@ecme/views/concepts/ai/Chat/components/ChatHistory.d.ts.map +1 -1
- package/dist/@types/@ecme/views/concepts/ai/Chat/components/ChatHistoryItem.d.ts +1 -1
- package/dist/@types/@ecme/views/concepts/ai/Chat/components/ChatHistoryItem.d.ts.map +1 -1
- package/dist/@types/@ecme/views/concepts/ai/Chat/components/ChatHistoryRenameDialog.d.ts +5 -1
- package/dist/@types/@ecme/views/concepts/ai/Chat/components/ChatHistoryRenameDialog.d.ts.map +1 -1
- package/dist/@types/@ecme/views/concepts/ai/Chat/components/ChatLandingView.d.ts.map +1 -1
- package/dist/@types/@ecme/views/concepts/ai/Chat/components/ChatView.d.ts +8 -1
- package/dist/@types/@ecme/views/concepts/ai/Chat/components/ChatView.d.ts.map +1 -1
- package/dist/@types/@ecme/views/concepts/ai/Chat/components/DataRequestCard.d.ts +20 -0
- package/dist/@types/@ecme/views/concepts/ai/Chat/components/DataRequestCard.d.ts.map +1 -0
- package/dist/@types/@ecme/views/concepts/ai/Chat/components/ToolCallChip.d.ts +7 -0
- package/dist/@types/@ecme/views/concepts/ai/Chat/components/ToolCallChip.d.ts.map +1 -0
- package/dist/@types/@ecme/views/concepts/ai/Chat/components/toolPresentation.d.ts +31 -0
- package/dist/@types/@ecme/views/concepts/ai/Chat/components/toolPresentation.d.ts.map +1 -0
- package/dist/@types/@ecme/views/concepts/ai/Chat/hooks/useChatConversations.d.ts +12 -0
- package/dist/@types/@ecme/views/concepts/ai/Chat/hooks/useChatConversations.d.ts.map +1 -0
- package/dist/@types/@ecme/views/concepts/ai/Chat/hooks/useChatSend.d.ts +3 -1
- package/dist/@types/@ecme/views/concepts/ai/Chat/hooks/useChatSend.d.ts.map +1 -1
- package/dist/@types/@ecme/views/concepts/ai/Chat/hooks/useConversationMessages.d.ts +12 -0
- package/dist/@types/@ecme/views/concepts/ai/Chat/hooks/useConversationMessages.d.ts.map +1 -0
- package/dist/@types/@ecme/views/concepts/ai/Chat/store/generativeChatStore.d.ts +5 -0
- package/dist/@types/@ecme/views/concepts/ai/Chat/store/generativeChatStore.d.ts.map +1 -1
- package/dist/@types/@ecme/views/concepts/ai/Chat/types.d.ts +144 -23
- package/dist/@types/@ecme/views/concepts/ai/Chat/types.d.ts.map +1 -1
- package/dist/@types/@ecme/views/concepts/ai/Chat/utils.d.ts +13 -0
- package/dist/@types/@ecme/views/concepts/ai/Chat/utils.d.ts.map +1 -1
- package/dist/@types/@ecme/views/dashboards/FavoritesLanding/FavoritesLanding.d.ts +9 -0
- package/dist/@types/@ecme/views/dashboards/FavoritesLanding/FavoritesLanding.d.ts.map +1 -0
- package/dist/@types/@ecme/views/dashboards/FavoritesLanding/index.d.ts +3 -0
- package/dist/@types/@ecme/views/dashboards/FavoritesLanding/index.d.ts.map +1 -0
- package/dist/@types/@ecme/views/dashboards/FavoritesLanding/types.d.ts +17 -0
- package/dist/@types/@ecme/views/dashboards/FavoritesLanding/types.d.ts.map +1 -0
- package/dist/@types/@ecme/views/dashboards/FavoritesLanding/utils.d.ts +5 -0
- package/dist/@types/@ecme/views/dashboards/FavoritesLanding/utils.d.ts.map +1 -0
- package/dist/@types/@ecme/views/dashboards/index.d.ts +0 -1
- package/dist/@types/@ecme/views/dashboards/index.d.ts.map +1 -1
- package/dist/@types/@ecme/views/index.d.ts +0 -1
- package/dist/@types/@ecme/views/index.d.ts.map +1 -1
- package/dist/@types/base/@types/api/request/dm/TCreateFavoritoMenuRequest.d.ts +4 -0
- package/dist/@types/base/@types/api/request/dm/TCreateFavoritoMenuRequest.d.ts.map +1 -0
- package/dist/@types/base/@types/api/request/dm/TReorderFavoritosMenuRequest.d.ts +4 -0
- package/dist/@types/base/@types/api/request/dm/TReorderFavoritosMenuRequest.d.ts.map +1 -0
- package/dist/@types/base/@types/api/request/originacao/TSimularConsumoManualSaldoRequest.d.ts +9 -0
- package/dist/@types/base/@types/api/request/originacao/TSimularConsumoManualSaldoRequest.d.ts.map +1 -0
- package/dist/@types/base/@types/api/response/dadosMestres/TFavoritoMenuResponse.d.ts +8 -0
- package/dist/@types/base/@types/api/response/dadosMestres/TFavoritoMenuResponse.d.ts.map +1 -0
- package/dist/@types/base/@types/api/response/originacao/TConsumoManualSaldoResponse.d.ts +21 -0
- package/dist/@types/base/@types/api/response/originacao/TConsumoManualSaldoResponse.d.ts.map +1 -0
- package/dist/@types/base/@types/api/response/originacao/TFindAllSaldoResponse.d.ts +1 -0
- package/dist/@types/base/@types/api/response/originacao/TFindAllSaldoResponse.d.ts.map +1 -1
- package/dist/@types/base/@types/api/response/originacao/TSimularConsumoManualSaldoResponse.d.ts +17 -0
- package/dist/@types/base/@types/api/response/originacao/TSimularConsumoManualSaldoResponse.d.ts.map +1 -0
- package/dist/@types/base/@types/enums/originacao/ModoConsumoManual.d.ts +5 -0
- package/dist/@types/base/@types/enums/originacao/ModoConsumoManual.d.ts.map +1 -0
- package/dist/@types/base/@types/enums/originacao/TipoSaldoConsumivel.d.ts +6 -0
- package/dist/@types/base/@types/enums/originacao/TipoSaldoConsumivel.d.ts.map +1 -0
- package/dist/@types/base/@types/models/racao/carga.d.ts +39 -0
- package/dist/@types/base/@types/models/racao/carga.d.ts.map +1 -1
- package/dist/@types/base/@types/models/template/example.d.ts +40 -0
- package/dist/@types/base/@types/models/template/example.d.ts.map +1 -0
- package/dist/@types/base/@types/models/template/exampleObject.d.ts +14 -0
- package/dist/@types/base/@types/models/template/exampleObject.d.ts.map +1 -0
- package/dist/@types/base/@types/models/transportadora/irpf.d.ts +1 -0
- package/dist/@types/base/@types/models/transportadora/irpf.d.ts.map +1 -1
- package/dist/@types/base/@types/models/transportadora/irpfFaixaDesconto.d.ts +0 -1
- package/dist/@types/base/@types/models/transportadora/irpfFaixaDesconto.d.ts.map +1 -1
- package/dist/@types/base/components/forms/GenericForms/GenericArrayFormSection.d.ts +2 -2
- package/dist/@types/base/components/forms/GenericForms/GenericArrayFormSection.d.ts.map +1 -1
- package/dist/@types/base/components/shared/AceitarProcessoDialog.d.ts +2 -1
- package/dist/@types/base/components/shared/AceitarProcessoDialog.d.ts.map +1 -1
- package/dist/@types/base/components/shared/AdicionarHistoricoDialog.d.ts.map +1 -1
- package/dist/@types/base/components/shared/CancelarProcessoDialog.d.ts.map +1 -1
- package/dist/@types/base/components/shared/ConcluirProcessoDialog.d.ts.map +1 -1
- package/dist/@types/base/components/shared/EncerrarProcessoDialog.d.ts.map +1 -1
- package/dist/@types/base/components/shared/ReabrirProcessoDialog.d.ts.map +1 -1
- package/dist/@types/base/components/shared/RetornarFluxAtendimentoDialog.d.ts.map +1 -1
- package/dist/@types/base/components/shared/TransferirParaAtendenteDialog.d.ts.map +1 -1
- package/dist/@types/base/components/shared/TransferirParaSolicitanteDialog.d.ts.map +1 -1
- package/dist/@types/base/components/shared/TransferirProcessoDialog.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/DadosMestres/FavoritoMenu/favoritoMenu.endpoint.config.d.ts +8 -0
- package/dist/@types/base/configs/endpoints.config/DadosMestres/FavoritoMenu/favoritoMenu.endpoint.config.d.ts.map +1 -0
- package/dist/@types/base/configs/endpoints.config/DadosMestres/Sap/incoterms.endpoint.config.d.ts +1 -0
- package/dist/@types/base/configs/endpoints.config/DadosMestres/Sap/incoterms.endpoint.config.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/DadosMestres/Sap/safra.endpoint.config.d.ts +1 -0
- package/dist/@types/base/configs/endpoints.config/DadosMestres/Sap/safra.endpoint.config.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/HubFiscal/nfe.endpoint.config.d.ts +1 -1
- package/dist/@types/base/configs/endpoints.config/SapService/Sap/executeSapApi.endpoint.config.d.ts +1 -0
- package/dist/@types/base/configs/endpoints.config/SapService/Sap/executeSapApi.endpoint.config.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/Ticket/ticket.endpoint.config.d.ts +2 -0
- package/dist/@types/base/configs/endpoints.config/Ticket/ticket.endpoint.config.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/agendamento/agendamento.d.ts +0 -1
- package/dist/@types/base/configs/endpoints.config/agendamento/agendamento.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/agendamento/config/contratoVenda.d.ts +0 -1
- package/dist/@types/base/configs/endpoints.config/agendamento/config/contratoVenda.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/centralNfe/centralNfe.d.ts +18 -0
- package/dist/@types/base/configs/endpoints.config/centralNfe/centralNfe.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/centralNfe/config/cfop.d.ts +4 -0
- package/dist/@types/base/configs/endpoints.config/centralNfe/config/cfop.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/centralNfe/config/historicoCfop.d.ts +12 -0
- package/dist/@types/base/configs/endpoints.config/centralNfe/config/historicoCfop.d.ts.map +1 -0
- package/dist/@types/base/configs/endpoints.config/centralNfe/config/vinculoOperacao.d.ts +4 -0
- package/dist/@types/base/configs/endpoints.config/centralNfe/config/vinculoOperacao.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/compras/compras.d.ts +6 -0
- package/dist/@types/base/configs/endpoints.config/compras/compras.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/compras/config/itemOrdemCompra.d.ts +8 -0
- package/dist/@types/base/configs/endpoints.config/compras/config/itemOrdemCompra.d.ts.map +1 -0
- package/dist/@types/base/configs/endpoints.config/dm/config/municipio.d.ts +4 -0
- package/dist/@types/base/configs/endpoints.config/dm/config/municipio.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/dm/dm.d.ts +4 -0
- package/dist/@types/base/configs/endpoints.config/dm/dm.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/endpoints.navigation.d.ts +90 -21
- package/dist/@types/base/configs/endpoints.config/endpoints.navigation.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/insumos/config/estoque.d.ts +0 -20
- package/dist/@types/base/configs/endpoints.config/insumos/config/estoque.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/insumos/insumos.d.ts +0 -20
- package/dist/@types/base/configs/endpoints.config/insumos/insumos.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/originacao/config/consumoManualSaldo.d.ts +10 -0
- package/dist/@types/base/configs/endpoints.config/originacao/config/consumoManualSaldo.d.ts.map +1 -0
- package/dist/@types/base/configs/endpoints.config/originacao/originacao.d.ts +8 -0
- package/dist/@types/base/configs/endpoints.config/originacao/originacao.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/racao/config/carga.d.ts +8 -0
- package/dist/@types/base/configs/endpoints.config/racao/config/carga.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/racao/racao.d.ts +8 -0
- package/dist/@types/base/configs/endpoints.config/racao/racao.d.ts.map +1 -1
- package/dist/@types/base/configs/endpoints.config/trade/config/contratoArmazenagemGraosTrade.d.ts +33 -0
- package/dist/@types/base/configs/endpoints.config/trade/config/contratoArmazenagemGraosTrade.d.ts.map +1 -0
- package/dist/@types/base/configs/endpoints.config/trade/index.d.ts +34 -0
- package/dist/@types/base/configs/endpoints.config/trade/index.d.ts.map +1 -0
- package/dist/@types/base/configs/endpoints.config/transportadora/contratoFrete.d.ts +8 -0
- package/dist/@types/base/configs/endpoints.config/transportadora/contratoFrete.d.ts.map +1 -1
- package/dist/@types/base/configs/navigation.config/modules.navigation.d.ts.map +1 -1
- package/dist/@types/base/configs/navigation.config/modules.submenu/gestaoServicos/submenu.gestaoServicos.d.ts +4 -0
- package/dist/@types/base/configs/navigation.config/modules.submenu/gestaoServicos/submenu.gestaoServicos.d.ts.map +1 -0
- package/dist/@types/base/configs/navigation.config/modules.submenu/index.d.ts +1 -0
- package/dist/@types/base/configs/navigation.config/modules.submenu/index.d.ts.map +1 -1
- package/dist/@types/base/configs/navigation.config/modules.submenu/originacao/consumoManualSaldo/submenu.consumoManualSaldo.d.ts +4 -0
- package/dist/@types/base/configs/navigation.config/modules.submenu/originacao/consumoManualSaldo/submenu.consumoManualSaldo.d.ts.map +1 -0
- package/dist/@types/base/configs/navigation.config/modules.submenu/template/submenu.template.d.ts.map +1 -1
- package/dist/@types/base/configs/navigation.config/modules.submenu/trade/submenu.trade.d.ts +4 -0
- package/dist/@types/base/configs/navigation.config/modules.submenu/trade/submenu.trade.d.ts.map +1 -0
- package/dist/@types/base/configs/navigation.config/submenu/centralNfe/cadastros.submenu.d.ts.map +1 -1
- package/dist/@types/base/configs/navigation.config/submenu/centralNfe/config/cfop.submenu.d.ts +4 -0
- package/dist/@types/base/configs/navigation.config/submenu/centralNfe/config/cfop.submenu.d.ts.map +1 -0
- package/dist/@types/base/configs/navigation.config/submenu/index.d.ts +1 -2
- package/dist/@types/base/configs/navigation.config/submenu/index.d.ts.map +1 -1
- package/dist/@types/base/configs/navigation.config/submenu/originacao/originacao.submenu.d.ts.map +1 -1
- package/dist/@types/base/configs/navigation.config/submenu/template/cadastros.submenu.d.ts.map +1 -0
- package/dist/@types/base/configs/navigation.config/submenu/template/config/example.submenu.d.ts.map +1 -0
- package/dist/@types/base/configs/navigation.config/submenu/template/config/exampleObject.submenu.d.ts.map +1 -0
- package/dist/@types/base/configs/navigation.config/submenu/template/template.submenu.d.ts.map +1 -0
- package/dist/@types/base/configs/navigation.config/submenu/ticket/cadastros.submenu.d.ts.map +1 -1
- package/dist/@types/base/configs/navigation.config/submenu/ticket/config/relatorioTransferenciaArmazens.submenu.d.ts +4 -0
- package/dist/@types/base/configs/navigation.config/submenu/ticket/config/relatorioTransferenciaArmazens.submenu.d.ts.map +1 -0
- package/dist/@types/base/configs/navigation.config/submenu/ticket/config/relatorioVendasGraos.submenu.d.ts +4 -0
- package/dist/@types/base/configs/navigation.config/submenu/ticket/config/relatorioVendasGraos.submenu.d.ts.map +1 -0
- package/dist/@types/base/configs/navigation.config/submenu/ticket/relatorios.submenu.d.ts.map +1 -1
- package/dist/@types/base/configs/navigation.config/submenu/trade/configs/contratoArmazenagemGraosTrade.submenu.d.ts +4 -0
- package/dist/@types/base/configs/navigation.config/submenu/trade/configs/contratoArmazenagemGraosTrade.submenu.d.ts.map +1 -0
- package/dist/@types/base/configs/navigation.config/submenu/trade/trade.submenu.d.ts +4 -0
- package/dist/@types/base/configs/navigation.config/submenu/trade/trade.submenu.d.ts.map +1 -0
- package/dist/@types/base/locales/lang/ptBR/modules/Ticket/ticket.nav.d.ts +2 -0
- package/dist/@types/base/locales/lang/ptBR/modules/Ticket/ticket.nav.d.ts.map +1 -1
- package/dist/@types/base/services/modules/DadosMestres/FavoritoMenu/FavoritoMenuService.d.ts +8 -0
- package/dist/@types/base/services/modules/DadosMestres/FavoritoMenu/FavoritoMenuService.d.ts.map +1 -0
- package/dist/@types/base/services/modules/DadosMestres/Sap/IncotermsService.d.ts +1 -0
- package/dist/@types/base/services/modules/DadosMestres/Sap/IncotermsService.d.ts.map +1 -1
- package/dist/@types/base/services/modules/DadosMestres/Sap/SafraService.d.ts +1 -0
- package/dist/@types/base/services/modules/DadosMestres/Sap/SafraService.d.ts.map +1 -1
- package/dist/@types/base/services/modules/HubFiscal/NfeService.d.ts +1 -1
- package/dist/@types/base/services/modules/HubFiscal/NfeService.d.ts.map +1 -1
- package/dist/@types/base/services/modules/SapService/Sap/ExecuteSapApiService.d.ts +1 -0
- package/dist/@types/base/services/modules/SapService/Sap/ExecuteSapApiService.d.ts.map +1 -1
- package/dist/@types/base/services/modules/Ticket/TicketService.d.ts +2 -0
- package/dist/@types/base/services/modules/Ticket/TicketService.d.ts.map +1 -1
- package/dist/@types/base/services/modules/centralNfe/cfop/CfopService.d.ts +1 -0
- package/dist/@types/base/services/modules/centralNfe/cfop/CfopService.d.ts.map +1 -1
- package/dist/@types/base/services/modules/centralNfe/historicoCfop/HistoricoCfopService.d.ts +3 -0
- package/dist/@types/base/services/modules/centralNfe/historicoCfop/HistoricoCfopService.d.ts.map +1 -0
- package/dist/@types/base/services/modules/centralNfe/vinculoOperacao/VinculoOperacaoService.d.ts +1 -0
- package/dist/@types/base/services/modules/centralNfe/vinculoOperacao/VinculoOperacaoService.d.ts.map +1 -1
- package/dist/@types/base/services/modules/compras/index.d.ts +1 -0
- package/dist/@types/base/services/modules/compras/index.d.ts.map +1 -1
- package/dist/@types/base/services/modules/compras/ordemCompra/ItemOrdemCompraService.d.ts +2 -0
- package/dist/@types/base/services/modules/compras/ordemCompra/ItemOrdemCompraService.d.ts.map +1 -0
- package/dist/@types/base/services/modules/dm/municipio/MunicipioService.d.ts +1 -0
- package/dist/@types/base/services/modules/dm/municipio/MunicipioService.d.ts.map +1 -1
- package/dist/@types/base/services/modules/originacao/consumoManualSaldo/consumoManualSaldoService.d.ts +13 -0
- package/dist/@types/base/services/modules/originacao/consumoManualSaldo/consumoManualSaldoService.d.ts.map +1 -0
- package/dist/@types/base/services/modules/racao/carga/CargaService.d.ts +3 -1
- package/dist/@types/base/services/modules/racao/carga/CargaService.d.ts.map +1 -1
- package/dist/@types/base/services/modules/template/example/ExampleService.d.ts +7 -4
- package/dist/@types/base/services/modules/template/example/ExampleService.d.ts.map +1 -1
- package/dist/@types/base/services/modules/template/exampleObject/ExampleObjectService.d.ts +8 -0
- package/dist/@types/base/services/modules/template/exampleObject/ExampleObjectService.d.ts.map +1 -0
- package/dist/@types/base/services/modules/template/index.d.ts +1 -1
- package/dist/@types/base/services/modules/template/index.d.ts.map +1 -1
- package/dist/@types/base/services/modules/trade/ContratoArmazenagemGraosTradeService.d.ts +14 -0
- package/dist/@types/base/services/modules/trade/ContratoArmazenagemGraosTradeService.d.ts.map +1 -0
- package/dist/@types/base/services/modules/transportadora/ContratoFrete/ContratoFreteService.d.ts +2 -0
- package/dist/@types/base/services/modules/transportadora/ContratoFrete/ContratoFreteService.d.ts.map +1 -1
- package/dist/base/@types/api/request/dm/TCreateFavoritoMenuRequest.js +2 -0
- package/dist/base/@types/api/request/dm/TCreateFavoritoMenuRequest.js.map +1 -0
- package/dist/base/@types/api/request/dm/TReorderFavoritosMenuRequest.js +2 -0
- package/dist/base/@types/api/request/dm/TReorderFavoritosMenuRequest.js.map +1 -0
- package/dist/base/@types/api/request/originacao/TSimularConsumoManualSaldoRequest.js +2 -0
- package/dist/base/@types/api/request/originacao/TSimularConsumoManualSaldoRequest.js.map +1 -0
- package/dist/base/@types/api/response/dadosMestres/TFavoritoMenuResponse.js +2 -0
- package/dist/base/@types/api/response/dadosMestres/TFavoritoMenuResponse.js.map +1 -0
- package/dist/base/@types/api/response/originacao/TConsumoManualSaldoResponse.js +2 -0
- package/dist/base/@types/api/response/originacao/TConsumoManualSaldoResponse.js.map +1 -0
- package/dist/base/@types/api/response/originacao/TSimularConsumoManualSaldoResponse.js +2 -0
- package/dist/base/@types/api/response/originacao/TSimularConsumoManualSaldoResponse.js.map +1 -0
- package/dist/base/@types/enums/originacao/ModoConsumoManual.js +9 -0
- package/dist/base/@types/enums/originacao/ModoConsumoManual.js.map +1 -0
- package/dist/base/@types/enums/originacao/TipoSaldoConsumivel.js +10 -0
- package/dist/base/@types/enums/originacao/TipoSaldoConsumivel.js.map +1 -0
- package/dist/base/@types/models/racao/carga.js.map +1 -1
- package/dist/base/@types/models/template/example.js +16 -0
- package/dist/base/@types/models/template/example.js.map +1 -0
- package/dist/base/@types/models/template/exampleObject.js +2 -0
- package/dist/base/@types/models/template/exampleObject.js.map +1 -0
- package/dist/base/assets/styles/init.css +253 -5
- package/dist/base/components/forms/GenericForms/GenericArrayFormSection.js.map +1 -1
- package/dist/base/components/shared/AceitarProcessoDialog.js +16 -2
- package/dist/base/components/shared/AceitarProcessoDialog.js.map +1 -1
- package/dist/base/components/shared/AdicionarHistoricoDialog.js +28 -24
- package/dist/base/components/shared/AdicionarHistoricoDialog.js.map +1 -1
- package/dist/base/components/shared/CancelarProcessoDialog.js +28 -24
- package/dist/base/components/shared/CancelarProcessoDialog.js.map +1 -1
- package/dist/base/components/shared/ConcluirProcessoDialog.js +27 -23
- package/dist/base/components/shared/ConcluirProcessoDialog.js.map +1 -1
- package/dist/base/components/shared/EncerrarProcessoDialog.js +28 -24
- package/dist/base/components/shared/EncerrarProcessoDialog.js.map +1 -1
- package/dist/base/components/shared/ReabrirProcessoDialog.js +27 -23
- package/dist/base/components/shared/ReabrirProcessoDialog.js.map +1 -1
- package/dist/base/components/shared/RetornarFluxAtendimentoDialog.js +27 -23
- package/dist/base/components/shared/RetornarFluxAtendimentoDialog.js.map +1 -1
- package/dist/base/components/shared/TransferirParaAtendenteDialog.js +28 -24
- package/dist/base/components/shared/TransferirParaAtendenteDialog.js.map +1 -1
- package/dist/base/components/shared/TransferirParaSolicitanteDialog.js +28 -24
- package/dist/base/components/shared/TransferirParaSolicitanteDialog.js.map +1 -1
- package/dist/base/components/shared/TransferirProcessoDialog.js +43 -33
- package/dist/base/components/shared/TransferirProcessoDialog.js.map +1 -1
- package/dist/base/configs/api.config.js.map +1 -1
- package/dist/base/configs/endpoints.config/DadosMestres/FavoritoMenu/favoritoMenu.endpoint.config.js +11 -0
- package/dist/base/configs/endpoints.config/DadosMestres/FavoritoMenu/favoritoMenu.endpoint.config.js.map +1 -0
- package/dist/base/configs/endpoints.config/DadosMestres/Sap/incoterms.endpoint.config.js +2 -1
- package/dist/base/configs/endpoints.config/DadosMestres/Sap/incoterms.endpoint.config.js.map +1 -1
- package/dist/base/configs/endpoints.config/DadosMestres/Sap/safra.endpoint.config.js +2 -1
- package/dist/base/configs/endpoints.config/DadosMestres/Sap/safra.endpoint.config.js.map +1 -1
- package/dist/base/configs/endpoints.config/HubFiscal/nfe.endpoint.config.js +1 -1
- package/dist/base/configs/endpoints.config/HubFiscal/nfe.endpoint.config.js.map +1 -1
- package/dist/base/configs/endpoints.config/SapService/Sap/executeSapApi.endpoint.config.js +2 -1
- package/dist/base/configs/endpoints.config/SapService/Sap/executeSapApi.endpoint.config.js.map +1 -1
- package/dist/base/configs/endpoints.config/Ticket/ticket.endpoint.config.js +3 -1
- package/dist/base/configs/endpoints.config/Ticket/ticket.endpoint.config.js.map +1 -1
- package/dist/base/configs/endpoints.config/agendamento/config/contratoVenda.js +0 -1
- package/dist/base/configs/endpoints.config/agendamento/config/contratoVenda.js.map +1 -1
- package/dist/base/configs/endpoints.config/centralNfe/centralNfe.js +2 -0
- package/dist/base/configs/endpoints.config/centralNfe/centralNfe.js.map +1 -1
- package/dist/base/configs/endpoints.config/centralNfe/config/cfop.js +2 -1
- package/dist/base/configs/endpoints.config/centralNfe/config/cfop.js.map +1 -1
- package/dist/base/configs/endpoints.config/centralNfe/config/historicoCfop.js +9 -0
- package/dist/base/configs/endpoints.config/centralNfe/config/historicoCfop.js.map +1 -0
- package/dist/base/configs/endpoints.config/centralNfe/config/vinculoOperacao.js +2 -1
- package/dist/base/configs/endpoints.config/centralNfe/config/vinculoOperacao.js.map +1 -1
- package/dist/base/configs/endpoints.config/compras/compras.js +3 -1
- package/dist/base/configs/endpoints.config/compras/compras.js.map +1 -1
- package/dist/base/configs/endpoints.config/compras/config/itemOrdemCompra.js +8 -0
- package/dist/base/configs/endpoints.config/compras/config/itemOrdemCompra.js.map +1 -0
- package/dist/base/configs/endpoints.config/dm/config/municipio.js +2 -1
- package/dist/base/configs/endpoints.config/dm/config/municipio.js.map +1 -1
- package/dist/base/configs/endpoints.config/endpoints.navigation.js +5 -1
- package/dist/base/configs/endpoints.config/endpoints.navigation.js.map +1 -1
- package/dist/base/configs/endpoints.config/insumos/config/estoque.js +1 -6
- package/dist/base/configs/endpoints.config/insumos/config/estoque.js.map +1 -1
- package/dist/base/configs/endpoints.config/originacao/config/consumoManualSaldo.js +12 -0
- package/dist/base/configs/endpoints.config/originacao/config/consumoManualSaldo.js.map +1 -0
- package/dist/base/configs/endpoints.config/originacao/originacao.js +2 -0
- package/dist/base/configs/endpoints.config/originacao/originacao.js.map +1 -1
- package/dist/base/configs/endpoints.config/racao/config/carga.js +2 -0
- package/dist/base/configs/endpoints.config/racao/config/carga.js.map +1 -1
- package/dist/base/configs/endpoints.config/trade/config/contratoArmazenagemGraosTrade.js +15 -0
- package/dist/base/configs/endpoints.config/trade/config/contratoArmazenagemGraosTrade.js.map +1 -0
- package/dist/base/configs/endpoints.config/trade/index.js +8 -0
- package/dist/base/configs/endpoints.config/trade/index.js.map +1 -0
- package/dist/base/configs/endpoints.config/transportadora/contratoFrete.js +3 -1
- package/dist/base/configs/endpoints.config/transportadora/contratoFrete.js.map +1 -1
- package/dist/base/configs/index.js +33 -33
- package/dist/base/configs/navigation.config/index.js +31 -31
- package/dist/base/configs/navigation.config/modules.navigation.js +3 -1
- package/dist/base/configs/navigation.config/modules.navigation.js.map +1 -1
- package/dist/base/configs/navigation.config/modules.submenu/gestaoServicos/submenu.gestaoServicos.js +107 -0
- package/dist/base/configs/navigation.config/modules.submenu/gestaoServicos/submenu.gestaoServicos.js.map +1 -0
- package/dist/base/configs/navigation.config/modules.submenu/index.js +2 -0
- package/dist/base/configs/navigation.config/modules.submenu/index.js.map +1 -1
- package/dist/base/configs/navigation.config/modules.submenu/originacao/consumoManualSaldo/submenu.consumoManualSaldo.js +16 -0
- package/dist/base/configs/navigation.config/modules.submenu/originacao/consumoManualSaldo/submenu.consumoManualSaldo.js.map +1 -0
- package/dist/base/configs/navigation.config/modules.submenu/template/cadastros/submenu.example.js +1 -1
- package/dist/base/configs/navigation.config/modules.submenu/template/cadastros/submenu.example.js.map +1 -1
- package/dist/base/configs/navigation.config/modules.submenu/template/submenu.template.js +1 -1
- package/dist/base/configs/navigation.config/modules.submenu/template/submenu.template.js.map +1 -1
- package/dist/base/configs/navigation.config/modules.submenu/trade/submenu.trade.js +17 -0
- package/dist/base/configs/navigation.config/modules.submenu/trade/submenu.trade.js.map +1 -0
- package/dist/base/configs/navigation.config/submenu/agendamento/config/relatorio-cotas.js +1 -1
- package/dist/base/configs/navigation.config/submenu/agendamento/config/relatorio-cotas.js.map +1 -1
- package/dist/base/configs/navigation.config/submenu/centralNfe/cadastros.submenu.js +3 -1
- package/dist/base/configs/navigation.config/submenu/centralNfe/cadastros.submenu.js.map +1 -1
- package/dist/base/configs/navigation.config/submenu/centralNfe/config/cfop.submenu.js +16 -0
- package/dist/base/configs/navigation.config/submenu/centralNfe/config/cfop.submenu.js.map +1 -0
- package/dist/base/configs/navigation.config/submenu/index.js +20 -22
- package/dist/base/configs/navigation.config/submenu/index.js.map +1 -1
- package/dist/base/configs/navigation.config/submenu/originacao/originacao.submenu.js +2 -0
- package/dist/base/configs/navigation.config/submenu/originacao/originacao.submenu.js.map +1 -1
- package/dist/base/configs/navigation.config/submenu/template/cadastros.submenu.js.map +1 -0
- package/dist/base/configs/navigation.config/submenu/{example → template}/config/example.submenu.js +3 -3
- package/dist/base/configs/navigation.config/submenu/template/config/example.submenu.js.map +1 -0
- package/dist/base/configs/navigation.config/submenu/{example → template}/config/exampleObject.submenu.js +3 -3
- package/dist/base/configs/navigation.config/submenu/template/config/exampleObject.submenu.js.map +1 -0
- package/dist/base/configs/navigation.config/submenu/template/template.submenu.js.map +1 -0
- package/dist/base/configs/navigation.config/submenu/ticket/cadastros.submenu.js +5 -1
- package/dist/base/configs/navigation.config/submenu/ticket/cadastros.submenu.js.map +1 -1
- package/dist/base/configs/navigation.config/submenu/ticket/config/relatorioTransferenciaArmazens.submenu.js +16 -0
- package/dist/base/configs/navigation.config/submenu/ticket/config/relatorioTransferenciaArmazens.submenu.js.map +1 -0
- package/dist/base/configs/navigation.config/submenu/ticket/config/relatorioVendasGraos.submenu.js +16 -0
- package/dist/base/configs/navigation.config/submenu/ticket/config/relatorioVendasGraos.submenu.js.map +1 -0
- package/dist/base/configs/navigation.config/submenu/ticket/relatorios.submenu.js +5 -13
- package/dist/base/configs/navigation.config/submenu/ticket/relatorios.submenu.js.map +1 -1
- package/dist/base/configs/navigation.config/submenu/trade/configs/contratoArmazenagemGraosTrade.submenu.js +16 -0
- package/dist/base/configs/navigation.config/submenu/trade/configs/contratoArmazenagemGraosTrade.submenu.js.map +1 -0
- package/dist/base/configs/navigation.config/submenu/trade/trade.submenu.js +8 -0
- package/dist/base/configs/navigation.config/submenu/trade/trade.submenu.js.map +1 -0
- package/dist/base/index.js +50 -40
- package/dist/base/index.js.map +1 -1
- package/dist/base/locales/lang/ptBR/modules/Ticket/ticket.nav.js +3 -1
- package/dist/base/locales/lang/ptBR/modules/Ticket/ticket.nav.js.map +1 -1
- package/dist/base/services/index.js +15 -5
- package/dist/base/services/index.js.map +1 -1
- package/dist/base/services/modules/DadosMestres/FavoritoMenu/FavoritoMenuService.js +35 -0
- package/dist/base/services/modules/DadosMestres/FavoritoMenu/FavoritoMenuService.js.map +1 -0
- package/dist/base/services/modules/DadosMestres/Sap/IncotermsService.js +9 -1
- package/dist/base/services/modules/DadosMestres/Sap/IncotermsService.js.map +1 -1
- package/dist/base/services/modules/DadosMestres/Sap/SafraService.js +9 -1
- package/dist/base/services/modules/DadosMestres/Sap/SafraService.js.map +1 -1
- package/dist/base/services/modules/HubFiscal/NfeService.js +3 -3
- package/dist/base/services/modules/HubFiscal/NfeService.js.map +1 -1
- package/dist/base/services/modules/SapService/Sap/ExecuteSapApiService.js +9 -1
- package/dist/base/services/modules/SapService/Sap/ExecuteSapApiService.js.map +1 -1
- package/dist/base/services/modules/Ticket/TicketService.js +16 -0
- package/dist/base/services/modules/Ticket/TicketService.js.map +1 -1
- package/dist/base/services/modules/agendamento/ContratoVendaService.js +2 -2
- package/dist/base/services/modules/agendamento/ContratoVendaService.js.map +1 -1
- package/dist/base/services/modules/centralNfe/cfop/CfopService.js +8 -0
- package/dist/base/services/modules/centralNfe/cfop/CfopService.js.map +1 -1
- package/dist/base/services/modules/centralNfe/historicoCfop/HistoricoCfopService.js +21 -0
- package/dist/base/services/modules/centralNfe/historicoCfop/HistoricoCfopService.js.map +1 -0
- package/dist/base/services/modules/centralNfe/vinculoOperacao/VinculoOperacaoService.js +7 -0
- package/dist/base/services/modules/centralNfe/vinculoOperacao/VinculoOperacaoService.js.map +1 -1
- package/dist/base/services/modules/compras/index.js +2 -0
- package/dist/base/services/modules/compras/index.js.map +1 -1
- package/dist/base/services/modules/compras/ordemCompra/ItemOrdemCompraService.js +14 -0
- package/dist/base/services/modules/compras/ordemCompra/ItemOrdemCompraService.js.map +1 -0
- package/dist/base/services/modules/dm/index.js +2 -1
- package/dist/base/services/modules/dm/municipio/MunicipioService.js +7 -0
- package/dist/base/services/modules/dm/municipio/MunicipioService.js.map +1 -1
- package/dist/base/services/modules/index.js +15 -5
- package/dist/base/services/modules/index.js.map +1 -1
- package/dist/base/services/modules/originacao/consumoManualSaldo/consumoManualSaldoService.js +50 -0
- package/dist/base/services/modules/originacao/consumoManualSaldo/consumoManualSaldoService.js.map +1 -0
- package/dist/base/services/modules/racao/carga/CargaService.js +14 -0
- package/dist/base/services/modules/racao/carga/CargaService.js.map +1 -1
- package/dist/base/services/modules/racao/index.js +3 -1
- package/dist/base/services/modules/template/example/ExampleService.js +26 -12
- package/dist/base/services/modules/template/example/ExampleService.js.map +1 -1
- package/dist/base/services/modules/template/exampleObject/ExampleObjectService.js +44 -0
- package/dist/base/services/modules/template/exampleObject/ExampleObjectService.js.map +1 -0
- package/dist/base/services/modules/template/index.js +5 -2
- package/dist/base/services/modules/trade/ContratoArmazenagemGraosTradeService.js +59 -0
- package/dist/base/services/modules/trade/ContratoArmazenagemGraosTradeService.js.map +1 -0
- package/dist/base/services/modules/transportadora/ContratoFrete/ContratoFreteService.js +14 -0
- package/dist/base/services/modules/transportadora/ContratoFrete/ContratoFreteService.js.map +1 -1
- package/dist/base/services/modules/transportadora/index.js +3 -1
- package/lib/@ecme/components/layouts/PostLoginLayout/PostLoginLayout.tsx +5 -1
- package/lib/@ecme/components/layouts/PostLoginLayout/components/CollapsibleSide.stories.tsx +2 -2
- package/lib/@ecme/components/layouts/PostLoginLayout/components/ContentOverlay.stories.tsx +2 -2
- package/lib/@ecme/components/layouts/PostLoginLayout/components/FrameLessSide.stories.tsx +2 -2
- package/lib/@ecme/components/layouts/PostLoginLayout/components/StackedSide.stories.tsx +2 -2
- package/lib/@ecme/components/layouts/PostLoginLayout/components/TopBarClassic.stories.tsx +2 -2
- package/lib/@ecme/components/template/Header.stories.tsx +2 -2
- package/lib/@ecme/components/template/Notification/Notification.tsx +2 -2
- package/lib/@ecme/components/template/OrbeAiWidget/OrbeAiChatDrawer.tsx +140 -0
- package/lib/@ecme/components/template/OrbeAiWidget/OrbeAiWidget.tsx +155 -0
- package/lib/@ecme/components/template/OrbeAiWidget/ResizeHandles.tsx +47 -0
- package/lib/@ecme/components/template/OrbeAiWidget/index.ts +1 -0
- package/lib/@ecme/components/template/OrbeAiWidget/useResizablePanel.ts +143 -0
- package/lib/@ecme/components/template/Search.stories.tsx +20 -5
- package/lib/@ecme/components/template/Search.tsx +370 -84
- package/lib/@ecme/components/ui/Dropdown/DropdownMenu.tsx +7 -1
- package/lib/@ecme/components/view/ChatBox/ChatBox.tsx +8 -0
- package/lib/@ecme/components/view/ChatBox/components/MessageList.tsx +26 -8
- package/lib/@ecme/configs/navigation.config/concepts.navigation.config.ts +0 -16
- package/lib/@ecme/configs/routes.config/conceptsRoute.ts +0 -9
- package/lib/@ecme/locales/index.ts +0 -4
- package/lib/@ecme/locales/lang/ptBR/nav.ts +1 -0
- package/lib/@ecme/mock/data/favoritosMenuData.ts +3 -0
- package/lib/@ecme/services/AiService.ts +165 -13
- package/lib/@ecme/services/aiAuthHeaders.ts +58 -0
- package/lib/@ecme/services/axios/AxiosBase.ts +45 -24
- package/lib/@ecme/services/axios/AxiosRequestIntrceptorConfigCallback.ts +10 -39
- package/lib/@ecme/services/sseParser.ts +75 -0
- package/lib/@ecme/views/concepts/ai/Chat/components/AiErrorMessage.tsx +28 -0
- package/lib/@ecme/views/concepts/ai/Chat/components/AiThinkingIndicator.tsx +24 -0
- package/lib/@ecme/views/concepts/ai/Chat/components/ApprovalCard.tsx +103 -0
- package/lib/@ecme/views/concepts/ai/Chat/components/ChatHistory.tsx +11 -27
- package/lib/@ecme/views/concepts/ai/Chat/components/ChatHistoryItem.tsx +7 -13
- package/lib/@ecme/views/concepts/ai/Chat/components/ChatHistoryRenameDialog.tsx +17 -8
- package/lib/@ecme/views/concepts/ai/Chat/components/ChatLandingView.tsx +58 -50
- package/lib/@ecme/views/concepts/ai/Chat/components/ChatView.tsx +115 -17
- package/lib/@ecme/views/concepts/ai/Chat/components/DataRequestCard.tsx +144 -0
- package/lib/@ecme/views/concepts/ai/Chat/components/ToolCallChip.tsx +218 -0
- package/lib/@ecme/views/concepts/ai/Chat/components/toolPresentation.ts +283 -0
- package/lib/@ecme/views/concepts/ai/Chat/hooks/useChatConversations.tsx +128 -0
- package/lib/@ecme/views/concepts/ai/Chat/hooks/useChatSend.ts +233 -28
- package/lib/@ecme/views/concepts/ai/Chat/hooks/useConversationMessages.ts +68 -0
- package/lib/@ecme/views/concepts/ai/Chat/store/generativeChatStore.ts +84 -13
- package/lib/@ecme/views/concepts/ai/Chat/types.ts +133 -29
- package/lib/@ecme/views/concepts/ai/Chat/utils.ts +33 -0
- package/lib/@ecme/views/dashboards/FavoritesLanding/FavoritesLanding.tsx +124 -0
- package/lib/@ecme/views/dashboards/FavoritesLanding/index.ts +3 -0
- package/lib/@ecme/views/dashboards/FavoritesLanding/types.ts +17 -0
- package/lib/@ecme/views/dashboards/FavoritesLanding/utils.ts +51 -0
- package/lib/@ecme/views/dashboards/index.ts +1 -3
- package/lib/@ecme/views/index.ts +1 -1
- package/lib/base/@types/api/request/dm/TCreateFavoritoMenuRequest.ts +3 -0
- package/lib/base/@types/api/request/dm/TReorderFavoritosMenuRequest.ts +3 -0
- package/lib/base/@types/api/request/originacao/TSimularConsumoManualSaldoRequest.ts +8 -0
- package/lib/base/@types/api/response/dadosMestres/TFavoritoMenuResponse.ts +7 -0
- package/lib/base/@types/api/response/originacao/TConsumoManualSaldoResponse.ts +22 -0
- package/lib/base/@types/api/response/originacao/TFindAllSaldoResponse.ts +1 -0
- package/lib/base/@types/api/response/originacao/TSimularConsumoManualSaldoResponse.ts +17 -0
- package/lib/base/@types/enums/originacao/ModoConsumoManual.ts +4 -0
- package/lib/base/@types/enums/originacao/TipoSaldoConsumivel.ts +5 -0
- package/lib/base/@types/models/racao/carga.ts +51 -0
- package/lib/base/@types/models/template/example.ts +46 -0
- package/lib/base/@types/models/template/{exampleObject → exampleObject.ts} +3 -5
- package/lib/base/@types/models/transportadora/irpf.ts +1 -0
- package/lib/base/@types/models/transportadora/irpfFaixaDesconto.ts +0 -1
- package/lib/base/components/forms/GenericForms/GenericArrayFormSection.tsx +1 -1
- package/lib/base/components/shared/AceitarProcessoDialog.tsx +13 -2
- package/lib/base/components/shared/AdicionarHistoricoDialog.tsx +16 -13
- package/lib/base/components/shared/CancelarProcessoDialog.tsx +16 -13
- package/lib/base/components/shared/ConcluirProcessoDialog.tsx +16 -13
- package/lib/base/components/shared/EncerrarProcessoDialog.tsx +16 -13
- package/lib/base/components/shared/ReabrirProcessoDialog.tsx +16 -13
- package/lib/base/components/shared/RetornarFluxAtendimentoDialog.tsx +14 -12
- package/lib/base/components/shared/TransferirParaAtendenteDialog.tsx +14 -12
- package/lib/base/components/shared/TransferirParaSolicitanteDialog.tsx +14 -12
- package/lib/base/components/shared/TransferirProcessoDialog.tsx +20 -12
- package/lib/base/configs/api.config.ts +2 -2
- package/lib/base/configs/endpoints.config/DadosMestres/FavoritoMenu/favoritoMenu.endpoint.config.ts +10 -0
- package/lib/base/configs/endpoints.config/DadosMestres/Sap/incoterms.endpoint.config.ts +1 -0
- package/lib/base/configs/endpoints.config/DadosMestres/Sap/safra.endpoint.config.ts +1 -0
- package/lib/base/configs/endpoints.config/HubFiscal/nfe.endpoint.config.ts +1 -1
- package/lib/base/configs/endpoints.config/SapService/Sap/executeSapApi.endpoint.config.ts +1 -0
- package/lib/base/configs/endpoints.config/Ticket/ticket.endpoint.config.ts +2 -0
- package/lib/base/configs/endpoints.config/agendamento/config/contratoVenda.ts +0 -1
- package/lib/base/configs/endpoints.config/centralNfe/centralNfe.ts +2 -0
- package/lib/base/configs/endpoints.config/centralNfe/config/cfop.ts +3 -2
- package/lib/base/configs/endpoints.config/centralNfe/config/historicoCfop.ts +8 -0
- package/lib/base/configs/endpoints.config/centralNfe/config/vinculoOperacao.ts +2 -1
- package/lib/base/configs/endpoints.config/compras/compras.ts +3 -1
- package/lib/base/configs/endpoints.config/compras/config/itemOrdemCompra.ts +7 -0
- package/lib/base/configs/endpoints.config/dm/config/municipio.ts +2 -1
- package/lib/base/configs/endpoints.config/endpoints.navigation.ts +5 -1
- package/lib/base/configs/endpoints.config/insumos/config/estoque.ts +2 -7
- package/lib/base/configs/endpoints.config/originacao/config/consumoManualSaldo.ts +9 -0
- package/lib/base/configs/endpoints.config/originacao/originacao.ts +2 -0
- package/lib/base/configs/endpoints.config/racao/config/carga.ts +2 -0
- package/lib/base/configs/endpoints.config/trade/config/contratoArmazenagemGraosTrade.ts +13 -0
- package/lib/base/configs/endpoints.config/trade/index.ts +7 -0
- package/lib/base/configs/endpoints.config/transportadora/contratoFrete.ts +2 -0
- package/lib/base/configs/navigation.config/modules.navigation.ts +2 -0
- package/lib/base/configs/navigation.config/modules.submenu/gestaoServicos/submenu.gestaoServicos.ts +107 -0
- package/lib/base/configs/navigation.config/modules.submenu/index.ts +1 -0
- package/lib/base/configs/navigation.config/modules.submenu/originacao/consumoManualSaldo/submenu.consumoManualSaldo.ts +16 -0
- package/lib/base/configs/navigation.config/modules.submenu/template/cadastros/submenu.example.ts +1 -1
- package/lib/base/configs/navigation.config/modules.submenu/template/submenu.template.ts +2 -3
- package/lib/base/configs/navigation.config/modules.submenu/trade/submenu.trade.ts +18 -0
- package/lib/base/configs/navigation.config/submenu/agendamento/config/relatorio-cotas.ts +1 -1
- package/lib/base/configs/navigation.config/submenu/centralNfe/cadastros.submenu.ts +2 -0
- package/lib/base/configs/navigation.config/submenu/centralNfe/config/cfop.submenu.ts +16 -0
- package/lib/base/configs/navigation.config/submenu/index.ts +1 -2
- package/lib/base/configs/navigation.config/submenu/originacao/originacao.submenu.ts +2 -0
- package/lib/base/configs/navigation.config/submenu/{example → template}/config/example.submenu.ts +3 -3
- package/lib/base/configs/navigation.config/submenu/{example → template}/config/exampleObject.submenu.ts +3 -3
- package/lib/base/configs/navigation.config/submenu/ticket/cadastros.submenu.ts +4 -0
- package/lib/base/configs/navigation.config/submenu/ticket/config/relatorioTransferenciaArmazens.submenu.ts +16 -0
- package/lib/base/configs/navigation.config/submenu/ticket/config/relatorioVendasGraos.submenu.ts +16 -0
- package/lib/base/configs/navigation.config/submenu/ticket/relatorios.submenu.ts +4 -14
- package/lib/base/configs/navigation.config/submenu/trade/configs/contratoArmazenagemGraosTrade.submenu.ts +16 -0
- package/lib/base/configs/navigation.config/submenu/trade/trade.submenu.ts +8 -0
- package/lib/base/locales/lang/ptBR/modules/Ticket/ticket.nav.ts +2 -0
- package/lib/base/services/modules/DadosMestres/FavoritoMenu/FavoritoMenuService.ts +35 -0
- package/lib/base/services/modules/DadosMestres/Sap/IncotermsService.ts +8 -0
- package/lib/base/services/modules/DadosMestres/Sap/SafraService.ts +8 -0
- package/lib/base/services/modules/HubFiscal/NfeService.ts +2 -2
- package/lib/base/services/modules/SapService/Sap/ExecuteSapApiService.ts +8 -0
- package/lib/base/services/modules/Ticket/TicketService.ts +16 -0
- package/lib/base/services/modules/agendamento/ContratoVendaService.ts +2 -2
- package/lib/base/services/modules/centralNfe/cfop/CfopService.ts +9 -1
- package/lib/base/services/modules/centralNfe/historicoCfop/HistoricoCfopService.ts +21 -0
- package/lib/base/services/modules/centralNfe/vinculoOperacao/VinculoOperacaoService.ts +7 -0
- package/lib/base/services/modules/compras/index.ts +2 -1
- package/lib/base/services/modules/compras/ordemCompra/ItemOrdemCompraService.ts +12 -0
- package/lib/base/services/modules/dm/municipio/MunicipioService.tsx +7 -0
- package/lib/base/services/modules/originacao/consumoManualSaldo/consumoManualSaldoService.ts +54 -0
- package/lib/base/services/modules/racao/carga/CargaService.ts +15 -1
- package/lib/base/services/modules/template/example/ExampleService.ts +37 -19
- package/lib/base/services/modules/template/exampleObject/ExampleObjectService.ts +45 -0
- package/lib/base/services/modules/template/index.ts +2 -2
- package/lib/base/services/modules/trade/ContratoArmazenagemGraosTradeService.ts +62 -0
- package/lib/base/services/modules/transportadora/ContratoFrete/ContratoFreteService.ts +14 -0
- package/package.json +1 -1
- package/dist/@types/base/configs/navigation.config/submenu/example/cadastros.submenu.d.ts.map +0 -1
- package/dist/@types/base/configs/navigation.config/submenu/example/config/example.submenu.d.ts.map +0 -1
- package/dist/@types/base/configs/navigation.config/submenu/example/config/exampleObject.submenu.d.ts.map +0 -1
- package/dist/@types/base/configs/navigation.config/submenu/example/template.submenu.d.ts.map +0 -1
- package/dist/@types/base/services/modules/template/example/ExampleObjectService.d.ts +0 -6
- package/dist/@types/base/services/modules/template/example/ExampleObjectService.d.ts.map +0 -1
- package/dist/base/configs/navigation.config/submenu/example/cadastros.submenu.js.map +0 -1
- package/dist/base/configs/navigation.config/submenu/example/config/example.submenu.js.map +0 -1
- package/dist/base/configs/navigation.config/submenu/example/config/exampleObject.submenu.js.map +0 -1
- package/dist/base/configs/navigation.config/submenu/example/template.submenu.js.map +0 -1
- package/dist/base/services/modules/template/example/ExampleObjectService.js +0 -37
- package/dist/base/services/modules/template/example/ExampleObjectService.js.map +0 -1
- package/lib/base/@types/models/template/example +0 -37
- package/lib/base/services/modules/template/example/ExampleObjectService.ts +0 -34
- /package/dist/@types/base/configs/navigation.config/submenu/{example → template}/cadastros.submenu.d.ts +0 -0
- /package/dist/@types/base/configs/navigation.config/submenu/{example → template}/config/example.submenu.d.ts +0 -0
- /package/dist/@types/base/configs/navigation.config/submenu/{example → template}/config/exampleObject.submenu.d.ts +0 -0
- /package/dist/@types/base/configs/navigation.config/submenu/{example → template}/template.submenu.d.ts +0 -0
- /package/dist/base/configs/navigation.config/submenu/{example → template}/cadastros.submenu.js +0 -0
- /package/dist/base/configs/navigation.config/submenu/{example → template}/template.submenu.js +0 -0
- /package/lib/base/configs/navigation.config/submenu/{example → template}/cadastros.submenu.ts +0 -0
- /package/lib/base/configs/navigation.config/submenu/{example → template}/template.submenu.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatView.js","sources":["../../../../../../../lib/@ecme/views/concepts/ai/Chat/components/ChatView.tsx"],"sourcesContent":["import { useRef, useEffect, useMemo } from 'react'\nimport Card from '@/components/ui/Card'\nimport ChatBox from '@/components/view/ChatBox'\nimport ChatLandingView from './ChatLandingView'\nimport ChatMobileNav from './ChatMobileNav'\nimport ChatCustomContent from './ChatCustomContent'\nimport ChatCustomAction from './ChatCustomAction'\nimport { usGenerativeChatStore } from '../store/generativeChatStore'\nimport useChatSend from '../hooks/useChatSend'\nimport type { ScrollBarRef } from '@/components/ui/ScrollBar'\n\nconst ChatView = () => {\n const scrollRef = useRef<ScrollBarRef>(null)\n const { selectedConversation, chatHistory, isTyping, disabledChatFresh } =\n usGenerativeChatStore()\n const { handleSend } = useChatSend()\n\n const scrollToBottom = () => {\n if (scrollRef.current?.getScrollElement) {\n const scrollElement = scrollRef.current.getScrollElement()\n if (scrollElement) {\n scrollElement.scrollTop = scrollElement.scrollHeight\n }\n }\n }\n\n useEffect(() => {\n scrollToBottom()\n }, [selectedConversation, chatHistory])\n\n const messageList = useMemo(() => {\n const chat = chatHistory.find(\n (chat) => chat.id === selectedConversation,\n )\n return chat?.conversation || []\n }, [selectedConversation, chatHistory])\n\n const handleInputChange = async ({\n value,\n }: {\n value: string\n attachments?: File[]\n }) => {\n await handleSend(value)\n }\n\n const handleFinish = (id: string) => {\n disabledChatFresh(id)\n scrollToBottom()\n }\n\n return (\n <Card className=\"flex-1 h-full\" bodyClass=\"h-full\">\n <ChatMobileNav />\n <ChatBox\n ref={scrollRef}\n messageList={messageList}\n placeholder=\"Enter a prompt here\"\n showMessageList={Boolean(selectedConversation)}\n showAvatar={true}\n avatarGap={true}\n containerClass=\"h-[calc(100%-30px)] xl:h-full\"\n messageListClass=\"h-[calc(100%-100px)] xl:h-[calc(100%-70px)]\"\n typing={\n isTyping\n ? {\n id: 'ai',\n name: 'Chat AI',\n avatarImageUrl: '/img/thumbs/ai.jpg',\n }\n : false\n }\n customRenderer={(message) => {\n if (message.sender.id === 'ai') {\n return (\n <ChatCustomContent\n content={message.content as string}\n triggerTyping={\n message.fresh ? message.fresh : false\n }\n onFinish={() => handleFinish(message.id)}\n />\n )\n }\n\n return message.content\n }}\n customAction={(message) => {\n if (message.sender.id === 'ai') {\n return (\n <ChatCustomAction\n content={message.content as string}\n />\n )\n }\n\n return null\n }}\n onInputChange={handleInputChange}\n >\n {!selectedConversation && <ChatLandingView />}\n </ChatBox>\n </Card>\n )\n}\n\nexport default ChatView\n"],"names":["chat"],"mappings":";;;;;;;;;;;;AAWA,MAAM,WAAW,MAAM;AACnB,QAAM,YAAY,OAAqB,IAAI;AAC3C,QAAM,EAAE,sBAAsB,aAAa,UAAU,kBAAA,IACjD,sBAAA;AACJ,QAAM,EAAE,WAAA,IAAe,YAAA;AAEvB,QAAM,iBAAiB,MAAM;AACzB,QAAI,UAAU,SAAS,kBAAkB;AACrC,YAAM,gBAAgB,UAAU,QAAQ,iBAAA;AACxC,UAAI,eAAe;AACf,sBAAc,YAAY,cAAc;AAAA,MAC5C;AAAA,IACJ;AAAA,EACJ;AAEA,YAAU,MAAM;AACZ,mBAAA;AAAA,EACJ,GAAG,CAAC,sBAAsB,WAAW,CAAC;AAEtC,QAAM,cAAc,QAAQ,MAAM;AAC9B,UAAM,OAAO,YAAY;AAAA,MACrB,CAACA,UAASA,MAAK,OAAO;AAAA,IAAA;AAE1B,WAAO,MAAM,gBAAgB,CAAA;AAAA,EACjC,GAAG,CAAC,sBAAsB,WAAW,CAAC;AAEtC,QAAM,oBAAoB,OAAO;AAAA,IAC7B;AAAA,EAAA,MAIE;AACF,UAAM,WAAW,KAAK;AAAA,EAC1B;AAEA,QAAM,eAAe,CAAC,OAAe;AACjC,sBAAkB,EAAE;AACpB,mBAAA;AAAA,EACJ;AAEA,SACI,qBAAC,MAAA,EAAK,WAAU,iBAAgB,WAAU,UACtC,UAAA;AAAA,IAAA,oBAAC,eAAA,EAAc;AAAA,IACf;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,KAAK;AAAA,QACL;AAAA,QACA,aAAY;AAAA,QACZ,iBAAiB,QAAQ,oBAAoB;AAAA,QAC7C,YAAY;AAAA,QACZ,WAAW;AAAA,QACX,gBAAe;AAAA,QACf,kBAAiB;AAAA,QACjB,QACI,WACM;AAAA,UACI,IAAI;AAAA,UACJ,MAAM;AAAA,UACN,gBAAgB;AAAA,QAAA,IAEpB;AAAA,QAEV,gBAAgB,CAAC,YAAY;AACzB,cAAI,QAAQ,OAAO,OAAO,MAAM;AAC5B,mBACI;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,SAAS,QAAQ;AAAA,gBACjB,eACI,QAAQ,QAAQ,QAAQ,QAAQ;AAAA,gBAEpC,UAAU,MAAM,aAAa,QAAQ,EAAE;AAAA,cAAA;AAAA,YAAA;AAAA,UAGnD;AAEA,iBAAO,QAAQ;AAAA,QACnB;AAAA,QACA,cAAc,CAAC,YAAY;AACvB,cAAI,QAAQ,OAAO,OAAO,MAAM;AAC5B,mBACI;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,SAAS,QAAQ;AAAA,cAAA;AAAA,YAAA;AAAA,UAG7B;AAEA,iBAAO;AAAA,QACX;AAAA,QACA,eAAe;AAAA,QAEd,UAAA,CAAC,wBAAwB,oBAAC,iBAAA,CAAA,CAAgB;AAAA,MAAA;AAAA,IAAA;AAAA,EAC/C,GACJ;AAER;"}
|
|
1
|
+
{"version":3,"file":"ChatView.js","sources":["../../../../../../../lib/@ecme/views/concepts/ai/Chat/components/ChatView.tsx"],"sourcesContent":["import { useRef, useEffect, useMemo } from 'react'\nimport Card from '@/components/ui/Card'\nimport ChatBox from '@/components/view/ChatBox'\nimport ChatLandingView from './ChatLandingView'\nimport ChatMobileNav from './ChatMobileNav'\nimport ChatCustomContent from './ChatCustomContent'\nimport ChatCustomAction from './ChatCustomAction'\nimport AiThinkingIndicator from './AiThinkingIndicator'\nimport AiErrorMessage from './AiErrorMessage'\nimport ToolCallChip from './ToolCallChip'\nimport ApprovalCard from './ApprovalCard'\nimport DataRequestCard from './DataRequestCard'\nimport { usGenerativeChatStore } from '../store/generativeChatStore'\nimport useChatSend from '../hooks/useChatSend'\nimport useConversationMessages from '../hooks/useConversationMessages'\nimport type { Conversation } from '../types'\nimport type { ScrollBarRef } from '@/components/ui/ScrollBar'\n\n/**\n * O balao de fala do agente, desenhado aqui em vez de vir do ChatBox.\n *\n * O `botBubbleClass` abaixo zera o balao que o Message desenharia, para os chips\n * de ferramenta e o card de aprovacao ficarem FORA dele — antes tudo dividia a\n * mesma caixa cinza e as ferramentas eram lidas como uma segunda mensagem.\n * Usado tambem pelo indicador de \"pensando\", que passa pelo mesmo balao zerado.\n *\n * Repete `prose text-sm` do balao original de proposito: o reset de margem do\n * @tailwindcss/typography e `.prose > :first-child`, filho DIRETO. Sem o `prose`\n * aqui, o markdown ficaria um nivel abaixo do container e o primeiro paragrafo\n * voltaria a ter margem, inflando todos os baloes.\n */\nconst BALAO_AGENTE =\n 'prose rounded-xl bg-gray-100 px-5 py-2.5 text-sm text-gray-900 dark:bg-gray-700 dark:text-gray-100'\n\ntype ChatViewProps = {\n /**\n * Mostra o drawer de histórico do ChatMobileNav abaixo de xl. O widget\n * flutuante desliga, porque tem o próprio drawer dentro do painel.\n */\n showMobileNav?: boolean\n}\n\nconst ChatView = ({ showMobileNav = true }: ChatViewProps) => {\n const scrollRef = useRef<ScrollBarRef>(null)\n const { selectedConversation, chatHistory, isTyping, disabledChatFresh } =\n usGenerativeChatStore()\n const { handleSend, handleApproval, handleDataSubmit } = useChatSend()\n // Conversa aberta da lista: as mensagens vêm do backend na primeira vez.\n const { carregando } = useConversationMessages()\n\n const scrollToBottom = () => {\n if (scrollRef.current?.getScrollElement) {\n const scrollElement = scrollRef.current.getScrollElement()\n if (scrollElement) {\n scrollElement.scrollTop = scrollElement.scrollHeight\n }\n }\n }\n\n useEffect(() => {\n scrollToBottom()\n }, [selectedConversation, chatHistory])\n\n const messageList = useMemo(() => {\n const chat = chatHistory.find(\n (chat) => chat.id === selectedConversation,\n )\n return chat?.conversation || []\n }, [selectedConversation, chatHistory])\n\n const handleInputChange = async ({\n value,\n }: {\n value: string\n attachments?: File[]\n }) => {\n await handleSend(value)\n }\n\n const handleFinish = (id: string) => {\n disabledChatFresh(id)\n scrollToBottom()\n }\n\n return (\n <Card className=\"flex-1 h-full\" bodyClass=\"h-full\">\n {showMobileNav && <ChatMobileNav />}\n <ChatBox\n ref={scrollRef}\n messageList={messageList}\n placeholder=\"Pergunte algo sobre o Orbe Agro…\"\n showMessageList={Boolean(selectedConversation)}\n showAvatar={false}\n avatarGap={false}\n myBubbleClass=\"bg-primary text-white\"\n botBubbleClass=\"bg-transparent dark:bg-transparent p-0 rounded-none\"\n errorBubbleClass=\"bg-red-50 dark:bg-red-500/10 border border-red-200 dark:border-red-500/20\"\n renderTyping={() => (\n <div className={BALAO_AGENTE}>\n <AiThinkingIndicator />\n </div>\n )}\n containerClass={\n showMobileNav ? 'h-[calc(100%-30px)] xl:h-full' : 'h-full'\n }\n messageListClass=\"h-[calc(100%-100px)] xl:h-[calc(100%-70px)]\"\n typing={\n isTyping || carregando\n ? {\n id: 'ai',\n name: 'Chat AI',\n avatarImageUrl: '/img/thumbs/ai.jpg',\n }\n : false\n }\n customRenderer={(message) => {\n if (message.isError) {\n return <AiErrorMessage />\n }\n\n if (message.sender.id === 'ai') {\n // As ferramentas e as pausas chegam pelo streaming e\n // vivem no Conversation; o tipo do ChatBox nao os conhece.\n const { tools, pendingApproval, pendingInput } =\n message as Conversation\n // Enquanto as ferramentas rodam o conteudo ainda e '':\n // sem esta guarda sobraria um balao cinza vazio.\n const temTexto = Boolean(\n (message.content as string)?.trim(),\n )\n\n return (\n <div className=\"flex flex-col items-start gap-1.5\">\n {tools?.map((tool) => (\n <ToolCallChip key={tool.id} tool={tool} />\n ))}\n {temTexto && (\n <div className={BALAO_AGENTE}>\n <ChatCustomContent\n content={message.content as string}\n triggerTyping={\n message.fresh\n ? message.fresh\n : false\n }\n onFinish={() =>\n handleFinish(message.id)\n }\n />\n </div>\n )}\n {pendingInput && (\n <DataRequestCard\n input={pendingInput}\n onSubmit={(dados) =>\n handleDataSubmit(\n selectedConversation,\n message.id,\n dados,\n )\n }\n />\n )}\n {pendingApproval && (\n <ApprovalCard\n approval={pendingApproval}\n onDecide={(aprovado) =>\n handleApproval(\n selectedConversation,\n message.id,\n aprovado,\n )\n }\n />\n )}\n </div>\n )\n }\n\n return message.content\n }}\n customAction={(message) => {\n if (message.sender.id === 'ai' && !message.isError) {\n return (\n <ChatCustomAction\n content={message.content as string}\n />\n )\n }\n\n return null\n }}\n onInputChange={handleInputChange}\n >\n {!selectedConversation && (\n <div className=\"flex-1 min-h-0 overflow-y-auto\">\n <ChatLandingView />\n </div>\n )}\n </ChatBox>\n </Card>\n )\n}\n\nexport default ChatView\n"],"names":["chat"],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { TbForms } from "react-icons/tb";
|
|
4
|
+
import "../../../../../components/ui/Button/index.js";
|
|
5
|
+
import "../../../../../components/ui/Input/index.js";
|
|
6
|
+
import "../../../../../components/ui/Select/index.js";
|
|
7
|
+
import { tipoDoCampo, rotularCampo, opcoesDoCampo } from "./toolPresentation.js";
|
|
8
|
+
import Select from "../../../../../components/ui/Select/Select.js";
|
|
9
|
+
import Input from "../../../../../components/ui/Input/Input.js";
|
|
10
|
+
import Button from "../../../../../components/ui/Button/Button.js";
|
|
11
|
+
const DataRequestCard = ({ input, onSubmit }) => {
|
|
12
|
+
const [valores, setValores] = useState({});
|
|
13
|
+
const [enviando, setEnviando] = useState(null);
|
|
14
|
+
const preencher = (campo, valor) => setValores((atual) => ({ ...atual, [campo]: valor }));
|
|
15
|
+
const completo = input.campos.every((campo) => valores[campo]?.trim());
|
|
16
|
+
const enviar = () => {
|
|
17
|
+
setEnviando("enviar");
|
|
18
|
+
const dados = Object.fromEntries(
|
|
19
|
+
input.campos.map((campo) => {
|
|
20
|
+
const bruto = valores[campo].trim();
|
|
21
|
+
const numero = tipoDoCampo(campo) === "numero" ? Number(bruto) : NaN;
|
|
22
|
+
return [campo, Number.isNaN(numero) ? bruto : numero];
|
|
23
|
+
})
|
|
24
|
+
);
|
|
25
|
+
onSubmit(dados);
|
|
26
|
+
};
|
|
27
|
+
const cancelar = () => {
|
|
28
|
+
setEnviando("cancelar");
|
|
29
|
+
onSubmit(null);
|
|
30
|
+
};
|
|
31
|
+
return /* @__PURE__ */ jsxs("div", { className: "not-prose mt-1 overflow-hidden rounded-xl border border-gray-200 bg-white shadow-sm dark:border-gray-700 dark:bg-gray-800", children: [
|
|
32
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 border-b border-gray-200 px-4 py-2.5 dark:border-gray-700", children: [
|
|
33
|
+
/* @__PURE__ */ jsx(TbForms, { size: 16, className: "text-gray-400 dark:text-gray-500" }),
|
|
34
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs font-semibold uppercase tracking-wide text-gray-500 dark:text-gray-400", children: "Dados necessários" })
|
|
35
|
+
] }),
|
|
36
|
+
/* @__PURE__ */ jsxs("div", { className: "px-4 py-3.5", children: [
|
|
37
|
+
/* @__PURE__ */ jsx("div", { className: "mb-3 text-sm text-gray-500 dark:text-gray-400", children: "Preencha os campos abaixo para eu continuar." }),
|
|
38
|
+
/* @__PURE__ */ jsx("div", { className: "flex flex-col gap-3", children: input.campos.map((campo) => {
|
|
39
|
+
const rotulo = rotularCampo(campo);
|
|
40
|
+
const opcoes = opcoesDoCampo(campo);
|
|
41
|
+
return /* @__PURE__ */ jsxs("label", { className: "flex flex-col gap-1", children: [
|
|
42
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm text-gray-600 dark:text-gray-300", children: rotulo }),
|
|
43
|
+
opcoes.length ? /* @__PURE__ */ jsx(
|
|
44
|
+
Select,
|
|
45
|
+
{
|
|
46
|
+
options: opcoes,
|
|
47
|
+
value: opcoes.filter(
|
|
48
|
+
(opcao) => opcao.value === valores[campo]
|
|
49
|
+
),
|
|
50
|
+
placeholder: `Selecione ${rotulo.toLowerCase()}`,
|
|
51
|
+
isDisabled: enviando !== null,
|
|
52
|
+
onChange: (opcao) => preencher(
|
|
53
|
+
campo,
|
|
54
|
+
opcao?.value ?? ""
|
|
55
|
+
)
|
|
56
|
+
}
|
|
57
|
+
) : /* @__PURE__ */ jsx(
|
|
58
|
+
Input,
|
|
59
|
+
{
|
|
60
|
+
type: tipoDoCampo(campo) === "numero" ? "number" : "text",
|
|
61
|
+
value: valores[campo] ?? "",
|
|
62
|
+
disabled: enviando !== null,
|
|
63
|
+
placeholder: `Informe ${rotulo.toLowerCase()}`,
|
|
64
|
+
onChange: (evento) => preencher(campo, evento.target.value)
|
|
65
|
+
}
|
|
66
|
+
)
|
|
67
|
+
] }, campo);
|
|
68
|
+
}) }),
|
|
69
|
+
/* @__PURE__ */ jsxs("div", { className: "mt-4 flex items-center gap-2", children: [
|
|
70
|
+
/* @__PURE__ */ jsx(
|
|
71
|
+
Button,
|
|
72
|
+
{
|
|
73
|
+
variant: "solid",
|
|
74
|
+
size: "sm",
|
|
75
|
+
loading: enviando === "enviar",
|
|
76
|
+
disabled: !completo || enviando !== null,
|
|
77
|
+
onClick: enviar,
|
|
78
|
+
children: "Enviar"
|
|
79
|
+
}
|
|
80
|
+
),
|
|
81
|
+
/* @__PURE__ */ jsx(
|
|
82
|
+
Button,
|
|
83
|
+
{
|
|
84
|
+
size: "sm",
|
|
85
|
+
loading: enviando === "cancelar",
|
|
86
|
+
disabled: enviando !== null,
|
|
87
|
+
onClick: cancelar,
|
|
88
|
+
children: "Cancelar"
|
|
89
|
+
}
|
|
90
|
+
),
|
|
91
|
+
/* @__PURE__ */ jsx("span", { className: "ml-auto text-xs text-gray-400 dark:text-gray-500", children: "Você ainda confirma antes de gravar" })
|
|
92
|
+
] })
|
|
93
|
+
] })
|
|
94
|
+
] });
|
|
95
|
+
};
|
|
96
|
+
export {
|
|
97
|
+
DataRequestCard as default
|
|
98
|
+
};
|
|
99
|
+
//# sourceMappingURL=DataRequestCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataRequestCard.js","sources":["../../../../../../../lib/@ecme/views/concepts/ai/Chat/components/DataRequestCard.tsx"],"sourcesContent":["import { useState } from 'react'\nimport { TbForms } from 'react-icons/tb'\nimport Button from '@/components/ui/Button'\nimport Input from '@/components/ui/Input'\nimport Select from '@/components/ui/Select'\nimport { opcoesDoCampo, rotularCampo, tipoDoCampo } from './toolPresentation'\nimport type { PendingInput } from '../types'\n\ntype DataRequestCardProps = {\n input: PendingInput\n /** `null` = o usuario fechou sem preencher. */\n onSubmit: (dados: Record<string, unknown> | null) => void\n}\n\n/**\n * Formulario dos campos que faltam para criar um registro no ERP.\n *\n * O agente fica PARADO enquanto este card estiver na tela — ele so volta a\n * responder depois do envio. Por isso divide o visual do ApprovalCard: sao as\n * duas paradas do fluxo, e o usuario deve reconhece-las como a mesma coisa.\n *\n * Os valores vao para o modelo, que monta a chamada final. Por isso o envio nao\n * valida tipo: o `type=number` e o select sao conveniencia de digitacao, nao\n * regra de negocio — quem valida de verdade e o backend do ERP.\n */\nconst DataRequestCard = ({ input, onSubmit }: DataRequestCardProps) => {\n const [valores, setValores] = useState<Record<string, string>>({})\n const [enviando, setEnviando] = useState<'enviar' | 'cancelar' | null>(null)\n\n const preencher = (campo: string, valor: string) =>\n setValores((atual) => ({ ...atual, [campo]: valor }))\n\n // Exigir todos evita uma ida e volta: faltando um, o agente pediria de novo.\n const completo = input.campos.every((campo) => valores[campo]?.trim())\n\n const enviar = () => {\n setEnviando('enviar')\n // Numeros vao como number; o resto como texto. O modelo aceita os dois,\n // mas o tipo certo evita que ele precise adivinhar.\n const dados = Object.fromEntries(\n input.campos.map((campo) => {\n const bruto = valores[campo].trim()\n const numero =\n tipoDoCampo(campo) === 'numero' ? Number(bruto) : NaN\n return [campo, Number.isNaN(numero) ? bruto : numero]\n }),\n )\n onSubmit(dados)\n }\n\n const cancelar = () => {\n setEnviando('cancelar')\n onSubmit(null)\n }\n\n return (\n <div className=\"not-prose mt-1 overflow-hidden rounded-xl border border-gray-200 bg-white shadow-sm dark:border-gray-700 dark:bg-gray-800\">\n <div className=\"flex items-center gap-2 border-b border-gray-200 px-4 py-2.5 dark:border-gray-700\">\n <TbForms size={16} className=\"text-gray-400 dark:text-gray-500\" />\n <span className=\"text-xs font-semibold uppercase tracking-wide text-gray-500 dark:text-gray-400\">\n Dados necessários\n </span>\n </div>\n\n <div className=\"px-4 py-3.5\">\n <div className=\"mb-3 text-sm text-gray-500 dark:text-gray-400\">\n Preencha os campos abaixo para eu continuar.\n </div>\n\n <div className=\"flex flex-col gap-3\">\n {input.campos.map((campo) => {\n const rotulo = rotularCampo(campo)\n const opcoes = opcoesDoCampo(campo)\n\n return (\n <label key={campo} className=\"flex flex-col gap-1\">\n <span className=\"text-sm text-gray-600 dark:text-gray-300\">\n {rotulo}\n </span>\n {opcoes.length ? (\n <Select\n options={opcoes}\n value={opcoes.filter(\n (opcao) =>\n opcao.value === valores[campo],\n )}\n placeholder={`Selecione ${rotulo.toLowerCase()}`}\n isDisabled={enviando !== null}\n onChange={(opcao) =>\n preencher(\n campo,\n (opcao as { value: string } | null)\n ?.value ?? '',\n )\n }\n />\n ) : (\n <Input\n type={\n tipoDoCampo(campo) === 'numero'\n ? 'number'\n : 'text'\n }\n value={valores[campo] ?? ''}\n disabled={enviando !== null}\n placeholder={`Informe ${rotulo.toLowerCase()}`}\n onChange={(evento) =>\n preencher(campo, evento.target.value)\n }\n />\n )}\n </label>\n )\n })}\n </div>\n\n <div className=\"mt-4 flex items-center gap-2\">\n <Button\n variant=\"solid\"\n size=\"sm\"\n loading={enviando === 'enviar'}\n disabled={!completo || enviando !== null}\n onClick={enviar}\n >\n Enviar\n </Button>\n <Button\n size=\"sm\"\n loading={enviando === 'cancelar'}\n disabled={enviando !== null}\n onClick={cancelar}\n >\n Cancelar\n </Button>\n <span className=\"ml-auto text-xs text-gray-400 dark:text-gray-500\">\n Você ainda confirma antes de gravar\n </span>\n </div>\n </div>\n </div>\n )\n}\n\nexport default DataRequestCard\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { TbClock, TbLoader2, TbAlertTriangle, TbCheck, TbChevronDown } from "react-icons/tb";
|
|
4
|
+
import classNames from "../../../../../components/ui/utils/classNames.js";
|
|
5
|
+
import { iconeFerramenta, camposVisiveis, rotularExecucao, rotularFerramenta } from "./toolPresentation.js";
|
|
6
|
+
const estadoDe = (tool) => {
|
|
7
|
+
if (tool.awaitingApproval) {
|
|
8
|
+
return {
|
|
9
|
+
texto: "Aguardando confirmação",
|
|
10
|
+
Icone: TbClock,
|
|
11
|
+
classe: "text-amber-600 dark:text-amber-400",
|
|
12
|
+
mostrarTexto: true
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
if (tool.running) {
|
|
16
|
+
return {
|
|
17
|
+
texto: "Em andamento",
|
|
18
|
+
Icone: TbLoader2,
|
|
19
|
+
classe: "text-blue-600 dark:text-blue-400"
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
if (tool.isError) {
|
|
23
|
+
return {
|
|
24
|
+
texto: "Não concluída",
|
|
25
|
+
Icone: TbAlertTriangle,
|
|
26
|
+
classe: "text-red-600 dark:text-red-400",
|
|
27
|
+
mostrarTexto: true
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
texto: "Concluída",
|
|
32
|
+
Icone: TbCheck,
|
|
33
|
+
classe: "text-emerald-600 dark:text-emerald-400"
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
const ToolCallChip = ({ tool }) => {
|
|
37
|
+
const [aberto, setAberto] = useState(false);
|
|
38
|
+
const estado = estadoDe(tool);
|
|
39
|
+
const IconeFerramenta = iconeFerramenta(tool.name);
|
|
40
|
+
const emAndamento = tool.running && !tool.awaitingApproval;
|
|
41
|
+
const campos = camposVisiveis(tool.args, tool.name);
|
|
42
|
+
const rotulo = emAndamento ? `${rotularExecucao(tool.name)}…` : rotularFerramenta(tool.name);
|
|
43
|
+
return (
|
|
44
|
+
// not-prose: o balao do agente e `prose`, que aplicaria margens de
|
|
45
|
+
// tipografia no dl/dt/dd/pre daqui e desmontaria a compactacao.
|
|
46
|
+
/* @__PURE__ */ jsxs("div", { className: "not-prose max-w-full", children: [
|
|
47
|
+
/* @__PURE__ */ jsxs(
|
|
48
|
+
"button",
|
|
49
|
+
{
|
|
50
|
+
type: "button",
|
|
51
|
+
className: "inline-flex w-fit max-w-full items-center gap-1.5 rounded-full border border-gray-200 px-2.5 py-1 text-left transition-colors hover:border-gray-300 hover:bg-gray-50 dark:border-gray-700 dark:hover:border-gray-600 dark:hover:bg-gray-800/60",
|
|
52
|
+
"aria-expanded": aberto,
|
|
53
|
+
title: `${rotulo} — ${estado.texto}`,
|
|
54
|
+
onClick: () => setAberto((atual) => !atual),
|
|
55
|
+
children: [
|
|
56
|
+
/* @__PURE__ */ jsx(
|
|
57
|
+
IconeFerramenta,
|
|
58
|
+
{
|
|
59
|
+
size: 13,
|
|
60
|
+
className: "shrink-0 text-gray-400 dark:text-gray-500"
|
|
61
|
+
}
|
|
62
|
+
),
|
|
63
|
+
/* @__PURE__ */ jsx("span", { className: "truncate text-xs font-medium text-gray-600 dark:text-gray-300", children: rotulo }),
|
|
64
|
+
/* @__PURE__ */ jsxs(
|
|
65
|
+
"span",
|
|
66
|
+
{
|
|
67
|
+
className: classNames(
|
|
68
|
+
"flex shrink-0 items-center gap-1 text-xs font-medium",
|
|
69
|
+
estado.classe
|
|
70
|
+
),
|
|
71
|
+
children: [
|
|
72
|
+
/* @__PURE__ */ jsx(
|
|
73
|
+
estado.Icone,
|
|
74
|
+
{
|
|
75
|
+
size: 12,
|
|
76
|
+
className: emAndamento ? "motion-safe:animate-spin" : ""
|
|
77
|
+
}
|
|
78
|
+
),
|
|
79
|
+
estado.mostrarTexto && estado.texto
|
|
80
|
+
]
|
|
81
|
+
}
|
|
82
|
+
),
|
|
83
|
+
/* @__PURE__ */ jsx(
|
|
84
|
+
TbChevronDown,
|
|
85
|
+
{
|
|
86
|
+
size: 12,
|
|
87
|
+
className: classNames(
|
|
88
|
+
"shrink-0 text-gray-400 transition-transform",
|
|
89
|
+
aberto && "rotate-180"
|
|
90
|
+
)
|
|
91
|
+
}
|
|
92
|
+
)
|
|
93
|
+
]
|
|
94
|
+
}
|
|
95
|
+
),
|
|
96
|
+
aberto && /* @__PURE__ */ jsxs("div", { className: "mt-1 rounded-lg border border-gray-200 px-2.5 py-2 dark:border-gray-700", children: [
|
|
97
|
+
campos.length > 0 && /* @__PURE__ */ jsx("dl", { className: "grid grid-cols-[minmax(0,auto)_minmax(0,1fr)] gap-x-3 gap-y-1 text-xs", children: campos.map((campo) => /* @__PURE__ */ jsxs("div", { className: "contents", children: [
|
|
98
|
+
/* @__PURE__ */ jsx("dt", { className: "text-gray-500 dark:text-gray-400", children: campo.rotulo }),
|
|
99
|
+
/* @__PURE__ */ jsx("dd", { className: "truncate font-medium text-gray-800 dark:text-gray-100", children: campo.valor })
|
|
100
|
+
] }, campo.chave)) }),
|
|
101
|
+
tool.result !== void 0 && /* @__PURE__ */ jsx(
|
|
102
|
+
Resultado,
|
|
103
|
+
{
|
|
104
|
+
texto: tool.result,
|
|
105
|
+
erro: tool.isError,
|
|
106
|
+
separar: campos.length > 0
|
|
107
|
+
}
|
|
108
|
+
)
|
|
109
|
+
] })
|
|
110
|
+
] })
|
|
111
|
+
);
|
|
112
|
+
};
|
|
113
|
+
const Resultado = ({
|
|
114
|
+
texto,
|
|
115
|
+
erro,
|
|
116
|
+
separar
|
|
117
|
+
}) => {
|
|
118
|
+
const [mostrarBruto, setMostrarBruto] = useState(false);
|
|
119
|
+
const ehJson = /^\s*[[{]/.test(texto);
|
|
120
|
+
const separador = separar ? "mt-2 border-t border-gray-200 pt-2 dark:border-gray-700" : "";
|
|
121
|
+
if (!ehJson) {
|
|
122
|
+
return /* @__PURE__ */ jsx(
|
|
123
|
+
"p",
|
|
124
|
+
{
|
|
125
|
+
className: classNames(
|
|
126
|
+
"text-xs",
|
|
127
|
+
separador,
|
|
128
|
+
erro ? "text-red-600 dark:text-red-400" : "text-gray-600 dark:text-gray-300"
|
|
129
|
+
),
|
|
130
|
+
children: texto
|
|
131
|
+
}
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
return /* @__PURE__ */ jsxs("div", { className: separador, children: [
|
|
135
|
+
/* @__PURE__ */ jsxs(
|
|
136
|
+
"button",
|
|
137
|
+
{
|
|
138
|
+
type: "button",
|
|
139
|
+
className: "text-xs font-medium text-gray-500 underline-offset-2 hover:underline dark:text-gray-400",
|
|
140
|
+
onClick: () => setMostrarBruto((atual) => !atual),
|
|
141
|
+
children: [
|
|
142
|
+
mostrarBruto ? "Ocultar" : "Ver",
|
|
143
|
+
" dados retornados"
|
|
144
|
+
]
|
|
145
|
+
}
|
|
146
|
+
),
|
|
147
|
+
mostrarBruto && /* @__PURE__ */ jsx("pre", { className: "mt-1.5 max-h-40 overflow-auto whitespace-pre-wrap break-words rounded border border-gray-200 bg-white p-2 text-xs text-gray-600 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300", children: texto })
|
|
148
|
+
] });
|
|
149
|
+
};
|
|
150
|
+
export {
|
|
151
|
+
ToolCallChip as default
|
|
152
|
+
};
|
|
153
|
+
//# sourceMappingURL=ToolCallChip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolCallChip.js","sources":["../../../../../../../lib/@ecme/views/concepts/ai/Chat/components/ToolCallChip.tsx"],"sourcesContent":["import { useState } from 'react'\nimport {\n TbAlertTriangle,\n TbCheck,\n TbChevronDown,\n TbClock,\n TbLoader2,\n} from 'react-icons/tb'\nimport classNames from '@/components/ui/utils/classNames'\nimport {\n camposVisiveis,\n iconeFerramenta,\n rotularExecucao,\n rotularFerramenta,\n} from './toolPresentation'\nimport type { ToolCall } from '../types'\n\n/**\n * Uma consulta ou operacao que o agente executou, no meio da conversa.\n *\n * Deliberadamente discreto: e informacao de apoio, nao a resposta. Por isso vive\n * FORA do balao de fala (ver ChatView) e tem forma de pilula — contorno fino,\n * largura do conteudo, letra menor — para nunca ser lido como uma segunda\n * mensagem do agente. Fechado mostra so o que aconteceu e em que estado esta;\n * aberto, os parametros ja traduzidos para a linguagem do negocio.\n */\n\ntype Estado = {\n texto: string\n Icone: typeof TbCheck\n classe: string\n /**\n * Se o texto do estado acompanha o icone na pilula.\n *\n * So quando o icone sozinho nao basta: \"aguardando confirmacao\" e \"nao\n * concluida\" pedem uma acao ou explicam uma falha. Em execucao o rotulo ja\n * esta no gerundio (\"Consultando contratos…\") e o ✓ de concluida e obvio —\n * escrever isso de novo so engorda a pilula.\n */\n mostrarTexto?: boolean\n}\n\nconst estadoDe = (tool: ToolCall): Estado => {\n if (tool.awaitingApproval) {\n return {\n texto: 'Aguardando confirmação',\n Icone: TbClock,\n classe: 'text-amber-600 dark:text-amber-400',\n mostrarTexto: true,\n }\n }\n if (tool.running) {\n return {\n texto: 'Em andamento',\n Icone: TbLoader2,\n classe: 'text-blue-600 dark:text-blue-400',\n }\n }\n if (tool.isError) {\n return {\n texto: 'Não concluída',\n Icone: TbAlertTriangle,\n classe: 'text-red-600 dark:text-red-400',\n mostrarTexto: true,\n }\n }\n return {\n texto: 'Concluída',\n Icone: TbCheck,\n classe: 'text-emerald-600 dark:text-emerald-400',\n }\n}\n\ntype ToolCallChipProps = {\n tool: ToolCall\n}\n\nconst ToolCallChip = ({ tool }: ToolCallChipProps) => {\n const [aberto, setAberto] = useState(false)\n const estado = estadoDe(tool)\n const IconeFerramenta = iconeFerramenta(tool.name)\n const emAndamento = tool.running && !tool.awaitingApproval\n const campos = camposVisiveis(tool.args, tool.name)\n const rotulo = emAndamento\n ? `${rotularExecucao(tool.name)}…`\n : rotularFerramenta(tool.name)\n\n return (\n // not-prose: o balao do agente e `prose`, que aplicaria margens de\n // tipografia no dl/dt/dd/pre daqui e desmontaria a compactacao.\n <div className=\"not-prose max-w-full\">\n <button\n type=\"button\"\n className=\"inline-flex w-fit max-w-full items-center gap-1.5 rounded-full border border-gray-200 px-2.5 py-1 text-left transition-colors hover:border-gray-300 hover:bg-gray-50 dark:border-gray-700 dark:hover:border-gray-600 dark:hover:bg-gray-800/60\"\n aria-expanded={aberto}\n title={`${rotulo} — ${estado.texto}`}\n onClick={() => setAberto((atual) => !atual)}\n >\n <IconeFerramenta\n size={13}\n className=\"shrink-0 text-gray-400 dark:text-gray-500\"\n />\n\n <span className=\"truncate text-xs font-medium text-gray-600 dark:text-gray-300\">\n {rotulo}\n </span>\n\n <span\n className={classNames(\n 'flex shrink-0 items-center gap-1 text-xs font-medium',\n estado.classe,\n )}\n >\n <estado.Icone\n size={12}\n className={emAndamento ? 'motion-safe:animate-spin' : ''}\n />\n {estado.mostrarTexto && estado.texto}\n </span>\n\n <TbChevronDown\n size={12}\n className={classNames(\n 'shrink-0 text-gray-400 transition-transform',\n aberto && 'rotate-180',\n )}\n />\n </button>\n\n {aberto && (\n <div className=\"mt-1 rounded-lg border border-gray-200 px-2.5 py-2 dark:border-gray-700\">\n {campos.length > 0 && (\n <dl className=\"grid grid-cols-[minmax(0,auto)_minmax(0,1fr)] gap-x-3 gap-y-1 text-xs\">\n {campos.map((campo) => (\n <div key={campo.chave} className=\"contents\">\n <dt className=\"text-gray-500 dark:text-gray-400\">\n {campo.rotulo}\n </dt>\n <dd className=\"truncate font-medium text-gray-800 dark:text-gray-100\">\n {campo.valor}\n </dd>\n </div>\n ))}\n </dl>\n )}\n\n {tool.result !== undefined && (\n <Resultado\n texto={tool.result}\n erro={tool.isError}\n separar={campos.length > 0}\n />\n )}\n </div>\n )}\n </div>\n )\n}\n\n/**\n * O retorno da ferramenta.\n *\n * Quando e JSON (uma listagem, por exemplo), fica atras de um toggle: e dado\n * tecnico que so interessa para conferencia, e o usuario ja tem a resposta do\n * agente logo abaixo. Mensagens em texto — erros de permissao, cancelamentos —\n * aparecem direto, porque explicam o que aconteceu.\n */\nconst Resultado = ({\n texto,\n erro,\n separar,\n}: {\n texto: string\n erro?: boolean\n /** Linha divisoria: so faz sentido quando ha parametros logo acima. */\n separar?: boolean\n}) => {\n const [mostrarBruto, setMostrarBruto] = useState(false)\n const ehJson = /^\\s*[[{]/.test(texto)\n const separador = separar\n ? 'mt-2 border-t border-gray-200 pt-2 dark:border-gray-700'\n : ''\n\n if (!ehJson) {\n return (\n <p\n className={classNames(\n 'text-xs',\n separador,\n erro\n ? 'text-red-600 dark:text-red-400'\n : 'text-gray-600 dark:text-gray-300',\n )}\n >\n {texto}\n </p>\n )\n }\n\n return (\n <div className={separador}>\n <button\n type=\"button\"\n className=\"text-xs font-medium text-gray-500 underline-offset-2 hover:underline dark:text-gray-400\"\n onClick={() => setMostrarBruto((atual) => !atual)}\n >\n {mostrarBruto ? 'Ocultar' : 'Ver'} dados retornados\n </button>\n {mostrarBruto && (\n <pre className=\"mt-1.5 max-h-40 overflow-auto whitespace-pre-wrap break-words rounded border border-gray-200 bg-white p-2 text-xs text-gray-600 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-300\">\n {texto}\n </pre>\n )}\n </div>\n )\n}\n\nexport default ToolCallChip\n"],"names":[],"mappings":";;;;;AA0CA,MAAM,WAAW,CAAC,SAA2B;AACzC,MAAI,KAAK,kBAAkB;AACvB,WAAO;AAAA,MACH,OAAO;AAAA,MACP,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,cAAc;AAAA,IAAA;AAAA,EAEtB;AACA,MAAI,KAAK,SAAS;AACd,WAAO;AAAA,MACH,OAAO;AAAA,MACP,OAAO;AAAA,MACP,QAAQ;AAAA,IAAA;AAAA,EAEhB;AACA,MAAI,KAAK,SAAS;AACd,WAAO;AAAA,MACH,OAAO;AAAA,MACP,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,cAAc;AAAA,IAAA;AAAA,EAEtB;AACA,SAAO;AAAA,IACH,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,EAAA;AAEhB;AAMA,MAAM,eAAe,CAAC,EAAE,WAA8B;AAClD,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,KAAK;AAC1C,QAAM,SAAS,SAAS,IAAI;AAC5B,QAAM,kBAAkB,gBAAgB,KAAK,IAAI;AACjD,QAAM,cAAc,KAAK,WAAW,CAAC,KAAK;AAC1C,QAAM,SAAS,eAAe,KAAK,MAAM,KAAK,IAAI;AAClD,QAAM,SAAS,cACT,GAAG,gBAAgB,KAAK,IAAI,CAAC,MAC7B,kBAAkB,KAAK,IAAI;AAEjC;AAAA;AAAA;AAAA,IAGI,qBAAC,OAAA,EAAI,WAAU,wBACX,UAAA;AAAA,MAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,MAAK;AAAA,UACL,WAAU;AAAA,UACV,iBAAe;AAAA,UACf,OAAO,GAAG,MAAM,MAAM,OAAO,KAAK;AAAA,UAClC,SAAS,MAAM,UAAU,CAAC,UAAU,CAAC,KAAK;AAAA,UAE1C,UAAA;AAAA,YAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,MAAM;AAAA,gBACN,WAAU;AAAA,cAAA;AAAA,YAAA;AAAA,YAGd,oBAAC,QAAA,EAAK,WAAU,iEACX,UAAA,QACL;AAAA,YAEA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,WAAW;AAAA,kBACP;AAAA,kBACA,OAAO;AAAA,gBAAA;AAAA,gBAGX,UAAA;AAAA,kBAAA;AAAA,oBAAC,OAAO;AAAA,oBAAP;AAAA,sBACG,MAAM;AAAA,sBACN,WAAW,cAAc,6BAA6B;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAEzD,OAAO,gBAAgB,OAAO;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA;AAAA,YAGnC;AAAA,cAAC;AAAA,cAAA;AAAA,gBACG,MAAM;AAAA,gBACN,WAAW;AAAA,kBACP;AAAA,kBACA,UAAU;AAAA,gBAAA;AAAA,cACd;AAAA,YAAA;AAAA,UACJ;AAAA,QAAA;AAAA,MAAA;AAAA,MAGH,UACG,qBAAC,OAAA,EAAI,WAAU,2EACV,UAAA;AAAA,QAAA,OAAO,SAAS,KACb,oBAAC,MAAA,EAAG,WAAU,yEACT,UAAA,OAAO,IAAI,CAAC,UACT,qBAAC,OAAA,EAAsB,WAAU,YAC7B,UAAA;AAAA,UAAA,oBAAC,MAAA,EAAG,WAAU,oCACT,UAAA,MAAM,QACX;AAAA,UACA,oBAAC,MAAA,EAAG,WAAU,yDACT,gBAAM,MAAA,CACX;AAAA,QAAA,EAAA,GANM,MAAM,KAOhB,CACH,GACL;AAAA,QAGH,KAAK,WAAW,UACb;AAAA,UAAC;AAAA,UAAA;AAAA,YACG,OAAO,KAAK;AAAA,YACZ,MAAM,KAAK;AAAA,YACX,SAAS,OAAO,SAAS;AAAA,UAAA;AAAA,QAAA;AAAA,MAC7B,EAAA,CAER;AAAA,IAAA,EAAA,CAER;AAAA;AAER;AAUA,MAAM,YAAY,CAAC;AAAA,EACf;AAAA,EACA;AAAA,EACA;AACJ,MAKM;AACF,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,KAAK;AACtD,QAAM,SAAS,WAAW,KAAK,KAAK;AACpC,QAAM,YAAY,UACZ,4DACA;AAEN,MAAI,CAAC,QAAQ;AACT,WACI;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,WAAW;AAAA,UACP;AAAA,UACA;AAAA,UACA,OACM,mCACA;AAAA,QAAA;AAAA,QAGT,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGb;AAEA,SACI,qBAAC,OAAA,EAAI,WAAW,WACZ,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACG,MAAK;AAAA,QACL,WAAU;AAAA,QACV,SAAS,MAAM,gBAAgB,CAAC,UAAU,CAAC,KAAK;AAAA,QAE/C,UAAA;AAAA,UAAA,eAAe,YAAY;AAAA,UAAM;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAErC,gBACG,oBAAC,OAAA,EAAI,WAAU,4LACV,UAAA,MAAA,CACL;AAAA,EAAA,GAER;AAER;"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { formatQuantity } from "../../../../../../base/utils/functions/stringUtils.js";
|
|
2
|
+
import { TbForms, TbPackage, TbPackages, TbBriefcase, TbCalendarEvent, TbUserSearch, TbBuildingPlus, TbListSearch, TbSearch, TbFilePlus, TbTool } from "react-icons/tb";
|
|
3
|
+
const FERRAMENTAS = {
|
|
4
|
+
buscar_contrato_armazenagem_graos: {
|
|
5
|
+
rotulo: "Consulta de contrato",
|
|
6
|
+
executando: "Consultando contrato",
|
|
7
|
+
icone: TbSearch
|
|
8
|
+
},
|
|
9
|
+
listar_contratos_armazenagem_graos: {
|
|
10
|
+
rotulo: "Consulta de contratos",
|
|
11
|
+
executando: "Consultando contratos",
|
|
12
|
+
icone: TbListSearch
|
|
13
|
+
},
|
|
14
|
+
criar_contrato_armazenagem_graos: {
|
|
15
|
+
rotulo: "Criação de contrato de armazenagem",
|
|
16
|
+
executando: "Criando contrato",
|
|
17
|
+
icone: TbFilePlus
|
|
18
|
+
},
|
|
19
|
+
buscar_area: {
|
|
20
|
+
rotulo: "Consulta de área",
|
|
21
|
+
executando: "Consultando área",
|
|
22
|
+
icone: TbSearch
|
|
23
|
+
},
|
|
24
|
+
listar_areas: {
|
|
25
|
+
rotulo: "Consulta de áreas",
|
|
26
|
+
executando: "Consultando áreas",
|
|
27
|
+
icone: TbListSearch
|
|
28
|
+
},
|
|
29
|
+
criar_area: {
|
|
30
|
+
rotulo: "Criação de área",
|
|
31
|
+
executando: "Criando área",
|
|
32
|
+
icone: TbBuildingPlus
|
|
33
|
+
},
|
|
34
|
+
buscar_usuario: {
|
|
35
|
+
rotulo: "Consulta de usuário",
|
|
36
|
+
executando: "Consultando usuário",
|
|
37
|
+
icone: TbUserSearch
|
|
38
|
+
},
|
|
39
|
+
listar_safras: {
|
|
40
|
+
rotulo: "Consulta de safras",
|
|
41
|
+
executando: "Consultando safras",
|
|
42
|
+
icone: TbCalendarEvent
|
|
43
|
+
},
|
|
44
|
+
listar_parceiros: {
|
|
45
|
+
rotulo: "Consulta de parceiros de negócio",
|
|
46
|
+
executando: "Consultando parceiros",
|
|
47
|
+
icone: TbBriefcase
|
|
48
|
+
},
|
|
49
|
+
listar_produtos: {
|
|
50
|
+
rotulo: "Consulta de produtos",
|
|
51
|
+
executando: "Consultando produtos",
|
|
52
|
+
icone: TbPackages
|
|
53
|
+
},
|
|
54
|
+
buscar_produto: {
|
|
55
|
+
rotulo: "Consulta de produto",
|
|
56
|
+
executando: "Consultando produto",
|
|
57
|
+
icone: TbPackage
|
|
58
|
+
},
|
|
59
|
+
// Nao executa nada no ERP: e o sinal de que faltam campos. Mas o agente a
|
|
60
|
+
// pede como qualquer outra, entao um chip aparece junto do formulario.
|
|
61
|
+
solicitar_dados: {
|
|
62
|
+
rotulo: "Dados necessários",
|
|
63
|
+
executando: "Verificando os dados",
|
|
64
|
+
icone: TbForms
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
const humanizar = (texto) => texto.replaceAll("_", " ").toLowerCase().replace(/^./, (letra) => letra.toUpperCase());
|
|
68
|
+
const rotularFerramenta = (nome) => FERRAMENTAS[nome]?.rotulo ?? humanizar(nome);
|
|
69
|
+
const rotularExecucao = (nome) => FERRAMENTAS[nome]?.executando ?? humanizar(nome);
|
|
70
|
+
const iconeFerramenta = (nome) => FERRAMENTAS[nome]?.icone ?? TbTool;
|
|
71
|
+
const CAMPOS = {
|
|
72
|
+
business_partner_id: "Parceiro de negócio",
|
|
73
|
+
produto_id: "Produto",
|
|
74
|
+
safra_id: "Safra",
|
|
75
|
+
saldo_negociado: "Saldo negociado",
|
|
76
|
+
tipo_contrato: "Tipo de contrato",
|
|
77
|
+
contrato_venda: "Contrato de venda",
|
|
78
|
+
ordem_venda: "Ordem de venda",
|
|
79
|
+
id: "Código",
|
|
80
|
+
nome: "Nome",
|
|
81
|
+
responsavel_id: "Responsável",
|
|
82
|
+
responsavel_nome: "Nome do responsável",
|
|
83
|
+
// Safra, produto e parceiro de negócio
|
|
84
|
+
safra: "Safra",
|
|
85
|
+
ids: "Códigos",
|
|
86
|
+
search: "Busca",
|
|
87
|
+
codigo: "Código",
|
|
88
|
+
descricao: "Descrição",
|
|
89
|
+
tipo_produto: "Tipo do produto",
|
|
90
|
+
is_cultura: "É cultura",
|
|
91
|
+
status_material: "Situação",
|
|
92
|
+
business_partner: "Código do parceiro",
|
|
93
|
+
nome_completo: "Nome do parceiro",
|
|
94
|
+
cpf_ou_cnpj: "CPF ou CNPJ",
|
|
95
|
+
cpf: "CPF",
|
|
96
|
+
cnpj: "CNPJ",
|
|
97
|
+
is_cliente: "É cliente",
|
|
98
|
+
is_produtor: "É produtor",
|
|
99
|
+
is_transportadora: "É transportadora",
|
|
100
|
+
is_armazem: "É armazém",
|
|
101
|
+
status_elegibilidade: "Elegibilidade",
|
|
102
|
+
page_number: "Página",
|
|
103
|
+
page_size: "Itens por página",
|
|
104
|
+
sort_field: "Ordenar por",
|
|
105
|
+
sort_order: "Ordem",
|
|
106
|
+
filtro: "Filtro"
|
|
107
|
+
};
|
|
108
|
+
const CAMPO_POR_FERRAMENTA = {
|
|
109
|
+
buscar_contrato_armazenagem_graos: { id: "Contrato" },
|
|
110
|
+
buscar_area: { id: "Área" },
|
|
111
|
+
listar_areas: { id: "Área" },
|
|
112
|
+
buscar_usuario: { id: "Usuário" },
|
|
113
|
+
listar_safras: { id: "Safra" },
|
|
114
|
+
listar_parceiros: { id: "Parceiro" },
|
|
115
|
+
listar_produtos: { id: "Produto" },
|
|
116
|
+
buscar_produto: { id: "Produto" }
|
|
117
|
+
};
|
|
118
|
+
const rotularCampo = (chave, ferramenta) => CAMPO_POR_FERRAMENTA[ferramenta ?? ""]?.[chave] ?? CAMPOS[chave] ?? humanizar(chave);
|
|
119
|
+
const REFERENCIAS = /* @__PURE__ */ new Set([
|
|
120
|
+
"business_partner_id",
|
|
121
|
+
"produto_id",
|
|
122
|
+
"safra_id",
|
|
123
|
+
"contrato_venda",
|
|
124
|
+
"ordem_venda",
|
|
125
|
+
"responsavel_id",
|
|
126
|
+
"id"
|
|
127
|
+
]);
|
|
128
|
+
const ORDENACAO = { ASC: "Crescente", DESC: "Decrescente" };
|
|
129
|
+
const OPCOES = {
|
|
130
|
+
tipo_contrato: ["MERCADO_INTERNO", "MERCADO_EXTERNO"]
|
|
131
|
+
};
|
|
132
|
+
const opcoesDoCampo = (chave) => (OPCOES[chave] ?? []).map((valor) => ({
|
|
133
|
+
value: valor,
|
|
134
|
+
label: humanizar(valor)
|
|
135
|
+
}));
|
|
136
|
+
const tipoDoCampo = (chave) => {
|
|
137
|
+
if (OPCOES[chave]) return "enum";
|
|
138
|
+
if (REFERENCIAS.has(chave) || chave === "saldo_negociado") return "numero";
|
|
139
|
+
return "texto";
|
|
140
|
+
};
|
|
141
|
+
const formatarValor = (chave, valor, ferramenta) => {
|
|
142
|
+
if (valor === null || valor === void 0 || valor === "") {
|
|
143
|
+
return "—";
|
|
144
|
+
}
|
|
145
|
+
if (chave === "saldo_negociado" && typeof valor === "number") {
|
|
146
|
+
return formatQuantity(valor);
|
|
147
|
+
}
|
|
148
|
+
if (chave === "sort_order" && typeof valor === "string") {
|
|
149
|
+
return ORDENACAO[valor] ?? humanizar(valor);
|
|
150
|
+
}
|
|
151
|
+
if (typeof valor === "number") {
|
|
152
|
+
return REFERENCIAS.has(chave) ? `#${valor}` : String(valor);
|
|
153
|
+
}
|
|
154
|
+
if (typeof valor === "boolean") {
|
|
155
|
+
return valor ? "Sim" : "Não";
|
|
156
|
+
}
|
|
157
|
+
if (typeof valor === "string") {
|
|
158
|
+
return /^[A-Z][A-Z0-9_]+$/.test(valor) ? humanizar(valor) : valor;
|
|
159
|
+
}
|
|
160
|
+
if (Array.isArray(valor)) {
|
|
161
|
+
return valor.length ? `${valor.length} item(ns)` : "—";
|
|
162
|
+
}
|
|
163
|
+
if (typeof valor === "object") {
|
|
164
|
+
const entradas = Object.entries(valor);
|
|
165
|
+
if (!entradas.length) {
|
|
166
|
+
return "—";
|
|
167
|
+
}
|
|
168
|
+
return entradas.map(
|
|
169
|
+
([k, v]) => `${rotularCampo(k, ferramenta)}: ${formatarValor(k, v, ferramenta)}`
|
|
170
|
+
).join(", ");
|
|
171
|
+
}
|
|
172
|
+
return String(valor);
|
|
173
|
+
};
|
|
174
|
+
const camposVisiveis = (args, ferramenta) => Object.entries(args).filter(([, valor]) => {
|
|
175
|
+
if (valor === null || valor === void 0 || valor === "") return false;
|
|
176
|
+
if (typeof valor === "object" && !Array.isArray(valor)) {
|
|
177
|
+
return Object.keys(valor).length > 0;
|
|
178
|
+
}
|
|
179
|
+
return true;
|
|
180
|
+
}).map(([chave, valor]) => ({
|
|
181
|
+
chave,
|
|
182
|
+
rotulo: rotularCampo(chave, ferramenta),
|
|
183
|
+
valor: formatarValor(chave, valor, ferramenta)
|
|
184
|
+
}));
|
|
185
|
+
export {
|
|
186
|
+
camposVisiveis,
|
|
187
|
+
formatarValor,
|
|
188
|
+
iconeFerramenta,
|
|
189
|
+
opcoesDoCampo,
|
|
190
|
+
rotularCampo,
|
|
191
|
+
rotularExecucao,
|
|
192
|
+
rotularFerramenta,
|
|
193
|
+
tipoDoCampo
|
|
194
|
+
};
|
|
195
|
+
//# sourceMappingURL=toolPresentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolPresentation.js","sources":["../../../../../../../lib/@ecme/views/concepts/ai/Chat/components/toolPresentation.ts"],"sourcesContent":["import { formatQuantity } from '@base/utils/functions/stringUtils'\nimport {\n TbBriefcase,\n TbBuildingPlus,\n TbCalendarEvent,\n TbFilePlus,\n TbForms,\n TbListSearch,\n TbPackage,\n TbPackages,\n TbSearch,\n TbTool,\n TbUserSearch,\n} from 'react-icons/tb'\nimport type { IconType } from 'react-icons'\n\n/**\n * Como as ferramentas do agente sao apresentadas ao usuario.\n *\n * Compartilhado pelo chip de execucao e pelo card de aprovacao, para os dois\n * falarem a mesma lingua: o usuario ve \"Consulta de contratos\" e \"Mercado\n * interno\", nunca `listar_contratos_armazenagem_graos` ou `MERCADO_INTERNO`.\n *\n * Tudo tem fallback: uma ferramenta ou campo novo no backend nao quebra a tela,\n * so aparece com o nome tecnico humanizado ate ganhar entrada aqui.\n */\n\ntype Ferramenta = {\n rotulo: string\n /** Frase no gerundio, para o estado \"executando\". */\n executando: string\n icone: IconType\n}\n\nconst FERRAMENTAS: Record<string, Ferramenta> = {\n buscar_contrato_armazenagem_graos: {\n rotulo: 'Consulta de contrato',\n executando: 'Consultando contrato',\n icone: TbSearch,\n },\n listar_contratos_armazenagem_graos: {\n rotulo: 'Consulta de contratos',\n executando: 'Consultando contratos',\n icone: TbListSearch,\n },\n criar_contrato_armazenagem_graos: {\n rotulo: 'Criação de contrato de armazenagem',\n executando: 'Criando contrato',\n icone: TbFilePlus,\n },\n buscar_area: {\n rotulo: 'Consulta de área',\n executando: 'Consultando área',\n icone: TbSearch,\n },\n listar_areas: {\n rotulo: 'Consulta de áreas',\n executando: 'Consultando áreas',\n icone: TbListSearch,\n },\n criar_area: {\n rotulo: 'Criação de área',\n executando: 'Criando área',\n icone: TbBuildingPlus,\n },\n buscar_usuario: {\n rotulo: 'Consulta de usuário',\n executando: 'Consultando usuário',\n icone: TbUserSearch,\n },\n listar_safras: {\n rotulo: 'Consulta de safras',\n executando: 'Consultando safras',\n icone: TbCalendarEvent,\n },\n listar_parceiros: {\n rotulo: 'Consulta de parceiros de negócio',\n executando: 'Consultando parceiros',\n icone: TbBriefcase,\n },\n listar_produtos: {\n rotulo: 'Consulta de produtos',\n executando: 'Consultando produtos',\n icone: TbPackages,\n },\n buscar_produto: {\n rotulo: 'Consulta de produto',\n executando: 'Consultando produto',\n icone: TbPackage,\n },\n // Nao executa nada no ERP: e o sinal de que faltam campos. Mas o agente a\n // pede como qualquer outra, entao um chip aparece junto do formulario.\n solicitar_dados: {\n rotulo: 'Dados necessários',\n executando: 'Verificando os dados',\n icone: TbForms,\n },\n}\n\nconst humanizar = (texto: string) =>\n texto\n .replaceAll('_', ' ')\n .toLowerCase()\n .replace(/^./, (letra) => letra.toUpperCase())\n\nexport const rotularFerramenta = (nome: string) =>\n FERRAMENTAS[nome]?.rotulo ?? humanizar(nome)\n\nexport const rotularExecucao = (nome: string) =>\n FERRAMENTAS[nome]?.executando ?? humanizar(nome)\n\nexport const iconeFerramenta = (nome: string): IconType =>\n FERRAMENTAS[nome]?.icone ?? TbTool\n\n/** Rotulos dos parametros, na linguagem do negocio. */\nconst CAMPOS: Record<string, string> = {\n business_partner_id: 'Parceiro de negócio',\n produto_id: 'Produto',\n safra_id: 'Safra',\n saldo_negociado: 'Saldo negociado',\n tipo_contrato: 'Tipo de contrato',\n contrato_venda: 'Contrato de venda',\n ordem_venda: 'Ordem de venda',\n id: 'Código',\n nome: 'Nome',\n responsavel_id: 'Responsável',\n responsavel_nome: 'Nome do responsável',\n // Safra, produto e parceiro de negócio\n safra: 'Safra',\n ids: 'Códigos',\n search: 'Busca',\n codigo: 'Código',\n descricao: 'Descrição',\n tipo_produto: 'Tipo do produto',\n is_cultura: 'É cultura',\n status_material: 'Situação',\n business_partner: 'Código do parceiro',\n nome_completo: 'Nome do parceiro',\n cpf_ou_cnpj: 'CPF ou CNPJ',\n cpf: 'CPF',\n cnpj: 'CNPJ',\n is_cliente: 'É cliente',\n is_produtor: 'É produtor',\n is_transportadora: 'É transportadora',\n is_armazem: 'É armazém',\n status_elegibilidade: 'Elegibilidade',\n page_number: 'Página',\n page_size: 'Itens por página',\n sort_field: 'Ordenar por',\n sort_order: 'Ordem',\n filtro: 'Filtro',\n}\n\n/**\n * Rotulos que dependem da ferramenta.\n *\n * O `id` e o caso: o mesmo parametro nomeia entidades diferentes conforme quem\n * o recebe. Sem isto, buscar o usuario 5 exibiria \"Contrato: #5\".\n */\nconst CAMPO_POR_FERRAMENTA: Record<string, Record<string, string>> = {\n buscar_contrato_armazenagem_graos: { id: 'Contrato' },\n buscar_area: { id: 'Área' },\n listar_areas: { id: 'Área' },\n buscar_usuario: { id: 'Usuário' },\n listar_safras: { id: 'Safra' },\n listar_parceiros: { id: 'Parceiro' },\n listar_produtos: { id: 'Produto' },\n buscar_produto: { id: 'Produto' },\n}\n\nexport const rotularCampo = (chave: string, ferramenta?: string) =>\n CAMPO_POR_FERRAMENTA[ferramenta ?? '']?.[chave] ??\n CAMPOS[chave] ??\n humanizar(chave)\n\n/** Campos que sao referencia a um registro: exibidos como \"#123\". */\nconst REFERENCIAS = new Set([\n 'business_partner_id',\n 'produto_id',\n 'safra_id',\n 'contrato_venda',\n 'ordem_venda',\n 'responsavel_id',\n 'id',\n])\n\nconst ORDENACAO: Record<string, string> = { ASC: 'Crescente', DESC: 'Decrescente' }\n\n/**\n * Opcoes dos campos que sao enum no backend.\n *\n * O rotulo sai do mesmo `humanizar` usado na exibicao, entao o formulario e o\n * card de confirmacao mostram exatamente o mesmo texto.\n */\nconst OPCOES: Record<string, string[]> = {\n tipo_contrato: ['MERCADO_INTERNO', 'MERCADO_EXTERNO'],\n}\n\nexport const opcoesDoCampo = (chave: string) =>\n (OPCOES[chave] ?? []).map((valor) => ({\n value: valor,\n label: humanizar(valor),\n }))\n\n/**\n * Que tipo de controle o campo pede no formulario de coleta.\n *\n * E so UX (teclado numerico, lista em vez de texto livre): os valores voltam\n * para o modelo, e e ele quem monta a chamada final — um tipo errado nao\n * quebra, so piora o preenchimento.\n */\nexport const tipoDoCampo = (chave: string): 'numero' | 'enum' | 'texto' => {\n if (OPCOES[chave]) return 'enum'\n if (REFERENCIAS.has(chave) || chave === 'saldo_negociado') return 'numero'\n return 'texto'\n}\n\n/** Converte o valor tecnico no que o usuario espera ler. */\nexport const formatarValor = (\n chave: string,\n valor: unknown,\n ferramenta?: string,\n): string => {\n if (valor === null || valor === undefined || valor === '') {\n return '—'\n }\n if (chave === 'saldo_negociado' && typeof valor === 'number') {\n return formatQuantity(valor)\n }\n if (chave === 'sort_order' && typeof valor === 'string') {\n return ORDENACAO[valor] ?? humanizar(valor)\n }\n if (typeof valor === 'number') {\n return REFERENCIAS.has(chave) ? `#${valor}` : String(valor)\n }\n if (typeof valor === 'boolean') {\n return valor ? 'Sim' : 'Não'\n }\n if (typeof valor === 'string') {\n // Enums do backend chegam em CAIXA_ALTA_COM_UNDERSCORE.\n return /^[A-Z][A-Z0-9_]+$/.test(valor) ? humanizar(valor) : valor\n }\n if (Array.isArray(valor)) {\n return valor.length ? `${valor.length} item(ns)` : '—'\n }\n if (typeof valor === 'object') {\n const entradas = Object.entries(valor as Record<string, unknown>)\n if (!entradas.length) {\n return '—'\n }\n return entradas\n .map(\n ([k, v]) =>\n `${rotularCampo(k, ferramenta)}: ${formatarValor(k, v, ferramenta)}`,\n )\n .join(', ')\n }\n return String(valor)\n}\n\n/**\n * Pares (rotulo, valor) prontos para exibir, ignorando o que esta vazio.\n *\n * `ferramenta` resolve os rotulos ambiguos (ver CAMPO_POR_FERRAMENTA); quem nao\n * a conhece — o formulario de coleta, por exemplo — pode omitir.\n */\nexport const camposVisiveis = (\n args: Record<string, unknown>,\n ferramenta?: string,\n) =>\n Object.entries(args)\n .filter(([, valor]) => {\n if (valor === null || valor === undefined || valor === '') return false\n if (typeof valor === 'object' && !Array.isArray(valor)) {\n return Object.keys(valor as object).length > 0\n }\n return true\n })\n .map(([chave, valor]) => ({\n chave,\n rotulo: rotularCampo(chave, ferramenta),\n valor: formatarValor(chave, valor, ferramenta),\n }))\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import useSWR from "swr";
|
|
3
|
+
import "../../../../../components/ui/Notification/index.js";
|
|
4
|
+
import "../../../../../components/ui/toast/index.js";
|
|
5
|
+
import { apiGetConversations, apiDeleteConversation, apiRenameConversation } from "../../../../../services/AiService.js";
|
|
6
|
+
import { useSessionUser } from "../../../../../store/authStore.js";
|
|
7
|
+
import { usGenerativeChatStore } from "../store/generativeChatStore.js";
|
|
8
|
+
import { resumoParaHistorico } from "../utils.js";
|
|
9
|
+
import toast from "../../../../../components/ui/toast/toast.js";
|
|
10
|
+
import Notification from "../../../../../components/ui/Notification/Notification.js";
|
|
11
|
+
const avisarFalha = (mensagem) => {
|
|
12
|
+
toast.push(
|
|
13
|
+
/* @__PURE__ */ jsx(Notification, { type: "danger", duration: 3e3, children: mensagem }),
|
|
14
|
+
{ placement: "top-center" }
|
|
15
|
+
);
|
|
16
|
+
};
|
|
17
|
+
const useChatConversations = () => {
|
|
18
|
+
const {
|
|
19
|
+
setChatHistory,
|
|
20
|
+
setChatHistoryName,
|
|
21
|
+
setSelectedConversation
|
|
22
|
+
} = usGenerativeChatStore();
|
|
23
|
+
const userId = useSessionUser((state) => state.user.userId);
|
|
24
|
+
const signedIn = useSessionUser((state) => state.session.signedIn);
|
|
25
|
+
useSWR(
|
|
26
|
+
signedIn && userId ? ["/ai/chat/conversations", userId] : null,
|
|
27
|
+
// O dono viaja junto com a resposta para o `onSuccess` conferir.
|
|
28
|
+
async ([, dono]) => ({
|
|
29
|
+
dono,
|
|
30
|
+
resumos: await apiGetConversations()
|
|
31
|
+
}),
|
|
32
|
+
{
|
|
33
|
+
revalidateOnFocus: false,
|
|
34
|
+
revalidateOnReconnect: false,
|
|
35
|
+
onSuccess: ({ dono, resumos }) => {
|
|
36
|
+
if (dono !== useSessionUser.getState().user.userId) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const atual = usGenerativeChatStore.getState().chatHistory;
|
|
40
|
+
setChatHistory(mesclar(atual, resumos));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
);
|
|
44
|
+
const remover = async (id) => {
|
|
45
|
+
const { chatHistory, selectedConversation } = usGenerativeChatStore.getState();
|
|
46
|
+
setChatHistory(chatHistory.filter((item) => item.id !== id));
|
|
47
|
+
if (selectedConversation === id) {
|
|
48
|
+
setSelectedConversation("");
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
await apiDeleteConversation(id);
|
|
52
|
+
} catch {
|
|
53
|
+
setChatHistory(chatHistory);
|
|
54
|
+
avisarFalha("Não foi possível excluir a conversa.");
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
const renomear = async (id, title) => {
|
|
58
|
+
const anterior = usGenerativeChatStore.getState().chatHistory.find((item) => item.id === id)?.title;
|
|
59
|
+
setChatHistoryName({ id, title });
|
|
60
|
+
try {
|
|
61
|
+
await apiRenameConversation(id, title);
|
|
62
|
+
} catch {
|
|
63
|
+
if (anterior !== void 0) {
|
|
64
|
+
setChatHistoryName({ id, title: anterior });
|
|
65
|
+
}
|
|
66
|
+
avisarFalha("Não foi possível renomear a conversa.");
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
return { remover, renomear };
|
|
70
|
+
};
|
|
71
|
+
function mesclar(atual, resumos) {
|
|
72
|
+
const noStore = new Map(atual.map((chat) => [chat.id, chat]));
|
|
73
|
+
const doBackend = new Set(resumos.map((resumo) => resumo.id));
|
|
74
|
+
const soNaTela = atual.filter((chat) => !doBackend.has(chat.id));
|
|
75
|
+
const daLista = resumos.map(
|
|
76
|
+
(resumo) => noStore.get(resumo.id) ?? resumoParaHistorico(resumo)
|
|
77
|
+
);
|
|
78
|
+
return [...soNaTela, ...daLista];
|
|
79
|
+
}
|
|
80
|
+
export {
|
|
81
|
+
useChatConversations as default
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=useChatConversations.js.map
|