@lumerahq/cli 0.24.7-dev.0 → 0.24.7
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/{chunk-GFLMEXIK.js → chunk-VL5GDJKU.js} +27 -92
- package/dist/index.js +2 -2
- package/dist/{init-TRZMDKYB.js → init-B4DXTC7L.js} +1 -13
- package/dist/{skills-O3NZFM7V.js → skills-PXZHERAS.js} +31 -16
- package/package.json +1 -1
- package/templates/default/_gitignore +3 -0
- package/templates/default/biome.json +11 -3
- package/templates/default/icon.svg +1 -0
- package/templates/default/package.json +1 -1
- package/templates/default/pnpm-lock.yaml +37 -37
- package/templates/default/src/styles.css +2 -8
|
@@ -1,21 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
} from "./chunk-FHHWIV4C.js";
|
|
4
|
-
import {
|
|
5
|
-
getBaseUrl,
|
|
6
|
-
getProjectId,
|
|
7
|
-
getToken,
|
|
8
|
-
init_auth
|
|
2
|
+
getBaseUrl
|
|
9
3
|
} from "./chunk-JLVVHTBY.js";
|
|
10
4
|
import {
|
|
11
5
|
fetchWithRetry
|
|
12
6
|
} from "./chunk-FJFIWC7G.js";
|
|
13
7
|
|
|
14
8
|
// src/lib/skills.ts
|
|
15
|
-
init_auth();
|
|
16
9
|
import { createHash } from "crypto";
|
|
17
|
-
import { existsSync, mkdirSync, readdirSync, readFileSync,
|
|
18
|
-
import {
|
|
10
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, symlinkSync, lstatSync, statSync, writeFileSync } from "fs";
|
|
11
|
+
import { join, relative } from "path";
|
|
19
12
|
import pc from "picocolors";
|
|
20
13
|
function slugToDirName(slug) {
|
|
21
14
|
return slug.replace(/-/g, "_");
|
|
@@ -27,19 +20,7 @@ function slugToFilename(slug) {
|
|
|
27
20
|
return `${slug.replace(/-/g, "_")}.md`;
|
|
28
21
|
}
|
|
29
22
|
function hashContent(content) {
|
|
30
|
-
return createHash("
|
|
31
|
-
}
|
|
32
|
-
var SKILLS_HASH_MANIFEST_PATH = join(".lumera", "skills-hashes.json");
|
|
33
|
-
function writeSkillsHashManifest(projectRoot, skills) {
|
|
34
|
-
const hashes = {};
|
|
35
|
-
for (const skill of [...skills].sort((a, b) => a.slug < b.slug ? -1 : a.slug > b.slug ? 1 : 0)) {
|
|
36
|
-
hashes[skill.slug] = hashContent(skill.content);
|
|
37
|
-
}
|
|
38
|
-
const manifestPath = join(projectRoot, SKILLS_HASH_MANIFEST_PATH);
|
|
39
|
-
mkdirSync(dirname(manifestPath), { recursive: true });
|
|
40
|
-
writeFileSync(manifestPath, `${JSON.stringify({ version: 1, skills: hashes }, null, 2)}
|
|
41
|
-
`);
|
|
42
|
-
rmSync(join(projectRoot, ".lumera", "skills-content-hash"), { force: true });
|
|
23
|
+
return createHash("md5").update(content).digest("hex");
|
|
43
24
|
}
|
|
44
25
|
async function fetchSkillsList() {
|
|
45
26
|
const baseUrl = getBaseUrl();
|
|
@@ -63,58 +44,6 @@ async function fetchSkillContent(slug) {
|
|
|
63
44
|
}
|
|
64
45
|
return mdRes.text();
|
|
65
46
|
}
|
|
66
|
-
async function fetchEffectiveSkills(projectRoot) {
|
|
67
|
-
const baseUrl = getBaseUrl();
|
|
68
|
-
const token = getToken(projectRoot);
|
|
69
|
-
const projectId = getProjectId(projectRoot)?.trim();
|
|
70
|
-
const url = new URL(`${baseUrl}/api/skills/effective`);
|
|
71
|
-
if (projectId) url.searchParams.set("project_id", projectId);
|
|
72
|
-
const response = await fetchWithRetry(url.toString(), {
|
|
73
|
-
headers: {
|
|
74
|
-
Authorization: `Bearer ${token}`,
|
|
75
|
-
"X-Lumera-Client": "lumera-cli",
|
|
76
|
-
...userContextHeaders()
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
if (!response.ok) {
|
|
80
|
-
const detail = (await response.text()).trim();
|
|
81
|
-
throw new Error(`Failed to fetch effective skills: ${response.status}${detail ? ` ${detail}` : ""}`);
|
|
82
|
-
}
|
|
83
|
-
const payload = await response.json();
|
|
84
|
-
return (payload.skills ?? []).map((skill) => ({
|
|
85
|
-
...skill,
|
|
86
|
-
summary: skill.summary || skill.name,
|
|
87
|
-
content_hash: skill.content_hash || hashContent(skill.content)
|
|
88
|
-
}));
|
|
89
|
-
}
|
|
90
|
-
async function fetchPublicSkillFiles() {
|
|
91
|
-
const skills = await fetchSkillsList();
|
|
92
|
-
const results = await Promise.allSettled(
|
|
93
|
-
skills.map(async (skill) => ({
|
|
94
|
-
...skill,
|
|
95
|
-
content: await fetchSkillContent(skill.slug)
|
|
96
|
-
}))
|
|
97
|
-
);
|
|
98
|
-
const out = [];
|
|
99
|
-
for (const result of results) {
|
|
100
|
-
if (result.status !== "fulfilled" || !result.value.content) continue;
|
|
101
|
-
out.push({
|
|
102
|
-
...result.value,
|
|
103
|
-
content: result.value.content,
|
|
104
|
-
content_hash: hashContent(result.value.content),
|
|
105
|
-
managed: true
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
return out;
|
|
109
|
-
}
|
|
110
|
-
async function fetchSkillsForProject(projectRoot) {
|
|
111
|
-
try {
|
|
112
|
-
getToken(projectRoot);
|
|
113
|
-
} catch {
|
|
114
|
-
return fetchPublicSkillFiles();
|
|
115
|
-
}
|
|
116
|
-
return fetchEffectiveSkills(projectRoot);
|
|
117
|
-
}
|
|
118
47
|
function getLocalSkills(skillsDir) {
|
|
119
48
|
const localSkills = /* @__PURE__ */ new Map();
|
|
120
49
|
if (!existsSync(skillsDir)) {
|
|
@@ -197,30 +126,37 @@ function ensureSkillSymlinks(projectRoot) {
|
|
|
197
126
|
}
|
|
198
127
|
async function installAllSkills(targetDir, options) {
|
|
199
128
|
const verbose = options?.verbose ?? false;
|
|
200
|
-
const skills = await
|
|
129
|
+
const skills = await fetchSkillsList();
|
|
201
130
|
const skillsDir = join(targetDir, ".agents", "skills");
|
|
202
131
|
mkdirSync(skillsDir, { recursive: true });
|
|
132
|
+
const results = await Promise.allSettled(
|
|
133
|
+
skills.map(async (skill) => {
|
|
134
|
+
const content = await fetchSkillContent(skill.slug);
|
|
135
|
+
return { skill, content };
|
|
136
|
+
})
|
|
137
|
+
);
|
|
203
138
|
let installed = 0;
|
|
204
139
|
let failed = 0;
|
|
205
|
-
for (const
|
|
206
|
-
if (
|
|
207
|
-
|
|
140
|
+
for (const result of results) {
|
|
141
|
+
if (result.status === "fulfilled" && result.value.content) {
|
|
142
|
+
const { skill, content } = result.value;
|
|
143
|
+
const dirName = slugToDirName(skill.slug);
|
|
144
|
+
const skillDir = join(skillsDir, dirName);
|
|
145
|
+
mkdirSync(skillDir, { recursive: true });
|
|
146
|
+
writeFileSync(join(skillDir, "SKILL.md"), content);
|
|
208
147
|
if (verbose) {
|
|
209
|
-
console.log(pc.
|
|
148
|
+
console.log(pc.green(" \u2713"), pc.dim(`${dirName}/SKILL.md`));
|
|
210
149
|
}
|
|
211
|
-
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
console.log(pc.green(" \u2713"), pc.dim(`${dirName}/SKILL.md`));
|
|
150
|
+
installed++;
|
|
151
|
+
} else {
|
|
152
|
+
if (verbose) {
|
|
153
|
+
const slug = result.status === "fulfilled" ? result.value.skill.slug : "unknown";
|
|
154
|
+
console.log(pc.yellow(" \u26A0"), pc.dim(`Failed to fetch ${slug}`));
|
|
155
|
+
}
|
|
156
|
+
failed++;
|
|
219
157
|
}
|
|
220
|
-
installed++;
|
|
221
158
|
}
|
|
222
159
|
ensureSkillSymlinks(targetDir);
|
|
223
|
-
if (failed === 0) writeSkillsHashManifest(targetDir, skills);
|
|
224
160
|
return { installed, failed };
|
|
225
161
|
}
|
|
226
162
|
var SKILLS_START_MARKER = "<!-- LUMERA_SKILLS_START -->";
|
|
@@ -281,9 +217,8 @@ export {
|
|
|
281
217
|
slugToDirName,
|
|
282
218
|
slugToFilename,
|
|
283
219
|
hashContent,
|
|
284
|
-
writeSkillsHashManifest,
|
|
285
220
|
fetchSkillsList,
|
|
286
|
-
|
|
221
|
+
fetchSkillContent,
|
|
287
222
|
getLocalSkills,
|
|
288
223
|
ensureSkillSymlinks,
|
|
289
224
|
installAllSkills,
|
package/dist/index.js
CHANGED
|
@@ -256,7 +256,7 @@ async function main() {
|
|
|
256
256
|
break;
|
|
257
257
|
// Project
|
|
258
258
|
case "init":
|
|
259
|
-
await import("./init-
|
|
259
|
+
await import("./init-B4DXTC7L.js").then((m) => m.init(args.slice(1)));
|
|
260
260
|
break;
|
|
261
261
|
case "register":
|
|
262
262
|
await import("./register-HRLBT4FI.js").then((m) => m.register(args.slice(1)));
|
|
@@ -272,7 +272,7 @@ async function main() {
|
|
|
272
272
|
break;
|
|
273
273
|
// Skills
|
|
274
274
|
case "skills":
|
|
275
|
-
await import("./skills-
|
|
275
|
+
await import("./skills-PXZHERAS.js").then((m) => m.skills(subcommand, args.slice(2)));
|
|
276
276
|
break;
|
|
277
277
|
// Dependencies
|
|
278
278
|
case "deps":
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
installAllSkills,
|
|
3
3
|
syncClaudeMd
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-VL5GDJKU.js";
|
|
5
5
|
import {
|
|
6
6
|
spinner
|
|
7
7
|
} from "./chunk-BHYDYR75.js";
|
|
@@ -456,18 +456,6 @@ async function init(args) {
|
|
|
456
456
|
setProjectId(targetDir, project.id);
|
|
457
457
|
stopRegister(pc.green("\u2713") + pc.dim(` Project registered (${project.id})`));
|
|
458
458
|
registered = true;
|
|
459
|
-
const stopProjectSkills = spinner("Syncing project skills...");
|
|
460
|
-
try {
|
|
461
|
-
const { installed, failed } = await installAllSkills(targetDir);
|
|
462
|
-
syncClaudeMd(targetDir);
|
|
463
|
-
if (failed > 0) {
|
|
464
|
-
stopProjectSkills(pc.yellow("\u26A0") + pc.dim(` Synced ${installed} project skills (${failed} failed)`));
|
|
465
|
-
} else {
|
|
466
|
-
stopProjectSkills(pc.green("\u2713") + pc.dim(` ${installed} project skills synced`));
|
|
467
|
-
}
|
|
468
|
-
} catch (skillError) {
|
|
469
|
-
stopProjectSkills(pc.yellow("\u26A0") + pc.dim(` Failed to sync project skills: ${skillError}`));
|
|
470
|
-
}
|
|
471
459
|
} catch (e) {
|
|
472
460
|
stopRegister(pc.yellow("\u26A0") + pc.dim(` Could not register project: ${e instanceof Error ? e.message : e}`));
|
|
473
461
|
}
|
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ensureSkillSymlinks,
|
|
3
|
-
|
|
3
|
+
fetchSkillContent,
|
|
4
4
|
fetchSkillsList,
|
|
5
5
|
getLocalSkills,
|
|
6
6
|
hashContent,
|
|
7
7
|
installAllSkills,
|
|
8
8
|
slugToDirName,
|
|
9
9
|
slugToFilename,
|
|
10
|
-
syncClaudeMd
|
|
11
|
-
|
|
12
|
-
} from "./chunk-GFLMEXIK.js";
|
|
13
|
-
import "./chunk-FHHWIV4C.js";
|
|
10
|
+
syncClaudeMd
|
|
11
|
+
} from "./chunk-VL5GDJKU.js";
|
|
14
12
|
import "./chunk-JLVVHTBY.js";
|
|
15
13
|
import "./chunk-FJFIWC7G.js";
|
|
16
14
|
import "./chunk-PNKVD2UK.js";
|
|
@@ -29,25 +27,32 @@ function findProjectRoot() {
|
|
|
29
27
|
}
|
|
30
28
|
return null;
|
|
31
29
|
}
|
|
32
|
-
async function computeDiff(
|
|
33
|
-
const skills2 = await
|
|
30
|
+
async function computeDiff(skillsDir, filterSlug) {
|
|
31
|
+
const skills2 = await fetchSkillsList();
|
|
34
32
|
const localSkills = getLocalSkills(skillsDir);
|
|
35
33
|
const remoteSkillSlugs = /* @__PURE__ */ new Set();
|
|
36
34
|
const diff = {
|
|
37
|
-
resolved: skills2,
|
|
38
35
|
added: [],
|
|
39
36
|
updated: [],
|
|
40
37
|
removed: [],
|
|
41
38
|
unchanged: []
|
|
42
39
|
};
|
|
43
40
|
const skillsToCheck = filterSlug ? skills2.filter((skill) => skill.slug === filterSlug) : skills2;
|
|
44
|
-
|
|
41
|
+
const remoteResults = await Promise.allSettled(
|
|
42
|
+
skillsToCheck.map(async (skill) => {
|
|
43
|
+
const content = await fetchSkillContent(skill.slug);
|
|
44
|
+
return { skill, content };
|
|
45
|
+
})
|
|
46
|
+
);
|
|
47
|
+
for (const result of remoteResults) {
|
|
48
|
+
if (result.status !== "fulfilled" || !result.value.content) continue;
|
|
49
|
+
const { skill, content } = result.value;
|
|
45
50
|
remoteSkillSlugs.add(skill.slug);
|
|
46
51
|
const localHash = localSkills.get(skill.slug);
|
|
47
52
|
if (!localHash) {
|
|
48
53
|
diff.added.push(skill);
|
|
49
54
|
} else {
|
|
50
|
-
const remoteHash = hashContent(
|
|
55
|
+
const remoteHash = hashContent(content);
|
|
51
56
|
if (localHash !== remoteHash) {
|
|
52
57
|
diff.updated.push(skill);
|
|
53
58
|
} else {
|
|
@@ -256,7 +261,10 @@ async function update(args, flags) {
|
|
|
256
261
|
}
|
|
257
262
|
const skillsDir = join(projectRoot, ".agents", "skills");
|
|
258
263
|
if (!existsSync(skillsDir)) {
|
|
259
|
-
|
|
264
|
+
console.log(pc.yellow(" \u26A0"), "No skills installed yet");
|
|
265
|
+
console.log(pc.dim(' Run "lumera skills install" first'));
|
|
266
|
+
console.log();
|
|
267
|
+
return;
|
|
260
268
|
}
|
|
261
269
|
if (verbose) {
|
|
262
270
|
console.log(pc.dim(` Project root: ${projectRoot}`));
|
|
@@ -267,14 +275,13 @@ async function update(args, flags) {
|
|
|
267
275
|
console.log();
|
|
268
276
|
}
|
|
269
277
|
try {
|
|
270
|
-
const diff = await computeDiff(
|
|
278
|
+
const diff = await computeDiff(skillsDir, filterSlug);
|
|
271
279
|
const hasChanges = diff.added.length > 0 || diff.updated.length > 0 || diff.removed.length > 0;
|
|
272
280
|
if (!hasChanges) {
|
|
273
281
|
console.log(pc.green(" \u2713"), "All skills are up to date");
|
|
274
282
|
if (verbose && diff.unchanged.length > 0) {
|
|
275
283
|
console.log(pc.dim(` ${diff.unchanged.length} skills unchanged`));
|
|
276
284
|
}
|
|
277
|
-
if (!filterSlug) writeSkillsHashManifest(projectRoot, diff.resolved);
|
|
278
285
|
syncClaudeMd(projectRoot);
|
|
279
286
|
console.log();
|
|
280
287
|
return;
|
|
@@ -322,11 +329,20 @@ async function update(args, flags) {
|
|
|
322
329
|
}
|
|
323
330
|
console.log(pc.dim(" Applying changes..."));
|
|
324
331
|
console.log();
|
|
325
|
-
|
|
332
|
+
const toFetch = [...diff.added, ...diff.updated];
|
|
333
|
+
const fetchResults = await Promise.allSettled(
|
|
334
|
+
toFetch.map(async (skill) => {
|
|
335
|
+
const content = await fetchSkillContent(skill.slug);
|
|
336
|
+
return { skill, content };
|
|
337
|
+
})
|
|
338
|
+
);
|
|
339
|
+
for (const result of fetchResults) {
|
|
340
|
+
if (result.status !== "fulfilled" || !result.value.content) continue;
|
|
341
|
+
const { skill, content } = result.value;
|
|
326
342
|
const dirName = slugToDirName(skill.slug);
|
|
327
343
|
const skillDir = join(skillsDir, dirName);
|
|
328
344
|
mkdirSync(skillDir, { recursive: true });
|
|
329
|
-
writeFileSync(join(skillDir, "SKILL.md"),
|
|
345
|
+
writeFileSync(join(skillDir, "SKILL.md"), content);
|
|
330
346
|
const legacyFile = join(skillsDir, slugToFilename(skill.slug));
|
|
331
347
|
if (existsSync(legacyFile)) {
|
|
332
348
|
rmSync(legacyFile);
|
|
@@ -353,7 +369,6 @@ async function update(args, flags) {
|
|
|
353
369
|
}
|
|
354
370
|
console.log();
|
|
355
371
|
console.log(pc.green(" \u2713"), `Update complete (${changes.join(", ")})`);
|
|
356
|
-
if (!filterSlug) writeSkillsHashManifest(projectRoot, diff.resolved);
|
|
357
372
|
syncClaudeMd(projectRoot);
|
|
358
373
|
ensureSkillSymlinks(projectRoot);
|
|
359
374
|
console.log();
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"$schema": "https://biomejs.dev/schemas/2.
|
|
2
|
+
"$schema": "https://biomejs.dev/schemas/2.5.6/schema.json",
|
|
3
3
|
"vcs": {
|
|
4
4
|
"enabled": true,
|
|
5
5
|
"clientKind": "git",
|
|
@@ -7,7 +7,15 @@
|
|
|
7
7
|
},
|
|
8
8
|
"files": {
|
|
9
9
|
"ignoreUnknown": false,
|
|
10
|
-
"includes": [
|
|
10
|
+
"includes": [
|
|
11
|
+
"**",
|
|
12
|
+
"!!**/node_modules",
|
|
13
|
+
"!!**/dist",
|
|
14
|
+
"!!**/*routeTree.gen.ts",
|
|
15
|
+
"!!output",
|
|
16
|
+
"!!tmp",
|
|
17
|
+
"!!uploads"
|
|
18
|
+
]
|
|
11
19
|
},
|
|
12
20
|
"formatter": {
|
|
13
21
|
"enabled": true,
|
|
@@ -18,7 +26,7 @@
|
|
|
18
26
|
"linter": {
|
|
19
27
|
"enabled": true,
|
|
20
28
|
"rules": {
|
|
21
|
-
"
|
|
29
|
+
"preset": "recommended",
|
|
22
30
|
"suspicious": { "noExplicitAny": "off" },
|
|
23
31
|
"style": { "noNonNullAssertion": "off" }
|
|
24
32
|
}
|
|
@@ -40,8 +40,8 @@ importers:
|
|
|
40
40
|
version: 3.6.0
|
|
41
41
|
devDependencies:
|
|
42
42
|
'@biomejs/biome':
|
|
43
|
-
specifier:
|
|
44
|
-
version: 2.
|
|
43
|
+
specifier: 2.5.6
|
|
44
|
+
version: 2.5.6
|
|
45
45
|
'@tailwindcss/vite':
|
|
46
46
|
specifier: ^4.2.2
|
|
47
47
|
version: 4.3.0(vite@8.0.16(esbuild@0.28.0)(jiti@2.7.0)(tsx@4.22.4))
|
|
@@ -192,59 +192,59 @@ packages:
|
|
|
192
192
|
'@types/react':
|
|
193
193
|
optional: true
|
|
194
194
|
|
|
195
|
-
'@biomejs/biome@2.
|
|
196
|
-
resolution: {integrity: sha512-
|
|
195
|
+
'@biomejs/biome@2.5.6':
|
|
196
|
+
resolution: {integrity: sha512-lxVNjv7UF6KfhMJfL9gaUHbWdJdHbsAj6OSmwSYNdhRuG67NxNQ4Xdvh3TUxsSK9sBzJBQhEJj3AopmmNJ5pSA==}
|
|
197
197
|
engines: {node: '>=14.21.3'}
|
|
198
198
|
hasBin: true
|
|
199
199
|
|
|
200
|
-
'@biomejs/cli-darwin-arm64@2.
|
|
201
|
-
resolution: {integrity: sha512-
|
|
200
|
+
'@biomejs/cli-darwin-arm64@2.5.6':
|
|
201
|
+
resolution: {integrity: sha512-zMOLZP4oMrjh6m1zcSj1ud2awUPgTuMVbmQhYYWL7J8HwCnbHHBvTm7VBTRuY7epT5bez76IpKYQ11ZAqHFlnw==}
|
|
202
202
|
engines: {node: '>=14.21.3'}
|
|
203
203
|
cpu: [arm64]
|
|
204
204
|
os: [darwin]
|
|
205
205
|
|
|
206
|
-
'@biomejs/cli-darwin-x64@2.
|
|
207
|
-
resolution: {integrity: sha512-
|
|
206
|
+
'@biomejs/cli-darwin-x64@2.5.6':
|
|
207
|
+
resolution: {integrity: sha512-JAC1VqzvO7Th5ZplU0G2uGfkZbxEe9uDDektPAhF0JLusoz1w+T4okp2bkykI0bbaO2vslKiRfj4gU43JaGreA==}
|
|
208
208
|
engines: {node: '>=14.21.3'}
|
|
209
209
|
cpu: [x64]
|
|
210
210
|
os: [darwin]
|
|
211
211
|
|
|
212
|
-
'@biomejs/cli-linux-arm64-musl@2.
|
|
213
|
-
resolution: {integrity: sha512-
|
|
212
|
+
'@biomejs/cli-linux-arm64-musl@2.5.6':
|
|
213
|
+
resolution: {integrity: sha512-eUa3jeeYvfMt19LBeh6E5PUZpxnTC4JqNWo+EDjTtQjAr2xLGnWaxACtVU1DQqmHYbvThlJzLX+ZsYgrqh2qVw==}
|
|
214
214
|
engines: {node: '>=14.21.3'}
|
|
215
215
|
cpu: [arm64]
|
|
216
216
|
os: [linux]
|
|
217
217
|
libc: [musl]
|
|
218
218
|
|
|
219
|
-
'@biomejs/cli-linux-arm64@2.
|
|
220
|
-
resolution: {integrity: sha512-
|
|
219
|
+
'@biomejs/cli-linux-arm64@2.5.6':
|
|
220
|
+
resolution: {integrity: sha512-6XsYwCFkp5sMxl85ffhgeGpGgs6A7dRYFnkceZ7WVxvycuTnGdD5xa534Z3xfrBQ0JCMK/mujT6ZNPJoghedwg==}
|
|
221
221
|
engines: {node: '>=14.21.3'}
|
|
222
222
|
cpu: [arm64]
|
|
223
223
|
os: [linux]
|
|
224
224
|
libc: [glibc]
|
|
225
225
|
|
|
226
|
-
'@biomejs/cli-linux-x64-musl@2.
|
|
227
|
-
resolution: {integrity: sha512-
|
|
226
|
+
'@biomejs/cli-linux-x64-musl@2.5.6':
|
|
227
|
+
resolution: {integrity: sha512-2Vp13QdKysH3HIWLaYLhUUwbK+jbZonJD1K+Lr0d0RO4wH7mkYd43vJixEDm8cUWrowoRz4UUHF1nm9Ae7ym8A==}
|
|
228
228
|
engines: {node: '>=14.21.3'}
|
|
229
229
|
cpu: [x64]
|
|
230
230
|
os: [linux]
|
|
231
231
|
libc: [musl]
|
|
232
232
|
|
|
233
|
-
'@biomejs/cli-linux-x64@2.
|
|
234
|
-
resolution: {integrity: sha512-
|
|
233
|
+
'@biomejs/cli-linux-x64@2.5.6':
|
|
234
|
+
resolution: {integrity: sha512-Pop9VXCFUhFTMfFefZ39S+u2rOPyNp5iHlxbZRwXGACHLy2r0jjiRgJHmaEKJzL3SyxlVeGShXhvvElvWowonA==}
|
|
235
235
|
engines: {node: '>=14.21.3'}
|
|
236
236
|
cpu: [x64]
|
|
237
237
|
os: [linux]
|
|
238
238
|
libc: [glibc]
|
|
239
239
|
|
|
240
|
-
'@biomejs/cli-win32-arm64@2.
|
|
241
|
-
resolution: {integrity: sha512-
|
|
240
|
+
'@biomejs/cli-win32-arm64@2.5.6':
|
|
241
|
+
resolution: {integrity: sha512-tDGshcm6BdkZOCGnTDX0Y8/U4IfBSlnUU7T56nNDuPEfed+aHg+u8G36NB43fJVl0Os6+QURXIE1yuD7AaEofA==}
|
|
242
242
|
engines: {node: '>=14.21.3'}
|
|
243
243
|
cpu: [arm64]
|
|
244
244
|
os: [win32]
|
|
245
245
|
|
|
246
|
-
'@biomejs/cli-win32-x64@2.
|
|
247
|
-
resolution: {integrity: sha512-
|
|
246
|
+
'@biomejs/cli-win32-x64@2.5.6':
|
|
247
|
+
resolution: {integrity: sha512-WN05KwXnTO/2J45RQPvzZMXf7tZUIofHoR35xIPfCo7pQ2RFidxI8sfb5mGsaTxdMmEOzHzOPRCdA5/fCpc7xQ==}
|
|
248
248
|
engines: {node: '>=14.21.3'}
|
|
249
249
|
cpu: [x64]
|
|
250
250
|
os: [win32]
|
|
@@ -2134,39 +2134,39 @@ snapshots:
|
|
|
2134
2134
|
optionalDependencies:
|
|
2135
2135
|
'@types/react': 19.2.16
|
|
2136
2136
|
|
|
2137
|
-
'@biomejs/biome@2.
|
|
2137
|
+
'@biomejs/biome@2.5.6':
|
|
2138
2138
|
optionalDependencies:
|
|
2139
|
-
'@biomejs/cli-darwin-arm64': 2.
|
|
2140
|
-
'@biomejs/cli-darwin-x64': 2.
|
|
2141
|
-
'@biomejs/cli-linux-arm64': 2.
|
|
2142
|
-
'@biomejs/cli-linux-arm64-musl': 2.
|
|
2143
|
-
'@biomejs/cli-linux-x64': 2.
|
|
2144
|
-
'@biomejs/cli-linux-x64-musl': 2.
|
|
2145
|
-
'@biomejs/cli-win32-arm64': 2.
|
|
2146
|
-
'@biomejs/cli-win32-x64': 2.
|
|
2139
|
+
'@biomejs/cli-darwin-arm64': 2.5.6
|
|
2140
|
+
'@biomejs/cli-darwin-x64': 2.5.6
|
|
2141
|
+
'@biomejs/cli-linux-arm64': 2.5.6
|
|
2142
|
+
'@biomejs/cli-linux-arm64-musl': 2.5.6
|
|
2143
|
+
'@biomejs/cli-linux-x64': 2.5.6
|
|
2144
|
+
'@biomejs/cli-linux-x64-musl': 2.5.6
|
|
2145
|
+
'@biomejs/cli-win32-arm64': 2.5.6
|
|
2146
|
+
'@biomejs/cli-win32-x64': 2.5.6
|
|
2147
2147
|
|
|
2148
|
-
'@biomejs/cli-darwin-arm64@2.
|
|
2148
|
+
'@biomejs/cli-darwin-arm64@2.5.6':
|
|
2149
2149
|
optional: true
|
|
2150
2150
|
|
|
2151
|
-
'@biomejs/cli-darwin-x64@2.
|
|
2151
|
+
'@biomejs/cli-darwin-x64@2.5.6':
|
|
2152
2152
|
optional: true
|
|
2153
2153
|
|
|
2154
|
-
'@biomejs/cli-linux-arm64-musl@2.
|
|
2154
|
+
'@biomejs/cli-linux-arm64-musl@2.5.6':
|
|
2155
2155
|
optional: true
|
|
2156
2156
|
|
|
2157
|
-
'@biomejs/cli-linux-arm64@2.
|
|
2157
|
+
'@biomejs/cli-linux-arm64@2.5.6':
|
|
2158
2158
|
optional: true
|
|
2159
2159
|
|
|
2160
|
-
'@biomejs/cli-linux-x64-musl@2.
|
|
2160
|
+
'@biomejs/cli-linux-x64-musl@2.5.6':
|
|
2161
2161
|
optional: true
|
|
2162
2162
|
|
|
2163
|
-
'@biomejs/cli-linux-x64@2.
|
|
2163
|
+
'@biomejs/cli-linux-x64@2.5.6':
|
|
2164
2164
|
optional: true
|
|
2165
2165
|
|
|
2166
|
-
'@biomejs/cli-win32-arm64@2.
|
|
2166
|
+
'@biomejs/cli-win32-arm64@2.5.6':
|
|
2167
2167
|
optional: true
|
|
2168
2168
|
|
|
2169
|
-
'@biomejs/cli-win32-x64@2.
|
|
2169
|
+
'@biomejs/cli-win32-x64@2.5.6':
|
|
2170
2170
|
optional: true
|
|
2171
2171
|
|
|
2172
2172
|
'@braintree/sanitize-url@7.1.2': {}
|
|
@@ -7,19 +7,13 @@
|
|
|
7
7
|
height: 0;
|
|
8
8
|
}
|
|
9
9
|
to {
|
|
10
|
-
height: var(
|
|
11
|
-
--radix-accordion-content-height,
|
|
12
|
-
var(--accordion-panel-height, auto)
|
|
13
|
-
);
|
|
10
|
+
height: var(--radix-accordion-content-height, var(--accordion-panel-height, auto));
|
|
14
11
|
}
|
|
15
12
|
}
|
|
16
13
|
|
|
17
14
|
@keyframes accordion-up {
|
|
18
15
|
from {
|
|
19
|
-
height: var(
|
|
20
|
-
--radix-accordion-content-height,
|
|
21
|
-
var(--accordion-panel-height, auto)
|
|
22
|
-
);
|
|
16
|
+
height: var(--radix-accordion-content-height, var(--accordion-panel-height, auto));
|
|
23
17
|
}
|
|
24
18
|
to {
|
|
25
19
|
height: 0;
|