@gitlab/duo-ui 15.9.0 → 15.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -717,115 +717,75 @@ const THREADLIST = [{
717
717
  title: 'Before the Configuration Committee'
718
718
  }];
719
719
  const AGENTIC_THREADLIST = [{
720
- id: 'gid://gitlab/Ai::DuoWorkflows::Workflow/1031434',
721
- projectId: 'gid://gitlab/Project/62039593',
722
- humanStatus: 'input required',
723
- updatedAt: '2025-01-24T19:27:15Z',
724
- goal: 'Help me migrate the legacy duo_chat_component to the modern tech stack of the current project. If there are ways to simplify it (remove unnecessary CSS, functionality, etc) and rely more on the default shadcn-ui components, please suggest those simplifications. If you need to install any shadcn-ui component, feel free to do so',
725
- stalled: false,
726
- archived: false,
727
- firstCheckpoint: {
728
- checkpoint: '{"v":3,"id":"1f0659ae-d2f8-6230-bfff-fea961e0365f","ts":"2025-07-20T18:54:12.716786+00:00","pending_sends":[],"versions_seen":{"__input__":{}},"channel_values":{"__start__":{"plan":{"steps":[]},"status":"Not Started","project":{"id":62039593,"name":"Duo UI","web_url":"https://gitlab.com/gitlab-org/duo-ui","languages":[{"name":"JavaScript","share":72.16},{"name":"Vue","share":22.06},{"name":"SCSS","share":2.68},{"name":"Ruby","share":1.54},{"name":"TypeScript","share":0.6}],"description":"","http_url_to_repo":"https://gitlab.com/gitlab-org/duo-ui.git"},"approval":null,"ui_chat_log":[{"status":"success","content":"Help me migrate the legacy duo_chat_component to the modern tech stack of the current project. If there are ways to simplify it (remove unnecessary CSS, functionality, etc) and rely more on the default shadcn-ui components, please suggest those simplifications. If you need to install any shadcn-ui component, feel free to do so","timestamp":"2025-07-20T18:54:12.429236+00:00","tool_info":null,"message_type":"user","correlation_id":null,"message_sub_type":null,"additional_context":[{"id":"1","type":"AdditionalContext","content":"The user wants you to adhere to these rules:\\nThe project is built with Vue 3, Typescript, Tailwind, shadcn-vue and other modern technologies.\\n\\nFor some transient time, this project is used to migrate legacy Vue 2 + JS + gitlab-ui components to the new tech stack. While migrating components all of the gitlab-ui components should be replaced with the shadcn-ui analogues or explicitly agreed with the user. If you see any better analogue in shadcn-ui or better way to implement functionality, speak up and ask for user\'s confirmation on what path to take.\\n\\nEvery component should have a story and a test spec alongside itself.","category":"user_rule","metadata":{"icon":"user","title":"User instruction","enabled":true,"subType":"user_rule","subTypeLabel":"User instruction","secondaryText":"chat-rules.md"}}]}],"last_human_input":null,"conversation_history":{"Chat Agent":[{"id":null,"name":null,"type":"HumanMessage","content":"Help me migrate the legacy duo_chat_component to the modern tech stack of the current project. If there are ways to simplify it (remove unnecessary CSS, functionality, etc) and rely more on the default shadcn-ui components, please suggest those simplifications. If you need to install any shadcn-ui component, feel free to do so","example":false,"additional_kwargs":{"additional_context":[{"id":"1","content":"The user wants you to adhere to these rules:\\nThe project is built with Vue 3, Typescript, Tailwind, shadcn-vue and other modern technologies.\\n\\nFor some transient time, this project is used to migrate legacy Vue 2 + JS + gitlab-ui components to the new tech stack. While migrating components all of the gitlab-ui components should be replaced with the shadcn-ui analogues or explicitly agreed with the user. If you see any better analogue in shadcn-ui or better way to implement functionality, speak up and ask for user\'s confirmation on what path to take.\\n\\nEvery component should have a story and a test spec alongside itself.","category":"user_rule","metadata":{"icon":"user","title":"User instruction","enabled":true,"subType":"user_rule","subTypeLabel":"User instruction","secondaryText":"chat-rules.md"}}]},"response_metadata":{}}]}}},"channel_versions":{"__start__":1}}'
729
- }
720
+ __typename: 'DuoWorkflow',
721
+ id: 'gid://gitlab/Ai::DuoWorkflows::Workflow/1801035',
722
+ lastUpdatedAt: '2025-01-31T13:45:20Z',
723
+ title: 'Help me refactor this authentication module',
724
+ aiCatalogItemVersionId: null,
725
+ agentName: 'GitLab Duo'
730
726
  }, {
731
- id: 'gid://gitlab/Ai::DuoWorkflows::Workflow/1031775',
732
- projectId: 'gid://gitlab/Project/278964',
733
- humanStatus: 'input required',
734
- updatedAt: '2025-01-31T12:20:31Z',
735
- goal: 'I have the following data structure: "edges": [\n {\n "node": {\n "id": "gid://gitlab/Ai::DuoWorkflows::Workflow/1031434",\n "projectId": "gid://gitlab/Project/62039593",\n "humanStatus": "input required",\n "updatedAt": "2025-07-20T19:27:15Z",\n "createdAt": "2025-07-20T18:51:44Z",\n "goal": "Hel",\n "stalled": false,\n "archived": false\n }\n },\n {\n "node": {\n "id": "gid://gitlab/Ai::DuoWorkflows::Workflow/1031206",\n "projectId": "gid://gitlab/Project/62039593",\n "humanStatus": "input required",\n "updatedAt": "2025-07-19T12:20:31Z",\n "createdAt": "2025-07-19T12:15:49Z",\n "goal": "Hel",\n "stalled": false,\n "archived": false\n }\n },]\n\nHow can I "unwrap" nodes so that, let\'s say a constant `nodes` would contain an array of nodes like: [\n {\n "id": "gid://gitlab/Ai::DuoWorkflows::Workflow/1031434",\n "projectId": "gid://gitlab/Project/62039593",\n "humanStatus": "input required",\n "updatedAt": "2025-07-20T19:27:15Z",\n "createdAt": "2025-07-20T18:51:44Z",\n "goal": "Hel",\n "stalled": false,\n "archived": false\n },\n {\n "id": "gid://gitlab/Ai::DuoWorkflows::Workflow/1031206",\n "projectId": "gid://gitlab/Project/62039593",\n "humanStatus": "input required",\n "updatedAt": "2025-07-19T12:20:31Z",\n "createdAt": "2025-07-19T12:15:49Z",\n "goal": "Hel",\n "stalled": false,\n "archived": false\n },]?',
736
- stalled: false,
737
- archived: false,
738
- firstCheckpoint: {
739
- checkpoint: '{"v":3,"id":"1f0660ac-f31d-611f-bfff-989cc966f3d3","ts":"2025-07-21T08:15:06.033987+00:00","pending_sends":[],"versions_seen":{"__input__":{}},"channel_values":{"__start__":{"plan":{"steps":[]},"status":"Not Started","project":{"id":278964,"name":"GitLab","web_url":"https://gitlab.com/gitlab-org/gitlab","languages":[{"name":"Ruby","share":68.37},{"name":"JavaScript","share":19.23},{"name":"Vue","share":8.04},{"name":"PLpgSQL","share":1.86},{"name":"Haml","share":1.22}],"description":"GitLab is an open source end-to-end software development platform with built-in version control, issue tracking, code review, CI/CD, and more. Self-host GitLab on your own servers, in a container, or on a cloud provider.","http_url_to_repo":"https://gitlab.com/gitlab-org/gitlab.git"},"approval":null,"ui_chat_log":[{"status":"success","content":"I have the following data structure: \\"edges\\": [\\n {\\n \\"node\\": {\\n \\"id\\": \\"gid://gitlab/Ai::DuoWorkflows::Workflow/1031434\\",\\n \\"projectId\\": \\"gid://gitlab/Project/62039593\\",\\n \\"humanStatus\\": \\"input required\\",\\n \\"updatedAt\\": \\"2025-07-20T19:27:15Z\\",\\n \\"createdAt\\": \\"2025-07-20T18:51:44Z\\",\\n \\"goal\\": \\"Hel\\",\\n \\"stalled\\": false,\\n \\"archived\\": false\\n }\\n },\\n {\\n \\"node\\": {\\n \\"id\\": \\"gid://gitlab/Ai::DuoWorkflows::Workflow/1031206\\",\\n \\"projectId\\": \\"gid://gitlab/Project/62039593\\",\\n \\"humanStatus\\": \\"input required\\",\\n \\"updatedAt\\": \\"2025-07-19T12:20:31Z\\",\\n \\"createdAt\\": \\"2025-07-19T12:15:49Z\\",\\n \\"goal\\": \\"Hel\\",\\n \\"stalled\\": false,\\n \\"archived\\": false\\n }\\n },]\\n\\nHow can I \\"unwrap\\" nodes so that, let\'s say a constant `nodes` would contain an array of nodes like: [\\n {\\n \\"id\\": \\"gid://gitlab/Ai::DuoWorkflows::Workflow/1031434\\",\\n \\"projectId\\": \\"gid://gitlab/Project/62039593\\",\\n \\"humanStatus\\": \\"input required\\",\\n \\"updatedAt\\": \\"2025-07-20T19:27:15Z\\",\\n \\"createdAt\\": \\"2025-07-20T18:51:44Z\\",\\n \\"goal\\": \\"Hel\\",\\n \\"stalled\\": false,\\n \\"archived\\": false\\n },\\n {\\n \\"id\\": \\"gid://gitlab/Ai::DuoWorkflows::Workflow/1031206\\",\\n \\"projectId\\": \\"gid://gitlab/Project/62039593\\",\\n \\"humanStatus\\": \\"input required\\",\\n \\"updatedAt\\": \\"2025-07-19T12:20:31Z\\",\\n \\"createdAt\\": \\"2025-07-19T12:15:49Z\\",\\n \\"goal\\": \\"Hel\\",\\n \\"stalled\\": false,\\n \\"archived\\": false\\n },]?","timestamp":"2025-07-21T08:15:05.647932+00:00","tool_info":null,"message_type":"user","correlation_id":null,"message_sub_type":null,"additional_context":null}],"last_human_input":null,"conversation_history":{"Chat Agent":[{"id":null,"name":null,"type":"HumanMessage","content":"I have the following data structure: \\"edges\\": [\\n {\\n \\"node\\": {\\n \\"id\\": \\"gid://gitlab/Ai::DuoWorkflows::Workflow/1031434\\",\\n \\"projectId\\": \\"gid://gitlab/Project/62039593\\",\\n \\"humanStatus\\": \\"input required\\",\\n \\"updatedAt\\": \\"2025-07-20T19:27:15Z\\",\\n \\"createdAt\\": \\"2025-07-20T18:51:44Z\\",\\n \\"goal\\": \\"Hel\\",\\n \\"stalled\\": false,\\n \\"archived\\": false\\n }\\n },\\n {\\n \\"node\\": {\\n \\"id\\": \\"gid://gitlab/Ai::DuoWorkflows::Workflow/1031206\\",\\n \\"projectId\\": \\"gid://gitlab/Project/62039593\\",\\n \\"humanStatus\\": \\"input required\\",\\n \\"updatedAt\\": \\"2025-07-19T12:20:31Z\\",\\n \\"createdAt\\": \\"2025-07-19T12:15:49Z\\",\\n \\"goal\\": \\"Hel\\",\\n \\"stalled\\": false,\\n \\"archived\\": false\\n }\\n },]\\n\\nHow can I \\"unwrap\\" nodes so that, let\'s say a constant `nodes` would contain an array of nodes like: [\\n {\\n \\"id\\": \\"gid://gitlab/Ai::DuoWorkflows::Workflow/1031434\\",\\n \\"projectId\\": \\"gid://gitlab/Project/62039593\\",\\n \\"humanStatus\\": \\"input required\\",\\n \\"updatedAt\\": \\"2025-07-20T19:27:15Z\\",\\n \\"createdAt\\": \\"2025-07-20T18:51:44Z\\",\\n \\"goal\\": \\"Hel\\",\\n \\"stalled\\": false,\\n \\"archived\\": false\\n },\\n {\\n \\"id\\": \\"gid://gitlab/Ai::DuoWorkflows::Workflow/1031206\\",\\n \\"projectId\\": \\"gid://gitlab/Project/62039593\\",\\n \\"humanStatus\\": \\"input required\\",\\n \\"updatedAt\\": \\"2025-07-19T12:20:31Z\\",\\n \\"createdAt\\": \\"2025-07-19T12:15:49Z\\",\\n \\"goal\\": \\"Hel\\",\\n \\"stalled\\": false,\\n \\"archived\\": false\\n },]?","example":false,"additional_kwargs":{"additional_context":null},"response_metadata":{}}]}}},"channel_versions":{"__start__":1}}'
740
- }
727
+ __typename: 'DuoWorkflow',
728
+ id: 'gid://gitlab/Ai::DuoWorkflows::Workflow/1796032',
729
+ lastUpdatedAt: '2025-01-31T17:40:02Z',
730
+ title: 'Analyze repository activity for the past week',
731
+ aiCatalogItemVersionId: null,
732
+ agentName: 'Data Analyst'
741
733
  }, {
742
- id: 'gid://gitlab/Ai::DuoWorkflows::Workflow/1031206',
743
- projectId: 'gid://gitlab/Project/62039593',
744
- humanStatus: 'input required',
745
- updatedAt: '2025-01-31T08:15:32Z',
746
- goal: 'Help me introduce translation support for the selected string using the Vue-18n dependency',
747
- stalled: false,
748
- archived: false,
749
- firstCheckpoint: {
750
- checkpoint: '{"v":3,"id":"1f0649a2-cee3-6c86-bfff-b35ddd3c4901","ts":"2025-07-19T12:16:19.003703+00:00","pending_sends":[],"versions_seen":{"__input__":{}},"channel_values":{"__start__":{"plan":{"steps":[]},"status":"Not Started","project":{"id":62039593,"name":"Duo UI","web_url":"https://gitlab.com/gitlab-org/duo-ui","languages":[{"name":"JavaScript","share":72.16},{"name":"Vue","share":22.06},{"name":"SCSS","share":2.68},{"name":"Ruby","share":1.54},{"name":"TypeScript","share":0.6}],"description":"","http_url_to_repo":"https://gitlab.com/gitlab-org/duo-ui.git"},"approval":null,"ui_chat_log":[{"status":"success","content":"Help me introduce translation support for the selected string using the Vue-18n dependency","timestamp":"2025-07-19T12:16:18.708768+00:00","tool_info":null,"message_type":"user","correlation_id":null,"message_sub_type":null,"additional_context":[{"id":"editor_selection:src/components/custom/duo_chat_message_sources/duo_chat_message_sources.vue_893edb37-6d20-4f81-83eb-2f5fbb290609","type":"AdditionalContext","content":" return count === 1 ? \'Source\' : \'Sources\';","category":"snippet","metadata":{"icon":"selection","title":"Selected text in src/components/custom/duo_chat_message_sources/duo_chat_message_sources.vue","enabled":true,"subType":"snippet","fileName":"src/components/custom/duo_chat_message_sources/duo_chat_message_sources.vue","subTypeLabel":"Editor Selection","secondaryText":"src/components/custom/duo_chat_message_sources/duo_chat_message_sources.vue"}},{"id":"1","type":"AdditionalContext","content":"The user wants you to adhere to these rules:\\nThe project is built with Vue 3, Typescript, Tailwind, shadcn-vue and other modern technologies.\\n\\nFor some transient time, this project is used to migrate legacy Vue 2 + JS + gitlab-ui components to the new tech stack. While migrating components all of the gitlab-ui components should be replaced with the shadcn-ui analogues or explicitly agreed with the user. If you see any better analogue in shadcn-ui or better way to implement functionality, speak up and ask for user\'s confirmation on what path to take.\\n\\nEvery string that is meant to be output in the UI, should be translated. The package is using Vue-18 dependency for translations.\\n\\nEvery component should have a story and a test spec alongside itself.","category":"user_rule","metadata":{"icon":"user","title":"User instruction","enabled":true,"subType":"user_rule","subTypeLabel":"User instruction","secondaryText":"chat-rules.md"}}]}],"last_human_input":null,"conversation_history":{"Chat Agent":[{"id":null,"name":null,"type":"HumanMessage","content":"Help me introduce translation support for the selected string using the Vue-18n dependency","example":false,"additional_kwargs":{"additional_context":[{"id":"editor_selection:src/components/custom/duo_chat_message_sources/duo_chat_message_sources.vue_893edb37-6d20-4f81-83eb-2f5fbb290609","content":" return count === 1 ? \'Source\' : \'Sources\';","category":"snippet","metadata":{"icon":"selection","title":"Selected text in src/components/custom/duo_chat_message_sources/duo_chat_message_sources.vue","enabled":true,"subType":"snippet","fileName":"src/components/custom/duo_chat_message_sources/duo_chat_message_sources.vue","subTypeLabel":"Editor Selection","secondaryText":"src/components/custom/duo_chat_message_sources/duo_chat_message_sources.vue"}},{"id":"1","content":"The user wants you to adhere to these rules:\\nThe project is built with Vue 3, Typescript, Tailwind, shadcn-vue and other modern technologies.\\n\\nFor some transient time, this project is used to migrate legacy Vue 2 + JS + gitlab-ui components to the new tech stack. While migrating components all of the gitlab-ui components should be replaced with the shadcn-ui analogues or explicitly agreed with the user. If you see any better analogue in shadcn-ui or better way to implement functionality, speak up and ask for user\'s confirmation on what path to take.\\n\\nEvery string that is meant to be output in the UI, should be translated. The package is using Vue-18 dependency for translations.\\n\\nEvery component should have a story and a test spec alongside itself.","category":"user_rule","metadata":{"icon":"user","title":"User instruction","enabled":true,"subType":"user_rule","subTypeLabel":"User instruction","secondaryText":"chat-rules.md"}}]},"response_metadata":{}}]}}},"channel_versions":{"__start__":1}}'
751
- }
734
+ __typename: 'DuoWorkflow',
735
+ id: 'gid://gitlab/Ai::DuoWorkflows::Workflow/1795886',
736
+ lastUpdatedAt: '2025-01-31T17:17:44Z',
737
+ title: 'Create a new Vue component for the dashboard',
738
+ aiCatalogItemVersionId: null,
739
+ agentName: 'GitLab Duo'
752
740
  }, {
753
- id: 'gid://gitlab/Ai::DuoWorkflows::Workflow/1031041',
754
- projectId: 'gid://gitlab/Project/62039593',
755
- humanStatus: 'failed',
756
- updatedAt: '2025-01-15T20:35:23Z',
757
- goal: 'I need your help migrating the src/components/custom/duo_chat_message_sources folder (component, story, and the test), that were copied over from a legacy project to the tech stack used in this project. Can you help?',
758
- stalled: false,
759
- archived: false,
760
- firstCheckpoint: {
761
- checkpoint: '{"v":3,"id":"1f064155-71df-6f90-bfff-eaa94aa27ec1","ts":"2025-07-18T20:25:26.715981+00:00","pending_sends":[],"versions_seen":{"__input__":{}},"channel_values":{"__start__":{"plan":{"steps":[]},"status":"Not Started","project":{"id":62039593,"name":"Duo UI","web_url":"https://gitlab.com/gitlab-org/duo-ui","languages":[{"name":"JavaScript","share":72.16},{"name":"Vue","share":22.06},{"name":"SCSS","share":2.68},{"name":"Ruby","share":1.54},{"name":"TypeScript","share":0.6}],"description":"","http_url_to_repo":"https://gitlab.com/gitlab-org/duo-ui.git"},"approval":null,"ui_chat_log":[{"status":"success","content":"I need your help migrating the src/components/custom/duo_chat_message_sources folder (component, story, and the test), that were copied over from a legacy project to the tech stack used in this project. Can you help?","timestamp":"2025-07-18T20:25:26.401616+00:00","tool_info":null,"message_type":"user","correlation_id":null,"message_sub_type":null,"additional_context":null}],"last_human_input":null,"conversation_history":{"Chat Agent":[{"id":null,"name":null,"type":"HumanMessage","content":"I need your help migrating the src/components/custom/duo_chat_message_sources folder (component, story, and the test), that were copied over from a legacy project to the tech stack used in this project. Can you help?","example":false,"additional_kwargs":{"additional_context":null},"response_metadata":{}}]}}},"channel_versions":{"__start__":1}}'
762
- }
741
+ __typename: 'DuoWorkflow',
742
+ id: 'gid://gitlab/Ai::DuoWorkflows::Workflow/1780932',
743
+ lastUpdatedAt: '2025-01-24T15:38:40Z',
744
+ title: 'How do I configure the CI/CD pipeline for deployment?',
745
+ aiCatalogItemVersionId: null,
746
+ agentName: 'GitLab Duo'
763
747
  }, {
764
- id: 'gid://gitlab/Ai::DuoWorkflows::Workflow/1030377',
765
- projectId: 'gid://gitlab/Project/46519181',
766
- humanStatus: 'input required',
767
- updatedAt: '2025-01-15T12:03:06Z',
768
- goal: "How should I update the CSP derectives to allow images from `https://secure.gravatar.com/avatar/`? I've tried with the selected update, but it doesn't work - I get the \"The source list for the Content Security Policy directive 'img-src' contains an invalid source: ''secure.gravatar.com''. It will be ignored.\" error. Can you help me fix this and allow images from that domain?",
769
- stalled: false,
770
- archived: false,
771
- firstCheckpoint: {
772
- checkpoint: '{"v":3,"id":"1f063cf2-1522-60d4-bfff-b222b997066b","ts":"2025-07-18T12:02:51.689588+00:00","pending_sends":[],"versions_seen":{"__input__":{}},"channel_values":{"__start__":{"plan":{"steps":[]},"status":"Not Started","project":{"id":46519181,"name":"GitLab Language Server","web_url":"https://gitlab.com/gitlab-org/editor-extensions/gitlab-lsp","languages":[{"name":"TypeScript","share":79.66},{"name":"JavaScript","share":12.25},{"name":"Vue","share":5.62},{"name":"SCSS","share":2.01},{"name":"Shell","share":0.38}],"description":"","http_url_to_repo":"https://gitlab.com/gitlab-org/editor-extensions/gitlab-lsp.git"},"approval":null,"ui_chat_log":[{"status":"success","content":"How should I update the CSP derectives to allow images from `https://secure.gravatar.com/avatar/`? I\'ve tried with the selected update, but it doesn\'t work - I get the \\"The source list for the Content Security Policy directive \'img-src\' contains an invalid source: \'\'secure.gravatar.com\'\'. It will be ignored.\\" error. Can you help me fix this and allow images from that domain?","timestamp":"2025-07-18T12:02:51.347774+00:00","tool_info":null,"message_type":"user","correlation_id":null,"message_sub_type":null,"additional_context":[{"id":"editor_selection:src/common/webview/html/utils/csp_builder.ts_cd5c7d74-f642-4b6f-ac74-5aacff408dd6","type":"AdditionalContext","content":" \'img-src\': [\\"\'self\'\\", \\"\'secure.gravatar.com\'\\"],","category":"snippet","metadata":{"icon":"selection","title":"Selected text in src/common/webview/html/utils/csp_builder.ts","enabled":true,"subType":"snippet","fileName":"src/common/webview/html/utils/csp_builder.ts","subTypeLabel":"Editor Selection","secondaryText":"src/common/webview/html/utils/csp_builder.ts"}}]}],"last_human_input":null,"conversation_history":{"Chat Agent":[{"id":null,"name":null,"type":"HumanMessage","content":"How should I update the CSP derectives to allow images from `https://secure.gravatar.com/avatar/`? I\'ve tried with the selected update, but it doesn\'t work - I get the \\"The source list for the Content Security Policy directive \'img-src\' contains an invalid source: \'\'secure.gravatar.com\'\'. It will be ignored.\\" error. Can you help me fix this and allow images from that domain?","example":false,"additional_kwargs":{"additional_context":[{"id":"editor_selection:src/common/webview/html/utils/csp_builder.ts_cd5c7d74-f642-4b6f-ac74-5aacff408dd6","content":" \'img-src\': [\\"\'self\'\\", \\"\'secure.gravatar.com\'\\"],","category":"snippet","metadata":{"icon":"selection","title":"Selected text in src/common/webview/html/utils/csp_builder.ts","enabled":true,"subType":"snippet","fileName":"src/common/webview/html/utils/csp_builder.ts","subTypeLabel":"Editor Selection","secondaryText":"src/common/webview/html/utils/csp_builder.ts"}}]},"response_metadata":{}}]}}},"channel_versions":{"__start__":1}}'
773
- }
748
+ __typename: 'DuoWorkflow',
749
+ id: 'gid://gitlab/Ai::DuoWorkflows::Workflow/1774141',
750
+ lastUpdatedAt: '2025-01-24T20:24:45Z',
751
+ title: 'Show me merge request statistics for the team',
752
+ aiCatalogItemVersionId: null,
753
+ agentName: 'Data Analyst'
774
754
  }, {
775
- id: 'gid://gitlab/Ai::DuoWorkflows::Workflow/1029369',
776
- projectId: 'gid://gitlab/Project/7071551',
777
- humanStatus: 'input required',
778
- updatedAt: '2025-01-08T15:55:58Z',
779
- goal: 'explain this to me',
780
- stalled: false,
781
- archived: false,
782
- firstCheckpoint: {
783
- checkpoint: '{"v":3,"id":"1f063217-75c6-6ace-bfff-9c250f04abb6","ts":"2025-07-17T15:19:43.610124+00:00","pending_sends":[],"versions_seen":{"__input__":{}},"channel_values":{"__start__":{"plan":{"steps":[]},"status":"Not Started","project":{"id":7071551,"name":"gitlab-ui","web_url":"https://gitlab.com/gitlab-org/gitlab-ui","languages":[{"name":"JavaScript","share":56.13},{"name":"Vue","share":19.71},{"name":"SCSS","share":15.81},{"name":"CSS","share":7.21},{"name":"Ruby","share":0.39}],"description":"Development of this project has moved to https://gitlab.com/gitlab-org/gitlab-services/design.gitlab.com.\\r\\n\\r\\nSee https://gitlab.com/gitlab-org/gitlab-services/design.gitlab.com/-/issues/2035 for more information.","http_url_to_repo":"https://gitlab.com/gitlab-org/gitlab-ui.git"},"approval":null,"ui_chat_log":[{"status":"success","content":"foo bar","timestamp":"2025-07-17T15:19:43.272681+00:00","tool_info":null,"message_type":"user","correlation_id":null,"message_sub_type":null,"additional_context":null}],"last_human_input":null,"conversation_history":{"Chat Agent":[{"id":null,"name":null,"type":"HumanMessage","content":"foo bar","example":false,"additional_kwargs":{"additional_context":null},"response_metadata":{}}]}}},"channel_versions":{"__start__":1}}'
784
- }
755
+ __typename: 'DuoWorkflow',
756
+ id: 'gid://gitlab/Ai::DuoWorkflows::Workflow/1759516',
757
+ lastUpdatedAt: '2025-01-15T16:57:52Z',
758
+ title: 'Find documentation about API rate limiting',
759
+ aiCatalogItemVersionId: null,
760
+ agentName: 'GitLab Duo'
785
761
  }, {
786
- id: 'gid://gitlab/Ai::DuoWorkflows::Workflow/1029334',
787
- projectId: 'gid://gitlab/Project/7071551',
788
- humanStatus: 'input required',
789
- updatedAt: '2025-01-08T15:19:49Z',
790
- goal: 'foo bar',
791
- stalled: false,
792
- archived: false,
793
- firstCheckpoint: {
794
- checkpoint: '{"v":3,"id":"1f063217-75c6-6ace-bfff-9c250f04abb6","ts":"2025-07-17T15:19:43.610124+00:00","pending_sends":[],"versions_seen":{"__input__":{}},"channel_values":{"__start__":{"plan":{"steps":[]},"status":"Not Started","project":{"id":7071551,"name":"gitlab-ui","web_url":"https://gitlab.com/gitlab-org/gitlab-ui","languages":[{"name":"JavaScript","share":56.13},{"name":"Vue","share":19.71},{"name":"SCSS","share":15.81},{"name":"CSS","share":7.21},{"name":"Ruby","share":0.39}],"description":"Development of this project has moved to https://gitlab.com/gitlab-org/gitlab-services/design.gitlab.com.\\r\\n\\r\\nSee https://gitlab.com/gitlab-org/gitlab-services/design.gitlab.com/-/issues/2035 for more information.","http_url_to_repo":"https://gitlab.com/gitlab-org/gitlab-ui.git"},"approval":null,"ui_chat_log":[{"status":"success","content":"foo bar","timestamp":"2025-07-17T15:19:43.272681+00:00","tool_info":null,"message_type":"user","correlation_id":null,"message_sub_type":null,"additional_context":null}],"last_human_input":null,"conversation_history":{"Chat Agent":[{"id":null,"name":null,"type":"HumanMessage","content":"foo bar","example":false,"additional_kwargs":{"additional_context":null},"response_metadata":{}}]}}},"channel_versions":{"__start__":1}}'
795
- }
762
+ __typename: 'DuoWorkflow',
763
+ id: 'gid://gitlab/Ai::DuoWorkflows::Workflow/1743262',
764
+ lastUpdatedAt: '2025-01-15T17:14:49Z',
765
+ title: 'Troubleshoot this broken pipeline',
766
+ aiCatalogItemVersionId: null,
767
+ agentName: 'GitLab Duo'
796
768
  }, {
797
- id: 'gid://gitlab/Ai::DuoWorkflows::Workflow/1029330',
798
- projectId: 'gid://gitlab/Project/7071551',
799
- humanStatus: 'input required',
800
- updatedAt: '2025-01-08T15:17:28Z',
801
- goal: 'test me',
802
- stalled: false,
803
- archived: false,
804
- firstCheckpoint: {
805
- checkpoint: '{"v":3,"id":"1f063212-2bac-68c0-bfff-fc55ae272eb1","ts":"2025-07-17T15:17:21.622232+00:00","pending_sends":[],"versions_seen":{"__input__":{}},"channel_values":{"__start__":{"plan":{"steps":[]},"status":"Not Started","project":{"id":7071551,"name":"gitlab-ui","web_url":"https://gitlab.com/gitlab-org/gitlab-ui","languages":[{"name":"JavaScript","share":56.13},{"name":"Vue","share":19.71},{"name":"SCSS","share":15.81},{"name":"CSS","share":7.21},{"name":"Ruby","share":0.39}],"description":"Development of this project has moved to https://gitlab.com/gitlab-org/gitlab-services/design.gitlab.com.\\r\\n\\r\\nSee https://gitlab.com/gitlab-org/gitlab-services/design.gitlab.com/-/issues/2035 for more information.","http_url_to_repo":"https://gitlab.com/gitlab-org/gitlab-ui.git"},"approval":null,"ui_chat_log":[{"status":"success","content":"test me","timestamp":"2025-07-17T15:17:21.275711+00:00","tool_info":null,"message_type":"user","correlation_id":null,"message_sub_type":null,"additional_context":null}],"last_human_input":null,"conversation_history":{"Chat Agent":[{"id":null,"name":null,"type":"HumanMessage","content":"test me","example":false,"additional_kwargs":{"additional_context":null},"response_metadata":{}}]}}},"channel_versions":{"__start__":1}}'
806
- }
769
+ __typename: 'DuoWorkflow',
770
+ id: 'gid://gitlab/Ai::DuoWorkflows::Workflow/1685676',
771
+ lastUpdatedAt: '2025-01-08T14:24:16Z',
772
+ title: 'Explain the error handling patterns used in this codebase',
773
+ aiCatalogItemVersionId: null,
774
+ agentName: 'GitLab Duo'
807
775
  }, {
808
- id: 'gid://gitlab/Ai::DuoWorkflows::Workflow/1028684',
809
- projectId: 'gid://gitlab/Project/46519181',
810
- humanStatus: 'input required',
811
- updatedAt: '2025-01-08T22:16:28Z',
812
- goal: 'In the `packages/lib_webview_agentic_chat/src/app/common/chat.test.js` file, help me fill out the "provides avatarUrl to the underlying components" and the "provides renderGFM to the underlying components" test placeholders based on the implementation in `packages/lib_webview_agentic_chat/src/app/common/chat.vue`',
813
- stalled: false,
814
- archived: false,
815
- firstCheckpoint: {
816
- checkpoint: '{"v":3,"id":"1f062927-1357-6124-bfff-af05cc284fdb","ts":"2025-07-16T22:15:55.256032+00:00","pending_sends":[],"versions_seen":{"__input__":{}},"channel_values":{"__start__":{"plan":{"steps":[]},"status":"Not Started","project":{"id":46519181,"name":"GitLab Language Server","web_url":"https://gitlab.com/gitlab-org/editor-extensions/gitlab-lsp","languages":[{"name":"TypeScript","share":79.68},{"name":"JavaScript","share":12.26},{"name":"Vue","share":5.33},{"name":"SCSS","share":2.26},{"name":"Shell","share":0.38}],"description":"","http_url_to_repo":"https://gitlab.com/gitlab-org/editor-extensions/gitlab-lsp.git"},"approval":null,"ui_chat_log":[{"status":"success","content":"In the `packages/lib_webview_agentic_chat/src/app/common/chat.test.js` file, help me fill out the \\"provides avatarUrl to the underlying components\\" and the \\"provides renderGFM to the underlying components\\" test placeholders based on the implementation in `packages/lib_webview_agentic_chat/src/app/common/chat.vue`","timestamp":"2025-07-16T22:15:54.359309+00:00","tool_info":null,"message_type":"user","correlation_id":null,"message_sub_type":null,"additional_context":[{"id":"editor_selection:packages/lib_webview_agentic_chat/src/app/common/chat.test.js_b5815a3e-099c-466d-9ef0-f48536f69ddd","type":"AdditionalContext","content":"provides renderGFM to the underlying components","category":"snippet","metadata":{"icon":"selection","title":"Selected text in packages/lib_webview_agentic_chat/src/app/common/chat.test.js","enabled":true,"subType":"snippet","fileName":"packages/lib_webview_agentic_chat/src/app/common/chat.test.js","subTypeLabel":"Editor Selection","secondaryText":"packages/lib_webview_agentic_chat/src/app/common/chat.test.js"}}]}],"last_human_input":null,"conversation_history":{"Chat Agent":[{"id":null,"name":null,"type":"HumanMessage","content":"In the `packages/lib_webview_agentic_chat/src/app/common/chat.test.js` file, help me fill out the \\"provides avatarUrl to the underlying components\\" and the \\"provides renderGFM to the underlying components\\" test placeholders based on the implementation in `packages/lib_webview_agentic_chat/src/app/common/chat.vue`","example":false,"additional_kwargs":{"additional_context":[{"id":"editor_selection:packages/lib_webview_agentic_chat/src/app/common/chat.test.js_b5815a3e-099c-466d-9ef0-f48536f69ddd","content":"provides renderGFM to the underlying components","category":"snippet","metadata":{"icon":"selection","title":"Selected text in packages/lib_webview_agentic_chat/src/app/common/chat.test.js","enabled":true,"subType":"snippet","fileName":"packages/lib_webview_agentic_chat/src/app/common/chat.test.js","subTypeLabel":"Editor Selection","secondaryText":"packages/lib_webview_agentic_chat/src/app/common/chat.test.js"}}]},"response_metadata":{}}]}}},"channel_versions":{"__start__":1}}'
817
- }
776
+ __typename: 'DuoWorkflow',
777
+ id: 'gid://gitlab/Ai::DuoWorkflows::Workflow/1678431',
778
+ lastUpdatedAt: '2025-01-08T13:45:15Z',
779
+ title: 'Review the testing guidelines for frontend components',
780
+ aiCatalogItemVersionId: null,
781
+ agentName: 'GitLab Duo'
818
782
  }, {
819
- id: 'gid://gitlab/Ai::DuoWorkflows::Workflow/1028594',
820
- projectId: 'gid://gitlab/Project/46519181',
821
- humanStatus: 'tool call approval required',
822
- updatedAt: '2025-01-08T20:03:24Z',
823
- goal: "In the current project I need to ensure that a webview in packages/lib_webview_agentic_chat has information about `avatarUrl` of the currently logged in user. The GraphQl query to get that information is in user_service (src/common/core/services/user_service.ts). Can you help me connect that service to the webview somehow? I would need to get that information sent down to the webview as part of the `pluginToWebview` communication channel, I guess. But please analyze all the options and let's see how far we can get",
824
- stalled: false,
825
- archived: false,
826
- firstCheckpoint: {
827
- checkpoint: '{"v":3,"id":"1f0627f5-1510-677c-bfff-624b1a456de4","ts":"2025-07-16T19:59:01.311877+00:00","pending_sends":[],"versions_seen":{"__input__":{}},"channel_values":{"__start__":{"plan":{"steps":[]},"status":"Not Started","project":{"id":46519181,"name":"GitLab Language Server","web_url":"https://gitlab.com/gitlab-org/editor-extensions/gitlab-lsp","languages":[{"name":"TypeScript","share":79.68},{"name":"JavaScript","share":12.26},{"name":"Vue","share":5.33},{"name":"SCSS","share":2.26},{"name":"Shell","share":0.38}],"description":"","http_url_to_repo":"https://gitlab.com/gitlab-org/editor-extensions/gitlab-lsp.git"},"approval":null,"ui_chat_log":[{"status":"success","content":"In the current project I need to ensure that a webview in packages/lib_webview_agentic_chat has information about `avatarUrl` of the currently logged in user. The GraphQl query to get that information is in user_service (src/common/core/services/user_service.ts). Can you help me connect that service to the webview somehow? I would need to get that information sent down to the webview as part of the `pluginToWebview` communication channel, I guess. But please analyze all the options and let\'s see how far we can get","timestamp":"2025-07-16T19:59:00.775754+00:00","tool_info":null,"message_type":"user","correlation_id":null,"message_sub_type":null,"additional_context":[{"id":"editor_selection:src/common/core/services/user_service.ts_22d20969-dfd7-4b78-9dac-c63de2f559ea","type":"AdditionalContext","content":"DefaultUserService","category":"snippet","metadata":{"icon":"selection","title":"Selected text in src/common/core/services/user_service.ts","enabled":true,"subType":"snippet","fileName":"src/common/core/services/user_service.ts","subTypeLabel":"Editor Selection","secondaryText":"src/common/core/services/user_service.ts"}}]}],"last_human_input":null,"conversation_history":{"Chat Agent":[{"id":null,"name":null,"type":"HumanMessage","content":"In the current project I need to ensure that a webview in packages/lib_webview_agentic_chat has information about `avatarUrl` of the currently logged in user. The GraphQl query to get that information is in user_service (src/common/core/services/user_service.ts). Can you help me connect that service to the webview somehow? I would need to get that information sent down to the webview as part of the `pluginToWebview` communication channel, I guess. But please analyze all the options and let\'s see how far we can get","example":false,"additional_kwargs":{"additional_context":[{"id":"editor_selection:src/common/core/services/user_service.ts_22d20969-dfd7-4b78-9dac-c63de2f559ea","content":"DefaultUserService","category":"snippet","metadata":{"icon":"selection","title":"Selected text in src/common/core/services/user_service.ts","enabled":true,"subType":"snippet","fileName":"src/common/core/services/user_service.ts","subTypeLabel":"Editor Selection","secondaryText":"src/common/core/services/user_service.ts"}}]},"response_metadata":{}}]}}},"channel_versions":{"__start__":1}}'
828
- }
783
+ __typename: 'DuoWorkflow',
784
+ id: 'gid://gitlab/Ai::DuoWorkflows::Workflow/1282107',
785
+ lastUpdatedAt: '2025-01-08T10:39:16Z',
786
+ title: 'Search for related issues and create a summary',
787
+ aiCatalogItemVersionId: 'gid://gitlab/Ai::Catalog::ItemVersion/656',
788
+ agentName: 'Issue Tracker Agent'
829
789
  }];
