omneval-devloop 0.0.1__tar.gz → 0.0.2__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.
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/.github/workflows/build-agent-base-image.yml +5 -3
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/.github/workflows/ci.yml +1 -1
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/.github/workflows/publish-discord-bot-image.yml +1 -1
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/.github/workflows/publish-poller-image.yml +1 -1
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/.github/workflows/release.yml +1 -1
- omneval_devloop-0.0.2/PKG-INFO +11 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/agent-base/Dockerfile +13 -11
- omneval_devloop-0.0.2/images/agent-base/pyproject.toml +29 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/discord-bot/Dockerfile +1 -1
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/poller/Dockerfile +1 -1
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/temporal-worker/Dockerfile +11 -3
- omneval_devloop-0.0.2/images/temporal-worker/pyproject.toml +23 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/pyproject.toml +12 -6
- omneval_devloop-0.0.2/uv.lock +1154 -0
- omneval_devloop-0.0.1/PKG-INFO +0 -11
- omneval_devloop-0.0.1/uv.lock +0 -793
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/.github/workflows/build-image.yml +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/.github/workflows/publish-devloop-chart.yml +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/.github/workflows/publish-temporal-worker-image.yml +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/.gitignore +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/CODEOWNERS +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/CONTEXT.md +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/LICENSE +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/README.md +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/charts/devloop/Chart.yaml +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/charts/devloop/templates/NOTES.txt +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/charts/devloop/templates/_helpers.tpl +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/charts/devloop/templates/discord-bot-deployment.yaml +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/charts/devloop/templates/poller-deployment.yaml +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/charts/devloop/templates/temporal-worker-deployment.yaml +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/charts/devloop/templates/temporal-worker-service.yaml +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/charts/devloop/test-values.yaml +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/charts/devloop/values.yaml +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/docs/getting-started.md +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/docs/temporal-prerequisites.md +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/agent-base/entrypoint.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/agent-base/prompts/diagnosis.md +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/agent-base/prompts/implement.md +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/agent-base/prompts/merge.md +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/agent-base/prompts/plan.md +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/agent-base/prompts/review.md +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/agent-base/pytest.ini +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/agent-base/test_entrypoint.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/agent-base/test_human_question.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/agent-base/test_project_tests.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/agent-base/test_run_agent.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/discord-bot/activities.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/discord-bot/discord_client.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/discord-bot/main.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/discord-bot/pyproject.toml +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/discord-bot/pytest.ini +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/discord-bot/test_text_utils.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/discord-bot/test_thread_store.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/discord-bot/text_utils.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/discord-bot/thread_store.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/discord-bot/uv.lock +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/poller/poll.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/poller/pyproject.toml +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/poller/pytest.ini +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/poller/test_poll.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/images/poller/uv.lock +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/plan.md +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/src/devloop/__init__.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/src/devloop/cluster.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/src/devloop/dev_loop.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/src/devloop/dev_loop_logic.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/src/devloop/github_ops.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/src/devloop/k8s_jobs.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/src/devloop/projects.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/src/devloop/schedules.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/src/devloop/shared.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/src/devloop/summarization.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/src/devloop/summarize_activities.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/src/devloop/webhook.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/src/devloop/worker.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/src/devloop/workflows.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/tests/test_cluster.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/tests/test_dev_loop.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/tests/test_docs.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/tests/test_github_ops.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/tests/test_github_webhook.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/tests/test_k8s_jobs.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/tests/test_projects.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/tests/test_pure_logic.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/tests/test_stub_roundtrip.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/tests/test_summarization.py +0 -0
- {omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/tests/test_worker.py +0 -0
{omneval_devloop-0.0.1 → omneval_devloop-0.0.2}/.github/workflows/build-agent-base-image.yml
RENAMED
|
@@ -31,11 +31,13 @@ jobs:
|
|
|
31
31
|
- name: Install uv
|
|
32
32
|
uses: astral-sh/setup-uv@v5
|
|
33
33
|
with:
|
|
34
|
-
version: "0.
|
|
34
|
+
version: "0.11.18"
|
|
35
35
|
|
|
36
|
+
# Run from the repo root so uv uses the root project (local omneval-devloop),
|
|
37
|
+
# which provides devloop.shared that entrypoint.py imports — rather than the
|
|
38
|
+
# image's own pyproject.toml (whose heavy deps the mocked tests don't need).
|
|
36
39
|
- name: Run entrypoint tests
|
|
37
|
-
|
|
38
|
-
run: uv run --with pytest --with pytest-asyncio pytest -q
|
|
40
|
+
run: uv run --with pytest --with pytest-asyncio pytest images/agent-base -q
|
|
39
41
|
|
|
40
42
|
build_and_push:
|
|
41
43
|
name: Build and push agent-base to GHCR
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: omneval-devloop
|
|
3
|
+
Version: 0.0.2
|
|
4
|
+
License-File: LICENSE
|
|
5
|
+
Requires-Python: >=3.12
|
|
6
|
+
Requires-Dist: fastapi>=0.115.6
|
|
7
|
+
Requires-Dist: httpx>=0.28.1
|
|
8
|
+
Requires-Dist: kubernetes>=33.1
|
|
9
|
+
Requires-Dist: pyyaml>=6.0.2
|
|
10
|
+
Requires-Dist: temporalio>=1.27.2
|
|
11
|
+
Requires-Dist: uvicorn>=0.34.0
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
FROM python:3.12-slim
|
|
6
6
|
|
|
7
|
-
COPY --from=ghcr.io/astral-sh/uv:0.11.
|
|
7
|
+
COPY --from=ghcr.io/astral-sh/uv:0.11.18 /uv /uvx /bin/
|
|
8
8
|
|
|
9
9
|
ARG GH_VERSION=2.93.0
|
|
10
10
|
ARG KUBECTL_VERSION=1.34.1
|
|
@@ -45,21 +45,23 @@ RUN curl -fsSL --retry 5 --retry-delay 5 --max-time 300 \
|
|
|
45
45
|
"https://github.com/argoproj/argo-cd/releases/download/v${ARGOCD_VERSION}/argocd-linux-amd64" \
|
|
46
46
|
&& chmod +x /usr/local/bin/argocd
|
|
47
47
|
|
|
48
|
-
# Python
|
|
49
|
-
# omneval-devloop
|
|
50
|
-
#
|
|
51
|
-
# definition of the protocol.
|
|
48
|
+
# Runtime Python dependencies are declared in pyproject.toml (OpenHands agent
|
|
49
|
+
# runtime, OTLP tracing exporter, and omneval-devloop — the shared Agent Job
|
|
50
|
+
# protocol, devloop.shared). Installed --system; no first-party package is built.
|
|
52
51
|
#
|
|
53
52
|
# SDK_VERSION pins omneval-devloop to the exact release on PyPI. The release
|
|
54
53
|
# pipeline (release.yml) passes the tag version and only builds this image after
|
|
55
54
|
# the PyPI publish has landed, so the baked SDK always matches the image's semver
|
|
56
|
-
# tag. Left empty on continuous (main) builds, where the latest release is
|
|
55
|
+
# tag. Left empty on continuous (main) builds, where the latest release is used.
|
|
57
56
|
ARG SDK_VERSION=
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
57
|
+
COPY pyproject.toml /tmp/agent-base/pyproject.toml
|
|
58
|
+
RUN if [ -n "$SDK_VERSION" ]; then \
|
|
59
|
+
echo "omneval-devloop==$SDK_VERSION" > /tmp/sdk-constraint.txt; \
|
|
60
|
+
fi; \
|
|
61
|
+
UV_HTTP_TIMEOUT=300 uv pip install --system --no-cache \
|
|
62
|
+
${SDK_VERSION:+--constraint /tmp/sdk-constraint.txt} \
|
|
63
|
+
/tmp/agent-base \
|
|
64
|
+
&& rm -rf /tmp/agent-base /tmp/sdk-constraint.txt
|
|
63
65
|
|
|
64
66
|
# Agent Execution Job entrypoint (issues #18/#19). Project repos are cloned at
|
|
65
67
|
# runtime; this is the only application code baked into the image.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "devloop-agent-base"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
requires-python = ">=3.12"
|
|
5
|
+
# Runtime dependencies for the Agent Execution Job toolchain image:
|
|
6
|
+
# - openhands-ai: the agent runtime
|
|
7
|
+
# - opentelemetry-*: OTLP tracing export (omneval tracing)
|
|
8
|
+
# - omneval-devloop: the shared Agent Job protocol (devloop.shared); pinned to
|
|
9
|
+
# the released SDK at build time via the SDK_VERSION build arg (see Dockerfile)
|
|
10
|
+
dependencies = [
|
|
11
|
+
"openhands-ai==1.7.0",
|
|
12
|
+
"opentelemetry-sdk>=1.33.1",
|
|
13
|
+
"opentelemetry-exporter-otlp-proto-http>=1.33.1",
|
|
14
|
+
"omneval-devloop",
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
# The only first-party code (entrypoint.py, prompts/) is COPYed into the image
|
|
18
|
+
# separately, so the build must not auto-discover/package modules — an empty
|
|
19
|
+
# py-modules list makes `uv pip install .` resolve dependencies only.
|
|
20
|
+
[build-system]
|
|
21
|
+
requires = ["setuptools>=61"]
|
|
22
|
+
build-backend = "setuptools.build_meta"
|
|
23
|
+
|
|
24
|
+
[tool.setuptools]
|
|
25
|
+
py-modules = []
|
|
26
|
+
|
|
27
|
+
# uv project commands (uv run) install dependencies but do not build this app.
|
|
28
|
+
[tool.uv]
|
|
29
|
+
package = false
|
|
@@ -15,13 +15,21 @@
|
|
|
15
15
|
|
|
16
16
|
FROM python:3.12-slim
|
|
17
17
|
|
|
18
|
-
COPY --from=ghcr.io/astral-sh/uv:0.11.
|
|
18
|
+
COPY --from=ghcr.io/astral-sh/uv:0.11.18 /uv /uvx /bin/
|
|
19
19
|
|
|
20
20
|
WORKDIR /app
|
|
21
21
|
|
|
22
|
+
# Runtime dependencies (just omneval-devloop) are declared in pyproject.toml.
|
|
23
|
+
# SDK_VERSION pins omneval-devloop to the exact release when set (release builds);
|
|
24
|
+
# empty on continuous builds, which take the latest release.
|
|
22
25
|
ARG SDK_VERSION=
|
|
23
|
-
|
|
24
|
-
|
|
26
|
+
COPY pyproject.toml ./
|
|
27
|
+
RUN if [ -n "$SDK_VERSION" ]; then \
|
|
28
|
+
echo "omneval-devloop==$SDK_VERSION" > /tmp/sdk-constraint.txt; \
|
|
29
|
+
fi; \
|
|
30
|
+
UV_HTTP_TIMEOUT=300 uv pip install --system --no-cache \
|
|
31
|
+
${SDK_VERSION:+--constraint /tmp/sdk-constraint.txt} . \
|
|
32
|
+
&& rm -f /tmp/sdk-constraint.txt
|
|
25
33
|
|
|
26
34
|
# /healthz (Kubernetes probes) and the webhook receiver port.
|
|
27
35
|
EXPOSE 8080 8088
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "devloop-temporal-worker"
|
|
3
|
+
version = "0.1.0"
|
|
4
|
+
requires-python = ">=3.12"
|
|
5
|
+
# The reference Temporal Orchestration Worker installs only omneval-devloop, which
|
|
6
|
+
# brings the Dev Loop + Summarization workflows and their pinned clients. Pinned to
|
|
7
|
+
# the released SDK at build time via the SDK_VERSION build arg (see Dockerfile).
|
|
8
|
+
dependencies = [
|
|
9
|
+
"omneval-devloop",
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
# No first-party package in this image — it runs `python -m devloop.worker` from
|
|
13
|
+
# the installed SDK — so the build resolves dependencies only.
|
|
14
|
+
[build-system]
|
|
15
|
+
requires = ["setuptools>=61"]
|
|
16
|
+
build-backend = "setuptools.build_meta"
|
|
17
|
+
|
|
18
|
+
[tool.setuptools]
|
|
19
|
+
py-modules = []
|
|
20
|
+
|
|
21
|
+
# uv project commands (uv run) install dependencies but do not build this app.
|
|
22
|
+
[tool.uv]
|
|
23
|
+
package = false
|
|
@@ -2,13 +2,19 @@
|
|
|
2
2
|
name = "omneval-devloop"
|
|
3
3
|
dynamic = ["version"]
|
|
4
4
|
requires-python = ">=3.12"
|
|
5
|
+
# Floors, not exact pins: omneval-devloop is a library installed alongside other
|
|
6
|
+
# packages (e.g. openhands-ai in the agent-base image), so hard == pins cause
|
|
7
|
+
# resolution conflicts. kubernetes in particular must be >=33.1 to co-install with
|
|
8
|
+
# openhands-ai; the SDK only uses stable client surface
|
|
9
|
+
# (CoreV1Api/BatchV1Api/V1DeleteOptions). Applications that need reproducible
|
|
10
|
+
# builds pin exact versions via their own uv.lock.
|
|
5
11
|
dependencies = [
|
|
6
|
-
"temporalio
|
|
7
|
-
"pyyaml
|
|
8
|
-
"kubernetes
|
|
9
|
-
"httpx
|
|
10
|
-
"fastapi
|
|
11
|
-
"uvicorn
|
|
12
|
+
"temporalio>=1.27.2",
|
|
13
|
+
"pyyaml>=6.0.2",
|
|
14
|
+
"kubernetes>=33.1",
|
|
15
|
+
"httpx>=0.28.1",
|
|
16
|
+
"fastapi>=0.115.6",
|
|
17
|
+
"uvicorn>=0.34.0",
|
|
12
18
|
]
|
|
13
19
|
|
|
14
20
|
[dependency-groups]
|