skrypt-ai 0.8.0 → 0.8.1

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 (101) hide show
  1. package/dist/auth/index.js +6 -0
  2. package/dist/binding/binder.d.ts +5 -0
  3. package/dist/binding/binder.js +63 -0
  4. package/dist/binding/detector.d.ts +5 -0
  5. package/dist/binding/detector.js +51 -0
  6. package/dist/binding/doc-parser.d.ts +9 -0
  7. package/dist/binding/doc-parser.js +138 -0
  8. package/dist/binding/extractor.d.ts +14 -0
  9. package/dist/binding/extractor.js +39 -0
  10. package/dist/binding/index.d.ts +5 -0
  11. package/dist/binding/index.js +5 -0
  12. package/dist/binding/types.d.ts +74 -0
  13. package/dist/binding/types.js +1 -0
  14. package/dist/claims/extractor.d.ts +13 -0
  15. package/dist/claims/extractor.js +138 -0
  16. package/dist/claims/index.d.ts +4 -0
  17. package/dist/claims/index.js +4 -0
  18. package/dist/claims/reporter.d.ts +9 -0
  19. package/dist/claims/reporter.js +65 -0
  20. package/dist/claims/store.d.ts +13 -0
  21. package/dist/claims/store.js +51 -0
  22. package/dist/claims/types.d.ts +34 -0
  23. package/dist/claims/types.js +1 -0
  24. package/dist/cli.js +516 -56
  25. package/dist/commands/bind.d.ts +2 -0
  26. package/dist/commands/bind.js +139 -0
  27. package/dist/commands/claims.d.ts +2 -0
  28. package/dist/commands/claims.js +84 -0
  29. package/dist/commands/coverage.d.ts +2 -0
  30. package/dist/commands/coverage.js +61 -0
  31. package/dist/commands/generate/index.js +5 -0
  32. package/dist/commands/generate/scan.js +33 -14
  33. package/dist/commands/generate/write.d.ts +7 -0
  34. package/dist/commands/generate/write.js +65 -1
  35. package/dist/commands/import.js +12 -3
  36. package/dist/commands/init.js +68 -5
  37. package/dist/commands/monitor.d.ts +15 -0
  38. package/dist/commands/monitor.js +2 -2
  39. package/dist/commands/mutate.d.ts +2 -0
  40. package/dist/commands/mutate.js +177 -0
  41. package/dist/config/types.js +2 -2
  42. package/dist/coverage/calculator.d.ts +7 -0
  43. package/dist/coverage/calculator.js +86 -0
  44. package/dist/coverage/index.d.ts +3 -0
  45. package/dist/coverage/index.js +3 -0
  46. package/dist/coverage/reporter.d.ts +9 -0
  47. package/dist/coverage/reporter.js +65 -0
  48. package/dist/coverage/types.d.ts +36 -0
  49. package/dist/coverage/types.js +1 -0
  50. package/dist/generator/generator.d.ts +3 -1
  51. package/dist/generator/generator.js +137 -23
  52. package/dist/generator/mdx-serializer.js +3 -2
  53. package/dist/generator/organizer.d.ts +5 -1
  54. package/dist/generator/organizer.js +29 -14
  55. package/dist/generator/types.d.ts +6 -0
  56. package/dist/generator/writer.js +7 -2
  57. package/dist/github/org-discovery.js +5 -0
  58. package/dist/importers/mintlify.js +4 -3
  59. package/dist/llm/anthropic-client.js +1 -0
  60. package/dist/llm/index.d.ts +15 -0
  61. package/dist/llm/index.js +148 -29
  62. package/dist/llm/openai-client.js +2 -0
  63. package/dist/mutation/index.d.ts +4 -0
  64. package/dist/mutation/index.js +4 -0
  65. package/dist/mutation/mutator.d.ts +5 -0
  66. package/dist/mutation/mutator.js +101 -0
  67. package/dist/mutation/reporter.d.ts +14 -0
  68. package/dist/mutation/reporter.js +66 -0
  69. package/dist/mutation/runner.d.ts +9 -0
  70. package/dist/mutation/runner.js +70 -0
  71. package/dist/mutation/types.d.ts +51 -0
  72. package/dist/mutation/types.js +1 -0
  73. package/dist/qa/checks.d.ts +1 -0
  74. package/dist/qa/checks.js +47 -0
  75. package/dist/qa/index.js +2 -1
  76. package/dist/scanner/index.js +78 -11
  77. package/dist/scanner/typescript.js +42 -31
  78. package/dist/sentry.d.ts +3 -0
  79. package/dist/sentry.js +28 -0
  80. package/dist/template/docs.json +6 -3
  81. package/dist/template/next.config.mjs +15 -1
  82. package/dist/template/package.json +4 -3
  83. package/dist/template/public/docs-schema.json +257 -0
  84. package/dist/template/sentry.client.config.ts +12 -0
  85. package/dist/template/sentry.edge.config.ts +7 -0
  86. package/dist/template/sentry.server.config.ts +7 -0
  87. package/dist/template/src/app/docs/[...slug]/page.tsx +11 -5
  88. package/dist/template/src/app/docs/layout.tsx +2 -4
  89. package/dist/template/src/app/global-error.tsx +60 -0
  90. package/dist/template/src/app/layout.tsx +7 -16
  91. package/dist/template/src/app/page.tsx +2 -5
  92. package/dist/template/src/components/ai-chat-impl.tsx +1 -1
  93. package/dist/template/src/components/docs-layout.tsx +1 -15
  94. package/dist/template/src/components/footer.tsx +95 -19
  95. package/dist/template/src/components/header.tsx +1 -1
  96. package/dist/template/src/components/search-dialog.tsx +5 -0
  97. package/dist/template/src/instrumentation.ts +11 -0
  98. package/dist/template/src/lib/docs-config.ts +235 -0
  99. package/dist/template/src/lib/fonts.ts +3 -3
  100. package/dist/testing/runner.js +8 -1
  101. package/package.json +2 -1
