@rpamis/comet 0.3.6 → 0.3.8

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 (95) hide show
  1. package/README.md +575 -443
  2. package/assets/manifest.json +41 -24
  3. package/assets/skills/comet/SKILL.md +282 -301
  4. package/assets/skills/comet/reference/auto-transition.md +27 -0
  5. package/assets/skills/comet/reference/comet-yaml-fields.md +68 -0
  6. package/assets/skills/comet/reference/context-recovery.md +35 -0
  7. package/assets/skills/comet/reference/debug-gate.md +17 -0
  8. package/assets/skills/comet/reference/decision-point.md +20 -0
  9. package/assets/skills/comet/reference/dirty-worktree.md +1 -0
  10. package/assets/skills/comet/reference/file-structure.md +28 -0
  11. package/assets/skills/comet/reference/subagent-dispatch.md +113 -0
  12. package/assets/skills/comet/rules/comet-phase-guard.en.md +99 -0
  13. package/assets/skills/comet/rules/comet-phase-guard.md +99 -0
  14. package/assets/skills/comet/scripts/comet-archive.sh +71 -55
  15. package/assets/skills/comet/scripts/comet-guard.sh +174 -18
  16. package/assets/skills/comet/scripts/comet-handoff.sh +133 -6
  17. package/assets/skills/comet/scripts/comet-hook-guard.sh +260 -0
  18. package/assets/skills/comet/scripts/comet-state.sh +362 -25
  19. package/assets/skills/comet/scripts/comet-yaml-validate.sh +24 -1
  20. package/assets/skills/comet-archive/SKILL.md +100 -73
  21. package/assets/skills/comet-build/SKILL.md +304 -221
  22. package/assets/skills/comet-design/SKILL.md +263 -166
  23. package/assets/skills/comet-hotfix/SKILL.md +204 -169
  24. package/assets/skills/comet-open/SKILL.md +203 -113
  25. package/assets/skills/comet-tweak/SKILL.md +180 -154
  26. package/assets/skills/comet-verify/SKILL.md +234 -201
  27. package/assets/skills-zh/comet/SKILL.md +269 -301
  28. package/assets/skills-zh/comet/reference/auto-transition.md +27 -0
  29. package/assets/skills-zh/comet/reference/comet-yaml-fields.md +68 -0
  30. package/assets/skills-zh/comet/reference/context-recovery.md +35 -0
  31. package/assets/skills-zh/comet/reference/debug-gate.md +17 -0
  32. package/assets/skills-zh/comet/reference/decision-point.md +20 -0
  33. package/assets/skills-zh/comet/reference/dirty-worktree.md +2 -1
  34. package/assets/skills-zh/comet/reference/file-structure.md +28 -0
  35. package/assets/skills-zh/comet/reference/subagent-dispatch.md +113 -0
  36. package/assets/skills-zh/comet-archive/SKILL.md +100 -73
  37. package/assets/skills-zh/comet-build/SKILL.md +304 -221
  38. package/assets/skills-zh/comet-design/SKILL.md +264 -166
  39. package/assets/skills-zh/comet-hotfix/SKILL.md +200 -169
  40. package/assets/skills-zh/comet-open/SKILL.md +203 -113
  41. package/assets/skills-zh/comet-tweak/SKILL.md +176 -154
  42. package/assets/skills-zh/comet-verify/SKILL.md +232 -201
  43. package/dist/cli/index.js +19 -0
  44. package/dist/cli/index.js.map +1 -1
  45. package/dist/commands/doctor.d.ts.map +1 -1
  46. package/dist/commands/doctor.js +22 -0
  47. package/dist/commands/doctor.js.map +1 -1
  48. package/dist/commands/init.d.ts +5 -1
  49. package/dist/commands/init.d.ts.map +1 -1
  50. package/dist/commands/init.js +64 -9
  51. package/dist/commands/init.js.map +1 -1
  52. package/dist/commands/uninstall.d.ts +9 -0
  53. package/dist/commands/uninstall.d.ts.map +1 -0
  54. package/dist/commands/uninstall.js +113 -0
  55. package/dist/commands/uninstall.js.map +1 -0
  56. package/dist/commands/update.d.ts +1 -1
  57. package/dist/commands/update.d.ts.map +1 -1
  58. package/dist/commands/update.js +120 -32
  59. package/dist/commands/update.js.map +1 -1
  60. package/dist/core/codegraph.d.ts +4 -0
  61. package/dist/core/codegraph.d.ts.map +1 -0
  62. package/dist/core/codegraph.js +63 -0
  63. package/dist/core/codegraph.js.map +1 -0
  64. package/dist/core/detect.d.ts +8 -1
  65. package/dist/core/detect.d.ts.map +1 -1
  66. package/dist/core/detect.js +41 -2
  67. package/dist/core/detect.js.map +1 -1
  68. package/dist/core/openspec.d.ts +1 -1
  69. package/dist/core/openspec.d.ts.map +1 -1
  70. package/dist/core/openspec.js +40 -17
  71. package/dist/core/openspec.js.map +1 -1
  72. package/dist/core/platforms.d.ts +10 -0
  73. package/dist/core/platforms.d.ts.map +1 -1
  74. package/dist/core/platforms.js +177 -16
  75. package/dist/core/platforms.js.map +1 -1
  76. package/dist/core/skills.d.ts +36 -1
  77. package/dist/core/skills.d.ts.map +1 -1
  78. package/dist/core/skills.js +451 -15
  79. package/dist/core/skills.js.map +1 -1
  80. package/dist/core/superpowers.d.ts.map +1 -1
  81. package/dist/core/superpowers.js +1 -0
  82. package/dist/core/superpowers.js.map +1 -1
  83. package/dist/core/uninstall.d.ts +28 -0
  84. package/dist/core/uninstall.d.ts.map +1 -0
  85. package/dist/core/uninstall.js +421 -0
  86. package/dist/core/uninstall.js.map +1 -0
  87. package/dist/core/version.d.ts +31 -0
  88. package/dist/core/version.d.ts.map +1 -0
  89. package/dist/core/version.js +111 -0
  90. package/dist/core/version.js.map +1 -0
  91. package/dist/utils/file-system.d.ts +23 -0
  92. package/dist/utils/file-system.d.ts.map +1 -1
  93. package/dist/utils/file-system.js +100 -5
  94. package/dist/utils/file-system.js.map +1 -1
  95. package/package.json +69 -62
