@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.
@@ -1,21 +1,14 @@
1
1
  import {
2
- userContextHeaders
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, rmSync, symlinkSync, lstatSync, statSync, writeFileSync } from "fs";
18
- import { dirname, join, relative } from "path";
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("sha256").update(content).digest("hex");
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 fetchSkillsForProject(targetDir);
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 skill of skills) {
206
- if (!skill.content) {
207
- failed++;
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.yellow(" \u26A0"), pc.dim(`Missing content for ${skill.slug}`));
148
+ console.log(pc.green(" \u2713"), pc.dim(`${dirName}/SKILL.md`));
210
149
  }
211
- continue;
212
- }
213
- const dirName = slugToDirName(skill.slug);
214
- const skillDir = join(skillsDir, dirName);
215
- mkdirSync(skillDir, { recursive: true });
216
- writeFileSync(join(skillDir, "SKILL.md"), skill.content);
217
- if (verbose) {
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
- fetchSkillsForProject,
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-TRZMDKYB.js").then((m) => m.init(args.slice(1)));
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-O3NZFM7V.js").then((m) => m.skills(subcommand, args.slice(2)));
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-GFLMEXIK.js";
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
- fetchSkillsForProject,
3
+ fetchSkillContent,
4
4
  fetchSkillsList,
5
5
  getLocalSkills,
6
6
  hashContent,
7
7
  installAllSkills,
8
8
  slugToDirName,
9
9
  slugToFilename,
10
- syncClaudeMd,
11
- writeSkillsHashManifest
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(projectRoot, skillsDir, filterSlug) {
33
- const skills2 = await fetchSkillsForProject(projectRoot);
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
- for (const skill of skillsToCheck) {
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(skill.content);
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
- mkdirSync(skillsDir, { recursive: true });
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(projectRoot, skillsDir, filterSlug);
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
- for (const skill of [...diff.added, ...diff.updated]) {
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"), skill.content);
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,6 +1,6 @@
1
1
  {
2
2
  "name": "@lumerahq/cli",
3
- "version": "0.24.7-dev.0",
3
+ "version": "0.24.7",
4
4
  "description": "CLI for building and deploying Lumera apps",
5
5
  "type": "module",
6
6
  "engines": {
@@ -10,3 +10,6 @@ __pycache__
10
10
  uv.lock
11
11
  src/routeTree.gen.ts
12
12
  .tanstack/
13
+ output/
14
+ tmp/
15
+ uploads/
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "https://biomejs.dev/schemas/2.4.16/schema.json",
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": ["**", "!!**/node_modules", "!!**/dist", "!!**/*routeTree.gen.ts"]
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
- "recommended": true,
29
+ "preset": "recommended",
22
30
  "suspicious": { "noExplicitAny": "off" },
23
31
  "style": { "noNonNullAssertion": "off" }
24
32
  }
@@ -1,4 +1,5 @@
1
1
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 80" fill="none">
2
+ <title>Rocket launch</title>
2
3
  <defs>
3
4
  <linearGradient id="bg" x1="0" y1="0" x2="80" y2="80" gradientUnits="userSpaceOnUse">
4
5
  <stop offset="0%" stop-color="#ecfdf5"/>
@@ -35,7 +35,7 @@
35
35
  "sonner": "^2.0.7"
36
36
  },
37
37
  "devDependencies": {
38
- "@biomejs/biome": "^2.4.10",
38
+ "@biomejs/biome": "2.5.6",
39
39
  "@tailwindcss/vite": "^4.2.2",
40
40
  "@tanstack/router-cli": "1.155.0",
41
41
  "@tanstack/router-plugin": "1.155.0",
@@ -40,8 +40,8 @@ importers:
40
40
  version: 3.6.0
41
41
  devDependencies:
42
42
  '@biomejs/biome':
43
- specifier: ^2.4.10
44
- version: 2.4.16
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.4.16':
196
- resolution: {integrity: sha512-x9ajFh1zChVybCiM3TN6OD4phAqLgtPZjFrZF+aTMYCPjwBO+k529TX7PPsAqtGNLeV4UgzwQnowEgS7bGmzcA==}
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.4.16':
201
- resolution: {integrity: sha512-wxPvu4XOA85YJk9ixSWUmq/QBHbid85BISbOAqqBM/5xQpPk9ayjk5375tOlSC0BeCwNSbPFafQBm+vBumXq0A==}
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.4.16':
207
- resolution: {integrity: sha512-xFCqGPwYusQJp4N4NJLi1XJiZqjwFdjhT+KqtNy+Ug3qgfczqnTa6MSDvxJF6TkuDLoYJItMapz6tAf7kCekFw==}
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.4.16':
213
- resolution: {integrity: sha512-oYxnW0ARfJkr72ezzF2OR8N/rtkgLUQeYtF8cFhVswbknHxtTcmzSsanVJP8yQKnGpGpc2ck6c5zLvHahL6Cbg==}
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.4.16':
220
- resolution: {integrity: sha512-2kFb4//jxfZaP6D+Rj5VkHkxgyD9EoRAVBEQb8PKRv+s4NO2zYNJKXFaJmK1CmhufJOWEfpHKaRbOja7qjmdhQ==}
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.4.16':
227
- resolution: {integrity: sha512-iHDS+MCM65DPqWGu+ECC3uoALyj2H7F4nVUPxIPjz/PIl94EUu+EDfGZDzFP+NY1EOPVt9NQvwFqq7HdMmowdg==}
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.4.16':
234
- resolution: {integrity: sha512-NbcBbi/nJqn5baae6wqRXdS7Gadf2uRpehSh6vMSYpG8OhkXl/Xg8aorWrJ+9VWqAT5ml90alLvorkpMW0nBwQ==}
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.4.16':
241
- resolution: {integrity: sha512-0rgImMsNb5v/chhkIFe3wu7PEFClS6RBAYUijGL9UsYN3PanSaoK24HSSuSJb1pYbYYVjzAyZTl3gtjJ84BM8A==}
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.4.16':
247
- resolution: {integrity: sha512-Kp85jgoBHa05gix6UIRjfCDiUV3w/8VIdZ247VyyO2gEjaw12WEVhdIjlxp/AMzXxqxQwbxNTDVZ3Mwd2RG5rw==}
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.4.16':
2137
+ '@biomejs/biome@2.5.6':
2138
2138
  optionalDependencies:
2139
- '@biomejs/cli-darwin-arm64': 2.4.16
2140
- '@biomejs/cli-darwin-x64': 2.4.16
2141
- '@biomejs/cli-linux-arm64': 2.4.16
2142
- '@biomejs/cli-linux-arm64-musl': 2.4.16
2143
- '@biomejs/cli-linux-x64': 2.4.16
2144
- '@biomejs/cli-linux-x64-musl': 2.4.16
2145
- '@biomejs/cli-win32-arm64': 2.4.16
2146
- '@biomejs/cli-win32-x64': 2.4.16
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.4.16':
2148
+ '@biomejs/cli-darwin-arm64@2.5.6':
2149
2149
  optional: true
2150
2150
 
2151
- '@biomejs/cli-darwin-x64@2.4.16':
2151
+ '@biomejs/cli-darwin-x64@2.5.6':
2152
2152
  optional: true
2153
2153
 
2154
- '@biomejs/cli-linux-arm64-musl@2.4.16':
2154
+ '@biomejs/cli-linux-arm64-musl@2.5.6':
2155
2155
  optional: true
2156
2156
 
2157
- '@biomejs/cli-linux-arm64@2.4.16':
2157
+ '@biomejs/cli-linux-arm64@2.5.6':
2158
2158
  optional: true
2159
2159
 
2160
- '@biomejs/cli-linux-x64-musl@2.4.16':
2160
+ '@biomejs/cli-linux-x64-musl@2.5.6':
2161
2161
  optional: true
2162
2162
 
2163
- '@biomejs/cli-linux-x64@2.4.16':
2163
+ '@biomejs/cli-linux-x64@2.5.6':
2164
2164
  optional: true
2165
2165
 
2166
- '@biomejs/cli-win32-arm64@2.4.16':
2166
+ '@biomejs/cli-win32-arm64@2.5.6':
2167
2167
  optional: true
2168
2168
 
2169
- '@biomejs/cli-win32-x64@2.4.16':
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;