@jamesaphoenix/tx-core 0.4.3 → 0.4.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/dist/db.d.ts.map +1 -1
  2. package/dist/db.js +8 -2
  3. package/dist/db.js.map +1 -1
  4. package/dist/layer.d.ts +3 -3
  5. package/dist/services/auto-sync-service.d.ts +1 -1
  6. package/dist/services/cycle-scan-service.d.ts.map +1 -1
  7. package/dist/services/cycle-scan-service.js +6 -2
  8. package/dist/services/cycle-scan-service.js.map +1 -1
  9. package/dist/services/learning-service.d.ts +1 -1
  10. package/dist/services/orchestrator-service.d.ts +1 -1
  11. package/dist/services/orchestrator-service.d.ts.map +1 -1
  12. package/dist/services/orchestrator-service.js +14 -13
  13. package/dist/services/orchestrator-service.js.map +1 -1
  14. package/dist/services/retriever-service.d.ts +2 -2
  15. package/dist/services/sync-service.d.ts.map +1 -1
  16. package/dist/services/sync-service.js +9 -8
  17. package/dist/services/sync-service.js.map +1 -1
  18. package/dist/services/task-service.d.ts.map +1 -1
  19. package/dist/services/task-service.js +3 -2
  20. package/dist/services/task-service.js.map +1 -1
  21. package/dist/services/worker-process.d.ts +1 -1
  22. package/dist/services/worker-process.d.ts.map +1 -1
  23. package/dist/services/worker-process.js +9 -2
  24. package/dist/services/worker-process.js.map +1 -1
  25. package/dist/worker/run-worker.d.ts +1 -1
  26. package/package.json +1 -1
  27. package/dist/mappers/anchor.d.ts +0 -28
  28. package/dist/mappers/anchor.d.ts.map +0 -1
  29. package/dist/mappers/anchor.js +0 -105
  30. package/dist/mappers/anchor.js.map +0 -1
  31. package/dist/mappers/candidate.d.ts +0 -25
  32. package/dist/mappers/candidate.d.ts.map +0 -1
  33. package/dist/mappers/candidate.js +0 -83
  34. package/dist/mappers/candidate.js.map +0 -1
  35. package/dist/mappers/edge.d.ts +0 -19
  36. package/dist/mappers/edge.d.ts.map +0 -1
  37. package/dist/mappers/edge.js +0 -81
  38. package/dist/mappers/edge.js.map +0 -1
  39. package/dist/repo/anchor-repo.d.ts +0 -52
  40. package/dist/repo/anchor-repo.d.ts.map +0 -1
  41. package/dist/repo/anchor-repo.js +0 -245
  42. package/dist/repo/anchor-repo.js.map +0 -1
  43. package/dist/repo/candidate-repo.d.ts +0 -16
  44. package/dist/repo/candidate-repo.d.ts.map +0 -1
  45. package/dist/repo/candidate-repo.js +0 -164
  46. package/dist/repo/candidate-repo.js.map +0 -1
  47. package/dist/repo/compaction-repo.d.ts +0 -41
  48. package/dist/repo/compaction-repo.d.ts.map +0 -1
  49. package/dist/repo/compaction-repo.js +0 -84
  50. package/dist/repo/compaction-repo.js.map +0 -1
  51. package/dist/repo/edge-repo.d.ts +0 -26
  52. package/dist/repo/edge-repo.d.ts.map +0 -1
  53. package/dist/repo/edge-repo.js +0 -258
  54. package/dist/repo/edge-repo.js.map +0 -1
  55. package/dist/services/anchor-service.d.ts +0 -147
  56. package/dist/services/anchor-service.d.ts.map +0 -1
  57. package/dist/services/anchor-service.js +0 -540
  58. package/dist/services/anchor-service.js.map +0 -1
  59. package/dist/services/anchor-verification.d.ts +0 -102
  60. package/dist/services/anchor-verification.d.ts.map +0 -1
  61. package/dist/services/anchor-verification.js +0 -817
  62. package/dist/services/anchor-verification.js.map +0 -1
  63. package/dist/services/ast-grep-service.d.ts +0 -58
  64. package/dist/services/ast-grep-service.d.ts.map +0 -1
  65. package/dist/services/ast-grep-service.js +0 -427
  66. package/dist/services/ast-grep-service.js.map +0 -1
  67. package/dist/services/candidate-extractor-service.d.ts +0 -56
  68. package/dist/services/candidate-extractor-service.d.ts.map +0 -1
  69. package/dist/services/candidate-extractor-service.js +0 -365
  70. package/dist/services/candidate-extractor-service.js.map +0 -1
  71. package/dist/services/compaction-service.d.ts +0 -105
  72. package/dist/services/compaction-service.d.ts.map +0 -1
  73. package/dist/services/compaction-service.js +0 -369
  74. package/dist/services/compaction-service.js.map +0 -1
  75. package/dist/services/edge-service.d.ts +0 -78
  76. package/dist/services/edge-service.d.ts.map +0 -1
  77. package/dist/services/edge-service.js +0 -158
  78. package/dist/services/edge-service.js.map +0 -1
  79. package/dist/services/feedback-tracker.d.ts +0 -64
  80. package/dist/services/feedback-tracker.d.ts.map +0 -1
  81. package/dist/services/feedback-tracker.js +0 -110
  82. package/dist/services/feedback-tracker.js.map +0 -1
  83. package/dist/services/graph-expansion.d.ts +0 -158
  84. package/dist/services/graph-expansion.d.ts.map +0 -1
  85. package/dist/services/graph-expansion.js +0 -487
  86. package/dist/services/graph-expansion.js.map +0 -1
  87. package/dist/services/promotion-service.d.ts +0 -67
  88. package/dist/services/promotion-service.d.ts.map +0 -1
  89. package/dist/services/promotion-service.js +0 -151
  90. package/dist/services/promotion-service.js.map +0 -1
  91. package/dist/services/swarm-verification.d.ts +0 -104
  92. package/dist/services/swarm-verification.d.ts.map +0 -1
  93. package/dist/services/swarm-verification.js +0 -406
  94. package/dist/services/swarm-verification.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"anchor-repo.d.ts","sourceRoot":"","sources":["../../src/repo/anchor-repo.ts"],"names":[],"mappings":"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"}
