docworks 0.12.0-next.1 → 0.13.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.
Files changed (75) hide show
  1. package/README.md +83 -54
  2. package/dist/commands/check.d.ts +3 -2
  3. package/dist/commands/check.d.ts.map +1 -1
  4. package/dist/commands/check.js +31 -12
  5. package/dist/commands/check.js.map +1 -1
  6. package/dist/commands/init.d.ts +0 -1
  7. package/dist/commands/init.d.ts.map +1 -1
  8. package/dist/commands/init.js +31 -63
  9. package/dist/commands/init.js.map +1 -1
  10. package/dist/core/validator.d.ts +3 -3
  11. package/dist/core/validator.d.ts.map +1 -1
  12. package/dist/core/validator.js +10 -29
  13. package/dist/core/validator.js.map +1 -1
  14. package/dist/index.js +5 -11
  15. package/dist/index.js.map +1 -1
  16. package/dist/providers/index.d.ts +3 -0
  17. package/dist/providers/index.d.ts.map +1 -0
  18. package/dist/providers/index.js +94 -0
  19. package/dist/providers/index.js.map +1 -0
  20. package/dist/sources/source.d.ts +5 -0
  21. package/dist/sources/source.d.ts.map +1 -0
  22. package/dist/sources/source.js +23 -0
  23. package/dist/sources/source.js.map +1 -0
  24. package/dist/types/config.d.ts +6 -7
  25. package/dist/types/config.d.ts.map +1 -1
  26. package/dist/utils/config.d.ts.map +1 -1
  27. package/dist/utils/config.js +8 -3
  28. package/dist/utils/config.js.map +1 -1
  29. package/dist/utils/reporter.d.ts +1 -1
  30. package/dist/utils/reporter.d.ts.map +1 -1
  31. package/dist/utils/reporter.js +18 -51
  32. package/dist/utils/reporter.js.map +1 -1
  33. package/package.json +1 -1
  34. package/dist/commands/test.d.ts +0 -5
  35. package/dist/commands/test.d.ts.map +0 -1
  36. package/dist/commands/test.js +0 -45
  37. package/dist/commands/test.js.map +0 -1
  38. package/dist/core/ai.d.ts +0 -2
  39. package/dist/core/ai.d.ts.map +0 -1
  40. package/dist/core/ai.js +0 -29
  41. package/dist/core/ai.js.map +0 -1
  42. package/dist/core/cache.d.ts +0 -3
  43. package/dist/core/cache.d.ts.map +0 -1
  44. package/dist/core/cache.js +0 -31
  45. package/dist/core/cache.js.map +0 -1
  46. package/dist/providers/anthropic.d.ts +0 -10
  47. package/dist/providers/anthropic.d.ts.map +0 -1
  48. package/dist/providers/anthropic.js +0 -51
  49. package/dist/providers/anthropic.js.map +0 -1
  50. package/dist/providers/base.d.ts +0 -12
  51. package/dist/providers/base.d.ts.map +0 -1
  52. package/dist/providers/base.js +0 -14
  53. package/dist/providers/base.js.map +0 -1
  54. package/dist/providers/openai.d.ts +0 -10
  55. package/dist/providers/openai.d.ts.map +0 -1
  56. package/dist/providers/openai.js +0 -42
  57. package/dist/providers/openai.js.map +0 -1
  58. package/dist/sources/base.d.ts +0 -3
  59. package/dist/sources/base.d.ts.map +0 -1
  60. package/dist/sources/base.js +0 -12
  61. package/dist/sources/base.js.map +0 -1
  62. package/dist/sources/llms-txt.d.ts +0 -9
  63. package/dist/sources/llms-txt.d.ts.map +0 -1
  64. package/dist/sources/llms-txt.js +0 -64
  65. package/dist/sources/llms-txt.js.map +0 -1
  66. package/dist/sources/local.d.ts +0 -8
  67. package/dist/sources/local.d.ts.map +0 -1
  68. package/dist/sources/local.js +0 -37
  69. package/dist/sources/local.js.map +0 -1
  70. package/templates/api.yml +0 -21
  71. package/templates/default.yml +0 -19
  72. package/templates/gitbook.yml +0 -13
  73. package/templates/library.yml +0 -21
  74. package/templates/mintlify.yml +0 -18
  75. package/templates/readme.yml +0 -13
