@lwelliott/cortex-cli 1.0.3

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 (335) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +159 -0
  3. package/dist/cli/audit.d.ts +3 -0
  4. package/dist/cli/audit.d.ts.map +1 -0
  5. package/dist/cli/audit.js +78 -0
  6. package/dist/cli/audit.js.map +1 -0
  7. package/dist/cli/doc.d.ts +3 -0
  8. package/dist/cli/doc.d.ts.map +1 -0
  9. package/dist/cli/doc.js +291 -0
  10. package/dist/cli/doc.js.map +1 -0
  11. package/dist/cli/entity.d.ts +3 -0
  12. package/dist/cli/entity.d.ts.map +1 -0
  13. package/dist/cli/entity.js +135 -0
  14. package/dist/cli/entity.js.map +1 -0
  15. package/dist/cli/format-selector.d.ts +30 -0
  16. package/dist/cli/format-selector.d.ts.map +1 -0
  17. package/dist/cli/format-selector.js +101 -0
  18. package/dist/cli/format-selector.js.map +1 -0
  19. package/dist/cli/formatters/audit-formatter.d.ts +33 -0
  20. package/dist/cli/formatters/audit-formatter.d.ts.map +1 -0
  21. package/dist/cli/formatters/audit-formatter.js +204 -0
  22. package/dist/cli/formatters/audit-formatter.js.map +1 -0
  23. package/dist/cli/formatters/json.d.ts +10 -0
  24. package/dist/cli/formatters/json.d.ts.map +1 -0
  25. package/dist/cli/formatters/json.js +31 -0
  26. package/dist/cli/formatters/json.js.map +1 -0
  27. package/dist/cli/formatters/markdown.d.ts +12 -0
  28. package/dist/cli/formatters/markdown.d.ts.map +1 -0
  29. package/dist/cli/formatters/markdown.js +341 -0
  30. package/dist/cli/formatters/markdown.js.map +1 -0
  31. package/dist/cli/formatters/quiet.d.ts +15 -0
  32. package/dist/cli/formatters/quiet.d.ts.map +1 -0
  33. package/dist/cli/formatters/quiet.js +75 -0
  34. package/dist/cli/formatters/quiet.js.map +1 -0
  35. package/dist/cli/formatters/table.d.ts +11 -0
  36. package/dist/cli/formatters/table.d.ts.map +1 -0
  37. package/dist/cli/formatters/table.js +726 -0
  38. package/dist/cli/formatters/table.js.map +1 -0
  39. package/dist/cli/graph.d.ts +3 -0
  40. package/dist/cli/graph.d.ts.map +1 -0
  41. package/dist/cli/graph.js +209 -0
  42. package/dist/cli/graph.js.map +1 -0
  43. package/dist/cli/index.d.ts +3 -0
  44. package/dist/cli/index.d.ts.map +1 -0
  45. package/dist/cli/index.js +144 -0
  46. package/dist/cli/index.js.map +1 -0
  47. package/dist/cli/lesson.d.ts +3 -0
  48. package/dist/cli/lesson.d.ts.map +1 -0
  49. package/dist/cli/lesson.js +85 -0
  50. package/dist/cli/lesson.js.map +1 -0
  51. package/dist/cli/project-resolver.d.ts +17 -0
  52. package/dist/cli/project-resolver.d.ts.map +1 -0
  53. package/dist/cli/project-resolver.js +25 -0
  54. package/dist/cli/project-resolver.js.map +1 -0
  55. package/dist/cli/project.d.ts +12 -0
  56. package/dist/cli/project.d.ts.map +1 -0
  57. package/dist/cli/project.js +169 -0
  58. package/dist/cli/project.js.map +1 -0
  59. package/dist/cli/relation.d.ts +3 -0
  60. package/dist/cli/relation.d.ts.map +1 -0
  61. package/dist/cli/relation.js +128 -0
  62. package/dist/cli/relation.js.map +1 -0
  63. package/dist/cli/review.d.ts +3 -0
  64. package/dist/cli/review.d.ts.map +1 -0
  65. package/dist/cli/review.js +131 -0
  66. package/dist/cli/review.js.map +1 -0
  67. package/dist/cli/router.d.ts +38 -0
  68. package/dist/cli/router.d.ts.map +1 -0
  69. package/dist/cli/router.js +49 -0
  70. package/dist/cli/router.js.map +1 -0
  71. package/dist/cli/schema.d.ts +3 -0
  72. package/dist/cli/schema.d.ts.map +1 -0
  73. package/dist/cli/schema.js +94 -0
  74. package/dist/cli/schema.js.map +1 -0
  75. package/dist/cli/sprint.d.ts +12 -0
  76. package/dist/cli/sprint.d.ts.map +1 -0
  77. package/dist/cli/sprint.js +200 -0
  78. package/dist/cli/sprint.js.map +1 -0
  79. package/dist/cli/task.d.ts +12 -0
  80. package/dist/cli/task.d.ts.map +1 -0
  81. package/dist/cli/task.js +252 -0
  82. package/dist/cli/task.js.map +1 -0
  83. package/dist/cli/test-report.d.ts +3 -0
  84. package/dist/cli/test-report.d.ts.map +1 -0
  85. package/dist/cli/test-report.js +134 -0
  86. package/dist/cli/test-report.js.map +1 -0
  87. package/dist/cli/validate.d.ts +8 -0
  88. package/dist/cli/validate.d.ts.map +1 -0
  89. package/dist/cli/validate.js +86 -0
  90. package/dist/cli/validate.js.map +1 -0
  91. package/dist/config/config.d.ts +18 -0
  92. package/dist/config/config.d.ts.map +1 -0
  93. package/dist/config/config.js +70 -0
  94. package/dist/config/config.js.map +1 -0
  95. package/dist/config/registry.d.ts +52 -0
  96. package/dist/config/registry.d.ts.map +1 -0
  97. package/dist/config/registry.js +193 -0
  98. package/dist/config/registry.js.map +1 -0
  99. package/dist/config/resolver.d.ts +26 -0
  100. package/dist/config/resolver.d.ts.map +1 -0
  101. package/dist/config/resolver.js +87 -0
  102. package/dist/config/resolver.js.map +1 -0
  103. package/dist/db/builtin-schema-constants.d.ts +109 -0
  104. package/dist/db/builtin-schema-constants.d.ts.map +1 -0
  105. package/dist/db/builtin-schema-constants.js +32 -0
  106. package/dist/db/builtin-schema-constants.js.map +1 -0
  107. package/dist/db/connection.d.ts +34 -0
  108. package/dist/db/connection.d.ts.map +1 -0
  109. package/dist/db/connection.js +140 -0
  110. package/dist/db/connection.js.map +1 -0
  111. package/dist/db/generated/schema-types.d.ts +134 -0
  112. package/dist/db/generated/schema-types.d.ts.map +1 -0
  113. package/dist/db/generated/schema-types.js +31 -0
  114. package/dist/db/generated/schema-types.js.map +1 -0
  115. package/dist/db/locks.d.ts +106 -0
  116. package/dist/db/locks.d.ts.map +1 -0
  117. package/dist/db/locks.js +211 -0
  118. package/dist/db/locks.js.map +1 -0
  119. package/dist/db/migration.d.ts +65 -0
  120. package/dist/db/migration.d.ts.map +1 -0
  121. package/dist/db/migration.js +233 -0
  122. package/dist/db/migration.js.map +1 -0
  123. package/dist/db/retry.d.ts +26 -0
  124. package/dist/db/retry.d.ts.map +1 -0
  125. package/dist/db/retry.js +71 -0
  126. package/dist/db/retry.js.map +1 -0
  127. package/dist/db/schema.d.ts +21 -0
  128. package/dist/db/schema.d.ts.map +1 -0
  129. package/dist/db/schema.js +830 -0
  130. package/dist/db/schema.js.map +1 -0
  131. package/dist/models/common.d.ts +27 -0
  132. package/dist/models/common.d.ts.map +1 -0
  133. package/dist/models/common.js +4 -0
  134. package/dist/models/common.js.map +1 -0
  135. package/dist/models/document.d.ts +89 -0
  136. package/dist/models/document.d.ts.map +1 -0
  137. package/dist/models/document.js +5 -0
  138. package/dist/models/document.js.map +1 -0
  139. package/dist/models/entity-model.d.ts +30 -0
  140. package/dist/models/entity-model.d.ts.map +1 -0
  141. package/dist/models/entity-model.js +99 -0
  142. package/dist/models/entity-model.js.map +1 -0
  143. package/dist/models/entity.d.ts +88 -0
  144. package/dist/models/entity.d.ts.map +1 -0
  145. package/dist/models/entity.js +5 -0
  146. package/dist/models/entity.js.map +1 -0
  147. package/dist/models/graph-schema.d.ts +43 -0
  148. package/dist/models/graph-schema.d.ts.map +1 -0
  149. package/dist/models/graph-schema.js +76 -0
  150. package/dist/models/graph-schema.js.map +1 -0
  151. package/dist/models/project.d.ts +49 -0
  152. package/dist/models/project.d.ts.map +1 -0
  153. package/dist/models/project.js +18 -0
  154. package/dist/models/project.js.map +1 -0
  155. package/dist/models/relation.d.ts +35 -0
  156. package/dist/models/relation.d.ts.map +1 -0
  157. package/dist/models/relation.js +212 -0
  158. package/dist/models/relation.js.map +1 -0
  159. package/dist/models/review.d.ts +86 -0
  160. package/dist/models/review.d.ts.map +1 -0
  161. package/dist/models/review.js +5 -0
  162. package/dist/models/review.js.map +1 -0
  163. package/dist/models/sprint.d.ts +38 -0
  164. package/dist/models/sprint.d.ts.map +1 -0
  165. package/dist/models/sprint.js +4 -0
  166. package/dist/models/sprint.js.map +1 -0
  167. package/dist/models/task.d.ts +75 -0
  168. package/dist/models/task.d.ts.map +1 -0
  169. package/dist/models/task.js +4 -0
  170. package/dist/models/task.js.map +1 -0
  171. package/dist/models/validation.d.ts +25 -0
  172. package/dist/models/validation.d.ts.map +1 -0
  173. package/dist/models/validation.js +4 -0
  174. package/dist/models/validation.js.map +1 -0
  175. package/dist/services/audit-check-service.d.ts +16 -0
  176. package/dist/services/audit-check-service.d.ts.map +1 -0
  177. package/dist/services/audit-check-service.js +137 -0
  178. package/dist/services/audit-check-service.js.map +1 -0
  179. package/dist/services/audit-checks/dangling-relations-check.d.ts +7 -0
  180. package/dist/services/audit-checks/dangling-relations-check.d.ts.map +1 -0
  181. package/dist/services/audit-checks/dangling-relations-check.js +52 -0
  182. package/dist/services/audit-checks/dangling-relations-check.js.map +1 -0
  183. package/dist/services/audit-checks/duplicate-ids-check.d.ts +4 -0
  184. package/dist/services/audit-checks/duplicate-ids-check.d.ts.map +1 -0
  185. package/dist/services/audit-checks/duplicate-ids-check.js +49 -0
  186. package/dist/services/audit-checks/duplicate-ids-check.js.map +1 -0
  187. package/dist/services/audit-checks/fix-engine.d.ts +24 -0
  188. package/dist/services/audit-checks/fix-engine.d.ts.map +1 -0
  189. package/dist/services/audit-checks/fix-engine.js +114 -0
  190. package/dist/services/audit-checks/fix-engine.js.map +1 -0
  191. package/dist/services/audit-checks/fr-nfr-to-fs-nfs-check.d.ts +9 -0
  192. package/dist/services/audit-checks/fr-nfr-to-fs-nfs-check.d.ts.map +1 -0
  193. package/dist/services/audit-checks/fr-nfr-to-fs-nfs-check.js +56 -0
  194. package/dist/services/audit-checks/fr-nfr-to-fs-nfs-check.js.map +1 -0
  195. package/dist/services/audit-checks/fs-nfs-to-sad-ad-qa-check.d.ts +10 -0
  196. package/dist/services/audit-checks/fs-nfs-to-sad-ad-qa-check.d.ts.map +1 -0
  197. package/dist/services/audit-checks/fs-nfs-to-sad-ad-qa-check.js +57 -0
  198. package/dist/services/audit-checks/fs-nfs-to-sad-ad-qa-check.js.map +1 -0
  199. package/dist/services/audit-checks/fs-nfs-to-ts-check.d.ts +9 -0
  200. package/dist/services/audit-checks/fs-nfs-to-ts-check.d.ts.map +1 -0
  201. package/dist/services/audit-checks/fs-nfs-to-ts-check.js +56 -0
  202. package/dist/services/audit-checks/fs-nfs-to-ts-check.js.map +1 -0
  203. package/dist/services/audit-checks/inverse-consistency-check.d.ts +7 -0
  204. package/dist/services/audit-checks/inverse-consistency-check.d.ts.map +1 -0
  205. package/dist/services/audit-checks/inverse-consistency-check.js +54 -0
  206. package/dist/services/audit-checks/inverse-consistency-check.js.map +1 -0
  207. package/dist/services/audit-checks/mapping-check.d.ts +4 -0
  208. package/dist/services/audit-checks/mapping-check.d.ts.map +1 -0
  209. package/dist/services/audit-checks/mapping-check.js +74 -0
  210. package/dist/services/audit-checks/mapping-check.js.map +1 -0
  211. package/dist/services/audit-checks/orphan-documents-check.d.ts +9 -0
  212. package/dist/services/audit-checks/orphan-documents-check.d.ts.map +1 -0
  213. package/dist/services/audit-checks/orphan-documents-check.js +54 -0
  214. package/dist/services/audit-checks/orphan-documents-check.js.map +1 -0
  215. package/dist/services/audit-checks/orphan-entities-check.d.ts +4 -0
  216. package/dist/services/audit-checks/orphan-entities-check.d.ts.map +1 -0
  217. package/dist/services/audit-checks/orphan-entities-check.js +39 -0
  218. package/dist/services/audit-checks/orphan-entities-check.js.map +1 -0
  219. package/dist/services/audit-checks/sad-ad-qa-tc-to-src-check.d.ts +9 -0
  220. package/dist/services/audit-checks/sad-ad-qa-tc-to-src-check.d.ts.map +1 -0
  221. package/dist/services/audit-checks/sad-ad-qa-tc-to-src-check.js +56 -0
  222. package/dist/services/audit-checks/sad-ad-qa-tc-to-src-check.js.map +1 -0
  223. package/dist/services/audit-checks/sprint-consistency-check.d.ts +4 -0
  224. package/dist/services/audit-checks/sprint-consistency-check.d.ts.map +1 -0
  225. package/dist/services/audit-checks/sprint-consistency-check.js +80 -0
  226. package/dist/services/audit-checks/sprint-consistency-check.js.map +1 -0
  227. package/dist/services/audit-checks/src-filesystem-only-check.d.ts +10 -0
  228. package/dist/services/audit-checks/src-filesystem-only-check.d.ts.map +1 -0
  229. package/dist/services/audit-checks/src-filesystem-only-check.js +106 -0
  230. package/dist/services/audit-checks/src-filesystem-only-check.js.map +1 -0
  231. package/dist/services/audit-checks/ts-to-tc-check.d.ts +10 -0
  232. package/dist/services/audit-checks/ts-to-tc-check.d.ts.map +1 -0
  233. package/dist/services/audit-checks/ts-to-tc-check.js +58 -0
  234. package/dist/services/audit-checks/ts-to-tc-check.js.map +1 -0
  235. package/dist/services/audit-checks/type-mismatch-check.d.ts +4 -0
  236. package/dist/services/audit-checks/type-mismatch-check.d.ts.map +1 -0
  237. package/dist/services/audit-checks/type-mismatch-check.js +55 -0
  238. package/dist/services/audit-checks/type-mismatch-check.js.map +1 -0
  239. package/dist/services/audit-checks/types.d.ts +66 -0
  240. package/dist/services/audit-checks/types.d.ts.map +1 -0
  241. package/dist/services/audit-checks/types.js +30 -0
  242. package/dist/services/audit-checks/types.js.map +1 -0
  243. package/dist/services/audit-checks/us-to-fr-nfr-check.d.ts +9 -0
  244. package/dist/services/audit-checks/us-to-fr-nfr-check.d.ts.map +1 -0
  245. package/dist/services/audit-checks/us-to-fr-nfr-check.js +56 -0
  246. package/dist/services/audit-checks/us-to-fr-nfr-check.js.map +1 -0
  247. package/dist/services/doc-entity-mapping.d.ts +19 -0
  248. package/dist/services/doc-entity-mapping.d.ts.map +1 -0
  249. package/dist/services/doc-entity-mapping.js +35 -0
  250. package/dist/services/doc-entity-mapping.js.map +1 -0
  251. package/dist/services/document-service.d.ts +58 -0
  252. package/dist/services/document-service.d.ts.map +1 -0
  253. package/dist/services/document-service.js +409 -0
  254. package/dist/services/document-service.js.map +1 -0
  255. package/dist/services/graph-export-service.d.ts +12 -0
  256. package/dist/services/graph-export-service.d.ts.map +1 -0
  257. package/dist/services/graph-export-service.js +112 -0
  258. package/dist/services/graph-export-service.js.map +1 -0
  259. package/dist/services/graph-service.d.ts +21 -0
  260. package/dist/services/graph-service.d.ts.map +1 -0
  261. package/dist/services/graph-service.js +49 -0
  262. package/dist/services/graph-service.js.map +1 -0
  263. package/dist/services/graph-validation-service.d.ts +13 -0
  264. package/dist/services/graph-validation-service.d.ts.map +1 -0
  265. package/dist/services/graph-validation-service.js +171 -0
  266. package/dist/services/graph-validation-service.js.map +1 -0
  267. package/dist/services/project.d.ts +80 -0
  268. package/dist/services/project.d.ts.map +1 -0
  269. package/dist/services/project.js +256 -0
  270. package/dist/services/project.js.map +1 -0
  271. package/dist/services/review-service.d.ts +81 -0
  272. package/dist/services/review-service.d.ts.map +1 -0
  273. package/dist/services/review-service.js +242 -0
  274. package/dist/services/review-service.js.map +1 -0
  275. package/dist/services/schema-migration-service.d.ts +44 -0
  276. package/dist/services/schema-migration-service.d.ts.map +1 -0
  277. package/dist/services/schema-migration-service.js +894 -0
  278. package/dist/services/schema-migration-service.js.map +1 -0
  279. package/dist/services/sprint.d.ts +71 -0
  280. package/dist/services/sprint.d.ts.map +1 -0
  281. package/dist/services/sprint.js +238 -0
  282. package/dist/services/sprint.js.map +1 -0
  283. package/dist/services/stage-validator.d.ts +36 -0
  284. package/dist/services/stage-validator.d.ts.map +1 -0
  285. package/dist/services/stage-validator.js +78 -0
  286. package/dist/services/stage-validator.js.map +1 -0
  287. package/dist/services/task.d.ts +75 -0
  288. package/dist/services/task.d.ts.map +1 -0
  289. package/dist/services/task.js +487 -0
  290. package/dist/services/task.js.map +1 -0
  291. package/dist/services/validation.d.ts +24 -0
  292. package/dist/services/validation.d.ts.map +1 -0
  293. package/dist/services/validation.js +53 -0
  294. package/dist/services/validation.js.map +1 -0
  295. package/dist/state-machines/sprint-state.d.ts +25 -0
  296. package/dist/state-machines/sprint-state.d.ts.map +1 -0
  297. package/dist/state-machines/sprint-state.js +64 -0
  298. package/dist/state-machines/sprint-state.js.map +1 -0
  299. package/dist/state-machines/task-state.d.ts +31 -0
  300. package/dist/state-machines/task-state.d.ts.map +1 -0
  301. package/dist/state-machines/task-state.js +83 -0
  302. package/dist/state-machines/task-state.js.map +1 -0
  303. package/dist/utils/errors.d.ts +673 -0
  304. package/dist/utils/errors.d.ts.map +1 -0
  305. package/dist/utils/errors.js +1447 -0
  306. package/dist/utils/errors.js.map +1 -0
  307. package/dist/utils/format.d.ts +52 -0
  308. package/dist/utils/format.d.ts.map +1 -0
  309. package/dist/utils/format.js +65 -0
  310. package/dist/utils/format.js.map +1 -0
  311. package/dist/validators/board-integrity.d.ts +25 -0
  312. package/dist/validators/board-integrity.d.ts.map +1 -0
  313. package/dist/validators/board-integrity.js +102 -0
  314. package/dist/validators/board-integrity.js.map +1 -0
  315. package/dist/validators/board-shape.d.ts +13 -0
  316. package/dist/validators/board-shape.d.ts.map +1 -0
  317. package/dist/validators/board-shape.js +74 -0
  318. package/dist/validators/board-shape.js.map +1 -0
  319. package/dist/validators/owner-validator.d.ts +30 -0
  320. package/dist/validators/owner-validator.d.ts.map +1 -0
  321. package/dist/validators/owner-validator.js +70 -0
  322. package/dist/validators/owner-validator.js.map +1 -0
  323. package/dist/validators/spawn-legality.d.ts +19 -0
  324. package/dist/validators/spawn-legality.d.ts.map +1 -0
  325. package/dist/validators/spawn-legality.js +77 -0
  326. package/dist/validators/spawn-legality.js.map +1 -0
  327. package/dist/validators/state-field-checker.d.ts +8 -0
  328. package/dist/validators/state-field-checker.d.ts.map +1 -0
  329. package/dist/validators/state-field-checker.js +47 -0
  330. package/dist/validators/state-field-checker.js.map +1 -0
  331. package/dist/validators/state-field-recorder.d.ts +39 -0
  332. package/dist/validators/state-field-recorder.d.ts.map +1 -0
  333. package/dist/validators/state-field-recorder.js +62 -0
  334. package/dist/validators/state-field-recorder.js.map +1 -0
  335. package/package.json +53 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 elliott
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,159 @@
1
+ # cortex-cli
2
+
3
+ A TypeScript CLI for managing software project artifacts (sprints, kanban, graph, documents, reviews) backed by SQLite, safe for concurrent multi-process access.
4
+
5
+ **Version:** 1.0.3
6
+
7
+ ## Features
8
+
9
+ ### Project Management
10
+ - `project init <name>` — Initialize a new project with SQLite database
11
+ - `project info` — Display project overview and sprint summary
12
+
13
+ ### Sprint Lifecycle
14
+ - `sprint init <id>` — Create a new sprint (PLANNING state)
15
+ - `sprint start` — Begin sprint execution (IN EXECUTION)
16
+ - `sprint close` — Close sprint after review (CLOSED)
17
+ - `sprint status` — Display sprint overview and task breakdown
18
+ - `sprint update` — Update sprint name or goal
19
+ - `-p <project>` — Target a specific project
20
+
21
+ ### Task Management
22
+ - `task add [id]` — Add task to sprint with optional positional ID (4-digit NNNN format)
23
+ - `task move <id> <state>` — Move task between kanban states
24
+ - `task update <id>` — Update task metadata (owner, notes)
25
+ - `task remove <id>` — Permanently delete a task
26
+ - `task info <id>` — Display task details
27
+
28
+ ### Audit Command
29
+ - `audit` — Run all 11 audit checks (4 integrity + 7 traceability)
30
+ - `audit --checks <name,...>` — Run specific checks
31
+ - `audit --fix` — Auto-fix supported issues
32
+
33
+ **Traceability Checks (v1.0.0):**
34
+ - `us-to-fr-nfr` — Verify US→FR/NFR traceability
35
+ - `fr-nfr-to-fs-nfs` — Verify FR/NFR→FS/NFS traceability
36
+ - `fs-nfs-to-sad-ad-qa` — Verify FS/NFS→SAD/AD/QA traceability
37
+ - `fs-nfs-to-ts` — Verify FS/NFS→TS traceability
38
+ - `ts-to-tc` — Verify TS→TC traceability (severity: error)
39
+ - `sad-ad-qa-tc-to-src` — Verify SAD/AD/QA/TC→SRC traceability
40
+ - `src-filesystem-only` — Verify SRC files exist on filesystem
41
+
42
+ ### Board Validation
43
+ - `validate board` — Check board shape, integrity, and state fields
44
+ - `validate spawn --sprint --task --stage --role` — Validate spawn legality
45
+
46
+ ### Optional --sprint
47
+ - `--sprint` is now optional for task, review, and test-report subcommands
48
+ - Defaults to the most recently created sprint with status ≠ CLOSED
49
+
50
+ ### Knowledge Graph
51
+ - Schema auto-initialized from `project-schema.yaml` during `project create` (18 relation types, entity types derived from doc types)
52
+ - `graph entity create/get/query/update/delete` — Entity CRUD
53
+ - `graph relation relate/unrelate/related` — Relation management
54
+ - `graph validate` — Check graph integrity
55
+ - `graph export` — Export graph data
56
+ - `graph status` — Show graph schema status
57
+ - `graph list-types` — List entity and relation types (entity types derived dynamically from documents)
58
+ - `graph migrate [--phase]` — Run 9-phase schema migration (entity-types-drop, tr-relations-cleanup, urd-migration, add-new-relations, update-surviving-relations, traceability-rebuild, remove-old-relations, yaml-finalization, verification)
59
+
60
+ ### Document Registry
61
+ - `doc add <id> --type --title` — Register documents (inline or file-based content). `doc register` is a hidden alias.
62
+ - `doc list [--type] [--limit] [--offset] [--order-by] [--count-only]` — List documents with pagination and sorting
63
+ - `doc show <id>` — Display document details
64
+ - `doc search <query> [--type] [--limit] [--offset] [--order-by] [--count-only]` — FTS5 full-text search with ranking, pagination, and type filter
65
+ - `doc update <id>` / `doc remove <id>` — Modify or remove document registrations (permanent delete)
66
+ - **Task move refactoring:** Removed --sprint, --review-notes from task move; changed --reviewer to --owner; added --stage with dual validation; task update no longer accepts --owner, --sprint, --stage
67
+ - **Audit improvements:** Added orphan-documents check (optionally sprint-scoped) and inverse-consistency check; --fix/--fix-dry-run support for dangling-relations; MISSING_INVERSE fix case in FixEngine; fixCount per-category reporting in --fix-dry-run output
68
+ - **Doc-Entity Auto-Sync:** Registering a document auto-creates a 1:1 graph entity; removing a document auto-deletes the entity and its relations; updating a document's type syncs the entity accordingly
69
+
70
+ ### Review & Reporting
71
+ - `review add <id>` — Create reviews with positional 4-digit NNNN ID
72
+ - `review list [--sprint]` / `review show <id>` / `review show --sprint <id>` — Browse review records
73
+ - `test-report add <id>` — Record test execution results with positional 4-digit NNNN ID
74
+ - `test-report list` — Browse test reports
75
+ - `lesson add --sprint --title` — Record lessons learned
76
+ - `lesson show` — Display lesson content and timestamps (content-only, no metadata)
77
+ - `lesson update` — Update lesson content (upsert; `--content-file` required)
78
+ - `--content-file <path>` — Import content from external files (lesson, document create/update)
79
+ - `task show <id> --sprint <sprint-id>` — Display task details (sprint-scoped validation)
80
+ - `test-report show <id> --sprint <sprint-id>` — Display test report details (sprint-scoped validation)
81
+
82
+ ### Database Audit
83
+ - `audit` — Run database integrity checks (4 checks: dangling-relations, duplicate-ids, orphan-documents, inverse-consistency)
84
+ - `--sprint <id>` — Scope checks to a specific sprint (where applicable)
85
+ - `--checks <list>` — Run only specified checks
86
+ - `--fix` — Auto-fix fixable issues with transaction safety (dangling-relations removal, inverse-consistency inverse creation)
87
+ - `--fix-dry-run` — Preview fixes without applying, with per-category fix count reporting
88
+ - `--format terminal|json|markdown` — Output format (default: terminal)
89
+ - `--report-file <path>` — Write report to file
90
+ - Exit codes: 0=clean, 1=issues found, 2=error
91
+
92
+ ### Schema Migration
93
+ - `graph migrate [--phase]` — Execute type system migration (entity rename/remove, doc type migration, relation type updates)
94
+ - `graph status` — Show migration status
95
+
96
+ ### Output Formats
97
+ - `--format table|json|markdown|quiet` — Output format (project subcommands: table for list/actions, markdown for info/show)
98
+ - `--json` — Shorthand for JSON format
99
+ - `--quiet` — Minimal output (takes precedence over --format and --json)
100
+
101
+ ## Kanban States
102
+
103
+ **Sprint:** PLANNING → IN EXECUTION → CLOSING → CLOSED
104
+
105
+ **Task:** Backlog → To Do → In Progress → In Review → Done
106
+ - Escape states: Blocked (from any primary state), Dropped (from any primary state)
107
+ - Terminal states: Done (success), Dropped (abandon)
108
+
109
+ ## Installation
110
+
111
+ ```bash
112
+ npm install
113
+ npm run build
114
+ ```
115
+
116
+ ## Usage
117
+
118
+ ```bash
119
+ # Initialize a project
120
+ cortex project init my-project
121
+
122
+ # Create and start a sprint
123
+ cortex -p my-project sprint init sprint-001
124
+ cortex -p my-project sprint start
125
+
126
+ # Add and manage tasks
127
+ cortex -p my-project task add --title "Implement feature" --stage IMPL --owner coder
128
+ cortex -p my-project task move sprint-001-1 "In Progress"
129
+ cortex -p my-project task move sprint-001-1 "Done"
130
+
131
+ # Validate the board
132
+ cortex -p my-project validate board
133
+ cortex -p my-project validate spawn --sprint sprint-001 --task sprint-001-1 --stage IMPL --role coder
134
+
135
+ # Knowledge graph
136
+ cortex -p my-project graph bootstrap schema.yaml
137
+ cortex -p my-project entity create person-1 --type Person --props '{"name":"Alice"}'
138
+ cortex -p my-project relation create person-1 works_on project-1
139
+
140
+ # Document management
141
+ cortex -p my-project doc register design-doc --type design --title "System Design"
142
+ cortex -p my-project doc search "authentication"
143
+
144
+ # Close sprint
145
+ cortex -p my-project sprint close
146
+ ```
147
+
148
+ ## Development
149
+
150
+ ```bash
151
+ npm test # Run test suite (1095 tests)
152
+ npm run build # TypeScript compilation
153
+ npm run build:release # Build release binary
154
+ npm run lint # Type-check only
155
+ ```
156
+
157
+ ## License
158
+
159
+ MIT
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createAuditCommand(): Command;
3
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/cli/audit.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,kBAAkB,IAAI,OAAO,CAyE5C"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ // CLI audit command: cortex-cli audit [options]
3
+ // MOD-023: CLI Audit Command
4
+ // SAD-023: Full implementation of the audit command with 6 checks, fix engine, and formatter
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createAuditCommand = createAuditCommand;
7
+ const commander_1 = require("commander");
8
+ const connection_1 = require("../db/connection");
9
+ const migration_1 = require("../db/migration");
10
+ const project_resolver_1 = require("./project-resolver");
11
+ const audit_check_service_1 = require("../services/audit-check-service");
12
+ const audit_formatter_1 = require("./formatters/audit-formatter");
13
+ const format_selector_1 = require("./format-selector");
14
+ function createAuditCommand() {
15
+ const cmd = new commander_1.Command('audit')
16
+ .description('Run database integrity checks')
17
+ .option('--checks <list>', 'Comma-separated check names')
18
+ .option('--sprint <id>', 'Scope checks to a specific sprint')
19
+ .option('--fix', 'Auto-fix fixable issues')
20
+ .option('--fix-dry-run', 'Show what would be fixed without making changes')
21
+ .option('--report-file <path>', 'Write report to file')
22
+ .option('--format <format>', 'Output format (terminal, json, markdown)');
23
+ cmd.action(() => {
24
+ try {
25
+ const options = cmd.optsWithGlobals();
26
+ // Parse checks from --checks <list>
27
+ const checks = options.checks
28
+ ? options.checks.split(',').map((s) => s.trim()).filter(Boolean)
29
+ : undefined;
30
+ const sprintId = options.sprint;
31
+ const fix = options.fix;
32
+ const fixDryRun = options.fix_dryRun;
33
+ const reportFile = options.reportFile;
34
+ const formatOverride = options.format;
35
+ const dbPathOverride = options.project;
36
+ // Resolve project database path
37
+ const resolved = (0, project_resolver_1.resolveFromCLI)({ ...options, project: dbPathOverride });
38
+ const db = (0, connection_1.openConnection)(resolved.dbPath);
39
+ try {
40
+ (0, migration_1.initializeSchema)(db);
41
+ const report = (0, audit_check_service_1.runAudit)(db, {
42
+ checks,
43
+ sprintId,
44
+ fix,
45
+ fixDryRun,
46
+ reportFile,
47
+ format: formatOverride,
48
+ projectFolder: resolved.folder, // SAD-0037 §4.5: threaded for src-filesystem-only check
49
+ });
50
+ // Write report to file if requested
51
+ if (reportFile) {
52
+ const formatter = new audit_formatter_1.AuditReportFormatter();
53
+ formatter.writeToFile(report, reportFile, formatOverride);
54
+ }
55
+ // Print to stdout
56
+ const outputFormat = (0, audit_formatter_1.resolveFormat)(formatOverride, reportFile);
57
+ const formatter = new audit_formatter_1.AuditReportFormatter();
58
+ const output = formatter.format(report, outputFormat, true);
59
+ console.log(output);
60
+ if (report.exitCode !== 0) {
61
+ process.exitCode = report.exitCode;
62
+ }
63
+ }
64
+ finally {
65
+ db.close();
66
+ }
67
+ }
68
+ catch (err) {
69
+ const options = cmd.optsWithGlobals();
70
+ const auditFmt = options.format ?? 'terminal';
71
+ const outputFormat = auditFmt === 'json' ? 'json' : auditFmt === 'markdown' ? 'markdown' : 'table';
72
+ console.error((0, format_selector_1.formatErrorOutput)(err instanceof Error ? err : new Error(String(err)), outputFormat));
73
+ process.exit(1);
74
+ }
75
+ });
76
+ return cmd;
77
+ }
78
+ //# sourceMappingURL=audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/cli/audit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createDocGroup(): Command;
3
+ //# sourceMappingURL=doc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc.d.ts","sourceRoot":"","sources":["../../src/cli/doc.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiGpC,wBAAgB,cAAc,IAAI,OAAO,CAoLxC"}
@@ -0,0 +1,291 @@
1
+ "use strict";
2
+ // CLI subcommands for document group
3
+ // SAD-0003: MOD-012 Document Registry & Content
4
+ // SAD-0010: Atomic delete-after-import for --content-file
5
+ // URD-029 Group A: doc add canonical, doc register hidden alias, --hard removed from remove
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.createDocGroup = createDocGroup;
8
+ const commander_1 = require("commander");
9
+ const fs_1 = require("fs");
10
+ const document_service_1 = require("../services/document-service");
11
+ const connection_1 = require("../db/connection");
12
+ const migration_1 = require("../db/migration");
13
+ const project_resolver_1 = require("./project-resolver");
14
+ const format_selector_1 = require("./format-selector");
15
+ const errors_1 = require("../utils/errors");
16
+ function run(fn, optsOrCmd) {
17
+ try {
18
+ const opts = optsOrCmd instanceof commander_1.Command ? optsOrCmd.optsWithGlobals() : optsOrCmd;
19
+ console.log(fn(opts));
20
+ }
21
+ catch (err) {
22
+ const opts = optsOrCmd instanceof commander_1.Command ? optsOrCmd.optsWithGlobals() : optsOrCmd;
23
+ const format = (0, format_selector_1.selectFormat)({ quiet: opts.quiet, json: opts.json, format: opts.format });
24
+ console.error((0, format_selector_1.formatErrorOutput)(err instanceof Error ? err : new Error(String(err)), format));
25
+ process.exit(1);
26
+ }
27
+ }
28
+ /**
29
+ * Build the configuration for the doc add / register command.
30
+ * Returns an action callback wrapping the shared registration logic.
31
+ */
32
+ function buildDocAddAction() {
33
+ return (id, _opts, _cmd) => {
34
+ run((opts) => {
35
+ const format = (0, format_selector_1.selectFormat)(opts);
36
+ const resolved = (0, project_resolver_1.resolveFromCLI)(opts);
37
+ const db = (0, connection_1.openConnection)(resolved.dbPath);
38
+ const contentFilePath = opts.contentFile;
39
+ try {
40
+ (0, migration_1.initializeSchema)(db);
41
+ // Reject removed options (URD-G001)
42
+ if (opts.module !== undefined) {
43
+ throw new errors_1.DocumentUnknownOptionError('module', 'add');
44
+ }
45
+ if (opts.sprint !== undefined) {
46
+ throw new errors_1.DocumentUnknownOptionError('sprint', 'add');
47
+ }
48
+ let meta;
49
+ if (opts.meta) {
50
+ try {
51
+ meta = JSON.parse(opts.meta);
52
+ }
53
+ catch {
54
+ throw new errors_1.DocumentInvalidJsonError('--meta');
55
+ }
56
+ }
57
+ // Step 1: Read content file (before transaction — fail fast)
58
+ let content;
59
+ if (contentFilePath) {
60
+ try {
61
+ content = (0, fs_1.readFileSync)(contentFilePath, 'utf-8');
62
+ }
63
+ catch (err) {
64
+ const msg = err instanceof Error ? err.message : String(err);
65
+ throw new errors_1.DocumentFileError(contentFilePath, msg);
66
+ }
67
+ }
68
+ // Steps 3-5: DB write + commit (service passes content directly)
69
+ const result = (0, document_service_1.registerDocument)(db, id, opts.type, opts.title, {
70
+ path: opts.path,
71
+ contentStorage: opts.storage,
72
+ metadata: meta,
73
+ content,
74
+ });
75
+ // Step 6: Delete file after successful commit
76
+ if (contentFilePath) {
77
+ try {
78
+ (0, fs_1.unlinkSync)(contentFilePath);
79
+ }
80
+ catch { /* best effort */ }
81
+ }
82
+ return (0, format_selector_1.formatOutput)(result, format, 'document');
83
+ }
84
+ finally {
85
+ db.close();
86
+ }
87
+ }, _cmd);
88
+ };
89
+ }
90
+ /** Shared options definition for doc add and doc register (hidden alias) */
91
+ function buildDocAddOptions(cmd) {
92
+ return cmd
93
+ .argument('<id>', 'Document ID')
94
+ .requiredOption('--type <type>', 'Document type')
95
+ .requiredOption('--title <title>', 'Document title')
96
+ .option('--path <path>', 'Filesystem path')
97
+ .option('--storage <mode>', 'Storage mode (db, filesystem)', 'filesystem')
98
+ .option('--meta <json>', 'Metadata JSON')
99
+ .option('--content-file <path>', 'File to read content from');
100
+ }
101
+ function createDocGroup() {
102
+ const group = new commander_1.Command('doc').description('Document registry and content management');
103
+ // ── doc add (canonical per FS-SS-007-0001 v2) ──
104
+ const addCmd = new commander_1.Command('add')
105
+ .description('Register a new document');
106
+ buildDocAddOptions(addCmd).action(buildDocAddAction());
107
+ group.addCommand(addCmd);
108
+ // ── doc register (hidden alias per FS-SS-007-0001 v2 VR-002/VR-003) ──
109
+ const registerCmd = new commander_1.Command('register')
110
+ .description('Register a new document (alias for doc add)');
111
+ buildDocAddOptions(registerCmd).action(buildDocAddAction());
112
+ // Hide from primary help listing — use Commander's hidden option (FS-SS-007-0001 v2 VR-003)
113
+ group.addCommand(registerCmd, { hidden: true });
114
+ // doc list
115
+ group.command('list')
116
+ .description('List registered documents')
117
+ .option('--type <type>', 'Filter by type')
118
+ .option('--limit <n>', 'Maximum number of results')
119
+ .option('--offset <n>', 'Skip N results before returning')
120
+ .option('--order-by <key>', 'Sort by field: id (default), type, title, created, updated. Prefix + for asc, - for desc.')
121
+ .option('--count-only', 'Return only the total count instead of rows')
122
+ .action((_opts, _cmd) => {
123
+ run((opts) => {
124
+ const format = (0, format_selector_1.selectFormat)(opts);
125
+ const resolved = (0, project_resolver_1.resolveFromCLI)(opts);
126
+ const db = (0, connection_1.openConnection)(resolved.dbPath);
127
+ try {
128
+ (0, migration_1.initializeSchema)(db);
129
+ // Reject removed options (URD-G001)
130
+ if (opts.module !== undefined) {
131
+ throw new errors_1.DocumentUnknownOptionError('module', 'list');
132
+ }
133
+ if (opts.sprint !== undefined) {
134
+ throw new errors_1.DocumentUnknownOptionError('sprint', 'list');
135
+ }
136
+ if (opts.status !== undefined) {
137
+ throw new errors_1.DocumentUnknownOptionError('status', 'list');
138
+ }
139
+ const results = (0, document_service_1.listDocuments)(db, {
140
+ type: opts.type,
141
+ limit: opts.limit !== undefined ? Number(opts.limit) : undefined,
142
+ offset: opts.offset !== undefined ? Number(opts.offset) : undefined,
143
+ orderBy: opts.orderBy,
144
+ countOnly: opts.countOnly,
145
+ });
146
+ return (0, format_selector_1.formatOutput)(results, format, 'document');
147
+ }
148
+ finally {
149
+ db.close();
150
+ }
151
+ }, _cmd);
152
+ });
153
+ // doc show — default markdown (SAD-0010 Part A)
154
+ group.command('show')
155
+ .description('Show document details')
156
+ .argument('<id>', 'Document ID')
157
+ .action((id, _opts, _cmd) => {
158
+ run((opts) => {
159
+ const format = (0, format_selector_1.selectFormat)(opts, true); // isShowCommand = true → default markdown
160
+ const resolved = (0, project_resolver_1.resolveFromCLI)(opts);
161
+ const db = (0, connection_1.openConnection)(resolved.dbPath);
162
+ try {
163
+ (0, migration_1.initializeSchema)(db);
164
+ const result = (0, document_service_1.showDocument)(db, id);
165
+ return (0, format_selector_1.formatOutput)(result, format, 'document');
166
+ }
167
+ finally {
168
+ db.close();
169
+ }
170
+ }, _cmd);
171
+ });
172
+ // doc update — atomic delete-after-import (SAD-0010 Part D/E)
173
+ group.command('update')
174
+ .description('Update document metadata')
175
+ .argument('<id>', 'Document ID')
176
+ .option('--title <title>', 'New title')
177
+ .option('--type <type>', 'New type')
178
+ .option('--meta <json>', 'Replace metadata (full replace)')
179
+ .option('--storage <mode>', 'Change storage mode')
180
+ .option('--content-file <path>', 'Update content from file')
181
+ .action((id, _opts, _cmd) => {
182
+ run((opts) => {
183
+ const format = (0, format_selector_1.selectFormat)(opts);
184
+ const resolved = (0, project_resolver_1.resolveFromCLI)(opts);
185
+ const db = (0, connection_1.openConnection)(resolved.dbPath);
186
+ const contentFilePath = opts.contentFile;
187
+ try {
188
+ (0, migration_1.initializeSchema)(db);
189
+ // Reject removed options (URD-G001)
190
+ if (opts.status !== undefined) {
191
+ throw new errors_1.DocumentUnknownOptionError('status', 'update');
192
+ }
193
+ if (opts.module !== undefined) {
194
+ throw new errors_1.DocumentUnknownOptionError('module', 'update');
195
+ }
196
+ if (opts.sprint !== undefined) {
197
+ throw new errors_1.DocumentUnknownOptionError('sprint', 'update');
198
+ }
199
+ let meta;
200
+ if (opts.meta) {
201
+ try {
202
+ meta = JSON.parse(opts.meta);
203
+ }
204
+ catch {
205
+ throw new errors_1.DocumentInvalidJsonError('--meta');
206
+ }
207
+ }
208
+ // Step 1: Read content file (before transaction — fail fast)
209
+ let content;
210
+ if (contentFilePath) {
211
+ try {
212
+ content = (0, fs_1.readFileSync)(contentFilePath, 'utf-8');
213
+ }
214
+ catch (err) {
215
+ const msg = err instanceof Error ? err.message : String(err);
216
+ throw new errors_1.DocumentFileError(contentFilePath, msg);
217
+ }
218
+ }
219
+ const result = (0, document_service_1.updateDocument)(db, id, {
220
+ title: opts.title,
221
+ type: opts.type,
222
+ metadata: meta,
223
+ content_storage: opts.storage,
224
+ content,
225
+ });
226
+ // Step 6: Delete file after successful commit
227
+ if (contentFilePath && result) {
228
+ try {
229
+ (0, fs_1.unlinkSync)(contentFilePath);
230
+ }
231
+ catch { /* best effort */ }
232
+ }
233
+ return (0, format_selector_1.formatOutput)(result, format, 'document');
234
+ }
235
+ finally {
236
+ db.close();
237
+ }
238
+ }, _cmd);
239
+ });
240
+ // doc remove — always permanent delete (--hard removed per FS-SS-012-0005 v3 VR-003)
241
+ group.command('remove')
242
+ .description('Remove document registration (permanently deletes)')
243
+ .argument('<id>', 'Document ID')
244
+ .action((id, _opts, _cmd) => {
245
+ run((opts) => {
246
+ const format = (0, format_selector_1.selectFormat)(opts);
247
+ const resolved = (0, project_resolver_1.resolveFromCLI)(opts);
248
+ const db = (0, connection_1.openConnection)(resolved.dbPath);
249
+ try {
250
+ (0, migration_1.initializeSchema)(db);
251
+ (0, document_service_1.removeDocument)(db, id);
252
+ return (0, format_selector_1.formatOutput)({ removed: id }, format, 'document');
253
+ }
254
+ finally {
255
+ db.close();
256
+ }
257
+ }, _cmd);
258
+ });
259
+ // doc search
260
+ group.command('search')
261
+ .description('Full-text search across document contents')
262
+ .argument('<query>', 'Search query')
263
+ .option('--type <type>', 'Filter by document type')
264
+ .option('--limit <n>', 'Max results', '20')
265
+ .option('--offset <n>', 'Skip N results before returning')
266
+ .option('--order-by <key>', 'Sort by field: id, type, title. Overrides FTS5 BM25 ranking. Prefix + for asc, - for desc.')
267
+ .option('--count-only', 'Return only the total hit count instead of rows')
268
+ .action((query, _opts, _cmd) => {
269
+ run((opts) => {
270
+ const format = (0, format_selector_1.selectFormat)(opts);
271
+ const resolved = (0, project_resolver_1.resolveFromCLI)(opts);
272
+ const db = (0, connection_1.openConnection)(resolved.dbPath);
273
+ try {
274
+ (0, migration_1.initializeSchema)(db);
275
+ const results = (0, document_service_1.searchDocuments)(db, query, {
276
+ type: opts.type,
277
+ limit: opts.limit !== undefined ? Number(opts.limit) : undefined,
278
+ offset: opts.offset !== undefined ? Number(opts.offset) : undefined,
279
+ orderBy: opts.orderBy,
280
+ countOnly: opts.countOnly,
281
+ });
282
+ return (0, format_selector_1.formatOutput)(results, format, 'document-search');
283
+ }
284
+ finally {
285
+ db.close();
286
+ }
287
+ }, _cmd);
288
+ });
289
+ return group;
290
+ }
291
+ //# sourceMappingURL=doc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc.js","sourceRoot":"","sources":["../../src/cli/doc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createEntityGroup(): Command;
3
+ //# sourceMappingURL=entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../src/cli/entity.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,wBAAgB,iBAAiB,IAAI,OAAO,CAuC3C"}