@jamesaphoenix/tx-core 0.4.4 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/dist/db.d.ts +4 -9
  2. package/dist/db.d.ts.map +1 -1
  3. package/dist/db.js +6 -80
  4. package/dist/db.js.map +1 -1
  5. package/dist/errors.d.ts +67 -10
  6. package/dist/errors.d.ts.map +1 -1
  7. package/dist/errors.js +44 -10
  8. package/dist/errors.js.map +1 -1
  9. package/dist/index.d.ts +12 -7
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +22 -28
  12. package/dist/index.js.map +1 -1
  13. package/dist/layer.d.ts +22 -10
  14. package/dist/layer.d.ts.map +1 -1
  15. package/dist/layer.js +97 -39
  16. package/dist/layer.js.map +1 -1
  17. package/dist/mappers/anchor.d.ts +28 -0
  18. package/dist/mappers/anchor.d.ts.map +1 -0
  19. package/dist/mappers/anchor.js +105 -0
  20. package/dist/mappers/anchor.js.map +1 -0
  21. package/dist/mappers/candidate.d.ts +25 -0
  22. package/dist/mappers/candidate.d.ts.map +1 -0
  23. package/dist/mappers/candidate.js +83 -0
  24. package/dist/mappers/candidate.js.map +1 -0
  25. package/dist/mappers/doc.d.ts +2 -4
  26. package/dist/mappers/doc.d.ts.map +1 -1
  27. package/dist/mappers/doc.js +7 -4
  28. package/dist/mappers/doc.js.map +1 -1
  29. package/dist/mappers/edge.d.ts +19 -0
  30. package/dist/mappers/edge.d.ts.map +1 -0
  31. package/dist/mappers/edge.js +81 -0
  32. package/dist/mappers/edge.js.map +1 -0
  33. package/dist/mappers/index.d.ts +7 -3
  34. package/dist/mappers/index.d.ts.map +1 -1
  35. package/dist/mappers/index.js +14 -6
  36. package/dist/mappers/index.js.map +1 -1
  37. package/dist/mappers/message.d.ts +15 -0
  38. package/dist/mappers/message.d.ts.map +1 -0
  39. package/dist/mappers/message.js +58 -0
  40. package/dist/mappers/message.js.map +1 -0
  41. package/dist/repo/anchor-repo.d.ts +52 -0
  42. package/dist/repo/anchor-repo.d.ts.map +1 -0
  43. package/dist/repo/anchor-repo.js +245 -0
  44. package/dist/repo/anchor-repo.js.map +1 -0
  45. package/dist/repo/candidate-repo.d.ts +16 -0
  46. package/dist/repo/candidate-repo.d.ts.map +1 -0
  47. package/dist/repo/candidate-repo.js +164 -0
  48. package/dist/repo/candidate-repo.js.map +1 -0
  49. package/dist/repo/compaction-repo.d.ts +41 -0
  50. package/dist/repo/compaction-repo.d.ts.map +1 -0
  51. package/dist/repo/compaction-repo.js +84 -0
  52. package/dist/repo/compaction-repo.js.map +1 -0
  53. package/dist/repo/doc-repo.d.ts +68 -51
  54. package/dist/repo/doc-repo.d.ts.map +1 -1
  55. package/dist/repo/doc-repo.js +120 -54
  56. package/dist/repo/doc-repo.js.map +1 -1
  57. package/dist/repo/edge-repo.d.ts +26 -0
  58. package/dist/repo/edge-repo.d.ts.map +1 -0
  59. package/dist/repo/edge-repo.js +258 -0
  60. package/dist/repo/edge-repo.js.map +1 -0
  61. package/dist/repo/index.d.ts +8 -3
  62. package/dist/repo/index.d.ts.map +1 -1
  63. package/dist/repo/index.js +7 -2
  64. package/dist/repo/index.js.map +1 -1
  65. package/dist/repo/message-repo.d.ts +55 -0
  66. package/dist/repo/message-repo.d.ts.map +1 -0
  67. package/dist/repo/message-repo.js +132 -0
  68. package/dist/repo/message-repo.js.map +1 -0
  69. package/dist/services/agent-service.d.ts +18 -23
  70. package/dist/services/agent-service.d.ts.map +1 -1
  71. package/dist/services/agent-service.js +9 -0
  72. package/dist/services/agent-service.js.map +1 -1
  73. package/dist/services/anchor-service.d.ts +147 -0
  74. package/dist/services/anchor-service.d.ts.map +1 -0
  75. package/dist/services/anchor-service.js +540 -0
  76. package/dist/services/anchor-service.js.map +1 -0
  77. package/dist/services/anchor-verification.d.ts +102 -0
  78. package/dist/services/anchor-verification.d.ts.map +1 -0
  79. package/dist/services/anchor-verification.js +817 -0
  80. package/dist/services/anchor-verification.js.map +1 -0
  81. package/dist/services/ast-grep-service.d.ts +58 -0
  82. package/dist/services/ast-grep-service.d.ts.map +1 -0
  83. package/dist/services/ast-grep-service.js +427 -0
  84. package/dist/services/ast-grep-service.js.map +1 -0
  85. package/dist/services/attempt-service.d.ts.map +1 -1
  86. package/dist/services/attempt-service.js +4 -1
  87. package/dist/services/attempt-service.js.map +1 -1
  88. package/dist/services/auto-sync-service.d.ts.map +1 -1
  89. package/dist/services/auto-sync-service.js +7 -7
  90. package/dist/services/auto-sync-service.js.map +1 -1
  91. package/dist/services/candidate-extractor-service.d.ts +44 -0
  92. package/dist/services/candidate-extractor-service.d.ts.map +1 -0
  93. package/dist/services/candidate-extractor-service.js +175 -0
  94. package/dist/services/candidate-extractor-service.js.map +1 -0
  95. package/dist/services/claim-service.d.ts.map +1 -1
  96. package/dist/services/claim-service.js +0 -8
  97. package/dist/services/claim-service.js.map +1 -1
  98. package/dist/services/compaction-service.d.ts +105 -0
  99. package/dist/services/compaction-service.d.ts.map +1 -0
  100. package/dist/services/compaction-service.js +281 -0
  101. package/dist/services/compaction-service.js.map +1 -0
  102. package/dist/services/cycle-scan-service.d.ts +1 -5
  103. package/dist/services/cycle-scan-service.d.ts.map +1 -1
  104. package/dist/services/cycle-scan-service.js +49 -19
  105. package/dist/services/cycle-scan-service.js.map +1 -1
  106. package/dist/services/daemon-service.d.ts +2 -8
  107. package/dist/services/daemon-service.d.ts.map +1 -1
  108. package/dist/services/daemon-service.js +21 -35
  109. package/dist/services/daemon-service.js.map +1 -1
  110. package/dist/services/doc-service.d.ts +25 -32
  111. package/dist/services/doc-service.d.ts.map +1 -1
  112. package/dist/services/doc-service.js +206 -190
  113. package/dist/services/doc-service.js.map +1 -1
  114. package/dist/services/edge-service.d.ts +78 -0
  115. package/dist/services/edge-service.d.ts.map +1 -0
  116. package/dist/services/edge-service.js +158 -0
  117. package/dist/services/edge-service.js.map +1 -0
  118. package/dist/services/embedding-service.d.ts +2 -2
  119. package/dist/services/embedding-service.d.ts.map +1 -1
  120. package/dist/services/embedding-service.js +7 -13
  121. package/dist/services/embedding-service.js.map +1 -1
  122. package/dist/services/feedback-tracker.d.ts +64 -0
  123. package/dist/services/feedback-tracker.d.ts.map +1 -0
  124. package/dist/services/feedback-tracker.js +110 -0
  125. package/dist/services/feedback-tracker.js.map +1 -0
  126. package/dist/services/file-watcher-service.d.ts.map +1 -1
  127. package/dist/services/file-watcher-service.js +1 -3
  128. package/dist/services/file-watcher-service.js.map +1 -1
  129. package/dist/services/graph-expansion.d.ts +158 -0
  130. package/dist/services/graph-expansion.d.ts.map +1 -0
  131. package/dist/services/graph-expansion.js +487 -0
  132. package/dist/services/graph-expansion.js.map +1 -0
  133. package/dist/services/index.d.ts +19 -8
  134. package/dist/services/index.d.ts.map +1 -1
  135. package/dist/services/index.js +18 -7
  136. package/dist/services/index.js.map +1 -1
  137. package/dist/services/learning-service.d.ts.map +1 -1
  138. package/dist/services/learning-service.js +22 -14
  139. package/dist/services/learning-service.js.map +1 -1
  140. package/dist/services/llm-service.d.ts +61 -39
  141. package/dist/services/llm-service.d.ts.map +1 -1
  142. package/dist/services/llm-service.js +199 -113
  143. package/dist/services/llm-service.js.map +1 -1
  144. package/dist/services/message-service.d.ts +57 -0
  145. package/dist/services/message-service.d.ts.map +1 -0
  146. package/dist/services/message-service.js +78 -0
  147. package/dist/services/message-service.js.map +1 -0
  148. package/dist/services/orchestrator-service.d.ts.map +1 -1
  149. package/dist/services/orchestrator-service.js +19 -20
  150. package/dist/services/orchestrator-service.js.map +1 -1
  151. package/dist/services/promotion-service.d.ts +67 -0
  152. package/dist/services/promotion-service.d.ts.map +1 -0
  153. package/dist/services/promotion-service.js +151 -0
  154. package/dist/services/promotion-service.js.map +1 -0
  155. package/dist/services/query-expansion-service.d.ts +7 -22
  156. package/dist/services/query-expansion-service.d.ts.map +1 -1
  157. package/dist/services/query-expansion-service.js +41 -75
  158. package/dist/services/query-expansion-service.js.map +1 -1
  159. package/dist/services/retriever-service.d.ts +8 -5
  160. package/dist/services/retriever-service.d.ts.map +1 -1
  161. package/dist/services/retriever-service.js +150 -15
  162. package/dist/services/retriever-service.js.map +1 -1
  163. package/dist/services/swarm-verification.d.ts +104 -0
  164. package/dist/services/swarm-verification.d.ts.map +1 -0
  165. package/dist/services/swarm-verification.js +406 -0
  166. package/dist/services/swarm-verification.js.map +1 -0
  167. package/dist/services/sync-service.d.ts.map +1 -1
  168. package/dist/services/sync-service.js +8 -9
  169. package/dist/services/sync-service.js.map +1 -1
  170. package/dist/services/task-service.d.ts.map +1 -1
  171. package/dist/services/task-service.js +3 -8
  172. package/dist/services/task-service.js.map +1 -1
  173. package/dist/services/tracing-service.js +6 -6
  174. package/dist/services/tracing-service.js.map +1 -1
  175. package/dist/services/transcript-adapter.d.ts.map +1 -1
  176. package/dist/services/transcript-adapter.js +1 -1
  177. package/dist/services/transcript-adapter.js.map +1 -1
  178. package/dist/services/worker-process.d.ts.map +1 -1
  179. package/dist/services/worker-process.js +8 -30
  180. package/dist/services/worker-process.js.map +1 -1
  181. package/dist/utils/doc-hash.d.ts +0 -4
  182. package/dist/utils/doc-hash.d.ts.map +1 -1
  183. package/dist/utils/doc-hash.js.map +1 -1
  184. package/dist/utils/doc-renderer.d.ts +31 -26
  185. package/dist/utils/doc-renderer.d.ts.map +1 -1
  186. package/dist/utils/doc-renderer.js +0 -7
  187. package/dist/utils/doc-renderer.js.map +1 -1
  188. package/dist/utils/llm-json.d.ts +17 -0
  189. package/dist/utils/llm-json.d.ts.map +1 -0
  190. package/dist/utils/llm-json.js +51 -0
  191. package/dist/utils/llm-json.js.map +1 -0
  192. package/dist/utils/toml-config.d.ts +10 -16
  193. package/dist/utils/toml-config.d.ts.map +1 -1
  194. package/dist/utils/toml-config.js +3 -1
  195. package/dist/utils/toml-config.js.map +1 -1
  196. package/dist/worker/run-worker.d.ts.map +1 -1
  197. package/dist/worker/run-worker.js +2 -7
  198. package/dist/worker/run-worker.js.map +1 -1
  199. package/package.json +9 -8
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Anchor mappers - convert database rows to domain objects
3
+ */
4
+ import { ANCHOR_TYPES, ANCHOR_STATUSES, INVALIDATION_SOURCES } from "@jamesaphoenix/tx-types";
5
+ import { InvalidStatusError } from "../errors.js";
6
+ import { parseDate } from "./parse-date.js";
7
+ /**
8
+ * Check if a string is a valid AnchorType.
9
+ */
10
+ export const isValidAnchorType = (s) => {
11
+ return ANCHOR_TYPES.includes(s);
12
+ };
13
+ /**
14
+ * Check if a string is a valid AnchorStatus.
15
+ */
16
+ export const isValidAnchorStatus = (s) => {
17
+ return ANCHOR_STATUSES.includes(s);
18
+ };
19
+ /**
20
+ * Check if a string is a valid InvalidationSource.
21
+ */
22
+ export const isValidInvalidationSource = (s) => {
23
+ return INVALIDATION_SOURCES.includes(s);
24
+ };
25
+ /**
26
+ * Convert a database row to an Anchor domain object.
27
+ * Validates anchor_type and status at runtime.
28
+ */
29
+ export const rowToAnchor = (row) => {
30
+ if (!isValidAnchorType(row.anchor_type)) {
31
+ throw new InvalidStatusError({
32
+ entity: "anchor",
33
+ status: row.anchor_type,
34
+ validStatuses: ANCHOR_TYPES,
35
+ rowId: row.id
36
+ });
37
+ }
38
+ if (!isValidAnchorStatus(row.status)) {
39
+ throw new InvalidStatusError({
40
+ entity: "anchor",
41
+ status: row.status,
42
+ validStatuses: ANCHOR_STATUSES,
43
+ rowId: row.id
44
+ });
45
+ }
46
+ return {
47
+ id: row.id,
48
+ learningId: row.learning_id,
49
+ anchorType: row.anchor_type,
50
+ anchorValue: row.anchor_value,
51
+ filePath: row.file_path,
52
+ symbolFqname: row.symbol_fqname,
53
+ lineStart: row.line_start,
54
+ lineEnd: row.line_end,
55
+ contentHash: row.content_hash,
56
+ contentPreview: row.content_preview,
57
+ status: row.status,
58
+ pinned: row.pinned === 1,
59
+ verifiedAt: row.verified_at ? parseDate(row.verified_at, "verified_at", row.id) : null,
60
+ createdAt: parseDate(row.created_at, "created_at", row.id)
61
+ };
62
+ };
63
+ /**
64
+ * Convert a database row to an InvalidationLog domain object.
65
+ * Validates old_status, new_status, and detected_by at runtime.
66
+ */
67
+ export const rowToInvalidationLog = (row) => {
68
+ if (!isValidAnchorStatus(row.old_status)) {
69
+ throw new InvalidStatusError({
70
+ entity: "invalidation_log.old_status",
71
+ status: row.old_status,
72
+ validStatuses: ANCHOR_STATUSES,
73
+ rowId: row.id
74
+ });
75
+ }
76
+ if (!isValidAnchorStatus(row.new_status)) {
77
+ throw new InvalidStatusError({
78
+ entity: "invalidation_log.new_status",
79
+ status: row.new_status,
80
+ validStatuses: ANCHOR_STATUSES,
81
+ rowId: row.id
82
+ });
83
+ }
84
+ if (!isValidInvalidationSource(row.detected_by)) {
85
+ throw new InvalidStatusError({
86
+ entity: "invalidation_log.detected_by",
87
+ status: row.detected_by,
88
+ validStatuses: INVALIDATION_SOURCES,
89
+ rowId: row.id
90
+ });
91
+ }
92
+ return {
93
+ id: row.id,
94
+ anchorId: row.anchor_id,
95
+ oldStatus: row.old_status,
96
+ newStatus: row.new_status,
97
+ reason: row.reason,
98
+ detectedBy: row.detected_by,
99
+ oldContentHash: row.old_content_hash,
100
+ newContentHash: row.new_content_hash,
101
+ similarityScore: row.similarity_score,
102
+ invalidatedAt: parseDate(row.invalidated_at, "invalidated_at", row.id)
103
+ };
104
+ };
105
+ //# sourceMappingURL=anchor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anchor.js","sourceRoot":"","sources":["../../src/mappers/anchor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Candidate mappers - convert database rows to domain objects
3
+ */
4
+ import type { LearningCandidate, CandidateRow, CandidateConfidence, CandidateCategory, CandidateStatus } from "@jamesaphoenix/tx-types";
5
+ import { CANDIDATE_CONFIDENCES, CANDIDATE_CATEGORIES, CANDIDATE_STATUSES } from "@jamesaphoenix/tx-types";
6
+ export type { CandidateRow } from "@jamesaphoenix/tx-types";
7
+ export { CANDIDATE_CONFIDENCES, CANDIDATE_CATEGORIES, CANDIDATE_STATUSES };
8
+ /**
9
+ * Check if a string is a valid CandidateConfidence.
10
+ */
11
+ export declare const isValidConfidence: (s: string) => s is CandidateConfidence;
12
+ /**
13
+ * Check if a string is a valid CandidateStatus.
14
+ */
15
+ export declare const isValidStatus: (s: string) => s is CandidateStatus;
16
+ /**
17
+ * Check if a string is a valid CandidateCategory.
18
+ */
19
+ export declare const isValidCategory: (s: string) => s is CandidateCategory;
20
+ /**
21
+ * Convert a database row to a LearningCandidate domain object.
22
+ * Validates confidence, category, and status at runtime.
23
+ */
24
+ export declare const rowToCandidate: (row: CandidateRow) => LearningCandidate;
25
+ //# sourceMappingURL=candidate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"candidate.d.ts","sourceRoot":"","sources":["../../src/mappers/candidate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EAChB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,yBAAyB,CAAA;AAKhC,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EACnB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,GAAG,MAAM,KAAG,CAAC,IAAI,mBAGlD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,GAAG,MAAM,KAAG,CAAC,IAAI,eAG9C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,GAAG,MAAM,KAAG,CAAC,IAAI,iBAYhD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,KAAK,YAAY,KAAG,iBAwClD,CAAA"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Candidate mappers - convert database rows to domain objects
3
+ */
4
+ import { CANDIDATE_CONFIDENCES, CANDIDATE_CATEGORIES, CANDIDATE_STATUSES } from "@jamesaphoenix/tx-types";
5
+ import { InvalidStatusError } from "../errors.js";
6
+ import { parseDate } from "./parse-date.js";
7
+ export { CANDIDATE_CONFIDENCES, CANDIDATE_CATEGORIES, CANDIDATE_STATUSES };
8
+ /**
9
+ * Check if a string is a valid CandidateConfidence.
10
+ */
11
+ export const isValidConfidence = (s) => {
12
+ const confidences = ["high", "medium", "low"];
13
+ return confidences.includes(s);
14
+ };
15
+ /**
16
+ * Check if a string is a valid CandidateStatus.
17
+ */
18
+ export const isValidStatus = (s) => {
19
+ const statuses = ["pending", "promoted", "rejected", "merged"];
20
+ return statuses.includes(s);
21
+ };
22
+ /**
23
+ * Check if a string is a valid CandidateCategory.
24
+ */
25
+ export const isValidCategory = (s) => {
26
+ const categories = [
27
+ "architecture",
28
+ "testing",
29
+ "performance",
30
+ "security",
31
+ "debugging",
32
+ "tooling",
33
+ "patterns",
34
+ "other"
35
+ ];
36
+ return categories.includes(s);
37
+ };
38
+ /**
39
+ * Convert a database row to a LearningCandidate domain object.
40
+ * Validates confidence, category, and status at runtime.
41
+ */
42
+ export const rowToCandidate = (row) => {
43
+ if (!isValidConfidence(row.confidence)) {
44
+ throw new InvalidStatusError({
45
+ entity: "candidate",
46
+ status: row.confidence,
47
+ validStatuses: CANDIDATE_CONFIDENCES,
48
+ rowId: row.id
49
+ });
50
+ }
51
+ if (row.category !== null && !isValidCategory(row.category)) {
52
+ throw new InvalidStatusError({
53
+ entity: "candidate.category",
54
+ status: row.category,
55
+ validStatuses: CANDIDATE_CATEGORIES,
56
+ rowId: row.id
57
+ });
58
+ }
59
+ if (!isValidStatus(row.status)) {
60
+ throw new InvalidStatusError({
61
+ entity: "candidate",
62
+ status: row.status,
63
+ validStatuses: CANDIDATE_STATUSES,
64
+ rowId: row.id
65
+ });
66
+ }
67
+ return {
68
+ id: row.id,
69
+ content: row.content,
70
+ confidence: row.confidence,
71
+ category: row.category,
72
+ sourceFile: row.source_file,
73
+ sourceRunId: row.source_run_id,
74
+ sourceTaskId: row.source_task_id,
75
+ extractedAt: parseDate(row.extracted_at, "extracted_at", row.id),
76
+ status: row.status,
77
+ reviewedAt: row.reviewed_at ? parseDate(row.reviewed_at, "reviewed_at", row.id) : null,
78
+ reviewedBy: row.reviewed_by,
79
+ promotedLearningId: row.promoted_learning_id,
80
+ rejectionReason: row.rejection_reason
81
+ };
82
+ };
83
+ //# sourceMappingURL=candidate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"candidate.js","sourceRoot":"","sources":["../../src/mappers/candidate.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,8 @@
1
1
  /**
2
2
  * Doc mappers - convert database rows to domain objects
3
3
  */
