@phuetz/code-buddy 0.1.13 → 0.1.14

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 (258) hide show
  1. package/README.md +228 -13
  2. package/dist/agent/architect-mode.d.ts +11 -0
  3. package/dist/agent/architect-mode.js +133 -25
  4. package/dist/agent/architect-mode.js.map +1 -1
  5. package/dist/agent/codebuddy-agent.d.ts +24 -0
  6. package/dist/agent/codebuddy-agent.js +118 -16
  7. package/dist/agent/codebuddy-agent.js.map +1 -1
  8. package/dist/agent/execution/agent-executor.d.ts +9 -0
  9. package/dist/agent/execution/agent-executor.js +61 -0
  10. package/dist/agent/execution/agent-executor.js.map +1 -1
  11. package/dist/agent/message-queue.d.ts +77 -0
  12. package/dist/agent/message-queue.js +116 -0
  13. package/dist/agent/message-queue.js.map +1 -0
  14. package/dist/agent/middleware/auto-observation.d.ts +37 -0
  15. package/dist/agent/middleware/auto-observation.js +231 -0
  16. package/dist/agent/middleware/auto-observation.js.map +1 -0
  17. package/dist/agent/middleware/index.d.ts +2 -0
  18. package/dist/agent/middleware/index.js +1 -0
  19. package/dist/agent/middleware/index.js.map +1 -1
  20. package/dist/agent/tool-handler.js +3 -2
  21. package/dist/agent/tool-handler.js.map +1 -1
  22. package/dist/agent/types.d.ts +7 -2
  23. package/dist/analytics/budget-alerts.d.ts +81 -0
  24. package/dist/analytics/budget-alerts.js +126 -0
  25. package/dist/analytics/budget-alerts.js.map +1 -0
  26. package/dist/analytics/cost-predictor.d.ts +79 -0
  27. package/dist/analytics/cost-predictor.js +150 -0
  28. package/dist/analytics/cost-predictor.js.map +1 -0
  29. package/dist/analytics/index.d.ts +2 -0
  30. package/dist/analytics/index.js +2 -0
  31. package/dist/analytics/index.js.map +1 -1
  32. package/dist/auth/profile-manager.d.ts +205 -0
  33. package/dist/auth/profile-manager.js +484 -0
  34. package/dist/auth/profile-manager.js.map +1 -0
  35. package/dist/browser-automation/browser-manager.d.ts +79 -1
  36. package/dist/browser-automation/browser-manager.js +265 -2
  37. package/dist/browser-automation/browser-manager.js.map +1 -1
  38. package/dist/browser-automation/profile-manager.d.ts +32 -0
  39. package/dist/browser-automation/profile-manager.js +83 -0
  40. package/dist/browser-automation/profile-manager.js.map +1 -0
  41. package/dist/browser-automation/route-interceptor.d.ts +29 -0
  42. package/dist/browser-automation/route-interceptor.js +103 -0
  43. package/dist/browser-automation/route-interceptor.js.map +1 -0
  44. package/dist/browser-automation/screenshot-annotator.d.ts +23 -0
  45. package/dist/browser-automation/screenshot-annotator.js +86 -0
  46. package/dist/browser-automation/screenshot-annotator.js.map +1 -0
  47. package/dist/browser-automation/types.d.ts +47 -0
  48. package/dist/channels/discord/client.d.ts +2 -1
  49. package/dist/channels/discord/client.js +28 -16
  50. package/dist/channels/discord/client.js.map +1 -1
  51. package/dist/channels/google-chat/index.d.ts +210 -0
  52. package/dist/channels/google-chat/index.js +505 -0
  53. package/dist/channels/google-chat/index.js.map +1 -0
  54. package/dist/channels/group-security.d.ts +182 -0
  55. package/dist/channels/group-security.js +407 -0
  56. package/dist/channels/group-security.js.map +1 -0
  57. package/dist/channels/index.d.ts +17 -1
  58. package/dist/channels/index.js +16 -0
  59. package/dist/channels/index.js.map +1 -1
  60. package/dist/channels/matrix/index.d.ts +181 -0
  61. package/dist/channels/matrix/index.js +643 -0
  62. package/dist/channels/matrix/index.js.map +1 -0
  63. package/dist/channels/offline-queue.d.ts +92 -0
  64. package/dist/channels/offline-queue.js +112 -0
  65. package/dist/channels/offline-queue.js.map +1 -0
  66. package/dist/channels/reconnection-manager.d.ts +117 -0
  67. package/dist/channels/reconnection-manager.js +171 -0
  68. package/dist/channels/reconnection-manager.js.map +1 -0
  69. package/dist/channels/signal/index.d.ts +184 -0
  70. package/dist/channels/signal/index.js +488 -0
  71. package/dist/channels/signal/index.js.map +1 -0
  72. package/dist/channels/slack/client.d.ts +2 -1
  73. package/dist/channels/slack/client.js +30 -20
  74. package/dist/channels/slack/client.js.map +1 -1
  75. package/dist/channels/teams/index.d.ts +196 -0
  76. package/dist/channels/teams/index.js +477 -0
  77. package/dist/channels/teams/index.js.map +1 -0
  78. package/dist/channels/telegram/client.d.ts +3 -1
  79. package/dist/channels/telegram/client.js +29 -2
  80. package/dist/channels/telegram/client.js.map +1 -1
  81. package/dist/channels/webchat/index.d.ts +103 -0
  82. package/dist/channels/webchat/index.js +697 -0
  83. package/dist/channels/webchat/index.js.map +1 -0
  84. package/dist/channels/whatsapp/index.d.ts +105 -0
  85. package/dist/channels/whatsapp/index.js +533 -0
  86. package/dist/channels/whatsapp/index.js.map +1 -0
  87. package/dist/codebuddy/client.js +6 -3
  88. package/dist/codebuddy/client.js.map +1 -1
  89. package/dist/codebuddy/tool-definitions/advanced-tools.d.ts +1 -0
  90. package/dist/codebuddy/tool-definitions/advanced-tools.js +103 -3
  91. package/dist/codebuddy/tool-definitions/advanced-tools.js.map +1 -1
  92. package/dist/codebuddy/tool-definitions/index.d.ts +1 -1
  93. package/dist/codebuddy/tool-definitions/index.js +1 -1
  94. package/dist/codebuddy/tool-definitions/index.js.map +1 -1
  95. package/dist/codebuddy/tools.js +3 -1
  96. package/dist/codebuddy/tools.js.map +1 -1
  97. package/dist/commands/cli/config-command.d.ts +8 -0
  98. package/dist/commands/cli/config-command.js +90 -0
  99. package/dist/commands/cli/config-command.js.map +1 -0
  100. package/dist/commands/cli/openclaw-commands.d.ts +12 -0
  101. package/dist/commands/cli/openclaw-commands.js +446 -0
  102. package/dist/commands/cli/openclaw-commands.js.map +1 -0
  103. package/dist/commands/cli/utility-commands.js +30 -0
  104. package/dist/commands/cli/utility-commands.js.map +1 -1
  105. package/dist/commands/client-dispatcher.js +22 -2
  106. package/dist/commands/client-dispatcher.js.map +1 -1
  107. package/dist/commands/enhanced-command-handler.js +21 -2
  108. package/dist/commands/enhanced-command-handler.js.map +1 -1
  109. package/dist/commands/handlers/extra-handlers.d.ts +30 -0
  110. package/dist/commands/handlers/extra-handlers.js +547 -0
  111. package/dist/commands/handlers/extra-handlers.js.map +1 -0
  112. package/dist/commands/handlers/index.d.ts +1 -0
  113. package/dist/commands/handlers/index.js +2 -0
  114. package/dist/commands/handlers/index.js.map +1 -1
  115. package/dist/commands/slash/builtin-commands.js +41 -34
  116. package/dist/commands/slash/builtin-commands.js.map +1 -1
  117. package/dist/config/env-schema.d.ts +58 -0
  118. package/dist/config/env-schema.js +789 -0
  119. package/dist/config/env-schema.js.map +1 -0
  120. package/dist/config/feature-flags.js +2 -1
  121. package/dist/config/feature-flags.js.map +1 -1
  122. package/dist/context/bootstrap-loader.d.ts +48 -0
  123. package/dist/context/bootstrap-loader.js +123 -0
  124. package/dist/context/bootstrap-loader.js.map +1 -0
  125. package/dist/copilot/copilot-proxy.d.ts +15 -1
  126. package/dist/copilot/copilot-proxy.js +81 -22
  127. package/dist/copilot/copilot-proxy.js.map +1 -1
  128. package/dist/daemon/heartbeat.d.ts +112 -0
  129. package/dist/daemon/heartbeat.js +339 -0
  130. package/dist/daemon/heartbeat.js.map +1 -0
  131. package/dist/desktop-automation/smart-snapshot.d.ts +11 -0
  132. package/dist/desktop-automation/smart-snapshot.js +28 -0
  133. package/dist/desktop-automation/smart-snapshot.js.map +1 -1
  134. package/dist/identity/identity-manager.d.ts +95 -0
  135. package/dist/identity/identity-manager.js +242 -0
  136. package/dist/identity/identity-manager.js.map +1 -0
  137. package/dist/index.js +147 -17
  138. package/dist/index.js.map +1 -1
  139. package/dist/integrations/github-integration.js +1 -1
  140. package/dist/integrations/github-integration.js.map +1 -1
  141. package/dist/persistence/conversation-branches.js +2 -1
  142. package/dist/persistence/conversation-branches.js.map +1 -1
  143. package/dist/persistence/session-store.d.ts +1 -1
  144. package/dist/persistence/session-store.js +1 -1
  145. package/dist/persistence/session-store.js.map +1 -1
  146. package/dist/sandbox/auto-sandbox.d.ts +59 -0
  147. package/dist/sandbox/auto-sandbox.js +145 -0
  148. package/dist/sandbox/auto-sandbox.js.map +1 -0
  149. package/dist/security/audit-logger.d.ts +127 -0
  150. package/dist/security/audit-logger.js +194 -0
  151. package/dist/security/audit-logger.js.map +1 -0
  152. package/dist/security/bash-allowlist/allowlist-store.js +3 -2
  153. package/dist/security/bash-allowlist/allowlist-store.js.map +1 -1
  154. package/dist/security/bash-parser.js +0 -2
  155. package/dist/security/bash-parser.js.map +1 -1
  156. package/dist/security/code-validator.d.ts +51 -0
  157. package/dist/security/code-validator.js +185 -0
  158. package/dist/security/code-validator.js.map +1 -0
  159. package/dist/security/dangerous-patterns.d.ts +68 -0
  160. package/dist/security/dangerous-patterns.js +218 -0
  161. package/dist/security/dangerous-patterns.js.map +1 -0
  162. package/dist/security/remote-approval.d.ts +65 -0
  163. package/dist/security/remote-approval.js +138 -0
  164. package/dist/security/remote-approval.js.map +1 -0
  165. package/dist/security/security-audit.d.ts +7 -0
  166. package/dist/security/security-audit.js +23 -0
  167. package/dist/security/security-audit.js.map +1 -1
  168. package/dist/security/syntax-validator.d.ts +17 -0
  169. package/dist/security/syntax-validator.js +292 -0
  170. package/dist/security/syntax-validator.js.map +1 -0
  171. package/dist/server/index.js +277 -2
  172. package/dist/server/index.js.map +1 -1
  173. package/dist/services/prompt-builder.js +16 -0
  174. package/dist/services/prompt-builder.js.map +1 -1
  175. package/dist/skills/hub.d.ts +231 -0
  176. package/dist/skills/hub.js +694 -0
  177. package/dist/skills/hub.js.map +1 -0
  178. package/dist/skills/skill-loader.js +1 -1
  179. package/dist/skills/skill-loader.js.map +1 -1
  180. package/dist/skills/skill-manager.js +2 -1
  181. package/dist/skills/skill-manager.js.map +1 -1
  182. package/dist/tools/apply-patch.d.ts +1 -0
  183. package/dist/tools/apply-patch.js +57 -10
  184. package/dist/tools/apply-patch.js.map +1 -1
  185. package/dist/tools/bash/bash-tool.d.ts +123 -0
  186. package/dist/tools/bash/bash-tool.js +549 -0
  187. package/dist/tools/bash/bash-tool.js.map +1 -0
  188. package/dist/tools/bash/command-validator.d.ts +49 -0
  189. package/dist/tools/bash/command-validator.js +223 -0
  190. package/dist/tools/bash/command-validator.js.map +1 -0
  191. package/dist/tools/bash/index.d.ts +7 -0
  192. package/dist/tools/bash/index.js +8 -0
  193. package/dist/tools/bash/index.js.map +1 -0
  194. package/dist/tools/bash/security-patterns.d.ts +44 -0
  195. package/dist/tools/bash/security-patterns.js +234 -0
  196. package/dist/tools/bash/security-patterns.js.map +1 -0
  197. package/dist/tools/bash/streaming-executor.d.ts +23 -0
  198. package/dist/tools/bash/streaming-executor.js +134 -0
  199. package/dist/tools/bash/streaming-executor.js.map +1 -0
  200. package/dist/tools/code-formatter.js +41 -27
  201. package/dist/tools/code-formatter.js.map +1 -1
  202. package/dist/tools/code-review.js +1 -1
  203. package/dist/tools/code-review.js.map +1 -1
  204. package/dist/tools/computer-control-tool.js +21 -0
  205. package/dist/tools/computer-control-tool.js.map +1 -1
  206. package/dist/tools/document-tool.js +3 -2
  207. package/dist/tools/document-tool.js.map +1 -1
  208. package/dist/tools/git-tool.d.ts +45 -0
  209. package/dist/tools/git-tool.js +222 -0
  210. package/dist/tools/git-tool.js.map +1 -1
  211. package/dist/tools/index.d.ts +1 -1
  212. package/dist/tools/index.js +1 -1
  213. package/dist/tools/index.js.map +1 -1
  214. package/dist/tools/multi-edit.js +31 -3
  215. package/dist/tools/multi-edit.js.map +1 -1
  216. package/dist/tools/process-tool.d.ts +69 -0
  217. package/dist/tools/process-tool.js +222 -0
  218. package/dist/tools/process-tool.js.map +1 -0
  219. package/dist/tools/registry/git-tools.d.ts +32 -0
  220. package/dist/tools/registry/git-tools.js +211 -0
  221. package/dist/tools/registry/git-tools.js.map +1 -0
  222. package/dist/tools/registry/index.d.ts +2 -0
  223. package/dist/tools/registry/index.js +8 -0
  224. package/dist/tools/registry/index.js.map +1 -1
  225. package/dist/tools/registry/misc-tools.d.ts +32 -4
  226. package/dist/tools/registry/misc-tools.js +230 -90
  227. package/dist/tools/registry/misc-tools.js.map +1 -1
  228. package/dist/tools/registry/process-tools.d.ts +20 -0
  229. package/dist/tools/registry/process-tools.js +141 -0
  230. package/dist/tools/registry/process-tools.js.map +1 -0
  231. package/dist/tools/registry/types.d.ts +2 -0
  232. package/dist/ui/components/ChatInterface.js +9 -0
  233. package/dist/ui/components/ChatInterface.js.map +1 -1
  234. package/dist/utils/autonomy-manager.js +3 -2
  235. package/dist/utils/autonomy-manager.js.map +1 -1
  236. package/dist/utils/config-validation/schema.d.ts +15 -15
  237. package/dist/utils/confirmation-service.d.ts +16 -0
  238. package/dist/utils/confirmation-service.js +37 -3
  239. package/dist/utils/confirmation-service.js.map +1 -1
  240. package/dist/utils/custom-instructions.js +2 -1
  241. package/dist/utils/custom-instructions.js.map +1 -1
  242. package/dist/utils/graceful-shutdown.js +9 -9
  243. package/dist/utils/graceful-shutdown.js.map +1 -1
  244. package/dist/utils/head-tail-truncation.d.ts +18 -0
  245. package/dist/utils/head-tail-truncation.js +127 -0
  246. package/dist/utils/head-tail-truncation.js.map +1 -1
  247. package/dist/utils/history-manager.js +3 -2
  248. package/dist/utils/history-manager.js.map +1 -1
  249. package/dist/utils/performance.js +16 -15
  250. package/dist/utils/performance.js.map +1 -1
  251. package/dist/utils/update-notifier.js +2 -1
  252. package/dist/utils/update-notifier.js.map +1 -1
  253. package/dist/workflows/pipeline.d.ts +54 -1
  254. package/dist/workflows/pipeline.js +128 -7
  255. package/dist/workflows/pipeline.js.map +1 -1
  256. package/dist/workflows/step-manager.js +2 -1
  257. package/dist/workflows/step-manager.js.map +1 -1
  258. package/package.json +6 -3