830
790
 
831
791
  export { AGENTIC_THREADLIST, INCLUDE_SLASH_COMMAND, MOCK_AGENT_MESSAGE, MOCK_AGENT_MESSAGE_WITH_LONG_CODE_BLOCK, MOCK_AGENT_MESSAGE_WITH_MARKDOWN, MOCK_REQUEST_MESSAGE, MOCK_REQUEST_MESSAGE_WITH_TOOL_APPROVAL, MOCK_REQUEST_MESSAGE_WITH_TOOL_APPROVAL_CREATE_COMMIT, MOCK_REQUEST_MESSAGE_WITH_TOOL_APPROVAL_CREATE_COMMIT_AUTO_BRANCH, MOCK_REQUEST_MESSAGE_WITH_TOOL_APPROVAL_CREATE_COMMIT_MESSAGE_ONLY, MOCK_REQUEST_MESSAGE_WITH_TOOL_APPROVAL_CREATE_COMMIT_OLD_NEW_CONTENT, MOCK_REQUEST_MESSAGE_WITH_TOOL_APPROVAL_CREATE_EPIC, MOCK_REQUEST_MESSAGE_WITH_TOOL_APPROVAL_CREATE_ISSUE, MOCK_REQUEST_MESSAGE_WITH_TOOL_APPROVAL_CREATE_ISSUE_NOTE, MOCK_REQUEST_MESSAGE_WITH_TOOL_APPROVAL_CREATE_MERGE_REQUEST, MOCK_REQUEST_MESSAGE_WITH_TOOL_APPROVAL_CREATE_MERGE_REQUEST_NOTE, MOCK_REQUEST_MESSAGE_WITH_TOOL_APPROVAL_CREATE_WORK_ITEM, MOCK_REQUEST_MESSAGE_WITH_TOOL_APPROVAL_CREATE_WORK_ITEM_NOTE, MOCK_REQUEST_MESSAGE_WITH_TOOL_APPROVAL_PARAMS, MOCK_REQUEST_MESSAGE_WITH_TOOL_APPROVAL_RUN_COMMAND, MOCK_REQUEST_MESSAGE_WITH_TOOL_APPROVAL_RUN_COMMAND_WITH_ERROR_RESPONSE, MOCK_REQUEST_MESSAGE_WITH_TOOL_APPROVAL_RUN_COMMAND_WITH_RESPONSE, MOCK_REQUEST_MESSAGE_WITH_TOOL_APPROVAL_RUN_GIT_COMMAND, MOCK_REQUEST_MESSAGE_WITH_TOOL_APPROVAL_UPDATE_ISSUE, MOCK_REQUEST_MESSAGE_WITH_TOOL_APPROVAL_UPDATE_MERGE_REQUEST, MOCK_REQUEST_MESSAGE_WITH_TOOL_APPROVAL_UPDATE_WORK_ITEM, MOCK_RESPONSE_MESSAGE, MOCK_RESPONSE_MESSAGE_FOR_STREAMING, MOCK_TOOL_MESSAGE, MOCK_TOOL_MESSAGE_WITH_LINK, MOCK_TOOL_MESSAGE_WITH_REQUEST_AND_RESPONSE_DETAILS, MOCK_USER_PROMPT_MESSAGE, MOCK_WORKFLOW_END_MESSAGE, SLASH_COMMANDS, THREADLIST, generateMockResponseChunks, generateSeparateChunks, renderGFM, renderMarkdown };
