Skip to content

Public-release hygiene: LICENSE, community health files, CI - #10

Merged
vinayr1973-sudo merged 15 commits into
pi-greenfieldfrom
chore/public-release-hygiene
Jul 2, 2026
Merged

Public-release hygiene: LICENSE, community health files, CI#10
vinayr1973-sudo merged 15 commits into
pi-greenfieldfrom
chore/public-release-hygiene

Conversation

@vinayr1973-sudo

@vinayr1973-sudo vinayr1973-sudo commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Prepares oriro-ai/cli for public release. Additive and non-breaking — no changes to src/, dist/, package.json, or the shipped skill set.

What's added

  • LICENSE (MIT) — the repo declared MIT in the README but had no LICENSE file (npm + GitHub both expect one). npm force-packs LICENSE, so scripts/prepublish-check.mjs now whitelists it.
  • CHANGELOG.md — 0.1.1 → 0.1.8, reconstructed from the git log.
  • SECURITY.md — private vulnerability reporting (GitHub advisories + security@oriro.ai); documents the Guardian/Scriber posture.
  • CONTRIBUTING.md — local setup, the typecheck → build → unit → smoke gate, and the ATTRIBUTION provenance rule.
  • CODE_OF_CONDUCT.md — Contributor Covenant 2.1.
  • .github/ — CI workflow (typecheck → build → unit → smoke on Node 20 & 22) plus issue and PR templates.

What's fixed (docs only)

  • PUBLISHING.md — corrected the verify-step version (0.1.00.1.8).

Verification

  • npm run build ✅ · npm run smoke ✅ 21/21 · npm run test:unit
  • prepublish tarball whitelist ✅ (LICENSE now allowed)

Not in this PR (flagged separately for your call)

  • README bottom-half has claims that contradict its own roadmap (e.g. "two-way voice loop LIVE" vs. roadmap "not in this release").
  • PUBLISHING.md references a private: true publish gate that isn't in package.json.
  • The "Latest" GitHub release is v2026.6.8-test.1 (old pre-Pi pre-release).
  • Local working tree has 29 uncommitted skill dirs (would inflate the package past the curated 323 if published from this tree).

🤖 Generated with Claude Code


View with Codesmith Autofix with Codesmith
Need help on this PR? Tag /codesmith with what you need. Autofix is disabled.

Vinay Sharma and others added 15 commits July 1, 2026 17:42
Prepares the repo for public release without touching any working code:

- LICENSE (MIT) — matches the license already declared in README; npm
  force-packs it, so scripts/prepublish-check.mjs whitelist now allows it.
- CHANGELOG.md — 0.1.1 → 0.1.8 history from the git log.
- SECURITY.md — private vuln reporting (GitHub advisories + security@oriro.ai).
- CONTRIBUTING.md — setup, the build/typecheck/unit/smoke gate, ATTRIBUTION rule.
- CODE_OF_CONDUCT.md — Contributor Covenant 2.1.
- .github/ — CI (typecheck→build→unit→smoke on Node 20/22) + issue/PR templates.
- PUBLISHING.md — corrected the verify-step version (0.1.0 → 0.1.8).

No changes to src/, dist/, package.json, or the shipped skill set. Build,
smoke (21/21), and unit tests all green; tarball whitelist passes with LICENSE.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…-styling) → 327 bundled

Privacy-scrubbed batch fold from the local skill library; 25 candidates were
already bundled (nested Step-5 pack) and 15 evaluated-private skills excluded.
ATTRIBUTION.md records the full provenance. Smoke gate updated 323→327.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…shots, agentic

The Head module was rich in source but only `inspect_site` (structural fetch) was
reachable; tsup tree-shook the rest out of dist/cli.js. This wires all of it in:

- New src/head/run.ts — shared orchestrator (inspect+visual HTML, url→code, url→spec,
  screenshots→flow HTML, video→code) used by BOTH the agent tools and the CLI.
- src/head/pi-tool.ts — registers url_to_code, url_to_spec, capture_site, video_to_code
  alongside inspect_site, so the chat agent can do the whole Head on its own judgment.
