@lon-ask/dockit 0.1.1 → 0.1.2
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 +482 -337
- package/SKILL.md +94 -103
- package/apps/client/index.html +12 -0
- package/apps/client/package.json +26 -0
- package/apps/client/src/App.tsx +18 -0
- package/apps/client/src/api/client.ts +54 -0
- package/apps/client/src/components/BuildPanel.tsx +77 -0
- package/apps/client/src/components/DocViewer.tsx +76 -0
- package/apps/client/src/components/EntryDetail.tsx +322 -0
- package/apps/client/src/components/EntryForm.tsx +117 -0
- package/apps/client/src/components/EntryList.tsx +165 -0
- package/apps/client/src/components/GlobalSearchBar.tsx +166 -0
- package/apps/client/src/components/Layout.tsx +57 -0
- package/apps/client/src/components/SearchBar.tsx +103 -0
- package/apps/client/src/components/SourceForm.tsx +497 -0
- package/apps/client/src/hooks/useTheme.ts +19 -0
- package/apps/client/src/index.css +77 -0
- package/apps/client/src/main.tsx +13 -0
- package/apps/client/src/types.ts +105 -0
- package/apps/client/vite.config.ts +13 -0
- package/apps/server/dist/core/domain/entry.js +20 -0
- package/apps/server/dist/core/domain/entry.js.map +1 -0
- package/apps/server/dist/core/domain/errors.js +33 -0
- package/apps/server/dist/core/domain/errors.js.map +1 -0
- package/apps/server/dist/core/domain/knowledge-graph.js +2 -0
- package/apps/server/dist/core/domain/knowledge-graph.js.map +1 -0
- package/apps/server/dist/core/domain/types.js +2 -0
- package/apps/server/dist/core/domain/types.js.map +1 -0
- package/apps/server/dist/core/ports/IBuildRepository.js +2 -0
- package/apps/server/dist/core/ports/IBuildRepository.js.map +1 -0
- package/apps/server/dist/core/ports/IDocumentNormalizer.js +2 -0
- package/apps/server/dist/core/ports/IDocumentNormalizer.js.map +1 -0
- package/apps/server/dist/core/ports/IDocumentStore.js +2 -0
- package/apps/server/dist/core/ports/IDocumentStore.js.map +1 -0
- package/apps/server/dist/core/ports/IEntryReadModel.js +2 -0
- package/apps/server/dist/core/ports/IEntryReadModel.js.map +1 -0
- package/apps/server/dist/core/ports/IEntryRepository.js +2 -0
- package/apps/server/dist/core/ports/IEntryRepository.js.map +1 -0
- package/apps/server/dist/core/ports/IKnowledgeGraph.js +2 -0
- package/apps/server/dist/core/ports/IKnowledgeGraph.js.map +1 -0
- package/apps/server/dist/core/ports/IPathResolver.js +2 -0
- package/apps/server/dist/core/ports/IPathResolver.js.map +1 -0
- package/apps/server/dist/core/ports/ISearchEngine.js +2 -0
- package/apps/server/dist/core/ports/ISearchEngine.js.map +1 -0
- package/apps/server/dist/core/ports/ISourceProcessor.js +2 -0
- package/apps/server/dist/core/ports/ISourceProcessor.js.map +1 -0
- package/apps/server/dist/core/ports/ISourceRepository.js +2 -0
- package/apps/server/dist/core/ports/ISourceRepository.js.map +1 -0
- package/apps/server/dist/core/usecases/BuildUseCase.js +76 -0
- package/apps/server/dist/core/usecases/BuildUseCase.js.map +1 -0
- package/apps/server/dist/core/usecases/ConfigUseCase.js +62 -0
- package/apps/server/dist/core/usecases/ConfigUseCase.js.map +1 -0
- package/apps/server/dist/core/usecases/SearchUseCase.js +17 -0
- package/apps/server/dist/core/usecases/SearchUseCase.js.map +1 -0
- package/apps/server/dist/index.js +86 -0
- package/apps/server/dist/index.js.map +1 -0
- package/apps/server/dist/infrastructure/filesystem/FileSystemDocumentStore.js +25 -0
- package/apps/server/dist/infrastructure/filesystem/FileSystemDocumentStore.js.map +1 -0
- package/apps/server/dist/infrastructure/graph/GraphSearchDecorator.js +42 -0
- package/apps/server/dist/infrastructure/graph/GraphSearchDecorator.js.map +1 -0
- package/apps/server/dist/infrastructure/graph/GraphifyKnowledgeGraph.js +145 -0
- package/apps/server/dist/infrastructure/graph/GraphifyKnowledgeGraph.js.map +1 -0
- package/apps/server/dist/infrastructure/graph/index.js +3 -0
- package/apps/server/dist/infrastructure/graph/index.js.map +1 -0
- package/apps/server/dist/infrastructure/persistence/sqlite/SqliteBuildRepository.js +21 -0
- package/apps/server/dist/infrastructure/persistence/sqlite/SqliteBuildRepository.js.map +1 -0
- package/apps/server/dist/infrastructure/persistence/sqlite/SqliteEntryReadModel.js +11 -0
- package/apps/server/dist/infrastructure/persistence/sqlite/SqliteEntryReadModel.js.map +1 -0
- package/apps/server/dist/infrastructure/persistence/sqlite/SqliteEntryRepository.js +59 -0
- package/apps/server/dist/infrastructure/persistence/sqlite/SqliteEntryRepository.js.map +1 -0
- package/apps/server/dist/infrastructure/persistence/sqlite/SqliteSourceRepository.js +47 -0
- package/apps/server/dist/infrastructure/persistence/sqlite/SqliteSourceRepository.js.map +1 -0
- package/apps/server/dist/infrastructure/persistence/sqlite/connection.js +50 -0
- package/apps/server/dist/infrastructure/persistence/sqlite/connection.js.map +1 -0
- package/apps/server/dist/infrastructure/search/SearchEngineFactory.js +32 -0
- package/apps/server/dist/infrastructure/search/SearchEngineFactory.js.map +1 -0
- package/apps/server/dist/infrastructure/search/json/JsonSearchEngine.js +147 -0
- package/apps/server/dist/infrastructure/search/json/JsonSearchEngine.js.map +1 -0
- package/apps/server/dist/infrastructure/search/vector/EmbeddingService.js +23 -0
- package/apps/server/dist/infrastructure/search/vector/EmbeddingService.js.map +1 -0
- package/apps/server/dist/infrastructure/search/vector/VectorSearchEngine.js +378 -0
- package/apps/server/dist/infrastructure/search/vector/VectorSearchEngine.js.map +1 -0
- package/apps/server/dist/infrastructure/source-processors/AntoraSourceProcessor.js +11 -0
- package/apps/server/dist/infrastructure/source-processors/AntoraSourceProcessor.js.map +1 -0
- package/apps/server/dist/infrastructure/source-processors/AsciidocSourceProcessor.js +9 -0
- package/apps/server/dist/infrastructure/source-processors/AsciidocSourceProcessor.js.map +1 -0
- package/apps/server/dist/infrastructure/source-processors/DocumentNormalizer.js +11 -0
- package/apps/server/dist/infrastructure/source-processors/DocumentNormalizer.js.map +1 -0
- package/apps/server/dist/infrastructure/source-processors/GithubMarkdownSourceProcessor.js +9 -0
- package/apps/server/dist/infrastructure/source-processors/GithubMarkdownSourceProcessor.js.map +1 -0
- package/apps/server/dist/infrastructure/source-processors/MavenSourceProcessor.js +9 -0
- package/apps/server/dist/infrastructure/source-processors/MavenSourceProcessor.js.map +1 -0
- package/apps/server/dist/infrastructure/source-processors/PathResolver.js +5 -0
- package/apps/server/dist/infrastructure/source-processors/PathResolver.js.map +1 -0
- package/apps/server/dist/infrastructure/source-processors/SourceCodeSourceProcessor.js +261 -0
- package/apps/server/dist/infrastructure/source-processors/SourceCodeSourceProcessor.js.map +1 -0
- package/apps/server/dist/infrastructure/source-processors/ZipSourceProcessor.js +9 -0
- package/apps/server/dist/infrastructure/source-processors/ZipSourceProcessor.js.map +1 -0
- package/apps/server/dist/mcp-http.js +93 -0
- package/apps/server/dist/mcp-http.js.map +1 -0
- package/apps/server/dist/mcp.js +339 -0
- package/apps/server/dist/mcp.js.map +1 -0
- package/apps/server/dist/routes/build.js +89 -0
- package/apps/server/dist/routes/build.js.map +1 -0
- package/apps/server/dist/routes/entries.js +52 -0
- package/apps/server/dist/routes/entries.js.map +1 -0
- package/apps/server/dist/routes/graph.js +58 -0
- package/apps/server/dist/routes/graph.js.map +1 -0
- package/apps/server/dist/routes/search.js +24 -0
- package/apps/server/dist/routes/search.js.map +1 -0
- package/apps/server/dist/routes/sources.js +100 -0
- package/apps/server/dist/routes/sources.js.map +1 -0
- package/apps/server/dist/routes/viewer.js +22 -0
- package/apps/server/dist/routes/viewer.js.map +1 -0
- package/apps/server/dist/services/antora.js +222 -0
- package/apps/server/dist/services/antora.js.map +1 -0
- package/apps/server/dist/services/asciidoc.js +206 -0
- package/apps/server/dist/services/asciidoc.js.map +1 -0
- package/apps/server/dist/services/configLoader.js +150 -0
- package/apps/server/dist/services/configLoader.js.map +1 -0
- package/apps/server/dist/services/githubMarkdown.js +221 -0
- package/apps/server/dist/services/githubMarkdown.js.map +1 -0
- package/apps/server/dist/services/maven.js +148 -0
- package/apps/server/dist/services/maven.js.map +1 -0
- package/apps/server/dist/services/normalizer.js +42 -0
- package/apps/server/dist/services/normalizer.js.map +1 -0
- package/apps/server/dist/services/paths.js +5 -0
- package/apps/server/dist/services/paths.js.map +1 -0
- package/apps/server/dist/services/textExtractor.js +46 -0
- package/apps/server/dist/services/textExtractor.js.map +1 -0
- package/apps/server/dist/services/zip.js +63 -0
- package/apps/server/dist/services/zip.js.map +1 -0
- package/apps/server/package.json +38 -0
- package/bin/commands/dev.ts +2 -2
- package/bin/commands/serve.ts +2 -2
- package/package.json +17 -3
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export function extractTextFromHtml(html, maxLength = 50000) {
|
|
2
|
+
const withoutStyles = html
|
|
3
|
+
.replace(/<style[^>]*>[\s\S]*?<\/style>/gi, '')
|
|
4
|
+
.replace(/<script[^>]*>[\s\S]*?<\/script>/gi, '')
|
|
5
|
+
.replace(/<link[^>]*>/gi, '')
|
|
6
|
+
.replace(/<meta[^>]*>/gi, '');
|
|
7
|
+
const withoutTags = withoutStyles
|
|
8
|
+
.replace(/<h1[^>]*>/gi, '\n\n## ')
|
|
9
|
+
.replace(/<\/h1>/gi, '\n')
|
|
10
|
+
.replace(/<h2[^>]*>/gi, '\n\n### ')
|
|
11
|
+
.replace(/<\/h2>/gi, '\n')
|
|
12
|
+
.replace(/<h3[^>]*>/gi, '\n\n#### ')
|
|
13
|
+
.replace(/<\/h3>/gi, '\n')
|
|
14
|
+
.replace(/<h4[^>]*>/gi, '\n\n**')
|
|
15
|
+
.replace(/<\/h4>/gi, '**\n')
|
|
16
|
+
.replace(/<li[^>]*>/gi, '\n- ')
|
|
17
|
+
.replace(/<\/li>/gi, '')
|
|
18
|
+
.replace(/<\/?p[^>]*>/gi, '\n\n')
|
|
19
|
+
.replace(/<br\s*\/?>/gi, '\n')
|
|
20
|
+
.replace(/<hr\s*\/?>/gi, '\n---\n')
|
|
21
|
+
.replace(/<\/?pre[^>]*>/gi, '\n```\n')
|
|
22
|
+
.replace(/<\/?code[^>]*>/gi, '`')
|
|
23
|
+
.replace(/<a[^>]*href="([^"]*)"[^>]*>/gi, ' [$1] ')
|
|
24
|
+
.replace(/<\/a>/gi, '')
|
|
25
|
+
.replace(/<[^>]+>/g, ' ')
|
|
26
|
+
.replace(/&/g, '&')
|
|
27
|
+
.replace(/</g, '<')
|
|
28
|
+
.replace(/>/g, '>')
|
|
29
|
+
.replace(/"/g, '"')
|
|
30
|
+
.replace(/'/g, "'")
|
|
31
|
+
.replace(/ /g, ' ')
|
|
32
|
+
.replace(///g, '/')
|
|
33
|
+
.replace(/&#(\d+);/g, (_, d) => String.fromCharCode(Number(d)));
|
|
34
|
+
const cleaned = withoutTags
|
|
35
|
+
.replace(/\n{3,}/g, '\n\n')
|
|
36
|
+
.replace(/[ \t]{3,}/g, ' ')
|
|
37
|
+
.trim();
|
|
38
|
+
if (cleaned.length <= maxLength)
|
|
39
|
+
return cleaned;
|
|
40
|
+
const truncated = cleaned.slice(0, maxLength);
|
|
41
|
+
const lastNewline = truncated.lastIndexOf('\n');
|
|
42
|
+
const cutPoint = lastNewline > maxLength * 0.8 ? lastNewline : truncated.lastIndexOf(' ');
|
|
43
|
+
const final = cutPoint > maxLength * 0.8 ? truncated.slice(0, cutPoint) : truncated;
|
|
44
|
+
return final + '\n\n[... content truncated ...]';
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=textExtractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textExtractor.js","sourceRoot":"","sources":["../../src/services/textExtractor.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,YAAoB,KAAK;IACzE,MAAM,aAAa,GAAG,IAAI;SACvB,OAAO,CAAC,iCAAiC,EAAE,EAAE,CAAC;SAC9C,OAAO,CAAC,mCAAmC,EAAE,EAAE,CAAC;SAChD,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;SAC5B,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAEhC,MAAM,WAAW,GAAG,aAAa;SAC9B,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC;SACjC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC;SACzB,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC;SAClC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC;SACzB,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC;SACnC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC;SACzB,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC;SAChC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC;SAC3B,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC;SAC9B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC;SAChC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC;SAC7B,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC;SAClC,OAAO,CAAC,iBAAiB,EAAE,SAAS,CAAC;SACrC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC;SAChC,OAAO,CAAC,+BAA+B,EAAE,QAAQ,CAAC;SAClD,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;SACtB,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;SACxB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAElE,MAAM,OAAO,GAAG,WAAW;SACxB,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;SAC1B,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC;SAC3B,IAAI,EAAE,CAAC;IAEV,IAAI,OAAO,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,OAAO,CAAC;IAEhD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1F,MAAM,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEpF,OAAO,KAAK,GAAG,iCAAiC,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import { Readable } from 'node:stream';
|
|
4
|
+
import { pipeline } from 'node:stream/promises';
|
|
5
|
+
import unzipper from 'unzipper';
|
|
6
|
+
export async function extractLocalZip(localPath, targetDir, log) {
|
|
7
|
+
if (!fs.existsSync(localPath)) {
|
|
8
|
+
throw new Error(`Local file not found: ${localPath}`);
|
|
9
|
+
}
|
|
10
|
+
const stat = fs.statSync(localPath);
|
|
11
|
+
if (!stat.isFile()) {
|
|
12
|
+
throw new Error(`localPath must be a ZIP file, got directory: ${localPath}`);
|
|
13
|
+
}
|
|
14
|
+
log(`Extracting local ZIP from ${localPath}`);
|
|
15
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
16
|
+
const data = fs.readFileSync(localPath);
|
|
17
|
+
const stream = Readable.from(data);
|
|
18
|
+
await pipeline(stream, unzipper.Extract({ path: targetDir }));
|
|
19
|
+
log(`Extracted ZIP to ${targetDir}`);
|
|
20
|
+
const files = countFilesRecursive(targetDir);
|
|
21
|
+
log(`Found ${files} files in extracted archive`);
|
|
22
|
+
}
|
|
23
|
+
export async function downloadAndExtractZip(configOrUrl, targetDir, log) {
|
|
24
|
+
const config = typeof configOrUrl === 'string'
|
|
25
|
+
? { url: configOrUrl }
|
|
26
|
+
: configOrUrl;
|
|
27
|
+
if (config.localPath) {
|
|
28
|
+
await extractLocalZip(config.localPath, targetDir, log);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (!config.url) {
|
|
32
|
+
throw new Error('ZIP source requires url or localPath');
|
|
33
|
+
}
|
|
34
|
+
log(`Downloading ZIP from ${config.url}`);
|
|
35
|
+
const response = await fetch(config.url);
|
|
36
|
+
if (!response.ok) {
|
|
37
|
+
throw new Error(`Failed to download ZIP: ${response.status} ${response.statusText}`);
|
|
38
|
+
}
|
|
39
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
40
|
+
if (!response.body) {
|
|
41
|
+
throw new Error('No response body');
|
|
42
|
+
}
|
|
43
|
+
const nodeStream = Readable.fromWeb(response.body);
|
|
44
|
+
await pipeline(nodeStream, unzipper.Extract({ path: targetDir }));
|
|
45
|
+
log(`Extracted ZIP to ${targetDir}`);
|
|
46
|
+
const files = countFilesRecursive(targetDir);
|
|
47
|
+
log(`Found ${files} files in extracted archive`);
|
|
48
|
+
}
|
|
49
|
+
function countFilesRecursive(dir) {
|
|
50
|
+
let count = 0;
|
|
51
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
52
|
+
for (const entry of entries) {
|
|
53
|
+
const fullPath = path.join(dir, entry.name);
|
|
54
|
+
if (entry.isDirectory()) {
|
|
55
|
+
count += countFilesRecursive(fullPath);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
count++;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return count;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=zip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zip.js","sourceRoot":"","sources":["../../src/services/zip.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,QAAQ,MAAM,UAAU,CAAC;AAGhC,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,SAAiB,EACjB,SAAiB,EACjB,GAA0B;IAE1B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,yBAAyB,SAAS,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACpC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,gDAAgD,SAAS,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,GAAG,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAC;IAC9C,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IAC9D,GAAG,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC7C,GAAG,CAAC,SAAS,KAAK,6BAA6B,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,WAAqC,EACrC,SAAiB,EACjB,GAA0B;IAE1B,MAAM,MAAM,GAAG,OAAO,WAAW,KAAK,QAAQ;QAC5C,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE;QACtB,CAAC,CAAC,WAAW,CAAC;IAEhB,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,MAAM,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QACxD,OAAO;IACT,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,GAAG,CAAC,wBAAwB,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7C,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAa,CAAC,CAAC;IAC5D,MAAM,QAAQ,CACZ,UAAU,EACV,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CACtC,CAAC;IAEF,GAAG,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC7C,GAAG,CAAC,SAAS,KAAK,6BAA6B,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAW;IACtC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,KAAK,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@dockit/server",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"mcp": "tsx src/mcp.ts",
|
|
8
|
+
"dev": "tsx watch src/index.ts",
|
|
9
|
+
"build": "tsc",
|
|
10
|
+
"start": "node dist/index.js"
|
|
11
|
+
},
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"@antora/cli": "^3.1.14",
|
|
14
|
+
"@antora/site-generator": "^3.2.0-alpha.11",
|
|
15
|
+
"@asciidoctor/cli": "^4.0.0",
|
|
16
|
+
"@asciidoctor/core": "^2.2.9",
|
|
17
|
+
"better-sqlite3": "^11.7.0",
|
|
18
|
+
"cors": "^2.8.5",
|
|
19
|
+
"express": "^4.21.2",
|
|
20
|
+
"marked": "^18.0.3",
|
|
21
|
+
"node-html-parser": "^6.1.13",
|
|
22
|
+
"unzipper": "^0.12.3",
|
|
23
|
+
"uuid": "^11.0.5"
|
|
24
|
+
},
|
|
25
|
+
"optionalDependencies": {
|
|
26
|
+
"@lancedb/lancedb": "^0.27.2"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"@types/better-sqlite3": "^7.6.12",
|
|
30
|
+
"@types/cors": "^2.8.17",
|
|
31
|
+
"@types/express": "^5.0.0",
|
|
32
|
+
"@types/marked": "^6.0.0",
|
|
33
|
+
"@types/unzipper": "^0.10.10",
|
|
34
|
+
"@types/uuid": "^10.0.0",
|
|
35
|
+
"tsx": "^4.19.2",
|
|
36
|
+
"typescript": "^5.7.3"
|
|
37
|
+
}
|
|
38
|
+
}
|
package/bin/commands/dev.ts
CHANGED
|
@@ -4,13 +4,13 @@ export default function dev(root, positional, flags) {
|
|
|
4
4
|
console.log('Starting Dockit dev servers...');
|
|
5
5
|
console.log('');
|
|
6
6
|
|
|
7
|
-
const server = spawn('
|
|
7
|
+
const server = spawn('npx tsx watch apps/server/src/index.ts', [], {
|
|
8
8
|
cwd: root,
|
|
9
9
|
stdio: 'inherit',
|
|
10
10
|
shell: true,
|
|
11
11
|
});
|
|
12
12
|
|
|
13
|
-
const client = spawn('
|
|
13
|
+
const client = spawn('npx vite apps/client', [], {
|
|
14
14
|
cwd: root,
|
|
15
15
|
stdio: 'inherit',
|
|
16
16
|
shell: true,
|
package/bin/commands/serve.ts
CHANGED
|
@@ -2,12 +2,12 @@ import { spawn } from 'node:child_process';
|
|
|
2
2
|
|
|
3
3
|
export default function serve(root, positional, flags) {
|
|
4
4
|
const port = flags.port || process.env.PORT || 3001;
|
|
5
|
-
console.log(`Starting Dockit
|
|
5
|
+
console.log(`Starting Dockit server on port ${port}...`);
|
|
6
6
|
console.log('');
|
|
7
7
|
|
|
8
8
|
const env = { ...process.env, PORT: String(port) };
|
|
9
9
|
|
|
10
|
-
const server = spawn('
|
|
10
|
+
const server = spawn('npx tsx apps/server/src/index.ts', [], {
|
|
11
11
|
cwd: root,
|
|
12
12
|
stdio: 'inherit',
|
|
13
13
|
shell: true,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lon-ask/dockit",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Local documentation hub — normalize multiple doc sources into a unified searchable bundle",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -9,7 +9,13 @@
|
|
|
9
9
|
"files": [
|
|
10
10
|
"bin/",
|
|
11
11
|
"apps/server/src/",
|
|
12
|
+
"apps/server/dist/",
|
|
13
|
+
"apps/server/package.json",
|
|
14
|
+
"apps/client/src/",
|
|
12
15
|
"apps/client/dist/",
|
|
16
|
+
"apps/client/package.json",
|
|
17
|
+
"apps/client/vite.config.ts",
|
|
18
|
+
"apps/client/index.html",
|
|
13
19
|
"dockit.yaml",
|
|
14
20
|
"SKILL.md",
|
|
15
21
|
"scripts/mcp-wrapper.sh"
|
|
@@ -45,11 +51,19 @@
|
|
|
45
51
|
"node-html-parser": "^6.1.13",
|
|
46
52
|
"marked": "^18.0.3",
|
|
47
53
|
"unzipper": "^0.12.3",
|
|
48
|
-
"uuid": "^11.0.5"
|
|
54
|
+
"uuid": "^11.0.5",
|
|
55
|
+
"react": "^19.0.0",
|
|
56
|
+
"react-dom": "^19.0.0",
|
|
57
|
+
"react-router-dom": "^7.1.1",
|
|
58
|
+
"lucide-react": "^0.469.0",
|
|
59
|
+
"vite": "^6.0.7",
|
|
60
|
+
"@vitejs/plugin-react": "^4.3.4",
|
|
61
|
+
"tailwindcss": "^4.0.0",
|
|
62
|
+
"@tailwindcss/vite": "^4.0.0"
|
|
49
63
|
},
|
|
50
64
|
"optionalDependencies": {
|
|
51
65
|
"@lancedb/lancedb": "^0.27.2",
|
|
52
|
-
"@lon-ask/dockit-embeddings": "^0.1.
|
|
66
|
+
"@lon-ask/dockit-embeddings": "^0.1.2"
|
|
53
67
|
},
|
|
54
68
|
"devDependencies": {
|
|
55
69
|
"@modelcontextprotocol/sdk": "^1.29.0",
|