open-wiki-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 (487) hide show
  1. package/README.md +294 -0
  2. package/bin/open-wiki-spec.js +2 -0
  3. package/dist/cli/commands/apply.d.ts +3 -0
  4. package/dist/cli/commands/apply.d.ts.map +1 -0
  5. package/dist/cli/commands/apply.js +60 -0
  6. package/dist/cli/commands/apply.js.map +1 -0
  7. package/dist/cli/commands/archive.d.ts +20 -0
  8. package/dist/cli/commands/archive.d.ts.map +1 -0
  9. package/dist/cli/commands/archive.js +87 -0
  10. package/dist/cli/commands/archive.js.map +1 -0
  11. package/dist/cli/commands/continue.d.ts +6 -0
  12. package/dist/cli/commands/continue.d.ts.map +1 -0
  13. package/dist/cli/commands/continue.js +35 -0
  14. package/dist/cli/commands/continue.js.map +1 -0
  15. package/dist/cli/commands/formatters.d.ts +9 -0
  16. package/dist/cli/commands/formatters.d.ts.map +1 -0
  17. package/dist/cli/commands/formatters.js +55 -0
  18. package/dist/cli/commands/formatters.js.map +1 -0
  19. package/dist/cli/commands/init.d.ts +6 -0
  20. package/dist/cli/commands/init.d.ts.map +1 -0
  21. package/dist/cli/commands/init.js +36 -0
  22. package/dist/cli/commands/init.js.map +1 -0
  23. package/dist/cli/commands/list.d.ts +28 -0
  24. package/dist/cli/commands/list.d.ts.map +1 -0
  25. package/dist/cli/commands/list.js +85 -0
  26. package/dist/cli/commands/list.js.map +1 -0
  27. package/dist/cli/commands/migrate.d.ts +6 -0
  28. package/dist/cli/commands/migrate.d.ts.map +1 -0
  29. package/dist/cli/commands/migrate.js +103 -0
  30. package/dist/cli/commands/migrate.js.map +1 -0
  31. package/dist/cli/commands/propose.d.ts +3 -0
  32. package/dist/cli/commands/propose.d.ts.map +1 -0
  33. package/dist/cli/commands/propose.js +64 -0
  34. package/dist/cli/commands/propose.js.map +1 -0
  35. package/dist/cli/commands/query.d.ts +3 -0
  36. package/dist/cli/commands/query.d.ts.map +1 -0
  37. package/dist/cli/commands/query.js +62 -0
  38. package/dist/cli/commands/query.js.map +1 -0
  39. package/dist/cli/commands/status.d.ts +30 -0
  40. package/dist/cli/commands/status.d.ts.map +1 -0
  41. package/dist/cli/commands/status.js +144 -0
  42. package/dist/cli/commands/status.js.map +1 -0
  43. package/dist/cli/commands/verify.d.ts +3 -0
  44. package/dist/cli/commands/verify.d.ts.map +1 -0
  45. package/dist/cli/commands/verify.js +38 -0
  46. package/dist/cli/commands/verify.js.map +1 -0
  47. package/dist/cli/index.d.ts +6 -0
  48. package/dist/cli/index.d.ts.map +1 -0
  49. package/dist/cli/index.js +40 -0
  50. package/dist/cli/index.js.map +1 -0
  51. package/dist/cli/init/init-engine.d.ts +6 -0
  52. package/dist/cli/init/init-engine.d.ts.map +1 -0
  53. package/dist/cli/init/init-engine.js +107 -0
  54. package/dist/cli/init/init-engine.js.map +1 -0
  55. package/dist/cli/init/meta-files.d.ts +9 -0
  56. package/dist/cli/init/meta-files.d.ts.map +1 -0
  57. package/dist/cli/init/meta-files.js +156 -0
  58. package/dist/cli/init/meta-files.js.map +1 -0
  59. package/dist/cli/init/skill-generator.d.ts +11 -0
  60. package/dist/cli/init/skill-generator.d.ts.map +1 -0
  61. package/dist/cli/init/skill-generator.js +753 -0
  62. package/dist/cli/init/skill-generator.js.map +1 -0
  63. package/dist/cli/init/types.d.ts +27 -0
  64. package/dist/cli/init/types.d.ts.map +1 -0
  65. package/dist/cli/init/types.js +5 -0
  66. package/dist/cli/init/types.js.map +1 -0
  67. package/dist/cli/vault-discovery.d.ts +9 -0
  68. package/dist/cli/vault-discovery.d.ts.map +1 -0
  69. package/dist/cli/vault-discovery.js +31 -0
  70. package/dist/cli/vault-discovery.js.map +1 -0
  71. package/dist/core/config/index.d.ts +2 -0
  72. package/dist/core/config/index.d.ts.map +1 -0
  73. package/dist/core/config/index.js +3 -0
  74. package/dist/core/config/index.js.map +1 -0
  75. package/dist/core/index/build.d.ts +10 -0
  76. package/dist/core/index/build.d.ts.map +1 -0
  77. package/dist/core/index/build.js +190 -0
  78. package/dist/core/index/build.js.map +1 -0
  79. package/dist/core/index/index.d.ts +7 -0
  80. package/dist/core/index/index.d.ts.map +1 -0
  81. package/dist/core/index/index.js +7 -0
  82. package/dist/core/index/index.js.map +1 -0
  83. package/dist/core/index/resolve.d.ts +41 -0
  84. package/dist/core/index/resolve.d.ts.map +1 -0
  85. package/dist/core/index/resolve.js +63 -0
  86. package/dist/core/index/resolve.js.map +1 -0
  87. package/dist/core/index/reverse.d.ts +7 -0
  88. package/dist/core/index/reverse.d.ts.map +1 -0
  89. package/dist/core/index/reverse.js +24 -0
  90. package/dist/core/index/reverse.js.map +1 -0
  91. package/dist/core/index/scan.d.ts +16 -0
  92. package/dist/core/index/scan.d.ts.map +1 -0
  93. package/dist/core/index/scan.js +19 -0
  94. package/dist/core/index/scan.js.map +1 -0
  95. package/dist/core/index/schema-version.d.ts +5 -0
  96. package/dist/core/index/schema-version.d.ts.map +1 -0
  97. package/dist/core/index/schema-version.js +19 -0
  98. package/dist/core/index/schema-version.js.map +1 -0
  99. package/dist/core/index/validate.d.ts +14 -0
  100. package/dist/core/index/validate.d.ts.map +1 -0
  101. package/dist/core/index/validate.js +77 -0
  102. package/dist/core/index/validate.js.map +1 -0
  103. package/dist/core/migrate/change-converter.d.ts +18 -0
  104. package/dist/core/migrate/change-converter.d.ts.map +1 -0
  105. package/dist/core/migrate/change-converter.js +475 -0
  106. package/dist/core/migrate/change-converter.js.map +1 -0
  107. package/dist/core/migrate/index.d.ts +8 -0
  108. package/dist/core/migrate/index.d.ts.map +1 -0
  109. package/dist/core/migrate/index.js +7 -0
  110. package/dist/core/migrate/index.js.map +1 -0
  111. package/dist/core/migrate/migrate.d.ts +15 -0
  112. package/dist/core/migrate/migrate.d.ts.map +1 -0
  113. package/dist/core/migrate/migrate.js +149 -0
  114. package/dist/core/migrate/migrate.js.map +1 -0
  115. package/dist/core/migrate/scanner.d.ts +10 -0
  116. package/dist/core/migrate/scanner.d.ts.map +1 -0
  117. package/dist/core/migrate/scanner.js +188 -0
  118. package/dist/core/migrate/scanner.js.map +1 -0
  119. package/dist/core/migrate/source-converter.d.ts +6 -0
  120. package/dist/core/migrate/source-converter.d.ts.map +1 -0
  121. package/dist/core/migrate/source-converter.js +63 -0
  122. package/dist/core/migrate/source-converter.js.map +1 -0
  123. package/dist/core/migrate/spec-converter.d.ts +16 -0
  124. package/dist/core/migrate/spec-converter.d.ts.map +1 -0
  125. package/dist/core/migrate/spec-converter.js +157 -0
  126. package/dist/core/migrate/spec-converter.js.map +1 -0
  127. package/dist/core/migrate/system-inferrer.d.ts +23 -0
  128. package/dist/core/migrate/system-inferrer.d.ts.map +1 -0
  129. package/dist/core/migrate/system-inferrer.js +118 -0
  130. package/dist/core/migrate/system-inferrer.js.map +1 -0
  131. package/dist/core/migrate/types.d.ts +125 -0
  132. package/dist/core/migrate/types.d.ts.map +1 -0
  133. package/dist/core/migrate/types.js +5 -0
  134. package/dist/core/migrate/types.js.map +1 -0
  135. package/dist/core/parser/delta-summary-parser.d.ts +10 -0
  136. package/dist/core/parser/delta-summary-parser.d.ts.map +1 -0
  137. package/dist/core/parser/delta-summary-parser.js +101 -0
  138. package/dist/core/parser/delta-summary-parser.js.map +1 -0
  139. package/dist/core/parser/frontmatter-parser.d.ts +21 -0
  140. package/dist/core/parser/frontmatter-parser.d.ts.map +1 -0
  141. package/dist/core/parser/frontmatter-parser.js +87 -0
  142. package/dist/core/parser/frontmatter-parser.js.map +1 -0
  143. package/dist/core/parser/index.d.ts +9 -0
  144. package/dist/core/parser/index.d.ts.map +1 -0
  145. package/dist/core/parser/index.js +8 -0
  146. package/dist/core/parser/index.js.map +1 -0
  147. package/dist/core/parser/note-parser.d.ts +9 -0
  148. package/dist/core/parser/note-parser.d.ts.map +1 -0
  149. package/dist/core/parser/note-parser.js +106 -0
  150. package/dist/core/parser/note-parser.js.map +1 -0
  151. package/dist/core/parser/requirement-parser.d.ts +13 -0
  152. package/dist/core/parser/requirement-parser.d.ts.map +1 -0
  153. package/dist/core/parser/requirement-parser.js +127 -0
  154. package/dist/core/parser/requirement-parser.js.map +1 -0
  155. package/dist/core/parser/section-parser.d.ts +15 -0
  156. package/dist/core/parser/section-parser.d.ts.map +1 -0
  157. package/dist/core/parser/section-parser.js +90 -0
  158. package/dist/core/parser/section-parser.js.map +1 -0
  159. package/dist/core/parser/task-parser.d.ts +9 -0
  160. package/dist/core/parser/task-parser.d.ts.map +1 -0
  161. package/dist/core/parser/task-parser.js +35 -0
  162. package/dist/core/parser/task-parser.js.map +1 -0
  163. package/dist/core/parser/types.d.ts +94 -0
  164. package/dist/core/parser/types.d.ts.map +1 -0
  165. package/dist/core/parser/types.js +2 -0
  166. package/dist/core/parser/types.js.map +1 -0
  167. package/dist/core/parser/wikilink-parser.d.ts +19 -0
  168. package/dist/core/parser/wikilink-parser.d.ts.map +1 -0
  169. package/dist/core/parser/wikilink-parser.js +74 -0
  170. package/dist/core/parser/wikilink-parser.js.map +1 -0
  171. package/dist/core/retrieval/classify.d.ts +11 -0
  172. package/dist/core/retrieval/classify.d.ts.map +1 -0
  173. package/dist/core/retrieval/classify.js +92 -0
  174. package/dist/core/retrieval/classify.js.map +1 -0
  175. package/dist/core/retrieval/constants.d.ts +49 -0
  176. package/dist/core/retrieval/constants.d.ts.map +1 -0
  177. package/dist/core/retrieval/constants.js +29 -0
  178. package/dist/core/retrieval/constants.js.map +1 -0
  179. package/dist/core/retrieval/graph-expand.d.ts +7 -0
  180. package/dist/core/retrieval/graph-expand.d.ts.map +1 -0
  181. package/dist/core/retrieval/graph-expand.js +20 -0
  182. package/dist/core/retrieval/graph-expand.js.map +1 -0
  183. package/dist/core/retrieval/helpers.d.ts +15 -0
  184. package/dist/core/retrieval/helpers.d.ts.map +1 -0
  185. package/dist/core/retrieval/helpers.js +36 -0
  186. package/dist/core/retrieval/helpers.js.map +1 -0
  187. package/dist/core/retrieval/index.d.ts +11 -0
  188. package/dist/core/retrieval/index.d.ts.map +1 -0
  189. package/dist/core/retrieval/index.js +9 -0
  190. package/dist/core/retrieval/index.js.map +1 -0
  191. package/dist/core/retrieval/lexical.d.ts +8 -0
  192. package/dist/core/retrieval/lexical.d.ts.map +1 -0
  193. package/dist/core/retrieval/lexical.js +107 -0
  194. package/dist/core/retrieval/lexical.js.map +1 -0
  195. package/dist/core/retrieval/retrieve.d.ts +16 -0
  196. package/dist/core/retrieval/retrieve.d.ts.map +1 -0
  197. package/dist/core/retrieval/retrieve.js +58 -0
  198. package/dist/core/retrieval/retrieve.js.map +1 -0
  199. package/dist/core/retrieval/scoring.d.ts +14 -0
  200. package/dist/core/retrieval/scoring.d.ts.map +1 -0
  201. package/dist/core/retrieval/scoring.js +169 -0
  202. package/dist/core/retrieval/scoring.js.map +1 -0
  203. package/dist/core/retrieval/warnings.d.ts +16 -0
  204. package/dist/core/retrieval/warnings.d.ts.map +1 -0
  205. package/dist/core/retrieval/warnings.js +73 -0
  206. package/dist/core/retrieval/warnings.js.map +1 -0
  207. package/dist/core/schema/base.schema.d.ts +31 -0
  208. package/dist/core/schema/base.schema.d.ts.map +1 -0
  209. package/dist/core/schema/base.schema.js +32 -0
  210. package/dist/core/schema/base.schema.js.map +1 -0
  211. package/dist/core/schema/change.schema.d.ts +96 -0
  212. package/dist/core/schema/change.schema.d.ts.map +1 -0
  213. package/dist/core/schema/change.schema.js +64 -0
  214. package/dist/core/schema/change.schema.js.map +1 -0
  215. package/dist/core/schema/decision.schema.d.ts +33 -0
  216. package/dist/core/schema/decision.schema.d.ts.map +1 -0
  217. package/dist/core/schema/decision.schema.js +19 -0
  218. package/dist/core/schema/decision.schema.js.map +1 -0
  219. package/dist/core/schema/delta-summary.d.ts +57 -0
  220. package/dist/core/schema/delta-summary.d.ts.map +1 -0
  221. package/dist/core/schema/delta-summary.js +38 -0
  222. package/dist/core/schema/delta-summary.js.map +1 -0
  223. package/dist/core/schema/feature.schema.d.ts +40 -0
  224. package/dist/core/schema/feature.schema.d.ts.map +1 -0
  225. package/dist/core/schema/feature.schema.js +25 -0
  226. package/dist/core/schema/feature.schema.js.map +1 -0
  227. package/dist/core/schema/frontmatter.d.ts +207 -0
  228. package/dist/core/schema/frontmatter.d.ts.map +1 -0
  229. package/dist/core/schema/frontmatter.js +23 -0
  230. package/dist/core/schema/frontmatter.js.map +1 -0
  231. package/dist/core/schema/index.d.ts +235 -0
  232. package/dist/core/schema/index.d.ts.map +1 -0
  233. package/dist/core/schema/index.js +52 -0
  234. package/dist/core/schema/index.js.map +1 -0
  235. package/dist/core/schema/query.schema.d.ts +39 -0
  236. package/dist/core/schema/query.schema.d.ts.map +1 -0
  237. package/dist/core/schema/query.schema.js +20 -0
  238. package/dist/core/schema/query.schema.js.map +1 -0
  239. package/dist/core/schema/requirement.d.ts +69 -0
  240. package/dist/core/schema/requirement.d.ts.map +1 -0
  241. package/dist/core/schema/requirement.js +35 -0
  242. package/dist/core/schema/requirement.js.map +1 -0
  243. package/dist/core/schema/source.schema.d.ts +33 -0
  244. package/dist/core/schema/source.schema.d.ts.map +1 -0
  245. package/dist/core/schema/source.schema.js +24 -0
  246. package/dist/core/schema/source.schema.js.map +1 -0
  247. package/dist/core/schema/system.schema.d.ts +27 -0
  248. package/dist/core/schema/system.schema.d.ts.map +1 -0
  249. package/dist/core/schema/system.schema.js +17 -0
  250. package/dist/core/schema/system.schema.js.map +1 -0
  251. package/dist/core/schema/templates.d.ts +14 -0
  252. package/dist/core/schema/templates.d.ts.map +1 -0
  253. package/dist/core/schema/templates.js +220 -0
  254. package/dist/core/schema/templates.js.map +1 -0
  255. package/dist/core/schema/validation-constants.d.ts +5 -0
  256. package/dist/core/schema/validation-constants.d.ts.map +1 -0
  257. package/dist/core/schema/validation-constants.js +5 -0
  258. package/dist/core/schema/validation-constants.js.map +1 -0
  259. package/dist/core/sequencing/analyze.d.ts +13 -0
  260. package/dist/core/sequencing/analyze.d.ts.map +1 -0
  261. package/dist/core/sequencing/analyze.js +107 -0
  262. package/dist/core/sequencing/analyze.js.map +1 -0
  263. package/dist/core/sequencing/index.d.ts +8 -0
  264. package/dist/core/sequencing/index.d.ts.map +1 -0
  265. package/dist/core/sequencing/index.js +8 -0
  266. package/dist/core/sequencing/index.js.map +1 -0
  267. package/dist/core/sequencing/ordering.d.ts +11 -0
  268. package/dist/core/sequencing/ordering.d.ts.map +1 -0
  269. package/dist/core/sequencing/ordering.js +148 -0
  270. package/dist/core/sequencing/ordering.js.map +1 -0
  271. package/dist/core/sequencing/out-of-order-detector.d.ts +9 -0
  272. package/dist/core/sequencing/out-of-order-detector.d.ts.map +1 -0
  273. package/dist/core/sequencing/out-of-order-detector.js +42 -0
  274. package/dist/core/sequencing/out-of-order-detector.js.map +1 -0
  275. package/dist/core/sequencing/priority-queue.d.ts +18 -0
  276. package/dist/core/sequencing/priority-queue.d.ts.map +1 -0
  277. package/dist/core/sequencing/priority-queue.js +31 -0
  278. package/dist/core/sequencing/priority-queue.js.map +1 -0
  279. package/dist/core/sequencing/requirement-conflict-detector.d.ts +9 -0
  280. package/dist/core/sequencing/requirement-conflict-detector.d.ts.map +1 -0
  281. package/dist/core/sequencing/requirement-conflict-detector.js +90 -0
  282. package/dist/core/sequencing/requirement-conflict-detector.js.map +1 -0
  283. package/dist/core/sequencing/stale-detector.d.ts +9 -0
  284. package/dist/core/sequencing/stale-detector.d.ts.map +1 -0
  285. package/dist/core/sequencing/stale-detector.js +49 -0
  286. package/dist/core/sequencing/stale-detector.js.map +1 -0
  287. package/dist/core/sequencing/touches-analyzer.d.ts +8 -0
  288. package/dist/core/sequencing/touches-analyzer.d.ts.map +1 -0
  289. package/dist/core/sequencing/touches-analyzer.js +91 -0
  290. package/dist/core/sequencing/touches-analyzer.js.map +1 -0
  291. package/dist/core/vault/index.d.ts +2 -0
  292. package/dist/core/vault/index.d.ts.map +1 -0
  293. package/dist/core/vault/index.js +3 -0
  294. package/dist/core/vault/index.js.map +1 -0
  295. package/dist/core/workflow/apply/apply.d.ts +17 -0
  296. package/dist/core/workflow/apply/apply.d.ts.map +1 -0
  297. package/dist/core/workflow/apply/apply.js +302 -0
  298. package/dist/core/workflow/apply/apply.js.map +1 -0
  299. package/dist/core/workflow/apply/delta-parser.d.ts +11 -0
  300. package/dist/core/workflow/apply/delta-parser.d.ts.map +1 -0
  301. package/dist/core/workflow/apply/delta-parser.js +164 -0
  302. package/dist/core/workflow/apply/delta-parser.js.map +1 -0
  303. package/dist/core/workflow/apply/feature-updater.d.ts +12 -0
  304. package/dist/core/workflow/apply/feature-updater.d.ts.map +1 -0
  305. package/dist/core/workflow/apply/feature-updater.js +75 -0
  306. package/dist/core/workflow/apply/feature-updater.js.map +1 -0
  307. package/dist/core/workflow/apply/index.d.ts +7 -0
  308. package/dist/core/workflow/apply/index.d.ts.map +1 -0
  309. package/dist/core/workflow/apply/index.js +6 -0
  310. package/dist/core/workflow/apply/index.js.map +1 -0
  311. package/dist/core/workflow/apply/stale-checker.d.ts +17 -0
  312. package/dist/core/workflow/apply/stale-checker.d.ts.map +1 -0
  313. package/dist/core/workflow/apply/stale-checker.js +99 -0
  314. package/dist/core/workflow/apply/stale-checker.js.map +1 -0
  315. package/dist/core/workflow/apply/types.d.ts +112 -0
  316. package/dist/core/workflow/apply/types.d.ts.map +1 -0
  317. package/dist/core/workflow/apply/types.js +2 -0
  318. package/dist/core/workflow/apply/types.js.map +1 -0
  319. package/dist/core/workflow/apply/verify-apply.d.ts +16 -0
  320. package/dist/core/workflow/apply/verify-apply.d.ts.map +1 -0
  321. package/dist/core/workflow/apply/verify-apply.js +81 -0
  322. package/dist/core/workflow/apply/verify-apply.js.map +1 -0
  323. package/dist/core/workflow/continue/continue.d.ts +17 -0
  324. package/dist/core/workflow/continue/continue.d.ts.map +1 -0
  325. package/dist/core/workflow/continue/continue.js +213 -0
  326. package/dist/core/workflow/continue/continue.js.map +1 -0
  327. package/dist/core/workflow/continue/decision-promoter.d.ts +20 -0
  328. package/dist/core/workflow/continue/decision-promoter.d.ts.map +1 -0
  329. package/dist/core/workflow/continue/decision-promoter.js +36 -0
  330. package/dist/core/workflow/continue/decision-promoter.js.map +1 -0
  331. package/dist/core/workflow/continue/index.d.ts +6 -0
  332. package/dist/core/workflow/continue/index.d.ts.map +1 -0
  333. package/dist/core/workflow/continue/index.js +5 -0
  334. package/dist/core/workflow/continue/index.js.map +1 -0
  335. package/dist/core/workflow/continue/next-action.d.ts +13 -0
  336. package/dist/core/workflow/continue/next-action.d.ts.map +1 -0
  337. package/dist/core/workflow/continue/next-action.js +129 -0
  338. package/dist/core/workflow/continue/next-action.js.map +1 -0
  339. package/dist/core/workflow/continue/section-checker.d.ts +18 -0
  340. package/dist/core/workflow/continue/section-checker.d.ts.map +1 -0
  341. package/dist/core/workflow/continue/section-checker.js +114 -0
  342. package/dist/core/workflow/continue/section-checker.js.map +1 -0
  343. package/dist/core/workflow/continue/types.d.ts +113 -0
  344. package/dist/core/workflow/continue/types.d.ts.map +1 -0
  345. package/dist/core/workflow/continue/types.js +2 -0
  346. package/dist/core/workflow/continue/types.js.map +1 -0
  347. package/dist/core/workflow/index.d.ts +11 -0
  348. package/dist/core/workflow/index.d.ts.map +1 -0
  349. package/dist/core/workflow/index.js +12 -0
  350. package/dist/core/workflow/index.js.map +1 -0
  351. package/dist/core/workflow/propose/index.d.ts +6 -0
  352. package/dist/core/workflow/propose/index.d.ts.map +1 -0
  353. package/dist/core/workflow/propose/index.js +5 -0
  354. package/dist/core/workflow/propose/index.js.map +1 -0
  355. package/dist/core/workflow/propose/note-creator.d.ts +35 -0
  356. package/dist/core/workflow/propose/note-creator.d.ts.map +1 -0
  357. package/dist/core/workflow/propose/note-creator.js +178 -0
  358. package/dist/core/workflow/propose/note-creator.js.map +1 -0
  359. package/dist/core/workflow/propose/prerequisites.d.ts +17 -0
  360. package/dist/core/workflow/propose/prerequisites.d.ts.map +1 -0
  361. package/dist/core/workflow/propose/prerequisites.js +78 -0
  362. package/dist/core/workflow/propose/prerequisites.js.map +1 -0
  363. package/dist/core/workflow/propose/propose.d.ts +13 -0
  364. package/dist/core/workflow/propose/propose.d.ts.map +1 -0
  365. package/dist/core/workflow/propose/propose.js +204 -0
  366. package/dist/core/workflow/propose/propose.js.map +1 -0
  367. package/dist/core/workflow/propose/query-normalizer.d.ts +7 -0
  368. package/dist/core/workflow/propose/query-normalizer.d.ts.map +1 -0
  369. package/dist/core/workflow/propose/query-normalizer.js +77 -0
  370. package/dist/core/workflow/propose/query-normalizer.js.map +1 -0
  371. package/dist/core/workflow/propose/types.d.ts +71 -0
  372. package/dist/core/workflow/propose/types.d.ts.map +1 -0
  373. package/dist/core/workflow/propose/types.js +2 -0
  374. package/dist/core/workflow/propose/types.js.map +1 -0
  375. package/dist/core/workflow/query/index.d.ts +6 -0
  376. package/dist/core/workflow/query/index.d.ts.map +1 -0
  377. package/dist/core/workflow/query/index.js +5 -0
  378. package/dist/core/workflow/query/index.js.map +1 -0
  379. package/dist/core/workflow/query/noteworthiness.d.ts +14 -0
  380. package/dist/core/workflow/query/noteworthiness.d.ts.map +1 -0
  381. package/dist/core/workflow/query/noteworthiness.js +48 -0
  382. package/dist/core/workflow/query/noteworthiness.js.map +1 -0
  383. package/dist/core/workflow/query/query-note-creator.d.ts +13 -0
  384. package/dist/core/workflow/query/query-note-creator.d.ts.map +1 -0
  385. package/dist/core/workflow/query/query-note-creator.js +168 -0
  386. package/dist/core/workflow/query/query-note-creator.js.map +1 -0
  387. package/dist/core/workflow/query/query-search.d.ts +19 -0
  388. package/dist/core/workflow/query/query-search.d.ts.map +1 -0
  389. package/dist/core/workflow/query/query-search.js +252 -0
  390. package/dist/core/workflow/query/query-search.js.map +1 -0
  391. package/dist/core/workflow/query/query.d.ts +18 -0
  392. package/dist/core/workflow/query/query.d.ts.map +1 -0
  393. package/dist/core/workflow/query/query.js +29 -0
  394. package/dist/core/workflow/query/query.js.map +1 -0
  395. package/dist/core/workflow/query/types.d.ts +67 -0
  396. package/dist/core/workflow/query/types.d.ts.map +1 -0
  397. package/dist/core/workflow/query/types.js +2 -0
  398. package/dist/core/workflow/query/types.js.map +1 -0
  399. package/dist/core/workflow/verify/coherence.d.ts +30 -0
  400. package/dist/core/workflow/verify/coherence.d.ts.map +1 -0
  401. package/dist/core/workflow/verify/coherence.js +206 -0
  402. package/dist/core/workflow/verify/coherence.js.map +1 -0
  403. package/dist/core/workflow/verify/completeness.d.ts +24 -0
  404. package/dist/core/workflow/verify/completeness.d.ts.map +1 -0
  405. package/dist/core/workflow/verify/completeness.js +172 -0
  406. package/dist/core/workflow/verify/completeness.js.map +1 -0
  407. package/dist/core/workflow/verify/correctness.d.ts +38 -0
  408. package/dist/core/workflow/verify/correctness.d.ts.map +1 -0
  409. package/dist/core/workflow/verify/correctness.js +352 -0
  410. package/dist/core/workflow/verify/correctness.js.map +1 -0
  411. package/dist/core/workflow/verify/index.d.ts +7 -0
  412. package/dist/core/workflow/verify/index.d.ts.map +1 -0
  413. package/dist/core/workflow/verify/index.js +6 -0
  414. package/dist/core/workflow/verify/index.js.map +1 -0
  415. package/dist/core/workflow/verify/vault-integrity.d.ts +45 -0
  416. package/dist/core/workflow/verify/vault-integrity.d.ts.map +1 -0
  417. package/dist/core/workflow/verify/vault-integrity.js +141 -0
  418. package/dist/core/workflow/verify/vault-integrity.js.map +1 -0
  419. package/dist/core/workflow/verify/verify.d.ts +23 -0
  420. package/dist/core/workflow/verify/verify.d.ts.map +1 -0
  421. package/dist/core/workflow/verify/verify.js +122 -0
  422. package/dist/core/workflow/verify/verify.js.map +1 -0
  423. package/dist/index.d.ts +10 -0
  424. package/dist/index.d.ts.map +1 -0
  425. package/dist/index.js +2 -0
  426. package/dist/index.js.map +1 -0
  427. package/dist/types/delta.d.ts +17 -0
  428. package/dist/types/delta.d.ts.map +1 -0
  429. package/dist/types/delta.js +2 -0
  430. package/dist/types/delta.js.map +1 -0
  431. package/dist/types/frontmatter.d.ts +51 -0
  432. package/dist/types/frontmatter.d.ts.map +1 -0
  433. package/dist/types/frontmatter.js +2 -0
  434. package/dist/types/frontmatter.js.map +1 -0
  435. package/dist/types/index-record.d.ts +46 -0
  436. package/dist/types/index-record.d.ts.map +1 -0
  437. package/dist/types/index-record.js +2 -0
  438. package/dist/types/index-record.js.map +1 -0
  439. package/dist/types/index.d.ts +11 -0
  440. package/dist/types/index.d.ts.map +1 -0
  441. package/dist/types/index.js +2 -0
  442. package/dist/types/index.js.map +1 -0
  443. package/dist/types/next-action.d.ts +10 -0
  444. package/dist/types/next-action.d.ts.map +1 -0
  445. package/dist/types/next-action.js +2 -0
  446. package/dist/types/next-action.js.map +1 -0
  447. package/dist/types/notes.d.ts +9 -0
  448. package/dist/types/notes.d.ts.map +1 -0
  449. package/dist/types/notes.js +2 -0
  450. package/dist/types/notes.js.map +1 -0
  451. package/dist/types/requirement.d.ts +19 -0
  452. package/dist/types/requirement.d.ts.map +1 -0
  453. package/dist/types/requirement.js +2 -0
  454. package/dist/types/requirement.js.map +1 -0
  455. package/dist/types/retrieval.d.ts +32 -0
  456. package/dist/types/retrieval.d.ts.map +1 -0
  457. package/dist/types/retrieval.js +2 -0
  458. package/dist/types/retrieval.js.map +1 -0
  459. package/dist/types/sequencing.d.ts +83 -0
  460. package/dist/types/sequencing.d.ts.map +1 -0
  461. package/dist/types/sequencing.js +2 -0
  462. package/dist/types/sequencing.js.map +1 -0
  463. package/dist/types/task.d.ts +7 -0
  464. package/dist/types/task.d.ts.map +1 -0
  465. package/dist/types/task.js +2 -0
  466. package/dist/types/task.js.map +1 -0
  467. package/dist/types/verify.d.ts +23 -0
  468. package/dist/types/verify.d.ts.map +1 -0
  469. package/dist/types/verify.js +2 -0
  470. package/dist/types/verify.js.map +1 -0
  471. package/dist/utils/hash.d.ts +6 -0
  472. package/dist/utils/hash.d.ts.map +1 -0
  473. package/dist/utils/hash.js +9 -0
  474. package/dist/utils/hash.js.map +1 -0
  475. package/dist/utils/id-generator.d.ts +17 -0
  476. package/dist/utils/id-generator.d.ts.map +1 -0
  477. package/dist/utils/id-generator.js +24 -0
  478. package/dist/utils/id-generator.js.map +1 -0
  479. package/dist/utils/index.d.ts +4 -0
  480. package/dist/utils/index.d.ts.map +1 -0
  481. package/dist/utils/index.js +4 -0
  482. package/dist/utils/index.js.map +1 -0
  483. package/dist/utils/normalize.d.ts +11 -0
  484. package/dist/utils/normalize.d.ts.map +1 -0
  485. package/dist/utils/normalize.js +15 -0
  486. package/dist/utils/normalize.js.map +1 -0
  487. package/package.json +61 -0
