@uniswap/ai-toolkit-nx-claude 0.5.30-next.1 → 0.5.30-next.2
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/generators/addons/CLAUDE.md +91 -91
- package/dist/generators/addons/generator.cjs +13 -338
- package/dist/generators/addons/schema.json +1 -32
- package/dist/index.cjs +13 -338
- package/dist/packages/ai-toolkit-nx-claude/src/generators/addons/addon-registry.d.ts.map +1 -1
- package/dist/packages/ai-toolkit-nx-claude/src/generators/addons/aws-log-analyzer-setup.d.ts.map +1 -1
- package/dist/packages/ai-toolkit-nx-claude/src/generators/addons/generator.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/packages/ai-toolkit-nx-claude/src/generators/addons/spec-workflow-setup.d.ts +0 -52
- package/dist/packages/ai-toolkit-nx-claude/src/generators/addons/spec-workflow-setup.d.ts.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -131,10 +131,10 @@ async function validateAddonRequirements(addonId) {
|
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
133
|
if (addon.requirements?.commands) {
|
|
134
|
-
const { execSync:
|
|
134
|
+
const { execSync: execSync6 } = require("child_process");
|
|
135
135
|
for (const cmd of addon.requirements.commands) {
|
|
136
136
|
try {
|
|
137
|
-
|
|
137
|
+
execSync6(`which ${cmd}`, { stdio: "ignore" });
|
|
138
138
|
} catch {
|
|
139
139
|
errors.push(`Required command '${cmd}' not found`);
|
|
140
140
|
}
|
|
@@ -153,53 +153,6 @@ var init_addon_registry = __esm({
|
|
|
153
153
|
import_path = require("path");
|
|
154
154
|
import_os = require("os");
|
|
155
155
|
ADDON_REGISTRY = [
|
|
156
|
-
{
|
|
157
|
-
id: "spec-workflow-mcp",
|
|
158
|
-
name: "Spec Workflow MCP",
|
|
159
|
-
description: "MCP server for spec-driven development workflow with dashboard support",
|
|
160
|
-
type: "mcp-server",
|
|
161
|
-
packageName: "@uniswap/spec-workflow-mcp",
|
|
162
|
-
mcp: {
|
|
163
|
-
serverName: "spec-workflow",
|
|
164
|
-
command: "npx",
|
|
165
|
-
args: ["@uniswap/spec-workflow-mcp@latest"],
|
|
166
|
-
supportsDashboard: true,
|
|
167
|
-
defaultPort: 50014
|
|
168
|
-
},
|
|
169
|
-
projectSetup: {
|
|
170
|
-
repositoryUrl: "https://github.com/Uniswap/spec-workflow-mcp.git",
|
|
171
|
-
configSourcePath: "configs",
|
|
172
|
-
targetDirectory: ".spec-workflow"
|
|
173
|
-
},
|
|
174
|
-
requirements: {
|
|
175
|
-
node: ">=22.0.0",
|
|
176
|
-
commands: ["git", "npm"]
|
|
177
|
-
}
|
|
178
|
-
},
|
|
179
|
-
{
|
|
180
|
-
id: "graphite-mcp",
|
|
181
|
-
name: "Graphite MCP",
|
|
182
|
-
description: "MCP server for Graphite stacked pull request workflows",
|
|
183
|
-
type: "mcp-server",
|
|
184
|
-
packageName: "gt",
|
|
185
|
-
mcp: {
|
|
186
|
-
serverName: "graphite",
|
|
187
|
-
command: "gt",
|
|
188
|
-
args: ["mcp"]
|
|
189
|
-
}
|
|
190
|
-
},
|
|
191
|
-
{
|
|
192
|
-
id: "nx-mcp",
|
|
193
|
-
name: "Nx MCP",
|
|
194
|
-
description: "MCP server for Nx monorepo workspace management",
|
|
195
|
-
type: "mcp-server",
|
|
196
|
-
packageName: "nx-mcp",
|
|
197
|
-
mcp: {
|
|
198
|
-
serverName: "nx-mcp",
|
|
199
|
-
command: "npx",
|
|
200
|
-
args: ["-y", "nx-mcp@latest"]
|
|
201
|
-
}
|
|
202
|
-
},
|
|
203
156
|
{
|
|
204
157
|
id: "slack-mcp",
|
|
205
158
|
name: "Slack MCP",
|
|
@@ -216,30 +169,6 @@ var init_addon_registry = __esm({
|
|
|
216
169
|
}
|
|
217
170
|
}
|
|
218
171
|
},
|
|
219
|
-
{
|
|
220
|
-
id: "notion-mcp",
|
|
221
|
-
name: "Notion MCP",
|
|
222
|
-
description: "MCP server for Notion workspace management (HTTP)",
|
|
223
|
-
type: "mcp-server",
|
|
224
|
-
packageName: "notion",
|
|
225
|
-
mcp: {
|
|
226
|
-
serverName: "notion",
|
|
227
|
-
transport: "http",
|
|
228
|
-
url: "https://mcp.notion.com/mcp"
|
|
229
|
-
}
|
|
230
|
-
},
|
|
231
|
-
{
|
|
232
|
-
id: "linear-mcp",
|
|
233
|
-
name: "Linear MCP",
|
|
234
|
-
description: "MCP server for Linear issue tracking (HTTP)",
|
|
235
|
-
type: "mcp-server",
|
|
236
|
-
packageName: "linear",
|
|
237
|
-
mcp: {
|
|
238
|
-
serverName: "linear",
|
|
239
|
-
transport: "http",
|
|
240
|
-
url: "https://mcp.linear.app/mcp"
|
|
241
|
-
}
|
|
242
|
-
},
|
|
243
172
|
{
|
|
244
173
|
id: "github-mcp",
|
|
245
174
|
name: "GitHub MCP",
|
|
@@ -267,19 +196,6 @@ var init_addon_registry = __esm({
|
|
|
267
196
|
url: "https://mcp.figma.com/mcp"
|
|
268
197
|
}
|
|
269
198
|
},
|
|
270
|
-
{
|
|
271
|
-
id: "chrome-devtools-mcp",
|
|
272
|
-
name: "Chrome DevTools MCP",
|
|
273
|
-
description: "MCP server for Chrome DevTools Protocol",
|
|
274
|
-
type: "mcp-server",
|
|
275
|
-
packageName: "chrome-devtools-mcp",
|
|
276
|
-
mcp: {
|
|
277
|
-
serverName: "chrome-devtools",
|
|
278
|
-
command: "npx",
|
|
279
|
-
args: ["chrome-devtools-mcp@latest"],
|
|
280
|
-
env: {}
|
|
281
|
-
}
|
|
282
|
-
},
|
|
283
199
|
{
|
|
284
200
|
id: "vercel-mcp",
|
|
285
201
|
name: "Vercel MCP",
|
|
@@ -350,7 +266,7 @@ var require_schema = __commonJS({
|
|
|
350
266
|
items: [
|
|
351
267
|
{
|
|
352
268
|
value: "all",
|
|
353
|
-
label: "All recommended MCP servers (
|
|
269
|
+
label: "All recommended MCP servers (6 servers)"
|
|
354
270
|
},
|
|
355
271
|
{
|
|
356
272
|
value: "specific",
|
|
@@ -365,18 +281,10 @@ var require_schema = __commonJS({
|
|
|
365
281
|
items: {
|
|
366
282
|
type: "string",
|
|
367
283
|
enum: [
|
|
368
|
-
"spec-workflow-mcp",
|
|
369
|
-
"graphite-mcp",
|
|
370
|
-
"nx-mcp",
|
|
371
284
|
"slack-mcp",
|
|
372
|
-
"universe-mcp",
|
|
373
|
-
"linear-mcp",
|
|
374
|
-
"notion-mcp",
|
|
375
285
|
"github-mcp",
|
|
376
286
|
"figma-mcp",
|
|
377
|
-
"chrome-devtools-mcp",
|
|
378
287
|
"vercel-mcp",
|
|
379
|
-
"supabase-mcp",
|
|
380
288
|
"aws-log-analyzer-mcp",
|
|
381
289
|
"pulumi-mcp"
|
|
382
290
|
]
|
|
@@ -385,24 +293,6 @@ var require_schema = __commonJS({
|
|
|
385
293
|
"prompt-type": "multiselect",
|
|
386
294
|
"prompt-message": "\u{1F50C} Select MCP servers to install"
|
|
387
295
|
},
|
|
388
|
-
dashboardMode: {
|
|
389
|
-
type: "string",
|
|
390
|
-
description: "Dashboard startup mode",
|
|
391
|
-
enum: ["always", "manual"],
|
|
392
|
-
default: "always",
|
|
393
|
-
"prompt-message": "\u{1F4CA} When should the spec-workflow dashboard start?",
|
|
394
|
-
"prompt-type": "select",
|
|
395
|
-
"prompt-items": [
|
|
396
|
-
{ value: "always", label: "Always (auto-start on Claude launch)" },
|
|
397
|
-
{ value: "manual", label: "Manual (start via command only)" }
|
|
398
|
-
]
|
|
399
|
-
},
|
|
400
|
-
port: {
|
|
401
|
-
type: "number",
|
|
402
|
-
description: "Dashboard port (default: auto)",
|
|
403
|
-
default: 0,
|
|
404
|
-
"prompt-message": "\u{1F50C} Dashboard port (0 for auto)"
|
|
405
|
-
},
|
|
406
296
|
force: {
|
|
407
297
|
type: "boolean",
|
|
408
298
|
description: "Force installation even if already exists",
|
|
@@ -413,11 +303,6 @@ var require_schema = __commonJS({
|
|
|
413
303
|
description: "Skip installation verification",
|
|
414
304
|
default: false
|
|
415
305
|
},
|
|
416
|
-
projectPath: {
|
|
417
|
-
type: "string",
|
|
418
|
-
description: "Path to the project where spec-workflow should be installed",
|
|
419
|
-
"x-skip-prompt": true
|
|
420
|
-
},
|
|
421
306
|
dry: {
|
|
422
307
|
type: "boolean",
|
|
423
308
|
description: "Dry run mode",
|
|
@@ -1797,91 +1682,11 @@ async function installMcpServer(options) {
|
|
|
1797
1682
|
};
|
|
1798
1683
|
}
|
|
1799
1684
|
|
|
1800
|
-
// packages/ai-toolkit-nx-claude/src/generators/addons/
|
|
1685
|
+
// packages/ai-toolkit-nx-claude/src/generators/addons/aws-log-analyzer-setup.ts
|
|
1801
1686
|
var import_child_process5 = require("child_process");
|
|
1802
1687
|
var import_fs2 = require("fs");
|
|
1803
1688
|
var import_path2 = require("path");
|
|
1804
1689
|
var import_os2 = require("os");
|
|
1805
|
-
var import_fs3 = require("fs");
|
|
1806
|
-
async function setupSpecWorkflow(projectPath, options) {
|
|
1807
|
-
const targetPath = projectPath || process.cwd();
|
|
1808
|
-
const targetDir = (0, import_path2.join)(targetPath, ".spec-workflow");
|
|
1809
|
-
console.log(`
|
|
1810
|
-
\u{1F4C1} Setting up spec-workflow in: ${targetPath}`);
|
|
1811
|
-
const isUpdate = (0, import_fs2.existsSync)(targetDir);
|
|
1812
|
-
if (options.dryRun) {
|
|
1813
|
-
console.log("[DRY-RUN] Would create/update directory: " + targetDir);
|
|
1814
|
-
console.log("[DRY-RUN] Would clone repository: @uniswap/spec-workflow-mcp");
|
|
1815
|
-
console.log("[DRY-RUN] Would copy/update configuration files");
|
|
1816
|
-
console.log("[DRY-RUN] Would add .spec-workflow/ to .gitignore");
|
|
1817
|
-
return {
|
|
1818
|
-
success: true,
|
|
1819
|
-
message: "[DRY-RUN] Spec-workflow setup simulated successfully",
|
|
1820
|
-
projectPath: targetPath
|
|
1821
|
-
};
|
|
1822
|
-
}
|
|
1823
|
-
if (isUpdate) {
|
|
1824
|
-
if (!options.force) {
|
|
1825
|
-
const { confirm } = await require("enquirer").prompt({
|
|
1826
|
-
type: "confirm",
|
|
1827
|
-
name: "confirm",
|
|
1828
|
-
message: `.spec-workflow directory already exists. Update configuration files from repository?`,
|
|
1829
|
-
initial: true
|
|
1830
|
-
});
|
|
1831
|
-
if (!confirm) {
|
|
1832
|
-
return {
|
|
1833
|
-
success: false,
|
|
1834
|
-
message: "Installation cancelled by user",
|
|
1835
|
-
projectPath: targetPath
|
|
1836
|
-
};
|
|
1837
|
-
}
|
|
1838
|
-
}
|
|
1839
|
-
console.log(
|
|
1840
|
-
"\u{1F4DD} Updating configuration files in existing .spec-workflow directory..."
|
|
1841
|
-
);
|
|
1842
|
-
} else {
|
|
1843
|
-
console.log("\u{1F4C1} Creating .spec-workflow directory...");
|
|
1844
|
-
(0, import_fs2.mkdirSync)(targetDir, { recursive: true });
|
|
1845
|
-
}
|
|
1846
|
-
const tempDir = (0, import_path2.join)((0, import_os2.tmpdir)(), `spec-workflow-${Date.now()}`);
|
|
1847
|
-
console.log("\u{1F504} Cloning spec-workflow repository...");
|
|
1848
|
-
const cloneResult = await cloneRepository2(
|
|
1849
|
-
"https://github.com/Uniswap/spec-workflow-mcp.git",
|
|
1850
|
-
tempDir
|
|
1851
|
-
);
|
|
1852
|
-
if (!cloneResult.success) {
|
|
1853
|
-
return {
|
|
1854
|
-
success: false,
|
|
1855
|
-
message: cloneResult.error || "Failed to clone repository",
|
|
1856
|
-
projectPath: targetPath
|
|
1857
|
-
};
|
|
1858
|
-
}
|
|
1859
|
-
console.log("\u{1F4CB} Copying configuration files...");
|
|
1860
|
-
const configSourcePath = (0, import_path2.join)(tempDir, "configs");
|
|
1861
|
-
const copyResult = await copyConfigFiles(configSourcePath, targetDir);
|
|
1862
|
-
console.log("\u{1F9F9} Cleaning up temporary files...");
|
|
1863
|
-
(0, import_fs2.rmSync)(tempDir, { recursive: true, force: true });
|
|
1864
|
-
if (!copyResult.success) {
|
|
1865
|
-
return {
|
|
1866
|
-
success: false,
|
|
1867
|
-
message: copyResult.error || "Failed to copy configuration files",
|
|
1868
|
-
projectPath: targetPath
|
|
1869
|
-
};
|
|
1870
|
-
}
|
|
1871
|
-
console.log("\u{1F4DD} Updating .gitignore...");
|
|
1872
|
-
const gitignoreResult = await updateGitignore(targetPath, ".spec-workflow/");
|
|
1873
|
-
if (!gitignoreResult.success) {
|
|
1874
|
-
console.warn("\u26A0\uFE0F Warning:", gitignoreResult.message);
|
|
1875
|
-
} else {
|
|
1876
|
-
console.log("\u2705", gitignoreResult.message);
|
|
1877
|
-
}
|
|
1878
|
-
return {
|
|
1879
|
-
success: true,
|
|
1880
|
-
message: isUpdate ? "The spec-workflow configuration has been updated with the latest templates and settings" : "The spec-workflow package has been added to the project with automatic agent orchestration enabled",
|
|
1881
|
-
projectPath: targetPath,
|
|
1882
|
-
createdFiles: copyResult.copiedFiles
|
|
1883
|
-
};
|
|
1884
|
-
}
|
|
1885
1690
|
async function cloneRepository2(repositoryUrl, targetDir) {
|
|
1886
1691
|
try {
|
|
1887
1692
|
if (!(0, import_fs2.existsSync)(targetDir)) {
|
|
@@ -1924,97 +1729,12 @@ async function cloneRepository2(repositoryUrl, targetDir) {
|
|
|
1924
1729
|
};
|
|
1925
1730
|
}
|
|
1926
1731
|
}
|
|
1927
|
-
async function updateGitignore(projectPath, pattern) {
|
|
1928
|
-
const gitignorePath = (0, import_path2.join)(projectPath, ".gitignore");
|
|
1929
|
-
try {
|
|
1930
|
-
let gitignoreContent = "";
|
|
1931
|
-
if ((0, import_fs2.existsSync)(gitignorePath)) {
|
|
1932
|
-
gitignoreContent = (0, import_fs2.readFileSync)(gitignorePath, "utf8");
|
|
1933
|
-
}
|
|
1934
|
-
const lines = gitignoreContent.split("\n");
|
|
1935
|
-
const patternExists = lines.some((line) => {
|
|
1936
|
-
const trimmedLine = line.trim();
|
|
1937
|
-
return trimmedLine === pattern || trimmedLine === pattern.replace(/\/$/, "");
|
|
1938
|
-
});
|
|
1939
|
-
if (patternExists) {
|
|
1940
|
-
return {
|
|
1941
|
-
success: true,
|
|
1942
|
-
message: `.gitignore already contains ${pattern}`
|
|
1943
|
-
};
|
|
1944
|
-
}
|
|
1945
|
-
const updatedContent = gitignoreContent.trim() === "" ? pattern : `${gitignoreContent.trim()}
|
|
1946
|
-
|
|
1947
|
-
# Spec workflow configuration
|
|
1948
|
-
${pattern}`;
|
|
1949
|
-
(0, import_fs2.writeFileSync)(gitignorePath, updatedContent + "\n", "utf8");
|
|
1950
|
-
return {
|
|
1951
|
-
success: true,
|
|
1952
|
-
message: `Added ${pattern} to .gitignore`
|
|
1953
|
-
};
|
|
1954
|
-
} catch (error) {
|
|
1955
|
-
console.error("\u274C Failed to update .gitignore:", error.message);
|
|
1956
|
-
return {
|
|
1957
|
-
success: false,
|
|
1958
|
-
message: `Failed to update .gitignore: ${error.message}`
|
|
1959
|
-
};
|
|
1960
|
-
}
|
|
1961
|
-
}
|
|
1962
|
-
async function copyConfigFiles(sourceDir, targetDir) {
|
|
1963
|
-
try {
|
|
1964
|
-
let listFiles2 = function(dir, baseDir = dir, sourceBase = sourceDir) {
|
|
1965
|
-
const files = fs4.readdirSync(dir);
|
|
1966
|
-
for (const file of files) {
|
|
1967
|
-
const filePath = (0, import_path2.join)(dir, file);
|
|
1968
|
-
const stat = fs4.statSync(filePath);
|
|
1969
|
-
if (stat.isDirectory()) {
|
|
1970
|
-
listFiles2(filePath, baseDir, sourceBase);
|
|
1971
|
-
} else {
|
|
1972
|
-
const relativePath = filePath.replace(baseDir + "/", "");
|
|
1973
|
-
const sourceFile = (0, import_path2.join)(sourceBase, relativePath);
|
|
1974
|
-
if ((0, import_fs2.existsSync)(sourceFile)) {
|
|
1975
|
-
copiedFiles.push(relativePath);
|
|
1976
|
-
}
|
|
1977
|
-
}
|
|
1978
|
-
}
|
|
1979
|
-
};
|
|
1980
|
-
var listFiles = listFiles2;
|
|
1981
|
-
if (!(0, import_fs2.existsSync)(sourceDir)) {
|
|
1982
|
-
return {
|
|
1983
|
-
success: false,
|
|
1984
|
-
message: "Source directory not found",
|
|
1985
|
-
error: `The configs directory was not found in the cloned repository`
|
|
1986
|
-
};
|
|
1987
|
-
}
|
|
1988
|
-
(0, import_fs3.cpSync)(sourceDir, targetDir, { recursive: true });
|
|
1989
|
-
const fs4 = require("fs");
|
|
1990
|
-
const copiedFiles = [];
|
|
1991
|
-
listFiles2(targetDir, targetDir, sourceDir);
|
|
1992
|
-
return {
|
|
1993
|
-
success: true,
|
|
1994
|
-
message: "Configuration files copied successfully",
|
|
1995
|
-
copiedFiles
|
|
1996
|
-
};
|
|
1997
|
-
} catch (error) {
|
|
1998
|
-
console.error("\u274C File copy failed:", error.message);
|
|
1999
|
-
return {
|
|
2000
|
-
success: false,
|
|
2001
|
-
message: "Failed to copy configuration files",
|
|
2002
|
-
error: error.message
|
|
2003
|
-
};
|
|
2004
|
-
}
|
|
2005
|
-
}
|
|
2006
|
-
|
|
2007
|
-
// packages/ai-toolkit-nx-claude/src/generators/addons/aws-log-analyzer-setup.ts
|
|
2008
|
-
var import_child_process6 = require("child_process");
|
|
2009
|
-
var import_fs4 = require("fs");
|
|
2010
|
-
var import_path3 = require("path");
|
|
2011
|
-
var import_os3 = require("os");
|
|
2012
1732
|
async function setupAwsLogAnalyzer(options) {
|
|
2013
|
-
const targetPath = (0,
|
|
2014
|
-
const serverPath = (0,
|
|
1733
|
+
const targetPath = (0, import_path2.join)((0, import_os2.homedir)(), ".aws-log-analyzer-mcp");
|
|
1734
|
+
const serverPath = (0, import_path2.join)(targetPath, "src", "cw-mcp-server");
|
|
2015
1735
|
console.log(`
|
|
2016
1736
|
\u{1F4C1} Setting up AWS Log Analyzer MCP in: ${targetPath}`);
|
|
2017
|
-
const isUpdate = (0,
|
|
1737
|
+
const isUpdate = (0, import_fs2.existsSync)(targetPath);
|
|
2018
1738
|
if (options.dryRun) {
|
|
2019
1739
|
console.log("[DRY-RUN] Would clone repository to: " + targetPath);
|
|
2020
1740
|
console.log("[DRY-RUN] MCP server would run from: " + serverPath);
|
|
@@ -2045,10 +1765,10 @@ async function setupAwsLogAnalyzer(options) {
|
|
|
2045
1765
|
}
|
|
2046
1766
|
}
|
|
2047
1767
|
console.log("\u{1F504} Updating AWS Log Analyzer repository...");
|
|
2048
|
-
(0,
|
|
1768
|
+
(0, import_fs2.rmSync)(targetPath, { recursive: true, force: true });
|
|
2049
1769
|
}
|
|
2050
1770
|
console.log("\u{1F4C1} Creating installation directory...");
|
|
2051
|
-
(0,
|
|
1771
|
+
(0, import_fs2.mkdirSync)(targetPath, { recursive: true });
|
|
2052
1772
|
console.log("\u{1F504} Cloning AWS Log Analyzer repository...");
|
|
2053
1773
|
const cloneResult = await cloneRepository2(
|
|
2054
1774
|
"https://github.com/awslabs/Log-Analyzer-with-MCP.git",
|
|
@@ -2063,7 +1783,7 @@ async function setupAwsLogAnalyzer(options) {
|
|
|
2063
1783
|
}
|
|
2064
1784
|
console.log("\u{1F4E6} Installing Python dependencies with uv...");
|
|
2065
1785
|
try {
|
|
2066
|
-
(0,
|
|
1786
|
+
(0, import_child_process5.execSync)("uv sync", {
|
|
2067
1787
|
cwd: targetPath,
|
|
2068
1788
|
stdio: "inherit",
|
|
2069
1789
|
encoding: "utf8"
|
|
@@ -2082,10 +1802,10 @@ async function setupAwsLogAnalyzer(options) {
|
|
|
2082
1802
|
};
|
|
2083
1803
|
}
|
|
2084
1804
|
function getAwsLogAnalyzerPath() {
|
|
2085
|
-
return (0,
|
|
1805
|
+
return (0, import_path2.join)((0, import_os2.homedir)(), ".aws-log-analyzer-mcp");
|
|
2086
1806
|
}
|
|
2087
1807
|
function getAwsLogAnalyzerServerPath() {
|
|
2088
|
-
return (0,
|
|
1808
|
+
return (0, import_path2.join)(getAwsLogAnalyzerPath(), "src", "cw-mcp-server");
|
|
2089
1809
|
}
|
|
2090
1810
|
|
|
2091
1811
|
// packages/ai-toolkit-nx-claude/src/generators/addons/generator.ts
|
|
@@ -2113,8 +1833,6 @@ async function generator(tree, schema) {
|
|
|
2113
1833
|
selectionMode: schema.selectionMode || "all",
|
|
2114
1834
|
force: schema.force || false,
|
|
2115
1835
|
skipVerification: schema.skipVerification || false,
|
|
2116
|
-
dashboardMode: schema.dashboardMode || "always",
|
|
2117
|
-
port: schema.port || 0,
|
|
2118
1836
|
dry: schema.dry || false,
|
|
2119
1837
|
installMode: "default",
|
|
2120
1838
|
installationType: schema.installationType || "global",
|
|
@@ -2180,31 +1898,6 @@ async function installSelectedAddons(tree, options) {
|
|
|
2180
1898
|
continue;
|
|
2181
1899
|
}
|
|
2182
1900
|
await installMcpAddon(addon, options);
|
|
2183
|
-
if (addon.id === "spec-workflow-mcp" && addon.projectSetup && i === selectedAddons.length - 1) {
|
|
2184
|
-
const { setupProject } = await require("enquirer").prompt({
|
|
2185
|
-
type: "confirm",
|
|
2186
|
-
name: "setupProject",
|
|
2187
|
-
message: "\u{1F4C1} Would you like to set up spec-workflow configuration for a particular project?",
|
|
2188
|
-
initial: true
|
|
2189
|
-
});
|
|
2190
|
-
if (setupProject) {
|
|
2191
|
-
const { projectPath } = await require("enquirer").prompt({
|
|
2192
|
-
type: "input",
|
|
2193
|
-
name: "projectPath",
|
|
2194
|
-
message: "\u{1F4C1} Enter the project path where spec-workflow config should be added:",
|
|
2195
|
-
initial: process.cwd(),
|
|
2196
|
-
result: (value) => value || process.cwd()
|
|
2197
|
-
});
|
|
2198
|
-
options.projectPath = projectPath;
|
|
2199
|
-
if (options.dryRun) {
|
|
2200
|
-
console.log(`
|
|
2201
|
-
\u{1F4C1} [DRY-RUN] Would set up project configuration at: ${projectPath}`);
|
|
2202
|
-
}
|
|
2203
|
-
await installProjectSetup(addon, options);
|
|
2204
|
-
} else if (options.dryRun) {
|
|
2205
|
-
console.log("\n\u{1F4C1} [DRY-RUN] Skipping project configuration (user chose not to set up)");
|
|
2206
|
-
}
|
|
2207
|
-
}
|
|
2208
1901
|
results.push({ addon, success: true });
|
|
2209
1902
|
} catch (error) {
|
|
2210
1903
|
console.error(` \u274C Failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
@@ -2315,14 +2008,6 @@ async function installMcpAddon(addon, options) {
|
|
|
2315
2008
|
console.log("\n\u{1F527} Installing MCP server...");
|
|
2316
2009
|
}
|
|
2317
2010
|
const additionalArgs = [];
|
|
2318
|
-
if (addon.id === "spec-workflow-mcp") {
|
|
2319
|
-
if (options.dashboardMode === "always") {
|
|
2320
|
-
additionalArgs.push("--AutoStartDashboard");
|
|
2321
|
-
}
|
|
2322
|
-
if (options.port && options.port > 0) {
|
|
2323
|
-
additionalArgs.push(`--Port=${options.port}`);
|
|
2324
|
-
}
|
|
2325
|
-
}
|
|
2326
2011
|
const installResult = await installMcpServer({
|
|
2327
2012
|
addon,
|
|
2328
2013
|
additionalArgs,
|
|
@@ -2334,16 +2019,6 @@ async function installMcpAddon(addon, options) {
|
|
|
2334
2019
|
}
|
|
2335
2020
|
console.log(`\u2705 ${installResult.message}`);
|
|
2336
2021
|
}
|
|
2337
|
-
async function installProjectSetup(addon, options) {
|
|
2338
|
-
console.log("\n\u{1F527} Setting up project configuration...");
|
|
2339
|
-
const projectPath = options.projectPath || process.cwd();
|
|
2340
|
-
console.log(`\u{1F4CD} Using project directory: ${projectPath}`);
|
|
2341
|
-
const result = await setupSpecWorkflow(projectPath, options);
|
|
2342
|
-
if (!result.success) {
|
|
2343
|
-
throw new Error(result.message);
|
|
2344
|
-
}
|
|
2345
|
-
console.log(`\u2705 ${result.message}`);
|
|
2346
|
-
}
|
|
2347
2022
|
function showGeneralMcpInstructions(installedAddons) {
|
|
2348
2023
|
console.log("\n\u{1F4DA} Getting Started with Your MCPs");
|
|
2349
2024
|
console.log("==================================\n");
|
|
@@ -2357,7 +2032,7 @@ function showGeneralMcpInstructions(installedAddons) {
|
|
|
2357
2032
|
console.log(" https://linear.app/docs/mcp#claude");
|
|
2358
2033
|
console.log(" (Most MCPs follow a similar authentication flow)\n");
|
|
2359
2034
|
const needsAuth = installedAddons.filter(
|
|
2360
|
-
(addon) => addon.id === "slack-mcp" || addon.id === "github-mcp" || addon.id === "aws-log-analyzer-mcp" || addon.id === "
|
|
2035
|
+
(addon) => addon.id === "slack-mcp" || addon.id === "github-mcp" || addon.id === "aws-log-analyzer-mcp" || addon.id === "pulumi-mcp"
|
|
2361
2036
|
);
|
|
2362
2037
|
if (needsAuth.length > 0) {
|
|
2363
2038
|
console.log("\u{1F510} MCPs requiring authentication:");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addon-registry.d.ts","sourceRoot":"","sources":["../../../../../../src/generators/addons/addon-registry.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,4BAA4B;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC;IAC1B,sCAAsC;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,4BAA4B;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,uBAAuB,GAAG,4BAA4B,CAAC;AAEtF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,IAAI,EAAE,YAAY,GAAG,WAAW,GAAG,MAAM,GAAG,eAAe,CAAC;IAC5D,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,GAAG,EAAE,gBAAgB,CAAC;IACtB,gCAAgC;IAChC,YAAY,CAAC,EAAE;QACb,+BAA+B;QAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,+BAA+B;QAC/B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,kCAAkC;IAClC,YAAY,CAAC,EAAE;QACb,8BAA8B;QAC9B,aAAa,EAAE,MAAM,CAAC;QACtB,oCAAoC;QACpC,gBAAgB,EAAE,MAAM,CAAC;QACzB,0CAA0C;QAC1C,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;
|
|
1
|
+
{"version":3,"file":"addon-registry.d.ts","sourceRoot":"","sources":["../../../../../../src/generators/addons/addon-registry.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,4BAA4B;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC;IAC1B,sCAAsC;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,4BAA4B;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,uBAAuB,GAAG,4BAA4B,CAAC;AAEtF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,sCAAsC;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,kBAAkB;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,IAAI,EAAE,YAAY,GAAG,WAAW,GAAG,MAAM,GAAG,eAAe,CAAC;IAC5D,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,GAAG,EAAE,gBAAgB,CAAC;IACtB,gCAAgC;IAChC,YAAY,CAAC,EAAE;QACb,+BAA+B;QAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,+BAA+B;QAC/B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,kCAAkC;IAClC,YAAY,CAAC,EAAE;QACb,8BAA8B;QAC9B,aAAa,EAAE,MAAM,CAAC;QACtB,oCAAoC;QACpC,gBAAgB,EAAE,MAAM,CAAC;QACzB,0CAA0C;QAC1C,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAgGD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAEjE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAEtE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,EAAE,CAEpD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAElE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA4CxE;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC,CAwC1C;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAiC/C"}
|
package/dist/packages/ai-toolkit-nx-claude/src/generators/addons/aws-log-analyzer-setup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aws-log-analyzer-setup.d.ts","sourceRoot":"","sources":["../../../../../../src/generators/addons/aws-log-analyzer-setup.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"aws-log-analyzer-setup.d.ts","sourceRoot":"","sources":["../../../../../../src/generators/addons/aws-log-analyzer-setup.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAiEtD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,qBAAqB,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GACpD,OAAO,CAAC,cAAc,CAAC,CA2FzB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,OAAO,CAGnD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../../../../src/generators/addons/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../../../../src/generators/addons/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAgBtD;;GAEG;AACH,wBAA8B,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmEhG"}
|
package/package.json
CHANGED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import type { AddonsGeneratorSchema } from './schema';
|
|
2
|
-
/**
|
|
3
|
-
* Result of the setup operation
|
|
4
|
-
*/
|
|
5
|
-
export interface SetupResult {
|
|
6
|
-
success: boolean;
|
|
7
|
-
message: string;
|
|
8
|
-
projectPath: string;
|
|
9
|
-
createdFiles?: string[];
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Result of cloning a repository
|
|
13
|
-
*/
|
|
14
|
-
interface CloneResult {
|
|
15
|
-
success: boolean;
|
|
16
|
-
message: string;
|
|
17
|
-
clonePath?: string;
|
|
18
|
-
error?: string;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Result of copying configuration files
|
|
22
|
-
*/
|
|
23
|
-
interface CopyResult {
|
|
24
|
-
success: boolean;
|
|
25
|
-
message: string;
|
|
26
|
-
copiedFiles?: string[];
|
|
27
|
-
error?: string;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Setup spec-workflow in an existing project
|
|
31
|
-
*/
|
|
32
|
-
export declare function setupSpecWorkflow(projectPath: string, options: AddonsGeneratorSchema & {
|
|
33
|
-
dryRun?: boolean;
|
|
34
|
-
}): Promise<SetupResult>;
|
|
35
|
-
/**
|
|
36
|
-
* Clone a git repository to a specified directory
|
|
37
|
-
*/
|
|
38
|
-
export declare function cloneRepository(repositoryUrl: string, targetDir: string): Promise<CloneResult>;
|
|
39
|
-
/**
|
|
40
|
-
* Update .gitignore file to include a pattern if not already present
|
|
41
|
-
*/
|
|
42
|
-
export declare function updateGitignore(projectPath: string, pattern: string): Promise<{
|
|
43
|
-
success: boolean;
|
|
44
|
-
message: string;
|
|
45
|
-
}>;
|
|
46
|
-
/**
|
|
47
|
-
* Copy configuration files from source to target directory
|
|
48
|
-
* This will overwrite existing files but preserve any additional files in the target
|
|
49
|
-
*/
|
|
50
|
-
export declare function copyConfigFiles(sourceDir: string, targetDir: string): Promise<CopyResult>;
|
|
51
|
-
export {};
|
|
52
|
-
//# sourceMappingURL=spec-workflow-setup.d.ts.map
|
package/dist/packages/ai-toolkit-nx-claude/src/generators/addons/spec-workflow-setup.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spec-workflow-setup.d.ts","sourceRoot":"","sources":["../../../../../../src/generators/addons/spec-workflow-setup.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,UAAU,WAAW;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,UAAU,UAAU;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,qBAAqB,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GACpD,OAAO,CAAC,WAAW,CAAC,CAyGtB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,WAAW,CAAC,CAgDtB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA8ChD;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,CAAC,CAwDrB"}
|