Make Pitot Workbench runnable from a clean repository - #133
Merged
Conversation
Harden the polyglot SDK so a first-time user can go from a clean repo to a real allow/deny decision without hand-holding, across all four first-class languages (Python, TypeScript, Go, Rust). - pitot init: validate --role/--language, detect language, prompt when interactive, refuse to clobber without --force, and generate complete runnable projects (source + package manifest + .pitot.yaml). - pitot dev: split --exec into program+args (and support -- CMD ARGS), validate --host, use a unique temp runtime path with cleanup, wait for runtime readiness, reap the server on exit, and print a decision receipt via a new runtime Decision observer. - SDK correctness: serialize the TypeScript runner (ordered responses); flush and surface stdin errors in the Rust runner; add the Rust crate Cargo.toml. - Packaging: make TS main/types/tsconfig/files consistent (dist/); bump Python requires-python to >=3.10 to match generated PEP 604 syntax. - Conformance: rewrite test_runners.py as a layout-agnostic harness covering all four languages x Consumer+Controller x ordered/malformed/deny/ stdout-clean, gating toolchains and self-cleaning fixtures; drop dead standalone fixtures. - README: lead with pitot init -> pitot dev -> decision -> second-agent swap; demote the manual runtime flow to Advanced. - Regenerate pitot-distribution/UPSTREAM.json.
Pitot coding-agent E2EIntelligence Flow is the verification source; Pitot's public README carries the latest
Runtime capabilities
Source commit: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Hardens the Pitot polyglot SDK so a first-time user can go from a clean repository to one real allow/deny decision without hand-holding — the v1 definition of done:
clean repo → pitot init → detected/selected language → runnable project → pitot dev → one real allow/deny decision → same project works with a second agent.Scoped to
labs/15-pitot/. No new languages or features added.What changed
pitot init— runnable, safe, language-aware--role/--language; detects language from existing manifests; prompts interactively when needed; errors clearly when non-interactive and undetectable.--force.go.mod/Cargo.toml/package.json+tsconfig.json/requirements.txt+pyproject.toml) +.pitot.yaml— so every language runs as-is.pitot dev— hardened--execinto program+args (or-- CMD ARGS), validates--host, uses a unique temp runtime path with cleanup, waits for runtime readiness before launching, reaps the server on exit.Decisionobserver prints a terminal receipt ([ALLOW]/[DENY] kind (id) — message).SDK correctness & packaging
package.json/tsconfigentry points made consistent (dist/).Cargo.toml.requires-pythonbumped to>=3.10to match generated PEP 604 syntax.Conformance suite
cargo, TS/Go gated on their toolchains, self-cleaning fixtures. Dropped four dead standalone fixtures.README — leads with
pitot init→pitot dev→ decision → second-agent swap; manualpitot runflow demoted to "Advanced".Projection —
pitot-distribution/UPSTREAM.jsonregenerated.Verification
go build ./... && go vet ./... && go test ./...— passpython3 -m unittest test_runners— 12 pass, 4 Rust skipped (nocargoin CI env), fixtures cleanedbuild_pitot.py --write(107 files) then--check— no drift