open-wiki-spec 0.2.4 → 0.3.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 (251) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/README.md +50 -3
  3. package/dist/cli/commands/apply.d.ts.map +1 -1
  4. package/dist/cli/commands/apply.js +96 -4
  5. package/dist/cli/commands/apply.js.map +1 -1
  6. package/dist/cli/commands/archive.d.ts.map +1 -1
  7. package/dist/cli/commands/archive.js +19 -5
  8. package/dist/cli/commands/archive.js.map +1 -1
  9. package/dist/cli/commands/bulk-archive.d.ts +15 -0
  10. package/dist/cli/commands/bulk-archive.d.ts.map +1 -0
  11. package/dist/cli/commands/bulk-archive.js +97 -0
  12. package/dist/cli/commands/bulk-archive.js.map +1 -0
  13. package/dist/cli/commands/continue.d.ts.map +1 -1
  14. package/dist/cli/commands/continue.js +15 -2
  15. package/dist/cli/commands/continue.js.map +1 -1
  16. package/dist/cli/commands/error-handler.d.ts +1 -5
  17. package/dist/cli/commands/error-handler.d.ts.map +1 -1
  18. package/dist/cli/commands/error-handler.js +48 -3
  19. package/dist/cli/commands/error-handler.js.map +1 -1
  20. package/dist/cli/commands/init.d.ts +0 -3
  21. package/dist/cli/commands/init.d.ts.map +1 -1
  22. package/dist/cli/commands/init.js +22 -4
  23. package/dist/cli/commands/init.js.map +1 -1
  24. package/dist/cli/commands/list.d.ts +2 -17
  25. package/dist/cli/commands/list.d.ts.map +1 -1
  26. package/dist/cli/commands/list.js +15 -3
  27. package/dist/cli/commands/list.js.map +1 -1
  28. package/dist/cli/commands/migrate.d.ts.map +1 -1
  29. package/dist/cli/commands/migrate.js +6 -9
  30. package/dist/cli/commands/migrate.js.map +1 -1
  31. package/dist/cli/commands/propose.d.ts.map +1 -1
  32. package/dist/cli/commands/propose.js +46 -6
  33. package/dist/cli/commands/propose.js.map +1 -1
  34. package/dist/cli/commands/query.d.ts.map +1 -1
  35. package/dist/cli/commands/query.js +99 -4
  36. package/dist/cli/commands/query.js.map +1 -1
  37. package/dist/cli/commands/retrieve.d.ts +7 -0
  38. package/dist/cli/commands/retrieve.d.ts.map +1 -0
  39. package/dist/cli/commands/retrieve.js +70 -0
  40. package/dist/cli/commands/retrieve.js.map +1 -0
  41. package/dist/cli/commands/revert.d.ts +18 -0
  42. package/dist/cli/commands/revert.d.ts.map +1 -0
  43. package/dist/cli/commands/revert.js +109 -0
  44. package/dist/cli/commands/revert.js.map +1 -0
  45. package/dist/cli/commands/status.d.ts +2 -19
  46. package/dist/cli/commands/status.d.ts.map +1 -1
  47. package/dist/cli/commands/status.js +42 -3
  48. package/dist/cli/commands/status.js.map +1 -1
  49. package/dist/cli/commands/verify.d.ts.map +1 -1
  50. package/dist/cli/commands/verify.js +12 -1
  51. package/dist/cli/commands/verify.js.map +1 -1
  52. package/dist/cli/index.d.ts.map +1 -1
  53. package/dist/cli/index.js +68 -2
  54. package/dist/cli/index.js.map +1 -1
  55. package/dist/cli/init/init-engine.d.ts.map +1 -1
  56. package/dist/cli/init/init-engine.js +19 -6
  57. package/dist/cli/init/init-engine.js.map +1 -1
  58. package/dist/cli/init/meta-files.d.ts +2 -1
  59. package/dist/cli/init/meta-files.d.ts.map +1 -1
  60. package/dist/cli/init/meta-files.js +167 -8
  61. package/dist/cli/init/meta-files.js.map +1 -1
  62. package/dist/cli/init/skill-generator.d.ts +3 -0
  63. package/dist/cli/init/skill-generator.d.ts.map +1 -1
  64. package/dist/cli/init/skill-generator.js +184 -3
  65. package/dist/cli/init/skill-generator.js.map +1 -1
  66. package/dist/cli/json-envelope.d.ts +15 -0
  67. package/dist/cli/json-envelope.d.ts.map +1 -0
  68. package/dist/cli/json-envelope.js +86 -0
  69. package/dist/cli/json-envelope.js.map +1 -0
  70. package/dist/cli/schema-check.d.ts +27 -0
  71. package/dist/cli/schema-check.d.ts.map +1 -0
  72. package/dist/cli/schema-check.js +33 -0
  73. package/dist/cli/schema-check.js.map +1 -0
  74. package/dist/cli/vault-discovery.d.ts.map +1 -1
  75. package/dist/cli/vault-discovery.js +16 -2
  76. package/dist/cli/vault-discovery.js.map +1 -1
  77. package/dist/core/embedding/cache.d.ts +12 -3
  78. package/dist/core/embedding/cache.d.ts.map +1 -1
  79. package/dist/core/embedding/cache.js +42 -5
  80. package/dist/core/embedding/cache.js.map +1 -1
  81. package/dist/core/embedding/embedder.d.ts.map +1 -1
  82. package/dist/core/embedding/embedder.js +73 -6
  83. package/dist/core/embedding/embedder.js.map +1 -1
  84. package/dist/core/index/build.d.ts.map +1 -1
  85. package/dist/core/index/build.js +54 -6
  86. package/dist/core/index/build.js.map +1 -1
  87. package/dist/core/index/resolve.d.ts.map +1 -1
  88. package/dist/core/index/resolve.js +27 -12
  89. package/dist/core/index/resolve.js.map +1 -1
  90. package/dist/core/index/scan.d.ts +10 -1
  91. package/dist/core/index/scan.d.ts.map +1 -1
  92. package/dist/core/index/scan.js +59 -10
  93. package/dist/core/index/scan.js.map +1 -1
  94. package/dist/core/index/schema-version.d.ts +28 -0
  95. package/dist/core/index/schema-version.d.ts.map +1 -1
  96. package/dist/core/index/schema-version.js +47 -0
  97. package/dist/core/index/schema-version.js.map +1 -1
  98. package/dist/core/migrate/change-converter.d.ts.map +1 -1
  99. package/dist/core/migrate/change-converter.js +52 -5
  100. package/dist/core/migrate/change-converter.js.map +1 -1
  101. package/dist/core/migrate/migrate.d.ts.map +1 -1
  102. package/dist/core/migrate/migrate.js +115 -1
  103. package/dist/core/migrate/migrate.js.map +1 -1
  104. package/dist/core/migrate/spec-converter.js +5 -0
  105. package/dist/core/migrate/spec-converter.js.map +1 -1
  106. package/dist/core/migrate/types.d.ts +9 -0
  107. package/dist/core/migrate/types.d.ts.map +1 -1
  108. package/dist/core/parser/frontmatter-parser.d.ts +0 -6
  109. package/dist/core/parser/frontmatter-parser.d.ts.map +1 -1
  110. package/dist/core/parser/frontmatter-parser.js +59 -2
  111. package/dist/core/parser/frontmatter-parser.js.map +1 -1
  112. package/dist/core/parser/requirement-parser.js +4 -0
  113. package/dist/core/parser/requirement-parser.js.map +1 -1
  114. package/dist/core/parser/task-parser.d.ts.map +1 -1
  115. package/dist/core/parser/task-parser.js +19 -0
  116. package/dist/core/parser/task-parser.js.map +1 -1
  117. package/dist/core/parser/wikilink-parser.d.ts.map +1 -1
  118. package/dist/core/parser/wikilink-parser.js +21 -5
  119. package/dist/core/parser/wikilink-parser.js.map +1 -1
  120. package/dist/core/retrieval/classify.d.ts +11 -4
  121. package/dist/core/retrieval/classify.d.ts.map +1 -1
  122. package/dist/core/retrieval/classify.js +76 -14
  123. package/dist/core/retrieval/classify.js.map +1 -1
  124. package/dist/core/retrieval/lexical.d.ts.map +1 -1
  125. package/dist/core/retrieval/lexical.js +31 -12
  126. package/dist/core/retrieval/lexical.js.map +1 -1
  127. package/dist/core/retrieval/retrieve.d.ts.map +1 -1
  128. package/dist/core/retrieval/retrieve.js +45 -5
  129. package/dist/core/retrieval/retrieve.js.map +1 -1
  130. package/dist/core/retrieval/scoring.d.ts.map +1 -1
  131. package/dist/core/retrieval/scoring.js +37 -12
  132. package/dist/core/retrieval/scoring.js.map +1 -1
  133. package/dist/core/schema/change.schema.d.ts.map +1 -1
  134. package/dist/core/schema/change.schema.js +6 -1
  135. package/dist/core/schema/change.schema.js.map +1 -1
  136. package/dist/core/schema/feature.schema.d.ts +1 -1
  137. package/dist/core/schema/feature.schema.d.ts.map +1 -1
  138. package/dist/core/schema/feature.schema.js +1 -0
  139. package/dist/core/schema/feature.schema.js.map +1 -1
  140. package/dist/core/schema/frontmatter.d.ts +15 -0
  141. package/dist/core/schema/frontmatter.d.ts.map +1 -1
  142. package/dist/core/schema/index.d.ts +15 -0
  143. package/dist/core/schema/index.d.ts.map +1 -1
  144. package/dist/core/schema/query.schema.d.ts +15 -0
  145. package/dist/core/schema/query.schema.d.ts.map +1 -1
  146. package/dist/core/schema/query.schema.js +5 -0
  147. package/dist/core/schema/query.schema.js.map +1 -1
  148. package/dist/core/schema/templates.d.ts +0 -4
  149. package/dist/core/schema/templates.d.ts.map +1 -1
  150. package/dist/core/schema/templates.js +25 -7
  151. package/dist/core/schema/templates.js.map +1 -1
  152. package/dist/core/sequencing/analyze.d.ts.map +1 -1
  153. package/dist/core/sequencing/analyze.js +3 -1
  154. package/dist/core/sequencing/analyze.js.map +1 -1
  155. package/dist/core/sequencing/priority-queue.d.ts +9 -3
  156. package/dist/core/sequencing/priority-queue.d.ts.map +1 -1
  157. package/dist/core/sequencing/priority-queue.js +10 -4
  158. package/dist/core/sequencing/priority-queue.js.map +1 -1
  159. package/dist/core/sequencing/stale-detector.d.ts.map +1 -1
  160. package/dist/core/sequencing/stale-detector.js +5 -0
  161. package/dist/core/sequencing/stale-detector.js.map +1 -1
  162. package/dist/core/workflow/apply/apply.d.ts.map +1 -1
  163. package/dist/core/workflow/apply/apply.js +429 -25
  164. package/dist/core/workflow/apply/apply.js.map +1 -1
  165. package/dist/core/workflow/apply/delta-parser.d.ts.map +1 -1
  166. package/dist/core/workflow/apply/delta-parser.js +43 -9
  167. package/dist/core/workflow/apply/delta-parser.js.map +1 -1
  168. package/dist/core/workflow/apply/feature-updater.d.ts.map +1 -1
  169. package/dist/core/workflow/apply/feature-updater.js +27 -11
  170. package/dist/core/workflow/apply/feature-updater.js.map +1 -1
  171. package/dist/core/workflow/apply/types.d.ts +9 -0
  172. package/dist/core/workflow/apply/types.d.ts.map +1 -1
  173. package/dist/core/workflow/continue/continue.d.ts +18 -0
  174. package/dist/core/workflow/continue/continue.d.ts.map +1 -1
  175. package/dist/core/workflow/continue/continue.js +134 -15
  176. package/dist/core/workflow/continue/continue.js.map +1 -1
  177. package/dist/core/workflow/continue/next-action.d.ts.map +1 -1
  178. package/dist/core/workflow/continue/next-action.js +16 -3
  179. package/dist/core/workflow/continue/next-action.js.map +1 -1
  180. package/dist/core/workflow/continue/types.d.ts +12 -0
  181. package/dist/core/workflow/continue/types.d.ts.map +1 -1
  182. package/dist/core/workflow/propose/note-creator.d.ts +2 -2
  183. package/dist/core/workflow/propose/note-creator.d.ts.map +1 -1
  184. package/dist/core/workflow/propose/note-creator.js +89 -12
  185. package/dist/core/workflow/propose/note-creator.js.map +1 -1
  186. package/dist/core/workflow/propose/propose.d.ts.map +1 -1
  187. package/dist/core/workflow/propose/propose.js +189 -47
  188. package/dist/core/workflow/propose/propose.js.map +1 -1
  189. package/dist/core/workflow/propose/query-normalizer.d.ts.map +1 -1
  190. package/dist/core/workflow/propose/query-normalizer.js +37 -5
  191. package/dist/core/workflow/propose/query-normalizer.js.map +1 -1
  192. package/dist/core/workflow/propose/types.d.ts +15 -0
  193. package/dist/core/workflow/propose/types.d.ts.map +1 -1
  194. package/dist/core/workflow/propose/types.js +6 -1
  195. package/dist/core/workflow/propose/types.js.map +1 -1
  196. package/dist/core/workflow/query/query-note-creator.js +4 -0
  197. package/dist/core/workflow/query/query-note-creator.js.map +1 -1
  198. package/dist/core/workflow/verify/coherence.d.ts +10 -0
  199. package/dist/core/workflow/verify/coherence.d.ts.map +1 -1
  200. package/dist/core/workflow/verify/coherence.js +91 -4
  201. package/dist/core/workflow/verify/coherence.js.map +1 -1
  202. package/dist/core/workflow/verify/completeness.d.ts +1 -1
  203. package/dist/core/workflow/verify/completeness.d.ts.map +1 -1
  204. package/dist/core/workflow/verify/completeness.js +53 -10
  205. package/dist/core/workflow/verify/completeness.js.map +1 -1
  206. package/dist/core/workflow/verify/correctness.d.ts +1 -1
  207. package/dist/core/workflow/verify/correctness.d.ts.map +1 -1
  208. package/dist/core/workflow/verify/correctness.js +95 -14
  209. package/dist/core/workflow/verify/correctness.js.map +1 -1
  210. package/dist/core/workflow/verify/vault-integrity.d.ts +11 -0
  211. package/dist/core/workflow/verify/vault-integrity.d.ts.map +1 -1
  212. package/dist/core/workflow/verify/vault-integrity.js +80 -3
  213. package/dist/core/workflow/verify/vault-integrity.js.map +1 -1
  214. package/dist/core/workflow/verify/verify.d.ts +0 -5
  215. package/dist/core/workflow/verify/verify.d.ts.map +1 -1
  216. package/dist/core/workflow/verify/verify.js +54 -3
  217. package/dist/core/workflow/verify/verify.js.map +1 -1
  218. package/dist/index.d.ts +13 -0
  219. package/dist/index.d.ts.map +1 -1
  220. package/dist/index.js +11 -0
  221. package/dist/index.js.map +1 -1
  222. package/dist/types/cli-contracts.d.ts +78 -0
  223. package/dist/types/cli-contracts.d.ts.map +1 -0
  224. package/dist/types/cli-contracts.js +2 -0
  225. package/dist/types/cli-contracts.js.map +1 -0
  226. package/dist/types/error-codes.d.ts +25 -0
  227. package/dist/types/error-codes.d.ts.map +1 -0
  228. package/dist/types/error-codes.js +27 -0
  229. package/dist/types/error-codes.js.map +1 -0
  230. package/dist/types/frontmatter.d.ts +9 -2
  231. package/dist/types/frontmatter.d.ts.map +1 -1
  232. package/dist/types/next-action.d.ts +21 -0
  233. package/dist/types/next-action.d.ts.map +1 -1
  234. package/dist/types/retrieval.d.ts +17 -0
  235. package/dist/types/retrieval.d.ts.map +1 -1
  236. package/dist/types/verify.d.ts +58 -1
  237. package/dist/types/verify.d.ts.map +1 -1
  238. package/dist/types/verify.js +58 -1
  239. package/dist/types/verify.js.map +1 -1
  240. package/dist/utils/conventions.d.ts +9 -0
  241. package/dist/utils/conventions.d.ts.map +1 -0
  242. package/dist/utils/conventions.js +22 -0
  243. package/dist/utils/conventions.js.map +1 -0
  244. package/dist/utils/id-generator.d.ts.map +1 -1
  245. package/dist/utils/id-generator.js +8 -0
  246. package/dist/utils/id-generator.js.map +1 -1
  247. package/dist/utils/normalize.d.ts +7 -4
  248. package/dist/utils/normalize.d.ts.map +1 -1
  249. package/dist/utils/normalize.js +43 -6
  250. package/dist/utils/normalize.js.map +1 -1
  251. package/package.json +3 -2
