@vyuhlabs/dxkit 2.5.0 → 2.5.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.
Files changed (143) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/dist/analyzers/tools/graphify.d.ts.map +1 -1
  3. package/dist/analyzers/tools/graphify.js +9 -5
  4. package/dist/analyzers/tools/graphify.js.map +1 -1
  5. package/dist/analyzers/tools/tool-registry.d.ts +19 -1
  6. package/dist/analyzers/tools/tool-registry.d.ts.map +1 -1
  7. package/dist/analyzers/tools/tool-registry.js +25 -0
  8. package/dist/analyzers/tools/tool-registry.js.map +1 -1
  9. package/dist/cli.d.ts.map +1 -1
  10. package/dist/cli.js +38 -1
  11. package/dist/cli.js.map +1 -1
  12. package/dist/doctor.d.ts.map +1 -1
  13. package/dist/doctor.js +18 -11
  14. package/dist/doctor.js.map +1 -1
  15. package/dist/generator.d.ts +1 -1
  16. package/dist/generator.d.ts.map +1 -1
  17. package/dist/generator.js +81 -135
  18. package/dist/generator.js.map +1 -1
  19. package/dist/hooks-cli.d.ts +20 -0
  20. package/dist/hooks-cli.d.ts.map +1 -0
  21. package/dist/hooks-cli.js +145 -0
  22. package/dist/hooks-cli.js.map +1 -0
  23. package/dist/languages/csharp.d.ts.map +1 -1
  24. package/dist/languages/csharp.js +4 -0
  25. package/dist/languages/csharp.js.map +1 -1
  26. package/dist/languages/go.d.ts.map +1 -1
  27. package/dist/languages/go.js +4 -0
  28. package/dist/languages/go.js.map +1 -1
  29. package/dist/languages/index.d.ts +18 -0
  30. package/dist/languages/index.d.ts.map +1 -1
  31. package/dist/languages/index.js +32 -0
  32. package/dist/languages/index.js.map +1 -1
  33. package/dist/languages/java.d.ts.map +1 -1
  34. package/dist/languages/java.js +4 -0
  35. package/dist/languages/java.js.map +1 -1
  36. package/dist/languages/kotlin.d.ts.map +1 -1
  37. package/dist/languages/kotlin.js +9 -0
  38. package/dist/languages/kotlin.js.map +1 -1
  39. package/dist/languages/python.d.ts.map +1 -1
  40. package/dist/languages/python.js +4 -0
  41. package/dist/languages/python.js.map +1 -1
  42. package/dist/languages/ruby.d.ts.map +1 -1
  43. package/dist/languages/ruby.js +4 -0
  44. package/dist/languages/ruby.js.map +1 -1
  45. package/dist/languages/rust.d.ts.map +1 -1
  46. package/dist/languages/rust.js +4 -0
  47. package/dist/languages/rust.js.map +1 -1
  48. package/dist/languages/types.d.ts +27 -0
  49. package/dist/languages/types.d.ts.map +1 -1
  50. package/dist/languages/typescript.d.ts.map +1 -1
  51. package/dist/languages/typescript.js +5 -0
  52. package/dist/languages/typescript.js.map +1 -1
  53. package/dist/ship-installers.d.ts +6 -0
  54. package/dist/ship-installers.d.ts.map +1 -1
  55. package/dist/ship-installers.js +120 -5
  56. package/dist/ship-installers.js.map +1 -1
  57. package/dist/tools-cli.d.ts.map +1 -1
  58. package/dist/tools-cli.js +45 -9
  59. package/dist/tools-cli.js.map +1 -1
  60. package/package.json +1 -1
  61. package/templates/.claude/skills/dxkit-action/SKILL.md +150 -0
  62. package/templates/.claude/skills/dxkit-config/SKILL.md +124 -0
  63. package/templates/.claude/skills/dxkit-hooks/SKILL.md +109 -0
  64. package/templates/.claude/skills/dxkit-init/SKILL.md +93 -0
  65. package/templates/.claude/skills/dxkit-learn/SKILL.md +84 -0
  66. package/templates/.claude/skills/dxkit-reports/SKILL.md +111 -0
  67. package/templates/.devcontainer/devcontainer.json +7 -33
  68. package/templates/.devcontainer/post-create.sh +18 -4
  69. package/templates/AGENTS.md.template +137 -0
  70. package/templates/CLAUDE.md.template +16 -111
  71. package/dist/codebase-scanner.d.ts +0 -36
  72. package/dist/codebase-scanner.d.ts.map +0 -1
  73. package/dist/codebase-scanner.js +0 -687
  74. package/dist/codebase-scanner.js.map +0 -1
  75. package/templates/.claude/agents/doc-writer.md +0 -107
  76. package/templates/.claude/agents/knowledge-bot.md +0 -64
  77. package/templates/.claude/agents/onboarding.md +0 -62
  78. package/templates/.claude/agents/quality-reviewer.md +0 -85
  79. package/templates/.claude/agents-available/code-reviewer.md +0 -29
  80. package/templates/.claude/agents-available/codebase-explorer.md +0 -100
  81. package/templates/.claude/agents-available/dashboard-builder.md +0 -433
  82. package/templates/.claude/agents-available/debugger.md +0 -29
  83. package/templates/.claude/agents-available/dependency-mapper.md +0 -80
  84. package/templates/.claude/agents-available/dev-report.md +0 -108
  85. package/templates/.claude/agents-available/doc-writer.md +0 -107
  86. package/templates/.claude/agents-available/feature-builder.md +0 -163
  87. package/templates/.claude/agents-available/feature-planner.md +0 -185
  88. package/templates/.claude/agents-available/health-auditor.md +0 -95
  89. package/templates/.claude/agents-available/hooks-configurator.md +0 -211
  90. package/templates/.claude/agents-available/knowledge-bot.md +0 -62
  91. package/templates/.claude/agents-available/plan-executor.md +0 -133
  92. package/templates/.claude/agents-available/strategic-planner.md +0 -141
  93. package/templates/.claude/agents-available/test-gap-finder.md +0 -67
  94. package/templates/.claude/agents-available/test-writer.md +0 -34
  95. package/templates/.claude/agents-available/vulnerability-scanner.md +0 -173
  96. package/templates/.claude/commands/ask.md +0 -7
  97. package/templates/.claude/commands/build-feature.md +0 -26
  98. package/templates/.claude/commands/build.md.template +0 -30
  99. package/templates/.claude/commands/check.md.template +0 -43
  100. package/templates/.claude/commands/dashboard.md +0 -28
  101. package/templates/.claude/commands/deps.md +0 -15
  102. package/templates/.claude/commands/dev-report.md +0 -50
  103. package/templates/.claude/commands/docs.md +0 -21
  104. package/templates/.claude/commands/doctor.md +0 -29
  105. package/templates/.claude/commands/enable-agent.md +0 -12
  106. package/templates/.claude/commands/execute-plan.md +0 -25
  107. package/templates/.claude/commands/explore-codebase.md +0 -12
  108. package/templates/.claude/commands/export-pdf.md +0 -30
  109. package/templates/.claude/commands/feature.md +0 -25
  110. package/templates/.claude/commands/fix-issue.md +0 -12
  111. package/templates/.claude/commands/fix.md.template +0 -32
  112. package/templates/.claude/commands/health.md +0 -58
  113. package/templates/.claude/commands/help.md +0 -36
  114. package/templates/.claude/commands/learn.md +0 -48
  115. package/templates/.claude/commands/onboarding.md +0 -21
  116. package/templates/.claude/commands/plan.md +0 -20
  117. package/templates/.claude/commands/quality.md.template +0 -65
  118. package/templates/.claude/commands/session-end.md +0 -40
  119. package/templates/.claude/commands/session-start.md +0 -30
  120. package/templates/.claude/commands/setup-hooks.md +0 -18
  121. package/templates/.claude/commands/stealth-mode.md +0 -17
  122. package/templates/.claude/commands/test-gaps.md +0 -49
  123. package/templates/.claude/commands/test.md.template +0 -40
  124. package/templates/.claude/commands/vulnerabilities.md +0 -49
  125. package/templates/.claude/skills/build/SKILL.md.template +0 -90
  126. package/templates/.claude/skills/deploy/SKILL.md.template +0 -111
  127. package/templates/.claude/skills/deploy/references/gotchas.md +0 -5
  128. package/templates/.claude/skills/doctor/SKILL.md +0 -31
  129. package/templates/.claude/skills/gcloud/SKILL.md +0 -66
  130. package/templates/.claude/skills/gcloud/references/gotchas.md +0 -5
  131. package/templates/.claude/skills/learned/SKILL.md +0 -55
  132. package/templates/.claude/skills/learned/references/conventions.md +0 -11
  133. package/templates/.claude/skills/learned/references/deny-recommendations.md +0 -18
  134. package/templates/.claude/skills/learned/references/gotchas.md +0 -11
  135. package/templates/.claude/skills/pulumi/SKILL.md +0 -73
  136. package/templates/.claude/skills/quality/SKILL.md.template +0 -89
  137. package/templates/.claude/skills/quality/references/gotchas.md +0 -5
  138. package/templates/.claude/skills/review/SKILL.md.template +0 -74
  139. package/templates/.claude/skills/scaffold/SKILL.md.template +0 -113
  140. package/templates/.claude/skills/secrets/SKILL.md +0 -51
  141. package/templates/.claude/skills/session/SKILL.md +0 -32
  142. package/templates/.claude/skills/test/SKILL.md.template +0 -116
  143. package/templates/.claude/skills/test/references/gotchas.md +0 -5
