@open-skills-hub/api 1.0.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.
- package/dist/controllers/audit.d.ts +33 -0
- package/dist/controllers/audit.d.ts.map +1 -0
- package/dist/controllers/audit.js +122 -0
- package/dist/controllers/audit.js.map +1 -0
- package/dist/controllers/cache.d.ts +42 -0
- package/dist/controllers/cache.d.ts.map +1 -0
- package/dist/controllers/cache.js +247 -0
- package/dist/controllers/cache.js.map +1 -0
- package/dist/controllers/feedback.d.ts +44 -0
- package/dist/controllers/feedback.d.ts.map +1 -0
- package/dist/controllers/feedback.js +216 -0
- package/dist/controllers/feedback.js.map +1 -0
- package/dist/controllers/index.d.ts +9 -0
- package/dist/controllers/index.d.ts.map +1 -0
- package/dist/controllers/index.js +9 -0
- package/dist/controllers/index.js.map +1 -0
- package/dist/controllers/skills.d.ts +66 -0
- package/dist/controllers/skills.d.ts.map +1 -0
- package/dist/controllers/skills.js +355 -0
- package/dist/controllers/skills.js.map +1 -0
- package/dist/controllers/versions.d.ts +43 -0
- package/dist/controllers/versions.d.ts.map +1 -0
- package/dist/controllers/versions.js +298 -0
- package/dist/controllers/versions.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +78 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware/auth.d.ts +34 -0
- package/dist/middleware/auth.d.ts.map +1 -0
- package/dist/middleware/auth.js +148 -0
- package/dist/middleware/auth.js.map +1 -0
- package/dist/middleware/error.d.ts +26 -0
- package/dist/middleware/error.d.ts.map +1 -0
- package/dist/middleware/error.js +102 -0
- package/dist/middleware/error.js.map +1 -0
- package/dist/middleware/index.d.ts +8 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +8 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/logger.d.ts +19 -0
- package/dist/middleware/logger.d.ts.map +1 -0
- package/dist/middleware/logger.js +54 -0
- package/dist/middleware/logger.js.map +1 -0
- package/dist/middleware/validation.d.ts +671 -0
- package/dist/middleware/validation.d.ts.map +1 -0
- package/dist/middleware/validation.js +225 -0
- package/dist/middleware/validation.js.map +1 -0
- package/dist/routes/audit.d.ts +6 -0
- package/dist/routes/audit.d.ts.map +1 -0
- package/dist/routes/audit.js +54 -0
- package/dist/routes/audit.js.map +1 -0
- package/dist/routes/cache.d.ts +6 -0
- package/dist/routes/cache.d.ts.map +1 -0
- package/dist/routes/cache.js +70 -0
- package/dist/routes/cache.js.map +1 -0
- package/dist/routes/feedback.d.ts +6 -0
- package/dist/routes/feedback.d.ts.map +1 -0
- package/dist/routes/feedback.js +68 -0
- package/dist/routes/feedback.js.map +1 -0
- package/dist/routes/health.d.ts +6 -0
- package/dist/routes/health.d.ts.map +1 -0
- package/dist/routes/health.js +122 -0
- package/dist/routes/health.js.map +1 -0
- package/dist/routes/index.d.ts +12 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +12 -0
- package/dist/routes/index.js.map +1 -0
- package/dist/routes/scan.d.ts +8 -0
- package/dist/routes/scan.d.ts.map +1 -0
- package/dist/routes/scan.js +315 -0
- package/dist/routes/scan.js.map +1 -0
- package/dist/routes/search.d.ts +6 -0
- package/dist/routes/search.d.ts.map +1 -0
- package/dist/routes/search.js +44 -0
- package/dist/routes/search.js.map +1 -0
- package/dist/routes/skills.d.ts +6 -0
- package/dist/routes/skills.d.ts.map +1 -0
- package/dist/routes/skills.js +74 -0
- package/dist/routes/skills.js.map +1 -0
- package/dist/routes/versions.d.ts +6 -0
- package/dist/routes/versions.d.ts.map +1 -0
- package/dist/routes/versions.js +66 -0
- package/dist/routes/versions.js.map +1 -0
- package/dist/server.d.ts +26 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +166 -0
- package/dist/server.js.map +1 -0
- package/package.json +42 -0
- package/src/controllers/audit.ts +175 -0
- package/src/controllers/cache.ts +344 -0
- package/src/controllers/feedback.ts +309 -0
- package/src/controllers/index.ts +9 -0
- package/src/controllers/skills.ts +489 -0
- package/src/controllers/versions.ts +427 -0
- package/src/index.ts +87 -0
- package/src/middleware/auth.ts +219 -0
- package/src/middleware/error.ts +180 -0
- package/src/middleware/index.ts +8 -0
- package/src/middleware/logger.ts +71 -0
- package/src/middleware/validation.ts +270 -0
- package/src/routes/audit.ts +74 -0
- package/src/routes/cache.ts +93 -0
- package/src/routes/feedback.ts +93 -0
- package/src/routes/health.ts +151 -0
- package/src/routes/index.ts +12 -0
- package/src/routes/scan.ts +428 -0
- package/src/routes/search.ts +51 -0
- package/src/routes/skills.ts +102 -0
- package/src/routes/versions.ts +91 -0
- package/src/server.ts +205 -0
- package/tsconfig.json +13 -0
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Open Skills Hub - Request Validation Middleware
|
|
3
|
+
*/
|
|
4
|
+
import { z, ZodError } from 'zod';
|
|
5
|
+
import { AppError, ErrorCodes } from '@open-skills-hub/core';
|
|
6
|
+
/**
|
|
7
|
+
* Validate request body with Zod schema
|
|
8
|
+
*/
|
|
9
|
+
export function validateBody(schema) {
|
|
10
|
+
return async function (request, _reply) {
|
|
11
|
+
try {
|
|
12
|
+
request.body = schema.parse(request.body);
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
if (error instanceof ZodError) {
|
|
16
|
+
throw error; // Will be handled by error middleware
|
|
17
|
+
}
|
|
18
|
+
throw new AppError(ErrorCodes.VALIDATION_FAILED, 'Invalid request body', 400);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Validate request query with Zod schema
|
|
24
|
+
*/
|
|
25
|
+
export function validateQuery(schema) {
|
|
26
|
+
return async function (request, _reply) {
|
|
27
|
+
try {
|
|
28
|
+
request.query = schema.parse(request.query);
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
if (error instanceof ZodError) {
|
|
32
|
+
throw error;
|
|
33
|
+
}
|
|
34
|
+
throw new AppError(ErrorCodes.VALIDATION_FAILED, 'Invalid query parameters', 400);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Validate request params with Zod schema
|
|
40
|
+
*/
|
|
41
|
+
export function validateParams(schema) {
|
|
42
|
+
return async function (request, _reply) {
|
|
43
|
+
try {
|
|
44
|
+
request.params = schema.parse(request.params);
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
if (error instanceof ZodError) {
|
|
48
|
+
throw error;
|
|
49
|
+
}
|
|
50
|
+
throw new AppError(ErrorCodes.VALIDATION_FAILED, 'Invalid path parameters', 400);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
// ============================================================================
|
|
55
|
+
// Common Validation Schemas
|
|
56
|
+
// ============================================================================
|
|
57
|
+
/**
|
|
58
|
+
* Pagination query schema
|
|
59
|
+
*/
|
|
60
|
+
export const PaginationQuerySchema = z.object({
|
|
61
|
+
cursor: z.string().optional(),
|
|
62
|
+
limit: z.coerce.number().int().min(1).max(100).default(20),
|
|
63
|
+
});
|
|
64
|
+
/**
|
|
65
|
+
* Skill name param schema
|
|
66
|
+
*/
|
|
67
|
+
export const SkillNameParamSchema = z.object({
|
|
68
|
+
name: z.string().min(1).max(214),
|
|
69
|
+
});
|
|
70
|
+
/**
|
|
71
|
+
* Skill name with version param schema
|
|
72
|
+
*/
|
|
73
|
+
export const SkillVersionParamSchema = z.object({
|
|
74
|
+
name: z.string().min(1).max(214),
|
|
75
|
+
version: z.string().regex(/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-.+)?$/),
|
|
76
|
+
});
|
|
77
|
+
/**
|
|
78
|
+
* ID param schema
|
|
79
|
+
*/
|
|
80
|
+
export const IdParamSchema = z.object({
|
|
81
|
+
id: z.string().min(1),
|
|
82
|
+
});
|
|
83
|
+
/**
|
|
84
|
+
* Search query schema
|
|
85
|
+
*/
|
|
86
|
+
export const SearchQuerySchema = z.object({
|
|
87
|
+
q: z.string().optional(),
|
|
88
|
+
category: z.string().optional(),
|
|
89
|
+
author: z.string().optional(),
|
|
90
|
+
sort: z.enum(['relevance', 'uses', 'updated', 'created', 'name']).default('relevance'),
|
|
91
|
+
order: z.enum(['asc', 'desc']).default('desc'),
|
|
92
|
+
cursor: z.string().optional(),
|
|
93
|
+
limit: z.coerce.number().int().min(1).max(100).default(20),
|
|
94
|
+
});
|
|
95
|
+
/**
|
|
96
|
+
* Create skill body schema
|
|
97
|
+
*/
|
|
98
|
+
export const CreateSkillBodySchema = z.object({
|
|
99
|
+
name: z.string().regex(/^[a-z][a-z0-9-]*[a-z0-9]$|^[a-z]$/, 'Invalid skill name format'),
|
|
100
|
+
scope: z.string().optional(),
|
|
101
|
+
displayName: z.string().optional(),
|
|
102
|
+
description: z.string().min(1).max(10000),
|
|
103
|
+
category: z.string().optional(),
|
|
104
|
+
keywords: z.array(z.string()).max(20).default([]),
|
|
105
|
+
license: z.string().optional(),
|
|
106
|
+
repository: z.string().url().optional(),
|
|
107
|
+
homepage: z.string().url().optional(),
|
|
108
|
+
visibility: z.enum(['public', 'private', 'unlisted']).default('public'),
|
|
109
|
+
content: z.object({
|
|
110
|
+
frontmatter: z.object({
|
|
111
|
+
name: z.string(),
|
|
112
|
+
description: z.string().optional(),
|
|
113
|
+
author: z.string().optional(), // Author field for skill attribution
|
|
114
|
+
allowedTools: z.array(z.string()).optional(),
|
|
115
|
+
argumentHint: z.string().optional(),
|
|
116
|
+
disableModelInvocation: z.boolean().optional(),
|
|
117
|
+
userInvocable: z.boolean().optional(),
|
|
118
|
+
model: z.string().optional(),
|
|
119
|
+
context: z.literal('fork').optional(),
|
|
120
|
+
agent: z.string().optional(),
|
|
121
|
+
license: z.string().optional(),
|
|
122
|
+
compatibility: z.string().optional(),
|
|
123
|
+
derivedFrom: z.object({
|
|
124
|
+
name: z.string(),
|
|
125
|
+
version: z.string(),
|
|
126
|
+
author: z.string(),
|
|
127
|
+
}).optional(),
|
|
128
|
+
metadata: z.record(z.string()).optional(),
|
|
129
|
+
}),
|
|
130
|
+
markdown: z.string().min(1),
|
|
131
|
+
files: z.array(z.object({
|
|
132
|
+
path: z.string(),
|
|
133
|
+
content: z.string(),
|
|
134
|
+
size: z.number(),
|
|
135
|
+
})).optional(),
|
|
136
|
+
}),
|
|
137
|
+
version: z.string().regex(/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-.+)?$/).default('1.0.0'),
|
|
138
|
+
changelog: z.string().optional(),
|
|
139
|
+
});
|
|
140
|
+
/**
|
|
141
|
+
* Update skill body schema
|
|
142
|
+
*/
|
|
143
|
+
export const UpdateSkillBodySchema = z.object({
|
|
144
|
+
displayName: z.string().optional(),
|
|
145
|
+
description: z.string().min(1).max(10000).optional(),
|
|
146
|
+
category: z.string().optional(),
|
|
147
|
+
keywords: z.array(z.string()).max(20).optional(),
|
|
148
|
+
repository: z.string().url().optional().nullable(),
|
|
149
|
+
homepage: z.string().url().optional().nullable(),
|
|
150
|
+
visibility: z.enum(['public', 'private', 'unlisted']).optional(),
|
|
151
|
+
});
|
|
152
|
+
/**
|
|
153
|
+
* Publish version body schema
|
|
154
|
+
*/
|
|
155
|
+
export const PublishVersionBodySchema = z.object({
|
|
156
|
+
version: z.string().regex(/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-.+)?$/),
|
|
157
|
+
content: z.object({
|
|
158
|
+
frontmatter: z.object({
|
|
159
|
+
name: z.string(),
|
|
160
|
+
description: z.string().optional(),
|
|
161
|
+
allowedTools: z.array(z.string()).optional(),
|
|
162
|
+
argumentHint: z.string().optional(),
|
|
163
|
+
disableModelInvocation: z.boolean().optional(),
|
|
164
|
+
userInvocable: z.boolean().optional(),
|
|
165
|
+
model: z.string().optional(),
|
|
166
|
+
context: z.literal('fork').optional(),
|
|
167
|
+
agent: z.string().optional(),
|
|
168
|
+
license: z.string().optional(),
|
|
169
|
+
compatibility: z.string().optional(),
|
|
170
|
+
derivedFrom: z.object({
|
|
171
|
+
name: z.string(),
|
|
172
|
+
version: z.string(),
|
|
173
|
+
author: z.string(),
|
|
174
|
+
}).optional(),
|
|
175
|
+
metadata: z.record(z.string()).optional(),
|
|
176
|
+
}),
|
|
177
|
+
markdown: z.string().min(1),
|
|
178
|
+
files: z.array(z.object({
|
|
179
|
+
path: z.string(),
|
|
180
|
+
content: z.string(),
|
|
181
|
+
size: z.number(),
|
|
182
|
+
})).optional(),
|
|
183
|
+
}),
|
|
184
|
+
changelog: z.string().optional(),
|
|
185
|
+
tag: z.string().optional(),
|
|
186
|
+
});
|
|
187
|
+
/**
|
|
188
|
+
* Submit feedback body schema
|
|
189
|
+
*/
|
|
190
|
+
export const SubmitFeedbackBodySchema = z.object({
|
|
191
|
+
skillName: z.string(),
|
|
192
|
+
skillVersion: z.string(),
|
|
193
|
+
feedbackType: z.enum(['success', 'failure', 'suggestion', 'bug']),
|
|
194
|
+
rating: z.number().min(1).max(5),
|
|
195
|
+
comment: z.string().max(5000).optional(),
|
|
196
|
+
context: z.object({
|
|
197
|
+
executionTime: z.number().optional(),
|
|
198
|
+
taskType: z.string().optional(),
|
|
199
|
+
errorMessage: z.string().optional(),
|
|
200
|
+
agentType: z.string().optional(),
|
|
201
|
+
agentVersion: z.string().optional(),
|
|
202
|
+
outcome: z.enum(['success', 'partial', 'failure']).optional(),
|
|
203
|
+
}).optional(),
|
|
204
|
+
});
|
|
205
|
+
/**
|
|
206
|
+
* Scan content body schema
|
|
207
|
+
*/
|
|
208
|
+
export const ScanContentBodySchema = z.object({
|
|
209
|
+
content: z.string().min(1).max(1024 * 1024), // 1MB max
|
|
210
|
+
contentType: z.enum(['markdown', 'yaml', 'json']).default('markdown'),
|
|
211
|
+
});
|
|
212
|
+
/**
|
|
213
|
+
* Audit query schema
|
|
214
|
+
*/
|
|
215
|
+
export const AuditQuerySchema = z.object({
|
|
216
|
+
eventType: z.string().optional(),
|
|
217
|
+
actor: z.string().optional(),
|
|
218
|
+
resourceType: z.string().optional(),
|
|
219
|
+
resourceName: z.string().optional(),
|
|
220
|
+
from: z.string().optional(),
|
|
221
|
+
to: z.string().optional(),
|
|
222
|
+
cursor: z.string().optional(),
|
|
223
|
+
limit: z.coerce.number().int().min(1).max(100).default(50),
|
|
224
|
+
});
|
|
225
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/middleware/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/routes/audit.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAsBrE,wBAAsB,WAAW,CAC/B,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,IAAI,CAAC,CA4Cf"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Open Skills Hub - Audit Routes
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { getAuditLogs, getSkillAuditLogs, getAuditLogById, getAuditStats, } from '../controllers/audit.js';
|
|
6
|
+
import { requireAuth, requirePermission } from '../middleware/auth.js';
|
|
7
|
+
import { validateParams, validateQuery, SkillNameParamSchema, IdParamSchema, AuditQuerySchema, } from '../middleware/validation.js';
|
|
8
|
+
// Stats query schema
|
|
9
|
+
const StatsQuerySchema = z.object({
|
|
10
|
+
days: z.coerce.number().int().min(1).max(365).default(30),
|
|
11
|
+
});
|
|
12
|
+
export async function auditRoutes(server, _opts) {
|
|
13
|
+
// Get audit logs (admin only)
|
|
14
|
+
// GET /v1/audit
|
|
15
|
+
server.get('/', {
|
|
16
|
+
preHandler: [
|
|
17
|
+
requireAuth,
|
|
18
|
+
requirePermission('admin'),
|
|
19
|
+
validateQuery(AuditQuerySchema),
|
|
20
|
+
],
|
|
21
|
+
handler: getAuditLogs,
|
|
22
|
+
});
|
|
23
|
+
// Get audit statistics
|
|
24
|
+
// GET /v1/audit/stats
|
|
25
|
+
server.get('/stats', {
|
|
26
|
+
preHandler: [
|
|
27
|
+
requireAuth,
|
|
28
|
+
requirePermission('admin'),
|
|
29
|
+
validateQuery(StatsQuerySchema),
|
|
30
|
+
],
|
|
31
|
+
handler: getAuditStats,
|
|
32
|
+
});
|
|
33
|
+
// Get audit logs for a specific skill
|
|
34
|
+
// GET /v1/audit/skill/:name
|
|
35
|
+
server.get('/skill/:name', {
|
|
36
|
+
preHandler: [
|
|
37
|
+
requireAuth,
|
|
38
|
+
validateParams(SkillNameParamSchema),
|
|
39
|
+
validateQuery(AuditQuerySchema),
|
|
40
|
+
],
|
|
41
|
+
handler: getSkillAuditLogs,
|
|
42
|
+
});
|
|
43
|
+
// Get audit log by ID
|
|
44
|
+
// GET /v1/audit/:id
|
|
45
|
+
server.get('/:id', {
|
|
46
|
+
preHandler: [
|
|
47
|
+
requireAuth,
|
|
48
|
+
requirePermission('admin'),
|
|
49
|
+
validateParams(IdParamSchema),
|
|
50
|
+
],
|
|
51
|
+
handler: getAuditLogById,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/routes/audit.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,aAAa,GACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EACL,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,aAAa,EACb,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AAErC,qBAAqB;AACrB,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC1D,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAuB,EACvB,KAA2B;IAE3B,8BAA8B;IAC9B,gBAAgB;IAChB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;QACd,UAAU,EAAE;YACV,WAAW;YACX,iBAAiB,CAAC,OAAO,CAAC;YAC1B,aAAa,CAAC,gBAAgB,CAAC;SAChC;QACD,OAAO,EAAE,YAAY;KACtB,CAAC,CAAC;IAEH,uBAAuB;IACvB,sBAAsB;IACtB,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE;QACnB,UAAU,EAAE;YACV,WAAW;YACX,iBAAiB,CAAC,OAAO,CAAC;YAC1B,aAAa,CAAC,gBAAgB,CAAC;SAChC;QACD,OAAO,EAAE,aAAa;KACvB,CAAC,CAAC;IAEH,sCAAsC;IACtC,4BAA4B;IAC5B,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE;QACzB,UAAU,EAAE;YACV,WAAW;YACX,cAAc,CAAC,oBAAoB,CAAC;YACpC,aAAa,CAAC,gBAAgB,CAAC;SAChC;QACD,OAAO,EAAE,iBAAiB;KAC3B,CAAC,CAAC;IAEH,sBAAsB;IACtB,oBAAoB;IACpB,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE;QACjB,UAAU,EAAE;YACV,WAAW;YACX,iBAAiB,CAAC,OAAO,CAAC;YAC1B,cAAc,CAAC,aAAa,CAAC;SAC9B;QACD,OAAO,EAAE,eAAe;KACzB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/routes/cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAiBrE,wBAAsB,WAAW,CAC/B,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAoEf"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Open Skills Hub - Cache Routes
|
|
3
|
+
*/
|
|
4
|
+
import { getCachedSkills, getSkillCacheInfo, getVersionCacheInfo, invalidateSkillCache, invalidateVersionCache, cleanExpiredCache, getCacheStats, } from '../controllers/cache.js';
|
|
5
|
+
import { optionalAuth, requireAuth, requirePermission } from '../middleware/auth.js';
|
|
6
|
+
import { validateParams, SkillNameParamSchema, SkillVersionParamSchema, } from '../middleware/validation.js';
|
|
7
|
+
export async function cacheRoutes(server, _opts) {
|
|
8
|
+
// Get all cached skills
|
|
9
|
+
// GET /v1/cache
|
|
10
|
+
server.get('/', {
|
|
11
|
+
preHandler: [
|
|
12
|
+
requireAuth,
|
|
13
|
+
],
|
|
14
|
+
handler: getCachedSkills,
|
|
15
|
+
});
|
|
16
|
+
// Get cache statistics
|
|
17
|
+
// GET /v1/cache/stats
|
|
18
|
+
server.get('/stats', {
|
|
19
|
+
preHandler: [
|
|
20
|
+
requireAuth,
|
|
21
|
+
],
|
|
22
|
+
handler: getCacheStats,
|
|
23
|
+
});
|
|
24
|
+
// Clean expired cache entries
|
|
25
|
+
// POST /v1/cache/clean
|
|
26
|
+
server.post('/clean', {
|
|
27
|
+
preHandler: [
|
|
28
|
+
requireAuth,
|
|
29
|
+
requirePermission('admin'),
|
|
30
|
+
],
|
|
31
|
+
handler: cleanExpiredCache,
|
|
32
|
+
});
|
|
33
|
+
// Get cache info for a skill
|
|
34
|
+
// GET /v1/cache/:name
|
|
35
|
+
server.get('/:name', {
|
|
36
|
+
preHandler: [
|
|
37
|
+
optionalAuth,
|
|
38
|
+
validateParams(SkillNameParamSchema),
|
|
39
|
+
],
|
|
40
|
+
handler: getSkillCacheInfo,
|
|
41
|
+
});
|
|
42
|
+
// Invalidate cache for a skill
|
|
43
|
+
// DELETE /v1/cache/:name
|
|
44
|
+
server.delete('/:name', {
|
|
45
|
+
preHandler: [
|
|
46
|
+
requireAuth,
|
|
47
|
+
validateParams(SkillNameParamSchema),
|
|
48
|
+
],
|
|
49
|
+
handler: invalidateSkillCache,
|
|
50
|
+
});
|
|
51
|
+
// Get cache info for a specific version
|
|
52
|
+
// GET /v1/cache/:name/:version
|
|
53
|
+
server.get('/:name/:version', {
|
|
54
|
+
preHandler: [
|
|
55
|
+
optionalAuth,
|
|
56
|
+
validateParams(SkillVersionParamSchema),
|
|
57
|
+
],
|
|
58
|
+
handler: getVersionCacheInfo,
|
|
59
|
+
});
|
|
60
|
+
// Invalidate cache for a specific version
|
|
61
|
+
// DELETE /v1/cache/:name/:version
|
|
62
|
+
server.delete('/:name/:version', {
|
|
63
|
+
preHandler: [
|
|
64
|
+
requireAuth,
|
|
65
|
+
validateParams(SkillVersionParamSchema),
|
|
66
|
+
],
|
|
67
|
+
handler: invalidateVersionCache,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/routes/cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,GACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AAErC,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAuB,EACvB,KAA2B;IAE3B,wBAAwB;IACxB,gBAAgB;IAChB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;QACd,UAAU,EAAE;YACV,WAAW;SACZ;QACD,OAAO,EAAE,eAAe;KACzB,CAAC,CAAC;IAEH,uBAAuB;IACvB,sBAAsB;IACtB,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE;QACnB,UAAU,EAAE;YACV,WAAW;SACZ;QACD,OAAO,EAAE,aAAa;KACvB,CAAC,CAAC;IAEH,8BAA8B;IAC9B,uBAAuB;IACvB,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;QACpB,UAAU,EAAE;YACV,WAAW;YACX,iBAAiB,CAAC,OAAO,CAAC;SAC3B;QACD,OAAO,EAAE,iBAAiB;KAC3B,CAAC,CAAC;IAEH,6BAA6B;IAC7B,sBAAsB;IACtB,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE;QACnB,UAAU,EAAE;YACV,YAAY;YACZ,cAAc,CAAC,oBAAoB,CAAC;SACrC;QACD,OAAO,EAAE,iBAAiB;KAC3B,CAAC,CAAC;IAEH,+BAA+B;IAC/B,yBAAyB;IACzB,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;QACtB,UAAU,EAAE;YACV,WAAW;YACX,cAAc,CAAC,oBAAoB,CAAC;SACrC;QACD,OAAO,EAAE,oBAAoB;KAC9B,CAAC,CAAC;IAEH,wCAAwC;IACxC,+BAA+B;IAC/B,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE;QAC5B,UAAU,EAAE;YACV,YAAY;YACZ,cAAc,CAAC,uBAAuB,CAAC;SACxC;QACD,OAAO,EAAE,mBAAmB;KAC7B,CAAC,CAAC;IAEH,0CAA0C;IAC1C,kCAAkC;IAClC,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE;QAC/B,UAAU,EAAE;YACV,WAAW;YACX,cAAc,CAAC,uBAAuB,CAAC;SACxC;QACD,OAAO,EAAE,sBAAsB;KAChC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Open Skills Hub - Feedback Routes
|
|
3
|
+
*/
|
|
4
|
+
import type { FastifyInstance, FastifyPluginOptions } from 'fastify';
|
|
5
|
+
export declare function feedbackRoutes(server: FastifyInstance, _opts: FastifyPluginOptions): Promise<void>;
|
|
6
|
+
//# sourceMappingURL=feedback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../../src/routes/feedback.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAgCrE,wBAAsB,cAAc,CAClC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAqDf"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Open Skills Hub - Feedback Routes
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { submitFeedback, getSkillFeedbacks, getFeedbackById, reviewFeedback, getFeedbackStats, } from '../controllers/feedback.js';
|
|
6
|
+
import { optionalAuth, requireAuth, requirePermission } from '../middleware/auth.js';
|
|
7
|
+
import { validateBody, validateParams, validateQuery, SkillNameParamSchema, IdParamSchema, SubmitFeedbackBodySchema, PaginationQuerySchema, } from '../middleware/validation.js';
|
|
8
|
+
// Extended query schema for feedbacks
|
|
9
|
+
const FeedbackQuerySchema = PaginationQuerySchema.extend({
|
|
10
|
+
feedbackType: z.enum(['success', 'failure', 'suggestion', 'bug']).optional(),
|
|
11
|
+
status: z.enum(['pending', 'reviewed', 'accepted', 'rejected']).optional(),
|
|
12
|
+
});
|
|
13
|
+
// Review feedback body schema
|
|
14
|
+
const ReviewFeedbackBodySchema = z.object({
|
|
15
|
+
status: z.enum(['reviewed', 'accepted', 'rejected']),
|
|
16
|
+
notes: z.string().optional(),
|
|
17
|
+
});
|
|
18
|
+
export async function feedbackRoutes(server, _opts) {
|
|
19
|
+
// Submit feedback
|
|
20
|
+
// POST /v1/feedback
|
|
21
|
+
server.post('/', {
|
|
22
|
+
preHandler: [
|
|
23
|
+
optionalAuth,
|
|
24
|
+
validateBody(SubmitFeedbackBodySchema),
|
|
25
|
+
],
|
|
26
|
+
handler: submitFeedback,
|
|
27
|
+
});
|
|
28
|
+
// Get feedbacks for a skill
|
|
29
|
+
// GET /v1/feedback/skill/:name
|
|
30
|
+
server.get('/skill/:name', {
|
|
31
|
+
preHandler: [
|
|
32
|
+
optionalAuth,
|
|
33
|
+
validateParams(SkillNameParamSchema),
|
|
34
|
+
validateQuery(FeedbackQuerySchema),
|
|
35
|
+
],
|
|
36
|
+
handler: getSkillFeedbacks,
|
|
37
|
+
});
|
|
38
|
+
// Get feedback statistics for a skill
|
|
39
|
+
// GET /v1/feedback/skill/:name/stats
|
|
40
|
+
server.get('/skill/:name/stats', {
|
|
41
|
+
preHandler: [
|
|
42
|
+
optionalAuth,
|
|
43
|
+
validateParams(SkillNameParamSchema),
|
|
44
|
+
],
|
|
45
|
+
handler: getFeedbackStats,
|
|
46
|
+
});
|
|
47
|
+
// Get feedback by ID
|
|
48
|
+
// GET /v1/feedback/:id
|
|
49
|
+
server.get('/:id', {
|
|
50
|
+
preHandler: [
|
|
51
|
+
optionalAuth,
|
|
52
|
+
validateParams(IdParamSchema),
|
|
53
|
+
],
|
|
54
|
+
handler: getFeedbackById,
|
|
55
|
+
});
|
|
56
|
+
// Review feedback (admin only)
|
|
57
|
+
// POST /v1/feedback/:id/review
|
|
58
|
+
server.post('/:id/review', {
|
|
59
|
+
preHandler: [
|
|
60
|
+
requireAuth,
|
|
61
|
+
requirePermission('admin'),
|
|
62
|
+
validateParams(IdParamSchema),
|
|
63
|
+
validateBody(ReviewFeedbackBodySchema),
|
|
64
|
+
],
|
|
65
|
+
handler: reviewFeedback,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=feedback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/routes/feedback.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,aAAa,EACb,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AAErC,sCAAsC;AACtC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,MAAM,CAAC;IACvD,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC5E,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC3E,CAAC,CAAC;AAEH,8BAA8B;AAC9B,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IACpD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAuB,EACvB,KAA2B;IAE3B,kBAAkB;IAClB,oBAAoB;IACpB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;QACf,UAAU,EAAE;YACV,YAAY;YACZ,YAAY,CAAC,wBAAwB,CAAC;SACvC;QACD,OAAO,EAAE,cAAc;KACxB,CAAC,CAAC;IAEH,4BAA4B;IAC5B,+BAA+B;IAC/B,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE;QACzB,UAAU,EAAE;YACV,YAAY;YACZ,cAAc,CAAC,oBAAoB,CAAC;YACpC,aAAa,CAAC,mBAAmB,CAAC;SACnC;QACD,OAAO,EAAE,iBAAiB;KAC3B,CAAC,CAAC;IAEH,sCAAsC;IACtC,qCAAqC;IACrC,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE;QAC/B,UAAU,EAAE;YACV,YAAY;YACZ,cAAc,CAAC,oBAAoB,CAAC;SACrC;QACD,OAAO,EAAE,gBAAgB;KAC1B,CAAC,CAAC;IAEH,qBAAqB;IACrB,uBAAuB;IACvB,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE;QACjB,UAAU,EAAE;YACV,YAAY;YACZ,cAAc,CAAC,aAAa,CAAC;SAC9B;QACD,OAAO,EAAE,eAAe;KACzB,CAAC,CAAC;IAEH,+BAA+B;IAC/B,+BAA+B;IAC/B,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE;QACzB,UAAU,EAAE;YACV,WAAW;YACX,iBAAiB,CAAC,OAAO,CAAC;YAC1B,cAAc,CAAC,aAAa,CAAC;YAC7B,YAAY,CAAC,wBAAwB,CAAC;SACvC;QACD,OAAO,EAAE,cAAc;KACxB,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Open Skills Hub - Health Check Routes
|
|
3
|
+
*/
|
|
4
|
+
import type { FastifyInstance, FastifyPluginOptions } from 'fastify';
|
|
5
|
+
export declare function healthRoutes(server: FastifyInstance, _opts: FastifyPluginOptions): Promise<void>;
|
|
6
|
+
//# sourceMappingURL=health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../src/routes/health.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAgC,MAAM,SAAS,CAAC;AA+HnG,wBAAsB,YAAY,CAChC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAgBf"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Open Skills Hub - Health Check Routes
|
|
3
|
+
*/
|
|
4
|
+
import { getStorage, getConfig } from '@open-skills-hub/core';
|
|
5
|
+
import { sendSuccess } from '../middleware/error.js';
|
|
6
|
+
/**
|
|
7
|
+
* Basic health check
|
|
8
|
+
*/
|
|
9
|
+
async function healthCheck(request, reply) {
|
|
10
|
+
sendSuccess(request, reply, {
|
|
11
|
+
status: 'ok',
|
|
12
|
+
timestamp: new Date().toISOString(),
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Readiness check (includes storage health)
|
|
17
|
+
*/
|
|
18
|
+
async function readinessCheck(request, reply) {
|
|
19
|
+
const storage = await getStorage();
|
|
20
|
+
const config = getConfig().get();
|
|
21
|
+
const storageHealthy = await storage.healthCheck();
|
|
22
|
+
if (!storageHealthy) {
|
|
23
|
+
reply.status(503).send({
|
|
24
|
+
success: false,
|
|
25
|
+
error: {
|
|
26
|
+
code: 'SERVICE_UNAVAILABLE',
|
|
27
|
+
message: 'Storage is not available',
|
|
28
|
+
},
|
|
29
|
+
meta: {
|
|
30
|
+
requestId: request.id,
|
|
31
|
+
timestamp: new Date().toISOString(),
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
sendSuccess(request, reply, {
|
|
37
|
+
status: 'ready',
|
|
38
|
+
timestamp: new Date().toISOString(),
|
|
39
|
+
checks: {
|
|
40
|
+
storage: storageHealthy ? 'healthy' : 'unhealthy',
|
|
41
|
+
},
|
|
42
|
+
config: {
|
|
43
|
+
mode: config.mode,
|
|
44
|
+
version: '1.0.0',
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Detailed system info (admin only)
|
|
50
|
+
*/
|
|
51
|
+
async function systemInfo(request, reply) {
|
|
52
|
+
const storage = await getStorage();
|
|
53
|
+
const config = getConfig();
|
|
54
|
+
const storageHealthy = await storage.healthCheck();
|
|
55
|
+
sendSuccess(request, reply, {
|
|
56
|
+
status: 'ok',
|
|
57
|
+
timestamp: new Date().toISOString(),
|
|
58
|
+
system: {
|
|
59
|
+
nodeVersion: process.version,
|
|
60
|
+
platform: process.platform,
|
|
61
|
+
arch: process.arch,
|
|
62
|
+
uptime: process.uptime(),
|
|
63
|
+
memoryUsage: process.memoryUsage(),
|
|
64
|
+
},
|
|
65
|
+
config: {
|
|
66
|
+
mode: config.get().mode,
|
|
67
|
+
storagePath: config.getStoragePath(),
|
|
68
|
+
serverPort: config.get().server.port,
|
|
69
|
+
authRequired: config.get().auth.requireAuth,
|
|
70
|
+
scannerEnabled: config.get().scanner.enabled,
|
|
71
|
+
rateLimitEnabled: config.get().rateLimit.enabled,
|
|
72
|
+
cacheTTL: config.get().cache.ttl,
|
|
73
|
+
},
|
|
74
|
+
checks: {
|
|
75
|
+
storage: storageHealthy ? 'healthy' : 'unhealthy',
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Reload database from disk
|
|
81
|
+
* Useful when CLI or external processes have updated the database
|
|
82
|
+
*/
|
|
83
|
+
async function reloadDatabase(request, reply) {
|
|
84
|
+
const storage = await getStorage();
|
|
85
|
+
try {
|
|
86
|
+
await storage.reload();
|
|
87
|
+
sendSuccess(request, reply, {
|
|
88
|
+
status: 'reloaded',
|
|
89
|
+
timestamp: new Date().toISOString(),
|
|
90
|
+
message: 'Database reloaded successfully from disk',
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
reply.status(500).send({
|
|
95
|
+
success: false,
|
|
96
|
+
error: {
|
|
97
|
+
code: 'RELOAD_FAILED',
|
|
98
|
+
message: 'Failed to reload database',
|
|
99
|
+
details: error instanceof Error ? error.message : String(error),
|
|
100
|
+
},
|
|
101
|
+
meta: {
|
|
102
|
+
requestId: request.id,
|
|
103
|
+
timestamp: new Date().toISOString(),
|
|
104
|
+
},
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
export async function healthRoutes(server, _opts) {
|
|
109
|
+
// Basic health check
|
|
110
|
+
// GET /health
|
|
111
|
+
server.get('/health', healthCheck);
|
|
112
|
+
// Readiness check (for k8s)
|
|
113
|
+
// GET /ready
|
|
114
|
+
server.get('/ready', readinessCheck);
|
|
115
|
+
// System info (admin)
|
|
116
|
+
// GET /system
|
|
117
|
+
server.get('/system', systemInfo);
|
|
118
|
+
// Reload database from disk
|
|
119
|
+
// POST /reload
|
|
120
|
+
server.post('/reload', reloadDatabase);
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=health.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.js","sourceRoot":"","sources":["../../src/routes/health.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD;;GAEG;AACH,KAAK,UAAU,WAAW,CACxB,OAAuB,EACvB,KAAmB;IAEnB,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE;QAC1B,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACpC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAC3B,OAAuB,EACvB,KAAmB;IAEnB,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC,GAAG,EAAE,CAAC;IAEjC,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC;IAEnD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACrB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE;gBACL,IAAI,EAAE,qBAAqB;gBAC3B,OAAO,EAAE,0BAA0B;aACpC;YACD,IAAI,EAAE;gBACJ,SAAS,EAAE,OAAO,CAAC,EAAY;gBAC/B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC;SACF,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE;QAC1B,MAAM,EAAE,OAAO;QACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,MAAM,EAAE;YACN,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW;SAClD;QACD,MAAM,EAAE;YACN,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO,EAAE,OAAO;SACjB;KACF,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,UAAU,CACvB,OAAuB,EACvB,KAAmB;IAEnB,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC;IAEnD,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE;QAC1B,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,MAAM,EAAE;YACN,WAAW,EAAE,OAAO,CAAC,OAAO;YAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;YACxB,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE;SACnC;QACD,MAAM,EAAE;YACN,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI;YACvB,WAAW,EAAE,MAAM,CAAC,cAAc,EAAE;YACpC,UAAU,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI;YACpC,YAAY,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW;YAC3C,cAAc,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO;YAC5C,gBAAgB,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO;YAChD,QAAQ,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG;SACjC;QACD,MAAM,EAAE;YACN,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW;SAClD;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,cAAc,CAC3B,OAAuB,EACvB,KAAmB;IAEnB,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IAEnC,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;QACvB,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE;YAC1B,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,OAAO,EAAE,0CAA0C;SACpD,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACrB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE;gBACL,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,2BAA2B;gBACpC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAChE;YACD,IAAI,EAAE;gBACJ,SAAS,EAAE,OAAO,CAAC,EAAY;gBAC/B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAuB,EACvB,KAA2B;IAE3B,qBAAqB;IACrB,cAAc;IACd,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAEnC,4BAA4B;IAC5B,aAAa;IACb,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;IAErC,sBAAsB;IACtB,cAAc;IACd,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAElC,4BAA4B;IAC5B,eAAe;IACf,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Open Skills Hub - Routes Exports
|
|
3
|
+
*/
|
|
4
|
+
export * from './skills.js';
|
|
5
|
+
export * from './versions.js';
|
|
6
|
+
export * from './search.js';
|
|
7
|
+
export * from './scan.js';
|
|
8
|
+
export * from './feedback.js';
|
|
9
|
+
export * from './audit.js';
|
|
10
|
+
export * from './cache.js';
|
|
11
|
+
export * from './health.js';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Open Skills Hub - Routes Exports
|
|
3
|
+
*/
|
|
4
|
+
export * from './skills.js';
|
|
5
|
+
export * from './versions.js';
|
|
6
|
+
export * from './search.js';
|
|
7
|
+
export * from './scan.js';
|
|
8
|
+
export * from './feedback.js';
|
|
9
|
+
export * from './audit.js';
|
|
10
|
+
export * from './cache.js';
|
|
11
|
+
export * from './health.js';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
|