@hasna/skills 0.10.38 → 0.10.39

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/bin/index.js CHANGED
@@ -36868,7 +36868,7 @@ var package_default;
36868
36868
  var init_package = __esm(() => {
36869
36869
  package_default = {
36870
36870
  name: "@hasna/skills",
36871
- version: "0.10.38",
36871
+ version: "0.10.39",
36872
36872
  description: "Skills library for AI coding agents",
36873
36873
  type: "module",
36874
36874
  bin: {
@@ -110293,6 +110293,8 @@ async function preflightTarball(bytes, limits = {}) {
110293
110293
  const pathParts2 = rawPath.split("/");
110294
110294
  if (rawPath !== "package" && !rawPath.startsWith("package/") || rawPath.startsWith("/") || rawPath.includes("\\") || pathParts2.some((part) => !part || part === "." || part === ".."))
110295
110295
  throw new Error("TARBALL_PATH_INVALID");
110296
+ if (pathParts2[1] === "node_modules")
110297
+ throw new Error("TARBALL_BUNDLED_DEPENDENCIES_UNSUPPORTED");
110296
110298
  if (paths.has(rawPath))
110297
110299
  throw new Error("TARBALL_DUPLICATE_PATH");
110298
110300
  paths.add(rawPath);
@@ -110394,7 +110396,7 @@ async function readBodyCapped(response, limit, errorCode) {
110394
110396
  }
110395
110397
  return bytes;
110396
110398
  }
110397
- function readTree(root2, includeModes) {
110399
+ function readTree(root2, includeModes, excludeNpmDependencies = false) {
110398
110400
  const base3 = realpathSync16(root2);
110399
110401
  const entries = [];
110400
110402
  const walk2 = (dir, prefix = "") => {
@@ -110402,6 +110404,11 @@ function readTree(root2, includeModes) {
110402
110404
  const path = join58(dir, item);
110403
110405
  const rel = prefix ? `${prefix}/${item}` : item;
110404
110406
  const stat3 = lstatSync30(path);
110407
+ if (excludeNpmDependencies && !prefix && item === "node_modules") {
110408
+ if (!stat3.isDirectory() || stat3.isSymbolicLink())
110409
+ throw new Error("INSTALLED_DEPENDENCY_DIRECTORY_UNSAFE");
110410
+ continue;
110411
+ }
110405
110412
  if (stat3.isSymbolicLink()) {
110406
110413
  const link2 = readlinkSync5(path);
110407
110414
  const resolved = resolve25(dirname31(path), link2);
@@ -110610,8 +110617,10 @@ ${policy.minReleaseAgeExclude.map((pattern) => `min-release-age-exclude[]=${patt
110610
110617
  return npmVersion;
110611
110618
  }
110612
110619
  function comparePackageTrees(expectedRoot, installedRoot) {
110620
+ if (entryExists(join58(expectedRoot, "node_modules")))
110621
+ throw new Error("TARBALL_BUNDLED_DEPENDENCIES_UNSUPPORTED");
110613
110622
  const expected = readTree(expectedRoot, false);
110614
- const installed = readTree(installedRoot, false);
110623
+ const installed = readTree(installedRoot, false, true);
110615
110624
  if (JSON.stringify(expected.entries) !== JSON.stringify(installed.entries))
110616
110625
  throw new Error("INSTALLED_PACKAGE_BYTES_MISMATCH");
110617
110626
  return expected.digest;
package/bin/mcp.js CHANGED
@@ -20019,7 +20019,7 @@ var package_default;
20019
20019
  var init_package = __esm(() => {
20020
20020
  package_default = {
20021
20021
  name: "@hasna/skills",
20022
- version: "0.10.38",
20022
+ version: "0.10.39",
20023
20023
  description: "Skills library for AI coding agents",
20024
20024
  type: "module",
20025
20025
  bin: {
package/bin/migrate.js CHANGED
@@ -7,7 +7,7 @@ import { join as join5 } from "path";
7
7
  // package.json
8
8
  var package_default = {
9
9
  name: "@hasna/skills",
10
- version: "0.10.38",
10
+ version: "0.10.39",
11
11
  description: "Skills library for AI coding agents",
12
12
  type: "module",
13
13
  bin: {
package/bin/server.js CHANGED
@@ -24122,7 +24122,7 @@ var init_dist_es9 = __esm(() => {
24122
24122
  // package.json
24123
24123
  var package_default = {
24124
24124
  name: "@hasna/skills",
24125
- version: "0.10.38",
24125
+ version: "0.10.39",
24126
24126
  description: "Skills library for AI coding agents",
24127
24127
  type: "module",
24128
24128
  bin: {
package/bin/worker.js CHANGED
@@ -24125,7 +24125,7 @@ import { randomUUID as randomUUID6 } from "crypto";
24125
24125
  // package.json
24126
24126
  var package_default = {
24127
24127
  name: "@hasna/skills",
24128
- version: "0.10.38",
24128
+ version: "0.10.39",
24129
24129
  description: "Skills library for AI coding agents",
24130
24130
  type: "module",
24131
24131
  bin: {
package/dist/index.js CHANGED
@@ -11040,7 +11040,7 @@ function replaceSkillSession(expected, replacement, plan, options = {}, beforeCo
11040
11040
  // package.json
11041
11041
  var package_default = {
11042
11042
  name: "@hasna/skills",
11043
- version: "0.10.38",
11043
+ version: "0.10.39",
11044
11044
  description: "Skills library for AI coding agents",
11045
11045
  type: "module",
11046
11046
  bin: {
package/dist/sdk/index.js CHANGED
@@ -32373,7 +32373,7 @@ var init_event_sink = __esm(() => {
32373
32373
  // package.json
32374
32374
  var package_default = {
32375
32375
  name: "@hasna/skills",
32376
- version: "0.10.38",
32376
+ version: "0.10.39",
32377
32377
  description: "Skills library for AI coding agents",
32378
32378
  type: "module",
32379
32379
  bin: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hasna/skills",
3
- "version": "0.10.38",
3
+ "version": "0.10.39",
4
4
  "description": "Skills library for AI coding agents",
5
5
  "type": "module",
6
6
  "bin": {