package/dist/generator.js CHANGED
@@ -39,7 +39,6 @@ const path = __importStar(require("path"));
39
39
  const constants_1 = require("./constants");
40
40
  const template_engine_1 = require("./template-engine");
41
41
  const files_1 = require("./files");
42
- const codebase_scanner_1 = require("./codebase-scanner");
43
42
  const languages_1 = require("./languages");
44
43
  const logger = __importStar(require("./logger"));
45
44
  function getTemplatesDir() {
@@ -52,48 +51,58 @@ function readTemplate(templatePath) {
52
51
  }
53
52
  return fs.readFileSync(fullPath, 'utf-8');
54
53
  }
55
- function buildSettingsJson(config, conditions) {
54
+ /**
55
+ * Narrowed permission list for the dxkit-specific agent surface.
56
+ * Carries only the binaries the six dxkit-* skills actually run:
57
+ * git status/diff/log/branch (read-only inspection), the dxkit binary
58
+ * itself (every analyzer / hook / baseline command), and the active
59
+ * language packs' contributed commands (so the dxkit-action skill
60
+ * can run `npm test` / `pytest` / etc. to verify a fix without
61
+ * prompting on every step).
62
+ *
63
+ * Pre-2.5.1 the file carried Stop-hook noise about a `/learn` slash
64
+ * command that no longer ships, plus conditional gcloud / pulumi /
65
+ * docker entries tied to generic skills that also no longer ship.
66
+ * Dropped here.
67
+ */
68
+ function buildSettingsJson(config) {
56
69
  const perms = [
57
70
  'Bash(git status:*)',
58
71
  'Bash(git diff:*)',
59
72
  'Bash(git log:*)',
60
73
  'Bash(git branch:*)',
61
74
  'Bash(npx vyuh-dxkit:*)',
75
+ 'Bash(./node_modules/.bin/vyuh-dxkit:*)',
76
+ 'Bash(vyuh-dxkit:*)',
62
77
  ];
63
- // Per-language permissions — declared on each pack via
64
- // `LanguageSupport.permissions`, iterated here.
65
78
  for (const lang of (0, languages_1.activeLanguagesFromStack)(config)) {
66
79
  if (lang.permissions)
67
80
  perms.push(...lang.permissions);
68
81
  }
69
- if (conditions.IF_DOCKER)
70
- perms.push('Bash(docker ps:*)', 'Bash(docker-compose ps:*)', 'Bash(docker-compose logs:*)');
71
- if (conditions.IF_GCLOUD)
72
- perms.push('Bash(gcloud config:*)', 'Bash(gcloud projects list:*)', 'Bash(gcloud services list:*)', 'Bash(gcloud run services list:*)');
73
- if (conditions.IF_PULUMI)
74
- perms.push('Bash(pulumi preview:*)', 'Bash(pulumi stack:*)', 'Bash(pulumi config:*)');
75
82
  return (JSON.stringify({
76
83
  $schema: 'https://json.schemastore.org/claude-code-settings.json',
77
84
  permissions: {
78
85
  allow: perms,
79
86
  deny: [],
80
87
  },
81
- hooks: {
82
- Stop: [
83
- {
84
- matcher: '',
85
- hooks: [
86
- {
87
- type: 'command',
88
- command: 'echo "If this conversation involved debugging, fixing issues, or discovering patterns — consider running /learn to capture it for future sessions."',
89
- },
90
- ],
91
- },
92
- ],
93
- },
94
88
  }, null, 2) + '\n');
95
89
  }
96
- async function generate(targetDir, config, mode, force, noScan = false) {
90
+ /**
91
+ * The six dxkit-specific skills shipped under `--with-dxkit-agents`.
92
+ * Each lives at `.claude/skills/<name>/SKILL.md` in the template dir;
93
+ * generator copies them verbatim (no template substitution — the
94
+ * skill content references the canonical `vyuh-dxkit` CLI surface
95
+ * and doesn't need per-project variables).
96
+ */
97
+ const DXKIT_SKILLS = [
98
+ 'dxkit-learn',
99
+ 'dxkit-init',
100
+ 'dxkit-config',
101
+ 'dxkit-hooks',
102
+ 'dxkit-reports',
103
+ 'dxkit-action',
104
+ ];
105
+ async function generate(targetDir, config, mode, force, _noScan = false, withDxkitAgents = false) {
97
106
  const variables = (0, constants_1.buildVariables)(config);
98
107
  const conditions = (0, constants_1.buildConditions)(config);
99
108
  const templatesDir = getTemplatesDir();
@@ -123,7 +132,6 @@ async function generate(targetDir, config, mode, force, noScan = false) {
123
132
  evolving,
124
133
  };
125
134
  }
126
- // Helper: process and write a template file
127
135
  async function writeTemplate(templatePath, outputRel, evolving = false) {
128
136
  const raw = readTemplate(templatePath);
129
137
  const processed = (0, template_engine_1.processTemplate)(raw, variables, conditions);
@@ -131,7 +139,6 @@ async function generate(targetDir, config, mode, force, noScan = false) {
131
139
  const res = await (0, files_1.writeFile)(outputPath, processed, opts(evolving));
132
140
  track(outputPath, processed, res, evolving);
133
141
  }
134
- // Helper: copy a static file
135
142
  function copyStatic(templatePath, outputRel, evolving = false) {
136
143
  const srcPath = path.join(templatesDir, templatePath);
137
144
  if (!fs.existsSync(srcPath))
@@ -141,118 +148,57 @@ async function generate(targetDir, config, mode, force, noScan = false) {
141
148
  const content = evolving ? null : fs.readFileSync(srcPath, 'utf-8');
142
149
  track(outputPath, content, res, evolving);
143
150
  }
144
- // === DX-ONLY TIER ===
145
- logger.header('Generating Agent DX');
146
- // 1. CLAUDE.md
147
- await writeTemplate('CLAUDE.md.template', 'CLAUDE.md');
148
- logger.success('CLAUDE.md');
149
- // 2. settings.json
150
- const settingsContent = buildSettingsJson(config, conditions);
151
- const settingsPath = path.join(targetDir, '.claude', 'settings.json');
152
- const settingsRes = await (0, files_1.writeFile)(settingsPath, settingsContent, opts(false));
153
- track(settingsPath, settingsContent, settingsRes, false);
154
- logger.success('.claude/settings.json');
155
- // 3. Skills — template-processed
156
- for (const skill of ['quality', 'test', 'build', 'review', 'scaffold']) {
157
- await writeTemplate(`.claude/skills/${skill}/SKILL.md.template`, `.claude/skills/${skill}/SKILL.md`);
158
- }
159
- // Skills static (always)
160
- for (const skill of ['doctor', 'session', 'learned']) {
161
- copyStatic(`.claude/skills/${skill}/SKILL.md`, `.claude/skills/${skill}/SKILL.md`);
162
- }
163
- // Deploy skill (template + references)
164
- await writeTemplate('.claude/skills/deploy/SKILL.md.template', '.claude/skills/deploy/SKILL.md');
165
- copyStatic('.claude/skills/deploy/references/gotchas.md', '.claude/skills/deploy/references/gotchas.md', true);
166
- // Evolving reference files
167
- for (const skill of ['quality', 'test', 'learned']) {
168
- const refDir = `.claude/skills/${skill}/references`;
169
- const srcRefDir = path.join(templatesDir, refDir);
170
- if (fs.existsSync(srcRefDir)) {
171
- for (const file of fs.readdirSync(srcRefDir)) {
172
- copyStatic(`${refDir}/${file}`, `${refDir}/${file}`, true);
173
- }
174
- }
175
- }
176
- // Conditional skills
177
- if (conditions.IF_INFISICAL) {
178
- copyStatic('.claude/skills/secrets/SKILL.md', '.claude/skills/secrets/SKILL.md');
179
- }
180
- if (conditions.IF_GCLOUD) {
181
- copyStatic('.claude/skills/gcloud/SKILL.md', '.claude/skills/gcloud/SKILL.md');
182
- copyStatic('.claude/skills/gcloud/references/gotchas.md', '.claude/skills/gcloud/references/gotchas.md', true);
183
- }
184
- if (conditions.IF_PULUMI) {
185
- copyStatic('.claude/skills/pulumi/SKILL.md', '.claude/skills/pulumi/SKILL.md');
186
- }
187
- logger.success('.claude/skills/');
188
- // 4. Rules (conditional on language)
189
- // Per-language rule files declared via `LanguageSupport.ruleFile`.
190
- for (const lang of (0, languages_1.activeLanguagesFromStack)(config)) {
191
- if (lang.ruleFile) {
192
- copyStatic(`.claude/rules/${lang.ruleFile}`, `.claude/rules/${lang.ruleFile}`);
151
+ if (withDxkitAgents) {
152
+ logger.header('Generating dxkit agent context');
153
+ // Open-standard project prose — read by every coding agent
154
+ // (Claude / Codex / Cursor / Aider). Pre-2.5.1 this content lived
155
+ // in CLAUDE.md; AGENTS.md is the cross-platform replacement.
156
+ await writeTemplate('AGENTS.md.template', 'AGENTS.md');
157
+ logger.success('AGENTS.md');
158
+ // CLAUDE.md becomes a small shim that points at AGENTS.md. Claude
159
+ // Code reads both at session start; the shim carries Claude-
160
+ // specific config (skill list, rules pointer) and defers shared
161
+ // context to AGENTS.md.
162
+ await writeTemplate('CLAUDE.md.template', 'CLAUDE.md');
163
+ logger.success('CLAUDE.md');
164
+ // Narrowed settings.json — drops the Stop-hook noise + conditional
165
+ // gcloud/pulumi/docker entries that referenced generic skills that
166
+ // no longer ship.
167
+ const settingsContent = buildSettingsJson(config);
168
+ const settingsPath = path.join(targetDir, '.claude', 'settings.json');
169
+ const settingsRes = await (0, files_1.writeFile)(settingsPath, settingsContent, opts(false));
170
+ track(settingsPath, settingsContent, settingsRes, false);
171
+ logger.success('.claude/settings.json');
172
+ // The six dxkit-specific skills. Each ships as a single SKILL.md
173
+ // under `.claude/skills/dxkit-<name>/`. Auto-discovered by Claude
174
+ // Code via skill frontmatter (`name` + `description`).
175
+ for (const skill of DXKIT_SKILLS) {
176
+ copyStatic(`.claude/skills/${skill}/SKILL.md`, `.claude/skills/${skill}/SKILL.md`);
193
177
  }
194
- }
195
- // Framework-specific rules NOT pack-owned. Frameworks
196
- // (nextjs/loopback/express) live under the top-level `framework`
197
- // signal, not in `languages`. Stay hardcoded here until a
198
- // framework-pack abstraction exists.
199
- if (conditions.IF_NEXTJS)
200
- copyStatic('.claude/rules/nextjs.md', '.claude/rules/nextjs.md');
201
- if (config.framework === 'loopback')
202
- copyStatic('.claude/rules/loopback.md', '.claude/rules/loopback.md');
203
- if (config.framework === 'express')
204
- copyStatic('.claude/rules/express.md', '.claude/rules/express.md');
205
- logger.success('.claude/rules/');
206
- // 5. Commands (static .md copied as-is, .md.template processed through engine)
207
- const commandsDir = path.join(templatesDir, '.claude', 'commands');
208
- if (fs.existsSync(commandsDir)) {
209
- for (const file of fs.readdirSync(commandsDir)) {
210
- if (file.endsWith('.md.template')) {
211
- const outputName = file.replace('.template', '');
212
- await writeTemplate(`.claude/commands/${file}`, `.claude/commands/${outputName}`);
213
- }
214
- else {
215
- copyStatic(`.claude/commands/${file}`, `.claude/commands/${file}`);
178
+ logger.success('.claude/skills/dxkit-*');
179
+ // Per-language rules from each active pack — still useful as
180
+ // contextual hints to any agent (coding conventions, lint rule
181
+ // exceptions, etc.).
182
+ for (const lang of (0, languages_1.activeLanguagesFromStack)(config)) {
183
+ if (lang.ruleFile) {
184
+ copyStatic(`.claude/rules/${lang.ruleFile}`, `.claude/rules/${lang.ruleFile}`);
216
185
  }
217
186
  }
218
- }
219
- logger.success('.claude/commands/');
220
- // Ensure .ai/sessions/ exists for session commands (works in dx-only mode)
221
- fs.mkdirSync(path.join(targetDir, '.ai', 'sessions'), { recursive: true });
222
- // 6. Agents-available (dormant) and agents (active by default)
223
- const agentsAvailDir = path.join(templatesDir, '.claude', 'agents-available');
224
- if (fs.existsSync(agentsAvailDir)) {
225
- fs.mkdirSync(path.join(targetDir, '.claude', 'agents'), { recursive: true });
226
- for (const file of fs.readdirSync(agentsAvailDir)) {
227
- copyStatic(`.claude/agents-available/${file}`, `.claude/agents-available/${file}`);
228
- }
229
- }
230
- const activeAgentsDir = path.join(templatesDir, '.claude', 'agents');
231
- if (fs.existsSync(activeAgentsDir)) {
232
- fs.mkdirSync(path.join(targetDir, '.claude', 'agents'), { recursive: true });
233
- for (const file of fs.readdirSync(activeAgentsDir)) {
234
- copyStatic(`.claude/agents/${file}`, `.claude/agents/${file}`);
235
- }
236
- }
237
- logger.success('.claude/agents/');
238
- // 7. Codebase scan
239
- if (!noScan) {
240
- logger.info('Scanning codebase...');
241
- const analysis = (0, codebase_scanner_1.scanCodebase)(targetDir);
242
- const skillContent = (0, codebase_scanner_1.renderCodebaseSkill)(analysis);
243
- const skillPath = path.join(targetDir, '.claude', 'skills', 'codebase', 'SKILL.md');
244
- const skillRes = await (0, files_1.writeFile)(skillPath, skillContent, opts(true));
245
- track(skillPath, null, skillRes, true);
246
- const refContent = (0, codebase_scanner_1.renderArchitectureRef)(analysis);
247
- const refPath = path.join(targetDir, '.claude', 'skills', 'codebase', 'references', 'architecture.md');
248
- const refRes = await (0, files_1.writeFile)(refPath, refContent, opts(true));
249
- track(refPath, null, refRes, true);
250
- logger.success(`.claude/skills/codebase/ (${analysis.fileCount} files, ${analysis.entryPoints.length} entry points, ${analysis.apiEndpoints.length} API routes)`);
251
- if (analysis.testFileCount < 5 && analysis.sourceFileCount > 20) {
252
- logger.warn(`Minimal tests: ${analysis.testFileCount} test files for ${analysis.sourceFileCount} source files`);
253
- }
254
- }
255
- // Write manifest
187
+ // Framework-specific rules — NOT pack-owned. Frameworks
188
+ // (nextjs/loopback/express) live under the top-level `framework`
189
+ // signal, not in `languages`. Stay hardcoded here until a
190
+ // framework-pack abstraction exists.
191
+ if (conditions.IF_NEXTJS)
192
+ copyStatic('.claude/rules/nextjs.md', '.claude/rules/nextjs.md');
193
+ if (config.framework === 'loopback')
194
+ copyStatic('.claude/rules/loopback.md', '.claude/rules/loopback.md');
195
+ if (config.framework === 'express')
196
+ copyStatic('.claude/rules/express.md', '.claude/rules/express.md');
197
+ logger.success('.claude/rules/');
198
+ }
199
+ // Always write the manifest — `vyuh-dxkit update` / `doctor` / etc.
200
+ // read it to know what was configured even when no agent scaffold
201
+ // is present.
256
202
  const manifestContent = JSON.stringify(result.manifest, null, 2) + '\n';
257
203
  fs.mkdirSync(targetDir, { recursive: true });
258
204
  fs.writeFileSync(path.join(targetDir, '.vyuh-dxkit.json'), manifestContent, 'utf-8');
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export interface ActivateHooksResult {
2
+ /** True when `core.hooksPath` was set during this call. */
3
+ activated: boolean;
4
+ /** Why the call short-circuited; populated when `activated` is false. */
5
+ reason?: 'not-a-git-repo' | 'git-missing' | 'already-set-elsewhere' | 'already-set-correctly' | 'git-error';
6
+ /** Value `core.hooksPath` held before any write attempt. */
7
+ previousValue?: string;
8
+ }
9
+ /**
10
+ * Pure-ish core: takes a cwd, returns a structured outcome. Side
11
+ * effects are limited to invoking `git config` against the supplied
12
+ * cwd. The CLI wrapper renders log output from the result.
13
+ */
14
+ export declare function activateHooks(cwd: string): ActivateHooksResult;
15
+ /**
16
+ * CLI wrapper. Renders a short status line and ALWAYS exits 0 so a
17
+ * postinstall hook never aborts `npm install`.
18
+ */
19
+ export declare function runHooksActivate(cwd: string): void;
20
+ //# sourceMappingURL=hooks-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks-cli.d.ts","sourceRoot":"","sources":["../src/hooks-cli.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,SAAS,EAAE,OAAO,CAAC;IACnB,yEAAyE;IACzE,MAAM,CAAC,EACH,gBAAgB,GAChB,aAAa,GACb,uBAAuB,GACvB,uBAAuB,GACvB,WAAW,CAAC;IAChB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAwD9D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CA6BlD"}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.activateHooks = activateHooks;
37
+ exports.runHooksActivate = runHooksActivate;
38
+ /**
39
+ * CLI handler for `vyuh-dxkit hooks activate`.
40
+ *
41
+ * Idempotent activation of the dxkit hook directory. Designed to be
42
+ * invoked from an `npm postinstall` script in the consumer's
43
+ * package.json, so every clone + `npm install` automatically wires
44
+ * `core.hooksPath` without per-dev manual setup.
45
+ *
46
+ * Always exits 0. A postinstall script that exits non-zero breaks
47
+ * `npm install` for the whole repo, which is a worse failure than
48
+ * "hooks didn't activate this run." If the repo isn't a git checkout
49
+ * or `git` is missing, log a dim notice and return cleanly.
50
+ */
51
+ const child_process_1 = require("child_process");
52
+ const logger = __importStar(require("./logger"));
53
+ /**
54
+ * Pure-ish core: takes a cwd, returns a structured outcome. Side
55
+ * effects are limited to invoking `git config` against the supplied
56
+ * cwd. The CLI wrapper renders log output from the result.
57
+ */
58
+ function activateHooks(cwd) {
59
+ // Refuse to run outside a git worktree — `git config` would write
60
+ // to the global config file instead, which is the worst kind of
61
+ // surprise. `--is-inside-work-tree` returns "true" + exit 0 only
62
+ // when cwd is inside a valid worktree.
63
+ try {
64
+ const out = (0, child_process_1.execFileSync)('git', ['rev-parse', '--is-inside-work-tree'], {
65
+ cwd,
66
+ encoding: 'utf8',
67
+ stdio: ['ignore', 'pipe', 'ignore'],
68
+ }).trim();
69
+ if (out !== 'true') {
70
+ return { activated: false, reason: 'not-a-git-repo' };
71
+ }
72
+ }
73
+ catch (err) {
74
+ const msg = err.message ?? '';
75
+ // ENOENT on the spawn means `git` itself isn't installed. Every
76
+ // other error means cwd isn't a worktree (or .git is corrupted).
77
+ if (msg.includes('ENOENT'))
78
+ return { activated: false, reason: 'git-missing' };
79
+ return { activated: false, reason: 'not-a-git-repo' };
80
+ }
81
+ // Read the current value (if any). `git config --get` exits 1 when
82
+ // the key is unset — that's the happy path for a fresh clone.
83
+ let previousValue;
84
+ try {
85
+ previousValue = (0, child_process_1.execFileSync)('git', ['config', '--local', '--get', 'core.hooksPath'], {
86
+ cwd,
87
+ encoding: 'utf8',
88
+ stdio: ['ignore', 'pipe', 'ignore'],
89
+ }).trim();
90
+ }
91
+ catch {
92
+ previousValue = undefined;
93
+ }
94
+ if (previousValue === '.githooks') {
95
+ return { activated: false, reason: 'already-set-correctly', previousValue };
96
+ }
97
+ if (previousValue && previousValue.length > 0) {
98
+ // Don't clobber a custom hooksPath (husky, lefthook, personal
99
+ // setup). The customer is on the hook for chaining if they want
100
+ // both — same convention as `.dxkit` sidecars when an existing
101
+ // hook is present.
102
+ return { activated: false, reason: 'already-set-elsewhere', previousValue };
103
+ }
104
+ try {
105
+ (0, child_process_1.execFileSync)('git', ['config', '--local', 'core.hooksPath', '.githooks'], {
106
+ cwd,
107
+ stdio: 'ignore',
108
+ });
109
+ return { activated: true };
110
+ }
111
+ catch {
112
+ return { activated: false, reason: 'git-error' };
113
+ }
114
+ }
115
+ /**
116
+ * CLI wrapper. Renders a short status line and ALWAYS exits 0 so a
117
+ * postinstall hook never aborts `npm install`.
118
+ */
119
+ function runHooksActivate(cwd) {
120
+ const result = activateHooks(cwd);
121
+ if (result.activated) {
122
+ logger.dim('dxkit hooks activated (core.hooksPath = .githooks)');
123
+ return;
124
+ }
125
+ switch (result.reason) {
126
+ case 'already-set-correctly':
127
+ // Stay quiet on the steady-state path — every subsequent
128
+ // `npm install` lands here, and noise compounds.
129
+ return;
130
+ case 'already-set-elsewhere':
131
+ logger.dim(`dxkit hooks activation skipped: core.hooksPath already set to '${result.previousValue}'. ` +
132
+ 'Chain dxkit hooks by sourcing .githooks/<name> from your existing hook directory.');
133
+ return;
134
+ case 'not-a-git-repo':
135
+ logger.dim('dxkit hooks activation skipped: not inside a git working tree.');
136
+ return;
137
+ case 'git-missing':
138
+ logger.dim('dxkit hooks activation skipped: git not on PATH.');
139
+ return;
140
+ default:
141
+ logger.dim('dxkit hooks activation skipped: git error (run `vyuh-dxkit doctor` to diagnose).');
142
+ return;
143
+ }
144
+ }
145
+ //# sourceMappingURL=hooks-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks-cli.js","sourceRoot":"","sources":["../src/hooks-cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"csharp.d.ts","sourceRoot":"","sources":["../../src/languages/csharp.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAgB,MAAM,6BAA6B,CAAC;AAmB1E,OAAO,KAAK,EAEV,cAAc,EASd,cAAc,EAEf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAuC/C,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAoC/F;AA8GD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,MAAM,GACV;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,cAAc,EAAE,CAAA;CAAE,GAAG,IAAI,CA2D/D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,GACV;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;CAAE,GAAG,IAAI,CAqCjE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE;IAClD,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACjC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;CACjD,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAsBxB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAe9D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAExD;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,aAAa,CAAC;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;CAAE,CAAC,GAC9E;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;CAAE,CAY1D;AAggBD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAQjE;AAoSD,eAAO,MAAM,MAAM,EAAE,eAsJpB,CAAC"}
1
+ {"version":3,"file":"csharp.d.ts","sourceRoot":"","sources":["../../src/languages/csharp.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAgB,MAAM,6BAA6B,CAAC;AAmB1E,OAAO,KAAK,EAEV,cAAc,EASd,cAAc,EAEf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAuC/C,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAoC/F;AA8GD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,MAAM,GACV;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,cAAc,EAAE,CAAA;CAAE,GAAG,IAAI,CA2D/D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,GACV;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;CAAE,GAAG,IAAI,CAqCjE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE;IAClD,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACjC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;CACjD,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAsBxB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAe9D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAExD;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,aAAa,CAAC;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;CAAE,CAAC,GAC9E;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;CAAE,CAY1D;AAggBD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAQjE;AAoSD,eAAO,MAAM,MAAM,EAAE,eA0JpB,CAAC"}
@@ -1288,5 +1288,9 @@ exports.csharp = {
1288
1288
  ruleFile: 'csharp.md',
1289
1289
  defaultVersion: '8.0',
1290
1290
  cliBinaries: ['dotnet'],
1291
+ devcontainerFeature: {
1292
+ name: 'ghcr.io/devcontainers/features/dotnet:2',
1293
+ opts: { version: '8.0' },
1294
+ },
1291
1295
  };
1292
1296
  //# sourceMappingURL=csharp.js.map