@jamesaphoenix/tx-core 0.5.2 → 0.5.4
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 +32 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/layer.d.ts +5 -4
- package/dist/layer.d.ts.map +1 -1
- package/dist/layer.js +6 -2
- package/dist/layer.js.map +1 -1
- package/dist/mappers/task.d.ts.map +1 -1
- package/dist/mappers/task.js +12 -0
- package/dist/mappers/task.js.map +1 -1
- package/dist/repo/run-repo.d.ts +2 -0
- package/dist/repo/run-repo.d.ts.map +1 -1
- package/dist/repo/run-repo.js +16 -0
- package/dist/repo/run-repo.js.map +1 -1
- package/dist/repo/task-repo.d.ts.map +1 -1
- package/dist/repo/task-repo.js +15 -8
- package/dist/repo/task-repo.js.map +1 -1
- package/dist/schemas/sync.d.ts +16 -0
- package/dist/schemas/sync.d.ts.map +1 -1
- package/dist/schemas/sync.js +5 -1
- package/dist/schemas/sync.js.map +1 -1
- package/dist/services/agent-service.d.ts +1 -1
- package/dist/services/agent-service.d.ts.map +1 -1
- package/dist/services/agent-service.js +229 -27
- package/dist/services/agent-service.js.map +1 -1
- package/dist/services/compaction-service.d.ts +2 -2
- package/dist/services/cycle-scan-service.d.ts.map +1 -1
- package/dist/services/cycle-scan-service.js +310 -13
- package/dist/services/cycle-scan-service.js.map +1 -1
- package/dist/services/index.d.ts +1 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +1 -0
- package/dist/services/index.js.map +1 -1
- package/dist/services/learning-service.d.ts +1 -1
- package/dist/services/llm-service.d.ts.map +1 -1
- package/dist/services/llm-service.js +4 -0
- package/dist/services/llm-service.js.map +1 -1
- package/dist/services/promotion-service.d.ts +1 -1
- package/dist/services/retriever-service.d.ts +2 -2
- package/dist/services/run-heartbeat-service.d.ts +60 -0
- package/dist/services/run-heartbeat-service.d.ts.map +1 -0
- package/dist/services/run-heartbeat-service.js +230 -0
- package/dist/services/run-heartbeat-service.js.map +1 -0
- package/dist/services/sync-service.d.ts.map +1 -1
- package/dist/services/sync-service.js +16 -5
- package/dist/services/sync-service.js.map +1 -1
- package/dist/services/task-service.d.ts +3 -1
- package/dist/services/task-service.d.ts.map +1 -1
- package/dist/services/task-service.js +53 -1
- package/dist/services/task-service.js.map +1 -1
- package/dist/utils/claude-debug-log.d.ts +6 -0
- package/dist/utils/claude-debug-log.d.ts.map +1 -0
- package/dist/utils/claude-debug-log.js +35 -0
- package/dist/utils/claude-debug-log.js.map +1 -0
- package/dist/utils/doc-renderer.d.ts +2 -1
- package/dist/utils/doc-renderer.d.ts.map +1 -1
- package/dist/utils/doc-renderer.js +55 -10
- package/dist/utils/doc-renderer.js.map +1 -1
- package/dist/utils/toml-config.d.ts +10 -0
- package/dist/utils/toml-config.d.ts.map +1 -1
- package/dist/utils/toml-config.js +79 -8
- package/dist/utils/toml-config.js.map +1 -1
- package/dist/worker/run-worker.d.ts.map +1 -1
- package/dist/worker/run-worker.js +25 -27
- package/dist/worker/run-worker.js.map +1 -1
- package/package.json +1 -1
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* See PRD-018 "Worker Hooks (Customization Points)" section and
|
|
9
9
|
* DD-018 "Headless Worker Design" section.
|
|
10
10
|
*/
|
|
11
|
-
import { Effect, Duration, Fiber, Ref } from "effect";
|
|
11
|
+
import { Effect, Duration, Fiber, Ref, Schedule } from "effect";
|
|
12
12
|
import * as os from "os";
|
|
13
13
|
import { WorkerService } from "../services/worker-service.js";
|
|
14
14
|
import { ClaimService } from "../services/claim-service.js";
|
|
@@ -43,10 +43,11 @@ export const runWorker = (config) => Effect.gen(function* () {
|
|
|
43
43
|
const readyService = yield* ReadyService;
|
|
44
44
|
const runRepo = yield* RunRepository;
|
|
45
45
|
const heartbeatInterval = config.heartbeatIntervalSeconds ?? DEFAULT_HEARTBEAT_INTERVAL;
|
|
46
|
-
//
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
// Mutable shutdown state shared with signal handlers and fibers.
|
|
47
|
+
// Avoids Effect.runSync in signal handlers.
|
|
48
|
+
const shutdownState = {
|
|
49
|
+
shutdownRequested: false
|
|
50
|
+
};
|
|
50
51
|
// Register with orchestrator
|
|
51
52
|
const worker = yield* workerService.register({
|
|
52
53
|
name: config.name,
|
|
@@ -55,17 +56,19 @@ export const runWorker = (config) => Effect.gen(function* () {
|
|
|
55
56
|
});
|
|
56
57
|
const workerId = worker.id;
|
|
57
58
|
yield* Effect.log(`runWorker: Worker ${workerId} registered`);
|
|
59
|
+
const releaseRetrySchedule = Schedule.exponential(Duration.seconds(1)).pipe(Schedule.jittered, Schedule.compose(Schedule.recurs(3)));
|
|
60
|
+
const releaseClaimSafely = (taskId) => claimService.release(taskId, workerId).pipe(Effect.catchTag("ClaimNotFoundError", () => Effect.void), Effect.catchTag("ClaimIdNotFoundError", () => Effect.void), Effect.retry(releaseRetrySchedule), Effect.catchAll((error) => Effect.log(`runWorker: Failed to release claim for task ${taskId} after retries: ${error.message}`)));
|
|
61
|
+
const releaseAllClaimsSafely = claimService.releaseByWorker(workerId).pipe(Effect.retry(releaseRetrySchedule), Effect.catchAll((error) => Effect.log(`runWorker: Failed to release claims for worker ${workerId}: ${error.message}`).pipe(Effect.as(0))));
|
|
58
62
|
// Set up signal handlers for graceful shutdown
|
|
59
63
|
const handleSignal = (signal) => {
|
|
60
64
|
console.log(`runWorker: Worker ${workerId} received ${signal}`);
|
|
61
|
-
// Mark shutdown as requested (
|
|
62
|
-
|
|
63
|
-
...state,
|
|
64
|
-
requested: true
|
|
65
|
-
})));
|
|
65
|
+
// Mark shutdown as requested (signal handlers must stay synchronous)
|
|
66
|
+
shutdownState.shutdownRequested = true;
|
|
66
67
|
};
|
|
67
|
-
|
|
68
|
-
|
|
68
|
+
const sigtermHandler = () => handleSignal("SIGTERM");
|
|
69
|
+
const sigintHandler = () => handleSignal("SIGINT");
|
|
70
|
+
process.on("SIGTERM", sigtermHandler);
|
|
71
|
+
process.on("SIGINT", sigintHandler);
|
|
69
72
|
// Completed tasks counter for metrics
|
|
70
73
|
const tasksCompletedRef = yield* Ref.make(0);
|
|
71
74
|
// Heartbeat fiber - runs continuously in background
|
|
@@ -74,8 +77,7 @@ export const runWorker = (config) => Effect.gen(function* () {
|
|
|
74
77
|
// Main work loop
|
|
75
78
|
while (true) {
|
|
76
79
|
// Check if shutdown was requested
|
|
77
|
-
|
|
78
|
-
if (state.requested) {
|
|
80
|
+
if (shutdownState.shutdownRequested) {
|
|
79
81
|
yield* Effect.log(`runWorker: Worker ${workerId} shutting down gracefully`);
|
|
80
82
|
break;
|
|
81
83
|
}
|
|
@@ -150,11 +152,10 @@ export const runWorker = (config) => Effect.gen(function* () {
|
|
|
150
152
|
...baseContext,
|
|
151
153
|
...(config.context ?? {})
|
|
152
154
|
};
|
|
153
|
-
let result;
|
|
154
155
|
try {
|
|
155
156
|
// USER HOOK: Execute (all your logic here)
|
|
156
157
|
// Use Effect.tryPromise to properly handle the async execute hook
|
|
157
|
-
result = yield* Effect.tryPromise({
|
|
158
|
+
const result = yield* Effect.tryPromise({
|
|
158
159
|
try: () => config.execute(task, mergedContext),
|
|
159
160
|
catch: (error) => error
|
|
160
161
|
}).pipe(Effect.catchAll((error) => {
|
|
@@ -183,18 +184,20 @@ export const runWorker = (config) => Effect.gen(function* () {
|
|
|
183
184
|
finally {
|
|
184
185
|
// Stop renewal fiber
|
|
185
186
|
yield* Fiber.interrupt(renewFiber);
|
|
187
|
+
// Always release claim when task execution scope ends (success, error, or interrupt)
|
|
188
|
+
yield* releaseClaimSafely(task.id);
|
|
186
189
|
}
|
|
187
|
-
// Release the claim
|
|
188
|
-
yield* claimService.release(task.id, workerId).pipe(Effect.catchAll((error) => Effect.log(`runWorker: Failed to release claim for task ${task.id}: ${error.message}`)));
|
|
189
190
|
}
|
|
190
191
|
// Graceful shutdown: mark as stopping
|
|
191
192
|
yield* workerService.updateStatus(workerId, "stopping");
|
|
192
193
|
}
|
|
193
194
|
finally {
|
|
195
|
+
process.off("SIGTERM", sigtermHandler);
|
|
196
|
+
process.off("SIGINT", sigintHandler);
|
|
194
197
|
// Cleanup: stop heartbeat fiber and deregister
|
|
195
198
|
yield* Fiber.interrupt(heartbeatFiber);
|
|
196
199
|
// Release any active claims before deregistering
|
|
197
|
-
yield*
|
|
200
|
+
yield* releaseAllClaimsSafely;
|
|
198
201
|
yield* workerService.deregister(workerId).pipe(Effect.catchAll((error) => Effect.log(`runWorker: Failed to deregister worker ${workerId}: ${error.message}`)));
|
|
199
202
|
yield* Effect.log(`runWorker: Worker ${workerId} shutdown complete`);
|
|
200
203
|
}
|
|
@@ -207,8 +210,7 @@ const runHeartbeatLoop = (workerId, intervalSeconds, shutdownState, tasksComplet
|
|
|
207
210
|
const workerService = yield* WorkerService;
|
|
208
211
|
while (true) {
|
|
209
212
|
// Check shutdown before heartbeat
|
|
210
|
-
|
|
211
|
-
if (state.requested)
|
|
213
|
+
if (shutdownState.shutdownRequested)
|
|
212
214
|
break;
|
|
213
215
|
const tasksCompleted = yield* Ref.get(tasksCompletedRef);
|
|
214
216
|
yield* workerService
|
|
@@ -237,8 +239,7 @@ const runLeaseRenewalLoop = (taskId, workerId, intervalSeconds, shutdownState) =
|
|
|
237
239
|
// Wait before first renewal
|
|
238
240
|
yield* Effect.sleep(Duration.seconds(intervalSeconds));
|
|
239
241
|
// Check shutdown before renewal
|
|
240
|
-
|
|
241
|
-
if (state.requested)
|
|
242
|
+
if (shutdownState.shutdownRequested)
|
|
242
243
|
break;
|
|
243
244
|
const renewResult = yield* claimService
|
|
244
245
|
.renew(taskId, workerId)
|
|
@@ -246,10 +247,7 @@ const runLeaseRenewalLoop = (taskId, workerId, intervalSeconds, shutdownState) =
|
|
|
246
247
|
yield* Effect.log(`runWorker: CRITICAL: Lease renewal failed for task ${taskId}: ${error.message}. Stopping worker to prevent duplicate execution.`);
|
|
247
248
|
// Stop the worker to prevent duplicate task execution
|
|
248
249
|
// Another worker may have claimed this task after lease expiry
|
|
249
|
-
|
|
250
|
-
...state,
|
|
251
|
-
requested: true
|
|
252
|
-
}));
|
|
250
|
+
shutdownState.shutdownRequested = true;
|
|
253
251
|
return false;
|
|
254
252
|
})));
|
|
255
253
|
// Exit renewal loop if renewal failed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-worker.js","sourceRoot":"","sources":["../../src/worker/run-worker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"run-worker.js","sourceRoot":"","sources":["../../src/worker/run-worker.ts"],"names":[],"mappings":"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"}
|