From 7ff6e6d3f8027e34ff1bbceda0b388d03f45613b Mon Sep 17 00:00:00 2001
From: Barry Wang <33831597+GithuBarry@users.noreply.github.com>
Date: Mon, 25 Mar 2024 22:25:28 -0400
Subject: [PATCH] Initial commit

---
 .github/ISSUE_TEMPLATE/1_bug_report.yml      | 45 ++++++++++
 .github/ISSUE_TEMPLATE/2_feature_request.yml | 21 +++++
 .github/ISSUE_TEMPLATE/3_question.yml        | 15 ++++
 .github/ISSUE_TEMPLATE/other.md              |  7 ++
 .github/PULL_REQUEST_TEMPLATE.md             | 18 ++++
 .github/workflows/issue-auto-comments.yml    | 72 ++++++++++++++++
 .github/workflows/issue-check-inactive.yml   | 23 +++++
 .github/workflows/issue-close-require.yml    | 52 +++++++++++
 .gitignore                                   | 48 +++++++++++
 public/manifest.json                         | 15 ++++
 public/openapi.json                          | 90 ++++++++++++++++++++
 11 files changed, 406 insertions(+)
 create mode 100644 .github/ISSUE_TEMPLATE/1_bug_report.yml
 create mode 100644 .github/ISSUE_TEMPLATE/2_feature_request.yml
 create mode 100644 .github/ISSUE_TEMPLATE/3_question.yml
 create mode 100644 .github/ISSUE_TEMPLATE/other.md
 create mode 100644 .github/PULL_REQUEST_TEMPLATE.md
 create mode 100644 .github/workflows/issue-auto-comments.yml
 create mode 100644 .github/workflows/issue-check-inactive.yml
 create mode 100644 .github/workflows/issue-close-require.yml
 create mode 100644 .gitignore
 create mode 100644 public/manifest.json
 create mode 100644 public/openapi.json