@@ -1,9 +1,13 @@
1
1
  /**
2
2
  * Ensure a directory exists, creating it recursively if needed.
3
+ * Resolves symlinks so that broken symlink targets are created correctly.
3
4
  */
4
5
  export declare function ensureDir(dir: string): Promise<void>;
5
6
  /**
6
7
  * Copy a file from src to dest, creating parent directories if needed.
8
+ * Resolves symlinks in the destination path so files are written to the
9
+ * actual target location when dest contains symlinks (e.g., skill dirs
10
+ * symlinked from ~/.claude/skills/ to ~/.agents/skills/).
7
11
  */
8
12
  export declare function copyFile(src: string, dest: string): Promise<void>;
9
13
  /**
@@ -16,10 +20,29 @@ export declare function fileExists(filePath: string): Promise<boolean>;
16
20
  export declare function readJson<T = unknown>(filePath: string): Promise<T>;
17
21
  /**
18
22
  * Write content to a file, creating parent directories if needed.
23
+ * Resolves symlinks so files are written to the actual target location.
19
24
  */
20
25
  export declare function writeFile(filePath: string, content: string): Promise<void>;
21
26
  /**
22
27
  * List entries in a directory. Returns empty array if directory doesn't exist.
23
28
  */
24
29
  export declare function readDir(dirPath: string): Promise<string[]>;
