From fbbb54b7a6b7048fa56dc7c0dc4daf87dcaf8a2d Mon Sep 17 00:00:00 2001 From: salvacybersec Date: Sun, 5 Apr 2026 14:41:56 +0300 Subject: [PATCH] feat(03-04): add CodeWhisperer, Replit AI, Codestral, watsonx, Oracle AI providers - Codestral with low-confidence 32-char generic pattern + high entropy - watsonx with IBM IAM token endpoint for verification - CodeWhisperer, Replit AI, Oracle AI as keyword-only - Completes PROV-07 (10 Tier 7 code/dev tools providers) --- pkg/providers/definitions/codestral.yaml | 21 ++++++++++++++++++++ pkg/providers/definitions/codewhisperer.yaml | 17 ++++++++++++++++ pkg/providers/definitions/oracle-ai.yaml | 17 ++++++++++++++++ pkg/providers/definitions/replit-ai.yaml | 17 ++++++++++++++++ pkg/providers/definitions/watsonx.yaml | 18 +++++++++++++++++ providers/codestral.yaml | 21 ++++++++++++++++++++ providers/codewhisperer.yaml | 17 ++++++++++++++++ providers/oracle-ai.yaml | 17 ++++++++++++++++ providers/replit-ai.yaml | 17 ++++++++++++++++ providers/watsonx.yaml | 18 +++++++++++++++++ 10 files changed, 180 insertions(+) create mode 100644 pkg/providers/definitions/codestral.yaml create mode 100644 pkg/providers/definitions/codewhisperer.yaml create mode 100644 pkg/providers/definitions/oracle-ai.yaml create mode 100644 pkg/providers/definitions/replit-ai.yaml create mode 100644 pkg/providers/definitions/watsonx.yaml create mode 100644 providers/codestral.yaml create mode 100644 providers/codewhisperer.yaml create mode 100644 providers/oracle-ai.yaml create mode 100644 providers/replit-ai.yaml create mode 100644 providers/watsonx.yaml diff --git a/pkg/providers/definitions/codestral.yaml b/pkg/providers/definitions/codestral.yaml new file mode 100644 index 0000000..526c2ce --- /dev/null +++ b/pkg/providers/definitions/codestral.yaml @@ -0,0 +1,21 @@ +format_version: 1 +name: codestral +display_name: Codestral (Mistral Code) +tier: 7 +last_verified: "2026-04-05" +keywords: + - "codestral" + - "CODESTRAL_API_KEY" + - "codestral.mistral.ai" + - "codestral-latest" +patterns: + - regex: '[a-zA-Z0-9]{32}' + entropy_min: 4.5 + confidence: low +verify: + method: GET + url: https://codestral.mistral.ai/v1/models + headers: + Authorization: "Bearer {KEY}" + valid_status: [200] + invalid_status: [401, 403] diff --git a/pkg/providers/definitions/codewhisperer.yaml b/pkg/providers/definitions/codewhisperer.yaml new file mode 100644 index 0000000..e5c44ed --- /dev/null +++ b/pkg/providers/definitions/codewhisperer.yaml @@ -0,0 +1,17 @@ +format_version: 1 +name: codewhisperer +display_name: Amazon CodeWhisperer / Q Developer +tier: 7 +last_verified: "2026-04-05" +keywords: + - "codewhisperer" + - "q-developer" + - "amazonq" + - "codewhisperer.us-east-1.amazonaws.com" + - "CODEWHISPERER_PROFILE_ARN" +verify: + method: GET + url: "" + headers: {} + valid_status: [] + invalid_status: [] diff --git a/pkg/providers/definitions/oracle-ai.yaml b/pkg/providers/definitions/oracle-ai.yaml new file mode 100644 index 0000000..1620d06 --- /dev/null +++ b/pkg/providers/definitions/oracle-ai.yaml @@ -0,0 +1,17 @@ +format_version: 1 +name: oracle-ai +display_name: Oracle Generative AI +tier: 7 +last_verified: "2026-04-05" +keywords: + - "oci-genai" + - "oracle-genai" + - "OCI_GENAI" + - "generativeai.oci.oraclecloud.com" + - "oraclecloud.com" +verify: + method: GET + url: "" + headers: {} + valid_status: [] + invalid_status: [] diff --git a/pkg/providers/definitions/replit-ai.yaml b/pkg/providers/definitions/replit-ai.yaml new file mode 100644 index 0000000..0d2eb8b --- /dev/null +++ b/pkg/providers/definitions/replit-ai.yaml @@ -0,0 +1,17 @@ +format_version: 1 +name: replit-ai +display_name: Replit AI (Ghostwriter) +tier: 7 +last_verified: "2026-04-05" +keywords: + - "replit" + - "ghostwriter" + - "REPLIT_TOKEN" + - "REPLIT_DB_URL" + - "replit.com" +verify: + method: GET + url: "" + headers: {} + valid_status: [] + invalid_status: [] diff --git a/pkg/providers/definitions/watsonx.yaml b/pkg/providers/definitions/watsonx.yaml new file mode 100644 index 0000000..03436bb --- /dev/null +++ b/pkg/providers/definitions/watsonx.yaml @@ -0,0 +1,18 @@ +format_version: 1 +name: watsonx +display_name: IBM watsonx +tier: 7 +last_verified: "2026-04-05" +keywords: + - "watsonx" + - "WATSONX_API_KEY" + - "WATSONX_PROJECT_ID" + - "IBM_CLOUD_API_KEY" + - "us-south.ml.cloud.ibm.com" + - "watsonx.ai" +verify: + method: POST + url: https://iam.cloud.ibm.com/identity/token + headers: {} + valid_status: [200] + invalid_status: [400, 401] diff --git a/providers/codestral.yaml b/providers/codestral.yaml new file mode 100644 index 0000000..526c2ce --- /dev/null +++ b/providers/codestral.yaml @@ -0,0 +1,21 @@ +format_version: 1 +name: codestral +display_name: Codestral (Mistral Code) +tier: 7 +last_verified: "2026-04-05" +keywords: + - "codestral" + - "CODESTRAL_API_KEY" + - "codestral.mistral.ai" + - "codestral-latest" +patterns: + - regex: '[a-zA-Z0-9]{32}' + entropy_min: 4.5 + confidence: low +verify: + method: GET + url: https://codestral.mistral.ai/v1/models + headers: + Authorization: "Bearer {KEY}" + valid_status: [200] + invalid_status: [401, 403] diff --git a/providers/codewhisperer.yaml b/providers/codewhisperer.yaml new file mode 100644 index 0000000..e5c44ed --- /dev/null +++ b/providers/codewhisperer.yaml @@ -0,0 +1,17 @@ +format_version: 1 +name: codewhisperer +display_name: Amazon CodeWhisperer / Q Developer +tier: 7 +last_verified: "2026-04-05" +keywords: + - "codewhisperer" + - "q-developer" + - "amazonq" + - "codewhisperer.us-east-1.amazonaws.com" + - "CODEWHISPERER_PROFILE_ARN" +verify: + method: GET + url: "" + headers: {} + valid_status: [] + invalid_status: [] diff --git a/providers/oracle-ai.yaml b/providers/oracle-ai.yaml new file mode 100644 index 0000000..1620d06 --- /dev/null +++ b/providers/oracle-ai.yaml @@ -0,0 +1,17 @@ +format_version: 1 +name: oracle-ai +display_name: Oracle Generative AI +tier: 7 +last_verified: "2026-04-05" +keywords: + - "oci-genai" + - "oracle-genai" + - "OCI_GENAI" + - "generativeai.oci.oraclecloud.com" + - "oraclecloud.com" +verify: + method: GET + url: "" + headers: {} + valid_status: [] + invalid_status: [] diff --git a/providers/replit-ai.yaml b/providers/replit-ai.yaml new file mode 100644 index 0000000..0d2eb8b --- /dev/null +++ b/providers/replit-ai.yaml @@ -0,0 +1,17 @@ +format_version: 1 +name: replit-ai +display_name: Replit AI (Ghostwriter) +tier: 7 +last_verified: "2026-04-05" +keywords: + - "replit" + - "ghostwriter" + - "REPLIT_TOKEN" + - "REPLIT_DB_URL" + - "replit.com" +verify: + method: GET + url: "" + headers: {} + valid_status: [] + invalid_status: [] diff --git a/providers/watsonx.yaml b/providers/watsonx.yaml new file mode 100644 index 0000000..03436bb --- /dev/null +++ b/providers/watsonx.yaml @@ -0,0 +1,18 @@ +format_version: 1 +name: watsonx +display_name: IBM watsonx +tier: 7 +last_verified: "2026-04-05" +keywords: + - "watsonx" + - "WATSONX_API_KEY" + - "WATSONX_PROJECT_ID" + - "IBM_CLOUD_API_KEY" + - "us-south.ml.cloud.ibm.com" + - "watsonx.ai" +verify: + method: POST + url: https://iam.cloud.ibm.com/identity/token + headers: {} + valid_status: [200] + invalid_status: [400, 401]