@@ -0,0 +1,94 @@
1
+ import OpenAI from 'openai';
2
+ const VALIDATION_SCHEMA = {
3
+ type: 'json_schema',
4
+ name: 'doc_validation',
5
+ schema: {
6
+ type: 'object',
7
+ properties: {
8
+ answerable: {
9
+ type: 'string',
10
+ enum: ['YES', 'PARTIAL', 'NO'],
11
+ },
12
+ confidence: {
13
+ type: 'number',
14
+ description: '0-1 confidence score',
15
+ },
16
+ path: {
17
+ type: 'array',
18
+ items: { type: 'string' },
19
+ description: 'URLs visited to find answer',
20
+ },
21
+ reason: {
22
+ type: 'string',
23
+ description: 'Brief explanation',
24
+ },
25
+ missing: {
26
+ type: ['array', 'null'],
27
+ items: { type: 'string' },
28
+ description: 'What info is missing (null if nothing is missing)',
29
+ },
30
+ },
31
+ required: ['answerable', 'confidence', 'path', 'reason', 'missing'],
32
+ additionalProperties: false,
33
+ },
34
+ };
35
+ export async function callProvider(provider, model, apiKey, question, docs) {
36
+ const prompt = `Documentation URLs available:
37
+ ${docs}
38
+
39
+ Task: Search these docs to answer: "${question}"
40
+
41
+ Instructions:
42
+ 1. Use web_search to explore the documentation
43
+ 2. Track which pages you visit
44
+ 3. Determine if docs can answer the question
45
+ 4. Note what's missing if incomplete`;
46
+ switch (provider) {
47
+ case 'openai': {
48
+ const client = new OpenAI({ apiKey });
49
+ try {
50
+ const response = await client.responses.create({
51
+ model,
52
+ input: prompt,
53
+ tools: [
54
+ {
55
+ type: 'web_search_preview',
56
+ },
57
+ ],
58
+ tool_choice: 'required',
59
+ text: {
60
+ format: VALIDATION_SCHEMA,
61
+ },
62
+ });
63
+ const content = response.output_text;
64
+ if (!content) {
65
+ throw new Error('No response content from OpenAI');
66
+ }
67
+ const result = JSON.parse(content);
68
+ return {
69
+ question,
70
+ ...result,
71
+ };
72
+ }
73
+ catch (error) {
74
+ console.error('OpenAI API error:', error);
75
+ // Fallback response
76
+ return {
77
+ question,
78
+ answerable: 'NO',
79
+ confidence: 0,
80
+ path: [],
81
+ reason: 'Failed to validate due to API error',
82
+ missing: ['Unable to complete validation'],
83
+ };
84
+ }
85
+ }
86
+ case 'anthropic': {
87
+ // Similar implementation
88
+ throw new Error('Anthropic not yet implemented');
89
+ }
90
+ default:
91
+ throw new Error(`Unknown provider: ${provider}`);
92
+ }
93
+ }
94
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAA;AAG3B,MAAM,iBAAiB,GAAG;IACxB,IAAI,EAAE,aAAsB;IAC5B,IAAI,EAAE,gBAAgB;IACtB,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC;aAC/B;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,sBAAsB;aACpC;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,WAAW,EAAE,6BAA6B;aAC3C;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mBAAmB;aACjC;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;gBACvB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,WAAW,EAAE,mDAAmD;aACjE;SACF;QACD,QAAQ,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC;QACnE,oBAAoB,EAAE,KAAK;KAC5B;CACF,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAAgB,EAChB,KAAa,EACb,MAAc,EACd,QAAgB,EAChB,IAAY;IAEZ,MAAM,MAAM,GAAG;EACf,IAAI;;sCAEgC,QAAQ;;;;;;qCAMT,CAAA;IAEnC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAA;YAErC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;oBAC7C,KAAK;oBACL,KAAK,EAAE,MAAM;oBACb,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,oBAAoB;yBAC3B;qBACF;oBACD,WAAW,EAAE,UAAU;oBACvB,IAAI,EAAE;wBACJ,MAAM,EAAE,iBAAiB;qBAC1B;iBACF,CAAC,CAAA;gBAEF,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAA;gBACpC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;gBACpD,CAAC;gBAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;gBAElC,OAAO;oBACL,QAAQ;oBACR,GAAG,MAAM;iBACV,CAAA;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAA;gBACzC,oBAAoB;gBACpB,OAAO;oBACL,QAAQ;oBACR,UAAU,EAAE,IAAI;oBAChB,UAAU,EAAE,CAAC;oBACb,IAAI,EAAE,EAAE;oBACR,MAAM,EAAE,qCAAqC;oBAC7C,OAAO,EAAE,CAAC,+BAA+B,CAAC;iBAC3C,CAAA;YACH,CAAC;QACH,CAAC;QAED,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,yBAAyB;YACzB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;QAClD,CAAC;QAED;YACE,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAA;IACpD,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function fetchDocumentation(url: string): Promise<{
2
+ content: string;
3
+ name: string;
4
+ }>;
5
+ //# sourceMappingURL=source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../../src/sources/source.ts"],"names":[],"mappings":"AAAA,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CA0B5C"}
@@ -0,0 +1,23 @@
1
+ export async function fetchDocumentation(url) {
2
+ try {
3
+ // Try to fetch llms.txt
4
+ const llmsTxtUrl = new URL('/llms.txt', url).href;
5
+ console.log(`Fetching ${llmsTxtUrl}...`);
6
+ let response = await fetch(llmsTxtUrl);
7
+ if (!response.ok) {
8
+ // Maybe they provided the llms.txt URL directly
9
+ response = await fetch(url);
10
+ if (!response.ok) {
11
+ throw new Error(`No llms.txt found at ${url}`);
12
+ }
13
+ }
14
+ const content = await response.text();
15
+ const name = `llms.txt from ${new URL(url).hostname}`;
16
+ console.log('✓ Fetched documentation\n');
17
+ return { content, name };
18
+ }
19
+ catch (error) {
20
+ throw new Error(`Failed to fetch documentation from ${url}: ${error.message}`);
21
+ }
22
+ }
23
+ //# sourceMappingURL=source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source.js","sourceRoot":"","sources":["../../src/sources/source.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAW;IAEX,IAAI,CAAC;QACH,wBAAwB;QACxB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,CAAA;QAEjD,OAAO,CAAC,GAAG,CAAC,YAAY,UAAU,KAAK,CAAC,CAAA;QACxC,IAAI,QAAQ,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,CAAA;QAEtC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,gDAAgD;YAChD,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;YAC3B,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAA;YAChD,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QACrC,MAAM,IAAI,GAAG,iBAAiB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAA;QAErD,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;QACxC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAC1B,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,sCAAsC,GAAG,KAAK,KAAK,CAAC,OAAO,EAAE,CAC9D,CAAA;IACH,CAAC;AACH,CAAC"}
@@ -1,21 +1,20 @@
1
1
  export interface DocWorksConfig {
2
2
  source: string;
3
- journeys: Record<string, string[]>;
4
- provider?: 'openai' | 'anthropic';
3
+ questions?: string[];
4
+ journeys?: Record<string, string[]>;
5
+ provider?: string;
5
6
  model?: string;
6
7
  api_key?: string;
7
8
  }
