@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.
- package/LICENSE +21 -0
- package/README.md +159 -0
- package/dist/cli/audit.d.ts +3 -0
- package/dist/cli/audit.d.ts.map +1 -0
- package/dist/cli/audit.js +78 -0
- package/dist/cli/audit.js.map +1 -0
- package/dist/cli/doc.d.ts +3 -0
- package/dist/cli/doc.d.ts.map +1 -0
- package/dist/cli/doc.js +291 -0
- package/dist/cli/doc.js.map +1 -0
- package/dist/cli/entity.d.ts +3 -0
- package/dist/cli/entity.d.ts.map +1 -0
- package/dist/cli/entity.js +135 -0
- package/dist/cli/entity.js.map +1 -0
- package/dist/cli/format-selector.d.ts +30 -0
- package/dist/cli/format-selector.d.ts.map +1 -0
- package/dist/cli/format-selector.js +101 -0
- package/dist/cli/format-selector.js.map +1 -0
- package/dist/cli/formatters/audit-formatter.d.ts +33 -0
- package/dist/cli/formatters/audit-formatter.d.ts.map +1 -0
- package/dist/cli/formatters/audit-formatter.js +204 -0
- package/dist/cli/formatters/audit-formatter.js.map +1 -0
- package/dist/cli/formatters/json.d.ts +10 -0
- package/dist/cli/formatters/json.d.ts.map +1 -0
- package/dist/cli/formatters/json.js +31 -0
- package/dist/cli/formatters/json.js.map +1 -0
- package/dist/cli/formatters/markdown.d.ts +12 -0
- package/dist/cli/formatters/markdown.d.ts.map +1 -0
- package/dist/cli/formatters/markdown.js +341 -0
- package/dist/cli/formatters/markdown.js.map +1 -0
- package/dist/cli/formatters/quiet.d.ts +15 -0
- package/dist/cli/formatters/quiet.d.ts.map +1 -0
- package/dist/cli/formatters/quiet.js +75 -0
- package/dist/cli/formatters/quiet.js.map +1 -0
- package/dist/cli/formatters/table.d.ts +11 -0
- package/dist/cli/formatters/table.d.ts.map +1 -0
- package/dist/cli/formatters/table.js +726 -0
- package/dist/cli/formatters/table.js.map +1 -0
- package/dist/cli/graph.d.ts +3 -0
- package/dist/cli/graph.d.ts.map +1 -0
- package/dist/cli/graph.js +209 -0
- package/dist/cli/graph.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +144 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/lesson.d.ts +3 -0
- package/dist/cli/lesson.d.ts.map +1 -0
- package/dist/cli/lesson.js +85 -0
- package/dist/cli/lesson.js.map +1 -0
- package/dist/cli/project-resolver.d.ts +17 -0
- package/dist/cli/project-resolver.d.ts.map +1 -0
- package/dist/cli/project-resolver.js +25 -0
- package/dist/cli/project-resolver.js.map +1 -0
- package/dist/cli/project.d.ts +12 -0
- package/dist/cli/project.d.ts.map +1 -0
- package/dist/cli/project.js +169 -0
- package/dist/cli/project.js.map +1 -0
- package/dist/cli/relation.d.ts +3 -0
- package/dist/cli/relation.d.ts.map +1 -0
- package/dist/cli/relation.js +128 -0
- package/dist/cli/relation.js.map +1 -0
- package/dist/cli/review.d.ts +3 -0
- package/dist/cli/review.d.ts.map +1 -0
- package/dist/cli/review.js +131 -0
- package/dist/cli/review.js.map +1 -0
- package/dist/cli/router.d.ts +38 -0
- package/dist/cli/router.d.ts.map +1 -0
- package/dist/cli/router.js +49 -0
- package/dist/cli/router.js.map +1 -0
- package/dist/cli/schema.d.ts +3 -0
- package/dist/cli/schema.d.ts.map +1 -0
- package/dist/cli/schema.js +94 -0
- package/dist/cli/schema.js.map +1 -0
- package/dist/cli/sprint.d.ts +12 -0
- package/dist/cli/sprint.d.ts.map +1 -0
- package/dist/cli/sprint.js +200 -0
- package/dist/cli/sprint.js.map +1 -0
- package/dist/cli/task.d.ts +12 -0
- package/dist/cli/task.d.ts.map +1 -0
- package/dist/cli/task.js +252 -0
- package/dist/cli/task.js.map +1 -0
- package/dist/cli/test-report.d.ts +3 -0
- package/dist/cli/test-report.d.ts.map +1 -0
- package/dist/cli/test-report.js +134 -0
- package/dist/cli/test-report.js.map +1 -0
- package/dist/cli/validate.d.ts +8 -0
- package/dist/cli/validate.d.ts.map +1 -0
- package/dist/cli/validate.js +86 -0
- package/dist/cli/validate.js.map +1 -0
- package/dist/config/config.d.ts +18 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +70 -0
- package/dist/config/config.js.map +1 -0
- package/dist/config/registry.d.ts +52 -0
- package/dist/config/registry.d.ts.map +1 -0
- package/dist/config/registry.js +193 -0
- package/dist/config/registry.js.map +1 -0
- package/dist/config/resolver.d.ts +26 -0
- package/dist/config/resolver.d.ts.map +1 -0
- package/dist/config/resolver.js +87 -0
- package/dist/config/resolver.js.map +1 -0
- package/dist/db/builtin-schema-constants.d.ts +109 -0
- package/dist/db/builtin-schema-constants.d.ts.map +1 -0
- package/dist/db/builtin-schema-constants.js +32 -0
- package/dist/db/builtin-schema-constants.js.map +1 -0
- package/dist/db/connection.d.ts +34 -0
- package/dist/db/connection.d.ts.map +1 -0
- package/dist/db/connection.js +140 -0
- package/dist/db/connection.js.map +1 -0
- package/dist/db/generated/schema-types.d.ts +134 -0
- package/dist/db/generated/schema-types.d.ts.map +1 -0
- package/dist/db/generated/schema-types.js +31 -0
- package/dist/db/generated/schema-types.js.map +1 -0
- package/dist/db/locks.d.ts +106 -0
- package/dist/db/locks.d.ts.map +1 -0
- package/dist/db/locks.js +211 -0
- package/dist/db/locks.js.map +1 -0
- package/dist/db/migration.d.ts +65 -0
- package/dist/db/migration.d.ts.map +1 -0
- package/dist/db/migration.js +233 -0
- package/dist/db/migration.js.map +1 -0
- package/dist/db/retry.d.ts +26 -0
- package/dist/db/retry.d.ts.map +1 -0
- package/dist/db/retry.js +71 -0
- package/dist/db/retry.js.map +1 -0
- package/dist/db/schema.d.ts +21 -0
- package/dist/db/schema.d.ts.map +1 -0
- package/dist/db/schema.js +830 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/models/common.d.ts +27 -0
- package/dist/models/common.d.ts.map +1 -0
- package/dist/models/common.js +4 -0
- package/dist/models/common.js.map +1 -0
- package/dist/models/document.d.ts +89 -0
- package/dist/models/document.d.ts.map +1 -0
- package/dist/models/document.js +5 -0
- package/dist/models/document.js.map +1 -0
- package/dist/models/entity-model.d.ts +30 -0
- package/dist/models/entity-model.d.ts.map +1 -0
- package/dist/models/entity-model.js +99 -0
- package/dist/models/entity-model.js.map +1 -0
- package/dist/models/entity.d.ts +88 -0
- package/dist/models/entity.d.ts.map +1 -0
- package/dist/models/entity.js +5 -0
- package/dist/models/entity.js.map +1 -0
- package/dist/models/graph-schema.d.ts +43 -0
- package/dist/models/graph-schema.d.ts.map +1 -0
- package/dist/models/graph-schema.js +76 -0
- package/dist/models/graph-schema.js.map +1 -0
- package/dist/models/project.d.ts +49 -0
- package/dist/models/project.d.ts.map +1 -0
- package/dist/models/project.js +18 -0
- package/dist/models/project.js.map +1 -0
- package/dist/models/relation.d.ts +35 -0
- package/dist/models/relation.d.ts.map +1 -0
- package/dist/models/relation.js +212 -0
- package/dist/models/relation.js.map +1 -0
- package/dist/models/review.d.ts +86 -0
- package/dist/models/review.d.ts.map +1 -0
- package/dist/models/review.js +5 -0
- package/dist/models/review.js.map +1 -0
- package/dist/models/sprint.d.ts +38 -0
- package/dist/models/sprint.d.ts.map +1 -0
- package/dist/models/sprint.js +4 -0
- package/dist/models/sprint.js.map +1 -0
- package/dist/models/task.d.ts +75 -0
- package/dist/models/task.d.ts.map +1 -0
- package/dist/models/task.js +4 -0
- package/dist/models/task.js.map +1 -0
- package/dist/models/validation.d.ts +25 -0
- package/dist/models/validation.d.ts.map +1 -0
- package/dist/models/validation.js +4 -0
- package/dist/models/validation.js.map +1 -0
- package/dist/services/audit-check-service.d.ts +16 -0
- package/dist/services/audit-check-service.d.ts.map +1 -0
- package/dist/services/audit-check-service.js +137 -0
- package/dist/services/audit-check-service.js.map +1 -0
- package/dist/services/audit-checks/dangling-relations-check.d.ts +7 -0
- package/dist/services/audit-checks/dangling-relations-check.d.ts.map +1 -0
- package/dist/services/audit-checks/dangling-relations-check.js +52 -0
- package/dist/services/audit-checks/dangling-relations-check.js.map +1 -0
- package/dist/services/audit-checks/duplicate-ids-check.d.ts +4 -0
- package/dist/services/audit-checks/duplicate-ids-check.d.ts.map +1 -0
- package/dist/services/audit-checks/duplicate-ids-check.js +49 -0
- package/dist/services/audit-checks/duplicate-ids-check.js.map +1 -0
- package/dist/services/audit-checks/fix-engine.d.ts +24 -0
- package/dist/services/audit-checks/fix-engine.d.ts.map +1 -0
- package/dist/services/audit-checks/fix-engine.js +114 -0
- package/dist/services/audit-checks/fix-engine.js.map +1 -0
- package/dist/services/audit-checks/fr-nfr-to-fs-nfs-check.d.ts +9 -0
- package/dist/services/audit-checks/fr-nfr-to-fs-nfs-check.d.ts.map +1 -0
- package/dist/services/audit-checks/fr-nfr-to-fs-nfs-check.js +56 -0
- package/dist/services/audit-checks/fr-nfr-to-fs-nfs-check.js.map +1 -0
- package/dist/services/audit-checks/fs-nfs-to-sad-ad-qa-check.d.ts +10 -0
- package/dist/services/audit-checks/fs-nfs-to-sad-ad-qa-check.d.ts.map +1 -0
- package/dist/services/audit-checks/fs-nfs-to-sad-ad-qa-check.js +57 -0
- package/dist/services/audit-checks/fs-nfs-to-sad-ad-qa-check.js.map +1 -0
- package/dist/services/audit-checks/fs-nfs-to-ts-check.d.ts +9 -0
- package/dist/services/audit-checks/fs-nfs-to-ts-check.d.ts.map +1 -0
- package/dist/services/audit-checks/fs-nfs-to-ts-check.js +56 -0
- package/dist/services/audit-checks/fs-nfs-to-ts-check.js.map +1 -0
- package/dist/services/audit-checks/inverse-consistency-check.d.ts +7 -0
- package/dist/services/audit-checks/inverse-consistency-check.d.ts.map +1 -0
- package/dist/services/audit-checks/inverse-consistency-check.js +54 -0
- package/dist/services/audit-checks/inverse-consistency-check.js.map +1 -0
- package/dist/services/audit-checks/mapping-check.d.ts +4 -0
- package/dist/services/audit-checks/mapping-check.d.ts.map +1 -0
- package/dist/services/audit-checks/mapping-check.js +74 -0
- package/dist/services/audit-checks/mapping-check.js.map +1 -0
- package/dist/services/audit-checks/orphan-documents-check.d.ts +9 -0
- package/dist/services/audit-checks/orphan-documents-check.d.ts.map +1 -0
- package/dist/services/audit-checks/orphan-documents-check.js +54 -0
- package/dist/services/audit-checks/orphan-documents-check.js.map +1 -0
- package/dist/services/audit-checks/orphan-entities-check.d.ts +4 -0
- package/dist/services/audit-checks/orphan-entities-check.d.ts.map +1 -0
- package/dist/services/audit-checks/orphan-entities-check.js +39 -0
- package/dist/services/audit-checks/orphan-entities-check.js.map +1 -0
- package/dist/services/audit-checks/sad-ad-qa-tc-to-src-check.d.ts +9 -0
- package/dist/services/audit-checks/sad-ad-qa-tc-to-src-check.d.ts.map +1 -0
- package/dist/services/audit-checks/sad-ad-qa-tc-to-src-check.js +56 -0
- package/dist/services/audit-checks/sad-ad-qa-tc-to-src-check.js.map +1 -0
- package/dist/services/audit-checks/sprint-consistency-check.d.ts +4 -0
- package/dist/services/audit-checks/sprint-consistency-check.d.ts.map +1 -0
- package/dist/services/audit-checks/sprint-consistency-check.js +80 -0
- package/dist/services/audit-checks/sprint-consistency-check.js.map +1 -0
- package/dist/services/audit-checks/src-filesystem-only-check.d.ts +10 -0
- package/dist/services/audit-checks/src-filesystem-only-check.d.ts.map +1 -0
- package/dist/services/audit-checks/src-filesystem-only-check.js +106 -0
- package/dist/services/audit-checks/src-filesystem-only-check.js.map +1 -0
- package/dist/services/audit-checks/ts-to-tc-check.d.ts +10 -0
- package/dist/services/audit-checks/ts-to-tc-check.d.ts.map +1 -0
- package/dist/services/audit-checks/ts-to-tc-check.js +58 -0
- package/dist/services/audit-checks/ts-to-tc-check.js.map +1 -0
- package/dist/services/audit-checks/type-mismatch-check.d.ts +4 -0
- package/dist/services/audit-checks/type-mismatch-check.d.ts.map +1 -0
- package/dist/services/audit-checks/type-mismatch-check.js +55 -0
- package/dist/services/audit-checks/type-mismatch-check.js.map +1 -0
- package/dist/services/audit-checks/types.d.ts +66 -0
- package/dist/services/audit-checks/types.d.ts.map +1 -0
- package/dist/services/audit-checks/types.js +30 -0
- package/dist/services/audit-checks/types.js.map +1 -0
- package/dist/services/audit-checks/us-to-fr-nfr-check.d.ts +9 -0
- package/dist/services/audit-checks/us-to-fr-nfr-check.d.ts.map +1 -0
- package/dist/services/audit-checks/us-to-fr-nfr-check.js +56 -0
- package/dist/services/audit-checks/us-to-fr-nfr-check.js.map +1 -0
- package/dist/services/doc-entity-mapping.d.ts +19 -0
- package/dist/services/doc-entity-mapping.d.ts.map +1 -0
- package/dist/services/doc-entity-mapping.js +35 -0
- package/dist/services/doc-entity-mapping.js.map +1 -0
- package/dist/services/document-service.d.ts +58 -0
- package/dist/services/document-service.d.ts.map +1 -0
- package/dist/services/document-service.js +409 -0
- package/dist/services/document-service.js.map +1 -0
- package/dist/services/graph-export-service.d.ts +12 -0
- package/dist/services/graph-export-service.d.ts.map +1 -0
- package/dist/services/graph-export-service.js +112 -0
- package/dist/services/graph-export-service.js.map +1 -0
- package/dist/services/graph-service.d.ts +21 -0
- package/dist/services/graph-service.d.ts.map +1 -0
- package/dist/services/graph-service.js +49 -0
- package/dist/services/graph-service.js.map +1 -0
- package/dist/services/graph-validation-service.d.ts +13 -0
- package/dist/services/graph-validation-service.d.ts.map +1 -0
- package/dist/services/graph-validation-service.js +171 -0
- package/dist/services/graph-validation-service.js.map +1 -0
- package/dist/services/project.d.ts +80 -0
- package/dist/services/project.d.ts.map +1 -0
- package/dist/services/project.js +256 -0
- package/dist/services/project.js.map +1 -0
- package/dist/services/review-service.d.ts +81 -0
- package/dist/services/review-service.d.ts.map +1 -0
- package/dist/services/review-service.js +242 -0
- package/dist/services/review-service.js.map +1 -0
- package/dist/services/schema-migration-service.d.ts +44 -0
- package/dist/services/schema-migration-service.d.ts.map +1 -0
- package/dist/services/schema-migration-service.js +894 -0
- package/dist/services/schema-migration-service.js.map +1 -0
- package/dist/services/sprint.d.ts +71 -0
- package/dist/services/sprint.d.ts.map +1 -0
- package/dist/services/sprint.js +238 -0
- package/dist/services/sprint.js.map +1 -0
- package/dist/services/stage-validator.d.ts +36 -0
- package/dist/services/stage-validator.d.ts.map +1 -0
- package/dist/services/stage-validator.js +78 -0
- package/dist/services/stage-validator.js.map +1 -0
- package/dist/services/task.d.ts +75 -0
- package/dist/services/task.d.ts.map +1 -0
- package/dist/services/task.js +487 -0
- package/dist/services/task.js.map +1 -0
- package/dist/services/validation.d.ts +24 -0
- package/dist/services/validation.d.ts.map +1 -0
- package/dist/services/validation.js +53 -0
- package/dist/services/validation.js.map +1 -0
- package/dist/state-machines/sprint-state.d.ts +25 -0
- package/dist/state-machines/sprint-state.d.ts.map +1 -0
- package/dist/state-machines/sprint-state.js +64 -0
- package/dist/state-machines/sprint-state.js.map +1 -0
- package/dist/state-machines/task-state.d.ts +31 -0
- package/dist/state-machines/task-state.d.ts.map +1 -0
- package/dist/state-machines/task-state.js +83 -0
- package/dist/state-machines/task-state.js.map +1 -0
- package/dist/utils/errors.d.ts +673 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +1447 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/format.d.ts +52 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +65 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/validators/board-integrity.d.ts +25 -0
- package/dist/validators/board-integrity.d.ts.map +1 -0
- package/dist/validators/board-integrity.js +102 -0
- package/dist/validators/board-integrity.js.map +1 -0
- package/dist/validators/board-shape.d.ts +13 -0
- package/dist/validators/board-shape.d.ts.map +1 -0
- package/dist/validators/board-shape.js +74 -0
- package/dist/validators/board-shape.js.map +1 -0
- package/dist/validators/owner-validator.d.ts +30 -0
- package/dist/validators/owner-validator.d.ts.map +1 -0
- package/dist/validators/owner-validator.js +70 -0
- package/dist/validators/owner-validator.js.map +1 -0
- package/dist/validators/spawn-legality.d.ts +19 -0
- package/dist/validators/spawn-legality.d.ts.map +1 -0
- package/dist/validators/spawn-legality.js +77 -0
- package/dist/validators/spawn-legality.js.map +1 -0
- package/dist/validators/state-field-checker.d.ts +8 -0
- package/dist/validators/state-field-checker.d.ts.map +1 -0
- package/dist/validators/state-field-checker.js +47 -0
- package/dist/validators/state-field-checker.js.map +1 -0
- package/dist/validators/state-field-recorder.d.ts +39 -0
- package/dist/validators/state-field-recorder.d.ts.map +1 -0
- package/dist/validators/state-field-recorder.js +62 -0
- package/dist/validators/state-field-recorder.js.map +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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"}
|
package/dist/cli/doc.js
ADDED
|
@@ -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 @@
|
|
|
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"}
|