4
- import type { Doc, DocKind, DocStatus, DocLink, DocLinkType, TaskDocLink, TaskDocLinkType, Invariant, InvariantEnforcement, InvariantStatus, InvariantCheck, DocRow, DocLinkRow, TaskDocLinkRow, InvariantRow, InvariantCheckRow } from "@jamesaphoenix/tx-types";
5
- import { DOC_KINDS, DOC_STATUSES, DOC_LINK_TYPES, TASK_DOC_LINK_TYPES, INVARIANT_ENFORCEMENT_TYPES, INVARIANT_STATUSES } from "@jamesaphoenix/tx-types";
6
- export type { DocRow, DocLinkRow, TaskDocLinkRow, InvariantRow, InvariantCheckRow };
7
- export { DOC_KINDS, DOC_STATUSES, DOC_LINK_TYPES, TASK_DOC_LINK_TYPES, INVARIANT_ENFORCEMENT_TYPES, INVARIANT_STATUSES };
4
+ import { DOC_KINDS, DOC_STATUSES, DOC_LINK_TYPES, TASK_DOC_LINK_TYPES, INVARIANT_ENFORCEMENT_TYPES, INVARIANT_STATUSES, type DocKind, type DocStatus, type DocLinkType, type TaskDocLinkType, type InvariantEnforcement, type InvariantStatus, type Doc, type DocLink, type TaskDocLink, type Invariant, type InvariantCheck, type DocRow, type DocLinkRow, type TaskDocLinkRow, type InvariantRow, type InvariantCheckRow } from "@jamesaphoenix/tx-types";
5
+ export { DOC_KINDS, DOC_STATUSES, DOC_LINK_TYPES, TASK_DOC_LINK_TYPES, INVARIANT_ENFORCEMENT_TYPES, INVARIANT_STATUSES, };
8
6
  export declare const isValidDocKind: (s: string) => s is DocKind;