8
9
  export interface ValidationResult {
9
10
  question: string;
10
11
  answerable: 'YES' | 'PARTIAL' | 'NO';
12
+ confidence: number;
13
+ path: string[];
11
14
  reason: string;
12
- location?: string;
15
+ missing?: string[];
13
16
  }
14
17
  export interface JourneyResults {
15
18
  [journey: string]: ValidationResult[];
16
19
  }
17
- export interface DocSource {
18
- name: string;
19
- fetch(): Promise<string>;
20
- }
21
20
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IAClC,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAA;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI,CAAA;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;CACtC;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;CACzB"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI,CAAA;IACpC,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAA;CACtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAkB5E"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAyB5E"}
@@ -4,14 +4,19 @@ export async function loadConfig(configPath) {
4
4
  if (!fs.existsSync(configPath)) {
5
5
  throw new Error(`Config file not found: ${configPath}`);
6
6
  }
7
- const content = fs.readFileSync(configPath, 'utf-8');
7
+ let content = fs.readFileSync(configPath, 'utf-8');
8
+ // Replace environment variables (${VAR:-default} syntax)
9
+ content = content.replace(/\$\{([^}]+)\}/g, (match, expr) => {
10
+ const [varName, defaultValue] = expr.split(':-');
11
+ return process.env[varName] || defaultValue || match;
12
+ });
8
13
  const config = yaml.parse(content);