@@ -0,0 +1,65 @@
1
+ const GREEN = '\x1b[32m';
2
+ const YELLOW = '\x1b[33m';
3
+ const DIM = '\x1b[2m';
4
+ const BOLD = '\x1b[1m';
5
+ const RESET = '\x1b[0m';
6
+ /**
7
+ * Print claims report to terminal
8
+ */
9
+ export function printClaimsReport(claims) {
10
+ console.log(`\n${BOLD}Semantic Claims Report${RESET}\n`);
11
+ // Group by type
12
+ const byType = new Map();
13
+ for (const c of claims) {
14
+ if (!byType.has(c.type))
15
+ byType.set(c.type, []);
16
+ byType.get(c.type).push(c);
17
+ }
18
+ // Type breakdown
19
+ console.log(` ${BOLD}Claims by Type${RESET}`);
20
+ for (const [type, typeClaims] of byType) {
21
+ console.log(` ${type.padEnd(20)} ${typeClaims.length}`);
22
+ }
23
+ console.log('');
24
+ // Testability
25
+ const testable = claims.filter(c => c.testable);
26
+ const untestable = claims.filter(c => !c.testable);
27
+ console.log(` Testable: ${GREEN}${testable.length}${RESET} | Untestable: ${DIM}${untestable.length}${RESET}`);
28
+ console.log('');
29
+ // Group by source file
30
+ const byFile = new Map();
31
+ for (const c of claims) {
32
+ const key = c.source.file;
33
+ if (!byFile.has(key))
34
+ byFile.set(key, []);
35
+ byFile.get(key).push(c);
36
+ }
37
+ console.log(` ${BOLD}Claims by File${RESET}`);
38
+ for (const [file, fileClaims] of byFile) {
39
+ const shortPath = file.length > 50 ? '...' + file.slice(-47) : file;
40
+ console.log(` ${shortPath.padEnd(52)} ${fileClaims.length} claims`);
41
+ }
42
+ console.log('');
43
+ // Sample claims (first 5 testable)
44
+ const samples = testable.slice(0, 5);
45
+ if (samples.length > 0) {
46
+ console.log(` ${BOLD}Sample Claims${RESET}`);
47
+ for (const c of samples) {
48
+ console.log(` ${YELLOW}[${c.type}]${RESET} "${c.text.slice(0, 80)}${c.text.length > 80 ? '...' : ''}"`);
49
+ console.log(` ${DIM}confidence: ${(c.confidence * 100).toFixed(0)}% | ${c.source.section}${RESET}`);
50
+ if (c.suggestedTest) {
51
+ const testPreview = c.suggestedTest.split('\n')[0].slice(0, 60);
52
+ console.log(` ${DIM}test: ${testPreview}...${RESET}`);
53
+ }
54
+ console.log('');
55
+ }
56
+ }
57
+ // Summary
58
+ console.log(`${BOLD} Total: ${claims.length} claims extracted (${testable.length} testable)${RESET}\n`);
59
+ }
60
+ /**
61
+ * Format claims as JSON
62
+ */
63
+ export function formatClaimsJson(claims) {
64
+ return JSON.stringify({ claims, total: claims.length, testable: claims.filter(c => c.testable).length }, null, 2);
65
+ }
@@ -0,0 +1,13 @@
1
+ import { Claim, ClaimsFile } from './types.js';
2
+ /**
3
+ * Read claims from the store
4
+ */
5
+ export declare function readClaims(projectDir: string): ClaimsFile | null;
6
+ /**
7
+ * Write claims to the store
8
+ */
9
+ export declare function writeClaims(projectDir: string, claims: Claim[]): void;
10
+ /**
11
+ * Merge new claims with existing, deduplicating by ID
12
+ */
13
+ export declare function mergeClaims(existing: Claim[], newClaims: Claim[]): Claim[];
@@ -0,0 +1,51 @@
1
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
2
+ import { join, dirname } from 'path';
3
+ const CLAIMS_PATH = '.skrypt/claims.json';
4
+ /**
5
+ * Read claims from the store
6
+ */
7
+ export function readClaims(projectDir) {
8
+ const filePath = join(projectDir, CLAIMS_PATH);
9
+ if (!existsSync(filePath))
10
+ return null;
11
+ try {
12
+ const content = readFileSync(filePath, 'utf-8');
13
+ return JSON.parse(content);
14
+ }
15
+ catch {
16
+ return null;
17
+ }
18
+ }
19
+ /**
20
+ * Write claims to the store
21
+ */
22
+ export function writeClaims(projectDir, claims) {
23
+ const filePath = join(projectDir, CLAIMS_PATH);
24
+ mkdirSync(dirname(filePath), { recursive: true });
25
+ const file = {
26
+ version: 1,
27
+ extractedAt: new Date().toISOString(),
28
+ claims: dedup(claims),
29
+ };
30
+ writeFileSync(filePath, JSON.stringify(file, null, 2));
31
+ }
32
+ /**
33
+ * Merge new claims with existing, deduplicating by ID
34
+ */
35
+ export function mergeClaims(existing, newClaims) {
36
+ const byId = new Map();
37
+ for (const c of existing)
38
+ byId.set(c.id, c);
39
+ for (const c of newClaims)
40
+ byId.set(c.id, c); // new claims override
41
+ return [...byId.values()];
42
+ }
43
+ function dedup(claims) {
44
+ const seen = new Set();
45
+ return claims.filter(c => {
46
+ if (seen.has(c.id))
47
+ return false;
48
+ seen.add(c.id);
49
+ return true;
50
+ });
51
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * A testable claim extracted from documentation
3
+ */
4
+ export interface Claim {
5
+ id: string;
6
+ type: 'behavioral' | 'constraint' | 'integration' | 'performance' | 'error_handling';
7
+ text: string;
8
+ source: {
9
+ file: string;
10
+ section: string;
11
+ line: number;
12
+ };
13
+ confidence: number;
14
+ testable: boolean;
15
+ suggestedTest?: string;
16
+ status: 'extracted' | 'verified' | 'failed' | 'untestable';
17
+ }
18
+ /**
19
+ * Claims store file (.skrypt/claims.json)
20
+ */
21
+ export interface ClaimsFile {
22
+ version: 1;
23
+ extractedAt: string;
24
+ claims: Claim[];
25
+ }
26
+ /**
27
+ * Options for claim extraction
28
+ */
29
+ export interface ClaimOptions {
30
+ file?: string;
31
+ type?: Claim['type'];
32
+ json?: boolean;
33
+ verify?: boolean;
34
+ }
@@ -0,0 +1 @@
1
+ export {};