30
+ /**
31
+ * Remove a file. Returns true if the file existed and was removed.
32
+ * Operates on the path directly so a symlink entry is removed rather than its
33
+ * resolved target (avoids deleting files the symlink merely points at).
34
+ */
35
+ export declare function removeFile(filePath: string): Promise<boolean>;
36
+ /**
37
+ * Remove a directory recursively. Returns true if the directory existed and was removed.
38
+ * Symlinked directories are unlinked directly rather than recursed into, so the
39
+ * directory a symlink points at is never deleted.
40
+ */
41
+ export declare function removeDir(dirPath: string): Promise<boolean>;
42
+ /**
43
+ * Check if a directory is empty. A missing directory is treated as empty;
44
+ * unreadable directories (permissions/IO) return false so callers never delete
45
+ * a directory they could not inspect.
46
+ */
47
+ export declare function isDirEmpty(dirPath: string): Promise<boolean>;
25
48
  //# sourceMappingURL=file-system.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-system.d.ts","sourceRoot":"","sources":["../../src/utils/file-system.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1D;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnE;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAGxE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGhF;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAWhE"}
1
+ {"version":3,"file":"file-system.d.ts","sourceRoot":"","sources":["../../src/utils/file-system.ts"],"names":[],"mappings":"AAiCA;;;GAGG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG1D;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIvE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnE;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAGxE;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIhF;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAWhE;AAYD;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQnE;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAajE;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOlE"}
@@ -1,17 +1,52 @@
1
1
  import { promises as fs } from 'fs';
2
2
  import path from 'path';
3
+ /**
4
+ * Resolve symlinks in a path, handling broken symlinks by following their
5
+ * readlink target. Falls back to the original path if resolution fails.
6
+ */
7
+ async function resolveSymlinkPath(filePath) {
8
+ try {
9
+ return await fs.realpath(filePath);
10
+ }
11
+ catch {
12
+ // Path doesn't fully exist — walk up to find the deepest existing ancestor
13
+ const dir = path.dirname(filePath);
14
+ if (dir === filePath)
15
+ return filePath; // filesystem root
16
+ const resolvedDir = await resolveSymlinkPath(dir);
17
+ const base = path.basename(filePath);
18
+ // Check if this segment is a broken symlink and follow its target
19
+ try {
20
+ const stat = await fs.lstat(path.join(resolvedDir, base));
21
+ if (stat.isSymbolicLink()) {
22
+ const target = await fs.readlink(path.join(resolvedDir, base));
23
+ return path.resolve(resolvedDir, target);
24
+ }
25
+ }
26
+ catch {
27
+ // Segment doesn't exist — return as-is
28
+ }
29
+ return path.join(resolvedDir, base);
30
+ }
31
+ }
3
32
  /**
4
33
  * Ensure a directory exists, creating it recursively if needed.
34
+ * Resolves symlinks so that broken symlink targets are created correctly.
5
35
  */
6
36
  export async function ensureDir(dir) {
7
- await fs.mkdir(dir, { recursive: true });
37
+ const resolved = await resolveSymlinkPath(dir);
38
+ await fs.mkdir(resolved, { recursive: true });
8
39
  }
9
40
  /**
10
41
  * Copy a file from src to dest, creating parent directories if needed.
42
+ * Resolves symlinks in the destination path so files are written to the
43
+ * actual target location when dest contains symlinks (e.g., skill dirs
44
+ * symlinked from ~/.claude/skills/ to ~/.agents/skills/).
11
45
  */
12
46
  export async function copyFile(src, dest) {
13
- await ensureDir(path.dirname(dest));
14
- await fs.copyFile(src, dest);
47
+ const resolvedDest = await resolveSymlinkPath(dest);
48
+ await ensureDir(path.dirname(resolvedDest));
49
+ await fs.copyFile(src, resolvedDest);
15
50
  }
16
51
  /**
17
52
  * Check if a file or directory exists.
@@ -34,10 +69,12 @@ export async function readJson(filePath) {
34
69
  }
35
70
  /**
36
71
  * Write content to a file, creating parent directories if needed.
72
+ * Resolves symlinks so files are written to the actual target location.
37
73
  */
