@tyroneross/navgator 0.1.0
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/.claude-plugin/plugin.json +10 -0
- package/LICENSE +21 -0
- package/README.md +486 -0
- package/agents/architecture-advisor.md +109 -0
- package/commands/nav-check.md +64 -0
- package/commands/nav-connections.md +58 -0
- package/commands/nav-diagram.md +106 -0
- package/commands/nav-export.md +71 -0
- package/commands/nav-impact.md +58 -0
- package/commands/nav-scan.md +46 -0
- package/commands/nav-status.md +44 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +627 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config.d.ts +95 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +262 -0
- package/dist/config.js.map +1 -0
- package/dist/diagram.d.ts +36 -0
- package/dist/diagram.d.ts.map +1 -0
- package/dist/diagram.js +333 -0
- package/dist/diagram.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/scanner.d.ts +57 -0
- package/dist/scanner.d.ts.map +1 -0
- package/dist/scanner.js +282 -0
- package/dist/scanner.js.map +1 -0
- package/dist/scanners/connections/ast-scanner.d.ts +26 -0
- package/dist/scanners/connections/ast-scanner.d.ts.map +1 -0
- package/dist/scanners/connections/ast-scanner.js +430 -0
- package/dist/scanners/connections/ast-scanner.js.map +1 -0
- package/dist/scanners/connections/service-calls.d.ts +14 -0
- package/dist/scanners/connections/service-calls.d.ts.map +1 -0
- package/dist/scanners/connections/service-calls.js +719 -0
- package/dist/scanners/connections/service-calls.js.map +1 -0
- package/dist/scanners/infrastructure/index.d.ts +27 -0
- package/dist/scanners/infrastructure/index.d.ts.map +1 -0
- package/dist/scanners/infrastructure/index.js +233 -0
- package/dist/scanners/infrastructure/index.js.map +1 -0
- package/dist/scanners/packages/npm.d.ts +18 -0
- package/dist/scanners/packages/npm.d.ts.map +1 -0
- package/dist/scanners/packages/npm.js +256 -0
- package/dist/scanners/packages/npm.js.map +1 -0
- package/dist/scanners/packages/pip.d.ts +14 -0
- package/dist/scanners/packages/pip.d.ts.map +1 -0
- package/dist/scanners/packages/pip.js +228 -0
- package/dist/scanners/packages/pip.js.map +1 -0
- package/dist/scanners/prompts/detector.d.ts +119 -0
- package/dist/scanners/prompts/detector.d.ts.map +1 -0
- package/dist/scanners/prompts/detector.js +617 -0
- package/dist/scanners/prompts/detector.js.map +1 -0
- package/dist/scanners/prompts/index.d.ts +51 -0
- package/dist/scanners/prompts/index.d.ts.map +1 -0
- package/dist/scanners/prompts/index.js +340 -0
- package/dist/scanners/prompts/index.js.map +1 -0
- package/dist/scanners/prompts/types.d.ts +127 -0
- package/dist/scanners/prompts/types.d.ts.map +1 -0
- package/dist/scanners/prompts/types.js +37 -0
- package/dist/scanners/prompts/types.js.map +1 -0
- package/dist/setup.d.ts +65 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +261 -0
- package/dist/setup.js.map +1 -0
- package/dist/storage.d.ts +147 -0
- package/dist/storage.d.ts.map +1 -0
- package/dist/storage.js +931 -0
- package/dist/storage.js.map +1 -0
- package/dist/types.d.ts +296 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +55 -0
- package/dist/types.js.map +1 -0
- package/dist/ui-server.d.ts +17 -0
- package/dist/ui-server.d.ts.map +1 -0
- package/dist/ui-server.js +815 -0
- package/dist/ui-server.js.map +1 -0
- package/hooks/hooks.json +57 -0
- package/package.json +80 -0
- package/scripts/ibr-ui-test.mjs +359 -0
- package/scripts/postinstall.cjs +35 -0
- package/skills/architecture-awareness/SKILL.md +141 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt Scanner
|
|
3
|
+
*
|
|
4
|
+
* Comprehensive AI prompt detection and tracking for codebases.
|
|
5
|
+
* Tracks prompt locations, content, purpose, and which AI services they're sent to.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Full prompt content extraction (up to 2000 chars)
|
|
9
|
+
* - Template variable detection
|
|
10
|
+
* - AI provider linkage (Claude, OpenAI, etc.)
|
|
11
|
+
* - Purpose inference from comments and content
|
|
12
|
+
* - Category classification
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* import { scanPrompts } from './scanners/prompts';
|
|
17
|
+
*
|
|
18
|
+
* const result = await scanPrompts('/path/to/project');
|
|
19
|
+
* console.log(`Found ${result.prompts.length} prompts`);
|
|
20
|
+
*
|
|
21
|
+
* for (const prompt of result.prompts) {
|
|
22
|
+
* console.log(`${prompt.name} (${prompt.category})`);
|
|
23
|
+
* console.log(` File: ${prompt.location.file}:${prompt.location.lineStart}`);
|
|
24
|
+
* console.log(` Provider: ${prompt.provider?.provider || 'unknown'}`);
|
|
25
|
+
* console.log(` Purpose: ${prompt.purpose || 'not detected'}`);
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
import { DetectorOptions } from './detector.js';
|
|
30
|
+
import { DetectedPrompt, PromptScanResult } from './types.js';
|
|
31
|
+
import { ScanResult } from '../../types.js';
|
|
32
|
+
export * from './types.js';
|
|
33
|
+
export { PromptDetector, createDetector } from './detector.js';
|
|
34
|
+
/**
|
|
35
|
+
* Scan a project for AI prompts
|
|
36
|
+
*/
|
|
37
|
+
export declare function scanPrompts(projectRoot: string, options?: DetectorOptions): Promise<PromptScanResult>;
|
|
38
|
+
/**
|
|
39
|
+
* Convert detected prompts to NavGator components and connections
|
|
40
|
+
* for integration with the main architecture graph
|
|
41
|
+
*/
|
|
42
|
+
export declare function convertToArchitecture(prompts: DetectedPrompt[]): ScanResult;
|
|
43
|
+
/**
|
|
44
|
+
* Format prompts for CLI output
|
|
45
|
+
*/
|
|
46
|
+
export declare function formatPromptsOutput(result: PromptScanResult): string;
|
|
47
|
+
/**
|
|
48
|
+
* Format a single prompt for detailed view
|
|
49
|
+
*/
|
|
50
|
+
export declare function formatPromptDetail(prompt: DetectedPrompt): string;
|
|
51
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/scanners/prompts/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAkC,eAAe,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EACL,cAAc,EAEd,gBAAgB,EAIjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAGL,UAAU,EAGX,MAAM,gBAAgB,CAAC;AAGxB,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAM/D;;GAEG;AACH,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,gBAAgB,CAAC,CAY3B;AAwCD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,cAAc,EAAE,GACxB,UAAU,CAuHZ;AAMD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CA6EpE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAyEjE"}
|
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt Scanner
|
|
3
|
+
*
|
|
4
|
+
* Comprehensive AI prompt detection and tracking for codebases.
|
|
5
|
+
* Tracks prompt locations, content, purpose, and which AI services they're sent to.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Full prompt content extraction (up to 2000 chars)
|
|
9
|
+
* - Template variable detection
|
|
10
|
+
* - AI provider linkage (Claude, OpenAI, etc.)
|
|
11
|
+
* - Purpose inference from comments and content
|
|
12
|
+
* - Category classification
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* import { scanPrompts } from './scanners/prompts';
|
|
17
|
+
*
|
|
18
|
+
* const result = await scanPrompts('/path/to/project');
|
|
19
|
+
* console.log(`Found ${result.prompts.length} prompts`);
|
|
20
|
+
*
|
|
21
|
+
* for (const prompt of result.prompts) {
|
|
22
|
+
* console.log(`${prompt.name} (${prompt.category})`);
|
|
23
|
+
* console.log(` File: ${prompt.location.file}:${prompt.location.lineStart}`);
|
|
24
|
+
* console.log(` Provider: ${prompt.provider?.provider || 'unknown'}`);
|
|
25
|
+
* console.log(` Purpose: ${prompt.purpose || 'not detected'}`);
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
import { createDetector } from './detector.js';
|
|
30
|
+
import { generateComponentId, generateConnectionId, } from '../../types.js';
|
|
31
|
+
// Re-export types
|
|
32
|
+
export * from './types.js';
|
|
33
|
+
export { PromptDetector, createDetector } from './detector.js';
|
|
34
|
+
// =============================================================================
|
|
35
|
+
// MAIN SCAN FUNCTION
|
|
36
|
+
// =============================================================================
|
|
37
|
+
/**
|
|
38
|
+
* Scan a project for AI prompts
|
|
39
|
+
*/
|
|
40
|
+
export async function scanPrompts(projectRoot, options) {
|
|
41
|
+
const detector = createDetector(options);
|
|
42
|
+
const { prompts, warnings } = await detector.scanProject(projectRoot);
|
|
43
|
+
// Build summary
|
|
44
|
+
const summary = buildSummary(prompts);
|
|
45
|
+
return {
|
|
46
|
+
prompts,
|
|
47
|
+
summary,
|
|
48
|
+
warnings,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Build summary statistics from prompts
|
|
53
|
+
*/
|
|
54
|
+
function buildSummary(prompts) {
|
|
55
|
+
const byProvider = {};
|
|
56
|
+
const byCategory = {};
|
|
57
|
+
let templatesCount = 0;
|
|
58
|
+
let withToolsCount = 0;
|
|
59
|
+
for (const prompt of prompts) {
|
|
60
|
+
// Count by provider
|
|
61
|
+
const provider = prompt.provider?.provider || 'unknown';
|
|
62
|
+
byProvider[provider] = (byProvider[provider] || 0) + 1;
|
|
63
|
+
// Count by category
|
|
64
|
+
const category = prompt.category || 'unknown';
|
|
65
|
+
byCategory[category] = (byCategory[category] || 0) + 1;
|
|
66
|
+
// Count templates
|
|
67
|
+
if (prompt.isTemplate)
|
|
68
|
+
templatesCount++;
|
|
69
|
+
// Count tool-using prompts
|
|
70
|
+
if (prompt.tags.includes('tool-use'))
|
|
71
|
+
withToolsCount++;
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
totalPrompts: prompts.length,
|
|
75
|
+
byProvider,
|
|
76
|
+
byCategory,
|
|
77
|
+
templatesCount,
|
|
78
|
+
withToolsCount,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
// =============================================================================
|
|
82
|
+
// CONVERT TO ARCHITECTURE COMPONENTS/CONNECTIONS
|
|
83
|
+
// =============================================================================
|
|
84
|
+
/**
|
|
85
|
+
* Convert detected prompts to NavGator components and connections
|
|
86
|
+
* for integration with the main architecture graph
|
|
87
|
+
*/
|
|
88
|
+
export function convertToArchitecture(prompts) {
|
|
89
|
+
const components = [];
|
|
90
|
+
const connections = [];
|
|
91
|
+
const timestamp = Date.now();
|
|
92
|
+
for (const prompt of prompts) {
|
|
93
|
+
// Create component for the prompt
|
|
94
|
+
const component = {
|
|
95
|
+
component_id: generateComponentId('prompt', prompt.name),
|
|
96
|
+
name: prompt.name,
|
|
97
|
+
type: 'prompt',
|
|
98
|
+
version: undefined,
|
|
99
|
+
role: {
|
|
100
|
+
purpose: prompt.purpose || `AI prompt (${prompt.category})`,
|
|
101
|
+
layer: 'backend',
|
|
102
|
+
critical: true,
|
|
103
|
+
},
|
|
104
|
+
source: {
|
|
105
|
+
detection_method: 'auto',
|
|
106
|
+
config_files: [prompt.location.file],
|
|
107
|
+
confidence: prompt.confidence,
|
|
108
|
+
},
|
|
109
|
+
connects_to: [],
|
|
110
|
+
connected_from: [],
|
|
111
|
+
status: 'active',
|
|
112
|
+
tags: [
|
|
113
|
+
'prompt',
|
|
114
|
+
prompt.category || 'unknown',
|
|
115
|
+
...(prompt.provider ? [prompt.provider.provider] : []),
|
|
116
|
+
...prompt.tags,
|
|
117
|
+
],
|
|
118
|
+
timestamp,
|
|
119
|
+
last_updated: timestamp,
|
|
120
|
+
// Store rich prompt metadata
|
|
121
|
+
metadata: {
|
|
122
|
+
promptId: prompt.id,
|
|
123
|
+
category: prompt.category,
|
|
124
|
+
isTemplate: prompt.isTemplate,
|
|
125
|
+
variables: prompt.variables.map(v => v.name),
|
|
126
|
+
provider: prompt.provider?.provider,
|
|
127
|
+
model: prompt.provider?.model,
|
|
128
|
+
messageCount: prompt.messages.length,
|
|
129
|
+
hasSystemPrompt: prompt.messages.some(m => m.role === 'system'),
|
|
130
|
+
// Store first message content (truncated)
|
|
131
|
+
systemPrompt: prompt.messages.find(m => m.role === 'system')?.content?.slice(0, 500),
|
|
132
|
+
userTemplate: prompt.messages.find(m => m.role === 'user')?.content?.slice(0, 500),
|
|
133
|
+
},
|
|
134
|
+
};
|
|
135
|
+
components.push(component);
|
|
136
|
+
// Create connection showing where prompt is defined
|
|
137
|
+
const locationConnection = {
|
|
138
|
+
connection_id: generateConnectionId('prompt-location'),
|
|
139
|
+
from: {
|
|
140
|
+
component_id: component.component_id,
|
|
141
|
+
location: {
|
|
142
|
+
file: prompt.location.file,
|
|
143
|
+
line: prompt.location.lineStart,
|
|
144
|
+
function: prompt.location.functionName,
|
|
145
|
+
},
|
|
146
|
+
},
|
|
147
|
+
to: {
|
|
148
|
+
component_id: component.component_id,
|
|
149
|
+
},
|
|
150
|
+
connection_type: 'prompt-location',
|
|
151
|
+
code_reference: {
|
|
152
|
+
file: prompt.location.file,
|
|
153
|
+
symbol: prompt.location.functionName || prompt.name,
|
|
154
|
+
symbol_type: prompt.location.functionName ? 'function' : 'variable',
|
|
155
|
+
line_start: prompt.location.lineStart,
|
|
156
|
+
line_end: prompt.location.lineEnd,
|
|
157
|
+
code_snippet: prompt.rawContent?.slice(0, 200),
|
|
158
|
+
},
|
|
159
|
+
description: `Prompt defined: ${prompt.name}`,
|
|
160
|
+
detected_from: 'Prompt scanner',
|
|
161
|
+
confidence: prompt.confidence,
|
|
162
|
+
timestamp,
|
|
163
|
+
last_verified: timestamp,
|
|
164
|
+
};
|
|
165
|
+
connections.push(locationConnection);
|
|
166
|
+
// Create connections for each usage
|
|
167
|
+
for (const usage of prompt.usedBy) {
|
|
168
|
+
const usageConnection = {
|
|
169
|
+
connection_id: generateConnectionId('prompt-usage'),
|
|
170
|
+
from: {
|
|
171
|
+
component_id: `FILE:${usage.file}`,
|
|
172
|
+
location: {
|
|
173
|
+
file: usage.file,
|
|
174
|
+
line: usage.line,
|
|
175
|
+
function: usage.functionName,
|
|
176
|
+
},
|
|
177
|
+
},
|
|
178
|
+
to: {
|
|
179
|
+
component_id: component.component_id,
|
|
180
|
+
},
|
|
181
|
+
connection_type: 'service-call',
|
|
182
|
+
code_reference: {
|
|
183
|
+
file: usage.file,
|
|
184
|
+
symbol: usage.functionName || `line_${usage.line}`,
|
|
185
|
+
symbol_type: 'function',
|
|
186
|
+
line_start: usage.line,
|
|
187
|
+
code_snippet: usage.callPattern,
|
|
188
|
+
},
|
|
189
|
+
description: `Calls AI (${prompt.provider?.provider || 'unknown'}) with ${prompt.name}`,
|
|
190
|
+
detected_from: 'Prompt usage detection',
|
|
191
|
+
confidence: prompt.confidence,
|
|
192
|
+
timestamp,
|
|
193
|
+
last_verified: timestamp,
|
|
194
|
+
};
|
|
195
|
+
connections.push(usageConnection);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return {
|
|
199
|
+
components,
|
|
200
|
+
connections,
|
|
201
|
+
warnings: [],
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
// =============================================================================
|
|
205
|
+
// FORMATTED OUTPUT
|
|
206
|
+
// =============================================================================
|
|
207
|
+
/**
|
|
208
|
+
* Format prompts for CLI output
|
|
209
|
+
*/
|
|
210
|
+
export function formatPromptsOutput(result) {
|
|
211
|
+
const lines = [];
|
|
212
|
+
lines.push('');
|
|
213
|
+
lines.push('AI PROMPTS DETECTED');
|
|
214
|
+
lines.push('='.repeat(60));
|
|
215
|
+
lines.push('');
|
|
216
|
+
if (result.prompts.length === 0) {
|
|
217
|
+
lines.push('No AI prompts detected.');
|
|
218
|
+
return lines.join('\n');
|
|
219
|
+
}
|
|
220
|
+
// Summary
|
|
221
|
+
lines.push(`Total prompts: ${result.summary.totalPrompts}`);
|
|
222
|
+
lines.push(`Templates: ${result.summary.templatesCount}`);
|
|
223
|
+
lines.push(`With tools: ${result.summary.withToolsCount}`);
|
|
224
|
+
lines.push('');
|
|
225
|
+
// By provider
|
|
226
|
+
lines.push('By Provider:');
|
|
227
|
+
for (const [provider, count] of Object.entries(result.summary.byProvider)) {
|
|
228
|
+
lines.push(` ${provider}: ${count}`);
|
|
229
|
+
}
|
|
230
|
+
lines.push('');
|
|
231
|
+
// By category
|
|
232
|
+
lines.push('By Category:');
|
|
233
|
+
for (const [category, count] of Object.entries(result.summary.byCategory)) {
|
|
234
|
+
lines.push(` ${category}: ${count}`);
|
|
235
|
+
}
|
|
236
|
+
lines.push('');
|
|
237
|
+
// Individual prompts
|
|
238
|
+
lines.push('-'.repeat(60));
|
|
239
|
+
for (const prompt of result.prompts) {
|
|
240
|
+
lines.push('');
|
|
241
|
+
lines.push(`PROMPT: ${prompt.name}`);
|
|
242
|
+
lines.push(` File: ${prompt.location.file}:${prompt.location.lineStart}-${prompt.location.lineEnd}`);
|
|
243
|
+
if (prompt.location.functionName) {
|
|
244
|
+
lines.push(` Function: ${prompt.location.functionName}`);
|
|
245
|
+
}
|
|
246
|
+
lines.push(` Provider: ${prompt.provider?.provider || 'unknown'}`);
|
|
247
|
+
lines.push(` Category: ${prompt.category}`);
|
|
248
|
+
if (prompt.purpose) {
|
|
249
|
+
lines.push(` Purpose: ${prompt.purpose}`);
|
|
250
|
+
}
|
|
251
|
+
if (prompt.isTemplate && prompt.variables.length > 0) {
|
|
252
|
+
lines.push(` Variables: ${prompt.variables.map(v => v.name).join(', ')}`);
|
|
253
|
+
}
|
|
254
|
+
if (prompt.tags.length > 0) {
|
|
255
|
+
lines.push(` Tags: ${prompt.tags.join(', ')}`);
|
|
256
|
+
}
|
|
257
|
+
// Show message preview
|
|
258
|
+
const systemMsg = prompt.messages.find(m => m.role === 'system');
|
|
259
|
+
if (systemMsg) {
|
|
260
|
+
const preview = systemMsg.content.slice(0, 100).replace(/\n/g, ' ');
|
|
261
|
+
lines.push(` System: "${preview}${systemMsg.content.length > 100 ? '...' : ''}"`);
|
|
262
|
+
}
|
|
263
|
+
const userMsg = prompt.messages.find(m => m.role === 'user');
|
|
264
|
+
if (userMsg) {
|
|
265
|
+
const preview = userMsg.content.slice(0, 100).replace(/\n/g, ' ');
|
|
266
|
+
lines.push(` User: "${preview}${userMsg.content.length > 100 ? '...' : ''}"`);
|
|
267
|
+
}
|
|
268
|
+
lines.push(` Confidence: ${(prompt.confidence * 100).toFixed(0)}%`);
|
|
269
|
+
}
|
|
270
|
+
return lines.join('\n');
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Format a single prompt for detailed view
|
|
274
|
+
*/
|
|
275
|
+
export function formatPromptDetail(prompt) {
|
|
276
|
+
const lines = [];
|
|
277
|
+
lines.push('');
|
|
278
|
+
lines.push(`PROMPT: ${prompt.name}`);
|
|
279
|
+
lines.push('='.repeat(60));
|
|
280
|
+
lines.push('');
|
|
281
|
+
lines.push(`ID: ${prompt.id}`);
|
|
282
|
+
lines.push(`File: ${prompt.location.file}`);
|
|
283
|
+
lines.push(`Lines: ${prompt.location.lineStart}-${prompt.location.lineEnd}`);
|
|
284
|
+
if (prompt.location.functionName) {
|
|
285
|
+
lines.push(`Function: ${prompt.location.functionName}`);
|
|
286
|
+
}
|
|
287
|
+
if (prompt.location.className) {
|
|
288
|
+
lines.push(`Class: ${prompt.location.className}`);
|
|
289
|
+
}
|
|
290
|
+
lines.push('');
|
|
291
|
+
lines.push('METADATA');
|
|
292
|
+
lines.push('-'.repeat(40));
|
|
293
|
+
lines.push(`Provider: ${prompt.provider?.provider || 'unknown'}`);
|
|
294
|
+
if (prompt.provider?.model) {
|
|
295
|
+
lines.push(`Model: ${prompt.provider.model}`);
|
|
296
|
+
}
|
|
297
|
+
lines.push(`Category: ${prompt.category}`);
|
|
298
|
+
lines.push(`Is Template: ${prompt.isTemplate}`);
|
|
299
|
+
if (prompt.templateSyntax) {
|
|
300
|
+
lines.push(`Template Syntax: ${prompt.templateSyntax}`);
|
|
301
|
+
}
|
|
302
|
+
if (prompt.purpose) {
|
|
303
|
+
lines.push(`Purpose: ${prompt.purpose}`);
|
|
304
|
+
}
|
|
305
|
+
lines.push(`Confidence: ${(prompt.confidence * 100).toFixed(0)}%`);
|
|
306
|
+
lines.push(`Tags: ${prompt.tags.join(', ') || 'none'}`);
|
|
307
|
+
if (prompt.variables.length > 0) {
|
|
308
|
+
lines.push('');
|
|
309
|
+
lines.push('VARIABLES');
|
|
310
|
+
lines.push('-'.repeat(40));
|
|
311
|
+
for (const variable of prompt.variables) {
|
|
312
|
+
lines.push(` ${variable.name} (${variable.pattern})`);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
lines.push('');
|
|
316
|
+
lines.push('MESSAGES');
|
|
317
|
+
lines.push('-'.repeat(40));
|
|
318
|
+
for (const msg of prompt.messages) {
|
|
319
|
+
lines.push('');
|
|
320
|
+
lines.push(`[${msg.role.toUpperCase()}]`);
|
|
321
|
+
lines.push(msg.content);
|
|
322
|
+
if (msg.truncated) {
|
|
323
|
+
lines.push(`... (truncated, original length: ${msg.originalLength})`);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
if (prompt.usedBy.length > 0) {
|
|
327
|
+
lines.push('');
|
|
328
|
+
lines.push('USAGE LOCATIONS');
|
|
329
|
+
lines.push('-'.repeat(40));
|
|
330
|
+
for (const usage of prompt.usedBy) {
|
|
331
|
+
lines.push(` ${usage.file}:${usage.line}`);
|
|
332
|
+
lines.push(` Call: ${usage.callPattern}`);
|
|
333
|
+
if (usage.functionName) {
|
|
334
|
+
lines.push(` Function: ${usage.functionName}`);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
return lines.join('\n');
|
|
339
|
+
}
|
|
340
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/scanners/prompts/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt Scanner Types
|
|
3
|
+
*
|
|
4
|
+
* Rich types for tracking AI prompts in codebases.
|
|
5
|
+
* Inspired by PromptLayer's registry pattern for version control and metadata.
|
|
6
|
+
*
|
|
7
|
+
* @see https://docs.promptlayer.com/features/prompt-registry/overview
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* A single message in a prompt (system, user, assistant)
|
|
11
|
+
*/
|
|
12
|
+
export interface PromptMessage {
|
|
13
|
+
role: 'system' | 'user' | 'assistant' | 'function' | 'tool';
|
|
14
|
+
content: string;
|
|
15
|
+
name?: string;
|
|
16
|
+
truncated?: boolean;
|
|
17
|
+
originalLength?: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Variables/placeholders in a prompt template
|
|
21
|
+
*/
|
|
22
|
+
export interface PromptVariable {
|
|
23
|
+
name: string;
|
|
24
|
+
pattern: string;
|
|
25
|
+
type?: 'string' | 'array' | 'object' | 'unknown';
|
|
26
|
+
required?: boolean;
|
|
27
|
+
defaultValue?: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* AI provider configuration detected with the prompt
|
|
31
|
+
*/
|
|
32
|
+
export interface PromptProviderConfig {
|
|
33
|
+
provider: 'anthropic' | 'openai' | 'azure' | 'google' | 'cohere' | 'unknown';
|
|
34
|
+
model?: string;
|
|
35
|
+
temperature?: number;
|
|
36
|
+
maxTokens?: number;
|
|
37
|
+
topP?: number;
|
|
38
|
+
stopSequences?: string[];
|
|
39
|
+
tools?: string[];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* A detected prompt in the codebase
|
|
43
|
+
*/
|
|
44
|
+
export interface DetectedPrompt {
|
|
45
|
+
id: string;
|
|
46
|
+
name: string;
|
|
47
|
+
location: {
|
|
48
|
+
file: string;
|
|
49
|
+
lineStart: number;
|
|
50
|
+
lineEnd: number;
|
|
51
|
+
functionName?: string;
|
|
52
|
+
className?: string;
|
|
53
|
+
exportName?: string;
|
|
54
|
+
};
|
|
55
|
+
messages: PromptMessage[];
|
|
56
|
+
rawContent?: string;
|
|
57
|
+
isTemplate: boolean;
|
|
58
|
+
variables: PromptVariable[];
|
|
59
|
+
templateSyntax?: 'jinja2' | 'fstring' | 'mustache' | 'template-literal' | 'unknown';
|
|
60
|
+
provider?: PromptProviderConfig;
|
|
61
|
+
usedBy: PromptUsage[];
|
|
62
|
+
purpose?: string;
|
|
63
|
+
tags: string[];
|
|
64
|
+
category?: PromptCategory;
|
|
65
|
+
confidence: number;
|
|
66
|
+
detectionMethod: 'ast' | 'regex' | 'heuristic';
|
|
67
|
+
timestamp: number;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Where a prompt is used (called)
|
|
71
|
+
*/
|
|
72
|
+
export interface PromptUsage {
|
|
73
|
+
file: string;
|
|
74
|
+
line: number;
|
|
75
|
+
functionName?: string;
|
|
76
|
+
callPattern: string;
|
|
77
|
+
isAsync: boolean;
|
|
78
|
+
hasStreaming: boolean;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Prompt category based on detected purpose
|
|
82
|
+
*/
|
|
83
|
+
export type PromptCategory = 'chat' | 'completion' | 'extraction' | 'classification' | 'summarization' | 'translation' | 'code-generation' | 'code-review' | 'agent' | 'embedding' | 'unknown';
|
|
84
|
+
/**
|
|
85
|
+
* Pattern definition for detecting prompts
|
|
86
|
+
*/
|
|
87
|
+
export interface PromptPattern {
|
|
88
|
+
name: string;
|
|
89
|
+
provider: PromptProviderConfig['provider'];
|
|
90
|
+
patterns: RegExp[];
|
|
91
|
+
messageExtractor?: (content: string, match: RegExpMatchArray) => PromptMessage[] | null;
|
|
92
|
+
configExtractor?: (content: string) => Partial<PromptProviderConfig>;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Result of prompt scanning
|
|
96
|
+
*/
|
|
97
|
+
export interface PromptScanResult {
|
|
98
|
+
prompts: DetectedPrompt[];
|
|
99
|
+
summary: {
|
|
100
|
+
totalPrompts: number;
|
|
101
|
+
byProvider: Record<string, number>;
|
|
102
|
+
byCategory: Record<string, number>;
|
|
103
|
+
templatesCount: number;
|
|
104
|
+
withToolsCount: number;
|
|
105
|
+
};
|
|
106
|
+
warnings: PromptWarning[];
|
|
107
|
+
}
|
|
108
|
+
export interface PromptWarning {
|
|
109
|
+
type: 'parse_error' | 'truncated' | 'ambiguous' | 'deprecated_pattern';
|
|
110
|
+
message: string;
|
|
111
|
+
file?: string;
|
|
112
|
+
line?: number;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Maximum prompt content length to store (characters)
|
|
116
|
+
* Longer prompts are truncated with a note
|
|
117
|
+
*/
|
|
118
|
+
export declare const MAX_PROMPT_LENGTH = 2000;
|
|
119
|
+
/**
|
|
120
|
+
* Maximum number of messages to store per prompt
|
|
121
|
+
*/
|
|
122
|
+
export declare const MAX_MESSAGES_PER_PROMPT = 10;
|
|
123
|
+
/**
|
|
124
|
+
* Keywords that suggest prompt purpose
|
|
125
|
+
*/
|
|
126
|
+
export declare const PURPOSE_KEYWORDS: Record<PromptCategory, string[]>;
|
|
127
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/scanners/prompts/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt Scanner Types
|
|
3
|
+
*
|
|
4
|
+
* Rich types for tracking AI prompts in codebases.
|
|
5
|
+
* Inspired by PromptLayer's registry pattern for version control and metadata.
|
|
6
|
+
*
|
|
7
|
+
* @see https://docs.promptlayer.com/features/prompt-registry/overview
|
|
8
|
+
*/
|
|
9
|
+
// =============================================================================
|
|
10
|
+
// CONSTANTS
|
|
11
|
+
// =============================================================================
|
|
12
|
+
/**
|
|
13
|
+
* Maximum prompt content length to store (characters)
|
|
14
|
+
* Longer prompts are truncated with a note
|
|
15
|
+
*/
|
|
16
|
+
export const MAX_PROMPT_LENGTH = 2000;
|
|
17
|
+
/**
|
|
18
|
+
* Maximum number of messages to store per prompt
|
|
19
|
+
*/
|
|
20
|
+
export const MAX_MESSAGES_PER_PROMPT = 10;
|
|
21
|
+
/**
|
|
22
|
+
* Keywords that suggest prompt purpose
|
|
23
|
+
*/
|
|
24
|
+
export const PURPOSE_KEYWORDS = {
|
|
25
|
+
'chat': ['chat', 'conversation', 'assistant', 'helpful'],
|
|
26
|
+
'completion': ['complete', 'continue', 'generate'],
|
|
27
|
+
'extraction': ['extract', 'parse', 'identify', 'find'],
|
|
28
|
+
'classification': ['classify', 'categorize', 'label', 'determine'],
|
|
29
|
+
'summarization': ['summarize', 'summary', 'tldr', 'condense'],
|
|
30
|
+
'translation': ['translate', 'convert', 'language'],
|
|
31
|
+
'code-generation': ['code', 'implement', 'write function', 'generate code'],
|
|
32
|
+
'code-review': ['review', 'analyze code', 'find bugs', 'improve'],
|
|
33
|
+
'agent': ['tool', 'function', 'action', 'execute'],
|
|
34
|
+
'embedding': ['embed', 'vector', 'similarity'],
|
|
35
|
+
'unknown': [],
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/scanners/prompts/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA4JH,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAE1C;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAqC;IAChE,MAAM,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,CAAC;IACxD,YAAY,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;IAClD,YAAY,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC;IACtD,gBAAgB,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,CAAC;IAClE,eAAe,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC;IAC7D,aAAa,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC;IACnD,iBAAiB,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,CAAC;IAC3E,aAAa,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,CAAC;IACjE,OAAO,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC;IAClD,WAAW,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC;IAC9C,SAAS,EAAE,EAAE;CACd,CAAC"}
|
package/dist/setup.d.ts
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NavGator Setup & Initial Scan
|
|
3
|
+
*
|
|
4
|
+
* Provides a two-phase scanning approach:
|
|
5
|
+
* 1. Fast scan: Quick package detection, basic file structure (instant feedback)
|
|
6
|
+
* 2. Deep scan: Full AST analysis, connection detection, prompt scanning
|
|
7
|
+
*
|
|
8
|
+
* The fast scan uses lightweight regex patterns and file system analysis.
|
|
9
|
+
* The deep scan uses ts-morph AST analysis for accurate detection.
|
|
10
|
+
*/
|
|
11
|
+
export interface SetupOptions {
|
|
12
|
+
/** Project root path */
|
|
13
|
+
projectPath?: string;
|
|
14
|
+
/** Skip the deep scan phase */
|
|
15
|
+
fastOnly?: boolean;
|
|
16
|
+
/** Run deep scan immediately instead of in background */
|
|
17
|
+
deepImmediate?: boolean;
|
|
18
|
+
/** Generate initial diagram */
|
|
19
|
+
generateDiagram?: boolean;
|
|
20
|
+
/** Verbose output */
|
|
21
|
+
verbose?: boolean;
|
|
22
|
+
/** Callback for progress updates */
|
|
23
|
+
onProgress?: (phase: string, message: string) => void;
|
|
24
|
+
}
|
|
25
|
+
export interface SetupResult {
|
|
26
|
+
success: boolean;
|
|
27
|
+
fastScanComplete: boolean;
|
|
28
|
+
deepScanComplete: boolean;
|
|
29
|
+
componentsFound: number;
|
|
30
|
+
connectionsFound: number;
|
|
31
|
+
promptsFound: number;
|
|
32
|
+
diagram?: string;
|
|
33
|
+
duration: {
|
|
34
|
+
fastMs: number;
|
|
35
|
+
deepMs?: number;
|
|
36
|
+
totalMs: number;
|
|
37
|
+
};
|
|
38
|
+
errors: string[];
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Run initial NavGator setup with two-phase scanning
|
|
42
|
+
*/
|
|
43
|
+
export declare function setup(options?: SetupOptions): Promise<SetupResult>;
|
|
44
|
+
/**
|
|
45
|
+
* Run fast scan only (for quick initial view)
|
|
46
|
+
*/
|
|
47
|
+
export declare function fastSetup(projectPath?: string): Promise<SetupResult>;
|
|
48
|
+
/**
|
|
49
|
+
* Run full setup with both phases
|
|
50
|
+
*/
|
|
51
|
+
export declare function fullSetup(projectPath?: string): Promise<SetupResult>;
|
|
52
|
+
/**
|
|
53
|
+
* Check if NavGator has been set up for a project
|
|
54
|
+
*/
|
|
55
|
+
export declare function isSetupComplete(projectPath?: string): Promise<{
|
|
56
|
+
hasScanned: boolean;
|
|
57
|
+
lastScan?: Date;
|
|
58
|
+
phase?: 'fast' | 'deep';
|
|
59
|
+
stale: boolean;
|
|
60
|
+
}>;
|
|
61
|
+
/**
|
|
62
|
+
* Get setup status for display
|
|
63
|
+
*/
|
|
64
|
+
export declare function formatSetupStatus(result: SetupResult): string;
|
|
65
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAUH,MAAM,WAAW,YAAY;IAC3B,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yDAAyD;IACzD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,+BAA+B;IAC/B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,qBAAqB;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oCAAoC;IACpC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACvD;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,KAAK,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAmI5E;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAM1E;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAO1E;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACnE,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC,CAuBD;AAyDD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAsC7D"}
|