Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
5c33c1b
Initial plan
Copilot Jul 6, 2026
7955141
Add .circleci/config.yml
Bryan-Roe Jul 6, 2026
366e70d
style: apply automated autofixes (ruff / prettier / clang-format) [Co…
github-actions[bot] Jul 6, 2026
5475682
feat: add output safety gate to run_chat_once
circleci-app[bot] Jul 6, 2026
625f180
ci: optimize CircleCI config with Python image, caching, and parallel…
circleci-app[bot] Jul 6, 2026
f5d310f
style: apply automated autofixes (ruff / prettier / clang-format)
Bryan-Roe Jul 7, 2026
c86608c
test: guard ruleset json template validity
Copilot Jul 7, 2026
f405023
fix: make ruleset template valid json
Copilot Jul 7, 2026
64b754c
fix(ci): populate cci-agent-setup.yml to fix "root is not an object" …
circleci-app[bot] Jul 7, 2026
879e75b
style: apply automated autofixes (ruff / prettier / clang-format) [Co…
github-actions[bot] Jul 7, 2026
a4fc90a
fix(circleci): resolve setup-workflow failure caused by empty cci-age…
circleci-app[bot] Jul 7, 2026
70568ef
style: apply automated autofixes (ruff / prettier / clang-format) [Co…
github-actions[bot] Jul 7, 2026
4b71f14
fix(security): address code scanning issues - replace MD5 with SHA256…
Copilot Jul 7, 2026
b5ff5a3
fix(security): use built-in hash() instead of truncated SHA256 for no…
Copilot Jul 7, 2026
abcb1fe
feat: add GroqProvider chat backend with full detection chain wiring
Copilot Jul 7, 2026
eebb6f3
fix: lint errors in GroqProvider (f-strings, URL check, spelling)
Copilot Jul 7, 2026
3a02ec8
fix: _check_groq_available returns False for all errors including 401…
Copilot Jul 7, 2026
ed5bda2
Merge pull request #1 from Bryan-Roe-ai/copilot/make-it-pass-actions
Bryan-Roe Jul 7, 2026
4d9e687
Initial plan
Copilot Jul 7, 2026
5992790
Merge pull request #2 from Bryan-Roe-ai/copilot/fix-import-error-in-api
Bryan-Roe Jul 7, 2026
03c6f80
Merge pull request #3 from Bryan-Roe-ai/chunk/optimize-circleci-config
Bryan-Roe Jul 7, 2026
7ee3a1e
Merge pull request #4 from Bryan-Roe-ai/chunk/fix-cci-agent-setup-emp…
Bryan-Roe Jul 7, 2026
80f932d
Update actionlint.yml
Bryan-Roe Jul 7, 2026
2456322
Merge pull request #5 from Bryan-Roe-ai/chore/codeql-autofix-28831548042
Bryan-Roe Jul 7, 2026
17fb5de
Update codeql.yml
Bryan-Roe Jul 7, 2026
a3a0ecb
Merge pull request #10 from Bryan-Roe-ai/chore/codeql-autofix-2884030…
Bryan-Roe Jul 7, 2026
c416165
style: apply automated autofixes (ruff / prettier / clang-format)
Bryan-Roe Jul 7, 2026
94ffcbd
Merge pull request #9 from Bryan-Roe-ai/fix/autofix-weekly
Bryan-Roe Jul 7, 2026
8c92963
Merge pull request #8 from Bryan-Roe-ai/dependabot/pip/ai-projects/lo…
Bryan-Roe Jul 7, 2026
3c7316a
Merge branch 'main' into copilot/fix-run-tests-job
Bryan-Roe Jul 7, 2026
87b73de
Merge pull request #7 from Bryan-Roe-ai/copilot/fix-run-tests-job
Bryan-Roe Jul 7, 2026
81591f5
Merge pull request #6 from Bryan-Roe-ai/copilot/reference-28832299172
Bryan-Roe Jul 7, 2026
292af77
Merge branch 'main' into circleci-project-setup
Bryan-Roe Jul 7, 2026
6fa01c0
Merge pull request #17 from Bryan-Roe-ai/chore/codeql-autofix-2883146…
Bryan-Roe Jul 7, 2026
8733390
Merge pull request #15 from Bryan-Roe-ai/copilot/explore-codebase-imp…
Bryan-Roe Jul 7, 2026
60afa78
Merge pull request #16 from Bryan-Roe-ai/circleci-project-setup
Bryan-Roe Jul 7, 2026
c0fb58f
Merge pull request #14 from Bryan-Roe-ai/copilot/fix-code-scanning-is…
Bryan-Roe Jul 7, 2026
cefb901
Merge pull request #13 from Bryan-Roe-ai/copilot/fix-action-step-error
Bryan-Roe Jul 7, 2026
2b27611
Merge pull request #12 from Bryan-Roe-ai/dependabot/pip/python-depend…
Bryan-Roe Jul 7, 2026
cbc7dc1
Merge pull request #11 from Bryan-Roe-ai/dependabot/pip/mount/mount-d…
Bryan-Roe Jul 7, 2026
bf95931
Merge branch 'main' into chunk/wire-safety-middleware-into-ai-runner
Bryan-Roe Jul 7, 2026
1e4fe10
Merge pull request #18 from Bryan-Roe-ai/chunk/wire-safety-middleware…
Bryan-Roe Jul 7, 2026
6cfe56a
Merge branch 'main' into chunk/fix-setup-workflow-empty-agent-yaml
Bryan-Roe Jul 7, 2026
5da9359
Merge pull request #19 from Bryan-Roe-ai/chunk/fix-setup-workflow-emp…
Bryan-Roe Jul 7, 2026
5a256fd
Merge https://github.com/Bryan-Roe-ai/Aria
Bryan-Roe Jul 7, 2026
c14ff3d
Create code-coverage.yml
Bryan-Roe Jul 7, 2026
3768b1a
Merge branch 'main' into advanced-squirrel
Bryan-Roe Jul 7, 2026
3c8968f
Merge pull request #20 from Bryan-Roe-ai/advanced-squirrel
Bryan-Roe Jul 7, 2026
2eda4e6
Update codeql.yml
Bryan-Roe Jul 7, 2026
2e91d32
Merge pull request #21 from Bryan-Roe-ai/Bryan-Roe-patch-1
Bryan-Roe Jul 7, 2026
2f0b42d
Merge branch ai/main into chore/codeql-autofix-28843570227
Bryan-Roe Jul 7, 2026
60c261d
style: apply automated autofixes (ruff / prettier / clang-format) [Co…
github-actions[bot] Jul 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 0 additions & 37 deletions .circleci/cci-agent-setup.yml
Original file line number Diff line number Diff line change
@@ -1,37 +0,0 @@
<<<<<<< HEAD
version: '2.1'

jobs:
test:
docker:
- image: cimg/node:24.0-browsers
steps:
- checkout
- run: echo "Running example step, please edit this file"

workflows:
main:
jobs:
- test
=======
version: "2.1"

jobs:
test:
docker:
- image: cimg/node:24.0-browsers
steps:
- checkout
- run: echo "Running example step, please edit this file"

workflows:
<<<<<<< HEAD
main:
jobs:
- test
>>>>>>> 64b754cfe (fix(ci): populate cci-agent-setup.yml to fix "root is not an object" error)
=======
main:
jobs:
- test
>>>>>>> 879e75bcf (style: apply automated autofixes (ruff / prettier / clang-format) [CodeQL Advanced])
264 changes: 130 additions & 134 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,152 +1,148 @@
version: "2.1"

executors:
python311:
docker:
- image: cimg/python:3.11
resource_class: medium
environment:
PIP_DISABLE_PIP_VERSION_CHECK: "1"
PIP_NO_PYTHON_VERSION_WARNING: "1"
PYTHONDONTWRITEBYTECODE: "1"
PYTHONUNBUFFERED: "1"
python311:
docker:
- image: cimg/python:3.11
resource_class: medium
environment:
PIP_DISABLE_PIP_VERSION_CHECK: "1"
PIP_NO_PYTHON_VERSION_WARNING: "1"
PYTHONDONTWRITEBYTECODE: "1"
PYTHONUNBUFFERED: "1"

commands:
restore-pip-cache:
steps:
- restore_cache:
keys:
- pip-v1-{{ checksum "requirements-dev.txt" }}-{{ checksum "requirements.txt" }}
- pip-v1-{{ checksum "requirements-dev.txt" }}-
- pip-v1-
restore-pip-cache:
steps:
- restore_cache:
keys:
- pip-v1-{{ checksum "requirements-dev.txt" }}-{{ checksum "requirements.txt" }}
- pip-v1-{{ checksum "requirements-dev.txt" }}-
- pip-v1-

save-pip-cache:
steps:
- save_cache:
key: pip-v1-{{ checksum "requirements-dev.txt" }}-{{ checksum "requirements.txt" }}
paths:
- ~/.cache/pip
save-pip-cache:
steps:
- save_cache:
key: pip-v1-{{ checksum "requirements-dev.txt" }}-{{ checksum "requirements.txt" }}
paths:
- ~/.cache/pip

install-dev-deps:
steps:
- run:
name: Install Python dependencies
command: |
python -m pip install --upgrade pip
pip install -r requirements-dev.txt
install-dev-deps:
steps:
- run:
name: Install Python dependencies
command: |
python -m pip install --upgrade pip
pip install -r requirements-dev.txt

# Define a job to be invoked later in a workflow.
# See: https://circleci.com/docs/guides/orchestrate/jobs-steps/#jobs-overview & https://circleci.com/docs/reference/configuration-reference/#jobs
jobs:
lint:
executor: python311
steps:
- checkout
- restore-pip-cache
- install-dev-deps
- save-pip-cache
- run:
name: ruff
command: python -m ruff check tests shared scripts apps/aria/server.py
- run:
name: black (check)
command: python -m black --check tests shared scripts apps/aria/server.py
lint:
executor: python311
steps:
- checkout
- restore-pip-cache
- install-dev-deps
- save-pip-cache
- run:
name: ruff
command: python -m ruff check tests shared scripts apps/aria/server.py
- run:
name: black (check)
command: python -m black --check tests shared scripts apps/aria/server.py

type-check:
executor: python311
steps:
- checkout
- restore-pip-cache
- install-dev-deps
- save-pip-cache
- run:
name: mypy (advisory)
command: python -m mypy shared scripts function_app.py || true
type-check:
executor: python311
steps:
- checkout
- restore-pip-cache
- install-dev-deps
- save-pip-cache
- run:
name: mypy (advisory)
command: python -m mypy shared scripts function_app.py || true

pre-commit:
executor: python311
steps:
- checkout
- restore-pip-cache
- install-dev-deps
- save-pip-cache
- restore_cache:
keys:
- pre-commit-v1-{{ checksum ".pre-commit-config.yaml" }}
- pre-commit-v1-
- run:
name: pre-commit on changed files
command: |
if git rev-parse HEAD^ >/dev/null 2>&1; then
CHANGED=$(git diff --name-only --diff-filter=ACMRT HEAD^ HEAD --)
else
CHANGED=$(git diff-tree --no-commit-id --name-only -r HEAD)
fi
if [ -z "$CHANGED" ]; then
echo "No changed files; skipping."
exit 0
fi
pre-commit run --files $CHANGED --show-diff-on-failure --color=always
- save_cache:
key: pre-commit-v1-{{ checksum ".pre-commit-config.yaml" }}
paths:
- ~/.cache/pre-commit
pre-commit:
executor: python311
steps:
- checkout
- restore-pip-cache
- install-dev-deps
- save-pip-cache
- restore_cache:
keys:
- pre-commit-v1-{{ checksum ".pre-commit-config.yaml" }}
- pre-commit-v1-
- run:
name: pre-commit on changed files
command: |
if git rev-parse HEAD^ >/dev/null 2>&1; then
CHANGED=$(git diff --name-only --diff-filter=ACMRT HEAD^ HEAD --)
else
CHANGED=$(git diff-tree --no-commit-id --name-only -r HEAD)
fi
if [ -z "$CHANGED" ]; then
echo "No changed files; skipping."
exit 0
fi
pre-commit run --files $CHANGED --show-diff-on-failure --color=always
- save_cache:
key: pre-commit-v1-{{ checksum ".pre-commit-config.yaml" }}
paths:
- ~/.cache/pre-commit

unit-test:
executor: python311
parallelism: 2
steps:
<<<<<<< HEAD
unit-test:
executor: python311
parallelism: 2
steps:
- checkout
- run: echo "Running example step, please edit this file"
version: "2.1"
=======
- checkout
- restore-pip-cache
- install-dev-deps
- save-pip-cache
- run:
name: Run unit tests
environment:
CI: "true"
AZURE_CLIENT_ID: ""
AZURE_TENANT_ID: ""
AZURE_CLIENT_SECRET: ""
OPENAI_API_KEY: ""
command: |
mkdir -p data_out
TEST_FILES=$(circleci tests glob "tests/**/*.py" \
| grep -Ev "test_ui_(playwright|pyppeteer|selenium)\.py" \
| circleci tests split --split-by=timings)
python -m pytest $TEST_FILES \
-q --tb=short \
-m "not slow and not azure and not integration" \
--maxfail=1 \
--durations=10 \
--junitxml=data_out/junit-${CIRCLE_NODE_INDEX}.xml \
--cov=shared --cov=scripts \
--cov-report=xml:data_out/coverage-${CIRCLE_NODE_INDEX}.xml
- store_test_results:
path: data_out
- store_artifacts:
path: data_out
destination: test-output
- restore-pip-cache
- install-dev-deps
- save-pip-cache
- run:
name: Run unit tests
environment:
CI: "true"
AZURE_CLIENT_ID: ""
AZURE_TENANT_ID: ""
AZURE_CLIENT_SECRET: ""
OPENAI_API_KEY: ""
command: |
mkdir -p data_out
TEST_FILES=$(circleci tests glob "tests/**/*.py" \
| grep -Ev "test_ui_(playwright|pyppeteer|selenium)\.py" \
| circleci tests split --split-by=timings)
python -m pytest $TEST_FILES \
-q --tb=short \
-m "not slow and not azure and not integration" \
--maxfail=1 \
--durations=10 \
--junitxml=data_out/junit-${CIRCLE_NODE_INDEX}.xml \
--cov=shared --cov=scripts \
--cov-report=xml:data_out/coverage-${CIRCLE_NODE_INDEX}.xml
- store_test_results:
path: data_out
- store_artifacts:
path: data_out
destination: test-output

ci-gate:
docker:
- image: cimg/base:stable
resource_class: small
steps:
- run: echo "All required CI jobs passed."
ci-gate:
docker:
- image: cimg/base:stable
resource_class: small
steps:
- run: echo "All required CI jobs passed."

workflows:
ci:
jobs:
- lint
- type-check
- pre-commit
- unit-test
- ci-gate:
requires:
ci:
jobs:
- lint
- unit-test
- type-check
- pre-commit
>>>>>>> 625f1806b (ci: optimize CircleCI config with Python image, caching, and parallel jobs)
- unit-test
- ci-gate:
requires:
- lint
- unit-test
- pre-commit
19 changes: 15 additions & 4 deletions .github/instructions/chat-providers.instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,12 @@ Order matters — first match wins:

1. **Explicit choice** — `--provider` flag or API parameter
2. **LMStudio** — if `LMSTUDIO_BASE_URL` is set
3. **Azure OpenAI** — needs ALL 4: `AZURE_OPENAI_API_KEY`, `AZURE_OPENAI_ENDPOINT`, `AZURE_OPENAI_DEPLOYMENT`, `AZURE_OPENAI_API_VERSION`
4. **OpenAI** — needs `OPENAI_API_KEY`
5. **LoRA** — explicit `--provider lora` with adapter path
6. **Local echo** — zero-dependency fallback with context-aware intent recognition
3. **Ollama** — if `OLLAMA_BASE_URL` is set (or auto-detected at `http://127.0.0.1:11434/v1`)
4. **Azure OpenAI** — needs ALL 4: `AZURE_OPENAI_API_KEY`, `AZURE_OPENAI_ENDPOINT`, `AZURE_OPENAI_DEPLOYMENT`, `AZURE_OPENAI_API_VERSION`
5. **OpenAI** — needs `OPENAI_API_KEY`
6. **Groq** — needs `GROQ_API_KEY`; auto-detected by probing `https://api.groq.com/openai/v1/models`
7. **LoRA** — explicit `--provider lora` with adapter path
8. **Local echo** — zero-dependency fallback with context-aware intent recognition

## Provider Contract (BaseChatProvider)

Expand All @@ -27,6 +29,15 @@ class BaseChatProvider:

## Key Implementations

### GroqProvider

- OpenAI-compatible provider for Groq cloud inference
- Requires `GROQ_API_KEY` (get one at https://console.groq.com/keys)
- Default model: `llama-3.1-8b-instant`; override with `GROQ_MODEL` or `--model`
- Default endpoint: `https://api.groq.com/openai/v1`; override with `GROQ_BASE_URL`
- Thread-safe availability cache (`_groq_availability_cache`, 30 s TTL)
- Friendly error messages for auth failures, connection errors, and model-not-found

### LoraLocalProvider

- Bridges torch + subprocess for local LoRA inference
Expand Down
18 changes: 1 addition & 17 deletions .github/rulesets/main-default-automation.ruleset.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,6 @@
}
},
{
// Merge queue: prevents the thundering-herd problem when many
// auto-merge labeled PRs all become mergeable simultaneously.
// Requires enabling the merge queue in repository Settings → General
// → Pull Requests → "Allow merge queue" (UI-only setting).
"type": "merge_queue",
"parameters": {
"check_response_timeout_minutes": 60,
Expand All @@ -49,18 +45,6 @@
"min_entries_to_merge_wait_minutes": 5
}
}

// Optional hardening rules (enable when policy-ready):
// ,{ "type": "required_linear_history" }
// ,{ "type": "required_signatures" }
],
"bypass_actors": [
// Preferred: keep empty for strict mode, OR define a tightly scoped audited bypass.
// Example team bypass (replace IDs/types with real values):
// {
// "actor_id": 1234567,
// "actor_type": "Team",
// "bypass_mode": "pull_request"
// }
]
"bypass_actors": []
}
1 change: 1 addition & 0 deletions .github/workflows/code-coverage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

Loading
Loading