@@ -1,15 +1,72 @@
1
1
  export type IssueSeverity = 'error' | 'warning' | 'info';
2
2
  export type VerifyDimension = 'completeness' | 'correctness' | 'coherence' | 'vault_integrity';
3
+ /**
4
+ * Central taxonomy of verify issue codes.
5
+ * AI agents and automation should branch on these values.
6
+ */
7
+ export declare const VERIFY_CODES: {
8
+ readonly MISSING_SECTION: "MISSING_SECTION";
9
+ readonly MISSING_REQUIREMENTS: "MISSING_REQUIREMENTS";
10
+ readonly MISSING_DELTA_SUMMARY: "MISSING_DELTA_SUMMARY";
11
+ readonly MISSING_TASKS: "MISSING_TASKS";
12
+ readonly MISSING_VALIDATION: "MISSING_VALIDATION";
13
+ readonly MISSING_LINK: "MISSING_LINK";
14
+ readonly MISSING_DESIGN_APPROACH: "MISSING_DESIGN_APPROACH";
15
+ readonly EMPTY_REQUIRED_SECTION: "EMPTY_REQUIRED_SECTION";
16
+ readonly INVALID_FRONTMATTER_REF: "INVALID_FRONTMATTER_REF";
17
+ readonly DELTA_MISMATCH_ADDED: "DELTA_MISMATCH_ADDED";
18
+ readonly DELTA_MISMATCH_MODIFIED: "DELTA_MISMATCH_MODIFIED";
19
+ readonly DELTA_MISMATCH_REMOVED: "DELTA_MISMATCH_REMOVED";
20
+ readonly DELTA_MISMATCH_RENAMED: "DELTA_MISMATCH_RENAMED";
21
+ readonly MODIFIED_NO_CHANGE: "MODIFIED_NO_CHANGE";
22
+ readonly STALE_BASE: "STALE_BASE";
23
+ readonly INVALID_STATUS_TRANSITION: "INVALID_STATUS_TRANSITION";
24
+ readonly BROKEN_DEPENDS_ON: "BROKEN_DEPENDS_ON";
25
+ readonly INVALID_DEPENDS_ON_TYPE: "INVALID_DEPENDS_ON_TYPE";
26
+ readonly SCHEMA_MISMATCH: "SCHEMA_MISMATCH";
27
+ readonly UNSUPPORTED_SCHEMA_VERSION: "UNSUPPORTED_SCHEMA_VERSION";
28
+ readonly BREAKING_CHANGE_WITHOUT_VERSION_BUMP: "BREAKING_CHANGE_WITHOUT_VERSION_BUMP";
29
+ readonly EXCESSIVE_DRIFT: "EXCESSIVE_DRIFT";
30
+ readonly UNFILLED_APPLY_MARKER: "UNFILLED_APPLY_MARKER";
31
+ readonly TOUCHES_OVERLAP_BLOCKED: "TOUCHES_OVERLAP_BLOCKED";
32
+ readonly TOUCHES_OVERLAP_CONFLICT: "TOUCHES_OVERLAP_CONFLICT";
33
+ readonly TOUCHES_OVERLAP_NEEDS_REVIEW: "TOUCHES_OVERLAP_NEEDS_REVIEW";
34
+ readonly REQUIREMENT_CONFLICT_CRITICAL: "REQUIREMENT_CONFLICT_CRITICAL";
35
+ readonly DEPENDENCY_CYCLE: "DEPENDENCY_CYCLE";
36
+ readonly OUT_OF_ORDER: "OUT_OF_ORDER";
37
+ readonly CONFLICTING_DESCRIPTIONS: "CONFLICTING_DESCRIPTIONS";
38
+ readonly INCONSISTENT_DECISION: "INCONSISTENT_DECISION";
39
+ readonly DUPLICATE_ID: "DUPLICATE_ID";
40
+ readonly MISSING_ID: "MISSING_ID";
41
+ readonly UNRESOLVED_WIKILINK: "UNRESOLVED_WIKILINK";
42
+ readonly AMBIGUOUS_ALIAS: "AMBIGUOUS_ALIAS";
43
+ readonly ORPHAN_NOTE: "ORPHAN_NOTE";
44
+ readonly ARCHIVE_PLACEMENT_ERROR: "ARCHIVE_PLACEMENT_ERROR";
45
+ readonly EMPTY_TYPED_NOTE: "EMPTY_TYPED_NOTE";
46
+ readonly TITLE_ID_COLLISION: "TITLE_ID_COLLISION";
47
+ readonly POTENTIAL_SECRET_LEAK: "POTENTIAL_SECRET_LEAK";
48
+ readonly TYPE_FOLDER_MISMATCH: "TYPE_FOLDER_MISMATCH";
49
+ readonly APPLY_IN_PROGRESS: "APPLY_IN_PROGRESS";
50
+ readonly ARCHIVED_TARGET: "ARCHIVED_TARGET";
51
+ };
52
+ export type VerifyCode = typeof VERIFY_CODES[keyof typeof VERIFY_CODES];
3
53
  export interface VerifyIssue {
4
54
  dimension: VerifyDimension;
5
55
  severity: IssueSeverity;
6
- code: string;
56
+ code: VerifyCode | string;
7
57
  message: string;
8
58
  note_path?: string;
9
59
  note_id?: string;
10
60
  suggestion?: string;
11
61
  }
