@red-hat-developer-hub/backstage-plugin-ai-skills-common 0.0.0-stage → 0.2.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/CHANGELOG.md +8 -0
- package/README.md +118 -2
- package/dist/catalog-helpers.cjs.js +198 -0
- package/dist/catalog-helpers.cjs.js.map +1 -0
- package/dist/catalog-helpers.esm.js +190 -0
- package/dist/catalog-helpers.esm.js.map +1 -0
- package/dist/fixtures.cjs.js +269 -0
- package/dist/fixtures.cjs.js.map +1 -0
- package/dist/fixtures.esm.js +239 -0
- package/dist/fixtures.esm.js.map +1 -0
- package/dist/index.cjs.js +62 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +764 -0
- package/dist/index.esm.js +6 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/rest-contract.cjs.js +8 -0
- package/dist/rest-contract.cjs.js.map +1 -0
- package/dist/rest-contract.esm.js +5 -0
- package/dist/rest-contract.esm.js.map +1 -0
- package/dist/snapshot.cjs.js +115 -0
- package/dist/snapshot.cjs.js.map +1 -0
- package/dist/snapshot.esm.js +110 -0
- package/dist/snapshot.esm.js.map +1 -0
- package/dist/validation.cjs.js +442 -0
- package/dist/validation.cjs.js.map +1 -0
- package/dist/validation.esm.js +432 -0
- package/dist/validation.esm.js.map +1 -0
- package/package.json +47 -3
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const ociSource = {
|
|
4
|
+
id: "quay-public",
|
|
5
|
+
type: "oci"
|
|
6
|
+
};
|
|
7
|
+
const npxSource = {
|
|
8
|
+
id: "rhess-index",
|
|
9
|
+
type: "npx"
|
|
10
|
+
};
|
|
11
|
+
const validOciRecordFull = {
|
|
12
|
+
key: "quay.io/octo/hello-world-skill",
|
|
13
|
+
name: "Hello World Skill",
|
|
14
|
+
description: "A demo OCI skill image",
|
|
15
|
+
version: "1.0.0",
|
|
16
|
+
license: "Apache-2.0",
|
|
17
|
+
authors: [{ name: "OCTO Team", email: "octo@example.com" }],
|
|
18
|
+
tags: ["demo", "hello-world"],
|
|
19
|
+
compatibility: "rhdh-2.2",
|
|
20
|
+
owner: "team-octo",
|
|
21
|
+
lifecycle: "production",
|
|
22
|
+
sourceUri: "oci://quay.io/octo/hello-world-skill@sha256:abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789",
|
|
23
|
+
digest: "sha256:abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789",
|
|
24
|
+
extensions: {
|
|
25
|
+
oci: {
|
|
26
|
+
namespace: "octo-skills",
|
|
27
|
+
prompt: "You are a helpful assistant."
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
const validOciRecordMinimal = {
|
|
32
|
+
key: "quay.io/octo/minimal-skill",
|
|
33
|
+
name: "Minimal Skill",
|
|
34
|
+
sourceUri: "oci://quay.io/octo/minimal-skill@sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
|
35
|
+
digest: "sha256:1111111111111111111111111111111111111111111111111111111111111111"
|
|
36
|
+
};
|
|
37
|
+
const validOciRecordEmptyExtensions = {
|
|
38
|
+
key: "quay.io/octo/no-ext-skill",
|
|
39
|
+
name: "No Extensions Skill",
|
|
40
|
+
sourceUri: "oci://quay.io/octo/no-ext-skill@sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
|
41
|
+
digest: "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
|
42
|
+
extensions: {}
|
|
43
|
+
};
|
|
44
|
+
const validNpxRecordFull = {
|
|
45
|
+
key: "summarize-text",
|
|
46
|
+
name: "Summarize Text",
|
|
47
|
+
description: "Summarizes input text using an LLM",
|
|
48
|
+
version: "0.2.0",
|
|
49
|
+
license: "MIT",
|
|
50
|
+
authors: [{ name: "Agent Team" }],
|
|
51
|
+
tags: ["summarization", "text"],
|
|
52
|
+
compatibility: "agent-skills-v0.2",
|
|
53
|
+
sourceUri: "https://registry.example.com/skills/summarize-text/SKILL.md",
|
|
54
|
+
digest: "sha256:fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210",
|
|
55
|
+
extensions: {
|
|
56
|
+
npx: {
|
|
57
|
+
type: "skill-md"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
const validNpxRecordMinimal = {
|
|
62
|
+
key: "basic-skill",
|
|
63
|
+
name: "Basic Skill",
|
|
64
|
+
sourceUri: "https://registry.example.com/skills/basic-skill/SKILL.md",
|
|
65
|
+
digest: "sha256:3333333333333333333333333333333333333333333333333333333333333333"
|
|
66
|
+
};
|
|
67
|
+
const validNpxRecordWithQuery = {
|
|
68
|
+
key: "query-skill",
|
|
69
|
+
name: "Query Skill",
|
|
70
|
+
sourceUri: "https://registry.example.com/skills/query-skill/SKILL.md?version=2&format=raw",
|
|
71
|
+
digest: "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
|
72
|
+
extensions: {
|
|
73
|
+
npx: {
|
|
74
|
+
type: "skill-md"
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
const validOciSnapshotReady = {
|
|
79
|
+
schemaVersion: "1",
|
|
80
|
+
source: ociSource,
|
|
81
|
+
status: "ready",
|
|
82
|
+
observedAt: "2026-09-01T12:00:00Z",
|
|
83
|
+
skills: [validOciRecordMinimal, validOciRecordFull],
|
|
84
|
+
failedSkillKeys: []
|
|
85
|
+
};
|
|
86
|
+
const validNpxSnapshotReady = {
|
|
87
|
+
schemaVersion: "1",
|
|
88
|
+
source: npxSource,
|
|
89
|
+
status: "ready",
|
|
90
|
+
observedAt: "2026-09-01T12:00:00Z",
|
|
91
|
+
skills: [validNpxRecordMinimal, validNpxRecordFull],
|
|
92
|
+
failedSkillKeys: []
|
|
93
|
+
};
|
|
94
|
+
const validLoadingSnapshot = {
|
|
95
|
+
schemaVersion: "1",
|
|
96
|
+
source: ociSource,
|
|
97
|
+
status: "loading",
|
|
98
|
+
observedAt: null,
|
|
99
|
+
skills: [],
|
|
100
|
+
failedSkillKeys: []
|
|
101
|
+
};
|
|
102
|
+
const validPartialSnapshot = {
|
|
103
|
+
schemaVersion: "1",
|
|
104
|
+
source: ociSource,
|
|
105
|
+
status: "partial",
|
|
106
|
+
observedAt: "2026-09-01T12:05:00Z",
|
|
107
|
+
skills: [validOciRecordMinimal],
|
|
108
|
+
failedSkillKeys: ["quay.io/octo/broken-skill"]
|
|
109
|
+
};
|
|
110
|
+
const validFailedSnapshot = {
|
|
111
|
+
schemaVersion: "1",
|
|
112
|
+
source: ociSource,
|
|
113
|
+
status: "failed",
|
|
114
|
+
observedAt: "2026-09-01T12:10:00Z",
|
|
115
|
+
skills: [],
|
|
116
|
+
failedSkillKeys: []
|
|
117
|
+
};
|
|
118
|
+
const validPartialEmptySnapshot = {
|
|
119
|
+
schemaVersion: "1",
|
|
120
|
+
source: npxSource,
|
|
121
|
+
status: "partial",
|
|
122
|
+
observedAt: "2026-09-01T12:15:00Z",
|
|
123
|
+
skills: [],
|
|
124
|
+
failedSkillKeys: []
|
|
125
|
+
};
|
|
126
|
+
const validReadyEmptySnapshot = {
|
|
127
|
+
schemaVersion: "1",
|
|
128
|
+
source: ociSource,
|
|
129
|
+
status: "ready",
|
|
130
|
+
observedAt: "2026-09-01T12:20:00Z",
|
|
131
|
+
skills: [],
|
|
132
|
+
failedSkillKeys: []
|
|
133
|
+
};
|
|
134
|
+
const invalidRecordEmptyKey = {
|
|
135
|
+
key: "",
|
|
136
|
+
name: "Bad Skill",
|
|
137
|
+
sourceUri: "oci://quay.io/octo/bad@sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
138
|
+
digest: "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
139
|
+
};
|
|
140
|
+
const invalidRecordBadDigest = {
|
|
141
|
+
key: "quay.io/octo/bad-digest",
|
|
142
|
+
name: "Bad Digest Skill",
|
|
143
|
+
sourceUri: "oci://quay.io/octo/bad-digest@sha256:ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789",
|
|
144
|
+
digest: "sha256:ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789"
|
|
145
|
+
};
|
|
146
|
+
const invalidRecordShortDigest = {
|
|
147
|
+
key: "quay.io/octo/short-digest",
|
|
148
|
+
name: "Short Digest Skill",
|
|
149
|
+
sourceUri: "oci://quay.io/octo/short-digest@sha256:abcdef",
|
|
150
|
+
digest: "sha256:abcdef"
|
|
151
|
+
};
|
|
152
|
+
const invalidNpxRecordWithOciExtension = {
|
|
153
|
+
key: "mismatched-skill",
|
|
154
|
+
name: "Mismatched Skill",
|
|
155
|
+
sourceUri: "https://registry.example.com/skills/mismatch/SKILL.md",
|
|
156
|
+
digest: "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
|
157
|
+
extensions: { oci: { namespace: "bad" } }
|
|
158
|
+
};
|
|
159
|
+
const invalidOciRecordWithNpxExtension = {
|
|
160
|
+
key: "quay.io/octo/npx-ext-mismatch",
|
|
161
|
+
name: "Mismatch Skill",
|
|
162
|
+
sourceUri: "oci://quay.io/octo/mismatch@sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
|
163
|
+
digest: "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
|
164
|
+
extensions: { npx: { type: "skill-md" } }
|
|
165
|
+
};
|
|
166
|
+
const invalidOciRecordUnknownExtKey = {
|
|
167
|
+
key: "quay.io/octo/unknown-ext",
|
|
168
|
+
name: "Unknown Ext Skill",
|
|
169
|
+
sourceUri: "oci://quay.io/octo/unknown-ext@sha256:7777777777777777777777777777777777777777777777777777777777777777",
|
|
170
|
+
digest: "sha256:7777777777777777777777777777777777777777777777777777777777777777",
|
|
171
|
+
extensions: {
|
|
172
|
+
oci: { namespace: "ok", secretKey: "bad" }
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
const invalidSnapshotBadVersion = {
|
|
176
|
+
schemaVersion: "2",
|
|
177
|
+
source: ociSource,
|
|
178
|
+
status: "ready",
|
|
179
|
+
observedAt: "2026-09-01T12:00:00Z",
|
|
180
|
+
skills: [],
|
|
181
|
+
failedSkillKeys: []
|
|
182
|
+
};
|
|
183
|
+
const invalidSnapshotReadyWithFailedKeys = {
|
|
184
|
+
schemaVersion: "1",
|
|
185
|
+
source: ociSource,
|
|
186
|
+
status: "ready",
|
|
187
|
+
observedAt: "2026-09-01T12:00:00Z",
|
|
188
|
+
skills: [validOciRecordMinimal],
|
|
189
|
+
failedSkillKeys: ["quay.io/octo/failed-one"]
|
|
190
|
+
};
|
|
191
|
+
const invalidSnapshotDuplicateKeys = {
|
|
192
|
+
schemaVersion: "1",
|
|
193
|
+
source: ociSource,
|
|
194
|
+
status: "ready",
|
|
195
|
+
observedAt: "2026-09-01T12:00:00Z",
|
|
196
|
+
skills: [validOciRecordMinimal, { ...validOciRecordMinimal }],
|
|
197
|
+
failedSkillKeys: []
|
|
198
|
+
};
|
|
199
|
+
const invalidSnapshotOverlappingKeys = {
|
|
200
|
+
schemaVersion: "1",
|
|
201
|
+
source: ociSource,
|
|
202
|
+
status: "partial",
|
|
203
|
+
observedAt: "2026-09-01T12:00:00Z",
|
|
204
|
+
skills: [validOciRecordMinimal],
|
|
205
|
+
failedSkillKeys: [validOciRecordMinimal.key]
|
|
206
|
+
};
|
|
207
|
+
const invalidLoadingWithObservedAt = {
|
|
208
|
+
schemaVersion: "1",
|
|
209
|
+
source: ociSource,
|
|
210
|
+
status: "loading",
|
|
211
|
+
observedAt: "2026-09-01T12:00:00Z",
|
|
212
|
+
skills: [],
|
|
213
|
+
failedSkillKeys: []
|
|
214
|
+
};
|
|
215
|
+
const invalidLoadingWithSkills = {
|
|
216
|
+
schemaVersion: "1",
|
|
217
|
+
source: ociSource,
|
|
218
|
+
status: "loading",
|
|
219
|
+
observedAt: null,
|
|
220
|
+
skills: [validOciRecordMinimal],
|
|
221
|
+
failedSkillKeys: []
|
|
222
|
+
};
|
|
223
|
+
const invalidFailedWithSkills = {
|
|
224
|
+
schemaVersion: "1",
|
|
225
|
+
source: ociSource,
|
|
226
|
+
status: "failed",
|
|
227
|
+
observedAt: "2026-09-01T12:00:00Z",
|
|
228
|
+
skills: [validOciRecordMinimal],
|
|
229
|
+
failedSkillKeys: []
|
|
230
|
+
};
|
|
231
|
+
const invalidSnapshotNonUtcTimestamp = {
|
|
232
|
+
schemaVersion: "1",
|
|
233
|
+
source: ociSource,
|
|
234
|
+
status: "ready",
|
|
235
|
+
observedAt: "2026-09-01T12:00:00-05:00",
|
|
236
|
+
skills: [],
|
|
237
|
+
failedSkillKeys: []
|
|
238
|
+
};
|
|
239
|
+
|
|
240
|
+
exports.invalidFailedWithSkills = invalidFailedWithSkills;
|
|
241
|
+
exports.invalidLoadingWithObservedAt = invalidLoadingWithObservedAt;
|
|
242
|
+
exports.invalidLoadingWithSkills = invalidLoadingWithSkills;
|
|
243
|
+
exports.invalidNpxRecordWithOciExtension = invalidNpxRecordWithOciExtension;
|
|
244
|
+
exports.invalidOciRecordUnknownExtKey = invalidOciRecordUnknownExtKey;
|
|
245
|
+
exports.invalidOciRecordWithNpxExtension = invalidOciRecordWithNpxExtension;
|
|
246
|
+
exports.invalidRecordBadDigest = invalidRecordBadDigest;
|
|
247
|
+
exports.invalidRecordEmptyKey = invalidRecordEmptyKey;
|
|
248
|
+
exports.invalidRecordShortDigest = invalidRecordShortDigest;
|
|
249
|
+
exports.invalidSnapshotBadVersion = invalidSnapshotBadVersion;
|
|
250
|
+
exports.invalidSnapshotDuplicateKeys = invalidSnapshotDuplicateKeys;
|
|
251
|
+
exports.invalidSnapshotNonUtcTimestamp = invalidSnapshotNonUtcTimestamp;
|
|
252
|
+
exports.invalidSnapshotOverlappingKeys = invalidSnapshotOverlappingKeys;
|
|
253
|
+
exports.invalidSnapshotReadyWithFailedKeys = invalidSnapshotReadyWithFailedKeys;
|
|
254
|
+
exports.npxSource = npxSource;
|
|
255
|
+
exports.ociSource = ociSource;
|
|
256
|
+
exports.validFailedSnapshot = validFailedSnapshot;
|
|
257
|
+
exports.validLoadingSnapshot = validLoadingSnapshot;
|
|
258
|
+
exports.validNpxRecordFull = validNpxRecordFull;
|
|
259
|
+
exports.validNpxRecordMinimal = validNpxRecordMinimal;
|
|
260
|
+
exports.validNpxRecordWithQuery = validNpxRecordWithQuery;
|
|
261
|
+
exports.validNpxSnapshotReady = validNpxSnapshotReady;
|
|
262
|
+
exports.validOciRecordEmptyExtensions = validOciRecordEmptyExtensions;
|
|
263
|
+
exports.validOciRecordFull = validOciRecordFull;
|
|
264
|
+
exports.validOciRecordMinimal = validOciRecordMinimal;
|
|
265
|
+
exports.validOciSnapshotReady = validOciSnapshotReady;
|
|
266
|
+
exports.validPartialEmptySnapshot = validPartialEmptySnapshot;
|
|
267
|
+
exports.validPartialSnapshot = validPartialSnapshot;
|
|
268
|
+
exports.validReadyEmptySnapshot = validReadyEmptySnapshot;
|
|
269
|
+
//# sourceMappingURL=fixtures.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixtures.cjs.js","sources":["../src/fixtures.ts"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Reusable OCI and npx contract fixtures for connector and provider tests.\n *\n * @packageDocumentation\n */\n\nimport type {\n NpxSkillRecord,\n OciSkillRecord,\n SkillSnapshot,\n SnapshotSource,\n} from './types';\n\n// ─── Sources ──────────────────────────────────────────────────────────\n\n/**\n * OCI source fixture for contract tests.\n *\n * @public\n */\nexport const ociSource: SnapshotSource = {\n id: 'quay-public',\n type: 'oci',\n};\n\n/**\n * npx source fixture for contract tests.\n *\n * @public\n */\nexport const npxSource: SnapshotSource = {\n id: 'rhess-index',\n type: 'npx',\n};\n\n// ─── Valid OCI records ────────────────────────────────────────────────\n\n/**\n * A valid OCI skill record with full metadata.\n *\n * @public\n */\nexport const validOciRecordFull: OciSkillRecord = {\n key: 'quay.io/octo/hello-world-skill',\n name: 'Hello World Skill',\n description: 'A demo OCI skill image',\n version: '1.0.0',\n license: 'Apache-2.0',\n authors: [{ name: 'OCTO Team', email: 'octo@example.com' }],\n tags: ['demo', 'hello-world'],\n compatibility: 'rhdh-2.2',\n owner: 'team-octo',\n lifecycle: 'production',\n sourceUri:\n 'oci://quay.io/octo/hello-world-skill@sha256:abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789',\n digest:\n 'sha256:abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789',\n extensions: {\n oci: {\n namespace: 'octo-skills',\n prompt: 'You are a helpful assistant.',\n },\n },\n};\n\n/**\n * A valid OCI record with only required fields.\n *\n * @public\n */\nexport const validOciRecordMinimal: OciSkillRecord = {\n key: 'quay.io/octo/minimal-skill',\n name: 'Minimal Skill',\n sourceUri:\n 'oci://quay.io/octo/minimal-skill@sha256:1111111111111111111111111111111111111111111111111111111111111111',\n digest:\n 'sha256:1111111111111111111111111111111111111111111111111111111111111111',\n};\n\n/**\n * A valid OCI record with empty extensions object.\n *\n * @public\n */\nexport const validOciRecordEmptyExtensions: OciSkillRecord = {\n key: 'quay.io/octo/no-ext-skill',\n name: 'No Extensions Skill',\n sourceUri:\n 'oci://quay.io/octo/no-ext-skill@sha256:2222222222222222222222222222222222222222222222222222222222222222',\n digest:\n 'sha256:2222222222222222222222222222222222222222222222222222222222222222',\n extensions: {},\n};\n\n// ─── Valid npx records ────────────────────────────────────────────────\n\n/**\n * A valid npx skill record with full metadata.\n *\n * @public\n */\nexport const validNpxRecordFull: NpxSkillRecord = {\n key: 'summarize-text',\n name: 'Summarize Text',\n description: 'Summarizes input text using an LLM',\n version: '0.2.0',\n license: 'MIT',\n authors: [{ name: 'Agent Team' }],\n tags: ['summarization', 'text'],\n compatibility: 'agent-skills-v0.2',\n sourceUri: 'https://registry.example.com/skills/summarize-text/SKILL.md',\n digest:\n 'sha256:fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210',\n extensions: {\n npx: {\n type: 'skill-md',\n },\n },\n};\n\n/**\n * A valid npx record with only required fields.\n *\n * @public\n */\nexport const validNpxRecordMinimal: NpxSkillRecord = {\n key: 'basic-skill',\n name: 'Basic Skill',\n sourceUri: 'https://registry.example.com/skills/basic-skill/SKILL.md',\n digest:\n 'sha256:3333333333333333333333333333333333333333333333333333333333333333',\n};\n\n/**\n * A valid npx record with a query-string-bearing source URI.\n *\n * @public\n */\nexport const validNpxRecordWithQuery: NpxSkillRecord = {\n key: 'query-skill',\n name: 'Query Skill',\n sourceUri:\n 'https://registry.example.com/skills/query-skill/SKILL.md?version=2&format=raw',\n digest:\n 'sha256:4444444444444444444444444444444444444444444444444444444444444444',\n extensions: {\n npx: {\n type: 'skill-md',\n },\n },\n};\n\n// ─── Valid snapshots ──────────────────────────────────────────────────\n\n/**\n * A valid ready OCI snapshot.\n *\n * @public\n */\nexport const validOciSnapshotReady: SkillSnapshot = {\n schemaVersion: '1',\n source: ociSource,\n status: 'ready',\n observedAt: '2026-09-01T12:00:00Z',\n skills: [validOciRecordMinimal, validOciRecordFull],\n failedSkillKeys: [],\n};\n\n/**\n * A valid ready npx snapshot.\n *\n * @public\n */\nexport const validNpxSnapshotReady: SkillSnapshot = {\n schemaVersion: '1',\n source: npxSource,\n status: 'ready',\n observedAt: '2026-09-01T12:00:00Z',\n skills: [validNpxRecordMinimal, validNpxRecordFull],\n failedSkillKeys: [],\n};\n\n/**\n * A valid loading snapshot.\n *\n * @public\n */\nexport const validLoadingSnapshot: SkillSnapshot = {\n schemaVersion: '1',\n source: ociSource,\n status: 'loading',\n observedAt: null,\n skills: [],\n failedSkillKeys: [],\n};\n\n/**\n * A valid partial snapshot with failed keys.\n *\n * @public\n */\nexport const validPartialSnapshot: SkillSnapshot = {\n schemaVersion: '1',\n source: ociSource,\n status: 'partial',\n observedAt: '2026-09-01T12:05:00Z',\n skills: [validOciRecordMinimal],\n failedSkillKeys: ['quay.io/octo/broken-skill'],\n};\n\n/**\n * A valid failed snapshot.\n *\n * @public\n */\nexport const validFailedSnapshot: SkillSnapshot = {\n schemaVersion: '1',\n source: ociSource,\n status: 'failed',\n observedAt: '2026-09-01T12:10:00Z',\n skills: [],\n failedSkillKeys: [],\n};\n\n/**\n * A valid partial snapshot with no records and no failed keys.\n *\n * @public\n */\nexport const validPartialEmptySnapshot: SkillSnapshot = {\n schemaVersion: '1',\n source: npxSource,\n status: 'partial',\n observedAt: '2026-09-01T12:15:00Z',\n skills: [],\n failedSkillKeys: [],\n};\n\n/**\n * A valid ready snapshot with zero records (successful empty discovery).\n *\n * @public\n */\nexport const validReadyEmptySnapshot: SkillSnapshot = {\n schemaVersion: '1',\n source: ociSource,\n status: 'ready',\n observedAt: '2026-09-01T12:20:00Z',\n skills: [],\n failedSkillKeys: [],\n};\n\n// ─── Invalid records ──────────────────────────────────────────────────\n\n/**\n * Record with empty key.\n *\n * @public\n */\nexport const invalidRecordEmptyKey: OciSkillRecord = {\n key: '',\n name: 'Bad Skill',\n sourceUri:\n 'oci://quay.io/octo/bad@sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',\n digest:\n 'sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',\n};\n\n/**\n * Record with malformed digest (uppercase).\n *\n * @public\n */\nexport const invalidRecordBadDigest: OciSkillRecord = {\n key: 'quay.io/octo/bad-digest',\n name: 'Bad Digest Skill',\n sourceUri:\n 'oci://quay.io/octo/bad-digest@sha256:ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789',\n digest:\n 'sha256:ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789',\n};\n\n/**\n * Record with truncated digest.\n *\n * @public\n */\nexport const invalidRecordShortDigest: OciSkillRecord = {\n key: 'quay.io/octo/short-digest',\n name: 'Short Digest Skill',\n sourceUri: 'oci://quay.io/octo/short-digest@sha256:abcdef',\n digest: 'sha256:abcdef',\n};\n\n/**\n * npx record with OCI extension (source mismatch).\n *\n * @public\n */\nexport const invalidNpxRecordWithOciExtension: NpxSkillRecord = {\n key: 'mismatched-skill',\n name: 'Mismatched Skill',\n sourceUri: 'https://registry.example.com/skills/mismatch/SKILL.md',\n digest:\n 'sha256:5555555555555555555555555555555555555555555555555555555555555555',\n extensions: { oci: { namespace: 'bad' } } as unknown as {\n npx?: { type?: 'skill-md' };\n },\n};\n\n/**\n * OCI record with npx extension (source mismatch).\n *\n * @public\n */\nexport const invalidOciRecordWithNpxExtension: OciSkillRecord = {\n key: 'quay.io/octo/npx-ext-mismatch',\n name: 'Mismatch Skill',\n sourceUri:\n 'oci://quay.io/octo/mismatch@sha256:6666666666666666666666666666666666666666666666666666666666666666',\n digest:\n 'sha256:6666666666666666666666666666666666666666666666666666666666666666',\n extensions: { npx: { type: 'skill-md' } } as unknown as {\n oci?: { namespace?: string; prompt?: string };\n },\n};\n\n/**\n * OCI record with unknown extension key.\n *\n * @public\n */\nexport const invalidOciRecordUnknownExtKey: OciSkillRecord = {\n key: 'quay.io/octo/unknown-ext',\n name: 'Unknown Ext Skill',\n sourceUri:\n 'oci://quay.io/octo/unknown-ext@sha256:7777777777777777777777777777777777777777777777777777777777777777',\n digest:\n 'sha256:7777777777777777777777777777777777777777777777777777777777777777',\n extensions: {\n oci: { namespace: 'ok', secretKey: 'bad' } as unknown as {\n namespace?: string;\n prompt?: string;\n },\n },\n};\n\n// ─── Invalid snapshots ────────────────────────────────────────────────\n\n/**\n * Snapshot with unsupported schema version.\n *\n * @public\n */\nexport const invalidSnapshotBadVersion: unknown = {\n schemaVersion: '2',\n source: ociSource,\n status: 'ready',\n observedAt: '2026-09-01T12:00:00Z',\n skills: [],\n failedSkillKeys: [],\n};\n\n/**\n * Snapshot claiming ready with failed keys.\n *\n * @public\n */\nexport const invalidSnapshotReadyWithFailedKeys: unknown = {\n schemaVersion: '1',\n source: ociSource,\n status: 'ready',\n observedAt: '2026-09-01T12:00:00Z',\n skills: [validOciRecordMinimal],\n failedSkillKeys: ['quay.io/octo/failed-one'],\n};\n\n/**\n * Snapshot with duplicate skill keys.\n *\n * @public\n */\nexport const invalidSnapshotDuplicateKeys: unknown = {\n schemaVersion: '1',\n source: ociSource,\n status: 'ready',\n observedAt: '2026-09-01T12:00:00Z',\n skills: [validOciRecordMinimal, { ...validOciRecordMinimal }],\n failedSkillKeys: [],\n};\n\n/**\n * Snapshot with overlapping skill and failed keys.\n *\n * @public\n */\nexport const invalidSnapshotOverlappingKeys: unknown = {\n schemaVersion: '1',\n source: ociSource,\n status: 'partial',\n observedAt: '2026-09-01T12:00:00Z',\n skills: [validOciRecordMinimal],\n failedSkillKeys: [validOciRecordMinimal.key],\n};\n\n/**\n * Loading snapshot with non-null observedAt.\n *\n * @public\n */\nexport const invalidLoadingWithObservedAt: unknown = {\n schemaVersion: '1',\n source: ociSource,\n status: 'loading',\n observedAt: '2026-09-01T12:00:00Z',\n skills: [],\n failedSkillKeys: [],\n};\n\n/**\n * Loading snapshot with skills.\n *\n * @public\n */\nexport const invalidLoadingWithSkills: unknown = {\n schemaVersion: '1',\n source: ociSource,\n status: 'loading',\n observedAt: null,\n skills: [validOciRecordMinimal],\n failedSkillKeys: [],\n};\n\n/**\n * Failed snapshot with skills.\n *\n * @public\n */\nexport const invalidFailedWithSkills: unknown = {\n schemaVersion: '1',\n source: ociSource,\n status: 'failed',\n observedAt: '2026-09-01T12:00:00Z',\n skills: [validOciRecordMinimal],\n failedSkillKeys: [],\n};\n\n/**\n * Snapshot with non-UTC timestamp.\n *\n * @public\n */\nexport const invalidSnapshotNonUtcTimestamp: unknown = {\n schemaVersion: '1',\n source: ociSource,\n status: 'ready',\n observedAt: '2026-09-01T12:00:00-05:00',\n skills: [],\n failedSkillKeys: [],\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
const ociSource = {
|
|
2
|
+
id: "quay-public",
|
|
3
|
+
type: "oci"
|
|
4
|
+
};
|
|
5
|
+
const npxSource = {
|
|
6
|
+
id: "rhess-index",
|
|
7
|
+
type: "npx"
|
|
8
|
+
};
|
|
9
|
+
const validOciRecordFull = {
|
|
10
|
+
key: "quay.io/octo/hello-world-skill",
|
|
11
|
+
name: "Hello World Skill",
|
|
12
|
+
description: "A demo OCI skill image",
|
|
13
|
+
version: "1.0.0",
|
|
14
|
+
license: "Apache-2.0",
|
|
15
|
+
authors: [{ name: "OCTO Team", email: "octo@example.com" }],
|
|
16
|
+
tags: ["demo", "hello-world"],
|
|
17
|
+
compatibility: "rhdh-2.2",
|
|
18
|
+
owner: "team-octo",
|
|
19
|
+
lifecycle: "production",
|
|
20
|
+
sourceUri: "oci://quay.io/octo/hello-world-skill@sha256:abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789",
|
|
21
|
+
digest: "sha256:abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789",
|
|
22
|
+
extensions: {
|
|
23
|
+
oci: {
|
|
24
|
+
namespace: "octo-skills",
|
|
25
|
+
prompt: "You are a helpful assistant."
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
const validOciRecordMinimal = {
|
|
30
|
+
key: "quay.io/octo/minimal-skill",
|
|
31
|
+
name: "Minimal Skill",
|
|
32
|
+
sourceUri: "oci://quay.io/octo/minimal-skill@sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
|
33
|
+
digest: "sha256:1111111111111111111111111111111111111111111111111111111111111111"
|
|
34
|
+
};
|
|
35
|
+
const validOciRecordEmptyExtensions = {
|
|
36
|
+
key: "quay.io/octo/no-ext-skill",
|
|
37
|
+
name: "No Extensions Skill",
|
|
38
|
+
sourceUri: "oci://quay.io/octo/no-ext-skill@sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
|
39
|
+
digest: "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
|
40
|
+
extensions: {}
|
|
41
|
+
};
|
|
42
|
+
const validNpxRecordFull = {
|
|
43
|
+
key: "summarize-text",
|
|
44
|
+
name: "Summarize Text",
|
|
45
|
+
description: "Summarizes input text using an LLM",
|
|
46
|
+
version: "0.2.0",
|
|
47
|
+
license: "MIT",
|
|
48
|
+
authors: [{ name: "Agent Team" }],
|
|
49
|
+
tags: ["summarization", "text"],
|
|
50
|
+
compatibility: "agent-skills-v0.2",
|
|
51
|
+
sourceUri: "https://registry.example.com/skills/summarize-text/SKILL.md",
|
|
52
|
+
digest: "sha256:fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210",
|
|
53
|
+
extensions: {
|
|
54
|
+
npx: {
|
|
55
|
+
type: "skill-md"
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
const validNpxRecordMinimal = {
|
|
60
|
+
key: "basic-skill",
|
|
61
|
+
name: "Basic Skill",
|
|
62
|
+
sourceUri: "https://registry.example.com/skills/basic-skill/SKILL.md",
|
|
63
|
+
digest: "sha256:3333333333333333333333333333333333333333333333333333333333333333"
|
|
64
|
+
};
|
|
65
|
+
const validNpxRecordWithQuery = {
|
|
66
|
+
key: "query-skill",
|
|
67
|
+
name: "Query Skill",
|
|
68
|
+
sourceUri: "https://registry.example.com/skills/query-skill/SKILL.md?version=2&format=raw",
|
|
69
|
+
digest: "sha256:4444444444444444444444444444444444444444444444444444444444444444",
|
|
70
|
+
extensions: {
|
|
71
|
+
npx: {
|
|
72
|
+
type: "skill-md"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
const validOciSnapshotReady = {
|
|
77
|
+
schemaVersion: "1",
|
|
78
|
+
source: ociSource,
|
|
79
|
+
status: "ready",
|
|
80
|
+
observedAt: "2026-09-01T12:00:00Z",
|
|
81
|
+
skills: [validOciRecordMinimal, validOciRecordFull],
|
|
82
|
+
failedSkillKeys: []
|
|
83
|
+
};
|
|
84
|
+
const validNpxSnapshotReady = {
|
|
85
|
+
schemaVersion: "1",
|
|
86
|
+
source: npxSource,
|
|
87
|
+
status: "ready",
|
|
88
|
+
observedAt: "2026-09-01T12:00:00Z",
|
|
89
|
+
skills: [validNpxRecordMinimal, validNpxRecordFull],
|
|
90
|
+
failedSkillKeys: []
|
|
91
|
+
};
|
|
92
|
+
const validLoadingSnapshot = {
|
|
93
|
+
schemaVersion: "1",
|
|
94
|
+
source: ociSource,
|
|
95
|
+
status: "loading",
|
|
96
|
+
observedAt: null,
|
|
97
|
+
skills: [],
|
|
98
|
+
failedSkillKeys: []
|
|
99
|
+
};
|
|
100
|
+
const validPartialSnapshot = {
|
|
101
|
+
schemaVersion: "1",
|
|
102
|
+
source: ociSource,
|
|
103
|
+
status: "partial",
|
|
104
|
+
observedAt: "2026-09-01T12:05:00Z",
|
|
105
|
+
skills: [validOciRecordMinimal],
|
|
106
|
+
failedSkillKeys: ["quay.io/octo/broken-skill"]
|
|
107
|
+
};
|
|
108
|
+
const validFailedSnapshot = {
|
|
109
|
+
schemaVersion: "1",
|
|
110
|
+
source: ociSource,
|
|
111
|
+
status: "failed",
|
|
112
|
+
observedAt: "2026-09-01T12:10:00Z",
|
|
113
|
+
skills: [],
|
|
114
|
+
failedSkillKeys: []
|
|
115
|
+
};
|
|
116
|
+
const validPartialEmptySnapshot = {
|
|
117
|
+
schemaVersion: "1",
|
|
118
|
+
source: npxSource,
|
|
119
|
+
status: "partial",
|
|
120
|
+
observedAt: "2026-09-01T12:15:00Z",
|
|
121
|
+
skills: [],
|
|
122
|
+
failedSkillKeys: []
|
|
123
|
+
};
|
|
124
|
+
const validReadyEmptySnapshot = {
|
|
125
|
+
schemaVersion: "1",
|
|
126
|
+
source: ociSource,
|
|
127
|
+
status: "ready",
|
|
128
|
+
observedAt: "2026-09-01T12:20:00Z",
|
|
129
|
+
skills: [],
|
|
130
|
+
failedSkillKeys: []
|
|
131
|
+
};
|
|
132
|
+
const invalidRecordEmptyKey = {
|
|
133
|
+
key: "",
|
|
134
|
+
name: "Bad Skill",
|
|
135
|
+
sourceUri: "oci://quay.io/octo/bad@sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
136
|
+
digest: "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
|
137
|
+
};
|
|
138
|
+
const invalidRecordBadDigest = {
|
|
139
|
+
key: "quay.io/octo/bad-digest",
|
|
140
|
+
name: "Bad Digest Skill",
|
|
141
|
+
sourceUri: "oci://quay.io/octo/bad-digest@sha256:ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789",
|
|
142
|
+
digest: "sha256:ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789"
|
|
143
|
+
};
|
|
144
|
+
const invalidRecordShortDigest = {
|
|
145
|
+
key: "quay.io/octo/short-digest",
|
|
146
|
+
name: "Short Digest Skill",
|
|
147
|
+
sourceUri: "oci://quay.io/octo/short-digest@sha256:abcdef",
|
|
148
|
+
digest: "sha256:abcdef"
|
|
149
|
+
};
|
|
150
|
+
const invalidNpxRecordWithOciExtension = {
|
|
151
|
+
key: "mismatched-skill",
|
|
152
|
+
name: "Mismatched Skill",
|
|
153
|
+
sourceUri: "https://registry.example.com/skills/mismatch/SKILL.md",
|
|
154
|
+
digest: "sha256:5555555555555555555555555555555555555555555555555555555555555555",
|
|
155
|
+
extensions: { oci: { namespace: "bad" } }
|
|
156
|
+
};
|
|
157
|
+
const invalidOciRecordWithNpxExtension = {
|
|
158
|
+
key: "quay.io/octo/npx-ext-mismatch",
|
|
159
|
+
name: "Mismatch Skill",
|
|
160
|
+
sourceUri: "oci://quay.io/octo/mismatch@sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
|
161
|
+
digest: "sha256:6666666666666666666666666666666666666666666666666666666666666666",
|
|
162
|
+
extensions: { npx: { type: "skill-md" } }
|
|
163
|
+
};
|
|
164
|
+
const invalidOciRecordUnknownExtKey = {
|
|
165
|
+
key: "quay.io/octo/unknown-ext",
|
|
166
|
+
name: "Unknown Ext Skill",
|
|
167
|
+
sourceUri: "oci://quay.io/octo/unknown-ext@sha256:7777777777777777777777777777777777777777777777777777777777777777",
|
|
168
|
+
digest: "sha256:7777777777777777777777777777777777777777777777777777777777777777",
|
|
169
|
+
extensions: {
|
|
170
|
+
oci: { namespace: "ok", secretKey: "bad" }
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
const invalidSnapshotBadVersion = {
|
|
174
|
+
schemaVersion: "2",
|
|
175
|
+
source: ociSource,
|
|
176
|
+
status: "ready",
|
|
177
|
+
observedAt: "2026-09-01T12:00:00Z",
|
|
178
|
+
skills: [],
|
|
179
|
+
failedSkillKeys: []
|
|
180
|
+
};
|
|
181
|
+
const invalidSnapshotReadyWithFailedKeys = {
|
|
182
|
+
schemaVersion: "1",
|
|
183
|
+
source: ociSource,
|
|
184
|
+
status: "ready",
|
|
185
|
+
observedAt: "2026-09-01T12:00:00Z",
|
|
186
|
+
skills: [validOciRecordMinimal],
|
|
187
|
+
failedSkillKeys: ["quay.io/octo/failed-one"]
|
|
188
|
+
};
|
|
189
|
+
const invalidSnapshotDuplicateKeys = {
|
|
190
|
+
schemaVersion: "1",
|
|
191
|
+
source: ociSource,
|
|
192
|
+
status: "ready",
|
|
193
|
+
observedAt: "2026-09-01T12:00:00Z",
|
|
194
|
+
skills: [validOciRecordMinimal, { ...validOciRecordMinimal }],
|
|
195
|
+
failedSkillKeys: []
|
|
196
|
+
};
|
|
197
|
+
const invalidSnapshotOverlappingKeys = {
|
|
198
|
+
schemaVersion: "1",
|
|
199
|
+
source: ociSource,
|
|
200
|
+
status: "partial",
|
|
201
|
+
observedAt: "2026-09-01T12:00:00Z",
|
|
202
|
+
skills: [validOciRecordMinimal],
|
|
203
|
+
failedSkillKeys: [validOciRecordMinimal.key]
|
|
204
|
+
};
|
|
205
|
+
const invalidLoadingWithObservedAt = {
|
|
206
|
+
schemaVersion: "1",
|
|
207
|
+
source: ociSource,
|
|
208
|
+
status: "loading",
|
|
209
|
+
observedAt: "2026-09-01T12:00:00Z",
|
|
210
|
+
skills: [],
|
|
211
|
+
failedSkillKeys: []
|
|
212
|
+
};
|
|
213
|
+
const invalidLoadingWithSkills = {
|
|
214
|
+
schemaVersion: "1",
|
|
215
|
+
source: ociSource,
|
|
216
|
+
status: "loading",
|
|
217
|
+
observedAt: null,
|
|
218
|
+
skills: [validOciRecordMinimal],
|
|
219
|
+
failedSkillKeys: []
|
|
220
|
+
};
|
|
221
|
+
const invalidFailedWithSkills = {
|
|
222
|
+
schemaVersion: "1",
|
|
223
|
+
source: ociSource,
|
|
224
|
+
status: "failed",
|
|
225
|
+
observedAt: "2026-09-01T12:00:00Z",
|
|
226
|
+
skills: [validOciRecordMinimal],
|
|
227
|
+
failedSkillKeys: []
|
|
228
|
+
};
|
|
229
|
+
const invalidSnapshotNonUtcTimestamp = {
|
|
230
|
+
schemaVersion: "1",
|
|
231
|
+
source: ociSource,
|
|
232
|
+
status: "ready",
|
|
233
|
+
observedAt: "2026-09-01T12:00:00-05:00",
|
|
234
|
+
skills: [],
|
|
235
|
+
failedSkillKeys: []
|
|
236
|
+
};
|
|
237
|
+
|
|
238
|
+
export { invalidFailedWithSkills, invalidLoadingWithObservedAt, invalidLoadingWithSkills, invalidNpxRecordWithOciExtension, invalidOciRecordUnknownExtKey, invalidOciRecordWithNpxExtension, invalidRecordBadDigest, invalidRecordEmptyKey, invalidRecordShortDigest, invalidSnapshotBadVersion, invalidSnapshotDuplicateKeys, invalidSnapshotNonUtcTimestamp, invalidSnapshotOverlappingKeys, invalidSnapshotReadyWithFailedKeys, npxSource, ociSource, validFailedSnapshot, validLoadingSnapshot, validNpxRecordFull, validNpxRecordMinimal, validNpxRecordWithQuery, validNpxSnapshotReady, validOciRecordEmptyExtensions, validOciRecordFull, validOciRecordMinimal, validOciSnapshotReady, validPartialEmptySnapshot, validPartialSnapshot, validReadyEmptySnapshot };
|
|
239
|
+
//# sourceMappingURL=fixtures.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixtures.esm.js","sources":["../src/fixtures.ts"],"sourcesContent":["/*\n * Copyright Red Hat, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Reusable OCI and npx contract fixtures for connector and provider tests.\n *\n * @packageDocumentation\n */\n\nimport type {\n NpxSkillRecord,\n OciSkillRecord,\n SkillSnapshot,\n SnapshotSource,\n} from './types';\n\n// ─── Sources ──────────────────────────────────────────────────────────\n\n/**\n * OCI source fixture for contract tests.\n *\n * @public\n */\nexport const ociSource: SnapshotSource = {\n id: 'quay-public',\n type: 'oci',\n};\n\n/**\n * npx source fixture for contract tests.\n *\n * @public\n */\nexport const npxSource: SnapshotSource = {\n id: 'rhess-index',\n type: 'npx',\n};\n\n// ─── Valid OCI records ────────────────────────────────────────────────\n\n/**\n * A valid OCI skill record with full metadata.\n *\n * @public\n */\nexport const validOciRecordFull: OciSkillRecord = {\n key: 'quay.io/octo/hello-world-skill',\n name: 'Hello World Skill',\n description: 'A demo OCI skill image',\n version: '1.0.0',\n license: 'Apache-2.0',\n authors: [{ name: 'OCTO Team', email: 'octo@example.com' }],\n tags: ['demo', 'hello-world'],\n compatibility: 'rhdh-2.2',\n owner: 'team-octo',\n lifecycle: 'production',\n sourceUri:\n 'oci://quay.io/octo/hello-world-skill@sha256:abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789',\n digest:\n 'sha256:abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789',\n extensions: {\n oci: {\n namespace: 'octo-skills',\n prompt: 'You are a helpful assistant.',\n },\n },\n};\n\n/**\n * A valid OCI record with only required fields.\n *\n * @public\n */\nexport const validOciRecordMinimal: OciSkillRecord = {\n key: 'quay.io/octo/minimal-skill',\n name: 'Minimal Skill',\n sourceUri:\n 'oci://quay.io/octo/minimal-skill@sha256:1111111111111111111111111111111111111111111111111111111111111111',\n digest:\n 'sha256:1111111111111111111111111111111111111111111111111111111111111111',\n};\n\n/**\n * A valid OCI record with empty extensions object.\n *\n * @public\n */\nexport const validOciRecordEmptyExtensions: OciSkillRecord = {\n key: 'quay.io/octo/no-ext-skill',\n name: 'No Extensions Skill',\n sourceUri:\n 'oci://quay.io/octo/no-ext-skill@sha256:2222222222222222222222222222222222222222222222222222222222222222',\n digest:\n 'sha256:2222222222222222222222222222222222222222222222222222222222222222',\n extensions: {},\n};\n\n// ─── Valid npx records ────────────────────────────────────────────────\n\n/**\n * A valid npx skill record with full metadata.\n *\n * @public\n */\nexport const validNpxRecordFull: NpxSkillRecord = {\n key: 'summarize-text',\n name: 'Summarize Text',\n description: 'Summarizes input text using an LLM',\n version: '0.2.0',\n license: 'MIT',\n authors: [{ name: 'Agent Team' }],\n tags: ['summarization', 'text'],\n compatibility: 'agent-skills-v0.2',\n sourceUri: 'https://registry.example.com/skills/summarize-text/SKILL.md',\n digest:\n 'sha256:fedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210',\n extensions: {\n npx: {\n type: 'skill-md',\n },\n },\n};\n\n/**\n * A valid npx record with only required fields.\n *\n * @public\n */\nexport const validNpxRecordMinimal: NpxSkillRecord = {\n key: 'basic-skill',\n name: 'Basic Skill',\n sourceUri: 'https://registry.example.com/skills/basic-skill/SKILL.md',\n digest:\n 'sha256:3333333333333333333333333333333333333333333333333333333333333333',\n};\n\n/**\n * A valid npx record with a query-string-bearing source URI.\n *\n * @public\n */\nexport const validNpxRecordWithQuery: NpxSkillRecord = {\n key: 'query-skill',\n name: 'Query Skill',\n sourceUri:\n 'https://registry.example.com/skills/query-skill/SKILL.md?version=2&format=raw',\n digest:\n 'sha256:4444444444444444444444444444444444444444444444444444444444444444',\n extensions: {\n npx: {\n type: 'skill-md',\n },\n },\n};\n\n// ─── Valid snapshots ──────────────────────────────────────────────────\n\n/**\n * A valid ready OCI snapshot.\n *\n * @public\n */\nexport const validOciSnapshotReady: SkillSnapshot = {\n schemaVersion: '1',\n source: ociSource,\n status: 'ready',\n observedAt: '2026-09-01T12:00:00Z',\n skills: [validOciRecordMinimal, validOciRecordFull],\n failedSkillKeys: [],\n};\n\n/**\n * A valid ready npx snapshot.\n *\n * @public\n */\nexport const validNpxSnapshotReady: SkillSnapshot = {\n schemaVersion: '1',\n source: npxSource,\n status: 'ready',\n observedAt: '2026-09-01T12:00:00Z',\n skills: [validNpxRecordMinimal, validNpxRecordFull],\n failedSkillKeys: [],\n};\n\n/**\n * A valid loading snapshot.\n *\n * @public\n */\nexport const validLoadingSnapshot: SkillSnapshot = {\n schemaVersion: '1',\n source: ociSource,\n status: 'loading',\n observedAt: null,\n skills: [],\n failedSkillKeys: [],\n};\n\n/**\n * A valid partial snapshot with failed keys.\n *\n * @public\n */\nexport const validPartialSnapshot: SkillSnapshot = {\n schemaVersion: '1',\n source: ociSource,\n status: 'partial',\n observedAt: '2026-09-01T12:05:00Z',\n skills: [validOciRecordMinimal],\n failedSkillKeys: ['quay.io/octo/broken-skill'],\n};\n\n/**\n * A valid failed snapshot.\n *\n * @public\n */\nexport const validFailedSnapshot: SkillSnapshot = {\n schemaVersion: '1',\n source: ociSource,\n status: 'failed',\n observedAt: '2026-09-01T12:10:00Z',\n skills: [],\n failedSkillKeys: [],\n};\n\n/**\n * A valid partial snapshot with no records and no failed keys.\n *\n * @public\n */\nexport const validPartialEmptySnapshot: SkillSnapshot = {\n schemaVersion: '1',\n source: npxSource,\n status: 'partial',\n observedAt: '2026-09-01T12:15:00Z',\n skills: [],\n failedSkillKeys: [],\n};\n\n/**\n * A valid ready snapshot with zero records (successful empty discovery).\n *\n * @public\n */\nexport const validReadyEmptySnapshot: SkillSnapshot = {\n schemaVersion: '1',\n source: ociSource,\n status: 'ready',\n observedAt: '2026-09-01T12:20:00Z',\n skills: [],\n failedSkillKeys: [],\n};\n\n// ─── Invalid records ──────────────────────────────────────────────────\n\n/**\n * Record with empty key.\n *\n * @public\n */\nexport const invalidRecordEmptyKey: OciSkillRecord = {\n key: '',\n name: 'Bad Skill',\n sourceUri:\n 'oci://quay.io/octo/bad@sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',\n digest:\n 'sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',\n};\n\n/**\n * Record with malformed digest (uppercase).\n *\n * @public\n */\nexport const invalidRecordBadDigest: OciSkillRecord = {\n key: 'quay.io/octo/bad-digest',\n name: 'Bad Digest Skill',\n sourceUri:\n 'oci://quay.io/octo/bad-digest@sha256:ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789',\n digest:\n 'sha256:ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789',\n};\n\n/**\n * Record with truncated digest.\n *\n * @public\n */\nexport const invalidRecordShortDigest: OciSkillRecord = {\n key: 'quay.io/octo/short-digest',\n name: 'Short Digest Skill',\n sourceUri: 'oci://quay.io/octo/short-digest@sha256:abcdef',\n digest: 'sha256:abcdef',\n};\n\n/**\n * npx record with OCI extension (source mismatch).\n *\n * @public\n */\nexport const invalidNpxRecordWithOciExtension: NpxSkillRecord = {\n key: 'mismatched-skill',\n name: 'Mismatched Skill',\n sourceUri: 'https://registry.example.com/skills/mismatch/SKILL.md',\n digest:\n 'sha256:5555555555555555555555555555555555555555555555555555555555555555',\n extensions: { oci: { namespace: 'bad' } } as unknown as {\n npx?: { type?: 'skill-md' };\n },\n};\n\n/**\n * OCI record with npx extension (source mismatch).\n *\n * @public\n */\nexport const invalidOciRecordWithNpxExtension: OciSkillRecord = {\n key: 'quay.io/octo/npx-ext-mismatch',\n name: 'Mismatch Skill',\n sourceUri:\n 'oci://quay.io/octo/mismatch@sha256:6666666666666666666666666666666666666666666666666666666666666666',\n digest:\n 'sha256:6666666666666666666666666666666666666666666666666666666666666666',\n extensions: { npx: { type: 'skill-md' } } as unknown as {\n oci?: { namespace?: string; prompt?: string };\n },\n};\n\n/**\n * OCI record with unknown extension key.\n *\n * @public\n */\nexport const invalidOciRecordUnknownExtKey: OciSkillRecord = {\n key: 'quay.io/octo/unknown-ext',\n name: 'Unknown Ext Skill',\n sourceUri:\n 'oci://quay.io/octo/unknown-ext@sha256:7777777777777777777777777777777777777777777777777777777777777777',\n digest:\n 'sha256:7777777777777777777777777777777777777777777777777777777777777777',\n extensions: {\n oci: { namespace: 'ok', secretKey: 'bad' } as unknown as {\n namespace?: string;\n prompt?: string;\n },\n },\n};\n\n// ─── Invalid snapshots ────────────────────────────────────────────────\n\n/**\n * Snapshot with unsupported schema version.\n *\n * @public\n */\nexport const invalidSnapshotBadVersion: unknown = {\n schemaVersion: '2',\n source: ociSource,\n status: 'ready',\n observedAt: '2026-09-01T12:00:00Z',\n skills: [],\n failedSkillKeys: [],\n};\n\n/**\n * Snapshot claiming ready with failed keys.\n *\n * @public\n */\nexport const invalidSnapshotReadyWithFailedKeys: unknown = {\n schemaVersion: '1',\n source: ociSource,\n status: 'ready',\n observedAt: '2026-09-01T12:00:00Z',\n skills: [validOciRecordMinimal],\n failedSkillKeys: ['quay.io/octo/failed-one'],\n};\n\n/**\n * Snapshot with duplicate skill keys.\n *\n * @public\n */\nexport const invalidSnapshotDuplicateKeys: unknown = {\n schemaVersion: '1',\n source: ociSource,\n status: 'ready',\n observedAt: '2026-09-01T12:00:00Z',\n skills: [validOciRecordMinimal, { ...validOciRecordMinimal }],\n failedSkillKeys: [],\n};\n\n/**\n * Snapshot with overlapping skill and failed keys.\n *\n * @public\n */\nexport const invalidSnapshotOverlappingKeys: unknown = {\n schemaVersion: '1',\n source: ociSource,\n status: 'partial',\n observedAt: '2026-09-01T12:00:00Z',\n skills: [validOciRecordMinimal],\n failedSkillKeys: [validOciRecordMinimal.key],\n};\n\n/**\n * Loading snapshot with non-null observedAt.\n *\n * @public\n */\nexport const invalidLoadingWithObservedAt: unknown = {\n schemaVersion: '1',\n source: ociSource,\n status: 'loading',\n observedAt: '2026-09-01T12:00:00Z',\n skills: [],\n failedSkillKeys: [],\n};\n\n/**\n * Loading snapshot with skills.\n *\n * @public\n */\nexport const invalidLoadingWithSkills: unknown = {\n schemaVersion: '1',\n source: ociSource,\n status: 'loading',\n observedAt: null,\n skills: [validOciRecordMinimal],\n failedSkillKeys: [],\n};\n\n/**\n * Failed snapshot with skills.\n *\n * @public\n */\nexport const invalidFailedWithSkills: unknown = {\n schemaVersion: '1',\n source: ociSource,\n status: 'failed',\n observedAt: '2026-09-01T12:00:00Z',\n skills: [validOciRecordMinimal],\n failedSkillKeys: [],\n};\n\n/**\n * Snapshot with non-UTC timestamp.\n *\n * @public\n */\nexport const invalidSnapshotNonUtcTimestamp: unknown = {\n schemaVersion: '1',\n source: ociSource,\n status: 'ready',\n observedAt: '2026-09-01T12:00:00-05:00',\n skills: [],\n failedSkillKeys: [],\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var validation = require('./validation.cjs.js');
|
|
4
|
+
var catalogHelpers = require('./catalog-helpers.cjs.js');
|
|
5
|
+
var snapshot = require('./snapshot.cjs.js');
|
|
6
|
+
var restContract = require('./rest-contract.cjs.js');
|
|
7
|
+
var fixtures = require('./fixtures.cjs.js');
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
exports.MAX_SNAPSHOT_BYTES = validation.MAX_SNAPSHOT_BYTES;
|
|
12
|
+
exports.MAX_SNAPSHOT_RECORDS = validation.MAX_SNAPSHOT_RECORDS;
|
|
13
|
+
exports.SUPPORTED_SCHEMA_VERSION = validation.SUPPORTED_SCHEMA_VERSION;
|
|
14
|
+
exports.isNpxSkillRecord = validation.isNpxSkillRecord;
|
|
15
|
+
exports.isOciSkillRecord = validation.isOciSkillRecord;
|
|
16
|
+
exports.isValidDigest = validation.isValidDigest;
|
|
17
|
+
exports.isValidUtcTimestamp = validation.isValidUtcTimestamp;
|
|
18
|
+
exports.validateSnapshot = validation.validateSnapshot;
|
|
19
|
+
exports.validateSnapshotSize = validation.validateSnapshotSize;
|
|
20
|
+
exports.buildNpxRef = catalogHelpers.buildNpxRef;
|
|
21
|
+
exports.buildOciRef = catalogHelpers.buildOciRef;
|
|
22
|
+
exports.computeCatalogName = catalogHelpers.computeCatalogName;
|
|
23
|
+
exports.normalizeTags = catalogHelpers.normalizeTags;
|
|
24
|
+
exports.parseNpxRef = catalogHelpers.parseNpxRef;
|
|
25
|
+
exports.parseOciRef = catalogHelpers.parseOciRef;
|
|
26
|
+
exports.resolveVersion = catalogHelpers.resolveVersion;
|
|
27
|
+
exports.boundSnapshot = snapshot.boundSnapshot;
|
|
28
|
+
exports.createFailedSnapshot = snapshot.createFailedSnapshot;
|
|
29
|
+
exports.createLoadingSnapshot = snapshot.createLoadingSnapshot;
|
|
30
|
+
exports.sortRecordsByKey = snapshot.sortRecordsByKey;
|
|
31
|
+
exports.MAX_RESPONSE_BYTES = restContract.MAX_RESPONSE_BYTES;
|
|
32
|
+
exports.SKILLS_ENDPOINT_BASE = restContract.SKILLS_ENDPOINT_BASE;
|
|
33
|
+
exports.invalidFailedWithSkills = fixtures.invalidFailedWithSkills;
|
|
34
|
+
exports.invalidLoadingWithObservedAt = fixtures.invalidLoadingWithObservedAt;
|
|
35
|
+
exports.invalidLoadingWithSkills = fixtures.invalidLoadingWithSkills;
|
|
36
|
+
exports.invalidNpxRecordWithOciExtension = fixtures.invalidNpxRecordWithOciExtension;
|
|
37
|
+
exports.invalidOciRecordUnknownExtKey = fixtures.invalidOciRecordUnknownExtKey;
|
|
38
|
+
exports.invalidOciRecordWithNpxExtension = fixtures.invalidOciRecordWithNpxExtension;
|
|
39
|
+
exports.invalidRecordBadDigest = fixtures.invalidRecordBadDigest;
|
|
40
|
+
exports.invalidRecordEmptyKey = fixtures.invalidRecordEmptyKey;
|
|
41
|
+
exports.invalidRecordShortDigest = fixtures.invalidRecordShortDigest;
|
|
42
|
+
exports.invalidSnapshotBadVersion = fixtures.invalidSnapshotBadVersion;
|
|
43
|
+
exports.invalidSnapshotDuplicateKeys = fixtures.invalidSnapshotDuplicateKeys;
|
|
44
|
+
exports.invalidSnapshotNonUtcTimestamp = fixtures.invalidSnapshotNonUtcTimestamp;
|
|
45
|
+
exports.invalidSnapshotOverlappingKeys = fixtures.invalidSnapshotOverlappingKeys;
|
|
46
|
+
exports.invalidSnapshotReadyWithFailedKeys = fixtures.invalidSnapshotReadyWithFailedKeys;
|
|
47
|
+
exports.npxSource = fixtures.npxSource;
|
|
48
|
+
exports.ociSource = fixtures.ociSource;
|
|
49
|
+
exports.validFailedSnapshot = fixtures.validFailedSnapshot;
|
|
50
|
+
exports.validLoadingSnapshot = fixtures.validLoadingSnapshot;
|
|
51
|
+
exports.validNpxRecordFull = fixtures.validNpxRecordFull;
|
|
52
|
+
exports.validNpxRecordMinimal = fixtures.validNpxRecordMinimal;
|
|
53
|
+
exports.validNpxRecordWithQuery = fixtures.validNpxRecordWithQuery;
|
|
54
|
+
exports.validNpxSnapshotReady = fixtures.validNpxSnapshotReady;
|
|
55
|
+
exports.validOciRecordEmptyExtensions = fixtures.validOciRecordEmptyExtensions;
|
|
56
|
+
exports.validOciRecordFull = fixtures.validOciRecordFull;
|
|
57
|
+
exports.validOciRecordMinimal = fixtures.validOciRecordMinimal;
|
|
58
|
+
exports.validOciSnapshotReady = fixtures.validOciSnapshotReady;
|
|
59
|
+
exports.validPartialEmptySnapshot = fixtures.validPartialEmptySnapshot;
|
|
60
|
+
exports.validPartialSnapshot = fixtures.validPartialSnapshot;
|
|
61
|
+
exports.validReadyEmptySnapshot = fixtures.validReadyEmptySnapshot;
|
|
62
|
+
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|