@@ -0,0 +1,231 @@
1
+ /**
2
+ * Skills Hub
3
+ *
4
+ * OpenClaw ClawHub-inspired Skills Hub for searching, installing,
5
+ * publishing, and syncing skills from a remote registry.
6
+ *
7
+ * Provides lockfile-based integrity management, SHA-256 checksums,
8
+ * semver version comparison, and event-driven lifecycle hooks.
9
+ */
10
+ import { EventEmitter } from 'events';
11
+ export interface HubSkill {
12
+ /** Unique skill name */
13
+ name: string;
14
+ /** Semver version */
15
+ version: string;
16
+ /** Human-readable description */
17
+ description: string;
18
+ /** Author name */
19
+ author: string;
20
+ /** Tags for categorization and search */
21
+ tags: string[];
22
+ /** Total downloads */
23
+ downloads: number;
24
+ /** Star count */
25
+ stars: number;
26
+ /** Last updated timestamp (ISO 8601) */
27
+ updatedAt: string;
28
+ /** SHA-256 checksum of skill content */
29
+ checksum: string;
30
+ /** Size in bytes */
31
+ size: number;
32
+ /** Source repository URL */
33
+ repository?: string;
34
+ }
35
+ export interface HubSearchResult {
36
+ /** Matching skills */
37
+ skills: HubSkill[];
38
+ /** Total number of matches (may exceed returned skills) */
39
+ total: number;
40
+ /** Current page (1-indexed) */
41
+ page: number;
42
+ /** Page size */
43
+ pageSize: number;
44
+ }
45
+ export interface InstalledSkill {
46
+ /** Skill name */
47
+ name: string;
48
+ /** Installed version */
49
+ version: string;
50
+ /** Installation timestamp (epoch ms) */
51
+ installedAt: number;
52
+ /** Installation source */
53
+ source: 'hub' | 'local' | 'git';
54
+ /** SHA-256 checksum at install time */
55
+ checksum: string;
56
+ /** Path to installed SKILL.md */
57
+ path: string;
58
+ }
59
+ export interface HubConfig {
60
+ /** Remote registry API base URL */
61
+ registryUrl: string;
62
+ /** Local cache directory for downloaded skills */
63
+ cacheDir: string;
64
+ /** Directory where managed skills are installed */
65
+ skillsDir: string;
66
+ /** Path to the lockfile tracking installed skills */
67
+ lockfilePath: string;
68
+ /** Whether to auto-update on sync */
69
+ autoUpdate: boolean;
70
+ /** Interval in ms between update checks */
71
+ checkIntervalMs: number;
72
+ }
73
+ export interface HubSearchOptions {
74
+ /** Filter by tags */
75
+ tags?: string[];
76
+ /** Page number (1-indexed) */
77
+ page?: number;
78
+ /** Results per page */
79
+ pageSize?: number;
80
+ /** Max results (alias for pageSize) */
81
+ limit?: number;
82
+ /** Sort by field */
83
+ sortBy?: 'name' | 'downloads' | 'stars' | 'updatedAt';
84
+ /** Sort order */
85
+ sortOrder?: 'asc' | 'desc';
86
+ }
87
+ interface Lockfile {
88
+ version: number;
89
+ updatedAt: string;
90
+ skills: Record<string, InstalledSkill>;
91
+ }
92
+ /**
93
+ * Compute SHA-256 checksum of content.
94
+ */
95
+ export declare function computeChecksum(content: string): string;
96
+ /**
97
+ * Parse a semver string into [major, minor, patch] components.
98
+ * Returns [0, 0, 0] for invalid input.
99
+ */
100
+ export declare function parseSemver(version: string): [number, number, number];
101
+ /**
102
+ * Compare two semver strings.
103
+ * Returns -1 if a < b, 0 if a == b, 1 if a > b.
104
+ */
105
+ export declare function compareSemver(a: string, b: string): -1 | 0 | 1;
106
+ export declare class SkillsHub extends EventEmitter {
107
+ private config;
108
+ private lockfile;
109
+ private cache;
110
+ private cacheTimestamp;
111
+ private readonly cacheTtlMs;
112
+ constructor(config?: Partial<HubConfig>);
113
+ /**
114
+ * Ensure required directories exist.
115
+ */
116
+ private ensureDirectories;
117
+ /**
118
+ * Read the lockfile from disk. Returns an empty lockfile if not found.
119
+ */
120
+ private readLockfile;
121
+ /**
122
+ * Write the lockfile to disk.
123
+ */
124
+ private writeLockfile;
125
+ /**
126
+ * Get the lockfile contents (for testing / external inspection).
127
+ */
128
+ getLockfile(): Lockfile;
129
+ /**
130
+ * Search for skills by query string matching name, tags, and description.
131
+ * Checks local cache first, then fetches from remote registry.
132
+ */
133
+ search(query: string, options?: HubSearchOptions): Promise<HubSearchResult>;
134
+ /**
135
+ * Fetch skills from the remote registry.
136
+ * In a real implementation this would call the API.
137
+ * For now, returns cached data or an empty array.
138
+ */
139
+ private fetchRemoteSkills;
140
+ /**
141
+ * Read locally cached skills from the cache directory.
142
+ */
143
+ private getLocalCacheSkills;
144
+ /**
145
+ * Write skills to local cache file.
146
+ */
147
+ private writeLocalCache;
148
+ /**
149
+ * Install a skill by name and optional version.
150
+ * Downloads the skill content and writes it to the managed skills directory.
151
+ */
152
+ install(skillName: string, version?: string): Promise<InstalledSkill>;
153
+ /**
154
+ * Fetch skill content from the hub or local source.
155
+ * In a real implementation, this would download from the registry.
156
+ */
157
+ private fetchSkillContent;
158
+ /**
159
+ * Install a skill from local content string (for local/offline installs).
160
+ */
161
+ installFromContent(skillName: string, content: string, source?: InstalledSkill['source']): Promise<InstalledSkill>;
162
+ /**
163
+ * Remove an installed skill.
164
+ */
165
+ uninstall(skillName: string): Promise<boolean>;
166
+ /**
167
+ * Update one or all installed skills.
168
+ * If skillName is provided, updates that skill only.
169
+ * Otherwise updates all installed skills.
170
+ */
171
+ update(skillName?: string): Promise<InstalledSkill[]>;
172
+ /**
173
+ * Get skill info from the hub API.
174
+ */
175
+ private getHubSkillInfo;
176
+ /**
177
+ * Validate and prepare a skill for publishing.
178
+ * Reads the SKILL.md, validates YAML frontmatter, computes checksum,
179
+ * and returns the prepared HubSkill metadata.
180
+ */
181
+ publish(skillPath: string): Promise<HubSkill>;
182
+ /**
183
+ * Sync the lockfile with actually installed skills.
184
+ * - Removes lockfile entries for skills that no longer exist on disk.
185
+ * - Detects checksum mismatches (manual edits).
186
+ * - Optionally triggers updates if autoUpdate is enabled.
187
+ */
188
+ sync(): Promise<{
189
+ removed: string[];
190
+ mismatched: string[];
191
+ updated: string[];
192
+ }>;
193
+ /**
194
+ * List all installed skills from the lockfile.
195
+ */
196
+ list(): InstalledSkill[];
197
+ /**
198
+ * Get detailed information about an installed skill.
199
+ * Returns the lockfile entry plus the current on-disk content metadata.
200
+ */
201
+ info(skillName: string): {
202
+ installed: InstalledSkill;
203
+ content?: string;
204
+ integrityOk: boolean;
205
+ } | null;
206
+ /**
207
+ * Extract the version field from SKILL.md YAML frontmatter.
208
+ */
209
+ private extractVersionFromContent;
210
+ /**
211
+ * Validate skill content by parsing it and checking required fields.
212
+ */
213
+ private validateSkillContent;
214
+ /**
215
+ * Get hub configuration.
216
+ */
217
+ getConfig(): Readonly<HubConfig>;
218
+ /**
219
+ * Shutdown and cleanup.
220
+ */
221
+ shutdown(): void;
222
+ }
223
+ /**
224
+ * Get the singleton SkillsHub instance.
225
+ */
226
+ export declare function getSkillsHub(config?: Partial<HubConfig>): SkillsHub;
227
+ /**
228
+ * Reset the singleton SkillsHub instance (for testing).
229
+ */
230
+ export declare function resetSkillsHub(): void;
231
+ export default SkillsHub;