62
+ /**
63
+ * JSON contract version for VerifyReport. Bump this when the shape of the
64
+ * report changes in a way that breaks existing consumers.
65
+ */
66
+ export declare const VERIFY_REPORT_SCHEMA_VERSION = "1.0.0";
12
67
  export interface VerifyReport {
68
+ /** Schema version for the report JSON contract. See VERIFY_REPORT_SCHEMA_VERSION. */
69
+ schema_version?: string;
13
70
  scanned_at: string;
14
71
  total_notes: number;
15
72
  issues: VerifyIssue[];
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/types/verify.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AACzD,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG,aAAa,GAAG,WAAW,GAAG,iBAAiB,CAAC;AAE/F,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,eAAe,CAAC;IAC3B,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC,eAAe,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrF,IAAI,EAAE,OAAO,CAAC;CACf"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/types/verify.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AACzD,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG,aAAa,GAAG,WAAW,GAAG,iBAAiB,CAAC;AAE/F;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDf,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,OAAO,YAAY,CAAC,MAAM,OAAO,YAAY,CAAC,CAAC;AAExE,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,eAAe,CAAC;IAC3B,QAAQ,EAAE,aAAa,CAAC;IACxB,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,eAAO,MAAM,4BAA4B,UAAU,CAAC;AAEpD,MAAM,WAAW,YAAY;IAC3B,qFAAqF;IACrF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC,eAAe,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrF,IAAI,EAAE,OAAO,CAAC;CACf"}
@@ -1,2 +1,59 @@
1
- export {};
1
+ /**
2
+ * Central taxonomy of verify issue codes.
3
+ * AI agents and automation should branch on these values.
4
+ */
5
+ export const VERIFY_CODES = {
6
+ // completeness
7
+ MISSING_SECTION: 'MISSING_SECTION',
8
+ MISSING_REQUIREMENTS: 'MISSING_REQUIREMENTS',
9
+ MISSING_DELTA_SUMMARY: 'MISSING_DELTA_SUMMARY',
10
+ MISSING_TASKS: 'MISSING_TASKS',
11
+ MISSING_VALIDATION: 'MISSING_VALIDATION',
12
+ MISSING_LINK: 'MISSING_LINK',
13
+ MISSING_DESIGN_APPROACH: 'MISSING_DESIGN_APPROACH',
14
+ EMPTY_REQUIRED_SECTION: 'EMPTY_REQUIRED_SECTION',
15
+ // correctness
16
+ INVALID_FRONTMATTER_REF: 'INVALID_FRONTMATTER_REF',
17
+ DELTA_MISMATCH_ADDED: 'DELTA_MISMATCH_ADDED',
18
+ DELTA_MISMATCH_MODIFIED: 'DELTA_MISMATCH_MODIFIED',
19
+ DELTA_MISMATCH_REMOVED: 'DELTA_MISMATCH_REMOVED',
20
+ DELTA_MISMATCH_RENAMED: 'DELTA_MISMATCH_RENAMED',
21
+ MODIFIED_NO_CHANGE: 'MODIFIED_NO_CHANGE',
22
+ STALE_BASE: 'STALE_BASE',
23
+ INVALID_STATUS_TRANSITION: 'INVALID_STATUS_TRANSITION',
24
+ BROKEN_DEPENDS_ON: 'BROKEN_DEPENDS_ON',
25
+ INVALID_DEPENDS_ON_TYPE: 'INVALID_DEPENDS_ON_TYPE',
26
+ SCHEMA_MISMATCH: 'SCHEMA_MISMATCH',
27
+ UNSUPPORTED_SCHEMA_VERSION: 'UNSUPPORTED_SCHEMA_VERSION',
28
+ BREAKING_CHANGE_WITHOUT_VERSION_BUMP: 'BREAKING_CHANGE_WITHOUT_VERSION_BUMP',
29
+ EXCESSIVE_DRIFT: 'EXCESSIVE_DRIFT',
30
+ UNFILLED_APPLY_MARKER: 'UNFILLED_APPLY_MARKER',
31
+ // coherence
32
+ TOUCHES_OVERLAP_BLOCKED: 'TOUCHES_OVERLAP_BLOCKED',
33
+ TOUCHES_OVERLAP_CONFLICT: 'TOUCHES_OVERLAP_CONFLICT',
34
+ TOUCHES_OVERLAP_NEEDS_REVIEW: 'TOUCHES_OVERLAP_NEEDS_REVIEW',
35
+ REQUIREMENT_CONFLICT_CRITICAL: 'REQUIREMENT_CONFLICT_CRITICAL',
36
+ DEPENDENCY_CYCLE: 'DEPENDENCY_CYCLE',
37
+ OUT_OF_ORDER: 'OUT_OF_ORDER',
38
+ CONFLICTING_DESCRIPTIONS: 'CONFLICTING_DESCRIPTIONS',
39
+ INCONSISTENT_DECISION: 'INCONSISTENT_DECISION',
40
+ // vault_integrity
41
+ DUPLICATE_ID: 'DUPLICATE_ID',
42
+ MISSING_ID: 'MISSING_ID',
43
+ UNRESOLVED_WIKILINK: 'UNRESOLVED_WIKILINK',
44
+ AMBIGUOUS_ALIAS: 'AMBIGUOUS_ALIAS',
45
+ ORPHAN_NOTE: 'ORPHAN_NOTE',
46
+ ARCHIVE_PLACEMENT_ERROR: 'ARCHIVE_PLACEMENT_ERROR',
47
+ EMPTY_TYPED_NOTE: 'EMPTY_TYPED_NOTE',
48
+ TITLE_ID_COLLISION: 'TITLE_ID_COLLISION',
49
+ POTENTIAL_SECRET_LEAK: 'POTENTIAL_SECRET_LEAK',
50
+ TYPE_FOLDER_MISMATCH: 'TYPE_FOLDER_MISMATCH',
51
+ APPLY_IN_PROGRESS: 'APPLY_IN_PROGRESS',
52
+ ARCHIVED_TARGET: 'ARCHIVED_TARGET',
53
+ };
54
+ /**
55
+ * JSON contract version for VerifyReport. Bump this when the shape of the
56
+ * report changes in a way that breaks existing consumers.
57
+ */
58
+ export const VERIFY_REPORT_SCHEMA_VERSION = '1.0.0';
2
59
  //# sourceMappingURL=verify.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/types/verify.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/types/verify.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,eAAe;IACf,eAAe,EAAE,iBAAiB;IAClC,oBAAoB,EAAE,sBAAsB;IAC5C,qBAAqB,EAAE,uBAAuB;IAC9C,aAAa,EAAE,eAAe;IAC9B,kBAAkB,EAAE,oBAAoB;IACxC,YAAY,EAAE,cAAc;IAC5B,uBAAuB,EAAE,yBAAyB;IAClD,sBAAsB,EAAE,wBAAwB;IAEhD,cAAc;IACd,uBAAuB,EAAE,yBAAyB;IAClD,oBAAoB,EAAE,sBAAsB;IAC5C,uBAAuB,EAAE,yBAAyB;IAClD,sBAAsB,EAAE,wBAAwB;IAChD,sBAAsB,EAAE,wBAAwB;IAChD,kBAAkB,EAAE,oBAAoB;IACxC,UAAU,EAAE,YAAY;IACxB,yBAAyB,EAAE,2BAA2B;IACtD,iBAAiB,EAAE,mBAAmB;IACtC,uBAAuB,EAAE,yBAAyB;IAClD,eAAe,EAAE,iBAAiB;IAClC,0BAA0B,EAAE,4BAA4B;IACxD,oCAAoC,EAAE,sCAAsC;IAC5E,eAAe,EAAE,iBAAiB;IAClC,qBAAqB,EAAE,uBAAuB;IAE9C,YAAY;IACZ,uBAAuB,EAAE,yBAAyB;IAClD,wBAAwB,EAAE,0BAA0B;IACpD,4BAA4B,EAAE,8BAA8B;IAC5D,6BAA6B,EAAE,+BAA+B;IAC9D,gBAAgB,EAAE,kBAAkB;IACpC,YAAY,EAAE,cAAc;IAC5B,wBAAwB,EAAE,0BAA0B;IACpD,qBAAqB,EAAE,uBAAuB;IAE9C,kBAAkB;IAClB,YAAY,EAAE,cAAc;IAC5B,UAAU,EAAE,YAAY;IACxB,mBAAmB,EAAE,qBAAqB;IAC1C,eAAe,EAAE,iBAAiB;IAClC,WAAW,EAAE,aAAa;IAC1B,uBAAuB,EAAE,yBAAyB;IAClD,gBAAgB,EAAE,kBAAkB;IACpC,kBAAkB,EAAE,oBAAoB;IACxC,qBAAqB,EAAE,uBAAuB;IAC9C,oBAAoB,EAAE,sBAAsB;IAC5C,iBAAiB,EAAE,mBAAmB;IACtC,eAAe,EAAE,iBAAiB;CAC1B,CAAC;AAcX;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,OAAO,CAAC"}
