@zeroxyz/cli 0.0.28 → 0.0.29

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.
Files changed (2) hide show
  1. package/dist/index.js +53 -17
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ import { Command as Command12 } from "commander";
6
6
  // package.json
7
7
  var package_default = {
8
8
  name: "@zeroxyz/cli",
9
- version: "0.0.28",
9
+ version: "0.0.29",
10
10
  type: "module",
11
11
  bin: {
12
12
  zero: "dist/index.js",
@@ -1616,6 +1616,7 @@ import {
1616
1616
  readdirSync,
1617
1617
  readFileSync as readFileSync3,
1618
1618
  rmSync,
1619
+ statSync,
1619
1620
  writeFileSync as writeFileSync2
1620
1621
  } from "fs";
1621
1622
  import { homedir as homedir2 } from "os";
@@ -1664,6 +1665,24 @@ var collectAllFiles = (dir) => {
1664
1665
  }
1665
1666
  return files;
1666
1667
  };
1668
+ var copyDirRecursive = (src, dest) => {
1669
+ mkdirSync2(dest, { recursive: true });
1670
+ for (const entry of readdirSync(src, { withFileTypes: true })) {
1671
+ const srcPath = join2(src, entry.name);
1672
+ const destPath = join2(dest, entry.name);
1673
+ if (entry.isDirectory()) {
1674
+ copyDirRecursive(srcPath, destPath);
1675
+ } else {
1676
+ const data = readFileSync3(srcPath);
1677
+ writeFileSync2(destPath, data);
1678
+ try {
1679
+ const mode = statSync(srcPath).mode;
1680
+ chmodSync(destPath, mode);
1681
+ } catch {
1682
+ }
1683
+ }
1684
+ }
1685
+ };
1667
1686
  var installHook = (home) => {
1668
1687
  const claudeDir = join2(home, ".claude");
1669
1688
  if (!existsSync2(claudeDir)) {
@@ -1800,30 +1819,38 @@ var installSkills = (home) => {
1800
1819
  const skillsSourceDir = join2(getPackageRoot(), "skills");
1801
1820
  const skillDirs = readdirSync(skillsSourceDir, { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => d.name);
1802
1821
  const installed = [];
1822
+ const errors = [];
1803
1823
  for (const tool of AGENT_TOOLS) {
1804
1824
  const toolDetectPath = join2(home, tool.detectDir);
1805
1825
  if (!existsSync2(toolDetectPath)) {
1806
1826
  continue;
1807
1827
  }
1808
- const toolSkillsPath = join2(home, tool.skillsDir);
1809
- mkdirSync2(toolSkillsPath, { recursive: true });
1810
- for (const skillDir of skillDirs) {
1811
- const src = join2(skillsSourceDir, skillDir);
1812
- const dest = join2(toolSkillsPath, skillDir);
1813
- cpSync(src, dest, { recursive: true });
1814
- for (const srcFile of collectAllFiles(src)) {
1815
- const relPath = relative(src, srcFile);
1816
- const destFile = join2(dest, relPath);
1817
- if (!verifyFileCopy(srcFile, destFile)) {
1818
- throw new Error(
1819
- `Integrity check failed: ${destFile} does not match source`
1820
- );
1828
+ try {
1829
+ const toolSkillsPath = join2(home, tool.skillsDir);
1830
+ mkdirSync2(toolSkillsPath, { recursive: true });
1831
+ for (const skillDir of skillDirs) {
1832
+ const src = join2(skillsSourceDir, skillDir);
1833
+ const dest = join2(toolSkillsPath, skillDir);
1834
+ copyDirRecursive(src, dest);
1835
+ for (const srcFile of collectAllFiles(src)) {
1836
+ const relPath = relative(src, srcFile);
1837
+ const destFile = join2(dest, relPath);
1838
+ if (!verifyFileCopy(srcFile, destFile)) {
1839
+ throw new Error(
1840
+ `Integrity check failed: ${destFile} does not match source`
1841
+ );
1842
+ }
1821
1843
  }
1844
+ installed.push(`${tool.name}: ${dest}`);
1822
1845
  }
1823
- installed.push(`${tool.name}: ${dest}`);
1846
+ } catch (err) {
1847
+ errors.push({
1848
+ tool: tool.name,
1849
+ message: err instanceof Error ? err.message : String(err)
1850
+ });
1824
1851
  }
1825
1852
  }
1826
- return installed;
1853
+ return { installed, errors };
1827
1854
  };
1828
1855
  var runInit = async (appContext, options = {}) => {
1829
1856
  appContext.services.analyticsService.capture("init_started", {
@@ -1881,15 +1908,24 @@ var runInit = async (appContext, options = {}) => {
1881
1908
  }
1882
1909
  currentStep = "skills";
1883
1910
  try {
1884
- const installed = installSkills(home);
1911
+ const { installed, errors } = installSkills(home);
1885
1912
  for (const entry of installed) {
1886
1913
  const toolName = entry.split(":")[0];
1887
1914
  if (toolName && !agentsWithSkills.includes(toolName)) {
1888
1915
  agentsWithSkills.push(toolName);
1889
1916
  }
1890
1917
  }
1918
+ if (errors.length > 0) {
1919
+ skillsError = errors.map((e) => `${e.tool}: ${e.message}`).join("; ");
1920
+ for (const e of errors) {
1921
+ console.error(
1922
+ `Warning: failed to install skills for ${e.tool}: ${e.message}`
1923
+ );
1924
+ }
1925
+ }
1891
1926
  } catch (err) {
1892
1927
  skillsError = err instanceof Error ? err.message : "unknown skills error";
1928
+ console.error(`Warning: skills install failed: ${skillsError}`);
1893
1929
  }
1894
1930
  currentStep = "hook";
1895
1931
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeroxyz/cli",
3
- "version": "0.0.28",
3
+ "version": "0.0.29",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "zero": "dist/index.js",