9
7
  export declare const isValidDocStatus: (s: string) => s is DocStatus;
10
8
  export declare const isValidDocLinkType: (s: string) => s is DocLinkType;
@@ -1 +1 @@
1
- {"version":3,"file":"doc.d.ts","sourceRoot":"","sources":["../../src/mappers/doc.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,GAAG,EACH,OAAO,EACP,SAAS,EACT,OAAO,EACP,WAAW,EACX,WAAW,EACX,eAAe,EACf,SAAS,EACT,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,MAAM,EACN,UAAU,EACV,cAAc,EACd,YAAY,EACZ,iBAAiB,EAClB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,SAAS,EACT,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,2BAA2B,EAC3B,kBAAkB,EACnB,MAAM,yBAAyB,CAAA;AAKhC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,CAAA;AACnF,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,CAAA;AAcxH,eAAO,MAAM,cAAc,GAAI,GAAG,MAAM,KAAG,CAAC,IAAI,OACpB,CAAA;AAE5B,eAAO,MAAM,gBAAgB,GAAI,GAAG,MAAM,KAAG,CAAC,IAAI,SACpB,CAAA;AAE9B,eAAO,MAAM,kBAAkB,GAAI,GAAG,MAAM,KAAG,CAAC,IAAI,WACpB,CAAA;AAEhC,eAAO,MAAM,sBAAsB,GAAI,GAAG,MAAM,KAAG,CAAC,IAAI,eACpB,CAAA;AAEpC,eAAO,MAAM,2BAA2B,GAAI,GAAG,MAAM,KAAG,CAAC,IAAI,oBACpB,CAAA;AAEzC,eAAO,MAAM,sBAAsB,GAAI,GAAG,MAAM,KAAG,CAAC,IAAI,eACpB,CAAA;AA2BpC;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,KAAG,GAkCtC,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,KAAK,UAAU,KAAG,OAiB9C,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,KAAK,cAAc,KAAG,WAiBtD,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,KAAK,YAAY,KAAG,SAgClD,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,KAAK,iBAAiB,KAAG,cAS5D,CAAA"}
1
+ {"version":3,"file":"doc.d.ts","sourceRoot":"","sources":["../../src/mappers/doc.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,SAAS,EACT,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,2BAA2B,EAC3B,kBAAkB,EAClB,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,GAAG,EACR,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,cAAc,EAGnB,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAA;AAIhC,OAAO,EACL,SAAS,EACT,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,2BAA2B,EAC3B,kBAAkB,GACnB,CAAA;AAcD,eAAO,MAAM,cAAc,GAAI,GAAG,MAAM,KAAG,CAAC,IAAI,OACpB,CAAA;AAC5B,eAAO,MAAM,gBAAgB,GAAI,GAAG,MAAM,KAAG,CAAC,IAAI,SACpB,CAAA;AAC9B,eAAO,MAAM,kBAAkB,GAAI,GAAG,MAAM,KAAG,CAAC,IAAI,WACpB,CAAA;AAChC,eAAO,MAAM,sBAAsB,GAAI,GAAG,MAAM,KAAG,CAAC,IAAI,eACpB,CAAA;AACpC,eAAO,MAAM,2BAA2B,GAAI,GAAG,MAAM,KAAG,CAAC,IAAI,oBACpB,CAAA;AACzC,eAAO,MAAM,sBAAsB,GAAI,GAAG,MAAM,KAAG,CAAC,IAAI,eACpB,CAAA;AAiCpC;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,KAAG,GAkCtC,CAAA;AAED,eAAO,MAAM,YAAY,GAAI,KAAK,UAAU,KAAG,OAgB9C,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,KAAK,cAAc,KAAG,WAgBtD,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,KAAK,YAAY,KAAG,SA8BlD,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,KAAK,iBAAiB,KAAG,cAS5D,CAAA"}
@@ -4,7 +4,7 @@
4
4
  import { DOC_KINDS, DOC_STATUSES, DOC_LINK_TYPES, TASK_DOC_LINK_TYPES, INVARIANT_ENFORCEMENT_TYPES, INVARIANT_STATUSES, } from "@jamesaphoenix/tx-types";
5
5
  import { InvalidStatusError } from "../errors.js";
6
6
  import { parseDate } from "./parse-date.js";
7
- export { DOC_KINDS, DOC_STATUSES, DOC_LINK_TYPES, TASK_DOC_LINK_TYPES, INVARIANT_ENFORCEMENT_TYPES, INVARIANT_STATUSES };
7
+ export { DOC_KINDS, DOC_STATUSES, DOC_LINK_TYPES, TASK_DOC_LINK_TYPES, INVARIANT_ENFORCEMENT_TYPES, INVARIANT_STATUSES, };
8
8
  // Local string arrays for .includes() (avoids 'as readonly string[]' casts)
9
9
  const docKindStrings = DOC_KINDS;
10
10
  const docStatusStrings = DOC_STATUSES;
@@ -29,7 +29,9 @@ const parseMetadata = (metadataJson) => {
29
29
  return {};
30
30
  try {
31
31
  const parsed = JSON.parse(metadataJson);
32
- if (typeof parsed === "object" && parsed !== null && !Array.isArray(parsed)) {
32
+ if (typeof parsed === "object" &&
33
+ parsed !== null &&
34
+ !Array.isArray(parsed)) {
33
35
  const result = {};
34
36
  for (const [key, value] of Object.entries(parsed)) {
35
37
  result[key] = value;
@@ -67,7 +69,6 @@ export const rowToDoc = (row) => {
67
69
  rowId: row.id,
68
70
  });
69
71
  }
70
- // After guards, kind and status are narrowed to valid literal types
71
72
  return {
72
73
  id: row.id,
73
74
  hash: row.hash,
@@ -79,7 +80,9 @@ export const rowToDoc = (row) => {
79
80
  filePath: row.file_path,
80
81
  parentDocId: row.parent_doc_id !== null ? row.parent_doc_id : null,
81
82
  createdAt: parseDate(row.created_at, "created_at", row.id),
82
- lockedAt: row.locked_at ? parseDate(row.locked_at, "locked_at", row.id) : null,
83
+ lockedAt: row.locked_at
84
+ ? parseDate(row.locked_at, "locked_at", row.id)
85
+ : null,
83
86
  metadata: parseMetadata(row.metadata),
84
87
  };
85
88
  };
@@ -1 +1 @@
1
- {"version":3,"file":"doc.js","sourceRoot":"","sources":["../../src/mappers/doc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doc.js","sourceRoot":"","sources":["../../src/mappers/doc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Edge mappers - convert database rows to domain objects
3
+ */
4
+ import type { Edge, EdgeType, NodeType, EdgeRow } from "@jamesaphoenix/tx-types";
5
+ export type { EdgeRow } from "@jamesaphoenix/tx-types";
6
+ /**
7
+ * Check if a string is a valid EdgeType.
8
+ */
9
+ export declare const isValidEdgeType: (s: string) => s is EdgeType;
10
+ /**
11
+ * Check if a string is a valid NodeType.
12
+ */
13
+ export declare const isValidNodeType: (s: string) => s is NodeType;
14
+ /**
15
+ * Convert a database row to an Edge domain object.
16
+ * Validates edge_type, source_type, and target_type at runtime.
17
+ */
18
+ export declare const rowToEdge: (row: EdgeRow) => Edge;
19
+ //# sourceMappingURL=edge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../../src/mappers/edge.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EACV,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,OAAO,EACR,MAAM,yBAAyB,CAAA;AAMhC,YAAY,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAsBtD;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,GAAG,MAAM,KAAG,CAAC,IAAI,QAEhD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,GAAG,MAAM,KAAG,CAAC,IAAI,QAEhD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,KAAK,OAAO,KAAG,IAqCxC,CAAA"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Edge mappers - convert database rows to domain objects
3
+ */
4
+ import { Schema } from "effect";
5
+ import { EDGE_TYPES, NODE_TYPES } from "@jamesaphoenix/tx-types";
6
+ import { InvalidStatusError } from "../errors.js";
7
+ import { parseDate } from "./parse-date.js";
8
+ /**
9
+ * Schema for metadata - a record of string keys to unknown values.
10
+ */
11
+ const MetadataSchema = Schema.Record({ key: Schema.String, value: Schema.Unknown });
12
+ /**
13
+ * Safely parse and validate metadata JSON string.
14
+ * Returns empty object if parsing fails or validation fails.
15
+ */
16
+ const parseMetadata = (metadataJson) => {
17
+ if (!metadataJson)
18
+ return {};
19
+ try {
20
+ const parsed = JSON.parse(metadataJson);
21
+ return Schema.decodeUnknownSync(MetadataSchema)(parsed);
22
+ }
23
+ catch {
24
+ return {};
25
+ }
26
+ };
27
+ /**
28
+ * Check if a string is a valid EdgeType.
29
+ */
30
+ export const isValidEdgeType = (s) => {
31
+ return EDGE_TYPES.includes(s);
32
+ };
33
+ /**
34
+ * Check if a string is a valid NodeType.
35
+ */
36
+ export const isValidNodeType = (s) => {
37
+ return NODE_TYPES.includes(s);
38
+ };
39
+ /**
40
+ * Convert a database row to an Edge domain object.
41
+ * Validates edge_type, source_type, and target_type at runtime.
42
+ */
43
+ export const rowToEdge = (row) => {
44
+ if (!isValidEdgeType(row.edge_type)) {
45
+ throw new InvalidStatusError({
46
+ entity: "edge",
47
+ status: row.edge_type,
48
+ validStatuses: EDGE_TYPES,
49
+ rowId: row.id
50
+ });
51
+ }
52
+ if (!isValidNodeType(row.source_type)) {
53
+ throw new InvalidStatusError({
54
+ entity: "edge.source_type",
55
+ status: row.source_type,
56
+ validStatuses: NODE_TYPES,
57
+ rowId: row.id
58
+ });
59
+ }
60
+ if (!isValidNodeType(row.target_type)) {
61
+ throw new InvalidStatusError({
62
+ entity: "edge.target_type",
63
+ status: row.target_type,
64
+ validStatuses: NODE_TYPES,
65
+ rowId: row.id
66
+ });
67
+ }
68
+ return {
69
+ id: row.id,
70
+ edgeType: row.edge_type,
71
+ sourceType: row.source_type,
72
+ sourceId: row.source_id,
73
+ targetType: row.target_type,
74
+ targetId: row.target_id,
75
+ weight: row.weight,
76
+ metadata: parseMetadata(row.metadata),
77
+ createdAt: parseDate(row.created_at, "created_at", row.id),
78
+ invalidatedAt: row.invalidated_at ? parseDate(row.invalidated_at, "invalidated_at", row.id) : null
79
+ };
80
+ };
81
+ //# sourceMappingURL=edge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edge.js","sourceRoot":"","sources":["../../src/mappers/edge.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,14 @@ export { rowToLearning, rowToLearningWithoutEmbedding, isValidSourceType, float3
7
7
  export { rowToFileLearning, matchesPattern, type FileLearningRow } from "./file-learning.js";
8
8
  export { rowToAttempt, isValidOutcome, ATTEMPT_OUTCOMES, type AttemptRow } from "./attempt.js";
9
9
  export { rowToRun, generateRunId, serializeRun, isValidRunStatus, RUN_STATUSES } from "./run.js";
10
+ export { rowToAnchor, rowToInvalidationLog, isValidAnchorType, isValidAnchorStatus, isValidInvalidationSource, type AnchorRow } from "./anchor.js";
11
+ export { rowToEdge, isValidEdgeType, isValidNodeType, type EdgeRow } from "./edge.js";
12
+ export { normalizeContent, hashContent, rowToProcessedHash, serializeProcessedHash, rowToFileProgress, serializeFileProgress } from "./deduplication.js";
13
+ export { rowToCandidate, isValidConfidence, isValidStatus as isValidCandidateStatus, isValidCategory, CANDIDATE_CONFIDENCES, CANDIDATE_CATEGORIES, CANDIDATE_STATUSES, type CandidateRow } from "./candidate.js";
14
+ export { rowToTrackedProject, isValidTrackedSourceType, SOURCE_TYPES, type TrackedProjectRow } from "./tracked-project.js";
10
15
  export { rowToWorker, isValidWorkerStatus, WORKER_STATUSES, type WorkerRow } from "./worker.js";
11
16
  export { rowToClaim, isValidClaimStatus, CLAIM_STATUSES, type ClaimRow } from "./claim.js";
12
17
  export { rowToOrchestratorState, isValidOrchestratorStatus, ORCHESTRATOR_STATUSES, type OrchestratorStateRow } from "./orchestrator-state.js";
13
- export { normalizeContent, hashContent, rowToProcessedHash, serializeProcessedHash, rowToFileProgress, serializeFileProgress } from "./deduplication.js";
14
- export { rowToTrackedProject, isValidTrackedSourceType, SOURCE_TYPES, type TrackedProjectRow } from "./tracked-project.js";
15
- export { rowToDoc, rowToDocLink, rowToTaskDocLink, rowToInvariant, rowToInvariantCheck, isValidDocKind, isValidDocStatus, isValidDocLinkType, isValidTaskDocLinkType, isValidInvariantEnforcement, isValidInvariantStatus, DOC_KINDS, DOC_STATUSES, DOC_LINK_TYPES, TASK_DOC_LINK_TYPES, INVARIANT_ENFORCEMENT_TYPES, INVARIANT_STATUSES, type DocRow, type DocLinkRow, type TaskDocLinkRow, type InvariantRow, type InvariantCheckRow } from "./doc.js";
18
+ export { rowToMessage, isValidMessageStatus, MESSAGE_STATUSES, type MessageRow } from "./message.js";
19
+ export { rowToDoc, rowToDocLink, rowToTaskDocLink, rowToInvariant, rowToInvariantCheck, isValidDocKind, isValidDocStatus, isValidDocLinkType, isValidTaskDocLinkType, isValidInvariantEnforcement, isValidInvariantStatus, } from "./doc.js";
16
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mappers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAG3C,OAAO,EACL,SAAS,EACT,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,KAAK,OAAO,EACZ,KAAK,aAAa,EACnB,MAAM,WAAW,CAAA;AAGlB,OAAO,EACL,aAAa,EACb,6BAA6B,EAC7B,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,WAAW,EACjB,MAAM,eAAe,CAAA;AAGtB,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EACL,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,KAAK,UAAU,EAChB,MAAM,cAAc,CAAA;AAGrB,OAAO,EACL,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACb,MAAM,UAAU,CAAA;AAGjB,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,KAAK,SAAS,EACf,MAAM,aAAa,CAAA;AAGpB,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,KAAK,QAAQ,EACd,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,KAAK,oBAAoB,EAC1B,MAAM,yBAAyB,CAAA;AAGhC,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,YAAY,EACZ,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,2BAA2B,EAC3B,sBAAsB,EACtB,SAAS,EACT,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,2BAA2B,EAC3B,kBAAkB,EAClB,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACvB,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mappers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAG3C,OAAO,EACL,SAAS,EACT,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,KAAK,OAAO,EACZ,KAAK,aAAa,EACnB,MAAM,WAAW,CAAA;AAGlB,OAAO,EACL,aAAa,EACb,6BAA6B,EAC7B,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,WAAW,EACjB,MAAM,eAAe,CAAA;AAGtB,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EACL,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,KAAK,UAAU,EAChB,MAAM,cAAc,CAAA;AAGrB,OAAO,EACL,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACb,MAAM,UAAU,CAAA;AAGjB,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,KAAK,SAAS,EACf,MAAM,aAAa,CAAA;AAGpB,OAAO,EACL,SAAS,EACT,eAAe,EACf,eAAe,EACf,KAAK,OAAO,EACb,MAAM,WAAW,CAAA;AAGlB,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,oBAAoB,CAAA;AAG3B,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,aAAa,IAAI,sBAAsB,EACvC,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,KAAK,YAAY,EAClB,MAAM,gBAAgB,CAAA;AAGvB,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,YAAY,EACZ,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,KAAK,SAAS,EACf,MAAM,aAAa,CAAA;AAGpB,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,KAAK,QAAQ,EACd,MAAM,YAAY,CAAA;AAGnB,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,KAAK,oBAAoB,EAC1B,MAAM,yBAAyB,CAAA;AAGhC,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,KAAK,UAAU,EAChB,MAAM,cAAc,CAAA;AAGrB,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,UAAU,CAAA"}
@@ -13,16 +13,24 @@ export { rowToFileLearning, matchesPattern } from "./file-learning.js";
13
13
  export { rowToAttempt, isValidOutcome, ATTEMPT_OUTCOMES } from "./attempt.js";
14
14
  // Run mappers
15
15
  export { rowToRun, generateRunId, serializeRun, isValidRunStatus, RUN_STATUSES } from "./run.js";
16
+ // Anchor mappers
17
+ export { rowToAnchor, rowToInvalidationLog, isValidAnchorType, isValidAnchorStatus, isValidInvalidationSource } from "./anchor.js";
18
+ // Edge mappers
19
+ export { rowToEdge, isValidEdgeType, isValidNodeType } from "./edge.js";
20
+ // Deduplication mappers
21
+ export { normalizeContent, hashContent, rowToProcessedHash, serializeProcessedHash, rowToFileProgress, serializeFileProgress } from "./deduplication.js";
22
+ // Candidate mappers
23
+ export { rowToCandidate, isValidConfidence, isValidStatus as isValidCandidateStatus, isValidCategory, CANDIDATE_CONFIDENCES, CANDIDATE_CATEGORIES, CANDIDATE_STATUSES } from "./candidate.js";
24
+ // TrackedProject mappers
25
+ export { rowToTrackedProject, isValidTrackedSourceType, SOURCE_TYPES } from "./tracked-project.js";
16
26
  // Worker mappers
17
27
  export { rowToWorker, isValidWorkerStatus, WORKER_STATUSES } from "./worker.js";
18
28
  // Claim mappers
19
29
  export { rowToClaim, isValidClaimStatus, CLAIM_STATUSES } from "./claim.js";
20
30
  // OrchestratorState mappers
21
31
  export { rowToOrchestratorState, isValidOrchestratorStatus, ORCHESTRATOR_STATUSES } from "./orchestrator-state.js";
22
- // Deduplication mappers
23
- export { normalizeContent, hashContent, rowToProcessedHash, serializeProcessedHash, rowToFileProgress, serializeFileProgress } from "./deduplication.js";
24
- // TrackedProject mappers
25
- export { rowToTrackedProject, isValidTrackedSourceType, SOURCE_TYPES } from "./tracked-project.js";
26
- // Doc mappers
27
- export { rowToDoc, rowToDocLink, rowToTaskDocLink, rowToInvariant, rowToInvariantCheck, isValidDocKind, isValidDocStatus, isValidDocLinkType, isValidTaskDocLinkType, isValidInvariantEnforcement, isValidInvariantStatus, DOC_KINDS, DOC_STATUSES, DOC_LINK_TYPES, TASK_DOC_LINK_TYPES, INVARIANT_ENFORCEMENT_TYPES, INVARIANT_STATUSES } from "./doc.js";
32
+ // Message mappers (PRD-024 agent outbox)
33
+ export { rowToMessage, isValidMessageStatus, MESSAGE_STATUSES } from "./message.js";
34
+ // Doc mappers (DD-023 docs-as-primitives)
35
+ export { rowToDoc, rowToDocLink, rowToTaskDocLink, rowToInvariant, rowToInvariantCheck, isValidDocKind, isValidDocStatus, isValidDocLinkType, isValidTaskDocLinkType, isValidInvariantEnforcement, isValidInvariantStatus, } from "./doc.js";
28
36
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mappers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,mBAAmB;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,eAAe;AACf,OAAO,EACL,SAAS,EACT,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EAGlB,MAAM,WAAW,CAAA;AAElB,mBAAmB;AACnB,OAAO,EACL,aAAa,EACb,6BAA6B,EAC7B,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EAEtB,MAAM,eAAe,CAAA;AAEtB,wBAAwB;AACxB,OAAO,EACL,iBAAiB,EACjB,cAAc,EAEf,MAAM,oBAAoB,CAAA;AAE3B,kBAAkB;AAClB,OAAO,EACL,YAAY,EACZ,cAAc,EACd,gBAAgB,EAEjB,MAAM,cAAc,CAAA;AAErB,cAAc;AACd,OAAO,EACL,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACb,MAAM,UAAU,CAAA;AAEjB,iBAAiB;AACjB,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,eAAe,EAEhB,MAAM,aAAa,CAAA;AAEpB,gBAAgB;AAChB,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,cAAc,EAEf,MAAM,YAAY,CAAA;AAEnB,4BAA4B;AAC5B,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EAEtB,MAAM,yBAAyB,CAAA;AAEhC,wBAAwB;AACxB,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,oBAAoB,CAAA;AAE3B,yBAAyB;AACzB,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,YAAY,EAEb,MAAM,sBAAsB,CAAA;AAE7B,cAAc;AACd,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,2BAA2B,EAC3B,sBAAsB,EACtB,SAAS,EACT,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,2BAA2B,EAC3B,kBAAkB,EAMnB,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mappers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,mBAAmB;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,eAAe;AACf,OAAO,EACL,SAAS,EACT,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EAGlB,MAAM,WAAW,CAAA;AAElB,mBAAmB;AACnB,OAAO,EACL,aAAa,EACb,6BAA6B,EAC7B,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EAEtB,MAAM,eAAe,CAAA;AAEtB,wBAAwB;AACxB,OAAO,EACL,iBAAiB,EACjB,cAAc,EAEf,MAAM,oBAAoB,CAAA;AAE3B,kBAAkB;AAClB,OAAO,EACL,YAAY,EACZ,cAAc,EACd,gBAAgB,EAEjB,MAAM,cAAc,CAAA;AAErB,cAAc;AACd,OAAO,EACL,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACb,MAAM,UAAU,CAAA;AAEjB,iBAAiB;AACjB,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EAE1B,MAAM,aAAa,CAAA;AAEpB,eAAe;AACf,OAAO,EACL,SAAS,EACT,eAAe,EACf,eAAe,EAEhB,MAAM,WAAW,CAAA;AAElB,wBAAwB;AACxB,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,oBAAoB,CAAA;AAE3B,oBAAoB;AACpB,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,aAAa,IAAI,sBAAsB,EACvC,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAEnB,MAAM,gBAAgB,CAAA;AAEvB,yBAAyB;AACzB,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,YAAY,EAEb,MAAM,sBAAsB,CAAA;AAE7B,iBAAiB;AACjB,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,eAAe,EAEhB,MAAM,aAAa,CAAA;AAEpB,gBAAgB;AAChB,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,cAAc,EAEf,MAAM,YAAY,CAAA;AAEnB,4BAA4B;AAC5B,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EAEtB,MAAM,yBAAyB,CAAA;AAEhC,yCAAyC;AACzC,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAEjB,MAAM,cAAc,CAAA;AAErB,0CAA0C;AAC1C,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,2BAA2B,EAC3B,sBAAsB,GACvB,MAAM,UAAU,CAAA"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Message mappers - convert database rows to domain objects
3
+ *
4
+ * PRD-024: Agent Outbox Messaging
5
+ */
6
+ import type { Message, MessageRow } from "@jamesaphoenix/tx-types";
7
+ import { MESSAGE_STATUSES, isValidMessageStatus } from "@jamesaphoenix/tx-types";
8
+ export type { MessageRow } from "@jamesaphoenix/tx-types";
9
+ export { MESSAGE_STATUSES, isValidMessageStatus };
10
+ /**
11
+ * Convert a database row to a Message domain object.
12
+ * Validates status field at runtime.
13
+ */
14
+ export declare const rowToMessage: (row: MessageRow) => Message;
15
+ //# sourceMappingURL=message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/mappers/message.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,OAAO,EACP,UAAU,EACX,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAKhF,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAA;AAsBjD;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,KAAK,UAAU,KAAG,OAuB9C,CAAA"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Message mappers - convert database rows to domain objects
3
+ *
4
+ * PRD-024: Agent Outbox Messaging
5
+ */
6
+ import { MESSAGE_STATUSES, isValidMessageStatus } from "@jamesaphoenix/tx-types";
7
+ import { InvalidStatusError } from "../errors.js";
8
+ import { parseDate } from "./parse-date.js";
9
+ export { MESSAGE_STATUSES, isValidMessageStatus };
10
+ /**
11
+ * Safely parse JSON metadata from a database string.
12
+ * Returns empty object on any parse failure.
13
+ */
14
+ const safeParseMetadata = (raw) => {
15
+ try {
16
+ const parsed = JSON.parse(raw);
17
+ if (parsed !== null && typeof parsed === "object" && !Array.isArray(parsed)) {
18
+ const result = {};
19
+ for (const [key, value] of Object.entries(parsed)) {
20
+ result[key] = value;
21
+ }
22
+ return result;
23
+ }
24
+ return {};
25
+ }
26
+ catch {
27
+ return {};
28
+ }
29
+ };
30
+ /**
31
+ * Convert a database row to a Message domain object.
32
+ * Validates status field at runtime.
33
+ */
34
+ export const rowToMessage = (row) => {
35
+ if (!isValidMessageStatus(row.status)) {
36
+ throw new InvalidStatusError({
37
+ entity: "message",
38
+ status: row.status,
39
+ validStatuses: MESSAGE_STATUSES,
40
+ rowId: row.id
41
+ });
42
+ }
43
+ return {
44
+ // eslint-disable-next-line tx/no-as-cast-in-repos -- branded integer ID from SQLite autoincrement
45
+ id: row.id,
46
+ channel: row.channel,
47
+ sender: row.sender,
48
+ content: row.content,
49
+ status: row.status,
50
+ correlationId: row.correlation_id,
51
+ taskId: row.task_id,
52
+ metadata: safeParseMetadata(row.metadata),
53
+ createdAt: parseDate(row.created_at, "created_at", row.id),
54
+ ackedAt: row.acked_at ? parseDate(row.acked_at, "acked_at", row.id) : null,
55
+ expiresAt: row.expires_at ? parseDate(row.expires_at, "expires_at", row.id) : null,
56
+ };
57
+ };
58
+ //# sourceMappingURL=message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/mappers/message.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAI3C,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAA;AAEjD;;;GAGG;AACH,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAA2B,EAAE;IACjE,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACvC,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5E,MAAM,MAAM,GAA4B,EAAE,CAAA;YAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;YACrB,CAAC;YACD,OAAO,MAAM,CAAA;QACf,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAe,EAAW,EAAE;IACvD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,kBAAkB,CAAC;YAC3B,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,aAAa,EAAE,gBAAgB;YAC/B,KAAK,EAAE,GAAG,CAAC,EAAE;SACd,CAAC,CAAA;IACJ,CAAC;IACD,OAAO;QACL,kGAAkG;QAClG,EAAE,EAAE,GAAG,CAAC,EAAmB;QAC3B,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,aAAa,EAAE,GAAG,CAAC,cAAc;QACjC,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,QAAQ,EAAE,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC;QACzC,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC;QAC1D,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;QAC1E,SAAS,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI;KACnF,CAAA;AACH,CAAC,CAAA"}