- New `oriro head` command (src/commands/head.ts) — <url> [competitors] with
  --code/--spec/--shots/--html/--video/--goal/--stack/--out; natural-language parse via
  detectInspectIntent; no-arg prints usage (exit 0). Registered in cli.ts.
- src/head/model.ts — buildHeadWatchModel/headVideoModels for the (experimental) video path.
- tsup: splitting:false so the lazy ./screenshot-flow inlines into the single shipped
  cli.js instead of a sibling chunk the files[] whitelist would never publish.
- README: Head section reconciled to the shipped reality (removed the false "voice loop
  LIVE" claim; documented `oriro head` + the peer-gated code/spec/shots).
- smoke: `oriro head` + `oriro head --help` assertions.

All 14 previously-dropped Head symbols now ship in dist/cli.js. Playwright stays an
external dynamic peer (graceful "install chromium" message when absent). typecheck clean,
smoke 23/23, unit green, bundle clean (no spike/openclaw), single shebang. Verified live:
structural read + gap analysis + visual HTML against example.com, NL parse, graceful --code.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…voice STT

Brings the CLI up to the ORIRO-CLI vision doc. All additive, graceful, single-file.

MCP setup (#2) + Guardian vetting (#3):
- `oriro connectors setup` — guided (interactive or flag-driven) custom MCP server
  setup, no JSON. Builds the ServerConfig, runs it through Guardian's vetMcpServer
  BEFORE saving: blocks a malicious launch (curl|sh, obfuscated loader, env→URL
  exfil), asks-to-trust a new clean server, allows an already-trusted one, and
  remembers trust so it never re-asks. SSRF guard on URL servers. New custom store
  (connectors/custom.ts) + `connectors custom` / `connectors forget`.
- Wires the previously-built-but-unreachable guardian/mcp.ts::vetMcpServer.

Thinking-cycle (#4):
- Alt+Shift+T toggles a plan-first Thinking mode in the TUI (footer indicator +
  a reasoning primer prepended to the turn — a real behaviour change, not cosmetic).

Voice STT (#1):
- On-device Whisper speech-to-text via the @huggingface/transformers peer (mirrors
  the NLLB pattern), ffmpeg-decoded audio, translate→English path. `oriro voice
  [file]` transcribes an audio file or the mic; `/voice` speaks a turn in chat.
  Registers into the existing avatar voice seam (registerVoiceListen), completing
  the two-way loop structurally. Experimental + peer-gated: every path degrades
  gracefully (clear message, never breaks the CLI).

README reconciled to the shipped reality (MCP setup, thinking-cycle, voice STT now
documented as shipped; the fully-hands-free voice loop framed as the remaining polish).

tsup stays single-file (splitting:false). typecheck clean, smoke 28/28 (incl. a
Guardian-blocks-malicious-MCP assertion), unit green, bundle clean, single shebang.
Verified live: MCP block/ask/trust/remember 5/5, voice graceful paths.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…s, routers, Gauss/Avila V2.4

Fills the gaps between the intended onboarding spec and what shipped. All steps are
skip-friendly and persist a settled marker; keyless-first, nothing forced, no breakage.

- Localized "Welcome to ORIRO-CLI" in the chosen language (was hardcoded English) — steps.ts welcomeIn().
- Skills step: shows the bundled library (count + CORE/TAIL), Enter to keep; + /skill in chat.
- Connectors step: add a slug or skip; + /connector in chat.
- Router step now lists the free keyless pool that races by default (Pollinations hosted·active,
  Ollama on-device) before offering BYOK — validated live (pollinations responds).
- ORIRO Gauss + Avila (V2.4) preview step: "completing training / coming soon" — will join the
  router race, run on-device, and learn nightly (opt-in). Honest placeholder while training finishes.
- Scriber consent moved to after the models step, per the intended ordering.

Order: banner → language → Guardian+Head → avatar → Welcome → Skills → Connectors → Routers/BYOK
→ Gauss+Avila V2.4 → Scriber → ready. typecheck/build/smoke green; verified end-to-end by a live
first-run capture in a real pseudo-terminal.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…er step

HF Inference Router (https://router.huggingface.co/v1) is OpenAI-compatible; the user
pastes their OWN free HF token (never ORIRO's) — it's live-validated and joins the pool.
Placed in the first-8 offered set so it shows during router onboarding. Keyless floor
(Pollinations + Ollama) stays the zero-config default; this is purely an added BYOK lane.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…eering skill

The skills/ folder ships to npm and is public on GitHub. Removed two lines that leaked
ORIRO-internal detail:
- eval pass thresholds "≥ 0.88 (Gauss) / ≥ 0.86 (Avila)" -> generic "≥ 0.85 (set per model and size)"
- Modelfile SYSTEM "You are Gauss, ORIRO's technical AI model." -> generic assistant prompt

Avila is pre-launch and the thresholds are internal QA numbers; neither should be public.
Full audit of all 326 skills found no personal data (name/address/email/paths/credentials)
and no other business leaks; TranzGuard/TRIRO/personal skills are not bundled at all.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Two bugs from a real keyless chat session:

1) Router ad leaked into output. Pollinations appends a "🌸 Ad 🌸 / Powered by
   Pollinations.AI / Support our mission (kofi link)" footer to free responses — it
   reached the user, breaking the invisible-router promise. Added stripProviderNoise()
   (identity/filter.ts) + scrubOutput() = identity + ad strip, wired into the Mux final
   message, both REPLs' final render, and the channels host. Neutral transparency is
   unaffected; third-party ads/donation links are removed.

2) Phantom file creation. Weak keyless routers narrate tool use ("Website files have
   been created ✅") without emitting a real write_file call, so nothing lands on disk.
   New verify-actions.ts::phantomFileWarning() truth-checks creation claims against the
   filesystem and appends an honest warning (pointing at BYOK) only when a claimed file
   is genuinely absent — no false positives on real writes or mere suggestions.

typecheck/build/unit/smoke green. Ad strip + phantom guard verified against the exact
leaked chat text.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Skills count moved to 327; smoke hardcoded "326 loaded" and failed CI. Assert only that
skills load (bundle path resolves) — the exact count is enforced by the prepublish gate.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Users can now add their OWN skills — no rebuild, no republish:
- New ~/.oriro/skills user dir (ORIRO_USER_SKILLS_DIR) loaded ALONGSIDE the bundled library,
  for both the `oriro skills` view and the live agent session (assemble additionalSkillPaths).
- `oriro skills add <folder-with-SKILL.md | SKILL.md>` copies a skill in; `oriro skills remove
  <name>` drops it; `skills list` shows the live (dynamic) total + where to add your own.

Counts are dynamic end to end:
- smoke asserts skills "loaded" (not a fixed number).
- prepublish gate now compares on-disk skills to the COMMITTED git count (auto-adjusts as the
  curated library changes; still blocks untracked cruft / missing skills) — no magic number.

Connectors (add/setup/custom/forget) and routers (add/--key BYOK/--url custom) were already
dynamic. typecheck/build/smoke green; add/list/remove verified end to end.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The bundled undici 8.5 (via @earendil-works/pi-coding-agent) calls markAsUncloneable,
added in Node 20.18.1 / 22.12 — CI's generic '20'/'22' resolved older patches and crashed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Bundles all of: LICENSE + community files, ORIRO Head (url->code/spec/screenshots),
voice STT, MCP setup + Guardian vetting, thinking-cycle, full first-run onboarding
(welcome/skills/connectors/routers/Gauss+Avila V2.4), HF BYOK router, user-extensible
skills, chat fixes (router-ad strip + phantom-file guard), and the skill privacy scrub.

Node engine raised to >=22: the bundled undici 8.5 needs markAsUncloneable (Node 22+).
CI green on Node 22.12 and 24.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@vinayr1973-sudo
vinayr1973-sudo merged commit 27feaaf into pi-greenfield Jul 2, 2026
2 checks passed
@vinayr1973-sudo
vinayr1973-sudo deleted the chore/public-release-hygiene branch July 2, 2026 23:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant