@qodalis/mcp-cli 0.0.0-stage → 0.2.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/CHANGELOG.md +50 -0
- package/LICENSE +21 -0
- package/README.md +384 -2
- package/dist/src/cli.d.ts +3 -0
- package/dist/src/cli.d.ts.map +1 -0
- package/dist/src/cli.js +102 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/config.d.ts +60 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +149 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/dev/api.d.ts +94 -0
- package/dist/src/dev/api.d.ts.map +1 -0
- package/dist/src/dev/api.js +425 -0
- package/dist/src/dev/api.js.map +1 -0
- package/dist/src/dev/docs.d.ts +93 -0
- package/dist/src/dev/docs.d.ts.map +1 -0
- package/dist/src/dev/docs.js +275 -0
- package/dist/src/dev/docs.js.map +1 -0
- package/dist/src/dev/prompts.d.ts +11 -0
- package/dist/src/dev/prompts.d.ts.map +1 -0
- package/dist/src/dev/prompts.js +141 -0
- package/dist/src/dev/prompts.js.map +1 -0
- package/dist/src/dev/scaffold.d.ts +55 -0
- package/dist/src/dev/scaffold.d.ts.map +1 -0
- package/dist/src/dev/scaffold.js +213 -0
- package/dist/src/dev/scaffold.js.map +1 -0
- package/dist/src/dev/tools.d.ts +170 -0
- package/dist/src/dev/tools.d.ts.map +1 -0
- package/dist/src/dev/tools.js +258 -0
- package/dist/src/dev/tools.js.map +1 -0
- package/dist/src/env-file.d.ts +9 -0
- package/dist/src/env-file.d.ts.map +1 -0
- package/dist/src/env-file.js +54 -0
- package/dist/src/env-file.js.map +1 -0
- package/dist/src/errors.d.ts +22 -0
- package/dist/src/errors.d.ts.map +1 -0
- package/dist/src/errors.js +115 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/filters.d.ts +13 -0
- package/dist/src/filters.d.ts.map +1 -0
- package/dist/src/filters.js +16 -0
- package/dist/src/filters.js.map +1 -0
- package/dist/src/index.d.ts +12 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +12 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/remote.d.ts +64 -0
- package/dist/src/remote.d.ts.map +1 -0
- package/dist/src/remote.js +242 -0
- package/dist/src/remote.js.map +1 -0
- package/dist/src/server.d.ts +22 -0
- package/dist/src/server.d.ts.map +1 -0
- package/dist/src/server.js +156 -0
- package/dist/src/server.js.map +1 -0
- package/docs/llms-full.txt +1740 -0
- package/package.json +70 -5
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { tmpdir } from 'node:os';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
/**
|
|
5
|
+
* `qcli_api`: TypeScript declarations of the published `@qodalis/*` packages, read from
|
|
6
|
+
* the project's node_modules when installed there, otherwise from the npm registry
|
|
7
|
+
* (`latest`) through a CDN, cached in memory and in a temp directory.
|
|
8
|
+
*/
|
|
9
|
+
export const DEFAULT_API_PACKAGE = '@qodalis/cli-core';
|
|
10
|
+
const FETCH_TIMEOUT_MS = 15_000;
|
|
11
|
+
/** Most `.d.ts` files followed through relative re-exports of one package. */
|
|
12
|
+
const MAX_FILES = 400;
|
|
13
|
+
/** `cli-core`, `@qodalis/cli-core` → `@qodalis/cli-core`; anything outside @qodalis is refused. */
|
|
14
|
+
export const normalizePackageName = (input) => {
|
|
15
|
+
const name = (input ?? '').trim() || DEFAULT_API_PACKAGE;
|
|
16
|
+
const full = name.startsWith('@') ? name : `@qodalis/${name}`;
|
|
17
|
+
if (!/^@qodalis\/[a-z0-9][a-z0-9._-]*$/.test(full)) {
|
|
18
|
+
throw new Error(`"${input}" is not a @qodalis package name (e.g. @qodalis/cli-core, @qodalis/cli).`);
|
|
19
|
+
}
|
|
20
|
+
return full;
|
|
21
|
+
};
|
|
22
|
+
const KEYWORDS = 'interface|type|class|function|enum|const|let|var|namespace|module';
|
|
23
|
+
const DECLARATION = new RegExp(`^(?:export\\s+)?(?:default\\s+)?(?:declare\\s+)?(?:abstract\\s+)?(?:const\\s+(?=enum))?(${KEYWORDS})\\s+([A-Za-z_$][\\w$]*)`);
|
|
24
|
+
const BLOCK_KINDS = new Set(['interface', 'class', 'enum', 'namespace', 'module']);
|
|
25
|
+
/**
|
|
26
|
+
* `source` with comments, strings and template literals replaced by spaces (newlines
|
|
27
|
+
* kept), so offsets match the original and braces in JSDoc or string types do not count.
|
|
28
|
+
*/
|
|
29
|
+
export const blankNonCode = (source) => {
|
|
30
|
+
const out = source.split('');
|
|
31
|
+
const blank = (from, to) => {
|
|
32
|
+
for (let k = from; k < to && k < out.length; k++) {
|
|
33
|
+
if (out[k] !== '\n') {
|
|
34
|
+
out[k] = ' ';
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
for (let i = 0; i < source.length; i++) {
|
|
39
|
+
const ch = source[i];
|
|
40
|
+
const next = source[i + 1];
|
|
41
|
+
if (ch === '/' && next === '/') {
|
|
42
|
+
const eol = source.indexOf('\n', i);
|
|
43
|
+
const end = eol === -1 ? source.length : eol;
|
|
44
|
+
blank(i, end);
|
|
45
|
+
i = end - 1;
|
|
46
|
+
}
|
|
47
|
+
else if (ch === '/' && next === '*') {
|
|
48
|
+
const close = source.indexOf('*/', i + 2);
|
|
49
|
+
const end = close === -1 ? source.length : close + 2;
|
|
50
|
+
blank(i, end);
|
|
51
|
+
i = end - 1;
|
|
52
|
+
}
|
|
53
|
+
else if (ch === '"' || ch === "'" || ch === '`') {
|
|
54
|
+
let j = i + 1;
|
|
55
|
+
for (; j < source.length && source[j] !== ch; j++) {
|
|
56
|
+
if (source[j] === '\\') {
|
|
57
|
+
j++;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
blank(i + 1, j);
|
|
61
|
+
i = j;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return out.join('');
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* End offset of the declaration starting at `start` in comment-free `code`: a block
|
|
68
|
+
* declaration ends at the `}` that closes its body, anything else at the first `;`
|
|
69
|
+
* outside brackets (or at the end of a balanced line followed by a new statement).
|
|
70
|
+
*/
|
|
71
|
+
const declarationEnd = (code, start, block) => {
|
|
72
|
+
let depth = 0;
|
|
73
|
+
let opened = false;
|
|
74
|
+
for (let i = start; i < code.length; i++) {
|
|
75
|
+
const ch = code[i];
|
|
76
|
+
const arrow = code[i - 1] === '=';
|
|
77
|
+
if (ch === '{' || ch === '(' || ch === '[' || (ch === '<' && !arrow)) {
|
|
78
|
+
depth++;
|
|
79
|
+
opened ||= ch === '{';
|
|
80
|
+
}
|
|
81
|
+
else if (ch === '}' || ch === ')' || ch === ']' || (ch === '>' && !arrow)) {
|
|
82
|
+
depth = Math.max(0, depth - 1);
|
|
83
|
+
if (block && opened && depth === 0 && ch === '}') {
|
|
84
|
+
return i + 1;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else if (depth === 0 && ch === ';') {
|
|
88
|
+
return i + 1;
|
|
89
|
+
}
|
|
90
|
+
else if (depth === 0 && !block && ch === '\n') {
|
|
91
|
+
const rest = code.slice(i + 1, i + 200).trimStart();
|
|
92
|
+
if (rest === '' || /^(export|declare|interface|type|import|abstract)\b/.test(rest)) {
|
|
93
|
+
return i;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return code.length;
|
|
98
|
+
};
|
|
99
|
+
/** Start of the JSDoc block directly above `start` (at most one line break between), else `start`. */
|
|
100
|
+
const leadingDoc = (source, start) => {
|
|
101
|
+
const before = source.slice(0, start).trimEnd();
|
|
102
|
+
if (!before.endsWith('*/')) {
|
|
103
|
+
return start;
|
|
104
|
+
}
|
|
105
|
+
const open = before.lastIndexOf('/**');
|
|
106
|
+
if (open === -1 || before.slice(open + 3, -2).includes('*/')) {
|
|
107
|
+
return start;
|
|
108
|
+
}
|
|
109
|
+
const gap = source.slice(before.length, start);
|
|
110
|
+
return gap.split('\n').length <= 2 ? open : start;
|
|
111
|
+
};
|
|
112
|
+
/** Top-level declarations in `source`: kind, name and start offset. */
|
|
113
|
+
const topLevel = (source) => {
|
|
114
|
+
const code = blankNonCode(source);
|
|
115
|
+
const found = [];
|
|
116
|
+
let depth = 0;
|
|
117
|
+
let offset = 0;
|
|
118
|
+
for (const line of code.split('\n')) {
|
|
119
|
+
if (depth === 0) {
|
|
120
|
+
const trimmed = line.trimStart();
|
|
121
|
+
const match = DECLARATION.exec(trimmed);
|
|
122
|
+
if (match) {
|
|
123
|
+
found.push({
|
|
124
|
+
kind: match[1],
|
|
125
|
+
name: match[2],
|
|
126
|
+
start: offset + line.length - trimmed.length,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
for (const ch of line) {
|
|
131
|
+
depth += ch === '{' ? 1 : ch === '}' ? -1 : 0;
|
|
132
|
+
}
|
|
133
|
+
depth = Math.max(0, depth);
|
|
134
|
+
offset += line.length + 1;
|
|
135
|
+
}
|
|
136
|
+
return found;
|
|
137
|
+
};
|
|
138
|
+
/** Every top-level declaration of `symbol` in `source` (overloads and merged interfaces included). */
|
|
139
|
+
export const extractDeclarations = (source, symbol) => {
|
|
140
|
+
const code = blankNonCode(source);
|
|
141
|
+
return topLevel(source)
|
|
142
|
+
.filter((d) => d.name === symbol)
|
|
143
|
+
.map((d) => source
|
|
144
|
+
.slice(leadingDoc(source, d.start), declarationEnd(code, d.start, BLOCK_KINDS.has(d.kind)))
|
|
145
|
+
.trim());
|
|
146
|
+
};
|
|
147
|
+
/** Names of every top-level declaration in the files. */
|
|
148
|
+
export const declaredNames = (sources) => new Set(sources.flatMap((source) => topLevel(source).map((d) => d.name)));
|
|
149
|
+
/** `export { Local as Symbol }` aliases: the local name a public symbol is declared under. */
|
|
150
|
+
export const aliasOf = (sources, symbol) => {
|
|
151
|
+
for (const source of sources) {
|
|
152
|
+
for (const list of source.matchAll(/export\s*(?:type\s*)?\{([^}]*)\}/g)) {
|
|
153
|
+
for (const entry of list[1].split(',')) {
|
|
154
|
+
const m = /^\s*(?:type\s+)?([\w$]+)\s+as\s+([\w$]+)\s*$/.exec(entry);
|
|
155
|
+
if (m && m[2] === symbol && m[1] !== symbol) {
|
|
156
|
+
return m[1];
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return undefined;
|
|
162
|
+
};
|
|
163
|
+
/** Relative module specifiers a .d.ts imports or re-exports from. */
|
|
164
|
+
const relativeSpecifiers = (source) => [...source.matchAll(/(?:from|import)\s*\(?\s*['"](\.{1,2}\/[^'"]+)['"]/g)].map((m) => m[1]);
|
|
165
|
+
/** Finds `symbol` in the package's declaration files. */
|
|
166
|
+
export const lookupSymbol = (types, symbol) => {
|
|
167
|
+
const sources = [...types.files.values()];
|
|
168
|
+
const find = (name) => [...types.files].flatMap(([file, content]) => extractDeclarations(content, name).map((text) => ({ file, text })));
|
|
169
|
+
let declarations = find(symbol);
|
|
170
|
+
if (declarations.length === 0) {
|
|
171
|
+
const local = aliasOf(sources, symbol);
|
|
172
|
+
if (local) {
|
|
173
|
+
declarations = find(local);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
const names = declaredNames(sources);
|
|
177
|
+
const related = new Set();
|
|
178
|
+
for (const { text } of declarations) {
|
|
179
|
+
for (const word of text.match(/\b[A-Za-z_$][\w$]*\b/g) ?? []) {
|
|
180
|
+
if (word !== symbol && names.has(word)) {
|
|
181
|
+
related.add(word);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
const lower = symbol.toLowerCase();
|
|
186
|
+
const suggestions = declarations.length > 0
|
|
187
|
+
? []
|
|
188
|
+
: [...names]
|
|
189
|
+
.filter((n) => {
|
|
190
|
+
const candidate = n.toLowerCase();
|
|
191
|
+
return (candidate.includes(lower) ||
|
|
192
|
+
(candidate.length > 3 && lower.includes(candidate)));
|
|
193
|
+
})
|
|
194
|
+
.sort((a, b) => a.length - b.length || a.localeCompare(b))
|
|
195
|
+
.slice(0, 15);
|
|
196
|
+
return { declarations, related: [...related].sort(), suggestions, types };
|
|
197
|
+
};
|
|
198
|
+
/** The declaration entry of a package.json: `types`, `typings`, `exports["."].types`. */
|
|
199
|
+
export const typesEntry = (pkg) => {
|
|
200
|
+
const dot = pkg.exports?.['.'];
|
|
201
|
+
const fromExports = dot && typeof dot === 'object'
|
|
202
|
+
? dot['types']
|
|
203
|
+
: undefined;
|
|
204
|
+
return (pkg.types ?? pkg.typings ?? fromExports ?? 'index.d.ts').replace(/^\.\//, '');
|
|
205
|
+
};
|
|
206
|
+
/** `x.js` / `x` / `x/` → candidate declaration paths. */
|
|
207
|
+
const declarationCandidates = (specifier) => {
|
|
208
|
+
const base = specifier.replace(/\.(m|c)?js$/, '');
|
|
209
|
+
return [`${base}.d.ts`, `${base}.d.mts`, `${base}/index.d.ts`, specifier];
|
|
210
|
+
};
|
|
211
|
+
/**
|
|
212
|
+
* Loads the entry file and every .d.ts reachable through relative imports/re-exports
|
|
213
|
+
* with `read` (returns undefined for a missing file).
|
|
214
|
+
*/
|
|
215
|
+
export const collectTypeFiles = async (entry, read) => {
|
|
216
|
+
const files = new Map();
|
|
217
|
+
const tried = new Set();
|
|
218
|
+
const queue = [[entry]];
|
|
219
|
+
while (queue.length > 0 && files.size < MAX_FILES) {
|
|
220
|
+
const candidates = queue.shift().filter((c) => !tried.has(c));
|
|
221
|
+
candidates.forEach((c) => tried.add(c));
|
|
222
|
+
for (const candidate of candidates) {
|
|
223
|
+
const content = await read(candidate);
|
|
224
|
+
if (content === undefined) {
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
227
|
+
files.set(candidate, content);
|
|
228
|
+
for (const specifier of relativeSpecifiers(content)) {
|
|
229
|
+
queue.push(declarationCandidates(path.posix.normalize(path.posix.join(path.posix.dirname(candidate), specifier))));
|
|
230
|
+
}
|
|
231
|
+
break;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return files;
|
|
235
|
+
};
|
|
236
|
+
/** `<dir>/node_modules/<pkg>` for `dir` and each of its parents. */
|
|
237
|
+
export const findInstalledPackage = (cwd, name) => {
|
|
238
|
+
let dir = path.resolve(cwd);
|
|
239
|
+
for (;;) {
|
|
240
|
+
const candidate = path.join(dir, 'node_modules', ...name.split('/'));
|
|
241
|
+
if (existsSync(path.join(candidate, 'package.json'))) {
|
|
242
|
+
return candidate;
|
|
243
|
+
}
|
|
244
|
+
const parent = path.dirname(dir);
|
|
245
|
+
if (parent === dir) {
|
|
246
|
+
return undefined;
|
|
247
|
+
}
|
|
248
|
+
dir = parent;
|
|
249
|
+
}
|
|
250
|
+
};
|
|
251
|
+
const readLocal = (root) => async (relative) => {
|
|
252
|
+
const full = path.join(root, relative);
|
|
253
|
+
if (!full.startsWith(root) || !full.match(/\.d\.(m|c)?ts$/)) {
|
|
254
|
+
return undefined;
|
|
255
|
+
}
|
|
256
|
+
try {
|
|
257
|
+
return readFileSync(full, 'utf8');
|
|
258
|
+
}
|
|
259
|
+
catch {
|
|
260
|
+
return undefined;
|
|
261
|
+
}
|
|
262
|
+
};
|
|
263
|
+
const DEFAULT_CDNS = ['https://cdn.jsdelivr.net/npm', 'https://unpkg.com'];
|
|
264
|
+
/**
|
|
265
|
+
* Resolves a package's declaration files: (1) the project's node_modules, (2) an
|
|
266
|
+
* in-memory copy, (3) the registry's `latest` version from the temp-dir cache or a CDN,
|
|
267
|
+
* (4) without network, the newest version in the temp-dir cache.
|
|
268
|
+
*/
|
|
269
|
+
export class ApiSource {
|
|
270
|
+
options;
|
|
271
|
+
memory = new Map();
|
|
272
|
+
constructor(options = {}) {
|
|
273
|
+
this.options = options;
|
|
274
|
+
}
|
|
275
|
+
get(name) {
|
|
276
|
+
const local = findInstalledPackage(this.options.cwd ?? process.cwd(), name);
|
|
277
|
+
if (local) {
|
|
278
|
+
return this.fromDirectory(name, local);
|
|
279
|
+
}
|
|
280
|
+
let pending = this.memory.get(name);
|
|
281
|
+
if (!pending) {
|
|
282
|
+
pending = this.download(name);
|
|
283
|
+
this.memory.set(name, pending);
|
|
284
|
+
pending.catch(() => this.memory.delete(name));
|
|
285
|
+
}
|
|
286
|
+
return pending;
|
|
287
|
+
}
|
|
288
|
+
async fromDirectory(name, root) {
|
|
289
|
+
const pkg = JSON.parse(readFileSync(path.join(root, 'package.json'), 'utf8'));
|
|
290
|
+
const files = await collectTypeFiles(typesEntry(pkg), readLocal(root));
|
|
291
|
+
if (files.size === 0) {
|
|
292
|
+
throw new Error(`${name} in ${root} has no declaration files.`);
|
|
293
|
+
}
|
|
294
|
+
return {
|
|
295
|
+
files,
|
|
296
|
+
package: name,
|
|
297
|
+
source: `node_modules (${root})`,
|
|
298
|
+
version: pkg.version ?? '?',
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
get cacheDir() {
|
|
302
|
+
return this.options.cacheDir === null
|
|
303
|
+
? undefined
|
|
304
|
+
: (this.options.cacheDir ?? path.join(tmpdir(), 'qodalis-mcp-cli'));
|
|
305
|
+
}
|
|
306
|
+
async fetchText(url) {
|
|
307
|
+
const response = await (this.options.fetch ?? fetch)(url, {
|
|
308
|
+
signal: AbortSignal.timeout(FETCH_TIMEOUT_MS),
|
|
309
|
+
});
|
|
310
|
+
if (response.status === 404) {
|
|
311
|
+
return undefined;
|
|
312
|
+
}
|
|
313
|
+
if (!response.ok) {
|
|
314
|
+
throw new Error(`HTTP ${response.status} from ${url}`);
|
|
315
|
+
}
|
|
316
|
+
return response.text();
|
|
317
|
+
}
|
|
318
|
+
async download(name) {
|
|
319
|
+
const registry = this.options.registryUrl ?? 'https://registry.npmjs.org';
|
|
320
|
+
let manifest;
|
|
321
|
+
try {
|
|
322
|
+
const text = await this.fetchText(`${registry}/${name}/latest`);
|
|
323
|
+
if (text === undefined) {
|
|
324
|
+
throw new Error(`${name} is not published on npm.`);
|
|
325
|
+
}
|
|
326
|
+
manifest = JSON.parse(text);
|
|
327
|
+
}
|
|
328
|
+
catch (error) {
|
|
329
|
+
const cached = this.newestCached(name);
|
|
330
|
+
if (cached) {
|
|
331
|
+
this.options.log?.(`api: registry unavailable (${error.message}); using cached ${name}@${cached.version}`);
|
|
332
|
+
return cached;
|
|
333
|
+
}
|
|
334
|
+
throw error;
|
|
335
|
+
}
|
|
336
|
+
const version = manifest.version ?? 'latest';
|
|
337
|
+
const fromCache = this.readCache(name, version);
|
|
338
|
+
if (fromCache) {
|
|
339
|
+
return fromCache;
|
|
340
|
+
}
|
|
341
|
+
const entry = typesEntry(manifest);
|
|
342
|
+
let lastError;
|
|
343
|
+
for (const cdn of this.options.cdns ?? DEFAULT_CDNS) {
|
|
344
|
+
try {
|
|
345
|
+
const base = `${cdn}/${name}@${version}`;
|
|
346
|
+
const files = await collectTypeFiles(entry, async (file) => /\.d\.(m|c)?ts$/.test(file) ? this.fetchText(`${base}/${file}`) : undefined);
|
|
347
|
+
if (files.size === 0) {
|
|
348
|
+
throw new Error(`no declaration file at ${base}/${entry}`);
|
|
349
|
+
}
|
|
350
|
+
const types = { files, package: name, source: base, version };
|
|
351
|
+
this.writeCache(types);
|
|
352
|
+
return types;
|
|
353
|
+
}
|
|
354
|
+
catch (error) {
|
|
355
|
+
lastError = error;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
throw lastError instanceof Error ? lastError : new Error(String(lastError));
|
|
359
|
+
}
|
|
360
|
+
cacheFile(name, version) {
|
|
361
|
+
const dir = this.cacheDir;
|
|
362
|
+
return dir ? path.join(dir, `${name.replace('/', '__')}@${version}.json`) : undefined;
|
|
363
|
+
}
|
|
364
|
+
readCache(name, version) {
|
|
365
|
+
const file = this.cacheFile(name, version);
|
|
366
|
+
try {
|
|
367
|
+
if (!file || !existsSync(file)) {
|
|
368
|
+
return undefined;
|
|
369
|
+
}
|
|
370
|
+
const data = JSON.parse(readFileSync(file, 'utf8'));
|
|
371
|
+
return {
|
|
372
|
+
files: new Map(Object.entries(data)),
|
|
373
|
+
package: name,
|
|
374
|
+
source: `cache (${file})`,
|
|
375
|
+
version,
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
catch {
|
|
379
|
+
return undefined;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
writeCache(types) {
|
|
383
|
+
const file = this.cacheFile(types.package, types.version);
|
|
384
|
+
if (!file) {
|
|
385
|
+
return;
|
|
386
|
+
}
|
|
387
|
+
try {
|
|
388
|
+
mkdirSync(path.dirname(file), { recursive: true });
|
|
389
|
+
writeFileSync(file, JSON.stringify(Object.fromEntries(types.files)));
|
|
390
|
+
}
|
|
391
|
+
catch (error) {
|
|
392
|
+
this.options.log?.(`api: could not cache declarations (${error.message})`);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
newestCached(name) {
|
|
396
|
+
const dir = this.cacheDir;
|
|
397
|
+
if (!dir || !existsSync(dir)) {
|
|
398
|
+
return undefined;
|
|
399
|
+
}
|
|
400
|
+
const prefix = `${name.replace('/', '__')}@`;
|
|
401
|
+
const versions = readdirSync(dir)
|
|
402
|
+
.filter((f) => f.startsWith(prefix) && f.endsWith('.json'))
|
|
403
|
+
.map((f) => f.slice(prefix.length, -'.json'.length))
|
|
404
|
+
.sort((a, b) => a.localeCompare(b, undefined, { numeric: true }));
|
|
405
|
+
const newest = versions.at(-1);
|
|
406
|
+
return newest ? this.readCache(name, newest) : undefined;
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
/** Markdown answer for `qcli_api`. */
|
|
410
|
+
export const formatLookup = (symbol, lookup) => {
|
|
411
|
+
const { types } = lookup;
|
|
412
|
+
const origin = `${types.package}@${types.version} from ${types.source}`;
|
|
413
|
+
if (lookup.declarations.length === 0) {
|
|
414
|
+
const hint = lookup.suggestions.length
|
|
415
|
+
? `Similar names: ${lookup.suggestions.join(', ')}.`
|
|
416
|
+
: 'Search the docs with qcli_docs_search, or try package "@qodalis/cli".';
|
|
417
|
+
return `No declaration named "${symbol}" in ${origin}. ${hint}`;
|
|
418
|
+
}
|
|
419
|
+
const blocks = lookup.declarations.map((d) => `\`\`\`ts\n// ${d.file}\n${d.text}\n\`\`\``);
|
|
420
|
+
const related = lookup.related.length
|
|
421
|
+
? `\n\nRelated declarations (look up with qcli_api): ${lookup.related.join(', ')}`
|
|
422
|
+
: '';
|
|
423
|
+
return `# ${symbol}\n\n${origin}\n\n${blocks.join('\n\n')}${related}`;
|
|
424
|
+
};
|
|
425
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/dev/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The plugin-development guide (`llms-full.txt`): plain markdown with a
|
|
3
|
+
* `# Qodalis CLI plugin development` title, `## ` sections and `### ` topics,
|
|
4
|
+
* each topic self-contained and starting with a one-line summary.
|
|
5
|
+
*/
|
|
6
|
+
export declare const DOCS_TITLE = "# Qodalis CLI plugin development";
|
|
7
|
+
/** How long fetched docs are reused before they are fetched again. */
|
|
8
|
+
export declare const DOCS_TTL_MS: number;
|
|
9
|
+
/** After a failed download the URL is tried again after this long. */
|
|
10
|
+
export declare const DOCS_RETRY_MS: number;
|
|
11
|
+
export type DocTopic = {
|
|
12
|
+
/** Full markdown, heading included */
|
|
13
|
+
content: string;
|
|
14
|
+
section: string;
|
|
15
|
+
/** First prose line after the heading */
|
|
16
|
+
summary: string;
|
|
17
|
+
title: string;
|
|
18
|
+
/** `<section-slug>/<topic-slug>`, unique within the document */
|
|
19
|
+
uri: string;
|
|
20
|
+
};
|
|
21
|
+
export type DocSection = {
|
|
22
|
+
/** Full markdown of the section, topics included */
|
|
23
|
+
content: string;
|
|
24
|
+
slug: string;
|
|
25
|
+
title: string;
|
|
26
|
+
topics: DocTopic[];
|
|
27
|
+
};
|
|
28
|
+
export type Docs = {
|
|
29
|
+
sections: DocSection[];
|
|
30
|
+
/** Where the text came from, e.g. the URL or `bundled snapshot` */
|
|
31
|
+
source: string;
|
|
32
|
+
topics: DocTopic[];
|
|
33
|
+
};
|
|
34
|
+
export declare const slugify: (text: string) => string;
|
|
35
|
+
/** Splits the guide into `## ` sections and `### ` topics; headings inside code fences are ignored. */
|
|
36
|
+
export declare const parseDocs: (markdown: string, source?: string) => Docs;
|
|
37
|
+
/** Lower-case search terms; `ICliModule`, `read-line` and `readLine` all stay searchable. */
|
|
38
|
+
export declare const searchTerms: (query: string) => string[];
|
|
39
|
+
export type SearchHit = {
|
|
40
|
+
excerpt: string;
|
|
41
|
+
score: number;
|
|
42
|
+
topic: DocTopic;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Keyword ranking over topics: a term in the title weighs most, then the summary and
|
|
46
|
+
* the section name, then occurrences in the body (capped); every matched term and an
|
|
47
|
+
* exact phrase match add a bonus, so topics covering the whole query come first.
|
|
48
|
+
*/
|
|
49
|
+
export declare const searchDocs: (docs: Docs, query: string, limit?: number) => SearchHit[];
|
|
50
|
+
export type ReadResult = {
|
|
51
|
+
kind: 'section';
|
|
52
|
+
section: DocSection;
|
|
53
|
+
} | {
|
|
54
|
+
kind: 'topics';
|
|
55
|
+
topics: DocTopic[];
|
|
56
|
+
} | {
|
|
57
|
+
kind: 'not-found';
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* A topic by heading (case-insensitive), `Section › Topic`, `Section/Topic` or its
|
|
61
|
+
* resource path; a whole `## ` section by its heading; else a unique partial match.
|
|
62
|
+
*/
|
|
63
|
+
export declare const readDocs: (docs: Docs, query: string) => ReadResult;
|
|
64
|
+
/** `Section › Topic` lines, grouped by section, for "not found" answers. */
|
|
65
|
+
export declare const listTopics: (docs: Docs) => string;
|
|
66
|
+
/** The `docs/llms-full.txt` bundled with the package (one or two levels above this file). */
|
|
67
|
+
export declare const readBundledDocs: () => string;
|
|
68
|
+
export type DocsSourceOptions = {
|
|
69
|
+
/** Overrides the HTTP client (tests) */
|
|
70
|
+
fetch?: typeof fetch;
|
|
71
|
+
log?: (message: string) => void;
|
|
72
|
+
now?: () => number;
|
|
73
|
+
/** Overrides the bundled snapshot (tests) */
|
|
74
|
+
snapshot?: () => string;
|
|
75
|
+
ttlMs?: number;
|
|
76
|
+
url: string;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* The guide from `url` (cached for {@link DOCS_TTL_MS}), falling back to the last good
|
|
80
|
+
* download and then to the bundled snapshot, so the tools work offline and before the
|
|
81
|
+
* site publishes the file. A response that is not the guide (an HTML page) is ignored.
|
|
82
|
+
*/
|
|
83
|
+
export declare class DocsSource {
|
|
84
|
+
private readonly options;
|
|
85
|
+
private cached;
|
|
86
|
+
private downloaded;
|
|
87
|
+
private loading;
|
|
88
|
+
private snapshotDocs;
|
|
89
|
+
constructor(options: DocsSourceOptions);
|
|
90
|
+
get(): Promise<Docs>;
|
|
91
|
+
private load;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=docs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../../src/dev/docs.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,eAAO,MAAM,UAAU,qCAAqC,CAAC;AAC7D,sEAAsE;AACtE,eAAO,MAAM,WAAW,QAAc,CAAC;AACvC,sEAAsE;AACtE,eAAO,MAAM,aAAa,QAAa,CAAC;AAGxC,MAAM,MAAM,QAAQ,GAAG;IACnB,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,GAAG,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACrB,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,QAAQ,EAAE,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG;IACf,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,QAAQ,EAAE,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,MAAM,MAAM,KAAG,MAKO,CAAC;AAqB/C,uGAAuG;AACvG,eAAO,MAAM,SAAS,GAAI,UAAU,MAAM,EAAE,eAAiB,KAAG,IA2D/D,CAAC;AAQF,6FAA6F;AAC7F,eAAO,MAAM,WAAW,GAAI,OAAO,MAAM,KAAG,MAAM,EAQjD,CAAC;AAcF,MAAM,MAAM,SAAS,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,CAAC;AAkB5E;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,IAAI,EAAE,OAAO,MAAM,EAAE,cAAS,KAAG,SAAS,EAmC1E,CAAC;AAKF,MAAM,MAAM,UAAU,GAChB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,UAAU,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,QAAQ,EAAE,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC;AAE5B;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,MAAM,IAAI,EAAE,OAAO,MAAM,KAAG,UAkCpD,CAAC;AAEF,4EAA4E;AAC5E,eAAO,MAAM,UAAU,GAAI,MAAM,IAAI,KAAG,MAMnB,CAAC;AAEtB,6FAA6F;AAC7F,eAAO,MAAM,eAAe,QAAO,MASlC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC5B,wCAAwC;IACxC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;GAIG;AACH,qBAAa,UAAU;IAMP,OAAO,CAAC,QAAQ,CAAC,OAAO;IALpC,OAAO,CAAC,MAAM,CAA8C;IAC5D,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,YAAY,CAAmB;gBAEV,OAAO,EAAE,iBAAiB;IAEjD,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YASZ,IAAI;CAoCrB"}
|