@@ -0,0 +1,9 @@
1
+ export interface ReadConventionsDeps {
2
+ readFile: (filePath: string) => string;
3
+ }
4
+ /**
5
+ * Read project conventions from wiki/00-meta/conventions.md (best-effort).
6
+ * Returns undefined if the file doesn't exist or is empty.
7
+ */
8
+ export declare function readConventionsContent(vaultRoot: string, deps: ReadConventionsDeps): string | undefined;
9
+ //# sourceMappingURL=conventions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conventions.d.ts","sourceRoot":"","sources":["../../src/utils/conventions.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;CACxC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,mBAAmB,GACxB,MAAM,GAAG,SAAS,CAUpB"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Shared utility for reading project conventions from wiki/00-meta/conventions.md.
3
+ * Used by propose and continue workflows to inject project rules into agent context.
4
+ */
5
+ import * as path from 'node:path';
6
+ /**
7
+ * Read project conventions from wiki/00-meta/conventions.md (best-effort).
8
+ * Returns undefined if the file doesn't exist or is empty.
9
+ */
10
+ export function readConventionsContent(vaultRoot, deps) {
11
+ try {
12
+ const conventionsPath = path.join(vaultRoot, 'wiki', '00-meta', 'conventions.md');
13
+ const content = deps.readFile(conventionsPath);
14
+ const stripped = content.replace(/^---[\s\S]*?---\s*/, '');
15
+ const trimmed = stripped.trim();
16
+ return trimmed.length > 0 ? trimmed : undefined;
17
+ }
18
+ catch {
19
+ return undefined;
20
+ }
21
+ }
22
+ //# sourceMappingURL=conventions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conventions.js","sourceRoot":"","sources":["../../src/utils/conventions.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAMlC;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,SAAiB,EACjB,IAAyB;IAEzB,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;QAClF,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"id-generator.d.ts","sourceRoot":"","sources":["../../src/utils/id-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAQhE"}
1
+ {"version":3,"file":"id-generator.d.ts","sourceRoot":"","sources":["../../src/utils/id-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAiBhE"}
@@ -14,11 +14,19 @@
14
14
  */
15
15
  export function generateId(type, title) {
16
16
  const slug = title
17
+ .normalize('NFC') // Unicode normalization for consistent macOS NFD / Linux NFC compare
17
18
  .toLowerCase()
18
19
  .replace(/[\s_]+/g, '-')
19
20
  .replace(/[^\p{L}\p{N}-]/gu, '')
20
21
  .replace(/-+/g, '-')
21
22
  .replace(/^-|-$/g, '');
23
+ // If the title degenerates to an empty slug (e.g., "!!!" or " "),
24
+ // fall back to a timestamp-based slug so we never produce an ID like "feature-"
25
+ // which would fail schema validation and collide with other degenerate titles.
26
+ if (slug.length === 0) {
27
+ const timestamp = Date.now().toString(36);
28
+ return `${type}-untitled-${timestamp}`;
29
+ }
22
30
  return `${type}-${slug}`;
23
31
  }
24
32
  //# sourceMappingURL=id-generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"id-generator.js","sourceRoot":"","sources":["../../src/utils/id-generator.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,UAAU,CAAC,IAAc,EAAE,KAAa;IACtD,MAAM,IAAI,GAAG,KAAK;SACf,WAAW,EAAE;SACb,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACzB,OAAO,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"id-generator.js","sourceRoot":"","sources":["../../src/utils/id-generator.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,UAAU,CAAC,IAAc,EAAE,KAAa;IACtD,MAAM,IAAI,GAAG,KAAK;SACf,SAAS,CAAC,KAAK,CAAC,CAAE,qEAAqE;SACvF,WAAW,EAAE;SACb,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAEzB,oEAAoE;IACpE,gFAAgF;IAChF,+EAA+E;IAC/E,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC1C,OAAO,GAAG,IAAI,aAAa,SAAS,EAAE,CAAC;IACzC,CAAC;IACD,OAAO,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;AAC3B,CAAC"}
@@ -1,11 +1,14 @@
1
1
  /**
2
- * Normalize a string for comparison: trim, collapse whitespace, lowercase.
2
+ * Normalize a string for comparison: strip invisible chars, Unicode NFC,
3
+ * trim, collapse whitespace, lowercase.
4
+ * NFC ensures macOS NFD-encoded filenames compare equal to NFC-encoded ones.
3
5
  */
4
6
  export declare function normalizeString(input: string): string;
5
7
  /**
6
- * Normalize text for content hashing: trim and collapse all whitespace to single spaces.
7
- * Case is preserved (hashing is case-sensitive).
8
- * Deterministic regardless of line endings (CRLF vs LF).
8
+ * Normalize text for content hashing: strip invisible chars, Unicode NFC,
9
+ * trim, collapse whitespace. Case is preserved (hashing is case-sensitive).
10
+ * Deterministic regardless of line endings (CRLF vs LF), Unicode form
11
+ * (NFC vs NFD), and invisible character pollution.
9
12
  */
10
13
  export declare function normalizeForHash(text: string): string;
11
14
  //# sourceMappingURL=normalize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/utils/normalize.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD"}
1
+ {"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../src/utils/normalize.ts"],"names":[],"mappings":"AAyBA;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQrD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOrD"}
@@ -1,15 +1,52 @@
1
1
  /**
2
- * Normalize a string for comparison: trim, collapse whitespace, lowercase.
2
+ * Zero-width and invisible characters that are visually indistinguishable from
3
+ * empty but differ byte-for-byte. We strip these during normalization so that
4
+ * e.g. `Feature: Auth\u200D` and `Feature: Auth` compare equal. This also
5
+ * blocks trivial spoofing attacks where a malicious Feature title inserts a
6
+ * ZWJ to bypass duplicate detection.
7
+ *
8
+ * Includes: BOM (U+FEFF), ZWSP (U+200B), ZWNJ (U+200C), ZWJ (U+200D),
9
+ * ZWNBSP (U+FEFF), directional marks (U+200E/F, U+202A-E), word joiner (U+2060).
10
+ */
11
+ const INVISIBLE_CHARS_RE = /[\u200B-\u200F\u202A-\u202E\u2060\uFEFF]/g;
12
+ /**
13
+ * ASCII control characters (0x00-0x08, 0x0B, 0x0C, 0x0E-0x1F, 0x7F) that have
14
+ * no place in a note title, alias, or body comparison string. Tab (0x09),
15
+ * line feed (0x0A), and carriage return (0x0D) are preserved — downstream
16
+ * whitespace collapse handles them. Stripping the rest blocks:
17
+ * - BEL/backspace terminal escape tricks in log output
18
+ * - Spoofed titles that render identically but compare differently
19
+ * - DEL (0x7F) used to bypass slug dedup checks
20
+ * Without this, a record with `title: "Auth\x01"` would compare unequal to
21
+ * `"Auth"` and slip past the duplicate / alias resolution checks.
22
+ */
23
+ const CONTROL_CHARS_RE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g;
24
+ /**
25
+ * Normalize a string for comparison: strip invisible chars, Unicode NFC,
26
+ * trim, collapse whitespace, lowercase.
27
+ * NFC ensures macOS NFD-encoded filenames compare equal to NFC-encoded ones.
3
28
  */
