Skip to content

Add ai-status-check extension - #30152

Open
Astatine-213-Tian wants to merge 4 commits into
raycast:mainfrom
Astatine-213-Tian:ext/ai-status-check
Open

Add ai-status-check extension#30152
Astatine-213-Tian wants to merge 4 commits into
raycast:mainfrom
Astatine-213-Tian:ext/ai-status-check

Conversation

@Astatine-213-Tian

@Astatine-213-Tian Astatine-213-Tian commented Aug 12, 2026

Copy link
Copy Markdown

Description

Adds AI Status, a single Raycast command for checking the official service health of 18 common AI providers on macOS and Windows.

Check every provider at a glance

The main list groups providers by health and category, shows each provider's published status, and highlights active incidents. Providers can be enabled or disabled from the extension preferences.

Provider overview

Review incidents and their updates

Open a provider to see active and recently resolved incidents. Selecting an incident shows its published update timeline, while the action menu links back to the official status page.

Active incident

Incident timeline

Inspect component health

Provider detail pages preserve the source status page's component organization. Component groups stay compact in the main view and can be opened to inspect individual services.

Component groups

Individual components

The extension uses unauthenticated public status sources, shows cached results immediately while refreshing providers independently, and requires no provider credentials or extension-specific backend.

Checklist

  • I read the extension guidelines
  • I read the documentation about publishing
  • I ran npm run build and tested the distribution build in Raycast
  • I checked that files in the assets folder are used by the extension itself
  • I checked that assets used by the README are placed outside of the metadata folder

- docs: add Store screenshots
- refactor: standardize provider status integrations
- feat: add AI provider status extension
@raycastbot raycastbot added the new extension Label for PRs with new extensions label Aug 12, 2026
@raycastbot

Copy link
Copy Markdown
Collaborator

Congratulations on your new Raycast extension! 🚀

We're currently experiencing a high volume of incoming requests. As a result, the initial review may take up to 15 business days.

Once the PR is approved and merged, the extension will be available on our Store.

@greptile-apps

greptile-apps Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR adds a Raycast command that retrieves, caches, and presents service-health data for 18 AI providers.

  • Adds provider-specific adapters, parsers, catalog definitions, and status normalization.
  • Adds cached independent refreshes with per-provider request ordering.
  • Adds provider overview, component, incident, and timeline views.
  • Adds tests, store metadata, assets, and package scripts for validation and publishing.

Confidence Score: 4/5

The PR is not yet safe to merge because running the required build before publishing makes the new store check reject the generated dist directory and blocks publication.

The stale-refresh and missing-helper issues have been addressed, but the package's build and validation scripts now conflict: the build creates dist, while the publish prerequisite fails whenever dist exists.

Files Needing Attention: extensions/ai-status-check/tests/support/check-store-assets.ts and extensions/ai-status-check/package.json

Important Files Changed

Filename Overview
extensions/ai-status-check/tests/support/check-store-assets.ts Adds package and asset validation, but rejects the output directory generated by the extension's own build command.
extensions/ai-status-check/package.json Defines the command, provider preferences, tooling, and a build/publish sequence whose generated output conflicts with the store check.
extensions/ai-status-check/src/hooks/use-provider-statuses.ts Coordinates cached initial state and independent refreshes while using per-provider tokens to prevent stale commits.
extensions/ai-status-check/src/services/provider-request-order.ts Implements monotonic per-provider request tokens that address the previously reported refresh race.
extensions/ai-status-check/src/services/fetch-provider-statuses.ts Fetches provider snapshots independently and gates persistence through request-currentness checks.
extensions/ai-status-check/src/providers/registry.ts Registers the 18 provider integrations used by the command and preferences.
Prompt To Fix All With AI
### Issue 1
extensions/ai-status-check/tests/support/check-store-assets.ts:62-64
**Build Output Blocks Publishing**

When a contributor runs `npm run build` before `npm run publish`, the build creates `dist`, but the publish prerequisite treats that directory as forbidden and stops before invoking Raycast's publisher.

