Skip to content

Commit cb36b3c

Browse files
authored
Merge pull request #114 from OEvortex/new-providers
New providers
2 parents 5a78352 + eddefc9 commit cb36b3c

File tree

136 files changed

+10405
-2782
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

136 files changed

+10405
-2782
lines changed

.github/workflows/deploy-docs.yml

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
name: Deploy Documentation to GitHub Pages
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
- new-providers
8+
paths:
9+
- 'docs/**'
10+
- 'mkdocs.yml'
11+
- '.github/workflows/deploy-docs.yml'
12+
pull_request:
13+
branches:
14+
- main
15+
paths:
16+
- 'docs/**'
17+
- 'mkdocs.yml'
18+
workflow_dispatch:
19+
20+
permissions:
21+
contents: read
22+
pages: write
23+
id-token: write
24+
25+
concurrency:
26+
group: "pages"
27+
cancel-in-progress: false
28+
29+
jobs:
30+
build:
31+
runs-on: ubuntu-latest
32+
steps:
33+
- name: Checkout repository
34+
uses: actions/checkout@v4
35+
with:
36+
fetch-depth: 0
37+
38+
- name: Set up Python
39+
uses: actions/setup-python@v4
40+
with:
41+
python-version: '3.11'
42+
cache: 'pip'
43+
44+
- name: Install dependencies
45+
run: |
46+
python -m pip install --upgrade pip
47+
pip install mkdocs mkdocs-material pymdown-extensions
48+
49+
- name: Build documentation
50+
run: mkdocs build
51+
52+
- name: Upload artifact
53+
uses: actions/upload-pages-artifact@v2
54+
with:
55+
path: 'site'
56+
57+
deploy:
58+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
59+
needs: build
60+
environment:
61+
name: github-pages
62+
url: ${{ steps.deployment.outputs.page_url }}
63+
runs-on: ubuntu-latest
64+
steps:
65+
- name: Deploy to GitHub Pages
66+
id: deployment
67+
uses: actions/deploy-pages@v2
68+
69+
test-pr:
70+
if: github.event_name == 'pull_request'
71+
runs-on: ubuntu-latest
72+
steps:
73+
- name: Checkout repository
74+
uses: actions/checkout@v4
75+
76+
- name: Set up Python
77+
uses: actions/setup-python@v4
78+
with:
79+
python-version: '3.11'
80+
cache: 'pip'
81+
82+
- name: Install dependencies
83+
run: |
84+
python -m pip install --upgrade pip
85+
pip install mkdocs mkdocs-material pymdown-extensions
86+
87+
- name: Build documentation (test)
88+
run: mkdocs build
89+
90+
- name: Check for build errors
91+
run: |
92+
if [ ! -d "site" ]; then
93+
echo "❌ Documentation build failed!"
94+
exit 1
95+
fi
96+
echo "✅ Documentation built successfully!"

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,4 +170,5 @@ blackbox_private_key.pem
170170
_plans/*
171171
!_plans/.gitkeep
172172
.zenflow/
173-
.blackboxrules
173+
.blackboxrules
174+
.claude

AGENTS.md

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88
If the subagent tool is available, the main Copilot agent acts strictly as an orchestrator.
99
All research, planning, and heavy reasoning MUST be delegated to specialized subagents.
1010
Note: There may be other subagents available beyond those listed below.
11+
Always call multiple subagents in parallel.
12+
Firstly break down task into subtasks.
13+
Then, for each subtask, call the appropriate subagent or custom agent.
1114
</Overview>
1215

1316
<AvailableSubagents>
@@ -29,26 +32,6 @@
2932
<Item>Plan multi-file refactors</Item>
3033
</MustNot>
3134
</Subagent>
32-
33-
<Subagent>
34-
<Name>Docstring</Name>
35-
<Role>Professional Docstring Generator Agent</Role>
36-
<Responsibilities>
37-
<Item>Read existing Python code</Item>
38-
<Item>Generate accurate, professional docstrings</Item>
39-
<Item>Insert docstrings without changing logic</Item>
40-
</Responsibilities>
41-
<WhenToCall>
42-
<Condition>User requests documentation or docstring generation</Condition>
43-
<Condition>Code lacks or has poor-quality docstrings</Condition>
44-
<Condition>Preparing code for release or public use</Condition>
45-
</WhenToCall>
46-
<MustNot>
47-
<Item>Change executable behavior</Item>
48-
<Item>Invent undocumented functionality</Item>
49-
</MustNot>
50-
</Subagent>
51-
5235
<Subagent>
5336
<Name>Plan</Name>
5437
<Role>Planning & Task Decomposition Agent</Role>
@@ -144,7 +127,7 @@
144127
<Description>AI provider implementations</Description>
145128
<Variants>
146129
<Variant>
147-
<Path>OPENAI/</Path>
130+
<Path>Openai_comp/</Path>
148131
<Description>OpenAI-compatible wrappers</Description>
149132
</Variant>
150133
<Variant>
@@ -271,6 +254,15 @@ class MyProvider(OpenAICompatibleProvider):
271254
<Rule>Add tests for new behavior</Rule>
272255
<Rule>Validate provider discovery and model registration</Rule>
273256
<Rule>Use pytest under tests/</Rule>
257+
<Structure>
258+
<Rule>Place unit tests in tests/providers/ for provider implementations</Rule>
259+
<Rule>Use unittest.TestCase for unit tests with setUp() methods</Rule>
260+
<Rule>Mock external dependencies using FakeResp or similar patterns</Rule>
261+
<Rule>Test parsing, validation, and error handling</Rule>
262+
<Rule>Name test files as test_&lt;provider_name&gt;.py</Rule>
263+
<Rule>Interactive/stress tests use pytestmark = pytest.mark.skip() to avoid running in CI</Rule>
264+
<Rule>All test files must pass: uvx ruff check . and uvx ty check .</Rule>
265+
</Structure>
274266
</TestingGuidelines>
275267

276268
<DocsToUpdate>

Prompts/ReverseEngineering.md

Lines changed: 0 additions & 113 deletions
This file was deleted.

Provider.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,10 @@ These providers are only available in the standard implementation format.
9090
| 16 | **QwenLM** | `webscout/Provider/QwenLM.py` |
9191
| 17 | **SearchChat** | `webscout/Provider/searchchat.py` |
9292
| 18 | **TurboSeek** | `webscout/Provider/turboseek.py` |
93-
| 19 | **WrDoChat** | `webscout/Provider/WrDoChat.py` |
93+
| 19 | **Upstage** | `webscout/Provider/Upstage.py` |
94+
| 20 | **WrDoChat** | `webscout/Provider/WrDoChat.py` |
9495

95-
**Total: 19 providers with only normal implementation**
96+
**Total: 20 providers with only normal implementation**
9697

9798
---
9899

@@ -130,7 +131,7 @@ These providers are only available in the OpenAI-compatible format and have no s
130131

131132
### Implementation Coverage
132133

133-
- **Total Normal Implementations**: 57 (37 hybrid + 20 normal-only)
134+
- **Total Normal Implementations**: 58 (37 hybrid + 21 normal-only)
134135
- **Total OpenAI Implementations**: 42 (37 hybrid + 5 OpenAI-only)
135136
- **Providers with Multiple Options**: 37 (59% of all providers)
136137

@@ -230,7 +231,7 @@ provider = Groq()
230231
response = provider.chat("Hello, how are you?")
231232

232233
# OpenAI-Compatible Provider
233-
from webscout.Provider.OPENAI import groq
234+
from webscout.Provider.Openai_comp import groq
234235
client = groq.GroqProvider()
235236
response = client.chat.completions.create(
236237
model="mixtral-8x7b",

0 commit comments

Comments
 (0)