@lumerahq/cli 0.31.0-dev.1 → 0.31.1
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/index.js
CHANGED
|
@@ -240,25 +240,25 @@ async function main() {
|
|
|
240
240
|
switch (command) {
|
|
241
241
|
// Resource commands
|
|
242
242
|
case "plan":
|
|
243
|
-
await import("./resources-
|
|
243
|
+
await import("./resources-FHL4IUQD.js").then((m) => m.plan(args.slice(1)));
|
|
244
244
|
break;
|
|
245
245
|
case "apply":
|
|
246
|
-
await import("./resources-
|
|
246
|
+
await import("./resources-FHL4IUQD.js").then((m) => m.apply(args.slice(1)));
|
|
247
247
|
break;
|
|
248
248
|
case "pull":
|
|
249
|
-
await import("./resources-
|
|
249
|
+
await import("./resources-FHL4IUQD.js").then((m) => m.pull(args.slice(1)));
|
|
250
250
|
break;
|
|
251
251
|
case "destroy":
|
|
252
|
-
await import("./resources-
|
|
252
|
+
await import("./resources-FHL4IUQD.js").then((m) => m.destroy(args.slice(1)));
|
|
253
253
|
break;
|
|
254
254
|
case "list":
|
|
255
|
-
await import("./resources-
|
|
255
|
+
await import("./resources-FHL4IUQD.js").then((m) => m.list(args.slice(1)));
|
|
256
256
|
break;
|
|
257
257
|
case "show":
|
|
258
|
-
await import("./resources-
|
|
258
|
+
await import("./resources-FHL4IUQD.js").then((m) => m.show(args.slice(1)));
|
|
259
259
|
break;
|
|
260
260
|
case "diff":
|
|
261
|
-
await import("./resources-
|
|
261
|
+
await import("./resources-FHL4IUQD.js").then((m) => m.diff(args.slice(1)));
|
|
262
262
|
break;
|
|
263
263
|
// Development
|
|
264
264
|
case "dev":
|
|
@@ -2661,6 +2661,9 @@ var SKILL_RESOURCE_CONTENT_TYPES = {
|
|
|
2661
2661
|
function skillResourceContentType(path) {
|
|
2662
2662
|
return SKILL_RESOURCE_CONTENT_TYPES[path.split(".").pop()?.toLowerCase() ?? ""] ?? "application/octet-stream";
|
|
2663
2663
|
}
|
|
2664
|
+
function foldSkillResourcePathPart(value) {
|
|
2665
|
+
return value.toUpperCase();
|
|
2666
|
+
}
|
|
2664
2667
|
function skillResourcePathError(value) {
|
|
2665
2668
|
if (!value || Buffer.byteLength(value) > SKILL_RESOURCE_MAX_PATH_BYTES) {
|
|
2666
2669
|
return `path must be at most ${SKILL_RESOURCE_MAX_PATH_BYTES} bytes`;
|
|
@@ -2675,7 +2678,7 @@ function skillResourcePathError(value) {
|
|
|
2675
2678
|
if (Buffer.byteLength(part) > SKILL_RESOURCE_MAX_PATH_PART_BYTES) {
|
|
2676
2679
|
return `path segments must be at most ${SKILL_RESOURCE_MAX_PATH_PART_BYTES} bytes`;
|
|
2677
2680
|
}
|
|
2678
|
-
if (part
|
|
2681
|
+
if (foldSkillResourcePathPart(part) === "SKILL.MD") return "SKILL.md is reserved";
|
|
2679
2682
|
}
|
|
2680
2683
|
return null;
|
|
2681
2684
|
}
|
|
@@ -2685,7 +2688,7 @@ function skillResourcePathsCollide(left, right) {
|
|
|
2685
2688
|
const limit = Math.min(leftParts.length, rightParts.length);
|
|
2686
2689
|
for (let i = 0; i < limit; i++) {
|
|
2687
2690
|
if (leftParts[i] === rightParts[i]) continue;
|
|
2688
|
-
return leftParts[i]
|
|
2691
|
+
return foldSkillResourcePathPart(leftParts[i] ?? "") === foldSkillResourcePathPart(rightParts[i] ?? "");
|
|
2689
2692
|
}
|
|
2690
2693
|
return true;
|
|
2691
2694
|
}
|
|
@@ -2844,6 +2847,13 @@ ${skill.summary}
|
|
|
2844
2847
|
${skill.instructions}
|
|
2845
2848
|
`;
|
|
2846
2849
|
}
|
|
2850
|
+
function skillMetadataChanges(local, remote) {
|
|
2851
|
+
const changes = [];
|
|
2852
|
+
if (local.name !== remote.name) changes.push("name");
|
|
2853
|
+
if (local.summary.trim() !== (remote.summary || "").trim()) changes.push("summary");
|
|
2854
|
+
if (local.instructions.trim() !== (remote.instructions || "").trim()) changes.push("instructions");
|
|
2855
|
+
return changes;
|
|
2856
|
+
}
|
|
2847
2857
|
function scopedProjectSkillSlug(appName, localSlug) {
|
|
2848
2858
|
return appName ? `${appName}:${localSlug}` : localSlug;
|
|
2849
2859
|
}
|
|
@@ -2945,10 +2955,7 @@ async function planSkills(api, localSkills, projectId, appName) {
|
|
|
2945
2955
|
});
|
|
2946
2956
|
continue;
|
|
2947
2957
|
}
|
|
2948
|
-
const changed =
|
|
2949
|
-
if (remote.name !== skill.name) changed.push("name");
|
|
2950
|
-
if ((remote.summary || "").trim() !== skill.summary.trim()) changed.push("summary");
|
|
2951
|
-
if ((remote.instructions || "").trim() !== skill.instructions.trim()) changed.push("instructions");
|
|
2958
|
+
const changed = skillMetadataChanges(skill, remote);
|
|
2952
2959
|
const resourceChanges = compareSkillResources(skill.resources, remote.resources ?? []);
|
|
2953
2960
|
if (!skillResourceChangesEmpty(resourceChanges)) {
|
|
2954
2961
|
changed.push(`resources (${skillResourceChangesSummary(resourceChanges)})`);
|
|
@@ -3066,6 +3073,15 @@ function validateRemoteSkillResources(resources) {
|
|
|
3066
3073
|
}
|
|
3067
3074
|
if (totalBytes > SKILL_RESOURCES_MAX_TOTAL_BYTES) throw new Error("remote skill resources exceed 100 MiB");
|
|
3068
3075
|
}
|
|
3076
|
+
function writeVerifiedSkillResource(resource, bytes, skillDir, source) {
|
|
3077
|
+
if (bytes.byteLength !== resource.size) throw new Error(`${resource.path}: ${source} size does not match`);
|
|
3078
|
+
if (createHash("sha256").update(bytes).digest("hex") !== resource.sha256) {
|
|
3079
|
+
throw new Error(`${resource.path}: ${source} checksum does not match`);
|
|
3080
|
+
}
|
|
3081
|
+
const destination = join2(skillDir, ...resource.path.split("/"));
|
|
3082
|
+
mkdirSync(dirname2(destination), { recursive: true });
|
|
3083
|
+
writeFileSync(destination, bytes);
|
|
3084
|
+
}
|
|
3069
3085
|
async function downloadSkillResource(resource, skillDir) {
|
|
3070
3086
|
if (!resource.url) throw new Error(`${resource.path}: download URL is unavailable`);
|
|
3071
3087
|
let response;
|
|
@@ -3075,14 +3091,7 @@ async function downloadSkillResource(resource, skillDir) {
|
|
|
3075
3091
|
throw new Error(`${resource.path}: download failed`);
|
|
3076
3092
|
}
|
|
3077
3093
|
if (!response.ok) throw new Error(`${resource.path}: download failed with HTTP ${response.status}`);
|
|
3078
|
-
|
|
3079
|
-
if (bytes.byteLength !== resource.size) throw new Error(`${resource.path}: downloaded size does not match`);
|
|
3080
|
-
if (createHash("sha256").update(bytes).digest("hex") !== resource.sha256) {
|
|
3081
|
-
throw new Error(`${resource.path}: downloaded checksum does not match`);
|
|
3082
|
-
}
|
|
3083
|
-
const destination = join2(skillDir, ...resource.path.split("/"));
|
|
3084
|
-
mkdirSync(dirname2(destination), { recursive: true });
|
|
3085
|
-
writeFileSync(destination, bytes);
|
|
3094
|
+
writeVerifiedSkillResource(resource, Buffer.from(await response.arrayBuffer()), skillDir, "downloaded");
|
|
3086
3095
|
}
|
|
3087
3096
|
function replaceSkillDirectory(stagingDir, skillDir) {
|
|
3088
3097
|
const backupDir = `${stagingDir}.previous`;
|
|
@@ -3096,7 +3105,7 @@ function replaceSkillDirectory(stagingDir, skillDir) {
|
|
|
3096
3105
|
}
|
|
3097
3106
|
if (hadExisting) rmSync(backupDir, { recursive: true, force: true });
|
|
3098
3107
|
}
|
|
3099
|
-
async function pullSkills(api, platformDir, filterName, projectId, appName) {
|
|
3108
|
+
async function pullSkills(api, platformDir, filterName, projectId, appName, checkedLocalSkills) {
|
|
3100
3109
|
if (!projectId) {
|
|
3101
3110
|
console.log(pc2.dim(" Skipped \u2014 project not registered (run `lumera register`)"));
|
|
3102
3111
|
return;
|
|
@@ -3108,12 +3117,26 @@ async function pullSkills(api, platformDir, filterName, projectId, appName) {
|
|
|
3108
3117
|
appName
|
|
3109
3118
|
);
|
|
3110
3119
|
const resolvedFilter = resolveProjectSkillLocalSlug(remoteSkills, filterName);
|
|
3120
|
+
const checkedLocalSkillsBySlug = new Map(checkedLocalSkills?.map((skill) => [skill.slug, skill]) ?? []);
|
|
3111
3121
|
for (const [localSlug, listedSkill] of remoteSkills) {
|
|
3112
3122
|
if (!SKILL_SLUG_RE.test(localSlug)) {
|
|
3113
3123
|
console.log(pc2.yellow(` \u26A0 Skipping ${listedSkill.name}: skill slug ${listedSkill.slug} cannot be represented in platform/skills`));
|
|
3114
3124
|
continue;
|
|
3115
3125
|
}
|
|
3116
3126
|
if (resolvedFilter && localSlug !== resolvedFilter) continue;
|
|
3127
|
+
const listedResources = [...listedSkill.resources ?? []].sort((a, b) => a.path.localeCompare(b.path));
|
|
3128
|
+
validateRemoteSkillResources(listedResources);
|
|
3129
|
+
let local = checkedLocalSkillsBySlug.get(localSlug);
|
|
3130
|
+
if (!checkedLocalSkills) {
|
|
3131
|
+
try {
|
|
3132
|
+
[local] = loadLocalSkills(platformDir, localSlug);
|
|
3133
|
+
} catch {
|
|
3134
|
+
}
|
|
3135
|
+
}
|
|
3136
|
+
if (local && skillMetadataChanges(local, listedSkill).length === 0 && skillResourceChangesEmpty(compareSkillResources(local.resources, listedResources))) {
|
|
3137
|
+
console.log(pc2.green(" \u2713"), `${listedSkill.name} (unchanged)`);
|
|
3138
|
+
continue;
|
|
3139
|
+
}
|
|
3117
3140
|
const skill = await api.getAgentSkill(listedSkill.id, { resource_urls: "attachment" });
|
|
3118
3141
|
if (!(skill.summary || "").trim() || !(skill.instructions || "").trim()) {
|
|
3119
3142
|
console.log(pc2.yellow(` \u26A0 Skipping ${skill.name}: source-managed skills require both summary and instructions`));
|
|
@@ -3121,6 +3144,7 @@ async function pullSkills(api, platformDir, filterName, projectId, appName) {
|
|
|
3121
3144
|
}
|
|
3122
3145
|
const resources = [...skill.resources ?? []].sort((a, b) => a.path.localeCompare(b.path));
|
|
3123
3146
|
validateRemoteSkillResources(resources);
|
|
3147
|
+
const localResources = new Map(local?.resources.map((resource) => [resource.path, resource]) ?? []);
|
|
3124
3148
|
const skillDir = join2(skillsDir, localSlug);
|
|
3125
3149
|
mkdirSync(skillsDir, { recursive: true });
|
|
3126
3150
|
const stagingDir = mkdtempSync(join2(platformDir, `.skill-${localSlug}-pull-`));
|
|
@@ -3130,7 +3154,14 @@ async function pullSkills(api, platformDir, filterName, projectId, appName) {
|
|
|
3130
3154
|
summary: skill.summary || "",
|
|
3131
3155
|
instructions: skill.instructions || ""
|
|
3132
3156
|
}));
|
|
3133
|
-
for (const resource of resources)
|
|
3157
|
+
for (const resource of resources) {
|
|
3158
|
+
const localResource = localResources.get(resource.path);
|
|
3159
|
+
if (localResource?.size === resource.size && localResource.sha256 === resource.sha256) {
|
|
3160
|
+
writeVerifiedSkillResource(resource, readFileSync2(localResource.filePath), stagingDir, "local");
|
|
3161
|
+
} else {
|
|
3162
|
+
await downloadSkillResource(resource, stagingDir);
|
|
3163
|
+
}
|
|
3164
|
+
}
|
|
3134
3165
|
replaceSkillDirectory(stagingDir, skillDir);
|
|
3135
3166
|
} finally {
|
|
3136
3167
|
rmSync(stagingDir, { recursive: true, force: true });
|
|
@@ -3565,7 +3596,7 @@ async function listResources(api, platformDir, filterType, appName, projectId) {
|
|
|
3565
3596
|
} else {
|
|
3566
3597
|
const resourceChanges = compareSkillResources(skill.resources, remote.resources ?? []);
|
|
3567
3598
|
const details = [
|
|
3568
|
-
|
|
3599
|
+
skillMetadataChanges(skill, remote).length > 0 ? "SKILL.md" : "",
|
|
3569
3600
|
skillResourceChangesEmpty(resourceChanges) ? "" : `resources (${skillResourceChangesSummary(resourceChanges)})`
|
|
3570
3601
|
].filter(Boolean).join(", ");
|
|
3571
3602
|
results.push(details ? { name: skill.name, type: "skills", status: "changed", details } : { name: skill.name, type: "skills", status: "synced" });
|
|
@@ -4077,7 +4108,7 @@ async function showResource(api, platformDir, resourceType, resourceName, appNam
|
|
|
4077
4108
|
console.log();
|
|
4078
4109
|
if (local && remote) {
|
|
4079
4110
|
const resourceChanges = compareSkillResources(local.resources, remote.resources ?? []);
|
|
4080
|
-
const changed = local
|
|
4111
|
+
const changed = skillMetadataChanges(local, remote).length > 0 || !skillResourceChangesEmpty(resourceChanges);
|
|
4081
4112
|
console.log(` Status: ${changed ? pc2.yellow("changed") : pc2.green("synced")}`);
|
|
4082
4113
|
if (!skillResourceChangesEmpty(resourceChanges)) {
|
|
4083
4114
|
console.log(` Resources: ${skillResourceChangesSummary(resourceChanges)}`);
|
|
@@ -4525,6 +4556,7 @@ async function pull(args) {
|
|
|
4525
4556
|
const api = createApiClient(void 0, void 0, appName);
|
|
4526
4557
|
const projectId = getProjectId(projectRoot);
|
|
4527
4558
|
const { type, name } = parseResource(filteredArgs[0]);
|
|
4559
|
+
let checkedLocalSkills;
|
|
4528
4560
|
if (!force) {
|
|
4529
4561
|
const conflicts = [];
|
|
4530
4562
|
let collections;
|
|
@@ -4539,16 +4571,16 @@ async function pull(args) {
|
|
|
4539
4571
|
await api.listAgentSkills({ project_id: projectId }),
|
|
4540
4572
|
appName
|
|
4541
4573
|
);
|
|
4542
|
-
|
|
4574
|
+
checkedLocalSkills = loadLocalSkills(
|
|
4543
4575
|
platformDir,
|
|
4544
4576
|
resolveProjectSkillLocalSlug(remoteBySlug, name || void 0)
|
|
4545
4577
|
);
|
|
4546
|
-
if (
|
|
4547
|
-
for (const skill of
|
|
4578
|
+
if (checkedLocalSkills.length > 0) {
|
|
4579
|
+
for (const skill of checkedLocalSkills) {
|
|
4548
4580
|
const remote = remoteBySlug.get(skill.slug);
|
|
4549
4581
|
if (!remote) continue;
|
|
4550
4582
|
const resourceChanges = compareSkillResources(skill.resources, remote.resources ?? []);
|
|
4551
|
-
if (
|
|
4583
|
+
if (skillMetadataChanges(skill, remote).length > 0 || resourceChanges.added.length > 0 || resourceChanges.replaced.length > 0) {
|
|
4552
4584
|
conflicts.push(`skills/${skill.slug}`);
|
|
4553
4585
|
}
|
|
4554
4586
|
}
|
|
@@ -4628,7 +4660,7 @@ async function pull(args) {
|
|
|
4628
4660
|
}
|
|
4629
4661
|
if (!type || type === "skills") {
|
|
4630
4662
|
console.log(pc2.bold(" Skills:"));
|
|
4631
|
-
await pullSkills(api, platformDir, name || void 0, projectId, appName);
|
|
4663
|
+
await pullSkills(api, platformDir, name || void 0, projectId, appName, checkedLocalSkills);
|
|
4632
4664
|
console.log();
|
|
4633
4665
|
}
|
|
4634
4666
|
if (!type || type === "agents") {
|
package/package.json
CHANGED
|
@@ -19,8 +19,8 @@ importers:
|
|
|
19
19
|
.:
|
|
20
20
|
dependencies:
|
|
21
21
|
'@lumerahq/ui':
|
|
22
|
-
specifier: ^0.19.
|
|
23
|
-
version: 0.19.
|
|
22
|
+
specifier: ^0.19.6
|
|
23
|
+
version: 0.19.6(@types/react@19.2.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
|
24
24
|
'@tanstack/react-query':
|
|
25
25
|
specifier: ^5.90.11
|
|
26
26
|
version: 5.101.0(react@19.2.7)
|
|
@@ -221,24 +221,28 @@ packages:
|
|
|
221
221
|
engines: {node: '>=14.21.3'}
|
|
222
222
|
cpu: [arm64]
|
|
223
223
|
os: [linux]
|
|
224
|
+
libc: [musl]
|
|
224
225
|
|
|
225
226
|
'@biomejs/cli-linux-arm64@2.5.6':
|
|
226
227
|
resolution: {integrity: sha512-6XsYwCFkp5sMxl85ffhgeGpGgs6A7dRYFnkceZ7WVxvycuTnGdD5xa534Z3xfrBQ0JCMK/mujT6ZNPJoghedwg==}
|
|
227
228
|
engines: {node: '>=14.21.3'}
|
|
228
229
|
cpu: [arm64]
|
|
229
230
|
os: [linux]
|
|
231
|
+
libc: [glibc]
|
|
230
232
|
|
|
231
233
|
'@biomejs/cli-linux-x64-musl@2.5.6':
|
|
232
234
|
resolution: {integrity: sha512-2Vp13QdKysH3HIWLaYLhUUwbK+jbZonJD1K+Lr0d0RO4wH7mkYd43vJixEDm8cUWrowoRz4UUHF1nm9Ae7ym8A==}
|
|
233
235
|
engines: {node: '>=14.21.3'}
|
|
234
236
|
cpu: [x64]
|
|
235
237
|
os: [linux]
|
|
238
|
+
libc: [musl]
|
|
236
239
|
|
|
237
240
|
'@biomejs/cli-linux-x64@2.5.6':
|
|
238
241
|
resolution: {integrity: sha512-Pop9VXCFUhFTMfFefZ39S+u2rOPyNp5iHlxbZRwXGACHLy2r0jjiRgJHmaEKJzL3SyxlVeGShXhvvElvWowonA==}
|
|
239
242
|
engines: {node: '>=14.21.3'}
|
|
240
243
|
cpu: [x64]
|
|
241
244
|
os: [linux]
|
|
245
|
+
libc: [glibc]
|
|
242
246
|
|
|
243
247
|
'@biomejs/cli-win32-arm64@2.5.6':
|
|
244
248
|
resolution: {integrity: sha512-tDGshcm6BdkZOCGnTDX0Y8/U4IfBSlnUU7T56nNDuPEfed+aHg+u8G36NB43fJVl0Os6+QURXIE1yuD7AaEofA==}
|
|
@@ -460,8 +464,8 @@ packages:
|
|
|
460
464
|
'@jridgewell/trace-mapping@0.3.31':
|
|
461
465
|
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
|
|
462
466
|
|
|
463
|
-
'@lumerahq/ui@0.19.
|
|
464
|
-
resolution: {integrity: sha512-
|
|
467
|
+
'@lumerahq/ui@0.19.6':
|
|
468
|
+
resolution: {integrity: sha512-ojnHO9T7lt/dvkAQ+ZDuDIrZp/1pDtTvsxePJVc3e9qWI7voUuJlE6QoUYH9FBMkjK5KO34+wNyfktSYGgTRng==}
|
|
465
469
|
peerDependencies:
|
|
466
470
|
react: ^18.0.0 || ^19.0.0
|
|
467
471
|
react-dom: ^18.0.0 || ^19.0.0
|
|
@@ -513,36 +517,42 @@ packages:
|
|
|
513
517
|
engines: {node: ^20.19.0 || >=22.12.0}
|
|
514
518
|
cpu: [arm64]
|
|
515
519
|
os: [linux]
|
|
520
|
+
libc: [glibc]
|
|
516
521
|
|
|
517
522
|
'@rolldown/binding-linux-arm64-musl@1.0.3':
|
|
518
523
|
resolution: {integrity: sha512-VWkUHwWriDciit80wleYwKILoR/KMvxh/IdwS/paX+ZgpuRpCrKLUdadJbc0NpBEiyhpYawsJ73j9aCvOH+f7Q==}
|
|
519
524
|
engines: {node: ^20.19.0 || >=22.12.0}
|
|
520
525
|
cpu: [arm64]
|
|
521
526
|
os: [linux]
|
|
527
|
+
libc: [musl]
|
|
522
528
|
|
|
523
529
|
'@rolldown/binding-linux-ppc64-gnu@1.0.3':
|
|
524
530
|
resolution: {integrity: sha512-5f1laC0SlIR0yDbFCd8acUhvJIag6N3zC5P7oUPN6wX0aOma+uKJ0wBDH5aq7I1PVI2ttTlhJwzwRIBnLiSGEg==}
|
|
525
531
|
engines: {node: ^20.19.0 || >=22.12.0}
|
|
526
532
|
cpu: [ppc64]
|
|
527
533
|
os: [linux]
|
|
534
|
+
libc: [glibc]
|
|
528
535
|
|
|
529
536
|
'@rolldown/binding-linux-s390x-gnu@1.0.3':
|
|
530
537
|
resolution: {integrity: sha512-Iq4ko0r4XsgbrF/LunNgHtAGLRRVE2kXonAXQ/MV0mC6jQpMOhW1SvtZja2EhC/kd05++bP78dsqBeIQyYJ6Yg==}
|
|
531
538
|
engines: {node: ^20.19.0 || >=22.12.0}
|
|
532
539
|
cpu: [s390x]
|
|
533
540
|
os: [linux]
|
|
541
|
+
libc: [glibc]
|
|
534
542
|
|
|
535
543
|
'@rolldown/binding-linux-x64-gnu@1.0.3':
|
|
536
544
|
resolution: {integrity: sha512-B8m6tD5+/N5FeNQFbKlLA/2yVq9ycQP1SeedyEYYKWBNR3ZQbkvIUcNnDNM03lO1l5F2roiiFJGgvoLLyZXtSg==}
|
|
537
545
|
engines: {node: ^20.19.0 || >=22.12.0}
|
|
538
546
|
cpu: [x64]
|
|
539
547
|
os: [linux]
|
|
548
|
+
libc: [glibc]
|
|
540
549
|
|
|
541
550
|
'@rolldown/binding-linux-x64-musl@1.0.3':
|
|
542
551
|
resolution: {integrity: sha512-pSdpdUJHkuCxun9LE7jvgUB9qsRgaiyNNCX7m/AvHTcq67AiT/Yhoxvw5zPfhrM8k/BfP8ce/hMOpthKDpEUow==}
|
|
543
552
|
engines: {node: ^20.19.0 || >=22.12.0}
|
|
544
553
|
cpu: [x64]
|
|
545
554
|
os: [linux]
|
|
555
|
+
libc: [musl]
|
|
546
556
|
|
|
547
557
|
'@rolldown/binding-openharmony-arm64@1.0.3':
|
|
548
558
|
resolution: {integrity: sha512-OXXS3RKJgX2uLwM+gYyuH5omcH8fL1LJs96pZGgtetVCahON57+d4SJHzTgZiOjxgGkSnpXpOsWuPDGAKAigEg==}
|
|
@@ -608,24 +618,28 @@ packages:
|
|
|
608
618
|
engines: {node: '>= 20'}
|
|
609
619
|
cpu: [arm64]
|
|
610
620
|
os: [linux]
|
|
621
|
+
libc: [glibc]
|
|
611
622
|
|
|
612
623
|
'@tailwindcss/oxide-linux-arm64-musl@4.3.0':
|
|
613
624
|
resolution: {integrity: sha512-Z6sukiQsngnWO+l39X4pPbiWT81IC+PLKF+PHxIlyZbGNb9MODfYlXEVlFvej5BOZInWX01kVyzeLvHsXhfczQ==}
|
|
614
625
|
engines: {node: '>= 20'}
|
|
615
626
|
cpu: [arm64]
|
|
616
627
|
os: [linux]
|
|
628
|
+
libc: [musl]
|
|
617
629
|
|
|
618
630
|
'@tailwindcss/oxide-linux-x64-gnu@4.3.0':
|
|
619
631
|
resolution: {integrity: sha512-DRNdQRpSGzRGfARVuVkxvM8Q12nh19l4BF/G7zGA1oe+9wcC6saFBHTISrpIcKzhiXtSrlSrluCfvMuledoCTQ==}
|
|
620
632
|
engines: {node: '>= 20'}
|
|
621
633
|
cpu: [x64]
|
|
622
634
|
os: [linux]
|
|
635
|
+
libc: [glibc]
|
|
623
636
|
|
|
624
637
|
'@tailwindcss/oxide-linux-x64-musl@4.3.0':
|
|
625
638
|
resolution: {integrity: sha512-Z0IADbDo8bh6I7h2IQMx601AdXBLfFpEdUotft86evd/8ZPflZe9COPO8Q1vw+pfLWIUo9zN/JGZvwuAJqduqg==}
|
|
626
639
|
engines: {node: '>= 20'}
|
|
627
640
|
cpu: [x64]
|
|
628
641
|
os: [linux]
|
|
642
|
+
libc: [musl]
|
|
629
643
|
|
|
630
644
|
'@tailwindcss/oxide-wasm32-wasi@4.3.0':
|
|
631
645
|
resolution: {integrity: sha512-HNZGOUxEmElksYR7S6sC5jTeNGpobAsy9u7Gu0AskJ8/20FR9GqebUyB+HBcU/ax6BHuiuJi+Oda4B+YX6H1yA==}
|
|
@@ -1419,24 +1433,28 @@ packages:
|
|
|
1419
1433
|
engines: {node: '>= 12.0.0'}
|
|
1420
1434
|
cpu: [arm64]
|
|
1421
1435
|
os: [linux]
|
|
1436
|
+
libc: [glibc]
|
|
1422
1437
|
|
|
1423
1438
|
lightningcss-linux-arm64-musl@1.32.0:
|
|
1424
1439
|
resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==}
|
|
1425
1440
|
engines: {node: '>= 12.0.0'}
|
|
1426
1441
|
cpu: [arm64]
|
|
1427
1442
|
os: [linux]
|
|
1443
|
+
libc: [musl]
|
|
1428
1444
|
|
|
1429
1445
|
lightningcss-linux-x64-gnu@1.32.0:
|
|
1430
1446
|
resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==}
|
|
1431
1447
|
engines: {node: '>= 12.0.0'}
|
|
1432
1448
|
cpu: [x64]
|
|
1433
1449
|
os: [linux]
|
|
1450
|
+
libc: [glibc]
|
|
1434
1451
|
|
|
1435
1452
|
lightningcss-linux-x64-musl@1.32.0:
|
|
1436
1453
|
resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==}
|
|
1437
1454
|
engines: {node: '>= 12.0.0'}
|
|
1438
1455
|
cpu: [x64]
|
|
1439
1456
|
os: [linux]
|
|
1457
|
+
libc: [musl]
|
|
1440
1458
|
|
|
1441
1459
|
lightningcss-win32-arm64-msvc@1.32.0:
|
|
1442
1460
|
resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==}
|
|
@@ -2300,7 +2318,7 @@ snapshots:
|
|
|
2300
2318
|
'@jridgewell/resolve-uri': 3.1.2
|
|
2301
2319
|
'@jridgewell/sourcemap-codec': 1.5.5
|
|
2302
2320
|
|
|
2303
|
-
'@lumerahq/ui@0.19.
|
|
2321
|
+
'@lumerahq/ui@0.19.6(@types/react@19.2.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)':
|
|
2304
2322
|
dependencies:
|
|
2305
2323
|
'@base-ui/react': 1.5.0(@types/react@19.2.16)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
|
|
2306
2324
|
'@tanstack/react-query': 5.101.0(react@19.2.7)
|