recker 1.0.32 → 1.0.33-next.bbc56eb

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.
Files changed (46) hide show
  1. package/dist/cli/index.js +2354 -39
  2. package/dist/cli/tui/shell-search.js +10 -8
  3. package/dist/cli/tui/shell.d.ts +29 -0
  4. package/dist/cli/tui/shell.js +1733 -9
  5. package/dist/mcp/search/hybrid-search.js +4 -2
  6. package/dist/seo/analyzer.d.ts +7 -0
  7. package/dist/seo/analyzer.js +200 -4
  8. package/dist/seo/rules/ai-search.d.ts +2 -0
  9. package/dist/seo/rules/ai-search.js +423 -0
  10. package/dist/seo/rules/canonical.d.ts +12 -0
  11. package/dist/seo/rules/canonical.js +249 -0
  12. package/dist/seo/rules/crawl.js +113 -0
  13. package/dist/seo/rules/cwv.js +0 -95
  14. package/dist/seo/rules/i18n.js +27 -0
  15. package/dist/seo/rules/images.js +23 -27
  16. package/dist/seo/rules/index.js +14 -0
  17. package/dist/seo/rules/internal-linking.js +6 -6
  18. package/dist/seo/rules/links.js +321 -0
  19. package/dist/seo/rules/meta.js +24 -0
  20. package/dist/seo/rules/mobile.js +0 -20
  21. package/dist/seo/rules/performance.js +124 -0
  22. package/dist/seo/rules/redirects.d.ts +16 -0
  23. package/dist/seo/rules/redirects.js +193 -0
  24. package/dist/seo/rules/resources.d.ts +2 -0
  25. package/dist/seo/rules/resources.js +373 -0
  26. package/dist/seo/rules/security.js +290 -0
  27. package/dist/seo/rules/technical-advanced.d.ts +10 -0
  28. package/dist/seo/rules/technical-advanced.js +283 -0
  29. package/dist/seo/rules/technical.js +74 -18
  30. package/dist/seo/rules/types.d.ts +103 -3
  31. package/dist/seo/seo-spider.d.ts +2 -0
  32. package/dist/seo/seo-spider.js +47 -2
  33. package/dist/seo/types.d.ts +48 -28
  34. package/dist/seo/utils/index.d.ts +1 -0
  35. package/dist/seo/utils/index.js +1 -0
  36. package/dist/seo/utils/similarity.d.ts +47 -0
  37. package/dist/seo/utils/similarity.js +273 -0
  38. package/dist/seo/validators/index.d.ts +3 -0
  39. package/dist/seo/validators/index.js +3 -0
  40. package/dist/seo/validators/llms-txt.d.ts +57 -0
  41. package/dist/seo/validators/llms-txt.js +317 -0
  42. package/dist/seo/validators/robots.d.ts +54 -0
  43. package/dist/seo/validators/robots.js +382 -0
  44. package/dist/seo/validators/sitemap.d.ts +69 -0
  45. package/dist/seo/validators/sitemap.js +424 -0
  46. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
1
  import { createHybridSearch, createEmbedder, isFastembedAvailable } from '../../mcp/search/index.js';
2
+ import { loadEmbeddings } from '../../mcp/embeddings-loader.js';
2
3
  import { readFileSync, readdirSync, statSync, existsSync } from 'fs';
3
4
  import { join, relative, extname, basename, dirname } from 'path';
4
5
  import { fileURLToPath } from 'url';
@@ -51,7 +52,7 @@ export class ShellSearch {
51
52
  this.hasSemanticSearch = true;
52
53
  }
53
54
  this.updateSpinner('Indexing documentation...');
54
- this.buildIndex();
55
+ await this.buildIndex();
55
56
  this.updateSpinner('Finalizing search index...');
56
57
  await this.hybridSearch.initialize(this.docsIndex);
57
58
  this.initialized = true;
@@ -281,16 +282,16 @@ const { results, stats } = await client.batch([
281
282
  }
282
283
  return candidates[0];
283
284
  }
284
- buildIndex() {
285
- this.indexDocsFromEmbeddings();
285
+ async buildIndex() {
286
+ await this.indexDocsFromEmbeddings();
286
287
  this.indexExamples();
287
288
  this.indexTypes();
288
289
  }
289
- indexDocsFromEmbeddings() {
290
+ async indexDocsFromEmbeddings() {
290
291
  try {
291
- const embeddingsPath = join(dirname(fileURLToPath(import.meta.url)), '../../mcp/data/embeddings.json');
292
- if (existsSync(embeddingsPath)) {
293
- const data = JSON.parse(readFileSync(embeddingsPath, 'utf-8'));
292
+ this.updateSpinner('Loading documentation index...');
293
+ const data = await loadEmbeddings({ debug: false });
294
+ if (data && data.documents && data.documents.length > 0) {
294
295
  for (const doc of data.documents) {
295
296
  let content = '';
296
297
  if (!doc.section) {
@@ -313,7 +314,8 @@ const { results, stats } = await client.batch([
313
314
  return;
314
315
  }
315
316
  }
316
- catch {
317
+ catch (error) {
318
+ this.updateSpinner('Downloading documentation index failed, trying filesystem...');
317
319
  }
318
320
  this.indexDocsFromFilesystem();
319
321
  }
@@ -51,8 +51,16 @@ export declare class RekShell {
51
51
  private runDNS;
52
52
  private runDNSPropagation;
53
53
  private runDnsEmailCheck;
54
+ private runDnsHealth;
55
+ private runDnsSpf;
56
+ private runDnsDmarc;
57
+ private runDnsDkim;
58
+ private runDnsDig;
59
+ private runDnsGenerate;
54
60
  private runRDAP;
55
61
  private runPing;
62
+ private runFtp;
63
+ private runTelnet;
56
64
  private runScrap;
57
65
  private runSpider;
58
66
  private runSelect;
@@ -76,5 +84,26 @@ export declare class RekShell {
76
84
  private runSuggest;
77
85
  private runExample;
78
86
  private printMarkdown;
87
+ private harRecording;
88
+ private harFile;
89
+ private harEntries;
90
+ private runHar;
91
+ private runHarRecord;
92
+ private runHarStop;
93
+ private runHarPlay;
94
+ private runHarInfo;
95
+ private runGraphQL;
96
+ private runJsonRpc;
97
+ private runHls;
98
+ private runRobots;
99
+ private runSitemap;
100
+ private runLlms;
101
+ private runSftp;
102
+ private runSse;
103
+ private runSoap;
104
+ private runOdata;
105
+ private runProxy;
106
+ private runUpload;
107
+ private runDownload;
79
108
  private printHelp;
80
109
  }