Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
252 commits
Select commit Hold shift + click to select a range
aad5caa
bridge-agent: CTX-01A — POSIX path normalization + stable sort harden…
alejandro-uliski Sep 30, 2025
7ae603d
bridge-agent: CTX-01A — POSIX path normalization + stable sort harden…
alejandro-uliski Sep 30, 2025
c17511f
bridge-agent: CTX-01A — POSIX path normalization + stable sort harden…
alejandro-uliski Sep 30, 2025
8bb124c
bridge-agent: CTX-01A — POSIX path normalization + stable sort harden…
alejandro-uliski Sep 30, 2025
18e5343
bridge-agent: CTX-01A — POSIX path normalization + stable sort harden…
alejandro-uliski Sep 30, 2025
02a66ba
bridge-agent: CTX-01A — POSIX path normalization + stable sort harden…
alejandro-uliski Sep 30, 2025
cc4166b
bridge-agent: CTX-01A — POSIX path normalization + stable sort harden…
alejandro-uliski Sep 30, 2025
f4454e6
fix(docker): create healthcheck script before switching to non-root user
alejandro-uliski Sep 30, 2025
7dbf18f
fix(docker): create healthcheck script before switching to non-root user
alejandro-uliski Sep 30, 2025
c0dfccd
fix(docker): create healthcheck script before switching to non-root user
alejandro-uliski Sep 30, 2025
07b1632
fix(docker): create healthcheck script before switching to non-root user
alejandro-uliski Oct 1, 2025
ba404db
fix(docker): create healthcheck script before switching to non-root user
alejandro-uliski Oct 1, 2025
04eb784
fix(docker): create healthcheck script before switching to non-root user
alejandro-uliski Oct 1, 2025
dfea161
fix(docker): create healthcheck script before switching to non-root user
alejandro-uliski Oct 1, 2025
3053afb
feat(api): add /v1 public API with AuthN/Z, SSE streaming, tests, and…
alejandro-uliski Oct 1, 2025
ae349ae
fix(lint): remove unused payload variable in public.pyUpdate public.py
amitandale Oct 1, 2025
9bf56fd
fix(lint): split imports and remove unused os import in test_api.pyUp…
amitandale Oct 1, 2025
286cbc4
chore(ci): switch main-checks.yml to workflow_dispatch onlyUpdate mai…
amitandale Oct 1, 2025
dd3d742
chore(ci): switch build.yml to workflow_dispatch onlyUpdate build.yml
amitandale Oct 1, 2025
25619a5
chore(ci): switch release-drafter.yml to workflow_dispatch onlyUpdate…
amitandale Oct 1, 2025
826159f
feat(api): add /v1 public API with AuthN/Z, SSE streaming, tests, and…
alejandro-uliski Oct 1, 2025
e0ee775
feat(api): add /v1 public API with AuthN/Z, SSE streaming, tests, and…
alejandro-uliski Oct 1, 2025
30b6c02
feat(api): add /v1 public API with AuthN/Z, SSE streaming, tests, and…
alejandro-uliski Oct 1, 2025
0efee43
PR-06: Tool Registry & Discovery
alejandro-uliski Oct 1, 2025
9b5acab
fix(lint): remove unused imports and variables as detected by rufffix…
amitandale Oct 1, 2025
0ee7585
Update loader.py
amitandale Oct 1, 2025
68d37fb
Update bridge.py
amitandale Oct 1, 2025
31a62db
Update test_discovery_integration.py
amitandale Oct 1, 2025
be65877
Update test_loader_parse.py
amitandale Oct 1, 2025
5b61484
Update test_bridge_unit.py
amitandale Oct 1, 2025
5c0ed37
fix(test): add prometheus_client to requirements for test importsUpda…
amitandale Oct 1, 2025
5959de7
Update pyproject.toml
amitandale Oct 1, 2025
ac3ed04
fix: add missing prometheus_client and trio to dependencies for CI/te…
amitandale Oct 1, 2025
078e6cb
added versision of "prometheus_client>=0.22.1", Update pyproject.toml
amitandale Oct 1, 2025
13f88c2
chore: make test_bridge_integration.py synchronousUpdate test_bridge_…
amitandale Oct 1, 2025
ddc81b9
chore: make tests synchronous to prevent async deadlocks from past 5 …
amitandale Oct 1, 2025
6007d22
fix: remove unused pytest import from test_bridge_integration.pyfix: …
amitandale Oct 1, 2025
6013bb0
fix: remove unused imports from test_bridge_unit.pyUpdate test_bridge…
amitandale Oct 1, 2025
f9d6fa7
PR-06: Tool Registry & Discovery
alejandro-uliski Oct 1, 2025
035e52d
PR-06: Tool Registry & Discovery
alejandro-uliski Oct 1, 2025
4f52f14
PR-06: Tool Registry & Discovery
alejandro-uliski Oct 1, 2025
2d49b02
PR-06: Tool Registry & Discovery
alejandro-uliski Oct 3, 2025
ee883c7
fix(lint): remove unused import _build_github_app_jwt from test_bridg…
amitandale Oct 3, 2025
0c13fb0
fix(tests): add prometheus_client to dependencies for metrics collect…
amitandale Oct 3, 2025
7fcb65f
PR-06: Tool Registry & Discovery
alejandro-uliski Oct 3, 2025
3733b4f
PR-06: Tool Registry & Discovery
alejandro-uliski Oct 3, 2025
5a7a43d
PR-06: Tool Registry & Discovery
alejandro-uliski Oct 3, 2025
9fd2cef
PR-06: Tool Registry & Discovery
alejandro-uliski Oct 3, 2025
d5a5321
Update main-checks.yml
amitandale Oct 3, 2025
9749e26
Update main-checks.yml
amitandale Oct 3, 2025
c3eb72c
PR-06: Tool Registry & Discovery
alejandro-uliski Oct 5, 2025
ce6c07e
fix: allow uv.lock to be committed for CI/CD workflows
amitandale Oct 5, 2025
b99ecae
fix: make format/lint jobs pass without requiring uv.lock
amitandale Oct 5, 2025
e35334b
fix: disable uv cache, allow install step to proceed without uv.lock
amitandale Oct 5, 2025
eb47726
PR-03: Sentinel Handshake & Tier Enforcement
alejandro-uliski Oct 5, 2025
8d0a452
test: enforce mock sentinel client fixture for reliable unit/CI testing
amitandale Oct 5, 2025
2a9d78e
test: enforce mock sentinel client fixture for reliable unit/CI testing
amitandale Oct 5, 2025
e45734c
feat: migrate SentinelClient to async httpx for scalable MCP-agent co…
amitandale Oct 5, 2025
b7401f1
PR-03: Sentinel Handshake & Tier Enforcement
alejandro-uliski Oct 5, 2025
ccdeed1
test: migrate sentinel tests to async/await for async SentinelClient
amitandale Oct 5, 2025
45d0a32
test: migrate sentinel tests to async/await for async SentinelClient
amitandale Oct 5, 2025
1dd3b6f
test: fix test_authorize_matrix to use pytest_asyncio.fixture
amitandale Oct 5, 2025
de61746
test: fix test_deny_integration to use pytest_asyncio.fixture
amitandale Oct 5, 2025
ccab0e6
PR-04: AuthN/Z & Public API (Studio + Sentinel)
alejandro-uliski Oct 5, 2025
0ca3f37
fix: teardown public API run/queue after test to prevent hangs
amitandale Oct 5, 2025
ae4c58e
fix: remove unused variable, add async task tracking to prevent hangs
amitandale Oct 5, 2025
f28f982
fix: lint and async task cleanup for public API tests
amitandale Oct 5, 2025
0075f77
refactor: public API state encapsulation (part 1)
amitandale Oct 5, 2025
df2428f
fix: refactor public api for test-local async state, teardown, and st…
amitandale Oct 5, 2025
664e7fc
fix: remove unused asyncio import from public API tests for lint comp…
amitandale Oct 5, 2025
ffa4df7
fix: eliminate global state and generator leaks in public API for han…
amitandale Oct 5, 2025
a625a2a
fix: correct queue broadcast logic for streaming consumers, test isol…
amitandale Oct 5, 2025
fdf1c3f
PR-04: AuthN/Z & Public API (Studio + Sentinel)
alejandro-uliski Oct 5, 2025
9a96fc5
PR-04: AuthN/Z & Public API (Studio + Sentinel)
alejandro-uliski Oct 5, 2025
3bfd1c0
PR-04: AuthN/Z & Public API (Studio + Sentinel)
alejandro-uliski Oct 5, 2025
152522d
fix: test_api_and_sse - expect str not bytes from iter_lines().
amitandale Oct 5, 2025
e9910b0
sonet4.5: validate and correct test_api.py for async and test hygiene
amitandale Oct 5, 2025
7071ff7
PR-04: AuthN/Z & Public API (Studio + Sentinel)
alejandro-uliski Oct 5, 2025
45cb7e7
PR-04: AuthN/Z & Public API (Studio + Sentinel)
alejandro-uliski Oct 5, 2025
0fad577
PR-05A · agent-mcp · GitHub token via Sentinel (consumer only)
alejandro-uliski Oct 5, 2025
c9fb126
fix: PR-05a lint cleanups (unused e, jsonlib->json, remove unused asy…
amitandale Oct 5, 2025
0a5e442
fix: PR-05a lint cleanups (unused e, jsonlib->json, remove unused asy…
amitandale Oct 5, 2025
f45298c
fix: PR-05a lint cleanups (unused e, jsonlib->json, remove unused asy…
amitandale Oct 5, 2025
905656e
fix: PR-05A test failures - change transport http to streamable_http
amitandale Oct 5, 2025
573f09b
fix: PR-05A test failures - add aclose() to FakeAsyncClient
amitandale Oct 5, 2025
06af602
PR-05A · agent-mcp · GitHub token via Sentinel (consumer only)
alejandro-uliski Oct 5, 2025
6a0bb67
Merge branch 'work' of https://github.com/amitandale/mcp-agent into work
alejandro-uliski Oct 5, 2025
c1c0c63
PR-05A · agent-mcp · GitHub token via Sentinel (consumer only)
alejandro-uliski Oct 6, 2025
0084e8d
Fix unused import and undefined json reference in test_github_token_i…
amitandale Oct 6, 2025
596b026
Fix missing metrics import and unused exception variable in sentinel/…
amitandale Oct 6, 2025
fb00862
Test fix: mock HTTPX AsyncClient properly in tests and add aclose. (P…
amitandale Oct 6, 2025
14d27a9
Test fix: mock HTTPX AsyncClient properly in tests and add aclose. (P…
amitandale Oct 6, 2025
6e30d92
PR-15B — GitHub Repo Bootstrap (CI/CD seed)
alejandro-uliski Oct 7, 2025
7855f90
fix(lint): remove unused imports and statement-on-line issues from So…
amitandale Oct 7, 2025
51b2d32
fix(lint): remove unused imports and statement-on-line issues from So…
amitandale Oct 7, 2025
87b5c9f
fix(lint): remove unused imports and statement-on-line issues from So…
amitandale Oct 7, 2025
0f02668
Update test_plan_and_guard.py
amitandale Oct 7, 2025
96df824
PR-15B — GitHub Repo Bootstrap (CI/CD seed)
alejandro-uliski Oct 7, 2025
312976f
fix(lint): split compound statements in bootstrap_repo.py
amitandale Oct 7, 2025
d341f15
fix(lint): remove unused import in test_plan_and_guard.py
amitandale Oct 7, 2025
801510b
test: add comprehensive tests for bootstrap API and client (part 1/2)
amitandale Oct 7, 2025
0cf8cea
test: add integration tests for bootstrap templates and run() (part 2/3)
amitandale Oct 7, 2025
c89d02d
fix(lint): remove unused Tuple import and fix compound statements
amitandale Oct 7, 2025
a7fede6
fix(lint): remove unused json import from github_mcp_client
amitandale Oct 7, 2025
7cadd1b
test: add full coverage for bootstrap handler, client, templates, and…
amitandale Oct 7, 2025
29edde5
fix: remove unused imports. adjust bootstrap_repo imports for test an…
amitandale Oct 7, 2025
ce087ab
Update test_api_and_client.py
amitandale Oct 7, 2025
edb2915
test: fix async mock of request.json in API handler tests (awaitable)
amitandale Oct 7, 2025
90f28b5
PR-15B — GitHub Repo Bootstrap (CI/CD seed)
alejandro-uliski Oct 7, 2025
d3ab496
fix(lint): remove unused imports and variables (F841/F401) registry l…
amitandale Oct 7, 2025
f9d5f9d
fix(lint): remove unused imports and variables (F841/F401) registry l…
amitandale Oct 7, 2025
0b59af8
fix(lint): remove unused imports and variables (F841/F401) registry l…
amitandale Oct 7, 2025
2da2d6d
fix(test): add async keyword to handle_async_request in test_discover…
amitandale Oct 7, 2025
d0e9bc7
fix(test): remove unused imports in test_loader_parse
amitandale Oct 7, 2025
28ec548
fix(test): split multiple imports in test_loader_parse
amitandale Oct 7, 2025
2622c4a
fix(test): guard prometheus_client import for safe test collection in…
amitandale Oct 7, 2025
758cc2f
test: fix dummy transport/context in test_discovery_populates_registr…
amitandale Oct 7, 2025
ba53b8a
fix(test): prevent infinite recursion in test_discovery_integration
amitandale Oct 7, 2025
2a0e4cd
PR-15B — GitHub Repo Bootstrap (CI/CD seed)
alejandro-uliski Oct 7, 2025
0f16498
fix(lint): remove unused imports and variables reported by ruff F401/…
amitandale Oct 7, 2025
d703827
fix(lint): remove unused imports and variables reported by ruff F401/…
amitandale Oct 7, 2025
0402768
fix(lint): remove unused imports and variables reported by ruff F401/…
amitandale Oct 7, 2025
3e452f1
fix(test): guard prometheus_client import in http.py for safe test co…
amitandale Oct 7, 2025
2987588
feat(telemetry): migrate prometheus_client metrics to OpenTelemetry m…
amitandale Oct 7, 2025
6e0f590
chore(ci): remove prometheus_client from tools-registry workflow afte…
amitandale Oct 7, 2025
1614bc1
fix(test): allow positional args in _DummyHistogram/_DummyCounter lab…
amitandale Oct 7, 2025
1fd22b7
feat(telemetry): migrate client/http.py metrics from prometheus_clien…
amitandale Oct 7, 2025
c680142
test: update http.py tests for OpenTelemetry migration.
amitandale Oct 7, 2025
133a0d6
fix(lint): remove unused opentelemetry.metrics import in registry loa…
amitandale Oct 7, 2025
298b2bf
fix(lint): remove unused asyncio import and move RegistryStore import…
amitandale Oct 7, 2025
95d4a86
Fix circular import between loader.py and store.py
amitandale Oct 8, 2025
c17a89a
Fix class name: Revert RegistryStore (was ToolRegistryStore)
amitandale Oct 8, 2025
f7adae2
Revert class name back to ToolRegistryStore
amitandale Oct 8, 2025
d0396f2
Fix test: Update loader.py to use ToolRegistryStore
amitandale Oct 8, 2025
4843191
Fix test_discovery_integration: remove unsupported retries and backof…
amitandale Oct 8, 2025
7f7c5fe
Fix test_parse_tools_yaml_list to handle dict output from load_tools_…
amitandale Oct 8, 2025
5eebfcb
Fix test_breaker_opens: expect http_error instead of circuit_open
amitandale Oct 8, 2025
567ae98
Fix httpx.Timeout ValueError by adding all four timeout parameters
amitandale Oct 8, 2025
0cadb5f
Fix lint error: Remove unused Tuple import from loader.py
amitandale Oct 8, 2025
1142dba
docs: Update perplexity-policy.md with comprehensive file editor policy
amitandale Oct 8, 2025
b54350b
Fix ImportErrors: Add missing discover and load_tools_yaml functions
amitandale Oct 8, 2025
acaa33e
PR-15B — GitHub Repo Bootstrap (CI/CD seed)
alejandro-uliski Oct 8, 2025
e34d971
Lint/PEP8 fix: imports, function uniqueness, style corrections. Analy…
amitandale Oct 8, 2025
5c81986
Update loader.py
amitandale Oct 8, 2025
566933e
Sonet 4.5: Full lint and duplicate fix, all content preserved, no lin…
amitandale Oct 8, 2025
97eb7ca
Update loader.py
amitandale Oct 8, 2025
17bdc97
Sonet 4.5 patch: lint, deduplicate only, preserve all file lines.
amitandale Oct 8, 2025
a02bc51
Update loader.py
amitandale Oct 8, 2025
de62c56
Surgical lint fix: move imports, deduplicate only, full functionality…
amitandale Oct 8, 2025
39bab4c
Surgical lint fix: imports and duplicates ONLY, functionality and lin…
amitandale Oct 8, 2025
21a246f
Update loader.py
amitandale Oct 8, 2025
be5f59e
Update loader.py
amitandale Oct 8, 2025
f228720
PR-15B — GitHub Repo Bootstrap (CI/CD seed)
alejandro-uliski Oct 8, 2025
2cf08f6
Update loader.py
amitandale Oct 8, 2025
31c485d
Merge branch 'work' of https://github.com/amitandale/mcp-agent into work
alejandro-uliski Oct 9, 2025
a62f96f
PR-15B — GitHub Repo Bootstrap (CI/CD seed)
alejandro-uliski Oct 9, 2025
9439f49
PR-15B — GitHub Repo Bootstrap (CI/CD seed)
alejandro-uliski Oct 9, 2025
f264b2d
PR-15B — GitHub Repo Bootstrap (CI/CD seed)
alejandro-uliski Oct 9, 2025
acb9867
PR-15B — GitHub Repo Bootstrap (CI/CD seed)
alejandro-uliski Oct 9, 2025
73a0eca
PR-15B — GitHub Repo Bootstrap (CI/CD seed)
alejandro-uliski Oct 9, 2025
582c05d
Surgical lint fix with Sonet 4.5: removed duplicate imports, unified …
amitandale Oct 9, 2025
9cf765c
Test discovery integration fix: export httpx/yaml for monkeypatch, So…
amitandale Oct 9, 2025
be78725
Fix E402: all imports at top, export httpx/yaml for tests with noqa. …
amitandale Oct 9, 2025
17c301c
Revert monkeypatch alias export for httpx/yaml: prep for test refactor.
amitandale Oct 9, 2025
2130e57
Lint clean: imports at top, no test patching exports.
amitandale Oct 9, 2025
02317b0
PR-15B — GitHub Repo Bootstrap (CI/CD seed)
alejandro-uliski Oct 9, 2025
9dcc757
Test fix: patch loader._httpx instead of httpx for monkeypatch compat…
amitandale Oct 9, 2025
3ce2bac
Lint fix: remove duplicate imports, surgical patch aliases use top im…
amitandale Oct 9, 2025
6e5c07a
Test fix: patch loader.httpx after lint cleanup.
amitandale Oct 9, 2025
4e84033
Fix F811 lint error: remove duplicate load_tools_yaml definition.
amitandale Oct 9, 2025
1966ad7
PR-15B — GitHub Repo Bootstrap (CI/CD seed)
alejandro-uliski Oct 9, 2025
725bc10
PR-15B — GitHub Repo Bootstrap (CI/CD seed)
alejandro-uliski Oct 9, 2025
4c469b6
PR-15B — GitHub Repo Bootstrap (CI/CD seed)
alejandro-uliski Oct 9, 2025
46e08d6
PR-15B — GitHub Repo Bootstrap (CI/CD seed)
alejandro-uliski Oct 9, 2025
2fc442a
Lint fix: remove unused imports from test_models_and_schema.py
amitandale Oct 9, 2025
224472f
Lint fix: remove unused imports from test_overlay_mount.py
amitandale Oct 9, 2025
2734390
Lint fix: remove unused import statistics from test_perf_p95.py
amitandale Oct 9, 2025
986c1d3
Lint fix: remove unused import json from test_redaction.py
amitandale Oct 9, 2025
108896e
Lint fix: remove unused import os from test_settings.py
amitandale Oct 9, 2025
c248114
Fix lint: surgical import aliasing for __init__.py (Sonet 4.5)
amitandale Oct 9, 2025
931be28
Fix lint: remove unused imports, split try/except blocks in public_co…
amitandale Oct 9, 2025
ccec284
Fix lint: remove unused Any, refactor Slice assignment in assemble.py…
amitandale Oct 9, 2025
51d9d38
Fix lint: remove unused Dict import in context/cli.py (Sonet 4.5)
amitandale Oct 9, 2025
440581f
Fix lint: remove unused Mapping and Optional imports in logutil.py (S…
amitandale Oct 9, 2025
a054e1d
Fix lint: remove unused time, remove shadowed meter() in runtime.py (…
amitandale Oct 9, 2025
a3617a3
Fix lint: remove unused imports from test_cli_dry_run.py (Sonet 4.5)
amitandale Oct 9, 2025
21c08c4
Fix lint: remove unused import os from test_enforce_mode.py (Sonet 4.5)
amitandale Oct 9, 2025
87664f7
Fix lint: remove unused imports from test_file_length_clamp.py (Sonet…
amitandale Oct 9, 2025
8d65855
Fix lint: remove unused os, split imports in test_http_hmac_e2e.py (S…
amitandale Oct 9, 2025
a97a058
Fix: use correct importlib.import_module in test_overflow_order.py (S…
amitandale Oct 9, 2025
8beb02d
PR-15B — GitHub Repo Bootstrap (CI/CD seed)
alejandro-uliski Oct 9, 2025
35ee10d
Tighten short-span token estimates
amitandale Oct 9, 2025
7b74a24
Update workflow triggers
amitandale Oct 9, 2025
6132236
Merge pull request #4 from amitandale/codex/restrict-yml-changes-to-p…
amitandale Oct 9, 2025
b75ff03
Merge pull request #3 from amitandale/codex/fix-test-failures-in-cove…
amitandale Oct 9, 2025
dba4169
feat: add llm gateway facade
amitandale Oct 10, 2025
12e5ca6
Merge pull request #5 from amitandale/codex/add-llm-gateway-for-unifi…
amitandale Oct 10, 2025
ea8aebb
Use provider key when running LLM attempts
amitandale Oct 10, 2025
5fa92d2
Merge pull request #6 from amitandale/codex/revert-unrelated-lint-fixes
amitandale Oct 10, 2025
fd2f919
feat: expose cached tools registry API
amitandale Oct 10, 2025
9859bf9
fix: address registry lint issues
amitandale Oct 10, 2025
6be873d
chore: support offline linting and skip optional tests
amitandale Oct 10, 2025
a07e402
Merge pull request #7 from amitandale/codex/add-tools-discovery-and-g…
amitandale Oct 10, 2025
5f733f1
PR-15B — GitHub Repo Bootstrap (CI/CD seed)
alejandro-uliski Oct 10, 2025
19ad7cb
feat: route context toolkit through MCP aggregator
amitandale Oct 10, 2025
0b82f78
Merge pull request #9 from amitandale/codex/remove-legacy-http-regist…
amitandale Oct 10, 2025
6d6e1e0
feat: resilient MCP HTTP client and adapters
amitandale Oct 10, 2025
244cfac
Fix lint issues and ensure HTTP client RNG availability
amitandale Oct 10, 2025
4134440
test: run asyncio-marked tests without pytest-asyncio
amitandale Oct 10, 2025
767f73c
test: harden telemetry fixture against disabled otel env
amitandale Oct 10, 2025
91e6731
Fix test_metrics_and_traces_emitted: reset TracerProvider to capture …
amitandale Oct 10, 2025
2a78bad
Merge pull request #10 from amitandale/codex/add-resilient-mcp-tool-c…
amitandale Oct 10, 2025
e857557
Add placeholder run loop controller and helpers
amitandale Oct 10, 2025
40b13b6
Add run loop unit tests
amitandale Oct 10, 2025
17ef491
Fix SSE stream test and lint warnings
amitandale Oct 10, 2025
ccf568b
Fix SSE stream test and lint warnings
amitandale Oct 10, 2025
91c1977
Merge pull request #11 from amitandale/codex/add-run-loop-for-llm-tim…
amitandale Oct 10, 2025
ee2730f
Merge pull request #12 from amitandale/codex/add-run-loop-for-llm-tim…
amitandale Oct 10, 2025
10da9e4
Add feature intake flow with estimation and confirmation
amitandale Oct 10, 2025
296c9ab
Fix feature confirmation integration test hang
amitandale Oct 10, 2025
99c131e
Remove flakey confirmation integration test
amitandale Oct 12, 2025
7bcea9c
Refactor API state helpers and stabilize feature SSE stream
amitandale Oct 12, 2025
be5d4a4
Restore confirmation run integration test
amitandale Oct 12, 2025
1678159
Fix feature tests cleanup to use asyncio.run
amitandale Oct 12, 2025
2d9e0ef
Stub run controller in feature tests
amitandale Oct 12, 2025
1049785
Stabilize feature intake tests with threading events
amitandale Oct 12, 2025
22d5f0b
Fix telemetry test to avoid pytest-mock dependency
amitandale Oct 12, 2025
1ce9d38
Stabilize telemetry regression test by flushing providers
amitandale Oct 12, 2025
3a81feb
Reset OTEL once guards in telemetry test fixture
amitandale Oct 12, 2025
cbe8150
Merge pull request #13 from amitandale/codex/add-feature-intake-flow-…
amitandale Oct 12, 2025
0ae83b1
feat: add telemetry, audit, and artifact observability modules
amitandale Oct 12, 2025
4043f60
fix: remove unused imports in artifact index
amitandale Oct 12, 2025
c2bdae9
fix: ensure src on pytest path
amitandale Oct 12, 2025
ddeaeed
test: rename observability redaction test
amitandale Oct 12, 2025
645c17d
Merge pull request #14 from amitandale/codex/add-observability-and-au…
amitandale Oct 12, 2025
92150af
Add LLM gateway failover, budgets, fan-out, and telemetry
amitandale Oct 12, 2025
64aef50
Merge pull request #15 from amitandale/codex/add-llm-gateway-multi-pr…
amitandale Oct 12, 2025
9adcd41
Add budget enforcement error handling
amitandale Oct 12, 2025
accf538
Merge pull request #16 from amitandale/codex/raise-budgeterror-and-au…
amitandale Oct 12, 2025
f4cff7c
feat: add multi-language test runner adapters
amitandale Oct 12, 2025
88e3c5a
Remove unused imports flagged by lint
amitandale Oct 12, 2025
1aed260
Merge pull request #17 from amitandale/codex/implement-multi-language…
amitandale Oct 12, 2025
bcbb279
chore: record lifecycle verification
amitandale Oct 12, 2025
d180c3c
Fix SSE stream test lint error
amitandale Oct 12, 2025
21dec35
Merge pull request #18 from amitandale/codex/implement-explicit-lifec…
amitandale Oct 12, 2025
67edf55
Allow GHCR workflow to run on self-hosted runners
amitandale Oct 14, 2025
55ef0a1
Merge pull request #19 from amitandale/codex/add-docker-image-workflo…
amitandale Oct 14, 2025
351e8e7
feat(api): add admin endpoints for runtime configuration
amitandale Oct 15, 2025
c15b1aa
Improve admin API tests with lifecycle-safe stubs
amitandale Oct 15, 2025
db52bdd
Vendor MCP types fallback for offline tests
amitandale Oct 15, 2025
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
18 changes: 18 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
__pycache__/
*.pyc
*.pyo
*.pyd
*.egg-info/
build/
dist/
.coverage
htmlcov/
venv/
.venv/
.git/
.github/
tests/
docs/
examples/
*.md
!README.md
12 changes: 12 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# CODEOWNERS for mcp-agent
# Default owners
* @yourorg/platform @yourorg/agents-core

# Specific paths
/.github/ @yourorg/devops
/Dockerfile @yourorg/devops
/.dockerignore @yourorg/devops
/schemas/ @yourorg/platform
/src/ @yourorg/agents-core
/tests/ @yourorg/agents-core
/scripts/ @yourorg/devops
18 changes: 0 additions & 18 deletions .github/release-drafter.yml

This file was deleted.

85 changes: 85 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
name: Build and Publish (Hardened)
on:
workflow_call:

jobs:
build:
runs-on: [self-hosted, linux]
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v4
- uses: hadolint/[email protected]
with:
dockerfile: Dockerfile
failure-threshold: warning
config: .hadolint.yaml
- uses: docker/setup-qemu-action@v3
- uses: docker/setup-buildx-action@v3
- uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GHCR_TOKEN }}
- id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.repository_owner }}/mcp-agent
tags: |
type=raw,value=sha-${{ github.sha }}
type=ref,event=tag
labels: |
org.opencontainers.image.revision=${{ github.sha }}
org.opencontainers.image.source=${{ github.server_url }}/${{ github.repository }}
- id: build
uses: docker/build-push-action@v6
with:
context: .
push: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/agent-v') }}
platforms: linux/amd64
labels: ${{ steps.meta.outputs.labels }}
build-args: |
BUILD_DATE=${{ steps.meta.outputs.created }}
VCS_REF=${{ github.sha }}
VERSION=${{ github.ref_name }}
outputs: type=image,name=target,dest=/tmp/image.tar
- if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/agent-v') }}
run: echo "${{ steps.build.outputs.digest }}" | tee digest.txt
- if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/agent-v') }}
uses: actions/upload-artifact@v4
with:
name: image-digest
path: digest.txt
- uses: anchore/sbom-action@v0
with:
image: docker-archive:/tmp/image.tar
format: spdx-json
output-file: sbom.spdx.json
- uses: actions/upload-artifact@v4
with:
name: sbom-spdx
path: sbom.spdx.json

runtime-test:
runs-on: [self-hosted, linux]
needs: build
steps:
- uses: actions/checkout@v4
- run: docker build -t local/mcp-agent:test .
- name: Verify non-root
run: |
uid=$(docker run --rm local/mcp-agent:test id -u)
test "$uid" != "0"
- name: Verify health
run: |
cid=$(docker run -d -p 3002:3002 local/mcp-agent:test)
for i in $(seq 1 30); do
if curl -fsS http://127.0.0.1:3002/health >/dev/null; then
docker rm -f "$cid" >/dev/null; exit 0
fi
sleep 1
done
docker logs "$cid" || true
docker rm -f "$cid" || true
exit 1
31 changes: 8 additions & 23 deletions .github/workflows/checks.yml
Original file line number Diff line number Diff line change
@@ -1,66 +1,51 @@
name: Linting, formatting and other checks on codebase

on:
workflow_call:

jobs:
format:
runs-on: ubuntu-latest
runs-on: [self-hosted, Linux, X64]
steps:
- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v3
with:
enable-cache: true

enable-cache: false
- name: "Set up Python"
uses: actions/setup-python@v5
with:
python-version-file: ".python-version"

- name: Install the project
run: uv sync --frozen --all-extras --dev

run: uv sync --all-extras --dev
- name: Run ruff format check
run: uv run scripts/format.py

lint:
runs-on: ubuntu-latest
runs-on: [self-hosted, Linux, X64]
steps:
- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v3
with:
enable-cache: true

enable-cache: false
- name: "Set up Python"
uses: actions/setup-python@v5
with:
python-version-file: ".python-version"

- name: Install the project
run: uv sync --frozen --all-extras --dev

run: uv sync --all-extras --dev
- name: Run pyright
run: uv run scripts/lint.py

test:
runs-on: ubuntu-latest
runs-on: [self-hosted, Linux, X64]
steps:
- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v3
with:
enable-cache: true

enable-cache: false
- name: "Set up Python"
uses: actions/setup-python@v5
with:
python-version-file: ".python-version"

- name: Install dependencies
run: make sync
- name: Run tests with coverage
Expand Down
9 changes: 1 addition & 8 deletions .github/workflows/main-checks.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,6 @@
name: Main Checks

on:
push:
branches:
- main
- "v*.*.*"
tags:
- "v*.*.*"

workflow_dispatch:
jobs:
checks:
uses: ./.github/workflows/checks.yml
18 changes: 18 additions & 0 deletions .github/workflows/public-api-contract.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: Public API Contract
on:
workflow_call:
workflow_dispatch:
jobs:
contract:
runs-on: [self-hosted, linux]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install deps
run: |
python -m pip install --upgrade pip
pip install starlette pytest httpx PyJWT
- name: Run tests
run: pytest -q tests/public_api
62 changes: 62 additions & 0 deletions .github/workflows/push-prod-image.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: Push Production Docker Image

on:
workflow_dispatch:
inputs:
tag:
description: "Image tag to publish (for example: v1.2.3 or latest)"
required: true
default: latest
image_name:
description: "Override the image name (defaults to mcp-agent)"
required: false
default: mcp-agent
runner_labels:
description: >-
JSON array of runner labels (for example: ["ubuntu-latest"] or
["self-hosted", "linux", "x64"])
required: false
default: '["ubuntu-latest"]'

env:
REGISTRY: ghcr.io

jobs:
push:
name: Build and push image
runs-on: ${{ fromJSON(inputs.runner_labels) }}
permissions:
contents: read
packages: write
env:
IMAGE_NAME: ${{ github.repository_owner }}/${{ inputs.image_name }}
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Log in to GHCR
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.repository_owner }}
password: ${{ secrets.GHCR_TOKEN }}

- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=raw,value=${{ inputs.tag }}
type=sha

- name: Build and push image
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
20 changes: 2 additions & 18 deletions .github/workflows/release-drafter.yml
Original file line number Diff line number Diff line change
@@ -1,32 +1,16 @@
name: Update Release Draft

on:
push:
branches:
- main

# pull_request event is required only for autolabeler
pull_request:
# Only following types are handled by the action, but one can default to all as well
types: [opened, reopened, synchronize]

# pull_request_target event is required for autolabeler to support PRs from forks
pull_request_target:
types: [opened, reopened, synchronize]

workflow_dispatch: # Enables manual runs

workflow_dispatch:
permissions:
contents: read

jobs:
update_release_draft:
permissions:
# write permission is required to create a github release
contents: write
# write permission is required for autolabeler
pull-requests: write
runs-on: ubuntu-latest
runs-on: [self-hosted, Linux, X64]
steps:
- uses: actions/checkout@v3
- uses: release-drafter/release-drafter@v6
Expand Down
19 changes: 19 additions & 0 deletions .github/workflows/tool-clients.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: Tool Clients
on:
workflow_call:
workflow_dispatch:
jobs:
tests:
runs-on: [self-hosted, linux]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install deps
run: |
python -m pip install --upgrade pip
pip install pytest httpx jsonschema prometheus_client
- name: Run tests
run: |
pytest -q tests/tool_clients
19 changes: 19 additions & 0 deletions .github/workflows/tools-registry.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: Tools Registry
on:
workflow_call:
workflow_dispatch:
jobs:
tests:
runs-on: [self-hosted, linux]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install deps
run: |
python -m pip install --upgrade pip
pip install pytest httpx pyyaml
- name: Run registry tests
run: |
pytest -q tests/registry
Loading
Loading