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,302 @@
1
+ import { join, basename, resolve } from 'node:path';
2
+ import { parseDeltaSummary, validateDeltaConflicts } from './delta-parser.js';
3
+ import { detectStale, computeRequirementHash } from './stale-checker.js';
4
+ import { applyDeltaToFeature } from './feature-updater.js';
5
+ const PROGRAMMATIC_OPS = new Set(['RENAMED', 'REMOVED']);
6
+ const AGENT_DRIVEN_OPS = new Set(['MODIFIED', 'ADDED']);
7
+ function getAtomicPriority(op) {
8
+ switch (op) {
9
+ case 'RENAMED': return 1;
10
+ case 'REMOVED': return 2;
11
+ case 'MODIFIED': return 3;
12
+ case 'ADDED': return 4;
13
+ }
14
+ }
15
+ /**
16
+ * Main apply workflow using a TWO-PHASE COMMIT pattern.
17
+ *
18
+ * Phase 1 (Validate & Compute -- no disk writes):
19
+ * 1-9. Parse, validate, stale-check, pre-validate, compute
20
+ *
21
+ * Phase 2 (Write -- only if Phase 1 passes):
22
+ * 10-11. Write files, transition status
23
+ */
24
+ export function applyChange(options, index, deps) {
25
+ const warnings = [];
26
+ const errors = [];
27
+ // 1. Load Change note
28
+ const changeRecord = index.records.get(options.changeId);
29
+ if (!changeRecord) {
30
+ throw new Error(`Change "${options.changeId}" not found in index`);
31
+ }
32
+ const resolvedChangePath = resolve(options.vaultRoot, changeRecord.path);
33
+ const parsed = deps.parseNote(resolvedChangePath);
34
+ // Verify status
35
+ if (changeRecord.status !== 'in_progress') {
36
+ throw new Error(`Cannot apply change with status "${changeRecord.status}". ` +
37
+ 'Expected "in_progress". Use \'continue\' to advance through the status lifecycle first.');
38
+ }
39
+ // Check all tasks complete
40
+ const uncheckedTasks = parsed.tasks.filter((t) => !t.done);
41
+ if (uncheckedTasks.length > 0) {
42
+ throw new Error(`Cannot apply: ${uncheckedTasks.length} unchecked task(s) remaining. ` +
43
+ 'Complete all tasks via \'continue\' before applying.');
44
+ }
45
+ // 2. Parse Delta Summary
46
+ const resolveWikilink = (target) => {
47
+ // Simple lookup by title
48
+ for (const record of index.records.values()) {
49
+ if (record.title === target || record.id === target) {
50
+ return record.id;
51
+ }
52
+ }
53
+ return undefined;
54
+ };
55
+ const deltaPlan = parseDeltaSummary(parsed, resolveWikilink);
56
+ warnings.push(...deltaPlan.warnings);
57
+ if (deltaPlan.entries.length === 0) {
58
+ return makeResult(options, changeRecord, {
59
+ success: false,
60
+ errors: ['No Delta Summary entries found. Nothing to apply.'],
61
+ warnings,
62
+ });
63
+ }
64
+ // Validate delta conflicts
65
+ const conflictErrors = validateDeltaConflicts(deltaPlan);
66
+ if (conflictErrors.length > 0) {
67
+ return makeResult(options, changeRecord, { success: false, errors: conflictErrors, warnings });
68
+ }
69
+ // 3. Build feature requirements maps
70
+ const featureRequirements = new Map();
71
+ for (const [noteKey] of deltaPlan.byTargetNote) {
72
+ const noteRecord = index.records.get(noteKey);
73
+ if (!noteRecord) {
74
+ errors.push(`Target note "${noteKey}" not found in index`);
75
+ continue;
76
+ }
77
+ const noteParsed = deps.parseNote(resolve(options.vaultRoot, noteRecord.path));
78
+ const reqMap = new Map();
79
+ for (const req of noteParsed.requirements) {
80
+ reqMap.set(req.name, req);
81
+ }
82
+ featureRequirements.set(noteKey, reqMap);
83
+ }
84
+ if (errors.length > 0) {
85
+ return makeResult(options, changeRecord, { success: false, errors, warnings });
86
+ }
87
+ // 4. Stale detection
88
+ const staleReport = detectStale(deltaPlan, featureRequirements);
89
+ // 5. Block if stale
90
+ if (staleReport.blocked && !options.forceStale) {
91
+ return makeResult(options, changeRecord, {
92
+ success: false,
93
+ staleReport,
94
+ warnings: [
95
+ ...warnings,
96
+ 'Stale base detected. Another change has modified the base requirements.',
97
+ ],
98
+ errors: staleReport.staleEntries.map((s) => `STALE: ${s.entry.op} "${s.entry.targetName}" - ${s.reason}`),
99
+ });
100
+ }
101
+ // === PHASE 1: Validate and compute ===
102
+ const featureResults = [];
103
+ const allPostValidations = [];
104
+ const pendingAgentOps = [];
105
+ // 6. Pre-validate and apply programmatic ops
106
+ for (const [noteKey, entries] of deltaPlan.byTargetNote) {
107
+ const reqEntries = entries.filter((e) => e.targetType === 'requirement');
108
+ if (reqEntries.length === 0)
109
+ continue;
110
+ const reqMap = featureRequirements.get(noteKey);
111
+ const noteRecord = index.records.get(noteKey);
112
+ // Pre-validate in atomic order using a shadow map.
113
+ // This ensures RENAMED creates the new name before MODIFIED checks it.
114
+ const shadowMap = new Map(reqMap);
115
+ const sortedForValidation = [...reqEntries].sort((a, b) => getAtomicPriority(a.op) - getAtomicPriority(b.op));
116
+ for (const entry of sortedForValidation) {
117
+ const preError = preValidateEntry(entry, shadowMap);
118
+ if (preError) {
119
+ errors.push(`Pre-validation: ${preError}`);
120
+ }
121
+ else {
122
+ // Update shadow map to reflect the operation for subsequent validations
123
+ if (entry.op === 'RENAMED') {
124
+ const req = shadowMap.get(entry.targetName);
125
+ if (req) {
126
+ shadowMap.delete(entry.targetName);
127
+ shadowMap.set(entry.newName, { ...req, name: entry.newName, key: '' });
128
+ }
129
+ }
130
+ else if (entry.op === 'REMOVED') {
131
+ shadowMap.delete(entry.targetName);
132
+ }
133
+ }
134
+ }
135
+ if (errors.length > 0)
136
+ continue;
137
+ // Apply programmatic operations (RENAMED, REMOVED)
138
+ const mechEntries = reqEntries.filter((e) => PROGRAMMATIC_OPS.has(e.op));
139
+ const agentEntries = reqEntries.filter((e) => AGENT_DRIVEN_OPS.has(e.op));
140
+ const resolvedNotePath = resolve(options.vaultRoot, noteRecord.path);
141
+ const result = applyDeltaToFeature(noteKey, resolvedNotePath, reqMap, mechEntries);
142
+ featureResults.push(result);
143
+ // Collect agent-driven ops
144
+ for (const entry of agentEntries) {
145
+ pendingAgentOps.push({
146
+ entry,
147
+ featureId: noteKey,
148
+ featurePath: resolvedNotePath,
149
+ });
150
+ }
151
+ }
152
+ // Abort if any pre-validation failed
153
+ if (errors.length > 0) {
154
+ return makeResult(options, changeRecord, {
155
+ success: false,
156
+ staleReport,
157
+ featureResults,
158
+ errors,
159
+ warnings,
160
+ });
161
+ }
162
+ // Snapshot content_hashes before agent edits
163
+ const preEditSnapshots = new Map();
164
+ for (const op of pendingAgentOps) {
165
+ if (!preEditSnapshots.has(op.featureId)) {
166
+ const reqMap = featureRequirements.get(op.featureId);
167
+ const hashMap = new Map();
168
+ for (const [name, req] of reqMap) {
169
+ hashMap.set(name, computeRequirementHash(req));
170
+ }
171
+ preEditSnapshots.set(op.featureId, hashMap);
172
+ }
173
+ }
174
+ // Handle section operations
175
+ const sectionResults = [];
176
+ for (const [noteKey, entries] of deltaPlan.byTargetNote) {
177
+ const secEntries = entries.filter((e) => e.targetType === 'section');
178
+ if (secEntries.length === 0)
179
+ continue;
180
+ const secNoteRecord = index.records.get(noteKey);
181
+ for (const entry of secEntries) {
182
+ sectionResults.push({
183
+ noteId: noteKey,
184
+ notePath: resolve(options.vaultRoot, secNoteRecord.path),
185
+ sectionName: entry.targetName,
186
+ op: entry.op,
187
+ success: true, // Section ops are agent-driven
188
+ });
189
+ }
190
+ }
191
+ // === PHASE 2: Write (only if Phase 1 passed) ===
192
+ let statusTransitioned = false;
193
+ if (!options.dryRun) {
194
+ // Write programmatic changes (RENAMED, REMOVED only)
195
+ // Feature content rebuilding from reqMap would be needed here
196
+ // For now, the agent handles the actual file writes
197
+ // If no agent-driven ops, transition to applied
198
+ if (pendingAgentOps.length === 0) {
199
+ const content = deps.readFile(resolvedChangePath);
200
+ const updated = content.replace(/^(status:\s*).+$/m, '$1applied');
201
+ deps.writeFile(resolvedChangePath, updated);
202
+ statusTransitioned = true;
203
+ }
204
+ }
205
+ return {
206
+ changeId: options.changeId,
207
+ changeName: changeRecord.title,
208
+ success: true,
209
+ staleReport,
210
+ featureResults,
211
+ sectionResults,
212
+ postValidation: allPostValidations,
213
+ pendingAgentOps,
214
+ preEditSnapshots,
215
+ statusTransitioned,
216
+ warnings,
217
+ errors,
218
+ };
219
+ }
220
+ /**
221
+ * Archive an applied Change.
222
+ */
223
+ export function archiveChange(options, index, deps) {
224
+ const changeRecord = index.records.get(options.changeId);
225
+ if (!changeRecord) {
226
+ throw new Error(`Change "${options.changeId}" not found`);
227
+ }
228
+ if (changeRecord.status !== 'applied') {
229
+ return {
230
+ success: false,
231
+ fromPath: changeRecord.path,
232
+ toPath: '',
233
+ indexInvalidated: false,
234
+ error: `Cannot archive change with status "${changeRecord.status}". Must be "applied".`,
235
+ };
236
+ }
237
+ const resolvedFromPath = resolve(options.vaultRoot, changeRecord.path);
238
+ const filename = basename(changeRecord.path);
239
+ const archiveDir = join(options.vaultRoot, 'wiki', '99-archive');
240
+ const toPath = join(archiveDir, filename);
241
+ if (deps.fileExists(toPath)) {
242
+ return {
243
+ success: false,
244
+ fromPath: resolvedFromPath,
245
+ toPath,
246
+ indexInvalidated: false,
247
+ error: `Archive target already exists: ${toPath}`,
248
+ };
249
+ }
250
+ deps.ensureDir(archiveDir);
251
+ deps.moveFile(resolvedFromPath, toPath);
252
+ return {
253
+ success: true,
254
+ fromPath: resolvedFromPath,
255
+ toPath,
256
+ indexInvalidated: true,
257
+ };
258
+ }
259
+ // ── Helpers ──
260
+ function preValidateEntry(entry, requirements) {
261
+ switch (entry.op) {
262
+ case 'ADDED':
263
+ return requirements.has(entry.targetName)
264
+ ? `Requirement "${entry.targetName}" already exists (ADDED requires non-existence)`
265
+ : null;
266
+ case 'MODIFIED':
267
+ return !requirements.has(entry.targetName)
268
+ ? `Requirement "${entry.targetName}" not found (MODIFIED requires existence)`
269
+ : null;
270
+ case 'REMOVED':
271
+ return !requirements.has(entry.targetName)
272
+ ? `Requirement "${entry.targetName}" not found (REMOVED requires existence)`
273
+ : null;
274
+ case 'RENAMED': {
275
+ if (!requirements.has(entry.targetName)) {
276
+ return `Old name "${entry.targetName}" not found`;
277
+ }
278
+ if (requirements.has(entry.newName)) {
279
+ return `New name "${entry.newName}" already exists`;
280
+ }
281
+ return null;
282
+ }
283
+ }
284
+ }
285
+ function makeResult(options, changeRecord, overrides) {
286
+ return {
287
+ changeId: options.changeId,
288
+ changeName: changeRecord.title,
289
+ success: false,
290
+ staleReport: { hasStaleEntries: false, staleEntries: [], cleanEntries: [], blocked: false },
291
+ featureResults: [],
292
+ sectionResults: [],
293
+ postValidation: [],
294
+ pendingAgentOps: [],
295
+ preEditSnapshots: new Map(),
296
+ statusTransitioned: false,
297
+ warnings: [],
298
+ errors: [],
299
+ ...overrides,
300
+ };
301
+ }
302
+ //# sourceMappingURL=apply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../../src/core/workflow/apply/apply.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { DeltaPlan } from './types.js';
2
+ import type { ParseResult } from '../../parser/types.js';
3
+ /**
4
+ * Parse Delta Summary entries from a Change note's parsed result.
5
+ */
6
+ export declare function parseDeltaSummary(parsed: ParseResult, resolveWikilink: (target: string) => string | undefined): DeltaPlan;
7
+ /**
8
+ * Validate Delta Summary entries for cross-section conflicts.
9
+ */
10
+ export declare function validateDeltaConflicts(plan: DeltaPlan): string[];
11
+ //# sourceMappingURL=delta-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delta-parser.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/apply/delta-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAYzD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GACtD,SAAS,CAiFX;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,EAAE,CA+DhE"}
@@ -0,0 +1,164 @@
1
+ const REQUIREMENT_OP_RE = /^-\s+(ADDED|MODIFIED|REMOVED)\s+requirement\s+"([^"]+)"\s+(to|in|from)\s+\[\[([^\]]+)\]\](?:\s+\[base:\s*((?:sha256:[a-f0-9]+)|n\/a)\])?/;
2
+ const RENAMED_RE = /^-\s+RENAMED\s+requirement\s+"([^"]+)"\s+to\s+"([^"]+)"\s+in\s+\[\[([^\]]+)\]\](?:\s+\[base:\s*((?:sha256:[a-f0-9]+)|n\/a)\])?/;
3
+ const SECTION_OP_RE = /^-\s+(ADDED|MODIFIED|REMOVED)\s+section\s+"([^"]+)"\s+(to|in|from)\s+\[\[([^\]]+)\]\](?::\s*(.+))?/;
4
+ /**
5
+ * Parse Delta Summary entries from a Change note's parsed result.
6
+ */
7
+ export function parseDeltaSummary(parsed, resolveWikilink) {
8
+ // Find the Delta Summary section
9
+ const deltaSection = findSection(parsed, 'Delta Summary');
10
+ if (!deltaSection) {
11
+ return { entries: [], byTargetNote: new Map(), warnings: ['No Delta Summary section found'] };
12
+ }
13
+ const lines = deltaSection.split('\n');
14
+ const entries = [];
15
+ const warnings = [];
16
+ for (const line of lines) {
17
+ const trimmed = line.trim();
18
+ if (!trimmed || !trimmed.startsWith('-'))
19
+ continue;
20
+ // Try RENAMED first (more specific pattern)
21
+ const renamedMatch = trimmed.match(RENAMED_RE);
22
+ if (renamedMatch) {
23
+ const targetNoteId = resolveWikilink(renamedMatch[3]);
24
+ entries.push({
25
+ op: 'RENAMED',
26
+ targetType: 'requirement',
27
+ targetName: renamedMatch[1],
28
+ newName: renamedMatch[2],
29
+ targetNote: renamedMatch[3],
30
+ targetNoteId,
31
+ baseFingerprint: parseBaseFingerprint(renamedMatch[4]),
32
+ rawLine: trimmed,
33
+ });
34
+ continue;
35
+ }
36
+ // Try requirement operation
37
+ const reqMatch = trimmed.match(REQUIREMENT_OP_RE);
38
+ if (reqMatch) {
39
+ const targetNoteId = resolveWikilink(reqMatch[4]);
40
+ entries.push({
41
+ op: reqMatch[1],
42
+ targetType: 'requirement',
43
+ targetName: reqMatch[2],
44
+ targetNote: reqMatch[4],
45
+ targetNoteId,
46
+ baseFingerprint: parseBaseFingerprint(reqMatch[5]),
47
+ rawLine: trimmed,
48
+ });
49
+ continue;
50
+ }
51
+ // Try section operation
52
+ const secMatch = trimmed.match(SECTION_OP_RE);
53
+ if (secMatch) {
54
+ const targetNoteId = resolveWikilink(secMatch[4]);
55
+ entries.push({
56
+ op: secMatch[1],
57
+ targetType: 'section',
58
+ targetName: secMatch[2],
59
+ targetNote: secMatch[4],
60
+ targetNoteId,
61
+ baseFingerprint: null,
62
+ description: secMatch[5]?.trim(),
63
+ rawLine: trimmed,
64
+ });
65
+ continue;
66
+ }
67
+ // Unrecognized line
68
+ if (trimmed.match(/^-\s+(ADDED|MODIFIED|REMOVED|RENAMED)/)) {
69
+ warnings.push(`Unparseable Delta Summary entry: "${trimmed}"`);
70
+ }
71
+ }
72
+ // Group by target note
73
+ const byTargetNote = new Map();
74
+ for (const entry of entries) {
75
+ const key = entry.targetNoteId ?? entry.targetNote;
76
+ const group = byTargetNote.get(key) ?? [];
77
+ group.push(entry);
78
+ byTargetNote.set(key, group);
79
+ }
80
+ return { entries, byTargetNote, warnings };
81
+ }
82
+ /**
83
+ * Validate Delta Summary entries for cross-section conflicts.
84
+ */
85
+ export function validateDeltaConflicts(plan) {
86
+ const errors = [];
87
+ for (const [noteKey, entries] of plan.byTargetNote) {
88
+ const reqEntries = entries.filter((e) => e.targetType === 'requirement');
89
+ const added = new Set(reqEntries.filter((e) => e.op === 'ADDED').map((e) => e.targetName));
90
+ const modified = new Set(reqEntries.filter((e) => e.op === 'MODIFIED').map((e) => e.targetName));
91
+ const removed = new Set(reqEntries.filter((e) => e.op === 'REMOVED').map((e) => e.targetName));
92
+ const renamedFrom = new Map(reqEntries.filter((e) => e.op === 'RENAMED').map((e) => [e.targetName, e.newName]));
93
+ const renamedTo = new Set(reqEntries.filter((e) => e.op === 'RENAMED').map((e) => e.newName));
94
+ // Duplicate within same operation
95
+ const addedList = reqEntries.filter((e) => e.op === 'ADDED').map((e) => e.targetName);
96
+ for (const d of findDuplicates(addedList)) {
97
+ errors.push(`Duplicate ADDED requirement "${d}" in ${noteKey}`);
98
+ }
99
+ const modifiedList = reqEntries.filter((e) => e.op === 'MODIFIED').map((e) => e.targetName);
100
+ for (const d of findDuplicates(modifiedList)) {
101
+ errors.push(`Duplicate MODIFIED requirement "${d}" in ${noteKey}`);
102
+ }
103
+ const removedList = reqEntries.filter((e) => e.op === 'REMOVED').map((e) => e.targetName);
104
+ for (const d of findDuplicates(removedList)) {
105
+ errors.push(`Duplicate REMOVED requirement "${d}" in ${noteKey}`);
106
+ }
107
+ const renamedFromList = reqEntries.filter((e) => e.op === 'RENAMED').map((e) => e.targetName);
108
+ for (const d of findDuplicates(renamedFromList)) {
109
+ errors.push(`Duplicate RENAMED (from) requirement "${d}" in ${noteKey}`);
110
+ }
111
+ const renamedToList = reqEntries.filter((e) => e.op === 'RENAMED').map((e) => e.newName);
112
+ for (const d of findDuplicates(renamedToList)) {
113
+ errors.push(`Duplicate RENAMED (to) requirement "${d}" in ${noteKey}`);
114
+ }
115
+ // Cross-section conflicts
116
+ for (const name of modified) {
117
+ if (removed.has(name))
118
+ errors.push(`"${name}" in ${noteKey}: MODIFIED + REMOVED conflict`);
119
+ if (added.has(name))
120
+ errors.push(`"${name}" in ${noteKey}: MODIFIED + ADDED conflict`);
121
+ }
122
+ for (const name of added) {
123
+ if (removed.has(name))
124
+ errors.push(`"${name}" in ${noteKey}: ADDED + REMOVED conflict`);
125
+ }
126
+ // RENAMED interplay
127
+ for (const [from, to] of renamedFrom) {
128
+ if (modified.has(from)) {
129
+ errors.push(`"${from}" in ${noteKey}: RENAMED FROM + MODIFIED old name (use new name "${to}")`);
130
+ }
131
+ if (added.has(to)) {
132
+ errors.push(`"${to}" in ${noteKey}: RENAMED TO + ADDED collision`);
133
+ }
134
+ }
135
+ }
136
+ return errors;
137
+ }
138
+ function parseBaseFingerprint(raw) {
139
+ if (!raw || raw === 'n/a')
140
+ return null;
141
+ return raw;
142
+ }
143
+ function findSection(parsed, title) {
144
+ for (const section of parsed.sections) {
145
+ if (section.title === title)
146
+ return section.content;
147
+ for (const child of section.children) {
148
+ if (child.title === title)
149
+ return child.content;
150
+ }
151
+ }
152
+ return null;
153
+ }
154
+ function findDuplicates(arr) {
155
+ const seen = new Set();
156
+ const dupes = new Set();
157
+ for (const item of arr) {
158
+ if (seen.has(item))
159
+ dupes.add(item);
160
+ seen.add(item);
161
+ }
162
+ return [...dupes];
163
+ }
164
+ //# sourceMappingURL=delta-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delta-parser.js","sourceRoot":"","sources":["../../../../src/core/workflow/apply/delta-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { DeltaEntry, FeatureApplyResult } from './types.js';
2
+ import type { Requirement } from '../../../types/requirement.js';
3
+ /**
4
+ * Apply delta operations to a Feature note's requirements map.
5
+ * Operations are executed in atomic order: RENAMED -> REMOVED -> MODIFIED -> ADDED.
6
+ *
7
+ * Returns which operations succeeded/failed. Does NOT write to disk.
8
+ * MODIFIED and ADDED are validated structurally but content changes
9
+ * are performed by the agent.
10
+ */
11
+ export declare function applyDeltaToFeature(featureId: string, featurePath: string, requirementsMap: Map<string, Requirement>, entries: DeltaEntry[]): FeatureApplyResult;
12
+ //# sourceMappingURL=feature-updater.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-updater.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/apply/feature-updater.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAwB,MAAM,YAAY,CAAC;AACvF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAejE;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EACzC,OAAO,EAAE,UAAU,EAAE,GACpB,kBAAkB,CAoBpB"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Map operation to atomic priority.
3
+ * RENAMED(1) -> REMOVED(2) -> MODIFIED(3) -> ADDED(4)
4
+ */
5
+ function getAtomicPriority(op) {
6
+ switch (op) {
7
+ case 'RENAMED': return 1;
8
+ case 'REMOVED': return 2;
9
+ case 'MODIFIED': return 3;
10
+ case 'ADDED': return 4;
11
+ }
12
+ }
13
+ /**
14
+ * Apply delta operations to a Feature note's requirements map.
15
+ * Operations are executed in atomic order: RENAMED -> REMOVED -> MODIFIED -> ADDED.
16
+ *
17
+ * Returns which operations succeeded/failed. Does NOT write to disk.
18
+ * MODIFIED and ADDED are validated structurally but content changes
19
+ * are performed by the agent.
20
+ */
21
+ export function applyDeltaToFeature(featureId, featurePath, requirementsMap, entries) {
22
+ const operations = [];
23
+ // Sort by atomic priority
24
+ const sorted = [...entries]
25
+ .filter((e) => e.targetType === 'requirement')
26
+ .sort((a, b) => getAtomicPriority(a.op) - getAtomicPriority(b.op));
27
+ for (const entry of sorted) {
28
+ const result = applySingleOperation(requirementsMap, entry);
29
+ operations.push(result);
30
+ }
31
+ return {
32
+ featureId,
33
+ featurePath,
34
+ operations,
35
+ updatedContent: '', // Content rebuilding is agent-driven
36
+ requiresWrite: operations.some((o) => o.success),
37
+ };
38
+ }
39
+ function applySingleOperation(requirements, entry) {
40
+ switch (entry.op) {
41
+ case 'RENAMED': {
42
+ const oldReq = requirements.get(entry.targetName);
43
+ if (!oldReq) {
44
+ return { entry, success: false, error: `Requirement "${entry.targetName}" not found for RENAME` };
45
+ }
46
+ if (requirements.has(entry.newName)) {
47
+ return { entry, success: false, error: `Target name "${entry.newName}" already exists` };
48
+ }
49
+ requirements.delete(entry.targetName);
50
+ const renamed = { ...oldReq, name: entry.newName, key: '' };
51
+ requirements.set(entry.newName, renamed);
52
+ return { entry, success: true };
53
+ }
54
+ case 'REMOVED': {
55
+ if (!requirements.has(entry.targetName)) {
56
+ return { entry, success: false, error: `Requirement "${entry.targetName}" not found for REMOVE` };
57
+ }
58
+ requirements.delete(entry.targetName);
59
+ return { entry, success: true };
60
+ }
61
+ case 'MODIFIED': {
62
+ if (!requirements.has(entry.targetName)) {
63
+ return { entry, success: false, error: `Requirement "${entry.targetName}" not found for MODIFY` };
64
+ }
65
+ return { entry, success: true, contentChanged: true };
66
+ }
67
+ case 'ADDED': {
68
+ if (requirements.has(entry.targetName)) {
69
+ return { entry, success: false, error: `Requirement "${entry.targetName}" already exists for ADD` };
70
+ }
71
+ return { entry, success: true };
72
+ }
73
+ }
74
+ }
75
+ //# sourceMappingURL=feature-updater.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-updater.js","sourceRoot":"","sources":["../../../../src/core/workflow/apply/feature-updater.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { applyChange, archiveChange } from './apply.js';
2
+ export { parseDeltaSummary, validateDeltaConflicts } from './delta-parser.js';
3
+ export { detectStale, computeRequirementHash } from './stale-checker.js';
4
+ export { applyDeltaToFeature } from './feature-updater.js';
5
+ export { verifyApply } from './verify-apply.js';
6
+ export type { DeltaEntry, DeltaPlan, StaleReport, StaleCheckResult, FeatureApplyResult, ApplyOperationResult, PreValidation, PostValidation, SectionApplyResult, PendingAgentOp, ApplyOptions, ApplyResult, ArchiveOptions, ArchiveResult, ApplyDeps, } from './types.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/workflow/apply/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EACV,UAAU,EACV,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,SAAS,GACV,MAAM,YAAY,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { applyChange, archiveChange } from './apply.js';
2
+ export { parseDeltaSummary, validateDeltaConflicts } from './delta-parser.js';
3
+ export { detectStale, computeRequirementHash } from './stale-checker.js';
4
+ export { applyDeltaToFeature } from './feature-updater.js';
5
+ export { verifyApply } from './verify-apply.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/workflow/apply/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}