@@ -0,0 +1,169 @@
1
+ import { DEFAULT_WEIGHTS } from './constants.js';
2
+ import { findSystemByTerm, isActiveChangeStatus } from './helpers.js';
3
+ /**
4
+ * Score all candidates using the 9-signal additive model (section 9.1).
5
+ */
6
+ export function scoreCandidates(candidateIds, query, index, weights = DEFAULT_WEIGHTS) {
7
+ const allTerms = [...query.feature_terms, ...query.system_terms, ...query.entity_terms];
8
+ const searchTerms = allTerms.map((t) => t.toLowerCase());
9
+ const summaryLower = query.summary.toLowerCase();
10
+ const scored = [];
11
+ for (const id of candidateIds) {
12
+ const record = index.records.get(id);
13
+ if (!record)
14
+ continue;
15
+ const signals = [];
16
+ // Signal 1: Exact title match
17
+ const titleLower = record.title.toLowerCase();
18
+ if (titleLower === summaryLower || searchTerms.some((t) => titleLower === t)) {
19
+ signals.push({
20
+ signal: 'exact_title',
21
+ points: weights.exact_title,
22
+ reason: `exact title match: "${record.title}"`,
23
+ });
24
+ }
25
+ // Signal 2: Alias match (at most once)
26
+ for (const alias of record.aliases) {
27
+ const aliasLower = alias.toLowerCase();
28
+ if (searchTerms.some((t) => aliasLower.includes(t))) {
29
+ signals.push({
30
+ signal: 'alias_match',
31
+ points: weights.alias_match,
32
+ reason: `alias match: ${alias}`,
33
+ });
34
+ break;
35
+ }
36
+ }
37
+ // Signal 3: Same system match (at most once)
38
+ const systemRecords = query.system_terms.flatMap((t) => findSystemByTerm(t, index));
39
+ const systemIds = systemRecords.map((r) => r.id);
40
+ for (const sysId of systemIds) {
41
+ if (record.systems.includes(sysId)) {
42
+ const sysRecord = index.records.get(sysId);
43
+ signals.push({
44
+ signal: 'same_system',
45
+ points: weights.same_system,
46
+ reason: `same system: ${sysRecord?.title ?? sysId}`,
47
+ });
48
+ break;
49
+ }
50
+ }
51
+ // Signal 4: Same feature link match (bidirectional)
52
+ if (record.type === 'change') {
53
+ const featureTarget = record.feature ?? null;
54
+ const featureTargets = record.features ?? [];
55
+ const allTargets = featureTarget ? [featureTarget, ...featureTargets] : featureTargets;
56
+ for (const fid of allTargets) {
57
+ if (candidateIds.has(fid)) {
58
+ signals.push({
59
+ signal: 'same_feature_link',
60
+ points: weights.same_feature_link,
61
+ reason: `same feature link: ${index.records.get(fid)?.title ?? fid}`,
62
+ });
63
+ break;
64
+ }
65
+ }
66
+ }
67
+ else if (record.type === 'feature') {
68
+ for (const otherId of candidateIds) {
69
+ const otherRecord = index.records.get(otherId);
70
+ if (!otherRecord || otherRecord.type !== 'change')
71
+ continue;
72
+ const otherTargets = otherRecord.feature
73
+ ? [otherRecord.feature, ...(otherRecord.features ?? [])]
74
+ : (otherRecord.features ?? []);
75
+ if (otherTargets.includes(record.id)) {
76
+ signals.push({
77
+ signal: 'same_feature_link',
78
+ points: weights.same_feature_link,
79
+ reason: `same feature link: targeted by ${otherRecord.title ?? otherId}`,
80
+ });
81
+ break;
82
+ }
83
+ }
84
+ }
85
+ // Signal 5: Active change overlap
86
+ if (record.type === 'feature') {
87
+ const activeChanges = record.changes
88
+ .map((cid) => index.records.get(cid))
89
+ .filter((c) => c && isActiveChangeStatus(c.status));
90
+ if (activeChanges.length > 0) {
91
+ signals.push({
92
+ signal: 'active_change_overlap',
93
+ points: weights.active_change_overlap,
94
+ reason: `active change overlap: ${activeChanges.map((c) => c.title).join(', ')}`,
95
+ });
96
+ }
97
+ }
98
+ else if (record.type === 'change' && isActiveChangeStatus(record.status)) {
99
+ signals.push({
100
+ signal: 'active_change_overlap',
101
+ points: weights.active_change_overlap,
102
+ reason: `active change: ${record.title}`,
103
+ });
104
+ }
105
+ // Signal 6: Shared source (at most once)
106
+ for (const srcId of record.sources) {
107
+ const srcRecord = index.records.get(srcId);
108
+ if (srcRecord && searchTerms.some((t) => srcRecord.title.toLowerCase().includes(t))) {
109
+ signals.push({
110
+ signal: 'shared_source',
111
+ points: weights.shared_source,
112
+ reason: `shared source: ${srcRecord.title}`,
113
+ });
114
+ break;
115
+ }
116
+ }
117
+ // Signal 7: Shared decision (at most once)
118
+ for (const decId of record.decisions) {
119
+ const decRecord = index.records.get(decId);
120
+ if (decRecord && searchTerms.some((t) => decRecord.title.toLowerCase().includes(t))) {
121
+ signals.push({
122
+ signal: 'shared_decision',
123
+ points: weights.shared_decision,
124
+ reason: `shared decision: ${decRecord.title}`,
125
+ });
126
+ break;
127
+ }
128
+ }
129
+ // Signal 8: Backlink / shared-link proximity
130
+ const sharedLinks = record.links_out.filter((lid) => candidateIds.has(lid) && lid !== id);
131
+ const sharedBacklinks = record.links_in.filter((lid) => candidateIds.has(lid) && lid !== id);
132
+ if (sharedLinks.length + sharedBacklinks.length >= 2) {
133
+ signals.push({
134
+ signal: 'backlink_proximity',
135
+ points: weights.backlink_proximity,
136
+ reason: `backlink proximity: ${sharedLinks.length + sharedBacklinks.length} shared links`,
137
+ });
138
+ }
139
+ // Signal 9: Full-text match
140
+ const textLower = record.raw_text.toLowerCase();
141
+ const matchedTerms = searchTerms.filter((t) => textLower.includes(t));
142
+ if (matchedTerms.length >= 2 || (matchedTerms.length === 1 && searchTerms.length === 1)) {
143
+ signals.push({
144
+ signal: 'full_text_match',
145
+ points: weights.full_text_match,
146
+ reason: `strong full-text hit: ${matchedTerms.join(', ')}`,
147
+ });
148
+ }
149
+ // Compute total score
150
+ let totalScore = signals.reduce((sum, s) => sum + s.points, 0);
151
+ // Status bias bonus (minor tiebreaker)
152
+ if (query.status_bias.includes(record.status)) {
153
+ totalScore += 5;
154
+ }
155
+ if (totalScore > 0) {
156
+ scored.push({
157
+ id: record.id,
158
+ type: record.type,
159
+ title: record.title,
160
+ score: totalScore,
161
+ reasons: signals.map((s) => s.reason),
162
+ });
163
+ }
164
+ }
165
+ // Sort by score descending, then by title ascending for determinism
166
+ scored.sort((a, b) => b.score - a.score || a.title.localeCompare(b.title));
167
+ return scored;
168
+ }
169
+ //# sourceMappingURL=scoring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoring.js","sourceRoot":"","sources":["../../../src/core/retrieval/scoring.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { ScoredCandidate } from '../../types/retrieval.js';
2
+ import type { VaultIndex } from '../../types/index-record.js';
3
+ /**
4
+ * Internal warning representation with structured details.
5
+ */
6
+ export interface RetrievalWarning {
7
+ type: string;
8
+ message: string;
9
+ details?: Record<string, unknown>;
10
+ }
11
+ /**
12
+ * Collect warnings from index and retrieval-specific concerns.
13
+ * Returns internal RetrievalWarning objects; the pipeline serializes to string[].
14
+ */
15
+ export declare function collectWarnings(index: VaultIndex, candidates: ScoredCandidate[]): RetrievalWarning[];
16
+ //# sourceMappingURL=warnings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warnings.d.ts","sourceRoot":"","sources":["../../../src/core/retrieval/warnings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAG9D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,UAAU,EACjB,UAAU,EAAE,eAAe,EAAE,GAC5B,gBAAgB,EAAE,CAyEpB"}
@@ -0,0 +1,73 @@
1
+ import { isActiveChangeStatus } from './helpers.js';
2
+ /**
3
+ * Collect warnings from index and retrieval-specific concerns.
4
+ * Returns internal RetrievalWarning objects; the pipeline serializes to string[].
5
+ */
6
+ export function collectWarnings(index, candidates) {
7
+ const warnings = [];
8
+ // Pass through relevant index warnings
9
+ for (const w of index.warnings) {
10
+ if (w.type === 'duplicate_id') {
11
+ warnings.push({
12
+ type: 'duplicate_id',
13
+ message: w.message,
14
+ });
15
+ }
16
+ }
17
+ // Unresolved wikilinks involving candidates
18
+ const candidateIds = new Set(candidates.map((c) => c.id));
19
+ const candidatePaths = new Set();
20
+ for (const c of candidates) {
21
+ const record = index.records.get(c.id);
22
+ if (record)
23
+ candidatePaths.add(record.path);
24
+ }
25
+ for (const w of index.warnings) {
26
+ if (w.type === 'unresolved_wikilink' && candidatePaths.has(w.note_path)) {
27
+ warnings.push({
28
+ type: 'unresolved_wikilink',
29
+ message: w.message,
30
+ });
31
+ }
32
+ if (w.type === 'ambiguous_alias' && candidatePaths.has(w.note_path)) {
33
+ warnings.push({
34
+ type: 'ambiguous_alias',
35
+ message: w.message,
36
+ });
37
+ }
38
+ }
39
+ // Schema mismatch
40
+ if (index.schema_version === 'unknown') {
41
+ warnings.push({
42
+ type: 'schema_mismatch',
43
+ message: 'No schema.md found or schema_version is missing',
44
+ });
45
+ }
46
+ // Active change touch-surface collision
47
+ const activeChangeCandidates = candidates.filter((c) => c.type === 'change' && isActiveChangeStatus(index.records.get(c.id)?.status ?? ''));
48
+ for (let i = 0; i < activeChangeCandidates.length; i++) {
49
+ for (let j = i + 1; j < activeChangeCandidates.length; j++) {
50
+ const recA = index.records.get(activeChangeCandidates[i].id);
51
+ const recB = index.records.get(activeChangeCandidates[j].id);
52
+ if (!recA || !recB)
53
+ continue;
54
+ const sharedTouches = recA.touches.filter((t) => recB.touches.includes(t));
55
+ if (sharedTouches.length > 0) {
56
+ const hasDependency = recA.depends_on.includes(recB.id) || recB.depends_on.includes(recA.id);
57
+ if (!hasDependency) {
58
+ warnings.push({
59
+ type: 'active_change_touch_collision',
60
+ message: `Active changes "${recA.id}" and "${recB.id}" touch the same surface (${sharedTouches.join(', ')}) without explicit dependency`,
61
+ details: {
62
+ change_a: recA.id,
63
+ change_b: recB.id,
64
+ shared_surfaces: sharedTouches,
65
+ },
66
+ });
67
+ }
68
+ }
69
+ }
70
+ }
71
+ return warnings;
72
+ }
73
+ //# sourceMappingURL=warnings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warnings.js","sourceRoot":"","sources":["../../../src/core/retrieval/warnings.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAWpD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAiB,EACjB,UAA6B;IAE7B,MAAM,QAAQ,GAAuB,EAAE,CAAC;IAExC,uCAAuC;IACvC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1D,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,MAAM;YAAE,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAqB,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;YACxE,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,qBAAqB;gBAC3B,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;YACpE,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,iBAAiB;gBACvB,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACvC,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE,iDAAiD;SAC3D,CAAC,CAAC;IACL,CAAC;IAED,wCAAwC;IACxC,MAAM,sBAAsB,GAAG,UAAU,CAAC,MAAM,CAC9C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,CAC1F,CAAC;IACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,sBAAsB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvD,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,sBAAsB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7D,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;gBAAE,SAAS;YAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3E,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,aAAa,GACjB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACzE,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,+BAA+B;wBACrC,OAAO,EAAE,mBAAmB,IAAI,CAAC,EAAE,UAAU,IAAI,CAAC,EAAE,6BAA6B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,+BAA+B;wBACxI,OAAO,EAAE;4BACP,QAAQ,EAAE,IAAI,CAAC,EAAE;4BACjB,QAAQ,EAAE,IAAI,CAAC,EAAE;4BACjB,eAAe,EAAE,aAAa;yBAC/B;qBACF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { z } from 'zod';
2
+ export declare const NoteTypeEnum: z.ZodEnum<["feature", "change", "system", "decision", "source", "query"]>;
3
+ export type NoteType = z.infer<typeof NoteTypeEnum>;
4
+ export declare const NoteStatusEnum: z.ZodEnum<["active", "deprecated", "draft", "archived", "proposed", "planned", "in_progress", "applied"]>;
5
+ export declare const ChangeStatusEnum: z.ZodEnum<["proposed", "planned", "in_progress", "applied"]>;
6
+ export declare const FeatureStatusEnum: z.ZodEnum<["active", "deprecated"]>;
7
+ export declare const GeneralStatusEnum: z.ZodEnum<["active", "draft", "archived"]>;
8
+ /** Reusable wikilink reference validator */
9
+ export declare const WikilinkRefSchema: z.ZodString;
10
+ /**
11
+ * Base frontmatter shared by all note types.
12
+ * Follows 00-unified-types.md BaseFrontmatter.
13
+ */
14
+ export declare const BaseFrontmatterSchema: z.ZodObject<{
15
+ type: z.ZodEnum<["feature", "change", "system", "decision", "source", "query"]>;
16
+ id: z.ZodString;
17
+ status: z.ZodEnum<["active", "deprecated", "draft", "archived", "proposed", "planned", "in_progress", "applied"]>;
18
+ tags: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
19
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
20
+ type: z.ZodEnum<["feature", "change", "system", "decision", "source", "query"]>;
21
+ id: z.ZodString;
22
+ status: z.ZodEnum<["active", "deprecated", "draft", "archived", "proposed", "planned", "in_progress", "applied"]>;
23
+ tags: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
24
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
25
+ type: z.ZodEnum<["feature", "change", "system", "decision", "source", "query"]>;
26
+ id: z.ZodString;
27
+ status: z.ZodEnum<["active", "deprecated", "draft", "archived", "proposed", "planned", "in_progress", "applied"]>;
28
+ tags: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
29
+ }, z.ZodTypeAny, "passthrough">>;
30
+ export type BaseFrontmatter = z.infer<typeof BaseFrontmatterSchema>;
31
+ //# sourceMappingURL=base.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.schema.d.ts","sourceRoot":"","sources":["../../../src/core/schema/base.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,YAAY,2EAEvB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAEpD,eAAO,MAAM,cAAc,2GASzB,CAAC;AAEH,eAAO,MAAM,gBAAgB,8DAA4D,CAAC;AAC1F,eAAO,MAAM,iBAAiB,qCAAmC,CAAC;AAClE,eAAO,MAAM,iBAAiB,4CAA0C,CAAC;AAEzE,4CAA4C;AAC5C,eAAO,MAAM,iBAAiB,aAAiE,CAAC;AAEhG;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;gCAOlB,CAAC;AAEjB,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { z } from 'zod';
2
+ export const NoteTypeEnum = z.enum([
3
+ 'feature', 'change', 'system', 'decision', 'source', 'query',
4
+ ]);
5
+ export const NoteStatusEnum = z.enum([
6
+ 'active',
7
+ 'deprecated',
8
+ 'draft',
9
+ 'archived',
10
+ 'proposed',
11
+ 'planned',
12
+ 'in_progress',
13
+ 'applied',
14
+ ]);
15
+ export const ChangeStatusEnum = z.enum(['proposed', 'planned', 'in_progress', 'applied']);
16
+ export const FeatureStatusEnum = z.enum(['active', 'deprecated']);
17
+ export const GeneralStatusEnum = z.enum(['active', 'draft', 'archived']);
18
+ /** Reusable wikilink reference validator */
19
+ export const WikilinkRefSchema = z.string().regex(/^\[\[.+\]\]$/, 'Must be a wikilink [[...]]');
20
+ /**
21
+ * Base frontmatter shared by all note types.
22
+ * Follows 00-unified-types.md BaseFrontmatter.
23
+ */
24
+ export const BaseFrontmatterSchema = z.object({
25
+ type: NoteTypeEnum,
26
+ id: z.string()
27
+ .min(1, 'id is required')
28
+ .regex(/^[a-z0-9-]+$/, 'id must be lowercase alphanumeric with hyphens'),
29
+ status: NoteStatusEnum,
30
+ tags: z.array(z.string()).default([]),
31
+ }).passthrough();
32
+ //# sourceMappingURL=base.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.schema.js","sourceRoot":"","sources":["../../../src/core/schema/base.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC;IACjC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO;CAC7D,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC;IACnC,QAAQ;IACR,YAAY;IACZ,OAAO;IACP,UAAU;IACV,UAAU;IACV,SAAS;IACT,aAAa;IACb,SAAS;CACV,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;AAC1F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;AAClE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;AAEzE,4CAA4C;AAC5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,4BAA4B,CAAC,CAAC;AAEhG;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,YAAY;IAClB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;SACX,GAAG,CAAC,CAAC,EAAE,gBAAgB,CAAC;SACxB,KAAK,CAAC,cAAc,EAAE,gDAAgD,CAAC;IAC1E,MAAM,EAAE,cAAc;IACtB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACtC,CAAC,CAAC,WAAW,EAAE,CAAC"}
@@ -0,0 +1,96 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Change frontmatter schema.
4
+ * Follows 00-unified-types.md ChangeFrontmatter.
5
+ *
6
+ * Serialization rules (overview 13.2):
7
+ * - Single-feature: `feature: "[[Feature: Auth Login]]"` (scalar)
8
+ * - Multi-feature: `features: ["[[Feature: A]]", "[[Feature: B]]"]` (array, min 2)
9
+ * - Never both, never neither
10
+ */
11
+ export declare const ChangeFrontmatterSchema: z.ZodEffects<z.ZodObject<{
12
+ id: z.ZodString;
13
+ tags: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
14
+ } & {
15
+ type: z.ZodLiteral<"change">;
16
+ status: z.ZodEnum<["proposed", "planned", "in_progress", "applied"]>;
17
+ created_at: z.ZodString;
18
+ feature: z.ZodOptional<z.ZodString>;
19
+ features: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
20
+ depends_on: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
21
+ touches: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
22
+ systems: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
23
+ sources: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
24
+ decisions: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
25
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
26
+ id: z.ZodString;
27
+ tags: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
28
+ } & {
29
+ type: z.ZodLiteral<"change">;
30
+ status: z.ZodEnum<["proposed", "planned", "in_progress", "applied"]>;
31
+ created_at: z.ZodString;
32
+ feature: z.ZodOptional<z.ZodString>;
33
+ features: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
34
+ depends_on: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
35
+ touches: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
36
+ systems: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
37
+ sources: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
38
+ decisions: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
39
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
40
+ id: z.ZodString;
41
+ tags: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
42
+ } & {
43
+ type: z.ZodLiteral<"change">;
44
+ status: z.ZodEnum<["proposed", "planned", "in_progress", "applied"]>;
45
+ created_at: z.ZodString;
46
+ feature: z.ZodOptional<z.ZodString>;
47
+ features: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
48
+ depends_on: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
49
+ touches: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
50
+ systems: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
51
+ sources: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
52
+ decisions: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
53
+ }, z.ZodTypeAny, "passthrough">>, z.objectOutputType<{
54
+ id: z.ZodString;
55
+ tags: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
56
+ } & {
57
+ type: z.ZodLiteral<"change">;
58
+ status: z.ZodEnum<["proposed", "planned", "in_progress", "applied"]>;
59
+ created_at: z.ZodString;
60
+ feature: z.ZodOptional<z.ZodString>;
61
+ features: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
62
+ depends_on: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
63
+ touches: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
64
+ systems: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
65
+ sources: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
66
+ decisions: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
67
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
68
+ id: z.ZodString;
69
+ tags: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
70
+ } & {
71
+ type: z.ZodLiteral<"change">;
72
+ status: z.ZodEnum<["proposed", "planned", "in_progress", "applied"]>;
73
+ created_at: z.ZodString;
74
+ feature: z.ZodOptional<z.ZodString>;
75
+ features: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
76
+ depends_on: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
77
+ touches: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
78
+ systems: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
79
+ sources: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
80
+ decisions: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
81
+ }, z.ZodTypeAny, "passthrough">>;
82
+ export type ChangeFrontmatter = z.infer<typeof ChangeFrontmatterSchema>;
83
+ export declare const CHANGE_REQUIRED_SECTIONS: readonly ["Why", "Delta Summary", "Proposed Update", "Impact", "Tasks", "Validation"];
84
+ export declare const CHANGE_SOFT_SECTIONS: readonly ["Design Approach"];
85
+ export declare const CHANGE_OPTIONAL_SECTIONS: readonly ["Status Notes"];
86
+ /** Status transitions allowed for Change notes */
87
+ export declare const CHANGE_STATUS_TRANSITIONS: Record<string, string[]>;
88
+ /**
89
+ * Hard prerequisites for proposed -> planned transition (overview 15):
90
+ */
91
+ export declare const PLANNED_HARD_PREREQUISITES: readonly ["Why", "Delta Summary", "Tasks", "Validation"];
92
+ /**
93
+ * Soft prerequisites for proposed -> planned (warning only):
94
+ */
95
+ export declare const PLANNED_SOFT_PREREQUISITES: readonly ["Design Approach"];
96
+ //# sourceMappingURL=change.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change.schema.d.ts","sourceRoot":"","sources":["../../../src/core/schema/change.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAkBnC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,wBAAwB,uFAO3B,CAAC;AAEX,eAAO,MAAM,oBAAoB,8BAEvB,CAAC;AAEX,eAAO,MAAM,wBAAwB,2BAE3B,CAAC;AAEX,kDAAkD;AAClD,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAK9D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,0DAK7B,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,0BAA0B,8BAE7B,CAAC"}
@@ -0,0 +1,64 @@
1
+ import { z } from 'zod';
2
+ import { BaseFrontmatterSchema, ChangeStatusEnum, WikilinkRefSchema } from './base.schema.js';
3
+ /**
4
+ * Change frontmatter schema.
5
+ * Follows 00-unified-types.md ChangeFrontmatter.
6
+ *
7
+ * Serialization rules (overview 13.2):
8
+ * - Single-feature: `feature: "[[Feature: Auth Login]]"` (scalar)
9
+ * - Multi-feature: `features: ["[[Feature: A]]", "[[Feature: B]]"]` (array, min 2)
10
+ * - Never both, never neither
11
+ */
12
+ export const ChangeFrontmatterSchema = BaseFrontmatterSchema.extend({
13
+ type: z.literal('change'),
14
+ status: ChangeStatusEnum,
15
+ created_at: z.string().regex(/^\d{4}-\d{2}-\d{2}$/, 'created_at must be ISO date YYYY-MM-DD'),
16
+ feature: WikilinkRefSchema.optional(),
17
+ features: z.array(WikilinkRefSchema).min(2).optional(),
18
+ depends_on: z.array(WikilinkRefSchema).default([]),
19
+ touches: z.array(WikilinkRefSchema).default([]),
20
+ systems: z.array(WikilinkRefSchema).default([]),
21
+ sources: z.array(WikilinkRefSchema).default([]),
22
+ decisions: z.array(WikilinkRefSchema).default([]),
23
+ }).refine((data) => {
24
+ const hasFeature = data.feature !== undefined;
25
+ const hasFeatures = data.features !== undefined && data.features.length > 0;
26
+ return hasFeature !== hasFeatures;
27
+ }, 'Must have exactly one of feature (scalar) or features (array), not both and not neither');
28
+ export const CHANGE_REQUIRED_SECTIONS = [
29
+ 'Why',
30
+ 'Delta Summary',
31
+ 'Proposed Update',
32
+ 'Impact',
33
+ 'Tasks',
34
+ 'Validation',
35
+ ];
36
+ export const CHANGE_SOFT_SECTIONS = [
37
+ 'Design Approach',
38
+ ];
39
+ export const CHANGE_OPTIONAL_SECTIONS = [
40
+ 'Status Notes',
41
+ ];
42
+ /** Status transitions allowed for Change notes */
43
+ export const CHANGE_STATUS_TRANSITIONS = {
44
+ proposed: ['planned'],
45
+ planned: ['in_progress'],
46
+ in_progress: ['applied'],
47
+ applied: [],
48
+ };
49
+ /**
50
+ * Hard prerequisites for proposed -> planned transition (overview 15):
51
+ */
52
+ export const PLANNED_HARD_PREREQUISITES = [
53
+ 'Why',
54
+ 'Delta Summary',
55
+ 'Tasks',
56
+ 'Validation',
57
+ ];
58
+ /**
59
+ * Soft prerequisites for proposed -> planned (warning only):
60
+ */
61
+ export const PLANNED_SOFT_PREREQUISITES = [
62
+ 'Design Approach',
63
+ ];
64
+ //# sourceMappingURL=change.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"change.schema.js","sourceRoot":"","sources":["../../../src/core/schema/change.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE9F;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,qBAAqB,CAAC,MAAM,CAAC;IAClE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACzB,MAAM,EAAE,gBAAgB;IACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,EAAE,wCAAwC,CAAC;IAC7F,OAAO,EAAE,iBAAiB,CAAC,QAAQ,EAAE;IACrC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACtD,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAClD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/C,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAClD,CAAC,CAAC,MAAM,CACP,CAAC,IAAI,EAAE,EAAE;IACP,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5E,OAAO,UAAU,KAAK,WAAW,CAAC;AACpC,CAAC,EACD,yFAAyF,CAC1F,CAAC;AAIF,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,KAAK;IACL,eAAe;IACf,iBAAiB;IACjB,QAAQ;IACR,OAAO;IACP,YAAY;CACJ,CAAC;AAEX,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,iBAAiB;CACT,CAAC;AAEX,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,cAAc;CACN,CAAC;AAEX,kDAAkD;AAClD,MAAM,CAAC,MAAM,yBAAyB,GAA6B;IACjE,QAAQ,EAAE,CAAC,SAAS,CAAC;IACrB,OAAO,EAAE,CAAC,aAAa,CAAC;IACxB,WAAW,EAAE,CAAC,SAAS,CAAC;IACxB,OAAO,EAAE,EAAE;CACZ,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,KAAK;IACL,eAAe;IACf,OAAO;IACP,YAAY;CACJ,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,iBAAiB;CACT,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { z } from 'zod';
2
+ /**
3
+ * Decision frontmatter schema.
4
+ * Follows 00-unified-types.md DecisionFrontmatter.
5
+ */
6
+ export declare const DecisionFrontmatterSchema: z.ZodObject<{
7
+ id: z.ZodString;
8
+ tags: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
9
+ } & {
10
+ type: z.ZodLiteral<"decision">;
11
+ status: z.ZodEnum<["active", "draft", "archived"]>;
12
+ features: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
13
+ changes: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
14
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
15
+ id: z.ZodString;
16
+ tags: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
17
+ } & {
18
+ type: z.ZodLiteral<"decision">;
19
+ status: z.ZodEnum<["active", "draft", "archived"]>;
20
+ features: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
21
+ changes: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
22
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
23
+ id: z.ZodString;
24
+ tags: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
25
+ } & {
26
+ type: z.ZodLiteral<"decision">;
27
+ status: z.ZodEnum<["active", "draft", "archived"]>;
28
+ features: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
29
+ changes: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
30
+ }, z.ZodTypeAny, "passthrough">>;
31
+ export type DecisionFrontmatter = z.infer<typeof DecisionFrontmatterSchema>;
32
+ export declare const DECISION_REQUIRED_SECTIONS: readonly ["Context", "Options Considered", "Decision", "Consequences"];
33
+ //# sourceMappingURL=decision.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decision.schema.d.ts","sourceRoot":"","sources":["../../../src/core/schema/decision.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;GAGG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;gCAKpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,eAAO,MAAM,0BAA0B,wEAK7B,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { z } from 'zod';
2
+ import { BaseFrontmatterSchema, GeneralStatusEnum, WikilinkRefSchema } from './base.schema.js';
3
+ /**
4
+ * Decision frontmatter schema.
5
+ * Follows 00-unified-types.md DecisionFrontmatter.
6
+ */
7
+ export const DecisionFrontmatterSchema = BaseFrontmatterSchema.extend({
8
+ type: z.literal('decision'),
9
+ status: GeneralStatusEnum,
10
+ features: z.array(WikilinkRefSchema).default([]),
11
+ changes: z.array(WikilinkRefSchema).default([]),
12
+ });
13
+ export const DECISION_REQUIRED_SECTIONS = [
14
+ 'Context',
15
+ 'Options Considered',
16
+ 'Decision',
17
+ 'Consequences',
18
+ ];
19
+ //# sourceMappingURL=decision.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decision.schema.js","sourceRoot":"","sources":["../../../src/core/schema/decision.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE/F;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,qBAAqB,CAAC,MAAM,CAAC;IACpE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAC3B,MAAM,EAAE,iBAAiB;IACzB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAChD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAChD,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,SAAS;IACT,oBAAoB;IACpB,UAAU;IACV,cAAc;CACN,CAAC"}