@jamesaphoenix/tx-core 0.4.5 → 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.
- package/dist/db.d.ts +4 -9
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +6 -80
- package/dist/db.js.map +1 -1
- package/dist/errors.d.ts +67 -10
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +44 -10
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +12 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -28
- package/dist/index.js.map +1 -1
- package/dist/layer.d.ts +22 -10
- package/dist/layer.d.ts.map +1 -1
- package/dist/layer.js +97 -39
- package/dist/layer.js.map +1 -1
- package/dist/mappers/anchor.d.ts +28 -0
- package/dist/mappers/anchor.d.ts.map +1 -0
- package/dist/mappers/anchor.js +105 -0
- package/dist/mappers/anchor.js.map +1 -0
- package/dist/mappers/candidate.d.ts +25 -0
- package/dist/mappers/candidate.d.ts.map +1 -0
- package/dist/mappers/candidate.js +83 -0
- package/dist/mappers/candidate.js.map +1 -0
- package/dist/mappers/doc.d.ts +2 -4
- package/dist/mappers/doc.d.ts.map +1 -1
- package/dist/mappers/doc.js +7 -4
- package/dist/mappers/doc.js.map +1 -1
- package/dist/mappers/edge.d.ts +19 -0
- package/dist/mappers/edge.d.ts.map +1 -0
- package/dist/mappers/edge.js +81 -0
- package/dist/mappers/edge.js.map +1 -0
- package/dist/mappers/index.d.ts +7 -3
- package/dist/mappers/index.d.ts.map +1 -1
- package/dist/mappers/index.js +14 -6
- package/dist/mappers/index.js.map +1 -1
- package/dist/mappers/message.d.ts +15 -0
- package/dist/mappers/message.d.ts.map +1 -0
- package/dist/mappers/message.js +58 -0
- package/dist/mappers/message.js.map +1 -0
- package/dist/repo/anchor-repo.d.ts +52 -0
- package/dist/repo/anchor-repo.d.ts.map +1 -0
- package/dist/repo/anchor-repo.js +245 -0
- package/dist/repo/anchor-repo.js.map +1 -0
- package/dist/repo/candidate-repo.d.ts +16 -0
- package/dist/repo/candidate-repo.d.ts.map +1 -0
- package/dist/repo/candidate-repo.js +164 -0
- package/dist/repo/candidate-repo.js.map +1 -0
- package/dist/repo/compaction-repo.d.ts +41 -0
- package/dist/repo/compaction-repo.d.ts.map +1 -0
- package/dist/repo/compaction-repo.js +84 -0
- package/dist/repo/compaction-repo.js.map +1 -0
- package/dist/repo/doc-repo.d.ts +68 -51
- package/dist/repo/doc-repo.d.ts.map +1 -1
- package/dist/repo/doc-repo.js +120 -54
- package/dist/repo/doc-repo.js.map +1 -1
- package/dist/repo/edge-repo.d.ts +26 -0
- package/dist/repo/edge-repo.d.ts.map +1 -0
- package/dist/repo/edge-repo.js +258 -0
- package/dist/repo/edge-repo.js.map +1 -0
- package/dist/repo/index.d.ts +8 -3
- package/dist/repo/index.d.ts.map +1 -1
- package/dist/repo/index.js +7 -2
- package/dist/repo/index.js.map +1 -1
- package/dist/repo/message-repo.d.ts +55 -0
- package/dist/repo/message-repo.d.ts.map +1 -0
- package/dist/repo/message-repo.js +132 -0
- package/dist/repo/message-repo.js.map +1 -0
- package/dist/services/agent-service.d.ts +18 -23
- package/dist/services/agent-service.d.ts.map +1 -1
- package/dist/services/agent-service.js +9 -0
- package/dist/services/agent-service.js.map +1 -1
- package/dist/services/anchor-service.d.ts +147 -0
- package/dist/services/anchor-service.d.ts.map +1 -0
- package/dist/services/anchor-service.js +540 -0
- package/dist/services/anchor-service.js.map +1 -0
- package/dist/services/anchor-verification.d.ts +102 -0
- package/dist/services/anchor-verification.d.ts.map +1 -0
- package/dist/services/anchor-verification.js +817 -0
- package/dist/services/anchor-verification.js.map +1 -0
- package/dist/services/ast-grep-service.d.ts +58 -0
- package/dist/services/ast-grep-service.d.ts.map +1 -0
- package/dist/services/ast-grep-service.js +427 -0
- package/dist/services/ast-grep-service.js.map +1 -0
- package/dist/services/attempt-service.d.ts.map +1 -1
- package/dist/services/attempt-service.js +4 -1
- package/dist/services/attempt-service.js.map +1 -1
- package/dist/services/auto-sync-service.d.ts.map +1 -1
- package/dist/services/auto-sync-service.js +7 -7
- package/dist/services/auto-sync-service.js.map +1 -1
- package/dist/services/candidate-extractor-service.d.ts +44 -0
- package/dist/services/candidate-extractor-service.d.ts.map +1 -0
- package/dist/services/candidate-extractor-service.js +175 -0
- package/dist/services/candidate-extractor-service.js.map +1 -0
- package/dist/services/claim-service.d.ts.map +1 -1
- package/dist/services/claim-service.js +0 -8
- package/dist/services/claim-service.js.map +1 -1
- package/dist/services/compaction-service.d.ts +105 -0
- package/dist/services/compaction-service.d.ts.map +1 -0
- package/dist/services/compaction-service.js +281 -0
- package/dist/services/compaction-service.js.map +1 -0
- package/dist/services/cycle-scan-service.d.ts +1 -5
- package/dist/services/cycle-scan-service.d.ts.map +1 -1
- package/dist/services/cycle-scan-service.js +49 -19
- package/dist/services/cycle-scan-service.js.map +1 -1
- package/dist/services/daemon-service.d.ts +2 -8
- package/dist/services/daemon-service.d.ts.map +1 -1
- package/dist/services/daemon-service.js +21 -35
- package/dist/services/daemon-service.js.map +1 -1
- package/dist/services/doc-service.d.ts +25 -32
- package/dist/services/doc-service.d.ts.map +1 -1
- package/dist/services/doc-service.js +206 -190
- package/dist/services/doc-service.js.map +1 -1
- package/dist/services/edge-service.d.ts +78 -0
- package/dist/services/edge-service.d.ts.map +1 -0
- package/dist/services/edge-service.js +158 -0
- package/dist/services/edge-service.js.map +1 -0
- package/dist/services/embedding-service.d.ts +2 -2
- package/dist/services/embedding-service.d.ts.map +1 -1
- package/dist/services/embedding-service.js +7 -13
- package/dist/services/embedding-service.js.map +1 -1
- package/dist/services/feedback-tracker.d.ts +64 -0
- package/dist/services/feedback-tracker.d.ts.map +1 -0
- package/dist/services/feedback-tracker.js +110 -0
- package/dist/services/feedback-tracker.js.map +1 -0
- package/dist/services/file-watcher-service.d.ts.map +1 -1
- package/dist/services/file-watcher-service.js +1 -3
- package/dist/services/file-watcher-service.js.map +1 -1
- package/dist/services/graph-expansion.d.ts +158 -0
- package/dist/services/graph-expansion.d.ts.map +1 -0
- package/dist/services/graph-expansion.js +487 -0
- package/dist/services/graph-expansion.js.map +1 -0
- package/dist/services/index.d.ts +19 -8
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +18 -7
- package/dist/services/index.js.map +1 -1
- package/dist/services/learning-service.d.ts.map +1 -1
- package/dist/services/learning-service.js +22 -14
- package/dist/services/learning-service.js.map +1 -1
- package/dist/services/llm-service.d.ts +61 -39
- package/dist/services/llm-service.d.ts.map +1 -1
- package/dist/services/llm-service.js +199 -113
- package/dist/services/llm-service.js.map +1 -1
- package/dist/services/message-service.d.ts +57 -0
- package/dist/services/message-service.d.ts.map +1 -0
- package/dist/services/message-service.js +78 -0
- package/dist/services/message-service.js.map +1 -0
- package/dist/services/orchestrator-service.d.ts.map +1 -1
- package/dist/services/orchestrator-service.js +19 -20
- package/dist/services/orchestrator-service.js.map +1 -1
- package/dist/services/promotion-service.d.ts +67 -0
- package/dist/services/promotion-service.d.ts.map +1 -0
- package/dist/services/promotion-service.js +151 -0
- package/dist/services/promotion-service.js.map +1 -0
- package/dist/services/query-expansion-service.d.ts +7 -22
- package/dist/services/query-expansion-service.d.ts.map +1 -1
- package/dist/services/query-expansion-service.js +41 -75
- package/dist/services/query-expansion-service.js.map +1 -1
- package/dist/services/retriever-service.d.ts +8 -5
- package/dist/services/retriever-service.d.ts.map +1 -1
- package/dist/services/retriever-service.js +150 -15
- package/dist/services/retriever-service.js.map +1 -1
- package/dist/services/swarm-verification.d.ts +104 -0
- package/dist/services/swarm-verification.d.ts.map +1 -0
- package/dist/services/swarm-verification.js +406 -0
- package/dist/services/swarm-verification.js.map +1 -0
- package/dist/services/sync-service.d.ts.map +1 -1
- package/dist/services/sync-service.js +8 -9
- package/dist/services/sync-service.js.map +1 -1
- package/dist/services/task-service.d.ts.map +1 -1
- package/dist/services/task-service.js +3 -8
- package/dist/services/task-service.js.map +1 -1
- package/dist/services/tracing-service.js +6 -6
- package/dist/services/tracing-service.js.map +1 -1
- package/dist/services/transcript-adapter.d.ts.map +1 -1
- package/dist/services/transcript-adapter.js +1 -1
- package/dist/services/transcript-adapter.js.map +1 -1
- package/dist/services/worker-process.d.ts.map +1 -1
- package/dist/services/worker-process.js +8 -30
- package/dist/services/worker-process.js.map +1 -1
- package/dist/utils/doc-hash.d.ts +0 -4
- package/dist/utils/doc-hash.d.ts.map +1 -1
- package/dist/utils/doc-hash.js.map +1 -1
- package/dist/utils/doc-renderer.d.ts +31 -26
- package/dist/utils/doc-renderer.d.ts.map +1 -1
- package/dist/utils/doc-renderer.js +0 -7
- package/dist/utils/doc-renderer.js.map +1 -1
- package/dist/utils/llm-json.d.ts +17 -0
- package/dist/utils/llm-json.d.ts.map +1 -0
- package/dist/utils/llm-json.js +51 -0
- package/dist/utils/llm-json.js.map +1 -0
- package/dist/utils/toml-config.d.ts +10 -16
- package/dist/utils/toml-config.d.ts.map +1 -1
- package/dist/utils/toml-config.js +3 -1
- package/dist/utils/toml-config.js.map +1 -1
- package/dist/worker/run-worker.d.ts.map +1 -1
- package/dist/worker/run-worker.js +2 -7
- package/dist/worker/run-worker.js.map +1 -1
- 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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"}
|
package/dist/mappers/doc.d.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Doc mappers - convert database rows to domain objects
|
|
3
3
|
*/
|
|
4
|
-
import
|
|
5
|
-
|
|
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;
|
|
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"}
|
package/dist/mappers/doc.js
CHANGED
|
@@ -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" &&
|
|
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
|
|
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
|
};
|
package/dist/mappers/doc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doc.js","sourceRoot":"","sources":["../../src/mappers/doc.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
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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"}
|
package/dist/mappers/index.d.ts
CHANGED
|
@@ -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 {
|
|
14
|
-
export {
|
|
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,
|
|
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"}
|
package/dist/mappers/index.js
CHANGED
|
@@ -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
|
-
//
|
|
23
|
-
export {
|
|
24
|
-
//
|
|
25
|
-
export {
|
|
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,
|
|
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"}
|