@@ -1,2 +1,2 @@
1
- @charset "UTF-8";.resizable-content{--tw-shadow:var(--gl-shadow-lg);--tw-shadow-colored:var(--gl-shadow-lg);background:var(--gl-background-color-default);border-radius:.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);font-size:var(--gl-font-size-base);height:100%;overflow-y:auto;width:100%}.recents-wrapper .resizable-content{margin-top:var(--gl-spacing-scale-0)}.resizable-content{display:flex;flex-direction:column;line-height:1rem}.resizable-component .resizable-l,.resizable-component .resizable-t{background-color:initial;border-radius:3px;transition:background-color .2s cubic-bezier(.22,.61,.36,1)}@media (prefers-reduced-motion){.resizable-component .resizable-l,.resizable-component .resizable-t{transition-delay:0ms!important;transition-duration:.01ms!important}}.resizable-component .resizable-l:hover,.resizable-component .resizable-t:hover{background-color:var(--gl-color-blue-200)}.resizable-component .resizable-t{height:4px!important;left:50%!important;top:2px!important;transform:translateX(-50%);width:95%!important}.resizable-component .resizable-l{height:95%!important;left:2px!important;top:50%!important;transform:translateY(-50%);width:4px!important}.resizable-component .duo-chat{z-index:var(--gl-zindex-0)}.resizable-component .resizable-l,.resizable-component .resizable-lt,.resizable-component .resizable-t{z-index:var(--gl-zindex-1)}.duo-chat{font-family:var(--gl-font-family-regular);z-index:999}.duo-chat .message-enter-active,.duo-chat .message-leave-active{transition:all .5s ease}.duo-chat .message-enter,.duo-chat .message-leave-to{opacity:var(--gl-opacity-0);transform:translateY(10px)}.duo-chat .duo-chat-loader.message-leave,.duo-chat .duo-chat-loader.message-leave-to{transition:none}.duo-chat .duo-agent-mode-switcher>*,.duo-chat .duo-model-switcher>*{width:100%}.duo-chat-drawer{--tw-shadow:var(--gl-shadow-lg);--tw-shadow-colored:var(--gl-shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);font-size:var(--gl-font-size-base);height:100%;overflow-y:auto;position:fixed;right:0;transition-duration:.2s;transition-property:all;transition-timing-function:ease;width:100%}.recents-wrapper .duo-chat-drawer{margin-top:var(--gl-spacing-scale-0)}.duo-chat-drawer{display:flex;flex-direction:column;line-height:1rem}.duo-chat-drawer-footer{padding-bottom:var(--gl-spacing-scale-4);padding-left:var(--gl-spacing-scale-4);padding-right:var(--gl-spacing-scale-4)}.duo-chat-drawer-footer:before{--tw-translate-y:-100%;background:linear-gradient(to bottom,#0000,var(--gl-background-color-default));content:"";height:var(--gl-spacing-scale-4);left:0;pointer-events:none;position:absolute;top:0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));width:100%}.duo-chat-history{scroll-behavior:smooth}.duo-chat-history *{overflow-anchor:none}.duo-chat-history .scroll-anchor{height:1px;margin-top:-1px;overflow-anchor:auto}.history-item{align-items:center;background:var(--gl-button-default-tertiary-background-color-default);border-radius:var(--gl-border-radius-lg);display:flex;gap:var(--gl-spacing-scale-3);margin-left:calc(var(--gl-spacing-scale-3)*-1);margin-right:calc(var(--gl-spacing-scale-3)*-1);padding-right:var(--gl-spacing-scale-2);transition:background-color .2s cubic-bezier(.22,.61,.36,1)}.history-item:focus,.history-item:focus-within,.history-item:hover{background:var(--gl-button-default-tertiary-background-color-hover)}.history-item:focus .history-remove-button,.history-item:focus-within .history-remove-button,.history-item:hover .history-remove-button{opacity:1}.history-item .history-remove-button{opacity:0;transition:opacity .2s cubic-bezier(.22,.61,.36,1)}.history-item .history-item-name{border-radius:var(--gl-border-radius-lg);border-width:0;padding:var(--gl-spacing-scale-3)}.history-item .history-item-name,.history-item .history-item-name:active,.history-item .history-item-name:focus,.history-item .history-item-name:hover{background-color:initial!important}.history-item .gl-button-text{align-items:center;display:flex;flex-direction:row;gap:var(--gl-spacing-scale-3);text-align:left;width:100%}.duo-chat-input{background:var(--gl-control-background-color-default);border-radius:1.25rem;box-shadow:inset 0 0 0 1px var(--gl-control-border-color-default);display:flex;flex-direction:column;max-height:240px;overflow:hidden}.duo-chat-input:focus-within{box-shadow:inset 0 0 0 1px var(--gl-control-border-color-focus),0 0 0 1px var(--gl-focus-ring-inner-color),0 0 0 3px var(--gl-focus-ring-outer-color);outline:none}@media (forced-colors:active){.duo-chat-input:focus-within{outline:2px solid LinkText}}.duo-chat-input .gl-form-textarea.form-control{border-radius:1.25rem;flex:1;max-height:240px;padding-right:40px;resize:none}.duo-chat-input:after{content:attr(data-value) " ";font-family:var(--gl-font-family-regular);padding:var(--gl-spacing-scale-4);padding-right:40px;visibility:hidden;word-break:break-word}.duo-chat .duo-chat-suggestion-button{border-radius:1rem}.slash-commands{margin-top:calc(var(--gl-spacing-scale-2)*-1)}.slash-commands .active-command{background-color:var(--gl-background-color-strong);border-radius:.25rem}.slash-commands .gl-dropdown-item button.dropdown-item{background-color:initial;font-size:var(--gl-font-size-sm);padding-left:var(--gl-spacing-scale-3);padding-right:var(--gl-spacing-scale-3)}.slash-commands .gl-dropdown-item button.dropdown-item:hover{background-color:initial}.duo-chat-markdown{color:#3a383f;font-family:var(--gl-font-family-regular);font-size:var(--gl-font-size-lg);font-weight:var(--gl-font-weight-normal);line-height:var(--gl-line-height-24)}.duo-chat-markdown :first-child{margin-top:var(--gl-spacing-scale-0)}.duo-chat-markdown .gl-h1,.duo-chat-markdown h1{color:var(--gl-heading-1-color);font-size:var(--gl-heading-1-font-size);font-weight:var(--gl-heading-1-font-weight);letter-spacing:var(--gl-heading-1-letter-spacing);line-height:var(--gl-heading-1-line-height);margin-bottom:var(--gl-heading-1-margin-bottom);margin-top:var(--gl-spacing-scale-7)}.duo-chat-markdown .gl-h2,.duo-chat-markdown h2{color:var(--gl-heading-2-color);font-size:var(--gl-heading-2-font-size);font-weight:var(--gl-heading-2-font-weight);letter-spacing:var(--gl-heading-2-letter-spacing);line-height:var(--gl-heading-2-line-height);margin-bottom:var(--gl-heading-2-margin-bottom);margin-top:var(--gl-spacing-scale-6)}.duo-chat-markdown .gl-h3,.duo-chat-markdown h3{color:var(--gl-heading-3-color);font-size:var(--gl-heading-3-font-size);font-weight:var(--gl-heading-3-font-weight);letter-spacing:var(--gl-heading-3-letter-spacing);line-height:var(--gl-heading-3-line-height);margin-bottom:var(--gl-heading-3-margin-bottom);margin-top:var(--gl-spacing-scale-6)}.duo-chat-markdown .gl-h4,.duo-chat-markdown h4{color:var(--gl-heading-4-color);font-size:var(--gl-heading-4-font-size);font-weight:var(--gl-heading-4-font-weight);letter-spacing:var(--gl-heading-4-letter-spacing);line-height:var(--gl-heading-4-line-height);margin-bottom:var(--gl-heading-4-margin-bottom);margin-top:var(--gl-spacing-scale-5)}.duo-chat-markdown .gl-h5,.duo-chat-markdown h5{color:var(--gl-heading-5-color);font-size:var(--gl-heading-5-font-size);font-weight:var(--gl-heading-5-font-weight);letter-spacing:var(--gl-heading-5-letter-spacing);line-height:var(--gl-heading-5-line-height);margin-bottom:var(--gl-heading-5-margin-bottom);margin-top:var(--gl-spacing-scale-5)}.duo-chat-markdown .gl-h6,.duo-chat-markdown h6{color:var(--gl-heading-6-color);font-size:var(--gl-heading-6-font-size);font-weight:var(--gl-heading-6-font-weight);letter-spacing:var(--gl-heading-6-letter-spacing);line-height:var(--gl-heading-6-line-height);margin-bottom:var(--gl-heading-6-margin-bottom);margin-top:var(--gl-spacing-scale-5)}.duo-chat-markdown .gl-paragraph,.duo-chat-markdown p{margin-bottom:var(--gl-spacing-scale-0);margin-top:var(--gl-spacing-scale-0)}.duo-chat-markdown .gl-paragraph+.gl-paragraph,.duo-chat-markdown .gl-paragraph+p,.duo-chat-markdown p+.gl-paragraph,.duo-chat-markdown p+p{margin-top:var(--gl-spacing-scale-5)}.duo-chat-markdown .gl-paragraph.sm,.duo-chat-markdown .sm,.duo-chat-markdown p.sm{font-size:.875rem;line-height:var(--gl-line-height-20)}.duo-chat-markdown .monospace,.duo-chat-markdown code{font-family:var(--gl-font-family-monospace);font-family:var(--default-mono-font,"GitLab Mono"),"JetBrains Mono","Menlo","DejaVu Sans Mono","Liberation Mono","Consolas","Ubuntu Mono","Courier New","andale mono","lucida console",monospace;font-variant-ligatures:none}.duo-chat-markdown blockquote{box-shadow:inset 4px 0 0 0 #dcdcde;color:var(--gray-700);margin:var(--gl-spacing-scale-3) var(--gl-spacing-scale-0);padding-bottom:var(--gl-spacing-scale-3);padding-left:var(--gl-spacing-scale-6);padding-top:var(--gl-spacing-scale-3)}.duo-chat-markdown .idiff{border-radius:.25rem;display:inline-flex;padding-left:var(--gl-spacing-scale-2);padding-right:var(--gl-spacing-scale-2)}.duo-chat-markdown .deletion{background-color:var(--red-100)}.duo-chat-markdown .addition{background-color:var(--green-100)}.duo-chat-markdown code{background-color:var(--gray-50);border-radius:.25rem;color:var(--gray-950);padding:var(--gl-spacing-scale-1) var(--gl-spacing-scale-2)}.duo-chat-markdown pre{border-radius:.25rem;box-shadow:inset 0 0 0 1px #dcdcde;margin-bottom:var(--gl-spacing-scale-7);margin-top:var(--gl-spacing-scale-7);overflow:auto;padding:var(--gl-spacing-scale-3) var(--gl-spacing-scale-4)}.duo-chat-markdown pre code{background-color:var(--white);border-radius:var(--gl-border-radius-none);color:var(--gray-900);padding:var(--gl-spacing-scale-0)}.duo-chat-markdown .audio-container{display:inline-flex;flex-direction:column;width:100%}.duo-chat-markdown .audio-container audio{width:100%}.duo-chat-markdown .audio-container a{margin-top:var(--gl-spacing-scale-3)}.duo-chat-markdown .audio-container a:before{-webkit-font-smoothing:antialiased;content:"📎";margin-right:var(--gl-spacing-scale-2);text-rendering:auto}.duo-chat-markdown table{margin-bottom:var(--gl-spacing-scale-7);margin-top:var(--gl-spacing-scale-7)}.duo-chat-markdown table td,.duo-chat-markdown table th{box-shadow:inset 0 -1px 0 0 #dcdcde;padding:var(--gl-spacing-scale-4) var(--gl-spacing-scale-3);vertical-align:top}.duo-chat-markdown table th{box-shadow:inset 0 1px 0 0 #dcdcde,inset 0 -1px 0 0 #dcdcde;font-weight:var(--gl-font-weight-bold)}.duo-chat-markdown table thead{background-color:var(--gray-50)}.duo-chat-markdown table tr:nth-child(2n){background-color:var(--gray-10)}.duo-chat-compact-markdown{font-size:var(--gl-font-size-base)}.recents-wrapper .duo-chat-compact-markdown{margin-top:var(--gl-spacing-scale-0)}.duo-chat-compact-markdown{line-height:var(--gl-line-height-20)}.duo-chat-compact-markdown .gl-h1,.duo-chat-compact-markdown h1{color:var(--gl-heading-1-fixed-color);font-size:var(--gl-heading-1-fixed-font-size);font-weight:var(--gl-heading-1-fixed-font-weight);letter-spacing:var(--gl-heading-1-fixed-letter-spacing);line-height:var(--gl-heading-1-fixed-line-height);margin-bottom:var(--gl-heading-1-fixed-margin-bottom);margin-top:var(--gl-spacing-scale-7)}.duo-chat-compact-markdown .gl-h2,.duo-chat-compact-markdown h2{color:var(--gl-heading-2-fixed-color);font-size:var(--gl-heading-2-fixed-font-size);font-weight:var(--gl-heading-2-fixed-font-weight);letter-spacing:var(--gl-heading-2-fixed-letter-spacing);line-height:var(--gl-heading-2-fixed-line-height);margin-bottom:var(--gl-heading-2-fixed-margin-bottom);margin-top:var(--gl-spacing-scale-6)}.duo-chat-compact-markdown .gl-h3,.duo-chat-compact-markdown h3{color:var(--gl-heading-3-fixed-color);font-size:var(--gl-heading-3-fixed-font-size);font-weight:var(--gl-heading-3-fixed-font-weight);letter-spacing:var(--gl-heading-3-fixed-letter-spacing);line-height:var(--gl-heading-3-fixed-line-height);margin-bottom:var(--gl-heading-3-fixed-margin-bottom);margin-top:var(--gl-spacing-scale-6)}.duo-chat-compact-markdown .gl-h4,.duo-chat-compact-markdown h4{color:var(--gl-heading-4-fixed-color);font-size:var(--gl-heading-4-fixed-font-size);font-weight:var(--gl-heading-4-fixed-font-weight);letter-spacing:var(--gl-heading-4-fixed-letter-spacing);line-height:var(--gl-heading-4-fixed-line-height);margin-bottom:var(--gl-heading-4-fixed-margin-bottom);margin-top:var(--gl-spacing-scale-5)}.duo-chat-compact-markdown .gl-h5,.duo-chat-compact-markdown h5{color:var(--gl-heading-5-fixed-color);font-size:var(--gl-heading-5-fixed-font-size);font-weight:var(--gl-heading-5-fixed-font-weight);letter-spacing:var(--gl-heading-5-fixed-letter-spacing);line-height:var(--gl-heading-5-fixed-line-height);margin-bottom:var(--gl-heading-5-fixed-margin-bottom);margin-top:var(--gl-spacing-scale-5)}.duo-chat-compact-markdown .gl-h6,.duo-chat-compact-markdown h6{color:var(--gl-heading-6-fixed-color);font-size:var(--gl-heading-6-fixed-font-size);font-weight:var(--gl-heading-6-fixed-font-weight);letter-spacing:var(--gl-heading-6-fixed-letter-spacing);line-height:var(--gl-heading-6-fixed-line-height);margin-bottom:var(--gl-heading-6-fixed-margin-bottom);margin-top:var(--gl-spacing-scale-5)}.duo-chat-compact-markdown .sm{font-size:var(--gl-font-size-sm)}.duo-chat-compact-markdown .monospace,.duo-chat-compact-markdown code{font-family:var(--gl-font-family-monospace);font-family:var(--default-mono-font,"GitLab Mono"),"JetBrains Mono","Menlo","DejaVu Sans Mono","Liberation Mono","Consolas","Ubuntu Mono","Courier New","andale mono","lucida console",monospace;font-variant-ligatures:none}.duo-chat-compact-markdown table td,.duo-chat-compact-markdown table th{padding-bottom:var(--gl-spacing-scale-3);padding-top:var(--gl-spacing-scale-3)}.message-tool-approval-collapsed{border-bottom:0}.message-tool-approval-collapsed-header{border-bottom-left-radius:calc(var(--gl-card-border-radius) - 1px);border-bottom-right-radius:calc(var(--gl-card-border-radius) - 1px)}.web-only .duo-chat-input{overflow:visible;position:relative}.web-only .duo-chat-input:after{padding:var(--gl-spacing-scale-2)}.web-only .duo-chat-message pre code{background-color:initial!important;color:inherit!important}.duo-chat-loader{display:flex}.duo-chat-loader .transition{transition:width .2s cubic-bezier(.22,.61,.36,1)}@media (prefers-reduced-motion){.duo-chat-loader .transition{transition-delay:0ms!important;transition-duration:.01ms!important}}.duo-chat-loader .text-enter{opacity:var(--gl-opacity-0)}.duo-chat-loader .text-enter-active{transition:opacity .4s cubic-bezier(.22,.61,.36,1)}@media (prefers-reduced-motion){.duo-chat-loader .text-enter-active{transition-delay:0ms!important;transition-duration:.01ms!important}}.duo-chat-loader .text-enter-to,.duo-chat-loader .text-leave{opacity:var(--gl-opacity-10)}.duo-chat-loader .text-leave-active{transition:opacity .2s cubic-bezier(.22,.61,.36,1)}@media (prefers-reduced-motion){.duo-chat-loader .text-leave-active{transition-delay:0ms!important;transition-duration:.01ms!important}}.duo-chat-loader .text-leave-to{opacity:var(--gl-opacity-0)}.duo-chat-message{--gl-text-color-heading:var(--duo-chat-message-heading-color,inherit)!important;border-radius:1rem 1rem 0;color:var(--duo-chat-message-color,inherit)!important;position:relative}.duo-chat-message code{background-color:var(--gl-status-neutral-background-color)}.duo-chat-message pre{background-color:var(--gl-background-color-preformat,var(--gl-background-color-default));border-color:var(--gl-border-color-default);border-style:solid;border-width:1px;box-shadow:none!important;color:inherit;max-height:60vh;padding:var(--gl-spacing-scale-3) var(--gl-spacing-scale-4);scroll-behavior:smooth}.duo-chat-message pre:after,.duo-chat-message pre:before{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem;content:"";height:var(--gl-spacing-scale-7);left:1px;pointer-events:none;position:absolute;width:calc(100% - 2px)}.duo-chat-message pre.scrim-top:before{--tw-rotate:-180deg;background:linear-gradient(to bottom,#0000,var(--gl-background-color-default));top:1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.duo-chat-message pre.scrim-bottom:after{background:linear-gradient(to bottom,#0000,var(--gl-background-color-default));bottom:1px}.duo-chat-message pre code{background-color:initial;display:block;font-size:var(--gl-font-size-sm);white-space:pre-wrap;word-break:break-all}.duo-chat-message p:not(:last-of-type){margin-bottom:var(--gl-spacing-scale-4)}.duo-chat-message p:last-of-type{margin-bottom:var(--gl-spacing-scale-0)}.duo-chat-message copy-code,.duo-chat-message insert-code-snippet{opacity:var(--gl-opacity-0);position:absolute;right:.5rem;top:.5rem;transition-duration:.2s;transition-property:all;transition-timing-function:ease}.duo-chat-message copy-code [role=tooltip],.duo-chat-message insert-code-snippet [role=tooltip]{background-color:var(--gray-100);border-radius:.25rem;display:none;left:0;position:absolute;top:0;width:max-content}.duo-chat-message copy-code [role=tooltip] .arrow,.duo-chat-message insert-code-snippet [role=tooltip] .arrow{background:inherit;height:var(--gl-spacing-scale-3);position:absolute;transform:rotate(45deg);width:var(--gl-spacing-scale-3)}.duo-chat-message copy-code{margin-right:2.5rem}.insert-code-hidden insert-code-snippet{display:none}.insert-code-hidden copy-code{margin-right:0}.duo-chat-message-complete .duo-message-pre-block:focus .copy-to-clipboard-button-container,.duo-chat-message-complete .duo-message-pre-block:focus copy-code,.duo-chat-message-complete .duo-message-pre-block:focus insert-code-snippet,.duo-chat-message-complete .duo-message-pre-block:has(button:focus) .copy-to-clipboard-button-container,.duo-chat-message-complete .duo-message-pre-block:has(button:focus) copy-code,.duo-chat-message-complete .duo-message-pre-block:has(button:focus) insert-code-snippet,.duo-chat-message-complete .duo-message-pre-block:hover .copy-to-clipboard-button-container,.duo-chat-message-complete .duo-message-pre-block:hover copy-code,.duo-chat-message-complete .duo-message-pre-block:hover insert-code-snippet{opacity:1}.duo-chat-message-error>p{margin:0}.agentic-feedback-hover-wrapper{transition:width .3s ease-in-out,opacity .3s ease-in-out,margin .3s ease-in-out}.gl-group:hover .agentic-feedback-hover-wrapper{margin-right:0;opacity:1;width:auto}.recents-wrapper .gl-accordion-item-header .gl-button.gl-button.btn-link{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;border-radius:var(--gl-border-radius-none);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);display:block;font-size:var(--gl-font-size-sm);font-weight:var(--gl-font-weight-bold);padding-bottom:var(--gl-spacing-scale-2);padding-left:var(--gl-spacing-scale-3);padding-top:var(--gl-spacing-scale-2);text-decoration-line:none;text-transform:uppercase;width:100%}.recents-wrapper .gl-accordion-item-header>.collapse{margin-left:var(--gl-spacing-scale-0)}.recents-wrapper .gl-text-base{margin-top:var(--gl-spacing-scale-0)}.agentic-binary-feedback .feedback-colored-icon{animation:feedback-fade-out .3s ease-in-out forwards;animation-delay:2s;margin-left:4px;will-change:opacity}.agentic-binary-feedback .feedback-thanks{animation:feedback-fade-in .3s ease-in-out forwards;animation-delay:2s;pointer-events:none;will-change:opacity,width,margin}@keyframes feedback-fade-out{to{opacity:0;overflow:hidden;pointer-events:none;width:0}}@media (prefers-reduced-motion:reduce){.feedback-colored-icon,.feedback-thanks{animation:none}}@keyframes feedback-fade-in{to{margin-left:-6px;opacity:1;pointer-events:auto;width:auto}}
1
+ @charset "UTF-8";.resizable-content{--tw-shadow:var(--gl-shadow-lg);--tw-shadow-colored:var(--gl-shadow-lg);background:var(--gl-background-color-default);border-radius:.5rem;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);font-size:var(--gl-font-size-base);height:100%;overflow-y:auto;width:100%}.recents-wrapper .resizable-content{margin-top:var(--gl-spacing-scale-0)}.resizable-content{display:flex;flex-direction:column;line-height:1rem}.resizable-component .resizable-l,.resizable-component .resizable-t{background-color:initial;border-radius:3px;transition:background-color .2s cubic-bezier(.22,.61,.36,1)}@media (prefers-reduced-motion){.resizable-component .resizable-l,.resizable-component .resizable-t{transition-delay:0ms!important;transition-duration:.01ms!important}}.resizable-component .resizable-l:hover,.resizable-component .resizable-t:hover{background-color:var(--gl-color-blue-200)}.resizable-component .resizable-t{height:4px!important;left:50%!important;top:2px!important;transform:translateX(-50%);width:95%!important}.resizable-component .resizable-l{height:95%!important;left:2px!important;top:50%!important;transform:translateY(-50%);width:4px!important}.resizable-component .duo-chat{z-index:var(--gl-zindex-0)}.resizable-component .resizable-l,.resizable-component .resizable-lt,.resizable-component .resizable-t{z-index:var(--gl-zindex-1)}.duo-chat{font-family:var(--gl-font-family-regular);z-index:999}.duo-chat .message-enter-active,.duo-chat .message-leave-active{transition:all .5s ease}.duo-chat .message-enter,.duo-chat .message-leave-to{opacity:var(--gl-opacity-0);transform:translateY(10px)}.duo-chat .duo-chat-loader.message-leave,.duo-chat .duo-chat-loader.message-leave-to{transition:none}.duo-chat .duo-agent-mode-switcher>*,.duo-chat .duo-model-switcher>*{width:100%}.duo-chat-drawer{--tw-shadow:var(--gl-shadow-lg);--tw-shadow-colored:var(--gl-shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);font-size:var(--gl-font-size-base);height:100%;overflow-y:auto;position:fixed;right:0;transition-duration:.2s;transition-property:all;transition-timing-function:ease;width:100%}.recents-wrapper .duo-chat-drawer{margin-top:var(--gl-spacing-scale-0)}.duo-chat-drawer{display:flex;flex-direction:column;line-height:1rem}.duo-chat-drawer-footer{padding-bottom:var(--gl-spacing-scale-4);padding-left:var(--gl-spacing-scale-4);padding-right:var(--gl-spacing-scale-4)}.duo-chat-drawer-footer:before{--tw-translate-y:-100%;background:linear-gradient(to bottom,#0000,var(--gl-background-color-default));content:"";height:var(--gl-spacing-scale-4);left:0;pointer-events:none;position:absolute;top:0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));width:100%}.duo-chat-history{scroll-behavior:smooth}.duo-chat-history *{overflow-anchor:none}.duo-chat-history .scroll-anchor{height:1px;margin-top:-1px;overflow-anchor:auto}.history-item{align-items:center;background:var(--gl-button-default-tertiary-background-color-default);border-radius:var(--gl-border-radius-lg);display:flex;gap:var(--gl-spacing-scale-3);margin-left:calc(var(--gl-spacing-scale-3)*-1);margin-right:calc(var(--gl-spacing-scale-3)*-1);padding-right:var(--gl-spacing-scale-2);transition:background-color .2s cubic-bezier(.22,.61,.36,1)}.history-item:focus,.history-item:focus-within,.history-item:hover{background:var(--gl-button-default-tertiary-background-color-hover)}.history-item:focus .history-remove-button,.history-item:focus-within .history-remove-button,.history-item:hover .history-remove-button{opacity:1}.history-item .history-remove-button{opacity:0;transition:opacity .2s cubic-bezier(.22,.61,.36,1)}.history-item .history-item-name{border-radius:var(--gl-border-radius-lg);border-width:0;padding:var(--gl-spacing-scale-3)}.history-item .history-item-name,.history-item .history-item-name:active,.history-item .history-item-name:focus,.history-item .history-item-name:hover{background-color:initial!important}.history-item .gl-button-text{align-items:center;display:flex;flex-direction:row;gap:var(--gl-spacing-scale-3);text-align:left;width:100%}.duo-chat-input{background:var(--gl-control-background-color-default);border-radius:1.25rem;box-shadow:inset 0 0 0 1px var(--gl-control-border-color-default);display:flex;flex-direction:column;max-height:240px;overflow:hidden}.duo-chat-input:focus-within{box-shadow:inset 0 0 0 1px var(--gl-control-border-color-focus),0 0 0 1px var(--gl-focus-ring-inner-color),0 0 0 3px var(--gl-focus-ring-outer-color);outline:none}@media (forced-colors:active){.duo-chat-input:focus-within{outline:2px solid LinkText}}.duo-chat-input .gl-form-textarea.form-control{border-radius:1.25rem;flex:1;max-height:240px;padding-right:40px;resize:none}.duo-chat-input:after{content:attr(data-value) " ";font-family:var(--gl-font-family-regular);padding:var(--gl-spacing-scale-4);padding-right:40px;visibility:hidden;word-break:break-word}.duo-chat .duo-chat-suggestion-button{border-radius:1rem}.slash-commands{margin-top:calc(var(--gl-spacing-scale-2)*-1)}.slash-commands .active-command{background-color:var(--gl-background-color-strong);border-radius:.25rem}.slash-commands .gl-dropdown-item button.dropdown-item{background-color:initial;font-size:var(--gl-font-size-sm);padding-left:var(--gl-spacing-scale-3);padding-right:var(--gl-spacing-scale-3)}.slash-commands .gl-dropdown-item button.dropdown-item:hover{background-color:initial}.duo-chat-markdown{color:#3a383f;font-family:var(--gl-font-family-regular);font-size:var(--gl-font-size-lg);font-weight:var(--gl-font-weight-normal);line-height:var(--gl-line-height-24)}.duo-chat-markdown :first-child{margin-top:var(--gl-spacing-scale-0)}.duo-chat-markdown .gl-h1,.duo-chat-markdown h1{color:var(--gl-heading-1-color);font-size:var(--gl-heading-1-font-size);font-weight:var(--gl-heading-1-font-weight);letter-spacing:var(--gl-heading-1-letter-spacing);line-height:var(--gl-heading-1-line-height);margin-bottom:var(--gl-heading-1-margin-bottom);margin-top:var(--gl-spacing-scale-7)}.duo-chat-markdown .gl-h2,.duo-chat-markdown h2{color:var(--gl-heading-2-color);font-size:var(--gl-heading-2-font-size);font-weight:var(--gl-heading-2-font-weight);letter-spacing:var(--gl-heading-2-letter-spacing);line-height:var(--gl-heading-2-line-height);margin-bottom:var(--gl-heading-2-margin-bottom);margin-top:var(--gl-spacing-scale-6)}.duo-chat-markdown .gl-h3,.duo-chat-markdown h3{color:var(--gl-heading-3-color);font-size:var(--gl-heading-3-font-size);font-weight:var(--gl-heading-3-font-weight);letter-spacing:var(--gl-heading-3-letter-spacing);line-height:var(--gl-heading-3-line-height);margin-bottom:var(--gl-heading-3-margin-bottom);margin-top:var(--gl-spacing-scale-6)}.duo-chat-markdown .gl-h4,.duo-chat-markdown h4{color:var(--gl-heading-4-color);font-size:var(--gl-heading-4-font-size);font-weight:var(--gl-heading-4-font-weight);letter-spacing:var(--gl-heading-4-letter-spacing);line-height:var(--gl-heading-4-line-height);margin-bottom:var(--gl-heading-4-margin-bottom);margin-top:var(--gl-spacing-scale-5)}.duo-chat-markdown .gl-h5,.duo-chat-markdown h5{color:var(--gl-heading-5-color);font-size:var(--gl-heading-5-font-size);font-weight:var(--gl-heading-5-font-weight);letter-spacing:var(--gl-heading-5-letter-spacing);line-height:var(--gl-heading-5-line-height);margin-bottom:var(--gl-heading-5-margin-bottom);margin-top:var(--gl-spacing-scale-5)}.duo-chat-markdown .gl-h6,.duo-chat-markdown h6{color:var(--gl-heading-6-color);font-size:var(--gl-heading-6-font-size);font-weight:var(--gl-heading-6-font-weight);letter-spacing:var(--gl-heading-6-letter-spacing);line-height:var(--gl-heading-6-line-height);margin-bottom:var(--gl-heading-6-margin-bottom);margin-top:var(--gl-spacing-scale-5)}.duo-chat-markdown .gl-paragraph,.duo-chat-markdown p{margin-bottom:var(--gl-spacing-scale-0);margin-top:var(--gl-spacing-scale-0)}.duo-chat-markdown .gl-paragraph+.gl-paragraph,.duo-chat-markdown .gl-paragraph+p,.duo-chat-markdown p+.gl-paragraph,.duo-chat-markdown p+p{margin-top:var(--gl-spacing-scale-5)}.duo-chat-markdown .gl-paragraph.sm,.duo-chat-markdown .sm,.duo-chat-markdown p.sm{font-size:.875rem;line-height:var(--gl-line-height-20)}.duo-chat-markdown .monospace,.duo-chat-markdown code{font-family:var(--gl-font-family-monospace);font-family:var(--default-mono-font,"GitLab Mono"),"JetBrains Mono","Menlo","DejaVu Sans Mono","Liberation Mono","Consolas","Ubuntu Mono","Courier New","andale mono","lucida console",monospace;font-variant-ligatures:none}.duo-chat-markdown blockquote{box-shadow:inset 4px 0 0 0 #dcdcde;color:var(--gray-700);margin:var(--gl-spacing-scale-3) var(--gl-spacing-scale-0);padding-bottom:var(--gl-spacing-scale-3);padding-left:var(--gl-spacing-scale-6);padding-top:var(--gl-spacing-scale-3)}.duo-chat-markdown .idiff{border-radius:.25rem;display:inline-flex;padding-left:var(--gl-spacing-scale-2);padding-right:var(--gl-spacing-scale-2)}.duo-chat-markdown .deletion{background-color:var(--red-100)}.duo-chat-markdown .addition{background-color:var(--green-100)}.duo-chat-markdown code{background-color:var(--gray-50);border-radius:.25rem;color:var(--gray-950);padding:var(--gl-spacing-scale-1) var(--gl-spacing-scale-2)}.duo-chat-markdown pre{border-radius:.25rem;box-shadow:inset 0 0 0 1px #dcdcde;margin-bottom:var(--gl-spacing-scale-7);margin-top:var(--gl-spacing-scale-7);overflow:auto;padding:var(--gl-spacing-scale-3) var(--gl-spacing-scale-4)}.duo-chat-markdown pre code{background-color:var(--white);border-radius:var(--gl-border-radius-none);color:var(--gray-900);padding:var(--gl-spacing-scale-0)}.duo-chat-markdown .audio-container{display:inline-flex;flex-direction:column;width:100%}.duo-chat-markdown .audio-container audio{width:100%}.duo-chat-markdown .audio-container a{margin-top:var(--gl-spacing-scale-3)}.duo-chat-markdown .audio-container a:before{-webkit-font-smoothing:antialiased;content:"📎";margin-right:var(--gl-spacing-scale-2);text-rendering:auto}.duo-chat-markdown table{margin-bottom:var(--gl-spacing-scale-7);margin-top:var(--gl-spacing-scale-7)}.duo-chat-markdown table td,.duo-chat-markdown table th{box-shadow:inset 0 -1px 0 0 #dcdcde;padding:var(--gl-spacing-scale-4) var(--gl-spacing-scale-3);vertical-align:top}.duo-chat-markdown table th{box-shadow:inset 0 1px 0 0 #dcdcde,inset 0 -1px 0 0 #dcdcde;font-weight:var(--gl-font-weight-bold)}.duo-chat-markdown table thead{background-color:var(--gray-50)}.duo-chat-markdown table tr:nth-child(2n){background-color:var(--gray-10)}.duo-chat-compact-markdown{font-size:var(--gl-font-size-base)}.recents-wrapper .duo-chat-compact-markdown{margin-top:var(--gl-spacing-scale-0)}.duo-chat-compact-markdown{line-height:var(--gl-line-height-20)}.duo-chat-compact-markdown .gl-h1,.duo-chat-compact-markdown h1{color:var(--gl-heading-1-fixed-color);font-size:var(--gl-heading-1-fixed-font-size);font-weight:var(--gl-heading-1-fixed-font-weight);letter-spacing:var(--gl-heading-1-fixed-letter-spacing);line-height:var(--gl-heading-1-fixed-line-height);margin-bottom:var(--gl-heading-1-fixed-margin-bottom);margin-top:var(--gl-spacing-scale-7)}.duo-chat-compact-markdown .gl-h2,.duo-chat-compact-markdown h2{color:var(--gl-heading-2-fixed-color);font-size:var(--gl-heading-2-fixed-font-size);font-weight:var(--gl-heading-2-fixed-font-weight);letter-spacing:var(--gl-heading-2-fixed-letter-spacing);line-height:var(--gl-heading-2-fixed-line-height);margin-bottom:var(--gl-heading-2-fixed-margin-bottom);margin-top:var(--gl-spacing-scale-6)}.duo-chat-compact-markdown .gl-h3,.duo-chat-compact-markdown h3{color:var(--gl-heading-3-fixed-color);font-size:var(--gl-heading-3-fixed-font-size);font-weight:var(--gl-heading-3-fixed-font-weight);letter-spacing:var(--gl-heading-3-fixed-letter-spacing);line-height:var(--gl-heading-3-fixed-line-height);margin-bottom:var(--gl-heading-3-fixed-margin-bottom);margin-top:var(--gl-spacing-scale-6)}.duo-chat-compact-markdown .gl-h4,.duo-chat-compact-markdown h4{color:var(--gl-heading-4-fixed-color);font-size:var(--gl-heading-4-fixed-font-size);font-weight:var(--gl-heading-4-fixed-font-weight);letter-spacing:var(--gl-heading-4-fixed-letter-spacing);line-height:var(--gl-heading-4-fixed-line-height);margin-bottom:var(--gl-heading-4-fixed-margin-bottom);margin-top:var(--gl-spacing-scale-5)}.duo-chat-compact-markdown .gl-h5,.duo-chat-compact-markdown h5{color:var(--gl-heading-5-fixed-color);font-size:var(--gl-heading-5-fixed-font-size);font-weight:var(--gl-heading-5-fixed-font-weight);letter-spacing:var(--gl-heading-5-fixed-letter-spacing);line-height:var(--gl-heading-5-fixed-line-height);margin-bottom:var(--gl-heading-5-fixed-margin-bottom);margin-top:var(--gl-spacing-scale-5)}.duo-chat-compact-markdown .gl-h6,.duo-chat-compact-markdown h6{color:var(--gl-heading-6-fixed-color);font-size:var(--gl-heading-6-fixed-font-size);font-weight:var(--gl-heading-6-fixed-font-weight);letter-spacing:var(--gl-heading-6-fixed-letter-spacing);line-height:var(--gl-heading-6-fixed-line-height);margin-bottom:var(--gl-heading-6-fixed-margin-bottom);margin-top:var(--gl-spacing-scale-5)}.duo-chat-compact-markdown .sm{font-size:var(--gl-font-size-sm)}.duo-chat-compact-markdown .monospace,.duo-chat-compact-markdown code{font-family:var(--gl-font-family-monospace);font-family:var(--default-mono-font,"GitLab Mono"),"JetBrains Mono","Menlo","DejaVu Sans Mono","Liberation Mono","Consolas","Ubuntu Mono","Courier New","andale mono","lucida console",monospace;font-variant-ligatures:none}.duo-chat-compact-markdown table td,.duo-chat-compact-markdown table th{padding-bottom:var(--gl-spacing-scale-3);padding-top:var(--gl-spacing-scale-3)}.message-tool-approval-collapsed{border-bottom:0}.message-tool-approval-collapsed-header{border-bottom-left-radius:calc(var(--gl-card-border-radius) - 1px);border-bottom-right-radius:calc(var(--gl-card-border-radius) - 1px)}.web-only .duo-chat-input{overflow:visible;position:relative}.web-only .duo-chat-input:after{padding:var(--gl-spacing-scale-2)}.web-only .duo-chat-message pre code{background-color:initial!important;color:inherit!important}.duo-chat-loader{display:flex}.duo-chat-loader .transition{transition:width .2s cubic-bezier(.22,.61,.36,1)}@media (prefers-reduced-motion){.duo-chat-loader .transition{transition-delay:0ms!important;transition-duration:.01ms!important}}.duo-chat-loader .text-enter{opacity:var(--gl-opacity-0)}.duo-chat-loader .text-enter-active{transition:opacity .4s cubic-bezier(.22,.61,.36,1)}@media (prefers-reduced-motion){.duo-chat-loader .text-enter-active{transition-delay:0ms!important;transition-duration:.01ms!important}}.duo-chat-loader .text-enter-to,.duo-chat-loader .text-leave{opacity:var(--gl-opacity-10)}.duo-chat-loader .text-leave-active{transition:opacity .2s cubic-bezier(.22,.61,.36,1)}@media (prefers-reduced-motion){.duo-chat-loader .text-leave-active{transition-delay:0ms!important;transition-duration:.01ms!important}}.duo-chat-loader .text-leave-to{opacity:var(--gl-opacity-0)}.duo-chat-message{--gl-text-color-heading:var(--duo-chat-message-heading-color,inherit)!important;border-radius:1rem 1rem 0;color:var(--duo-chat-message-color,inherit)!important;position:relative}.duo-chat-message code{background-color:var(--gl-status-neutral-background-color)}.duo-chat-message pre{background-color:var(--gl-background-color-preformat,var(--gl-background-color-default));border-color:var(--gl-border-color-default);border-style:solid;border-width:1px;box-shadow:none!important;color:inherit;max-height:60vh;padding:var(--gl-spacing-scale-3) var(--gl-spacing-scale-4);scroll-behavior:smooth}.duo-chat-message pre:after,.duo-chat-message pre:before{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem;content:"";height:var(--gl-spacing-scale-7);left:1px;pointer-events:none;position:absolute;width:calc(100% - 2px)}.duo-chat-message pre.scrim-top:before{--tw-rotate:-180deg;background:linear-gradient(to bottom,#0000,var(--gl-background-color-default));top:1px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.duo-chat-message pre.scrim-bottom:after{background:linear-gradient(to bottom,#0000,var(--gl-background-color-default));bottom:1px}.duo-chat-message pre code{background-color:initial;display:block;font-size:var(--gl-font-size-sm);white-space:pre-wrap;word-break:break-all}.duo-chat-message p:not(:last-of-type){margin-bottom:var(--gl-spacing-scale-4)}.duo-chat-message p:last-of-type{margin-bottom:var(--gl-spacing-scale-0)}.duo-chat-message copy-code,.duo-chat-message insert-code-snippet{opacity:var(--gl-opacity-0);position:absolute;right:.5rem;top:.5rem;transition-duration:.2s;transition-property:all;transition-timing-function:ease}.duo-chat-message copy-code [role=tooltip],.duo-chat-message insert-code-snippet [role=tooltip]{background-color:var(--gray-100);border-radius:.25rem;display:none;left:0;position:absolute;top:0;width:max-content}.duo-chat-message copy-code [role=tooltip] .arrow,.duo-chat-message insert-code-snippet [role=tooltip] .arrow{background:inherit;height:var(--gl-spacing-scale-3);position:absolute;transform:rotate(45deg);width:var(--gl-spacing-scale-3)}.duo-chat-message copy-code{margin-right:2.5rem}.insert-code-hidden insert-code-snippet{display:none}.insert-code-hidden copy-code{margin-right:0}.duo-chat-message-complete .duo-message-pre-block:focus .copy-to-clipboard-button-container,.duo-chat-message-complete .duo-message-pre-block:focus copy-code,.duo-chat-message-complete .duo-message-pre-block:focus insert-code-snippet,.duo-chat-message-complete .duo-message-pre-block:has(button:focus) .copy-to-clipboard-button-container,.duo-chat-message-complete .duo-message-pre-block:has(button:focus) copy-code,.duo-chat-message-complete .duo-message-pre-block:has(button:focus) insert-code-snippet,.duo-chat-message-complete .duo-message-pre-block:hover .copy-to-clipboard-button-container,.duo-chat-message-complete .duo-message-pre-block:hover copy-code,.duo-chat-message-complete .duo-message-pre-block:hover insert-code-snippet{opacity:1}.duo-chat-message-error>p{margin:0}.agentic-feedback-hover-wrapper{transition:width .3s ease-in-out,opacity .3s ease-in-out,margin .3s ease-in-out}.gl-group:hover .agentic-feedback-hover-wrapper{margin-right:0;opacity:1;width:auto}.recents-wrapper .gl-accordion-item-header .gl-button.gl-button.btn-link{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;border-radius:var(--gl-border-radius-none);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);display:block;font-size:var(--gl-font-size-sm);font-weight:var(--gl-font-weight-bold);padding-bottom:var(--gl-spacing-scale-2);padding-left:var(--gl-spacing-scale-3);padding-top:var(--gl-spacing-scale-2);text-decoration-line:none;text-transform:uppercase;width:100%}.recents-wrapper .gl-accordion-item-header>.collapse{margin-left:var(--gl-spacing-scale-0)}.recents-wrapper .gl-text-base{margin-top:var(--gl-spacing-scale-0)}.agentic-binary-feedback .feedback-colored-icon{animation:feedback-fade-out .3s ease-in-out forwards;animation-delay:.3s;margin-left:4px;will-change:opacity}.agentic-binary-feedback .feedback-thanks{animation:feedback-fade-in .3s ease-in-out forwards;animation-delay:.3s;pointer-events:none;will-change:opacity,width,margin}@keyframes feedback-fade-out{to{opacity:0;overflow:hidden;pointer-events:none;width:0}}@media (prefers-reduced-motion:reduce){.feedback-colored-icon,.feedback-thanks{animation:none}}@keyframes feedback-fade-in{to{margin-left:-6px;opacity:1;pointer-events:auto;width:auto}}
2
2
  /*# sourceMappingURL=components.css.map */
@@ -1 +1 @@
1
- {"version":3,"sources":["components.scss"],"names":[],"mappings":"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","file":"components.css","sourcesContent":["@charset \"UTF-8\";\n/*\n* SASS preserves units in arithmetic operations. For example:\n* 12em * 0 = 0em. This function return the unit of a numeric value.\n*\n* For more examples, see: https://codepen.io/paulgv/pen/XWrqMgQ\n*/\n/* stylelint-disable @gitlab/no-gl-deprecated-design-tokens */\n/* stylelint-enable @gitlab/no-gl-deprecated-design-tokens */\n/* stylelint-disable-next-line @gitlab/no-gl-deprecated-design-tokens */\n/* stylelint-disable-next-line @gitlab/no-gl-deprecated-design-tokens */\n/**\n* Declares a property with a fluid value that decreases or\n* rises depending on the viewport’s size. The property type\n* should be numeric.\n*\n* Values are expected in rem units.\n* Fluid range: between 48rem (768px) – 75rem (1200px).\n*\n* @param $property Property name, i.e. line-height, font-size, width, height, etc.\n* @param $min Property value lower bound.\n* @param $max Property value upper bound.\n*/\n/**\n* Helper function for :focus\n*\n* @param $size is deprecated and should not be used anymore\n*/\n/**\n* Helper function for @media of at least the minimum\n* breakpoint width.\n*\n* @param $name Breakpoint name, such as `sm` or `md`.\n*/\n/**\n* Helper function for @media of at most the maximum\n* breakpoint width.\n*\n* Note: Before using, consider using a mobile-first\n* approach, and define @media for larger breakpoints\n* using `gl-media-breakpoint-up` while using this rule as\n* the starting point instead.\n*\n* @param $name Breakpoint, such as `sm` or `md`. `xs` is not valid\n*/\n/**\n* Helper function to resolve font-size value from $gl-font-sizes and\n* $gl-font-sizes-fixed maps.\n*\n* @param $size Number font-size scale\n* @param $fixed Boolean toggle default and fixed font size scales\n*/\n.resizable-content {\n height: 100%;\n width: 100%;\n background: var(--gl-background-color-default);\n border-radius: 0.5rem;\n @apply gl-overflow-y-auto;\n @apply gl-shadow-lg;\n @apply gl-text-base;\n @apply gl-leading-normal;\n @apply gl-flex;\n @apply gl-flex-col;\n}\n\n.resizable-component .resizable-t,\n.resizable-component .resizable-l {\n background-color: transparent;\n border-radius: 3px;\n transition: background-color 0.2s cubic-bezier(0.22, 0.61, 0.36, 1);\n}\n@media (prefers-reduced-motion) {\n .resizable-component .resizable-t,\n.resizable-component .resizable-l {\n transition-duration: 0.01ms !important;\n transition-delay: 0ms !important;\n }\n}\n.resizable-component .resizable-t:hover,\n.resizable-component .resizable-l:hover {\n background-color: var(--gl-color-blue-200);\n}\n.resizable-component .resizable-t {\n width: 95% !important;\n transform: translateX(-50%);\n left: 50% !important;\n height: 4px !important;\n top: 2px !important;\n}\n.resizable-component .resizable-l {\n height: 95% !important;\n transform: translateY(-50%);\n top: 50% !important;\n width: 4px !important;\n left: 2px !important;\n}\n.resizable-component .duo-chat {\n @apply gl-z-0;\n}\n.resizable-component .resizable-l,\n.resizable-component .resizable-lt,\n.resizable-component .resizable-t {\n @apply gl-z-1;\n}\n\n.duo-chat {\n z-index: 999;\n @apply gl-font-regular;\n}\n.duo-chat .message-enter-active,\n.duo-chat .message-leave-active {\n transition: all 0.5s ease;\n}\n.duo-chat .message-enter,\n.duo-chat .message-leave-to {\n @apply gl-opacity-0;\n transform: translateY(10px);\n}\n.duo-chat .duo-chat-loader.message-leave,\n.duo-chat .duo-chat-loader.message-leave-to {\n transition: none;\n}\n.duo-chat .duo-agent-mode-switcher > *,\n.duo-chat .duo-model-switcher > * {\n width: 100%;\n}\n\n.duo-chat-drawer {\n right: 0;\n @apply gl-transition-all;\n position: fixed;\n @apply gl-h-full;\n @apply gl-w-full;\n @apply gl-overflow-y-auto;\n @apply gl-shadow-lg;\n @apply gl-text-base;\n @apply gl-leading-normal;\n @apply gl-flex;\n @apply gl-flex-col;\n}\n\n.duo-chat-drawer-footer {\n @apply gl-px-4;\n @apply gl-pb-4;\n}\n.duo-chat-drawer-footer::before {\n background: linear-gradient(to bottom, transparent, var(--gl-background-color-default));\n top: 0;\n @apply -gl-translate-y-full;\n content: \"\";\n left: 0;\n position: absolute;\n @apply gl-pointer-events-none;\n @apply gl-w-full;\n @apply gl-h-4;\n}\n\n.duo-chat-history {\n scroll-behavior: smooth;\n /*\n Browsers a are pretty good at keeping the focus on an element while\n the parent element grows in size. With this we mark all child elements\n of the chat history as \"non\" anchors.\n https://developer.mozilla.org/en-US/docs/Web/CSS/overflow-anchor\n */\n /*\n Right at the bottom of the chat history we add a scroll-anchor element.\n This scroll-anchor element is the only \"possible\" anchor. The beauty of it:\n It only will be used as an anchor _if_ it is currently inside the view port.\n So if the user manually scrolls up while a chunked message is coming in,\n it won't stick to the bottom while the message still loads.\n */\n}\n.duo-chat-history * {\n overflow-anchor: none;\n}\n.duo-chat-history .scroll-anchor {\n overflow-anchor: auto;\n height: 1px;\n margin-top: -1px;\n}\n\n.history-item {\n @apply gl-pr-2;\n @apply -gl-mx-3;\n @apply gl-rounded-lg;\n @apply gl-flex;\n @apply gl-gap-3;\n @apply gl-items-center;\n background: var(--gl-button-default-tertiary-background-color-default);\n transition: background-color 0.2s cubic-bezier(0.22, 0.61, 0.36, 1);\n}\n.history-item:hover, .history-item:focus, .history-item:focus-within {\n background: var(--gl-button-default-tertiary-background-color-hover);\n}\n.history-item:hover .history-remove-button, .history-item:focus .history-remove-button, .history-item:focus-within .history-remove-button {\n opacity: 1;\n}\n.history-item .history-remove-button {\n opacity: 0;\n transition: opacity 0.2s cubic-bezier(0.22, 0.61, 0.36, 1);\n}\n.history-item .history-item-name {\n @apply gl-py-3;\n @apply gl-px-3;\n @apply gl-rounded-lg;\n @apply gl-border-0;\n}\n.history-item .history-item-name, .history-item .history-item-name:hover, .history-item .history-item-name:active, .history-item .history-item-name:focus {\n background-color: transparent !important;\n}\n.history-item .gl-button-text {\n @apply gl-w-full;\n @apply gl-flex;\n @apply gl-flex-row;\n @apply gl-items-center;\n @apply gl-gap-3;\n @apply gl-text-left;\n}\n\n.duo-chat-input {\n @apply gl-flex;\n @apply gl-flex-col;\n max-height: 240px;\n overflow: hidden;\n background: var(--gl-control-background-color-default);\n box-shadow: inset 0 0 0 1px var(--gl-control-border-color-default);\n border-radius: 1.25rem;\n}\n.duo-chat-input:focus-within {\n box-shadow: inset 0 0 0 1px var(--gl-control-border-color-focus), 0 0 0 1px var(--gl-focus-ring-inner-color), 0 0 0 3px var(--gl-focus-ring-outer-color);\n outline: none;\n}\n@media (forced-colors: active) {\n .duo-chat-input:focus-within {\n outline: 2px solid LinkText;\n }\n}\n.duo-chat-input .gl-form-textarea.form-control {\n flex: 1;\n resize: none;\n max-height: 240px;\n padding-right: 40px;\n border-radius: 1.25rem;\n}\n.duo-chat-input::after {\n content: attr(data-value) \" \";\n @apply gl-invisible;\n @apply gl-p-4;\n @apply gl-font-regular;\n padding-right: 40px;\n word-break: break-word;\n}\n\n.duo-chat .duo-chat-suggestion-button {\n @apply gl-rounded-[1rem];\n}\n\n.slash-commands {\n @apply -gl-mt-2;\n}\n.slash-commands .active-command {\n @apply gl-bg-strong;\n @apply gl-rounded-base;\n}\n.slash-commands .gl-dropdown-item button.dropdown-item {\n @apply gl-text-sm;\n @apply gl-px-3;\n @apply gl-bg-transparent;\n}\n.slash-commands .gl-dropdown-item button.dropdown-item:hover {\n @apply gl-bg-transparent;\n}\n\n.duo-chat-markdown {\n @apply gl-text-lg;\n @apply gl-leading-24;\n color: #3a383f;\n @apply gl-font-regular;\n @apply gl-font-normal;\n}\n.duo-chat-markdown :first-child {\n @apply gl-mt-0;\n}\n.duo-chat-markdown h1,\n.duo-chat-markdown .gl-h1 {\n @apply gl-heading-1;\n @apply gl-mt-7;\n}\n.duo-chat-markdown h2,\n.duo-chat-markdown .gl-h2 {\n @apply gl-heading-2;\n @apply gl-mt-6;\n}\n.duo-chat-markdown h3,\n.duo-chat-markdown .gl-h3 {\n @apply gl-heading-3;\n @apply gl-mt-6;\n}\n.duo-chat-markdown h4,\n.duo-chat-markdown .gl-h4 {\n @apply gl-heading-4;\n @apply gl-mt-5;\n}\n.duo-chat-markdown h5,\n.duo-chat-markdown .gl-h5 {\n @apply gl-heading-5;\n @apply gl-mt-5;\n}\n.duo-chat-markdown h6,\n.duo-chat-markdown .gl-h6 {\n @apply gl-heading-6;\n @apply gl-mt-5;\n}\n.duo-chat-markdown p,\n.duo-chat-markdown .gl-paragraph {\n @apply gl-mt-0;\n @apply gl-mb-0;\n}\n.duo-chat-markdown p + p,\n.duo-chat-markdown p + .gl-paragraph,\n.duo-chat-markdown .gl-paragraph + p,\n.duo-chat-markdown .gl-paragraph + .gl-paragraph {\n @apply gl-mt-5;\n}\n.duo-chat-markdown p.sm,\n.duo-chat-markdown .gl-paragraph.sm {\n font-size: 0.875rem;\n @apply gl-leading-20;\n}\n.duo-chat-markdown .sm {\n font-size: 0.875rem;\n @apply gl-leading-20;\n}\n.duo-chat-markdown .monospace,\n.duo-chat-markdown code {\n @apply gl-font-monospace;\n}\n.duo-chat-markdown blockquote {\n @apply gl-text-gray-700;\n @apply gl-py-3;\n @apply gl-pl-6;\n @apply gl-my-3;\n @apply gl-mx-0;\n box-shadow: inset 4px 0 0 0 #dcdcde;\n}\n.duo-chat-markdown .idiff {\n @apply gl-rounded-base;\n @apply gl-inline-flex;\n @apply gl-px-2;\n}\n.duo-chat-markdown .deletion {\n @apply gl-bg-red-100;\n}\n.duo-chat-markdown .addition {\n @apply gl-bg-green-100;\n}\n.duo-chat-markdown code {\n @apply gl-rounded-base;\n @apply gl-bg-gray-50;\n @apply gl-text-gray-950;\n @apply gl-px-2;\n @apply gl-py-1;\n}\n.duo-chat-markdown pre {\n @apply gl-rounded-base;\n @apply gl-py-3;\n @apply gl-px-4;\n box-shadow: inset 0 0 0 1px #dcdcde;\n @apply gl-my-7;\n @apply gl-overflow-auto;\n}\n.duo-chat-markdown pre code {\n @apply gl-bg-white;\n @apply gl-rounded-none;\n @apply gl-text-gray-900;\n @apply gl-p-0;\n}\n.duo-chat-markdown .audio-container {\n @apply gl-inline-flex;\n @apply gl-flex-col;\n @apply gl-w-full;\n}\n.duo-chat-markdown .audio-container audio {\n @apply gl-w-full;\n}\n.duo-chat-markdown .audio-container a {\n @apply gl-mt-3;\n}\n.duo-chat-markdown .audio-container a::before {\n @apply gl-mr-2;\n text-rendering: auto;\n -webkit-font-smoothing: antialiased;\n content: \"📎\";\n}\n.duo-chat-markdown table {\n @apply gl-my-7;\n}\n.duo-chat-markdown table th,\n.duo-chat-markdown table td {\n @apply gl-px-3;\n @apply gl-py-4;\n box-shadow: inset 0 -1px 0 0 #dcdcde;\n @apply gl-align-top;\n}\n.duo-chat-markdown table th {\n box-shadow: inset 0 1px 0 0 #dcdcde, inset 0 -1px 0 0 #dcdcde;\n @apply gl-font-bold;\n}\n.duo-chat-markdown table thead {\n @apply gl-bg-gray-50;\n}\n.duo-chat-markdown table tr:nth-child(even) {\n @apply gl-bg-gray-10;\n}\n\n.duo-chat-compact-markdown {\n @apply gl-text-base;\n @apply gl-leading-20;\n}\n.duo-chat-compact-markdown h1,\n.duo-chat-compact-markdown .gl-h1 {\n @apply gl-heading-1-fixed;\n @apply gl-mt-7;\n}\n.duo-chat-compact-markdown h2,\n.duo-chat-compact-markdown .gl-h2 {\n @apply gl-heading-2-fixed;\n @apply gl-mt-6;\n}\n.duo-chat-compact-markdown h3,\n.duo-chat-compact-markdown .gl-h3 {\n @apply gl-heading-3-fixed;\n @apply gl-mt-6;\n}\n.duo-chat-compact-markdown h4,\n.duo-chat-compact-markdown .gl-h4 {\n @apply gl-heading-4-fixed;\n @apply gl-mt-5;\n}\n.duo-chat-compact-markdown h5,\n.duo-chat-compact-markdown .gl-h5 {\n @apply gl-heading-5-fixed;\n @apply gl-mt-5;\n}\n.duo-chat-compact-markdown h6,\n.duo-chat-compact-markdown .gl-h6 {\n @apply gl-heading-6-fixed;\n @apply gl-mt-5;\n}\n.duo-chat-compact-markdown .sm {\n @apply gl-text-sm;\n}\n.duo-chat-compact-markdown .monospace,\n.duo-chat-compact-markdown code {\n @apply gl-font-monospace;\n}\n.duo-chat-compact-markdown table th,\n.duo-chat-compact-markdown table td {\n @apply gl-py-3;\n}\n\n.message-tool-approval-collapsed {\n border-bottom: 0;\n}\n\n.message-tool-approval-collapsed-header {\n border-bottom-left-radius: calc(var(--gl-card-border-radius) - 1px);\n border-bottom-right-radius: calc(var(--gl-card-border-radius) - 1px);\n}\n\n.web-only .duo-chat-input {\n position: relative;\n overflow: visible;\n}\n.web-only .duo-chat-input::after {\n @apply gl-p-2;\n}\n\n.web-only .duo-chat-message pre code {\n color: inherit !important;\n background-color: transparent !important;\n}\n\n.duo-chat-loader {\n @apply gl-flex;\n}\n.duo-chat-loader .transition {\n transition: width 200ms cubic-bezier(0.22, 0.61, 0.36, 1);\n}\n@media (prefers-reduced-motion) {\n .duo-chat-loader .transition {\n transition-duration: 0.01ms !important;\n transition-delay: 0ms !important;\n }\n}\n.duo-chat-loader .text-enter {\n @apply gl-opacity-0;\n}\n.duo-chat-loader .text-enter-active {\n transition: opacity 400ms cubic-bezier(0.22, 0.61, 0.36, 1);\n}\n@media (prefers-reduced-motion) {\n .duo-chat-loader .text-enter-active {\n transition-duration: 0.01ms !important;\n transition-delay: 0ms !important;\n }\n}\n.duo-chat-loader .text-enter-to {\n @apply gl-opacity-10;\n}\n.duo-chat-loader .text-leave {\n @apply gl-opacity-10;\n}\n.duo-chat-loader .text-leave-active {\n transition: opacity 200ms cubic-bezier(0.22, 0.61, 0.36, 1);\n}\n@media (prefers-reduced-motion) {\n .duo-chat-loader .text-leave-active {\n transition-duration: 0.01ms !important;\n transition-delay: 0ms !important;\n }\n}\n.duo-chat-loader .text-leave-to {\n @apply gl-opacity-0;\n}\n\n.duo-chat-message {\n position: relative;\n border-radius: 1rem 1rem 0;\n color: var(--duo-chat-message-color, inherit) !important;\n --gl-text-color-heading: var(--duo-chat-message-heading-color, inherit) !important;\n}\n.duo-chat-message code {\n @apply gl-bg-status-neutral;\n}\n.duo-chat-message pre {\n box-shadow: none !important;\n @apply gl-border gl-max-h-[60vh] gl-scroll-smooth gl-px-4 gl-py-3 gl-text-inherit;\n background-color: var(--gl-background-color-preformat, var(--gl-background-color-default));\n}\n.duo-chat-message pre::before, .duo-chat-message pre::after {\n content: \"\";\n left: 1px;\n width: calc(100% - 2px);\n position: absolute;\n @apply gl-pointer-events-none gl-h-7 gl-rounded-b-base;\n}\n.duo-chat-message pre.scrim-top::before {\n background: linear-gradient(to bottom, transparent, var(--gl-background-color-default));\n top: 1px;\n @apply -gl-rotate-180;\n}\n.duo-chat-message pre.scrim-bottom::after {\n background: linear-gradient(to bottom, transparent, var(--gl-background-color-default));\n bottom: 1px;\n}\n.duo-chat-message pre code {\n @apply gl-text-sm;\n @apply gl-bg-transparent;\n @apply gl-block;\n @apply gl-whitespace-pre-wrap;\n @apply gl-break-all;\n}\n.duo-chat-message p:not(:last-of-type) {\n @apply gl-mb-4;\n}\n.duo-chat-message p:last-of-type {\n @apply gl-mb-0;\n}\n.duo-chat-message copy-code,\n.duo-chat-message insert-code-snippet {\n position: absolute;\n @apply gl-transition-all;\n @apply gl-opacity-0;\n right: 0.5rem;\n top: 0.5rem;\n}\n.duo-chat-message copy-code [role=tooltip],\n.duo-chat-message insert-code-snippet [role=tooltip] {\n display: none;\n @apply gl-bg-gray-100;\n width: max-content;\n position: absolute;\n top: 0;\n left: 0;\n @apply gl-rounded-base;\n}\n.duo-chat-message copy-code [role=tooltip] .arrow,\n.duo-chat-message insert-code-snippet [role=tooltip] .arrow {\n position: absolute;\n background: inherit;\n @apply gl-h-3 gl-w-3;\n transform: rotate(45deg);\n}\n.duo-chat-message copy-code {\n margin-right: 2.5rem;\n}\n\n.insert-code-hidden insert-code-snippet {\n display: none;\n}\n.insert-code-hidden copy-code {\n margin-right: 0;\n}\n\n.duo-chat-message-complete .duo-message-pre-block:focus copy-code,\n.duo-chat-message-complete .duo-message-pre-block:focus insert-code-snippet,\n.duo-chat-message-complete .duo-message-pre-block:focus .copy-to-clipboard-button-container,\n.duo-chat-message-complete .duo-message-pre-block:hover copy-code,\n.duo-chat-message-complete .duo-message-pre-block:hover insert-code-snippet,\n.duo-chat-message-complete .duo-message-pre-block:hover .copy-to-clipboard-button-container,\n.duo-chat-message-complete .duo-message-pre-block:has(button:focus) copy-code,\n.duo-chat-message-complete .duo-message-pre-block:has(button:focus) insert-code-snippet,\n.duo-chat-message-complete .duo-message-pre-block:has(button:focus) .copy-to-clipboard-button-container {\n opacity: 1;\n}\n\n.duo-chat-message-error > p {\n margin: 0;\n}\n\n.agentic-feedback-hover-wrapper {\n transition: width 0.3s ease-in-out, opacity 0.3s ease-in-out, margin 0.3s ease-in-out;\n}\n.gl-group:hover .agentic-feedback-hover-wrapper {\n width: auto;\n opacity: 1;\n margin-right: 0;\n}\n\n.recents-wrapper .gl-accordion-item-header .gl-button.gl-button.btn-link {\n @apply gl-block;\n @apply gl-w-full;\n @apply gl-pl-3;\n @apply gl-py-2;\n @apply gl-rounded-none;\n @apply gl-shadow-none;\n @apply gl-no-underline;\n @apply gl-uppercase;\n @apply gl-font-bold;\n @apply gl-text-sm;\n}\n.recents-wrapper .gl-accordion-item-header > .collapse {\n @apply gl-ml-0;\n}\n.recents-wrapper .gl-text-base {\n @apply gl-mt-0;\n}\n\n.agentic-binary-feedback .feedback-colored-icon {\n animation: feedback-fade-out 0.3s ease-in-out forwards;\n animation-delay: 2s;\n will-change: opacity;\n margin-left: 4px;\n}\n.agentic-binary-feedback .feedback-thanks {\n pointer-events: none;\n animation: feedback-fade-in 0.3s ease-in-out forwards;\n animation-delay: 2s;\n will-change: opacity, width, margin;\n}\n\n@keyframes feedback-fade-out {\n to {\n opacity: 0;\n width: 0;\n overflow: hidden;\n pointer-events: none;\n }\n}\n@media (prefers-reduced-motion: reduce) {\n .feedback-colored-icon,\n.feedback-thanks {\n animation: none;\n }\n}\n@keyframes feedback-fade-in {\n to {\n opacity: 1;\n width: auto;\n margin-left: -6px;\n pointer-events: auto;\n }\n}"]}
1
+ {"version":3,"sources":["components.scss"],"names":[],"mappings":"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","file":"components.css","sourcesContent":["@charset \"UTF-8\";\n/*\n* SASS preserves units in arithmetic operations. For example:\n* 12em * 0 = 0em. This function return the unit of a numeric value.\n*\n* For more examples, see: https://codepen.io/paulgv/pen/XWrqMgQ\n*/\n/* stylelint-disable @gitlab/no-gl-deprecated-design-tokens */\n/* stylelint-enable @gitlab/no-gl-deprecated-design-tokens */\n/* stylelint-disable-next-line @gitlab/no-gl-deprecated-design-tokens */\n/* stylelint-disable-next-line @gitlab/no-gl-deprecated-design-tokens */\n/**\n* Declares a property with a fluid value that decreases or\n* rises depending on the viewport’s size. The property type\n* should be numeric.\n*\n* Values are expected in rem units.\n* Fluid range: between 48rem (768px) – 75rem (1200px).\n*\n* @param $property Property name, i.e. line-height, font-size, width, height, etc.\n* @param $min Property value lower bound.\n* @param $max Property value upper bound.\n*/\n/**\n* Helper function for :focus\n*\n* @param $size is deprecated and should not be used anymore\n*/\n/**\n* Helper function for @media of at least the minimum\n* breakpoint width.\n*\n* @param $name Breakpoint name, such as `sm` or `md`.\n*/\n/**\n* Helper function for @media of at most the maximum\n* breakpoint width.\n*\n* Note: Before using, consider using a mobile-first\n* approach, and define @media for larger breakpoints\n* using `gl-media-breakpoint-up` while using this rule as\n* the starting point instead.\n*\n* @param $name Breakpoint, such as `sm` or `md`. `xs` is not valid\n*/\n/**\n* Helper function to resolve font-size value from $gl-font-sizes and\n* $gl-font-sizes-fixed maps.\n*\n* @param $size Number font-size scale\n* @param $fixed Boolean toggle default and fixed font size scales\n*/\n.resizable-content {\n height: 100%;\n width: 100%;\n background: var(--gl-background-color-default);\n border-radius: 0.5rem;\n @apply gl-overflow-y-auto;\n @apply gl-shadow-lg;\n @apply gl-text-base;\n @apply gl-leading-normal;\n @apply gl-flex;\n @apply gl-flex-col;\n}\n\n.resizable-component .resizable-t,\n.resizable-component .resizable-l {\n background-color: transparent;\n border-radius: 3px;\n transition: background-color 0.2s cubic-bezier(0.22, 0.61, 0.36, 1);\n}\n@media (prefers-reduced-motion) {\n .resizable-component .resizable-t,\n.resizable-component .resizable-l {\n transition-duration: 0.01ms !important;\n transition-delay: 0ms !important;\n }\n}\n.resizable-component .resizable-t:hover,\n.resizable-component .resizable-l:hover {\n background-color: var(--gl-color-blue-200);\n}\n.resizable-component .resizable-t {\n width: 95% !important;\n transform: translateX(-50%);\n left: 50% !important;\n height: 4px !important;\n top: 2px !important;\n}\n.resizable-component .resizable-l {\n height: 95% !important;\n transform: translateY(-50%);\n top: 50% !important;\n width: 4px !important;\n left: 2px !important;\n}\n.resizable-component .duo-chat {\n @apply gl-z-0;\n}\n.resizable-component .resizable-l,\n.resizable-component .resizable-lt,\n.resizable-component .resizable-t {\n @apply gl-z-1;\n}\n\n.duo-chat {\n z-index: 999;\n @apply gl-font-regular;\n}\n.duo-chat .message-enter-active,\n.duo-chat .message-leave-active {\n transition: all 0.5s ease;\n}\n.duo-chat .message-enter,\n.duo-chat .message-leave-to {\n @apply gl-opacity-0;\n transform: translateY(10px);\n}\n.duo-chat .duo-chat-loader.message-leave,\n.duo-chat .duo-chat-loader.message-leave-to {\n transition: none;\n}\n.duo-chat .duo-agent-mode-switcher > *,\n.duo-chat .duo-model-switcher > * {\n width: 100%;\n}\n\n.duo-chat-drawer {\n right: 0;\n @apply gl-transition-all;\n position: fixed;\n @apply gl-h-full;\n @apply gl-w-full;\n @apply gl-overflow-y-auto;\n @apply gl-shadow-lg;\n @apply gl-text-base;\n @apply gl-leading-normal;\n @apply gl-flex;\n @apply gl-flex-col;\n}\n\n.duo-chat-drawer-footer {\n @apply gl-px-4;\n @apply gl-pb-4;\n}\n.duo-chat-drawer-footer::before {\n background: linear-gradient(to bottom, transparent, var(--gl-background-color-default));\n top: 0;\n @apply -gl-translate-y-full;\n content: \"\";\n left: 0;\n position: absolute;\n @apply gl-pointer-events-none;\n @apply gl-w-full;\n @apply gl-h-4;\n}\n\n.duo-chat-history {\n scroll-behavior: smooth;\n /*\n Browsers a are pretty good at keeping the focus on an element while\n the parent element grows in size. With this we mark all child elements\n of the chat history as \"non\" anchors.\n https://developer.mozilla.org/en-US/docs/Web/CSS/overflow-anchor\n */\n /*\n Right at the bottom of the chat history we add a scroll-anchor element.\n This scroll-anchor element is the only \"possible\" anchor. The beauty of it:\n It only will be used as an anchor _if_ it is currently inside the view port.\n So if the user manually scrolls up while a chunked message is coming in,\n it won't stick to the bottom while the message still loads.\n */\n}\n.duo-chat-history * {\n overflow-anchor: none;\n}\n.duo-chat-history .scroll-anchor {\n overflow-anchor: auto;\n height: 1px;\n margin-top: -1px;\n}\n\n.history-item {\n @apply gl-pr-2;\n @apply -gl-mx-3;\n @apply gl-rounded-lg;\n @apply gl-flex;\n @apply gl-gap-3;\n @apply gl-items-center;\n background: var(--gl-button-default-tertiary-background-color-default);\n transition: background-color 0.2s cubic-bezier(0.22, 0.61, 0.36, 1);\n}\n.history-item:hover, .history-item:focus, .history-item:focus-within {\n background: var(--gl-button-default-tertiary-background-color-hover);\n}\n.history-item:hover .history-remove-button, .history-item:focus .history-remove-button, .history-item:focus-within .history-remove-button {\n opacity: 1;\n}\n.history-item .history-remove-button {\n opacity: 0;\n transition: opacity 0.2s cubic-bezier(0.22, 0.61, 0.36, 1);\n}\n.history-item .history-item-name {\n @apply gl-py-3;\n @apply gl-px-3;\n @apply gl-rounded-lg;\n @apply gl-border-0;\n}\n.history-item .history-item-name, .history-item .history-item-name:hover, .history-item .history-item-name:active, .history-item .history-item-name:focus {\n background-color: transparent !important;\n}\n.history-item .gl-button-text {\n @apply gl-w-full;\n @apply gl-flex;\n @apply gl-flex-row;\n @apply gl-items-center;\n @apply gl-gap-3;\n @apply gl-text-left;\n}\n\n.duo-chat-input {\n @apply gl-flex;\n @apply gl-flex-col;\n max-height: 240px;\n overflow: hidden;\n background: var(--gl-control-background-color-default);\n box-shadow: inset 0 0 0 1px var(--gl-control-border-color-default);\n border-radius: 1.25rem;\n}\n.duo-chat-input:focus-within {\n box-shadow: inset 0 0 0 1px var(--gl-control-border-color-focus), 0 0 0 1px var(--gl-focus-ring-inner-color), 0 0 0 3px var(--gl-focus-ring-outer-color);\n outline: none;\n}\n@media (forced-colors: active) {\n .duo-chat-input:focus-within {\n outline: 2px solid LinkText;\n }\n}\n.duo-chat-input .gl-form-textarea.form-control {\n flex: 1;\n resize: none;\n max-height: 240px;\n padding-right: 40px;\n border-radius: 1.25rem;\n}\n.duo-chat-input::after {\n content: attr(data-value) \" \";\n @apply gl-invisible;\n @apply gl-p-4;\n @apply gl-font-regular;\n padding-right: 40px;\n word-break: break-word;\n}\n\n.duo-chat .duo-chat-suggestion-button {\n @apply gl-rounded-[1rem];\n}\n\n.slash-commands {\n @apply -gl-mt-2;\n}\n.slash-commands .active-command {\n @apply gl-bg-strong;\n @apply gl-rounded-base;\n}\n.slash-commands .gl-dropdown-item button.dropdown-item {\n @apply gl-text-sm;\n @apply gl-px-3;\n @apply gl-bg-transparent;\n}\n.slash-commands .gl-dropdown-item button.dropdown-item:hover {\n @apply gl-bg-transparent;\n}\n\n.duo-chat-markdown {\n @apply gl-text-lg;\n @apply gl-leading-24;\n color: #3a383f;\n @apply gl-font-regular;\n @apply gl-font-normal;\n}\n.duo-chat-markdown :first-child {\n @apply gl-mt-0;\n}\n.duo-chat-markdown h1,\n.duo-chat-markdown .gl-h1 {\n @apply gl-heading-1;\n @apply gl-mt-7;\n}\n.duo-chat-markdown h2,\n.duo-chat-markdown .gl-h2 {\n @apply gl-heading-2;\n @apply gl-mt-6;\n}\n.duo-chat-markdown h3,\n.duo-chat-markdown .gl-h3 {\n @apply gl-heading-3;\n @apply gl-mt-6;\n}\n.duo-chat-markdown h4,\n.duo-chat-markdown .gl-h4 {\n @apply gl-heading-4;\n @apply gl-mt-5;\n}\n.duo-chat-markdown h5,\n.duo-chat-markdown .gl-h5 {\n @apply gl-heading-5;\n @apply gl-mt-5;\n}\n.duo-chat-markdown h6,\n.duo-chat-markdown .gl-h6 {\n @apply gl-heading-6;\n @apply gl-mt-5;\n}\n.duo-chat-markdown p,\n.duo-chat-markdown .gl-paragraph {\n @apply gl-mt-0;\n @apply gl-mb-0;\n}\n.duo-chat-markdown p + p,\n.duo-chat-markdown p + .gl-paragraph,\n.duo-chat-markdown .gl-paragraph + p,\n.duo-chat-markdown .gl-paragraph + .gl-paragraph {\n @apply gl-mt-5;\n}\n.duo-chat-markdown p.sm,\n.duo-chat-markdown .gl-paragraph.sm {\n font-size: 0.875rem;\n @apply gl-leading-20;\n}\n.duo-chat-markdown .sm {\n font-size: 0.875rem;\n @apply gl-leading-20;\n}\n.duo-chat-markdown .monospace,\n.duo-chat-markdown code {\n @apply gl-font-monospace;\n}\n.duo-chat-markdown blockquote {\n @apply gl-text-gray-700;\n @apply gl-py-3;\n @apply gl-pl-6;\n @apply gl-my-3;\n @apply gl-mx-0;\n box-shadow: inset 4px 0 0 0 #dcdcde;\n}\n.duo-chat-markdown .idiff {\n @apply gl-rounded-base;\n @apply gl-inline-flex;\n @apply gl-px-2;\n}\n.duo-chat-markdown .deletion {\n @apply gl-bg-red-100;\n}\n.duo-chat-markdown .addition {\n @apply gl-bg-green-100;\n}\n.duo-chat-markdown code {\n @apply gl-rounded-base;\n @apply gl-bg-gray-50;\n @apply gl-text-gray-950;\n @apply gl-px-2;\n @apply gl-py-1;\n}\n.duo-chat-markdown pre {\n @apply gl-rounded-base;\n @apply gl-py-3;\n @apply gl-px-4;\n box-shadow: inset 0 0 0 1px #dcdcde;\n @apply gl-my-7;\n @apply gl-overflow-auto;\n}\n.duo-chat-markdown pre code {\n @apply gl-bg-white;\n @apply gl-rounded-none;\n @apply gl-text-gray-900;\n @apply gl-p-0;\n}\n.duo-chat-markdown .audio-container {\n @apply gl-inline-flex;\n @apply gl-flex-col;\n @apply gl-w-full;\n}\n.duo-chat-markdown .audio-container audio {\n @apply gl-w-full;\n}\n.duo-chat-markdown .audio-container a {\n @apply gl-mt-3;\n}\n.duo-chat-markdown .audio-container a::before {\n @apply gl-mr-2;\n text-rendering: auto;\n -webkit-font-smoothing: antialiased;\n content: \"📎\";\n}\n.duo-chat-markdown table {\n @apply gl-my-7;\n}\n.duo-chat-markdown table th,\n.duo-chat-markdown table td {\n @apply gl-px-3;\n @apply gl-py-4;\n box-shadow: inset 0 -1px 0 0 #dcdcde;\n @apply gl-align-top;\n}\n.duo-chat-markdown table th {\n box-shadow: inset 0 1px 0 0 #dcdcde, inset 0 -1px 0 0 #dcdcde;\n @apply gl-font-bold;\n}\n.duo-chat-markdown table thead {\n @apply gl-bg-gray-50;\n}\n.duo-chat-markdown table tr:nth-child(even) {\n @apply gl-bg-gray-10;\n}\n\n.duo-chat-compact-markdown {\n @apply gl-text-base;\n @apply gl-leading-20;\n}\n.duo-chat-compact-markdown h1,\n.duo-chat-compact-markdown .gl-h1 {\n @apply gl-heading-1-fixed;\n @apply gl-mt-7;\n}\n.duo-chat-compact-markdown h2,\n.duo-chat-compact-markdown .gl-h2 {\n @apply gl-heading-2-fixed;\n @apply gl-mt-6;\n}\n.duo-chat-compact-markdown h3,\n.duo-chat-compact-markdown .gl-h3 {\n @apply gl-heading-3-fixed;\n @apply gl-mt-6;\n}\n.duo-chat-compact-markdown h4,\n.duo-chat-compact-markdown .gl-h4 {\n @apply gl-heading-4-fixed;\n @apply gl-mt-5;\n}\n.duo-chat-compact-markdown h5,\n.duo-chat-compact-markdown .gl-h5 {\n @apply gl-heading-5-fixed;\n @apply gl-mt-5;\n}\n.duo-chat-compact-markdown h6,\n.duo-chat-compact-markdown .gl-h6 {\n @apply gl-heading-6-fixed;\n @apply gl-mt-5;\n}\n.duo-chat-compact-markdown .sm {\n @apply gl-text-sm;\n}\n.duo-chat-compact-markdown .monospace,\n.duo-chat-compact-markdown code {\n @apply gl-font-monospace;\n}\n.duo-chat-compact-markdown table th,\n.duo-chat-compact-markdown table td {\n @apply gl-py-3;\n}\n\n.message-tool-approval-collapsed {\n border-bottom: 0;\n}\n\n.message-tool-approval-collapsed-header {\n border-bottom-left-radius: calc(var(--gl-card-border-radius) - 1px);\n border-bottom-right-radius: calc(var(--gl-card-border-radius) - 1px);\n}\n\n.web-only .duo-chat-input {\n position: relative;\n overflow: visible;\n}\n.web-only .duo-chat-input::after {\n @apply gl-p-2;\n}\n\n.web-only .duo-chat-message pre code {\n color: inherit !important;\n background-color: transparent !important;\n}\n\n.duo-chat-loader {\n @apply gl-flex;\n}\n.duo-chat-loader .transition {\n transition: width 200ms cubic-bezier(0.22, 0.61, 0.36, 1);\n}\n@media (prefers-reduced-motion) {\n .duo-chat-loader .transition {\n transition-duration: 0.01ms !important;\n transition-delay: 0ms !important;\n }\n}\n.duo-chat-loader .text-enter {\n @apply gl-opacity-0;\n}\n.duo-chat-loader .text-enter-active {\n transition: opacity 400ms cubic-bezier(0.22, 0.61, 0.36, 1);\n}\n@media (prefers-reduced-motion) {\n .duo-chat-loader .text-enter-active {\n transition-duration: 0.01ms !important;\n transition-delay: 0ms !important;\n }\n}\n.duo-chat-loader .text-enter-to {\n @apply gl-opacity-10;\n}\n.duo-chat-loader .text-leave {\n @apply gl-opacity-10;\n}\n.duo-chat-loader .text-leave-active {\n transition: opacity 200ms cubic-bezier(0.22, 0.61, 0.36, 1);\n}\n@media (prefers-reduced-motion) {\n .duo-chat-loader .text-leave-active {\n transition-duration: 0.01ms !important;\n transition-delay: 0ms !important;\n }\n}\n.duo-chat-loader .text-leave-to {\n @apply gl-opacity-0;\n}\n\n.duo-chat-message {\n position: relative;\n border-radius: 1rem 1rem 0;\n color: var(--duo-chat-message-color, inherit) !important;\n --gl-text-color-heading: var(--duo-chat-message-heading-color, inherit) !important;\n}\n.duo-chat-message code {\n @apply gl-bg-status-neutral;\n}\n.duo-chat-message pre {\n box-shadow: none !important;\n @apply gl-border gl-max-h-[60vh] gl-scroll-smooth gl-px-4 gl-py-3 gl-text-inherit;\n background-color: var(--gl-background-color-preformat, var(--gl-background-color-default));\n}\n.duo-chat-message pre::before, .duo-chat-message pre::after {\n content: \"\";\n left: 1px;\n width: calc(100% - 2px);\n position: absolute;\n @apply gl-pointer-events-none gl-h-7 gl-rounded-b-base;\n}\n.duo-chat-message pre.scrim-top::before {\n background: linear-gradient(to bottom, transparent, var(--gl-background-color-default));\n top: 1px;\n @apply -gl-rotate-180;\n}\n.duo-chat-message pre.scrim-bottom::after {\n background: linear-gradient(to bottom, transparent, var(--gl-background-color-default));\n bottom: 1px;\n}\n.duo-chat-message pre code {\n @apply gl-text-sm;\n @apply gl-bg-transparent;\n @apply gl-block;\n @apply gl-whitespace-pre-wrap;\n @apply gl-break-all;\n}\n.duo-chat-message p:not(:last-of-type) {\n @apply gl-mb-4;\n}\n.duo-chat-message p:last-of-type {\n @apply gl-mb-0;\n}\n.duo-chat-message copy-code,\n.duo-chat-message insert-code-snippet {\n position: absolute;\n @apply gl-transition-all;\n @apply gl-opacity-0;\n right: 0.5rem;\n top: 0.5rem;\n}\n.duo-chat-message copy-code [role=tooltip],\n.duo-chat-message insert-code-snippet [role=tooltip] {\n display: none;\n @apply gl-bg-gray-100;\n width: max-content;\n position: absolute;\n top: 0;\n left: 0;\n @apply gl-rounded-base;\n}\n.duo-chat-message copy-code [role=tooltip] .arrow,\n.duo-chat-message insert-code-snippet [role=tooltip] .arrow {\n position: absolute;\n background: inherit;\n @apply gl-h-3 gl-w-3;\n transform: rotate(45deg);\n}\n.duo-chat-message copy-code {\n margin-right: 2.5rem;\n}\n\n.insert-code-hidden insert-code-snippet {\n display: none;\n}\n.insert-code-hidden copy-code {\n margin-right: 0;\n}\n\n.duo-chat-message-complete .duo-message-pre-block:focus copy-code,\n.duo-chat-message-complete .duo-message-pre-block:focus insert-code-snippet,\n.duo-chat-message-complete .duo-message-pre-block:focus .copy-to-clipboard-button-container,\n.duo-chat-message-complete .duo-message-pre-block:hover copy-code,\n.duo-chat-message-complete .duo-message-pre-block:hover insert-code-snippet,\n.duo-chat-message-complete .duo-message-pre-block:hover .copy-to-clipboard-button-container,\n.duo-chat-message-complete .duo-message-pre-block:has(button:focus) copy-code,\n.duo-chat-message-complete .duo-message-pre-block:has(button:focus) insert-code-snippet,\n.duo-chat-message-complete .duo-message-pre-block:has(button:focus) .copy-to-clipboard-button-container {\n opacity: 1;\n}\n\n.duo-chat-message-error > p {\n margin: 0;\n}\n\n.agentic-feedback-hover-wrapper {\n transition: width 0.3s ease-in-out, opacity 0.3s ease-in-out, margin 0.3s ease-in-out;\n}\n.gl-group:hover .agentic-feedback-hover-wrapper {\n width: auto;\n opacity: 1;\n margin-right: 0;\n}\n\n.recents-wrapper .gl-accordion-item-header .gl-button.gl-button.btn-link {\n @apply gl-block;\n @apply gl-w-full;\n @apply gl-pl-3;\n @apply gl-py-2;\n @apply gl-rounded-none;\n @apply gl-shadow-none;\n @apply gl-no-underline;\n @apply gl-uppercase;\n @apply gl-font-bold;\n @apply gl-text-sm;\n}\n.recents-wrapper .gl-accordion-item-header > .collapse {\n @apply gl-ml-0;\n}\n.recents-wrapper .gl-text-base {\n @apply gl-mt-0;\n}\n\n.agentic-binary-feedback .feedback-colored-icon {\n animation: feedback-fade-out 0.3s ease-in-out forwards;\n animation-delay: 0.3s;\n will-change: opacity;\n margin-left: 4px;\n}\n.agentic-binary-feedback .feedback-thanks {\n pointer-events: none;\n animation: feedback-fade-in 0.3s ease-in-out forwards;\n animation-delay: 0.3s;\n will-change: opacity, width, margin;\n}\n\n@keyframes feedback-fade-out {\n to {\n opacity: 0;\n width: 0;\n overflow: hidden;\n pointer-events: none;\n }\n}\n@media (prefers-reduced-motion: reduce) {\n .feedback-colored-icon,\n.feedback-thanks {\n animation: none;\n }\n}\n@keyframes feedback-fade-in {\n to {\n opacity: 1;\n width: auto;\n margin-left: -6px;\n pointer-events: auto;\n }\n}"]}