Ugbot / Ugbot/Agentic-Streaming
Ports productization: bring the 17 ports to library quality
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 37
- Forks
- 2
- Avg merge
- 10h 46m
- Merged PRs (30d)
- 28
Description
All 17 ports are products, not reference material — so thinness is a gap to close.
Current state: 3 real cores — jagentic-core (7.5k LOC, 94 tests), ports/go (8.9k, 94 tests, go vet clean and all packages passing), ports/pyagentic (6k, 93 tests, zero runtime deps, imports clean on 3.9–3.14) — plus 14 thin adapters, most written in 1–3 commits on 2026-06-14/15 and never revisited.
Gaps:
- 9 port directories have no build file at all (~2,200 LOC). Every consumer reaches the core via
sys.path.insert, five of those in library code. springandquarkushave zero tests.quarkushas noquarkus-maven-plugin, so it cannot even be packaged.ports/{celery,dask,ray,faust,airflow,nats}shadow the PyPI packages they port to as implicit namespace packages — verified: fromports/,import celeryresolves to the port directory. This is the root cause of every hand-rolled "engine not installed" guard in the tree, and the README tells readers to run tests from exactly that directory.- Proven runtime bugs:
airflowraisesNameErroron an undefined helper and imports an API removed in Airflow 3;celerykeys its single-writer queue withhash(), which is per-process salted, so the same conversation reaches different workers — breaking the exact invariant the port demonstrates;springdouble-appends every message because it appends around a core call that already appends;gos YAML router iterates a map, so the same spec routes nondeterministically and differently from Java/Python. Eventfield order diverges across the three cores — Pythons second positional arg istext, Java/Gos isuserId. Porting a call site silently swaps them.- Only 3 of 12 engines are selectable
backend:values, so the "same spec on any backend" claim needs narrowing or widening.
Roadmap epic. Detailed findings, file:line citations and sub-tasks live in the AI-grind tracker (project AGS), which is the source of truth for this work. Local dev — build, test, tracking, profiling — is managed with AI-grind.
Tracked as AGS-17 in the devtools-mcp tracker.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the detailed findings and sub-tasks for AGS-17 in the AI-grind tracker, then inspect the affected directories under ports/ and the README. Use the existing core tests and package/build checks as a baseline. Done requires the 17 ports to have defined library-quality packaging, tests, and consistent behavior, with the scope of the backend claim resolved.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, java, python, spring
- Domain
- backend, build-system, devtools, testing
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100