@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,617 @@
1
+ // cli/src/skills/runner/dispatcher.ts
2
+ //
3
+ // Generic backend dispatcher for installed yome skills. Reads a skill's
4
+ // `backends/macos/manifest.json` (declarative — no JS code in the skill
5
+ // bundle) and translates an action invocation into an osascript run.
6
+ //
7
+ // A skill author publishes:
8
+ //
9
+ // ~/.yome/skills/@owner/foo/
10
+ // backends/macos/
11
+ // manifest.json
12
+ // new.applescript
13
+ // open.applescript
14
+ // open.poll.applescript
15
+ // slides.applescript
16
+ // ...
17
+ //
18
+ // `manifest.json` shape (this file is the contract):
19
+ //
20
+ // {
21
+ // "appBundleId": "com.microsoft.Powerpoint",
22
+ // "appName": "Microsoft PowerPoint",
23
+ // "actions": {
24
+ // "<action>": {
25
+ // "script": "new.applescript", // template file (required)
26
+ // "args": [ { "name", "from", "type?", "default?", "required?" } ],
27
+ // "openViaLaunchServices": false, // for `open` style
28
+ // "pollScript": "open.poll.applescript", // when openViaLaunchServices
29
+ // "uses": [ "applescript", "fs:write" ] // capabilities required
30
+ // }
31
+ // }
32
+ // }
33
+ //
34
+ // `args[].from` is one of:
35
+ // - "positional" → call.positionals[0]
36
+ // - "positional|--X" → positional, fall back to --X flag
37
+ // - "--X" → call.flags["X"]
38
+ //
39
+ // The .applescript file is rendered with mustache-ish placeholders:
40
+ // {{name}} → raw substitution (caller must escape)
41
+ // {{name|json}} → JSON-stringify (safe for AppleScript string literal)
42
+ // {{name|posix}} → wrap in `POSIX file "..."`
43
+ // {{name|bool}} → `true` / `false` AppleScript literal
44
+ import { readFileSync, existsSync } from 'node:fs';
45
+ import { join } from 'node:path';
46
+ import { runOsascript, openViaLaunchServices, } from './applescript.js';
47
+ // ──────────────────────────────────────────────────────────────────────
48
+ // Argument resolution
49
+ // ──────────────────────────────────────────────────────────────────────
50
+ function resolveArg(spec, call) {
51
+ const sources = spec.from.split('|').map((s) => s.trim());
52
+ for (const src of sources) {
53
+ if (src === 'positional') {
54
+ const v = call.positionals[0];
55
+ if (v !== undefined && v !== '')
56
+ return v;
57
+ }
58
+ else if (src.startsWith('--')) {
59
+ const key = src.slice(2);
60
+ const v = call.flags[key];
61
+ if (v !== undefined && v !== '')
62
+ return v;
63
+ }
64
+ }
65
+ if (spec.default !== undefined)
66
+ return spec.default;
67
+ if (spec.required)
68
+ return null;
69
+ return spec.type === 'bool' ? false : '';
70
+ }
71
+ // ──────────────────────────────────────────────────────────────────────
72
+ // Template rendering
73
+ // ──────────────────────────────────────────────────────────────────────
74
+ function isTruthy(v) {
75
+ if (v === true || v === 1)
76
+ return true;
77
+ if (typeof v === 'string')
78
+ return v !== '' && v !== 'false' && v !== '0';
79
+ if (typeof v === 'number')
80
+ return v !== 0;
81
+ return false;
82
+ }
83
+ // Named colors that map to RGB triples. Superset of the CSS named-color list,
84
+ // extended with a few CN-friendly aliases. Single source of truth on the CLI
85
+ // side; the Swift bridges (PowerPointBridge / WordBridge / NumbersBridge /
86
+ // PagesBridge / KeynoteBridge) intentionally mirror this table — when adding
87
+ // or renaming an entry here, update those Swift maps in lockstep.
88
+ export const NAMED_COLORS = {
89
+ // grayscale
90
+ black: [0, 0, 0],
91
+ white: [255, 255, 255],
92
+ gray: [128, 128, 128],
93
+ grey: [128, 128, 128],
94
+ silver: [192, 192, 192],
95
+ lightgray: [211, 211, 211],
96
+ lightgrey: [211, 211, 211],
97
+ darkgray: [169, 169, 169],
98
+ darkgrey: [169, 169, 169],
99
+ // primaries / secondaries
100
+ red: [255, 0, 0],
101
+ green: [0, 128, 0],
102
+ lime: [0, 255, 0],
103
+ blue: [0, 0, 255],
104
+ yellow: [255, 255, 0],
105
+ cyan: [0, 255, 255],
106
+ aqua: [0, 255, 255],
107
+ magenta: [255, 0, 255],
108
+ fuchsia: [255, 0, 255],
109
+ // common css
110
+ navy: [0, 51, 102],
111
+ darkblue: [0, 51, 102],
112
+ royalblue: [65, 105, 225],
113
+ midnightblue: [25, 25, 112],
114
+ steelblue: [70, 130, 180],
115
+ skyblue: [135, 206, 235],
116
+ lightblue: [173, 216, 230],
117
+ teal: [0, 128, 128],
118
+ darkgreen: [0, 100, 0],
119
+ lightgreen: [144, 238, 144],
120
+ olive: [128, 128, 0],
121
+ orange: [255, 165, 0],
122
+ darkorange: [255, 140, 0],
123
+ gold: [255, 215, 0],
124
+ brown: [165, 42, 42],
125
+ maroon: [128, 0, 0],
126
+ crimson: [220, 20, 60],
127
+ pink: [255, 192, 203],
128
+ hotpink: [255, 105, 180],
129
+ purple: [128, 0, 128],
130
+ violet: [238, 130, 238],
131
+ indigo: [75, 0, 130],
132
+ beige: [245, 245, 220],
133
+ ivory: [255, 255, 240],
134
+ khaki: [240, 230, 140],
135
+ tan: [210, 180, 140],
136
+ // CN aliases (commonly used in prompts / docs)
137
+ '黑': [0, 0, 0],
138
+ '黑色': [0, 0, 0],
139
+ '白': [255, 255, 255],
140
+ '白色': [255, 255, 255],
141
+ '红': [255, 0, 0],
142
+ '红色': [255, 0, 0],
143
+ '蓝': [0, 0, 255],
144
+ '蓝色': [0, 0, 255],
145
+ '深蓝': [0, 51, 102],
146
+ '海军蓝': [0, 51, 102],
147
+ '绿': [0, 128, 0],
148
+ '绿色': [0, 128, 0],
149
+ '深绿': [0, 100, 0],
150
+ '黄': [255, 255, 0],
151
+ '黄色': [255, 255, 0],
152
+ '橙': [255, 165, 0],
153
+ '橙色': [255, 165, 0],
154
+ '紫': [128, 0, 128],
155
+ '紫色': [128, 0, 128],
156
+ '粉': [255, 192, 203],
157
+ '粉色': [255, 192, 203],
158
+ '灰': [128, 128, 128],
159
+ '灰色': [128, 128, 128],
160
+ '浅灰': [211, 211, 211],
161
+ '深灰': [169, 169, 169],
162
+ '青': [0, 255, 255],
163
+ '青色': [0, 255, 255],
164
+ };
165
+ export function parseColor(input) {
166
+ const raw = String(input ?? '');
167
+ const s = raw.trim();
168
+ if (!s)
169
+ return { ok: false, error: { input: raw, reason: 'color is empty' } };
170
+ // R,G,B
171
+ if (s.includes(',')) {
172
+ const csv = s.split(',').map((p) => p.trim());
173
+ if (csv.length === 3) {
174
+ const [r, g, b] = csv.map(Number);
175
+ if ([r, g, b].every((n) => Number.isInteger(n) && n >= 0 && n <= 255)) {
176
+ return { ok: true, literal: `{${r}, ${g}, ${b}}`, rgb: [r, g, b] };
177
+ }
178
+ return {
179
+ ok: false,
180
+ error: {
181
+ input: raw,
182
+ reason: 'looks like R,G,B but channels must be integers in 0..255',
183
+ },
184
+ };
185
+ }
186
+ }
187
+ // #RRGGBB or RRGGBB (only when the string is hex-shaped — never accept a
188
+ // bare named color as hex by accident, e.g. `cab` is not a color, `bed`
189
+ // would otherwise parse as #00bed0).
190
+ let hex = s.toLowerCase();
191
+ if (hex.startsWith('#'))
192
+ hex = hex.slice(1);
193
+ if (/^[0-9a-f]{6}$/.test(hex) && (s.startsWith('#') || /^[0-9a-f]{6}$/.test(s.toLowerCase()))) {
194
+ const v = parseInt(hex, 16);
195
+ const r = (v >> 16) & 0xff, g = (v >> 8) & 0xff, b = v & 0xff;
196
+ return { ok: true, literal: `{${r}, ${g}, ${b}}`, rgb: [r, g, b] };
197
+ }
198
+ // named
199
+ const key = s.toLowerCase();
200
+ const named = NAMED_COLORS[key] ?? NAMED_COLORS[s]; // CN keys aren't lowercased
201
+ if (named) {
202
+ return { ok: true, literal: `{${named[0]}, ${named[1]}, ${named[2]}}`, rgb: named };
203
+ }
204
+ return {
205
+ ok: false,
206
+ error: {
207
+ input: raw,
208
+ reason: 'unrecognised color (use #RRGGBB, R,G,B, or a named color like ' +
209
+ 'red/blue/navy/teal/gray; full list in NAMED_COLORS)',
210
+ },
211
+ };
212
+ }
213
+ /**
214
+ * Back-compat wrapper that returns the literal or null. New code should use
215
+ * `parseColor()` so the failure reason can be surfaced to the user.
216
+ */
217
+ export function parseColorToAppleScriptRGB(input) {
218
+ const r = parseColor(input);
219
+ return r.ok ? r.literal : null;
220
+ }
221
+ /**
222
+ * `--type` alias → AppleScript `MsoAutoShapeType` enum literal. Unknown
223
+ * aliases degrade to `autoshape rectangle` so the template never emits
224
+ * broken AppleScript.
225
+ */
226
+ export function parseAutoshapeToAppleScript(input) {
227
+ switch (input.trim().toLowerCase()) {
228
+ case 'rectangle': return 'autoshape rectangle';
229
+ case 'oval': return 'autoshape oval';
230
+ case 'roundedrect':
231
+ case 'roundedrectangle': return 'autoshape rounded rectangle';
232
+ case 'triangle': return 'autoshape isosceles triangle';
233
+ case 'rightarrow': return 'autoshape right arrow';
234
+ case 'star5':
235
+ case 'star': return 'autoshape five point star';
236
+ case 'pentagon': return 'autoshape regular pentagon';
237
+ case 'diamond': return 'autoshape diamond';
238
+ case 'hexagon': return 'autoshape hexagon';
239
+ case 'cloud': return 'autoshape cloud';
240
+ case 'lightningbolt': return 'autoshape lightning bolt';
241
+ case 'heart': return 'autoshape heart';
242
+ default: return 'autoshape rectangle';
243
+ }
244
+ }
245
+ /**
246
+ * `--align` parser → AppleScript `paragraph align ...` enum.
247
+ * Defaults silently to `paragraph align left` for unknown values; that
248
+ * matches the Swift bridge behaviour and avoids breaking the script render.
249
+ */
250
+ export function parseAlignToAppleScript(input) {
251
+ switch (input.trim().toLowerCase()) {
252
+ case 'right': return 'paragraph align right';
253
+ case 'center': return 'paragraph align center';
254
+ case 'left':
255
+ default: return 'paragraph align left';
256
+ }
257
+ }
258
+ /**
259
+ * Render an AppleScript template.
260
+ *
261
+ * Two failure modes exist:
262
+ * - "soft": the filter accepts any input and just renders something
263
+ * (`json`, `posix`, `bool`, `as_int`, `align`, `autoshape`). These never
264
+ * populate `errors`.
265
+ * - "hard": the filter validates input and can reject it (`rgb`). When
266
+ * rejected we emit a syntactically VALID placeholder (`missing value`)
267
+ * so the rendered AppleScript still parses, AND we record the error
268
+ * in `errors[]`. The dispatcher checks `errors` BEFORE running osascript
269
+ * and refuses to run with a structured message — no more silent failure
270
+ * where `bg=深蓝` quietly emitted broken AppleScript.
271
+ *
272
+ * `{{name}}` / `{{name|filter}}` is the substitution syntax.
273
+ * `{{#if name}}…{{/if}}` is the conditional block (greedy, not nestable).
274
+ * Substitution happens AFTER conditionals, so a `{{#if bg}}…{{bg|rgb}}…{{/if}}`
275
+ * block whose `bg` was stripped never reaches the filter.
276
+ */
277
+ export function renderTemplate(tpl, ctx) {
278
+ const errors = [];
279
+ // {{#if name}}...{{/if}} — block emitted only when ctx[name] is truthy.
280
+ let out = tpl.replace(/\{\{#if\s+([\w-]+)\s*\}\}([\s\S]*?)\{\{\/if\}\}/g, (_, name, body) => {
281
+ return isTruthy(ctx[name]) ? body : '';
282
+ });
283
+ // {{name}} / {{name|filter}} substitution.
284
+ out = out.replace(/\{\{\s*([\w-]+)(?:\s*\|\s*(\w+))?\s*\}\}/g, (_, name, filter) => {
285
+ const raw = ctx[name];
286
+ if (raw === null || raw === undefined)
287
+ return '';
288
+ if (filter === 'json' || filter === 'string') {
289
+ return '"' + String(raw).replace(/\\/g, '\\\\').replace(/"/g, '\\"') + '"';
290
+ }
291
+ if (filter === 'posix') {
292
+ const s = String(raw).replace(/\\/g, '\\\\').replace(/"/g, '\\"');
293
+ return `POSIX file "${s}"`;
294
+ }
295
+ if (filter === 'bool') {
296
+ return isTruthy(raw) ? 'true' : 'false';
297
+ }
298
+ if (filter === 'as_int') {
299
+ const n = parseInt(String(raw), 10);
300
+ return Number.isFinite(n) ? String(n) : '0';
301
+ }
302
+ if (filter === 'rgb') {
303
+ // An empty/false value means "user didn't pass this optional flag" —
304
+ // emit an empty literal so templates that do `set x to {{c|rgb}}`
305
+ // followed by `if x is not "" then …` keep working. We only validate
306
+ // when the user ACTUALLY provided a value.
307
+ const s = String(raw);
308
+ if (s === '' || raw === false)
309
+ return '""';
310
+ const r = parseColor(s);
311
+ if (r.ok)
312
+ return r.literal;
313
+ errors.push({ arg: name, filter: 'rgb', reason: `--${name}=${r.error.input}: ${r.error.reason}` });
314
+ // Emit a syntactically VALID AppleScript token so the surrounding
315
+ // script still parses — the dispatcher sees `errors[]` populated and
316
+ // refuses to run osascript anyway, but we want render to be total.
317
+ return 'missing value';
318
+ }
319
+ if (filter === 'align') {
320
+ return parseAlignToAppleScript(String(raw));
321
+ }
322
+ if (filter === 'autoshape') {
323
+ return parseAutoshapeToAppleScript(String(raw));
324
+ }
325
+ return String(raw);
326
+ });
327
+ return { source: out, errors };
328
+ }
329
+ // ──────────────────────────────────────────────────────────────────────
330
+ // Dispatcher
331
+ // ──────────────────────────────────────────────────────────────────────
332
+ export function loadMacosBackend(skillDir) {
333
+ const f = join(skillDir, 'backends', 'macos', 'manifest.json');
334
+ if (!existsSync(f))
335
+ return null;
336
+ try {
337
+ const obj = JSON.parse(readFileSync(f, 'utf-8'));
338
+ if (!obj || typeof obj !== 'object' || !obj.actions)
339
+ return null;
340
+ return obj;
341
+ }
342
+ catch {
343
+ return null;
344
+ }
345
+ }
346
+ /**
347
+ * Run an action on a macOS-backed skill. Returns the osascript outcome
348
+ * verbatim (caller decides how to render).
349
+ */
350
+ export function dispatchMacos(skillDir, action, call) {
351
+ const backend = loadMacosBackend(skillDir);
352
+ if (!backend) {
353
+ return { ok: false, stdout: '', stderr: 'no macos backend installed for this skill', exitCode: 2 };
354
+ }
355
+ const actionSpec = backend.actions[action];
356
+ if (!actionSpec) {
357
+ return { ok: false, stdout: '', stderr: `unknown action: ${action}`, exitCode: 2 };
358
+ }
359
+ // Resolve named args.
360
+ const ctx = {};
361
+ for (const arg of actionSpec.args ?? []) {
362
+ const v = resolveArg(arg, call);
363
+ if (v === null) {
364
+ return {
365
+ ok: false, stdout: '',
366
+ stderr: `missing required argument: ${arg.name} (from ${arg.from})`,
367
+ exitCode: 2,
368
+ };
369
+ }
370
+ ctx[arg.name] = v;
371
+ }
372
+ // Read + render the AppleScript template.
373
+ const scriptPath = join(skillDir, 'backends', 'macos', actionSpec.script);
374
+ if (!existsSync(scriptPath)) {
375
+ return { ok: false, stdout: '', stderr: `script not found: ${scriptPath}`, exitCode: 2 };
376
+ }
377
+ let tpl = '';
378
+ try {
379
+ tpl = readFileSync(scriptPath, 'utf-8');
380
+ }
381
+ catch (e) {
382
+ return { ok: false, stdout: '', stderr: `read script failed: ${e.message}`, exitCode: 2 };
383
+ }
384
+ const rendered = renderTemplate(tpl, ctx);
385
+ if (rendered.errors.length > 0) {
386
+ return {
387
+ ok: false,
388
+ stdout: '',
389
+ stderr: rendered.errors.map((e) => `[${action}] bad argument: ${e.reason}`).join('\n'),
390
+ exitCode: 2,
391
+ };
392
+ }
393
+ const source = rendered.source;
394
+ if (process.env.YOME_DEBUG_SKILL === '1') {
395
+ process.stderr.write(`── rendered ${actionSpec.script} ──\n${source}\n── end ──\n`);
396
+ }
397
+ // Two execution modes:
398
+ // 1) openViaLaunchServices — for actions that open a file in an app
399
+ // and then need to wait until the app reports it loaded.
400
+ // 2) plain osascript -e — everything else.
401
+ if (actionSpec.openViaLaunchServices) {
402
+ const filePath = String(ctx.path ?? ctx.positional ?? '');
403
+ const appName = backend.appName ?? '';
404
+ if (!filePath || !appName) {
405
+ return { ok: false, stdout: '', stderr: 'openViaLaunchServices requires {{path}} arg and backend.appName', exitCode: 2 };
406
+ }
407
+ let pollSrc = '';
408
+ if (actionSpec.pollScript) {
409
+ const p = join(skillDir, 'backends', 'macos', actionSpec.pollScript);
410
+ if (existsSync(p)) {
411
+ const r = renderTemplate(readFileSync(p, 'utf-8'), ctx);
412
+ if (r.errors.length > 0) {
413
+ return {
414
+ ok: false, stdout: '',
415
+ stderr: r.errors.map((e) => `[${action}.poll] bad argument: ${e.reason}`).join('\n'),
416
+ exitCode: 2,
417
+ };
418
+ }
419
+ pollSrc = r.source;
420
+ }
421
+ }
422
+ if (!pollSrc)
423
+ pollSrc = source; // fallback: poll with the main script
424
+ const r = openViaLaunchServices({
425
+ filePath,
426
+ appName,
427
+ pollScript: pollSrc,
428
+ });
429
+ return { ok: r.ok, stdout: r.stdout, stderr: r.stderr, exitCode: r.ok ? 0 : 1 };
430
+ }
431
+ return adapt(runOsascript(source, { timeoutMs: actionSpec.timeoutMs }));
432
+ }
433
+ function adapt(r) {
434
+ return { ok: r.ok, stdout: r.stdout, stderr: r.stderr, exitCode: r.exitCode };
435
+ }
436
+ export async function dispatchMacosBatchMerged(skillDir, entries, opts) {
437
+ const backend = loadMacosBackend(skillDir);
438
+ if (!backend) {
439
+ return { ok: false, stdout: '', stderr: 'no macos backend installed for this skill', exitCode: 2 };
440
+ }
441
+ // Render every entry. We fail fast on render errors (missing arg / unknown
442
+ // action) — those are user-facing bugs in the batch body, not runtime.
443
+ const blocks = [];
444
+ for (let i = 0; i < entries.length; i++) {
445
+ const e = entries[i];
446
+ const spec = backend.actions[e.action];
447
+ if (!spec) {
448
+ return {
449
+ ok: false, stdout: '',
450
+ stderr: `merge: unknown action '${e.action}' (line ${i + 1})`,
451
+ exitCode: 2,
452
+ };
453
+ }
454
+ if (spec.openViaLaunchServices) {
455
+ return {
456
+ ok: false, stdout: '',
457
+ stderr: `merge: action '${e.action}' uses Launch Services and cannot be merged ` +
458
+ `(line ${i + 1}). Re-run without --merge, or move it to its own batch.`,
459
+ exitCode: 2,
460
+ };
461
+ }
462
+ // Resolve args.
463
+ const ctx = {};
464
+ for (const arg of spec.args ?? []) {
465
+ const v = resolveArg(arg, e.call);
466
+ if (v === null) {
467
+ return {
468
+ ok: false, stdout: '',
469
+ stderr: `merge: line ${i + 1} (${e.action}): missing required arg ${arg.name}`,
470
+ exitCode: 2,
471
+ };
472
+ }
473
+ ctx[arg.name] = v;
474
+ }
475
+ const scriptPath = join(skillDir, 'backends', 'macos', spec.script);
476
+ if (!existsSync(scriptPath)) {
477
+ return {
478
+ ok: false, stdout: '',
479
+ stderr: `merge: script not found for ${e.action}: ${scriptPath}`,
480
+ exitCode: 2,
481
+ };
482
+ }
483
+ const tpl = readFileSync(scriptPath, 'utf-8');
484
+ const rendered = renderTemplate(tpl, ctx);
485
+ if (rendered.errors.length > 0) {
486
+ // Fail the whole batch BEFORE running osascript: a render error in
487
+ // one step (e.g. a bad color name) used to silently emit broken
488
+ // AppleScript and produce a confusing "OK" line. Surface it loudly.
489
+ return {
490
+ ok: false, stdout: '',
491
+ stderr: `merge: line ${i + 1} (${e.action}): ` +
492
+ rendered.errors.map((er) => er.reason).join('; '),
493
+ exitCode: 2,
494
+ };
495
+ }
496
+ // Wrap each rendered block in a try so a single failure doesn't kill
497
+ // the whole script. We capture per-step result into a list so the
498
+ // outer return can report the full status TSV.
499
+ blocks.push(buildMergedBlock(i, e.action, rendered.source, opts.keepGoing));
500
+ }
501
+ const finalSource = `
502
+ -- yome-merged-batch (${entries.length} steps)
503
+ set results to {}
504
+ ${blocks.join('\n')}
505
+ set AppleScript's text item delimiters to linefeed
506
+ return results as string
507
+ `;
508
+ if (process.env.YOME_DEBUG_SKILL === '1') {
509
+ process.stderr.write(`── merged batch (${entries.length} steps) ──\n${finalSource}\n── end ──\n`);
510
+ }
511
+ const r = runOsascript(finalSource);
512
+ if (!r.ok && !r.stdout) {
513
+ return { ok: false, stdout: '', stderr: r.stderr, exitCode: r.exitCode };
514
+ }
515
+ // Parse per-step lines from osascript stdout. Each line:
516
+ // "<status>\t<idx>\t<action>\t<msg>"
517
+ //
518
+ // The `<msg>` for partial-success-aware actions (xl/ppt/doc fmt, cf, …)
519
+ // follows the convention "<okList>|<failList>" — when failList is non-empty
520
+ // the step is reported as a partial failure even though osascript itself
521
+ // returned without throwing. Without this demux a `fmt` whose `bg` silently
522
+ // failed would still be counted as ✓ in the batch summary.
523
+ const lines = r.stdout.split(/\n/).filter(Boolean);
524
+ let okCount = 0, partialCount = 0, failCount = 0;
525
+ const summary = [];
526
+ for (const line of lines) {
527
+ const parts = line.split('\t');
528
+ const status = parts[0];
529
+ const idx = parts[1] ?? '?';
530
+ const action = parts[2] ?? '?';
531
+ const msg = parts.slice(3).join('\t');
532
+ if (status === 'OK') {
533
+ const partial = parsePartialOkFail(msg);
534
+ if (partial && partial.fail) {
535
+ partialCount++;
536
+ const okPart = partial.ok ? `ok=[${partial.ok}] ` : '';
537
+ summary.push(`⚠ [${idx}] ${action}: ${okPart}failed=[${partial.fail}]`);
538
+ }
539
+ else {
540
+ okCount++;
541
+ summary.push(`✓ [${idx}] ${action}${msg ? ': ' + msg : ''}`);
542
+ }
543
+ }
544
+ else {
545
+ failCount++;
546
+ summary.push(`✗ [${idx}] ${action}: ${msg}`);
547
+ }
548
+ }
549
+ const totalFail = failCount + partialCount;
550
+ const tail = totalFail === 0
551
+ ? `\n— merged batch ok (${entries.length} commands, single osascript)`
552
+ : `\n— merged batch: ${okCount}/${entries.length} ok` +
553
+ (partialCount ? `, ${partialCount} partial` : '') +
554
+ (failCount ? `, ${failCount} failed` : '');
555
+ const stderrParts = [];
556
+ if (failCount)
557
+ stderrParts.push(`${failCount} step(s) failed`);
558
+ if (partialCount)
559
+ stderrParts.push(`${partialCount} step(s) partially failed`);
560
+ return {
561
+ ok: totalFail === 0,
562
+ stdout: summary.join('\n') + tail,
563
+ stderr: stderrParts.length ? stderrParts.join('; ') + ' (see stdout for details)' : '',
564
+ exitCode: totalFail === 0 ? 0 : 1,
565
+ };
566
+ }
567
+ /**
568
+ * Demux the "<okList>|<failList>" convention used by partial-success-aware
569
+ * AppleScript templates (xl/ppt/doc `fmt`, `cf`, …). Returns null when the
570
+ * payload doesn't look like that shape — callers should treat null as
571
+ * "ordinary opaque message, leave it alone".
572
+ */
573
+ export function parsePartialOkFail(msg) {
574
+ // Conservative: only one '|' separator at the top level. We don't try to
575
+ // be clever about escaping because the templates that emit this shape only
576
+ // produce comma-separated identifiers + AppleScript error messages on the
577
+ // right (which never contain `|` in practice).
578
+ const i = msg.indexOf('|');
579
+ if (i < 0)
580
+ return null;
581
+ return { ok: msg.slice(0, i), fail: msg.slice(i + 1) };
582
+ }
583
+ /**
584
+ * Wrap a rendered .applescript snippet so:
585
+ * - Its return value (if any) is captured into the outer `results` list
586
+ * prefixed with status + idx + action so the TS side can demux.
587
+ * - Errors are caught and recorded as "FAIL".
588
+ * - When keepGoing is false the first failure throws to abort the rest.
589
+ *
590
+ * The trick: the rendered snippets are top-level AppleScript with their
591
+ * own `tell` blocks; we can't directly assign their `return` to a var.
592
+ * We wrap them in `run script` of a freshly-built handler instead — that
593
+ * lets us catch errors AND collect the result.
594
+ */
595
+ function buildMergedBlock(idx, action, source, keepGoing) {
596
+ // Escape source for embedding inside an AppleScript string literal.
597
+ const escaped = source.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
598
+ const tag = `[${idx + 1}] ${action}`;
599
+ const onError = keepGoing
600
+ ? '' // swallow + continue
601
+ : 'error errMsg'; // re-throw to abort the rest of the batch
602
+ return `
603
+ try
604
+ set stepSrc to "${escaped}"
605
+ set stepResult to (run script stepSrc)
606
+ if stepResult is missing value then
607
+ set end of results to "OK\t${idx + 1}\t${action}\t"
608
+ else
609
+ set end of results to "OK\t${idx + 1}\t${action}\t" & (stepResult as string)
610
+ end if
611
+ on error errMsg
612
+ set end of results to "FAIL\t${idx + 1}\t${action}\t" & errMsg
613
+ ${onError}
614
+ end try
615
+ `;
616
+ }
617
+ //# sourceMappingURL=dispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../../src/skills/runner/dispatcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};