38
74
  export async function writeFile(filePath, content) {
39
- await ensureDir(path.dirname(filePath));
40
- await fs.writeFile(filePath, content, 'utf-8');
75
+ const resolved = await resolveSymlinkPath(filePath);
76
+ await ensureDir(path.dirname(resolved));
77
+ await fs.writeFile(resolved, content, 'utf-8');
41
78
  }
42
79
  /**
43
80
  * List entries in a directory. Returns empty array if directory doesn't exist.
@@ -54,4 +91,62 @@ export async function readDir(dirPath) {
54
91
  throw error;
55
92
  }
56
93
  }
94
+ /**
95
+ * Returns true when an error means the path was simply not found. ENOENT is
96
+ * the only non-fatal outcome for the removal helpers below; all other errors
97
+ * (permissions, IO) are reported as failures instead of being masked as
98
+ * "already gone".
99
+ */
100
+ function isNotFoundError(error) {
101
+ return error?.code === 'ENOENT';
102
+ }
103
+ /**
104
+ * Remove a file. Returns true if the file existed and was removed.
105
+ * Operates on the path directly so a symlink entry is removed rather than its
106
+ * resolved target (avoids deleting files the symlink merely points at).
107
+ */
108
+ export async function removeFile(filePath) {
109
+ try {
110
+ await fs.unlink(filePath);
111
+ return true;
112
+ }
113
+ catch {
114
+ // Not found or failed (permissions/IO): nothing was removed.
115
+ return false;
116
+ }
117
+ }
118
+ /**
119
+ * Remove a directory recursively. Returns true if the directory existed and was removed.
120
+ * Symlinked directories are unlinked directly rather than recursed into, so the
121
+ * directory a symlink points at is never deleted.
122
+ */
123
+ export async function removeDir(dirPath) {
124
+ try {
125
+ // lstat does not follow symlinks; unlink a symlinked dir instead of rm-ing its target.
126
+ const stat = await fs.lstat(dirPath);
127
+ if (stat.isSymbolicLink()) {
128
+ await fs.unlink(dirPath);
129
+ return true;
130
+ }
131
+ await fs.rm(dirPath, { recursive: true, force: true });
132
+ return true;
133
+ }
134
+ catch (error) {
135
+ return isNotFoundError(error);
136
+ }
137
+ }
138
+ /**
139
+ * Check if a directory is empty. A missing directory is treated as empty;
140
+ * unreadable directories (permissions/IO) return false so callers never delete
141
+ * a directory they could not inspect.
142
+ */
143
+ export async function isDirEmpty(dirPath) {
144
+ try {
145
+ const entries = await fs.readdir(dirPath);
146
+ return entries.length === 0;
147
+ }
148
+ catch (error) {
149
+ return isNotFoundError(error);
150
+ }
151
+ }
57
152
  //# sourceMappingURL=file-system.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-system.js","sourceRoot":"","sources":["../../src/utils/file-system.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW;IACzC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAW,EAAE,IAAY;IACtD,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,MAAM,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB;IAC/C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAc,QAAgB;IAC1D,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAAgB,EAAE,OAAe;IAC/D,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxC,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAe;IAC3C,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,GAAI,KAA+B,EAAE,IAAI,CAAC;QACpD,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"file-system.js","sourceRoot":"","sources":["../../src/utils/file-system.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,62 +1,69 @@
