@kynetic-ai/spec 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +263 -0
- package/dist/acp/client.d.ts +159 -0
- package/dist/acp/client.d.ts.map +1 -0
- package/dist/acp/client.js +255 -0
- package/dist/acp/client.js.map +1 -0
- package/dist/acp/framing.d.ts +119 -0
- package/dist/acp/framing.d.ts.map +1 -0
- package/dist/acp/framing.js +302 -0
- package/dist/acp/framing.js.map +1 -0
- package/dist/acp/index.d.ts +14 -0
- package/dist/acp/index.d.ts.map +1 -0
- package/dist/acp/index.js +13 -0
- package/dist/acp/index.js.map +1 -0
- package/dist/acp/types.d.ts +89 -0
- package/dist/acp/types.d.ts.map +1 -0
- package/dist/acp/types.js +99 -0
- package/dist/acp/types.js.map +1 -0
- package/dist/agents/adapters.d.ts +55 -0
- package/dist/agents/adapters.d.ts.map +1 -0
- package/dist/agents/adapters.js +84 -0
- package/dist/agents/adapters.js.map +1 -0
- package/dist/agents/index.d.ts +8 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +10 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/spawner.d.ts +53 -0
- package/dist/agents/spawner.d.ts.map +1 -0
- package/dist/agents/spawner.js +83 -0
- package/dist/agents/spawner.js.map +1 -0
- package/dist/cli/batch.d.ts +82 -0
- package/dist/cli/batch.d.ts.map +1 -0
- package/dist/cli/batch.js +162 -0
- package/dist/cli/batch.js.map +1 -0
- package/dist/cli/commands/clone-for-testing.d.ts +6 -0
- package/dist/cli/commands/clone-for-testing.d.ts.map +1 -0
- package/dist/cli/commands/clone-for-testing.js +176 -0
- package/dist/cli/commands/clone-for-testing.js.map +1 -0
- package/dist/cli/commands/derive.d.ts +6 -0
- package/dist/cli/commands/derive.d.ts.map +1 -0
- package/dist/cli/commands/derive.js +450 -0
- package/dist/cli/commands/derive.js.map +1 -0
- package/dist/cli/commands/help.d.ts +6 -0
- package/dist/cli/commands/help.d.ts.map +1 -0
- package/dist/cli/commands/help.js +196 -0
- package/dist/cli/commands/help.js.map +1 -0
- package/dist/cli/commands/inbox.d.ts +6 -0
- package/dist/cli/commands/inbox.d.ts.map +1 -0
- package/dist/cli/commands/inbox.js +235 -0
- package/dist/cli/commands/inbox.js.map +1 -0
- package/dist/cli/commands/index.d.ts +20 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +21 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/init.d.ts +6 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +245 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/item.d.ts +6 -0
- package/dist/cli/commands/item.d.ts.map +1 -0
- package/dist/cli/commands/item.js +1311 -0
- package/dist/cli/commands/item.js.map +1 -0
- package/dist/cli/commands/link.d.ts +6 -0
- package/dist/cli/commands/link.d.ts.map +1 -0
- package/dist/cli/commands/link.js +288 -0
- package/dist/cli/commands/link.js.map +1 -0
- package/dist/cli/commands/log.d.ts +16 -0
- package/dist/cli/commands/log.d.ts.map +1 -0
- package/dist/cli/commands/log.js +291 -0
- package/dist/cli/commands/log.js.map +1 -0
- package/dist/cli/commands/meta.d.ts +15 -0
- package/dist/cli/commands/meta.d.ts.map +1 -0
- package/dist/cli/commands/meta.js +1378 -0
- package/dist/cli/commands/meta.js.map +1 -0
- package/dist/cli/commands/module.d.ts +6 -0
- package/dist/cli/commands/module.d.ts.map +1 -0
- package/dist/cli/commands/module.js +102 -0
- package/dist/cli/commands/module.js.map +1 -0
- package/dist/cli/commands/ralph.d.ts +9 -0
- package/dist/cli/commands/ralph.d.ts.map +1 -0
- package/dist/cli/commands/ralph.js +465 -0
- package/dist/cli/commands/ralph.js.map +1 -0
- package/dist/cli/commands/search.d.ts +6 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +134 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/commands/session.d.ts +164 -0
- package/dist/cli/commands/session.d.ts.map +1 -0
- package/dist/cli/commands/session.js +745 -0
- package/dist/cli/commands/session.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +26 -0
- package/dist/cli/commands/setup.d.ts.map +1 -0
- package/dist/cli/commands/setup.js +586 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/shadow.d.ts +6 -0
- package/dist/cli/commands/shadow.d.ts.map +1 -0
- package/dist/cli/commands/shadow.js +299 -0
- package/dist/cli/commands/shadow.js.map +1 -0
- package/dist/cli/commands/task.d.ts +6 -0
- package/dist/cli/commands/task.d.ts.map +1 -0
- package/dist/cli/commands/task.js +1514 -0
- package/dist/cli/commands/task.js.map +1 -0
- package/dist/cli/commands/tasks.d.ts +6 -0
- package/dist/cli/commands/tasks.d.ts.map +1 -0
- package/dist/cli/commands/tasks.js +347 -0
- package/dist/cli/commands/tasks.js.map +1 -0
- package/dist/cli/commands/trait.d.ts +10 -0
- package/dist/cli/commands/trait.d.ts.map +1 -0
- package/dist/cli/commands/trait.js +295 -0
- package/dist/cli/commands/trait.js.map +1 -0
- package/dist/cli/commands/validate.d.ts +6 -0
- package/dist/cli/commands/validate.d.ts.map +1 -0
- package/dist/cli/commands/validate.js +626 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli/exit-codes.d.ts +62 -0
- package/dist/cli/exit-codes.d.ts.map +1 -0
- package/dist/cli/exit-codes.js +65 -0
- package/dist/cli/exit-codes.js.map +1 -0
- package/dist/cli/help/content.d.ts +35 -0
- package/dist/cli/help/content.d.ts.map +1 -0
- package/dist/cli/help/content.js +312 -0
- package/dist/cli/help/content.js.map +1 -0
- package/dist/cli/index.d.ts +5 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +85 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/introspection.d.ts +87 -0
- package/dist/cli/introspection.d.ts.map +1 -0
- package/dist/cli/introspection.js +127 -0
- package/dist/cli/introspection.js.map +1 -0
- package/dist/cli/output.d.ts +56 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +467 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/cli/suggest.d.ts +16 -0
- package/dist/cli/suggest.d.ts.map +1 -0
- package/dist/cli/suggest.js +72 -0
- package/dist/cli/suggest.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/parser/alignment.d.ts +113 -0
- package/dist/parser/alignment.d.ts.map +1 -0
- package/dist/parser/alignment.js +261 -0
- package/dist/parser/alignment.js.map +1 -0
- package/dist/parser/assess.d.ts +81 -0
- package/dist/parser/assess.d.ts.map +1 -0
- package/dist/parser/assess.js +197 -0
- package/dist/parser/assess.js.map +1 -0
- package/dist/parser/convention-validation.d.ts +48 -0
- package/dist/parser/convention-validation.d.ts.map +1 -0
- package/dist/parser/convention-validation.js +167 -0
- package/dist/parser/convention-validation.js.map +1 -0
- package/dist/parser/fix.d.ts +38 -0
- package/dist/parser/fix.d.ts.map +1 -0
- package/dist/parser/fix.js +185 -0
- package/dist/parser/fix.js.map +1 -0
- package/dist/parser/index.d.ts +12 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +13 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/items.d.ts +138 -0
- package/dist/parser/items.d.ts.map +1 -0
- package/dist/parser/items.js +321 -0
- package/dist/parser/items.js.map +1 -0
- package/dist/parser/meta.d.ts +120 -0
- package/dist/parser/meta.d.ts.map +1 -0
- package/dist/parser/meta.js +441 -0
- package/dist/parser/meta.js.map +1 -0
- package/dist/parser/refs.d.ts +185 -0
- package/dist/parser/refs.d.ts.map +1 -0
- package/dist/parser/refs.js +404 -0
- package/dist/parser/refs.js.map +1 -0
- package/dist/parser/shadow.d.ts +253 -0
- package/dist/parser/shadow.d.ts.map +1 -0
- package/dist/parser/shadow.js +1053 -0
- package/dist/parser/shadow.js.map +1 -0
- package/dist/parser/traits.d.ts +72 -0
- package/dist/parser/traits.d.ts.map +1 -0
- package/dist/parser/traits.js +120 -0
- package/dist/parser/traits.js.map +1 -0
- package/dist/parser/validate.d.ts +89 -0
- package/dist/parser/validate.d.ts.map +1 -0
- package/dist/parser/validate.js +817 -0
- package/dist/parser/validate.js.map +1 -0
- package/dist/parser/yaml.d.ts +326 -0
- package/dist/parser/yaml.d.ts.map +1 -0
- package/dist/parser/yaml.js +1383 -0
- package/dist/parser/yaml.js.map +1 -0
- package/dist/ralph/cli-renderer.d.ts +20 -0
- package/dist/ralph/cli-renderer.d.ts.map +1 -0
- package/dist/ralph/cli-renderer.js +179 -0
- package/dist/ralph/cli-renderer.js.map +1 -0
- package/dist/ralph/events.d.ts +65 -0
- package/dist/ralph/events.d.ts.map +1 -0
- package/dist/ralph/events.js +397 -0
- package/dist/ralph/events.js.map +1 -0
- package/dist/ralph/index.d.ts +8 -0
- package/dist/ralph/index.d.ts.map +1 -0
- package/dist/ralph/index.js +10 -0
- package/dist/ralph/index.js.map +1 -0
- package/dist/schema/common.d.ts +46 -0
- package/dist/schema/common.d.ts.map +1 -0
- package/dist/schema/common.js +71 -0
- package/dist/schema/common.js.map +1 -0
- package/dist/schema/inbox.d.ts +90 -0
- package/dist/schema/inbox.d.ts.map +1 -0
- package/dist/schema/inbox.js +30 -0
- package/dist/schema/inbox.js.map +1 -0
- package/dist/schema/index.d.ts +6 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +7 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/meta.d.ts +762 -0
- package/dist/schema/meta.d.ts.map +1 -0
- package/dist/schema/meta.js +144 -0
- package/dist/schema/meta.js.map +1 -0
- package/dist/schema/spec.d.ts +912 -0
- package/dist/schema/spec.d.ts.map +1 -0
- package/dist/schema/spec.js +104 -0
- package/dist/schema/spec.js.map +1 -0
- package/dist/schema/task.d.ts +664 -0
- package/dist/schema/task.d.ts.map +1 -0
- package/dist/schema/task.js +130 -0
- package/dist/schema/task.js.map +1 -0
- package/dist/sessions/index.d.ts +11 -0
- package/dist/sessions/index.d.ts.map +1 -0
- package/dist/sessions/index.js +13 -0
- package/dist/sessions/index.js.map +1 -0
- package/dist/sessions/store.d.ts +144 -0
- package/dist/sessions/store.d.ts.map +1 -0
- package/dist/sessions/store.js +325 -0
- package/dist/sessions/store.js.map +1 -0
- package/dist/sessions/types.d.ts +157 -0
- package/dist/sessions/types.d.ts.map +1 -0
- package/dist/sessions/types.js +90 -0
- package/dist/sessions/types.js.map +1 -0
- package/dist/strings/errors.d.ts +420 -0
- package/dist/strings/errors.d.ts.map +1 -0
- package/dist/strings/errors.js +282 -0
- package/dist/strings/errors.js.map +1 -0
- package/dist/strings/guidance.d.ts +65 -0
- package/dist/strings/guidance.d.ts.map +1 -0
- package/dist/strings/guidance.js +66 -0
- package/dist/strings/guidance.js.map +1 -0
- package/dist/strings/index.d.ts +12 -0
- package/dist/strings/index.d.ts.map +1 -0
- package/dist/strings/index.js +12 -0
- package/dist/strings/index.js.map +1 -0
- package/dist/strings/labels.d.ts +74 -0
- package/dist/strings/labels.d.ts.map +1 -0
- package/dist/strings/labels.js +75 -0
- package/dist/strings/labels.js.map +1 -0
- package/dist/strings/validation.d.ts +126 -0
- package/dist/strings/validation.d.ts.map +1 -0
- package/dist/strings/validation.js +135 -0
- package/dist/strings/validation.js.map +1 -0
- package/dist/utils/commit.d.ts +23 -0
- package/dist/utils/commit.d.ts.map +1 -0
- package/dist/utils/commit.js +67 -0
- package/dist/utils/commit.js.map +1 -0
- package/dist/utils/git.d.ts +57 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +192 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/grep.d.ts +28 -0
- package/dist/utils/grep.d.ts.map +1 -0
- package/dist/utils/grep.js +86 -0
- package/dist/utils/grep.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/time.d.ts +18 -0
- package/dist/utils/time.d.ts.map +1 -0
- package/dist/utils/time.js +61 -0
- package/dist/utils/time.js.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assess.js","sourceRoot":"","sources":["../../src/parser/assess.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convention validation module.
|
|
3
|
+
*
|
|
4
|
+
* Validates content against convention rules with domain-specific strategies.
|
|
5
|
+
*/
|
|
6
|
+
import type { Convention } from '../schema/meta.js';
|
|
7
|
+
/**
|
|
8
|
+
* Convention validation error
|
|
9
|
+
*/
|
|
10
|
+
export interface ConventionValidationError {
|
|
11
|
+
domain: string;
|
|
12
|
+
message: string;
|
|
13
|
+
location?: string;
|
|
14
|
+
expected?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Convention validation result
|
|
18
|
+
*/
|
|
19
|
+
export interface ConventionValidationResult {
|
|
20
|
+
valid: boolean;
|
|
21
|
+
errors: ConventionValidationError[];
|
|
22
|
+
skipped: string[];
|
|
23
|
+
stats: {
|
|
24
|
+
conventionsChecked: number;
|
|
25
|
+
conventionsSkipped: number;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Validate content against a single convention
|
|
30
|
+
*
|
|
31
|
+
* @param content - The content to validate
|
|
32
|
+
* @param convention - The convention to validate against
|
|
33
|
+
* @returns Validation error if validation fails, null otherwise
|
|
34
|
+
*/
|
|
35
|
+
export declare function validateConvention(content: string, convention: Convention): ConventionValidationError | null;
|
|
36
|
+
/**
|
|
37
|
+
* Validate multiple conventions
|
|
38
|
+
*
|
|
39
|
+
* This is a lower-level API that validates content against a list of conventions.
|
|
40
|
+
* For full validation of a project's conventions against actual content,
|
|
41
|
+
* use the higher-level validateProjectConventions function.
|
|
42
|
+
*
|
|
43
|
+
* @param conventions - Array of conventions to check
|
|
44
|
+
* @param contentMap - Map of domain to content (e.g., { commits: "feat: add feature" })
|
|
45
|
+
* @returns Validation result
|
|
46
|
+
*/
|
|
47
|
+
export declare function validateConventions(conventions: Convention[], contentMap: Record<string, string>): ConventionValidationResult;
|
|
48
|
+
//# sourceMappingURL=convention-validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convention-validation.d.ts","sourceRoot":"","sources":["../../src/parser/convention-validation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,mBAAmB,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,yBAAyB,EAAE,CAAC;IACpC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE;QACL,kBAAkB,EAAE,MAAM,CAAC;QAC3B,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;CACH;AA8GD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,UAAU,GACrB,yBAAyB,GAAG,IAAI,CAyBlC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,UAAU,EAAE,EACzB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,0BAA0B,CAsC5B"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convention validation module.
|
|
3
|
+
*
|
|
4
|
+
* Validates content against convention rules with domain-specific strategies.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Validate content against a regex pattern
|
|
8
|
+
*/
|
|
9
|
+
function validateRegex(content, validation, domain) {
|
|
10
|
+
if (!validation.pattern) {
|
|
11
|
+
return {
|
|
12
|
+
domain,
|
|
13
|
+
message: 'Regex validation requires a pattern',
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
try {
|
|
17
|
+
const regex = new RegExp(validation.pattern);
|
|
18
|
+
if (!regex.test(content)) {
|
|
19
|
+
return {
|
|
20
|
+
domain,
|
|
21
|
+
message: validation.message || `Content does not match required pattern`,
|
|
22
|
+
expected: validation.pattern,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
return {
|
|
28
|
+
domain,
|
|
29
|
+
message: `Invalid regex pattern: ${err instanceof Error ? err.message : String(err)}`,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Validate content against an enum of allowed values
|
|
36
|
+
*/
|
|
37
|
+
function validateEnum(content, validation, domain) {
|
|
38
|
+
if (!validation.allowed || validation.allowed.length === 0) {
|
|
39
|
+
return {
|
|
40
|
+
domain,
|
|
41
|
+
message: 'Enum validation requires an allowed list',
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
if (!validation.allowed.includes(content.trim())) {
|
|
45
|
+
return {
|
|
46
|
+
domain,
|
|
47
|
+
message: validation.message || `Value not in allowed list`,
|
|
48
|
+
expected: `One of: ${validation.allowed.join(', ')}`,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Validate content against a range (word count, character count, or line count)
|
|
55
|
+
*/
|
|
56
|
+
function validateRange(content, validation, domain) {
|
|
57
|
+
const unit = validation.unit || 'words';
|
|
58
|
+
let count;
|
|
59
|
+
switch (unit) {
|
|
60
|
+
case 'words':
|
|
61
|
+
count = content.trim().split(/\s+/).filter(w => w.length > 0).length;
|
|
62
|
+
break;
|
|
63
|
+
case 'chars':
|
|
64
|
+
count = content.length;
|
|
65
|
+
break;
|
|
66
|
+
case 'lines':
|
|
67
|
+
count = content.split('\n').length;
|
|
68
|
+
break;
|
|
69
|
+
default:
|
|
70
|
+
return {
|
|
71
|
+
domain,
|
|
72
|
+
message: `Unknown unit: ${unit}`,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
const min = validation.min;
|
|
76
|
+
const max = validation.max;
|
|
77
|
+
if (min !== undefined && count < min) {
|
|
78
|
+
return {
|
|
79
|
+
domain,
|
|
80
|
+
message: validation.message || `Content too short: ${count} ${unit}, minimum ${min} ${unit}`,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
if (max !== undefined && count > max) {
|
|
84
|
+
return {
|
|
85
|
+
domain,
|
|
86
|
+
message: validation.message || `Content too long: ${count} ${unit}, maximum ${max} ${unit}`,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Validate content against a single convention
|
|
93
|
+
*
|
|
94
|
+
* @param content - The content to validate
|
|
95
|
+
* @param convention - The convention to validate against
|
|
96
|
+
* @returns Validation error if validation fails, null otherwise
|
|
97
|
+
*/
|
|
98
|
+
export function validateConvention(content, convention) {
|
|
99
|
+
if (!convention.validation) {
|
|
100
|
+
// Convention has no validation config - it's advisory only
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
const { validation } = convention;
|
|
104
|
+
const domain = convention.domain;
|
|
105
|
+
switch (validation.type) {
|
|
106
|
+
case 'regex':
|
|
107
|
+
return validateRegex(content, validation, domain);
|
|
108
|
+
case 'enum':
|
|
109
|
+
return validateEnum(content, validation, domain);
|
|
110
|
+
case 'range':
|
|
111
|
+
return validateRange(content, validation, domain);
|
|
112
|
+
case 'prose':
|
|
113
|
+
// Prose conventions are advisory only - no validation
|
|
114
|
+
return null;
|
|
115
|
+
default:
|
|
116
|
+
return {
|
|
117
|
+
domain,
|
|
118
|
+
message: `Unknown validation type: ${validation.type}`,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Validate multiple conventions
|
|
124
|
+
*
|
|
125
|
+
* This is a lower-level API that validates content against a list of conventions.
|
|
126
|
+
* For full validation of a project's conventions against actual content,
|
|
127
|
+
* use the higher-level validateProjectConventions function.
|
|
128
|
+
*
|
|
129
|
+
* @param conventions - Array of conventions to check
|
|
130
|
+
* @param contentMap - Map of domain to content (e.g., { commits: "feat: add feature" })
|
|
131
|
+
* @returns Validation result
|
|
132
|
+
*/
|
|
133
|
+
export function validateConventions(conventions, contentMap) {
|
|
134
|
+
const errors = [];
|
|
135
|
+
const skipped = [];
|
|
136
|
+
let checked = 0;
|
|
137
|
+
for (const convention of conventions) {
|
|
138
|
+
if (!convention.validation) {
|
|
139
|
+
skipped.push(convention.domain);
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
if (convention.validation.type === 'prose') {
|
|
143
|
+
skipped.push(convention.domain);
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
const content = contentMap[convention.domain];
|
|
147
|
+
if (content === undefined) {
|
|
148
|
+
// No content provided for this domain - skip
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
checked++;
|
|
152
|
+
const error = validateConvention(content, convention);
|
|
153
|
+
if (error) {
|
|
154
|
+
errors.push(error);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return {
|
|
158
|
+
valid: errors.length === 0,
|
|
159
|
+
errors,
|
|
160
|
+
skipped,
|
|
161
|
+
stats: {
|
|
162
|
+
conventionsChecked: checked,
|
|
163
|
+
conventionsSkipped: skipped.length,
|
|
164
|
+
},
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=convention-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convention-validation.js","sourceRoot":"","sources":["../../src/parser/convention-validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-fix module for kspec validation issues.
|
|
3
|
+
*
|
|
4
|
+
* Provides automatic fixes for common validation problems:
|
|
5
|
+
* - Invalid ULIDs (regenerate)
|
|
6
|
+
* - Missing timestamps (add current time)
|
|
7
|
+
* - Missing status objects (add defaults)
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* A single fix that was applied
|
|
11
|
+
*/
|
|
12
|
+
export interface AppliedFix {
|
|
13
|
+
file: string;
|
|
14
|
+
path: string;
|
|
15
|
+
type: 'ulid_regenerated' | 'timestamp_added' | 'status_added';
|
|
16
|
+
oldValue?: unknown;
|
|
17
|
+
newValue: unknown;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Result of running fixes on a project
|
|
21
|
+
*/
|
|
22
|
+
export interface FixResult {
|
|
23
|
+
filesModified: number;
|
|
24
|
+
fixesApplied: AppliedFix[];
|
|
25
|
+
errors: Array<{
|
|
26
|
+
file: string;
|
|
27
|
+
message: string;
|
|
28
|
+
}>;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Fix issues in a single file
|
|
32
|
+
*/
|
|
33
|
+
export declare function fixFile(filePath: string): Promise<AppliedFix[]>;
|
|
34
|
+
/**
|
|
35
|
+
* Fix issues across multiple files
|
|
36
|
+
*/
|
|
37
|
+
export declare function fixFiles(filePaths: string[]): Promise<FixResult>;
|
|
38
|
+
//# sourceMappingURL=fix.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fix.d.ts","sourceRoot":"","sources":["../../src/parser/fix.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,GAAG,cAAc,CAAC;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClD;AA+GD;;GAEG;AACH,wBAAsB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAoDrE;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAuBtE"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-fix module for kspec validation issues.
|
|
3
|
+
*
|
|
4
|
+
* Provides automatic fixes for common validation problems:
|
|
5
|
+
* - Invalid ULIDs (regenerate)
|
|
6
|
+
* - Missing timestamps (add current time)
|
|
7
|
+
* - Missing status objects (add defaults)
|
|
8
|
+
*/
|
|
9
|
+
import { ulid } from 'ulid';
|
|
10
|
+
import { ulidPattern } from '../schema/common.js';
|
|
11
|
+
import { readYamlFile, writeYamlFilePreserveFormat } from './yaml.js';
|
|
12
|
+
// ============================================================
|
|
13
|
+
// ULID VALIDATION
|
|
14
|
+
// ============================================================
|
|
15
|
+
/**
|
|
16
|
+
* Check if a string is a valid ULID
|
|
17
|
+
*/
|
|
18
|
+
function isValidUlid(value) {
|
|
19
|
+
return typeof value === 'string' && ulidPattern.test(value);
|
|
20
|
+
}
|
|
21
|
+
// ============================================================
|
|
22
|
+
// FIX FUNCTIONS
|
|
23
|
+
// ============================================================
|
|
24
|
+
/**
|
|
25
|
+
* Recursively fix issues in a data structure
|
|
26
|
+
* Returns the number of fixes applied
|
|
27
|
+
*/
|
|
28
|
+
function fixObject(obj, file, pathPrefix, fixes) {
|
|
29
|
+
if (!obj || typeof obj !== 'object')
|
|
30
|
+
return false;
|
|
31
|
+
let modified = false;
|
|
32
|
+
const record = obj;
|
|
33
|
+
// Fix invalid _ulid
|
|
34
|
+
if ('_ulid' in record) {
|
|
35
|
+
if (!isValidUlid(record._ulid)) {
|
|
36
|
+
const oldValue = record._ulid;
|
|
37
|
+
const newValue = ulid();
|
|
38
|
+
record._ulid = newValue;
|
|
39
|
+
fixes.push({
|
|
40
|
+
file,
|
|
41
|
+
path: pathPrefix ? `${pathPrefix}._ulid` : '_ulid',
|
|
42
|
+
type: 'ulid_regenerated',
|
|
43
|
+
oldValue,
|
|
44
|
+
newValue,
|
|
45
|
+
});
|
|
46
|
+
modified = true;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// Fix missing created timestamp on items that have _ulid (spec items, tasks)
|
|
50
|
+
// Tasks use created_at, spec items use created - check for both
|
|
51
|
+
if ('_ulid' in record && !('created' in record) && !('created_at' in record)) {
|
|
52
|
+
const newValue = new Date().toISOString();
|
|
53
|
+
record.created = newValue;
|
|
54
|
+
fixes.push({
|
|
55
|
+
file,
|
|
56
|
+
path: pathPrefix ? `${pathPrefix}.created` : 'created',
|
|
57
|
+
type: 'timestamp_added',
|
|
58
|
+
newValue,
|
|
59
|
+
});
|
|
60
|
+
modified = true;
|
|
61
|
+
}
|
|
62
|
+
// Fix notes with invalid _ulid
|
|
63
|
+
if ('notes' in record && Array.isArray(record.notes)) {
|
|
64
|
+
for (let i = 0; i < record.notes.length; i++) {
|
|
65
|
+
const note = record.notes[i];
|
|
66
|
+
if (note && typeof note === 'object' && '_ulid' in note) {
|
|
67
|
+
if (!isValidUlid(note._ulid)) {
|
|
68
|
+
const oldValue = note._ulid;
|
|
69
|
+
const newValue = ulid();
|
|
70
|
+
note._ulid = newValue;
|
|
71
|
+
fixes.push({
|
|
72
|
+
file,
|
|
73
|
+
path: `${pathPrefix}.notes[${i}]._ulid`,
|
|
74
|
+
type: 'ulid_regenerated',
|
|
75
|
+
oldValue,
|
|
76
|
+
newValue,
|
|
77
|
+
});
|
|
78
|
+
modified = true;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// Recurse into nested structures
|
|
84
|
+
const nestedFields = [
|
|
85
|
+
'modules',
|
|
86
|
+
'features',
|
|
87
|
+
'requirements',
|
|
88
|
+
'constraints',
|
|
89
|
+
'decisions',
|
|
90
|
+
'items',
|
|
91
|
+
'tasks',
|
|
92
|
+
];
|
|
93
|
+
for (const field of nestedFields) {
|
|
94
|
+
if (field in record && Array.isArray(record[field])) {
|
|
95
|
+
const arr = record[field];
|
|
96
|
+
for (let i = 0; i < arr.length; i++) {
|
|
97
|
+
const newPath = pathPrefix ? `${pathPrefix}.${field}[${i}]` : `${field}[${i}]`;
|
|
98
|
+
if (fixObject(arr[i], file, newPath, fixes)) {
|
|
99
|
+
modified = true;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return modified;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Fix issues in a single file
|
|
108
|
+
*/
|
|
109
|
+
export async function fixFile(filePath) {
|
|
110
|
+
const fixes = [];
|
|
111
|
+
const data = await readYamlFile(filePath);
|
|
112
|
+
// Handle task files (array or { tasks: [...] })
|
|
113
|
+
if (Array.isArray(data)) {
|
|
114
|
+
let modified = false;
|
|
115
|
+
for (let i = 0; i < data.length; i++) {
|
|
116
|
+
if (fixObject(data[i], filePath, `[${i}]`, fixes)) {
|
|
117
|
+
modified = true;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
if (modified) {
|
|
121
|
+
await writeYamlFilePreserveFormat(filePath, data);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else if (data && typeof data === 'object') {
|
|
125
|
+
const record = data;
|
|
126
|
+
// Check for tasks file format
|
|
127
|
+
if ('tasks' in record && Array.isArray(record.tasks)) {
|
|
128
|
+
let modified = false;
|
|
129
|
+
for (let i = 0; i < record.tasks.length; i++) {
|
|
130
|
+
if (fixObject(record.tasks[i], filePath, `tasks[${i}]`, fixes)) {
|
|
131
|
+
modified = true;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (modified) {
|
|
135
|
+
await writeYamlFilePreserveFormat(filePath, data);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
// Check for inbox file format
|
|
139
|
+
else if ('inbox' in record && Array.isArray(record.inbox)) {
|
|
140
|
+
let modified = false;
|
|
141
|
+
for (let i = 0; i < record.inbox.length; i++) {
|
|
142
|
+
if (fixObject(record.inbox[i], filePath, `inbox[${i}]`, fixes)) {
|
|
143
|
+
modified = true;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
if (modified) {
|
|
147
|
+
await writeYamlFilePreserveFormat(filePath, data);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// Spec file (root is a spec item)
|
|
151
|
+
else if ('_ulid' in record) {
|
|
152
|
+
if (fixObject(data, filePath, '', fixes)) {
|
|
153
|
+
await writeYamlFilePreserveFormat(filePath, data);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return fixes;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Fix issues across multiple files
|
|
161
|
+
*/
|
|
162
|
+
export async function fixFiles(filePaths) {
|
|
163
|
+
const result = {
|
|
164
|
+
filesModified: 0,
|
|
165
|
+
fixesApplied: [],
|
|
166
|
+
errors: [],
|
|
167
|
+
};
|
|
168
|
+
for (const filePath of filePaths) {
|
|
169
|
+
try {
|
|
170
|
+
const fixes = await fixFile(filePath);
|
|
171
|
+
if (fixes.length > 0) {
|
|
172
|
+
result.filesModified++;
|
|
173
|
+
result.fixesApplied.push(...fixes);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
catch (err) {
|
|
177
|
+
result.errors.push({
|
|
178
|
+
file: filePath,
|
|
179
|
+
message: err instanceof Error ? err.message : String(err),
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return result;
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=fix.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fix.js","sourceRoot":"","sources":["../../src/parser/fix.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from './yaml.js';
|
|
2
|
+
export * from './refs.js';
|
|
3
|
+
export * from './items.js';
|
|
4
|
+
export * from './validate.js';
|
|
5
|
+
export * from './alignment.js';
|
|
6
|
+
export * from './traits.js';
|
|
7
|
+
export * from './fix.js';
|
|
8
|
+
export * from './shadow.js';
|
|
9
|
+
export * from './meta.js';
|
|
10
|
+
export * from './convention-validation.js';
|
|
11
|
+
export * from './assess.js';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AAEA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Re-export parser utilities
|
|
2
|
+
export * from './yaml.js';
|
|
3
|
+
export * from './refs.js';
|
|
4
|
+
export * from './items.js';
|
|
5
|
+
export * from './validate.js';
|
|
6
|
+
export * from './alignment.js';
|
|
7
|
+
export * from './traits.js';
|
|
8
|
+
export * from './fix.js';
|
|
9
|
+
export * from './shadow.js';
|
|
10
|
+
export * from './meta.js';
|
|
11
|
+
export * from './convention-validation.js';
|
|
12
|
+
export * from './assess.js';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/parser/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAE7B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Item index for efficient queries across spec items and tasks.
|
|
3
|
+
*
|
|
4
|
+
* Provides filtering by type, tags, status, and field presence.
|
|
5
|
+
* Complements ReferenceIndex which handles @reference resolution.
|
|
6
|
+
*/
|
|
7
|
+
import type { LoadedSpecItem, LoadedTask, AnyLoadedItem } from './yaml.js';
|
|
8
|
+
import type { ItemType, TaskStatus, Maturity, ImplementationStatus } from '../schema/index.js';
|
|
9
|
+
/**
|
|
10
|
+
* Filter criteria for item queries
|
|
11
|
+
*/
|
|
12
|
+
export interface ItemFilter {
|
|
13
|
+
/** Filter by item type (module, feature, requirement, etc.) */
|
|
14
|
+
type?: ItemType | ItemType[];
|
|
15
|
+
/** Filter by tags (matches if item has ANY of these tags) */
|
|
16
|
+
tags?: string[];
|
|
17
|
+
/** Filter by tags (matches if item has ALL of these tags) */
|
|
18
|
+
allTags?: string[];
|
|
19
|
+
/** Filter by task status (for tasks only) */
|
|
20
|
+
status?: TaskStatus | TaskStatus[];
|
|
21
|
+
/** Filter by maturity status (for spec items) */
|
|
22
|
+
maturity?: Maturity | Maturity[];
|
|
23
|
+
/** Filter by implementation status (for spec items) */
|
|
24
|
+
implementation?: ImplementationStatus | ImplementationStatus[];
|
|
25
|
+
/** Filter items that have these fields present (non-null/undefined) */
|
|
26
|
+
hasFields?: string[];
|
|
27
|
+
/** Filter items that have a specific field value */
|
|
28
|
+
fieldEquals?: {
|
|
29
|
+
field: string;
|
|
30
|
+
value: unknown;
|
|
31
|
+
}[];
|
|
32
|
+
/** Text search in title */
|
|
33
|
+
titleContains?: string;
|
|
34
|
+
/** Include only tasks */
|
|
35
|
+
tasksOnly?: boolean;
|
|
36
|
+
/** Include only spec items (non-tasks) */
|
|
37
|
+
specItemsOnly?: boolean;
|
|
38
|
+
/** Grep-like regex search across all text content */
|
|
39
|
+
grepSearch?: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Query result with pagination info
|
|
43
|
+
*/
|
|
44
|
+
export interface QueryResult<T> {
|
|
45
|
+
items: T[];
|
|
46
|
+
total: number;
|
|
47
|
+
offset: number;
|
|
48
|
+
limit: number;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Index for efficient item queries.
|
|
52
|
+
* Build once when loading the spec, then query many times.
|
|
53
|
+
*/
|
|
54
|
+
export declare class ItemIndex {
|
|
55
|
+
/** All items (tasks + spec items) */
|
|
56
|
+
private allItems;
|
|
57
|
+
/** Tasks only */
|
|
58
|
+
private tasks;
|
|
59
|
+
/** Spec items only (non-tasks) */
|
|
60
|
+
private specItems;
|
|
61
|
+
/** Index by type */
|
|
62
|
+
private typeIndex;
|
|
63
|
+
/** Index by tag */
|
|
64
|
+
private tagIndex;
|
|
65
|
+
/** Index by task status */
|
|
66
|
+
private statusIndex;
|
|
67
|
+
/** Index by maturity */
|
|
68
|
+
private maturityIndex;
|
|
69
|
+
/** Index by implementation status */
|
|
70
|
+
private implementationIndex;
|
|
71
|
+
/**
|
|
72
|
+
* Build index from loaded items
|
|
73
|
+
*/
|
|
74
|
+
constructor(tasks: LoadedTask[], items: LoadedSpecItem[]);
|
|
75
|
+
private indexItem;
|
|
76
|
+
/**
|
|
77
|
+
* Query items with filters
|
|
78
|
+
*/
|
|
79
|
+
query(filter?: ItemFilter): AnyLoadedItem[];
|
|
80
|
+
/**
|
|
81
|
+
* Query with pagination
|
|
82
|
+
*/
|
|
83
|
+
queryPaginated(filter?: ItemFilter, offset?: number, limit?: number): QueryResult<AnyLoadedItem>;
|
|
84
|
+
/**
|
|
85
|
+
* Get items by type
|
|
86
|
+
*/
|
|
87
|
+
getByType(type: ItemType): AnyLoadedItem[];
|
|
88
|
+
/**
|
|
89
|
+
* Get items by tag
|
|
90
|
+
*/
|
|
91
|
+
getByTag(tag: string): AnyLoadedItem[];
|
|
92
|
+
/**
|
|
93
|
+
* Get tasks by status
|
|
94
|
+
*/
|
|
95
|
+
getTasksByStatus(status: TaskStatus): LoadedTask[];
|
|
96
|
+
/**
|
|
97
|
+
* Get spec items by maturity
|
|
98
|
+
*/
|
|
99
|
+
getByMaturity(maturity: Maturity): LoadedSpecItem[];
|
|
100
|
+
/**
|
|
101
|
+
* Get spec items by implementation status
|
|
102
|
+
*/
|
|
103
|
+
getByImplementation(impl: ImplementationStatus): LoadedSpecItem[];
|
|
104
|
+
/**
|
|
105
|
+
* Get all unique types in the index
|
|
106
|
+
*/
|
|
107
|
+
getTypes(): string[];
|
|
108
|
+
/**
|
|
109
|
+
* Get all unique tags in the index
|
|
110
|
+
*/
|
|
111
|
+
getTags(): string[];
|
|
112
|
+
/**
|
|
113
|
+
* Get count by type
|
|
114
|
+
*/
|
|
115
|
+
getTypeCounts(): Map<string, number>;
|
|
116
|
+
/**
|
|
117
|
+
* Get count by tag
|
|
118
|
+
*/
|
|
119
|
+
getTagCounts(): Map<string, number>;
|
|
120
|
+
/**
|
|
121
|
+
* Get total item count
|
|
122
|
+
*/
|
|
123
|
+
get size(): number;
|
|
124
|
+
/**
|
|
125
|
+
* Get task count
|
|
126
|
+
*/
|
|
127
|
+
get taskCount(): number;
|
|
128
|
+
/**
|
|
129
|
+
* Get spec item count
|
|
130
|
+
*/
|
|
131
|
+
get specItemCount(): number;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Find direct child items of a parent item based on _path
|
|
135
|
+
* Children have paths like "parent_path.field[N]"
|
|
136
|
+
*/
|
|
137
|
+
export declare function findChildItems(parent: LoadedSpecItem, allItems: LoadedSpecItem[]): LoadedSpecItem[];
|
|
138
|
+
//# sourceMappingURL=items.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"items.d.ts","sourceRoot":"","sources":["../../src/parser/items.ts"],"names":[],"mappings":"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"}
|