@grafema/cli 0.2.12-beta → 0.3.1-beta
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/cli.js +13 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +2 -4
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/analyzeAction.d.ts +5 -3
- package/dist/commands/analyzeAction.d.ts.map +1 -1
- package/dist/commands/analyzeAction.js +109 -151
- package/dist/commands/analyzeAction.js.map +1 -1
- package/dist/commands/check.d.ts +1 -1
- package/dist/commands/check.js +4 -4
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/context.js +2 -2
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/coverage.js +2 -2
- package/dist/commands/coverage.js.map +1 -1
- package/dist/commands/describe.d.ts +13 -0
- package/dist/commands/describe.d.ts.map +1 -0
- package/dist/commands/describe.js +131 -0
- package/dist/commands/describe.js.map +1 -0
- package/dist/commands/doctor/checks.d.ts +6 -1
- package/dist/commands/doctor/checks.d.ts.map +1 -1
- package/dist/commands/doctor/checks.js +128 -13
- package/dist/commands/doctor/checks.js.map +1 -1
- package/dist/commands/doctor.d.ts +10 -9
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +12 -10
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/explain.js +2 -2
- package/dist/commands/explain.js.map +1 -1
- package/dist/commands/file.js +2 -2
- package/dist/commands/file.js.map +1 -1
- package/dist/commands/get.js +2 -2
- package/dist/commands/get.js.map +1 -1
- package/dist/commands/git-ingest.d.ts +6 -0
- package/dist/commands/git-ingest.d.ts.map +1 -0
- package/dist/commands/git-ingest.js +46 -0
- package/dist/commands/git-ingest.js.map +1 -0
- package/dist/commands/impact.d.ts.map +1 -1
- package/dist/commands/impact.js +276 -50
- package/dist/commands/impact.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +20 -22
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/ls.js +2 -2
- package/dist/commands/ls.js.map +1 -1
- package/dist/commands/overview.js +2 -2
- package/dist/commands/overview.js.map +1 -1
- package/dist/commands/query.d.ts +1 -1
- package/dist/commands/query.d.ts.map +1 -1
- package/dist/commands/query.js +169 -7
- package/dist/commands/query.js.map +1 -1
- package/dist/commands/schema.js +2 -2
- package/dist/commands/schema.js.map +1 -1
- package/dist/commands/server.js +11 -6
- package/dist/commands/server.js.map +1 -1
- package/dist/commands/stats.js +2 -2
- package/dist/commands/stats.js.map +1 -1
- package/dist/commands/tldr.d.ts +12 -0
- package/dist/commands/tldr.d.ts.map +1 -0
- package/dist/commands/tldr.js +81 -0
- package/dist/commands/tldr.js.map +1 -0
- package/dist/commands/trace.d.ts +1 -1
- package/dist/commands/trace.d.ts.map +1 -1
- package/dist/commands/trace.js +17 -133
- package/dist/commands/trace.js.map +1 -1
- package/dist/commands/types.js +2 -2
- package/dist/commands/types.js.map +1 -1
- package/dist/commands/who.d.ts +12 -0
- package/dist/commands/who.d.ts.map +1 -0
- package/dist/commands/who.js +184 -0
- package/dist/commands/who.js.map +1 -0
- package/dist/commands/why.d.ts +12 -0
- package/dist/commands/why.d.ts.map +1 -0
- package/dist/commands/why.js +118 -0
- package/dist/commands/why.js.map +1 -0
- package/dist/commands/wtf.d.ts +12 -0
- package/dist/commands/wtf.d.ts.map +1 -0
- package/dist/commands/wtf.js +117 -0
- package/dist/commands/wtf.js.map +1 -0
- package/dist/plugins/builtinPlugins.d.ts +1 -9
- package/dist/plugins/builtinPlugins.d.ts.map +1 -1
- package/dist/plugins/builtinPlugins.js +2 -67
- package/dist/plugins/builtinPlugins.js.map +1 -1
- package/dist/plugins/pluginLoader.d.ts +1 -15
- package/dist/plugins/pluginLoader.d.ts.map +1 -1
- package/dist/plugins/pluginLoader.js +2 -100
- package/dist/plugins/pluginLoader.js.map +1 -1
- package/dist/plugins/pluginResolver.js +3 -3
- package/dist/utils/progressRenderer.d.ts +15 -1
- package/dist/utils/progressRenderer.d.ts.map +1 -1
- package/dist/utils/progressRenderer.js.map +1 -1
- package/dist/utils/queryHints.d.ts +6 -0
- package/dist/utils/queryHints.d.ts.map +1 -0
- package/dist/utils/queryHints.js +36 -0
- package/dist/utils/queryHints.js.map +1 -0
- package/package.json +4 -4
- package/skills/grafema-codebase-analysis/SKILL.md +1 -1
- package/src/cli.ts +14 -0
- package/src/commands/analyze.ts +2 -4
- package/src/commands/analyzeAction.ts +122 -168
- package/src/commands/check.ts +5 -5
- package/src/commands/context.ts +3 -3
- package/src/commands/coverage.ts +2 -2
- package/src/commands/describe.ts +160 -0
- package/src/commands/doctor/checks.ts +153 -10
- package/src/commands/doctor.ts +13 -9
- package/src/commands/explain.ts +2 -2
- package/src/commands/explore.tsx +2 -2
- package/src/commands/file.ts +3 -3
- package/src/commands/get.ts +2 -2
- package/src/commands/git-ingest.ts +49 -0
- package/src/commands/impact.ts +318 -55
- package/src/commands/init.ts +20 -22
- package/src/commands/ls.ts +2 -2
- package/src/commands/overview.ts +2 -2
- package/src/commands/query.ts +197 -7
- package/src/commands/schema.ts +2 -2
- package/src/commands/server.ts +12 -6
- package/src/commands/stats.ts +2 -2
- package/src/commands/tldr.ts +103 -0
- package/src/commands/trace.ts +19 -161
- package/src/commands/types.ts +2 -2
- package/src/commands/who.ts +215 -0
- package/src/commands/why.ts +134 -0
- package/src/commands/wtf.ts +140 -0
- package/src/plugins/builtinPlugins.ts +1 -108
- package/src/plugins/pluginLoader.ts +1 -123
- package/src/plugins/pluginResolver.js +3 -3
- package/src/utils/progressRenderer.ts +15 -1
- package/src/utils/queryHints.ts +46 -0
|
@@ -1,101 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* Handles:
|
|
5
|
-
* - ESM resolve hook for custom plugin @grafema/* imports
|
|
6
|
-
* - Loading custom plugins from .grafema/plugins/
|
|
7
|
-
* - Creating plugin instances from config phases
|
|
8
|
-
*/
|
|
9
|
-
import { join } from 'path';
|
|
10
|
-
import { existsSync, readdirSync } from 'fs';
|
|
11
|
-
import { pathToFileURL } from 'url';
|
|
12
|
-
import { register } from 'node:module';
|
|
13
|
-
import { BUILTIN_PLUGINS } from './builtinPlugins.js';
|
|
14
|
-
/**
|
|
15
|
-
* Register ESM resolve hook so custom plugins can import @grafema/* packages.
|
|
16
|
-
*
|
|
17
|
-
* Plugins in .grafema/plugins/ do `import { Plugin } from '@grafema/core'`,
|
|
18
|
-
* but @grafema/core isn't in the target project's node_modules/.
|
|
19
|
-
* This hook redirects those imports to the CLI's bundled packages.
|
|
20
|
-
*
|
|
21
|
-
* Uses module.register() (stable Node.js 20.6+ API).
|
|
22
|
-
* Safe to call multiple times — subsequent calls add redundant hooks
|
|
23
|
-
* that short-circuit on the same specifiers.
|
|
24
|
-
*/
|
|
25
|
-
let pluginResolverRegistered = false;
|
|
26
|
-
export function registerPluginResolver() {
|
|
27
|
-
if (pluginResolverRegistered)
|
|
28
|
-
return;
|
|
29
|
-
pluginResolverRegistered = true;
|
|
30
|
-
const grafemaPackages = {};
|
|
31
|
-
for (const pkg of ['@grafema/core', '@grafema/types']) {
|
|
32
|
-
try {
|
|
33
|
-
grafemaPackages[pkg] = import.meta.resolve(pkg);
|
|
34
|
-
}
|
|
35
|
-
catch {
|
|
36
|
-
// Package not available from CLI context — skip
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
register(new URL('./pluginResolver.js', import.meta.url), { data: { grafemaPackages } });
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Load custom plugins from .grafema/plugins/ directory
|
|
43
|
-
*/
|
|
44
|
-
export async function loadCustomPlugins(projectPath, log) {
|
|
45
|
-
const pluginsDir = join(projectPath, '.grafema', 'plugins');
|
|
46
|
-
if (!existsSync(pluginsDir)) {
|
|
47
|
-
return {};
|
|
48
|
-
}
|
|
49
|
-
// Ensure @grafema/* imports resolve for custom plugins (REG-380)
|
|
50
|
-
registerPluginResolver();
|
|
51
|
-
const customPlugins = {};
|
|
52
|
-
try {
|
|
53
|
-
const files = readdirSync(pluginsDir).filter((f) => f.endsWith('.js') || f.endsWith('.mjs') || f.endsWith('.cjs'));
|
|
54
|
-
for (const file of files) {
|
|
55
|
-
try {
|
|
56
|
-
const pluginPath = join(pluginsDir, file);
|
|
57
|
-
const pluginUrl = pathToFileURL(pluginPath).href;
|
|
58
|
-
const module = await import(pluginUrl);
|
|
59
|
-
const PluginClass = module.default || module[file.replace(/\.[cm]?js$/, '')];
|
|
60
|
-
if (PluginClass && typeof PluginClass === 'function') {
|
|
61
|
-
const pluginName = PluginClass.name || file.replace(/\.[cm]?js$/, '');
|
|
62
|
-
customPlugins[pluginName] = () => {
|
|
63
|
-
const instance = new PluginClass();
|
|
64
|
-
instance.config.sourceFile = pluginPath;
|
|
65
|
-
return instance;
|
|
66
|
-
};
|
|
67
|
-
log(`Loaded custom plugin: ${pluginName}`);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
catch (err) {
|
|
71
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
72
|
-
console.warn(`Failed to load plugin ${file}: ${message}`);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
catch (err) {
|
|
77
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
78
|
-
console.warn(`Error loading custom plugins: ${message}`);
|
|
79
|
-
}
|
|
80
|
-
return customPlugins;
|
|
81
|
-
}
|
|
82
|
-
export function createPlugins(config, customPlugins = {}, verbose = false) {
|
|
83
|
-
const plugins = [];
|
|
84
|
-
const phases = ['discovery', 'indexing', 'analysis', 'enrichment', 'validation'];
|
|
85
|
-
for (const phase of phases) {
|
|
86
|
-
const names = config[phase] || [];
|
|
87
|
-
for (const name of names) {
|
|
88
|
-
// Check built-in first, then custom
|
|
89
|
-
const factory = BUILTIN_PLUGINS[name] || customPlugins[name];
|
|
90
|
-
if (factory) {
|
|
91
|
-
plugins.push(factory());
|
|
92
|
-
}
|
|
93
|
-
else if (verbose) {
|
|
94
|
-
// Only show plugin warning in verbose mode
|
|
95
|
-
console.warn(`Plugin not found: ${name} (skipping). Check .grafema/config.yaml or add to .grafema/plugins/`);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
return plugins;
|
|
100
|
-
}
|
|
1
|
+
export {};
|
|
2
|
+
// Deleted: plugin loading moved to grafema-orchestrator (Rust).
|
|
101
3
|
//# sourceMappingURL=pluginLoader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pluginLoader.js","sourceRoot":"","sources":["../../src/plugins/pluginLoader.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"pluginLoader.js","sourceRoot":"","sources":["../../src/plugins/pluginLoader.ts"],"names":[],"mappings":";AAAA,gEAAgE"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* ESM resolve hook for custom Grafema plugins.
|
|
3
3
|
*
|
|
4
|
-
* Allows plugins in .grafema/plugins/ to `import { Plugin } from '@grafema/
|
|
5
|
-
* without requiring @grafema/
|
|
4
|
+
* Allows plugins in .grafema/plugins/ to `import { Plugin } from '@grafema/util'`
|
|
5
|
+
* without requiring @grafema/util in the target project's node_modules/.
|
|
6
6
|
*
|
|
7
7
|
* The hook maps @grafema/* bare specifiers to the actual package URLs
|
|
8
8
|
* within the CLI's dependency tree.
|
|
@@ -26,7 +26,7 @@ export function initialize(data) {
|
|
|
26
26
|
* Resolve hook — intercepts bare specifier imports for @grafema/* packages
|
|
27
27
|
* and redirects them to the CLI's bundled versions.
|
|
28
28
|
*
|
|
29
|
-
* Only exact package name matches are handled (e.g. '@grafema/
|
|
29
|
+
* Only exact package name matches are handled (e.g. '@grafema/util').
|
|
30
30
|
* All other specifiers pass through to the default resolver.
|
|
31
31
|
*/
|
|
32
32
|
export function resolve(specifier, context, next) {
|
|
@@ -14,7 +14,21 @@
|
|
|
14
14
|
* console.log(renderer.finish(elapsed));
|
|
15
15
|
* ```
|
|
16
16
|
*/
|
|
17
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Progress information from the analysis pipeline.
|
|
19
|
+
* Defined locally to avoid dependency on @grafema/util.
|
|
20
|
+
*/
|
|
21
|
+
export interface ProgressInfo {
|
|
22
|
+
phase: string;
|
|
23
|
+
currentPlugin?: string;
|
|
24
|
+
message?: string;
|
|
25
|
+
servicesDiscovered?: number;
|
|
26
|
+
servicesAnalyzed?: number;
|
|
27
|
+
totalServices?: number;
|
|
28
|
+
totalFiles?: number;
|
|
29
|
+
processedFiles?: number;
|
|
30
|
+
currentService?: string;
|
|
31
|
+
}
|
|
18
32
|
/**
|
|
19
33
|
* Options for creating a ProgressRenderer instance.
|
|
20
34
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progressRenderer.d.ts","sourceRoot":"","sources":["../../src/utils/progressRenderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,
|
|
1
|
+
{"version":3,"file":"progressRenderer.d.ts","sourceRoot":"","sources":["../../src/utils/progressRenderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,wEAAwE;IACxE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED;;;;;;GAMG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAA+E;IAC7F,OAAO,CAAC,iBAAiB,CAAc;IACvC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,aAAa,CAAsD;IAC3E,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,SAAS,CAAa;gBAElB,OAAO,CAAC,EAAE,uBAAuB;IAO7C;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IA0DhC;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAKpD;;OAEG;IACH,OAAO,CAAC,OAAO;IAaf,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACH,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,oBAAoB;IAK5B;;OAEG;IACH,OAAO,CAAC,WAAW;IASnB;;OAEG;IACH,OAAO,CAAC,YAAY;IAUpB;;OAEG;IACH,OAAO,CAAC,aAAa;IAOrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4C3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;;;OAIG;IACH,MAAM,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM;IAIvC;;;OAGG;IACH,QAAQ,IAAI;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,cAAc,EAAE,MAAM,CAAC;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,gBAAgB,EAAE,MAAM,CAAC;QACzB,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB;CAeF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"progressRenderer.js","sourceRoot":"","sources":["../../src/utils/progressRenderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"progressRenderer.js","sourceRoot":"","sources":["../../src/utils/progressRenderer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function extractQueriedTypes(query: string): {
|
|
2
|
+
nodeTypes: string[];
|
|
3
|
+
edgeTypes: string[];
|
|
4
|
+
};
|
|
5
|
+
export declare function findSimilarTypes(queriedType: string, availableTypes: string[], maxDistance?: number): string[];
|
|
6
|
+
//# sourceMappingURL=queryHints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryHints.d.ts","sourceRoot":"","sources":["../../src/utils/queryHints.ts"],"names":[],"mappings":"AASA,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAkB/F;AAED,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EAAE,EACxB,WAAW,GAAE,MAAU,GACtB,MAAM,EAAE,CAYV"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query hint utilities for the CLI raw query path.
|
|
3
|
+
*
|
|
4
|
+
* Note: extractQueriedTypes() is intentionally duplicated from packages/mcp/src/utils.ts.
|
|
5
|
+
* The CLI cannot import @grafema/mcp (dependency direction). If the Datalog syntax changes,
|
|
6
|
+
* both copies must be updated.
|
|
7
|
+
*/
|
|
8
|
+
import { levenshtein } from '@grafema/util';
|
|
9
|
+
export function extractQueriedTypes(query) {
|
|
10
|
+
const nodeTypes = [];
|
|
11
|
+
const edgeTypes = [];
|
|
12
|
+
// Match node(VAR, "TYPE") — only working node predicate.
|
|
13
|
+
// type(VAR, "TYPE") is excluded: Rust evaluator has no "type" branch.
|
|
14
|
+
const nodeRegex = /\bnode\([^,)]+,\s*"([^"]+)"\)/g;
|
|
15
|
+
let m;
|
|
16
|
+
while ((m = nodeRegex.exec(query)) !== null) {
|
|
17
|
+
nodeTypes.push(m[1]);
|
|
18
|
+
}
|
|
19
|
+
const edgeRegex = /\b(?:edge|incoming)\([^,)]+,\s*[^,)]+,\s*"([^"]+)"\)/g;
|
|
20
|
+
while ((m = edgeRegex.exec(query)) !== null) {
|
|
21
|
+
edgeTypes.push(m[1]);
|
|
22
|
+
}
|
|
23
|
+
return { nodeTypes, edgeTypes };
|
|
24
|
+
}
|
|
25
|
+
export function findSimilarTypes(queriedType, availableTypes, maxDistance = 2) {
|
|
26
|
+
const queriedLower = queriedType.toLowerCase();
|
|
27
|
+
const similar = [];
|
|
28
|
+
for (const type of availableTypes) {
|
|
29
|
+
const dist = levenshtein(queriedLower, type.toLowerCase());
|
|
30
|
+
if (dist <= maxDistance && (dist > 0 || queriedType !== type)) {
|
|
31
|
+
similar.push(type);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return similar;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=queryHints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queryHints.js","sourceRoot":"","sources":["../../src/utils/queryHints.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,yDAAyD;IACzD,sEAAsE;IACtE,MAAM,SAAS,GAAG,gCAAgC,CAAC;IACnD,IAAI,CAAyB,CAAC;IAC9B,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC5C,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,SAAS,GAAG,uDAAuD,CAAC;IAC1E,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC5C,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,WAAmB,EACnB,cAAwB,EACxB,cAAsB,CAAC;IAEvB,MAAM,YAAY,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAC/C,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3D,IAAI,IAAI,IAAI,WAAW,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,WAAW,KAAK,IAAI,CAAC,EAAE,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grafema/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1-beta",
|
|
4
4
|
"description": "CLI for Grafema code analysis toolkit",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/cli.js",
|
|
@@ -35,9 +35,9 @@
|
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"commander": "^13.0.0",
|
|
37
37
|
"yaml": "^2.8.2",
|
|
38
|
-
"@grafema/api": "0.
|
|
39
|
-
"@grafema/
|
|
40
|
-
"@grafema/types": "0.
|
|
38
|
+
"@grafema/api": "0.3.1-beta",
|
|
39
|
+
"@grafema/util": "0.3.1-beta",
|
|
40
|
+
"@grafema/types": "0.3.1-beta"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@types/node": "^25.0.8",
|
package/src/cli.ts
CHANGED
|
@@ -17,6 +17,11 @@ import { getCommand } from './commands/get.js';
|
|
|
17
17
|
import { traceCommand } from './commands/trace.js';
|
|
18
18
|
import { impactCommand } from './commands/impact.js';
|
|
19
19
|
import { contextCommand } from './commands/context.js';
|
|
20
|
+
import { describeCommand } from './commands/describe.js';
|
|
21
|
+
import { tldrCommand } from './commands/tldr.js';
|
|
22
|
+
import { wtfCommand } from './commands/wtf.js';
|
|
23
|
+
import { whoCommand } from './commands/who.js';
|
|
24
|
+
import { whyCommand } from './commands/why.js';
|
|
20
25
|
|
|
21
26
|
import { statsCommand } from './commands/stats.js';
|
|
22
27
|
import { checkCommand } from './commands/check.js';
|
|
@@ -27,6 +32,7 @@ import { schemaCommand } from './commands/schema.js';
|
|
|
27
32
|
import { explainCommand } from './commands/explain.js';
|
|
28
33
|
import { fileCommand } from './commands/file.js';
|
|
29
34
|
import { setupSkillCommand } from './commands/setup-skill.js';
|
|
35
|
+
import { gitIngestCommand } from './commands/git-ingest.js';
|
|
30
36
|
|
|
31
37
|
// Read version from package.json
|
|
32
38
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
@@ -39,12 +45,19 @@ program
|
|
|
39
45
|
.description('Grafema code analysis CLI')
|
|
40
46
|
.version(pkg.version);
|
|
41
47
|
|
|
48
|
+
// Human-first commands
|
|
49
|
+
program.addCommand(tldrCommand);
|
|
50
|
+
program.addCommand(wtfCommand);
|
|
51
|
+
program.addCommand(whoCommand);
|
|
52
|
+
program.addCommand(whyCommand);
|
|
53
|
+
|
|
42
54
|
// Commands in logical order
|
|
43
55
|
program.addCommand(initCommand);
|
|
44
56
|
program.addCommand(analyzeCommand);
|
|
45
57
|
program.addCommand(overviewCommand);
|
|
46
58
|
program.addCommand(queryCommand);
|
|
47
59
|
program.addCommand(contextCommand);
|
|
60
|
+
program.addCommand(describeCommand);
|
|
48
61
|
program.addCommand(typesCommand);
|
|
49
62
|
program.addCommand(lsCommand);
|
|
50
63
|
program.addCommand(getCommand);
|
|
@@ -60,5 +73,6 @@ program.addCommand(schemaCommand);
|
|
|
60
73
|
program.addCommand(explainCommand);
|
|
61
74
|
program.addCommand(fileCommand);
|
|
62
75
|
program.addCommand(setupSkillCommand);
|
|
76
|
+
program.addCommand(gitIngestCommand);
|
|
63
77
|
|
|
64
78
|
program.parse();
|
package/src/commands/analyze.ts
CHANGED
|
@@ -20,7 +20,7 @@ export const analyzeCommand = new Command('analyze')
|
|
|
20
20
|
.option('--log-level <level>', 'Set log level (silent, errors, warnings, info, debug)')
|
|
21
21
|
.option('--log-file <path>', 'Write all log output to a file')
|
|
22
22
|
.option('--strict', 'Enable strict mode (fail on unresolved references)')
|
|
23
|
-
.option('--auto-start', '
|
|
23
|
+
.option('--no-auto-start', 'Do not auto-start RFDB server (require manual start)')
|
|
24
24
|
.addHelpText('after', `
|
|
25
25
|
Examples:
|
|
26
26
|
grafema analyze Analyze current project
|
|
@@ -31,8 +31,6 @@ Examples:
|
|
|
31
31
|
grafema analyze --debug Write diagnostics.log for debugging
|
|
32
32
|
grafema analyze --log-file out.log Write all logs to a file
|
|
33
33
|
grafema analyze --strict Fail on unresolved references (debugging)
|
|
34
|
-
grafema analyze --auto-start
|
|
35
|
-
|
|
36
|
-
Note: Start the server first with: grafema server start
|
|
34
|
+
grafema analyze --no-auto-start Require manual server start
|
|
37
35
|
`)
|
|
38
36
|
.action(analyzeAction);
|