@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.
Files changed (278) hide show
  1. package/README.md +263 -0
  2. package/dist/acp/client.d.ts +159 -0
  3. package/dist/acp/client.d.ts.map +1 -0
  4. package/dist/acp/client.js +255 -0
  5. package/dist/acp/client.js.map +1 -0
  6. package/dist/acp/framing.d.ts +119 -0
  7. package/dist/acp/framing.d.ts.map +1 -0
  8. package/dist/acp/framing.js +302 -0
  9. package/dist/acp/framing.js.map +1 -0
  10. package/dist/acp/index.d.ts +14 -0
  11. package/dist/acp/index.d.ts.map +1 -0
  12. package/dist/acp/index.js +13 -0
  13. package/dist/acp/index.js.map +1 -0
  14. package/dist/acp/types.d.ts +89 -0
  15. package/dist/acp/types.d.ts.map +1 -0
  16. package/dist/acp/types.js +99 -0
  17. package/dist/acp/types.js.map +1 -0
  18. package/dist/agents/adapters.d.ts +55 -0
  19. package/dist/agents/adapters.d.ts.map +1 -0
  20. package/dist/agents/adapters.js +84 -0
  21. package/dist/agents/adapters.js.map +1 -0
  22. package/dist/agents/index.d.ts +8 -0
  23. package/dist/agents/index.d.ts.map +1 -0
  24. package/dist/agents/index.js +10 -0
  25. package/dist/agents/index.js.map +1 -0
  26. package/dist/agents/spawner.d.ts +53 -0
  27. package/dist/agents/spawner.d.ts.map +1 -0
  28. package/dist/agents/spawner.js +83 -0
  29. package/dist/agents/spawner.js.map +1 -0
  30. package/dist/cli/batch.d.ts +82 -0
  31. package/dist/cli/batch.d.ts.map +1 -0
  32. package/dist/cli/batch.js +162 -0
  33. package/dist/cli/batch.js.map +1 -0
  34. package/dist/cli/commands/clone-for-testing.d.ts +6 -0
  35. package/dist/cli/commands/clone-for-testing.d.ts.map +1 -0
  36. package/dist/cli/commands/clone-for-testing.js +176 -0
  37. package/dist/cli/commands/clone-for-testing.js.map +1 -0
  38. package/dist/cli/commands/derive.d.ts +6 -0
  39. package/dist/cli/commands/derive.d.ts.map +1 -0
  40. package/dist/cli/commands/derive.js +450 -0
  41. package/dist/cli/commands/derive.js.map +1 -0
  42. package/dist/cli/commands/help.d.ts +6 -0
  43. package/dist/cli/commands/help.d.ts.map +1 -0
  44. package/dist/cli/commands/help.js +196 -0
  45. package/dist/cli/commands/help.js.map +1 -0
  46. package/dist/cli/commands/inbox.d.ts +6 -0
  47. package/dist/cli/commands/inbox.d.ts.map +1 -0
  48. package/dist/cli/commands/inbox.js +235 -0
  49. package/dist/cli/commands/inbox.js.map +1 -0
  50. package/dist/cli/commands/index.d.ts +20 -0
  51. package/dist/cli/commands/index.d.ts.map +1 -0
  52. package/dist/cli/commands/index.js +21 -0
  53. package/dist/cli/commands/index.js.map +1 -0
  54. package/dist/cli/commands/init.d.ts +6 -0
  55. package/dist/cli/commands/init.d.ts.map +1 -0
  56. package/dist/cli/commands/init.js +245 -0
  57. package/dist/cli/commands/init.js.map +1 -0
  58. package/dist/cli/commands/item.d.ts +6 -0
  59. package/dist/cli/commands/item.d.ts.map +1 -0
  60. package/dist/cli/commands/item.js +1311 -0
  61. package/dist/cli/commands/item.js.map +1 -0
  62. package/dist/cli/commands/link.d.ts +6 -0
  63. package/dist/cli/commands/link.d.ts.map +1 -0
  64. package/dist/cli/commands/link.js +288 -0
  65. package/dist/cli/commands/link.js.map +1 -0
  66. package/dist/cli/commands/log.d.ts +16 -0
  67. package/dist/cli/commands/log.d.ts.map +1 -0
  68. package/dist/cli/commands/log.js +291 -0
  69. package/dist/cli/commands/log.js.map +1 -0
  70. package/dist/cli/commands/meta.d.ts +15 -0
  71. package/dist/cli/commands/meta.d.ts.map +1 -0
  72. package/dist/cli/commands/meta.js +1378 -0
  73. package/dist/cli/commands/meta.js.map +1 -0
  74. package/dist/cli/commands/module.d.ts +6 -0
  75. package/dist/cli/commands/module.d.ts.map +1 -0
  76. package/dist/cli/commands/module.js +102 -0
  77. package/dist/cli/commands/module.js.map +1 -0
  78. package/dist/cli/commands/ralph.d.ts +9 -0
  79. package/dist/cli/commands/ralph.d.ts.map +1 -0
  80. package/dist/cli/commands/ralph.js +465 -0
  81. package/dist/cli/commands/ralph.js.map +1 -0
  82. package/dist/cli/commands/search.d.ts +6 -0
  83. package/dist/cli/commands/search.d.ts.map +1 -0
  84. package/dist/cli/commands/search.js +134 -0
  85. package/dist/cli/commands/search.js.map +1 -0
  86. package/dist/cli/commands/session.d.ts +164 -0
  87. package/dist/cli/commands/session.d.ts.map +1 -0
  88. package/dist/cli/commands/session.js +745 -0
  89. package/dist/cli/commands/session.js.map +1 -0
  90. package/dist/cli/commands/setup.d.ts +26 -0
  91. package/dist/cli/commands/setup.d.ts.map +1 -0
  92. package/dist/cli/commands/setup.js +586 -0
  93. package/dist/cli/commands/setup.js.map +1 -0
  94. package/dist/cli/commands/shadow.d.ts +6 -0
  95. package/dist/cli/commands/shadow.d.ts.map +1 -0
  96. package/dist/cli/commands/shadow.js +299 -0
  97. package/dist/cli/commands/shadow.js.map +1 -0
  98. package/dist/cli/commands/task.d.ts +6 -0
  99. package/dist/cli/commands/task.d.ts.map +1 -0
  100. package/dist/cli/commands/task.js +1514 -0
  101. package/dist/cli/commands/task.js.map +1 -0
  102. package/dist/cli/commands/tasks.d.ts +6 -0
  103. package/dist/cli/commands/tasks.d.ts.map +1 -0
  104. package/dist/cli/commands/tasks.js +347 -0
  105. package/dist/cli/commands/tasks.js.map +1 -0
  106. package/dist/cli/commands/trait.d.ts +10 -0
  107. package/dist/cli/commands/trait.d.ts.map +1 -0
  108. package/dist/cli/commands/trait.js +295 -0
  109. package/dist/cli/commands/trait.js.map +1 -0
  110. package/dist/cli/commands/validate.d.ts +6 -0
  111. package/dist/cli/commands/validate.d.ts.map +1 -0
  112. package/dist/cli/commands/validate.js +626 -0
  113. package/dist/cli/commands/validate.js.map +1 -0
  114. package/dist/cli/exit-codes.d.ts +62 -0
  115. package/dist/cli/exit-codes.d.ts.map +1 -0
  116. package/dist/cli/exit-codes.js +65 -0
  117. package/dist/cli/exit-codes.js.map +1 -0
  118. package/dist/cli/help/content.d.ts +35 -0
  119. package/dist/cli/help/content.d.ts.map +1 -0
  120. package/dist/cli/help/content.js +312 -0
  121. package/dist/cli/help/content.js.map +1 -0
  122. package/dist/cli/index.d.ts +5 -0
  123. package/dist/cli/index.d.ts.map +1 -0
  124. package/dist/cli/index.js +85 -0
  125. package/dist/cli/index.js.map +1 -0
  126. package/dist/cli/introspection.d.ts +87 -0
  127. package/dist/cli/introspection.d.ts.map +1 -0
  128. package/dist/cli/introspection.js +127 -0
  129. package/dist/cli/introspection.js.map +1 -0
  130. package/dist/cli/output.d.ts +56 -0
  131. package/dist/cli/output.d.ts.map +1 -0
  132. package/dist/cli/output.js +467 -0
  133. package/dist/cli/output.js.map +1 -0
  134. package/dist/cli/suggest.d.ts +16 -0
  135. package/dist/cli/suggest.d.ts.map +1 -0
  136. package/dist/cli/suggest.js +72 -0
  137. package/dist/cli/suggest.js.map +1 -0
  138. package/dist/index.d.ts +3 -0
  139. package/dist/index.d.ts.map +1 -0
  140. package/dist/index.js +5 -0
  141. package/dist/index.js.map +1 -0
  142. package/dist/parser/alignment.d.ts +113 -0
  143. package/dist/parser/alignment.d.ts.map +1 -0
  144. package/dist/parser/alignment.js +261 -0
  145. package/dist/parser/alignment.js.map +1 -0
  146. package/dist/parser/assess.d.ts +81 -0
  147. package/dist/parser/assess.d.ts.map +1 -0
  148. package/dist/parser/assess.js +197 -0
  149. package/dist/parser/assess.js.map +1 -0
  150. package/dist/parser/convention-validation.d.ts +48 -0
  151. package/dist/parser/convention-validation.d.ts.map +1 -0
  152. package/dist/parser/convention-validation.js +167 -0
  153. package/dist/parser/convention-validation.js.map +1 -0
  154. package/dist/parser/fix.d.ts +38 -0
  155. package/dist/parser/fix.d.ts.map +1 -0
  156. package/dist/parser/fix.js +185 -0
  157. package/dist/parser/fix.js.map +1 -0
  158. package/dist/parser/index.d.ts +12 -0
  159. package/dist/parser/index.d.ts.map +1 -0
  160. package/dist/parser/index.js +13 -0
  161. package/dist/parser/index.js.map +1 -0
  162. package/dist/parser/items.d.ts +138 -0
  163. package/dist/parser/items.d.ts.map +1 -0
  164. package/dist/parser/items.js +321 -0
  165. package/dist/parser/items.js.map +1 -0
  166. package/dist/parser/meta.d.ts +120 -0
  167. package/dist/parser/meta.d.ts.map +1 -0
  168. package/dist/parser/meta.js +441 -0
  169. package/dist/parser/meta.js.map +1 -0
  170. package/dist/parser/refs.d.ts +185 -0
  171. package/dist/parser/refs.d.ts.map +1 -0
  172. package/dist/parser/refs.js +404 -0
  173. package/dist/parser/refs.js.map +1 -0
  174. package/dist/parser/shadow.d.ts +253 -0
  175. package/dist/parser/shadow.d.ts.map +1 -0
  176. package/dist/parser/shadow.js +1053 -0
  177. package/dist/parser/shadow.js.map +1 -0
  178. package/dist/parser/traits.d.ts +72 -0
  179. package/dist/parser/traits.d.ts.map +1 -0
  180. package/dist/parser/traits.js +120 -0
  181. package/dist/parser/traits.js.map +1 -0
  182. package/dist/parser/validate.d.ts +89 -0
  183. package/dist/parser/validate.d.ts.map +1 -0
  184. package/dist/parser/validate.js +817 -0
  185. package/dist/parser/validate.js.map +1 -0
  186. package/dist/parser/yaml.d.ts +326 -0
  187. package/dist/parser/yaml.d.ts.map +1 -0
  188. package/dist/parser/yaml.js +1383 -0
  189. package/dist/parser/yaml.js.map +1 -0
  190. package/dist/ralph/cli-renderer.d.ts +20 -0
  191. package/dist/ralph/cli-renderer.d.ts.map +1 -0
  192. package/dist/ralph/cli-renderer.js +179 -0
  193. package/dist/ralph/cli-renderer.js.map +1 -0
  194. package/dist/ralph/events.d.ts +65 -0
  195. package/dist/ralph/events.d.ts.map +1 -0
  196. package/dist/ralph/events.js +397 -0
  197. package/dist/ralph/events.js.map +1 -0
  198. package/dist/ralph/index.d.ts +8 -0
  199. package/dist/ralph/index.d.ts.map +1 -0
  200. package/dist/ralph/index.js +10 -0
  201. package/dist/ralph/index.js.map +1 -0
  202. package/dist/schema/common.d.ts +46 -0
  203. package/dist/schema/common.d.ts.map +1 -0
  204. package/dist/schema/common.js +71 -0
  205. package/dist/schema/common.js.map +1 -0
  206. package/dist/schema/inbox.d.ts +90 -0
  207. package/dist/schema/inbox.d.ts.map +1 -0
  208. package/dist/schema/inbox.js +30 -0
  209. package/dist/schema/inbox.js.map +1 -0
  210. package/dist/schema/index.d.ts +6 -0
  211. package/dist/schema/index.d.ts.map +1 -0
  212. package/dist/schema/index.js +7 -0
  213. package/dist/schema/index.js.map +1 -0
  214. package/dist/schema/meta.d.ts +762 -0
  215. package/dist/schema/meta.d.ts.map +1 -0
  216. package/dist/schema/meta.js +144 -0
  217. package/dist/schema/meta.js.map +1 -0
  218. package/dist/schema/spec.d.ts +912 -0
  219. package/dist/schema/spec.d.ts.map +1 -0
  220. package/dist/schema/spec.js +104 -0
  221. package/dist/schema/spec.js.map +1 -0
  222. package/dist/schema/task.d.ts +664 -0
  223. package/dist/schema/task.d.ts.map +1 -0
  224. package/dist/schema/task.js +130 -0
  225. package/dist/schema/task.js.map +1 -0
  226. package/dist/sessions/index.d.ts +11 -0
  227. package/dist/sessions/index.d.ts.map +1 -0
  228. package/dist/sessions/index.js +13 -0
  229. package/dist/sessions/index.js.map +1 -0
  230. package/dist/sessions/store.d.ts +144 -0
  231. package/dist/sessions/store.d.ts.map +1 -0
  232. package/dist/sessions/store.js +325 -0
  233. package/dist/sessions/store.js.map +1 -0
  234. package/dist/sessions/types.d.ts +157 -0
  235. package/dist/sessions/types.d.ts.map +1 -0
  236. package/dist/sessions/types.js +90 -0
  237. package/dist/sessions/types.js.map +1 -0
  238. package/dist/strings/errors.d.ts +420 -0
  239. package/dist/strings/errors.d.ts.map +1 -0
  240. package/dist/strings/errors.js +282 -0
  241. package/dist/strings/errors.js.map +1 -0
  242. package/dist/strings/guidance.d.ts +65 -0
  243. package/dist/strings/guidance.d.ts.map +1 -0
  244. package/dist/strings/guidance.js +66 -0
  245. package/dist/strings/guidance.js.map +1 -0
  246. package/dist/strings/index.d.ts +12 -0
  247. package/dist/strings/index.d.ts.map +1 -0
  248. package/dist/strings/index.js +12 -0
  249. package/dist/strings/index.js.map +1 -0
  250. package/dist/strings/labels.d.ts +74 -0
  251. package/dist/strings/labels.d.ts.map +1 -0
  252. package/dist/strings/labels.js +75 -0
  253. package/dist/strings/labels.js.map +1 -0
  254. package/dist/strings/validation.d.ts +126 -0
  255. package/dist/strings/validation.d.ts.map +1 -0
  256. package/dist/strings/validation.js +135 -0
  257. package/dist/strings/validation.js.map +1 -0
  258. package/dist/utils/commit.d.ts +23 -0
  259. package/dist/utils/commit.d.ts.map +1 -0
  260. package/dist/utils/commit.js +67 -0
  261. package/dist/utils/commit.js.map +1 -0
  262. package/dist/utils/git.d.ts +57 -0
  263. package/dist/utils/git.d.ts.map +1 -0
  264. package/dist/utils/git.js +192 -0
  265. package/dist/utils/git.js.map +1 -0
  266. package/dist/utils/grep.d.ts +28 -0
  267. package/dist/utils/grep.d.ts.map +1 -0
  268. package/dist/utils/grep.js +86 -0
  269. package/dist/utils/grep.js.map +1 -0
  270. package/dist/utils/index.d.ts +8 -0
  271. package/dist/utils/index.d.ts.map +1 -0
  272. package/dist/utils/index.js +6 -0
  273. package/dist/utils/index.js.map +1 -0
  274. package/dist/utils/time.d.ts +18 -0
  275. package/dist/utils/time.d.ts.map +1 -0
  276. package/dist/utils/time.js +61 -0
  277. package/dist/utils/time.js.map +1 -0
  278. 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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"}