chat-page-state.ts 864 B

1234567891011121314151617181920212223242526272829303132
  1. export interface ChatPageModelInfo {
  2. readonly id: string;
  3. readonly name?: string;
  4. }
  5. export interface ChatPageModelGroup {
  6. readonly service: string;
  7. readonly label: string;
  8. readonly models: ReadonlyArray<ChatPageModelInfo>;
  9. }
  10. export function shouldUseFreshBookCreateSession(activeBookId?: string): boolean {
  11. return !activeBookId;
  12. }
  13. export function filterModelGroups(
  14. groupedModels: ReadonlyArray<ChatPageModelGroup>,
  15. search: string,
  16. ): ReadonlyArray<ChatPageModelGroup> {
  17. const query = search.trim().toLowerCase();
  18. if (!query) return groupedModels;
  19. return groupedModels
  20. .map((group) => ({
  21. ...group,
  22. models: group.models.filter((model) =>
  23. (model.name ?? model.id).toLowerCase().includes(query)
  24. || group.label.toLowerCase().includes(query),
  25. ),
  26. }))
  27. .filter((group) => group.models.length > 0);
  28. }