@@ -1,245 +0,0 @@
1
- import { Context, Effect, Layer } from "effect";
2
- import { SqliteClient } from "../db.js";
3
- import { DatabaseError, EntityFetchError, UnexpectedRowCountError } from "../errors.js";
4
- import { rowToAnchor, rowToInvalidationLog } from "../mappers/anchor.js";
5
- import { DEFAULT_QUERY_LIMIT } from "../utils/sql.js";
6
- export class AnchorRepository extends Context.Tag("AnchorRepository")() {
7
- }
8
- export const AnchorRepositoryLive = Layer.effect(AnchorRepository, Effect.gen(function* () {
9
- const db = yield* SqliteClient;
10
- return {
11
- create: (input) => Effect.try({
12
- try: () => {
13
- const result = db.prepare(`INSERT INTO learning_anchors
14
- (learning_id, anchor_type, anchor_value, file_path, symbol_fqname, line_start, line_end, content_hash, content_preview)
15
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(input.learningId, input.anchorType, input.anchorValue, input.filePath, input.symbolFqname ?? null, input.lineStart ?? null, input.lineEnd ?? null, input.contentHash ?? null, input.contentPreview ?? null);
16
- // Verify exactly one row was inserted
17
- if (result.changes !== 1) {
18
- throw new UnexpectedRowCountError({
19
- operation: "anchor insert",
20
- expected: 1,
21
- actual: result.changes
22
- });
23
- }
24
- const row = db.prepare("SELECT * FROM learning_anchors WHERE id = ?").get(result.lastInsertRowid);
25
- // Verify the inserted row can be fetched
26
- if (!row) {
27
- throw new EntityFetchError({
28
- entity: "anchor",
29
- id: result.lastInsertRowid,
30
- operation: "insert"
31
- });
32
- }
33
- return rowToAnchor(row);
34
- },
35
- catch: (cause) => new DatabaseError({ cause })
36
- }),
37
- findById: (id) => Effect.try({
38
- try: () => {
39
- const row = db.prepare("SELECT * FROM learning_anchors WHERE id = ?").get(id);
40
- return row ? rowToAnchor(row) : null;
41
- },
42
- catch: (cause) => new DatabaseError({ cause })
43
- }),
44
- findByLearningId: (learningId) => Effect.try({
45
- try: () => {
46
- const rows = db.prepare("SELECT * FROM learning_anchors WHERE learning_id = ? ORDER BY created_at ASC").all(learningId);
47
- return rows.map(rowToAnchor);
48
- },
49
- catch: (cause) => new DatabaseError({ cause })
50
- }),
51
- findByFilePath: (filePath) => Effect.try({
52
- try: () => {
53
- const rows = db.prepare("SELECT * FROM learning_anchors WHERE file_path = ? ORDER BY created_at ASC").all(filePath);
54
- return rows.map(rowToAnchor);
55
- },
56
- catch: (cause) => new DatabaseError({ cause })
57
- }),
58
- update: (id, input) => Effect.try({
59
- try: () => {
60
- const updates = [];
61
- const values = [];
62
- if (input.anchorValue !== undefined) {
63
- updates.push("anchor_value = ?");
64
- values.push(input.anchorValue);
65
- }
66
- if (input.filePath !== undefined) {
67
- updates.push("file_path = ?");
68
- values.push(input.filePath);
69
- }
70
- if (input.symbolFqname !== undefined) {
71
- updates.push("symbol_fqname = ?");
72
- values.push(input.symbolFqname);
73
- }
74
- if (input.lineStart !== undefined) {
75
- updates.push("line_start = ?");
76
- values.push(input.lineStart);
77
- }
78
- if (input.lineEnd !== undefined) {
79
- updates.push("line_end = ?");
80
- values.push(input.lineEnd);
81
- }
82
- if (input.contentHash !== undefined) {
83
- updates.push("content_hash = ?");
84
- values.push(input.contentHash);
85
- }
86
- if (input.contentPreview !== undefined) {
87
- updates.push("content_preview = ?");
88
- values.push(input.contentPreview);
89
- }
90
- if (input.status !== undefined) {
91
- updates.push("status = ?");
92
- values.push(input.status);
93
- }
94
- if (input.verifiedAt !== undefined) {
95
- updates.push("verified_at = ?");
96
- values.push(input.verifiedAt ? input.verifiedAt.toISOString() : null);
97
- }
98
- if (updates.length === 0) {
99
- const row = db.prepare("SELECT * FROM learning_anchors WHERE id = ?").get(id);
100
- return row ? rowToAnchor(row) : null;
101
- }
102
- values.push(id);
103
- const result = db.prepare(`UPDATE learning_anchors SET ${updates.join(", ")} WHERE id = ?`).run(...values);
104
- if (result.changes === 0) {
105
- return null;
106
- }
107
- // Verify the updated row can be fetched
108
- const row = db.prepare("SELECT * FROM learning_anchors WHERE id = ?").get(id);
109
- if (!row) {
110
- throw new EntityFetchError({
111
- entity: "anchor",
112
- id,
113
- operation: "update"
114
- });
115
- }
116
- return rowToAnchor(row);
117
- },
118
- catch: (cause) => new DatabaseError({ cause })
119
- }),
120
- delete: (id) => Effect.try({
121
- try: () => {
122
- const result = db.prepare("DELETE FROM learning_anchors WHERE id = ?").run(id);
123
- return result.changes > 0;
124
- },
125
- catch: (cause) => new DatabaseError({ cause })
126
- }),
127
- findDrifted: () => Effect.try({
128
- try: () => {
129
- const rows = db.prepare("SELECT * FROM learning_anchors WHERE status = 'drifted' ORDER BY created_at ASC").all();
130
- return rows.map(rowToAnchor);
131
- },
132
- catch: (cause) => new DatabaseError({ cause })
133
- }),
134
- findInvalid: () => Effect.try({
135
- try: () => {
136
- const rows = db.prepare("SELECT * FROM learning_anchors WHERE status = 'invalid' ORDER BY created_at ASC").all();
137
- return rows.map(rowToAnchor);
138
- },
139
- catch: (cause) => new DatabaseError({ cause })
140
- }),
141
- updateStatus: (id, status) => Effect.try({
142
- try: () => {
143
- const result = db.prepare("UPDATE learning_anchors SET status = ? WHERE id = ?").run(status, id);
144
- return result.changes > 0;
145
- },
146
- catch: (cause) => new DatabaseError({ cause })
147
- }),
148
- updateVerifiedAt: (id) => Effect.try({
149
- try: () => {
150
- const result = db.prepare("UPDATE learning_anchors SET verified_at = datetime('now') WHERE id = ?").run(id);
151
- return result.changes > 0;
152
- },
153
- catch: (cause) => new DatabaseError({ cause })
154
- }),
155
- findAll: (limit) => Effect.try({
156
- try: () => {
157
- const rows = db.prepare("SELECT * FROM learning_anchors ORDER BY created_at DESC LIMIT ?").all(limit ?? DEFAULT_QUERY_LIMIT);
158
- return rows.map(rowToAnchor);
159
- },
160
- catch: (cause) => new DatabaseError({ cause })
161
- }),
162
- findAllValid: (limit) => Effect.try({
163
- try: () => {
164
- const rows = db.prepare("SELECT * FROM learning_anchors WHERE status = 'valid' ORDER BY created_at DESC LIMIT ?").all(limit ?? DEFAULT_QUERY_LIMIT);
165
- return rows.map(rowToAnchor);
166
- },
167
- catch: (cause) => new DatabaseError({ cause })
168
- }),
169
- setPinned: (id, pinned) => Effect.try({
170
- try: () => {
171
- const result = db.prepare("UPDATE learning_anchors SET pinned = ? WHERE id = ?").run(pinned ? 1 : 0, id);
172
- return result.changes > 0;
173
- },
174
- catch: (cause) => new DatabaseError({ cause })
175
- }),
176
- deleteOldInvalid: (olderThanDays) => Effect.try({
177
- try: () => {
178
- const result = db.prepare(`DELETE FROM learning_anchors
179
- WHERE status = 'invalid'
180
- AND created_at < datetime('now', '-' || ? || ' days')`).run(olderThanDays);
181
- return result.changes;
182
- },
183
- catch: (cause) => new DatabaseError({ cause })
184
- }),
185
- logInvalidation: (input) => Effect.try({
186
- try: () => {
187
- const result = db.prepare(`INSERT INTO invalidation_log
188
- (anchor_id, old_status, new_status, reason, detected_by, old_content_hash, new_content_hash, similarity_score)
189
- VALUES (?, ?, ?, ?, ?, ?, ?, ?)`).run(input.anchorId, input.oldStatus, input.newStatus, input.reason, input.detectedBy, input.oldContentHash ?? null, input.newContentHash ?? null, input.similarityScore ?? null);
190
- // Verify exactly one row was inserted
191
- if (result.changes !== 1) {
192
- throw new UnexpectedRowCountError({
193
- operation: "invalidation log insert",
194
- expected: 1,
195
- actual: result.changes
196
- });
197
- }
198
- const row = db.prepare("SELECT * FROM invalidation_log WHERE id = ?").get(result.lastInsertRowid);
199
- // Verify the inserted row can be fetched
200
- if (!row) {
201
- throw new EntityFetchError({
202
- entity: "invalidation_log",
203
- id: result.lastInsertRowid,
204
- operation: "insert"
205
- });
206
- }
207
- return rowToInvalidationLog(row);
208
- },
209
- catch: (cause) => new DatabaseError({ cause })
210
- }),
211
- getInvalidationLogs: (anchorId) => Effect.try({
212
- try: () => {
213
- if (anchorId !== undefined) {
214
- const rows = db.prepare("SELECT * FROM invalidation_log WHERE anchor_id = ? ORDER BY invalidated_at DESC, id DESC").all(anchorId);
215
- return rows.map(rowToInvalidationLog);
216
- }
217
- const rows = db.prepare("SELECT * FROM invalidation_log ORDER BY invalidated_at DESC, id DESC LIMIT 100").all();
218
- return rows.map(rowToInvalidationLog);
219
- },
220
- catch: (cause) => new DatabaseError({ cause })
221
- }),
222
- getStatusSummary: () => Effect.try({
223
- try: () => {
224
- const result = db.prepare(`
225
- SELECT
226
- COUNT(*) as total,
227
- SUM(CASE WHEN status = 'valid' THEN 1 ELSE 0 END) as valid,
228
- SUM(CASE WHEN status = 'drifted' THEN 1 ELSE 0 END) as drifted,
229
- SUM(CASE WHEN status = 'invalid' THEN 1 ELSE 0 END) as invalid,
230
- SUM(CASE WHEN pinned = 1 THEN 1 ELSE 0 END) as pinned
231
- FROM learning_anchors
232
- `).get();
233
- return {
234
- total: result.total ?? 0,
235
- valid: result.valid ?? 0,
236
- drifted: result.drifted ?? 0,
237
- invalid: result.invalid ?? 0,
238
- pinned: result.pinned ?? 0
239
- };
240
- },
241
- catch: (cause) => new DatabaseError({ cause })
242
- })
243
- };
244
- }));
245
- //# sourceMappingURL=anchor-repo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"anchor-repo.js","sourceRoot":"","sources":["../../src/repo/anchor-repo.ts"],"names":[],"mappings":"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"}
@@ -1,16 +0,0 @@
1
- import { Context, Effect, Layer } from "effect";
2
- import { SqliteClient } from "../db.js";
3
- import { DatabaseError } from "../errors.js";
4
- import type { LearningCandidate, CreateCandidateInput, UpdateCandidateInput, CandidateFilter, CandidateStatus } from "@jamesaphoenix/tx-types";
5
- declare const CandidateRepository_base: Context.TagClass<CandidateRepository, "CandidateRepository", {
6
- readonly insert: (input: CreateCandidateInput) => Effect.Effect<LearningCandidate, DatabaseError>;
7
- readonly findById: (id: number) => Effect.Effect<LearningCandidate | null, DatabaseError>;
8
- readonly findByFilter: (filter: CandidateFilter) => Effect.Effect<readonly LearningCandidate[], DatabaseError>;
9
- readonly update: (id: number, input: UpdateCandidateInput) => Effect.Effect<LearningCandidate | null, DatabaseError>;
10
- readonly updateStatus: (id: number, status: CandidateStatus) => Effect.Effect<LearningCandidate | null, DatabaseError>;
11
- }>;
12
- export declare class CandidateRepository extends CandidateRepository_base {
13
- }
14
- export declare const CandidateRepositoryLive: Layer.Layer<CandidateRepository, never, SqliteClient>;
15
- export {};
16
- //# sourceMappingURL=candidate-repo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"candidate-repo.d.ts","sourceRoot":"","sources":["../../src/repo/candidate-repo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,aAAa,EAAoB,MAAM,cAAc,CAAA;AAE9D,OAAO,KAAK,EACV,iBAAiB,EAEjB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,eAAe,EAChB,MAAM,yBAAyB,CAAA;;qBAKX,CAAC,KAAK,EAAE,oBAAoB,KAAK,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC;uBAC9E,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,iBAAiB,GAAG,IAAI,EAAE,aAAa,CAAC;2BAClE,CAAC,MAAM,EAAE,eAAe,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,iBAAiB,EAAE,EAAE,aAAa,CAAC;qBAC7F,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,KAAK,MAAM,CAAC,MAAM,CAAC,iBAAiB,GAAG,IAAI,EAAE,aAAa,CAAC;2BAC7F,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,KAAK,MAAM,CAAC,MAAM,CAAC,iBAAiB,GAAG,IAAI,EAAE,aAAa,CAAC;;AAP1H,qBAAa,mBAAoB,SAAQ,wBAStC;CAAG;AAEN,eAAO,MAAM,uBAAuB,uDAkNnC,CAAA"}
@@ -1,164 +0,0 @@
1
- import { Context, Effect, Layer } from "effect";
2
- import { SqliteClient } from "../db.js";
3
- import { DatabaseError, EntityFetchError } from "../errors.js";
4
- import { rowToCandidate } from "../mappers/candidate.js";
5
- export class CandidateRepository extends Context.Tag("CandidateRepository")() {
6
- }
7
- export const CandidateRepositoryLive = Layer.effect(CandidateRepository, Effect.gen(function* () {
8
- const db = yield* SqliteClient;
9
- return {
10
- insert: (input) => Effect.try({
11
- try: () => {
12
- const now = new Date().toISOString();
13
- const result = db.prepare(`INSERT INTO learning_candidates
14
- (content, confidence, category, source_file, source_run_id, source_task_id, extracted_at, status)
15
- VALUES (?, ?, ?, ?, ?, ?, ?, 'pending')`).run(input.content, input.confidence, input.category ?? null, input.sourceFile, input.sourceRunId ?? null, input.sourceTaskId ?? null, now);
16
- const row = db.prepare("SELECT * FROM learning_candidates WHERE id = ?").get(result.lastInsertRowid);
17
- if (!row) {
18
- throw new EntityFetchError({
19
- entity: "learning_candidate",
20
- id: result.lastInsertRowid,
21
- operation: "insert"
22
- });
23
- }
24
- return rowToCandidate(row);
25
- },
26
- catch: (cause) => new DatabaseError({ cause })
27
- }),
28
- findById: (id) => Effect.try({
29
- try: () => {
30
- const row = db.prepare("SELECT * FROM learning_candidates WHERE id = ?").get(id);
31
- return row ? rowToCandidate(row) : null;
32
- },
33
- catch: (cause) => new DatabaseError({ cause })
34
- }),
35
- findByFilter: (filter) => Effect.try({
36
- try: () => {
37
- const conditions = [];
38
- const values = [];
39
- // Status filter (supports single or array)
40
- if (filter.status !== undefined) {
41
- const statuses = Array.isArray(filter.status) ? filter.status : [filter.status];
42
- if (statuses.length > 0) {
43
- conditions.push(`status IN (${statuses.map(() => "?").join(", ")})`);
44
- values.push(...statuses);
45
- }
46
- }
47
- // Confidence filter (supports single or array)
48
- if (filter.confidence !== undefined) {
49
- const confidences = Array.isArray(filter.confidence) ? filter.confidence : [filter.confidence];
50
- if (confidences.length > 0) {
51
- conditions.push(`confidence IN (${confidences.map(() => "?").join(", ")})`);
52
- values.push(...confidences);
53
- }
54
- }
55
- // Category filter (supports single or array)
56
- if (filter.category !== undefined) {
57
- const categories = Array.isArray(filter.category) ? filter.category : [filter.category];
58
- if (categories.length > 0) {
59
- conditions.push(`category IN (${categories.map(() => "?").join(", ")})`);
60
- values.push(...categories);
61
- }
62
- }
63
- // Source file filter
64
- if (filter.sourceFile !== undefined) {
65
- conditions.push("source_file = ?");
66
- values.push(filter.sourceFile);
67
- }
68
- // Source run ID filter
69
- if (filter.sourceRunId !== undefined) {
70
- conditions.push("source_run_id = ?");
71
- values.push(filter.sourceRunId);
72
- }
73
- // Source task ID filter
74
- if (filter.sourceTaskId !== undefined) {
75
- conditions.push("source_task_id = ?");
76
- values.push(filter.sourceTaskId);
77
- }
78
- // Build query
79
- let sql = "SELECT * FROM learning_candidates";
80
- if (conditions.length > 0) {
81
- sql += ` WHERE ${conditions.join(" AND ")}`;
82
- }
83
- sql += " ORDER BY extracted_at DESC";
84
- // Limit and offset
85
- if (filter.limit !== undefined) {
86
- sql += " LIMIT ?";
87
- values.push(filter.limit);
88
- if (filter.offset !== undefined) {
89
- sql += " OFFSET ?";
90
- values.push(filter.offset);
91
- }
92
- }
93
- const rows = db.prepare(sql).all(...values);
94
- return rows.map(rowToCandidate);
95
- },
96
- catch: (cause) => new DatabaseError({ cause })
97
- }),
98
- update: (id, input) => Effect.try({
99
- try: () => {
100
- const updates = [];
101
- const values = [];
102
- if (input.status !== undefined) {
103
- updates.push("status = ?");
104
- values.push(input.status);
105
- }
106
- if (input.reviewedAt !== undefined) {
107
- updates.push("reviewed_at = ?");
108
- values.push(input.reviewedAt.toISOString());
109
- }
110
- if (input.reviewedBy !== undefined) {
111
- updates.push("reviewed_by = ?");
112
- values.push(input.reviewedBy);
113
- }
114
- if (input.promotedLearningId !== undefined) {
115
- updates.push("promoted_learning_id = ?");
116
- values.push(input.promotedLearningId);
117
- }
118
- if (input.rejectionReason !== undefined) {
119
- updates.push("rejection_reason = ?");
120
- values.push(input.rejectionReason);
121
- }
122
- if (updates.length === 0) {
123
- // No updates, just return the current row
124
- const row = db.prepare("SELECT * FROM learning_candidates WHERE id = ?").get(id);
125
- return row ? rowToCandidate(row) : null;
126
- }
127
- values.push(id);
128
- const result = db.prepare(`UPDATE learning_candidates SET ${updates.join(", ")} WHERE id = ?`).run(...values);
129
- if (result.changes === 0) {
130
- return null;
131
- }
132
- const row = db.prepare("SELECT * FROM learning_candidates WHERE id = ?").get(id);
133
- if (!row) {
134
- throw new EntityFetchError({
135
- entity: "learning_candidate",
136
- id,
137
- operation: "update"
138
- });
139
- }
140
- return rowToCandidate(row);
141
- },
142
- catch: (cause) => new DatabaseError({ cause })
143
- }),
144
- updateStatus: (id, status) => Effect.try({
145
- try: () => {
146
- const result = db.prepare("UPDATE learning_candidates SET status = ? WHERE id = ?").run(status, id);
147
- if (result.changes === 0) {
148
- return null;
149
- }
150
- const row = db.prepare("SELECT * FROM learning_candidates WHERE id = ?").get(id);
151
- if (!row) {
152
- throw new EntityFetchError({
153
- entity: "learning_candidate",
154
- id,
155
- operation: "update"
156
- });
157
- }
158
- return rowToCandidate(row);
159
- },
160
- catch: (cause) => new DatabaseError({ cause })
161
- })
162
- };
163
- }));
164
- //# sourceMappingURL=candidate-repo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"candidate-repo.js","sourceRoot":"","sources":["../../src/repo/candidate-repo.ts"],"names":[],"mappings":"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"}
@@ -1,41 +0,0 @@
1
- import { Context, Effect, Layer } from "effect";
2
- import { SqliteClient } from "../db.js";
3
- import { DatabaseError } from "../errors.js";
4
- /**
5
- * Compaction log entry from database.
6
- */
7
- export interface CompactionLogEntry {
8
- readonly id: number;
9
- readonly compactedAt: Date;
10
- readonly taskCount: number;
11
- readonly summary: string;
12
- readonly taskIds: readonly string[];
13
- readonly learningsExportedTo: string | null;
14
- readonly learnings: string | null;
15
- }
16
- /**
17
- * Input for creating a new compaction log entry.
18
- */
19
- export interface CreateCompactionLogInput {
20
- readonly taskCount: number;
21
- readonly summary: string;
22
- readonly taskIds: readonly string[];
23
- readonly learningsExportedTo?: string | null;
24
- readonly learnings: string;
25
- }
26
- declare const CompactionRepository_base: Context.TagClass<CompactionRepository, "CompactionRepository", {
27
- readonly insert: (input: CreateCompactionLogInput) => Effect.Effect<CompactionLogEntry, DatabaseError>;
28
- readonly findById: (id: number) => Effect.Effect<CompactionLogEntry | null, DatabaseError>;
29
- readonly findAll: () => Effect.Effect<readonly CompactionLogEntry[], DatabaseError>;
30
- readonly findRecent: (limit: number) => Effect.Effect<readonly CompactionLogEntry[], DatabaseError>;
31
- readonly count: () => Effect.Effect<number, DatabaseError>;
32
- }>;
33
- /**
34
- * Repository for compaction_log table operations.
35
- * Handles storage of compaction history and summaries.
36
- */
37
- export declare class CompactionRepository extends CompactionRepository_base {
38
- }
39
- export declare const CompactionRepositoryLive: Layer.Layer<CompactionRepository, never, SqliteClient>;
40
- export {};
41
- //# sourceMappingURL=compaction-repo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compaction-repo.d.ts","sourceRoot":"","sources":["../../src/repo/compaction-repo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,aAAa,EAAoB,MAAM,cAAc,CAAA;AAE9D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3C,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;;qBA+CoB,CAAC,KAAK,EAAE,wBAAwB,KAAK,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,aAAa,CAAC;uBACnF,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,kBAAkB,GAAG,IAAI,EAAE,aAAa,CAAC;sBACxE,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,kBAAkB,EAAE,EAAE,aAAa,CAAC;yBAC9D,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,kBAAkB,EAAE,EAAE,aAAa,CAAC;oBACnF,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;;AAX9D;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,yBASvC;CAAG;AAEN,eAAO,MAAM,wBAAwB,wDA2EpC,CAAA"}
@@ -1,84 +0,0 @@
1
- import { Context, Effect, Layer } from "effect";
2
- import { SqliteClient } from "../db.js";
3
- import { DatabaseError, EntityFetchError } from "../errors.js";
4
- /**
5
- * Safely parse a JSON array of task ID strings, returning empty array on failure.
6
- */
7
- const safeParseTaskIds = (json) => {
8
- try {
9
- const parsed = JSON.parse(json || "[]");
10
- return Array.isArray(parsed) ? parsed.filter((v) => typeof v === "string") : [];
11
- }
12
- catch {
13
- return [];
14
- }
15
- };
16
- /**
17
- * Map database row to domain entity.
18
- */
19
- const rowToCompactionLogEntry = (row) => ({
20
- id: row.id,
21
- compactedAt: new Date(row.compacted_at),
22
- taskCount: row.task_count,
23
- summary: row.summary,
24
- taskIds: safeParseTaskIds(row.task_ids),
25
- learningsExportedTo: row.learnings_exported_to,
26
- learnings: row.learnings
27
- });
28
- /**
29
- * Repository for compaction_log table operations.
30
- * Handles storage of compaction history and summaries.
31
- */
32
- export class CompactionRepository extends Context.Tag("CompactionRepository")() {
33
- }
34
- export const CompactionRepositoryLive = Layer.effect(CompactionRepository, Effect.gen(function* () {
35
- const db = yield* SqliteClient;
36
- return {
37
- insert: (input) => Effect.try({
38
- try: () => {
39
- const now = new Date().toISOString();
40
- const result = db.prepare(`INSERT INTO compaction_log (compacted_at, task_count, summary, task_ids, learnings_exported_to, learnings)
41
- VALUES (?, ?, ?, ?, ?, ?)`).run(now, input.taskCount, input.summary, JSON.stringify(input.taskIds), input.learningsExportedTo ?? null, input.learnings);
42
- const row = db.prepare("SELECT * FROM compaction_log WHERE id = ?").get(result.lastInsertRowid);
43
- if (!row) {
44
- throw new EntityFetchError({
45
- entity: "compaction_log",
46
- id: result.lastInsertRowid,
47
- operation: "insert"
48
- });
49
- }
50
- return rowToCompactionLogEntry(row);
51
- },
52
- catch: (cause) => new DatabaseError({ cause })
53
- }),
54
- findById: (id) => Effect.try({
55
- try: () => {
56
- const row = db.prepare("SELECT * FROM compaction_log WHERE id = ?").get(id);
57
- return row ? rowToCompactionLogEntry(row) : null;
58
- },
59
- catch: (cause) => new DatabaseError({ cause })
60
- }),
61
- findAll: () => Effect.try({
62
- try: () => {
63
- const rows = db.prepare(`SELECT * FROM compaction_log ORDER BY compacted_at DESC`).all();
64
- return rows.map(rowToCompactionLogEntry);
65
- },
66
- catch: (cause) => new DatabaseError({ cause })
67
- }),
68
- findRecent: (limit) => Effect.try({
69
- try: () => {
70
- const rows = db.prepare(`SELECT * FROM compaction_log ORDER BY compacted_at DESC LIMIT ?`).all(limit);
71
- return rows.map(rowToCompactionLogEntry);
72
- },
73
- catch: (cause) => new DatabaseError({ cause })
74
- }),
75
- count: () => Effect.try({
76
- try: () => {
77
- const result = db.prepare("SELECT COUNT(*) as cnt FROM compaction_log").get();
78
- return result.cnt;
79
- },
80
- catch: (cause) => new DatabaseError({ cause })
81
- })
82
- };
83
- }));
84
- //# sourceMappingURL=compaction-repo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"compaction-repo.js","sourceRoot":"","sources":["../../src/repo/compaction-repo.ts"],"names":[],"mappings":"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"}
@@ -1,26 +0,0 @@
1
- import { Context, Effect, Layer } from "effect";
2
- import { SqliteClient } from "../db.js";
3
- import { DatabaseError, EdgeNotFoundError } from "../errors.js";
4
- import type { Edge, NodeType, EdgeType, CreateEdgeInput, UpdateEdgeInput, NeighborNode } from "@jamesaphoenix/tx-types";
5
- declare const EdgeRepository_base: Context.TagClass<EdgeRepository, "EdgeRepository", {
6
- readonly create: (input: CreateEdgeInput) => Effect.Effect<Edge, DatabaseError>;
7
- readonly findById: (id: number) => Effect.Effect<Edge | null, DatabaseError>;
8
- readonly findBySource: (sourceType: NodeType, sourceId: string) => Effect.Effect<readonly Edge[], DatabaseError>;
9
- readonly findByTarget: (targetType: NodeType, targetId: string) => Effect.Effect<readonly Edge[], DatabaseError>;
10
- readonly findByMultipleSources: (sourceType: NodeType, sourceIds: readonly string[]) => Effect.Effect<ReadonlyMap<string, readonly Edge[]>, DatabaseError>;
11
- readonly findByEdgeType: (edgeType: EdgeType) => Effect.Effect<readonly Edge[], DatabaseError>;
12
- readonly countByType: () => Effect.Effect<ReadonlyMap<EdgeType, number>, DatabaseError>;
13
- readonly findNeighbors: (nodeType: NodeType, nodeId: string, options?: {
14
- direction?: "outgoing" | "incoming" | "both";
15
- edgeTypes?: readonly EdgeType[];
16
- }) => Effect.Effect<readonly NeighborNode[], DatabaseError>;
17
- readonly findPath: (fromType: NodeType, fromId: string, toType: NodeType, toId: string, maxDepth?: number) => Effect.Effect<readonly Edge[] | null, DatabaseError>;
18
- readonly update: (id: number, input: UpdateEdgeInput) => Effect.Effect<Edge | null, DatabaseError>;
19
- readonly invalidate: (id: number) => Effect.Effect<boolean, EdgeNotFoundError | DatabaseError>;
20
- readonly findAll: (limit?: number) => Effect.Effect<readonly Edge[], DatabaseError>;
21
- }>;
22
- export declare class EdgeRepository extends EdgeRepository_base {
23
- }
24
- export declare const EdgeRepositoryLive: Layer.Layer<EdgeRepository, never, SqliteClient>;
25
- export {};
26
- //# sourceMappingURL=edge-repo.d.ts.map