Commit Graph
61 Commits
Author SHA1 Message Date
Rehaan Ahmad aeec0dc151 fmt (#28) 2026-07-05 16:56:11 -07:00
Rehaan Ahmad 34cfc74d73 live status v0.1.35 2026-07-05 16:53:46 -07:00
Rehaan Ahmad 01b2334841 chore: hf job sfixes (#27)
* fixes

* buidl
v0.1.34
2026-07-05 15:02:51 -07:00
Rehaan Ahmad f544babf08 chore: decoupled runds 2 (#26)
* decoupled runs

* stream

* fmt

* ok

* cargo
v0.1.33
2026-07-05 14:41:47 -07:00
Rehaan Ahmad f3207e6bd3 chore: decoupled runs (#25)
* decoupled runs

* stream

* fmt
v0.1.32
2026-07-05 13:31:45 -07:00
Rehaan Ahmad c23a1caa38 chore: set public (#24)
* set public

* cargo fmt
2026-06-26 23:29:03 -07:00
Rehaan Ahmad 9c68a0a7be continue errors (#23) v0.1.31 2026-06-21 22:16:38 -07:00
Rehaan Ahmad 9db692cf69 chore: download report (#22)
* empty repo seeding

* download report

* cargo lock

* fmt
v0.1.30
2026-06-19 20:39:02 -07:00
Daniel Kim 0ebd96ae19 feat: warn on every command when the CLI is outdated (#20)
* feat: warn on every command when the CLI is outdated

Every orx command now prints a warning to stderr when the running version
is behind the latest release, because the backend API is versioned and a
stale client can hit breaking changes. The message escalates with the gap:
a breaking (pre-1.0 minor / post-1.0 major) gap warns that commands can
start failing now; a smaller gap is a gentler upgrade nudge.

This reworks the existing interactive-only update nudge:
- Shows on every command (piped/scripted/CI too), not just interactive
  terminals; ORX_NO_UPDATE_CHECK / NO_UPDATE_NOTIFIER /
  OPENRESEARCH_CLI_DISABLE_UPDATE=1 silence it.
- Prints in start() before the command runs, so it shows even for commands
  that std::process::exit on their own (e.g. the not-logged-in path).
- Latest version still comes from the cached prior check (instant, zero
  latency); a fire-and-forget background task refreshes the cache, given a
  brief grace window in finish() to commit before the runtime tears down.
- Cache write is now atomic (temp + rename) so concurrent orx processes
  never read a torn file.
- Version comparison ignores build metadata (semver's Ord compares it, the
  spec says it shouldn't) to avoid a false 'outdated' on local builds.

Excludes the version/update commands, which manage updates themselves.

* feat: bold the warning label on a TTY and set it off in its own block

The outdated-version warning now prints with a blank line above and below
so it reads as its own block, and bolds just the `Warning:` label
(gh/cargo-style) when stderr is an interactive terminal. Pipes, files, and
CI logs stay plain text — the ANSI is gated on `stderr().is_terminal()`
and honors NO_COLOR — so non-interactive output never gets raw escape codes.

Hand-rolled \x1b[1m/\x1b[22m (no color dependency, matching the codebase's
plain-text style); `render`/`bold` are pure and unit-tested.

* refactor: apply review findings (CI latency, label const, doc cleanup)

From the multi-agent code review:
- finish() now skips the 250ms refresh wait when stderr isn't a terminal.
  In ephemeral CI (fresh config dir per run) the cache is always cold, so
  the wait warmed a cache that's immediately discarded — pure per-call cost
  across a pipeline. The refresh is still spawned; we just don't wait. The
  warning still prints on every command. Interactive runs keep the wait so
  the cache warms for the next command.
- Hoist a shared WARNING_LABEL const used by both warning_for (builder) and
  render (styler), so the bolded label can't silently drift from the emitted
  prefix on a copy edit.
- Drop the now-inaccurate "passive" framing from the module header, section
  banner, struct doc, and main.rs wiring comment (the warning is always-on).
- s/nudge/update check/ in the version/update command comments.
- Add prerelease-axis tests for warning_for (rc-behind-final is soft, a
  cross-minor prerelease is breaking, a local dev prerelease ahead is silent).

* simplify: drop the breaking/soft warning tiers, always show one message

Per request, remove the two-tier distinction entirely. The warning no longer
classifies the version gap as breaking vs. non-breaking — every outdated client
gets the same calmer message:

    Warning: orx X is outdated (latest Y). A newer release is available; upgrade
    to stay compatible with the API. Run `orx update` to upgrade.

Deletes `is_breaking_gap` (and its RE-CONFIRM-AT-1.0 note), the second message
arm in `warning_for`, and the tier-specific tests; collapses the gap-coverage
tests into one that asserts the single message fires for every kind of gap.
`precedence` (the build-metadata comparison guard) is unrelated and stays.
2026-06-19 00:24:51 -07:00
Daniel Kim 981ebfc815 fix: drop orphan worktree gitlinks that break submodule checkout in CI (#21)
Two local git worktrees were accidentally committed under .claude/worktrees/
as gitlinks (mode 160000) with no backing .gitmodules entry. cargo-dist's
`plan` job checks out with --recurse-submodules, which fails hard on an
orphan gitlink:

    fatal: No url found for submodule path '.claude/worktrees/delete-orx-diff'
    The process '/usr/bin/git' failed with exit code 128

That gates the entire release workflow (announce / build-* / host all skip),
so every PR shows a failing check even when the code CI passes.

Remove both gitlinks from the index and gitignore .claude/worktrees/ so local
per-task worktrees can never be committed again.
2026-06-18 23:33:12 -07:00
Daniel Kim 6ac848ee92 add Claude.local.md to .gitignore 2026-06-18 14:39:54 -07:00
Daniel Kim 0dae38f110 feat: provider-pluggable compute (--provider on exp run + orx instance create) (#19)
* feat: add --provider to exp run and a standalone `orx instance create`

Two ways to spin up compute from any provider, not just RunPod:

- `orx exp run --provider <name>` provisions an experiment run on the
  chosen provider (omit = server default, RunPod).
- `orx instance create <orgId> (--gpu ... | --cpu ...)` spins up a
  standalone org-level instance via POST /sandboxes — the CLI equivalent
  of the dashboard's "Spin up" panel (omit --provider = cheapest offer).

* chore: bump version to 0.1.29
v0.1.29
2026-06-18 14:37:29 -07:00
Rehaan Ahmad ed05d24bb5 empty repo seeding (#18) v0.1.28 2026-06-17 20:29:10 -07:00
Rehaan Ahmad 7ccfa37592 chore: more bugs (#17)
* edit description

* fmt

* cargo build

* more bugs
v0.1.27
2026-06-17 17:06:32 -07:00
Daniel Kim 8cad492f55 chore: bump version to 0.1.26 (#16)
Release the multi-provider `orx compute` (all providers/regions + DISK
column + --provider filter) from #15. Merging this cuts tag v0.1.26 via the
tag-on-bump release flow.
2026-06-17 16:59:03 -07:00
Daniel Kim 091ae180c4 feat: orx compute lists all providers/regions + DISK column (#15)
The backend `GET /compute/catalog` wire format changed: each offer's flat
`diskPerGbHour` became a nested `disk` discriminated union, `region` became
optional, and new `bandwidth*` fields were added. The CLI decodes strictly, so
the missing `disk_per_gb_hour` field broke `orx compute` (and `--cpu`) at JSON
decode. This fixes the deserialization and broadens the command:

- Add a `Disk` struct mirroring the backend `zDisk` union (keyed on the
  `sizable` bool, optional payloads), replacing `disk_per_gb_hour` on both
  `GpuOffer` and `CpuOffer`. Round-trip tests pin both disk shapes, a missing
  region, and the ignored `bandwidth*` fields.
- Remove the RunPod-only filter so the catalog shows every configured provider
  and region; add a case-insensitive `--provider` filter.
- Add a DISK column to the GPU and CPU tables.

`orx exp run` new instances remain RunPod-only server-side; docs clarify that
`orx compute` now browses all providers regardless.
2026-06-17 16:55:19 -07:00
Rehaan Ahmad b65230b92e chore: cli bug (#14)
* edit description

* fmt

* cargo build
v0.1.25
2026-06-17 11:14:05 -07:00
Rehaan Ahmad 6b1a8310f6 chore: edit description (#13)
* edit description

* fmt
v0.1.24
2026-06-16 21:05:45 -07:00
Rehaan Ahmad 891bca57ad chore: upload report (#12)
* env

* fix

* upload report

* build
v0.1.23
2026-06-15 17:29:44 -07:00
Rehaan Ahmad b27689fc7f chore:env (#11)
* env

* fix
v0.1.22
2026-06-15 14:45:21 -07:00
Rehaan Ahmad e51aa53640 cpu sandboxes (#10) v0.1.21 2026-06-14 15:39:06 -07:00
Rehaan Ahmad ce6adfe63d include run length (#9) 2026-06-12 18:14:58 -07:00
Daniel Kim c53dd9de73 Add Cursor to install-skills (#8)
* Add Cursor to install-skills

Cursor discovers skills under ~/.cursor/skills/<name>/SKILL.md using the
same Agent Skills format as Claude Code, so it reuses the existing shim.
Detected via ~/.cursor like the other agents, so login auto-install now
covers Cursor-only machines (previously they relied on Cursor scanning
~/.claude/skills, which only helps if Claude Code is also installed).

* 0.1.20

* Make the post-login skill install consent-based

orx login no longer writes into agent config dirs unprompted. When run
interactively it lists exactly what would be installed — file count and
name -> path per detected agent — and asks [Y/n]; nothing is written
without a yes. Non-TTY (CI, agents, pipes) skips the offer entirely.
Explicit orx install-skills is unchanged.
v0.1.20
2026-06-12 18:05:52 -07:00
Rehaan Ahmad 7c1d3865c5 chore: skill install (#6)
* install skill

* ok
v0.1.19
2026-06-12 11:39:43 -07:00
Daniel Kim 2ab891e639 Remove orx diff; compute run diffs locally via the cache-dir clone (#5)
* Remove orx diff; compute run diffs locally via the cache-dir clone

- Delete the diff command and its client plumbing (the server endpoint
  stays for the web UI).
- orx exp status now prints the node's branch, the parent's branch, the
  latest run's full commit SHA, and a ready-to-paste local git diff
  recipe (owner/repo resolved via a new find_project client helper).
- SKILL.md/README: the clone in ~/.cache/openresearch/repos is the
  standard way to read, diff, and edit experiment code.
- Bump version to 0.1.17.

* Add clone-if-missing guard to local diff recipes

The diff recipe (SKILL.md and the one orx exp status prints) started at
git fetch, which fails on a cold cache. Prepend the same idempotent
guard the editing recipe uses.
2026-06-11 16:49:13 -07:00
Rehaan Ahmad 52387084d8 0.18 v0.1.18 2026-06-11 16:29:27 -07:00
Rehaan Ahmad 9b81970755 cargo build 2026-06-11 16:27:35 -07:00
Daniel Kim 20e0027034 Merge pull request #4 from alphaXiv/release/0.1.17
Release 0.1.17
v0.1.17
2026-06-11 16:26:01 -07:00
Daniel Kim 2fe1bc6a66 Merge pull request #3 from alphaXiv/ci/tag-on-version-bump
Release automatically on version bump (dispatch-releases, no PAT)
2026-06-11 16:25:16 -07:00
Daniel Kim 64def79287 Switch to dispatch-releases: no PAT needed
Replace the tag-push release trigger with cargo-dist's dispatch-releases
mode. release-on-bump.yml (replacing tag-release.yml) dispatches release.yml
with tag=v<version> using the default GITHUB_TOKEN — workflow_dispatch is
the documented exception to GitHub's "GITHUB_TOKEN events don't trigger
workflows" rule, so no PAT or secret is required. Nothing pushes a tag
anymore: dist creates the tag implicitly when it publishes the GitHub
Release at the end of a successful run, so the tag can never exist without
its release (the v0.1.16 failure mode) and there is no credential to manage
or rotate.

release.yml regenerated with dist 0.32.0 (dist generate); dist plan passes.
2026-06-11 16:17:03 -07:00
Daniel Kim 790cd2186b Release 0.1.17 2026-06-11 16:07:08 -07:00
Daniel Kim 10933a6ae8 Tag releases automatically when Cargo.toml's version is bumped on main
tag-release.yml: on every push to main, mirror the package version into a
v<version> tag if one doesn't exist yet; the tag push triggers the existing
cargo-dist release workflow. The version is never invented or incremented
by CI — merging a PR that bumps Cargo.toml IS the release act. Refuses
(loudly, before tagging) when the RELEASE_TAG_TOKEN secret is missing,
because tags pushed with the default GITHUB_TOKEN don't trigger workflows.

ci.yml version-guard (PRs only): the version may only move forward, may not
reuse an already-released tag, and a bump must come with a regenerated
Cargo.lock — so a malformed bump can't reach main, where merging it would
be the release trigger. Closes the tag/manifest drift class that produced
v0.1.15 (tagged while main said 0.1.14) and v0.1.16 (tagged on a pre-merge
commit, shipping without the feature it was cut for).
2026-06-11 16:06:10 -07:00
Daniel Kim 83e669fffe Merge pull request #2 from alphaXiv/feat/version-and-self-update
Add orx version / orx update and a passive update nudge
2026-06-11 15:49:09 -07:00
Rehaan Ahmad 3dcf5de42f cargo build v0.1.16 2026-06-11 15:21:10 -07:00
Daniel Kim e888995821 Add orx version / orx update and a passive update nudge
- `orx --version` (clap) and `orx version [--check] [--json]`: prints the
  CLI version and compares it to the latest GitHub release. `--json` is
  the agent-facing form (stable stdout object, exit 0 either way).
- `orx update [--dry-run] [--force]`: updates in place by re-running the
  cargo-dist release installer pinned to the existing install prefix
  (CARGO_DIST_FORCE_INSTALL_DIR), the same mechanism as axoupdater/uv but
  without the native-tls dependency that conflicts with our musl builds.
  Guarded by the cargo-dist install receipt (refuses cargo-install copies,
  path/version mismatches, Nix/Homebrew paths, unwritable bin dirs), an
  exclusive flock against concurrent updates, and run via `sh script` so
  noexec /tmp mounts don't break it.
- Passive nudge: at most one background latest-version check per 24h
  (cached in the config dir), printed to stderr only on interactive
  terminals, never in CI/pipes, never altering exit codes. Opt out with
  ORX_NO_UPDATE_CHECK, NO_UPDATE_NOTIFIER, or OPENRESEARCH_CLI_DISABLE_UPDATE=1.

Latest-version discovery uses the releases/latest/download/dist-manifest.json
permalink (CDN redirect, no GitHub API rate limit) instead of the REST API,
whose 60 req/h/IP unauthenticated cap is routinely exhausted on the
datacenter IPs agents run from.
2026-06-11 14:17:15 -07:00
Rehaan Ahmad 8159da751c github repo v0.1.15 2026-06-11 11:40:55 -07:00
Rehaan Ahmad 8e60158790 fix compute/list v0.1.14 2026-06-10 20:11:57 -07:00
Rehaan Ahmad b4f07ff932 new skill v0.1.13 2026-06-09 21:25:56 -07:00
Rehaan Ahmad adae978225 clearer skills v0.1.12 2026-06-09 19:30:02 -07:00
Rehaan Ahmad 305a3fede1 clarify git commands v0.1.11 2026-06-09 15:39:37 -07:00
Rehaan Ahmad 5af1e3fb38 new version v0.1.10 2026-06-09 15:00:52 -07:00
Daniel Kim 312c8227e2 Merge pull request #1 from alphaXiv/daniel/align-cli-with-github-app-api
Align create-experiment with GitHub App API
v0.1.9
2026-06-09 01:08:00 -07:00
Daniel Kim 5cb60f3934 Bump version to 0.1.9
Prepares the release tag for the create-experiment API alignment. Tagging
v0.1.9 on main (after merge) triggers release.yml to build and publish the
GitHub Release artifacts.
2026-06-09 01:06:48 -07:00
Daniel Kim 78b70ae77b Align create-experiment with GitHub App API
Drop the --repo/--ref flags and the empty-baseline path. A project's repo is
now bound at project-creation time on the web, so create-experiment has two
shapes: a child off --parent, or a baseline materialized on the project's
already-bound repo. Replace CreateEmptyBaselineBody/import-from-repo wiring
with a simplified ImportBaselineBody (optional title/description plus
generateSuggestions).
2026-06-09 00:53:12 -07:00
Rehaan Ahmad 2e97dceffc lint v0.1.8 2026-06-08 21:34:08 -07:00
Rehaan Ahmad 604c2b7ad2 cpu boxes v0.1.7 2026-06-08 21:30:34 -07:00
Rehaan Ahmad dc0a1f4031 tag mess up v0.1.6 2026-06-08 17:18:30 -07:00
Rehaan Ahmad 9400da74b2 update 2026-06-08 17:18:02 -07:00
Rehaan Ahmad 33a0452387 lit tools v0.1.5 2026-06-08 17:15:11 -07:00
Rehaan Ahmad 7baabe6df7 new version v0.1.4 2026-06-07 21:20:39 -07:00