kiri-mcp-server 0.9.9 → 0.11.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 (130) hide show
  1. package/README.md +60 -7
  2. package/config/scoring-profiles.yml +82 -35
  3. package/dist/config/scoring-profiles.yml +82 -35
  4. package/dist/package.json +12 -1
  5. package/dist/src/client/proxy.js +81 -12
  6. package/dist/src/client/proxy.js.map +1 -1
  7. package/dist/src/daemon/daemon.js +91 -14
  8. package/dist/src/daemon/daemon.js.map +1 -1
  9. package/dist/src/indexer/cli.d.ts.map +1 -1
  10. package/dist/src/indexer/cli.js +712 -98
  11. package/dist/src/indexer/cli.js.map +1 -1
  12. package/dist/src/indexer/git.d.ts.map +1 -1
  13. package/dist/src/indexer/git.js +41 -3
  14. package/dist/src/indexer/git.js.map +1 -1
  15. package/dist/src/indexer/migrations/repo-merger.d.ts +33 -0
  16. package/dist/src/indexer/migrations/repo-merger.d.ts.map +1 -0
  17. package/dist/src/indexer/migrations/repo-merger.js +67 -0
  18. package/dist/src/indexer/migrations/repo-merger.js.map +1 -0
  19. package/dist/src/indexer/schema.d.ts +66 -0
  20. package/dist/src/indexer/schema.d.ts.map +1 -1
  21. package/dist/src/indexer/schema.js +337 -0
  22. package/dist/src/indexer/schema.js.map +1 -1
  23. package/dist/src/server/abbreviations.d.ts +47 -0
  24. package/dist/src/server/abbreviations.d.ts.map +1 -0
  25. package/dist/src/server/abbreviations.js +71 -0
  26. package/dist/src/server/abbreviations.js.map +1 -0
  27. package/dist/src/server/boost-profiles.d.ts +63 -0
  28. package/dist/src/server/boost-profiles.d.ts.map +1 -0
  29. package/dist/src/server/boost-profiles.js +202 -0
  30. package/dist/src/server/boost-profiles.js.map +1 -0
  31. package/dist/src/server/config.d.ts +45 -0
  32. package/dist/src/server/config.d.ts.map +1 -0
  33. package/dist/src/server/config.js +146 -0
  34. package/dist/src/server/config.js.map +1 -0
  35. package/dist/src/server/context.d.ts +29 -0
  36. package/dist/src/server/context.d.ts.map +1 -1
  37. package/dist/src/server/context.js +26 -1
  38. package/dist/src/server/context.js.map +1 -1
  39. package/dist/src/server/handlers/snippets-get.d.ts +36 -0
  40. package/dist/src/server/handlers/snippets-get.d.ts.map +1 -0
  41. package/dist/src/server/handlers/snippets-get.js +120 -0
  42. package/dist/src/server/handlers/snippets-get.js.map +1 -0
  43. package/dist/src/server/handlers.d.ts +35 -22
  44. package/dist/src/server/handlers.d.ts.map +1 -1
  45. package/dist/src/server/handlers.js +1993 -414
  46. package/dist/src/server/handlers.js.map +1 -1
  47. package/dist/src/server/indexBootstrap.d.ts.map +1 -1
  48. package/dist/src/server/indexBootstrap.js +49 -2
  49. package/dist/src/server/indexBootstrap.js.map +1 -1
  50. package/dist/src/server/main.d.ts.map +1 -1
  51. package/dist/src/server/main.js +119 -30
  52. package/dist/src/server/main.js.map +1 -1
  53. package/dist/src/server/profile-selector.d.ts +33 -0
  54. package/dist/src/server/profile-selector.d.ts.map +1 -0
  55. package/dist/src/server/profile-selector.js +291 -0
  56. package/dist/src/server/profile-selector.js.map +1 -0
  57. package/dist/src/server/rpc.d.ts.map +1 -1
  58. package/dist/src/server/rpc.js +61 -12
  59. package/dist/src/server/rpc.js.map +1 -1
  60. package/dist/src/server/rrf.d.ts +86 -0
  61. package/dist/src/server/rrf.d.ts.map +1 -0
  62. package/dist/src/server/rrf.js +108 -0
  63. package/dist/src/server/rrf.js.map +1 -0
  64. package/dist/src/server/runtime.d.ts.map +1 -1
  65. package/dist/src/server/runtime.js +14 -4
  66. package/dist/src/server/runtime.js.map +1 -1
  67. package/dist/src/server/scoring.d.ts +7 -1
  68. package/dist/src/server/scoring.d.ts.map +1 -1
  69. package/dist/src/server/scoring.js +121 -2
  70. package/dist/src/server/scoring.js.map +1 -1
  71. package/dist/src/server/services/index.d.ts +24 -0
  72. package/dist/src/server/services/index.d.ts.map +1 -0
  73. package/dist/src/server/services/index.js +20 -0
  74. package/dist/src/server/services/index.js.map +1 -0
  75. package/dist/src/server/services/repo-repository.d.ts +61 -0
  76. package/dist/src/server/services/repo-repository.d.ts.map +1 -0
  77. package/dist/src/server/services/repo-repository.js +93 -0
  78. package/dist/src/server/services/repo-repository.js.map +1 -0
  79. package/dist/src/server/services/repo-resolver.d.ts +28 -0
  80. package/dist/src/server/services/repo-resolver.d.ts.map +1 -0
  81. package/dist/src/server/services/repo-resolver.js +62 -0
  82. package/dist/src/server/services/repo-resolver.js.map +1 -0
  83. package/dist/src/shared/cli/args.d.ts +70 -0
  84. package/dist/src/shared/cli/args.d.ts.map +1 -0
  85. package/dist/src/shared/cli/args.js +84 -0
  86. package/dist/src/shared/cli/args.js.map +1 -0
  87. package/dist/src/shared/duckdb.d.ts.map +1 -1
  88. package/dist/src/shared/duckdb.js +21 -1
  89. package/dist/src/shared/duckdb.js.map +1 -1
  90. package/dist/src/shared/embedding/engine.d.ts +38 -0
  91. package/dist/src/shared/embedding/engine.d.ts.map +1 -0
  92. package/dist/src/shared/embedding/engine.js +6 -0
  93. package/dist/src/shared/embedding/engine.js.map +1 -0
  94. package/dist/src/shared/embedding/lsh-engine.d.ts +11 -0
  95. package/dist/src/shared/embedding/lsh-engine.d.ts.map +1 -0
  96. package/dist/src/shared/embedding/lsh-engine.js +14 -0
  97. package/dist/src/shared/embedding/lsh-engine.js.map +1 -0
  98. package/dist/src/shared/embedding/registry.d.ts +25 -0
  99. package/dist/src/shared/embedding/registry.d.ts.map +1 -0
  100. package/dist/src/shared/embedding/registry.js +50 -0
  101. package/dist/src/shared/embedding/registry.js.map +1 -0
  102. package/dist/src/shared/embedding/semantic-engine.d.ts +14 -0
  103. package/dist/src/shared/embedding/semantic-engine.d.ts.map +1 -0
  104. package/dist/src/shared/embedding/semantic-engine.js +50 -0
  105. package/dist/src/shared/embedding/semantic-engine.js.map +1 -0
  106. package/dist/src/shared/fs/safePath.d.ts +7 -0
  107. package/dist/src/shared/fs/safePath.d.ts.map +1 -0
  108. package/dist/src/shared/fs/safePath.js +23 -0
  109. package/dist/src/shared/fs/safePath.js.map +1 -0
  110. package/dist/src/shared/models/model-manager.d.ts +38 -0
  111. package/dist/src/shared/models/model-manager.d.ts.map +1 -0
  112. package/dist/src/shared/models/model-manager.js +116 -0
  113. package/dist/src/shared/models/model-manager.js.map +1 -0
  114. package/dist/src/shared/models/model-manifest.d.ts +22 -0
  115. package/dist/src/shared/models/model-manifest.d.ts.map +1 -0
  116. package/dist/src/shared/models/model-manifest.js +24 -0
  117. package/dist/src/shared/models/model-manifest.js.map +1 -0
  118. package/dist/src/shared/utils/glob.d.ts +5 -0
  119. package/dist/src/shared/utils/glob.d.ts.map +1 -0
  120. package/dist/src/shared/utils/glob.js +22 -0
  121. package/dist/src/shared/utils/glob.js.map +1 -0
  122. package/dist/src/shared/utils/retry.d.ts +8 -0
  123. package/dist/src/shared/utils/retry.d.ts.map +1 -0
  124. package/dist/src/shared/utils/retry.js +20 -0
  125. package/dist/src/shared/utils/retry.js.map +1 -0
  126. package/dist/src/shared/utils/validation.d.ts +14 -0
  127. package/dist/src/shared/utils/validation.d.ts.map +1 -0
  128. package/dist/src/shared/utils/validation.js +22 -0
  129. package/dist/src/shared/utils/validation.js.map +1 -0
  130. package/package.json +29 -20
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Model manifest and descriptors
3
+ * Defines available embedding models and their properties
4
+ */
5
+ import type { EmbeddingModel } from "../embedding/engine.js";
6
+ export interface ModelDescriptor {
7
+ /** Model identifier */
8
+ name: EmbeddingModel;
9
+ /** Model version */
10
+ version: string;
11
+ /** Download size in MB */
12
+ sizeMB: number;
13
+ /** Source (Hugging Face model ID or 'builtin') */
14
+ source: string;
15
+ /** Embedding dimensionality */
16
+ dims: number;
17
+ }
18
+ /**
19
+ * Available embedding models
20
+ */
21
+ export declare const MODELS: Record<EmbeddingModel, ModelDescriptor>;
22
+ //# sourceMappingURL=model-manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-manifest.d.ts","sourceRoot":"","sources":["../../../../src/shared/models/model-manifest.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,MAAM,WAAW,eAAe;IAC9B,uBAAuB;IACvB,IAAI,EAAE,cAAc,CAAC;IAErB,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;IAEhB,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IAEf,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;IAEf,+BAA+B;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,cAAc,EAAE,eAAe,CAe1D,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Model manifest and descriptors
3
+ * Defines available embedding models and their properties
4
+ */
5
+ /**
6
+ * Available embedding models
7
+ */
8
+ export const MODELS = {
9
+ "lsh-64": {
10
+ name: "lsh-64",
11
+ version: "1",
12
+ sizeMB: 0,
13
+ source: "builtin",
14
+ dims: 64,
15
+ },
16
+ "semantic-gte-384": {
17
+ name: "semantic-gte-384",
18
+ version: "1",
19
+ sizeMB: 34,
20
+ source: "Xenova/gte-small",
21
+ dims: 384,
22
+ },
23
+ };
24
+ //# sourceMappingURL=model-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-manifest.js","sourceRoot":"","sources":["../../../../src/shared/models/model-manifest.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqBH;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAA4C;IAC7D,QAAQ,EAAE;QACR,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,CAAC;QACT,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,EAAE;KACT;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,kBAAkB;QAC1B,IAAI,EAAE,GAAG;KACV;CACF,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * シンプルな glob マッチング - `*` と複数階層の `**` をサポート
3
+ */
4
+ export declare function matchesGlob(path: string, pattern: string): boolean;
5
+ //# sourceMappingURL=glob.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../../../../src/shared/utils/glob.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAoBlE"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * シンプルな glob マッチング - `*` と複数階層の `**` をサポート
3
+ */
4
+ export function matchesGlob(path, pattern) {
5
+ if (!pattern) {
6
+ return false;
7
+ }
8
+ const normalizedPath = path.replace(/^[.][/\\]/u, "");
9
+ const normalizedPattern = pattern.replace(/^[.][/\\]/u, "");
10
+ let regexPattern = normalizedPattern
11
+ .replace(/[.+?^${}()|[\]\\]/g, "\\$&")
12
+ .replace(/\*\*\//g, "DOUBLESTAR_SLASH")
13
+ .replace(/\/\*\*/g, "SLASH_DOUBLESTAR")
14
+ .replace(/\*\*/g, "DOUBLESTAR")
15
+ .replace(/\*/g, "[^/]*")
16
+ .replace(/DOUBLESTAR_SLASH/g, "(?:.*/)?")
17
+ .replace(/SLASH_DOUBLESTAR/g, "(?:/.*)?")
18
+ .replace(/DOUBLESTAR/g, ".*");
19
+ regexPattern = `^${regexPattern}$`;
20
+ return new RegExp(regexPattern).test(normalizedPath);
21
+ }
22
+ //# sourceMappingURL=glob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glob.js","sourceRoot":"","sources":["../../../../src/shared/utils/glob.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,OAAe;IACvD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAE5D,IAAI,YAAY,GAAG,iBAAiB;SACjC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC;SACrC,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC;SACtC,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC;SACtC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC;SAC9B,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;SACvB,OAAO,CAAC,mBAAmB,EAAE,UAAU,CAAC;SACxC,OAAO,CAAC,mBAAmB,EAAE,UAAU,CAAC;SACxC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAEhC,YAAY,GAAG,IAAI,YAAY,GAAG,CAAC;IACnC,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACvD,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface RetryOptions {
2
+ maxAttempts: number;
3
+ delayMs: number;
4
+ jitterMs?: number;
5
+ isRetriable?: (error: unknown) => boolean;
6
+ }
7
+ export declare function withRetry<T>(operation: () => Promise<T>, { maxAttempts, delayMs, jitterMs, isRetriable }: RetryOptions): Promise<T>;
8
+ //# sourceMappingURL=retry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../../../src/shared/utils/retry.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CAC3C;AAED,wBAAsB,SAAS,CAAC,CAAC,EAC/B,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,EAAE,WAAW,EAAE,OAAO,EAAE,QAAY,EAAE,WAAW,EAAE,EAAE,YAAY,GAChE,OAAO,CAAC,CAAC,CAAC,CAmBZ"}
@@ -0,0 +1,20 @@
1
+ export async function withRetry(operation, { maxAttempts, delayMs, jitterMs = 0, isRetriable }) {
2
+ if (maxAttempts < 1) {
3
+ throw new Error("maxAttempts must be >= 1");
4
+ }
5
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
6
+ try {
7
+ return await operation();
8
+ }
9
+ catch (error) {
10
+ const shouldRetry = attempt < maxAttempts && (isRetriable ? isRetriable(error) : true);
11
+ if (!shouldRetry) {
12
+ throw error;
13
+ }
14
+ const jitter = jitterMs > 0 ? Math.random() * jitterMs : 0;
15
+ await new Promise((resolve) => setTimeout(resolve, delayMs + jitter));
16
+ }
17
+ }
18
+ throw new Error("Retry attempts exhausted");
19
+ }
20
+ //# sourceMappingURL=retry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../../src/shared/utils/retry.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,SAA2B,EAC3B,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,GAAG,CAAC,EAAE,WAAW,EAAgB;IAEjE,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACxD,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,WAAW,GAAG,OAAO,GAAG,WAAW,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACvF,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,MAAM,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3D,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Validation utilities for CLI arguments and user input
3
+ */
4
+ /**
5
+ * Parse a string to a positive integer with validation
6
+ *
7
+ * @param value - String value to parse
8
+ * @param defaultValue - Default value if input is undefined
9
+ * @param name - Parameter name for error messages
10
+ * @returns Parsed integer
11
+ * @throws Error if value is not a valid positive integer
12
+ */
13
+ export declare function parsePositiveInt(value: string | undefined, defaultValue: number, name: string): number;
14
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../src/shared/utils/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,GACX,MAAM,CAUR"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Validation utilities for CLI arguments and user input
3
+ */
4
+ /**
5
+ * Parse a string to a positive integer with validation
6
+ *
7
+ * @param value - String value to parse
8
+ * @param defaultValue - Default value if input is undefined
9
+ * @param name - Parameter name for error messages
10
+ * @returns Parsed integer
11
+ * @throws Error if value is not a valid positive integer
12
+ */
13
+ export function parsePositiveInt(value, defaultValue, name) {
14
+ if (!value)
15
+ return defaultValue;
16
+ const parsed = parseInt(value, 10);
17
+ if (Number.isNaN(parsed) || parsed < 0) {
18
+ throw new Error(`Invalid ${name}: "${value}". Expected a positive integer. Use default ${defaultValue} or specify a valid number.`);
19
+ }
20
+ return parsed;
21
+ }
22
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../src/shared/utils/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAyB,EACzB,YAAoB,EACpB,IAAY;IAEZ,IAAI,CAAC,KAAK;QAAE,OAAO,YAAY,CAAC;IAEhC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACnC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,WAAW,IAAI,MAAM,KAAK,+CAA+C,YAAY,6BAA6B,CACnH,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/package.json CHANGED
@@ -1,9 +1,8 @@
1
1
  {
2
2
  "name": "kiri-mcp-server",
3
- "version": "0.9.9",
3
+ "version": "0.11.0",
4
4
  "description": "KIRI context extraction platform",
5
5
  "type": "module",
6
- "packageManager": "pnpm@9.0.0",
7
6
  "main": "./dist/src/index.js",
8
7
  "module": "./dist/src/index.js",
9
8
  "types": "./dist/src/index.d.ts",
@@ -49,26 +48,11 @@
49
48
  "publishConfig": {
50
49
  "access": "public"
51
50
  },
52
- "scripts": {
53
- "bootstrap": "pnpm install",
54
- "build": "tsc --project tsconfig.build.json && pnpm run build:copy-assets",
55
- "build:copy-assets": "tsx scripts/build/copy-assets.ts",
56
- "dev": "tsx src/server/main.ts --port 8765",
57
- "lint": "eslint \"{src,tests,scripts}/**/*.{ts,tsx}\" && prettier --check \"**/*.{ts,tsx,json,md,yml}\"",
58
- "test": "vitest run --coverage --pool=forks --poolOptions.forks.singleFork --poolOptions.forks.maxForks=1 --poolOptions.forks.minForks=1",
59
- "verify": "tsx scripts/test/verify-all.ts",
60
- "verify:unit": "tsx scripts/test/verify-all.ts --category unit",
61
- "verify:dart": "tsx scripts/test/verify-all.ts --category dart",
62
- "verify:integration": "tsx scripts/test/verify-all.ts --category integration",
63
- "verify:tools": "tsx scripts/test/verify-all.ts --category tools",
64
- "verify:watch": "tsx scripts/test/verify-all.ts --category watch",
65
- "verify:eval": "tsx scripts/test/verify-all.ts --category eval",
66
- "check": "pnpm run lint && pnpm run test",
67
- "prepublishOnly": "pnpm run build"
68
- },
69
51
  "dependencies": {
70
52
  "chokidar": "^4.0.3",
53
+ "csv-parse": "^5.5.6",
71
54
  "duckdb": "^1.1.0",
55
+ "fast-deep-equal": "^3.1.3",
72
56
  "gpt-tokenizer": "^3.2.0",
73
57
  "p-queue": "^9.0.0",
74
58
  "tree-sitter": "^0.22.0",
@@ -88,6 +72,7 @@
88
72
  "eslint-config-prettier": "^9.1.0",
89
73
  "eslint-plugin-import": "^2.29.1",
90
74
  "execa": "^9.6.0",
75
+ "fast-check": "^4.3.0",
91
76
  "lint-staged": "^15.2.10",
92
77
  "prettier": "^3.3.3",
93
78
  "simple-git-hooks": "^2.10.0",
@@ -101,5 +86,29 @@
101
86
  "*.{ts,tsx,json,md,yml}": [
102
87
  "pnpm exec prettier --write"
103
88
  ]
89
+ },
90
+ "scripts": {
91
+ "bootstrap": "pnpm install",
92
+ "build": "tsc --project tsconfig.build.json && pnpm run build:copy-assets",
93
+ "build:copy-assets": "tsx scripts/build/copy-assets.ts",
94
+ "dev": "tsx src/server/main.ts --port 8765",
95
+ "lint": "eslint \"{src,tests,scripts}/**/*.{ts,tsx}\" && prettier --check \"**/*.{ts,tsx,json,md,yml}\"",
96
+ "test": "vitest run --coverage --pool=forks --poolOptions.forks.singleFork --poolOptions.forks.maxForks=1 --poolOptions.forks.minForks=1",
97
+ "verify": "tsx scripts/test/verify-all.ts",
98
+ "verify:unit": "tsx scripts/test/verify-all.ts --category unit",
99
+ "verify:dart": "tsx scripts/test/verify-all.ts --category dart",
100
+ "verify:integration": "tsx scripts/test/verify-all.ts --category integration",
101
+ "verify:tools": "tsx scripts/test/verify-all.ts --category tools",
102
+ "verify:watch": "tsx scripts/test/verify-all.ts --category watch",
103
+ "verify:eval": "tsx scripts/test/verify-all.ts --category eval",
104
+ "eval:golden": "tsx scripts/eval/run-golden.ts",
105
+ "eval:golden:verbose": "tsx scripts/eval/run-golden.ts --verbose",
106
+ "assay:evaluate": "tsx scripts/assay/run-evaluation.ts",
107
+ "assay:compare": "tsx scripts/assay/run-comparison.ts",
108
+ "assay:compare:help": "tsx scripts/assay/run-comparison.ts --help",
109
+ "assay:baseline": "tsx scripts/assay/baseline.ts",
110
+ "assay:profile-matrix": "tsx scripts/assay/run-profile-matrix.ts",
111
+ "assay:report-matrix": "tsx scripts/assay/report-matrix.ts",
112
+ "check": "pnpm run lint && pnpm run test"
104
113
  }
105
- }
114
+ }