4
29
  export function normalizeString(input) {
5
- return input.trim().replace(/\s+/g, ' ').toLowerCase();
30
+ return input
31
+ .replace(INVISIBLE_CHARS_RE, '')
32
+ .replace(CONTROL_CHARS_RE, '')
33
+ .normalize('NFC')
34
+ .trim()
35
+ .replace(/\s+/g, ' ')
36
+ .toLowerCase();
6
37
  }
7
38
  /**
8
- * Normalize text for content hashing: trim and collapse all whitespace to single spaces.
9
- * Case is preserved (hashing is case-sensitive).
10
- * Deterministic regardless of line endings (CRLF vs LF).
39
+ * Normalize text for content hashing: strip invisible chars, Unicode NFC,
40
+ * trim, collapse whitespace. Case is preserved (hashing is case-sensitive).
41
+ * Deterministic regardless of line endings (CRLF vs LF), Unicode form
42
+ * (NFC vs NFD), and invisible character pollution.
11
43
  */
12
44
  export function normalizeForHash(text) {
13
- return text.trim().replace(/\s+/g, ' ');
45
+ return text
46
+ .replace(INVISIBLE_CHARS_RE, '')
47
+ .replace(CONTROL_CHARS_RE, '')
48
+ .normalize('NFC')
49
+ .trim()
50
+ .replace(/\s+/g, ' ');
14
51
  }
