boten-gemma 0.1.0

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 (334) hide show
  1. package/README.md +860 -0
  2. package/dist/automation/cron/index.d.ts +6 -0
  3. package/dist/automation/cron/index.d.ts.map +1 -0
  4. package/dist/automation/cron/index.js +4 -0
  5. package/dist/automation/cron/index.js.map +1 -0
  6. package/dist/automation/cron/parse-schedule.d.ts +11 -0
  7. package/dist/automation/cron/parse-schedule.d.ts.map +1 -0
  8. package/dist/automation/cron/parse-schedule.js +36 -0
  9. package/dist/automation/cron/parse-schedule.js.map +1 -0
  10. package/dist/automation/cron/schedule.d.ts +7 -0
  11. package/dist/automation/cron/schedule.d.ts.map +1 -0
  12. package/dist/automation/cron/schedule.js +28 -0
  13. package/dist/automation/cron/schedule.js.map +1 -0
  14. package/dist/automation/cron/service.d.ts +70 -0
  15. package/dist/automation/cron/service.d.ts.map +1 -0
  16. package/dist/automation/cron/service.js +207 -0
  17. package/dist/automation/cron/service.js.map +1 -0
  18. package/dist/automation/cron/store.d.ts +12 -0
  19. package/dist/automation/cron/store.d.ts.map +1 -0
  20. package/dist/automation/cron/store.js +27 -0
  21. package/dist/automation/cron/store.js.map +1 -0
  22. package/dist/automation/cron/types.d.ts +67 -0
  23. package/dist/automation/cron/types.d.ts.map +1 -0
  24. package/dist/automation/cron/types.js +5 -0
  25. package/dist/automation/cron/types.js.map +1 -0
  26. package/dist/automation/cron.d.ts +15 -0
  27. package/dist/automation/cron.d.ts.map +1 -0
  28. package/dist/automation/cron.js +10 -0
  29. package/dist/automation/cron.js.map +1 -0
  30. package/dist/automation/heartbeat.d.ts +14 -0
  31. package/dist/automation/heartbeat.d.ts.map +1 -0
  32. package/dist/automation/heartbeat.js +27 -0
  33. package/dist/automation/heartbeat.js.map +1 -0
  34. package/dist/channels/cli.d.ts +17 -0
  35. package/dist/channels/cli.d.ts.map +1 -0
  36. package/dist/channels/cli.js +125 -0
  37. package/dist/channels/cli.js.map +1 -0
  38. package/dist/channels/telegram.d.ts +27 -0
  39. package/dist/channels/telegram.d.ts.map +1 -0
  40. package/dist/channels/telegram.js +288 -0
  41. package/dist/channels/telegram.js.map +1 -0
  42. package/dist/channels/types.d.ts +50 -0
  43. package/dist/channels/types.d.ts.map +1 -0
  44. package/dist/channels/types.js +6 -0
  45. package/dist/channels/types.js.map +1 -0
  46. package/dist/channels/web.d.ts +149 -0
  47. package/dist/channels/web.d.ts.map +1 -0
  48. package/dist/channels/web.js +1113 -0
  49. package/dist/channels/web.js.map +1 -0
  50. package/dist/config/defaults.d.ts +11 -0
  51. package/dist/config/defaults.d.ts.map +1 -0
  52. package/dist/config/defaults.js +80 -0
  53. package/dist/config/defaults.js.map +1 -0
  54. package/dist/config/loader.d.ts +22 -0
  55. package/dist/config/loader.d.ts.map +1 -0
  56. package/dist/config/loader.js +158 -0
  57. package/dist/config/loader.js.map +1 -0
  58. package/dist/config/schema.d.ts +261 -0
  59. package/dist/config/schema.d.ts.map +1 -0
  60. package/dist/config/schema.js +119 -0
  61. package/dist/config/schema.js.map +1 -0
  62. package/dist/confirm/audit.d.ts +34 -0
  63. package/dist/confirm/audit.d.ts.map +1 -0
  64. package/dist/confirm/audit.js +49 -0
  65. package/dist/confirm/audit.js.map +1 -0
  66. package/dist/confirm/auto-approve.d.ts +20 -0
  67. package/dist/confirm/auto-approve.d.ts.map +1 -0
  68. package/dist/confirm/auto-approve.js +62 -0
  69. package/dist/confirm/auto-approve.js.map +1 -0
  70. package/dist/confirm/gate.d.ts +50 -0
  71. package/dist/confirm/gate.d.ts.map +1 -0
  72. package/dist/confirm/gate.js +138 -0
  73. package/dist/confirm/gate.js.map +1 -0
  74. package/dist/confirm/parser.d.ts +23 -0
  75. package/dist/confirm/parser.d.ts.map +1 -0
  76. package/dist/confirm/parser.js +76 -0
  77. package/dist/confirm/parser.js.map +1 -0
  78. package/dist/confirm/presenter.d.ts +23 -0
  79. package/dist/confirm/presenter.d.ts.map +1 -0
  80. package/dist/confirm/presenter.js +92 -0
  81. package/dist/confirm/presenter.js.map +1 -0
  82. package/dist/core/agent-loop.d.ts +44 -0
  83. package/dist/core/agent-loop.d.ts.map +1 -0
  84. package/dist/core/agent-loop.js +156 -0
  85. package/dist/core/agent-loop.js.map +1 -0
  86. package/dist/core/compaction.d.ts +17 -0
  87. package/dist/core/compaction.d.ts.map +1 -0
  88. package/dist/core/compaction.js +70 -0
  89. package/dist/core/compaction.js.map +1 -0
  90. package/dist/core/context-builder.d.ts +38 -0
  91. package/dist/core/context-builder.d.ts.map +1 -0
  92. package/dist/core/context-builder.js +137 -0
  93. package/dist/core/context-builder.js.map +1 -0
  94. package/dist/core/logger.d.ts +42 -0
  95. package/dist/core/logger.d.ts.map +1 -0
  96. package/dist/core/logger.js +95 -0
  97. package/dist/core/logger.js.map +1 -0
  98. package/dist/core/queue.d.ts +25 -0
  99. package/dist/core/queue.d.ts.map +1 -0
  100. package/dist/core/queue.js +33 -0
  101. package/dist/core/queue.js.map +1 -0
  102. package/dist/core/router.d.ts +21 -0
  103. package/dist/core/router.d.ts.map +1 -0
  104. package/dist/core/router.js +27 -0
  105. package/dist/core/router.js.map +1 -0
  106. package/dist/core/session-store.d.ts +53 -0
  107. package/dist/core/session-store.d.ts.map +1 -0
  108. package/dist/core/session-store.js +367 -0
  109. package/dist/core/session-store.js.map +1 -0
  110. package/dist/core/session.d.ts +89 -0
  111. package/dist/core/session.d.ts.map +1 -0
  112. package/dist/core/session.js +49 -0
  113. package/dist/core/session.js.map +1 -0
  114. package/dist/daemon/launchd.d.ts +8 -0
  115. package/dist/daemon/launchd.d.ts.map +1 -0
  116. package/dist/daemon/launchd.js +155 -0
  117. package/dist/daemon/launchd.js.map +1 -0
  118. package/dist/daemon/service.d.ts +12 -0
  119. package/dist/daemon/service.d.ts.map +1 -0
  120. package/dist/daemon/service.js +42 -0
  121. package/dist/daemon/service.js.map +1 -0
  122. package/dist/daemon/systemd.d.ts +11 -0
  123. package/dist/daemon/systemd.d.ts.map +1 -0
  124. package/dist/daemon/systemd.js +145 -0
  125. package/dist/daemon/systemd.js.map +1 -0
  126. package/dist/daemon/types.d.ts +14 -0
  127. package/dist/daemon/types.d.ts.map +1 -0
  128. package/dist/daemon/types.js +2 -0
  129. package/dist/daemon/types.js.map +1 -0
  130. package/dist/daemon/update.d.ts +41 -0
  131. package/dist/daemon/update.d.ts.map +1 -0
  132. package/dist/daemon/update.js +106 -0
  133. package/dist/daemon/update.js.map +1 -0
  134. package/dist/gateway.d.ts +103 -0
  135. package/dist/gateway.d.ts.map +1 -0
  136. package/dist/gateway.js +1063 -0
  137. package/dist/gateway.js.map +1 -0
  138. package/dist/index.d.ts +3 -0
  139. package/dist/index.d.ts.map +1 -0
  140. package/dist/index.js +572 -0
  141. package/dist/index.js.map +1 -0
  142. package/dist/llm/auth/oauth-callback.d.ts +20 -0
  143. package/dist/llm/auth/oauth-callback.d.ts.map +1 -0
  144. package/dist/llm/auth/oauth-callback.js +95 -0
  145. package/dist/llm/auth/oauth-callback.js.map +1 -0
  146. package/dist/llm/auth/oauth.d.ts +30 -0
  147. package/dist/llm/auth/oauth.d.ts.map +1 -0
  148. package/dist/llm/auth/oauth.js +331 -0
  149. package/dist/llm/auth/oauth.js.map +1 -0
  150. package/dist/llm/auth/resolver.d.ts +24 -0
  151. package/dist/llm/auth/resolver.d.ts.map +1 -0
  152. package/dist/llm/auth/resolver.js +97 -0
  153. package/dist/llm/auth/resolver.js.map +1 -0
  154. package/dist/llm/auth/token-store.d.ts +15 -0
  155. package/dist/llm/auth/token-store.d.ts.map +1 -0
  156. package/dist/llm/auth/token-store.js +94 -0
  157. package/dist/llm/auth/token-store.js.map +1 -0
  158. package/dist/llm/auth/types.d.ts +20 -0
  159. package/dist/llm/auth/types.d.ts.map +1 -0
  160. package/dist/llm/auth/types.js +3 -0
  161. package/dist/llm/auth/types.js.map +1 -0
  162. package/dist/llm/gemini.d.ts +28 -0
  163. package/dist/llm/gemini.d.ts.map +1 -0
  164. package/dist/llm/gemini.js +524 -0
  165. package/dist/llm/gemini.js.map +1 -0
  166. package/dist/llm/openai-compat.d.ts +14 -0
  167. package/dist/llm/openai-compat.d.ts.map +1 -0
  168. package/dist/llm/openai-compat.js +200 -0
  169. package/dist/llm/openai-compat.js.map +1 -0
  170. package/dist/llm/provider.d.ts +2 -0
  171. package/dist/llm/provider.d.ts.map +1 -0
  172. package/dist/llm/provider.js +4 -0
  173. package/dist/llm/provider.js.map +1 -0
  174. package/dist/llm/types.d.ts +75 -0
  175. package/dist/llm/types.d.ts.map +1 -0
  176. package/dist/llm/types.js +3 -0
  177. package/dist/llm/types.js.map +1 -0
  178. package/dist/mcp/adapter.d.ts +14 -0
  179. package/dist/mcp/adapter.d.ts.map +1 -0
  180. package/dist/mcp/adapter.js +58 -0
  181. package/dist/mcp/adapter.js.map +1 -0
  182. package/dist/mcp/index.d.ts +4 -0
  183. package/dist/mcp/index.d.ts.map +1 -0
  184. package/dist/mcp/index.js +3 -0
  185. package/dist/mcp/index.js.map +1 -0
  186. package/dist/mcp/manager.d.ts +48 -0
  187. package/dist/mcp/manager.d.ts.map +1 -0
  188. package/dist/mcp/manager.js +109 -0
  189. package/dist/mcp/manager.js.map +1 -0
  190. package/dist/memory/daily-log.d.ts +19 -0
  191. package/dist/memory/daily-log.d.ts.map +1 -0
  192. package/dist/memory/daily-log.js +47 -0
  193. package/dist/memory/daily-log.js.map +1 -0
  194. package/dist/memory/memory-manager.d.ts +41 -0
  195. package/dist/memory/memory-manager.d.ts.map +1 -0
  196. package/dist/memory/memory-manager.js +97 -0
  197. package/dist/memory/memory-manager.js.map +1 -0
  198. package/dist/memory/workspace.d.ts +21 -0
  199. package/dist/memory/workspace.d.ts.map +1 -0
  200. package/dist/memory/workspace.js +63 -0
  201. package/dist/memory/workspace.js.map +1 -0
  202. package/dist/panels/bridge.d.ts +19 -0
  203. package/dist/panels/bridge.d.ts.map +1 -0
  204. package/dist/panels/bridge.js +74 -0
  205. package/dist/panels/bridge.js.map +1 -0
  206. package/dist/panels/registry.d.ts +30 -0
  207. package/dist/panels/registry.d.ts.map +1 -0
  208. package/dist/panels/registry.js +102 -0
  209. package/dist/panels/registry.js.map +1 -0
  210. package/dist/panels/routes.d.ts +8 -0
  211. package/dist/panels/routes.d.ts.map +1 -0
  212. package/dist/panels/routes.js +252 -0
  213. package/dist/panels/routes.js.map +1 -0
  214. package/dist/panels/sdk/gemma-panel.js +331 -0
  215. package/dist/panels/service-context.d.ts +28 -0
  216. package/dist/panels/service-context.d.ts.map +1 -0
  217. package/dist/panels/service-context.js +84 -0
  218. package/dist/panels/service-context.js.map +1 -0
  219. package/dist/panels/service-loader.d.ts +19 -0
  220. package/dist/panels/service-loader.d.ts.map +1 -0
  221. package/dist/panels/service-loader.js +61 -0
  222. package/dist/panels/service-loader.js.map +1 -0
  223. package/dist/panels/service-manager.d.ts +40 -0
  224. package/dist/panels/service-manager.d.ts.map +1 -0
  225. package/dist/panels/service-manager.js +148 -0
  226. package/dist/panels/service-manager.js.map +1 -0
  227. package/dist/panels/storage.d.ts +14 -0
  228. package/dist/panels/storage.d.ts.map +1 -0
  229. package/dist/panels/storage.js +47 -0
  230. package/dist/panels/storage.js.map +1 -0
  231. package/dist/panels/types.d.ts +39 -0
  232. package/dist/panels/types.d.ts.map +1 -0
  233. package/dist/panels/types.js +8 -0
  234. package/dist/panels/types.js.map +1 -0
  235. package/dist/shared/ws-types.d.ts +332 -0
  236. package/dist/shared/ws-types.d.ts.map +1 -0
  237. package/dist/shared/ws-types.js +7 -0
  238. package/dist/shared/ws-types.js.map +1 -0
  239. package/dist/skills/gating.d.ts +15 -0
  240. package/dist/skills/gating.d.ts.map +1 -0
  241. package/dist/skills/gating.js +49 -0
  242. package/dist/skills/gating.js.map +1 -0
  243. package/dist/skills/loader.d.ts +32 -0
  244. package/dist/skills/loader.d.ts.map +1 -0
  245. package/dist/skills/loader.js +66 -0
  246. package/dist/skills/loader.js.map +1 -0
  247. package/dist/skills/parser.d.ts +22 -0
  248. package/dist/skills/parser.d.ts.map +1 -0
  249. package/dist/skills/parser.js +29 -0
  250. package/dist/skills/parser.js.map +1 -0
  251. package/dist/skills/prompt-injector.d.ts +10 -0
  252. package/dist/skills/prompt-injector.d.ts.map +1 -0
  253. package/dist/skills/prompt-injector.js +29 -0
  254. package/dist/skills/prompt-injector.js.map +1 -0
  255. package/dist/tools/builtin/cron.d.ts +3 -0
  256. package/dist/tools/builtin/cron.d.ts.map +1 -0
  257. package/dist/tools/builtin/cron.js +198 -0
  258. package/dist/tools/builtin/cron.js.map +1 -0
  259. package/dist/tools/builtin/edit.d.ts +3 -0
  260. package/dist/tools/builtin/edit.d.ts.map +1 -0
  261. package/dist/tools/builtin/edit.js +77 -0
  262. package/dist/tools/builtin/edit.js.map +1 -0
  263. package/dist/tools/builtin/exec.d.ts +3 -0
  264. package/dist/tools/builtin/exec.d.ts.map +1 -0
  265. package/dist/tools/builtin/exec.js +88 -0
  266. package/dist/tools/builtin/exec.js.map +1 -0
  267. package/dist/tools/builtin/panel.d.ts +14 -0
  268. package/dist/tools/builtin/panel.d.ts.map +1 -0
  269. package/dist/tools/builtin/panel.js +521 -0
  270. package/dist/tools/builtin/panel.js.map +1 -0
  271. package/dist/tools/builtin/read.d.ts +3 -0
  272. package/dist/tools/builtin/read.d.ts.map +1 -0
  273. package/dist/tools/builtin/read.js +61 -0
  274. package/dist/tools/builtin/read.js.map +1 -0
  275. package/dist/tools/builtin/web-fetch.d.ts +3 -0
  276. package/dist/tools/builtin/web-fetch.d.ts.map +1 -0
  277. package/dist/tools/builtin/web-fetch.js +68 -0
  278. package/dist/tools/builtin/web-fetch.js.map +1 -0
  279. package/dist/tools/builtin/web-search.d.ts +3 -0
  280. package/dist/tools/builtin/web-search.d.ts.map +1 -0
  281. package/dist/tools/builtin/web-search.js +67 -0
  282. package/dist/tools/builtin/web-search.js.map +1 -0
  283. package/dist/tools/builtin/write.d.ts +3 -0
  284. package/dist/tools/builtin/write.d.ts.map +1 -0
  285. package/dist/tools/builtin/write.js +40 -0
  286. package/dist/tools/builtin/write.js.map +1 -0
  287. package/dist/tools/executor.d.ts +16 -0
  288. package/dist/tools/executor.d.ts.map +1 -0
  289. package/dist/tools/executor.js +142 -0
  290. package/dist/tools/executor.js.map +1 -0
  291. package/dist/tools/registry.d.ts +23 -0
  292. package/dist/tools/registry.d.ts.map +1 -0
  293. package/dist/tools/registry.js +72 -0
  294. package/dist/tools/registry.js.map +1 -0
  295. package/dist/tools/types.d.ts +58 -0
  296. package/dist/tools/types.d.ts.map +1 -0
  297. package/dist/tools/types.js +8 -0
  298. package/dist/tools/types.js.map +1 -0
  299. package/dist/ui/assets/code-block-OCS4YCEC-D5mQabi7.js +2 -0
  300. package/dist/ui/assets/index-0RdIdnZu.js +456 -0
  301. package/dist/ui/assets/index-CjWH8YjU.css +1 -0
  302. package/dist/ui/index.html +16 -0
  303. package/package.json +89 -0
  304. package/skills/coding/SKILL.md +52 -0
  305. package/skills/file-ops/SKILL.md +50 -0
  306. package/skills/panel-dev/SKILL.md +742 -0
  307. package/skills/system-admin/SKILL.md +56 -0
  308. package/skills/web-research/SKILL.md +44 -0
  309. package/templates/BOOTSTRAP.md +19 -0
  310. package/templates/IDENTITY.md +9 -0
  311. package/templates/INSTRUCTIONS.md +19 -0
  312. package/templates/MEMORY.md +5 -0
  313. package/templates/SOUL.md +21 -0
  314. package/templates/TOOLS.md +13 -0
  315. package/templates/USER.md +12 -0
  316. package/templates/panel/gemma-panel-sdk.d.ts +27 -0
  317. package/templates/panel/gemma-panel.d.ts +46 -0
  318. package/templates/panel/index.html +59 -0
  319. package/templates/panel/package.json +15 -0
  320. package/templates/panel/panel.json +12 -0
  321. package/templates/panel/service.ts +69 -0
  322. package/templates/panel/tsconfig.json +17 -0
  323. package/templates/panel/vite.config.ts +13 -0
  324. package/templates/panel-react/index.html +12 -0
  325. package/templates/panel-react/package.json +22 -0
  326. package/templates/panel-react/panel.json +10 -0
  327. package/templates/panel-react/service.ts +69 -0
  328. package/templates/panel-react/src/App.tsx +108 -0
  329. package/templates/panel-react/src/gemma.d.ts +13 -0
  330. package/templates/panel-react/src/main.tsx +9 -0
  331. package/templates/panel-react/src/vite-env.d.ts +1 -0
  332. package/templates/panel-react/tsconfig.json +17 -0
  333. package/templates/panel-react/tsconfig.service.json +16 -0
  334. package/templates/panel-react/vite.config.ts +14 -0
