vskill 1.0.15 → 1.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +84 -9
- package/agents.json +3 -1
- package/dist/agents/agents-registry.d.ts +69 -3
- package/dist/agents/agents-registry.js +203 -0
- package/dist/agents/agents-registry.js.map +1 -1
- package/dist/api/client.d.ts +85 -0
- package/dist/api/client.js +193 -24
- package/dist/api/client.js.map +1 -1
- package/dist/commands/add-lockfile.d.ts +6 -0
- package/dist/commands/add-lockfile.js +10 -0
- package/dist/commands/add-lockfile.js.map +1 -1
- package/dist/commands/add.d.ts +7 -0
- package/dist/commands/add.js +110 -2
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/auth.d.ts +23 -0
- package/dist/commands/auth.js +105 -11
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/eval/serve.d.ts +2 -0
- package/dist/commands/eval/serve.js +126 -4
- package/dist/commands/eval/serve.js.map +1 -1
- package/dist/commands/orgs.d.ts +21 -0
- package/dist/commands/orgs.js +164 -0
- package/dist/commands/orgs.js.map +1 -0
- package/dist/commands/skill.js +14 -1
- package/dist/commands/skill.js.map +1 -1
- package/dist/commands/whoami.d.ts +29 -0
- package/dist/commands/whoami.js +119 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/discovery/github-tree.d.ts +23 -3
- package/dist/discovery/github-tree.js +172 -24
- package/dist/discovery/github-tree.js.map +1 -1
- package/dist/eval/anthropic-catalog.js +32 -2
- package/dist/eval/anthropic-catalog.js.map +1 -1
- package/dist/eval/batch-judge.js +1 -0
- package/dist/eval/batch-judge.js.map +1 -1
- package/dist/eval/llm.d.ts +1 -1
- package/dist/eval/llm.js +104 -2
- package/dist/eval/llm.js.map +1 -1
- package/dist/eval-server/__tests__/helpers/studio-token-test-helpers.d.ts +2 -0
- package/dist/eval-server/__tests__/helpers/studio-token-test-helpers.js +20 -0
- package/dist/eval-server/__tests__/helpers/studio-token-test-helpers.js.map +1 -0
- package/dist/eval-server/active-tenant-routes.d.ts +15 -0
- package/dist/eval-server/active-tenant-routes.js +101 -0
- package/dist/eval-server/active-tenant-routes.js.map +1 -0
- package/dist/eval-server/api-routes.js +206 -6
- package/dist/eval-server/api-routes.js.map +1 -1
- package/dist/eval-server/desktop-open-routes.d.ts +8 -0
- package/dist/eval-server/desktop-open-routes.js +64 -0
- package/dist/eval-server/desktop-open-routes.js.map +1 -0
- package/dist/eval-server/eval-server.js +90 -6
- package/dist/eval-server/eval-server.js.map +1 -1
- package/dist/eval-server/export-skill-routes.d.ts +9 -0
- package/dist/eval-server/export-skill-routes.js +81 -0
- package/dist/eval-server/export-skill-routes.js.map +1 -0
- package/dist/eval-server/git-routes.d.ts +1 -0
- package/dist/eval-server/git-routes.js +101 -4
- package/dist/eval-server/git-routes.js.map +1 -1
- package/dist/eval-server/install-engine-routes.d.ts +3 -16
- package/dist/eval-server/install-engine-routes.js +9 -124
- package/dist/eval-server/install-engine-routes.js.map +1 -1
- package/dist/eval-server/install-jobs.d.ts +41 -0
- package/dist/eval-server/install-jobs.js +161 -0
- package/dist/eval-server/install-jobs.js.map +1 -0
- package/dist/eval-server/install-skill-routes.d.ts +74 -11
- package/dist/eval-server/install-skill-routes.js +506 -79
- package/dist/eval-server/install-skill-routes.js.map +1 -1
- package/dist/eval-server/install-state-routes.d.ts +25 -0
- package/dist/eval-server/install-state-routes.js +125 -0
- package/dist/eval-server/install-state-routes.js.map +1 -0
- package/dist/eval-server/oauth-github-routes.d.ts +2 -0
- package/dist/eval-server/oauth-github-routes.js +505 -0
- package/dist/eval-server/oauth-github-routes.js.map +1 -0
- package/dist/eval-server/platform-proxy.d.ts +17 -1
- package/dist/eval-server/platform-proxy.js +125 -13
- package/dist/eval-server/platform-proxy.js.map +1 -1
- package/dist/eval-server/plugin-cli-routes.js +9 -9
- package/dist/eval-server/plugin-cli-routes.js.map +1 -1
- package/dist/eval-server/remove-skill-routes.d.ts +18 -0
- package/dist/eval-server/remove-skill-routes.js +145 -0
- package/dist/eval-server/remove-skill-routes.js.map +1 -0
- package/dist/eval-server/router.d.ts +17 -3
- package/dist/eval-server/router.js +166 -9
- package/dist/eval-server/router.js.map +1 -1
- package/dist/eval-server/settings-store.js +1 -1
- package/dist/eval-server/settings-store.js.map +1 -1
- package/dist/eval-server/supported-agents-routes.d.ts +6 -0
- package/dist/eval-server/supported-agents-routes.js +41 -0
- package/dist/eval-server/supported-agents-routes.js.map +1 -0
- package/dist/eval-server/utils/spawn-env.d.ts +1 -0
- package/dist/eval-server/utils/spawn-env.js +47 -0
- package/dist/eval-server/utils/spawn-env.js.map +1 -0
- package/dist/eval-ui/assets/AdvancedTab-D8zbE5fH.js +1 -0
- package/dist/eval-ui/assets/{CreateSkillPage-BmbvQEzE.js → CreateSkillPage-DOBhKdgr.js} +5 -5
- package/dist/eval-ui/assets/FindSkillsPalette-CyMmNPr-.js +2 -0
- package/dist/eval-ui/assets/GeneralTab-DYR9NWC4.js +1 -0
- package/dist/eval-ui/assets/PrivacyTab-CXIqQokl.js +1 -0
- package/dist/eval-ui/assets/SearchPaletteCore-Dn5gQJS_.js +14 -0
- package/dist/eval-ui/assets/SkillDetailPanel-DTrRnyyJ.js +1 -0
- package/dist/eval-ui/assets/UpdateDropdown-Cvr2fe0z.js +1 -0
- package/dist/eval-ui/assets/UpdatesTab-DwJIUDPX.js +1 -0
- package/dist/eval-ui/assets/core-DZAvsxlC.js +1 -0
- package/dist/eval-ui/assets/event-CDYWU2X3.js +1 -0
- package/dist/eval-ui/assets/globals-BRZwPAPF.js +49 -0
- package/dist/eval-ui/assets/globals-C3oEdsJh.css +1 -0
- package/dist/eval-ui/assets/index-D7M0Jdss.js +1 -0
- package/dist/eval-ui/assets/lifecycle-DSleOV-l.js +1 -0
- package/dist/eval-ui/assets/lifecycle-d1Sm9Hts.css +1 -0
- package/dist/eval-ui/assets/main-D2shn1dH.js +87 -0
- package/dist/eval-ui/assets/preferences-BHZXB5dL.css +1 -0
- package/dist/eval-ui/assets/preferences-BKv6X7fK.js +2 -0
- package/dist/eval-ui/assets/useDesktopBridge-DxVWbYqK.js +2 -0
- package/dist/eval-ui/index.html +4 -2
- package/dist/eval-ui/lifecycle.html +33 -0
- package/dist/eval-ui/preferences.html +34 -0
- package/dist/index.js +47 -1
- package/dist/index.js.map +1 -1
- package/dist/installer/bundle-files.d.ts +4 -0
- package/dist/installer/bundle-files.js +97 -0
- package/dist/installer/bundle-files.js.map +1 -0
- package/dist/installer/canonical.d.ts +31 -6
- package/dist/installer/canonical.js +50 -23
- package/dist/installer/canonical.js.map +1 -1
- package/dist/installer/clipboard-export.d.ts +19 -0
- package/dist/installer/clipboard-export.js +88 -0
- package/dist/installer/clipboard-export.js.map +1 -0
- package/dist/installer/frontmatter.js +1 -1
- package/dist/installer/frontmatter.js.map +1 -1
- package/dist/installer/multi-install.d.ts +43 -0
- package/dist/installer/multi-install.js +237 -0
- package/dist/installer/multi-install.js.map +1 -0
- package/dist/installer/transformers/aider.d.ts +2 -0
- package/dist/installer/transformers/aider.js +32 -0
- package/dist/installer/transformers/aider.js.map +1 -0
- package/dist/installer/transformers/continue-dev.d.ts +2 -0
- package/dist/installer/transformers/continue-dev.js +6 -0
- package/dist/installer/transformers/continue-dev.js.map +1 -0
- package/dist/installer/transformers/cursor.d.ts +2 -0
- package/dist/installer/transformers/cursor.js +24 -0
- package/dist/installer/transformers/cursor.js.map +1 -0
- package/dist/installer/transformers/github-copilot.d.ts +2 -0
- package/dist/installer/transformers/github-copilot.js +17 -0
- package/dist/installer/transformers/github-copilot.js.map +1 -0
- package/dist/installer/transformers/index.d.ts +78 -0
- package/dist/installer/transformers/index.js +13 -0
- package/dist/installer/transformers/index.js.map +1 -0
- package/dist/installer/transformers/junie.d.ts +2 -0
- package/dist/installer/transformers/junie.js +6 -0
- package/dist/installer/transformers/junie.js.map +1 -0
- package/dist/installer/transformers/kiro.d.ts +2 -0
- package/dist/installer/transformers/kiro.js +6 -0
- package/dist/installer/transformers/kiro.js.map +1 -0
- package/dist/installer/transformers/trae.d.ts +2 -0
- package/dist/installer/transformers/trae.js +6 -0
- package/dist/installer/transformers/trae.js.map +1 -0
- package/dist/installer/transformers/windsurf.d.ts +2 -0
- package/dist/installer/transformers/windsurf.js +12 -0
- package/dist/installer/transformers/windsurf.js.map +1 -0
- package/dist/installer/yaml-safe-mutate.d.ts +19 -0
- package/dist/installer/yaml-safe-mutate.js +184 -0
- package/dist/installer/yaml-safe-mutate.js.map +1 -0
- package/dist/lib/active-tenant.d.ts +36 -0
- package/dist/lib/active-tenant.js +120 -0
- package/dist/lib/active-tenant.js.map +1 -0
- package/dist/lib/github-fetch.d.ts +1 -0
- package/dist/lib/github-fetch.js +11 -1
- package/dist/lib/github-fetch.js.map +1 -1
- package/dist/lib/keychain.d.ts +15 -2
- package/dist/lib/keychain.js +156 -8
- package/dist/lib/keychain.js.map +1 -1
- package/dist/lib/migration/keychain-migration.d.ts +35 -0
- package/dist/lib/migration/keychain-migration.js +189 -0
- package/dist/lib/migration/keychain-migration.js.map +1 -0
- package/dist/lib/tenant-resolver.d.ts +38 -0
- package/dist/lib/tenant-resolver.js +79 -0
- package/dist/lib/tenant-resolver.js.map +1 -0
- package/dist/lockfile/types.d.ts +8 -0
- package/dist/sidecar/eval-ui-manifest.json +1 -0
- package/dist/sidecar/sea-config.json +57 -0
- package/dist/sidecar/sea-prep.blob +0 -0
- package/dist/sidecar/server.cjs +141627 -0
- package/dist/sidecar/vskill-version.txt +1 -0
- package/dist/studio/lib/ops-log.js +140 -57
- package/dist/studio/lib/ops-log.js.map +1 -1
- package/dist/studio/lib/provenance.js +3 -2
- package/dist/studio/lib/provenance.js.map +1 -1
- package/dist/studio/lib/query.d.ts +1 -0
- package/dist/studio/lib/query.js +7 -0
- package/dist/studio/lib/query.js.map +1 -0
- package/dist/studio/lib/scope-transfer.d.ts +16 -0
- package/dist/studio/lib/scope-transfer.js +52 -25
- package/dist/studio/lib/scope-transfer.js.map +1 -1
- package/dist/studio/routes/index.js +13 -1
- package/dist/studio/routes/index.js.map +1 -1
- package/dist/studio/routes/ops.js +31 -9
- package/dist/studio/routes/ops.js.map +1 -1
- package/dist/studio/routes/promote.js +16 -11
- package/dist/studio/routes/promote.js.map +1 -1
- package/dist/studio/routes/revert.js +14 -18
- package/dist/studio/routes/revert.js.map +1 -1
- package/dist/studio/routes/test-install.js +14 -11
- package/dist/studio/routes/test-install.js.map +1 -1
- package/dist/studio-runtime/lockfile.d.ts +51 -0
- package/dist/studio-runtime/lockfile.js +216 -0
- package/dist/studio-runtime/lockfile.js.map +1 -0
- package/dist/updater/source-fetcher.js +2 -2
- package/dist/updater/source-fetcher.js.map +1 -1
- package/dist/utils/skill-builder-detection.d.ts +14 -1
- package/dist/utils/skill-builder-detection.js +20 -8
- package/dist/utils/skill-builder-detection.js.map +1 -1
- package/dist/utils/skill-creator-detection.d.ts +10 -2
- package/dist/utils/skill-creator-detection.js +12 -43
- package/dist/utils/skill-creator-detection.js.map +1 -1
- package/package.json +17 -1
- package/dist/eval-ui/assets/FindSkillsPalette-D0Zjhm31.js +0 -2
- package/dist/eval-ui/assets/SearchPaletteCore-EhcN1xEa.js +0 -14
- package/dist/eval-ui/assets/SkillDetailPanel-B5J60ffv.js +0 -1
- package/dist/eval-ui/assets/UpdateDropdown-Celf0_Cr.js +0 -1
- package/dist/eval-ui/assets/index-BV7k6fdk.js +0 -124
- package/dist/eval-ui/assets/index-CKLqBL52.css +0 -1
- package/dist/eval-ui/assets/skill-studio-logo-CRyKgIrg.png +0 -0
package/dist/commands/add.js
CHANGED
|
@@ -16,7 +16,7 @@ import { getAvailablePlugins, getPluginSource, getPluginVersion, hasPlugin, disc
|
|
|
16
16
|
import { checkInstallSafety } from "../blocklist/blocklist.js";
|
|
17
17
|
import { getSkill, searchSkills } from "../api/client.js";
|
|
18
18
|
import { checkPlatformSecurity } from "../security/index.js";
|
|
19
|
-
import { discoverSkills, getDefaultBranch, checkRepoExists, warnRateLimitOnce } from "../discovery/github-tree.js";
|
|
19
|
+
import { discoverSkills, getDefaultBranch, getBranchHeadSha, checkRepoExists, warnRateLimitOnce } from "../discovery/github-tree.js";
|
|
20
20
|
import { githubFetch } from "../lib/github-fetch.js";
|
|
21
21
|
import { parseGitHubSource } from "../utils/validation.js";
|
|
22
22
|
import { parseSkillsShUrl, isCompleteParsed, isIncompleteParsed, } from "../resolvers/url-resolver.js";
|
|
@@ -46,6 +46,12 @@ function isGitHubDownloadUrl(url) {
|
|
|
46
46
|
return false;
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
|
+
function pluginNameFromSkillPath(path) {
|
|
50
|
+
if (!path)
|
|
51
|
+
return null;
|
|
52
|
+
const match = path.match(/^plugins\/([^/]+)\/skills\/[^/]+\/SKILL\.md$/);
|
|
53
|
+
return match?.[1] ?? null;
|
|
54
|
+
}
|
|
49
55
|
async function parseManifestFromContentsApi(data) {
|
|
50
56
|
// Prefer download_url for raw content — validate URL before fetching (SSRF prevention)
|
|
51
57
|
if (data.download_url && isGitHubDownloadUrl(data.download_url)) {
|
|
@@ -1619,6 +1625,65 @@ async function installRepoPlugin(ownerRepo, pluginName, opts, overrideSource) {
|
|
|
1619
1625
|
// Main entry point
|
|
1620
1626
|
// ---------------------------------------------------------------------------
|
|
1621
1627
|
export async function addCommand(source, opts) {
|
|
1628
|
+
// 0839 T-010 / ADR-002 / F-001 — apply explicit `--tenant` to the process
|
|
1629
|
+
// env so every downstream API call (apiRequest -> buildRequestHeaders)
|
|
1630
|
+
// sees it, then ALWAYS restore the prior value on exit. The flag wins
|
|
1631
|
+
// over VSKILL_TENANT and config.json by virtue of being applied last;
|
|
1632
|
+
// `invalidateAuthCache` is called so the read-once-per-process cache
|
|
1633
|
+
// refreshes against the new env value. Tenant resolution beyond the
|
|
1634
|
+
// flag (env > config > auto-pick) is handled at the API layer + by
|
|
1635
|
+
// error surfacing on the response side (401/402 below).
|
|
1636
|
+
//
|
|
1637
|
+
// The try/finally is critical: process.env mutation MUST NOT leak across
|
|
1638
|
+
// in-process re-invocations (test harness, future composite command,
|
|
1639
|
+
// install-all loop). The finally arm restores the prior value
|
|
1640
|
+
// (or `delete`s if no value existed) so the next caller sees a clean
|
|
1641
|
+
// env, exactly as documented in ADR-002 ("flag is per-call, env var is
|
|
1642
|
+
// for CI").
|
|
1643
|
+
const priorTenantEnv = process.env.VSKILL_TENANT;
|
|
1644
|
+
const priorTenantHadValue = "VSKILL_TENANT" in process.env;
|
|
1645
|
+
const tenantOverrideApplied = !!(opts.tenant && opts.tenant.length > 0);
|
|
1646
|
+
if (tenantOverrideApplied) {
|
|
1647
|
+
process.env.VSKILL_TENANT = opts.tenant;
|
|
1648
|
+
// The API client may have cached a previous (null) tenant on import.
|
|
1649
|
+
// Invalidate so the new override takes effect on the very next call.
|
|
1650
|
+
try {
|
|
1651
|
+
const mod = await import("../api/client.js");
|
|
1652
|
+
mod.invalidateAuthCache();
|
|
1653
|
+
}
|
|
1654
|
+
catch {
|
|
1655
|
+
/* non-fatal — fresh CLI run hasn't cached anything yet */
|
|
1656
|
+
}
|
|
1657
|
+
}
|
|
1658
|
+
try {
|
|
1659
|
+
return await addCommandInner(source, opts);
|
|
1660
|
+
}
|
|
1661
|
+
finally {
|
|
1662
|
+
// 0839 F-001 — always restore the prior process.env.VSKILL_TENANT so
|
|
1663
|
+
// `--tenant` does not leak. Run unconditionally so any path that
|
|
1664
|
+
// mutated env (whether explicitly via opts.tenant or via a nested
|
|
1665
|
+
// helper, present or future) is also cleaned up. Skip when nothing
|
|
1666
|
+
// changed to avoid cache thrash.
|
|
1667
|
+
if (tenantOverrideApplied) {
|
|
1668
|
+
if (priorTenantHadValue) {
|
|
1669
|
+
process.env.VSKILL_TENANT = priorTenantEnv;
|
|
1670
|
+
}
|
|
1671
|
+
else {
|
|
1672
|
+
delete process.env.VSKILL_TENANT;
|
|
1673
|
+
}
|
|
1674
|
+
// Invalidate the cache once more so any subsequent in-process call
|
|
1675
|
+
// re-reads the (now-restored) env state instead of the override.
|
|
1676
|
+
try {
|
|
1677
|
+
const mod = await import("../api/client.js");
|
|
1678
|
+
mod.invalidateAuthCache();
|
|
1679
|
+
}
|
|
1680
|
+
catch {
|
|
1681
|
+
/* non-fatal */
|
|
1682
|
+
}
|
|
1683
|
+
}
|
|
1684
|
+
}
|
|
1685
|
+
}
|
|
1686
|
+
async function addCommandInner(source, opts) {
|
|
1622
1687
|
// Bulk repo mode: --repo with --all
|
|
1623
1688
|
if (opts.repo && opts.all) {
|
|
1624
1689
|
return installAllRepoPlugins(opts.repo, opts);
|
|
@@ -1806,6 +1871,8 @@ export async function addCommand(source, opts) {
|
|
|
1806
1871
|
// `sourceSkillPath` are persisted alongside the legacy `source` string.
|
|
1807
1872
|
const lockDir = lockfileRoot(opts);
|
|
1808
1873
|
const lock = ensureLockfile(lockDir);
|
|
1874
|
+
const sourceBranch = await getDefaultBranch(owner, repo);
|
|
1875
|
+
const sourceCommitSha = await getBranchHeadSha(owner, repo, sourceBranch);
|
|
1809
1876
|
for (const r of results) {
|
|
1810
1877
|
if (r.installed && r.sha) {
|
|
1811
1878
|
lock.skills[r.skillName] = buildGitHubInstallLockEntry({
|
|
@@ -1814,6 +1881,9 @@ export async function addCommand(source, opts) {
|
|
|
1814
1881
|
owner,
|
|
1815
1882
|
repo,
|
|
1816
1883
|
sourceSkillPath: r.sourceSkillPath ?? null,
|
|
1884
|
+
branch: sourceBranch,
|
|
1885
|
+
commitSha: sourceCommitSha,
|
|
1886
|
+
pluginName: pluginNameFromSkillPath(r.sourceSkillPath),
|
|
1817
1887
|
global: !!opts.global,
|
|
1818
1888
|
});
|
|
1819
1889
|
}
|
|
@@ -2002,8 +2072,42 @@ async function installFromRegistry(skillName, opts) {
|
|
|
2002
2072
|
}
|
|
2003
2073
|
}
|
|
2004
2074
|
}
|
|
2005
|
-
catch {
|
|
2075
|
+
catch (lookupErr) {
|
|
2006
2076
|
spin.stop();
|
|
2077
|
+
// 0839 T-010 — surface auth + entitlement failures from the platform
|
|
2078
|
+
// (apiRequest annotates errors with .status and .parsedBody). These
|
|
2079
|
+
// are NOT "skill not found" misses; we must NOT swallow them into the
|
|
2080
|
+
// search-suggestion fallback.
|
|
2081
|
+
const e = lookupErr;
|
|
2082
|
+
if (e.status === 401) {
|
|
2083
|
+
// AC-US1-04 — anonymous or expired token. Do NOT clear the keychain
|
|
2084
|
+
// (only `auth logout` does that); the token may simply have expired
|
|
2085
|
+
// server-side, and the user should refresh, not lose their config.
|
|
2086
|
+
console.error(red(`Authentication required for "${skillName}".`) +
|
|
2087
|
+
"\n" +
|
|
2088
|
+
dim("Run `vskill auth login` to sign in."));
|
|
2089
|
+
process.exit(1);
|
|
2090
|
+
}
|
|
2091
|
+
if (e.status === 402) {
|
|
2092
|
+
// AC-US1-05 / AC-US2-04 — entitlement gate; the platform returns 402
|
|
2093
|
+
// with `{ upgradeUrl, message }` so the CLI can deep-link the user
|
|
2094
|
+
// straight to the right purchase page.
|
|
2095
|
+
const upgradeUrl = e.parsedBody?.upgradeUrl;
|
|
2096
|
+
const message = e.parsedBody?.message ?? "This skill requires a paid plan.";
|
|
2097
|
+
console.error(red(`${message}`));
|
|
2098
|
+
if (upgradeUrl) {
|
|
2099
|
+
console.error(dim(`Upgrade: ${cyan(upgradeUrl)}`));
|
|
2100
|
+
}
|
|
2101
|
+
process.exit(1);
|
|
2102
|
+
}
|
|
2103
|
+
if (e.status === 403) {
|
|
2104
|
+
// Membership/scope failure — different from 401. Print verbatim so
|
|
2105
|
+
// the platform's message reaches the user (e.g. "skill found in 2
|
|
2106
|
+
// tenants — pass --tenant <slug>").
|
|
2107
|
+
const msg = e.parsedBody?.message ?? e.message;
|
|
2108
|
+
console.error(red(msg));
|
|
2109
|
+
process.exit(1);
|
|
2110
|
+
}
|
|
2007
2111
|
// Skill not in registry — check blocklist before showing generic "not found"
|
|
2008
2112
|
const safety = await checkInstallSafety(skillName);
|
|
2009
2113
|
if (safety.blocked) {
|
|
@@ -2209,6 +2313,7 @@ async function installSingleSkillLegacy(owner, repo, skill, opts, skillSubpathOv
|
|
|
2209
2313
|
return process.exit(1);
|
|
2210
2314
|
}
|
|
2211
2315
|
const branch = await getDefaultBranch(owner, repo);
|
|
2316
|
+
const sourceCommitSha = await getBranchHeadSha(owner, repo, branch);
|
|
2212
2317
|
const skillSubpath = skillSubpathOverride || (skill ? `skills/${skill}/SKILL.md` : "SKILL.md");
|
|
2213
2318
|
const url = `https://raw.githubusercontent.com/${owner}/${repo}/${branch}/${skillSubpath}`;
|
|
2214
2319
|
// Fetch SKILL.md
|
|
@@ -2350,6 +2455,9 @@ async function installSingleSkillLegacy(owner, repo, skill, opts, skillSubpathOv
|
|
|
2350
2455
|
owner,
|
|
2351
2456
|
repo,
|
|
2352
2457
|
sourceSkillPath: skillSubpath,
|
|
2458
|
+
branch,
|
|
2459
|
+
commitSha: sourceCommitSha,
|
|
2460
|
+
pluginName: pluginNamespace ?? pluginNameFromSkillPath(skillSubpath),
|
|
2353
2461
|
global: !!opts.global,
|
|
2354
2462
|
});
|
|
2355
2463
|
lock.agents = [...new Set([...(lock.agents || []), ...selectedAgents.map((a) => a.id)])];
|