@jamesaphoenix/tx-core 0.4.2 → 0.4.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/README.md +480 -0
- package/dist/db.d.ts +28 -14
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +102 -14
- package/dist/db.js.map +1 -1
- package/dist/errors.d.ts +178 -34
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +119 -26
- package/dist/errors.js.map +1 -1
- package/dist/id.d.ts +10 -0
- package/dist/id.d.ts.map +1 -1
- package/dist/id.js +17 -1
- package/dist/id.js.map +1 -1
- package/dist/index.d.ts +15 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +62 -8
- package/dist/index.js.map +1 -1
- package/dist/layer.d.ts +23 -14
- package/dist/layer.d.ts.map +1 -1
- package/dist/layer.js +75 -76
- package/dist/layer.js.map +1 -1
- package/dist/mappers/anchor.d.ts +15 -1
- package/dist/mappers/anchor.d.ts.map +1 -1
- package/dist/mappers/anchor.js +95 -28
- package/dist/mappers/anchor.js.map +1 -1
- package/dist/mappers/attempt.d.ts +3 -1
- package/dist/mappers/attempt.d.ts.map +1 -1
- package/dist/mappers/attempt.js +23 -9
- package/dist/mappers/attempt.js.map +1 -1
- package/dist/mappers/candidate.d.ts +3 -1
- package/dist/mappers/candidate.d.ts.map +1 -1
- package/dist/mappers/candidate.js +46 -16
- package/dist/mappers/candidate.js.map +1 -1
- package/dist/mappers/claim.d.ts +1 -1
- package/dist/mappers/claim.d.ts.map +1 -1
- package/dist/mappers/claim.js +11 -4
- package/dist/mappers/claim.js.map +1 -1
- package/dist/mappers/deduplication.d.ts +13 -1
- package/dist/mappers/deduplication.d.ts.map +1 -1
- package/dist/mappers/deduplication.js +22 -3
- package/dist/mappers/deduplication.js.map +1 -1
- package/dist/mappers/doc.d.ts +24 -0
- package/dist/mappers/doc.d.ts.map +1 -0
- package/dist/mappers/doc.js +161 -0
- package/dist/mappers/doc.js.map +1 -0
- package/dist/mappers/edge.d.ts +10 -1
- package/dist/mappers/edge.d.ts.map +1 -1
- package/dist/mappers/edge.js +74 -12
- package/dist/mappers/edge.js.map +1 -1
- package/dist/mappers/file-learning.d.ts.map +1 -1
- package/dist/mappers/file-learning.js +2 -1
- package/dist/mappers/file-learning.js.map +1 -1
- package/dist/mappers/index.d.ts +6 -7
- package/dist/mappers/index.d.ts.map +1 -1
- package/dist/mappers/index.js +10 -12
- package/dist/mappers/index.js.map +1 -1
- package/dist/mappers/learning.d.ts +9 -1
- package/dist/mappers/learning.d.ts.map +1 -1
- package/dist/mappers/learning.js +94 -14
- package/dist/mappers/learning.js.map +1 -1
- package/dist/mappers/orchestrator-state.d.ts +1 -1
- package/dist/mappers/orchestrator-state.d.ts.map +1 -1
- package/dist/mappers/orchestrator-state.js +31 -5
- package/dist/mappers/orchestrator-state.js.map +1 -1
- package/dist/mappers/parse-date.d.ts +11 -0
- package/dist/mappers/parse-date.d.ts.map +1 -0
- package/dist/mappers/parse-date.js +18 -0
- package/dist/mappers/parse-date.js.map +1 -0
- package/dist/mappers/run.d.ts +14 -4
- package/dist/mappers/run.d.ts.map +1 -1
- package/dist/mappers/run.js +49 -18
- package/dist/mappers/run.js.map +1 -1
- package/dist/mappers/task.d.ts +5 -1
- package/dist/mappers/task.d.ts.map +1 -1
- package/dist/mappers/task.js +66 -16
- package/dist/mappers/task.js.map +1 -1
- package/dist/mappers/tracked-project.d.ts +3 -1
- package/dist/mappers/tracked-project.d.ts.map +1 -1
- package/dist/mappers/tracked-project.js +23 -9
- package/dist/mappers/tracked-project.js.map +1 -1
- package/dist/mappers/worker.d.ts +1 -1
- package/dist/mappers/worker.d.ts.map +1 -1
- package/dist/mappers/worker.js +44 -6
- package/dist/mappers/worker.js.map +1 -1
- package/dist/repo/anchor-repo.d.ts +2 -2
- package/dist/repo/anchor-repo.d.ts.map +1 -1
- package/dist/repo/anchor-repo.js +46 -5
- package/dist/repo/anchor-repo.js.map +1 -1
- package/dist/repo/attempt-repo.d.ts +2 -2
- package/dist/repo/attempt-repo.d.ts.map +1 -1
- package/dist/repo/attempt-repo.js +16 -6
- package/dist/repo/attempt-repo.js.map +1 -1
- package/dist/repo/candidate-repo.d.ts.map +1 -1
- package/dist/repo/candidate-repo.js +22 -1
- package/dist/repo/candidate-repo.js.map +1 -1
- package/dist/repo/claim-repo.d.ts +46 -2
- package/dist/repo/claim-repo.d.ts.map +1 -1
- package/dist/repo/claim-repo.js +113 -6
- package/dist/repo/claim-repo.js.map +1 -1
- 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/deduplication-repo.d.ts +9 -1
- package/dist/repo/deduplication-repo.d.ts.map +1 -1
- package/dist/repo/deduplication-repo.js +46 -9
- package/dist/repo/deduplication-repo.js.map +1 -1
- package/dist/repo/dep-repo.d.ts +27 -3
- package/dist/repo/dep-repo.d.ts.map +1 -1
- package/dist/repo/dep-repo.js +166 -39
- package/dist/repo/dep-repo.js.map +1 -1
- package/dist/repo/doc-repo.d.ts +59 -0
- package/dist/repo/doc-repo.d.ts.map +1 -0
- package/dist/repo/doc-repo.js +276 -0
- package/dist/repo/doc-repo.js.map +1 -0
- package/dist/repo/edge-repo.d.ts +1 -1
- package/dist/repo/edge-repo.d.ts.map +1 -1
- package/dist/repo/edge-repo.js +65 -34
- package/dist/repo/edge-repo.js.map +1 -1
- package/dist/repo/file-learning-repo.d.ts +3 -3
- package/dist/repo/file-learning-repo.d.ts.map +1 -1
- package/dist/repo/file-learning-repo.js +19 -8
- package/dist/repo/file-learning-repo.js.map +1 -1
- package/dist/repo/index.d.ts +4 -6
- package/dist/repo/index.d.ts.map +1 -1
- package/dist/repo/index.js +3 -5
- package/dist/repo/index.js.map +1 -1
- package/dist/repo/learning-repo.d.ts +10 -3
- package/dist/repo/learning-repo.d.ts.map +1 -1
- package/dist/repo/learning-repo.js +68 -11
- package/dist/repo/learning-repo.js.map +1 -1
- package/dist/repo/orchestrator-state-repo.d.ts.map +1 -1
- package/dist/repo/orchestrator-state-repo.js +8 -1
- package/dist/repo/orchestrator-state-repo.js.map +1 -1
- package/dist/repo/run-repo.d.ts +3 -3
- package/dist/repo/run-repo.d.ts.map +1 -1
- package/dist/repo/run-repo.js +40 -19
- package/dist/repo/run-repo.js.map +1 -1
- package/dist/repo/task-repo.d.ts +14 -3
- package/dist/repo/task-repo.d.ts.map +1 -1
- package/dist/repo/task-repo.js +194 -20
- package/dist/repo/task-repo.js.map +1 -1
- package/dist/repo/tracked-project-repo.d.ts.map +1 -1
- package/dist/repo/tracked-project-repo.js +15 -1
- package/dist/repo/tracked-project-repo.js.map +1 -1
- package/dist/repo/worker-repo.d.ts +3 -2
- package/dist/repo/worker-repo.d.ts.map +1 -1
- package/dist/repo/worker-repo.js +54 -8
- package/dist/repo/worker-repo.js.map +1 -1
- package/dist/schemas/sync.js +2 -2
- package/dist/schemas/sync.js.map +1 -1
- package/dist/schemas/worker.d.ts +1 -0
- package/dist/schemas/worker.d.ts.map +1 -1
- package/dist/schemas/worker.js +1 -0
- package/dist/schemas/worker.js.map +1 -1
- package/dist/services/agent-service.d.ts +57 -0
- package/dist/services/agent-service.d.ts.map +1 -0
- package/dist/services/agent-service.js +81 -0
- package/dist/services/agent-service.js.map +1 -0
- package/dist/services/anchor-service.js +1 -1
- package/dist/services/anchor-service.js.map +1 -1
- package/dist/services/anchor-verification.d.ts +8 -0
- package/dist/services/anchor-verification.d.ts.map +1 -1
- package/dist/services/anchor-verification.js +237 -37
- package/dist/services/anchor-verification.js.map +1 -1
- package/dist/services/ast-grep-service.d.ts.map +1 -1
- package/dist/services/ast-grep-service.js +93 -22
- package/dist/services/ast-grep-service.js.map +1 -1
- package/dist/services/attempt-service.d.ts.map +1 -1
- package/dist/services/attempt-service.js +1 -4
- package/dist/services/attempt-service.js.map +1 -1
- package/dist/services/auto-sync-service.d.ts +1 -1
- package/dist/services/auto-sync-service.d.ts.map +1 -1
- package/dist/services/auto-sync-service.js +18 -10
- package/dist/services/auto-sync-service.js.map +1 -1
- package/dist/services/claim-service.d.ts +8 -2
- package/dist/services/claim-service.d.ts.map +1 -1
- package/dist/services/claim-service.js +37 -23
- 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 +369 -0
- package/dist/services/compaction-service.js.map +1 -0
- package/dist/services/cycle-scan-service.d.ts +32 -0
- package/dist/services/cycle-scan-service.d.ts.map +1 -0
- package/dist/services/cycle-scan-service.js +542 -0
- package/dist/services/cycle-scan-service.js.map +1 -0
- package/dist/services/daemon-service.d.ts +40 -2
- package/dist/services/daemon-service.d.ts.map +1 -1
- package/dist/services/daemon-service.js +199 -52
- package/dist/services/daemon-service.js.map +1 -1
- package/dist/services/deduplication-service.d.ts +8 -4
- package/dist/services/deduplication-service.d.ts.map +1 -1
- package/dist/services/deduplication-service.js +79 -25
- package/dist/services/deduplication-service.js.map +1 -1
- package/dist/services/dep-service.d.ts +2 -2
- package/dist/services/dep-service.d.ts.map +1 -1
- package/dist/services/dep-service.js +9 -5
- package/dist/services/dep-service.js.map +1 -1
- package/dist/services/diversifier-service.d.ts +2 -1
- package/dist/services/diversifier-service.d.ts.map +1 -1
- package/dist/services/diversifier-service.js +37 -43
- package/dist/services/diversifier-service.js.map +1 -1
- package/dist/services/doc-service.d.ts +49 -0
- package/dist/services/doc-service.d.ts.map +1 -0
- package/dist/services/doc-service.js +605 -0
- package/dist/services/doc-service.js.map +1 -0
- package/dist/services/edge-service.js +2 -2
- package/dist/services/edge-service.js.map +1 -1
- package/dist/services/embedding-service.d.ts +66 -2
- package/dist/services/embedding-service.d.ts.map +1 -1
- package/dist/services/embedding-service.js +138 -24
- package/dist/services/embedding-service.js.map +1 -1
- package/dist/services/file-learning-service.d.ts.map +1 -1
- package/dist/services/file-learning-service.js +8 -7
- package/dist/services/file-learning-service.js.map +1 -1
- package/dist/services/file-watcher-service.d.ts.map +1 -1
- package/dist/services/file-watcher-service.js +58 -11
- package/dist/services/file-watcher-service.js.map +1 -1
- package/dist/services/graph-expansion.d.ts +3 -0
- package/dist/services/graph-expansion.d.ts.map +1 -1
- package/dist/services/graph-expansion.js +28 -7
- package/dist/services/graph-expansion.js.map +1 -1
- package/dist/services/hierarchy-service.d.ts +1 -1
- package/dist/services/hierarchy-service.d.ts.map +1 -1
- package/dist/services/hierarchy-service.js +50 -32
- package/dist/services/hierarchy-service.js.map +1 -1
- package/dist/services/index.d.ts +13 -15
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +13 -15
- package/dist/services/index.js.map +1 -1
- package/dist/services/learning-service.d.ts +4 -4
- package/dist/services/learning-service.d.ts.map +1 -1
- package/dist/services/learning-service.js +75 -42
- package/dist/services/learning-service.js.map +1 -1
- package/dist/services/llm-service.d.ts +62 -0
- package/dist/services/llm-service.d.ts.map +1 -0
- package/dist/services/llm-service.js +172 -0
- package/dist/services/llm-service.js.map +1 -0
- package/dist/services/migration-service.d.ts +1 -1
- package/dist/services/migration-service.d.ts.map +1 -1
- package/dist/services/migration-service.js +18 -7
- package/dist/services/migration-service.js.map +1 -1
- package/dist/services/orchestrator-service.d.ts +4 -3
- package/dist/services/orchestrator-service.d.ts.map +1 -1
- package/dist/services/orchestrator-service.js +67 -29
- package/dist/services/orchestrator-service.js.map +1 -1
- package/dist/services/promotion-service.d.ts +1 -1
- package/dist/services/promotion-service.js +1 -1
- package/dist/services/promotion-service.js.map +1 -1
- package/dist/services/query-expansion-service.d.ts +30 -9
- package/dist/services/query-expansion-service.d.ts.map +1 -1
- package/dist/services/query-expansion-service.js +54 -63
- package/dist/services/query-expansion-service.js.map +1 -1
- package/dist/services/ready-service.d.ts +21 -1
- package/dist/services/ready-service.d.ts.map +1 -1
- package/dist/services/ready-service.js +44 -21
- package/dist/services/ready-service.js.map +1 -1
- package/dist/services/retriever-service.d.ts +10 -10
- package/dist/services/retriever-service.d.ts.map +1 -1
- package/dist/services/retriever-service.js +53 -161
- package/dist/services/retriever-service.js.map +1 -1
- package/dist/services/swarm-verification.d.ts +2 -2
- package/dist/services/swarm-verification.d.ts.map +1 -1
- package/dist/services/swarm-verification.js +12 -6
- package/dist/services/swarm-verification.js.map +1 -1
- package/dist/services/sync-service.d.ts +17 -4
- package/dist/services/sync-service.d.ts.map +1 -1
- package/dist/services/sync-service.js +378 -114
- package/dist/services/sync-service.js.map +1 -1
- package/dist/services/task-service.d.ts +6 -4
- package/dist/services/task-service.d.ts.map +1 -1
- package/dist/services/task-service.js +162 -33
- package/dist/services/task-service.js.map +1 -1
- package/dist/services/tracing-service.d.ts +55 -0
- package/dist/services/tracing-service.d.ts.map +1 -0
- package/dist/services/tracing-service.js +99 -0
- package/dist/services/tracing-service.js.map +1 -0
- package/dist/services/transcript-adapter.d.ts +99 -0
- package/dist/services/transcript-adapter.d.ts.map +1 -0
- package/dist/services/transcript-adapter.js +283 -0
- package/dist/services/transcript-adapter.js.map +1 -0
- package/dist/services/validation-service.d.ts +85 -0
- package/dist/services/validation-service.d.ts.map +1 -0
- package/dist/services/validation-service.js +289 -0
- package/dist/services/validation-service.js.map +1 -0
- package/dist/services/worker-process.d.ts +23 -4
- package/dist/services/worker-process.d.ts.map +1 -1
- package/dist/services/worker-process.js +159 -70
- package/dist/services/worker-process.js.map +1 -1
- package/dist/services/worker-service.d.ts.map +1 -1
- package/dist/services/worker-service.js +7 -12
- package/dist/services/worker-service.js.map +1 -1
- package/dist/sync/claude-task-writer.d.ts +49 -0
- package/dist/sync/claude-task-writer.d.ts.map +1 -0
- package/dist/sync/claude-task-writer.js +135 -0
- package/dist/sync/claude-task-writer.js.map +1 -0
- package/dist/utils/doc-hash.d.ts +10 -0
- package/dist/utils/doc-hash.d.ts.map +1 -0
- package/dist/utils/doc-hash.js +14 -0
- package/dist/utils/doc-hash.js.map +1 -0
- package/dist/utils/doc-renderer.d.ts +44 -0
- package/dist/utils/doc-renderer.d.ts.map +1 -0
- package/dist/utils/doc-renderer.js +202 -0
- package/dist/utils/doc-renderer.js.map +1 -0
- package/dist/utils/math.d.ts +5 -1
- package/dist/utils/math.d.ts.map +1 -1
- package/dist/utils/math.js +12 -4
- package/dist/utils/math.js.map +1 -1
- package/dist/utils/sql.d.ts +9 -0
- package/dist/utils/sql.d.ts.map +1 -0
- package/dist/utils/sql.js +9 -0
- package/dist/utils/sql.js.map +1 -0
- package/dist/utils/toml-config.d.ts +22 -0
- package/dist/utils/toml-config.d.ts.map +1 -0
- package/dist/utils/toml-config.js +75 -0
- package/dist/utils/toml-config.js.map +1 -0
- package/dist/worker/hooks.d.ts +102 -0
- package/dist/worker/hooks.d.ts.map +1 -0
- package/dist/worker/hooks.js +11 -0
- package/dist/worker/hooks.js.map +1 -0
- package/dist/worker/index.d.ts +9 -0
- package/dist/worker/index.d.ts.map +1 -0
- package/dist/worker/index.js +8 -0
- package/dist/worker/index.js.map +1 -0
- package/dist/worker/run-worker.d.ts +33 -0
- package/dist/worker/run-worker.d.ts.map +1 -0
- package/dist/worker/run-worker.js +265 -0
- package/dist/worker/run-worker.js.map +1 -0
- package/package.json +14 -12
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Doc mappers - convert database rows to domain objects
|
|
3
|
+
*/
|
|
4
|
+
import { DOC_KINDS, DOC_STATUSES, DOC_LINK_TYPES, TASK_DOC_LINK_TYPES, INVARIANT_ENFORCEMENT_TYPES, INVARIANT_STATUSES, } from "@jamesaphoenix/tx-types";
|
|
5
|
+
import { InvalidStatusError } from "../errors.js";
|
|
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 };
|
|
8
|
+
// Local string arrays for .includes() (avoids 'as readonly string[]' casts)
|
|
9
|
+
const docKindStrings = DOC_KINDS;
|
|
10
|
+
const docStatusStrings = DOC_STATUSES;
|
|
11
|
+
const docLinkTypeStrings = DOC_LINK_TYPES;
|
|
12
|
+
const taskDocLinkTypeStrings = TASK_DOC_LINK_TYPES;
|
|
13
|
+
const invariantEnforcementStrings = INVARIANT_ENFORCEMENT_TYPES;
|
|
14
|
+
const invariantStatusStrings = INVARIANT_STATUSES;
|
|
15
|
+
// =============================================================================
|
|
16
|
+
// TYPE GUARDS
|
|
17
|
+
// =============================================================================
|
|
18
|
+
export const isValidDocKind = (s) => docKindStrings.includes(s);
|
|
19
|
+
export const isValidDocStatus = (s) => docStatusStrings.includes(s);
|
|
20
|
+
export const isValidDocLinkType = (s) => docLinkTypeStrings.includes(s);
|
|
21
|
+
export const isValidTaskDocLinkType = (s) => taskDocLinkTypeStrings.includes(s);
|
|
22
|
+
export const isValidInvariantEnforcement = (s) => invariantEnforcementStrings.includes(s);
|
|
23
|
+
export const isValidInvariantStatus = (s) => invariantStatusStrings.includes(s);
|
|
24
|
+
// =============================================================================
|
|
25
|
+
// METADATA PARSING
|
|
26
|
+
// =============================================================================
|
|
27
|
+
const parseMetadata = (metadataJson) => {
|
|
28
|
+
if (!metadataJson)
|
|
29
|
+
return {};
|
|
30
|
+
try {
|
|
31
|
+
const parsed = JSON.parse(metadataJson);
|
|
32
|
+
if (typeof parsed === "object" && parsed !== null && !Array.isArray(parsed)) {
|
|
33
|
+
const result = {};
|
|
34
|
+
for (const [key, value] of Object.entries(parsed)) {
|
|
35
|
+
result[key] = value;
|
|
36
|
+
}
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
39
|
+
return {};
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return {};
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
// =============================================================================
|
|
46
|
+
// ROW MAPPERS
|
|
47
|
+
// =============================================================================
|
|
48
|
+
/**
|
|
49
|
+
* Convert a database row to a Doc domain object.
|
|
50
|
+
* Validates kind and status at runtime.
|
|
51
|
+
* Branded integer ID uses 'as' cast (SQLite guarantees integer type).
|
|
52
|
+
*/
|
|
53
|
+
export const rowToDoc = (row) => {
|
|
54
|
+
if (!isValidDocKind(row.kind)) {
|
|
55
|
+
throw new InvalidStatusError({
|
|
56
|
+
entity: "doc",
|
|
57
|
+
status: row.kind,
|
|
58
|
+
validStatuses: [...DOC_KINDS],
|
|
59
|
+
rowId: row.id,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
if (!isValidDocStatus(row.status)) {
|
|
63
|
+
throw new InvalidStatusError({
|
|
64
|
+
entity: "doc",
|
|
65
|
+
status: row.status,
|
|
66
|
+
validStatuses: [...DOC_STATUSES],
|
|
67
|
+
rowId: row.id,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
// After guards, kind and status are narrowed to valid literal types
|
|
71
|
+
return {
|
|
72
|
+
id: row.id,
|
|
73
|
+
hash: row.hash,
|
|
74
|
+
kind: row.kind,
|
|
75
|
+
name: row.name,
|
|
76
|
+
title: row.title,
|
|
77
|
+
version: row.version,
|
|
78
|
+
status: row.status,
|
|
79
|
+
filePath: row.file_path,
|
|
80
|
+
parentDocId: row.parent_doc_id !== null ? row.parent_doc_id : null,
|
|
81
|
+
createdAt: parseDate(row.created_at, "created_at", row.id),
|
|
82
|
+
lockedAt: row.locked_at ? parseDate(row.locked_at, "locked_at", row.id) : null,
|
|
83
|
+
metadata: parseMetadata(row.metadata),
|
|
84
|
+
};
|
|
85
|
+
};
|
|
86
|
+
export const rowToDocLink = (row) => {
|
|
87
|
+
if (!isValidDocLinkType(row.link_type)) {
|
|
88
|
+
throw new InvalidStatusError({
|
|
89
|
+
entity: "doc_link",
|
|
90
|
+
status: row.link_type,
|
|
91
|
+
validStatuses: [...DOC_LINK_TYPES],
|
|
92
|
+
rowId: row.id,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
id: row.id,
|
|
97
|
+
fromDocId: row.from_doc_id,
|
|
98
|
+
toDocId: row.to_doc_id,
|
|
99
|
+
linkType: row.link_type,
|
|
100
|
+
createdAt: parseDate(row.created_at, "created_at", row.id),
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
export const rowToTaskDocLink = (row) => {
|
|
104
|
+
if (!isValidTaskDocLinkType(row.link_type)) {
|
|
105
|
+
throw new InvalidStatusError({
|
|
106
|
+
entity: "task_doc_link",
|
|
107
|
+
status: row.link_type,
|
|
108
|
+
validStatuses: [...TASK_DOC_LINK_TYPES],
|
|
109
|
+
rowId: row.id,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
id: row.id,
|
|
114
|
+
taskId: row.task_id,
|
|
115
|
+
docId: row.doc_id,
|
|
116
|
+
linkType: row.link_type,
|
|
117
|
+
createdAt: parseDate(row.created_at, "created_at", row.id),
|
|
118
|
+
};
|
|
119
|
+
};
|
|
120
|
+
export const rowToInvariant = (row) => {
|
|
121
|
+
if (!isValidInvariantEnforcement(row.enforcement)) {
|
|
122
|
+
throw new InvalidStatusError({
|
|
123
|
+
entity: "invariant",
|
|
124
|
+
status: row.enforcement,
|
|
125
|
+
validStatuses: [...INVARIANT_ENFORCEMENT_TYPES],
|
|
126
|
+
rowId: row.id,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
if (!isValidInvariantStatus(row.status)) {
|
|
130
|
+
throw new InvalidStatusError({
|
|
131
|
+
entity: "invariant",
|
|
132
|
+
status: row.status,
|
|
133
|
+
validStatuses: [...INVARIANT_STATUSES],
|
|
134
|
+
rowId: row.id,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
id: row.id,
|
|
139
|
+
rule: row.rule,
|
|
140
|
+
enforcement: row.enforcement,
|
|
141
|
+
docId: row.doc_id,
|
|
142
|
+
subsystem: row.subsystem,
|
|
143
|
+
testRef: row.test_ref,
|
|
144
|
+
lintRule: row.lint_rule,
|
|
145
|
+
promptRef: row.prompt_ref,
|
|
146
|
+
status: row.status,
|
|
147
|
+
createdAt: parseDate(row.created_at, "created_at", row.id),
|
|
148
|
+
metadata: parseMetadata(row.metadata),
|
|
149
|
+
};
|
|
150
|
+
};
|
|
151
|
+
export const rowToInvariantCheck = (row) => {
|
|
152
|
+
return {
|
|
153
|
+
id: row.id,
|
|
154
|
+
invariantId: row.invariant_id,
|
|
155
|
+
passed: row.passed === 1,
|
|
156
|
+
details: row.details,
|
|
157
|
+
checkedAt: parseDate(row.checked_at, "checked_at", row.id),
|
|
158
|
+
durationMs: row.duration_ms,
|
|
159
|
+
};
|
|
160
|
+
};
|
|
161
|
+
//# sourceMappingURL=doc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc.js","sourceRoot":"","sources":["../../src/mappers/doc.ts"],"names":[],"mappings":"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"}
|
package/dist/mappers/edge.d.ts
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Edge mappers - convert database rows to domain objects
|
|
3
3
|
*/
|
|
4
|
-
import type { Edge, EdgeRow } from "@jamesaphoenix/tx-types";
|
|
4
|
+
import type { Edge, EdgeType, NodeType, EdgeRow } from "@jamesaphoenix/tx-types";
|
|
5
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;
|
|
6
14
|
/**
|
|
7
15
|
* Convert a database row to an Edge domain object.
|
|
16
|
+
* Validates edge_type, source_type, and target_type at runtime.
|
|
8
17
|
*/
|
|
9
18
|
export declare const rowToEdge: (row: EdgeRow) => Edge;
|
|
10
19
|
//# sourceMappingURL=edge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge.d.ts","sourceRoot":"","sources":["../../src/mappers/edge.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
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"}
|
package/dist/mappers/edge.js
CHANGED
|
@@ -1,19 +1,81 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Edge mappers - convert database rows to domain objects
|
|
3
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
|
+
};
|
|
4
39
|
/**
|
|
5
40
|
* Convert a database row to an Edge domain object.
|
|
41
|
+
* Validates edge_type, source_type, and target_type at runtime.
|
|
6
42
|
*/
|
|
7
|
-
export const rowToEdge = (row) =>
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
+
};
|
|
19
81
|
//# sourceMappingURL=edge.js.map
|
package/dist/mappers/edge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edge.js","sourceRoot":"","sources":["../../src/mappers/edge.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"edge.js","sourceRoot":"","sources":["../../src/mappers/edge.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-learning.d.ts","sourceRoot":"","sources":["../../src/mappers/file-learning.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,EAEZ,eAAe,EAChB,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"file-learning.d.ts","sourceRoot":"","sources":["../../src/mappers/file-learning.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,YAAY,EAEZ,eAAe,EAChB,MAAM,yBAAyB,CAAA;AAIhC,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAE9D;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,KAAK,eAAe,KAAG,YAMvD,CAAA;AA8CF;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,SAAS,MAAM,EAAE,MAAM,MAAM,KAAG,OAQ9D,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* File learning mappers - convert database rows to domain objects
|
|
3
3
|
*/
|
|
4
|
+
import { parseDate } from "./parse-date.js";
|
|
4
5
|
/**
|
|
5
6
|
* Convert a database row to a FileLearning domain object.
|
|
6
7
|
*/
|
|
@@ -9,7 +10,7 @@ export const rowToFileLearning = (row) => ({
|
|
|
9
10
|
filePattern: row.file_pattern,
|
|
10
11
|
note: row.note,
|
|
11
12
|
taskId: row.task_id,
|
|
12
|
-
createdAt:
|
|
13
|
+
createdAt: parseDate(row.created_at, "created_at", row.id)
|
|
13
14
|
});
|
|
14
15
|
/**
|
|
15
16
|
* Simple glob pattern matching.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-learning.js","sourceRoot":"","sources":["../../src/mappers/file-learning.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"file-learning.js","sourceRoot":"","sources":["../../src/mappers/file-learning.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAK3C;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAoB,EAAgB,EAAE,CAAC,CAAC;IACxE,EAAE,EAAE,GAAG,CAAC,EAAoB;IAC5B,WAAW,EAAE,GAAG,CAAC,YAAY;IAC7B,IAAI,EAAE,GAAG,CAAC,IAAI;IACd,MAAM,EAAE,GAAG,CAAC,OAAO;IACnB,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC;CAC3D,CAAC,CAAA;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,GAAG,CAAC,OAAe,EAAU,EAAE;IAC9C,IAAI,KAAK,GAAG,EAAE,CAAA;IACd,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QACvB,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBAC3B,oDAAoD;gBACpD,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBAC3B,yCAAyC;oBACzC,yEAAyE;oBACzE,KAAK,IAAI,UAAU,CAAA;oBACnB,CAAC,IAAI,CAAC,CAAA;gBACR,CAAC;qBAAM,CAAC;oBACN,oDAAoD;oBACpD,KAAK,IAAI,IAAI,CAAA;oBACb,CAAC,IAAI,CAAC,CAAA;gBACR,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,8BAA8B;gBAC9B,KAAK,IAAI,OAAO,CAAA;gBAChB,CAAC,EAAE,CAAA;YACL,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACxB,KAAK,IAAI,MAAM,CAAA;YACf,CAAC,EAAE,CAAA;QACL,CAAC;aAAM,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACzM,KAAK,IAAI,IAAI,GAAG,IAAI,CAAA;YACpB,CAAC,EAAE,CAAA;QACL,CAAC;aAAM,CAAC;YACN,KAAK,IAAI,IAAI,CAAA;YACb,CAAC,EAAE,CAAA;QACL,CAAC;IACH,CAAC;IACD,OAAO,IAAI,MAAM,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC,CAAA;AACtC,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAe,EAAE,IAAY,EAAW,EAAE;IACvE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;QAClC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,wCAAwC;QACxC,OAAO,OAAO,KAAK,IAAI,CAAA;IACzB,CAAC;AACH,CAAC,CAAA"}
|
package/dist/mappers/index.d.ts
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @tx/core/mappers - Row to domain object conversion utilities
|
|
3
3
|
*/
|
|
4
|
+
export { parseDate } from "./parse-date.js";
|
|
4
5
|
export { rowToTask, rowToDependency, isValidStatus, isValidTransition, TASK_STATUSES, VALID_TRANSITIONS, type TaskRow, type DependencyRow } from "./task.js";
|
|
5
|
-
export { rowToLearning, isValidSourceType, float32ArrayToBuffer, LEARNING_SOURCE_TYPES, type LearningRow } from "./learning.js";
|
|
6
|
+
export { rowToLearning, rowToLearningWithoutEmbedding, isValidSourceType, float32ArrayToBuffer, LEARNING_SOURCE_TYPES, type LearningRow } from "./learning.js";
|
|
6
7
|
export { rowToFileLearning, matchesPattern, type FileLearningRow } from "./file-learning.js";
|
|
7
8
|
export { rowToAttempt, isValidOutcome, ATTEMPT_OUTCOMES, type AttemptRow } from "./attempt.js";
|
|
8
|
-
export { rowToRun, generateRunId, serializeRun, RUN_STATUSES } from "./run.js";
|
|
9
|
-
export { rowToAnchor, type AnchorRow } from "./anchor.js";
|
|
10
|
-
export { rowToEdge, type EdgeRow } from "./edge.js";
|
|
11
|
-
export { hashContent, rowToProcessedHash, serializeProcessedHash, rowToFileProgress, serializeFileProgress } from "./deduplication.js";
|
|
12
|
-
export { rowToCandidate, isValidConfidence, isValidStatus as isValidCandidateStatus, isValidCategory, CANDIDATE_CONFIDENCES, CANDIDATE_CATEGORIES, CANDIDATE_STATUSES, type CandidateRow } from "./candidate.js";
|
|
13
|
-
export { rowToTrackedProject, isValidTrackedSourceType, SOURCE_TYPES, type TrackedProjectRow } from "./tracked-project.js";
|
|
9
|
+
export { rowToRun, generateRunId, serializeRun, isValidRunStatus, RUN_STATUSES } from "./run.js";
|
|
14
10
|
export { rowToWorker, isValidWorkerStatus, WORKER_STATUSES, type WorkerRow } from "./worker.js";
|
|
15
11
|
export { rowToClaim, isValidClaimStatus, CLAIM_STATUSES, type ClaimRow } from "./claim.js";
|
|
16
12
|
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";
|
|
17
16
|
//# 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,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,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,YAAY,EACb,MAAM,UAAU,CAAA;AAGjB,OAAO,EACL,WAAW,EACX,KAAK,SAAS,EACf,MAAM,aAAa,CAAA;AAGpB,OAAO,EACL,
|
|
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"}
|
package/dist/mappers/index.js
CHANGED
|
@@ -1,30 +1,28 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @tx/core/mappers - Row to domain object conversion utilities
|
|
3
3
|
*/
|
|
4
|
+
// Shared utilities
|
|
5
|
+
export { parseDate } from "./parse-date.js";
|
|
4
6
|
// Task mappers
|
|
5
7
|
export { rowToTask, rowToDependency, isValidStatus, isValidTransition, TASK_STATUSES, VALID_TRANSITIONS } from "./task.js";
|
|
6
8
|
// Learning mappers
|
|
7
|
-
export { rowToLearning, isValidSourceType, float32ArrayToBuffer, LEARNING_SOURCE_TYPES } from "./learning.js";
|
|
9
|
+
export { rowToLearning, rowToLearningWithoutEmbedding, isValidSourceType, float32ArrayToBuffer, LEARNING_SOURCE_TYPES } from "./learning.js";
|
|
8
10
|
// File learning mappers
|
|
9
11
|
export { rowToFileLearning, matchesPattern } from "./file-learning.js";
|
|
10
12
|
// Attempt mappers
|
|
11
13
|
export { rowToAttempt, isValidOutcome, ATTEMPT_OUTCOMES } from "./attempt.js";
|
|
12
14
|
// Run mappers
|
|
13
|
-
export { rowToRun, generateRunId, serializeRun, RUN_STATUSES } from "./run.js";
|
|
14
|
-
// Anchor mappers
|
|
15
|
-
export { rowToAnchor } from "./anchor.js";
|
|
16
|
-
// Edge mappers
|
|
17
|
-
export { rowToEdge } from "./edge.js";
|
|
18
|
-
// Deduplication mappers
|
|
19
|
-
export { hashContent, rowToProcessedHash, serializeProcessedHash, rowToFileProgress, serializeFileProgress } from "./deduplication.js";
|
|
20
|
-
// Candidate mappers
|
|
21
|
-
export { rowToCandidate, isValidConfidence, isValidStatus as isValidCandidateStatus, isValidCategory, CANDIDATE_CONFIDENCES, CANDIDATE_CATEGORIES, CANDIDATE_STATUSES } from "./candidate.js";
|
|
22
|
-
// TrackedProject mappers
|
|
23
|
-
export { rowToTrackedProject, isValidTrackedSourceType, SOURCE_TYPES } from "./tracked-project.js";
|
|
15
|
+
export { rowToRun, generateRunId, serializeRun, isValidRunStatus, RUN_STATUSES } from "./run.js";
|
|
24
16
|
// Worker mappers
|
|
25
17
|
export { rowToWorker, isValidWorkerStatus, WORKER_STATUSES } from "./worker.js";
|
|
26
18
|
// Claim mappers
|
|
27
19
|
export { rowToClaim, isValidClaimStatus, CLAIM_STATUSES } from "./claim.js";
|
|
28
20
|
// OrchestratorState mappers
|
|
29
21
|
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";
|
|
30
28
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mappers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,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,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,YAAY,EACb,MAAM,UAAU,CAAA;AAEjB,iBAAiB;AACjB,OAAO,EACL,WAAW,
|
|
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"}
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
* Learning mappers - convert database rows to domain objects
|
|
3
3
|
*/
|
|
4
4
|
import type { Learning, LearningSourceType, LearningRow } from "@jamesaphoenix/tx-types";
|
|
5
|
+
import { LEARNING_SOURCE_TYPES } from "@jamesaphoenix/tx-types";
|
|
5
6
|
export type { LearningRow } from "@jamesaphoenix/tx-types";
|
|
6
|
-
export { LEARNING_SOURCE_TYPES }
|
|
7
|
+
export { LEARNING_SOURCE_TYPES };
|
|
7
8
|
/**
|
|
8
9
|
* Check if a string is a valid LearningSourceType.
|
|
9
10
|
*/
|
|
@@ -14,6 +15,13 @@ export declare const isValidSourceType: (s: string) => s is LearningSourceType;
|
|
|
14
15
|
export declare const float32ArrayToBuffer: (arr: Float32Array) => Buffer;
|
|
15
16
|
/**
|
|
16
17
|
* Convert a database row to a Learning domain object.
|
|
18
|
+
* Validates source_type at runtime.
|
|
17
19
|
*/
|
|
18
20
|
export declare const rowToLearning: (row: LearningRow) => Learning;
|
|
21
|
+
/**
|
|
22
|
+
* Convert a database row to a Learning domain object WITHOUT deserializing the embedding.
|
|
23
|
+
* Use this for code paths that discard the embedding (MCP serialization, API responses, BM25 search).
|
|
24
|
+
* Avoids allocating Float32Array buffers (~6KB per learning) that would be immediately GC'd.
|
|
25
|
+
*/
|
|
26
|
+
export declare const rowToLearningWithoutEmbedding: (row: Omit<LearningRow, "embedding">) => Learning;
|
|
19
27
|
//# sourceMappingURL=learning.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"learning.d.ts","sourceRoot":"","sources":["../../src/mappers/learning.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"learning.d.ts","sourceRoot":"","sources":["../../src/mappers/learning.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EACV,QAAQ,EACR,kBAAkB,EAClB,WAAW,EACZ,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AA6B/D,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,CAAA;AAEhC;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,GAAG,MAAM,KAAG,CAAC,IAAI,kBAGlD,CAAA;AA4BD;;GAEG;AACH,eAAO,MAAM,oBAAoB,GAAI,KAAK,YAAY,KAAG,MAExD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,KAAK,WAAW,KAAG,QAsBhD,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,GAAI,KAAK,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,KAAG,QAsBnF,CAAA"}
|
package/dist/mappers/learning.js
CHANGED
|
@@ -1,7 +1,34 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Learning mappers - convert database rows to domain objects
|
|
3
3
|
*/
|
|
4
|
-
|
|
4
|
+
import { Schema } from "effect";
|
|
5
|
+
import { LEARNING_SOURCE_TYPES } from "@jamesaphoenix/tx-types";
|
|
6
|
+
import { InvalidStatusError } from "../errors.js";
|
|
7
|
+
import { parseDate } from "./parse-date.js";
|
|
8
|
+
/**
|
|
9
|
+
* Schema for keywords - an array of strings.
|
|
10
|
+
* Used to validate JSON.parse output before casting to string[].
|
|
11
|
+
*/
|
|
12
|
+
const KeywordsSchema = Schema.Array(Schema.String);
|
|
13
|
+
/**
|
|
14
|
+
* Safely parse and validate keywords JSON string.
|
|
15
|
+
* Returns empty array if parsing fails or validation fails.
|
|
16
|
+
*/
|
|
17
|
+
const parseKeywords = (keywordsJson) => {
|
|
18
|
+
if (!keywordsJson)
|
|
19
|
+
return [];
|
|
20
|
+
try {
|
|
21
|
+
const parsed = JSON.parse(keywordsJson);
|
|
22
|
+
const result = Schema.decodeUnknownSync(KeywordsSchema)(parsed);
|
|
23
|
+
// Spread to convert readonly array to mutable array
|
|
24
|
+
return [...result];
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
// Return empty array on parse error or validation failure
|
|
28
|
+
return [];
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
export { LEARNING_SOURCE_TYPES };
|
|
5
32
|
/**
|
|
6
33
|
* Check if a string is a valid LearningSourceType.
|
|
7
34
|
*/
|
|
@@ -11,8 +38,22 @@ export const isValidSourceType = (s) => {
|
|
|
11
38
|
};
|
|
12
39
|
/**
|
|
13
40
|
* Convert a SQLite BLOB (Buffer) to Float32Array.
|
|
41
|
+
*
|
|
42
|
+
* OPTIMIZATION: Uses a view on the existing buffer when byte offset is aligned
|
|
43
|
+
* to avoid allocating a copy. This significantly reduces memory usage when
|
|
44
|
+
* loading many learnings with embeddings (e.g., in RetrieverService.findWithEmbeddings).
|
|
45
|
+
*
|
|
46
|
+
* Float32Array requires 4-byte alignment. When the buffer's byteOffset is aligned,
|
|
47
|
+
* we create a view directly on the underlying ArrayBuffer. Otherwise, we fall back
|
|
48
|
+
* to creating a copy.
|
|
14
49
|
*/
|
|
15
50
|
const bufferToFloat32Array = (buffer) => {
|
|
51
|
+
// Check if byte offset is 4-byte aligned (required for Float32Array)
|
|
52
|
+
if (buffer.byteOffset % 4 === 0) {
|
|
53
|
+
// Create a view directly on the buffer's ArrayBuffer - no copy!
|
|
54
|
+
return new Float32Array(buffer.buffer, buffer.byteOffset, buffer.byteLength / 4);
|
|
55
|
+
}
|
|
56
|
+
// Fallback: byte offset not aligned, must copy to a new ArrayBuffer
|
|
16
57
|
const arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength);
|
|
17
58
|
return new Float32Array(arrayBuffer);
|
|
18
59
|
};
|
|
@@ -24,18 +65,57 @@ export const float32ArrayToBuffer = (arr) => {
|
|
|
24
65
|
};
|
|
25
66
|
/**
|
|
26
67
|
* Convert a database row to a Learning domain object.
|
|
68
|
+
* Validates source_type at runtime.
|
|
27
69
|
*/
|
|
28
|
-
export const rowToLearning = (row) =>
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
70
|
+
export const rowToLearning = (row) => {
|
|
71
|
+
if (!isValidSourceType(row.source_type)) {
|
|
72
|
+
throw new InvalidStatusError({
|
|
73
|
+
entity: "learning",
|
|
74
|
+
status: row.source_type,
|
|
75
|
+
validStatuses: LEARNING_SOURCE_TYPES,
|
|
76
|
+
rowId: row.id
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
id: row.id,
|
|
81
|
+
content: row.content,
|
|
82
|
+
sourceType: row.source_type,
|
|
83
|
+
sourceRef: row.source_ref,
|
|
84
|
+
createdAt: parseDate(row.created_at, "created_at", row.id),
|
|
85
|
+
keywords: parseKeywords(row.keywords),
|
|
86
|
+
category: row.category,
|
|
87
|
+
usageCount: row.usage_count,
|
|
88
|
+
lastUsedAt: row.last_used_at ? parseDate(row.last_used_at, "last_used_at", row.id) : null,
|
|
89
|
+
outcomeScore: row.outcome_score,
|
|
90
|
+
embedding: row.embedding ? bufferToFloat32Array(row.embedding) : null
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Convert a database row to a Learning domain object WITHOUT deserializing the embedding.
|
|
95
|
+
* Use this for code paths that discard the embedding (MCP serialization, API responses, BM25 search).
|
|
96
|
+
* Avoids allocating Float32Array buffers (~6KB per learning) that would be immediately GC'd.
|
|
97
|
+
*/
|
|
98
|
+
export const rowToLearningWithoutEmbedding = (row) => {
|
|
99
|
+
if (!isValidSourceType(row.source_type)) {
|
|
100
|
+
throw new InvalidStatusError({
|
|
101
|
+
entity: "learning",
|
|
102
|
+
status: row.source_type,
|
|
103
|
+
validStatuses: LEARNING_SOURCE_TYPES,
|
|
104
|
+
rowId: row.id
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
id: row.id,
|
|
109
|
+
content: row.content,
|
|
110
|
+
sourceType: row.source_type,
|
|
111
|
+
sourceRef: row.source_ref,
|
|
112
|
+
createdAt: parseDate(row.created_at, "created_at", row.id),
|
|
113
|
+
keywords: parseKeywords(row.keywords),
|
|
114
|
+
category: row.category,
|
|
115
|
+
usageCount: row.usage_count,
|
|
116
|
+
lastUsedAt: row.last_used_at ? parseDate(row.last_used_at, "last_used_at", row.id) : null,
|
|
117
|
+
outcomeScore: row.outcome_score,
|
|
118
|
+
embedding: null
|
|
119
|
+
};
|
|
120
|
+
};
|
|
41
121
|
//# sourceMappingURL=learning.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"learning.js","sourceRoot":"","sources":["../../src/mappers/learning.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"learning.js","sourceRoot":"","sources":["../../src/mappers/learning.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,7 +27,7 @@ export declare const ORCHESTRATOR_STATUSES: readonly ["stopped", "starting", "ru
|
|
|
27
27
|
export declare const isValidOrchestratorStatus: (s: string) => s is OrchestratorStatus;
|
|
28
28
|
/**
|
|
29
29
|
* Convert a database row to an OrchestratorState domain object.
|
|
30
|
-
* Throws if status is invalid.
|
|
30
|
+
* Throws InvalidStatusError if status is invalid.
|
|
31
31
|
*/
|
|
32
32
|
export declare const rowToOrchestratorState: (row: OrchestratorStateRow) => OrchestratorState;
|
|
33
33
|
//# sourceMappingURL=orchestrator-state.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator-state.d.ts","sourceRoot":"","sources":["../../src/mappers/orchestrator-state.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"orchestrator-state.d.ts","sourceRoot":"","sources":["../../src/mappers/orchestrator-state.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAEjF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,gBAAgB,EAAE,MAAM,CAAA;IACxB,0BAA0B,EAAE,MAAM,CAAA;IAClC,0BAA0B,EAAE,MAAM,CAAA;IAClC,sBAAsB,EAAE,MAAM,CAAA;IAC9B,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,yDAA0D,CAAA;AAE5F;;GAEG;AACH,eAAO,MAAM,yBAAyB,GAAI,GAAG,MAAM,KAAG,CAAC,IAAI,kBAE1D,CAAA;AAqBD;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GAAI,KAAK,oBAAoB,KAAG,iBAoBlE,CAAA"}
|