route66 0.1.1__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.
route66/__init__.py ADDED
@@ -0,0 +1,24 @@
1
+ """route66 - Python SDK.
2
+
3
+ Public entry point for the route66 package. Version is sourced from the
4
+ installed distribution metadata so that provider-specific builds report
5
+ the version that was actually published.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ from importlib import metadata as _metadata
11
+
12
+ from ._version import __version__ as _stamped_version
13
+
14
+ try:
15
+ __version__ = _metadata.version("route66")
16
+ except _metadata.PackageNotFoundError: # pragma: no cover - local checkout
17
+ __version__ = _stamped_version
18
+
19
+ __all__ = ["__version__", "hello"]
20
+
21
+
22
+ def hello(name: str = "world") -> str:
23
+ """Return a friendly greeting. Placeholder SDK surface."""
24
+ return f"Hello from route66, {name}!"
route66/__main__.py ADDED
@@ -0,0 +1,13 @@
1
+ """Allow `python -m route66`."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from . import hello
6
+
7
+
8
+ def main() -> None:
9
+ print(hello())
10
+
11
+
12
+ if __name__ == "__main__":
13
+ main()
route66/_version.py ADDED
@@ -0,0 +1,3 @@
1
+ """Version stamp for route66. Managed by ci/scripts/bump_version.py."""
2
+
3
+ __version__ = "0.1.1"
route66/py.typed ADDED
@@ -0,0 +1 @@
1
+ # Marker file so type checkers (mypy, pyright) treat route66 as a typed package.
@@ -0,0 +1,104 @@
1
+ Metadata-Version: 2.4
2
+ Name: route66
3
+ Version: 0.1.1
4
+ Summary: route66 Python SDK
5
+ Author: route66 maintainers
6
+ License: Proprietary
7
+ Keywords: route66,sdk
8
+ Classifier: Operating System :: OS Independent
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Programming Language :: Python :: 3 :: Only
11
+ Classifier: Typing :: Typed
12
+ Requires-Python: >=3.10
13
+ Provides-Extra: dev
14
+ Requires-Dist: build>=1.2; extra == 'dev'
15
+ Requires-Dist: pytest>=8.0; extra == 'dev'
16
+ Requires-Dist: ruff>=0.5; extra == 'dev'
17
+ Requires-Dist: twine>=5.1; extra == 'dev'
18
+ Provides-Extra: semantic
19
+ Requires-Dist: sentence-transformers>=3.0; extra == 'semantic'
20
+ Description-Content-Type: text/markdown
21
+
22
+ # route66
23
+
24
+ **Intelligent Tool Router for LLM Agents** — a catalog-in library that,
25
+ given a query and a large tool catalog, returns only the relevant tools,
26
+ deduplicated, in an ordered execution plan, with policy-aware defaults.
27
+
28
+ Built against the **`router-testkit`** hackathon grading contract
29
+ (single-tool routing, ordered multi-tool plans, near-duplicate
30
+ resolution, capability-based fallback widening, deprecation policy,
31
+ out-of-scope refusal, and clarify-on-vague-destructive).
32
+
33
+ ## Layout
34
+
35
+ ```
36
+ route66/
37
+ ├── tool_router/ # The POC library (facade + retrievers + dedup)
38
+ ├── testkit_adapter.py # Bridges tool_router to the harness contract
39
+ ├── demo.py # Toy 60-tool catalog demo of the POC
40
+ ├── metrics.py # Recall/precision/token-savings eval on the toy set
41
+ ├── router-testkit/ # Hackathon input kit — DO NOT MODIFY
42
+ │ ├── catalog/ # 64 mock tools · 13 clusters · dup/version metadata
43
+ │ ├── test_cases/ # 29 scored cases across 11 categories
44
+ │ ├── registry_guardrail/# Intake validator fixtures
45
+ │ └── harness/ # run_benchmark.py (scorer) + baseline_router.py
46
+ ├── bench/ # Additional benchmarks (baseline, mutations, guardrail)
47
+ ├── specs/ # Spec-driven-development plan (SPEC-001..011)
48
+ ├── docs/ # PRDs and the hackathon problem statement
49
+ └── tests/ # Unit tests (populated as specs are executed)
50
+ ```
51
+
52
+ ## Baseline
53
+
54
+ | Router | Cases passed | Token savings |
55
+ |---------------------------------------|--------------|----------------|
56
+ | Testkit reference `baseline_router` | 7 / 29 (24%) | 94% |
57
+ | `tool_router` (this repo, current) | 5 / 29 (17%) | 90% |
58
+
59
+ The gap is deliberate and mapped in `specs/`. See
60
+ [`specs/README.md`](./specs/README.md) for the priority-ordered plan
61
+ (P0 → P1 → P2) with acceptance criteria pinned to specific `TC-*`
62
+ cases. Target after P0: ≥ 20/29. After P1: ≥ 24/29.
63
+
64
+ ## Quick start
65
+
66
+ ```bash
67
+ # Install (uv-managed)
68
+ uv sync
69
+
70
+ # Score the reference baseline
71
+ cd router-testkit/harness
72
+ python run_benchmark.py --verbose
73
+
74
+ # Score this project's router
75
+ python run_benchmark.py --router testkit_adapter:MyRouter --verbose
76
+ ```
77
+
78
+ The harness has no third-party dependencies; standard-library only.
79
+ The router itself can run on `HashingEmbedder` (zero deps) or opt-in
80
+ `SentenceTransformerEmbedder` via `uv sync --extra semantic`.
81
+
82
+ ## Where to read next
83
+
84
+ 1. **`specs/README.md`** — the executable plan. Every spec is pickable
85
+ independently and has acceptance criteria tied to testkit case IDs.
86
+ 2. **`router-testkit/README.md`** — the grading contract (authoritative).
87
+ 3. **`tool_router/README.md`** (below `tool_router/`) — the current POC
88
+ library docs. Will be reframed in SPEC-011.
89
+ 4. **`docs/hackathon-definition.md`** — the problem statement.
90
+ 5. **`docs/PRD.md`** — the initial PRD.
91
+
92
+ ## Toolchain
93
+
94
+ - Python ≥ 3.14 (pinned in `.python-version`, managed by uv)
95
+ - Ruff for lint + format
96
+ - Pytest for unit tests (see `pyproject.toml`'s `[dev]` extra)
97
+
98
+ ## Dev
99
+
100
+ ```bash
101
+ uv run ruff check .
102
+ uv run ruff format .
103
+ uv run pytest
104
+ ```
@@ -0,0 +1,8 @@
1
+ route66/__init__.py,sha256=lnQSL6BFkta02Q5XZHnqLvFC1qyjFQBVJpbnX4LwI60,697
2
+ route66/__main__.py,sha256=UmBDpGVu6o_fXUl7wK8QGJmXSJ9bqiLXhaqk7bV2NkY,171
3
+ route66/_version.py,sha256=h1_lIE1uWQTVNUpWnfpDD7zwv10idyHIrZPiOI4rV5c,95
4
+ route66/py.typed,sha256=aW-bxALOYSoObmrYNqB2CEtE6Y_iLP1d3ruzPOYxK7c,81
5
+ route66-0.1.1.dist-info/METADATA,sha256=X88ehc-pBodE32aoQKMsUWtkmULEy2onUGPDl_T8Sxc,3904
6
+ route66-0.1.1.dist-info/WHEEL,sha256=lCkmxWfQsSc9CfIClYeavTdQeEX2toPqufh9gI35EQA,87
7
+ route66-0.1.1.dist-info/entry_points.txt,sha256=2eVewj_12O_kZIS-zlo6upa4ud_zRFb-Itdi5Yr38BU,50
8
+ route66-0.1.1.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.31.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ route66 = route66.__main__:main