@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** Sprint status values */
|
|
2
|
+
export type SprintStatus = 'PLANNING' | 'IN EXECUTION' | 'CLOSING' | 'CLOSED';
|
|
3
|
+
/** Task type values */
|
|
4
|
+
export type TaskType = 'Feature' | 'Bug' | 'Chore';
|
|
5
|
+
/** Task priority values */
|
|
6
|
+
export type TaskPriority = 'P0' | 'P1' | 'P2';
|
|
7
|
+
/** Task status values (kanban columns) — Blocked removed per FS-SS-030-0004 */
|
|
8
|
+
export type TaskStatus = 'Backlog' | 'To Do' | 'In Progress' | 'In Review' | 'Done' | 'Dropped';
|
|
9
|
+
/** Task stage values (workflow phases) — one-way forward progression */
|
|
10
|
+
export type TaskStage = 'Planning' | 'Requirement' | 'Specification' | 'Design' | 'Test Plan' | 'Implementation' | 'Testing' | 'Release';
|
|
11
|
+
/** Review type values */
|
|
12
|
+
export type ReviewType = 'requirements' | 'architecture' | 'code' | 'test' | 'document';
|
|
13
|
+
/** Review verdict values */
|
|
14
|
+
export type ReviewVerdict = 'APPROVED' | 'NEEDS_REWORK' | 'OPEN_QUESTION';
|
|
15
|
+
/** Test report result values */
|
|
16
|
+
export type TestResult = 'PASS' | 'FAIL' | 'BLOCKED';
|
|
17
|
+
/** Lesson category values */
|
|
18
|
+
export type LessonCategory = 'Process' | 'Technical' | 'Tool' | 'Model';
|
|
19
|
+
/** Lesson severity values */
|
|
20
|
+
export type LessonSeverity = 'critical' | 'major' | 'minor' | 'suggestion';
|
|
21
|
+
/** Document content storage mode */
|
|
22
|
+
export type ContentStorage = 'filesystem' | 'db';
|
|
23
|
+
/** Role names for task ownership */
|
|
24
|
+
export type RoleName = 'analyst' | 'architect' | 'coder' | 'tester' | 'master' | 'captain';
|
|
25
|
+
/** Output format options */
|
|
26
|
+
export type OutputFormat = 'table' | 'json' | 'quiet' | 'markdown';
|
|
27
|
+
//# sourceMappingURL=common.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/models/common.ts"],"names":[],"mappings":"AAEA,2BAA2B;AAC3B,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,cAAc,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE9E,uBAAuB;AACvB,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,KAAK,GAAG,OAAO,CAAC;AAEnD,2BAA2B;AAC3B,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE9C,+EAA+E;AAC/E,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,OAAO,GACP,aAAa,GACb,WAAW,GACX,MAAM,GACN,SAAS,CAAC;AAEd,wEAAwE;AACxE,MAAM,MAAM,SAAS,GACjB,UAAU,GACV,aAAa,GACb,eAAe,GACf,QAAQ,GACR,WAAW,GACX,gBAAgB,GAChB,SAAS,GACT,SAAS,CAAC;AAEd,yBAAyB;AACzB,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;AAExF,4BAA4B;AAC5B,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,cAAc,GAAG,eAAe,CAAC;AAE1E,gCAAgC;AAChC,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAErD,6BAA6B;AAC7B,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAExE,6BAA6B;AAC7B,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,YAAY,CAAC;AAE3E,oCAAoC;AACpC,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,IAAI,CAAC;AAEjD,oCAAoC;AACpC,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE3F,4BAA4B;AAC5B,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/models/common.ts"],"names":[],"mappings":";AAAA,gDAAgD"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import type { ContentStorage } from './common';
|
|
2
|
+
/** Document record */
|
|
3
|
+
export interface Document {
|
|
4
|
+
id: string;
|
|
5
|
+
type: string;
|
|
6
|
+
title: string;
|
|
7
|
+
path: string | null;
|
|
8
|
+
content_hash: string | null;
|
|
9
|
+
content_storage: ContentStorage;
|
|
10
|
+
metadata: string;
|
|
11
|
+
created_at: string;
|
|
12
|
+
updated_at: string;
|
|
13
|
+
}
|
|
14
|
+
/** Document content record */
|
|
15
|
+
export interface DocumentContent {
|
|
16
|
+
document_id: string;
|
|
17
|
+
content: string;
|
|
18
|
+
content_hash: string;
|
|
19
|
+
updated_at: string;
|
|
20
|
+
}
|
|
21
|
+
/** Document detail (with content) */
|
|
22
|
+
export interface DocumentDetail extends Document {
|
|
23
|
+
content: string | null;
|
|
24
|
+
}
|
|
25
|
+
/** Document registration options */
|
|
26
|
+
export interface DocumentRegisterOptions {
|
|
27
|
+
path?: string;
|
|
28
|
+
contentStorage?: ContentStorage;
|
|
29
|
+
metadata?: Record<string, unknown>;
|
|
30
|
+
contentFile?: string;
|
|
31
|
+
content?: string;
|
|
32
|
+
}
|
|
33
|
+
/** Document update fields */
|
|
34
|
+
export interface DocumentUpdateFields {
|
|
35
|
+
title?: string;
|
|
36
|
+
type?: string;
|
|
37
|
+
metadata?: Record<string, unknown>;
|
|
38
|
+
content?: string;
|
|
39
|
+
contentFile?: string;
|
|
40
|
+
content_storage?: ContentStorage;
|
|
41
|
+
}
|
|
42
|
+
/** FTS search result */
|
|
43
|
+
export interface SearchResult {
|
|
44
|
+
documentId: string;
|
|
45
|
+
title: string;
|
|
46
|
+
type: string;
|
|
47
|
+
rank: number;
|
|
48
|
+
snippet?: string;
|
|
49
|
+
}
|
|
50
|
+
/** Pagination, sorting, and counting options for doc list */
|
|
51
|
+
export interface ListOptions {
|
|
52
|
+
/** Filter by document type */
|
|
53
|
+
type?: string;
|
|
54
|
+
/** Maximum number of results */
|
|
55
|
+
limit?: number;
|
|
56
|
+
/** Skip N results before returning */
|
|
57
|
+
offset?: number;
|
|
58
|
+
/** Sort by field: id, type, title, created, updated. Prefix + for asc (default), - for desc */
|
|
59
|
+
orderBy?: string;
|
|
60
|
+
/** Return only the total count instead of rows */
|
|
61
|
+
countOnly?: boolean;
|
|
62
|
+
}
|
|
63
|
+
/** Pagination, sorting, and counting options for doc search */
|
|
64
|
+
export interface SearchOptions {
|
|
65
|
+
/** Filter by document type */
|
|
66
|
+
type?: string;
|
|
67
|
+
/** Maximum number of results */
|
|
68
|
+
limit?: number;
|
|
69
|
+
/** Skip N results before returning */
|
|
70
|
+
offset?: number;
|
|
71
|
+
/** Sort by field: id, type, title, created, updated. Overrides FTS5 BM25 ranking. Prefix + for asc (default), - for desc */
|
|
72
|
+
orderBy?: string;
|
|
73
|
+
/** Return only the total hit count instead of rows */
|
|
74
|
+
countOnly?: boolean;
|
|
75
|
+
}
|
|
76
|
+
/** Vault scan result (deprecated — doc scan subcommand removed per FR-URD-012-0011) */
|
|
77
|
+
export interface ScanResult {
|
|
78
|
+
added: string[];
|
|
79
|
+
modified: string[];
|
|
80
|
+
removed: string[];
|
|
81
|
+
unchanged: number;
|
|
82
|
+
}
|
|
83
|
+
/** Content reference returned after storing content */
|
|
84
|
+
export interface ContentRef {
|
|
85
|
+
documentId: string;
|
|
86
|
+
contentHash: string;
|
|
87
|
+
storage: ContentStorage;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=document.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/models/document.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,sBAAsB;AACtB,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,eAAe,EAAE,cAAc,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,8BAA8B;AAC9B,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qCAAqC;AACrC,MAAM,WAAW,cAAe,SAAQ,QAAQ;IAC9C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,oCAAoC;AACpC,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,6BAA6B;AAC7B,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,cAAc,CAAC;CAClC;AAED,wBAAwB;AACxB,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,6DAA6D;AAC7D,MAAM,WAAW,WAAW;IAC1B,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+FAA+F;IAC/F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,+DAA+D;AAC/D,MAAM,WAAW,aAAa;IAC5B,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4HAA4H;IAC5H,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,uFAAuF;AACvF,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,uDAAuD;AACvD,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,cAAc,CAAC;CACzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/models/document.ts"],"names":[],"mappings":";AAAA,oCAAoC;AACpC,gDAAgD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
import type { Entity, EntityType, EntityQueryOptions } from './entity';
|
|
3
|
+
/**
|
|
4
|
+
* Create a new entity.
|
|
5
|
+
*/
|
|
6
|
+
export declare function createEntity(db: Database.Database, id: string, typeName: string, properties?: Record<string, unknown>): Entity;
|
|
7
|
+
/**
|
|
8
|
+
* Get an entity by ID.
|
|
9
|
+
*/
|
|
10
|
+
export declare function getEntity(db: Database.Database, id: string): Entity;
|
|
11
|
+
/**
|
|
12
|
+
* Query entities with optional filters.
|
|
13
|
+
*/
|
|
14
|
+
export declare function queryEntities(db: Database.Database, options: EntityQueryOptions): Entity[];
|
|
15
|
+
/**
|
|
16
|
+
* Update entity properties (merge with existing).
|
|
17
|
+
*/
|
|
18
|
+
export declare function updateEntity(db: Database.Database, id: string, properties: Record<string, unknown>): Entity;
|
|
19
|
+
/**
|
|
20
|
+
* Delete an entity with cascade (AD-0016).
|
|
21
|
+
* Deletes all relations where entity is source or target, then the entity.
|
|
22
|
+
*/
|
|
23
|
+
export declare function deleteEntity(db: Database.Database, id: string): void;
|
|
24
|
+
/**
|
|
25
|
+
* List all entity types.
|
|
26
|
+
* builtin:3.0 (Sprint 31): Derives entity types from documents.type.
|
|
27
|
+
* No entity_types table read.
|
|
28
|
+
*/
|
|
29
|
+
export declare function listEntityTypes(db: Database.Database): EntityType[];
|
|
30
|
+
//# sourceMappingURL=entity-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-model.d.ts","sourceRoot":"","sources":["../../src/models/entity-model.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAOvE;;GAEG;AACH,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,MAAM,CA0BR;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAInE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAY1F;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,MAAM,CAaR;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAYpE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,UAAU,EAAE,CAKnE"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Entity model: CRUD operations for graph entities
|
|
3
|
+
// MOD-009: Entity CRUD with cascade delete (AD-0016)
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.createEntity = createEntity;
|
|
6
|
+
exports.getEntity = getEntity;
|
|
7
|
+
exports.queryEntities = queryEntities;
|
|
8
|
+
exports.updateEntity = updateEntity;
|
|
9
|
+
exports.deleteEntity = deleteEntity;
|
|
10
|
+
exports.listEntityTypes = listEntityTypes;
|
|
11
|
+
const retry_1 = require("../db/retry");
|
|
12
|
+
const errors_1 = require("../utils/errors");
|
|
13
|
+
/**
|
|
14
|
+
* Create a new entity.
|
|
15
|
+
*/
|
|
16
|
+
function createEntity(db, id, typeName, properties) {
|
|
17
|
+
return (0, retry_1.withTransaction)(db, () => {
|
|
18
|
+
// builtin:3.0 (Sprint 31): entity_types table dropped.
|
|
19
|
+
// Entity type validation uses canonical document types.
|
|
20
|
+
// Skip entity_types check; type_name is validated by doc type gates.
|
|
21
|
+
// Check duplicate
|
|
22
|
+
const existing = db.prepare('SELECT id FROM entities WHERE id = ?').get(id);
|
|
23
|
+
if (existing)
|
|
24
|
+
throw new errors_1.GraphEntityDuplicateError(id);
|
|
25
|
+
const now = new Date().toISOString();
|
|
26
|
+
const propsJson = JSON.stringify(properties ?? {});
|
|
27
|
+
db.prepare(`
|
|
28
|
+
INSERT INTO entities (id, type_name, properties, created_at, updated_at)
|
|
29
|
+
VALUES (?, ?, ?, ?, ?)
|
|
30
|
+
`).run(id, typeName, propsJson, now, now);
|
|
31
|
+
return {
|
|
32
|
+
id,
|
|
33
|
+
type_name: typeName,
|
|
34
|
+
properties: propsJson,
|
|
35
|
+
created_at: now,
|
|
36
|
+
updated_at: now,
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Get an entity by ID.
|
|
42
|
+
*/
|
|
43
|
+
function getEntity(db, id) {
|
|
44
|
+
const row = db.prepare('SELECT * FROM entities WHERE id = ?').get(id);
|
|
45
|
+
if (!row)
|
|
46
|
+
throw new errors_1.GraphEntityNotFoundError(id);
|
|
47
|
+
return row;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Query entities with optional filters.
|
|
51
|
+
*/
|
|
52
|
+
function queryEntities(db, options) {
|
|
53
|
+
const { typeName, limit = 100, offset = 0 } = options;
|
|
54
|
+
if (typeName) {
|
|
55
|
+
return db.prepare('SELECT * FROM entities WHERE type_name = ? ORDER BY created_at DESC LIMIT ? OFFSET ?').all(typeName, limit, offset);
|
|
56
|
+
}
|
|
57
|
+
return db.prepare('SELECT * FROM entities ORDER BY created_at DESC LIMIT ? OFFSET ?').all(limit, offset);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Update entity properties (merge with existing).
|
|
61
|
+
*/
|
|
62
|
+
function updateEntity(db, id, properties) {
|
|
63
|
+
return (0, retry_1.withTransaction)(db, () => {
|
|
64
|
+
const existing = getEntity(db, id);
|
|
65
|
+
const existingProps = JSON.parse(existing.properties || '{}');
|
|
66
|
+
const merged = { ...existingProps, ...properties };
|
|
67
|
+
const now = new Date().toISOString();
|
|
68
|
+
db.prepare(`
|
|
69
|
+
UPDATE entities SET properties = ?, updated_at = ? WHERE id = ?
|
|
70
|
+
`).run(JSON.stringify(merged), now, id);
|
|
71
|
+
return { ...existing, properties: JSON.stringify(merged), updated_at: now };
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Delete an entity with cascade (AD-0016).
|
|
76
|
+
* Deletes all relations where entity is source or target, then the entity.
|
|
77
|
+
*/
|
|
78
|
+
function deleteEntity(db, id) {
|
|
79
|
+
(0, retry_1.withTransaction)(db, () => {
|
|
80
|
+
// Verify entity exists
|
|
81
|
+
const entity = db.prepare('SELECT id FROM entities WHERE id = ?').get(id);
|
|
82
|
+
if (!entity)
|
|
83
|
+
throw new errors_1.GraphEntityNotFoundError(id);
|
|
84
|
+
// Cascade: delete all relations involving this entity
|
|
85
|
+
db.prepare('DELETE FROM relations WHERE from_id = ? OR to_id = ?').run(id, id);
|
|
86
|
+
// Delete the entity
|
|
87
|
+
db.prepare('DELETE FROM entities WHERE id = ?').run(id);
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* List all entity types.
|
|
92
|
+
* builtin:3.0 (Sprint 31): Derives entity types from documents.type.
|
|
93
|
+
* No entity_types table read.
|
|
94
|
+
*/
|
|
95
|
+
function listEntityTypes(db) {
|
|
96
|
+
const types = db.prepare('SELECT DISTINCT type FROM documents ORDER BY type').all();
|
|
97
|
+
return types.map(t => ({ name: t.type }));
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=entity-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-model.js","sourceRoot":"","sources":["../../src/models/entity-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/** Entity type record — dynamic, derived from documents.type (builtin:3.0) */
|
|
2
|
+
export interface EntityType {
|
|
3
|
+
name: string;
|
|
4
|
+
}
|
|
5
|
+
/** Entity record */
|
|
6
|
+
export interface Entity {
|
|
7
|
+
id: string;
|
|
8
|
+
type_name: string;
|
|
9
|
+
properties: string;
|
|
10
|
+
created_at: string;
|
|
11
|
+
updated_at: string;
|
|
12
|
+
}
|
|
13
|
+
/** Relation type record */
|
|
14
|
+
export interface RelationType {
|
|
15
|
+
name: string;
|
|
16
|
+
description: string | null;
|
|
17
|
+
from_types: string;
|
|
18
|
+
to_types: string;
|
|
19
|
+
cardinality: string | null;
|
|
20
|
+
inverse_of: string | null;
|
|
21
|
+
created_at: string;
|
|
22
|
+
updated_at: string;
|
|
23
|
+
}
|
|
24
|
+
/** Relation record */
|
|
25
|
+
export interface Relation {
|
|
26
|
+
id: number;
|
|
27
|
+
from_id: string;
|
|
28
|
+
rel_type: string;
|
|
29
|
+
to_id: string;
|
|
30
|
+
properties: string;
|
|
31
|
+
created_at: string;
|
|
32
|
+
updated_at: string;
|
|
33
|
+
}
|
|
34
|
+
/** Cardinality values */
|
|
35
|
+
export type Cardinality = 'one_to_one' | 'one_to_many' | 'many_to_one' | 'many_to_many';
|
|
36
|
+
/** Schema metadata record */
|
|
37
|
+
export interface SchemaMeta {
|
|
38
|
+
id?: number;
|
|
39
|
+
source_file: string;
|
|
40
|
+
version: string;
|
|
41
|
+
bootstrapped_at: string;
|
|
42
|
+
checksum: string;
|
|
43
|
+
}
|
|
44
|
+
/** Bootstrap result */
|
|
45
|
+
export interface BootstrapResult {
|
|
46
|
+
entityTypesAdded: number;
|
|
47
|
+
relationTypesAdded: number;
|
|
48
|
+
skippedExisting: number;
|
|
49
|
+
}
|
|
50
|
+
/** Entity query options */
|
|
51
|
+
export interface EntityQueryOptions {
|
|
52
|
+
typeName?: string;
|
|
53
|
+
where?: Record<string, unknown>;
|
|
54
|
+
limit?: number;
|
|
55
|
+
offset?: number;
|
|
56
|
+
}
|
|
57
|
+
/** Relation query options */
|
|
58
|
+
export interface RelationQueryOptions {
|
|
59
|
+
entityId: string;
|
|
60
|
+
relType?: string;
|
|
61
|
+
direction?: 'outgoing' | 'incoming' | 'both';
|
|
62
|
+
limit?: number;
|
|
63
|
+
offset?: number;
|
|
64
|
+
}
|
|
65
|
+
/** Validation result */
|
|
66
|
+
export interface ValidationResult {
|
|
67
|
+
valid: boolean;
|
|
68
|
+
violations: Violation[];
|
|
69
|
+
}
|
|
70
|
+
/** Violation record */
|
|
71
|
+
export interface Violation {
|
|
72
|
+
type: 'cardinality' | 'dangling' | 'type_constraint';
|
|
73
|
+
relationId: number;
|
|
74
|
+
fromId: string;
|
|
75
|
+
relType: string;
|
|
76
|
+
toId: string;
|
|
77
|
+
message: string;
|
|
78
|
+
}
|
|
79
|
+
/** Export format */
|
|
80
|
+
export type ExportFormat = 'jsonl' | 'csv' | 'json';
|
|
81
|
+
/** Graph export data */
|
|
82
|
+
export interface GraphExportData {
|
|
83
|
+
entityTypes: EntityType[];
|
|
84
|
+
relationTypes: RelationType[];
|
|
85
|
+
entities: Entity[];
|
|
86
|
+
relations: Relation[];
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../src/models/entity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/models/entity.ts"],"names":[],"mappings":";AAAA,kCAAkC;AAClC,oCAAoC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
import type { EntityType, RelationType, BootstrapResult, SchemaMeta } from './entity';
|
|
3
|
+
/** Schema YAML structure (simplified) */
|
|
4
|
+
interface SchemaDefinition {
|
|
5
|
+
entity_types?: Array<{
|
|
6
|
+
name: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
required_fields?: Record<string, string>;
|
|
9
|
+
}>;
|
|
10
|
+
relation_types?: Array<{
|
|
11
|
+
name: string;
|
|
12
|
+
from_types?: string[];
|
|
13
|
+
to_types?: string[];
|
|
14
|
+
cardinality?: string;
|
|
15
|
+
inverse_of?: string;
|
|
16
|
+
description?: string;
|
|
17
|
+
}>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Bootstrap graph schema from a definition object.
|
|
21
|
+
* Idempotent: existing types are skipped.
|
|
22
|
+
*/
|
|
23
|
+
export declare function bootstrapSchema(db: Database.Database, schema: SchemaDefinition, sourceFile?: string): BootstrapResult;
|
|
24
|
+
/**
|
|
25
|
+
* Get schema metadata (returns the most recent row).
|
|
26
|
+
*/
|
|
27
|
+
export declare function getSchemaMeta(db: Database.Database): SchemaMeta | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* Check if schema has been bootstrapped.
|
|
30
|
+
*/
|
|
31
|
+
export declare function isSchemaBootstrapped(db: Database.Database): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Get all entity types.
|
|
34
|
+
* builtin:3.0 (Sprint 31): Derives entity types from documents.type dynamically.
|
|
35
|
+
* No entity_types table is read.
|
|
36
|
+
*/
|
|
37
|
+
export declare function getEntityTypes(db: Database.Database): EntityType[];
|
|
38
|
+
/**
|
|
39
|
+
* Get all relation types.
|
|
40
|
+
*/
|
|
41
|
+
export declare function getRelationTypes(db: Database.Database): RelationType[];
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=graph-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-schema.d.ts","sourceRoot":"","sources":["../../src/models/graph-schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtF,yCAAyC;AACzC,UAAU,gBAAgB;IACxB,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC,CAAC;IACvG,cAAc,CAAC,EAAE,KAAK,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;CACJ;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE,gBAAgB,EACxB,UAAU,CAAC,EAAE,MAAM,GAClB,eAAe,CA0CjB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,UAAU,GAAG,SAAS,CAG3E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAGnE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,UAAU,EAAE,CAQlE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,YAAY,EAAE,CAEtE"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Graph schema model: bootstrap and manage entity/relation types
|
|
3
|
+
// MOD-008: Graph Schema
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.bootstrapSchema = bootstrapSchema;
|
|
6
|
+
exports.getSchemaMeta = getSchemaMeta;
|
|
7
|
+
exports.isSchemaBootstrapped = isSchemaBootstrapped;
|
|
8
|
+
exports.getEntityTypes = getEntityTypes;
|
|
9
|
+
exports.getRelationTypes = getRelationTypes;
|
|
10
|
+
const retry_1 = require("../db/retry");
|
|
11
|
+
/**
|
|
12
|
+
* Bootstrap graph schema from a definition object.
|
|
13
|
+
* Idempotent: existing types are skipped.
|
|
14
|
+
*/
|
|
15
|
+
function bootstrapSchema(db, schema, sourceFile) {
|
|
16
|
+
let relationTypesAdded = 0;
|
|
17
|
+
let skippedExisting = 0;
|
|
18
|
+
(0, retry_1.withTransaction)(db, () => {
|
|
19
|
+
// builtin:3.0 (Sprint 31): entity_types table dropped. Skip entity type upserts.
|
|
20
|
+
// Doc types are the sole source of truth; entity types are derived dynamically.
|
|
21
|
+
// Upsert relation types
|
|
22
|
+
for (const rt of schema.relation_types ?? []) {
|
|
23
|
+
const existing = db.prepare('SELECT name FROM relation_types WHERE name = ?').get(rt.name);
|
|
24
|
+
if (existing) {
|
|
25
|
+
skippedExisting++;
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
const now = new Date().toISOString();
|
|
29
|
+
db.prepare(`
|
|
30
|
+
INSERT INTO relation_types (name, from_types, to_types, cardinality, inverse_of, description, created_at, updated_at)
|
|
31
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
|
32
|
+
`).run(rt.name, JSON.stringify(rt.from_types ?? []), JSON.stringify(rt.to_types ?? []), rt.cardinality ?? 'many_to_many', rt.inverse_of ?? null, rt.description ?? null, now, now);
|
|
33
|
+
relationTypesAdded++;
|
|
34
|
+
}
|
|
35
|
+
// Store schema metadata — replace all existing rows so the single source is clear
|
|
36
|
+
const now = new Date().toISOString();
|
|
37
|
+
db.prepare('DELETE FROM graph_schema').run();
|
|
38
|
+
db.prepare(`
|
|
39
|
+
INSERT INTO graph_schema (source_file, version, bootstrapped_at, checksum)
|
|
40
|
+
VALUES (?, ?, ?, ?)
|
|
41
|
+
`).run(sourceFile ?? null, '1', now, null);
|
|
42
|
+
});
|
|
43
|
+
return { entityTypesAdded: 0, relationTypesAdded, skippedExisting };
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get schema metadata (returns the most recent row).
|
|
47
|
+
*/
|
|
48
|
+
function getSchemaMeta(db) {
|
|
49
|
+
const row = db.prepare('SELECT * FROM graph_schema ORDER BY id DESC LIMIT 1').get();
|
|
50
|
+
return row;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Check if schema has been bootstrapped.
|
|
54
|
+
*/
|
|
55
|
+
function isSchemaBootstrapped(db) {
|
|
56
|
+
const row = db.prepare('SELECT id FROM graph_schema LIMIT 1').get();
|
|
57
|
+
return !!row;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get all entity types.
|
|
61
|
+
* builtin:3.0 (Sprint 31): Derives entity types from documents.type dynamically.
|
|
62
|
+
* No entity_types table is read.
|
|
63
|
+
*/
|
|
64
|
+
function getEntityTypes(db) {
|
|
65
|
+
// Query distinct document types from the documents table
|
|
66
|
+
const types = db.prepare('SELECT DISTINCT type FROM documents ORDER BY type').all();
|
|
67
|
+
// Return as EntityType objects (matching the simplified interface)
|
|
68
|
+
return types.map(t => ({ name: t.type }));
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get all relation types.
|
|
72
|
+
*/
|
|
73
|
+
function getRelationTypes(db) {
|
|
74
|
+
return db.prepare('SELECT * FROM relation_types ORDER BY name').all();
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=graph-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph-schema.js","sourceRoot":"","sources":["../../src/models/graph-schema.ts"],"names":[],"mappings":";AAAA,iEAAiE;AACjE,wBAAwB;;AAuBxB,0CA8CC;AAKD,sCAGC;AAKD,oDAGC;AAOD,wCAQC;AAKD,4CAEC;AAvGD,uCAA8C;AAe9C;;;GAGG;AACH,SAAgB,eAAe,CAC7B,EAAqB,EACrB,MAAwB,EACxB,UAAmB;IAEnB,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,IAAI,eAAe,GAAG,CAAC,CAAC;IAExB,IAAA,uBAAe,EAAC,EAAE,EAAE,GAAG,EAAE;QACvB,iFAAiF;QACjF,gFAAgF;QAEhF,wBAAwB;QACxB,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,cAAc,IAAI,EAAE,EAAE,CAAC;YAC7C,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAC3F,IAAI,QAAQ,EAAE,CAAC;gBACb,eAAe,EAAE,CAAC;gBAClB,SAAS;YACX,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YACrC,EAAE,CAAC,OAAO,CAAC;;;OAGV,CAAC,CAAC,GAAG,CACJ,EAAE,CAAC,IAAI,EACP,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,EACnC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,EACjC,EAAE,CAAC,WAAW,IAAI,cAAc,EAChC,EAAE,CAAC,UAAU,IAAI,IAAI,EACrB,EAAE,CAAC,WAAW,IAAI,IAAI,EACtB,GAAG,EACH,GAAG,CACJ,CAAC;YACF,kBAAkB,EAAE,CAAC;QACvB,CAAC;QAED,kFAAkF;QAClF,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC,GAAG,EAAE,CAAC;QAC7C,EAAE,CAAC,OAAO,CAAC;;;KAGV,CAAC,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,gBAAgB,EAAE,CAAC,EAAE,kBAAkB,EAAE,eAAe,EAAE,CAAC;AACtE,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,EAAqB;IACjD,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,qDAAqD,CAAC,CAAC,GAAG,EAA4B,CAAC;IAC9G,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,EAAqB;IACxD,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,EAAgC,CAAC;IAClG,OAAO,CAAC,CAAC,GAAG,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAC,EAAqB;IAClD,yDAAyD;IACzD,MAAM,KAAK,GAAG,EAAE,CAAC,OAAO,CACtB,mDAAmD,CACpD,CAAC,GAAG,EAA6B,CAAC;IAEnC,mEAAmE;IACnE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,EAAqB;IACpD,OAAO,EAAE,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,GAAG,EAAoB,CAAC;AAC1F,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/** Global projects registry structure (~/.config/cortex-cli/registry.json) */
|
|
2
|
+
export interface ProjectsRegistry {
|
|
3
|
+
version: number;
|
|
4
|
+
default: string | null;
|
|
5
|
+
projects: Record<string, ProjectEntry>;
|
|
6
|
+
}
|
|
7
|
+
/** Single project entry in the registry */
|
|
8
|
+
export interface ProjectEntry {
|
|
9
|
+
folder: string;
|
|
10
|
+
added_at: string;
|
|
11
|
+
}
|
|
12
|
+
/** Global config structure (~/.config/cortex-cli/config.json) */
|
|
13
|
+
export interface GlobalConfig {
|
|
14
|
+
version: number;
|
|
15
|
+
default_project: string | null;
|
|
16
|
+
editor: string | null;
|
|
17
|
+
settings: Record<string, unknown>;
|
|
18
|
+
}
|
|
19
|
+
/** Result of project creation or registration */
|
|
20
|
+
export interface ProjectResult {
|
|
21
|
+
name: string;
|
|
22
|
+
folder: string;
|
|
23
|
+
dbPath: string;
|
|
24
|
+
isNew: boolean;
|
|
25
|
+
isDefault: boolean;
|
|
26
|
+
}
|
|
27
|
+
/** Detailed project info (from `project info` command) */
|
|
28
|
+
export interface ProjectInfo {
|
|
29
|
+
name: string;
|
|
30
|
+
folder: string;
|
|
31
|
+
dbPath: string;
|
|
32
|
+
isDefault: boolean;
|
|
33
|
+
sprintCount: number;
|
|
34
|
+
activeSprintCount: number;
|
|
35
|
+
docCount: number;
|
|
36
|
+
taskCount: number;
|
|
37
|
+
}
|
|
38
|
+
/** Resolved project (output of ProjectResolver) */
|
|
39
|
+
export interface ResolvedProject {
|
|
40
|
+
name: string;
|
|
41
|
+
folder: string;
|
|
42
|
+
dbPath: string;
|
|
43
|
+
resolutionMethod: 'flag' | 'env' | 'default' | 'cwd';
|
|
44
|
+
}
|
|
45
|
+
/** Empty registry template */
|
|
46
|
+
export declare const EMPTY_REGISTRY: ProjectsRegistry;
|
|
47
|
+
/** Empty config template */
|
|
48
|
+
export declare const EMPTY_CONFIG: GlobalConfig;
|
|
49
|
+
//# sourceMappingURL=project.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/models/project.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACxC;AAED,2CAA2C;AAC3C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,iEAAiE;AACjE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,iDAAiD;AACjD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,0DAA0D;AAC1D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,mDAAmD;AACnD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,KAAK,CAAC;CACtD;AAED,8BAA8B;AAC9B,eAAO,MAAM,cAAc,EAAE,gBAI5B,CAAC;AAEF,4BAA4B;AAC5B,eAAO,MAAM,YAAY,EAAE,YAK1B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Project-related type definitions
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.EMPTY_CONFIG = exports.EMPTY_REGISTRY = void 0;
|
|
5
|
+
/** Empty registry template */
|
|
6
|
+
exports.EMPTY_REGISTRY = {
|
|
7
|
+
version: 1,
|
|
8
|
+
default: null,
|
|
9
|
+
projects: {},
|
|
10
|
+
};
|
|
11
|
+
/** Empty config template */
|
|
12
|
+
exports.EMPTY_CONFIG = {
|
|
13
|
+
version: 1,
|
|
14
|
+
default_project: null,
|
|
15
|
+
editor: null,
|
|
16
|
+
settings: {},
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/models/project.ts"],"names":[],"mappings":";AAAA,mCAAmC;;;AAoDnC,8BAA8B;AACjB,QAAA,cAAc,GAAqB;IAC9C,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,EAAE;CACb,CAAC;AAEF,4BAA4B;AACf,QAAA,YAAY,GAAiB;IACxC,OAAO,EAAE,CAAC;IACV,eAAe,EAAE,IAAI;IACrB,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,EAAE;CACb,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
import type { Relation, RelationType, RelationQueryOptions } from './entity';
|
|
3
|
+
/**
|
|
4
|
+
* Get a relation type definition by name.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getRelationType(db: Database.Database, name: string): RelationType | undefined;
|
|
7
|
+
/**
|
|
8
|
+
* Create a relation with full constraint enforcement (AD-0017).
|
|
9
|
+
* All checks run in a single transaction; inverse auto-created if defined.
|
|
10
|
+
*
|
|
11
|
+
* Validation order per AD-0017:
|
|
12
|
+
* 1. Self-relation check
|
|
13
|
+
* 2. Entity existence
|
|
14
|
+
* 3. Relation type existence
|
|
15
|
+
* 4. Type constraint
|
|
16
|
+
* 5. Cardinality constraint
|
|
17
|
+
* 6. Duplicate check
|
|
18
|
+
* 7. Insert primary
|
|
19
|
+
* 8. Insert inverse
|
|
20
|
+
*/
|
|
21
|
+
export declare function createRelation(db: Database.Database, fromId: string, relType: string, toId: string, properties?: Record<string, unknown>): Relation;
|
|
22
|
+
/**
|
|
23
|
+
* Remove a relation by ID.
|
|
24
|
+
* Also removes any inverse relation.
|
|
25
|
+
*/
|
|
26
|
+
export declare function removeRelation(db: Database.Database, relationId: number): void;
|
|
27
|
+
/**
|
|
28
|
+
* Query relations for an entity.
|
|
29
|
+
*/
|
|
30
|
+
export declare function queryRelations(db: Database.Database, options: RelationQueryOptions): Relation[];
|
|
31
|
+
/**
|
|
32
|
+
* Get all relation types.
|
|
33
|
+
*/
|
|
34
|
+
export declare function listRelationTypes(db: Database.Database): RelationType[];
|
|
35
|
+
//# sourceMappingURL=relation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relation.d.ts","sourceRoot":"","sources":["../../src/models/relation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAe,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAmB1F;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAM7F;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAC5B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,QAAQ,CA6EV;AAsDD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAe9E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,oBAAoB,GAAG,QAAQ,EAAE,CA+B/F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,YAAY,EAAE,CAEvE"}
|