mirror of
https://github.com/openswarm-ai/openswarm.git
synced 2026-09-25 02:54:52 +02:00
defluff (frontend + backend): strip em-dashes + shorten docstrings + drop dead UI files (cosmetic only, no schedule code)
This commit is contained in:
@@ -1,7 +1,4 @@
|
||||
// Shared skipIf predicates. Each returns true when the corresponding step
|
||||
// is already-done in current Redux state — used to pre-mark completed
|
||||
// milestones for upgrading users and to short-circuit "Show me" if the
|
||||
// user already did the thing.
|
||||
// skipIf predicates: true => step is already-done in current Redux state.
|
||||
|
||||
import type { RootState } from '@/shared/state/store';
|
||||
import {
|
||||
@@ -11,9 +8,7 @@ import {
|
||||
export function hasModelConnected(s: RootState): boolean {
|
||||
const d = s.settings.data as any;
|
||||
if (!d) return false;
|
||||
// Path 1: OpenSwarm Pro cloud bearer.
|
||||
if (d.connection_mode === 'openswarm-pro' && d.openswarm_bearer_token) return true;
|
||||
// Path 2: first-party API keys typed into Settings → Models.
|
||||
if (
|
||||
d.anthropic_api_key ||
|
||||
d.openai_api_key ||
|
||||
@@ -22,35 +17,22 @@ export function hasModelConnected(s: RootState): boolean {
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
// Path 3: custom OpenAI-compatible providers (LM Studio, Ollama, etc.).
|
||||
// Match the validity rule the Settings page uses to render the provider
|
||||
// row: name + base_url present. The api_key field is intentionally
|
||||
// optional — local OpenAI-compatible servers don't require one.
|
||||
// Custom OpenAI-compatible providers; api_key optional for local servers.
|
||||
const customs = (d.custom_providers || []) as any[];
|
||||
if (customs.some((cp) => cp?.name?.trim() && cp?.base_url?.trim())) {
|
||||
return true;
|
||||
}
|
||||
// Path 4: external OAuth subscriptions (Claude Max, ChatGPT, etc.). The
|
||||
// tokens live in 9Router-managed storage and are surfaced to the frontend
|
||||
// only via the subscriptionsSlice mirror of /agents/subscriptions/status.
|
||||
if (hasAnyActiveSubscription(s)) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
export function hasAnyToolEnabled(s: RootState): boolean {
|
||||
const items = s.tools?.items ?? {};
|
||||
// Match the Switch's read in Tools.tsx: `tool.enabled !== false`. Tools
|
||||
// installed before the `enabled` field existed have it as undefined,
|
||||
// which the Switch treats as "on" — so we should too. Otherwise step 2
|
||||
// never auto-skips for users who already have integrations installed.
|
||||
// Match Tools.tsx Switch read: enabled !== false; pre-field tools treat undefined as on.
|
||||
return Object.values(items).some((t: any) => t?.enabled !== false);
|
||||
}
|
||||
|
||||
// True when a YouTube-shaped tool is currently enabled. Used by step 2's
|
||||
// wait-for-toggle so the wait only resolves when YouTube is actually ON,
|
||||
// regardless of how many times the user toggles. Step 2 uses YouTube to
|
||||
// match the rest of the tour (step 3 prompts for a YouTube video summary,
|
||||
// so enabling YouTube here is a coherent throughline).
|
||||
/** True when a YouTube-shaped tool is on; step 2 waits on this so toggle-flapping stays in sync. */
|
||||
export function isYoutubeEnabled(s: RootState): boolean {
|
||||
const items = s.tools?.items ?? {};
|
||||
return Object.values(items).some((t: any) => {
|
||||
@@ -72,11 +54,7 @@ export function hasAnySkillInstalled(s: RootState): boolean {
|
||||
return Object.keys(items).length > 0;
|
||||
}
|
||||
|
||||
// True if the PDF-handling skill is installed. Used by step 7 in place
|
||||
// of hasAnySkillInstalled so installing any *other* skill doesn't
|
||||
// auto-skip the PDF-specific install demo. Matches on id OR name OR
|
||||
// command containing 'pdf' (case-insensitive) — the skill might land
|
||||
// under any of those depending on how the user installed it.
|
||||
/** True if PDF skill installed (id/name/command); step 7 uses this so other skills don't auto-skip. */
|
||||
export function hasPdfSkillInstalled(s: RootState): boolean {
|
||||
const items = s.skills?.items as any;
|
||||
const list: any[] = Array.isArray(items) ? items : Object.values(items ?? {});
|
||||
@@ -88,9 +66,7 @@ export function hasPdfSkillInstalled(s: RootState): boolean {
|
||||
});
|
||||
}
|
||||
|
||||
// True if any browser card exists on the canvas. Used by step 4 to
|
||||
// auto-skip the "open a browser" walkthrough for users who already
|
||||
// have one parked on their dashboard.
|
||||
/** True if a browser card exists; step 4 auto-skips the open-a-browser walkthrough. */
|
||||
export function hasAnyBrowserSpawned(s: RootState): boolean {
|
||||
const cards = (s as any).dashboardLayout?.browserCards ?? {};
|
||||
return Object.keys(cards).length > 0;
|
||||
|
||||
Reference in New Issue
Block a user