coding-agent-benchmarks 0.5.0 → 0.5.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.
- package/README.md +7 -3
- package/dist/evaluator.d.ts +1 -0
- package/dist/evaluator.d.ts.map +1 -1
- package/dist/evaluator.js +1 -1
- package/dist/evaluator.js.map +1 -1
- package/dist/longest-common-subsequence.d.ts +45 -0
- package/dist/longest-common-subsequence.d.ts.map +1 -0
- package/dist/longest-common-subsequence.js +162 -0
- package/dist/longest-common-subsequence.js.map +1 -0
- package/dist/longestCommonSubsequence.d.ts +39 -0
- package/dist/longestCommonSubsequence.d.ts.map +1 -0
- package/dist/longestCommonSubsequence.js +166 -0
- package/dist/longestCommonSubsequence.js.map +1 -0
- package/dist/runner.js +8 -4
- package/dist/runner.js.map +1 -1
- package/dist/types.d.ts +5 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/user-registration/example.d.ts +2 -0
- package/dist/user-registration/example.d.ts.map +1 -0
- package/dist/user-registration/example.js +41 -0
- package/dist/user-registration/example.js.map +1 -0
- package/dist/user-registration/index.d.ts +9 -0
- package/dist/user-registration/index.d.ts.map +1 -0
- package/dist/user-registration/index.js +22 -0
- package/dist/user-registration/index.js.map +1 -0
- package/dist/user-registration/services/email-service.d.ts +13 -0
- package/dist/user-registration/services/email-service.d.ts.map +1 -0
- package/dist/user-registration/services/email-service.js +34 -0
- package/dist/user-registration/services/email-service.js.map +1 -0
- package/dist/user-registration/services/password-service.d.ts +5 -0
- package/dist/user-registration/services/password-service.d.ts.map +1 -0
- package/dist/user-registration/services/password-service.js +23 -0
- package/dist/user-registration/services/password-service.js.map +1 -0
- package/dist/user-registration/services/registration-service.d.ts +19 -0
- package/dist/user-registration/services/registration-service.d.ts.map +1 -0
- package/dist/user-registration/services/registration-service.js +60 -0
- package/dist/user-registration/services/registration-service.js.map +1 -0
- package/dist/user-registration/services/user-repository.d.ts +12 -0
- package/dist/user-registration/services/user-repository.d.ts.map +1 -0
- package/dist/user-registration/services/user-repository.js +24 -0
- package/dist/user-registration/services/user-repository.js.map +1 -0
- package/dist/user-registration/types.d.ts +26 -0
- package/dist/user-registration/types.d.ts.map +1 -0
- package/dist/user-registration/types.js +18 -0
- package/dist/user-registration/types.js.map +1 -0
- package/dist/user-registration/validators/email-validator.d.ts +3 -0
- package/dist/user-registration/validators/email-validator.d.ts.map +1 -0
- package/dist/user-registration/validators/email-validator.js +22 -0
- package/dist/user-registration/validators/email-validator.js.map +1 -0
- package/dist/user-registration/validators/password-validator.d.ts +3 -0
- package/dist/user-registration/validators/password-validator.d.ts.map +1 -0
- package/dist/user-registration/validators/password-validator.js +36 -0
- package/dist/user-registration/validators/password-validator.js.map +1 -0
- package/dist/user-registration/validators/required-fields-validator.d.ts +3 -0
- package/dist/user-registration/validators/required-fields-validator.d.ts.map +1 -0
- package/dist/user-registration/validators/required-fields-validator.js +17 -0
- package/dist/user-registration/validators/required-fields-validator.js.map +1 -0
- package/dist/utils/dataFetcher.d.ts +21 -0
- package/dist/utils/dataFetcher.d.ts.map +1 -0
- package/dist/utils/dataFetcher.js +71 -0
- package/dist/utils/dataFetcher.js.map +1 -0
- package/dist/utils/imageProcessor.d.ts +16 -0
- package/dist/utils/imageProcessor.d.ts.map +1 -0
- package/dist/utils/imageProcessor.js +121 -0
- package/dist/utils/imageProcessor.js.map +1 -0
- package/dist/utils/lcs.d.ts +37 -0
- package/dist/utils/lcs.d.ts.map +1 -0
- package/dist/utils/lcs.js +139 -0
- package/dist/utils/lcs.js.map +1 -0
- package/dist/utils/notifications.d.ts +2 -0
- package/dist/utils/notifications.d.ts.map +1 -0
- package/dist/utils/notifications.js +8 -0
- package/dist/utils/notifications.js.map +1 -0
- package/dist/utils/timeUtils.d.ts +16 -1
- package/dist/utils/timeUtils.d.ts.map +1 -1
- package/dist/utils/timeUtils.js +54 -17
- package/dist/utils/timeUtils.js.map +1 -1
- package/dist/utils/userReport.d.ts +10 -0
- package/dist/utils/userReport.d.ts.map +1 -0
- package/dist/utils/userReport.js +19 -0
- package/dist/utils/userReport.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -140,7 +140,7 @@ module.exports = {
|
|
|
140
140
|
// Default adapter to use
|
|
141
141
|
defaultAdapter: 'copilot',
|
|
142
142
|
|
|
143
|
-
// Default LLM model for judge
|
|
143
|
+
// Default LLM model for judge validation
|
|
144
144
|
defaultModel: 'openai/gpt-5',
|
|
145
145
|
|
|
146
146
|
// Default timeout for code generation (milliseconds)
|
|
@@ -390,7 +390,8 @@ Run benchmark evaluations.
|
|
|
390
390
|
| `--category <categories>` | Filter by category (comma-separated) | `typescript,react` |
|
|
391
391
|
| `--tag <tags>` | Filter by tags (comma-separated) | `safety,types` |
|
|
392
392
|
| `--adapter <type>` | Adapter to use | `copilot` or `claude-code` |
|
|
393
|
-
| `--model <model>` |
|
|
393
|
+
| `--model <model>` | Model for the coding agent adapter | - |
|
|
394
|
+
| `--judge-model <model>` | LLM model for judge validation | `openai/gpt-5` |
|
|
394
395
|
| `--threshold <number>` | Minimum passing score | `0.8` |
|
|
395
396
|
| `--verbose` | Show detailed output | - |
|
|
396
397
|
| `--output <file>` | Export JSON report | `report.json` |
|
|
@@ -416,6 +417,7 @@ Test LLM judge with a custom prompt (for debugging).
|
|
|
416
417
|
| Option | Description |
|
|
417
418
|
|--------|-------------|
|
|
418
419
|
| `--model <model>` | LLM model to use |
|
|
420
|
+
| `--judge-model <model>` | Alias for --model |
|
|
419
421
|
|
|
420
422
|
## Understanding Output
|
|
421
423
|
|
|
@@ -466,7 +468,7 @@ async function runEvaluation() {
|
|
|
466
468
|
|
|
467
469
|
const evaluator = new Evaluator({
|
|
468
470
|
adapter: 'copilot',
|
|
469
|
-
|
|
471
|
+
judgeModel: 'openai/gpt-5',
|
|
470
472
|
verbose: true,
|
|
471
473
|
saveBaseline: config.saveBaseline,
|
|
472
474
|
compareBaseline: config.compareBaseline,
|
|
@@ -540,6 +542,8 @@ gh auth login
|
|
|
540
542
|
|
|
541
543
|
Run `npx coding-agent-benchmarks check` to verify authentication status.
|
|
542
544
|
|
|
545
|
+
> **Note:** GitHub Models API is rate limited on the free tier (e.g., 15 req/min, 150 req/day for low-tier models). If you hit rate limits running many scenarios, consider [opting in to paid usage](https://docs.github.com/en/billing/managing-billing-for-your-products/about-billing-for-github-models) for higher limits.
|
|
546
|
+
|
|
543
547
|
## Requirements
|
|
544
548
|
|
|
545
549
|
- Node.js >= 18.0.0
|
package/dist/evaluator.d.ts
CHANGED
package/dist/evaluator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../src/evaluator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,WAAW,EAEX,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAEjB,MAAM,SAAS,CAAC;AAQjB,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG9D;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,kBAAkB,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;IACxD,gBAAgB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;IACvE,qBAAqB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,qBAAqB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,mBAAmB,EAAE,CACnB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,MAAM,KACV,IAAI,CAAC;IACV,qBAAqB,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC1D,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qBAAa,SAAU,SAAQ,iBAAiB,CAAC,eAAe,CAAC;IAC/D,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,OAAO,CAAmB;gBAEtB,OAAO,EAAE,gBAAgB;IASrC,OAAO,CAAC,aAAa;IAoBf,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC;IAIlD,eAAe,CACb,SAAS,EAAE,YAAY,EAAE,EACzB,OAAO,EAAE;QACP,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACjB,GACA,YAAY,EAAE;IAuBX,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA6IzE;;OAEG;IACG,QAAQ,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;CA8ErE"}
|
|
1
|
+
{"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../src/evaluator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,WAAW,EAEX,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAEjB,MAAM,SAAS,CAAC;AAQjB,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG9D;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,kBAAkB,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;IACxD,gBAAgB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;IACvE,qBAAqB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,qBAAqB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,mBAAmB,EAAE,CACnB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,MAAM,KACV,IAAI,CAAC;IACV,qBAAqB,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC1D,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qBAAa,SAAU,SAAQ,iBAAiB,CAAC,eAAe,CAAC;IAC/D,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,OAAO,CAAmB;gBAEtB,OAAO,EAAE,gBAAgB;IASrC,OAAO,CAAC,aAAa;IAoBf,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC;IAIlD,eAAe,CACb,SAAS,EAAE,YAAY,EAAE,EACzB,OAAO,EAAE;QACP,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACjB,GACA,YAAY,EAAE;IAuBX,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA6IzE;;OAEG;IACG,QAAQ,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;CA8ErE"}
|
package/dist/evaluator.js
CHANGED
|
@@ -90,7 +90,7 @@ class Evaluator extends TypedEventEmitter_1.TypedEventEmitter {
|
|
|
90
90
|
if (this.options.verbose && patternResult.score >= 0) {
|
|
91
91
|
this.emit("log", ` Pattern validation: ${patternResult.score.toFixed(2)}`);
|
|
92
92
|
}
|
|
93
|
-
const llmValidator = new llmJudge_1.LLMJudgeValidator(this.workspaceRoot, this.options.
|
|
93
|
+
const llmValidator = new llmJudge_1.LLMJudgeValidator(this.workspaceRoot, this.options.judgeModel);
|
|
94
94
|
const llmResult = await llmValidator.validate(generatedFiles, scenario);
|
|
95
95
|
validationResults.push(llmResult);
|
|
96
96
|
if (this.options.verbose && llmResult.score >= 0) {
|
package/dist/evaluator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../src/evaluator.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAUH,sDAA0D;AAC1D,4DAAgE;AAChE,oEAAiE;AACjE,oDAA0D;AAC1D,kEAA+D;AAC/D,2DAA8D;AAC9D,6DAA0D;AAC1D,iEAA8D;AAC9D,iDAAyC;
|
|
1
|
+
{"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../src/evaluator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Result of the Longest Common Subsequence algorithm
|
|
3
|
+
*/
|
|
4
|
+
export interface LCSResult {
|
|
5
|
+
readonly subsequence: string;
|
|
6
|
+
readonly length: number;
|
|
7
|
+
readonly table: readonly (readonly number[])[];
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Finds the longest common subsequence (LCS) between two strings using dynamic programming.
|
|
11
|
+
*
|
|
12
|
+
* Time Complexity: O(m * n) where m and n are the lengths of the input strings
|
|
13
|
+
* Space Complexity: O(m * n) for the DP table
|
|
14
|
+
*
|
|
15
|
+
* @param str1 - First string
|
|
16
|
+
* @param str2 - Second string
|
|
17
|
+
* @returns LCS result containing the subsequence, its length, and the DP table
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* const result = findLongestCommonSubsequence("ABCDGH", "AEDFHR");
|
|
22
|
+
* console.log(result.subsequence); // "ADH"
|
|
23
|
+
* console.log(result.length); // 3
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare const findLongestCommonSubsequence: (str1: string, str2: string) => LCSResult;
|
|
27
|
+
/**
|
|
28
|
+
* Computes only the length of the LCS with space-optimized approach.
|
|
29
|
+
*
|
|
30
|
+
* This version uses O(min(m, n)) space instead of O(m * n) by keeping
|
|
31
|
+
* only the current and previous rows of the DP table.
|
|
32
|
+
*
|
|
33
|
+
* Useful when only the length is needed, not the actual subsequence.
|
|
34
|
+
*/
|
|
35
|
+
export declare const findLCSLength: (str1: string, str2: string) => number;
|
|
36
|
+
/**
|
|
37
|
+
* Finds all longest common subsequences between two strings.
|
|
38
|
+
*
|
|
39
|
+
* Note: There can be multiple LCS of the same length. This function
|
|
40
|
+
* finds all unique subsequences with the maximum length.
|
|
41
|
+
*
|
|
42
|
+
* Warning: This can be exponential in complexity for strings with many LCS.
|
|
43
|
+
*/
|
|
44
|
+
export declare const findAllLCS: (str1: string, str2: string) => readonly string[];
|
|
45
|
+
//# sourceMappingURL=longest-common-subsequence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"longest-common-subsequence.d.ts","sourceRoot":"","sources":["../src/longest-common-subsequence.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC;CAChD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,4BAA4B,GAAI,MAAM,MAAM,EAAE,MAAM,MAAM,KAAG,SAezE,CAAC;AAqEF;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,EAAE,MAAM,MAAM,KAAG,MAyB1D,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,EAAE,MAAM,MAAM,KAAG,SAAS,MAAM,EA+BtE,CAAC"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.findAllLCS = exports.findLCSLength = exports.findLongestCommonSubsequence = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Finds the longest common subsequence (LCS) between two strings using dynamic programming.
|
|
6
|
+
*
|
|
7
|
+
* Time Complexity: O(m * n) where m and n are the lengths of the input strings
|
|
8
|
+
* Space Complexity: O(m * n) for the DP table
|
|
9
|
+
*
|
|
10
|
+
* @param str1 - First string
|
|
11
|
+
* @param str2 - Second string
|
|
12
|
+
* @returns LCS result containing the subsequence, its length, and the DP table
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const result = findLongestCommonSubsequence("ABCDGH", "AEDFHR");
|
|
17
|
+
* console.log(result.subsequence); // "ADH"
|
|
18
|
+
* console.log(result.length); // 3
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
const findLongestCommonSubsequence = (str1, str2) => {
|
|
22
|
+
const m = str1.length;
|
|
23
|
+
const n = str2.length;
|
|
24
|
+
// Build DP table: table[i][j] represents LCS length of str1[0...i-1] and str2[0...j-1]
|
|
25
|
+
const table = buildLCSTable(str1, str2, m, n);
|
|
26
|
+
// Backtrack through the table to reconstruct the actual subsequence
|
|
27
|
+
const subsequence = reconstructSubsequence(str1, str2, table, m, n);
|
|
28
|
+
return {
|
|
29
|
+
subsequence,
|
|
30
|
+
length: table[m][n],
|
|
31
|
+
table,
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
exports.findLongestCommonSubsequence = findLongestCommonSubsequence;
|
|
35
|
+
/**
|
|
36
|
+
* Builds the dynamic programming table for LCS computation.
|
|
37
|
+
*
|
|
38
|
+
* The table uses a bottom-up approach where:
|
|
39
|
+
* - table[i][j] = 0 if either string is empty (i=0 or j=0)
|
|
40
|
+
* - table[i][j] = table[i-1][j-1] + 1 if characters match
|
|
41
|
+
* - table[i][j] = max(table[i-1][j], table[i][j-1]) if characters don't match
|
|
42
|
+
*/
|
|
43
|
+
const buildLCSTable = (str1, str2, m, n) => {
|
|
44
|
+
const table = Array(m + 1)
|
|
45
|
+
.fill(null)
|
|
46
|
+
.map(() => Array(n + 1).fill(0));
|
|
47
|
+
// Fill the table using bottom-up dynamic programming
|
|
48
|
+
for (let i = 1; i <= m; i++) {
|
|
49
|
+
for (let j = 1; j <= n; j++) {
|
|
50
|
+
if (str1[i - 1] === str2[j - 1]) {
|
|
51
|
+
// Characters match: extend the LCS from the previous diagonal cell
|
|
52
|
+
table[i][j] = table[i - 1][j - 1] + 1;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
// Characters don't match: take the maximum from top or left cell
|
|
56
|
+
table[i][j] = Math.max(table[i - 1][j], table[i][j - 1]);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return table;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Reconstructs the actual subsequence by backtracking through the DP table.
|
|
64
|
+
*
|
|
65
|
+
* Backtracking logic:
|
|
66
|
+
* - If characters match, include the character and move diagonally up-left
|
|
67
|
+
* - If top cell > left cell, move up
|
|
68
|
+
* - Otherwise, move left
|
|
69
|
+
*/
|
|
70
|
+
const reconstructSubsequence = (str1, str2, table, m, n) => {
|
|
71
|
+
const result = [];
|
|
72
|
+
let i = m;
|
|
73
|
+
let j = n;
|
|
74
|
+
// Backtrack from bottom-right to top-left
|
|
75
|
+
while (i > 0 && j > 0) {
|
|
76
|
+
if (str1[i - 1] === str2[j - 1]) {
|
|
77
|
+
// Character is part of LCS: add to result and move diagonally
|
|
78
|
+
result.unshift(str1[i - 1]);
|
|
79
|
+
i--;
|
|
80
|
+
j--;
|
|
81
|
+
}
|
|
82
|
+
else if (table[i - 1][j] > table[i][j - 1]) {
|
|
83
|
+
// Move up (str1 contributes more to LCS at this point)
|
|
84
|
+
i--;
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
// Move left (str2 contributes more to LCS at this point)
|
|
88
|
+
j--;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return result.join('');
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Computes only the length of the LCS with space-optimized approach.
|
|
95
|
+
*
|
|
96
|
+
* This version uses O(min(m, n)) space instead of O(m * n) by keeping
|
|
97
|
+
* only the current and previous rows of the DP table.
|
|
98
|
+
*
|
|
99
|
+
* Useful when only the length is needed, not the actual subsequence.
|
|
100
|
+
*/
|
|
101
|
+
const findLCSLength = (str1, str2) => {
|
|
102
|
+
// Ensure str1 is the shorter string to minimize space usage
|
|
103
|
+
if (str1.length > str2.length) {
|
|
104
|
+
[str1, str2] = [str2, str1];
|
|
105
|
+
}
|
|
106
|
+
const m = str1.length;
|
|
107
|
+
const n = str2.length;
|
|
108
|
+
let prev = Array(n + 1).fill(0);
|
|
109
|
+
let curr = Array(n + 1).fill(0);
|
|
110
|
+
for (let i = 1; i <= m; i++) {
|
|
111
|
+
for (let j = 1; j <= n; j++) {
|
|
112
|
+
if (str1[i - 1] === str2[j - 1]) {
|
|
113
|
+
curr[j] = prev[j - 1] + 1;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
curr[j] = Math.max(prev[j], curr[j - 1]);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// Swap arrays: current row becomes previous for next iteration
|
|
120
|
+
[prev, curr] = [curr, prev];
|
|
121
|
+
}
|
|
122
|
+
return prev[n];
|
|
123
|
+
};
|
|
124
|
+
exports.findLCSLength = findLCSLength;
|
|
125
|
+
/**
|
|
126
|
+
* Finds all longest common subsequences between two strings.
|
|
127
|
+
*
|
|
128
|
+
* Note: There can be multiple LCS of the same length. This function
|
|
129
|
+
* finds all unique subsequences with the maximum length.
|
|
130
|
+
*
|
|
131
|
+
* Warning: This can be exponential in complexity for strings with many LCS.
|
|
132
|
+
*/
|
|
133
|
+
const findAllLCS = (str1, str2) => {
|
|
134
|
+
const m = str1.length;
|
|
135
|
+
const n = str2.length;
|
|
136
|
+
const table = buildLCSTable(str1, str2, m, n);
|
|
137
|
+
const results = new Set();
|
|
138
|
+
const backtrack = (i, j, current) => {
|
|
139
|
+
// Base case: reached the beginning
|
|
140
|
+
if (i === 0 || j === 0) {
|
|
141
|
+
results.add(current);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
if (str1[i - 1] === str2[j - 1]) {
|
|
145
|
+
// Characters match: this character must be in all LCS paths
|
|
146
|
+
backtrack(i - 1, j - 1, str1[i - 1] + current);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
// Characters don't match: explore both possible paths
|
|
150
|
+
if (table[i - 1][j] === table[i][j]) {
|
|
151
|
+
backtrack(i - 1, j, current);
|
|
152
|
+
}
|
|
153
|
+
if (table[i][j - 1] === table[i][j]) {
|
|
154
|
+
backtrack(i, j - 1, current);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
backtrack(m, n, '');
|
|
159
|
+
return Array.from(results);
|
|
160
|
+
};
|
|
161
|
+
exports.findAllLCS = findAllLCS;
|
|
162
|
+
//# sourceMappingURL=longest-common-subsequence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"longest-common-subsequence.js","sourceRoot":"","sources":["../src/longest-common-subsequence.ts"],"names":[],"mappings":";;;AASA;;;;;;;;;;;;;;;;GAgBG;AACI,MAAM,4BAA4B,GAAG,CAAC,IAAY,EAAE,IAAY,EAAa,EAAE;IACpF,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IACtB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IAEtB,uFAAuF;IACvF,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE9C,oEAAoE;IACpE,MAAM,WAAW,GAAG,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAEpE,OAAO;QACL,WAAW;QACX,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,KAAK;KACN,CAAC;AACJ,CAAC,CAAC;AAfW,QAAA,4BAA4B,gCAevC;AAEF;;;;;;;GAOG;AACH,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,IAAY,EAAE,CAAS,EAAE,CAAS,EAAc,EAAE;IACrF,MAAM,KAAK,GAAe,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;SACnC,IAAI,CAAC,IAAI,CAAC;SACV,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnC,qDAAqD;IACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAChC,mEAAmE;gBACnE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,iEAAiE;gBACjE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,sBAAsB,GAAG,CAC7B,IAAY,EACZ,IAAY,EACZ,KAAqC,EACrC,CAAS,EACT,CAAS,EACD,EAAE;IACV,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,0CAA0C;IAC1C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAChC,8DAA8D;YAC9D,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5B,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC7C,uDAAuD;YACvD,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,CAAC;YACN,yDAAyD;YACzD,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF;;;;;;;GAOG;AACI,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,IAAY,EAAU,EAAE;IAClE,4DAA4D;IAC5D,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC9B,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IACtB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IAEtB,IAAI,IAAI,GAAa,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1C,IAAI,IAAI,GAAa,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QACD,+DAA+D;QAC/D,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC;AAzBW,QAAA,aAAa,iBAyBxB;AAEF;;;;;;;GAOG;AACI,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,IAAY,EAAqB,EAAE;IAC1E,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IACtB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IACtB,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAE9C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,OAAe,EAAQ,EAAE;QAChE,mCAAmC;QACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAChC,4DAA4D;YAC5D,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,sDAAsD;YACtD,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;YAC/B,CAAC;YACD,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEpB,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC,CAAC;AA/BW,QAAA,UAAU,cA+BrB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Result of the longest common subsequence computation
|
|
3
|
+
*/
|
|
4
|
+
interface LCSResult {
|
|
5
|
+
readonly length: number;
|
|
6
|
+
readonly subsequence: string;
|
|
7
|
+
readonly dpTable: ReadonlyArray<ReadonlyArray<number>>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Finds the longest common subsequence between two strings using dynamic programming.
|
|
11
|
+
*
|
|
12
|
+
* Time Complexity: O(m * n) where m and n are the lengths of the input strings
|
|
13
|
+
* Space Complexity: O(m * n) for the DP table
|
|
14
|
+
*
|
|
15
|
+
* @param str1 - First input string
|
|
16
|
+
* @param str2 - Second input string
|
|
17
|
+
* @returns LCS result containing length, subsequence, and DP table
|
|
18
|
+
*/
|
|
19
|
+
export declare const longestCommonSubsequence: (str1: string, str2: string) => LCSResult;
|
|
20
|
+
/**
|
|
21
|
+
* Finds all possible longest common subsequences between two strings.
|
|
22
|
+
* Note: There may be multiple LCS of the same length.
|
|
23
|
+
*
|
|
24
|
+
* @param str1 - First input string
|
|
25
|
+
* @param str2 - Second input string
|
|
26
|
+
* @returns Array of all possible LCS strings
|
|
27
|
+
*/
|
|
28
|
+
export declare const findAllLCS: (str1: string, str2: string) => readonly string[];
|
|
29
|
+
/**
|
|
30
|
+
* Computes LCS length with space optimization (O(min(m,n)) space).
|
|
31
|
+
* Only returns the length, not the actual subsequence.
|
|
32
|
+
*
|
|
33
|
+
* @param str1 - First input string
|
|
34
|
+
* @param str2 - Second input string
|
|
35
|
+
* @returns Length of the LCS
|
|
36
|
+
*/
|
|
37
|
+
export declare const lcsLengthOptimized: (str1: string, str2: string) => number;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=longestCommonSubsequence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"longestCommonSubsequence.d.ts","sourceRoot":"","sources":["../src/longestCommonSubsequence.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,UAAU,SAAS;IACjB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;CACxD;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB,GAAI,MAAM,MAAM,EAAE,MAAM,MAAM,KAAG,SA8BrE,CAAC;AAkCF;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,EAAE,MAAM,MAAM,KAAG,SAAS,MAAM,EAsBtE,CAAC;AA0CF;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,EAAE,MAAM,MAAM,KAAG,MAwB/D,CAAC"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.lcsLengthOptimized = exports.findAllLCS = exports.longestCommonSubsequence = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Finds the longest common subsequence between two strings using dynamic programming.
|
|
6
|
+
*
|
|
7
|
+
* Time Complexity: O(m * n) where m and n are the lengths of the input strings
|
|
8
|
+
* Space Complexity: O(m * n) for the DP table
|
|
9
|
+
*
|
|
10
|
+
* @param str1 - First input string
|
|
11
|
+
* @param str2 - Second input string
|
|
12
|
+
* @returns LCS result containing length, subsequence, and DP table
|
|
13
|
+
*/
|
|
14
|
+
const longestCommonSubsequence = (str1, str2) => {
|
|
15
|
+
const m = str1.length;
|
|
16
|
+
const n = str2.length;
|
|
17
|
+
// DP table: dp[i][j] represents LCS length of str1[0..i-1] and str2[0..j-1]
|
|
18
|
+
const dp = Array(m + 1)
|
|
19
|
+
.fill(null)
|
|
20
|
+
.map(() => Array(n + 1).fill(0));
|
|
21
|
+
// Build the DP table bottom-up
|
|
22
|
+
for (let i = 1; i <= m; i++) {
|
|
23
|
+
for (let j = 1; j <= n; j++) {
|
|
24
|
+
if (str1[i - 1] === str2[j - 1]) {
|
|
25
|
+
// Characters match: extend the LCS from previous diagonal
|
|
26
|
+
dp[i][j] = dp[i - 1][j - 1] + 1;
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
// Characters don't match: take maximum from top or left cell
|
|
30
|
+
dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const lcsLength = dp[m][n];
|
|
35
|
+
const subsequence = reconstructLCS(str1, str2, dp);
|
|
36
|
+
return {
|
|
37
|
+
length: lcsLength,
|
|
38
|
+
subsequence,
|
|
39
|
+
dpTable: dp.map(row => [...row]),
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
exports.longestCommonSubsequence = longestCommonSubsequence;
|
|
43
|
+
/**
|
|
44
|
+
* Reconstructs the actual LCS string by backtracking through the DP table.
|
|
45
|
+
*
|
|
46
|
+
* @param str1 - First input string
|
|
47
|
+
* @param str2 - Second input string
|
|
48
|
+
* @param dp - Completed DP table from LCS computation
|
|
49
|
+
* @returns The longest common subsequence as a string
|
|
50
|
+
*/
|
|
51
|
+
const reconstructLCS = (str1, str2, dp) => {
|
|
52
|
+
let i = str1.length;
|
|
53
|
+
let j = str2.length;
|
|
54
|
+
const result = [];
|
|
55
|
+
// Backtrack from dp[m][n] to dp[0][0]
|
|
56
|
+
while (i > 0 && j > 0) {
|
|
57
|
+
if (str1[i - 1] === str2[j - 1]) {
|
|
58
|
+
// Character is part of LCS: add to result and move diagonally
|
|
59
|
+
result.unshift(str1[i - 1]);
|
|
60
|
+
i--;
|
|
61
|
+
j--;
|
|
62
|
+
}
|
|
63
|
+
else if (dp[i - 1][j] > dp[i][j - 1]) {
|
|
64
|
+
// Move up (came from top cell)
|
|
65
|
+
i--;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
// Move left (came from left cell)
|
|
69
|
+
j--;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return result.join('');
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Finds all possible longest common subsequences between two strings.
|
|
76
|
+
* Note: There may be multiple LCS of the same length.
|
|
77
|
+
*
|
|
78
|
+
* @param str1 - First input string
|
|
79
|
+
* @param str2 - Second input string
|
|
80
|
+
* @returns Array of all possible LCS strings
|
|
81
|
+
*/
|
|
82
|
+
const findAllLCS = (str1, str2) => {
|
|
83
|
+
const m = str1.length;
|
|
84
|
+
const n = str2.length;
|
|
85
|
+
const dp = Array(m + 1)
|
|
86
|
+
.fill(null)
|
|
87
|
+
.map(() => Array(n + 1).fill(0));
|
|
88
|
+
for (let i = 1; i <= m; i++) {
|
|
89
|
+
for (let j = 1; j <= n; j++) {
|
|
90
|
+
if (str1[i - 1] === str2[j - 1]) {
|
|
91
|
+
dp[i][j] = dp[i - 1][j - 1] + 1;
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const allLCS = new Set();
|
|
99
|
+
backtrackAllLCS(str1, str2, dp, m, n, '', allLCS);
|
|
100
|
+
return Array.from(allLCS);
|
|
101
|
+
};
|
|
102
|
+
exports.findAllLCS = findAllLCS;
|
|
103
|
+
/**
|
|
104
|
+
* Recursively finds all LCS strings by exploring all paths in the DP table.
|
|
105
|
+
*
|
|
106
|
+
* @param str1 - First input string
|
|
107
|
+
* @param str2 - Second input string
|
|
108
|
+
* @param dp - Completed DP table
|
|
109
|
+
* @param i - Current position in str1
|
|
110
|
+
* @param j - Current position in str2
|
|
111
|
+
* @param current - Current LCS being built (reversed)
|
|
112
|
+
* @param result - Set to store all unique LCS strings
|
|
113
|
+
*/
|
|
114
|
+
const backtrackAllLCS = (str1, str2, dp, i, j, current, result) => {
|
|
115
|
+
if (i === 0 || j === 0) {
|
|
116
|
+
// Reached base case: reverse and add to result
|
|
117
|
+
result.add(current.split('').reverse().join(''));
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
if (str1[i - 1] === str2[j - 1]) {
|
|
121
|
+
// Characters match: include in LCS and move diagonally
|
|
122
|
+
backtrackAllLCS(str1, str2, dp, i - 1, j - 1, current + str1[i - 1], result);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
// Explore both paths if they lead to same LCS length
|
|
126
|
+
if (dp[i - 1][j] >= dp[i][j - 1]) {
|
|
127
|
+
backtrackAllLCS(str1, str2, dp, i - 1, j, current, result);
|
|
128
|
+
}
|
|
129
|
+
if (dp[i][j - 1] >= dp[i - 1][j]) {
|
|
130
|
+
backtrackAllLCS(str1, str2, dp, i, j - 1, current, result);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* Computes LCS length with space optimization (O(min(m,n)) space).
|
|
136
|
+
* Only returns the length, not the actual subsequence.
|
|
137
|
+
*
|
|
138
|
+
* @param str1 - First input string
|
|
139
|
+
* @param str2 - Second input string
|
|
140
|
+
* @returns Length of the LCS
|
|
141
|
+
*/
|
|
142
|
+
const lcsLengthOptimized = (str1, str2) => {
|
|
143
|
+
// Ensure str2 is the shorter string for optimal space usage
|
|
144
|
+
if (str1.length < str2.length) {
|
|
145
|
+
[str1, str2] = [str2, str1];
|
|
146
|
+
}
|
|
147
|
+
const n = str2.length;
|
|
148
|
+
let prev = Array(n + 1).fill(0);
|
|
149
|
+
let curr = Array(n + 1).fill(0);
|
|
150
|
+
for (let i = 1; i <= str1.length; i++) {
|
|
151
|
+
for (let j = 1; j <= n; j++) {
|
|
152
|
+
if (str1[i - 1] === str2[j - 1]) {
|
|
153
|
+
curr[j] = prev[j - 1] + 1;
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
curr[j] = Math.max(prev[j], curr[j - 1]);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// Swap arrays for next iteration
|
|
160
|
+
[prev, curr] = [curr, prev];
|
|
161
|
+
curr.fill(0);
|
|
162
|
+
}
|
|
163
|
+
return prev[n];
|
|
164
|
+
};
|
|
165
|
+
exports.lcsLengthOptimized = lcsLengthOptimized;
|
|
166
|
+
//# sourceMappingURL=longestCommonSubsequence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"longestCommonSubsequence.js","sourceRoot":"","sources":["../src/longestCommonSubsequence.ts"],"names":[],"mappings":"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"}
|
package/dist/runner.js
CHANGED
|
@@ -63,7 +63,8 @@ program
|
|
|
63
63
|
.option("--category <categories>", "Filter by category (comma-separated)")
|
|
64
64
|
.option("--tag <tags>", "Filter by tags (comma-separated)")
|
|
65
65
|
.option("--adapter <type>", "Code generation adapter (copilot or claude-code)", "copilot")
|
|
66
|
-
.option("--model <model>", "
|
|
66
|
+
.option("--model <model>", "Model for the coding agent adapter")
|
|
67
|
+
.option("--judge-model <model>", "LLM model for judge validation (default: openai/gpt-5)")
|
|
67
68
|
.option("--threshold <number>", "Minimum passing score", "0.8")
|
|
68
69
|
.option("--verbose", "Show detailed output")
|
|
69
70
|
.option("--output <file>", "Export JSON report to file")
|
|
@@ -83,7 +84,8 @@ program
|
|
|
83
84
|
}
|
|
84
85
|
const evaluator = new evaluator_1.Evaluator({
|
|
85
86
|
adapter: options.adapter,
|
|
86
|
-
model: options.model,
|
|
87
|
+
model: options.model || config.defaultModel,
|
|
88
|
+
judgeModel: options.judgeModel || config.defaultJudgeModel,
|
|
87
89
|
workspaceRoot: options.workspaceRoot,
|
|
88
90
|
defaultTimeout: config.defaultTimeout,
|
|
89
91
|
verbose: options.verbose,
|
|
@@ -225,6 +227,7 @@ program
|
|
|
225
227
|
.command("test-llm")
|
|
226
228
|
.description("Test LLM judge with a custom prompt")
|
|
227
229
|
.option("--model <model>", "LLM model to use (default: openai/gpt-5)")
|
|
230
|
+
.option("--judge-model <model>", "Alias for --model")
|
|
228
231
|
.action(async (options) => {
|
|
229
232
|
try {
|
|
230
233
|
console.log("Testing LLM judge...\n");
|
|
@@ -236,8 +239,9 @@ program
|
|
|
236
239
|
});
|
|
237
240
|
process.stdin.on("end", async () => {
|
|
238
241
|
const prompt = chunks.join("");
|
|
239
|
-
const
|
|
240
|
-
const
|
|
242
|
+
const judgeModel = options.judgeModel || options.model;
|
|
243
|
+
const validator = new llmJudge_1.LLMJudgeValidator(undefined, judgeModel);
|
|
244
|
+
const result = await validator.testJudge(prompt, judgeModel);
|
|
241
245
|
console.log("\nLLM Response:\n");
|
|
242
246
|
console.log(result);
|
|
243
247
|
});
|
package/dist/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,yCAAoC;AACpC,uCAAyB;AACzB,4CAA6C;AAC7C,2CAAwC;AAExC,sDAA0D;AAC1D,4DAAgE;AAChE,oDAA0D;AAC1D,mDAAqD;AACrD,uDAAuD;AACvD,yCAA8C;AAC9C,+CAA4D;AAC5D,yDAA0E;AAC1E,2DAAsD;AAEtD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,MAAM,kBAAkB,GAAG,IAAA,8BAAc,GAAE,CAAC;AAE5C,OAAO;KACJ,IAAI,CAAC,yBAAyB,CAAC;KAC/B,WAAW,CACV,oEAAoE,CACrE;KACA,OAAO,CAAC,IAAA,iCAAiB,GAAE,CAAC,CAAC;AAEhC;;GAEG;AACH,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CACL,sBAAsB,EACtB,qDAAqD,CACtD;KACA,MAAM,CAAC,yBAAyB,EAAE,sCAAsC,CAAC;KACzE,MAAM,CAAC,cAAc,EAAE,kCAAkC,CAAC;KAC1D,MAAM,CACL,kBAAkB,EAClB,kDAAkD,EAClD,SAAS,CACV;KACA,MAAM,CAAC,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|