@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.
Files changed (276) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +11 -0
  3. package/README.md +306 -27
  4. package/README.zh-CN.md +333 -0
  5. package/bin/yome-calwatch +0 -0
  6. package/dist/agent.d.ts +24 -2
  7. package/dist/agent.js +34 -2
  8. package/dist/agent.js.map +1 -1
  9. package/dist/context.d.ts +2 -0
  10. package/dist/context.js +121 -13
  11. package/dist/context.js.map +1 -1
  12. package/dist/daemon/calendarPermission.d.ts +10 -0
  13. package/dist/daemon/calendarPermission.js +68 -0
  14. package/dist/daemon/calendarPermission.js.map +1 -0
  15. package/dist/daemon/cronCli.d.ts +19 -0
  16. package/dist/daemon/cronCli.js +403 -0
  17. package/dist/daemon/cronCli.js.map +1 -0
  18. package/dist/daemon/envHint.d.ts +5 -0
  19. package/dist/daemon/envHint.js +139 -0
  20. package/dist/daemon/envHint.js.map +1 -0
  21. package/dist/daemon/humanCron.d.ts +1 -0
  22. package/dist/daemon/humanCron.js +72 -0
  23. package/dist/daemon/humanCron.js.map +1 -0
  24. package/dist/daemon/humanOnce.d.ts +1 -0
  25. package/dist/daemon/humanOnce.js +54 -0
  26. package/dist/daemon/humanOnce.js.map +1 -0
  27. package/dist/daemon/index.d.ts +5 -0
  28. package/dist/daemon/index.js +168 -0
  29. package/dist/daemon/index.js.map +1 -0
  30. package/dist/daemon/launchd.d.ts +7 -0
  31. package/dist/daemon/launchd.js +93 -0
  32. package/dist/daemon/launchd.js.map +1 -0
  33. package/dist/daemon/log.d.ts +17 -0
  34. package/dist/daemon/log.js +57 -0
  35. package/dist/daemon/log.js.map +1 -0
  36. package/dist/daemon/paths.d.ts +11 -0
  37. package/dist/daemon/paths.js +27 -0
  38. package/dist/daemon/paths.js.map +1 -0
  39. package/dist/daemon/runTaskEntry.d.ts +1 -0
  40. package/dist/daemon/runTaskEntry.js +67 -0
  41. package/dist/daemon/runTaskEntry.js.map +1 -0
  42. package/dist/daemon/runner.d.ts +21 -0
  43. package/dist/daemon/runner.js +175 -0
  44. package/dist/daemon/runner.js.map +1 -0
  45. package/dist/daemon/scheduler.d.ts +5 -0
  46. package/dist/daemon/scheduler.js +162 -0
  47. package/dist/daemon/scheduler.js.map +1 -0
  48. package/dist/daemon/taskStore.d.ts +62 -0
  49. package/dist/daemon/taskStore.js +88 -0
  50. package/dist/daemon/taskStore.js.map +1 -0
  51. package/dist/daemon/triggers/calendar.d.ts +8 -0
  52. package/dist/daemon/triggers/calendar.js +248 -0
  53. package/dist/daemon/triggers/calendar.js.map +1 -0
  54. package/dist/daemon/triggers/childRunner.d.ts +14 -0
  55. package/dist/daemon/triggers/childRunner.js +111 -0
  56. package/dist/daemon/triggers/childRunner.js.map +1 -0
  57. package/dist/daemon/triggers/cron.d.ts +14 -0
  58. package/dist/daemon/triggers/cron.js +91 -0
  59. package/dist/daemon/triggers/cron.js.map +1 -0
  60. package/dist/daemon/triggers/file.d.ts +7 -0
  61. package/dist/daemon/triggers/file.js +123 -0
  62. package/dist/daemon/triggers/file.js.map +1 -0
  63. package/dist/daemon/triggers/once.d.ts +10 -0
  64. package/dist/daemon/triggers/once.js +80 -0
  65. package/dist/daemon/triggers/once.js.map +1 -0
  66. package/dist/index.js +240 -15
  67. package/dist/index.js.map +1 -1
  68. package/dist/llm.js +45 -2
  69. package/dist/llm.js.map +1 -1
  70. package/dist/loops/chain.js +8 -0
  71. package/dist/loops/chain.js.map +1 -1
  72. package/dist/loops/evaluator.js +8 -0
  73. package/dist/loops/evaluator.js.map +1 -1
  74. package/dist/loops/orchestrator.js +8 -0
  75. package/dist/loops/orchestrator.js.map +1 -1
  76. package/dist/loops/parallel.js.map +1 -1
  77. package/dist/loops/route.js +8 -0
  78. package/dist/loops/route.js.map +1 -1
  79. package/dist/loops/simple.js +15 -0
  80. package/dist/loops/simple.js.map +1 -1
  81. package/dist/permissions/index.d.ts +1 -1
  82. package/dist/permissions/index.js +1 -1
  83. package/dist/permissions/index.js.map +1 -1
  84. package/dist/permissions/loader.d.ts +20 -1
  85. package/dist/permissions/loader.js +51 -0
  86. package/dist/permissions/loader.js.map +1 -1
  87. package/dist/redact.d.ts +56 -0
  88. package/dist/redact.js +191 -0
  89. package/dist/redact.js.map +1 -0
  90. package/dist/skills/runner/applescript.d.ts +49 -0
  91. package/dist/skills/runner/applescript.js +100 -0
  92. package/dist/skills/runner/applescript.js.map +1 -0
  93. package/dist/skills/runner/dispatcher.d.ts +128 -0
  94. package/dist/skills/runner/dispatcher.js +617 -0
  95. package/dist/skills/runner/dispatcher.js.map +1 -0
  96. package/dist/skills/runner/dispatcher.test.d.ts +1 -0
  97. package/dist/skills/runner/dispatcher.test.js +141 -0
  98. package/dist/skills/runner/dispatcher.test.js.map +1 -0
  99. package/dist/skills/runner/kernel.d.ts +8 -0
  100. package/dist/skills/runner/kernel.js +731 -0
  101. package/dist/skills/runner/kernel.js.map +1 -0
  102. package/dist/skills/runner/nodeBackend.d.ts +32 -0
  103. package/dist/skills/runner/nodeBackend.js +147 -0
  104. package/dist/skills/runner/nodeBackend.js.map +1 -0
  105. package/dist/skills/runner/tokenizer.d.ts +36 -0
  106. package/dist/skills/runner/tokenizer.js +177 -0
  107. package/dist/skills/runner/tokenizer.js.map +1 -0
  108. package/dist/state/todos.d.ts +12 -0
  109. package/dist/state/todos.js +32 -0
  110. package/dist/state/todos.js.map +1 -0
  111. package/dist/threadCli.d.ts +11 -0
  112. package/dist/threadCli.js +177 -0
  113. package/dist/threadCli.js.map +1 -0
  114. package/dist/threadShare.d.ts +21 -0
  115. package/dist/threadShare.js +121 -0
  116. package/dist/threadShare.js.map +1 -0
  117. package/dist/threadSubmit.d.ts +32 -0
  118. package/dist/threadSubmit.js +199 -0
  119. package/dist/threadSubmit.js.map +1 -0
  120. package/dist/tools/askUser.d.ts +20 -0
  121. package/dist/tools/askUser.js +126 -0
  122. package/dist/tools/askUser.js.map +1 -0
  123. package/dist/tools/bash.js +63 -14
  124. package/dist/tools/bash.js.map +1 -1
  125. package/dist/tools/index.d.ts +24 -2
  126. package/dist/tools/index.js +54 -5
  127. package/dist/tools/index.js.map +1 -1
  128. package/dist/tools/skillCall.d.ts +2 -0
  129. package/dist/tools/skillCall.js +77 -0
  130. package/dist/tools/skillCall.js.map +1 -0
  131. package/dist/tools/todoWrite.d.ts +2 -0
  132. package/dist/tools/todoWrite.js +141 -0
  133. package/dist/tools/todoWrite.js.map +1 -0
  134. package/dist/tools/yome.d.ts +2 -0
  135. package/dist/tools/yome.js +87 -0
  136. package/dist/tools/yome.js.map +1 -0
  137. package/dist/ui/AgentPicker.js +3 -3
  138. package/dist/ui/AgentPicker.js.map +1 -1
  139. package/dist/ui/App.js +263 -61
  140. package/dist/ui/App.js.map +1 -1
  141. package/dist/ui/AskUserPrompt.d.ts +7 -0
  142. package/dist/ui/AskUserPrompt.js +78 -0
  143. package/dist/ui/AskUserPrompt.js.map +1 -0
  144. package/dist/ui/Banner.d.ts +2 -1
  145. package/dist/ui/Banner.js +23 -4
  146. package/dist/ui/Banner.js.map +1 -1
  147. package/dist/ui/InputBar.js +25 -36
  148. package/dist/ui/InputBar.js.map +1 -1
  149. package/dist/ui/Markdown.d.ts +2 -2
  150. package/dist/ui/Markdown.js +22 -7
  151. package/dist/ui/Markdown.js.map +1 -1
  152. package/dist/ui/MarketplacePicker.d.ts +7 -0
  153. package/dist/ui/MarketplacePicker.js +122 -0
  154. package/dist/ui/MarketplacePicker.js.map +1 -0
  155. package/dist/ui/MessageList.d.ts +12 -1
  156. package/dist/ui/MessageList.js +72 -7
  157. package/dist/ui/MessageList.js.map +1 -1
  158. package/dist/ui/ModelPicker.js +4 -4
  159. package/dist/ui/ModelPicker.js.map +1 -1
  160. package/dist/ui/MultilineTextInput.d.ts +31 -0
  161. package/dist/ui/MultilineTextInput.js +393 -0
  162. package/dist/ui/MultilineTextInput.js.map +1 -0
  163. package/dist/ui/MultilineTextInput.test.d.ts +1 -0
  164. package/dist/ui/MultilineTextInput.test.js +30 -0
  165. package/dist/ui/MultilineTextInput.test.js.map +1 -0
  166. package/dist/ui/PermissionPrompt.d.ts +16 -4
  167. package/dist/ui/PermissionPrompt.js +60 -15
  168. package/dist/ui/PermissionPrompt.js.map +1 -1
  169. package/dist/ui/SessionPicker.js +2 -2
  170. package/dist/ui/SessionPicker.js.map +1 -1
  171. package/dist/ui/ShimmerText.d.ts +8 -0
  172. package/dist/ui/ShimmerText.js +40 -0
  173. package/dist/ui/ShimmerText.js.map +1 -0
  174. package/dist/ui/Spinner.js +3 -9
  175. package/dist/ui/Spinner.js.map +1 -1
  176. package/dist/ui/TodoPanel.d.ts +7 -0
  177. package/dist/ui/TodoPanel.js +36 -0
  178. package/dist/ui/TodoPanel.js.map +1 -0
  179. package/dist/ui/TogglePicker.js +4 -4
  180. package/dist/ui/TogglePicker.js.map +1 -1
  181. package/dist/ui/ToolResult.js +6 -0
  182. package/dist/ui/ToolResult.js.map +1 -1
  183. package/dist/ui/UnifiedSkillsPicker.d.ts +10 -0
  184. package/dist/ui/UnifiedSkillsPicker.js +63 -0
  185. package/dist/ui/UnifiedSkillsPicker.js.map +1 -0
  186. package/dist/ui/animation.d.ts +3 -0
  187. package/dist/ui/animation.js +48 -0
  188. package/dist/ui/animation.js.map +1 -0
  189. package/dist/ui/useThrottledStream.d.ts +7 -0
  190. package/dist/ui/useThrottledStream.js +63 -0
  191. package/dist/ui/useThrottledStream.js.map +1 -0
  192. package/dist/yomeSkills/auth.d.ts +20 -0
  193. package/dist/yomeSkills/auth.js +70 -0
  194. package/dist/yomeSkills/auth.js.map +1 -0
  195. package/dist/yomeSkills/blacklist.d.ts +33 -0
  196. package/dist/yomeSkills/blacklist.js +101 -0
  197. package/dist/yomeSkills/blacklist.js.map +1 -0
  198. package/dist/yomeSkills/capabilities.d.ts +54 -0
  199. package/dist/yomeSkills/capabilities.js +175 -0
  200. package/dist/yomeSkills/capabilities.js.map +1 -0
  201. package/dist/yomeSkills/capabilityGuard.d.ts +31 -0
  202. package/dist/yomeSkills/capabilityGuard.js +113 -0
  203. package/dist/yomeSkills/capabilityGuard.js.map +1 -0
  204. package/dist/yomeSkills/cli.d.ts +25 -0
  205. package/dist/yomeSkills/cli.js +624 -0
  206. package/dist/yomeSkills/cli.js.map +1 -0
  207. package/dist/yomeSkills/deprecate.d.ts +29 -0
  208. package/dist/yomeSkills/deprecate.js +99 -0
  209. package/dist/yomeSkills/deprecate.js.map +1 -0
  210. package/dist/yomeSkills/devLink.d.ts +17 -0
  211. package/dist/yomeSkills/devLink.js +91 -0
  212. package/dist/yomeSkills/devLink.js.map +1 -0
  213. package/dist/yomeSkills/doctor.d.ts +13 -0
  214. package/dist/yomeSkills/doctor.js +152 -0
  215. package/dist/yomeSkills/doctor.js.map +1 -0
  216. package/dist/yomeSkills/enable.d.ts +8 -0
  217. package/dist/yomeSkills/enable.js +67 -0
  218. package/dist/yomeSkills/enable.js.map +1 -0
  219. package/dist/yomeSkills/hubPing.d.ts +1 -0
  220. package/dist/yomeSkills/hubPing.js +41 -0
  221. package/dist/yomeSkills/hubPing.js.map +1 -0
  222. package/dist/yomeSkills/install.d.ts +18 -0
  223. package/dist/yomeSkills/install.js +143 -0
  224. package/dist/yomeSkills/install.js.map +1 -0
  225. package/dist/yomeSkills/installFromHubTarball.d.ts +26 -0
  226. package/dist/yomeSkills/installFromHubTarball.js +161 -0
  227. package/dist/yomeSkills/installFromHubTarball.js.map +1 -0
  228. package/dist/yomeSkills/installGithub.d.ts +33 -0
  229. package/dist/yomeSkills/installGithub.js +213 -0
  230. package/dist/yomeSkills/installGithub.js.map +1 -0
  231. package/dist/yomeSkills/installMeta.d.ts +8 -0
  232. package/dist/yomeSkills/installMeta.js +76 -0
  233. package/dist/yomeSkills/installMeta.js.map +1 -0
  234. package/dist/yomeSkills/integrity.d.ts +26 -0
  235. package/dist/yomeSkills/integrity.js +107 -0
  236. package/dist/yomeSkills/integrity.js.map +1 -0
  237. package/dist/yomeSkills/invoke.d.ts +29 -0
  238. package/dist/yomeSkills/invoke.js +135 -0
  239. package/dist/yomeSkills/invoke.js.map +1 -0
  240. package/dist/yomeSkills/list.d.ts +11 -0
  241. package/dist/yomeSkills/list.js +55 -0
  242. package/dist/yomeSkills/list.js.map +1 -0
  243. package/dist/yomeSkills/login.d.ts +41 -0
  244. package/dist/yomeSkills/login.js +221 -0
  245. package/dist/yomeSkills/login.js.map +1 -0
  246. package/dist/yomeSkills/manifest.d.ts +60 -0
  247. package/dist/yomeSkills/manifest.js +47 -0
  248. package/dist/yomeSkills/manifest.js.map +1 -0
  249. package/dist/yomeSkills/paths.d.ts +13 -0
  250. package/dist/yomeSkills/paths.js +33 -0
  251. package/dist/yomeSkills/paths.js.map +1 -0
  252. package/dist/yomeSkills/publish.d.ts +18 -0
  253. package/dist/yomeSkills/publish.js +114 -0
  254. package/dist/yomeSkills/publish.js.map +1 -0
  255. package/dist/yomeSkills/rollback.d.ts +10 -0
  256. package/dist/yomeSkills/rollback.js +83 -0
  257. package/dist/yomeSkills/rollback.js.map +1 -0
  258. package/dist/yomeSkills/search.d.ts +21 -0
  259. package/dist/yomeSkills/search.js +31 -0
  260. package/dist/yomeSkills/search.js.map +1 -0
  261. package/dist/yomeSkills/skillsIndex.d.ts +36 -0
  262. package/dist/yomeSkills/skillsIndex.js +111 -0
  263. package/dist/yomeSkills/skillsIndex.js.map +1 -0
  264. package/dist/yomeSkills/unified.d.ts +53 -0
  265. package/dist/yomeSkills/unified.js +187 -0
  266. package/dist/yomeSkills/unified.js.map +1 -0
  267. package/dist/yomeSkills/uninstall.d.ts +7 -0
  268. package/dist/yomeSkills/uninstall.js +22 -0
  269. package/dist/yomeSkills/uninstall.js.map +1 -0
  270. package/dist/yomeSkills/update.d.ts +18 -0
  271. package/dist/yomeSkills/update.js +75 -0
  272. package/dist/yomeSkills/update.js.map +1 -0
  273. package/dist/yomeSkills/validate.d.ts +11 -0
  274. package/dist/yomeSkills/validate.js +99 -0
  275. package/dist/yomeSkills/validate.js.map +1 -0
  276. 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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"}