@poping/yome 0.0.2 → 0.0.4
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/LICENSE +202 -0
- package/NOTICE +11 -0
- package/README.md +306 -27
- package/README.zh-CN.md +333 -0
- package/bin/yome-calwatch +0 -0
- package/dist/agent.d.ts +24 -2
- package/dist/agent.js +34 -2
- package/dist/agent.js.map +1 -1
- package/dist/context.d.ts +2 -0
- package/dist/context.js +121 -13
- package/dist/context.js.map +1 -1
- package/dist/daemon/calendarPermission.d.ts +10 -0
- package/dist/daemon/calendarPermission.js +68 -0
- package/dist/daemon/calendarPermission.js.map +1 -0
- package/dist/daemon/cronCli.d.ts +19 -0
- package/dist/daemon/cronCli.js +403 -0
- package/dist/daemon/cronCli.js.map +1 -0
- package/dist/daemon/envHint.d.ts +5 -0
- package/dist/daemon/envHint.js +139 -0
- package/dist/daemon/envHint.js.map +1 -0
- package/dist/daemon/humanCron.d.ts +1 -0
- package/dist/daemon/humanCron.js +72 -0
- package/dist/daemon/humanCron.js.map +1 -0
- package/dist/daemon/humanOnce.d.ts +1 -0
- package/dist/daemon/humanOnce.js +54 -0
- package/dist/daemon/humanOnce.js.map +1 -0
- package/dist/daemon/index.d.ts +5 -0
- package/dist/daemon/index.js +168 -0
- package/dist/daemon/index.js.map +1 -0
- package/dist/daemon/launchd.d.ts +7 -0
- package/dist/daemon/launchd.js +93 -0
- package/dist/daemon/launchd.js.map +1 -0
- package/dist/daemon/log.d.ts +17 -0
- package/dist/daemon/log.js +57 -0
- package/dist/daemon/log.js.map +1 -0
- package/dist/daemon/paths.d.ts +11 -0
- package/dist/daemon/paths.js +27 -0
- package/dist/daemon/paths.js.map +1 -0
- package/dist/daemon/runTaskEntry.d.ts +1 -0
- package/dist/daemon/runTaskEntry.js +67 -0
- package/dist/daemon/runTaskEntry.js.map +1 -0
- package/dist/daemon/runner.d.ts +21 -0
- package/dist/daemon/runner.js +175 -0
- package/dist/daemon/runner.js.map +1 -0
- package/dist/daemon/scheduler.d.ts +5 -0
- package/dist/daemon/scheduler.js +162 -0
- package/dist/daemon/scheduler.js.map +1 -0
- package/dist/daemon/taskStore.d.ts +62 -0
- package/dist/daemon/taskStore.js +88 -0
- package/dist/daemon/taskStore.js.map +1 -0
- package/dist/daemon/triggers/calendar.d.ts +8 -0
- package/dist/daemon/triggers/calendar.js +248 -0
- package/dist/daemon/triggers/calendar.js.map +1 -0
- package/dist/daemon/triggers/childRunner.d.ts +14 -0
- package/dist/daemon/triggers/childRunner.js +111 -0
- package/dist/daemon/triggers/childRunner.js.map +1 -0
- package/dist/daemon/triggers/cron.d.ts +14 -0
- package/dist/daemon/triggers/cron.js +91 -0
- package/dist/daemon/triggers/cron.js.map +1 -0
- package/dist/daemon/triggers/file.d.ts +7 -0
- package/dist/daemon/triggers/file.js +123 -0
- package/dist/daemon/triggers/file.js.map +1 -0
- package/dist/daemon/triggers/once.d.ts +10 -0
- package/dist/daemon/triggers/once.js +80 -0
- package/dist/daemon/triggers/once.js.map +1 -0
- package/dist/index.js +240 -15
- package/dist/index.js.map +1 -1
- package/dist/llm.js +45 -2
- package/dist/llm.js.map +1 -1
- package/dist/loops/chain.js +8 -0
- package/dist/loops/chain.js.map +1 -1
- package/dist/loops/evaluator.js +8 -0
- package/dist/loops/evaluator.js.map +1 -1
- package/dist/loops/orchestrator.js +8 -0
- package/dist/loops/orchestrator.js.map +1 -1
- package/dist/loops/parallel.js.map +1 -1
- package/dist/loops/route.js +8 -0
- package/dist/loops/route.js.map +1 -1
- package/dist/loops/simple.js +15 -0
- package/dist/loops/simple.js.map +1 -1
- package/dist/permissions/index.d.ts +1 -1
- package/dist/permissions/index.js +1 -1
- package/dist/permissions/index.js.map +1 -1
- package/dist/permissions/loader.d.ts +20 -1
- package/dist/permissions/loader.js +51 -0
- package/dist/permissions/loader.js.map +1 -1
- package/dist/redact.d.ts +56 -0
- package/dist/redact.js +191 -0
- package/dist/redact.js.map +1 -0
- package/dist/skills/runner/applescript.d.ts +49 -0
- package/dist/skills/runner/applescript.js +100 -0
- package/dist/skills/runner/applescript.js.map +1 -0
- package/dist/skills/runner/dispatcher.d.ts +128 -0
- package/dist/skills/runner/dispatcher.js +617 -0
- package/dist/skills/runner/dispatcher.js.map +1 -0
- package/dist/skills/runner/dispatcher.test.d.ts +1 -0
- package/dist/skills/runner/dispatcher.test.js +141 -0
- package/dist/skills/runner/dispatcher.test.js.map +1 -0
- package/dist/skills/runner/kernel.d.ts +8 -0
- package/dist/skills/runner/kernel.js +731 -0
- package/dist/skills/runner/kernel.js.map +1 -0
- package/dist/skills/runner/nodeBackend.d.ts +32 -0
- package/dist/skills/runner/nodeBackend.js +147 -0
- package/dist/skills/runner/nodeBackend.js.map +1 -0
- package/dist/skills/runner/tokenizer.d.ts +36 -0
- package/dist/skills/runner/tokenizer.js +177 -0
- package/dist/skills/runner/tokenizer.js.map +1 -0
- package/dist/state/todos.d.ts +12 -0
- package/dist/state/todos.js +32 -0
- package/dist/state/todos.js.map +1 -0
- package/dist/threadCli.d.ts +11 -0
- package/dist/threadCli.js +177 -0
- package/dist/threadCli.js.map +1 -0
- package/dist/threadShare.d.ts +21 -0
- package/dist/threadShare.js +121 -0
- package/dist/threadShare.js.map +1 -0
- package/dist/threadSubmit.d.ts +32 -0
- package/dist/threadSubmit.js +199 -0
- package/dist/threadSubmit.js.map +1 -0
- package/dist/tools/askUser.d.ts +20 -0
- package/dist/tools/askUser.js +126 -0
- package/dist/tools/askUser.js.map +1 -0
- package/dist/tools/bash.js +63 -14
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/index.d.ts +24 -2
- package/dist/tools/index.js +54 -5
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/skillCall.d.ts +2 -0
- package/dist/tools/skillCall.js +77 -0
- package/dist/tools/skillCall.js.map +1 -0
- package/dist/tools/todoWrite.d.ts +2 -0
- package/dist/tools/todoWrite.js +141 -0
- package/dist/tools/todoWrite.js.map +1 -0
- package/dist/tools/yome.d.ts +2 -0
- package/dist/tools/yome.js +87 -0
- package/dist/tools/yome.js.map +1 -0
- package/dist/ui/AgentPicker.js +3 -3
- package/dist/ui/AgentPicker.js.map +1 -1
- package/dist/ui/App.js +263 -61
- package/dist/ui/App.js.map +1 -1
- package/dist/ui/AskUserPrompt.d.ts +7 -0
- package/dist/ui/AskUserPrompt.js +78 -0
- package/dist/ui/AskUserPrompt.js.map +1 -0
- package/dist/ui/Banner.d.ts +2 -1
- package/dist/ui/Banner.js +23 -4
- package/dist/ui/Banner.js.map +1 -1
- package/dist/ui/InputBar.js +25 -36
- package/dist/ui/InputBar.js.map +1 -1
- package/dist/ui/Markdown.d.ts +2 -2
- package/dist/ui/Markdown.js +22 -7
- package/dist/ui/Markdown.js.map +1 -1
- package/dist/ui/MarketplacePicker.d.ts +7 -0
- package/dist/ui/MarketplacePicker.js +122 -0
- package/dist/ui/MarketplacePicker.js.map +1 -0
- package/dist/ui/MessageList.d.ts +12 -1
- package/dist/ui/MessageList.js +72 -7
- package/dist/ui/MessageList.js.map +1 -1
- package/dist/ui/ModelPicker.js +4 -4
- package/dist/ui/ModelPicker.js.map +1 -1
- package/dist/ui/MultilineTextInput.d.ts +31 -0
- package/dist/ui/MultilineTextInput.js +393 -0
- package/dist/ui/MultilineTextInput.js.map +1 -0
- package/dist/ui/MultilineTextInput.test.d.ts +1 -0
- package/dist/ui/MultilineTextInput.test.js +30 -0
- package/dist/ui/MultilineTextInput.test.js.map +1 -0
- package/dist/ui/PermissionPrompt.d.ts +16 -4
- package/dist/ui/PermissionPrompt.js +60 -15
- package/dist/ui/PermissionPrompt.js.map +1 -1
- package/dist/ui/SessionPicker.js +2 -2
- package/dist/ui/SessionPicker.js.map +1 -1
- package/dist/ui/ShimmerText.d.ts +8 -0
- package/dist/ui/ShimmerText.js +40 -0
- package/dist/ui/ShimmerText.js.map +1 -0
- package/dist/ui/Spinner.js +3 -9
- package/dist/ui/Spinner.js.map +1 -1
- package/dist/ui/TodoPanel.d.ts +7 -0
- package/dist/ui/TodoPanel.js +36 -0
- package/dist/ui/TodoPanel.js.map +1 -0
- package/dist/ui/TogglePicker.js +4 -4
- package/dist/ui/TogglePicker.js.map +1 -1
- package/dist/ui/ToolResult.js +6 -0
- package/dist/ui/ToolResult.js.map +1 -1
- package/dist/ui/UnifiedSkillsPicker.d.ts +10 -0
- package/dist/ui/UnifiedSkillsPicker.js +63 -0
- package/dist/ui/UnifiedSkillsPicker.js.map +1 -0
- package/dist/ui/animation.d.ts +3 -0
- package/dist/ui/animation.js +48 -0
- package/dist/ui/animation.js.map +1 -0
- package/dist/ui/useThrottledStream.d.ts +7 -0
- package/dist/ui/useThrottledStream.js +63 -0
- package/dist/ui/useThrottledStream.js.map +1 -0
- package/dist/yomeSkills/auth.d.ts +20 -0
- package/dist/yomeSkills/auth.js +70 -0
- package/dist/yomeSkills/auth.js.map +1 -0
- package/dist/yomeSkills/blacklist.d.ts +33 -0
- package/dist/yomeSkills/blacklist.js +101 -0
- package/dist/yomeSkills/blacklist.js.map +1 -0
- package/dist/yomeSkills/capabilities.d.ts +54 -0
- package/dist/yomeSkills/capabilities.js +175 -0
- package/dist/yomeSkills/capabilities.js.map +1 -0
- package/dist/yomeSkills/capabilityGuard.d.ts +31 -0
- package/dist/yomeSkills/capabilityGuard.js +113 -0
- package/dist/yomeSkills/capabilityGuard.js.map +1 -0
- package/dist/yomeSkills/cli.d.ts +25 -0
- package/dist/yomeSkills/cli.js +624 -0
- package/dist/yomeSkills/cli.js.map +1 -0
- package/dist/yomeSkills/deprecate.d.ts +29 -0
- package/dist/yomeSkills/deprecate.js +99 -0
- package/dist/yomeSkills/deprecate.js.map +1 -0
- package/dist/yomeSkills/devLink.d.ts +17 -0
- package/dist/yomeSkills/devLink.js +91 -0
- package/dist/yomeSkills/devLink.js.map +1 -0
- package/dist/yomeSkills/doctor.d.ts +13 -0
- package/dist/yomeSkills/doctor.js +152 -0
- package/dist/yomeSkills/doctor.js.map +1 -0
- package/dist/yomeSkills/enable.d.ts +8 -0
- package/dist/yomeSkills/enable.js +67 -0
- package/dist/yomeSkills/enable.js.map +1 -0
- package/dist/yomeSkills/hubPing.d.ts +1 -0
- package/dist/yomeSkills/hubPing.js +41 -0
- package/dist/yomeSkills/hubPing.js.map +1 -0
- package/dist/yomeSkills/install.d.ts +18 -0
- package/dist/yomeSkills/install.js +143 -0
- package/dist/yomeSkills/install.js.map +1 -0
- package/dist/yomeSkills/installFromHubTarball.d.ts +26 -0
- package/dist/yomeSkills/installFromHubTarball.js +161 -0
- package/dist/yomeSkills/installFromHubTarball.js.map +1 -0
- package/dist/yomeSkills/installGithub.d.ts +33 -0
- package/dist/yomeSkills/installGithub.js +213 -0
- package/dist/yomeSkills/installGithub.js.map +1 -0
- package/dist/yomeSkills/installMeta.d.ts +8 -0
- package/dist/yomeSkills/installMeta.js +76 -0
- package/dist/yomeSkills/installMeta.js.map +1 -0
- package/dist/yomeSkills/integrity.d.ts +26 -0
- package/dist/yomeSkills/integrity.js +107 -0
- package/dist/yomeSkills/integrity.js.map +1 -0
- package/dist/yomeSkills/invoke.d.ts +29 -0
- package/dist/yomeSkills/invoke.js +135 -0
- package/dist/yomeSkills/invoke.js.map +1 -0
- package/dist/yomeSkills/list.d.ts +11 -0
- package/dist/yomeSkills/list.js +55 -0
- package/dist/yomeSkills/list.js.map +1 -0
- package/dist/yomeSkills/login.d.ts +41 -0
- package/dist/yomeSkills/login.js +221 -0
- package/dist/yomeSkills/login.js.map +1 -0
- package/dist/yomeSkills/manifest.d.ts +60 -0
- package/dist/yomeSkills/manifest.js +47 -0
- package/dist/yomeSkills/manifest.js.map +1 -0
- package/dist/yomeSkills/paths.d.ts +13 -0
- package/dist/yomeSkills/paths.js +33 -0
- package/dist/yomeSkills/paths.js.map +1 -0
- package/dist/yomeSkills/publish.d.ts +18 -0
- package/dist/yomeSkills/publish.js +114 -0
- package/dist/yomeSkills/publish.js.map +1 -0
- package/dist/yomeSkills/rollback.d.ts +10 -0
- package/dist/yomeSkills/rollback.js +83 -0
- package/dist/yomeSkills/rollback.js.map +1 -0
- package/dist/yomeSkills/search.d.ts +21 -0
- package/dist/yomeSkills/search.js +31 -0
- package/dist/yomeSkills/search.js.map +1 -0
- package/dist/yomeSkills/skillsIndex.d.ts +36 -0
- package/dist/yomeSkills/skillsIndex.js +111 -0
- package/dist/yomeSkills/skillsIndex.js.map +1 -0
- package/dist/yomeSkills/unified.d.ts +53 -0
- package/dist/yomeSkills/unified.js +187 -0
- package/dist/yomeSkills/unified.js.map +1 -0
- package/dist/yomeSkills/uninstall.d.ts +7 -0
- package/dist/yomeSkills/uninstall.js +22 -0
- package/dist/yomeSkills/uninstall.js.map +1 -0
- package/dist/yomeSkills/update.d.ts +18 -0
- package/dist/yomeSkills/update.js +75 -0
- package/dist/yomeSkills/update.js.map +1 -0
- package/dist/yomeSkills/validate.d.ts +11 -0
- package/dist/yomeSkills/validate.js +99 -0
- package/dist/yomeSkills/validate.js.map +1 -0
- package/package.json +23 -6
|
@@ -0,0 +1,624 @@
|
|
|
1
|
+
// `yome skill <subcommand>` dispatcher. Returns the desired process exit code.
|
|
2
|
+
import { installFromLocal } from './install.js';
|
|
3
|
+
import { installFromGithub, isGithubSource } from './installGithub.js';
|
|
4
|
+
import { installFromHubTarball } from './installFromHubTarball.js';
|
|
5
|
+
import { listInstalled } from './list.js';
|
|
6
|
+
import { uninstallBySlug } from './uninstall.js';
|
|
7
|
+
import { getYomeSkillsRoot } from './paths.js';
|
|
8
|
+
import { pingHubInstall } from './hubPing.js';
|
|
9
|
+
import { performLogin } from './login.js';
|
|
10
|
+
import { readAuthState, clearAuthState } from './auth.js';
|
|
11
|
+
import { setSkillEnabled, isSkillDisabled } from './enable.js';
|
|
12
|
+
import { updateSkills } from './update.js';
|
|
13
|
+
import { linkSkill, unlinkSkill } from './devLink.js';
|
|
14
|
+
import { publishSkill } from './publish.js';
|
|
15
|
+
import { deprecateSkillVersion, syncSkillFromHub } from './deprecate.js';
|
|
16
|
+
import { searchHub } from './search.js';
|
|
17
|
+
import { readInstallMeta } from './installMeta.js';
|
|
18
|
+
import { KNOWN_CAPABILITIES, normaliseDeclared, readAllowedCapabilities, grantCapability, revokeCapability, describeCapability, } from './capabilities.js';
|
|
19
|
+
import { refreshIndex } from './skillsIndex.js';
|
|
20
|
+
import { readManifest } from './manifest.js';
|
|
21
|
+
import { installPathForSlug } from './paths.js';
|
|
22
|
+
import { validateSkillDir } from './validate.js';
|
|
23
|
+
import { runDoctor } from './doctor.js';
|
|
24
|
+
import { rollbackBySlug } from './rollback.js';
|
|
25
|
+
export async function runSkillSubcommand(args, flags) {
|
|
26
|
+
const sub = args[0];
|
|
27
|
+
switch (sub) {
|
|
28
|
+
case 'install': return await doInstall(args.slice(1), flags);
|
|
29
|
+
case 'uninstall':
|
|
30
|
+
case 'rm': return doUninstall(args.slice(1));
|
|
31
|
+
case 'list':
|
|
32
|
+
case 'ls': return doList(flags);
|
|
33
|
+
case 'enable': return doEnable(args.slice(1), true);
|
|
34
|
+
case 'disable': return doEnable(args.slice(1), false);
|
|
35
|
+
case 'update': return doUpdate(args.slice(1), flags);
|
|
36
|
+
case 'link': return doLink(args.slice(1), flags);
|
|
37
|
+
case 'unlink': return doUnlink(args.slice(1));
|
|
38
|
+
case 'search': return await doSearch(args.slice(1), flags);
|
|
39
|
+
case 'publish': return await doPublish(args.slice(1), flags);
|
|
40
|
+
case 'deprecate': return await doDeprecate(args.slice(1), flags);
|
|
41
|
+
case 'sync': return await doSync(args.slice(1), flags);
|
|
42
|
+
case 'perms': return doPerms(args.slice(1), flags);
|
|
43
|
+
case 'validate': return doValidate(args.slice(1), flags);
|
|
44
|
+
case 'doctor': return doDoctor(flags);
|
|
45
|
+
case 'rollback': return await doRollback(args.slice(1), flags);
|
|
46
|
+
case undefined:
|
|
47
|
+
case 'help':
|
|
48
|
+
case '--help':
|
|
49
|
+
printSkillHelp();
|
|
50
|
+
return 0;
|
|
51
|
+
default:
|
|
52
|
+
console.error(`Unknown subcommand: yome skill ${sub}`);
|
|
53
|
+
printSkillHelp();
|
|
54
|
+
return 2;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// `yome login / logout / whoami` are top-level (no `skill` prefix), so
|
|
58
|
+
// the entry point in cli/src/index.tsx routes them straight here.
|
|
59
|
+
//
|
|
60
|
+
// Identity model: these talk to Yome (yome_token), not GitHub directly.
|
|
61
|
+
// GitHub is one of the providers the user can log in *through*.
|
|
62
|
+
const HUB_BASE = (process.env.YOME_HUB_BASE || 'https://yome.work').replace(/\/+$/, '');
|
|
63
|
+
export async function runLogin() {
|
|
64
|
+
const result = await performLogin();
|
|
65
|
+
if (!result.ok) {
|
|
66
|
+
console.error(`✗ login failed: ${result.reason}`);
|
|
67
|
+
if (result.code === 'yome_user_not_found') {
|
|
68
|
+
console.error(' Hint: open https://yome.work, sign in once with the same GitHub account, then re-run `yome login`.');
|
|
69
|
+
}
|
|
70
|
+
return 1;
|
|
71
|
+
}
|
|
72
|
+
const provider = result.state.provider_login ?? '(provider account)';
|
|
73
|
+
console.log(`✓ logged in to Yome as ${provider} via ${result.state.provider}`);
|
|
74
|
+
console.log(` yome user id: ${result.state.yome_user_id}`);
|
|
75
|
+
return 0;
|
|
76
|
+
}
|
|
77
|
+
export async function runLogout() {
|
|
78
|
+
const s = readAuthState();
|
|
79
|
+
if (!s) {
|
|
80
|
+
console.log('(was not logged in)');
|
|
81
|
+
return 0;
|
|
82
|
+
}
|
|
83
|
+
// Best-effort: tell the hub to revoke the token, then drop the local file.
|
|
84
|
+
try {
|
|
85
|
+
await fetch(`${HUB_BASE}/api/cli/auth/revoke`, {
|
|
86
|
+
method: 'POST',
|
|
87
|
+
headers: { Authorization: `Bearer ${s.yome_token}` },
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
catch { /* offline is fine — local clear still happens */ }
|
|
91
|
+
clearAuthState();
|
|
92
|
+
console.log('✓ logged out');
|
|
93
|
+
return 0;
|
|
94
|
+
}
|
|
95
|
+
export async function runWhoami() {
|
|
96
|
+
const s = readAuthState();
|
|
97
|
+
if (!s) {
|
|
98
|
+
console.log('Not logged in. Run `yome login`.');
|
|
99
|
+
return 0;
|
|
100
|
+
}
|
|
101
|
+
// Try to fetch the live view from the hub. Fall back to the cached
|
|
102
|
+
// ~/.yome/auth.json if the hub is unreachable so `whoami` still works
|
|
103
|
+
// offline.
|
|
104
|
+
try {
|
|
105
|
+
const r = await fetch(`${HUB_BASE}/api/cli/auth/whoami`, {
|
|
106
|
+
headers: { Authorization: `Bearer ${s.yome_token}` },
|
|
107
|
+
});
|
|
108
|
+
if (r.ok) {
|
|
109
|
+
const j = (await r.json());
|
|
110
|
+
if (j.ok && j.user) {
|
|
111
|
+
const u = j.user;
|
|
112
|
+
const ct = j.cli_token ?? {};
|
|
113
|
+
console.log(`Yome user: ${u.email ?? '(no email)'} (${u.user_id})`);
|
|
114
|
+
if (u.github_username)
|
|
115
|
+
console.log(` github: ${u.github_username}`);
|
|
116
|
+
console.log(` cli session: ${ct.client_label ?? 'yome-cli'}, provider=${ct.provider}, last_used=${ct.last_used_at}`);
|
|
117
|
+
console.log(` expires at: ${ct.expires_at}`);
|
|
118
|
+
return 0;
|
|
119
|
+
}
|
|
120
|
+
if (r.status === 401) {
|
|
121
|
+
console.error('✗ session is no longer valid — run `yome login`');
|
|
122
|
+
return 1;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
catch { /* fall through to cached */ }
|
|
127
|
+
// Offline / hub unreachable
|
|
128
|
+
console.log(`Yome user (cached): ${s.yome_user_id}`);
|
|
129
|
+
console.log(` provider: ${s.provider} (${s.provider_login ?? '?'})`);
|
|
130
|
+
console.log(` obtained at: ${s.obtained_at}`);
|
|
131
|
+
console.log(` expires at: ${s.expires_at || '(unknown)'}`);
|
|
132
|
+
console.log(' (hub unreachable — showing cached values)');
|
|
133
|
+
return 0;
|
|
134
|
+
}
|
|
135
|
+
// ── skill subcommands ───────────────────────────────────────────────
|
|
136
|
+
async function doInstall(args, flags) {
|
|
137
|
+
const source = args[0];
|
|
138
|
+
if (!source) {
|
|
139
|
+
console.error('Usage: yome skill install <source> [--version <semver>] [--force] [--verbose]');
|
|
140
|
+
console.error(' <source> can be:');
|
|
141
|
+
console.error(' @owner/name - resolve via hub (fastest)');
|
|
142
|
+
console.error(' github:owner/repo[@ref][#sub] - direct git clone');
|
|
143
|
+
console.error(' https://github.com/owner/repo - direct git clone');
|
|
144
|
+
console.error(' ./local/path - local directory');
|
|
145
|
+
return 2;
|
|
146
|
+
}
|
|
147
|
+
const installOpts = {
|
|
148
|
+
force: flags.force,
|
|
149
|
+
verbose: flags.verbose,
|
|
150
|
+
yes: flags.yes,
|
|
151
|
+
skipVerify: flags.skipVerify,
|
|
152
|
+
allowDeprecated: flags.allowDeprecated,
|
|
153
|
+
};
|
|
154
|
+
let result;
|
|
155
|
+
let installPath = 'local';
|
|
156
|
+
if (isHubSource(source)) {
|
|
157
|
+
// @owner/name — go straight to hub-cached tarball. Fall back to
|
|
158
|
+
// GitHub clone if the hub doesn't have the version (legacy / not
|
|
159
|
+
// yet backfilled).
|
|
160
|
+
installPath = 'hub';
|
|
161
|
+
const hubResult = await installFromHubTarball(source, { ...installOpts, version: flags.version });
|
|
162
|
+
if (hubResult.ok) {
|
|
163
|
+
result = hubResult;
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
// Try to recover via GitHub clone if hub answered with a
|
|
167
|
+
// recoverable reason. We resolve the github_full_name from the
|
|
168
|
+
// hub metadata first to construct the clone source.
|
|
169
|
+
const fallbackSource = await resolveGithubFallbackForSlug(source);
|
|
170
|
+
if (fallbackSource) {
|
|
171
|
+
installPath = 'github';
|
|
172
|
+
if (flags.verbose) {
|
|
173
|
+
console.log(`! hub tarball unavailable (${hubResult.reason}); falling back to ${fallbackSource}`);
|
|
174
|
+
}
|
|
175
|
+
result = await installFromGithub(fallbackSource, installOpts);
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
result = hubResult;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
else if (isGithubSource(source)) {
|
|
183
|
+
installPath = 'github';
|
|
184
|
+
result = await installFromGithub(source, installOpts);
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
installPath = 'local';
|
|
188
|
+
result = await installFromLocal(source, installOpts);
|
|
189
|
+
}
|
|
190
|
+
if (!result.ok) {
|
|
191
|
+
console.error(`✗ install failed: ${result.reason}`);
|
|
192
|
+
return 1;
|
|
193
|
+
}
|
|
194
|
+
const via = installPath === 'hub' ? ' [via hub]' : installPath === 'github' ? ' [via github]' : '';
|
|
195
|
+
console.log(`✓ installed ${result.slug} → ${result.installedAt} (${result.copiedFiles} files)${via}`);
|
|
196
|
+
if (result.slug) {
|
|
197
|
+
try {
|
|
198
|
+
await pingHubInstall(result.slug);
|
|
199
|
+
}
|
|
200
|
+
catch { /* unreachable */ }
|
|
201
|
+
}
|
|
202
|
+
return 0;
|
|
203
|
+
}
|
|
204
|
+
/** "@owner/name" — the public marketplace slug shape. */
|
|
205
|
+
function isHubSource(s) {
|
|
206
|
+
return /^@[a-z][\w.-]*\/[a-z][\w.-]*$/i.test(s.trim());
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Best-effort: ask the hub what GitHub repo a slug lives in so we can
|
|
210
|
+
* fall back to a git clone when the hub tarball isn't available. Returns
|
|
211
|
+
* a `github:owner/repo` source string or null if the lookup fails.
|
|
212
|
+
*/
|
|
213
|
+
async function resolveGithubFallbackForSlug(slug) {
|
|
214
|
+
const HUB_BASE = (process.env.YOME_HUB_BASE || 'https://yome.work').replace(/\/+$/, '');
|
|
215
|
+
try {
|
|
216
|
+
const r = await fetch(`${HUB_BASE}/api/hub/skills/${encodeURIComponent(slug)}`, {
|
|
217
|
+
headers: { Accept: 'application/json' },
|
|
218
|
+
});
|
|
219
|
+
if (!r.ok)
|
|
220
|
+
return null;
|
|
221
|
+
const j = (await r.json());
|
|
222
|
+
const full = j?.skill?.github_full_name;
|
|
223
|
+
if (!full || typeof full !== 'string' || !full.includes('/'))
|
|
224
|
+
return null;
|
|
225
|
+
return `github:${full}`;
|
|
226
|
+
}
|
|
227
|
+
catch {
|
|
228
|
+
return null;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
function doUninstall(args) {
|
|
232
|
+
const slug = args[0];
|
|
233
|
+
if (!slug) {
|
|
234
|
+
console.error('Usage: yome skill uninstall <@owner/name>');
|
|
235
|
+
return 2;
|
|
236
|
+
}
|
|
237
|
+
const result = uninstallBySlug(slug);
|
|
238
|
+
if (!result.ok) {
|
|
239
|
+
console.error(`✗ uninstall failed: ${result.reason}`);
|
|
240
|
+
return 1;
|
|
241
|
+
}
|
|
242
|
+
console.log(`✓ removed ${result.slug} (was at ${result.removedFrom})`);
|
|
243
|
+
return 0;
|
|
244
|
+
}
|
|
245
|
+
function doList(flags) {
|
|
246
|
+
const items = listInstalled();
|
|
247
|
+
// Enrich with status + source for the new STATUS / SOURCE columns.
|
|
248
|
+
const rows = items.map((i) => {
|
|
249
|
+
const meta = readInstallMeta(i.slug);
|
|
250
|
+
const disabled = isSkillDisabled(i.slug);
|
|
251
|
+
return {
|
|
252
|
+
slug: i.slug,
|
|
253
|
+
version: i.version,
|
|
254
|
+
domain: i.domain,
|
|
255
|
+
name: i.name ?? null,
|
|
256
|
+
status: disabled ? 'disabled' : 'enabled',
|
|
257
|
+
source: meta?.source ?? '(legacy)',
|
|
258
|
+
};
|
|
259
|
+
});
|
|
260
|
+
if (flags.json) {
|
|
261
|
+
process.stdout.write(JSON.stringify(rows, null, 2) + '\n');
|
|
262
|
+
return 0;
|
|
263
|
+
}
|
|
264
|
+
if (rows.length === 0) {
|
|
265
|
+
console.log(`No skills installed under ${getYomeSkillsRoot()}.`);
|
|
266
|
+
console.log('Try: yome skill install ./skills/yome-skill-ppt');
|
|
267
|
+
return 0;
|
|
268
|
+
}
|
|
269
|
+
console.log(`Installed skills (${getYomeSkillsRoot()}):`);
|
|
270
|
+
console.log('');
|
|
271
|
+
const slugW = Math.max(4, ...rows.map((r) => r.slug.length));
|
|
272
|
+
const verW = Math.max(7, ...rows.map((r) => r.version.length));
|
|
273
|
+
const domainW = Math.max(6, ...rows.map((r) => r.domain.length));
|
|
274
|
+
const statusW = Math.max(6, ...rows.map((r) => r.status.length));
|
|
275
|
+
const pad = (s, w) => s + ' '.repeat(Math.max(0, w - s.length));
|
|
276
|
+
console.log(` ${pad('SLUG', slugW)} ${pad('VERSION', verW)} ${pad('DOMAIN', domainW)} ${pad('STATUS', statusW)} SOURCE`);
|
|
277
|
+
for (const r of rows) {
|
|
278
|
+
console.log(` ${pad(r.slug, slugW)} ${pad(r.version, verW)} ${pad(r.domain, domainW)} ${pad(r.status, statusW)} ${r.source}`);
|
|
279
|
+
}
|
|
280
|
+
return 0;
|
|
281
|
+
}
|
|
282
|
+
function doEnable(args, enabled) {
|
|
283
|
+
const slug = args[0];
|
|
284
|
+
if (!slug) {
|
|
285
|
+
console.error(`Usage: yome skill ${enabled ? 'enable' : 'disable'} <@owner/name>`);
|
|
286
|
+
return 2;
|
|
287
|
+
}
|
|
288
|
+
const r = setSkillEnabled(slug, enabled);
|
|
289
|
+
if (!r.ok) {
|
|
290
|
+
console.error(`✗ ${enabled ? 'enable' : 'disable'} failed: ${r.reason}`);
|
|
291
|
+
return 1;
|
|
292
|
+
}
|
|
293
|
+
console.log(`✓ ${r.slug} is now ${r.state}`);
|
|
294
|
+
return 0;
|
|
295
|
+
}
|
|
296
|
+
async function doUpdate(args, flags) {
|
|
297
|
+
const slug = args[0]; // optional
|
|
298
|
+
const summary = await updateSkills(slug, { verbose: flags.verbose });
|
|
299
|
+
if (summary.rows.length === 0) {
|
|
300
|
+
console.log(slug ? `No installed skill named ${slug}.` : 'No skills installed.');
|
|
301
|
+
return 0;
|
|
302
|
+
}
|
|
303
|
+
for (const r of summary.rows) {
|
|
304
|
+
if (!r.ok) {
|
|
305
|
+
console.error(`✗ ${r.slug} ${r.reason}`);
|
|
306
|
+
continue;
|
|
307
|
+
}
|
|
308
|
+
if (r.changed) {
|
|
309
|
+
console.log(`↑ ${r.slug} ${r.before} → ${r.after}`);
|
|
310
|
+
}
|
|
311
|
+
else {
|
|
312
|
+
console.log(`= ${r.slug} ${r.before}${r.reason ? ` (${r.reason})` : ''}`);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
return summary.allOk ? 0 : 1;
|
|
316
|
+
}
|
|
317
|
+
function doLink(args, flags) {
|
|
318
|
+
const path = args[0];
|
|
319
|
+
if (!path) {
|
|
320
|
+
console.error('Usage: yome skill link <path-to-skill> [--force]');
|
|
321
|
+
return 2;
|
|
322
|
+
}
|
|
323
|
+
const r = linkSkill(path, { force: flags.force });
|
|
324
|
+
if (!r.ok) {
|
|
325
|
+
console.error(`✗ link failed: ${r.reason}`);
|
|
326
|
+
return 1;
|
|
327
|
+
}
|
|
328
|
+
console.log(`✓ linked ${r.slug} → ${r.installedAt} (target: ${r.linkedTo})`);
|
|
329
|
+
return 0;
|
|
330
|
+
}
|
|
331
|
+
function doUnlink(args) {
|
|
332
|
+
const slug = args[0];
|
|
333
|
+
if (!slug) {
|
|
334
|
+
console.error('Usage: yome skill unlink <@owner/name>');
|
|
335
|
+
return 2;
|
|
336
|
+
}
|
|
337
|
+
const r = unlinkSkill(slug);
|
|
338
|
+
if (!r.ok) {
|
|
339
|
+
console.error(`✗ unlink failed: ${r.reason}`);
|
|
340
|
+
return 1;
|
|
341
|
+
}
|
|
342
|
+
console.log(`✓ unlinked ${r.slug} (removed ${r.unlinkedAt})`);
|
|
343
|
+
return 0;
|
|
344
|
+
}
|
|
345
|
+
async function doSearch(args, flags) {
|
|
346
|
+
const query = args[0];
|
|
347
|
+
if (!query) {
|
|
348
|
+
console.error('Usage: yome skill search <query> [--json]');
|
|
349
|
+
return 2;
|
|
350
|
+
}
|
|
351
|
+
const r = await searchHub(query);
|
|
352
|
+
if (!r.ok) {
|
|
353
|
+
console.error(`✗ search failed: ${r.reason}`);
|
|
354
|
+
return 1;
|
|
355
|
+
}
|
|
356
|
+
if (flags.json) {
|
|
357
|
+
process.stdout.write(JSON.stringify(r.hits, null, 2) + '\n');
|
|
358
|
+
return 0;
|
|
359
|
+
}
|
|
360
|
+
if (r.hits.length === 0) {
|
|
361
|
+
console.log(`No skills match "${query}".`);
|
|
362
|
+
return 0;
|
|
363
|
+
}
|
|
364
|
+
const slugW = Math.max(4, ...r.hits.map((h) => h.slug.length));
|
|
365
|
+
const verW = Math.max(7, ...r.hits.map((h) => (h.latest_version ?? '-').length));
|
|
366
|
+
const pad = (s, w) => s + ' '.repeat(Math.max(0, w - s.length));
|
|
367
|
+
console.log(` ${pad('SLUG', slugW)} ${pad('VERSION', verW)} ★ ↓ NAME`);
|
|
368
|
+
for (const h of r.hits) {
|
|
369
|
+
const stars = String(h.star_count ?? 0).padStart(4);
|
|
370
|
+
const installs = String(h.install_count ?? 0).padStart(4);
|
|
371
|
+
const flag = h.is_official ? ' [OFFICIAL]' : '';
|
|
372
|
+
console.log(` ${pad(h.slug, slugW)} ${pad(h.latest_version ?? '-', verW)} ${stars} ${installs} ${h.name ?? ''}${flag}`);
|
|
373
|
+
}
|
|
374
|
+
return 0;
|
|
375
|
+
}
|
|
376
|
+
async function doPublish(_args, flags) {
|
|
377
|
+
const r = await publishSkill(process.cwd(), { force: flags.force });
|
|
378
|
+
if (!r.ok) {
|
|
379
|
+
console.error(`✗ publish failed: ${r.reason}`);
|
|
380
|
+
return 1;
|
|
381
|
+
}
|
|
382
|
+
if (r.outcome === 'noop_same_sha') {
|
|
383
|
+
console.log(`= ${r.slug} v${r.version} already up-to-date on hub (same sha, nothing to do)`);
|
|
384
|
+
}
|
|
385
|
+
else {
|
|
386
|
+
console.log(`✓ published ${r.slug} v${r.version}`);
|
|
387
|
+
}
|
|
388
|
+
return 0;
|
|
389
|
+
}
|
|
390
|
+
async function doDeprecate(args, flags) {
|
|
391
|
+
// Accept both `yome skill deprecate @owner/name@1.0.0` and the
|
|
392
|
+
// longer `yome skill deprecate @owner/name 1.0.0` form.
|
|
393
|
+
let slug;
|
|
394
|
+
let version;
|
|
395
|
+
if (args[0]?.includes('@', 1)) {
|
|
396
|
+
// @owner/name@1.0.0 — split on the LAST '@'.
|
|
397
|
+
const at = args[0].lastIndexOf('@');
|
|
398
|
+
slug = args[0].slice(0, at);
|
|
399
|
+
version = args[0].slice(at + 1);
|
|
400
|
+
}
|
|
401
|
+
else {
|
|
402
|
+
slug = args[0];
|
|
403
|
+
version = args[1];
|
|
404
|
+
}
|
|
405
|
+
if (!slug || !version) {
|
|
406
|
+
console.error('Usage: yome skill deprecate <@owner/name>@<version> [--reason "..."] [--replaced-by <semver>]');
|
|
407
|
+
return 2;
|
|
408
|
+
}
|
|
409
|
+
const r = await deprecateSkillVersion({
|
|
410
|
+
slug,
|
|
411
|
+
version,
|
|
412
|
+
reason: flags.reason ?? null,
|
|
413
|
+
replacedBy: flags.replacedBy ?? null,
|
|
414
|
+
});
|
|
415
|
+
if (flags.json) {
|
|
416
|
+
process.stdout.write(JSON.stringify(r, null, 2) + '\n');
|
|
417
|
+
return r.ok ? 0 : 1;
|
|
418
|
+
}
|
|
419
|
+
if (!r.ok) {
|
|
420
|
+
console.error(`✗ deprecate failed: ${r.reason}`);
|
|
421
|
+
return 1;
|
|
422
|
+
}
|
|
423
|
+
if (r.alreadyDeprecated) {
|
|
424
|
+
console.log(`= ${slug}@${version} was already deprecated (${r.deprecatedAt ?? '?'})`);
|
|
425
|
+
}
|
|
426
|
+
else {
|
|
427
|
+
const replaced = r.replacedBy ? `, users will be pointed at ${r.replacedBy}` : '';
|
|
428
|
+
console.log(`✓ deprecated ${slug}@${version}${replaced}`);
|
|
429
|
+
}
|
|
430
|
+
return 0;
|
|
431
|
+
}
|
|
432
|
+
async function doSync(args, flags) {
|
|
433
|
+
const slug = args[0];
|
|
434
|
+
if (!slug) {
|
|
435
|
+
console.error('Usage: yome skill sync <@owner/name>');
|
|
436
|
+
console.error(' Triggers the hub to re-pull the skill from its GitHub repo.');
|
|
437
|
+
return 2;
|
|
438
|
+
}
|
|
439
|
+
const r = await syncSkillFromHub({ slug });
|
|
440
|
+
if (flags.json) {
|
|
441
|
+
process.stdout.write(JSON.stringify(r, null, 2) + '\n');
|
|
442
|
+
return r.ok ? 0 : 1;
|
|
443
|
+
}
|
|
444
|
+
if (!r.ok) {
|
|
445
|
+
console.error(`✗ sync failed: ${r.reason}`);
|
|
446
|
+
if (r.code === 'not_implemented_yet') {
|
|
447
|
+
console.error(' (the manual-sync pipeline lands in the next hub release; for now run');
|
|
448
|
+
console.error(' `yome skill publish` from a clean clone of the repo.)');
|
|
449
|
+
}
|
|
450
|
+
return 1;
|
|
451
|
+
}
|
|
452
|
+
console.log(`✓ synced ${slug}`);
|
|
453
|
+
return 0;
|
|
454
|
+
}
|
|
455
|
+
function doPerms(args, flags) {
|
|
456
|
+
const slug = args[0];
|
|
457
|
+
if (!slug) {
|
|
458
|
+
console.error('Usage: yome skill perms <@owner/name> [--grant=<cap>] [--revoke=<cap>]');
|
|
459
|
+
console.error(`Capabilities: ${KNOWN_CAPABILITIES.join(', ')}`);
|
|
460
|
+
return 2;
|
|
461
|
+
}
|
|
462
|
+
const dir = installPathForSlug(slug);
|
|
463
|
+
if (!dir) {
|
|
464
|
+
console.error(`malformed slug: ${slug}`);
|
|
465
|
+
return 2;
|
|
466
|
+
}
|
|
467
|
+
const manifest = readManifest(dir);
|
|
468
|
+
if (!manifest) {
|
|
469
|
+
console.error(`✗ ${slug} is not installed`);
|
|
470
|
+
return 1;
|
|
471
|
+
}
|
|
472
|
+
const declared = normaliseDeclared(manifest.system_capabilities);
|
|
473
|
+
// Mutating action?
|
|
474
|
+
const cap = (flags.grant ?? flags.revoke);
|
|
475
|
+
if (cap) {
|
|
476
|
+
if (!KNOWN_CAPABILITIES.includes(cap)) {
|
|
477
|
+
console.error(`unknown capability: ${cap} (allowed: ${KNOWN_CAPABILITIES.join(', ')})`);
|
|
478
|
+
return 2;
|
|
479
|
+
}
|
|
480
|
+
if (flags.grant && !declared.includes(cap)) {
|
|
481
|
+
console.error(`✗ cannot grant "${cap}" — not declared in manifest (declared: ${declared.join(', ') || '(none)'})`);
|
|
482
|
+
return 1;
|
|
483
|
+
}
|
|
484
|
+
const changed = flags.grant ? grantCapability(slug, cap) : revokeCapability(slug, cap);
|
|
485
|
+
if (changed) {
|
|
486
|
+
try {
|
|
487
|
+
refreshIndex();
|
|
488
|
+
}
|
|
489
|
+
catch { /* best-effort */ }
|
|
490
|
+
console.log(`✓ ${flags.grant ? 'granted' : 'revoked'} ${cap} on ${slug}`);
|
|
491
|
+
}
|
|
492
|
+
else {
|
|
493
|
+
console.log(`(${cap} was already ${flags.grant ? 'granted' : 'not granted'})`);
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
// Print current state.
|
|
497
|
+
const ac = readAllowedCapabilities(slug);
|
|
498
|
+
const allowed = ac?.allowed ?? [];
|
|
499
|
+
if (flags.json) {
|
|
500
|
+
process.stdout.write(JSON.stringify({ slug, declared, allowed, granted_at: ac?.granted_at, granted_by: ac?.granted_by }, null, 2) + '\n');
|
|
501
|
+
return 0;
|
|
502
|
+
}
|
|
503
|
+
console.log(`Capabilities for ${slug}:`);
|
|
504
|
+
if (declared.length === 0) {
|
|
505
|
+
console.log(' (manifest declares no capabilities)');
|
|
506
|
+
}
|
|
507
|
+
else {
|
|
508
|
+
for (const c of declared) {
|
|
509
|
+
const mark = allowed.includes(c) ? '[x]' : '[ ]';
|
|
510
|
+
console.log(` ${mark} ${c.padEnd(12)} ${describeCapability(c)}`);
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
if (ac)
|
|
514
|
+
console.log(` (granted ${ac.granted_at} by ${ac.granted_by})`);
|
|
515
|
+
return 0;
|
|
516
|
+
}
|
|
517
|
+
function doValidate(args, flags) {
|
|
518
|
+
const target = args[0] ?? '.';
|
|
519
|
+
const r = validateSkillDir(target);
|
|
520
|
+
if (flags.json) {
|
|
521
|
+
process.stdout.write(JSON.stringify(r, null, 2) + '\n');
|
|
522
|
+
return r.ok ? 0 : 1;
|
|
523
|
+
}
|
|
524
|
+
if (r.manifest) {
|
|
525
|
+
console.log(`Validating ${r.manifest.slug} v${r.manifest.version} (domain=${r.manifest.domain})`);
|
|
526
|
+
}
|
|
527
|
+
for (const w of r.warnings)
|
|
528
|
+
console.log(` ! ${w}`);
|
|
529
|
+
for (const e of r.errors)
|
|
530
|
+
console.log(` ✗ ${e}`);
|
|
531
|
+
if (r.ok) {
|
|
532
|
+
console.log(`✓ ${r.manifest ? r.manifest.slug : target} passes validation` +
|
|
533
|
+
(r.warnings.length ? ` (${r.warnings.length} warning${r.warnings.length === 1 ? '' : 's'})` : ''));
|
|
534
|
+
return 0;
|
|
535
|
+
}
|
|
536
|
+
console.error(`✗ validation failed (${r.errors.length} error${r.errors.length === 1 ? '' : 's'})`);
|
|
537
|
+
return 1;
|
|
538
|
+
}
|
|
539
|
+
function doDoctor(flags) {
|
|
540
|
+
const r = runDoctor();
|
|
541
|
+
if (flags.json) {
|
|
542
|
+
process.stdout.write(JSON.stringify(r, null, 2) + '\n');
|
|
543
|
+
return r.ok ? 0 : 1;
|
|
544
|
+
}
|
|
545
|
+
console.log(`Scanned ${r.scanned} installed skill${r.scanned === 1 ? '' : 's'}.`);
|
|
546
|
+
if (r.issues.length === 0) {
|
|
547
|
+
console.log('✓ no issues found');
|
|
548
|
+
return 0;
|
|
549
|
+
}
|
|
550
|
+
for (const it of r.issues) {
|
|
551
|
+
const tag = it.level === 'error' ? '✗ ERROR ' : '! warning';
|
|
552
|
+
const where = it.slug ? ` ${it.slug}` : '';
|
|
553
|
+
console.log(` ${tag}${where}: ${it.message}`);
|
|
554
|
+
}
|
|
555
|
+
const errCount = r.issues.filter(i => i.level === 'error').length;
|
|
556
|
+
return errCount === 0 ? 0 : 1;
|
|
557
|
+
}
|
|
558
|
+
async function doRollback(args, flags) {
|
|
559
|
+
const slug = args[0];
|
|
560
|
+
if (!slug) {
|
|
561
|
+
console.error('Usage: yome skill rollback <slug>');
|
|
562
|
+
return 2;
|
|
563
|
+
}
|
|
564
|
+
const r = await rollbackBySlug(slug);
|
|
565
|
+
if (flags.json) {
|
|
566
|
+
process.stdout.write(JSON.stringify(r, null, 2) + '\n');
|
|
567
|
+
return r.ok ? 0 : 1;
|
|
568
|
+
}
|
|
569
|
+
if (!r.ok) {
|
|
570
|
+
console.error(`✗ rollback failed: ${r.reason ?? 'unknown error'}`);
|
|
571
|
+
return 1;
|
|
572
|
+
}
|
|
573
|
+
const from = r.previousVersion ? ` from ${r.previousVersion}` : '';
|
|
574
|
+
const to = r.restoredVersion ? ` to ${r.restoredVersion}` : '';
|
|
575
|
+
console.log(`✓ rolled back ${r.slug ?? slug}${from}${to}`);
|
|
576
|
+
return 0;
|
|
577
|
+
}
|
|
578
|
+
function printSkillHelp() {
|
|
579
|
+
console.log(`
|
|
580
|
+
yome skill — manage installed yome-skill.json skills
|
|
581
|
+
|
|
582
|
+
Subcommands:
|
|
583
|
+
install <source> Install from local dir, github:owner/repo[@ref][#subpath],
|
|
584
|
+
or https://github.com/owner/repo[/tree/<ref>/<subpath>]
|
|
585
|
+
uninstall <slug> Remove an installed skill
|
|
586
|
+
list Show all installed skills (--json for machine-readable)
|
|
587
|
+
enable <slug> Enable a previously-disabled skill
|
|
588
|
+
disable <slug> Disable a skill (agent loader will skip it)
|
|
589
|
+
update [<slug>] Re-pull installed skills from their original source
|
|
590
|
+
link <path> Symlink a working dir into the registry (dev mode)
|
|
591
|
+
unlink <slug> Remove a dev-link
|
|
592
|
+
search <query> Search the public hub (--json for machine-readable)
|
|
593
|
+
publish Publish the cwd skill to the hub (requires 'yome login')
|
|
594
|
+
deprecate <slug>@<version>
|
|
595
|
+
Mark a published version as deprecated (--reason "..."
|
|
596
|
+
--replaced-by <semver>). Hub stops serving it as the
|
|
597
|
+
default; --version <v> install still works.
|
|
598
|
+
sync <slug> Ask the hub to re-pull the skill from GitHub right
|
|
599
|
+
now (manual rescue when webhook delivery was lost).
|
|
600
|
+
perms <slug> View / change capability grants
|
|
601
|
+
e.g. yome skill perms @yome/ppt --revoke=fs:write
|
|
602
|
+
validate [<path>] Lint a skill directory (defaults to cwd)
|
|
603
|
+
doctor Sanity-check the local skill registry
|
|
604
|
+
rollback <slug> Swap back to the previous version (one level of undo)
|
|
605
|
+
|
|
606
|
+
Top-level commands (run as 'yome login', not 'yome skill login'):
|
|
607
|
+
login GitHub OAuth Device Flow
|
|
608
|
+
logout Forget the saved credentials
|
|
609
|
+
whoami Show currently logged-in user
|
|
610
|
+
|
|
611
|
+
Examples:
|
|
612
|
+
yome skill install ./skills/yome-skill-ppt
|
|
613
|
+
yome skill install github:Whopus/yome-skill-ppt
|
|
614
|
+
yome skill list
|
|
615
|
+
yome skill disable @yome/ppt
|
|
616
|
+
yome skill update @yome/ppt
|
|
617
|
+
yome skill link ./my-new-skill
|
|
618
|
+
yome login
|
|
619
|
+
yome skill publish
|
|
620
|
+
yome skill deprecate @yome/ppt@1.0.0 --reason "force-pushed; sha drift" --replaced-by 1.0.1
|
|
621
|
+
yome skill sync @yome/ppt
|
|
622
|
+
`);
|
|
623
|
+
}
|
|
624
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/yomeSkills/cli.ts"],"names":[],"mappings":"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"}
|