1
- {
2
- "name": "@rpamis/comet",
3
- "version": "0.3.6",
4
- "description": "OpenSpec + Superpowers dual-star development workflow",
5
- "keywords": [
6
- "comet",
7
- "openspec",
8
- "superpowers",
9
- "skills",
10
- "workflow"
11
- ],
12
- "license": "MIT",
13
- "author": "benym",
14
- "type": "module",
15
- "publishConfig": {
16
- "access": "public"
17
- },
18
- "bin": {
19
- "comet": "./bin/comet.js"
20
- },
21
- "files": [
22
- "dist",
23
- "bin",
24
- "assets",
25
- "scripts/postinstall.js",
26
- "!dist/**/*.test.js",
27
- "!dist/**/__tests__"
28
- ],
29
- "scripts": {
30
- "build": "node build.js",
31
- "dev": "tsc --watch",
32
- "test": "vitest run",
33
- "test:coverage": "vitest run --coverage",
34
- "test:watch": "vitest",
35
- "lint": "eslint src/",
36
- "lint:fix": "eslint src/ --fix",
37
- "format": "prettier --write src/",
38
- "format:check": "prettier --check src/",
39
- "test:shell": "node scripts/run-bats.js test/shell/*.bats",
40
- "prepare": "pnpm run build",
41
- "prepublishOnly": "node scripts/prepublish-check.js && pnpm run build",
42
- "postinstall": "node scripts/postinstall.js"
43
- },
44
- "packageManager": "pnpm@10.18.3",
45
- "engines": {
46
- "node": ">=20"
47
- },
48
- "devDependencies": {
49
- "@eslint/js": "^10.0.1",
50
- "@types/node": "^24.2.0",
51
- "@vitest/coverage-v8": "^4.1.6",
52
- "eslint": "^10.4.0",
53
- "prettier": "^3.8.3",
54
- "typescript": "^5.9.3",
55
- "typescript-eslint": "^8.59.3",
56
- "vitest": "^4.1.6"
57
- },
58
- "dependencies": {
59
- "@inquirer/prompts": "^8.4.3",
60
- "commander": "^14.0.0"
61
- }
62
- }
1
+ {
2
+ "name": "@rpamis/comet",
3
+ "version": "0.3.8",
4
+ "description": "OpenSpec + Superpowers dual-star development workflow",
5
+ "keywords": [
6
+ "comet",
7
+ "openspec",
8
+ "superpowers",
9
+ "skills",
10
+ "workflow"
11
+ ],
12
+ "license": "MIT",
13
+ "author": "benym",
14
+ "type": "module",
15
+ "publishConfig": {
16
+ "access": "public"
17
+ },
18
+ "bin": {
19
+ "comet": "./bin/comet.js"
20
+ },
21
+ "files": [
22
+ "dist",
23
+ "bin",
24
+ "assets",
25
+ "scripts/postinstall.js",
26
+ "!dist/**/*.test.js",
27
+ "!dist/**/__tests__"
28
+ ],
29
+ "scripts": {
30
+ "build": "node build.js",
31
+ "dev": "tsc --watch",
32
+ "test": "vitest run",
33
+ "test:coverage": "vitest run --coverage",
34
+ "test:watch": "vitest",
35
+ "lint": "eslint src/",
36
+ "lint:fix": "eslint src/ --fix",
37
+ "format": "prettier --write src/",
38
+ "format:check": "prettier --check src/",
39
+ "test:shell": "node scripts/run-bats.js test/shell/*.bats",
40
+ "benchmark:context": "node scripts/context-compression-benchmark.mjs",
41
+ "benchmark:execution": "node scripts/context-execution-benchmark.mjs",
42
+ "prepare": "husky && pnpm run build",
43
+ "prepublishOnly": "node scripts/prepublish-check.js && pnpm run build",
44
+ "postinstall": "node scripts/postinstall.js"
45
+ },
46
+ "lint-staged": {
47
+ "src/**/*.{ts,tsx,js,mjs,cjs,json,md,yaml,yml}": "prettier --write"
48
+ },
49
+ "packageManager": "pnpm@10.18.3",
50
+ "engines": {
51
+ "node": ">=20"
52
+ },
53
+ "devDependencies": {
54
+ "@eslint/js": "^10.0.1",
55
+ "@types/node": "^24.2.0",
56
+ "@vitest/coverage-v8": "^4.1.6",
57
+ "eslint": "^10.4.0",
58
+ "husky": "^9.1.7",
59
+ "lint-staged": "^17.0.7",
60
+ "prettier": "^3.8.3",
61
+ "typescript": "^5.9.3",
62
+ "typescript-eslint": "^8.59.3",
63
+ "vitest": "^4.1.6"
64
+ },
65
+ "dependencies": {
66
+ "@inquirer/prompts": "^8.4.3",
67
+ "commander": "^14.0.0"
68
+ }
69
+ }