Ugbot / Ugbot/Agentic-Streaming

Ports productization: bring the 17 ports to library quality

Open
#9 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
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 coresjagentic-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.
  • spring and quarkus have zero tests. quarkus has no quarkus-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: from ports/, import celery resolves 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: airflow raises NameError on an undefined helper and imports an API removed in Airflow 3; celery keys its single-writer queue with hash(), which is per-process salted, so the same conversation reaches different workers — breaking the exact invariant the port demonstrates; spring double-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.
  • Event field order diverges across the three cores — Pythons second positional arg is text, Java/Gos is userId. 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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.