@jamesaphoenix/tx-core 0.9.2 → 0.10.0
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 +11 -11
- package/dist/errors.d.ts +18 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +11 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/internal/doc-service-impl.d.ts.map +1 -1
- package/dist/internal/doc-service-impl.js +104 -11
- package/dist/internal/doc-service-impl.js.map +1 -1
- package/dist/internal/sync/service-impl.d.ts +3 -1
- package/dist/internal/sync/service-impl.d.ts.map +1 -1
- package/dist/internal/sync/service-impl.js +191 -1
- package/dist/internal/sync/service-impl.js.map +1 -1
- package/dist/layer.d.ts +7 -5
- package/dist/layer.d.ts.map +1 -1
- package/dist/layer.js +27 -11
- package/dist/layer.js.map +1 -1
- package/dist/mappers/decision.d.ts +8 -0
- package/dist/mappers/decision.d.ts.map +1 -0
- package/dist/mappers/decision.js +32 -0
- package/dist/mappers/decision.js.map +1 -0
- package/dist/mappers/doc.d.ts +4 -2
- package/dist/mappers/doc.d.ts.map +1 -1
- package/dist/mappers/doc.js +29 -2
- package/dist/mappers/doc.js.map +1 -1
- package/dist/mappers/process-registry.d.ts +18 -0
- package/dist/mappers/process-registry.d.ts.map +1 -0
- package/dist/mappers/process-registry.js +32 -0
- package/dist/mappers/process-registry.js.map +1 -0
- package/dist/migrations-embedded.d.ts.map +1 -1
- package/dist/migrations-embedded.js +15 -0
- package/dist/migrations-embedded.js.map +1 -1
- package/dist/repo/decision-repo.d.ts +58 -0
- package/dist/repo/decision-repo.d.ts.map +1 -0
- package/dist/repo/decision-repo.js +162 -0
- package/dist/repo/decision-repo.js.map +1 -0
- package/dist/repo/doc-repo.d.ts.map +1 -1
- package/dist/repo/doc-repo.js +14 -3
- package/dist/repo/doc-repo.js.map +1 -1
- package/dist/repo/doc-repo.types.d.ts +11 -0
- package/dist/repo/doc-repo.types.d.ts.map +1 -1
- package/dist/repo/index.d.ts +2 -0
- package/dist/repo/index.d.ts.map +1 -1
- package/dist/repo/index.js +2 -0
- package/dist/repo/index.js.map +1 -1
- package/dist/repo/process-registry-repo.d.ts +27 -0
- package/dist/repo/process-registry-repo.d.ts.map +1 -0
- package/dist/repo/process-registry-repo.js +91 -0
- package/dist/repo/process-registry-repo.js.map +1 -0
- package/dist/schemas/index.d.ts +2 -2
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +1 -1
- package/dist/schemas/index.js.map +1 -1
- package/dist/schemas/sync-events.d.ts +2 -2
- package/dist/schemas/sync-events.d.ts.map +1 -1
- package/dist/schemas/sync-events.js +1 -1
- package/dist/schemas/sync-events.js.map +1 -1
- package/dist/schemas/sync.d.ts +129 -10
- package/dist/schemas/sync.d.ts.map +1 -1
- package/dist/schemas/sync.js +49 -2
- package/dist/schemas/sync.js.map +1 -1
- package/dist/schemas/worker.d.ts +16 -0
- package/dist/schemas/worker.d.ts.map +1 -1
- package/dist/schemas/worker.js +15 -0
- package/dist/schemas/worker.js.map +1 -1
- package/dist/services/decision-service.d.ts +41 -0
- package/dist/services/decision-service.d.ts.map +1 -0
- package/dist/services/decision-service.js +139 -0
- package/dist/services/decision-service.js.map +1 -0
- package/dist/services/dep-service.d.ts.map +1 -1
- package/dist/services/dep-service.js +14 -1
- package/dist/services/dep-service.js.map +1 -1
- package/dist/services/index.d.ts +3 -1
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +3 -1
- package/dist/services/index.js.map +1 -1
- package/dist/services/orchestrator-service.d.ts +1 -1
- package/dist/services/process-registry-service.d.ts +27 -0
- package/dist/services/process-registry-service.d.ts.map +1 -0
- package/dist/services/process-registry-service.js +19 -0
- package/dist/services/process-registry-service.js.map +1 -0
- package/dist/services/ready-service.d.ts +12 -2
- package/dist/services/ready-service.d.ts.map +1 -1
- package/dist/services/ready-service.js +99 -83
- package/dist/services/ready-service.js.map +1 -1
- package/dist/services/sync/converters.d.ts +7 -2
- package/dist/services/sync/converters.d.ts.map +1 -1
- package/dist/services/sync/converters.js +29 -0
- package/dist/services/sync/converters.js.map +1 -1
- package/dist/services/sync/entity-export.d.ts +2 -1
- package/dist/services/sync/entity-export.d.ts.map +1 -1
- package/dist/services/sync/entity-export.js +1 -0
- package/dist/services/sync/entity-export.js.map +1 -1
- package/dist/services/sync/entity-import.d.ts +2 -1
- package/dist/services/sync/entity-import.d.ts.map +1 -1
- package/dist/services/sync/entity-import.js +1 -0
- package/dist/services/sync/entity-import.js.map +1 -1
- package/dist/services/task-service.d.ts.map +1 -1
- package/dist/services/task-service.js +14 -0
- package/dist/services/task-service.js.map +1 -1
- package/dist/services/transcript-adapter.d.ts +14 -0
- package/dist/services/transcript-adapter.d.ts.map +1 -1
- package/dist/services/transcript-adapter.js +113 -1
- package/dist/services/transcript-adapter.js.map +1 -1
- package/dist/services/worker-process.d.ts +1 -1
- package/dist/utils/doc-renderer.d.ts +7 -0
- package/dist/utils/doc-renderer.d.ts.map +1 -1
- package/dist/utils/doc-renderer.js +45 -0
- package/dist/utils/doc-renderer.js.map +1 -1
- package/dist/utils/toml-config.d.ts +0 -1
- package/dist/utils/toml-config.d.ts.map +1 -1
- package/dist/utils/toml-config.js +3 -6
- package/dist/utils/toml-config.js.map +1 -1
- package/dist/worker/run-worker.d.ts +1 -1
- package/migrations/036_unified_invariants.sql +72 -0
- package/migrations/037_decisions.sql +35 -0
- package/migrations/038_process_registry.sql +26 -0
- package/package.json +1 -1
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DecisionService — business logic for decisions as first-class artifacts.
|
|
3
|
+
*
|
|
4
|
+
* Manages the decision lifecycle: capture, review, sync to docs.
|
|
5
|
+
* Part of the spec-driven development triangle.
|
|
6
|
+
*/
|
|
7
|
+
import { Context, Effect, Layer } from "effect";
|
|
8
|
+
import { DecisionRepository } from "../repo/decision-repo.js";
|
|
9
|
+
import { DecisionNotFoundError, DecisionAlreadyReviewedError, } from "../errors.js";
|
|
10
|
+
import { createHash } from "node:crypto";
|
|
11
|
+
const computeContentHash = (content) => {
|
|
12
|
+
return createHash("sha256").update(content).digest("hex");
|
|
13
|
+
};
|
|
14
|
+
const generateDecisionId = (contentHash) => {
|
|
15
|
+
return `dec-${contentHash.slice(0, 12)}`;
|
|
16
|
+
};
|
|
17
|
+
export class DecisionService extends Context.Tag("DecisionService")() {
|
|
18
|
+
}
|
|
19
|
+
export const DecisionServiceLive = Layer.effect(DecisionService, Effect.gen(function* () {
|
|
20
|
+
const repo = yield* DecisionRepository;
|
|
21
|
+
return {
|
|
22
|
+
add: (input) => Effect.gen(function* () {
|
|
23
|
+
const contentHash = computeContentHash(input.content);
|
|
24
|
+
// Dedup: check if identical content already exists
|
|
25
|
+
const existing = yield* repo.findByContentHash(contentHash);
|
|
26
|
+
if (existing) {
|
|
27
|
+
return existing;
|
|
28
|
+
}
|
|
29
|
+
const id = generateDecisionId(contentHash);
|
|
30
|
+
return yield* repo.insert({
|
|
31
|
+
id,
|
|
32
|
+
content: input.content,
|
|
33
|
+
question: input.question,
|
|
34
|
+
source: input.source ?? "manual",
|
|
35
|
+
commitSha: input.commitSha,
|
|
36
|
+
runId: input.runId,
|
|
37
|
+
taskId: input.taskId,
|
|
38
|
+
docId: input.docId,
|
|
39
|
+
contentHash,
|
|
40
|
+
});
|
|
41
|
+
}),
|
|
42
|
+
list: (filter) => repo.findAll(filter),
|
|
43
|
+
show: (id) => Effect.gen(function* () {
|
|
44
|
+
const decision = yield* repo.findById(id);
|
|
45
|
+
if (!decision) {
|
|
46
|
+
return yield* Effect.fail(new DecisionNotFoundError({ id }));
|
|
47
|
+
}
|
|
48
|
+
return decision;
|
|
49
|
+
}),
|
|
50
|
+
approve: (id, reviewer, note) => Effect.gen(function* () {
|
|
51
|
+
const decision = yield* repo.findById(id);
|
|
52
|
+
if (!decision) {
|
|
53
|
+
return yield* Effect.fail(new DecisionNotFoundError({ id }));
|
|
54
|
+
}
|
|
55
|
+
if (decision.status !== "pending") {
|
|
56
|
+
return yield* Effect.fail(new DecisionAlreadyReviewedError({ id, status: decision.status }));
|
|
57
|
+
}
|
|
58
|
+
const result = yield* repo.updateStatus(id, "approved", {
|
|
59
|
+
reviewedBy: reviewer,
|
|
60
|
+
reviewNote: note,
|
|
61
|
+
reviewedAt: new Date().toISOString(),
|
|
62
|
+
});
|
|
63
|
+
if (!result) {
|
|
64
|
+
return yield* Effect.fail(new DecisionNotFoundError({ id }));
|
|
65
|
+
}
|
|
66
|
+
return result;
|
|
67
|
+
}),
|
|
68
|
+
reject: (id, reviewer, reason) => Effect.gen(function* () {
|
|
69
|
+
const decision = yield* repo.findById(id);
|
|
70
|
+
if (!decision) {
|
|
71
|
+
return yield* Effect.fail(new DecisionNotFoundError({ id }));
|
|
72
|
+
}
|
|
73
|
+
if (decision.status !== "pending") {
|
|
74
|
+
return yield* Effect.fail(new DecisionAlreadyReviewedError({ id, status: decision.status }));
|
|
75
|
+
}
|
|
76
|
+
const result = yield* repo.updateStatus(id, "rejected", {
|
|
77
|
+
reviewedBy: reviewer,
|
|
78
|
+
reviewNote: reason,
|
|
79
|
+
reviewedAt: new Date().toISOString(),
|
|
80
|
+
});
|
|
81
|
+
if (!result) {
|
|
82
|
+
return yield* Effect.fail(new DecisionNotFoundError({ id }));
|
|
83
|
+
}
|
|
84
|
+
return result;
|
|
85
|
+
}),
|
|
86
|
+
edit: (id, content, reviewer) => Effect.gen(function* () {
|
|
87
|
+
const decision = yield* repo.findById(id);
|
|
88
|
+
if (!decision) {
|
|
89
|
+
return yield* Effect.fail(new DecisionNotFoundError({ id }));
|
|
90
|
+
}
|
|
91
|
+
if (decision.status !== "pending") {
|
|
92
|
+
return yield* Effect.fail(new DecisionAlreadyReviewedError({ id, status: decision.status }));
|
|
93
|
+
}
|
|
94
|
+
const result = yield* repo.updateStatus(id, "edited", {
|
|
95
|
+
editedContent: content,
|
|
96
|
+
reviewedBy: reviewer,
|
|
97
|
+
reviewedAt: new Date().toISOString(),
|
|
98
|
+
});
|
|
99
|
+
if (!result) {
|
|
100
|
+
return yield* Effect.fail(new DecisionNotFoundError({ id }));
|
|
101
|
+
}
|
|
102
|
+
return result;
|
|
103
|
+
}),
|
|
104
|
+
supersede: (id, newContent) => Effect.gen(function* () {
|
|
105
|
+
const old = yield* repo.findById(id);
|
|
106
|
+
if (!old) {
|
|
107
|
+
return yield* Effect.fail(new DecisionNotFoundError({ id }));
|
|
108
|
+
}
|
|
109
|
+
// Dedup: check if identical content already exists
|
|
110
|
+
const contentHash = computeContentHash(newContent);
|
|
111
|
+
const existing = yield* repo.findByContentHash(contentHash);
|
|
112
|
+
if (existing) {
|
|
113
|
+
// Mark old as superseded pointing to existing
|
|
114
|
+
const superseded = yield* repo.updateStatus(id, "superseded", {
|
|
115
|
+
supersededBy: existing.id,
|
|
116
|
+
});
|
|
117
|
+
if (!superseded) {
|
|
118
|
+
return yield* Effect.fail(new DecisionNotFoundError({ id }));
|
|
119
|
+
}
|
|
120
|
+
return { old: superseded, new: existing };
|
|
121
|
+
}
|
|
122
|
+
// Atomic: insert new + mark old as superseded in one transaction
|
|
123
|
+
const newId = generateDecisionId(contentHash);
|
|
124
|
+
return yield* repo.supersedeAtomic(id, {
|
|
125
|
+
id: newId,
|
|
126
|
+
content: newContent,
|
|
127
|
+
question: old.question,
|
|
128
|
+
source: old.source,
|
|
129
|
+
commitSha: old.commitSha,
|
|
130
|
+
runId: old.runId,
|
|
131
|
+
taskId: old.taskId,
|
|
132
|
+
docId: old.docId,
|
|
133
|
+
contentHash,
|
|
134
|
+
});
|
|
135
|
+
}),
|
|
136
|
+
pending: () => repo.findAll({ status: "pending" }),
|
|
137
|
+
};
|
|
138
|
+
}));
|
|
139
|
+
//# sourceMappingURL=decision-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision-service.js","sourceRoot":"","sources":["../../src/services/decision-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dep-service.d.ts","sourceRoot":"","sources":["../../src/services/dep-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AAClI,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;;yBAK5B,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,uBAAuB,GAAG,iBAAiB,GAAG,aAAa,CAAC;4BACtI,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,uBAAuB,CAAC;;AAJ/H,qBAAa,iBAAkB,SAAQ,sBAMpC;CAAG;AAEN,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"dep-service.d.ts","sourceRoot":"","sources":["../../src/services/dep-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAA;AAClI,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;;yBAK5B,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,GAAG,uBAAuB,GAAG,iBAAiB,GAAG,aAAa,CAAC;4BACtI,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,uBAAuB,CAAC;;AAJ/H,qBAAa,iBAAkB,SAAQ,sBAMpC;CAAG;AAEN,eAAO,MAAM,qBAAqB,8EAwDjC,CAAA"}
|
|
@@ -7,6 +7,13 @@ export class DependencyService extends Context.Tag("DependencyService")() {
|
|
|
7
7
|
export const DependencyServiceLive = Layer.effect(DependencyService, Effect.gen(function* () {
|
|
8
8
|
const depRepo = yield* DependencyRepository;
|
|
9
9
|
const taskRepo = yield* TaskRepository;
|
|
10
|
+
const reconcileBlockedStatus = (taskId) => Effect.gen(function* () {
|
|
11
|
+
// Keep stored status consistent with dependency graph for workable states.
|
|
12
|
+
// This prevents status='ready' while effective readiness is false.
|
|
13
|
+
for (const expectedStatus of ["ready", "backlog", "planning", "blocked"]) {
|
|
14
|
+
yield* taskRepo.recoverTaskStatus(taskId, expectedStatus);
|
|
15
|
+
}
|
|
16
|
+
});
|
|
10
17
|
return {
|
|
11
18
|
addBlocker: (taskId, blockerId) => Effect.gen(function* () {
|
|
12
19
|
if (taskId === blockerId) {
|
|
@@ -31,8 +38,14 @@ export const DependencyServiceLive = Layer.effect(DependencyService, Effect.gen(
|
|
|
31
38
|
if (result._tag === "alreadyExists") {
|
|
32
39
|
return;
|
|
33
40
|
}
|
|
41
|
+
// Synchronize persisted status with dependency graph after mutation.
|
|
42
|
+
yield* reconcileBlockedStatus(taskId);
|
|
34
43
|
}),
|
|
35
|
-
removeBlocker: (taskId, blockerId) =>
|
|
44
|
+
removeBlocker: (taskId, blockerId) => Effect.gen(function* () {
|
|
45
|
+
yield* depRepo.remove(blockerId, taskId);
|
|
46
|
+
// Task may become ready when last blocker is removed.
|
|
47
|
+
yield* reconcileBlockedStatus(taskId);
|
|
48
|
+
})
|
|
36
49
|
};
|
|
37
50
|
}));
|
|
38
51
|
//# sourceMappingURL=dep-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dep-service.js","sourceRoot":"","sources":["../../src/services/dep-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,iBAAiB,EAA0C,MAAM,cAAc,CAAA;AAGlI,MAAM,OAAO,iBAAkB,SAAQ,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAMpE;CAAG;AAEN,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC,MAAM,CAC/C,iBAAiB,EACjB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,oBAAoB,CAAA;IAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,cAAc,CAAA;IAEtC,OAAO;QACL,UAAU,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,CAChC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC,CAAC,CAAA;YAC1F,CAAC;YAED,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;YAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAA;YAClE,CAAC;YAED,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;YACnD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;YACrE,CAAC;YAED,6EAA6E;YAC7E,4EAA4E;YAC5E,qEAAqE;YACrE,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;YACrE,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACjC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;YAC/E,CAAC;YACD,uDAAuD;YACvD,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBACpC,OAAM;YACR,CAAC;
|
|
1
|
+
{"version":3,"file":"dep-service.js","sourceRoot":"","sources":["../../src/services/dep-service.ts"],"names":[],"mappings":"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"}
|
package/dist/services/index.d.ts
CHANGED
|
@@ -34,10 +34,11 @@ export { FeedbackTrackerService, FeedbackTrackerServiceNoop, FeedbackTrackerServ
|
|
|
34
34
|
export { WorkerService, WorkerServiceLive, type WorkerRegistration, type WorkerFilter, type FindDeadConfig } from "./worker-service.js";
|
|
35
35
|
export { RunHeartbeatService, RunHeartbeatServiceLive, type RunHeartbeatInput, type StalledRun, type StalledRunQuery, type ReapStalledOptions, type ReapedRun } from "./run-heartbeat-service.js";
|
|
36
36
|
export { ClaimService, ClaimServiceLive } from "./claim-service.js";
|
|
37
|
+
export { ProcessRegistryService, ProcessRegistryServiceLive } from "./process-registry-service.js";
|
|
37
38
|
export { OrchestratorService, OrchestratorServiceLive, type OrchestratorConfig } from "./orchestrator-service.js";
|
|
38
39
|
export { runWorkerProcess, killWithEscalation, SIGKILL_ESCALATION_TIMEOUT_MS, type WorkerProcessConfig } from "./worker-process.js";
|
|
39
40
|
export { TracingService, TracingServiceLive, TracingServiceNoop, type SpanOptions } from "./tracing-service.js";
|
|
40
|
-
export { ClaudeCodeAdapter, GenericJSONLAdapter, getAdapter, registerAdapter, type TranscriptAdapter, type ToolCall, type Message } from "./transcript-adapter.js";
|
|
41
|
+
export { ClaudeCodeAdapter, CodexAdapter, GenericJSONLAdapter, getAdapter, detectAdapter, registerAdapter, type TranscriptAdapter, type ToolCall, type Message } from "./transcript-adapter.js";
|
|
41
42
|
export { CompactionService, CompactionServiceNoop, CompactionServiceLive, CompactionServiceAuto, type CompactionResult, type CompactionOptions, type CompactionPreview } from "./compaction-service.js";
|
|
42
43
|
export { ValidationService, ValidationServiceLive, type ValidationSeverity, type ValidationIssue, type CheckResult, type ValidationResult, type ValidateOptions } from "./validation-service.js";
|
|
43
44
|
export { MessageService, MessageServiceLive } from "./message-service.js";
|
|
@@ -50,4 +51,5 @@ export { GuardService, GuardServiceLive, type GuardCheckResult } from "./guard-s
|
|
|
50
51
|
export { VerifyService, VerifyServiceLive, type VerifyResult } from "./verify-service.js";
|
|
51
52
|
export { ReflectService, ReflectServiceLive, type ReflectResult, type ReflectSignal, type StuckTask } from "./reflect-service.js";
|
|
52
53
|
export { SPEC_BATCH_MAX_BYTES, SPEC_BATCH_MAX_RECORDS, SpecTraceService, SpecTraceServiceLive, parseBatchRunInput, type BatchSource, type BatchRunResult, type SpecTraceStatus, } from "./spec-trace-service.js";
|
|
54
|
+
export { DecisionService, DecisionServiceLive } from "./decision-service.js";
|
|
53
55
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAC3E,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC/E,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxF,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC5E,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AACzF,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzE,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,4BAA4B,EAC5B,mBAAmB,EACnB,2BAA2B,EAC3B,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,8BAA8B,EAC9B,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,oBAAoB,EAC1B,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,WAAW,EACX,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,UAAU,EACf,KAAK,sBAAsB,EAC5B,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,KAAK,UAAU,EACf,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EACjB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,WAAW,EACX,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAC1B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,yBAAyB,EACzB,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,EAC9B,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACL,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACzB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB,EACzB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,yBAAyB,EACzB,6BAA6B,EAC7B,YAAY,EACZ,OAAO,EACP,wBAAwB,EACxB,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EACnB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,qBAAqB,EACrB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,KAAK,UAAU,EAChB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACxB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,QAAQ,EACR,OAAO,EACP,SAAS,EACT,yBAAyB,EACzB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACvB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACvB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,0BAA0B,EAC1B,KAAK,qBAAqB,EAC3B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACf,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,YAAY,EACZ,gBAAgB,EACjB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC3B,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,KAAK,kBAAkB,EACxB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,6BAA6B,EAC7B,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,UAAU,EACV,aAAa,EACb,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EACb,KAAK,OAAO,EACb,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,cAAc,EACd,kBAAkB,EACnB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAC1B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,UAAU,EACV,cAAc,EACf,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,aAAa,EACb,iBAAiB,EAClB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,0BAA0B,EAC3B,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,SAAS,EACf,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA"}
|
package/dist/services/index.js
CHANGED
|
@@ -34,10 +34,11 @@ export { FeedbackTrackerService, FeedbackTrackerServiceNoop, FeedbackTrackerServ
|
|
|
34
34
|
export { WorkerService, WorkerServiceLive } from "./worker-service.js";
|
|
35
35
|
export { RunHeartbeatService, RunHeartbeatServiceLive } from "./run-heartbeat-service.js";
|
|
36
36
|
export { ClaimService, ClaimServiceLive } from "./claim-service.js";
|
|
37
|
+
export { ProcessRegistryService, ProcessRegistryServiceLive } from "./process-registry-service.js";
|
|
37
38
|
export { OrchestratorService, OrchestratorServiceLive } from "./orchestrator-service.js";
|
|
38
39
|
export { runWorkerProcess, killWithEscalation, SIGKILL_ESCALATION_TIMEOUT_MS } from "./worker-process.js";
|
|
39
40
|
export { TracingService, TracingServiceLive, TracingServiceNoop } from "./tracing-service.js";
|
|
40
|
-
export { ClaudeCodeAdapter, GenericJSONLAdapter, getAdapter, registerAdapter } from "./transcript-adapter.js";
|
|
41
|
+
export { ClaudeCodeAdapter, CodexAdapter, GenericJSONLAdapter, getAdapter, detectAdapter, registerAdapter } from "./transcript-adapter.js";
|
|
41
42
|
export { CompactionService, CompactionServiceNoop, CompactionServiceLive, CompactionServiceAuto } from "./compaction-service.js";
|
|
42
43
|
export { ValidationService, ValidationServiceLive } from "./validation-service.js";
|
|
43
44
|
export { MessageService, MessageServiceLive } from "./message-service.js";
|
|
@@ -50,4 +51,5 @@ export { GuardService, GuardServiceLive } from "./guard-service.js";
|
|
|
50
51
|
export { VerifyService, VerifyServiceLive } from "./verify-service.js";
|
|
51
52
|
export { ReflectService, ReflectServiceLive } from "./reflect-service.js";
|
|
52
53
|
export { SPEC_BATCH_MAX_BYTES, SPEC_BATCH_MAX_RECORDS, SpecTraceService, SpecTraceServiceLive, parseBatchRunInput, } from "./spec-trace-service.js";
|
|
54
|
+
export { DecisionService, DecisionServiceLive } from "./decision-service.js";
|
|
53
55
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAC3E,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC/E,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAuB,MAAM,oBAAoB,CAAA;AACxF,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC5E,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AACzF,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzE,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,4BAA4B,EAC5B,mBAAmB,EACnB,2BAA2B,EAE5B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,8BAA8B,EAC9B,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAEnB,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EAEpB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,WAAW,EACX,eAAe,EAUhB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,aAAa,EACb,iBAAiB,EAGlB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAIjB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EAEpB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,aAAa,EACb,iBAAiB,EAMlB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,WAAW,EACX,eAAe,EAIhB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,yBAAyB,EACzB,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,EAC9B,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACL,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EAGf,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB,EAM1B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,yBAAyB,EACzB,6BAA6B,EAC7B,YAAY,EACZ,OAAO,EACP,wBAAwB,EAKzB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,qBAAqB,EAOtB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACxB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,QAAQ,EACR,OAAO,EACP,SAAS,EACT,yBAAyB,EACzB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EAKrB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EAKvB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EAGrB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,0BAA0B,EAE3B,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,aAAa,EACb,iBAAiB,EAIlB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EAMxB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,YAAY,EACZ,gBAAgB,EACjB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EAExB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,6BAA6B,EAE9B,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAEnB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,UAAU,EACV,eAAe,EAIhB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EAItB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EAMtB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,cAAc,EACd,kBAAkB,EACnB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAIjB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,UAAU,EACV,cAAc,EACf,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,aAAa,EACb,iBAAiB,EAClB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,0BAA0B,EAC3B,MAAM,+BAA+B,CAAA;AACtC,OAAO,EACL,YAAY,EACZ,gBAAgB,EAEjB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,aAAa,EACb,iBAAiB,EAElB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACL,cAAc,EACd,kBAAkB,EAInB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,GAInB,MAAM,yBAAyB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,6 +48,6 @@ declare const OrchestratorService_base: Context.TagClass<OrchestratorService, "O
|
|
|
48
48
|
}>;
|
|
49
49
|
export declare class OrchestratorService extends OrchestratorService_base {
|
|
50
50
|
}
|
|
51
|
-
export declare const OrchestratorServiceLive: Layer.Layer<OrchestratorService, never, SqliteClient | TaskRepository | ClaimRepository | OrchestratorStateRepository |
|
|
51
|
+
export declare const OrchestratorServiceLive: Layer.Layer<OrchestratorService, never, SqliteClient | TaskRepository | ClaimRepository | OrchestratorStateRepository | ClaimService | WorkerService>;
|
|
52
52
|
export {};
|
|
53
53
|
//# sourceMappingURL=orchestrator-service.d.ts.map
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Context, Effect, Layer } from "effect";
|
|
2
|
+
import type { DatabaseError, EntityFetchError } from "../errors.js";
|
|
3
|
+
import { ProcessRegistryRepository } from "../repo/process-registry-repo.js";
|
|
4
|
+
import type { ProcessEntry, ProcessRole } from "../schemas/worker.js";
|
|
5
|
+
declare const ProcessRegistryService_base: Context.TagClass<ProcessRegistryService, "ProcessRegistryService", {
|
|
6
|
+
readonly register: (opts: {
|
|
7
|
+
pid: number;
|
|
8
|
+
parentPid: number | null;
|
|
9
|
+
workerId: string | null;
|
|
10
|
+
runId: string | null;
|
|
11
|
+
role: ProcessRole;
|
|
12
|
+
commandHint: string | null;
|
|
13
|
+
}) => Effect.Effect<ProcessEntry, DatabaseError | EntityFetchError>;
|
|
14
|
+
readonly heartbeat: (pid: number) => Effect.Effect<number, DatabaseError>;
|
|
15
|
+
readonly deregister: (pid: number) => Effect.Effect<number, DatabaseError>;
|
|
16
|
+
readonly findAlive: () => Effect.Effect<readonly ProcessEntry[], DatabaseError>;
|
|
17
|
+
readonly findByWorker: (workerId: string) => Effect.Effect<readonly ProcessEntry[], DatabaseError>;
|
|
18
|
+
readonly findByRun: (runId: string) => Effect.Effect<readonly ProcessEntry[], DatabaseError>;
|
|
19
|
+
readonly findByRole: (role: ProcessRole) => Effect.Effect<readonly ProcessEntry[], DatabaseError>;
|
|
20
|
+
readonly findOrphans: (heartbeatThresholdSeconds: number) => Effect.Effect<readonly ProcessEntry[], DatabaseError>;
|
|
21
|
+
readonly deregisterByWorker: (workerId: string) => Effect.Effect<number, DatabaseError>;
|
|
22
|
+
}>;
|
|
23
|
+
export declare class ProcessRegistryService extends ProcessRegistryService_base {
|
|
24
|
+
}
|
|
25
|
+
export declare const ProcessRegistryServiceLive: Layer.Layer<ProcessRegistryService, never, ProcessRegistryRepository>;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=process-registry-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-registry-service.d.ts","sourceRoot":"","sources":["../../src/services/process-registry-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAA;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;;uBAK9C,CAAC,IAAI,EAAE;QACxB,GAAG,EAAE,MAAM,CAAA;QACX,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;QACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;QACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;QACpB,IAAI,EAAE,WAAW,CAAA;QACjB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;KAC3B,KAAK,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,GAAG,gBAAgB,CAAC;wBAE/C,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;yBAEpD,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;wBAEtD,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,YAAY,EAAE,EAAE,aAAa,CAAC;2BAExD,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,YAAY,EAAE,EAAE,aAAa,CAAC;wBAE9E,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,YAAY,EAAE,EAAE,aAAa,CAAC;yBAEvE,CAAC,IAAI,EAAE,WAAW,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,YAAY,EAAE,EAAE,aAAa,CAAC;0BAE3E,CAAC,yBAAyB,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,YAAY,EAAE,EAAE,aAAa,CAAC;iCAErF,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;;AA1B3F,qBAAa,sBAAuB,SAAQ,2BA4BzC;CAAG;AAEN,eAAO,MAAM,0BAA0B,uEAyBtC,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Context, Effect, Layer } from "effect";
|
|
2
|
+
import { ProcessRegistryRepository } from "../repo/process-registry-repo.js";
|
|
3
|
+
export class ProcessRegistryService extends Context.Tag("ProcessRegistryService")() {
|
|
4
|
+
}
|
|
5
|
+
export const ProcessRegistryServiceLive = Layer.effect(ProcessRegistryService, Effect.gen(function* () {
|
|
6
|
+
const repo = yield* ProcessRegistryRepository;
|
|
7
|
+
return {
|
|
8
|
+
register: (opts) => repo.register(opts),
|
|
9
|
+
heartbeat: (pid) => repo.heartbeat(pid),
|
|
10
|
+
deregister: (pid) => repo.deregister(pid),
|
|
11
|
+
findAlive: () => repo.findAlive(),
|
|
12
|
+
findByWorker: (workerId) => repo.findByWorker(workerId),
|
|
13
|
+
findByRun: (runId) => repo.findByRun(runId),
|
|
14
|
+
findByRole: (role) => repo.findByRole(role),
|
|
15
|
+
findOrphans: (heartbeatThresholdSeconds) => repo.findOrphans(heartbeatThresholdSeconds),
|
|
16
|
+
deregisterByWorker: (workerId) => repo.deregisterByWorker(workerId)
|
|
17
|
+
};
|
|
18
|
+
}));
|
|
19
|
+
//# sourceMappingURL=process-registry-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-registry-service.js","sourceRoot":"","sources":["../../src/services/process-registry-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAE/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAA;AAG5E,MAAM,OAAO,sBAAuB,SAAQ,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,EA4B9E;CAAG;AAEN,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAC,MAAM,CACpD,sBAAsB,EACtB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,yBAAyB,CAAA;IAE7C,OAAO;QACL,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAEvC,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;QAEvC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAEzC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;QAEjC,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;QAEvD,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAE3C,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAE3C,WAAW,EAAE,CAAC,yBAAyB,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,yBAAyB,CAAC;QAEvF,kBAAkB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;KACpE,CAAA;AACH,CAAC,CAAC,CACH,CAAA"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Context, Effect, Layer } from "effect";
|
|
2
2
|
import { TaskRepository } from "../repo/task-repo.js";
|
|
3
3
|
import { DependencyRepository } from "../repo/dep-repo.js";
|
|
4
|
-
import { DatabaseError } from "../errors.js";
|
|
4
|
+
import { AlreadyClaimedError, DatabaseError, TaskNotFoundError } from "../errors.js";
|
|
5
|
+
import { ClaimService } from "./claim-service.js";
|
|
6
|
+
import type { TaskClaim } from "../schemas/worker.js";
|
|
5
7
|
import type { Task, TaskId, TaskWithDeps } from "@jamesaphoenix/tx-types";
|
|
6
8
|
/**
|
|
7
9
|
* Result of checking whether a task is ready to be worked on.
|
|
@@ -23,6 +25,10 @@ export type ReadyCheckResult = {
|
|
|
23
25
|
};
|
|
24
26
|
/** Helper to check if a ReadyCheckResult indicates the task is ready. */
|
|
25
27
|
export declare const isReadyResult: (result: ReadyCheckResult) => boolean;
|
|
28
|
+
export type ReadyAndClaimResult = {
|
|
29
|
+
readonly task: TaskWithDeps;
|
|
30
|
+
readonly claim: TaskClaim;
|
|
31
|
+
};
|
|
26
32
|
declare const ReadyService_base: Context.TagClass<ReadyService, "ReadyService", {
|
|
27
33
|
readonly getReady: (limit?: number, options?: {
|
|
28
34
|
labels?: string[];
|
|
@@ -31,9 +37,13 @@ declare const ReadyService_base: Context.TagClass<ReadyService, "ReadyService",
|
|
|
31
37
|
readonly isReady: (id: TaskId) => Effect.Effect<ReadyCheckResult, DatabaseError>;
|
|
32
38
|
readonly getBlockers: (id: TaskId) => Effect.Effect<readonly Task[], DatabaseError>;
|
|
33
39
|
readonly getBlocking: (id: TaskId) => Effect.Effect<readonly Task[], DatabaseError>;
|
|
40
|
+
readonly readyAndClaim: (workerId: string, leaseDurationMinutes?: number, options?: {
|
|
41
|
+
labels?: string[];
|
|
42
|
+
excludeLabels?: string[];
|
|
43
|
+
}) => Effect.Effect<ReadyAndClaimResult | null, DatabaseError | TaskNotFoundError | AlreadyClaimedError>;
|
|
34
44
|
}>;
|
|
35
45
|
export declare class ReadyService extends ReadyService_base {
|
|
36
46
|
}
|
|
37
|
-
export declare const ReadyServiceLive: Layer.Layer<ReadyService, never, TaskRepository | DependencyRepository>;
|
|
47
|
+
export declare const ReadyServiceLive: Layer.Layer<ReadyService, never, TaskRepository | DependencyRepository | ClaimService>;
|
|
38
48
|
export {};
|
|
39
49
|
//# sourceMappingURL=ready-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ready-service.d.ts","sourceRoot":"","sources":["../../src/services/ready-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"ready-service.d.ts","sourceRoot":"","sources":["../../src/services/ready-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEzE;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACtD;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC9E;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAA;AAEpG,yEAAyE;AACzE,eAAO,MAAM,aAAa,GAAI,QAAQ,gBAAgB,KAAG,OAAkC,CAAA;AAE3F,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;CAC1B,CAAA;;uBAKsB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,YAAY,EAAE,EAAE,aAAa,CAAC;sBACrI,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,aAAa,CAAC;0BAC1D,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,aAAa,CAAC;0BAC7D,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,aAAa,CAAC;4BAC3D,CACtB,QAAQ,EAAE,MAAM,EAChB,oBAAoB,CAAC,EAAE,MAAM,EAC7B,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,KACtD,MAAM,CAAC,MAAM,CAAC,mBAAmB,GAAG,IAAI,EAAE,aAAa,GAAG,iBAAiB,GAAG,mBAAmB,CAAC;;AAX3G,qBAAa,YAAa,SAAQ,iBAa/B;CAAG;AAEN,eAAO,MAAM,gBAAgB,wFAuK5B,CAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Context, Effect, Layer } from "effect";
|
|
2
2
|
import { TaskRepository } from "../repo/task-repo.js";
|
|
3
3
|
import { DependencyRepository } from "../repo/dep-repo.js";
|
|
4
|
+
import { ClaimService } from "./claim-service.js";
|
|
4
5
|
/** Helper to check if a ReadyCheckResult indicates the task is ready. */
|
|
5
6
|
export const isReadyResult = (result) => result._tag === "Ready";
|
|
6
7
|
export class ReadyService extends Context.Tag("ReadyService")() {
|
|
@@ -8,98 +9,100 @@ export class ReadyService extends Context.Tag("ReadyService")() {
|
|
|
8
9
|
export const ReadyServiceLive = Layer.effect(ReadyService, Effect.gen(function* () {
|
|
9
10
|
const taskRepo = yield* TaskRepository;
|
|
10
11
|
const depRepo = yield* DependencyRepository;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
const claimService = yield* ClaimService;
|
|
13
|
+
const getReadyImpl = (limit = 100, options) => Effect.gen(function* () {
|
|
14
|
+
const safeLimit = Math.max(0, Math.floor(limit));
|
|
15
|
+
if (safeLimit === 0) {
|
|
16
|
+
return [];
|
|
17
|
+
}
|
|
18
|
+
// Page through candidates ordered by score/id to avoid loading the
|
|
19
|
+
// entire backlog when only a small ready set is requested.
|
|
20
|
+
const ready = [];
|
|
21
|
+
let cursor;
|
|
22
|
+
while (ready.length < safeLimit) {
|
|
23
|
+
const remaining = safeLimit - ready.length;
|
|
24
|
+
const pageSize = Math.min(Math.max(remaining * 4, 200), 1000);
|
|
25
|
+
const candidates = yield* taskRepo.findAll({
|
|
26
|
+
status: ["backlog", "ready", "planning"],
|
|
27
|
+
excludeClaimed: true,
|
|
28
|
+
cursor,
|
|
29
|
+
limit: pageSize,
|
|
30
|
+
labels: options?.labels,
|
|
31
|
+
excludeLabels: options?.excludeLabels,
|
|
32
|
+
});
|
|
33
|
+
if (candidates.length === 0) {
|
|
34
|
+
break;
|
|
16
35
|
}
|
|
17
|
-
|
|
18
|
-
//
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
excludeClaimed: true,
|
|
27
|
-
cursor,
|
|
28
|
-
limit: pageSize,
|
|
29
|
-
labels: options?.labels,
|
|
30
|
-
excludeLabels: options?.excludeLabels,
|
|
31
|
-
});
|
|
32
|
-
if (candidates.length === 0) {
|
|
33
|
-
break;
|
|
34
|
-
}
|
|
35
|
-
const candidateIds = candidates.map(t => t.id);
|
|
36
|
-
// Batch dependency lookups for each page.
|
|
37
|
-
const blockerIdsMap = yield* depRepo.getBlockerIdsForMany(candidateIds);
|
|
38
|
-
const blockingIdsMap = yield* depRepo.getBlockingIdsForMany(candidateIds);
|
|
39
|
-
const childIdsMap = yield* taskRepo.getChildIdsForMany(candidateIds);
|
|
40
|
-
const allBlockerIds = new Set();
|
|
41
|
-
for (const blockerIds of blockerIdsMap.values()) {
|
|
42
|
-
for (const id of blockerIds) {
|
|
43
|
-
allBlockerIds.add(id);
|
|
44
|
-
}
|
|
36
|
+
const candidateIds = candidates.map(t => t.id);
|
|
37
|
+
// Batch dependency lookups for each page.
|
|
38
|
+
const blockerIdsMap = yield* depRepo.getBlockerIdsForMany(candidateIds);
|
|
39
|
+
const blockingIdsMap = yield* depRepo.getBlockingIdsForMany(candidateIds);
|
|
40
|
+
const childIdsMap = yield* taskRepo.getChildIdsForMany(candidateIds);
|
|
41
|
+
const allBlockerIds = new Set();
|
|
42
|
+
for (const blockerIds of blockerIdsMap.values()) {
|
|
43
|
+
for (const id of blockerIds) {
|
|
44
|
+
allBlockerIds.add(id);
|
|
45
45
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
const lastCandidate = candidates[candidates.length - 1];
|
|
70
|
-
if (!lastCandidate) {
|
|
71
|
-
break;
|
|
72
|
-
}
|
|
73
|
-
cursor = { score: lastCandidate.score, id: lastCandidate.id };
|
|
74
|
-
if (candidates.length < pageSize) {
|
|
75
|
-
break;
|
|
46
|
+
}
|
|
47
|
+
const blockerTasks = allBlockerIds.size > 0
|
|
48
|
+
? yield* taskRepo.findByIds([...allBlockerIds])
|
|
49
|
+
: [];
|
|
50
|
+
const blockerStatusMap = new Map(blockerTasks.map(t => [t.id, t.status]));
|
|
51
|
+
for (const task of candidates) {
|
|
52
|
+
const blockerIds = blockerIdsMap.get(task.id) ?? [];
|
|
53
|
+
const blockingIds = blockingIdsMap.get(task.id) ?? [];
|
|
54
|
+
const childIds = childIdsMap.get(task.id) ?? [];
|
|
55
|
+
const allDone = blockerIds.length === 0 ||
|
|
56
|
+
blockerIds.every(id => blockerStatusMap.get(id) === "done");
|
|
57
|
+
if (allDone) {
|
|
58
|
+
ready.push({
|
|
59
|
+
...task,
|
|
60
|
+
blockedBy: blockerIds,
|
|
61
|
+
blocks: blockingIds,
|
|
62
|
+
children: childIds,
|
|
63
|
+
isReady: true,
|
|
64
|
+
groupContext: null,
|
|
65
|
+
effectiveGroupContext: null,
|
|
66
|
+
effectiveGroupContextSourceTaskId: null
|
|
67
|
+
});
|
|
76
68
|
}
|
|
77
69
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
return limited;
|
|
70
|
+
const lastCandidate = candidates[candidates.length - 1];
|
|
71
|
+
if (!lastCandidate) {
|
|
72
|
+
break;
|
|
82
73
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
74
|
+
cursor = { score: lastCandidate.score, id: lastCandidate.id };
|
|
75
|
+
if (candidates.length < pageSize) {
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
ready.sort((a, b) => b.score - a.score);
|
|
80
|
+
const limited = ready.slice(0, safeLimit);
|
|
81
|
+
if (limited.length === 0) {
|
|
82
|
+
return limited;
|
|
83
|
+
}
|
|
84
|
+
// Resolve context only for the final response set to avoid expensive
|
|
85
|
+
// graph traversal across the full candidate backlog.
|
|
86
|
+
const limitedIds = limited.map(task => task.id);
|
|
87
|
+
const directContextMap = yield* taskRepo.getGroupContextForMany(limitedIds);
|
|
88
|
+
const effectiveContextMap = yield* taskRepo.resolveEffectiveGroupContextForMany(limitedIds);
|
|
89
|
+
return limited.map((task) => {
|
|
90
|
+
const effective = effectiveContextMap.get(task.id);
|
|
91
|
+
return {
|
|
92
|
+
...task,
|
|
93
|
+
groupContext: directContextMap.get(task.id) ?? null,
|
|
94
|
+
effectiveGroupContext: effective?.context ?? null,
|
|
95
|
+
effectiveGroupContextSourceTaskId: effective?.sourceTaskId ?? null
|
|
96
|
+
};
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
return {
|
|
100
|
+
getReady: getReadyImpl,
|
|
98
101
|
isReady: (id) => Effect.gen(function* () {
|
|
99
102
|
const task = yield* taskRepo.findById(id);
|
|
100
103
|
if (!task)
|
|
101
104
|
return { _tag: "TaskNotFound", id };
|
|
102
|
-
if (!["backlog", "ready", "planning", "active"].includes(task.status)) {
|
|
105
|
+
if (!["backlog", "ready", "planning", "active", "blocked"].includes(task.status)) {
|
|
103
106
|
return { _tag: "WrongStatus", id, status: task.status };
|
|
104
107
|
}
|
|
105
108
|
const blockerIds = yield* depRepo.getBlockerIds(id);
|
|
@@ -124,6 +127,19 @@ export const ReadyServiceLive = Layer.effect(ReadyService, Effect.gen(function*
|
|
|
124
127
|
if (blockingIds.length === 0)
|
|
125
128
|
return [];
|
|
126
129
|
return yield* taskRepo.findByIds(blockingIds);
|
|
130
|
+
}),
|
|
131
|
+
readyAndClaim: (workerId, leaseDurationMinutes, options) => Effect.gen(function* () {
|
|
132
|
+
// Fetch a small batch of candidates to try claiming
|
|
133
|
+
const candidates = yield* getReadyImpl(5, options);
|
|
134
|
+
if (candidates.length === 0)
|
|
135
|
+
return null;
|
|
136
|
+
// Try to claim each candidate in priority order
|
|
137
|
+
for (const task of candidates) {
|
|
138
|
+
const claimResult = yield* claimService.claim(task.id, workerId, leaseDurationMinutes).pipe(Effect.map((claim) => ({ task, claim })), Effect.catchTag("AlreadyClaimedError", () => Effect.succeed(null)), Effect.catchTag("TaskNotFoundError", () => Effect.succeed(null)));
|
|
139
|
+
if (claimResult !== null)
|
|
140
|
+
return claimResult;
|
|
141
|
+
}
|
|
142
|
+
return null;
|
|
127
143
|
})
|
|
128
144
|
};
|
|
129
145
|
}));
|