@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,141 @@
1
+ // cli/src/tools/todoWrite.ts
2
+ //
3
+ // `TodoWrite` — agent tool that creates / updates a session-scope task
4
+ // checklist. Mirrors Claude Code's TodoWriteTool semantics:
5
+ // - the agent always submits the FULL list (replacement, not patch)
6
+ // - exactly one item should be in_progress at a time (validated)
7
+ // - each item carries both `content` (imperative) and `activeForm`
8
+ // (present continuous) so the UI can show "Doing X" naturally
9
+ //
10
+ // State lives in cli/src/state/todos.ts; the UI subscribes to it.
11
+ import { setTodos } from '../state/todos.js';
12
+ const VALID_STATUS = new Set(['pending', 'in_progress', 'completed']);
13
+ const PROMPT = `Use this tool to create and maintain a structured checklist for the current task. It helps you organize multi-step work, demonstrate progress to the user, and avoid losing track of follow-ups discovered along the way.
14
+
15
+ ## When to use
16
+ 1. Multi-step work — 3 or more distinct actions
17
+ 2. Non-trivial tasks that need planning or several operations
18
+ 3. The user explicitly asks for a todo list, OR provides several tasks at once
19
+ 4. Right after receiving a fresh batch of instructions — capture them as todos
20
+ 5. The MOMENT you start working on an item — flip it to in_progress BEFORE you begin
21
+ 6. The MOMENT you finish an item — flip it to completed; don't batch completions
22
+ 7. When new follow-ups appear during implementation — add them
23
+
24
+ ## When NOT to use
25
+ 1. Single, trivial task
26
+ 2. Less than 3 meaningful steps
27
+ 3. Pure conversation / Q&A
28
+ If only one obvious step is needed, just do it.
29
+
30
+ ## Status discipline
31
+ - pending — not started
32
+ - in_progress — exactly ONE item should be in_progress at any time
33
+ - completed — only when fully verified (tests pass, files saved, command succeeded)
34
+
35
+ If something is blocked, KEEP it in_progress and add a new item describing the blocker. Never mark something completed when there's an unresolved error.
36
+
37
+ ## Field shape
38
+ Every item must have:
39
+ - content : imperative form, e.g. "Run the tests"
40
+ - activeForm : present continuous, e.g. "Running the tests"
41
+ - status : "pending" | "in_progress" | "completed"
42
+
43
+ ## Submission
44
+ You always send the COMPLETE list, not a patch. The previous list is replaced.
45
+ `;
46
+ const DESCRIPTION = 'Update the todo list for the current session. Use proactively for any task with 3+ steps. ' +
47
+ 'Always submit the FULL list (replacement, not patch). Keep exactly one item in_progress at a time. ' +
48
+ 'Each item needs `content` (imperative), `activeForm` (present continuous), and `status` ' +
49
+ '("pending" | "in_progress" | "completed").';
50
+ export const todoWriteTool = {
51
+ name: 'TodoWrite',
52
+ description: DESCRIPTION + '\n\n' + PROMPT,
53
+ inputSchema: {
54
+ type: 'object',
55
+ properties: {
56
+ todos: {
57
+ type: 'array',
58
+ description: 'The complete updated todo list (replaces the previous list).',
59
+ items: {
60
+ type: 'object',
61
+ properties: {
62
+ content: {
63
+ type: 'string',
64
+ description: 'Imperative form, e.g. "Run the tests".',
65
+ },
66
+ activeForm: {
67
+ type: 'string',
68
+ description: 'Present continuous form, e.g. "Running the tests".',
69
+ },
70
+ status: {
71
+ type: 'string',
72
+ enum: ['pending', 'in_progress', 'completed'],
73
+ description: 'Current state of the todo item.',
74
+ },
75
+ },
76
+ required: ['content', 'activeForm', 'status'],
77
+ },
78
+ },
79
+ },
80
+ required: ['todos'],
81
+ },
82
+ isReadOnly() { return false; },
83
+ // TodoWrite mutates session-scope memory only — no files, no shell, no
84
+ // network. There's nothing to ask the user about; auto-allow so the
85
+ // panel updates instantly without an approval prompt.
86
+ checkPermissions() {
87
+ return { behavior: 'allow' };
88
+ },
89
+ validateInput(input) {
90
+ if (!Array.isArray(input.todos)) {
91
+ return { valid: false, error: 'todos must be an array' };
92
+ }
93
+ let inProgressCount = 0;
94
+ for (let i = 0; i < input.todos.length; i++) {
95
+ const t = input.todos[i];
96
+ if (!t || typeof t !== 'object') {
97
+ return { valid: false, error: `todos[${i}] must be an object` };
98
+ }
99
+ if (typeof t.content !== 'string' || !t.content.trim()) {
100
+ return { valid: false, error: `todos[${i}].content must be a non-empty string` };
101
+ }
102
+ if (typeof t.activeForm !== 'string' || !t.activeForm.trim()) {
103
+ return { valid: false, error: `todos[${i}].activeForm must be a non-empty string` };
104
+ }
105
+ if (typeof t.status !== 'string' || !VALID_STATUS.has(t.status)) {
106
+ return {
107
+ valid: false,
108
+ error: `todos[${i}].status must be one of: pending, in_progress, completed`,
109
+ };
110
+ }
111
+ if (t.status === 'in_progress')
112
+ inProgressCount++;
113
+ }
114
+ if (inProgressCount > 1) {
115
+ return {
116
+ valid: false,
117
+ error: `at most one todo may be in_progress at a time (got ${inProgressCount})`,
118
+ };
119
+ }
120
+ return { valid: true };
121
+ },
122
+ async execute(input) {
123
+ const todos = input.todos.map((t) => ({
124
+ content: t.content.trim(),
125
+ activeForm: t.activeForm.trim(),
126
+ status: t.status,
127
+ }));
128
+ const allDone = todos.length > 0 && todos.every((t) => t.status === 'completed');
129
+ // When every item is done, drop the panel entirely (mirrors Claude
130
+ // Code's behaviour: a completed list has no further signal value
131
+ // and just adds visual noise above the next prompt). The agent is
132
+ // expected to write its final summary right after — the empty space
133
+ // gets reused immediately.
134
+ setTodos(allDone ? [] : todos);
135
+ if (allDone) {
136
+ return 'All todos completed — the task list has been cleared. Write your final summary now (or add follow-up items if work remains).';
137
+ }
138
+ return 'Todos updated. Keep working through the in_progress item; flip status as soon as it ships or as soon as a new step starts.';
139
+ },
140
+ };
141
+ //# sourceMappingURL=todoWrite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todoWrite.js","sourceRoot":"","sources":["../../src/tools/todoWrite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { ToolDef } from '../types.js';
2
+ export declare const yomeTool: ToolDef;
@@ -0,0 +1,87 @@
1
+ // cli/src/tools/yome.ts
2
+ //
3
+ // `Yome` — agent tool that runs an installed yome hub-skill command.
4
+ //
5
+ // This tool is the ONLY correct way to invoke installed skills (xl, ppt,
6
+ // cal, fs, rem, …). It accepts the same shorthand a human would type
7
+ // (`xl books`, `ppt new ~/Desktop/x.pptx`, `xl batch <<EOF…EOF`) and
8
+ // dispatches through the yome agentic kernel — same path the macOS app
9
+ // uses, with capability gating, AppleScript template render, argv
10
+ // parsing, and `--help` at three levels (global / domain / action).
11
+ //
12
+ // ── Why this is split from `Bash` ───────────────────────────────────
13
+ //
14
+ // Bash used to call `tryKernel()` *implicitly* before falling back to
15
+ // /bin/sh. That was confusing — the same `Bash(xl books)` call could be
16
+ // running AppleScript templates or shelling out, and when something
17
+ // went wrong (e.g. a stale install in ~/.yome/skills) it was hard for
18
+ // the user to tell which path actually executed.
19
+ //
20
+ // Now the routing is explicit:
21
+ //
22
+ // * `Yome` → only the yome kernel, no shell fallback. If the command
23
+ // is not a recognised hub-skill invocation, the tool returns an
24
+ // error explaining why instead of silently passing it to /bin/sh.
25
+ //
26
+ // * `Bash` → only system shell. No kernel intercept, no surprises.
27
+ //
28
+ // The agent is expected to pick the right tool from the start.
29
+ import { tryKernel } from '../skills/runner/kernel.js';
30
+ const MAX_OUTPUT = 20_000;
31
+ function formatOutput(stdout, stderr, exitCode) {
32
+ if (exitCode === 0) {
33
+ const result = stdout.trim();
34
+ if (result.length > MAX_OUTPUT) {
35
+ return result.slice(0, MAX_OUTPUT) + `\n\n[Output truncated at ${MAX_OUTPUT} chars]`;
36
+ }
37
+ return result || '(no output)';
38
+ }
39
+ const output = [stdout.trim(), stderr.trim()].filter(Boolean).join('\n');
40
+ return `Exit code: ${exitCode}\n${output}`;
41
+ }
42
+ export const yomeTool = {
43
+ name: 'Yome',
44
+ description: 'Invoke an installed yome hub-skill command (xl, ppt, cal, fs, rem, …). ' +
45
+ 'Pass the command line exactly as a human would type it: e.g. ' +
46
+ '`xl books`, `xl sheets`, `ppt new ~/Desktop/x.pptx`, `xl find 客户`. ' +
47
+ 'Supports `--help` at every level: `yome-skills` (list installed), ' +
48
+ '`<domain> --help` (list actions), `<domain> <action> --help` (action args), ' +
49
+ 'plus `<domain> batch` for stdin-fed multi-command runs. ' +
50
+ 'This tool ONLY runs hub-skill commands — it does NOT fall back to /bin/sh. ' +
51
+ 'For real shell operations (ls, cat, git, mkdir, …) use the Bash tool.',
52
+ inputSchema: {
53
+ type: 'object',
54
+ properties: {
55
+ command: {
56
+ type: 'string',
57
+ description: 'The skill command line. First token must be an installed skill domain ' +
58
+ '(see `yome-skills` for the list). Compound shell (pipes, redirects, `;`) ' +
59
+ 'is not supported here — use Bash for that.',
60
+ },
61
+ },
62
+ required: ['command'],
63
+ },
64
+ isReadOnly() { return false; },
65
+ validateInput(input) {
66
+ if (typeof input.command !== 'string' || !input.command.trim()) {
67
+ return { valid: false, error: 'command is required' };
68
+ }
69
+ return { valid: true };
70
+ },
71
+ async execute(input) {
72
+ const command = input.command.trim();
73
+ const k = await tryKernel(command);
74
+ if (!k.handled) {
75
+ return (`Exit code: 2\n` +
76
+ `Yome tool: command not recognised as a hub-skill invocation.\n` +
77
+ ` command: ${command}\n` +
78
+ `Possible causes:\n` +
79
+ ` - first token is not an installed skill domain (run \`yome-skills\` to list)\n` +
80
+ ` - first token is a reserved system command (ls, git, …) — use Bash for shell ops\n` +
81
+ ` - command is compound (pipes, &&, ;, redirects) — Yome runs single skill calls only\n` +
82
+ `If you intended a real shell command, retry with the Bash tool.`);
83
+ }
84
+ return formatOutput(k.stdout, k.stderr, k.exitCode);
85
+ },
86
+ };
87
+ //# sourceMappingURL=yome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yome.js","sourceRoot":"","sources":["../../src/tools/yome.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,EAAE;AACF,qEAAqE;AACrE,EAAE;AACF,yEAAyE;AACzE,qEAAqE;AACrE,qEAAqE;AACrE,uEAAuE;AACvE,kEAAkE;AAClE,oEAAoE;AACpE,EAAE;AACF,uEAAuE;AACvE,EAAE;AACF,sEAAsE;AACtE,wEAAwE;AACxE,oEAAoE;AACpE,sEAAsE;AACtE,iDAAiD;AACjD,EAAE;AACF,+BAA+B;AAC/B,EAAE;AACF,uEAAuE;AACvE,oEAAoE;AACpE,sEAAsE;AACtE,EAAE;AACF,qEAAqE;AACrE,EAAE;AACF,+DAA+D;AAG/D,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,MAAM,UAAU,GAAG,MAAM,CAAC;AAE1B,SAAS,YAAY,CAAC,MAAc,EAAE,MAAc,EAAE,QAAgB;IACpE,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;YAC/B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,4BAA4B,UAAU,SAAS,CAAC;QACvF,CAAC;QACD,OAAO,MAAM,IAAI,aAAa,CAAC;IACjC,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzE,OAAO,cAAc,QAAQ,KAAK,MAAM,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,MAAM,QAAQ,GAAY;IAC/B,IAAI,EAAE,MAAM;IACZ,WAAW,EACT,yEAAyE;QACzE,+DAA+D;QAC/D,qEAAqE;QACrE,oEAAoE;QACpE,8EAA8E;QAC9E,0DAA0D;QAC1D,6EAA6E;QAC7E,uEAAuE;IACzE,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,wEAAwE;oBACxE,2EAA2E;oBAC3E,4CAA4C;aAC/C;SACF;QACD,QAAQ,EAAE,CAAC,SAAS,CAAC;KACtB;IACD,UAAU,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC;IAC9B,aAAa,CAAC,KAAK;QACjB,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAC/D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;QACxD,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,KAAK;QACjB,MAAM,OAAO,GAAI,KAAK,CAAC,OAAkB,CAAC,IAAI,EAAE,CAAC;QACjD,MAAM,CAAC,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACf,OAAO,CACL,gBAAgB;gBAChB,gEAAgE;gBAChE,cAAc,OAAO,IAAI;gBACzB,oBAAoB;gBACpB,kFAAkF;gBAClF,sFAAsF;gBACtF,yFAAyF;gBACzF,iEAAiE,CAClE,CAAC;QACJ,CAAC;QACD,OAAO,YAAY,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;CACF,CAAC"}
@@ -21,12 +21,12 @@ export function AgentPicker({ options, onSelect, onCancel }) {
21
21
  }
