From 9f10357f91104a7cb58c9612df2f89fee30bed2a Mon Sep 17 00:00:00 2001 From: salvacybersec Date: Sun, 5 Apr 2026 14:41:27 +0300 Subject: [PATCH] feat(03-04): add GitHub Copilot, Cursor, Tabnine, Codeium, Sourcegraph providers - GitHub Copilot with ghu_/gho_ token patterns - Sourcegraph Cody with documented sgp_ high-confidence pattern - Cursor, Tabnine, Codeium as keyword-only (no documented formats) --- pkg/providers/definitions/codeium.yaml | 17 ++++++++++++ pkg/providers/definitions/cursor.yaml | 17 ++++++++++++ pkg/providers/definitions/github-copilot.yaml | 25 ++++++++++++++++++ pkg/providers/definitions/sourcegraph.yaml | 26 +++++++++++++++++++ pkg/providers/definitions/tabnine.yaml | 16 ++++++++++++ providers/codeium.yaml | 17 ++++++++++++ providers/cursor.yaml | 17 ++++++++++++ providers/github-copilot.yaml | 25 ++++++++++++++++++ providers/sourcegraph.yaml | 26 +++++++++++++++++++ providers/tabnine.yaml | 16 ++++++++++++ 10 files changed, 202 insertions(+) create mode 100644 pkg/providers/definitions/codeium.yaml create mode 100644 pkg/providers/definitions/cursor.yaml create mode 100644 pkg/providers/definitions/github-copilot.yaml create mode 100644 pkg/providers/definitions/sourcegraph.yaml create mode 100644 pkg/providers/definitions/tabnine.yaml create mode 100644 providers/codeium.yaml create mode 100644 providers/cursor.yaml create mode 100644 providers/github-copilot.yaml create mode 100644 providers/sourcegraph.yaml create mode 100644 providers/tabnine.yaml diff --git a/pkg/providers/definitions/codeium.yaml b/pkg/providers/definitions/codeium.yaml new file mode 100644 index 0000000..a5dd8c3 --- /dev/null +++ b/pkg/providers/definitions/codeium.yaml @@ -0,0 +1,17 @@ +format_version: 1 +name: codeium +display_name: Codeium (Windsurf) +tier: 7 +last_verified: "2026-04-05" +keywords: + - "codeium" + - "windsurf" + - "CODEIUM_API_KEY" + - "WINDSURF_API_KEY" + - "codeium.com" +verify: + method: GET + url: "" + headers: {} + valid_status: [] + invalid_status: [] diff --git a/pkg/providers/definitions/cursor.yaml b/pkg/providers/definitions/cursor.yaml new file mode 100644 index 0000000..beea485 --- /dev/null +++ b/pkg/providers/definitions/cursor.yaml @@ -0,0 +1,17 @@ +format_version: 1 +name: cursor +display_name: Cursor AI +tier: 7 +last_verified: "2026-04-05" +keywords: + - "cursor" + - "CURSOR_API_KEY" + - "cursor.sh" + - "cursor.com" + - "cursor-ide" +verify: + method: GET + url: "" + headers: {} + valid_status: [] + invalid_status: [] diff --git a/pkg/providers/definitions/github-copilot.yaml b/pkg/providers/definitions/github-copilot.yaml new file mode 100644 index 0000000..bc46122 --- /dev/null +++ b/pkg/providers/definitions/github-copilot.yaml @@ -0,0 +1,25 @@ +format_version: 1 +name: github-copilot +display_name: GitHub Copilot +tier: 7 +last_verified: "2026-04-05" +keywords: + - "copilot" + - "github-copilot" + - "GITHUB_COPILOT_TOKEN" + - "api.githubcopilot.com" + - "copilot-internal" +patterns: + - regex: 'ghu_[A-Za-z0-9]{36}' + entropy_min: 4.0 + confidence: medium + - regex: 'gho_[A-Za-z0-9]{36}' + entropy_min: 4.0 + confidence: medium +verify: + method: GET + url: https://api.github.com/user + headers: + Authorization: "token {KEY}" + valid_status: [200] + invalid_status: [401, 403] diff --git a/pkg/providers/definitions/sourcegraph.yaml b/pkg/providers/definitions/sourcegraph.yaml new file mode 100644 index 0000000..69f4246 --- /dev/null +++ b/pkg/providers/definitions/sourcegraph.yaml @@ -0,0 +1,26 @@ +format_version: 1 +name: sourcegraph +display_name: Sourcegraph Cody +tier: 7 +last_verified: "2026-04-05" +keywords: + - "sourcegraph" + - "cody" + - "SRC_ACCESS_TOKEN" + - "SOURCEGRAPH_TOKEN" + - "sourcegraph.com" + - "sgp_" +patterns: + - regex: 'sgp_[A-Fa-f0-9]{16,}_[A-Fa-f0-9]{40}' + entropy_min: 4.0 + confidence: high + - regex: 'sgp_[A-Fa-f0-9]{40}' + entropy_min: 4.0 + confidence: medium +verify: + method: GET + url: https://sourcegraph.com/.api/graphql + headers: + Authorization: "token {KEY}" + valid_status: [200] + invalid_status: [401, 403] diff --git a/pkg/providers/definitions/tabnine.yaml b/pkg/providers/definitions/tabnine.yaml new file mode 100644 index 0000000..0f36f94 --- /dev/null +++ b/pkg/providers/definitions/tabnine.yaml @@ -0,0 +1,16 @@ +format_version: 1 +name: tabnine +display_name: Tabnine +tier: 7 +last_verified: "2026-04-05" +keywords: + - "tabnine" + - "TABNINE_API_KEY" + - "api.tabnine.com" + - "tabnine-pro" +verify: + method: GET + url: "" + headers: {} + valid_status: [] + invalid_status: [] diff --git a/providers/codeium.yaml b/providers/codeium.yaml new file mode 100644 index 0000000..a5dd8c3 --- /dev/null +++ b/providers/codeium.yaml @@ -0,0 +1,17 @@ +format_version: 1 +name: codeium +display_name: Codeium (Windsurf) +tier: 7 +last_verified: "2026-04-05" +keywords: + - "codeium" + - "windsurf" + - "CODEIUM_API_KEY" + - "WINDSURF_API_KEY" + - "codeium.com" +verify: + method: GET + url: "" + headers: {} + valid_status: [] + invalid_status: [] diff --git a/providers/cursor.yaml b/providers/cursor.yaml new file mode 100644 index 0000000..beea485 --- /dev/null +++ b/providers/cursor.yaml @@ -0,0 +1,17 @@ +format_version: 1 +name: cursor +display_name: Cursor AI +tier: 7 +last_verified: "2026-04-05" +keywords: + - "cursor" + - "CURSOR_API_KEY" + - "cursor.sh" + - "cursor.com" + - "cursor-ide" +verify: + method: GET + url: "" + headers: {} + valid_status: [] + invalid_status: [] diff --git a/providers/github-copilot.yaml b/providers/github-copilot.yaml new file mode 100644 index 0000000..bc46122 --- /dev/null +++ b/providers/github-copilot.yaml @@ -0,0 +1,25 @@ +format_version: 1 +name: github-copilot +display_name: GitHub Copilot +tier: 7 +last_verified: "2026-04-05" +keywords: + - "copilot" + - "github-copilot" + - "GITHUB_COPILOT_TOKEN" + - "api.githubcopilot.com" + - "copilot-internal" +patterns: + - regex: 'ghu_[A-Za-z0-9]{36}' + entropy_min: 4.0 + confidence: medium + - regex: 'gho_[A-Za-z0-9]{36}' + entropy_min: 4.0 + confidence: medium +verify: + method: GET + url: https://api.github.com/user + headers: + Authorization: "token {KEY}" + valid_status: [200] + invalid_status: [401, 403] diff --git a/providers/sourcegraph.yaml b/providers/sourcegraph.yaml new file mode 100644 index 0000000..69f4246 --- /dev/null +++ b/providers/sourcegraph.yaml @@ -0,0 +1,26 @@ +format_version: 1 +name: sourcegraph +display_name: Sourcegraph Cody +tier: 7 +last_verified: "2026-04-05" +keywords: + - "sourcegraph" + - "cody" + - "SRC_ACCESS_TOKEN" + - "SOURCEGRAPH_TOKEN" + - "sourcegraph.com" + - "sgp_" +patterns: + - regex: 'sgp_[A-Fa-f0-9]{16,}_[A-Fa-f0-9]{40}' + entropy_min: 4.0 + confidence: high + - regex: 'sgp_[A-Fa-f0-9]{40}' + entropy_min: 4.0 + confidence: medium +verify: + method: GET + url: https://sourcegraph.com/.api/graphql + headers: + Authorization: "token {KEY}" + valid_status: [200] + invalid_status: [401, 403] diff --git a/providers/tabnine.yaml b/providers/tabnine.yaml new file mode 100644 index 0000000..0f36f94 --- /dev/null +++ b/providers/tabnine.yaml @@ -0,0 +1,16 @@ +format_version: 1 +name: tabnine +display_name: Tabnine +tier: 7 +last_verified: "2026-04-05" +keywords: + - "tabnine" + - "TABNINE_API_KEY" + - "api.tabnine.com" + - "tabnine-pro" +verify: + method: GET + url: "" + headers: {} + valid_status: [] + invalid_status: []