diff --git a/.github/ISSUE_TEMPLATE/1_bug_report.yml b/.github/ISSUE_TEMPLATE/1_bug_report.yml
new file mode 100644
index 0000000..d181c38
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/1_bug_report.yml
@@ -0,0 +1,45 @@
+name: '🐛 反馈缺陷 Bug Report'
+description: '反馈一个问题缺陷 | Report an bug'
+title: '[Bug] '
+labels: '🐛 Bug'
+body:
+  - type: dropdown
+    attributes:
+      label: '💻 系统环境 | Operating System'
+      options:
+        - Windows
+        - macOS
+        - Ubuntu
+        - Other Linux
+        - Other
+    validations:
+      required: true
+  - type: dropdown
+    attributes:
+      label: '🌐 浏览器 | Browser'
+      options:
+        - Chrome
+        - Edge
+        - Safari
+        - Firefox
+        - Other
+    validations:
+      required: true
+  - type: textarea
+    attributes:
+      label: '🐛 问题描述 | Bug Description'
+      description: A clear and concise description of the bug.
+    validations:
+      required: true
+  - type: textarea
+    attributes:
+      label: '🚦 期望结果 | Expected Behavior'
+      description: A clear and concise description of what you expected to happen.
+  - type: textarea
+    attributes:
+      label: '📷 复现步骤 | Recurrence Steps'
+      description: A clear and concise description of how to recurrence.
+  - type: textarea
+    attributes:
+      label: '📝 补充信息 | Additional Information'
+      description: If your problem needs further explanation, or if the issue you're seeing cannot be reproduced in a gist, please add more information here.
diff --git a/.github/ISSUE_TEMPLATE/2_feature_request.yml b/.github/ISSUE_TEMPLATE/2_feature_request.yml
new file mode 100644
index 0000000..edcf7d0
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/2_feature_request.yml
@@ -0,0 +1,21 @@
+name: '🌠 功能需求 Feature Request'
+description: '需求或建议 | Suggest an idea'
+title: '[Request] '
+labels: '🌠 Feature Request'
+body:
+  - type: textarea
+    attributes:
+      label: '🥰 需求描述 | Feature Description'
+      description: Please add a clear and concise description of the problem you are seeking to solve with this feature request.
+    validations:
+      required: true
+  - type: textarea
+    attributes:
+      label: '🧐 解决方案 | Proposed Solution'
+      description: Describe the solution you'd like in a clear and concise manner.
+    validations:
+      required: true
+  - type: textarea
+    attributes:
+      label: '📝 补充信息 | Additional Information'
+      description: Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/3_question.yml b/.github/ISSUE_TEMPLATE/3_question.yml
new file mode 100644
index 0000000..f989f7d
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/3_question.yml
@@ -0,0 +1,15 @@
+name: '😇 疑问或帮助 Help Wanted'
+description: '疑问或需要帮助 | Need help'
+title: '[Question] '
+labels: '😇 Help Wanted'
+body:
+  - type: textarea
+    attributes:
+      label: '🧐 问题描述 | Proposed Solution'
+      description: A clear and concise description of the proplem.
+    validations:
+      required: true
+  - type: textarea
+    attributes:
+      label: '📝 补充信息 | Additional Information'
+      description: Add any other context about the problem here.
diff --git a/.github/ISSUE_TEMPLATE/other.md b/.github/ISSUE_TEMPLATE/other.md
new file mode 100644
index 0000000..215dd1f
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/other.md
@@ -0,0 +1,7 @@
+---
+name: '📝 其他 Other'
+about: '其他问题 | Other issues'
+title: ''
+labels: ''
+assignees: ''
+---
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..ae2208c
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,18 @@
+#### 💻 变更类型 | Change Type
+
+<!-- For change type, change [ ] to [x]. -->
+
+- [ ] ✨ feat
+- [ ] 🐛 fix
+- [ ] ♻️ refactor
+- [ ] 💄 style
+- [ ] 🔨 chore
+- [ ] 📝 docs
+
+#### 🔀 变更说明 | Description of Change
+
+<!-- Thank you for your Pull Request. Please provide a description above. -->
+
+#### 📝 补充信息 | Additional Information
+
+<!-- Add any other context about the Pull Request here. -->
diff --git a/.github/workflows/issue-auto-comments.yml b/.github/workflows/issue-auto-comments.yml
new file mode 100644
index 0000000..65b3c98
--- /dev/null
+++ b/.github/workflows/issue-auto-comments.yml
@@ -0,0 +1,72 @@
+name: Issue Auto Comment
+on:
+  issues:
+    types:
+      - opened
+      - closed
+      - assigned
+  pull_request_target:
+    types:
+      - opened
+      - closed
+
+permissions:
+  contents: read
+
+jobs:
+  run:
+    permissions:
+      issues: write # for actions-cool/issues-helper to update issues
+      pull-requests: write # for actions-cool/issues-helper to update PRs
+    runs-on: ubuntu-latest
+    steps:
+      - name: Auto Comment on Issues Opened
+        uses: wow-actions/auto-comment@v1
+        with:
+          GITHUB_TOKEN: ${{ secrets.GH_TOKEN}}
+          issuesOpened: |
+            👀 @{{ author }}
+            Thank you for raising an issue. We will investigate into the matter and get back to you as soon as possible.
+            Please make sure you have given us as much context as possible.\
+            非常感谢您提交 issue。我们会尽快调查此事,并尽快回复您。 请确保您已经提供了尽可能多的背景信息。
+      - name: Auto Comment on Issues Closed
+        uses: wow-actions/auto-comment@v1
+        with:
+          GITHUB_TOKEN: ${{ secrets.GH_TOKEN}}
+          issuesClosed: |
+            ✅ @{{ author }}
+            <br/>
+            This issue is closed, If you have any questions, you can comment and reply.\
+            此问题已经关闭。如果您有任何问题,可以留言并回复。
+      - name: Auto Comment on Pull Request Opened
+        uses: wow-actions/auto-comment@v1
+        with:
+          GITHUB_TOKEN: ${{ secrets.GH_TOKEN}}
+          pullRequestOpened: |
+            👍 @{{ author }}
+            <br>
+            Thank you for raising your pull request and contributing to our Community
+            Please make sure you have followed our contributing guidelines. We will review it as soon as possible.
+            If you encounter any problems, please feel free to connect with us.\
+            非常感谢您提出拉取请求并为我们的社区做出贡献,请确保您已经遵循了我们的贡献指南,我们会尽快审查它。
+            如果您遇到任何问题,请随时与我们联系。
+      - name: Auto Comment on Pull Request Merged
+        uses: actions-cool/pr-welcome@main
+        if: github.event.pull_request.merged == true
+        with:
+          token: ${{ secrets.GH_TOKEN }}
+          comment: |
+            ❤️ Great PR @${{ github.event.pull_request.user.login }} ❤️
+            <br>
+            The growth of project is inseparable from user feedback and contribution, thanks for your contribution!\
+            项目的成长离不开用户反馈和贡献,感谢您的贡献!
+          emoji: 'hooray'
+          pr-emoji: '+1, heart'
+      - name: Remove inactive
+        if: github.event.issue.state == 'open' && github.actor == github.event.issue.user.login
+        uses: actions-cool/issues-helper@v3
+        with:
+          actions: 'remove-labels'
+          token: ${{ secrets.GH_TOKEN }}
+          issue-number: ${{ github.event.issue.number }}
+          labels: 'Inactive'
diff --git a/.github/workflows/issue-check-inactive.yml b/.github/workflows/issue-check-inactive.yml
new file mode 100644
index 0000000..a5ae1fb
--- /dev/null
+++ b/.github/workflows/issue-check-inactive.yml
@@ -0,0 +1,23 @@
+name: Issue Check Inactive
+
+on:
+  schedule:
+    - cron: '0 0 */15 * *'
+
+permissions:
+  contents: read
+
+jobs:
+  issue-check-inactive:
+    permissions:
+      issues: write # for actions-cool/issues-helper to update issues
+      pull-requests: write # for actions-cool/issues-helper to update PRs
+    runs-on: ubuntu-latest
+    steps:
+      - name: check-inactive
+        uses: actions-cool/issues-helper@v3
+        with:
+          actions: 'check-inactive'
+          token: ${{ secrets.GH_TOKEN }}
+          inactive-label: 'Inactive'
+          inactive-day: 30
diff --git a/.github/workflows/issue-close-require.yml b/.github/workflows/issue-close-require.yml
new file mode 100644
index 0000000..e64d0cd
--- /dev/null
+++ b/.github/workflows/issue-close-require.yml
@@ -0,0 +1,52 @@
+name: Issue Close Require
+
+on:
+  schedule:
+    - cron: '0 0 * * *'
+
+permissions:
+  contents: read
+
+jobs:
+  issue-close-require:
+    permissions:
+      issues: write # for actions-cool/issues-helper to update issues
+      pull-requests: write # for actions-cool/issues-helper to update PRs
+    runs-on: ubuntu-latest
+    steps:
+      - name: need reproduce
+        uses: actions-cool/issues-helper@v3
+        with:
+          actions: 'close-issues'
+          token: ${{ secrets.GH_TOKEN }}
+          labels: '✅ Fixed'
+          inactive-day: 3
+          body: |
+            👋 @{{ github.event.issue.user.login }}
+            <br/>
+            Since the issue was labeled with `✅ Fixed`, but no response in 3 days. This issue will be closed. If you have any questions, you can comment and reply.\
+            由于该 issue 被标记为已修复,同时 3 天未收到回应。现关闭 issue,若有任何问题,可评论回复。
+      - name: need reproduce
+        uses: actions-cool/issues-helper@v3
+        with:
+          actions: 'close-issues'
+          token: ${{ secrets.GH_TOKEN }}
+          labels: '🤔 Need Reproduce'
+          inactive-day: 3
+          body: |
+            👋 @{{ github.event.issue.user.login }}
+            <br/>
+            Since the issue was labeled with `🤔 Need Reproduce`, but no response in 3 days. This issue will be closed. If you have any questions, you can comment and reply.\
+            由于该 issue 被标记为需要更多信息,却 3 天未收到回应。现关闭 issue,若有任何问题,可评论回复。
+      - name: need reproduce
+        uses: actions-cool/issues-helper@v3
+        with:
+          actions: 'close-issues'
+          token: ${{ secrets.GH_TOKEN }}
+          labels: "🙅🏻‍♀️ WON'T DO"
+          inactive-day: 3
+          body: |
+            👋 @{{ github.event.issue.user.login }}
+            <br/>
+            Since the issue was labeled with `🙅🏻‍♀️ WON'T DO`, and no response in 3 days. This issue will be closed. If you have any questions, you can comment and reply.\
+            由于该 issue 被标记为暂不处理,同时 3 天未收到回应。现关闭 issue,若有任何问题,可评论回复。
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..8235041
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,48 @@
+# Gitignore for LobeHub
+################################################################
+
+# general
+.DS_Store
+.idea
+.vscode
+.history
+.temp
+.env.local
+venv
+temp
+tmp
+
+# dependencies
+node_modules
+*.log
+*.lock
+package-lock.json
+
+# ci
+coverage
+.coverage
+.eslintcache
+.stylelintcache
+
+# production
+dist
+es
+lib
+logs
+test-output
+
+# umi
+.umi
+.umi-production
+.umi-test
+.dumi/tmp*
+
+# husky
+.husky/prepare-commit-msg
+
+# misc
+# add other ignore file below
+.vercel
+public/dist
+docs-dist
+bun.lockb
\ No newline at end of file
diff --git a/public/manifest.json b/public/manifest.json
new file mode 100644
index 0000000..b3432c2
--- /dev/null
+++ b/public/manifest.json
@@ -0,0 +1,15 @@
+{
+  "$schema": "../node_modules/@lobehub/chat-plugin-sdk/schema.json",
+  "api": [],
+  "author": "GithuBarry",
+  "homepage": "https://github.com/GithuBarry/chat-plugin-search-engine",
+  "identifier": "search-engine-serper",
+  "meta": {
+    "avatar": "🔍",
+    "tags": ["web", "search"],
+    "title": "Search Engine Serper",
+    "description": "Query search engine to get information"
+  },
+  "openapi": "https://raw.githubusercontent.com/GithuBarry/chat-plugin-search-engine/main/public/openapi.json",
+  "version": "1"
+}
diff --git a/public/openapi.json b/public/openapi.json
new file mode 100644
index 0000000..9cce6f0
--- /dev/null
+++ b/public/openapi.json
@@ -0,0 +1,90 @@
+{
+  "components": {
+    "securitySchemes": {
+      "apiAuth": {
+        "type": "apiKey",
+        "name": "X-API-KEY",
+        "in": "header"
+      }
+    }
+  },
+  "info": {
+    "title": "Web Search",
+    "version": "1.0.0"
+  },
+  "openapi": "3.0.0",
+  "paths": {
+    "/search": {
+      "post": {
+        "summary": "Search Google and return top 10 results",
+        "operationId": "searchGoogle",
+        "requestBody": {
+          "required": true,
+          "content": {
+            "application/json": {
+              "schema": {
+                "type": "object",
+                "required": [
+                  "q"
+                ],
+                "properties": {
+                  "q": {
+                    "type": "string",
+                    "example": "今天吃什么"
+                  },
+                  "gl": {
+                    "type": "string",
+                    "description": "Google Geo location parameter",
+                    "example": "cn"
+                  },
+                  "hl": {
+                    "type": "string",
+                    "description": "Google Geo locale parameter",
+                    "example": "zh-cn"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "Successful search results",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "type": "object",
+                  "required": [
+                    "result"
+                  ],
+                  "properties": {
+                    "result": {
+                      "type": "string",
+                      "description": "Top 10 search results",
+                      "example": "\"title\": \"周末游推荐\",\n\"link\": \"https://www.example.com/destinations-for-weekends\",\n\"snippet\": \"周末去哪玩?周末旅游频道,精心推荐数百个周末游经典线路\",\n\"position\": 1"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "security": [
+          {
+            "apiAuth": []
+          }
+        ]
+      }
+    }
+  },
+  "security": [
+    {
+      "apiAuth": []
+    }
+  ],
+  "servers": [
+    {
+      "url": "https://google.serper.dev"
+    }
+  ]
+}