dcntui 0.1.8 → 0.1.10
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/README.md +1 -1
- package/dist/commands/add.d.ts +1 -1
- package/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +24 -95
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +30 -7
- package/dist/commands/init.js.map +1 -1
- package/dist/constants.d.ts +1 -2
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -2
- package/dist/constants.js.map +1 -1
- package/dist/index.js +9 -24
- package/dist/index.js.map +1 -1
- package/dist/utils/banner.d.ts.map +1 -1
- package/dist/utils/banner.js +7 -10
- package/dist/utils/banner.js.map +1 -1
- package/dist/utils/config.d.ts +1 -5
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +22 -21
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/detect-css.d.ts +2 -3
- package/dist/utils/detect-css.d.ts.map +1 -1
- package/dist/utils/detect-css.js +5 -114
- package/dist/utils/detect-css.js.map +1 -1
- package/dist/utils/detect-framework.d.ts +1 -1
- package/dist/utils/detect-framework.d.ts.map +1 -1
- package/dist/utils/detect-framework.js +5 -12
- package/dist/utils/detect-framework.js.map +1 -1
- package/dist/utils/detect-package-manager.d.ts.map +1 -1
- package/dist/utils/detect-package-manager.js +15 -25
- package/dist/utils/detect-package-manager.js.map +1 -1
- package/dist/utils/detect-typescript.d.ts.map +1 -1
- package/dist/utils/detect-typescript.js +1 -7
- package/dist/utils/detect-typescript.js.map +1 -1
- package/dist/utils/helpers.d.ts +5 -3
- package/dist/utils/helpers.d.ts.map +1 -1
- package/dist/utils/helpers.js +3 -3
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/registry.d.ts +3 -35
- package/dist/utils/registry.d.ts.map +1 -1
- package/dist/utils/registry.js +58 -120
- package/dist/utils/registry.js.map +1 -1
- package/dist/utils/wizard.d.ts +0 -1
- package/dist/utils/wizard.d.ts.map +1 -1
- package/dist/utils/wizard.js +75 -134
- package/dist/utils/wizard.js.map +1 -1
- package/dist/utils/write-component.d.ts +0 -9
- package/dist/utils/write-component.d.ts.map +1 -1
- package/dist/utils/write-component.js +2 -121
- package/dist/utils/write-component.js.map +1 -1
- package/package.json +9 -8
- package/dist/commands/config.d.ts +0 -2
- package/dist/commands/config.d.ts.map +0 -1
- package/dist/commands/config.js +0 -68
- package/dist/commands/config.js.map +0 -1
- package/dist/commands/doctor.d.ts +0 -2
- package/dist/commands/doctor.d.ts.map +0 -1
- package/dist/commands/doctor.js +0 -348
- package/dist/commands/doctor.js.map +0 -1
- package/dist/commands/list.d.ts +0 -6
- package/dist/commands/list.d.ts.map +0 -1
- package/dist/commands/list.js +0 -104
- package/dist/commands/list.js.map +0 -1
- package/dist/commands/remove.d.ts +0 -2
- package/dist/commands/remove.d.ts.map +0 -1
- package/dist/commands/remove.js +0 -87
- package/dist/commands/remove.js.map +0 -1
- package/dist/commands/search.d.ts +0 -2
- package/dist/commands/search.d.ts.map +0 -1
- package/dist/commands/search.js +0 -124
- package/dist/commands/search.js.map +0 -1
- package/dist/commands/update.d.ts +0 -6
- package/dist/commands/update.d.ts.map +0 -1
- package/dist/commands/update.js +0 -247
- package/dist/commands/update.js.map +0 -1
- package/dist/utils/lock.d.ts +0 -6
- package/dist/utils/lock.d.ts.map +0 -1
- package/dist/utils/lock.js +0 -30
- package/dist/utils/lock.js.map +0 -1
- package/dist/utils/search.d.ts +0 -21
- package/dist/utils/search.d.ts.map +0 -1
- package/dist/utils/search.js +0 -104
- package/dist/utils/search.js.map +0 -1
package/dist/utils/search.js
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
export class SearchError extends Error {
|
|
2
|
-
constructor(message) {
|
|
3
|
-
super(message);
|
|
4
|
-
this.name = 'SearchError';
|
|
5
|
-
}
|
|
6
|
-
}
|
|
7
|
-
export function keywordSearch(query, catalog) {
|
|
8
|
-
const tokens = query.toLowerCase().split(/\s+/).filter(Boolean);
|
|
9
|
-
const scored = catalog
|
|
10
|
-
.map(({ entry, category }) => {
|
|
11
|
-
const haystack = `${entry.name} ${entry.description}`.toLowerCase();
|
|
12
|
-
const matches = tokens.filter((t) => haystack.includes(t));
|
|
13
|
-
return {
|
|
14
|
-
name: entry.name,
|
|
15
|
-
description: entry.description,
|
|
16
|
-
premium: entry.premium,
|
|
17
|
-
category,
|
|
18
|
-
reason: matches.length > 0 ? `Matches: ${matches.join(', ')}` : '',
|
|
19
|
-
score: Math.round((matches.length / tokens.length) * 100)
|
|
20
|
-
};
|
|
21
|
-
})
|
|
22
|
-
.filter((r) => r.score > 0)
|
|
23
|
-
.sort((a, b) => b.score - a.score);
|
|
24
|
-
return scored;
|
|
25
|
-
}
|
|
26
|
-
export async function aiSearch(query, catalog, apiKey) {
|
|
27
|
-
const catalogText = catalog
|
|
28
|
-
.map(({ entry, category }) => `${entry.name} [${category}] — ${entry.description}${entry.premium ? ' (premium)' : ''}`)
|
|
29
|
-
.join('\n');
|
|
30
|
-
const systemPrompt = `You are a UI component search engine. Given a user query and a component catalog, return the most relevant components as a JSON array. Each item must have:
|
|
31
|
-
- "name": exact component name from the catalog
|
|
32
|
-
- "reason": one concise sentence (max 12 words) explaining why it matches
|
|
33
|
-
- "score": integer 0-100 relevance score
|
|
34
|
-
|
|
35
|
-
Return ONLY valid JSON — no markdown, no explanation. Example:
|
|
36
|
-
[{"name":"button","reason":"Core interactive element for any UI","score":95}]
|
|
37
|
-
|
|
38
|
-
If nothing is relevant, return an empty array: []`;
|
|
39
|
-
const userPrompt = `Query: "${query}"\n\nCatalog:\n${catalogText}`;
|
|
40
|
-
let response;
|
|
41
|
-
try {
|
|
42
|
-
response = await fetch('https://api.anthropic.com/v1/messages', {
|
|
43
|
-
method: 'POST',
|
|
44
|
-
headers: {
|
|
45
|
-
'Content-Type': 'application/json',
|
|
46
|
-
'x-api-key': apiKey,
|
|
47
|
-
'anthropic-version': '2023-06-01'
|
|
48
|
-
},
|
|
49
|
-
body: JSON.stringify({
|
|
50
|
-
model: 'claude-sonnet-4-20250514',
|
|
51
|
-
max_tokens: 1024,
|
|
52
|
-
system: systemPrompt,
|
|
53
|
-
messages: [{ role: 'user', content: userPrompt }]
|
|
54
|
-
})
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
catch {
|
|
58
|
-
throw new SearchError('Could not reach the Anthropic API. Falling back to keyword search.');
|
|
59
|
-
}
|
|
60
|
-
if (!response.ok) {
|
|
61
|
-
if (response.status === 401) {
|
|
62
|
-
throw new SearchError('Invalid ANTHROPIC_API_KEY. Falling back to keyword search.');
|
|
63
|
-
}
|
|
64
|
-
throw new SearchError(`Anthropic API error (HTTP ${response.status}). Falling back to keyword search.`);
|
|
65
|
-
}
|
|
66
|
-
let data;
|
|
67
|
-
try {
|
|
68
|
-
data = (await response.json());
|
|
69
|
-
}
|
|
70
|
-
catch {
|
|
71
|
-
throw new SearchError('Could not parse Anthropic API response. Falling back to keyword search.');
|
|
72
|
-
}
|
|
73
|
-
const rawText = data.content
|
|
74
|
-
.filter((b) => b.type === 'text')
|
|
75
|
-
.map((b) => b.text)
|
|
76
|
-
.join('');
|
|
77
|
-
let ranked;
|
|
78
|
-
try {
|
|
79
|
-
const cleaned = rawText.replace(/```json|```/g, '').trim();
|
|
80
|
-
ranked = JSON.parse(cleaned);
|
|
81
|
-
if (!Array.isArray(ranked))
|
|
82
|
-
throw new Error('not an array');
|
|
83
|
-
}
|
|
84
|
-
catch {
|
|
85
|
-
throw new SearchError('AI response was not valid JSON. Falling back to keyword search.');
|
|
86
|
-
}
|
|
87
|
-
const catalogMap = new Map(catalog.map(({ entry, category }) => [entry.name, { entry, category }]));
|
|
88
|
-
const results = [];
|
|
89
|
-
for (const item of ranked) {
|
|
90
|
-
const catalogItem = catalogMap.get(item.name);
|
|
91
|
-
if (!catalogItem)
|
|
92
|
-
continue;
|
|
93
|
-
results.push({
|
|
94
|
-
name: item.name,
|
|
95
|
-
description: catalogItem.entry.description,
|
|
96
|
-
premium: catalogItem.entry.premium,
|
|
97
|
-
category: catalogItem.category,
|
|
98
|
-
reason: item.reason,
|
|
99
|
-
score: Math.max(0, Math.min(100, item.score))
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
return results.sort((a, b) => b.score - a.score);
|
|
103
|
-
}
|
|
104
|
-
//# sourceMappingURL=search.js.map
|
package/dist/utils/search.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/utils/search.ts"],"names":[],"mappings":"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"}
|