15
52
  //# sourceMappingURL=normalize.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/utils/normalize.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"normalize.js","sourceRoot":"","sources":["../../src/utils/normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,kBAAkB,GAAG,2CAA2C,CAAC;AAEvE;;;;;;;;;;GAUG;AACH,MAAM,gBAAgB,GAAG,mCAAmC,CAAC;AAE7D;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,OAAO,KAAK;SACT,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;SAC7B,SAAS,CAAC,KAAK,CAAC;SAChB,IAAI,EAAE;SACN,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,WAAW,EAAE,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,IAAI;SACR,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;SAC/B,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;SAC7B,SAAS,CAAC,KAAK,CAAC;SAChB,IAAI,EAAE;SACN,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC1B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "open-wiki-spec",
3
- "version": "0.2.4",
3
+ "version": "0.3.0",
4
4
  "description": "Obsidian-first wiki workflow engine for specification management",
5
5
  "type": "module",
6
6
  "bin": {
@@ -13,7 +13,7 @@
13
13
  "test": "vitest run",
14
14
  "test:watch": "vitest",
15
15
  "typecheck": "tsc --noEmit",
16
- "prepublishOnly": "npm run build"
16
+ "prepublishOnly": "npm run typecheck && npm run test && npm run build"
17
17
  },
18
18
  "dependencies": {
19
19
  "@huggingface/transformers": "^3.0.0",
@@ -35,6 +35,7 @@
35
35
  "dist/",
36
36
  "bin/",
37
37
  "README.md",
38
+ "CHANGELOG.md",
38
39
  "LICENSE"
39
40
  ],
40
41
  "keywords": [