Skip to content

feat: add grok, omp, and reasonix built-in providers - #557

Open
AgileInnov8tor wants to merge 1 commit into
luongnv89:mainfrom
AgileInnov8tor:feat/providers-grok-omp-reasonix
Open

feat: add grok, omp, and reasonix built-in providers#557
AgileInnov8tor wants to merge 1 commit into
luongnv89:mainfrom
AgileInnov8tor:feat/providers-grok-omp-reasonix

Conversation

@AgileInnov8tor

Copy link
Copy Markdown

Description

asm list / asm install can now target Oh My Pi, Grok CLI, and Reasonix without adding custom provider entries. Existing configs pick the three names up on upgrade, inserted after pi and before hermes.

Oh My Pi uses ~/.omp/agent/skills (not ~/.omp/skills and not Pi's ~/.pi/skills).

Related Issue

None.

Type of Change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update
  • Refactoring (no functional changes)

Checklist

  • My code follows the project's style guidelines
  • I have performed a self-review of my code
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes

Additional Notes

Focused npx vitest run src/config.test.ts: 30/30. The new upgrade case asserts a saved 19-provider config gains omp / grok / reasonix between pi and hermes. src/views/config.test.tsx still passes (8/8).

npm run typecheck and npm run lint fail on this checkout independently of this change (src/commands/stats.test.ts IndexedSkill/no-color errors; typescript-eslint vs TS 7). Not addressed here.

Post-Deploy Monitoring & Validation

No additional operational monitoring required until the next agent-skill-manager release. After publish, confirm asm config show includes the three names on a fresh or upgraded config, and that asm list -p grok|omp|reasonix scans the documented global paths. Rollback: disable the providers in config, or revert this commit.


Compound Engineering

Register Oh My Pi, Grok CLI, and Reasonix in DEFAULT_PROVIDERS after pi
so asm list/install work against those skill roots without customPaths.
Upgrade merge inserts the three names between pi and hermes.
@luongnv89

Copy link
Copy Markdown
Owner

Reviewed this one — the change itself looks great. Full unit suite is green at fa40010 (2233/2233 across 70 files), build is clean, CI passes, and the provider counts and paths line up consistently across config.ts, the README, and both website pages. Nice catch on ~/.omp/agent/skills.

One thing blocking merge: the branch is 2 commits behind main and README.md now conflicts. 3c26efe (index refresh) touched the catalog-stats lines right next to the provider-count lines this PR updates.

git fetch origin && git rebase origin/main
# in README.md keep both: main's refreshed catalog stats + this PR's 22-provider counts
git push --force-with-lease origin feat/providers-grok-omp-reasonix

Once that's in, this is good to merge from my side.

Two small notes, neither blocking:

  • The PR body says npm run lint fails — it actually passes, on this branch and on main.
  • npm run typecheck does fail (10 errors), but all of them are in src/commands/stats.test.ts and I confirmed they're identical on main. Pre-existing and correctly out of scope here — probably worth its own issue.

luongnv89 added a commit that referenced this pull request Sep 5, 2026
…d Grok CLI (#617) (#618)

## Description

Reorders the interactive `asm install` provider picker and extends the
built-in provider list.

New canonical order: **Agents, Claude Code, Pi, OpenCode, Codex, Oh My
Pi, Grok CLI**, then the remaining providers in their existing relative
order. The Agents row carries a note that most harnesses support it,
except Claude Code; the note leads the hint so it survives truncation on
a narrow terminal.

Three things the issue asked for that needed a decision:

- **`amp code` already existed** as the built-in `amp`
(`~/.amp/skills`). No second entry was added; a duplicate name would
have been dropped silently by `mergeWithDefaults`.
- **`omp` and `grok build`** are new. They reuse the definitions from
open PR #557 so the two stay compatible: `omp` = Oh My Pi at
`~/.omp/agent/skills`, `grok` = Grok CLI at `~/.grok/skills`. #557's
third provider, `reasonix`, was deliberately not carried in — #617 does
not ask for it.
- **Reordering the defaults alone would not have fixed anything for
existing users.** `mergeWithDefaults` only splices in missing defaults
and never reorders what is already saved, so the reporter's own picker
would have looked exactly as in their screenshot. It now canonicalizes
the provider order on load. User-added providers keep their relative
anchor and nothing is dropped.

Mid-flight addition from the reporter, recorded on the issue: first-time
setup pre-checks **Agents and Claude Code**, not Agents alone. It never
pre-checks a provider the user has disabled.

## Related Issue

Closes #617

Overlaps open PR #557 (`omp`, `grok`, `reasonix`). This PR carries the
first two with the same names and paths. #557 can be closed or rebased
down to `reasonix` alone.

## Type of Change

- [ ] Bug fix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [x] Documentation update
- [ ] Refactoring (no functional changes)

## Decision Record

| Decision | Why |
| --- | --- |
| Canonicalize saved provider order in `mergeWithDefaults` | Reordering
`DEFAULT_PROVIDERS` alone reaches only fresh installs; the reporter has
a saved config, so acceptance criterion 1 would have failed on their own
machine |
| Anchor user-added providers rather than appending them | Keeps
`preserves user-added custom providers in place` passing; a custom
provider stays adjacent to the built-in it followed |
| Note leads the Agents hint, path trails | `checkbox-picker` truncates
the hint at narrow widths and drops it entirely below 10 columns of
room; putting the note first means the requested text is the part that
survives |
| No new `ProviderConfig` field for the note | The note is picker
presentation, and `ProviderConfig` is persisted to `config.json` — a new
field would mean migration churn for one string |
| Skipped `reasonix` | Not requested by #617 |

## Test Results

`CI=true npm test` — **2664 passed, 83 files, 0 failed**.
`npm run typecheck`, `npm run lint`, `npm run lint:site` — all clean.

New and updated coverage:

- `src/config.test.ts` — pins the 21-provider canonical order; new test
canonicalizes a pre-#617 saved config and asserts nothing the user had
is dropped.
- `src/installer.test.ts` — first-run pre-check is Agents + Claude Code;
a disabled provider is never pre-checked; the Agents hint text is
pinned.

## Acceptance Criteria Verification

| Criterion | Status | Evidence |
| --- | --- | --- |
| Picker lists Agents, Claude Code, Pi, OpenCode, Codex as its first
five, in order | ✓ | `src/config.test.ts` `all 21 default providers in
priority order` |
| Every provider still appears after those five, none dropped | ✓ |
`canonicalizes a saved config that predates the #617 reorder` asserts
every legacy name survives |
| Agents entry shows the harness-support note | ✓ |
`src/installer.test.ts` pins the hint string |
| Grok Build, Amp Code, and omp are selectable | ✓ | `omp` and `grok`
added; `amp` was already present |
| Select All / Deselect All and selection behave as before | ✓ |
`src/utils/checkbox-picker.test.ts` and the `resolveProvider` picker
suite unchanged and passing |
| First-time setup pre-checks Claude Code + Agents (added mid-flight) |
✓ | `no saved tools defaults agents + claude to checked` |

## Review

One blocking finding, fixed in 40ed06a: the first-run pre-check ignored
`enabled`, so a user who had disabled Claude Code would have had it
pre-checked and installed on Enter. Gated on `p.enabled`.

## Additional Notes

Existing users see their `~/.config/agent-skill-manager/config.json`
provider array rewritten into the new order on the next load.
`preferences.selectedTools` is stored by name, so saved selections are
unaffected.

https://claude.ai/code/session_01L7wEboaD5rvJst7KeKiEzq

---------

Co-authored-by: Test <test@test.com>
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.

2 participants