```suggestion
  for (const forbiddenPath of [".firecrawl", ".test-dist", "docs", "scripts"]) {
    if (await exists(forbiddenPath)) errors.push(`Development-only path must not be packaged: ${forbiddenPath}`);
  }
```

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Reviews (4): Last reviewed commit: "docs: clarify AI provider status scope" | Re-trigger Greptile

@Astatine-213-Tian
Astatine-213-Tian marked this pull request as ready for review August 12, 2026 05:34
Comment thread extensions/ai-status-check/package.json Outdated
Comment thread extensions/ai-status-check/src/hooks/use-provider-statuses.ts
- fix: make Store checks portable and order refreshes
- fix: normalize xAI operational status
@pernielsentikaer

Copy link
Copy Markdown
Collaborator

Similar extensions already in the Store

Automated first pass. Overlap is not a blocker on its own, but the README should make the difference clear.

  • AI Usage Tracker (ai-usage-tracker, 69 installs by @cdeligny) — Track your AI premium requests usage and compare it with the remaining % of working days in the current month to see if you are ahead or behind.
    similarity 0.60
  • AI Stats (ai-stats, 140 installs by @JonathanRReed) — AI model stats via Supabase
    similarity 0.58
  • Is It Alive? (is-it-alive, 32 installs by @Aler1x) — Monitor status pages and check if your favorite services are operational.
    similarity 0.55

@Astatine-213-Tian

Copy link
Copy Markdown
Author

Thanks for flagging these. I’ve updated the extension title to AI Provider Status and expanded the README to make its scope and differences clearer.

AI Usage Tracker tracks premium-request usage, while AI Stats provides AI model statistics. AI Provider Status does neither—it checks providers’ published operational health, components, and incidents.

Is It Alive? has the closest functional overlap, but its workflow is different: it is a general-purpose monitor where users add and maintain status-page URLs. AI Provider Status is purpose-built for AI services and ships with a curated catalog of 18 provider integrations. Users simply select the providers they use in Raycast preferences, with no URLs to find, detect, or maintain.

We intend to keep that curated, AI-provider-specific focus rather than add general custom status pages.

Comment on lines +62 to +64
for (const forbiddenPath of [".firecrawl", ".test-dist", "dist", "docs", "scripts"]) {
if (await exists(forbiddenPath)) errors.push(`Development-only path must not be packaged: ${forbiddenPath}`);
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Build Output Blocks Publishing

When a contributor runs npm run build before npm run publish, the build creates dist, but the publish prerequisite treats that directory as forbidden and stops before invoking Raycast's publisher.

Suggested change
for (const forbiddenPath of [".firecrawl", ".test-dist", "dist", "docs", "scripts"]) {
if (await exists(forbiddenPath)) errors.push(`Development-only path must not be packaged: ${forbiddenPath}`);
}
for (const forbiddenPath of [".firecrawl", ".test-dist", "docs", "scripts"]) {
if (await exists(forbiddenPath)) errors.push(`Development-only path must not be packaged: ${forbiddenPath}`);
}

Knowledge Base Used: Extension Authoring Conventions

Prompt To Fix With AI
This is a comment left during a code review.
Path: extensions/ai-status-check/tests/support/check-store-assets.ts
Line: 62-64

Comment:
**Build Output Blocks Publishing**

When a contributor runs `npm run build` before `npm run publish`, the build creates `dist`, but the publish prerequisite treats that directory as forbidden and stops before invoking Raycast's publisher.

```suggestion
  for (const forbiddenPath of [".firecrawl", ".test-dist", "docs", "scripts"]) {
    if (await exists(forbiddenPath)) errors.push(`Development-only path must not be packaged: ${forbiddenPath}`);
  }
```

**Knowledge Base Used:** [Extension Authoring Conventions](https://app.greptile.com/raycast/-/custom-context/knowledge-base/raycast/extensions/-/docs/extension-authoring-conventions.md)

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

new extension Label for PRs with new extensions

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants