docworks 0.11.0 → 0.12.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/README.md +86 -148
- package/dist/commands/check.d.ts +3 -2
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +31 -12
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/init.d.ts +0 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +32 -132
- package/dist/commands/init.js.map +1 -1
- package/dist/core/validator.d.ts +3 -3
- package/dist/core/validator.d.ts.map +1 -1
- package/dist/core/validator.js +10 -29
- package/dist/core/validator.js.map +1 -1
- package/dist/index.js +5 -12
- package/dist/index.js.map +1 -1
- package/dist/providers/index.d.ts +3 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +94 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/sources/source.d.ts +5 -0
- package/dist/sources/source.d.ts.map +1 -0
- package/dist/sources/source.js +23 -0
- package/dist/sources/source.js.map +1 -0
- package/dist/types/config.d.ts +7 -13
- package/dist/types/config.d.ts.map +1 -1
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +8 -3
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/reporter.d.ts +1 -1
- package/dist/utils/reporter.d.ts.map +1 -1
- package/dist/utils/reporter.js +18 -51
- package/dist/utils/reporter.js.map +1 -1
- package/package.json +1 -1
- package/dist/commands/test.d.ts +0 -5
- package/dist/commands/test.d.ts.map +0 -1
- package/dist/commands/test.js +0 -45
- package/dist/commands/test.js.map +0 -1
- package/dist/core/ai.d.ts +0 -2
- package/dist/core/ai.d.ts.map +0 -1
- package/dist/core/ai.js +0 -29
- package/dist/core/ai.js.map +0 -1
- package/dist/core/cache.d.ts +0 -3
- package/dist/core/cache.d.ts.map +0 -1
- package/dist/core/cache.js +0 -31
- package/dist/core/cache.js.map +0 -1
- package/dist/providers/anthropic.d.ts +0 -10
- package/dist/providers/anthropic.d.ts.map +0 -1
- package/dist/providers/anthropic.js +0 -51
- package/dist/providers/anthropic.js.map +0 -1
- package/dist/providers/base.d.ts +0 -12
- package/dist/providers/base.d.ts.map +0 -1
- package/dist/providers/base.js +0 -14
- package/dist/providers/base.js.map +0 -1
- package/dist/providers/openai.d.ts +0 -10
- package/dist/providers/openai.d.ts.map +0 -1
- package/dist/providers/openai.js +0 -42
- package/dist/providers/openai.js.map +0 -1
- package/dist/sources/base.d.ts +0 -3
- package/dist/sources/base.d.ts.map +0 -1
- package/dist/sources/base.js +0 -17
- package/dist/sources/base.js.map +0 -1
- package/dist/sources/llms-txt.d.ts +0 -7
- package/dist/sources/llms-txt.d.ts.map +0 -1
- package/dist/sources/llms-txt.js +0 -43
- package/dist/sources/llms-txt.js.map +0 -1
- package/dist/sources/mcp.d.ts +0 -9
- package/dist/sources/mcp.d.ts.map +0 -1
- package/dist/sources/mcp.js +0 -33
- package/dist/sources/mcp.js.map +0 -1
- package/templates/api.yml +0 -21
- package/templates/default.yml +0 -19
- package/templates/gitbook.yml +0 -13
- package/templates/library.yml +0 -21
- package/templates/mintlify.yml +0 -18
- package/templates/readme.yml +0 -13
package/dist/core/cache.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import fs from 'fs';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
import os from 'os';
|
|
4
|
-
const CACHE_DIR = path.join(os.homedir(), '.docworks', 'cache');
|
|
5
|
-
const CACHE_TTL = 7 * 24 * 60 * 60 * 1000; // 7 days
|
|
6
|
-
// Ensure cache directory exists
|
|
7
|
-
if (!fs.existsSync(CACHE_DIR)) {
|
|
8
|
-
fs.mkdirSync(CACHE_DIR, { recursive: true });
|
|
9
|
-
}
|
|
10
|
-
export function getCached(key) {
|
|
11
|
-
const cachePath = path.join(CACHE_DIR, `${key}.json`);
|
|
12
|
-
if (!fs.existsSync(cachePath)) {
|
|
13
|
-
return null;
|
|
14
|
-
}
|
|
15
|
-
const cached = JSON.parse(fs.readFileSync(cachePath, 'utf-8'));
|
|
16
|
-
// Check if expired
|
|
17
|
-
if (Date.now() - cached.timestamp > CACHE_TTL) {
|
|
18
|
-
fs.unlinkSync(cachePath);
|
|
19
|
-
return null;
|
|
20
|
-
}
|
|
21
|
-
return cached.data;
|
|
22
|
-
}
|
|
23
|
-
export function setCached(key, data) {
|
|
24
|
-
const cachePath = path.join(CACHE_DIR, `${key}.json`);
|
|
25
|
-
fs.writeFileSync(cachePath, JSON.stringify({
|
|
26
|
-
timestamp: Date.now(),
|
|
27
|
-
data,
|
|
28
|
-
}));
|
|
29
|
-
}
|
|
30
|
-
//** */
|
|
31
|
-
//# sourceMappingURL=cache.js.map
|
package/dist/core/cache.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/core/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,MAAM,IAAI,CAAA;AAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;AAC/D,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA,CAAC,SAAS;AAEnD,gCAAgC;AAChC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;IAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,CAAA;IAErD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;IAE9D,mBAAmB;IACnB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC;QAC9C,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QACxB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,IAAS;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO,CAAC,CAAA;IAErD,EAAE,CAAC,aAAa,CACd,SAAS,EACT,IAAI,CAAC,SAAS,CAAC;QACb,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,IAAI;KACL,CAAC,CACH,CAAA;AACH,CAAC;AACD,OAAO"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { AIProvider, ValidationResult } from './base.js';
|
|
2
|
-
export declare class AnthropicProvider implements AIProvider {
|
|
3
|
-
name: string;
|
|
4
|
-
private client;
|
|
5
|
-
private model;
|
|
6
|
-
constructor(apiKey: string, model?: string);
|
|
7
|
-
checkAnswerability(question: string, docs: string): Promise<ValidationResult>;
|
|
8
|
-
complete(prompt: string): Promise<string>;
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=anthropic.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAExD,qBAAa,iBAAkB,YAAW,UAAU;IAClD,IAAI,SAAc;IAClB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,KAAK,CAAQ;gBAET,MAAM,EAAE,MAAM,EAAE,KAAK,SAA+B;IAK1D,kBAAkB,CACtB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,gBAAgB,CAAC;IAgCtB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAehD"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import Anthropic from '@anthropic-ai/sdk';
|
|
2
|
-
export class AnthropicProvider {
|
|
3
|
-
constructor(apiKey, model = 'claude-3-5-sonnet-20241022') {
|
|
4
|
-
this.name = 'anthropic';
|
|
5
|
-
this.client = new Anthropic({ apiKey });
|
|
6
|
-
this.model = model;
|
|
7
|
-
}
|
|
8
|
-
async checkAnswerability(question, docs) {
|
|
9
|
-
const response = await this.client.messages.create({
|
|
10
|
-
model: this.model,
|
|
11
|
-
max_tokens: 150,
|
|
12
|
-
temperature: 0.1,
|
|
13
|
-
messages: [
|
|
14
|
-
{
|
|
15
|
-
role: 'user',
|
|
16
|
-
content: `Given this documentation, can it answer: "${question}"?
|
|
17
|
-
|
|
18
|
-
Documentation:
|
|
19
|
-
${docs.substring(0, 50000)}
|
|
20
|
-
|
|
21
|
-
Reply with:
|
|
22
|
-
ANSWER: [YES/PARTIAL/NO]
|
|
23
|
-
REASON: [One sentence]
|
|
24
|
-
LOCATION: [Where found, or "Not found"]`,
|
|
25
|
-
},
|
|
26
|
-
],
|
|
27
|
-
});
|
|
28
|
-
const content = response.content[0].type === 'text' ? response.content[0].text : '';
|
|
29
|
-
return {
|
|
30
|
-
answerable: (content.match(/ANSWER:\s*(YES|PARTIAL|NO)/)?.[1] ||
|
|
31
|
-
'NO'),
|
|
32
|
-
reason: content.match(/REASON:\s*(.+)/)?.[1] || 'Could not determine',
|
|
33
|
-
location: content.match(/LOCATION:\s*(.+)/)?.[1] || 'Not found',
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
async complete(prompt) {
|
|
37
|
-
const response = await this.client.messages.create({
|
|
38
|
-
model: this.model,
|
|
39
|
-
max_tokens: 2000,
|
|
40
|
-
temperature: 0.3,
|
|
41
|
-
messages: [
|
|
42
|
-
{
|
|
43
|
-
role: 'user',
|
|
44
|
-
content: prompt,
|
|
45
|
-
},
|
|
46
|
-
],
|
|
47
|
-
});
|
|
48
|
-
return response.content[0].type === 'text' ? response.content[0].text : '';
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=anthropic.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAA;AAGzC,MAAM,OAAO,iBAAiB;IAK5B,YAAY,MAAc,EAAE,KAAK,GAAG,4BAA4B;QAJhE,SAAI,GAAG,WAAW,CAAA;QAKhB,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;QACvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,QAAgB,EAChB,IAAY;QAEZ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YACjD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,GAAG;YACf,WAAW,EAAE,GAAG;YAChB,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,6CAA6C,QAAQ;;;EAGtE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC;;;;;wCAKc;iBAC/B;aACF;SACF,CAAC,CAAA;QAEF,MAAM,OAAO,GACX,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;QAErE,OAAO;YACL,UAAU,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3D,IAAI,CAAQ;YACd,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,qBAAqB;YACrE,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,WAAW;SAChE,CAAA;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAc;QAC3B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YACjD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,GAAG;YAChB,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,MAAM;iBAChB;aACF;SACF,CAAC,CAAA;QAEF,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;IAC5E,CAAC;CACF"}
|
package/dist/providers/base.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export interface ValidationResult {
|
|
2
|
-
answerable: 'YES' | 'PARTIAL' | 'NO';
|
|
3
|
-
reason: string;
|
|
4
|
-
location?: string;
|
|
5
|
-
}
|
|
6
|
-
export interface AIProvider {
|
|
7
|
-
name: string;
|
|
8
|
-
checkAnswerability(question: string, docs: string): Promise<ValidationResult>;
|
|
9
|
-
complete(prompt: string): Promise<string>;
|
|
10
|
-
}
|
|
11
|
-
export declare function createProvider(provider: string, apiKey: string, model?: string): AIProvider;
|
|
12
|
-
//# sourceMappingURL=base.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/providers/base.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI,CAAA;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;IAC7E,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;CAC1C;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACb,UAAU,CAUZ"}
|
package/dist/providers/base.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { OpenAIProvider } from './openai.js';
|
|
2
|
-
import { AnthropicProvider } from './anthropic.js';
|
|
3
|
-
export function createProvider(provider, apiKey, model) {
|
|
4
|
-
switch (provider) {
|
|
5
|
-
case 'anthropic': {
|
|
6
|
-
return new AnthropicProvider(apiKey, model);
|
|
7
|
-
}
|
|
8
|
-
case 'openai':
|
|
9
|
-
default: {
|
|
10
|
-
return new OpenAIProvider(apiKey, model);
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
//# sourceMappingURL=base.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/providers/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAclD,MAAM,UAAU,cAAc,CAC5B,QAAgB,EAChB,MAAc,EACd,KAAc;IAEd,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,OAAO,IAAI,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAC7C,CAAC;QACD,KAAK,QAAQ,CAAC;QACd,OAAO,CAAC,CAAC,CAAC;YACR,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { AIProvider, ValidationResult } from './base.js';
|
|
2
|
-
export declare class OpenAIProvider implements AIProvider {
|
|
3
|
-
name: string;
|
|
4
|
-
private client;
|
|
5
|
-
private model;
|
|
6
|
-
constructor(apiKey: string, model?: string);
|
|
7
|
-
checkAnswerability(question: string, docs: string): Promise<ValidationResult>;
|
|
8
|
-
complete(prompt: string): Promise<string>;
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=openai.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAExD,qBAAa,cAAe,YAAW,UAAU;IAC/C,IAAI,SAAW;IACf,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,KAAK,CAAQ;gBAET,MAAM,EAAE,MAAM,EAAE,KAAK,SAAgB;IAK3C,kBAAkB,CACtB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,gBAAgB,CAAC;IA4BtB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAUhD"}
|
package/dist/providers/openai.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import OpenAI from 'openai';
|
|
2
|
-
export class OpenAIProvider {
|
|
3
|
-
constructor(apiKey, model = 'gpt-4o-mini') {
|
|
4
|
-
this.name = 'openai';
|
|
5
|
-
this.client = new OpenAI({ apiKey });
|
|
6
|
-
this.model = model;
|
|
7
|
-
}
|
|
8
|
-
async checkAnswerability(question, docs) {
|
|
9
|
-
const prompt = `Given this documentation, can it answer: "${question}"?
|
|
10
|
-
|
|
11
|
-
Documentation:
|
|
12
|
-
${docs.substring(0, 50000)}
|
|
13
|
-
|
|
14
|
-
Reply with:
|
|
15
|
-
ANSWER: [YES/PARTIAL/NO]
|
|
16
|
-
REASON: [One sentence]
|
|
17
|
-
LOCATION: [Where found, or "Not found"]`;
|
|
18
|
-
const response = await this.client.chat.completions.create({
|
|
19
|
-
model: this.model,
|
|
20
|
-
messages: [{ role: 'user', content: prompt }],
|
|
21
|
-
temperature: 0.1,
|
|
22
|
-
max_tokens: 150,
|
|
23
|
-
});
|
|
24
|
-
const content = response.choices[0].message.content || '';
|
|
25
|
-
return {
|
|
26
|
-
answerable: (content.match(/ANSWER:\s*(YES|PARTIAL|NO)/)?.[1] ||
|
|
27
|
-
'NO'),
|
|
28
|
-
reason: content.match(/REASON:\s*(.+)/)?.[1] || 'Could not determine',
|
|
29
|
-
location: content.match(/LOCATION:\s*(.+)/)?.[1] || 'Not found',
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
async complete(prompt) {
|
|
33
|
-
const response = await this.client.chat.completions.create({
|
|
34
|
-
model: this.model,
|
|
35
|
-
messages: [{ role: 'user', content: prompt }],
|
|
36
|
-
temperature: 0.3,
|
|
37
|
-
max_tokens: 2000,
|
|
38
|
-
});
|
|
39
|
-
return response.choices[0].message.content || '';
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=openai.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAA;AAG3B,MAAM,OAAO,cAAc;IAKzB,YAAY,MAAc,EAAE,KAAK,GAAG,aAAa;QAJjD,SAAI,GAAG,QAAQ,CAAA;QAKb,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;QACpC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,QAAgB,EAChB,IAAY;QAEZ,MAAM,MAAM,GAAG,6CAA6C,QAAQ;;;EAGtE,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC;;;;;wCAKc,CAAA;QAEpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YACzD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAC7C,WAAW,EAAE,GAAG;YAChB,UAAU,EAAE,GAAG;SAChB,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAA;QAEzD,OAAO;YACL,UAAU,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3D,IAAI,CAAQ;YACd,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,qBAAqB;YACrE,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,WAAW;SAChE,CAAA;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAc;QAC3B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YACzD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAC7C,WAAW,EAAE,GAAG;YAChB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAA;QAEF,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAA;IAClD,CAAC;CACF"}
|
package/dist/sources/base.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/sources/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAE9D,wBAAsB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CAiB7E"}
|
package/dist/sources/base.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export async function createSource(config) {
|
|
2
|
-
const sourceConfig = typeof config.source === 'string'
|
|
3
|
-
? { type: 'llms.txt', path: config.source }
|
|
4
|
-
: config.source;
|
|
5
|
-
switch (sourceConfig.type) {
|
|
6
|
-
case 'mcp': {
|
|
7
|
-
const { MCPSource } = await import('./mcp.js');
|
|
8
|
-
return new MCPSource(sourceConfig.server);
|
|
9
|
-
}
|
|
10
|
-
case 'llms.txt':
|
|
11
|
-
default: {
|
|
12
|
-
const { LLMSTxtSource } = await import('./llms-txt.js');
|
|
13
|
-
return new LLMSTxtSource();
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=base.js.map
|
package/dist/sources/base.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/sources/base.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAsB;IACvD,MAAM,YAAY,GAChB,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;QAC/B,CAAC,CAAC,EAAE,IAAI,EAAE,UAAmB,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE;QACpD,CAAC,CAAC,MAAM,CAAC,MAAM,CAAA;IAEnB,QAAQ,YAAY,CAAC,IAAI,EAAE,CAAC;QAC1B,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAA;YAC9C,OAAO,IAAI,SAAS,CAAC,YAAY,CAAC,MAAO,CAAC,CAAA;QAC5C,CAAC;QACD,KAAK,UAAU,CAAC;QAChB,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAA;YACvD,OAAO,IAAI,aAAa,EAAE,CAAA;QAC5B,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"llms-txt.d.ts","sourceRoot":"","sources":["../../src/sources/llms-txt.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE9C,qBAAa,aAAc,YAAW,SAAS;IAC7C,IAAI,SAAa;IACjB,OAAO,CAAC,QAAQ,CAAe;IAEzB,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;CA2C/B"}
|
package/dist/sources/llms-txt.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import fs from 'fs';
|
|
2
|
-
export class LLMSTxtSource {
|
|
3
|
-
constructor() {
|
|
4
|
-
this.name = 'llms.txt';
|
|
5
|
-
this.filepath = './llms.txt';
|
|
6
|
-
}
|
|
7
|
-
async fetch() {
|
|
8
|
-
if (!fs.existsSync(this.filepath)) {
|
|
9
|
-
throw new Error('llms.txt not found. Create it with:\n' +
|
|
10
|
-
' docworks init\n\n' +
|
|
11
|
-
'Or create manually listing your documentation files.');
|
|
12
|
-
}
|
|
13
|
-
const content = fs.readFileSync(this.filepath, 'utf-8');
|
|
14
|
-
const sources = content
|
|
15
|
-
.split('\n')
|
|
16
|
-
.map((line) => line.trim())
|
|
17
|
-
.filter((line) => line && !line.startsWith('#'));
|
|
18
|
-
if (sources.length === 0) {
|
|
19
|
-
throw new Error('llms.txt is empty. Add your documentation files.');
|
|
20
|
-
}
|
|
21
|
-
const docs = [];
|
|
22
|
-
for (const source of sources) {
|
|
23
|
-
// Handle URLs (future feature)
|
|
24
|
-
if (source.startsWith('http')) {
|
|
25
|
-
console.log(`⚠️ URL sources not yet supported: ${source}`);
|
|
26
|
-
continue;
|
|
27
|
-
}
|
|
28
|
-
// Handle local files
|
|
29
|
-
if (fs.existsSync(source)) {
|
|
30
|
-
const content = fs.readFileSync(source, 'utf-8');
|
|
31
|
-
docs.push(`\n=== ${source} ===\n${content}`);
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
console.warn(`⚠️ File not found: ${source}`);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
if (docs.length === 0) {
|
|
38
|
-
throw new Error('No valid documentation sources found in llms.txt');
|
|
39
|
-
}
|
|
40
|
-
return docs.join('\n\n');
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=llms-txt.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"llms-txt.js","sourceRoot":"","sources":["../../src/sources/llms-txt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AAInB,MAAM,OAAO,aAAa;IAA1B;QACE,SAAI,GAAG,UAAU,CAAA;QACT,aAAQ,GAAG,YAAY,CAAA;IA6CjC,CAAC;IA3CC,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CACb,uCAAuC;gBACrC,qBAAqB;gBACrB,sDAAsD,CACzD,CAAA;QACH,CAAC;QAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QACvD,MAAM,OAAO,GAAG,OAAO;aACpB,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;QAElD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;QACrE,CAAC;QAED,MAAM,IAAI,GAAa,EAAE,CAAA;QAEzB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,+BAA+B;YAC/B,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,sCAAsC,MAAM,EAAE,CAAC,CAAA;gBAC3D,SAAQ;YACV,CAAC;YAED,qBAAqB;YACrB,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;gBAChD,IAAI,CAAC,IAAI,CAAC,SAAS,MAAM,SAAS,OAAO,EAAE,CAAC,CAAA;YAC9C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,uBAAuB,MAAM,EAAE,CAAC,CAAA;YAC/C,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;QACrE,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAC1B,CAAC;CACF"}
|
package/dist/sources/mcp.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { DocSource } from '../types/config.js';
|
|
2
|
-
export declare class MCPSource implements DocSource {
|
|
3
|
-
private server;
|
|
4
|
-
name: string;
|
|
5
|
-
constructor(server: string);
|
|
6
|
-
fetch(): Promise<string>;
|
|
7
|
-
search(query: string): Promise<string>;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=mcp.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/sources/mcp.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAI9C,qBAAa,SAAU,YAAW,SAAS;IAG7B,OAAO,CAAC,MAAM;IAF1B,IAAI,EAAE,MAAM,CAAA;gBAEQ,MAAM,EAAE,MAAM;IAI5B,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAiBxB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAY7C"}
|
package/dist/sources/mcp.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { exec } from 'child_process';
|
|
2
|
-
import { promisify } from 'util';
|
|
3
|
-
const execAsync = promisify(exec);
|
|
4
|
-
export class MCPSource {
|
|
5
|
-
constructor(server) {
|
|
6
|
-
this.server = server;
|
|
7
|
-
this.name = `MCP: ${server}`;
|
|
8
|
-
}
|
|
9
|
-
async fetch() {
|
|
10
|
-
try {
|
|
11
|
-
// For MVP, execute MCP server command
|
|
12
|
-
// Future: Use proper MCP SDK
|
|
13
|
-
const { stdout } = await execAsync(`npx ${this.server} --list-docs`, { maxBuffer: 10 * 1024 * 1024 } // 10MB buffer
|
|
14
|
-
);
|
|
15
|
-
return stdout;
|
|
16
|
-
}
|
|
17
|
-
catch (error) {
|
|
18
|
-
throw new Error(`Failed to connect to MCP server: ${this.server}\n` +
|
|
19
|
-
`Ensure the server package is installed and accessible.`);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
async search(query) {
|
|
23
|
-
try {
|
|
24
|
-
const { stdout } = await execAsync(`npx ${this.server} --search "${query}"`, { maxBuffer: 10 * 1024 * 1024 });
|
|
25
|
-
return stdout;
|
|
26
|
-
}
|
|
27
|
-
catch {
|
|
28
|
-
// Fallback to full fetch if search not supported
|
|
29
|
-
return this.fetch();
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=mcp.js.map
|
package/dist/sources/mcp.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/sources/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAGhC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;AAEjC,MAAM,OAAO,SAAS;IAGpB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAChC,IAAI,CAAC,IAAI,GAAG,QAAQ,MAAM,EAAE,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC;YACH,sCAAsC;YACtC,6BAA6B;YAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAChC,OAAO,IAAI,CAAC,MAAM,cAAc,EAChC,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,cAAc;aAC/C,CAAA;YACD,OAAO,MAAM,CAAA;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,oCAAoC,IAAI,CAAC,MAAM,IAAI;gBACjD,wDAAwD,CAC3D,CAAA;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa;QACxB,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAChC,OAAO,IAAI,CAAC,MAAM,cAAc,KAAK,GAAG,EACxC,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAChC,CAAA;YACD,OAAO,MAAM,CAAA;QACf,CAAC;QAAC,MAAM,CAAC;YACP,iDAAiD;YACjD,OAAO,IAAI,CAAC,KAAK,EAAE,CAAA;QACrB,CAAC;IACH,CAAC;CACF"}
|
package/templates/api.yml
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# DocWorks Configuration - API Documentation
|
|
2
|
-
source: ./llms.txt
|
|
3
|
-
|
|
4
|
-
journeys:
|
|
5
|
-
authentication:
|
|
6
|
-
- How do I authenticate?
|
|
7
|
-
- Where do I get API keys?
|
|
8
|
-
- What auth methods are supported?
|
|
9
|
-
|
|
10
|
-
integration:
|
|
11
|
-
- What are the endpoints?
|
|
12
|
-
- How do I handle errors?
|
|
13
|
-
- What are the rate limits?
|
|
14
|
-
|
|
15
|
-
production:
|
|
16
|
-
- How do I monitor usage?
|
|
17
|
-
- Where are status pages?
|
|
18
|
-
- How do I get support?
|
|
19
|
-
|
|
20
|
-
provider: openai
|
|
21
|
-
model: gpt-4o-mini
|
package/templates/default.yml
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# DocWorks Configuration
|
|
2
|
-
source: ./llms.txt
|
|
3
|
-
|
|
4
|
-
journeys:
|
|
5
|
-
getting_started:
|
|
6
|
-
- How do I install this?
|
|
7
|
-
- How do I get started?
|
|
8
|
-
- Where are examples?
|
|
9
|
-
|
|
10
|
-
development:
|
|
11
|
-
- How do I run tests?
|
|
12
|
-
- How do I debug issues?
|
|
13
|
-
- Where can I get help?
|
|
14
|
-
|
|
15
|
-
# AI Provider (openai or anthropic)
|
|
16
|
-
provider: openai
|
|
17
|
-
model: gpt-4o-mini
|
|
18
|
-
# Optional: Set API key here instead of environment variable
|
|
19
|
-
# api_key: sk-...
|
package/templates/gitbook.yml
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
# DocWorks Configuration - GitBook
|
|
2
|
-
source:
|
|
3
|
-
type: mcp
|
|
4
|
-
server: '@gitbook/mcp-server'
|
|
5
|
-
|
|
6
|
-
journeys:
|
|
7
|
-
knowledge_base:
|
|
8
|
-
- Is content organized logically?
|
|
9
|
-
- Can I search effectively?
|
|
10
|
-
- Are guides comprehensive?
|
|
11
|
-
|
|
12
|
-
provider: openai
|
|
13
|
-
model: gpt-4o-mini
|
package/templates/library.yml
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# DocWorks Configuration - Library/Package
|
|
2
|
-
source: ./llms.txt
|
|
3
|
-
|
|
4
|
-
journeys:
|
|
5
|
-
setup:
|
|
6
|
-
- How do I install this package?
|
|
7
|
-
- How do I import it?
|
|
8
|
-
- What are the requirements?
|
|
9
|
-
|
|
10
|
-
basic_usage:
|
|
11
|
-
- What's a hello world example?
|
|
12
|
-
- What are the main functions?
|
|
13
|
-
- How do I configure options?
|
|
14
|
-
|
|
15
|
-
typescript:
|
|
16
|
-
- Does it have TypeScript support?
|
|
17
|
-
- Where are the type definitions?
|
|
18
|
-
- How do I use with TypeScript?
|
|
19
|
-
|
|
20
|
-
provider: openai
|
|
21
|
-
model: gpt-4o-mini
|
package/templates/mintlify.yml
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# DocWorks Configuration - Mintlify
|
|
2
|
-
source:
|
|
3
|
-
type: mcp
|
|
4
|
-
server: '@mintlify/mcp-server'
|
|
5
|
-
|
|
6
|
-
journeys:
|
|
7
|
-
api_reference:
|
|
8
|
-
- Where is the API reference?
|
|
9
|
-
- Are all endpoints documented?
|
|
10
|
-
- Do examples work?
|
|
11
|
-
|
|
12
|
-
getting_started:
|
|
13
|
-
- Is there a quickstart guide?
|
|
14
|
-
- How do I authenticate?
|
|
15
|
-
- What SDKs are available?
|
|
16
|
-
|
|
17
|
-
provider: openai
|
|
18
|
-
model: gpt-4o-mini
|
package/templates/readme.yml
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
# DocWorks Configuration - ReadMe
|
|
2
|
-
source:
|
|
3
|
-
type: mcp
|
|
4
|
-
server: '@readme/mcp-server'
|
|
5
|
-
|
|
6
|
-
journeys:
|
|
7
|
-
developer_experience:
|
|
8
|
-
- Can I try the API interactively?
|
|
9
|
-
- Are there code examples?
|
|
10
|
-
- Is versioning documented?
|
|
11
|
-
|
|
12
|
-
provider: openai
|
|
13
|
-
model: gpt-4o-mini
|