22
22
  });
23
23
  const maxNameLen = Math.max(...options.map((o) => o.name.length));
24
- return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "gray", paddingX: 1, paddingY: 0, children: [_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { bold: true, color: "yellow", children: "Agent Loop" }), _jsxs(Text, { dimColor: true, children: [" ", '\u2014', " select with ", '\u2191\u2193', ", confirm with Enter, Esc to cancel"] })] }), options.map((opt, i) => {
24
+ return (_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "gray", paddingX: 1, paddingY: 0, children: [_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { bold: true, color: "#E87B35", children: "Agent Loop" }), _jsxs(Text, { dimColor: true, children: [" ", '\u2014', " select with ", '\u2191\u2193', ", confirm with Enter, Esc to cancel"] })] }), options.map((opt, i) => {
25
25
  const isFocused = i === cursor;
26
26
  const pointer = isFocused ? '\u276F' : ' ';
27
- const nameColor = opt.active ? 'green' : isFocused ? 'cyan' : undefined;
27
+ const nameColor = opt.active ? '#E87B35' : isFocused ? '#E87B35' : undefined;
28
28
  const padded = opt.name.padEnd(maxNameLen + 2);
29
- return (_jsxs(Box, { children: [_jsxs(Text, { color: isFocused ? 'cyan' : undefined, children: [pointer, " "] }), _jsx(Text, { bold: true, color: nameColor, children: padded }), opt.active && _jsx(Text, { color: "green", dimColor: true, children: ' (active) ' }), !opt.active && _jsx(Text, { children: ' ' }), _jsx(Text, { dimColor: !isFocused, color: isFocused ? 'white' : undefined, children: opt.description })] }, opt.name));
29
+ return (_jsxs(Box, { children: [_jsxs(Text, { color: isFocused ? '#E87B35' : undefined, children: [pointer, " "] }), _jsx(Text, { bold: true, color: nameColor, children: padded }), opt.active && _jsx(Text, { color: "#E87B35", dimColor: true, children: ' (active) ' }), !opt.active && _jsx(Text, { children: ' ' }), _jsx(Text, { dimColor: !isFocused, children: opt.description })] }, opt.name));
30
30
  }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { dimColor: true, children: ['\u2191\u2193', " navigate ", ' ', " Enter select ", ' ', " Esc cancel"] }) })] }));
31
31
  }
32
32
  //# sourceMappingURL=AgentPicker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AgentPicker.js","sourceRoot":"","sources":["../../src/ui/AgentPicker.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgentPicker.js","sourceRoot":"","sources":["../../src/ui/AgentPicker.tsx"],"names":[],"mappings":"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"}