9
14
  // Validate config
10
15
  if (!config.source) {
11
16
  throw new Error('Config missing "source" section');
12
17
  }
13
- if (!config.journeys) {
14
- throw new Error('Config missing "journeys" section');
18
+ if (!config.journeys && !config.questions) {
19
+ throw new Error('Config must have either "questions" or "journeys" section');
15
20
  }
16
21
  return config;
17
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AAGvB,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAAkB;IACjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAA;IACzD,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAElC,kBAAkB;IAClB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;IACpD,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;IACtD,CAAC;IAED,OAAO,MAAwB,CAAA;AACjC,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AAGvB,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAAkB;IACjD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAA;IACzD,CAAC;IAED,IAAI,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAElD,yDAAyD;IACzD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAC1D,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAChD,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,YAAY,IAAI,KAAK,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAElC,kBAAkB;IAClB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;IACpD,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAA;IAC9E,CAAC;IAED,OAAO,MAAwB,CAAA;AACjC,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import { JourneyResults } from '../types/config.js';
2
- export declare function formatReport(results: JourneyResults, github?: boolean): number;
2
+ export declare function formatReport(results: JourneyResults): number;
3
3
  export declare function formatJSON(results: JourneyResults, source: string): string;
4
4
  //# sourceMappingURL=reporter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../src/utils/reporter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAQ,GAAG,MAAM,CA2E5E;AA0BD,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CA2B1E"}
1
+ {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../src/utils/reporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD,wBAAgB,YAAY,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,CAgE5D;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CA2B1E"}
@@ -1,5 +1,4 @@
1
- import chalk from 'chalk';
2
- export function formatReport(results, github = false) {
1
+ export function formatReport(results) {
3
2
  let totalQuestions = 0;
4
3
  let answeredQuestions = 0;
5
4
  let partialQuestions = 0;
@@ -17,75 +16,43 @@ export function formatReport(results, github = false) {
17
16
  }
18
17
  }
19
18
  const score = Math.round((answeredQuestions / totalQuestions) * 100);
20
- // Format output
21
- if (github) {
22
- return formatGitHub(results, score);
23
- }
24
19
  // Terminal output
25
- console.log('\n' + ''.repeat(50));
26
- console.log(chalk.bold('\n📋 Documentation Validation Report\n'));
20
+ console.log('\n' + '='.repeat(50));
21
+ console.log('\nDocumentation Validation Report\n');
27
22
  for (const [journey, questions] of Object.entries(results)) {
28
- const failed = questions.filter((q) => q.answerable === 'NO');
29
- const partial = questions.filter((q) => q.answerable === 'PARTIAL');
30
- const success = questions.filter((q) => q.answerable === 'YES');
31
- const journeyScore = Math.round((success.length / questions.length) * 100);
32
- const color = journeyScore >= 80
33
- ? chalk.green
34
- : journeyScore >= 50
35
- ? chalk.yellow
36
- : chalk.red;
37
- console.log(chalk.bold(`Journey: ${journey}`));
38
- console.log(color(` Score: ${journeyScore}%`));
39
- console.log(` ✅ Complete: ${success.length}`);
40
- if (partial.length > 0)
41
- console.log(` ⚠️ Partial: ${partial.length}`);
42
- if (failed.length > 0) {
43
- console.log(` ❌ Missing: ${failed.length}`);
44
- for (const q of failed) {
45
- console.log(chalk.red(` • ${q.question}`));
23
+ console.log(`Journey: ${journey}`);
24
+ console.log(''.repeat(40));
25
+ for (const q of questions) {
26
+ const icon = q.answerable === 'YES' ? '✅' : q.answerable === 'PARTIAL' ? '⚠️' : '❌';
27
+ console.log(`${icon} ${q.question}`);
28
+ console.log(` Confidence: ${Math.round(q.confidence * 100)}%`);
29
+ console.log(` Path: ${q.path.length} pages searched`);
30
+ if (q.missing && q.missing.length > 0) {
31
+ console.log(` Missing:`);
32
+ q.missing.forEach((m) => console.log(` - ${m}`));
46
33
  }
47
34
  }
48
35
  console.log();
49
36
  }
50
37
  // Summary
51
- console.log(''.repeat(50));
52
- console.log(chalk.bold(`\n📊 Overall Score: ${score}/100\n`));
38
+ console.log('='.repeat(50));
39
+ console.log(`\nOverall Score: ${score}/100\n`);
53
40
  if (score >= 80) {
54
- console.log(chalk.green('Documentation is AI-ready!'));
41
+ console.log('Documentation is AI-ready!');
55
42
  console.log('Developers and AI agents can successfully use your docs.\n');
56
43
  return 0;
57
44
  }
58
45
  else if (score >= 50) {
59
- console.log(chalk.yellow('⚠️ Documentation needs improvement'));
46
+ console.log('Documentation needs improvement');
60
47
  console.log('Some journeys cannot be completed.\n');
61
48
  return 0;
62
49
  }
63
50
  else {
64
- console.log(chalk.red('Documentation is incomplete'));
51
+ console.log('Documentation is incomplete');
65
52
  console.log('Many developer journeys will fail.\n');
66
53
  return 1;
67
54
  }
68
55
  }
69
- function formatGitHub(results, score) {
70
- // GitHub PR comment format
71
- console.log('## 📋 Documentation Check Results\n');
72
- console.log(`**Score: ${score}/100**\n`);
73
- for (const [journey, questions] of Object.entries(results)) {
74
- const failed = questions.filter((q) => q.answerable === 'NO');
75
- if (failed.length > 0) {
76
- console.log(`### ❌ Journey: ${journey}`);
77
- for (const q of failed) {
78
- console.log(`- ${q.question}`);
79
- }
80
- console.log();
81
- }
82
- }
83
- if (score < 50) {
84
- console.log('⚠️ **This check is failing.** Documentation is incomplete.');
85
- return 1;
86
- }
87
- return 0;
88
- }
89
56
  export function formatJSON(results, source) {
90
57
  const stats = {
91
58
  total: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../src/utils/reporter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,MAAM,UAAU,YAAY,CAAC,OAAuB,EAAE,MAAM,GAAG,KAAK;IAClE,IAAI,cAAc,GAAG,CAAC,CAAA;IACtB,IAAI,iBAAiB,GAAG,CAAC,CAAA;IACzB,IAAI,gBAAgB,GAAG,CAAC,CAAA;IACxB,MAAM,cAAc,GAAa,EAAE,CAAA;IAEnC,kBAAkB;IAClB,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3D,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,MAAM,CAAA;QACvE,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,MAAM,CAAA;QAC1E,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,MAAM,CAAA;QAEpE,cAAc,IAAI,SAAS,CAAC,MAAM,CAAA;QAClC,iBAAiB,IAAI,QAAQ,CAAA;QAC7B,gBAAgB,IAAI,OAAO,CAAA;QAE3B,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACf,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC9B,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,iBAAiB,GAAG,cAAc,CAAC,GAAG,GAAG,CAAC,CAAA;IAEpE,gBAAgB;IAChB,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IACrC,CAAC;IAED,kBAAkB;IAClB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAA;IAEjE,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3D,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAA;QAC7D,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAA;QACnE,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,CAAA;QAE/D,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAA;QAC1E,MAAM,KAAK,GACT,YAAY,IAAI,EAAE;YAChB,CAAC,CAAC,KAAK,CAAC,KAAK;YACb,CAAC,CAAC,YAAY,IAAI,EAAE;gBAClB,CAAC,CAAC,KAAK,CAAC,MAAM;gBACd,CAAC,CAAC,KAAK,CAAC,GAAG,CAAA;QAEjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC,CAAA;QAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,YAAY,GAAG,CAAC,CAAC,CAAA;QAC/C,OAAO,CAAC,GAAG,CAAC,iBAAiB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;QAC9C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;QACvE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;YAC5C,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;YAChD,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAA;IACf,CAAC;IAED,UAAU;IACV,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,KAAK,QAAQ,CAAC,CAAC,CAAA;IAE7D,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAA;QACxD,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAA;QACzE,OAAO,CAAC,CAAA;IACV,CAAC;SAAM,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC,CAAA;QAChE,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAA;QACnD,OAAO,CAAC,CAAA;IACV,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAA;QACvD,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAA;QACnD,OAAO,CAAC,CAAA;IACV,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,OAAuB,EAAE,KAAa;IAC1D,2BAA2B;IAC3B,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAA;IAClD,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,UAAU,CAAC,CAAA;IAExC,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3D,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAA;QAC7D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,EAAE,CAAC,CAAA;YACxC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAA;YAChC,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAA;QACf,CAAC;IACH,CAAC;IAED,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,4DAA4D,CAAC,CAAA;QACzE,OAAO,CAAC,CAAA;IACV,CAAC;IAED,OAAO,CAAC,CAAA;AACV,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAuB,EAAE,MAAc;IAChE,MAAM,KAAK,GAAG;QACZ,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;QACV,OAAO,EAAE,CAAC;KACX,CAAA;IAED,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/C,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,CAAA;QAC/B,KAAK,CAAC,QAAQ,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,MAAM,CAAA;QACxE,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,MAAM,CAAA;QAC3E,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,MAAM,CAAA;IACxE,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,MAAM;QACN,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;QACvD,KAAK;QACL,OAAO;KACR,EACD,IAAI,EACJ,CAAC,CACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../src/utils/reporter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "docworks",
3
- "version": "0.12.0-next.1",
3
+ "version": "0.13.0",
4
4
  "description": "Ensure your docs work for developers and AI",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,5 +0,0 @@
1
- export declare function test(options: {
2
- config: string;
3
- ai?: string;
4
- }): Promise<void>;
5
- //# sourceMappingURL=test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAIA,wBAAsB,IAAI,CAAC,OAAO,EAAE;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ,GAAG,OAAO,CAAC,IAAI,CAAC,CA+ChB"}
@@ -1,45 +0,0 @@
1
- import { loadConfig } from '../utils/config.js';
2
- import { createSource } from '../sources/base.js';
3
- import { createProvider } from '../providers/base.js';
4
- export async function test(options) {
5
- if (!options.ai) {
6
- console.error('Specify a task: docworks test --ai "build hello world"');
7
- process.exit(1);
8
- }
9
- try {
10
- const config = await loadConfig(options.config || 'docworks.yml');
11
- const apiKey = process.env.OPENAI_API_KEY || config.api_key;
12
- if (!apiKey) {
13
- console.error('❌ No API key found');
14
- process.exit(1);
15
- }
16
- // Load docs
17
- console.log('📚 Loading documentation...');
18
- const source = await createSource(config);
19
- const docs = await source.fetch();
20
- // Ask AI to complete task
21
- console.log(`\n🤖 Testing: "${options.ai}"\n`);
22
- const provider = createProvider(config.provider || 'openai', apiKey);
23
- const prompt = `
24
- Using ONLY this documentation, ${options.ai}.
25
- Provide working code.
26
-
27
- Documentation:
28
- ${docs.substring(0, 30000)}
29
-
30
- Provide ONLY the code, no explanation.`;
31
- const response = await provider.complete(prompt);
32
- console.log('Generated code:');
33
- console.log('─'.repeat(40));
34
- console.log(response);
35
- console.log('─'.repeat(40));
36
- // Future: Actually execute and validate the code
37
- console.log('\n✅ AI successfully generated code from documentation');
38
- console.log('⚠️ Code execution validation coming soon');
39
- }
40
- catch (error) {
41
- console.error('❌ Error:', error.message);
42
- process.exit(1);
43
- }
44
- }
45
- //# sourceMappingURL=test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAG1B;IACC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAA;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI,cAAc,CAAC,CAAA;QACjE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,MAAM,CAAC,OAAO,CAAA;QAE3D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,YAAY;QACZ,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAA;QAC1C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAA;QACzC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAEjC,0BAA0B;QAC1B,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,CAAC,EAAE,KAAK,CAAC,CAAA;QAE9C,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,QAAQ,IAAI,QAAQ,EAAE,MAAM,CAAC,CAAA;QACpE,MAAM,MAAM,GAAG;iCACc,OAAO,CAAC,EAAE;;;;EAIzC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC;;uCAEa,CAAA;QAEnC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAEhD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;QAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;QAC3B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACrB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;QAE3B,iDAAiD;QACjD,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAA;QACpE,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAA;IAC1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,UAAU,EAAG,KAAe,CAAC,OAAO,CAAC,CAAA;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC"}
package/dist/core/ai.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export declare function checkAnswerability(question: string, docs: string, apiKey: string, provider?: string, model?: string): Promise<import("../providers/base.js").ValidationResult>;
2
- //# sourceMappingURL=ai.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/core/ai.ts"],"names":[],"mappings":"AAEA,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,SAAW,EACnB,KAAK,CAAC,EAAE,MAAM,4DA8Bf"}
package/dist/core/ai.js DELETED
@@ -1,29 +0,0 @@
1
- import { createProvider } from '../providers/base.js';
2
- export async function checkAnswerability(question, docs, apiKey, provider = 'openai', model) {
3
- const maxRetries = 3;
4
- let lastError = null;
5
- for (let attempt = 1; attempt <= maxRetries; attempt++) {
6
- try {
7
- const aiProvider = createProvider(provider, apiKey, model);
8
- return await aiProvider.checkAnswerability(question, docs);
9
- }
10
- catch (error) {
11
- lastError = error;
12
- // Retry on rate limits with exponential backoff
13
- if (error.status === 429 && attempt < maxRetries) {
14
- const delay = Math.pow(2, attempt) * 1000;
15
- await new Promise((resolve) => setTimeout(resolve, delay));
16
- continue;
17
- }
18
- // Don't retry on other errors
19
- break;
20
- }
21
- }
22
- // Return error state instead of throwing
23
- return {
24
- answerable: 'NO',
25
- reason: lastError?.message || 'Unknown error',
26
- location: 'N/A',
27
- };
28
- }
29
- //# sourceMappingURL=ai.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/core/ai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAgB,EAChB,IAAY,EACZ,MAAc,EACd,QAAQ,GAAG,QAAQ,EACnB,KAAc;IAEd,MAAM,UAAU,GAAG,CAAC,CAAA;IACpB,IAAI,SAAS,GAAiB,IAAI,CAAA;IAElC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;YAC1D,OAAO,MAAM,UAAU,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QAC5D,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,SAAS,GAAG,KAAK,CAAA;YAEjB,gDAAgD;YAChD,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;gBACjD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;gBACzC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;gBAC1D,SAAQ;YACV,CAAC;YAED,8BAA8B;YAC9B,MAAK;QACP,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,OAAO;QACL,UAAU,EAAE,IAAa;QACzB,MAAM,EAAE,SAAS,EAAE,OAAO,IAAI,eAAe;QAC7C,QAAQ,EAAE,KAAK;KAChB,CAAA;AACH,CAAC"}
@@ -1,3 +0,0 @@
1
- export declare function getCached(key: string): any;
2
- export declare function setCached(key: string, data: any): void;
3
- //# sourceMappingURL=cache.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/core/cache.ts"],"names":[],"mappings":"AAYA,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAgB1C;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,IAAI,CAUtD"}
@@ -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
@@ -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"}
@@ -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"}
@@ -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"}