@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
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import { Context, Effect, Layer } from "effect";
|
|
2
2
|
import { spawn } from "node:child_process";
|
|
3
|
-
import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { closeSync, existsSync, mkdirSync, openSync, readFileSync, unlinkSync, writeFileSync, writeSync } from "node:fs";
|
|
4
4
|
import { dirname, join } from "node:path";
|
|
5
5
|
import { homedir } from "node:os";
|
|
6
6
|
import { DaemonError } from "../errors.js";
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
8
|
+
* Get the path for the daemon PID file.
|
|
9
|
+
* Resolved relative to cwd at call time so tests can chdir() to temp dirs.
|
|
9
10
|
*/
|
|
10
|
-
export const
|
|
11
|
+
export const getPidFilePath = () => join(process.cwd(), ".tx", "daemon.pid");
|
|
12
|
+
/**
|
|
13
|
+
* @deprecated Use getPidFilePath() instead. Kept for backwards compatibility.
|
|
14
|
+
* Note: This is resolved at module load time and won't reflect cwd changes.
|
|
15
|
+
*/
|
|
16
|
+
export const PID_FILE_PATH = join(process.cwd(), ".tx", "daemon.pid");
|
|
11
17
|
/**
|
|
12
18
|
* Default install path for the launchd plist file.
|
|
13
19
|
* Located in the user's LaunchAgents directory for per-user daemons.
|
|
@@ -162,7 +168,7 @@ export const isProcessRunning = (pid) => Effect.try({
|
|
|
162
168
|
// Any other error is unexpected - convert to DaemonError
|
|
163
169
|
return Effect.fail(new DaemonError({
|
|
164
170
|
code: "PROCESS_CHECK_FAILED",
|
|
165
|
-
|
|
171
|
+
reason: `Failed to check if process ${pid} is running: ${error}`,
|
|
166
172
|
pid
|
|
167
173
|
}));
|
|
168
174
|
}));
|
|
@@ -175,15 +181,16 @@ export const isProcessRunning = (pid) => Effect.try({
|
|
|
175
181
|
*/
|
|
176
182
|
export const writePid = (pid) => Effect.try({
|
|
177
183
|
try: () => {
|
|
178
|
-
const
|
|
184
|
+
const pidPath = getPidFilePath();
|
|
185
|
+
const dir = dirname(pidPath);
|
|
179
186
|
if (!existsSync(dir)) {
|
|
180
187
|
mkdirSync(dir, { recursive: true });
|
|
181
188
|
}
|
|
182
|
-
writeFileSync(
|
|
189
|
+
writeFileSync(pidPath, String(pid), "utf-8");
|
|
183
190
|
},
|
|
184
191
|
catch: (error) => new DaemonError({
|
|
185
192
|
code: "PID_WRITE_FAILED",
|
|
186
|
-
|
|
193
|
+
reason: `Failed to write PID file: ${error}`,
|
|
187
194
|
pid
|
|
188
195
|
})
|
|
189
196
|
});
|
|
@@ -196,31 +203,34 @@ export const writePid = (pid) => Effect.try({
|
|
|
196
203
|
* @returns Effect that resolves to the PID number, or null if no valid PID file exists
|
|
197
204
|
*/
|
|
198
205
|
export const readPid = () => Effect.gen(function* () {
|
|
206
|
+
const pidPath = getPidFilePath();
|
|
199
207
|
// Check if file exists
|
|
200
|
-
if (!existsSync(
|
|
208
|
+
if (!existsSync(pidPath)) {
|
|
201
209
|
return null;
|
|
202
210
|
}
|
|
203
211
|
// Read the PID file
|
|
204
212
|
const content = yield* Effect.try({
|
|
205
|
-
try: () => readFileSync(
|
|
213
|
+
try: () => readFileSync(pidPath, "utf-8").trim(),
|
|
206
214
|
catch: (error) => new DaemonError({
|
|
207
215
|
code: "PID_READ_FAILED",
|
|
208
|
-
|
|
216
|
+
reason: `Failed to read PID file: ${error}`,
|
|
209
217
|
pid: null
|
|
210
218
|
})
|
|
211
219
|
});
|
|
212
220
|
// Parse the PID
|
|
213
221
|
const pid = parseInt(content, 10);
|
|
214
222
|
if (isNaN(pid) || pid <= 0) {
|
|
215
|
-
// Invalid PID content
|
|
216
|
-
|
|
223
|
+
// Invalid PID content — use CAS removal so we don't delete a fresh PID
|
|
224
|
+
// written by a concurrent daemon start between our read and this removal.
|
|
225
|
+
yield* removePidIfContentMatches(content);
|
|
217
226
|
return null;
|
|
218
227
|
}
|
|
219
228
|
// Check if the process is still running
|
|
220
229
|
const running = yield* isProcessRunning(pid);
|
|
221
230
|
if (!running) {
|
|
222
|
-
//
|
|
223
|
-
|
|
231
|
+
// Stale PID — use CAS removal so we don't delete a fresh PID written
|
|
232
|
+
// by a concurrent daemon start between isProcessRunning() and here.
|
|
233
|
+
yield* removePidIfContentMatches(content);
|
|
224
234
|
return null;
|
|
225
235
|
}
|
|
226
236
|
return pid;
|
|
@@ -233,34 +243,67 @@ export const readPid = () => Effect.gen(function* () {
|
|
|
233
243
|
*/
|
|
234
244
|
export const removePid = () => Effect.try({
|
|
235
245
|
try: () => {
|
|
236
|
-
|
|
237
|
-
|
|
246
|
+
const pidPath = getPidFilePath();
|
|
247
|
+
if (existsSync(pidPath)) {
|
|
248
|
+
unlinkSync(pidPath);
|
|
249
|
+
}
|
|
250
|
+
},
|
|
251
|
+
catch: (error) => new DaemonError({
|
|
252
|
+
code: "PID_REMOVE_FAILED",
|
|
253
|
+
reason: `Failed to remove PID file: ${error}`,
|
|
254
|
+
pid: null
|
|
255
|
+
})
|
|
256
|
+
});
|
|
257
|
+
/**
|
|
258
|
+
* Remove the PID file only if its current content matches the expected value.
|
|
259
|
+
*
|
|
260
|
+
* This is a compare-and-swap guard that prevents the TOCTOU race where
|
|
261
|
+
* readPid()'s stale cleanup could delete a freshly-written PID file created
|
|
262
|
+
* by a concurrent daemon start. Between isProcessRunning() returning false
|
|
263
|
+
* and removePid() executing, a new daemon may have written a fresh PID.
|
|
264
|
+
*
|
|
265
|
+
* If the file no longer exists or its content has changed, this is a no-op.
|
|
266
|
+
*
|
|
267
|
+
* @param expectedContent - The PID file content we originally read
|
|
268
|
+
* @returns Effect that resolves to void on success
|
|
269
|
+
*/
|
|
270
|
+
export const removePidIfContentMatches = (expectedContent) => Effect.try({
|
|
271
|
+
try: () => {
|
|
272
|
+
const pidPath = getPidFilePath();
|
|
273
|
+
if (!existsSync(pidPath)) {
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
const currentContent = readFileSync(pidPath, "utf-8").trim();
|
|
277
|
+
if (currentContent === expectedContent) {
|
|
278
|
+
unlinkSync(pidPath);
|
|
238
279
|
}
|
|
280
|
+
// Content changed — a concurrent start wrote a fresh PID. Do not delete.
|
|
239
281
|
},
|
|
240
282
|
catch: (error) => new DaemonError({
|
|
241
283
|
code: "PID_REMOVE_FAILED",
|
|
242
|
-
|
|
284
|
+
reason: `Failed to remove PID file: ${error}`,
|
|
243
285
|
pid: null
|
|
244
286
|
})
|
|
245
287
|
});
|
|
246
288
|
/**
|
|
247
289
|
* Path to store the daemon start timestamp for uptime calculation.
|
|
248
290
|
*/
|
|
249
|
-
const
|
|
291
|
+
const getStartedAtPath = () => join(process.cwd(), ".tx", "daemon.started");
|
|
250
292
|
/**
|
|
251
293
|
* Write the daemon start timestamp to a file.
|
|
252
294
|
*/
|
|
253
295
|
const writeStartedAt = (date) => Effect.try({
|
|
254
296
|
try: () => {
|
|
255
|
-
const
|
|
297
|
+
const startedPath = getStartedAtPath();
|
|
298
|
+
const dir = dirname(startedPath);
|
|
256
299
|
if (!existsSync(dir)) {
|
|
257
300
|
mkdirSync(dir, { recursive: true });
|
|
258
301
|
}
|
|
259
|
-
writeFileSync(
|
|
302
|
+
writeFileSync(startedPath, date.toISOString(), "utf-8");
|
|
260
303
|
},
|
|
261
304
|
catch: (error) => new DaemonError({
|
|
262
305
|
code: "STARTED_AT_WRITE_FAILED",
|
|
263
|
-
|
|
306
|
+
reason: `Failed to write started_at file: ${error}`,
|
|
264
307
|
pid: null
|
|
265
308
|
})
|
|
266
309
|
});
|
|
@@ -269,16 +312,17 @@ const writeStartedAt = (date) => Effect.try({
|
|
|
269
312
|
*/
|
|
270
313
|
const readStartedAt = () => Effect.try({
|
|
271
314
|
try: () => {
|
|
272
|
-
|
|
315
|
+
const startedPath = getStartedAtPath();
|
|
316
|
+
if (!existsSync(startedPath)) {
|
|
273
317
|
return null;
|
|
274
318
|
}
|
|
275
|
-
const content = readFileSync(
|
|
319
|
+
const content = readFileSync(startedPath, "utf-8").trim();
|
|
276
320
|
const date = new Date(content);
|
|
277
321
|
return isNaN(date.getTime()) ? null : date;
|
|
278
322
|
},
|
|
279
323
|
catch: (error) => new DaemonError({
|
|
280
324
|
code: "STARTED_AT_READ_FAILED",
|
|
281
|
-
|
|
325
|
+
reason: `Failed to read started_at file: ${error}`,
|
|
282
326
|
pid: null
|
|
283
327
|
})
|
|
284
328
|
});
|
|
@@ -287,13 +331,14 @@ const readStartedAt = () => Effect.try({
|
|
|
287
331
|
*/
|
|
288
332
|
const removeStartedAt = () => Effect.try({
|
|
289
333
|
try: () => {
|
|
290
|
-
|
|
291
|
-
|
|
334
|
+
const startedPath = getStartedAtPath();
|
|
335
|
+
if (existsSync(startedPath)) {
|
|
336
|
+
unlinkSync(startedPath);
|
|
292
337
|
}
|
|
293
338
|
},
|
|
294
339
|
catch: (error) => new DaemonError({
|
|
295
340
|
code: "STARTED_AT_REMOVE_FAILED",
|
|
296
|
-
|
|
341
|
+
reason: `Failed to remove started_at file: ${error}`,
|
|
297
342
|
pid: null
|
|
298
343
|
})
|
|
299
344
|
});
|
|
@@ -315,7 +360,7 @@ const sendSignal = (pid, signal) => Effect.try({
|
|
|
315
360
|
// Any other error is unexpected - convert to DaemonError
|
|
316
361
|
return Effect.fail(new DaemonError({
|
|
317
362
|
code: "SIGNAL_FAILED",
|
|
318
|
-
|
|
363
|
+
reason: `Failed to send signal ${signal} to process ${pid}: ${error}`,
|
|
319
364
|
pid
|
|
320
365
|
}));
|
|
321
366
|
}));
|
|
@@ -345,8 +390,15 @@ export const defaultDaemonConfig = {
|
|
|
345
390
|
/**
|
|
346
391
|
* Spawn a daemon process and wait for it to either start successfully or fail.
|
|
347
392
|
* This properly handles the async ENOENT error that spawn emits.
|
|
393
|
+
*
|
|
394
|
+
* Uses a settlement flag to prevent race conditions between:
|
|
395
|
+
* - The synchronous PID check
|
|
396
|
+
* - The 'error' event handler
|
|
397
|
+
* - The setImmediate fallback
|
|
348
398
|
*/
|
|
349
399
|
const spawnDaemonProcess = (config) => new Promise((resolve, reject) => {
|
|
400
|
+
// Track whether the promise has been settled to prevent double resolution/rejection
|
|
401
|
+
let settled = false;
|
|
350
402
|
const spawnedProcess = spawn(config.command, [...config.args], {
|
|
351
403
|
detached: true,
|
|
352
404
|
stdio: "ignore",
|
|
@@ -355,52 +407,145 @@ const spawnDaemonProcess = (config) => new Promise((resolve, reject) => {
|
|
|
355
407
|
});
|
|
356
408
|
// Handle spawn errors (like ENOENT when command doesn't exist)
|
|
357
409
|
spawnedProcess.on("error", (error) => {
|
|
410
|
+
if (settled)
|
|
411
|
+
return;
|
|
412
|
+
settled = true;
|
|
358
413
|
if (error.code === "ENOENT") {
|
|
359
414
|
reject(new DaemonError({
|
|
360
415
|
code: "COMMAND_NOT_FOUND",
|
|
361
|
-
|
|
416
|
+
reason: `Command '${config.command}' not found. Make sure it is installed and in PATH.`,
|
|
362
417
|
pid: null
|
|
363
418
|
}));
|
|
364
419
|
}
|
|
365
420
|
else {
|
|
366
421
|
reject(new DaemonError({
|
|
367
422
|
code: "SPAWN_FAILED",
|
|
368
|
-
|
|
423
|
+
reason: `Failed to spawn daemon process: ${error.message}`,
|
|
369
424
|
pid: null
|
|
370
425
|
}));
|
|
371
426
|
}
|
|
372
427
|
});
|
|
373
428
|
// Check if we got a PID (spawn succeeded synchronously)
|
|
374
429
|
if (spawnedProcess.pid !== undefined) {
|
|
375
|
-
|
|
430
|
+
settled = true;
|
|
376
431
|
spawnedProcess.unref();
|
|
377
432
|
resolve({ child: spawnedProcess, pid: spawnedProcess.pid });
|
|
433
|
+
return;
|
|
434
|
+
}
|
|
435
|
+
// Wait a tick for either the error event to fire or the PID to become available
|
|
436
|
+
setImmediate(() => {
|
|
437
|
+
if (settled)
|
|
438
|
+
return;
|
|
439
|
+
settled = true;
|
|
440
|
+
if (spawnedProcess.pid !== undefined) {
|
|
441
|
+
spawnedProcess.unref();
|
|
442
|
+
resolve({ child: spawnedProcess, pid: spawnedProcess.pid });
|
|
443
|
+
}
|
|
444
|
+
else {
|
|
445
|
+
// No PID and no error - reject to prevent the promise from hanging forever
|
|
446
|
+
reject(new DaemonError({
|
|
447
|
+
code: "SPAWN_FAILED",
|
|
448
|
+
reason: `Failed to spawn daemon process: no PID was assigned`,
|
|
449
|
+
pid: null
|
|
450
|
+
}));
|
|
451
|
+
}
|
|
452
|
+
});
|
|
453
|
+
});
|
|
454
|
+
/**
|
|
455
|
+
* Try to atomically create the PID file using O_EXCL.
|
|
456
|
+
* Returns true if created successfully, false if the file already exists.
|
|
457
|
+
* This is the atomic primitive that prevents the TOCTOU race condition.
|
|
458
|
+
*/
|
|
459
|
+
export const tryAtomicPidCreate = () => Effect.try({
|
|
460
|
+
try: () => {
|
|
461
|
+
// O_CREAT | O_EXCL | O_WRONLY — fails with EEXIST if file already exists
|
|
462
|
+
const fd = openSync(getPidFilePath(), "wx");
|
|
463
|
+
// Write the lock holder's PID so stale detection works.
|
|
464
|
+
// This is the `tx daemon start` process PID, not the daemon PID.
|
|
465
|
+
// After spawning, writePid() overwrites with the actual daemon PID.
|
|
466
|
+
writeSync(fd, String(process.pid));
|
|
467
|
+
closeSync(fd);
|
|
468
|
+
return true;
|
|
469
|
+
},
|
|
470
|
+
catch: (error) => error
|
|
471
|
+
}).pipe(Effect.catchAll((error) => {
|
|
472
|
+
if (error instanceof Error && "code" in error && error.code === "EEXIST") {
|
|
473
|
+
return Effect.succeed(false);
|
|
378
474
|
}
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
475
|
+
return Effect.fail(new DaemonError({
|
|
476
|
+
code: "PID_WRITE_FAILED",
|
|
477
|
+
reason: `Failed to create PID lock file: ${error}`,
|
|
478
|
+
pid: null
|
|
479
|
+
}));
|
|
480
|
+
}));
|
|
481
|
+
/**
|
|
482
|
+
* Atomically acquire the daemon PID file lock.
|
|
483
|
+
*
|
|
484
|
+
* Uses O_EXCL flag to prevent the TOCTOU race condition where two concurrent
|
|
485
|
+
* `tx daemon start` commands both pass the existence check before either writes
|
|
486
|
+
* the PID file. With O_EXCL, the filesystem guarantees only one process can
|
|
487
|
+
* create the file — the loser gets EEXIST immediately.
|
|
488
|
+
*
|
|
489
|
+
* If the file already exists, checks whether the PID is stale (process dead).
|
|
490
|
+
* Stale files are removed and creation is retried once.
|
|
491
|
+
*/
|
|
492
|
+
export const acquirePidLock = () => Effect.gen(function* () {
|
|
493
|
+
const pidPath = getPidFilePath();
|
|
494
|
+
const dir = dirname(pidPath);
|
|
495
|
+
if (!existsSync(dir)) {
|
|
496
|
+
mkdirSync(dir, { recursive: true });
|
|
497
|
+
}
|
|
498
|
+
// First attempt: atomic file creation
|
|
499
|
+
const created = yield* tryAtomicPidCreate();
|
|
500
|
+
if (created)
|
|
501
|
+
return;
|
|
502
|
+
// File already exists — check if the PID inside is stale
|
|
503
|
+
const existingContent = yield* Effect.try({
|
|
504
|
+
try: () => existsSync(pidPath) ? readFileSync(pidPath, "utf-8").trim() : null,
|
|
505
|
+
catch: (error) => new DaemonError({
|
|
506
|
+
code: "PID_READ_FAILED",
|
|
507
|
+
reason: `Failed to read existing PID file: ${error}`,
|
|
508
|
+
pid: null
|
|
509
|
+
})
|
|
510
|
+
});
|
|
511
|
+
if (existingContent !== null && existingContent !== "") {
|
|
512
|
+
const pid = parseInt(existingContent, 10);
|
|
513
|
+
if (!isNaN(pid) && pid > 0) {
|
|
514
|
+
const running = yield* isProcessRunning(pid);
|
|
515
|
+
if (running) {
|
|
516
|
+
return yield* Effect.fail(new DaemonError({
|
|
517
|
+
code: "ALREADY_RUNNING",
|
|
518
|
+
reason: `Daemon is already running with PID ${pid}`,
|
|
519
|
+
pid
|
|
520
|
+
}));
|
|
385
521
|
}
|
|
386
|
-
|
|
387
|
-
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
// PID file is stale — CAS removal to avoid deleting a fresh PID written
|
|
525
|
+
// by a concurrent start that raced us between isProcessRunning() and here.
|
|
526
|
+
if (existingContent !== null) {
|
|
527
|
+
yield* removePidIfContentMatches(existingContent);
|
|
528
|
+
}
|
|
529
|
+
const retryCreated = yield* tryAtomicPidCreate();
|
|
530
|
+
if (!retryCreated) {
|
|
531
|
+
// Another process won the race after our stale cleanup
|
|
532
|
+
return yield* Effect.fail(new DaemonError({
|
|
533
|
+
code: "ALREADY_RUNNING",
|
|
534
|
+
reason: "Another daemon start is in progress",
|
|
535
|
+
pid: null
|
|
536
|
+
}));
|
|
388
537
|
}
|
|
389
538
|
});
|
|
390
539
|
/**
|
|
391
540
|
* Internal start implementation for the daemon.
|
|
392
541
|
* Extracted to allow reuse in restart without circular dependency.
|
|
542
|
+
*
|
|
543
|
+
* Uses atomic PID file locking (O_EXCL) to prevent the TOCTOU race condition
|
|
544
|
+
* where two concurrent starts could both pass the existence check.
|
|
393
545
|
*/
|
|
394
546
|
const startDaemonImpl = (config) => Effect.gen(function* () {
|
|
395
|
-
//
|
|
396
|
-
|
|
397
|
-
if (existingPid !== null) {
|
|
398
|
-
return yield* Effect.fail(new DaemonError({
|
|
399
|
-
code: "ALREADY_RUNNING",
|
|
400
|
-
message: `Daemon is already running with PID ${existingPid}`,
|
|
401
|
-
pid: existingPid
|
|
402
|
-
}));
|
|
403
|
-
}
|
|
547
|
+
// Atomically acquire PID file lock (prevents TOCTOU race)
|
|
548
|
+
yield* acquirePidLock();
|
|
404
549
|
// Spawn the daemon process with proper error handling
|
|
405
550
|
const { pid } = yield* Effect.tryPromise({
|
|
406
551
|
try: () => spawnDaemonProcess(config),
|
|
@@ -410,12 +555,14 @@ const startDaemonImpl = (config) => Effect.gen(function* () {
|
|
|
410
555
|
}
|
|
411
556
|
return new DaemonError({
|
|
412
557
|
code: "SPAWN_FAILED",
|
|
413
|
-
|
|
558
|
+
reason: `Failed to spawn daemon process: ${error}`,
|
|
414
559
|
pid: null
|
|
415
560
|
});
|
|
416
561
|
}
|
|
417
|
-
})
|
|
418
|
-
//
|
|
562
|
+
}).pipe(
|
|
563
|
+
// If spawn fails, clean up the lock file we acquired
|
|
564
|
+
Effect.tapError(() => removePid()));
|
|
565
|
+
// Update the lock file with the actual PID
|
|
419
566
|
yield* writePid(pid);
|
|
420
567
|
// Write started timestamp
|
|
421
568
|
yield* writeStartedAt(new Date());
|
|
@@ -428,7 +575,7 @@ const startDaemonImpl = (config) => Effect.gen(function* () {
|
|
|
428
575
|
yield* removeStartedAt();
|
|
429
576
|
return yield* Effect.fail(new DaemonError({
|
|
430
577
|
code: "PROCESS_DIED",
|
|
431
|
-
|
|
578
|
+
reason: "Daemon process exited immediately after starting",
|
|
432
579
|
pid
|
|
433
580
|
}));
|
|
434
581
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon-service.js","sourceRoot":"","sources":["../../src/services/daemon-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"daemon-service.js","sourceRoot":"","sources":["../../src/services/daemon-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Context, Effect, Layer } from "effect";
|
|
2
2
|
import { DeduplicationRepository } from "../repo/deduplication-repo.js";
|
|
3
|
-
import { DatabaseError } from "../errors.js";
|
|
3
|
+
import { BatchProcessingError, DatabaseError } from "../errors.js";
|
|
4
4
|
import type { FileProgress, LineProcessResult, FileProcessResult, DeduplicationOptions } from "@jamesaphoenix/tx-types";
|
|
5
5
|
declare const DeduplicationService_base: Context.TagClass<DeduplicationService, "DeduplicationService", {
|
|
6
6
|
/**
|
|
@@ -12,20 +12,24 @@ declare const DeduplicationService_base: Context.TagClass<DeduplicationService,
|
|
|
12
12
|
/**
|
|
13
13
|
* Process multiple JSONL lines with batch hash checking.
|
|
14
14
|
* More efficient than calling processLine repeatedly.
|
|
15
|
+
* Returns BatchProcessingError with partial results if a batch fails.
|
|
15
16
|
*/
|
|
16
17
|
readonly processLines: (lines: readonly {
|
|
17
18
|
content: string;
|
|
18
19
|
lineNumber: number;
|
|
19
|
-
}[], filePath: string, options?: DeduplicationOptions) => Effect.Effect<FileProcessResult, DatabaseError
|
|
20
|
+
}[], filePath: string, options?: DeduplicationOptions) => Effect.Effect<FileProcessResult, DatabaseError | BatchProcessingError<FileProcessResult>>;
|
|
20
21
|
/**
|
|
21
22
|
* Check if a content hash has already been processed.
|
|
22
23
|
*/
|
|
23
24
|
readonly isProcessed: (content: string) => Effect.Effect<boolean, DatabaseError>;
|
|
24
25
|
/**
|
|
25
|
-
* Check multiple content strings at once.
|
|
26
|
+
* Check multiple content strings at once with batch processing.
|
|
26
27
|
* Returns the set of content strings that have been processed.
|
|
28
|
+
* Returns BatchProcessingError with partial results if a batch fails.
|
|
27
29
|
*/
|
|
28
|
-
readonly filterProcessed: (contents: readonly string[]
|
|
30
|
+
readonly filterProcessed: (contents: readonly string[], options?: {
|
|
31
|
+
batchSize?: number;
|
|
32
|
+
}) => Effect.Effect<Set<string>, DatabaseError | BatchProcessingError<Set<string>>>;
|
|
29
33
|
/**
|
|
30
34
|
* Get processing progress for a file.
|
|
31
35
|
* Returns null if file has never been processed.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deduplication-service.d.ts","sourceRoot":"","sources":["../../src/services/deduplication-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AAEvE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"deduplication-service.d.ts","sourceRoot":"","sources":["../../src/services/deduplication-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AAEvE,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAClE,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,yBAAyB,CAAA;;IAgB5B;;;;OAIG;0BACmB,CACpB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,KACf,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC;IAEpD;;;;OAIG;2BACoB,CACrB,KAAK,EAAE,SAAS;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,EAAE,EACzD,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,oBAAoB,KAC3B,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,aAAa,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;IAE9F;;OAEG;0BACmB,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC;IAEhF;;;;OAIG;8BACuB,CACxB,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAC7B,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAElF;;;OAGG;0BACmB,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,EAAE,aAAa,CAAC;IAE7F;;OAEG;6BACsB,CACvB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,EACzB,cAAc,EAAE,MAAM,EACtB,QAAQ,CAAC,EAAE,MAAM,EACjB,YAAY,CAAC,EAAE,MAAM,KAClB,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC;IAE/C;;;OAGG;wBACiB,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,EAAE,aAAa,CAAC;IAEjG;;OAEG;uBACgB,MAAM,MAAM,CAAC,MAAM,CAAC;QACrC,WAAW,EAAE,MAAM,CAAA;QACnB,YAAY,EAAE,MAAM,CAAA;KACrB,EAAE,aAAa,CAAC;IAEjB;;;OAGG;0BACmB,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM;;AAhFrD;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,yBA6EvC;CAAG;AAEN,eAAO,MAAM,wBAAwB,mEAkOpC,CAAA"}
|