@jamesaphoenix/tx-core 0.4.1
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 +42 -0
- package/dist/db.d.ts.map +1 -0
- package/dist/db.js +46 -0
- package/dist/db.js.map +1 -0
- package/dist/errors.d.ts +231 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +139 -0
- package/dist/errors.js.map +1 -0
- package/dist/id.d.ts +6 -0
- package/dist/id.d.ts.map +1 -0
- package/dist/id.js +21 -0
- package/dist/id.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +56 -0
- package/dist/index.js.map +1 -0
- package/dist/layer.d.ts +50 -0
- package/dist/layer.d.ts.map +1 -0
- package/dist/layer.js +155 -0
- package/dist/layer.js.map +1 -0
- package/dist/mappers/anchor.d.ts +14 -0
- package/dist/mappers/anchor.d.ts.map +1 -0
- package/dist/mappers/anchor.js +38 -0
- package/dist/mappers/anchor.js.map +1 -0
- package/dist/mappers/attempt.d.ts +15 -0
- package/dist/mappers/attempt.d.ts.map +1 -0
- package/dist/mappers/attempt.js +23 -0
- package/dist/mappers/attempt.js.map +1 -0
- package/dist/mappers/candidate.d.ts +23 -0
- package/dist/mappers/candidate.d.ts.map +1 -0
- package/dist/mappers/candidate.js +53 -0
- package/dist/mappers/candidate.js.map +1 -0
- package/dist/mappers/claim.d.ts +30 -0
- package/dist/mappers/claim.d.ts.map +1 -0
- package/dist/mappers/claim.js +32 -0
- package/dist/mappers/claim.js.map +1 -0
- package/dist/mappers/deduplication.d.ts +39 -0
- package/dist/mappers/deduplication.d.ts.map +1 -0
- package/dist/mappers/deduplication.js +53 -0
- package/dist/mappers/deduplication.js.map +1 -0
- package/dist/mappers/edge.d.ts +10 -0
- package/dist/mappers/edge.d.ts.map +1 -0
- package/dist/mappers/edge.js +19 -0
- package/dist/mappers/edge.js.map +1 -0
- package/dist/mappers/file-learning.d.ts +14 -0
- package/dist/mappers/file-learning.d.ts.map +1 -0
- package/dist/mappers/file-learning.js +75 -0
- package/dist/mappers/file-learning.js.map +1 -0
- package/dist/mappers/index.d.ts +17 -0
- package/dist/mappers/index.d.ts.map +1 -0
- package/dist/mappers/index.js +30 -0
- package/dist/mappers/index.js.map +1 -0
- package/dist/mappers/learning.d.ts +19 -0
- package/dist/mappers/learning.d.ts.map +1 -0
- package/dist/mappers/learning.js +41 -0
- package/dist/mappers/learning.js.map +1 -0
- package/dist/mappers/orchestrator-state.d.ts +33 -0
- package/dist/mappers/orchestrator-state.d.ts.map +1 -0
- package/dist/mappers/orchestrator-state.js +34 -0
- package/dist/mappers/orchestrator-state.js.map +1 -0
- package/dist/mappers/run.d.ts +32 -0
- package/dist/mappers/run.d.ts.map +1 -0
- package/dist/mappers/run.js +64 -0
- package/dist/mappers/run.js.map +1 -0
- package/dist/mappers/task.d.ts +23 -0
- package/dist/mappers/task.d.ts.map +1 -0
- package/dist/mappers/task.js +54 -0
- package/dist/mappers/task.js.map +1 -0
- package/dist/mappers/tracked-project.d.ts +15 -0
- package/dist/mappers/tracked-project.d.ts.map +1 -0
- package/dist/mappers/tracked-project.js +23 -0
- package/dist/mappers/tracked-project.js.map +1 -0
- package/dist/mappers/worker.d.ts +33 -0
- package/dist/mappers/worker.d.ts.map +1 -0
- package/dist/mappers/worker.js +35 -0
- package/dist/mappers/worker.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 +204 -0
- package/dist/repo/anchor-repo.js.map +1 -0
- package/dist/repo/attempt-repo.d.ts +25 -0
- package/dist/repo/attempt-repo.d.ts.map +1 -0
- package/dist/repo/attempt-repo.js +78 -0
- package/dist/repo/attempt-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 +143 -0
- package/dist/repo/candidate-repo.js.map +1 -0
- package/dist/repo/claim-repo.d.ts +17 -0
- package/dist/repo/claim-repo.d.ts.map +1 -0
- package/dist/repo/claim-repo.js +62 -0
- package/dist/repo/claim-repo.js.map +1 -0
- package/dist/repo/deduplication-repo.d.ts +37 -0
- package/dist/repo/deduplication-repo.d.ts.map +1 -0
- package/dist/repo/deduplication-repo.js +133 -0
- package/dist/repo/deduplication-repo.js.map +1 -0
- package/dist/repo/dep-repo.d.ts +19 -0
- package/dist/repo/dep-repo.d.ts.map +1 -0
- package/dist/repo/dep-repo.js +104 -0
- package/dist/repo/dep-repo.js.map +1 -0
- 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 +227 -0
- package/dist/repo/edge-repo.js.map +1 -0
- package/dist/repo/file-learning-repo.d.ts +17 -0
- package/dist/repo/file-learning-repo.d.ts.map +1 -0
- package/dist/repo/file-learning-repo.js +60 -0
- package/dist/repo/file-learning-repo.js.map +1 -0
- package/dist/repo/index.d.ts +18 -0
- package/dist/repo/index.d.ts.map +1 -0
- package/dist/repo/index.js +18 -0
- package/dist/repo/index.js.map +1 -0
- package/dist/repo/learning-repo.d.ts +31 -0
- package/dist/repo/learning-repo.d.ts.map +1 -0
- package/dist/repo/learning-repo.js +165 -0
- package/dist/repo/learning-repo.js.map +1 -0
- package/dist/repo/orchestrator-state-repo.d.ts +27 -0
- package/dist/repo/orchestrator-state-repo.d.ts.map +1 -0
- package/dist/repo/orchestrator-state-repo.js +96 -0
- package/dist/repo/orchestrator-state-repo.js.map +1 -0
- package/dist/repo/run-repo.d.ts +31 -0
- package/dist/repo/run-repo.d.ts.map +1 -0
- package/dist/repo/run-repo.js +132 -0
- package/dist/repo/run-repo.js.map +1 -0
- package/dist/repo/task-repo.d.ts +21 -0
- package/dist/repo/task-repo.d.ts.map +1 -0
- package/dist/repo/task-repo.js +169 -0
- package/dist/repo/task-repo.js.map +1 -0
- package/dist/repo/tracked-project-repo.d.ts +16 -0
- package/dist/repo/tracked-project-repo.d.ts.map +1 -0
- package/dist/repo/tracked-project-repo.js +54 -0
- package/dist/repo/tracked-project-repo.js.map +1 -0
- package/dist/repo/worker-repo.d.ts +19 -0
- package/dist/repo/worker-repo.d.ts.map +1 -0
- package/dist/repo/worker-repo.js +72 -0
- package/dist/repo/worker-repo.js.map +1 -0
- package/dist/schemas/index.d.ts +8 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +7 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/sync.d.ts +296 -0
- package/dist/schemas/sync.d.ts.map +1 -0
- package/dist/schemas/sync.js +146 -0
- package/dist/schemas/sync.js.map +1 -0
- package/dist/schemas/worker.d.ts +77 -0
- package/dist/schemas/worker.d.ts.map +1 -0
- package/dist/schemas/worker.js +80 -0
- package/dist/schemas/worker.js.map +1 -0
- 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 +94 -0
- package/dist/services/anchor-verification.d.ts.map +1 -0
- package/dist/services/anchor-verification.js +617 -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 +356 -0
- package/dist/services/ast-grep-service.js.map +1 -0
- package/dist/services/attempt-service.d.ts +24 -0
- package/dist/services/attempt-service.d.ts.map +1 -0
- package/dist/services/attempt-service.js +55 -0
- package/dist/services/attempt-service.js.map +1 -0
- package/dist/services/auto-sync-service.d.ts +56 -0
- package/dist/services/auto-sync-service.d.ts.map +1 -0
- package/dist/services/auto-sync-service.js +66 -0
- package/dist/services/auto-sync-service.js.map +1 -0
- package/dist/services/candidate-extractor-service.d.ts +56 -0
- package/dist/services/candidate-extractor-service.d.ts.map +1 -0
- package/dist/services/candidate-extractor-service.js +365 -0
- package/dist/services/candidate-extractor-service.js.map +1 -0
- package/dist/services/claim-service.d.ts +52 -0
- package/dist/services/claim-service.d.ts.map +1 -0
- package/dist/services/claim-service.js +134 -0
- package/dist/services/claim-service.js.map +1 -0
- package/dist/services/daemon-service.d.ts +214 -0
- package/dist/services/daemon-service.d.ts.map +1 -0
- package/dist/services/daemon-service.js +522 -0
- package/dist/services/daemon-service.js.map +1 -0
- package/dist/services/deduplication-service.d.ts +67 -0
- package/dist/services/deduplication-service.d.ts.map +1 -0
- package/dist/services/deduplication-service.js +145 -0
- package/dist/services/deduplication-service.js.map +1 -0
- package/dist/services/dep-service.d.ts +14 -0
- package/dist/services/dep-service.d.ts.map +1 -0
- package/dist/services/dep-service.js +34 -0
- package/dist/services/dep-service.js.map +1 -0
- package/dist/services/diversifier-service.d.ts +46 -0
- package/dist/services/diversifier-service.d.ts.map +1 -0
- package/dist/services/diversifier-service.js +197 -0
- package/dist/services/diversifier-service.js.map +1 -0
- 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 +138 -0
- package/dist/services/embedding-service.d.ts.map +1 -0
- package/dist/services/embedding-service.js +318 -0
- package/dist/services/embedding-service.js.map +1 -0
- 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-learning-service.d.ts +17 -0
- package/dist/services/file-learning-service.d.ts.map +1 -0
- package/dist/services/file-learning-service.js +41 -0
- package/dist/services/file-learning-service.js.map +1 -0
- package/dist/services/file-watcher-service.d.ts +141 -0
- package/dist/services/file-watcher-service.d.ts.map +1 -0
- package/dist/services/file-watcher-service.js +278 -0
- package/dist/services/file-watcher-service.js.map +1 -0
- package/dist/services/graph-expansion.d.ts +155 -0
- package/dist/services/graph-expansion.d.ts.map +1 -0
- package/dist/services/graph-expansion.js +466 -0
- package/dist/services/graph-expansion.js.map +1 -0
- package/dist/services/hierarchy-service.d.ts +16 -0
- package/dist/services/hierarchy-service.d.ts.map +1 -0
- package/dist/services/hierarchy-service.js +66 -0
- package/dist/services/hierarchy-service.js.map +1 -0
- package/dist/services/index.d.ts +36 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +36 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/learning-service.d.ts +39 -0
- package/dist/services/learning-service.d.ts.map +1 -0
- package/dist/services/learning-service.js +151 -0
- package/dist/services/learning-service.js.map +1 -0
- package/dist/services/migration-service.d.ts +67 -0
- package/dist/services/migration-service.d.ts.map +1 -0
- package/dist/services/migration-service.js +144 -0
- package/dist/services/migration-service.js.map +1 -0
- package/dist/services/orchestrator-service.d.ts +52 -0
- package/dist/services/orchestrator-service.d.ts.map +1 -0
- package/dist/services/orchestrator-service.js +203 -0
- package/dist/services/orchestrator-service.js.map +1 -0
- 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 +55 -0
- package/dist/services/query-expansion-service.d.ts.map +1 -0
- package/dist/services/query-expansion-service.js +174 -0
- package/dist/services/query-expansion-service.js.map +1 -0
- package/dist/services/ready-service.d.ts +16 -0
- package/dist/services/ready-service.d.ts.map +1 -0
- package/dist/services/ready-service.js +70 -0
- package/dist/services/ready-service.js.map +1 -0
- package/dist/services/reranker-service.d.ts +51 -0
- package/dist/services/reranker-service.d.ts.map +1 -0
- package/dist/services/reranker-service.js +128 -0
- package/dist/services/reranker-service.js.map +1 -0
- package/dist/services/retriever-service.d.ts +49 -0
- package/dist/services/retriever-service.d.ts.map +1 -0
- package/dist/services/retriever-service.js +419 -0
- package/dist/services/retriever-service.js.map +1 -0
- package/dist/services/score-service.d.ts +43 -0
- package/dist/services/score-service.d.ts.map +1 -0
- package/dist/services/score-service.js +82 -0
- package/dist/services/score-service.js.map +1 -0
- 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 +400 -0
- package/dist/services/swarm-verification.js.map +1 -0
- package/dist/services/sync-service.d.ts +115 -0
- package/dist/services/sync-service.d.ts.map +1 -0
- package/dist/services/sync-service.js +350 -0
- package/dist/services/sync-service.js.map +1 -0
- package/dist/services/task-service.d.ts +22 -0
- package/dist/services/task-service.d.ts.map +1 -0
- package/dist/services/task-service.js +221 -0
- package/dist/services/task-service.js.map +1 -0
- package/dist/services/worker-process.d.ts +41 -0
- package/dist/services/worker-process.d.ts.map +1 -0
- package/dist/services/worker-process.js +280 -0
- package/dist/services/worker-process.js.map +1 -0
- package/dist/services/worker-service.d.ts +74 -0
- package/dist/services/worker-service.d.ts.map +1 -0
- package/dist/services/worker-service.js +148 -0
- package/dist/services/worker-service.js.map +1 -0
- package/dist/utils/glob.d.ts +15 -0
- package/dist/utils/glob.d.ts.map +1 -0
- package/dist/utils/glob.js +27 -0
- package/dist/utils/glob.js.map +1 -0
- package/dist/utils/math.d.ts +6 -0
- package/dist/utils/math.d.ts.map +1 -0
- package/dist/utils/math.js +21 -0
- package/dist/utils/math.js.map +1 -0
- package/package.json +72 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
// Effect Schema definitions for Worker Orchestration.
|
|
2
|
+
// See DD-018 for specification details.
|
|
3
|
+
import { Schema } from "effect";
|
|
4
|
+
// ----- Worker Schemas -----
|
|
5
|
+
// WorkerStatus schema
|
|
6
|
+
export const WorkerStatusSchema = Schema.Literal("starting", "idle", "busy", "stopping", "dead");
|
|
7
|
+
// Worker schema
|
|
8
|
+
const WorkerSchema = Schema.Struct({
|
|
9
|
+
id: Schema.String,
|
|
10
|
+
name: Schema.String,
|
|
11
|
+
hostname: Schema.String,
|
|
12
|
+
pid: Schema.Number.pipe(Schema.int()),
|
|
13
|
+
status: WorkerStatusSchema,
|
|
14
|
+
registeredAt: Schema.Date,
|
|
15
|
+
lastHeartbeatAt: Schema.Date,
|
|
16
|
+
currentTaskId: Schema.NullOr(Schema.String),
|
|
17
|
+
capabilities: Schema.Array(Schema.String),
|
|
18
|
+
metadata: Schema.Record({ key: Schema.String, value: Schema.Unknown })
|
|
19
|
+
});
|
|
20
|
+
export { WorkerSchema as Worker };
|
|
21
|
+
// ----- Claim Schemas -----
|
|
22
|
+
// ClaimStatus schema
|
|
23
|
+
export const ClaimStatusSchema = Schema.Literal("active", "released", "expired", "completed");
|
|
24
|
+
// TaskClaim schema
|
|
25
|
+
const TaskClaimSchema = Schema.Struct({
|
|
26
|
+
id: Schema.Number.pipe(Schema.int()),
|
|
27
|
+
taskId: Schema.String,
|
|
28
|
+
workerId: Schema.String,
|
|
29
|
+
claimedAt: Schema.Date,
|
|
30
|
+
leaseExpiresAt: Schema.Date,
|
|
31
|
+
renewedCount: Schema.Number.pipe(Schema.int()),
|
|
32
|
+
status: ClaimStatusSchema
|
|
33
|
+
});
|
|
34
|
+
export { TaskClaimSchema as TaskClaim };
|
|
35
|
+
// ----- Orchestrator Schemas -----
|
|
36
|
+
// OrchestratorStatus schema
|
|
37
|
+
export const OrchestratorStatusSchema = Schema.Literal("stopped", "starting", "running", "stopping");
|
|
38
|
+
// OrchestratorState schema
|
|
39
|
+
const OrchestratorStateSchema = Schema.Struct({
|
|
40
|
+
status: OrchestratorStatusSchema,
|
|
41
|
+
pid: Schema.NullOr(Schema.Number.pipe(Schema.int())),
|
|
42
|
+
startedAt: Schema.NullOr(Schema.Date),
|
|
43
|
+
lastReconcileAt: Schema.NullOr(Schema.Date),
|
|
44
|
+
workerPoolSize: Schema.Number.pipe(Schema.int()),
|
|
45
|
+
reconcileIntervalSeconds: Schema.Number.pipe(Schema.int()),
|
|
46
|
+
heartbeatIntervalSeconds: Schema.Number.pipe(Schema.int()),
|
|
47
|
+
leaseDurationMinutes: Schema.Number.pipe(Schema.int()),
|
|
48
|
+
metadata: Schema.Record({ key: Schema.String, value: Schema.Unknown })
|
|
49
|
+
});
|
|
50
|
+
export { OrchestratorStateSchema as OrchestratorState };
|
|
51
|
+
// ----- Heartbeat Schema -----
|
|
52
|
+
// HeartbeatMetrics schema
|
|
53
|
+
const HeartbeatMetricsSchema = Schema.Struct({
|
|
54
|
+
cpuPercent: Schema.Number,
|
|
55
|
+
memoryMb: Schema.Number,
|
|
56
|
+
tasksCompleted: Schema.Number.pipe(Schema.int())
|
|
57
|
+
});
|
|
58
|
+
export { HeartbeatMetricsSchema as HeartbeatMetrics };
|
|
59
|
+
// HeartbeatStatus schema (subset of WorkerStatus for heartbeat context)
|
|
60
|
+
export const HeartbeatStatusSchema = Schema.Literal("idle", "busy");
|
|
61
|
+
// Heartbeat schema
|
|
62
|
+
const HeartbeatSchema = Schema.Struct({
|
|
63
|
+
workerId: Schema.String,
|
|
64
|
+
timestamp: Schema.Date,
|
|
65
|
+
status: HeartbeatStatusSchema,
|
|
66
|
+
currentTaskId: Schema.optional(Schema.String),
|
|
67
|
+
metrics: Schema.optional(HeartbeatMetricsSchema)
|
|
68
|
+
});
|
|
69
|
+
export { HeartbeatSchema as Heartbeat };
|
|
70
|
+
// ----- Reconciliation Schema -----
|
|
71
|
+
// ReconciliationResult schema
|
|
72
|
+
const ReconciliationResultSchema = Schema.Struct({
|
|
73
|
+
deadWorkersFound: Schema.Number.pipe(Schema.int()),
|
|
74
|
+
expiredClaimsReleased: Schema.Number.pipe(Schema.int()),
|
|
75
|
+
orphanedTasksRecovered: Schema.Number.pipe(Schema.int()),
|
|
76
|
+
staleStatesFixed: Schema.Number.pipe(Schema.int()),
|
|
77
|
+
reconcileTime: Schema.Number.pipe(Schema.int())
|
|
78
|
+
});
|
|
79
|
+
export { ReconciliationResultSchema as ReconciliationResult };
|
|
80
|
+
//# sourceMappingURL=worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/schemas/worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { Context, Effect, Layer } from "effect";
|
|
2
|
+
import { AnchorRepository } from "../repo/anchor-repo.js";
|
|
3
|
+
import { LearningRepository } from "../repo/learning-repo.js";
|
|
4
|
+
import { AnchorNotFoundError, ValidationError, DatabaseError, LearningNotFoundError } from "../errors.js";
|
|
5
|
+
import type { Anchor, AnchorWithFreshness, AnchorStatus, AnchorType, InvalidationLog, InvalidationSource } from "@jamesaphoenix/tx-types";
|
|
6
|
+
/** Verification result for an anchor */
|
|
7
|
+
export interface AnchorVerificationResult {
|
|
8
|
+
readonly anchorId: number;
|
|
9
|
+
readonly previousStatus: AnchorStatus;
|
|
10
|
+
readonly newStatus: AnchorStatus;
|
|
11
|
+
readonly verified: boolean;
|
|
12
|
+
readonly reason?: string;
|
|
13
|
+
}
|
|
14
|
+
/** Result of batch verification */
|
|
15
|
+
export interface BatchVerificationResult {
|
|
16
|
+
readonly total: number;
|
|
17
|
+
readonly verified: number;
|
|
18
|
+
readonly drifted: number;
|
|
19
|
+
readonly invalid: number;
|
|
20
|
+
}
|
|
21
|
+
/** Graph status summary */
|
|
22
|
+
export interface GraphStatusResult {
|
|
23
|
+
readonly total: number;
|
|
24
|
+
readonly valid: number;
|
|
25
|
+
readonly drifted: number;
|
|
26
|
+
readonly invalid: number;
|
|
27
|
+
readonly pinned: number;
|
|
28
|
+
readonly recentInvalidations: readonly InvalidationLog[];
|
|
29
|
+
}
|
|
30
|
+
/** Prune result */
|
|
31
|
+
export interface PruneResult {
|
|
32
|
+
readonly deleted: number;
|
|
33
|
+
}
|
|
34
|
+
/** Anchor input with type-specific validation */
|
|
35
|
+
export interface TypedAnchorInput {
|
|
36
|
+
readonly learningId: number;
|
|
37
|
+
readonly anchorType: AnchorType;
|
|
38
|
+
readonly filePath: string;
|
|
39
|
+
/** Value depends on type: glob pattern, content hash, symbol FQName, or line range string */
|
|
40
|
+
readonly value: string;
|
|
41
|
+
/** Symbol fully-qualified name (for symbol anchors) */
|
|
42
|
+
readonly symbolFqname?: string;
|
|
43
|
+
/** Start line (for line_range anchors) */
|
|
44
|
+
readonly lineStart?: number;
|
|
45
|
+
/** End line (for line_range anchors) */
|
|
46
|
+
readonly lineEnd?: number;
|
|
47
|
+
/** Content hash for verification */
|
|
48
|
+
readonly contentHash?: string;
|
|
49
|
+
/** Content preview for self-healing comparison (max ~500 chars) */
|
|
50
|
+
readonly contentPreview?: string;
|
|
51
|
+
}
|
|
52
|
+
declare const AnchorService_base: Context.TagClass<AnchorService, "AnchorService", {
|
|
53
|
+
/**
|
|
54
|
+
* Create an anchor with type-specific validation.
|
|
55
|
+
* Supports: glob, hash, symbol, line_range
|
|
56
|
+
*/
|
|
57
|
+
readonly createAnchor: (input: TypedAnchorInput) => Effect.Effect<Anchor, ValidationError | LearningNotFoundError | DatabaseError>;
|
|
58
|
+
/**
|
|
59
|
+
* Verify an anchor's validity.
|
|
60
|
+
* Checks if the file/content still matches what the anchor references.
|
|
61
|
+
*/
|
|
62
|
+
readonly verifyAnchor: (anchorId: number) => Effect.Effect<AnchorVerificationResult, AnchorNotFoundError | DatabaseError>;
|
|
63
|
+
/**
|
|
64
|
+
* Update an anchor's status (valid, drifted, invalid).
|
|
65
|
+
*/
|
|
66
|
+
readonly updateAnchorStatus: (anchorId: number, status: AnchorStatus, reason?: string, detectedBy?: InvalidationSource) => Effect.Effect<Anchor, AnchorNotFoundError | ValidationError | DatabaseError>;
|
|
67
|
+
/**
|
|
68
|
+
* Log a status change for an anchor.
|
|
69
|
+
* Creates an entry in the invalidation_log table.
|
|
70
|
+
*/
|
|
71
|
+
readonly logStatusChange: (anchorId: number, oldStatus: AnchorStatus, newStatus: AnchorStatus, reason: string, detectedBy?: InvalidationSource, oldHash?: string | null, newHash?: string | null, similarity?: number | null) => Effect.Effect<InvalidationLog, AnchorNotFoundError | DatabaseError>;
|
|
72
|
+
/**
|
|
73
|
+
* Find all anchors for a given file path.
|
|
74
|
+
*/
|
|
75
|
+
readonly findAnchorsForFile: (filePath: string) => Effect.Effect<readonly Anchor[], DatabaseError>;
|
|
76
|
+
/**
|
|
77
|
+
* Find all anchors for a learning.
|
|
78
|
+
*/
|
|
79
|
+
readonly findAnchorsForLearning: (learningId: number) => Effect.Effect<readonly Anchor[], DatabaseError>;
|
|
80
|
+
/**
|
|
81
|
+
* Get an anchor by ID.
|
|
82
|
+
*/
|
|
83
|
+
readonly get: (id: number) => Effect.Effect<Anchor, AnchorNotFoundError | DatabaseError>;
|
|
84
|
+
/**
|
|
85
|
+
* Get an anchor with lazy verification.
|
|
86
|
+
* If anchor is stale (verified_at > now - TTL), runs verification first.
|
|
87
|
+
* Returns anchor with freshness information.
|
|
88
|
+
*/
|
|
89
|
+
readonly getWithVerification: (id: number, options?: {
|
|
90
|
+
baseDir?: string;
|
|
91
|
+
}) => Effect.Effect<AnchorWithFreshness, AnchorNotFoundError | DatabaseError>;
|
|
92
|
+
/**
|
|
93
|
+
* Soft delete an anchor (set status='invalid' and log the change).
|
|
94
|
+
* Use hardDelete for actual removal.
|
|
95
|
+
*/
|
|
96
|
+
readonly remove: (id: number, reason?: string) => Effect.Effect<Anchor, AnchorNotFoundError | DatabaseError>;
|
|
97
|
+
/**
|
|
98
|
+
* Hard delete an anchor (actual removal from database).
|
|
99
|
+
* Used by prune operations. Prefer soft delete via remove().
|
|
100
|
+
*/
|
|
101
|
+
readonly hardDelete: (id: number) => Effect.Effect<void, AnchorNotFoundError | DatabaseError>;
|
|
102
|
+
/**
|
|
103
|
+
* Find all drifted anchors.
|
|
104
|
+
*/
|
|
105
|
+
readonly findDrifted: () => Effect.Effect<readonly Anchor[], DatabaseError>;
|
|
106
|
+
/**
|
|
107
|
+
* Find all invalid anchors.
|
|
108
|
+
*/
|
|
109
|
+
readonly findInvalid: () => Effect.Effect<readonly Anchor[], DatabaseError>;
|
|
110
|
+
/**
|
|
111
|
+
* Verify all anchors for a file (batch operation).
|
|
112
|
+
*/
|
|
113
|
+
readonly verifyAnchorsForFile: (filePath: string) => Effect.Effect<BatchVerificationResult, DatabaseError>;
|
|
114
|
+
/**
|
|
115
|
+
* Pin an anchor (prevents auto-invalidation).
|
|
116
|
+
*/
|
|
117
|
+
readonly pin: (anchorId: number) => Effect.Effect<Anchor, AnchorNotFoundError | DatabaseError>;
|
|
118
|
+
/**
|
|
119
|
+
* Unpin an anchor.
|
|
120
|
+
*/
|
|
121
|
+
readonly unpin: (anchorId: number) => Effect.Effect<Anchor, AnchorNotFoundError | DatabaseError>;
|
|
122
|
+
/**
|
|
123
|
+
* Manually invalidate an anchor with a reason.
|
|
124
|
+
*/
|
|
125
|
+
readonly invalidate: (anchorId: number, reason: string, detectedBy?: InvalidationSource) => Effect.Effect<Anchor, AnchorNotFoundError | DatabaseError>;
|
|
126
|
+
/**
|
|
127
|
+
* Restore a soft-deleted (invalid) anchor to valid status.
|
|
128
|
+
*/
|
|
129
|
+
readonly restore: (anchorId: number) => Effect.Effect<Anchor, AnchorNotFoundError | DatabaseError>;
|
|
130
|
+
/**
|
|
131
|
+
* Hard delete old invalid anchors.
|
|
132
|
+
*/
|
|
133
|
+
readonly prune: (olderThanDays: number) => Effect.Effect<PruneResult, DatabaseError>;
|
|
134
|
+
/**
|
|
135
|
+
* Get graph status summary.
|
|
136
|
+
*/
|
|
137
|
+
readonly getStatus: () => Effect.Effect<GraphStatusResult, DatabaseError>;
|
|
138
|
+
/**
|
|
139
|
+
* Verify all anchors (batch operation).
|
|
140
|
+
*/
|
|
141
|
+
readonly verifyAll: () => Effect.Effect<BatchVerificationResult, DatabaseError>;
|
|
142
|
+
}>;
|
|
143
|
+
export declare class AnchorService extends AnchorService_base {
|
|
144
|
+
}
|
|
145
|
+
export declare const AnchorServiceLive: Layer.Layer<AnchorService, never, LearningRepository | AnchorRepository>;
|
|
146
|
+
export {};
|
|
147
|
+
//# sourceMappingURL=anchor-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anchor-service.d.ts","sourceRoot":"","sources":["../../src/services/anchor-service.ts"],"names":[],"mappings":"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"}
|