Files
2026-07-31 13:12:54 -04:00

53 lines
2.4 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { z } from 'zod';
import { config } from '../../config.js';
import { detectProject, detectWorkspace, resolvePackage, summarizeDetection, summarizeWorkspace, } from '../../lib/frameworks/detect.js';
import { errorResult, jsonResult, toErrorMessage } from '../shared.js';
export function registerDetectFrameworkTool(server) {
server.registerTool('detect_framework', {
title: 'Detect Framework',
description: 'Inspect the workspace (or a monorepo package) and report which framework adapter(s) were detected: laravel, codeigniter, symfony, django, rails, react, vue, nuxt, a backend+frontend combination, or generic. Call this first.',
inputSchema: {
package: z
.string()
.optional()
.describe('Optional monorepo package name/path to inspect instead of the workspace root.'),
includeWorkspace: z
.boolean()
.optional()
.default(false)
.describe('If true, also include a packages[] summary from detect_workspace.'),
},
}, async ({ package: packageName, includeWorkspace }) => {
try {
const root = packageName
? resolvePackage(config.workspaceRoot, packageName).pkg.absolutePath
: config.workspaceRoot;
const detected = detectProject(root);
const summary = summarizeDetection(detected);
if (includeWorkspace) {
summary.workspace = summarizeWorkspace(detectWorkspace(config.workspaceRoot));
}
if (packageName)
summary.package = packageName;
return jsonResult(summary);
}
catch (error) {
return errorResult(toErrorMessage(error));
}
});
}
export function registerDetectWorkspaceTool(server) {
server.registerTool('detect_workspace', {
title: 'Detect Workspace Packages',
description: 'Scan the workspace for monorepo packages (apps/*, packages/*, services/*, frontend/client/web, package.json workspaces, pnpm-workspace.yaml) and report each packages detected framework adapter(s).',
inputSchema: {},
}, async () => {
try {
return jsonResult(summarizeWorkspace(detectWorkspace(config.workspaceRoot)));
}
catch (error) {
return errorResult(toErrorMessage(error));
}
});
}
//# sourceMappingURL=detectFramework.js.map