Revert "feat(catalog): restore website install links to Desktop"
This reverts commit cf59980e2c.
This commit is contained in:
@@ -34,21 +34,6 @@ def mod():
|
||||
return module
|
||||
|
||||
|
||||
@pytest.mark.parametrize("directory,source,prefix", [
|
||||
("skills", "built-in", "NousResearch/hermes-agent/skills"),
|
||||
("optional-skills", "optional", "official"),
|
||||
])
|
||||
def test_local_skills_publish_exact_install_target(mod, tmp_path, monkeypatch, directory, source, prefix):
|
||||
skill = tmp_path / directory / "creative" / "nested" / "example"
|
||||
skill.mkdir(parents=True)
|
||||
(skill / "SKILL.md").write_text("---\nname: Different Display Name\n---\nExample.")
|
||||
monkeypatch.setattr(mod, "REPO_ROOT", str(tmp_path))
|
||||
[entry] = mod.extract_local_skills()
|
||||
expected = f"{prefix}/creative/nested/example"
|
||||
assert entry["installIdentifier"] == expected
|
||||
assert entry["installCmd"] == f"hermes skills install {expected}"
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------
|
||||
# _source_url
|
||||
# --------------------------------------------------------------------------
|
||||
|
||||
@@ -311,11 +311,6 @@ def extract_local_skills():
|
||||
elif isinstance(cmds, str) and cmds.strip():
|
||||
commands = [cmds.strip()]
|
||||
|
||||
rel_id = rel.replace(os.sep, "/")
|
||||
install_identifier = (
|
||||
f"official/{rel_id}" if source_label == "optional"
|
||||
else f"NousResearch/hermes-agent/skills/{rel_id}"
|
||||
)
|
||||
skills.append({
|
||||
"name": fm.get("name", os.path.basename(root)),
|
||||
"description": fm.get("description", ""),
|
||||
@@ -331,8 +326,6 @@ def extract_local_skills():
|
||||
"envVars": env_vars,
|
||||
"commands": commands,
|
||||
"docsPath": _docs_page_path(rel, source_label),
|
||||
"installIdentifier": install_identifier,
|
||||
"installCmd": f"hermes skills install {install_identifier}",
|
||||
})
|
||||
|
||||
return skills
|
||||
@@ -443,7 +436,6 @@ def extract_unified_index_skills():
|
||||
"docsPath": "",
|
||||
"identifier": identifier,
|
||||
"installCmd": install_cmd,
|
||||
"installIdentifier": install_cmd.removeprefix("hermes skills install "),
|
||||
"sourceUrl": source_url,
|
||||
})
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ import React, { useState, useMemo, useCallback, useRef, useEffect } from "react"
|
||||
import Layout from "@theme/Layout";
|
||||
import Link from "@docusaurus/Link";
|
||||
import styles from "./styles.module.css";
|
||||
import { pluginCatalogInstallUrl } from "../../../../apps/shared/src/catalog-install";
|
||||
|
||||
interface PluginCapabilities {
|
||||
providesTools?: string[];
|
||||
@@ -191,7 +190,6 @@ function PluginCard({
|
||||
const hookCount = caps.providesHooks?.length || 0;
|
||||
const middlewareCount = caps.providesMiddleware?.length || 0;
|
||||
const pinUrl = `${plugin.repo.replace(/\.git$/, "").replace(/\/$/, "")}/tree/${plugin.sha}`;
|
||||
const installUrl = pluginCatalogInstallUrl(plugin);
|
||||
|
||||
return (
|
||||
<div
|
||||
@@ -290,7 +288,7 @@ function PluginCard({
|
||||
))}
|
||||
</div>
|
||||
|
||||
{onPick ? (
|
||||
{onPick && (
|
||||
<button
|
||||
className={styles.pickBtn}
|
||||
onClick={(e) => {
|
||||
@@ -300,14 +298,6 @@ function PluginCard({
|
||||
>
|
||||
+ Add to this Agent
|
||||
</button>
|
||||
) : (
|
||||
<a
|
||||
className={styles.pickBtn}
|
||||
href={installUrl}
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
>
|
||||
Install in Hermes
|
||||
</a>
|
||||
)}
|
||||
|
||||
{expanded && (
|
||||
@@ -584,7 +574,7 @@ export default function PluginCatalogPage() {
|
||||
</span>
|
||||
</nav>
|
||||
<p className={styles.heroSub}>
|
||||
Reviewed, SHA-pinned plugins. Open in Hermes Desktop to review and install, or copy the CLI command.
|
||||
Reviewed, SHA-pinned plugins you can install with one command.
|
||||
{loadError && (
|
||||
<span style={{ color: "#f87171", marginLeft: 8 }}>
|
||||
· failed to load catalog ({loadError})
|
||||
|
||||
@@ -905,19 +905,11 @@
|
||||
color: var(--ifm-color-primary);
|
||||
font-size: 0.85rem;
|
||||
font-weight: 600;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
transition: background 0.15s ease, color 0.15s ease;
|
||||
}
|
||||
|
||||
.pickBtn:hover {
|
||||
background: var(--ifm-color-primary);
|
||||
color: var(--ifm-color-emphasis-0);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.pickBtn:focus-visible {
|
||||
outline: 2px solid var(--ifm-color-primary);
|
||||
outline-offset: 2px;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ import React, { useState, useMemo, useCallback, useRef, useEffect } from "react"
|
||||
import Layout from "@theme/Layout";
|
||||
import Link from "@docusaurus/Link";
|
||||
import styles from "./styles.module.css";
|
||||
import { skillCatalogInstallIdentifier, skillCatalogInstallUrl } from "../../../../apps/shared/src/catalog-install";
|
||||
|
||||
interface Skill {
|
||||
name: string;
|
||||
@@ -20,7 +19,6 @@ interface Skill {
|
||||
commands?: string[];
|
||||
docsPath?: string;
|
||||
identifier?: string;
|
||||
installIdentifier?: string;
|
||||
installCmd?: string;
|
||||
/** Clickable URL to the skill's origin (repo / detail page). Synthesized
|
||||
* in extract-skills.py for community skills that have no generated docs
|
||||
@@ -302,7 +300,6 @@ function SkillCard({
|
||||
}) {
|
||||
const src = SOURCE_CONFIG[skill.source] || SOURCE_CONFIG["optional"];
|
||||
const icon = CATEGORY_ICONS[skill.category] || "\u{1F4E6}";
|
||||
const installUrl = skillCatalogInstallUrl(skill);
|
||||
|
||||
return (
|
||||
<div
|
||||
@@ -354,16 +351,6 @@ function SkillCard({
|
||||
))}
|
||||
</div>
|
||||
|
||||
{!onPick && installUrl && (
|
||||
<a
|
||||
className={styles.pickBtn}
|
||||
href={installUrl}
|
||||
onClick={(e) => e.stopPropagation()}
|
||||
>
|
||||
Install in Hermes
|
||||
</a>
|
||||
)}
|
||||
|
||||
{expanded && (
|
||||
<div className={styles.cardDetail}>
|
||||
{skill.overview && (
|
||||
@@ -432,9 +419,9 @@ function SkillCard({
|
||||
</div>
|
||||
)}
|
||||
<div className={styles.installHint}>
|
||||
<code>{skill.installCmd || `hermes skills install ${skillCatalogInstallIdentifier(skill) || skill.name}`}</code>
|
||||
<code>{skill.installCmd || `hermes skills install ${skill.name}`}</code>
|
||||
<CopyButton
|
||||
text={skill.installCmd || `hermes skills install ${skillCatalogInstallIdentifier(skill) || skill.name}`}
|
||||
text={skill.installCmd || `hermes skills install ${skill.name}`}
|
||||
/>
|
||||
</div>
|
||||
{onPick ? (
|
||||
@@ -534,8 +521,8 @@ export default function SkillsDashboard() {
|
||||
{
|
||||
type: "hermes-skill-pick",
|
||||
name: skill.name,
|
||||
identifier: skillCatalogInstallIdentifier(skill) || skill.name,
|
||||
installCmd: skill.installCmd || `hermes skills install ${skillCatalogInstallIdentifier(skill) || skill.name}`,
|
||||
identifier: skill.identifier || skill.name,
|
||||
installCmd: skill.installCmd || `hermes skills install ${skill.name}`,
|
||||
source: skill.source,
|
||||
},
|
||||
"*"
|
||||
@@ -713,7 +700,7 @@ export default function SkillsDashboard() {
|
||||
<strong className={styles.heroAccent}>
|
||||
{data ? allSkillsLocal.length.toLocaleString() : "…"}
|
||||
</strong>{" "}
|
||||
skills across {sources.length - 1} registries. Open in Hermes Desktop to review and install, or copy the CLI command.
|
||||
skills across {sources.length - 1} registries
|
||||
{loadError && (
|
||||
<span style={{ color: "#f87171", marginLeft: 8 }}>
|
||||
· failed to load catalog ({loadError})
|
||||
|
||||
@@ -1030,8 +1030,6 @@
|
||||
color: var(--ifm-color-primary);
|
||||
font-size: 0.85rem;
|
||||
font-weight: 600;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
transition: background 0.15s ease, color 0.15s ease;
|
||||
}
|
||||
@@ -1040,10 +1038,4 @@
|
||||
background: var(--ifm-color-primary);
|
||||
/* --ifm-background-color is transparent in light mode (#91491). */
|
||||
color: var(--ifm-color-emphasis-0, #f7f8fa);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.pickBtn:focus-visible {
|
||||
outline: 2px solid var(--ifm-color-primary);
|
||||
outline-offset: 2px;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user