@@ -0,0 +1,332 @@
1
+ /**
2
+ * WebSocket message types shared between the Gateway and the Web UI.
3
+ * These define the full protocol for chat, confirmations, streaming,
4
+ * panel bridge, and system messages.
5
+ */
6
+ export interface ToolCallDisplay {
7
+ id: string;
8
+ tool: string;
9
+ args: Record<string, unknown>;
10
+ explanation?: string;
11
+ risk: 'low' | 'medium' | 'high';
12
+ }
13
+ export interface ToolResultDisplay {
14
+ callId: string;
15
+ tool: string;
16
+ status: 'approved' | 'rejected';
17
+ preview?: string;
18
+ isError?: boolean;
19
+ }
20
+ export type WSMessage = WSChatMessage | WSStreamMessage | WSThinkingMessage | WSSetThinkingMessage | WSConfirmationMessage | WSConfirmationResponseMessage | WSToolResultsMessage | WSSystemMessage | WSAuthMessage | WSStatusMessage | WSSetModelMessage | WSPanelReadMessage | WSPanelWriteMessage | WSPanelResponseMessage | WSPanelChatMessage | WSCronListMessage | WSCronAddMessage | WSCronUpdateMessage | WSCronRemoveMessage | WSCronRunMessage | WSCronListResponseMessage | WSCronEventMessage | WSPanelsChangedMessage | WSSessionResumeMessage | WSSessionListMessage | WSSessionNewMessage | WSSessionSwitchMessage | WSSessionDeleteMessage | WSSessionRenameMessage | WSSessionRestoredMessage | WSSessionListResponseMessage | WSSessionEventMessage | WSConfigGetMessage | WSConfigUpdateMessage | WSConfigMCPAddMessage | WSConfigMCPUpdateMessage | WSConfigMCPRemoveMessage | WSConfigResponseMessage | WSConfigEventMessage | WSCowboyModeSetMessage | WSCowboyModeStatusMessage | WSLogSubscribeMessage | WSLogMessage | WSLogHistoryMessage | WSPanelRpcMessage | WSPanelRpcResponseMessage | WSPanelEventMessage;
21
+ export interface WSChatMessage {
22
+ type: 'chat';
23
+ role: 'user' | 'assistant';
24
+ content: string;
25
+ id: string;
26
+ }
27
+ export interface WSStreamMessage {
28
+ type: 'stream';
29
+ content: string;
30
+ messageId: string;
31
+ done: boolean;
32
+ }
33
+ export interface WSConfirmationMessage {
34
+ type: 'confirmation';
35
+ id: string;
36
+ calls: ToolCallDisplay[];
37
+ }
38
+ export interface WSConfirmationResponseMessage {
39
+ type: 'confirmation_response';
40
+ id: string;
41
+ approved: string[];
42
+ rejected: string[];
43
+ }
44
+ export interface WSToolResultsMessage {
45
+ type: 'tool_results';
46
+ results: ToolResultDisplay[];
47
+ }
48
+ export interface WSSystemMessage {
49
+ type: 'system';
50
+ content: string;
51
+ level: 'info' | 'warn' | 'error';
52
+ }
53
+ export interface WSAuthMessage {
54
+ type: 'auth';
55
+ token: string;
56
+ }
57
+ export interface WSStatusMessage {
58
+ type: 'status';
59
+ session: string;
60
+ model: string;
61
+ availableModels?: string[];
62
+ authEmail?: string;
63
+ }
64
+ export interface WSSetModelMessage {
65
+ type: 'set_model';
66
+ model: string;
67
+ }
68
+ export interface WSPanelReadMessage {
69
+ type: 'panel:read';
70
+ panelName: string;
71
+ key: string;
72
+ requestId: string;
73
+ }
74
+ export interface WSPanelWriteMessage {
75
+ type: 'panel:write';
76
+ panelName: string;
77
+ key: string;
78
+ value: string;
79
+ requestId: string;
80
+ }
81
+ export interface WSPanelResponseMessage {
82
+ type: 'panel:response';
83
+ requestId: string;
84
+ data: unknown;
85
+ error?: string;
86
+ }
87
+ export interface WSPanelChatMessage {
88
+ type: 'panel:chat';
89
+ panelName: string;
90
+ text: string;
91
+ }
92
+ export interface WSThinkingMessage {
93
+ type: 'thinking';
94
+ content: string;
95
+ messageId: string;
96
+ done: boolean;
97
+ }
98
+ export interface WSSetThinkingMessage {
99
+ type: 'set_thinking';
100
+ enabled: boolean;
101
+ }
102
+ /** Display representation of a cron job for the UI */
103
+ export interface WSCronJobDisplay {
104
+ id: string;
105
+ name: string;
106
+ schedule: string;
107
+ prompt: string;
108
+ enabled: boolean;
109
+ description?: string;
110
+ model?: string;
111
+ nextRunAt?: string;
112
+ lastRunAt?: string;
113
+ lastStatus?: string;
114
+ }
115
+ export interface WSCronListMessage {
116
+ type: 'cron:list';
117
+ }
118
+ export interface WSCronAddMessage {
119
+ type: 'cron:add';
120
+ job: {
121
+ name: string;
122
+ schedule: string;
123
+ prompt: string;
124
+ description?: string;
125
+ model?: string;
126
+ enabled?: boolean;
127
+ };
128
+ }
129
+ export interface WSCronUpdateMessage {
130
+ type: 'cron:update';
131
+ id: string;
132
+ patch: {
133
+ name?: string;
134
+ schedule?: string;
135
+ prompt?: string;
136
+ description?: string;
137
+ model?: string;
138
+ enabled?: boolean;
139
+ };
140
+ }
141
+ export interface WSCronRemoveMessage {
142
+ type: 'cron:remove';
143
+ id: string;
144
+ }
145
+ export interface WSCronRunMessage {
146
+ type: 'cron:run';
147
+ id: string;
148
+ }
149
+ export interface WSCronListResponseMessage {
150
+ type: 'cron:list:response';
151
+ jobs: WSCronJobDisplay[];
152
+ }
153
+ export interface WSCronEventMessage {
154
+ type: 'cron:event';
155
+ event: 'added' | 'updated' | 'removed' | 'started' | 'finished' | 'error';
156
+ jobId: string;
157
+ job?: WSCronJobDisplay;
158
+ error?: string;
159
+ }
160
+ export interface WSPanelsChangedMessage {
161
+ type: 'panels:changed';
162
+ }
163
+ /** Sent by client on WS connect to resume an existing session */
164
+ export interface WSSessionResumeMessage {
165
+ type: 'session:resume';
166
+ sessionId: string;
167
+ }
168
+ /** Client requests list of all sessions */
169
+ export interface WSSessionListMessage {
170
+ type: 'session:list';
171
+ }
172
+ /** Client requests a new session */
173
+ export interface WSSessionNewMessage {
174
+ type: 'session:new';
175
+ }
176
+ /** Client switches to a different session */
177
+ export interface WSSessionSwitchMessage {
178
+ type: 'session:switch';
179
+ sessionId: string;
180
+ }
181
+ /** Client deletes a session */
182
+ export interface WSSessionDeleteMessage {
183
+ type: 'session:delete';
184
+ sessionId: string;
185
+ }
186
+ /** Client renames a session */
187
+ export interface WSSessionRenameMessage {
188
+ type: 'session:rename';
189
+ sessionId: string;
190
+ title: string;
191
+ }
192
+ /** A single entry in the restored session history */
193
+ export interface WSSessionHistoryEntry {
194
+ role: 'user' | 'assistant' | 'system';
195
+ content: string;
196
+ timestamp: string;
197
+ }
198
+ /** Server sends full session data after resume/switch/new */
199
+ export interface WSSessionRestoredMessage {
200
+ type: 'session:restored';
201
+ sessionId: string;
202
+ title: string;
203
+ history: WSSessionHistoryEntry[];
204
+ cowboyMode?: boolean;
205
+ }
206
+ /** Summary of a session for the session list */
207
+ export interface WSSessionSummary {
208
+ id: string;
209
+ title: string;
210
+ messageCount: number;
211
+ createdAt: string;
212
+ lastActiveAt: string;
213
+ }
214
+ /** Server sends session list */
215
+ export interface WSSessionListResponseMessage {
216
+ type: 'session:list:response';
217
+ sessions: WSSessionSummary[];
218
+ }
219
+ /** Server notifies of session CRUD events */
220
+ export interface WSSessionEventMessage {
221
+ type: 'session:event';
222
+ event: 'created' | 'updated' | 'deleted' | 'switched';
223
+ sessionId: string;
224
+ session?: WSSessionSummary;
225
+ }
226
+ /** Client -> Server: Request current config */
227
+ export interface WSConfigGetMessage {
228
+ type: 'config:get';
229
+ }
230
+ /** Client -> Server: Update config (full replacement of specific sections) */
231
+ export interface WSConfigUpdateMessage {
232
+ type: 'config:update';
233
+ config: Record<string, unknown>;
234
+ }
235
+ /** Client -> Server: Add an MCP server */
236
+ export interface WSConfigMCPAddMessage {
237
+ type: 'config:mcp:add';
238
+ name: string;
239
+ server: {
240
+ command: string;
241
+ args?: string[];
242
+ env?: Record<string, string>;
243
+ enabled?: boolean;
244
+ };
245
+ }
246
+ /** Client -> Server: Update an MCP server */
247
+ export interface WSConfigMCPUpdateMessage {
248
+ type: 'config:mcp:update';
249
+ name: string;
250
+ patch: {
251
+ command?: string;
252
+ args?: string[];
253
+ env?: Record<string, string>;
254
+ enabled?: boolean;
255
+ };
256
+ }
257
+ /** Client -> Server: Remove an MCP server */
258
+ export interface WSConfigMCPRemoveMessage {
259
+ type: 'config:mcp:remove';
260
+ name: string;
261
+ }
262
+ /** Server -> Client: Config response */
263
+ export interface WSConfigResponseMessage {
264
+ type: 'config:response';
265
+ config: Record<string, unknown>;
266
+ mcpStatus: Record<string, {
267
+ connected: boolean;
268
+ toolCount: number;
269
+ }>;
270
+ }
271
+ /** Server -> Client: Config change event */
272
+ export interface WSConfigEventMessage {
273
+ type: 'config:event';
274
+ event: 'updated' | 'mcp:added' | 'mcp:updated' | 'mcp:removed' | 'mcp:reloaded';
275
+ detail?: Record<string, unknown>;
276
+ }
277
+ /** Client -> Server: Toggle cowboy mode (bypass confirmation gate) */
278
+ export interface WSCowboyModeSetMessage {
279
+ type: 'cowboy:set';
280
+ enabled: boolean;
281
+ }
282
+ /** Server -> Client: Cowboy mode status update */
283
+ export interface WSCowboyModeStatusMessage {
284
+ type: 'cowboy:status';
285
+ enabled: boolean;
286
+ }
287
+ /** A single log entry */
288
+ export interface WSLogEntry {
289
+ id: string;
290
+ level: 'debug' | 'info' | 'warn' | 'error';
291
+ source: string;
292
+ message: string;
293
+ timestamp: string;
294
+ meta?: Record<string, unknown>;
295
+ }
296
+ /** Client -> Server: Subscribe to log stream */
297
+ export interface WSLogSubscribeMessage {
298
+ type: 'log:subscribe';
299
+ }
300
+ /** Server -> Client: Individual log entry (streamed in real time) */
301
+ export interface WSLogMessage {
302
+ type: 'log';
303
+ entry: WSLogEntry;
304
+ }
305
+ /** Server -> Client: Batch of recent log entries (sent on subscribe) */
306
+ export interface WSLogHistoryMessage {
307
+ type: 'log:history';
308
+ entries: WSLogEntry[];
309
+ }
310
+ /** Client -> Server: Invoke an RPC method on a panel's backend service */
311
+ export interface WSPanelRpcMessage {
312
+ type: 'panel:rpc';
313
+ panelName: string;
314
+ requestId: string;
315
+ method: string;
316
+ params?: unknown;
317
+ }
318
+ /** Server -> Client: Response to a panel RPC call */
319
+ export interface WSPanelRpcResponseMessage {
320
+ type: 'panel:rpc:response';
321
+ requestId: string;
322
+ data: unknown;
323
+ error?: string;
324
+ }
325
+ /** Server -> Client: Real-time event emitted by a panel service */
326
+ export interface WSPanelEventMessage {
327
+ type: 'panel:event';
328
+ panelName: string;
329
+ event: string;
330
+ payload?: unknown;
331
+ }
332
+ //# sourceMappingURL=ws-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-types.d.ts","sourceRoot":"","sources":["../../src/shared/ws-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * WebSocket message types shared between the Gateway and the Web UI.
3
+ * These define the full protocol for chat, confirmations, streaming,
4
+ * panel bridge, and system messages.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=ws-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-types.js","sourceRoot":"","sources":["../../src/shared/ws-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,15 @@
1
+ import type { ParsedSkill } from './parser.js';
2
+ /**
3
+ * Gating result for a skill.
4
+ */
5
+ export interface GatingResult {
6
+ available: boolean;
7
+ reason?: string;
8
+ }
9
+ /**
10
+ * Check whether a skill's requirements are met:
11
+ * - Required binaries on PATH
12
+ * - Required environment variables set
13
+ */
14
+ export declare function checkSkillGating(skill: ParsedSkill): GatingResult;
15
+ //# sourceMappingURL=gating.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gating.d.ts","sourceRoot":"","sources":["../../src/skills/gating.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,CA+BjE"}
@@ -0,0 +1,49 @@
1
+ import { execSync } from 'node:child_process';
2
+ /**
3
+ * Check whether a skill's requirements are met:
4
+ * - Required binaries on PATH
5
+ * - Required environment variables set
6
+ */
7
+ export function checkSkillGating(skill) {
8
+ const requires = skill.metadata.requires;
9
+ if (!requires) {
10
+ return { available: true };
11
+ }
12
+ // Check required binaries
13
+ if (requires.bins) {
14
+ for (const bin of requires.bins) {
15
+ if (!isBinaryOnPath(bin)) {
16
+ return {
17
+ available: false,
18
+ reason: `Required binary not found: ${bin}`,
19
+ };
20
+ }
21
+ }
22
+ }
23
+ // Check required environment variables
24
+ if (requires.env) {
25
+ for (const envVar of requires.env) {
26
+ if (!process.env[envVar]) {
27
+ return {
28
+ available: false,
29
+ reason: `Required environment variable not set: ${envVar}`,
30
+ };
31
+ }
32
+ }
33
+ }
34
+ return { available: true };
35
+ }
36
+ /**
37
+ * Check if a binary exists on PATH.
38
+ */
39
+ function isBinaryOnPath(bin) {
40
+ try {
41
+ const cmd = process.platform === 'win32' ? `where ${bin}` : `which ${bin}`;
42
+ execSync(cmd, { stdio: 'ignore' });
43
+ return true;
44
+ }
45
+ catch {
46
+ return false;
47
+ }
48
+ }
49
+ //# sourceMappingURL=gating.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gating.js","sourceRoot":"","sources":["../../src/skills/gating.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAW9C;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAkB;IACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,0BAA0B;IAC1B,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,OAAO;oBACL,SAAS,EAAE,KAAK;oBAChB,MAAM,EAAE,8BAA8B,GAAG,EAAE;iBAC5C,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC;QACjB,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACzB,OAAO;oBACL,SAAS,EAAE,KAAK;oBAChB,MAAM,EAAE,0CAA0C,MAAM,EAAE;iBAC3D,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,GAAW;IACjC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC;QAC3E,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { SkillsConfig } from '../config/schema.js';
2
+ import { type ParsedSkill } from './parser.js';
3
+ /**
4
+ * A loaded skill with parsed metadata and body.
5
+ */
6
+ export interface LoadedSkill {
7
+ /** Skill name from frontmatter */
8
+ name: string;
9
+ /** Short description from frontmatter */
10
+ description: string;
11
+ /** Full path to SKILL.md */
12
+ path: string;
13
+ /** Whether the skill passed gating checks */
14
+ available: boolean;
15
+ /** Reason if gating failed */
16
+ gateReason?: string;
17
+ /** Parsed skill data (for prompt injection) */
18
+ parsed?: ParsedSkill;
19
+ }
20
+ /**
21
+ * Skill Loader — discovers and loads SKILL.md files from:
22
+ * 1. Bundled skills (./skills/)
23
+ * 2. Workspace skills (~/.gemma/workspace/skills/)
24
+ * 3. Extra dirs from config (config.skills.dirs)
25
+ *
26
+ * Later sources override earlier ones by skill name.
27
+ */
28
+ export declare class SkillLoader {
29
+ loadAll(config: SkillsConfig, bundledDir: string, workspaceDir: string): Promise<LoadedSkill[]>;
30
+ private loadFromDir;
31
+ }
32
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/skills/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/D;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,SAAS,EAAE,OAAO,CAAC;IACnB,8BAA8B;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,qBAAa,WAAW;IAChB,OAAO,CACX,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,WAAW,EAAE,CAAC;YAkBX,WAAW;CA6C1B"}
@@ -0,0 +1,66 @@
1
+ import { readFile, readdir } from 'node:fs/promises';
2
+ import { existsSync } from 'node:fs';
3
+ import { join } from 'node:path';
4
+ import { parseSkillFile } from './parser.js';
5
+ import { checkSkillGating } from './gating.js';
6
+ /**
7
+ * Skill Loader — discovers and loads SKILL.md files from:
8
+ * 1. Bundled skills (./skills/)
9
+ * 2. Workspace skills (~/.gemma/workspace/skills/)
10
+ * 3. Extra dirs from config (config.skills.dirs)
11
+ *
12
+ * Later sources override earlier ones by skill name.
13
+ */
14
+ export class SkillLoader {
15
+ async loadAll(config, bundledDir, workspaceDir) {
16
+ const skillMap = new Map();
17
+ // 1. Bundled skills (lowest precedence)
18
+ await this.loadFromDir(bundledDir, skillMap);
19
+ // 2. Workspace skills
20
+ const workspaceSkillsDir = join(workspaceDir, 'skills');
21
+ await this.loadFromDir(workspaceSkillsDir, skillMap);
22
+ // 3. Extra directories from config (highest precedence)
23
+ for (const dir of config.dirs) {
24
+ await this.loadFromDir(dir, skillMap);
25
+ }
26
+ return Array.from(skillMap.values());
27
+ }
28
+ async loadFromDir(dir, skillMap) {
29
+ if (!existsSync(dir)) {
30
+ return;
31
+ }
32
+ let entries;
33
+ try {
34
+ entries = await readdir(dir);
35
+ }
36
+ catch {
37
+ return;
38
+ }
39
+ for (const entry of entries) {
40
+ const skillMdPath = join(dir, entry, 'SKILL.md');
41
+ if (!existsSync(skillMdPath)) {
42
+ continue;
43
+ }
44
+ try {
45
+ const content = await readFile(skillMdPath, 'utf-8');
46
+ const parsed = parseSkillFile(content);
47
+ if (!parsed.name) {
48
+ continue;
49
+ }
50
+ const gating = checkSkillGating(parsed);
51
+ skillMap.set(parsed.name, {
52
+ name: parsed.name,
53
+ description: parsed.description,
54
+ path: skillMdPath,
55
+ available: gating.available,
56
+ gateReason: gating.reason,
57
+ parsed,
58
+ });
59
+ }
60
+ catch {
61
+ // Skip unparseable skill files
62
+ }
63
+ }
64
+ }
65
+ }
66
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/skills/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAoB,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAoB/C;;;;;;;GAOG;AACH,MAAM,OAAO,WAAW;IACtB,KAAK,CAAC,OAAO,CACX,MAAoB,EACpB,UAAkB,EAClB,YAAoB;QAEpB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAuB,CAAC;QAEhD,wCAAwC;QACxC,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAE7C,sBAAsB;QACtB,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACxD,MAAM,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;QAErD,wDAAwD;QACxD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACvC,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,GAAW,EACX,QAAkC;QAElC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QAED,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;YAEjD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC7B,SAAS;YACX,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBACrD,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;gBAEvC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;oBACjB,SAAS;gBACX,CAAC;gBAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBAExC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE;oBACxB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,IAAI,EAAE,WAAW;oBACjB,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,UAAU,EAAE,MAAM,CAAC,MAAM;oBACzB,MAAM;iBACP,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,+BAA+B;YACjC,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Parsed SKILL.md content.
3
+ */
4
+ export interface ParsedSkill {
5
+ name: string;
6
+ description: string;
7
+ metadata: {
8
+ requires?: {
9
+ bins?: string[];
10
+ env?: string[];
11
+ };
12
+ primaryEnv?: string;
13
+ };
14
+ /** The markdown body (instructions for the AI) */
15
+ body: string;
16
+ }
17
+ /**
18
+ * Parse a SKILL.md file — extract YAML frontmatter and markdown body.
19
+ * Uses gray-matter for parsing.
20
+ */
21
+ export declare function parseSkillFile(content: string): ParsedSkill;
22
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/skills/parser.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE;QACR,QAAQ,CAAC,EAAE;YACT,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;YAChB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;SAChB,CAAC;QACF,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAyB3D"}
@@ -0,0 +1,29 @@
1
+ import matter from 'gray-matter';
2
+ /**
3
+ * Parse a SKILL.md file — extract YAML frontmatter and markdown body.
4
+ * Uses gray-matter for parsing.
5
+ */
6
+ export function parseSkillFile(content) {
7
+ const { data, content: body } = matter(content);
8
+ const name = typeof data.name === 'string' ? data.name : '';
9
+ const description = typeof data.description === 'string' ? data.description : '';
10
+ // Extract metadata from the nested structure
11
+ const meta = data.metadata ?? data;
12
+ const requires = meta.requires ?? meta.openclaw?.requires;
13
+ const primaryEnv = meta.primaryEnv ?? meta.openclaw?.primaryEnv;
14
+ return {
15
+ name,
16
+ description,
17
+ metadata: {
18
+ requires: requires
19
+ ? {
20
+ bins: Array.isArray(requires.bins) ? requires.bins : undefined,
21
+ env: Array.isArray(requires.env) ? requires.env : undefined,
22
+ }
23
+ : undefined,
24
+ primaryEnv: typeof primaryEnv === 'string' ? primaryEnv : undefined,
25
+ },
26
+ body: body.trim(),
27
+ };
28
+ }
29
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/skills/parser.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAmBjC;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAEhD,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5D,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IAEjF,6CAA6C;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC;IAEhE,OAAO;QACL,IAAI;QACJ,WAAW;QACX,QAAQ,EAAE;YACR,QAAQ,EAAE,QAAQ;gBAChB,CAAC,CAAC;oBACE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;oBAC9D,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;iBAC5D;gBACH,CAAC,CAAC,SAAS;YACb,UAAU,EAAE,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;SACpE;QACD,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;KAClB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { LoadedSkill } from './loader.js';
2
+ /**
3
+ * Build the <available_skills> XML block for the system prompt.
4
+ * Each skill is listed compactly: name + description + file path.
5
+ * The model reads the full SKILL.md on demand via the `read` tool.
6
+ *
7
+ * Only includes skills that passed gating checks.
8
+ */
9
+ export declare function buildSkillsPrompt(skills: LoadedSkill[]): string;
10
+ //# sourceMappingURL=prompt-injector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-injector.d.ts","sourceRoot":"","sources":["../../src/skills/prompt-injector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAmB/D"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Build the <available_skills> XML block for the system prompt.
3
+ * Each skill is listed compactly: name + description + file path.
4
+ * The model reads the full SKILL.md on demand via the `read` tool.
5
+ *
6
+ * Only includes skills that passed gating checks.
7
+ */
8
+ export function buildSkillsPrompt(skills) {
9
+ const available = skills.filter(s => s.available);
10
+ if (available.length === 0) {
11
+ return '';
12
+ }
13
+ const entries = available
14
+ .map(s => ` <skill>\n` +
15
+ ` <name>${escapeXml(s.name)}</name>\n` +
16
+ ` <description>${escapeXml(s.description)}</description>\n` +
17
+ ` <location>${escapeXml(s.path)}</location>\n` +
18
+ ` </skill>`)
19
+ .join('\n');
20
+ return `<available_skills>\n${entries}\n</available_skills>`;
21
+ }
22
+ function escapeXml(str) {
23
+ return str
24
+ .replace(/&/g, '&amp;')
25
+ .replace(/</g, '&lt;')
26
+ .replace(/>/g, '&gt;')
27
+ .replace(/"/g, '&quot;');
28
+ }
29
+ //# sourceMappingURL=prompt-injector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-injector.js","sourceRoot":"","sources":["../../src/skills/prompt-injector.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAqB;IACrD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAElD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,SAAS;SACtB,GAAG,CACF,CAAC,CAAC,EAAE,CACF,aAAa;QACb,aAAa,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW;QACzC,oBAAoB,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,kBAAkB;QAC9D,iBAAiB,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe;QACjD,YAAY,CACf;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,uBAAuB,OAAO,uBAAuB,CAAC;AAC/D,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,GAAG;SACP,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ToolHandler } from '../types.js';
2
+ export declare const cronTool: ToolHandler;
3
+ //# sourceMappingURL=cron.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../../src/tools/builtin/cron.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAA2B,MAAM,aAAa,CAAC;AA2CxE,eAAO,MAAM,QAAQ,EAAE,WAqKtB,CAAC"}