codecortex-context-engine 0.1.0a1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- codecortex_context_engine-0.1.0a1/.dockerignore +16 -0
- codecortex_context_engine-0.1.0a1/.github/CODEOWNERS +10 -0
- codecortex_context_engine-0.1.0a1/.github/ISSUE_TEMPLATE/bug.yml +38 -0
- codecortex_context_engine-0.1.0a1/.github/ISSUE_TEMPLATE/config.yml +5 -0
- codecortex_context_engine-0.1.0a1/.github/ISSUE_TEMPLATE/feature.yml +22 -0
- codecortex_context_engine-0.1.0a1/.github/PULL_REQUEST_TEMPLATE.md +16 -0
- codecortex_context_engine-0.1.0a1/.github/dependabot.yml +20 -0
- codecortex_context_engine-0.1.0a1/.github/pull_request_template.md +15 -0
- codecortex_context_engine-0.1.0a1/.github/workflows/backend-conformance.yml +45 -0
- codecortex_context_engine-0.1.0a1/.github/workflows/bootstrap-release.yml +28 -0
- codecortex_context_engine-0.1.0a1/.github/workflows/ci.yml +61 -0
- codecortex_context_engine-0.1.0a1/.github/workflows/codeql.yml +31 -0
- codecortex_context_engine-0.1.0a1/.github/workflows/docker.yml +78 -0
- codecortex_context_engine-0.1.0a1/.github/workflows/docs.yml +58 -0
- codecortex_context_engine-0.1.0a1/.github/workflows/live-agent-e2e.yml +67 -0
- codecortex_context_engine-0.1.0a1/.github/workflows/parser-providers.yml +38 -0
- codecortex_context_engine-0.1.0a1/.github/workflows/production-benchmark.yml +56 -0
- codecortex_context_engine-0.1.0a1/.github/workflows/release.yml +189 -0
- codecortex_context_engine-0.1.0a1/.github/workflows/scorecard.yml +39 -0
- codecortex_context_engine-0.1.0a1/.github/workflows/security.yml +61 -0
- codecortex_context_engine-0.1.0a1/.gitignore +14 -0
- codecortex_context_engine-0.1.0a1/CHANGELOG.md +28 -0
- codecortex_context_engine-0.1.0a1/CITATION.cff +17 -0
- codecortex_context_engine-0.1.0a1/CODE_OF_CONDUCT.md +21 -0
- codecortex_context_engine-0.1.0a1/COMMERCIAL.md +9 -0
- codecortex_context_engine-0.1.0a1/CONTRIBUTING.md +38 -0
- codecortex_context_engine-0.1.0a1/Dockerfile +37 -0
- codecortex_context_engine-0.1.0a1/GOVERNANCE.md +25 -0
- codecortex_context_engine-0.1.0a1/LICENSE +201 -0
- codecortex_context_engine-0.1.0a1/NOTICE +2 -0
- codecortex_context_engine-0.1.0a1/PKG-INFO +381 -0
- codecortex_context_engine-0.1.0a1/README.md +141 -0
- codecortex_context_engine-0.1.0a1/ROADMAP.md +72 -0
- codecortex_context_engine-0.1.0a1/SECURITY.md +33 -0
- codecortex_context_engine-0.1.0a1/SUPPORT.md +15 -0
- codecortex_context_engine-0.1.0a1/benchmarks/README.md +13 -0
- codecortex_context_engine-0.1.0a1/benchmarks/cases.json +22 -0
- codecortex_context_engine-0.1.0a1/benchmarks/external/sample-suite.json +17 -0
- codecortex_context_engine-0.1.0a1/benchmarks/production/README.md +47 -0
- codecortex_context_engine-0.1.0a1/benchmarks/production/spec.json +46 -0
- codecortex_context_engine-0.1.0a1/benchmarks/regression-policy.json +7 -0
- codecortex_context_engine-0.1.0a1/codecov.yml +16 -0
- codecortex_context_engine-0.1.0a1/compose.yaml +27 -0
- codecortex_context_engine-0.1.0a1/docs/ADVANCED_INTELLIGENCE.md +66 -0
- codecortex_context_engine-0.1.0a1/docs/ARCHITECTURE.md +24 -0
- codecortex_context_engine-0.1.0a1/docs/BRAND.md +34 -0
- codecortex_context_engine-0.1.0a1/docs/INTEGRATIONS.md +14 -0
- codecortex_context_engine-0.1.0a1/docs/OPENSSF.md +30 -0
- codecortex_context_engine-0.1.0a1/docs/PACKAGING.md +17 -0
- codecortex_context_engine-0.1.0a1/docs/QUALITY.md +21 -0
- codecortex_context_engine-0.1.0a1/docs/RELEASE.md +11 -0
- codecortex_context_engine-0.1.0a1/docs/TESTING.md +9 -0
- codecortex_context_engine-0.1.0a1/docs/index.md +29 -0
- codecortex_context_engine-0.1.0a1/examples/demo_project/api.py +6 -0
- codecortex_context_engine-0.1.0a1/examples/demo_project/auth/service.py +12 -0
- codecortex_context_engine-0.1.0a1/examples/demo_project/auth/tokens.py +14 -0
- codecortex_context_engine-0.1.0a1/examples/demo_project/tests/test_auth.py +7 -0
- codecortex_context_engine-0.1.0a1/mkdocs.yml +26 -0
- codecortex_context_engine-0.1.0a1/pyproject.toml +80 -0
- codecortex_context_engine-0.1.0a1/scripts/backend_conformance.py +70 -0
- codecortex_context_engine-0.1.0a1/scripts/demo.py +32 -0
- codecortex_context_engine-0.1.0a1/scripts/install.ps1 +19 -0
- codecortex_context_engine-0.1.0a1/scripts/install.sh +24 -0
- codecortex_context_engine-0.1.0a1/scripts/live_agent_e2e.py +68 -0
- codecortex_context_engine-0.1.0a1/scripts/release_check.py +35 -0
- codecortex_context_engine-0.1.0a1/scripts/run_agent_matrix.py +70 -0
- codecortex_context_engine-0.1.0a1/scripts/run_production_benchmark.py +45 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/__init__.py +3 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/architecture/__init__.py +23 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/architecture/drift.py +182 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/architecture/inference.py +160 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/backends/__init__.py +35 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/backends/base.py +38 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/backends/context.py +118 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/backends/contracts.py +65 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/backends/factory.py +60 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/backends/graph.py +107 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/backends/manager.py +303 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/backends/mcp_client.py +196 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/backends/pool.py +128 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/backends/spec.py +83 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/backends/symbols.py +189 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/benchmark.py +211 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/cli.py +409 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/config.py +27 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/context/__init__.py +13 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/context/budget.py +62 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/context/integrated.py +60 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/context/pipeline.py +223 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/core/__init__.py +1 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/core/contracts.py +45 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/core/errors.py +17 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/core/models.py +69 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/dashboard.py +259 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/editing.py +41 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/engines/__init__.py +5 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/engines/builtin/__init__.py +5 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/engines/builtin/factory.py +26 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/engines/builtin/memory.py +35 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/engines/builtin/repository.py +73 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/engines/builtin/symbols.py +89 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/engines/builtin/validation.py +54 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/engines/registry.py +26 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/entrypoint.py +266 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/evaluation/__init__.py +55 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/evaluation/external.py +265 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/evaluation/production.py +670 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/evaluation/regression.py +188 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/gateway.py +38 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/git_intelligence.py +252 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/indexing/__init__.py +6 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/indexing/graph.py +78 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/indexing/impact.py +127 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/indexing/incremental.py +163 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/indexing/incremental_graph.py +189 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/indexing/indexer.py +172 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/indexing/relationships.py +179 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/indexing/resolution.py +88 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/integrations/__init__.py +5 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/integrations/agents.py +235 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/interfaces/__init__.py +1 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/interfaces/mcp_bridge.py +66 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/languages/__init__.py +5 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/languages/native.py +166 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/languages/registry.py +232 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/mcp/__init__.py +5 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/mcp/extended.py +114 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/mcp/server.py +473 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/memory/__init__.py +11 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/memory/json_store.py +52 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/memory/knowledge.py +193 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/memory/team_store.py +193 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/orchestrator.py +153 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/pr_intelligence.py +214 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/retrieval/__init__.py +16 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/retrieval/hybrid.py +67 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/retrieval/index.py +135 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/retrieval/providers.py +67 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/retrieval/repository.py +94 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/router/__init__.py +5 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/router/router.py +79 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/runtime.py +69 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/setup.py +100 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/symbols/__init__.py +5 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/symbols/providers.py +192 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/telemetry/__init__.py +5 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/telemetry/collector.py +43 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/tracing/__init__.py +9 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/tracing/task_trace.py +235 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/workspace/__init__.py +9 -0
- codecortex_context_engine-0.1.0a1/src/codecortex/workspace/federation.py +173 -0
- codecortex_context_engine-0.1.0a1/tests/fixtures/fake_mcp_server.py +50 -0
- codecortex_context_engine-0.1.0a1/tests/test_agent_configurator.py +47 -0
- codecortex_context_engine-0.1.0a1/tests/test_architecture_drift.py +25 -0
- codecortex_context_engine-0.1.0a1/tests/test_architecture_inference.py +18 -0
- codecortex_context_engine-0.1.0a1/tests/test_backend_contracts.py +12 -0
- codecortex_context_engine-0.1.0a1/tests/test_backend_factory.py +16 -0
- codecortex_context_engine-0.1.0a1/tests/test_backend_manager.py +34 -0
- codecortex_context_engine-0.1.0a1/tests/test_backend_session_pool.py +13 -0
- codecortex_context_engine-0.1.0a1/tests/test_benchmark.py +26 -0
- codecortex_context_engine-0.1.0a1/tests/test_context.py +45 -0
- codecortex_context_engine-0.1.0a1/tests/test_context_backend_adapter.py +18 -0
- codecortex_context_engine-0.1.0a1/tests/test_context_pipeline.py +19 -0
- codecortex_context_engine-0.1.0a1/tests/test_dashboard.py +32 -0
- codecortex_context_engine-0.1.0a1/tests/test_external_evaluation.py +42 -0
- codecortex_context_engine-0.1.0a1/tests/test_git_intelligence.py +27 -0
- codecortex_context_engine-0.1.0a1/tests/test_graph.py +16 -0
- codecortex_context_engine-0.1.0a1/tests/test_graph_backend_adapter.py +23 -0
- codecortex_context_engine-0.1.0a1/tests/test_impact.py +23 -0
- codecortex_context_engine-0.1.0a1/tests/test_incremental.py +24 -0
- codecortex_context_engine-0.1.0a1/tests/test_incremental_graph.py +21 -0
- codecortex_context_engine-0.1.0a1/tests/test_integrated_context.py +14 -0
- codecortex_context_engine-0.1.0a1/tests/test_knowledge.py +19 -0
- codecortex_context_engine-0.1.0a1/tests/test_languages.py +28 -0
- codecortex_context_engine-0.1.0a1/tests/test_mcp.py +40 -0
- codecortex_context_engine-0.1.0a1/tests/test_mcp_edit_surface.py +26 -0
- codecortex_context_engine-0.1.0a1/tests/test_mcp_stdio_client.py +28 -0
- codecortex_context_engine-0.1.0a1/tests/test_memory.py +13 -0
- codecortex_context_engine-0.1.0a1/tests/test_native_parsers.py +24 -0
- codecortex_context_engine-0.1.0a1/tests/test_orchestrator_concurrency.py +37 -0
- codecortex_context_engine-0.1.0a1/tests/test_pr_intelligence.py +29 -0
- codecortex_context_engine-0.1.0a1/tests/test_production_benchmark.py +59 -0
- codecortex_context_engine-0.1.0a1/tests/test_regression_gate.py +23 -0
- codecortex_context_engine-0.1.0a1/tests/test_relationships.py +16 -0
- codecortex_context_engine-0.1.0a1/tests/test_repository_semantic.py +13 -0
- codecortex_context_engine-0.1.0a1/tests/test_resolution.py +15 -0
- codecortex_context_engine-0.1.0a1/tests/test_retrieval.py +30 -0
- codecortex_context_engine-0.1.0a1/tests/test_router.py +25 -0
- codecortex_context_engine-0.1.0a1/tests/test_runtime.py +30 -0
- codecortex_context_engine-0.1.0a1/tests/test_security_boundaries.py +38 -0
- codecortex_context_engine-0.1.0a1/tests/test_setup.py +11 -0
- codecortex_context_engine-0.1.0a1/tests/test_symbol_backend_adapter.py +29 -0
- codecortex_context_engine-0.1.0a1/tests/test_symbol_history.py +25 -0
- codecortex_context_engine-0.1.0a1/tests/test_symbols.py +27 -0
- codecortex_context_engine-0.1.0a1/tests/test_task_trace.py +28 -0
- codecortex_context_engine-0.1.0a1/tests/test_team_memory.py +37 -0
- codecortex_context_engine-0.1.0a1/tests/test_workspace.py +20 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Default ownership
|
|
2
|
+
* @BehnamJalaliCo
|
|
3
|
+
|
|
4
|
+
# Security and release-sensitive surfaces
|
|
5
|
+
/.github/ @BehnamJalaliCo
|
|
6
|
+
/SECURITY.md @BehnamJalaliCo
|
|
7
|
+
/LICENSE @BehnamJalaliCo
|
|
8
|
+
/pyproject.toml @BehnamJalaliCo
|
|
9
|
+
/src/codecortex/backends/ @BehnamJalaliCo
|
|
10
|
+
/src/codecortex/mcp/ @BehnamJalaliCo
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
name: Bug report
|
|
2
|
+
description: Report a reproducible CodeCortex problem
|
|
3
|
+
title: "[Bug]: "
|
|
4
|
+
labels: ["bug"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: "Thanks for helping improve CodeCortex. Do not include secrets or vulnerability details here."
|
|
9
|
+
- type: input
|
|
10
|
+
id: version
|
|
11
|
+
attributes:
|
|
12
|
+
label: Version or commit
|
|
13
|
+
validations:
|
|
14
|
+
required: true
|
|
15
|
+
- type: textarea
|
|
16
|
+
id: reproduce
|
|
17
|
+
attributes:
|
|
18
|
+
label: Reproduction
|
|
19
|
+
description: Minimal steps or repository-independent example.
|
|
20
|
+
validations:
|
|
21
|
+
required: true
|
|
22
|
+
- type: textarea
|
|
23
|
+
id: expected
|
|
24
|
+
attributes:
|
|
25
|
+
label: Expected behavior
|
|
26
|
+
validations:
|
|
27
|
+
required: true
|
|
28
|
+
- type: textarea
|
|
29
|
+
id: actual
|
|
30
|
+
attributes:
|
|
31
|
+
label: Actual behavior
|
|
32
|
+
validations:
|
|
33
|
+
required: true
|
|
34
|
+
- type: input
|
|
35
|
+
id: environment
|
|
36
|
+
attributes:
|
|
37
|
+
label: Environment
|
|
38
|
+
description: OS, Python version, and relevant agent/CLI.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
name: Feature request
|
|
2
|
+
description: Propose a focused product or engineering improvement
|
|
3
|
+
title: "[Feature]: "
|
|
4
|
+
labels: ["enhancement"]
|
|
5
|
+
body:
|
|
6
|
+
- type: textarea
|
|
7
|
+
id: problem
|
|
8
|
+
attributes:
|
|
9
|
+
label: Problem
|
|
10
|
+
description: What user or engineering problem should be solved?
|
|
11
|
+
validations:
|
|
12
|
+
required: true
|
|
13
|
+
- type: textarea
|
|
14
|
+
id: proposal
|
|
15
|
+
attributes:
|
|
16
|
+
label: Proposed solution
|
|
17
|
+
validations:
|
|
18
|
+
required: true
|
|
19
|
+
- type: textarea
|
|
20
|
+
id: alternatives
|
|
21
|
+
attributes:
|
|
22
|
+
label: Alternatives considered
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
## Summary
|
|
2
|
+
|
|
3
|
+
Describe what changed and why.
|
|
4
|
+
|
|
5
|
+
## Validation
|
|
6
|
+
|
|
7
|
+
- [ ] Tests added or updated when behavior changed
|
|
8
|
+
- [ ] `ruff check .` passes
|
|
9
|
+
- [ ] `pytest -q` passes
|
|
10
|
+
- [ ] Security implications considered
|
|
11
|
+
- [ ] Documentation updated when user-visible behavior changed
|
|
12
|
+
- [ ] No secrets, private source, or generated credentials are included
|
|
13
|
+
|
|
14
|
+
## Compatibility / risk
|
|
15
|
+
|
|
16
|
+
Describe compatibility impact, migration needs, or rollout risk. Write `None` when not applicable.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
- package-ecosystem: pip
|
|
4
|
+
directory: "/"
|
|
5
|
+
schedule:
|
|
6
|
+
interval: weekly
|
|
7
|
+
open-pull-requests-limit: 10
|
|
8
|
+
labels: ["dependencies"]
|
|
9
|
+
- package-ecosystem: github-actions
|
|
10
|
+
directory: "/"
|
|
11
|
+
schedule:
|
|
12
|
+
interval: weekly
|
|
13
|
+
open-pull-requests-limit: 10
|
|
14
|
+
labels: ["dependencies", "github-actions"]
|
|
15
|
+
- package-ecosystem: docker
|
|
16
|
+
directory: "/"
|
|
17
|
+
schedule:
|
|
18
|
+
interval: weekly
|
|
19
|
+
open-pull-requests-limit: 5
|
|
20
|
+
labels: ["dependencies", "docker"]
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
## What changed
|
|
2
|
+
|
|
3
|
+
Describe the behavior and why it belongs in CodeCortex.
|
|
4
|
+
|
|
5
|
+
## Verification
|
|
6
|
+
|
|
7
|
+
- [ ] Tests added or updated
|
|
8
|
+
- [ ] `ruff check .` passes
|
|
9
|
+
- [ ] `pytest -q` passes
|
|
10
|
+
- [ ] No benchmark or performance claim is included without a reproducible measurement
|
|
11
|
+
- [ ] Backend contract changes include compatibility coverage
|
|
12
|
+
|
|
13
|
+
## Risk
|
|
14
|
+
|
|
15
|
+
Describe compatibility, security, performance, or migration risk.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
name: Backend Boundary Conformance
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
push:
|
|
6
|
+
branches: [main]
|
|
7
|
+
paths:
|
|
8
|
+
- "src/codecortex/backends/**"
|
|
9
|
+
- "src/codecortex/context/integrated.py"
|
|
10
|
+
- "tests/test_backend_*.py"
|
|
11
|
+
- "tests/test_context_backend_adapter.py"
|
|
12
|
+
- ".github/workflows/backend-conformance.yml"
|
|
13
|
+
- "pyproject.toml"
|
|
14
|
+
pull_request:
|
|
15
|
+
paths:
|
|
16
|
+
- "src/codecortex/backends/**"
|
|
17
|
+
- "src/codecortex/context/integrated.py"
|
|
18
|
+
- "tests/test_backend_*.py"
|
|
19
|
+
- "tests/test_context_backend_adapter.py"
|
|
20
|
+
- ".github/workflows/backend-conformance.yml"
|
|
21
|
+
- "pyproject.toml"
|
|
22
|
+
|
|
23
|
+
permissions:
|
|
24
|
+
contents: read
|
|
25
|
+
|
|
26
|
+
jobs:
|
|
27
|
+
backend-boundary:
|
|
28
|
+
runs-on: ubuntu-latest
|
|
29
|
+
steps:
|
|
30
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
31
|
+
with:
|
|
32
|
+
persist-credentials: false
|
|
33
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
|
|
34
|
+
with:
|
|
35
|
+
python-version: "3.13"
|
|
36
|
+
cache: pip
|
|
37
|
+
- run: python -m pip install --upgrade pip
|
|
38
|
+
- run: pip install -e ".[dev]"
|
|
39
|
+
- run: >-
|
|
40
|
+
pytest -q
|
|
41
|
+
tests/test_backend_contracts.py
|
|
42
|
+
tests/test_backend_factory.py
|
|
43
|
+
tests/test_backend_manager.py
|
|
44
|
+
tests/test_backend_session_pool.py
|
|
45
|
+
tests/test_context_backend_adapter.py
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name: Bootstrap First Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
paths:
|
|
6
|
+
- .github/workflows/bootstrap-release.yml
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: write
|
|
10
|
+
actions: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
release:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
|
|
17
|
+
with:
|
|
18
|
+
fetch-depth: 0
|
|
19
|
+
- name: Point v0.1.0a1 at the validated release commit
|
|
20
|
+
run: |
|
|
21
|
+
git config user.name "github-actions[bot]"
|
|
22
|
+
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
|
23
|
+
git tag -fa v0.1.0a1 -m "CodeCortex Context Engine v0.1.0a1"
|
|
24
|
+
git push --force origin refs/tags/v0.1.0a1
|
|
25
|
+
- name: Dispatch release workflow
|
|
26
|
+
env:
|
|
27
|
+
GH_TOKEN: ${{ github.token }}
|
|
28
|
+
run: gh workflow run release.yml --ref main -f tag=v0.1.0a1
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
test:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
permissions:
|
|
15
|
+
contents: read
|
|
16
|
+
id-token: write
|
|
17
|
+
strategy:
|
|
18
|
+
fail-fast: false
|
|
19
|
+
matrix:
|
|
20
|
+
python-version: ["3.11", "3.12", "3.13"]
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
23
|
+
with:
|
|
24
|
+
persist-credentials: false
|
|
25
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
|
|
26
|
+
with:
|
|
27
|
+
python-version: ${{ matrix.python-version }}
|
|
28
|
+
cache: pip
|
|
29
|
+
- run: python -m pip install --upgrade pip
|
|
30
|
+
- run: pip install -e ".[dev]"
|
|
31
|
+
- run: ruff check .
|
|
32
|
+
- name: Tests
|
|
33
|
+
run: |
|
|
34
|
+
if [ "${{ matrix.python-version }}" = "3.13" ]; then
|
|
35
|
+
pytest -q --cov=codecortex --cov-report=xml --cov-report=term-missing --cov-fail-under=65
|
|
36
|
+
else
|
|
37
|
+
pytest -q
|
|
38
|
+
fi
|
|
39
|
+
- name: Upload coverage
|
|
40
|
+
if: matrix.python-version == '3.13' && !cancelled()
|
|
41
|
+
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
|
|
42
|
+
with:
|
|
43
|
+
use_oidc: true
|
|
44
|
+
files: ./coverage.xml
|
|
45
|
+
fail_ci_if_error: false
|
|
46
|
+
|
|
47
|
+
package:
|
|
48
|
+
runs-on: ubuntu-latest
|
|
49
|
+
steps:
|
|
50
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
51
|
+
with:
|
|
52
|
+
persist-credentials: false
|
|
53
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
|
|
54
|
+
with:
|
|
55
|
+
python-version: "3.13"
|
|
56
|
+
- run: python -m pip install --upgrade pip build twine
|
|
57
|
+
- run: python -m build
|
|
58
|
+
- run: python -m twine check dist/*
|
|
59
|
+
- run: pip install dist/*.whl
|
|
60
|
+
- run: cortex --help
|
|
61
|
+
- run: cortex version
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
name: CodeQL
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
schedule:
|
|
9
|
+
- cron: "7 2 * * 5"
|
|
10
|
+
|
|
11
|
+
permissions:
|
|
12
|
+
security-events: write
|
|
13
|
+
packages: read
|
|
14
|
+
actions: read
|
|
15
|
+
contents: read
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
analyze:
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
timeout-minutes: 30
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
23
|
+
with:
|
|
24
|
+
persist-credentials: false
|
|
25
|
+
- uses: github/codeql-action/init@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4
|
|
26
|
+
with:
|
|
27
|
+
languages: python
|
|
28
|
+
queries: security-extended
|
|
29
|
+
- uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4
|
|
30
|
+
with:
|
|
31
|
+
category: /language:python
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
name: Docker
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
push:
|
|
6
|
+
branches: [main]
|
|
7
|
+
paths:
|
|
8
|
+
- "Dockerfile"
|
|
9
|
+
- "compose.yaml"
|
|
10
|
+
- ".dockerignore"
|
|
11
|
+
- "pyproject.toml"
|
|
12
|
+
- "src/**"
|
|
13
|
+
- ".github/workflows/docker.yml"
|
|
14
|
+
pull_request:
|
|
15
|
+
paths:
|
|
16
|
+
- "Dockerfile"
|
|
17
|
+
- "compose.yaml"
|
|
18
|
+
- ".dockerignore"
|
|
19
|
+
- "pyproject.toml"
|
|
20
|
+
- "src/**"
|
|
21
|
+
- ".github/workflows/docker.yml"
|
|
22
|
+
|
|
23
|
+
permissions:
|
|
24
|
+
contents: read
|
|
25
|
+
|
|
26
|
+
jobs:
|
|
27
|
+
core-image:
|
|
28
|
+
runs-on: ubuntu-latest
|
|
29
|
+
timeout-minutes: 30
|
|
30
|
+
steps:
|
|
31
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
32
|
+
with:
|
|
33
|
+
persist-credentials: false
|
|
34
|
+
- uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
|
|
35
|
+
- name: Build core image
|
|
36
|
+
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
|
|
37
|
+
with:
|
|
38
|
+
context: .
|
|
39
|
+
target: core
|
|
40
|
+
load: true
|
|
41
|
+
tags: codecortex:test-core
|
|
42
|
+
cache-from: type=gha,scope=core
|
|
43
|
+
cache-to: type=gha,mode=max,scope=core
|
|
44
|
+
- name: CLI smoke
|
|
45
|
+
run: |
|
|
46
|
+
docker run --rm codecortex:test-core --help
|
|
47
|
+
docker run --rm codecortex:test-core version
|
|
48
|
+
- name: Runtime smoke
|
|
49
|
+
run: |
|
|
50
|
+
docker run --rm -v "$PWD/examples/demo_project:/workspace" --tmpfs /workspace/.codecortex:uid=10001,gid=10001 codecortex:test-core doctor --path /workspace
|
|
51
|
+
docker run --rm -v "$PWD/examples/demo_project:/workspace" --tmpfs /workspace/.codecortex:uid=10001,gid=10001 codecortex:test-core index --path /workspace
|
|
52
|
+
|
|
53
|
+
full-image:
|
|
54
|
+
runs-on: ubuntu-latest
|
|
55
|
+
timeout-minutes: 90
|
|
56
|
+
steps:
|
|
57
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
58
|
+
with:
|
|
59
|
+
persist-credentials: false
|
|
60
|
+
- uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3
|
|
61
|
+
- name: Build full image
|
|
62
|
+
uses: docker/build-push-action@10e90e3645eae34f1e60eeb005ba3a3d33f178e8 # v6
|
|
63
|
+
with:
|
|
64
|
+
context: .
|
|
65
|
+
target: full
|
|
66
|
+
load: true
|
|
67
|
+
tags: codecortex:test-full
|
|
68
|
+
cache-from: type=gha,scope=full
|
|
69
|
+
cache-to: type=gha,mode=max,scope=full
|
|
70
|
+
- name: Backend smoke
|
|
71
|
+
run: |
|
|
72
|
+
docker run --rm codecortex:test-full backend list
|
|
73
|
+
docker run --rm -v "$PWD/examples/demo_project:/workspace" --tmpfs /workspace/.codecortex:uid=10001,gid=10001 codecortex:test-full backend doctor --path /workspace
|
|
74
|
+
- name: MCP discovery smoke
|
|
75
|
+
run: |
|
|
76
|
+
printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' | docker run -i --rm -v "$PWD/examples/demo_project:/workspace" --tmpfs /workspace/.codecortex:uid=10001,gid=10001 codecortex:test-full mcp --path /workspace | tee /tmp/mcp.out
|
|
77
|
+
grep -q 'cortex_repository_map' /tmp/mcp.out
|
|
78
|
+
grep -q 'cortex_rename_symbol' /tmp/mcp.out
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
name: Docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
push:
|
|
6
|
+
branches: [main]
|
|
7
|
+
paths:
|
|
8
|
+
- "docs/**"
|
|
9
|
+
- "mkdocs.yml"
|
|
10
|
+
- ".github/workflows/docs.yml"
|
|
11
|
+
pull_request:
|
|
12
|
+
paths:
|
|
13
|
+
- "docs/**"
|
|
14
|
+
- "mkdocs.yml"
|
|
15
|
+
- ".github/workflows/docs.yml"
|
|
16
|
+
|
|
17
|
+
permissions:
|
|
18
|
+
contents: read
|
|
19
|
+
|
|
20
|
+
concurrency:
|
|
21
|
+
group: pages
|
|
22
|
+
cancel-in-progress: true
|
|
23
|
+
|
|
24
|
+
jobs:
|
|
25
|
+
build:
|
|
26
|
+
runs-on: ubuntu-latest
|
|
27
|
+
steps:
|
|
28
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
29
|
+
with:
|
|
30
|
+
persist-credentials: false
|
|
31
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
|
|
32
|
+
with:
|
|
33
|
+
python-version: "3.13"
|
|
34
|
+
cache: pip
|
|
35
|
+
- name: Install docs toolchain
|
|
36
|
+
run: pip install "mkdocs>=1.6,<2" "mkdocs-material>=9.6,<10"
|
|
37
|
+
- name: Build documentation
|
|
38
|
+
run: mkdocs build --strict
|
|
39
|
+
- name: Upload Pages artifact
|
|
40
|
+
if: github.event_name != 'pull_request'
|
|
41
|
+
uses: actions/upload-pages-artifact@7b1f4a764d45c48632c6b24a0339c27f5614fb0b # v4
|
|
42
|
+
with:
|
|
43
|
+
path: site
|
|
44
|
+
|
|
45
|
+
deploy:
|
|
46
|
+
if: github.event_name != 'pull_request'
|
|
47
|
+
needs: build
|
|
48
|
+
runs-on: ubuntu-latest
|
|
49
|
+
environment:
|
|
50
|
+
name: github-pages
|
|
51
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
52
|
+
permissions:
|
|
53
|
+
pages: write
|
|
54
|
+
id-token: write
|
|
55
|
+
steps:
|
|
56
|
+
- name: Deploy to GitHub Pages
|
|
57
|
+
id: deployment
|
|
58
|
+
uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
name: Live Agent E2E
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
schedule:
|
|
6
|
+
- cron: "13 6 * * 2"
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
live-agent:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
timeout-minutes: 45
|
|
15
|
+
strategy:
|
|
16
|
+
fail-fast: false
|
|
17
|
+
matrix:
|
|
18
|
+
include:
|
|
19
|
+
- agent: opencode
|
|
20
|
+
install: npm install -g opencode-ai
|
|
21
|
+
configure: cortex agents configure --target opencode
|
|
22
|
+
command: opencode run {prompt}
|
|
23
|
+
key_env: OPENAI_API_KEY
|
|
24
|
+
- agent: codex
|
|
25
|
+
install: npm install -g @openai/codex
|
|
26
|
+
configure: cortex agents configure --target codex
|
|
27
|
+
command: codex exec {prompt}
|
|
28
|
+
key_env: OPENAI_API_KEY
|
|
29
|
+
- agent: claude
|
|
30
|
+
install: npm install -g @anthropic-ai/claude-code
|
|
31
|
+
configure: cortex agents configure --target claude
|
|
32
|
+
command: claude -p {prompt}
|
|
33
|
+
key_env: ANTHROPIC_API_KEY
|
|
34
|
+
- agent: gemini
|
|
35
|
+
install: npm install -g @google/gemini-cli
|
|
36
|
+
configure: cortex agents configure --target gemini
|
|
37
|
+
command: gemini -p {prompt}
|
|
38
|
+
key_env: GEMINI_API_KEY
|
|
39
|
+
steps:
|
|
40
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
41
|
+
with:
|
|
42
|
+
persist-credentials: false
|
|
43
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
|
|
44
|
+
with:
|
|
45
|
+
python-version: "3.13"
|
|
46
|
+
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
|
47
|
+
with:
|
|
48
|
+
node-version: "22"
|
|
49
|
+
- run: pip install -e ".[dev]"
|
|
50
|
+
- run: cortex init .
|
|
51
|
+
- name: Install agent
|
|
52
|
+
run: ${{ matrix.install }}
|
|
53
|
+
- name: Verify agent binary and generate MCP config
|
|
54
|
+
run: |
|
|
55
|
+
${{ matrix.configure }}
|
|
56
|
+
command -v ${{ matrix.agent }} || true
|
|
57
|
+
- name: Run live MCP tool-use check
|
|
58
|
+
if: ${{ matrix.key_env == 'OPENAI_API_KEY' && secrets.OPENAI_API_KEY != '' || matrix.key_env == 'ANTHROPIC_API_KEY' && secrets.ANTHROPIC_API_KEY != '' || matrix.key_env == 'GEMINI_API_KEY' && secrets.GEMINI_API_KEY != '' }}
|
|
59
|
+
env:
|
|
60
|
+
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
|
61
|
+
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
62
|
+
GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
|
|
63
|
+
CODECORTEX_SOURCE_ROOT: ${{ github.workspace }}
|
|
64
|
+
run: python scripts/live_agent_e2e.py --agent "${{ matrix.agent }}" --command "${{ matrix.command }}"
|
|
65
|
+
- name: Record credential-gated skip
|
|
66
|
+
if: ${{ !(matrix.key_env == 'OPENAI_API_KEY' && secrets.OPENAI_API_KEY != '' || matrix.key_env == 'ANTHROPIC_API_KEY' && secrets.ANTHROPIC_API_KEY != '' || matrix.key_env == 'GEMINI_API_KEY' && secrets.GEMINI_API_KEY != '') }}
|
|
67
|
+
run: echo "${{ matrix.agent }} installed/configured; live model call skipped because its API secret is not configured." >> "$GITHUB_STEP_SUMMARY"
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
name: Native Parser Providers
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
push:
|
|
6
|
+
branches: [main]
|
|
7
|
+
paths:
|
|
8
|
+
- "src/codecortex/languages/**"
|
|
9
|
+
- "tests/test_native_parsers.py"
|
|
10
|
+
- "pyproject.toml"
|
|
11
|
+
- ".github/workflows/parser-providers.yml"
|
|
12
|
+
pull_request:
|
|
13
|
+
paths:
|
|
14
|
+
- "src/codecortex/languages/**"
|
|
15
|
+
- "tests/test_native_parsers.py"
|
|
16
|
+
- "pyproject.toml"
|
|
17
|
+
- ".github/workflows/parser-providers.yml"
|
|
18
|
+
|
|
19
|
+
permissions:
|
|
20
|
+
contents: read
|
|
21
|
+
|
|
22
|
+
jobs:
|
|
23
|
+
native-parsers:
|
|
24
|
+
strategy:
|
|
25
|
+
fail-fast: false
|
|
26
|
+
matrix:
|
|
27
|
+
python-version: ["3.11", "3.13"]
|
|
28
|
+
runs-on: ubuntu-latest
|
|
29
|
+
steps:
|
|
30
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
31
|
+
with:
|
|
32
|
+
persist-credentials: false
|
|
33
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
|
|
34
|
+
with:
|
|
35
|
+
python-version: ${{ matrix.python-version }}
|
|
36
|
+
cache: pip
|
|
37
|
+
- run: pip install -e ".[dev,parsers]"
|
|
38
|
+
- run: pytest -q tests/test_native_parsers.py tests/test_languages.py
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
name: Production Benchmark
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
push:
|
|
6
|
+
branches: [main]
|
|
7
|
+
paths:
|
|
8
|
+
- "benchmarks/production/**"
|
|
9
|
+
- "scripts/run_production_benchmark.py"
|
|
10
|
+
- "src/codecortex/evaluation/production.py"
|
|
11
|
+
- "src/codecortex/backends/**"
|
|
12
|
+
- ".github/workflows/production-benchmark.yml"
|
|
13
|
+
schedule:
|
|
14
|
+
- cron: "41 4 * * 0"
|
|
15
|
+
|
|
16
|
+
permissions:
|
|
17
|
+
contents: read
|
|
18
|
+
|
|
19
|
+
jobs:
|
|
20
|
+
production-benchmark:
|
|
21
|
+
runs-on: ubuntu-latest
|
|
22
|
+
timeout-minutes: 120
|
|
23
|
+
env:
|
|
24
|
+
CODECORTEX_SOURCE_ROOT: ${{ github.workspace }}
|
|
25
|
+
CODECORTEX_BACKENDS: builtin
|
|
26
|
+
steps:
|
|
27
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
|
|
28
|
+
with:
|
|
29
|
+
persist-credentials: false
|
|
30
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
|
|
31
|
+
with:
|
|
32
|
+
python-version: "3.13"
|
|
33
|
+
cache: pip
|
|
34
|
+
- name: Install tooling
|
|
35
|
+
run: |
|
|
36
|
+
python -m pip install --upgrade pip uv
|
|
37
|
+
pip install -e ".[dev]"
|
|
38
|
+
- name: Run benchmark matrix
|
|
39
|
+
run: python scripts/run_production_benchmark.py --output benchmark-results.json
|
|
40
|
+
- name: Publish benchmark summary
|
|
41
|
+
run: |
|
|
42
|
+
python - <<'PY' >> "$GITHUB_STEP_SUMMARY"
|
|
43
|
+
import json
|
|
44
|
+
p=json.load(open('benchmark-results.json', encoding='utf-8'))
|
|
45
|
+
print('# CodeCortex production benchmark')
|
|
46
|
+
print('| Scenario | Completed | Success | Avg ms | Avg est. tokens |')
|
|
47
|
+
print('|---|---:|---:|---:|---:|')
|
|
48
|
+
for name,row in p.get('summary',{}).items():
|
|
49
|
+
print(f"| {name} | {row.get('completed')} | {row.get('success_rate')} | {row.get('avg_wall_time_ms')} | {row.get('avg_estimated_context_tokens')} |")
|
|
50
|
+
PY
|
|
51
|
+
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
|
|
52
|
+
with:
|
|
53
|
+
name: codecortex-production-benchmark-${{ github.sha }}
|
|
54
|
+
path: benchmark-results.json
|
|
55
|
+
if-no-files-found: error
|
|
56
|
+
retention-days: 90
|