agentic-dev-loop 0.13.0__py3-none-any.whl → 0.14.2__py3-none-any.whl
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.
- agentic_dev_loop/engine/onboarding/templates/trigger-agentic-dev-loop.sh +8 -0
- agentic_dev_loop/viz/__init__.py +10 -7
- agentic_dev_loop/viz/__main__.py +28 -13
- agentic_dev_loop/viz/page.py +4 -2
- agentic_dev_loop/viz/runs_view.py +214 -0
- agentic_dev_loop/viz/server.py +109 -18
- {agentic_dev_loop-0.13.0.dist-info → agentic_dev_loop-0.14.2.dist-info}/METADATA +10 -3
- {agentic_dev_loop-0.13.0.dist-info → agentic_dev_loop-0.14.2.dist-info}/RECORD +12 -11
- {agentic_dev_loop-0.13.0.dist-info → agentic_dev_loop-0.14.2.dist-info}/WHEEL +0 -0
- {agentic_dev_loop-0.13.0.dist-info → agentic_dev_loop-0.14.2.dist-info}/entry_points.txt +0 -0
- {agentic_dev_loop-0.13.0.dist-info → agentic_dev_loop-0.14.2.dist-info}/licenses/LICENSE +0 -0
- {agentic_dev_loop-0.13.0.dist-info → agentic_dev_loop-0.14.2.dist-info}/top_level.txt +0 -0
|
@@ -37,6 +37,14 @@ if ! agentic-dev-loop doctor --fast; then
|
|
|
37
37
|
echo "error: doctor --fast still fails after upgrading the engine" >&2
|
|
38
38
|
exit 1
|
|
39
39
|
fi
|
|
40
|
+
# The upgrade rewrites the project pin; commit the bump (only when dirty) so
|
|
41
|
+
# the tooling integrity check passes on the next run instead of failing on
|
|
42
|
+
# an uncommitted pin. Skipped when git is unavailable or the pin is clean.
|
|
43
|
+
if git rev-parse --is-inside-work-tree >/dev/null 2>&1 \
|
|
44
|
+
&& [[ -n "$(git status --porcelain -- agentic-dev-loop/.engine-version)" ]]; then
|
|
45
|
+
git add agentic-dev-loop/.engine-version
|
|
46
|
+
git commit -m "Upgrade engine"
|
|
47
|
+
fi
|
|
40
48
|
fi
|
|
41
49
|
|
|
42
50
|
# Document loader selection - exactly one of:
|
agentic_dev_loop/viz/__init__.py
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
"""The live-graph visualiser."""
|
|
1
|
+
"""The live-graph visualiser and the historical runs view."""
|
|
2
2
|
|
|
3
3
|
import time # noqa: F401 - re-exported so tests can pin NodeWatch's clock
|
|
4
4
|
|
|
5
|
-
from .
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
from . import runs_view
|
|
6
|
+
from .server import (MAX_LINE, PAGE, RUNS_PAGE, ConsoleCapture,
|
|
7
|
+
HeartbeatThread, NodeWatch, VizBus, _ReuseSafeServer,
|
|
8
|
+
_Tee, _handler_class, serve_history, serve_viz,
|
|
9
|
+
topology_graph, topology_mermaid, translate)
|
|
8
10
|
|
|
9
11
|
__all__ = [
|
|
10
|
-
"MAX_LINE", "PAGE", "
|
|
11
|
-
"VizBus", "_ReuseSafeServer", "_Tee", "_handler_class",
|
|
12
|
-
"
|
|
12
|
+
"MAX_LINE", "PAGE", "RUNS_PAGE", "ConsoleCapture", "HeartbeatThread",
|
|
13
|
+
"NodeWatch", "VizBus", "_ReuseSafeServer", "_Tee", "_handler_class",
|
|
14
|
+
"runs_view", "serve_history", "serve_viz", "topology_graph",
|
|
15
|
+
"topology_mermaid", "translate",
|
|
13
16
|
]
|
agentic_dev_loop/viz/__main__.py
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
"""Standalone viz launcher
|
|
2
|
-
|
|
1
|
+
"""Standalone viz launcher.
|
|
2
|
+
|
|
3
|
+
``python -m agentic_dev_loop.viz --pipeline <pipeline.yaml>`` serves the
|
|
4
|
+
live graph on localhost; ``--history`` serves the historical runs view with
|
|
5
|
+
no pipeline file.
|
|
6
|
+
"""
|
|
3
7
|
|
|
4
8
|
from __future__ import annotations
|
|
5
9
|
|
|
@@ -8,29 +12,40 @@ import sys
|
|
|
8
12
|
|
|
9
13
|
from agentic_dev_loop.core.config import load_config
|
|
10
14
|
|
|
11
|
-
from . import VizBus, serve_viz, topology_graph
|
|
15
|
+
from . import VizBus, serve_history, serve_viz, topology_graph
|
|
12
16
|
|
|
13
17
|
|
|
14
18
|
def main(argv: list[str] | None = None) -> int:
|
|
15
19
|
parser = argparse.ArgumentParser(
|
|
16
20
|
prog="agentic-dev-loop-viz",
|
|
17
|
-
description="Serve the agentic-dev-loop live graph
|
|
18
|
-
parser.add_argument("--pipeline",
|
|
19
|
-
help="pipeline YAML for the flowchart topology"
|
|
21
|
+
description="Serve the agentic-dev-loop live graph or run history.")
|
|
22
|
+
parser.add_argument("--pipeline",
|
|
23
|
+
help="pipeline YAML for the flowchart topology "
|
|
24
|
+
"(required unless --history)")
|
|
25
|
+
parser.add_argument("--history", action="store_true",
|
|
26
|
+
help="serve the historical runs view without a "
|
|
27
|
+
"pipeline file")
|
|
20
28
|
parser.add_argument("--port", type=int, default=8321,
|
|
21
29
|
help="preferred port (default 8321; free-port "
|
|
22
30
|
"fallback when busy)")
|
|
23
31
|
args = parser.parse_args(argv)
|
|
24
32
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
33
|
+
if args.history:
|
|
34
|
+
httpd, _thread = serve_history(args.port)
|
|
35
|
+
label = "Run history viz"
|
|
36
|
+
else:
|
|
37
|
+
pipeline = args.pipeline or "pipeline.yaml"
|
|
38
|
+
cfg = load_config(pipeline)
|
|
39
|
+
topology = topology_graph(cfg)
|
|
40
|
+
bus = VizBus()
|
|
41
|
+
httpd, _thread = serve_viz(bus, topology["mermaid"], cfg.name,
|
|
42
|
+
args.port, topology["nodes"],
|
|
43
|
+
topology["flow"], topology["edges"])
|
|
44
|
+
label = "Live graph viz"
|
|
45
|
+
|
|
31
46
|
bound = httpd.server_address[1]
|
|
32
47
|
url = f"http://127.0.0.1:{bound}"
|
|
33
|
-
print(f"
|
|
48
|
+
print(f"{label}: {url}", flush=True)
|
|
34
49
|
if args.port and bound != args.port:
|
|
35
50
|
print(f"viz port {args.port} busy - serving on {url}", flush=True)
|
|
36
51
|
try:
|