-
-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathDecisionProjection.ts
More file actions
56 lines (54 loc) · 2.33 KB
/
DecisionProjection.ts
File metadata and controls
56 lines (54 loc) · 2.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import type {
DecisionCase,
DecisionConfidenceAnalysis,
DecisionConsultation,
DecisionConsultationQuestion,
DecisionConsultationStatus,
DecisionConsultationTarget,
} from "@okcode/contracts";
import { ServiceMap } from "effect";
import type { Effect } from "effect";
import type { DecisionWorkspaceServiceError } from "../Errors.ts";
export interface DecisionProjectionShape {
readonly upsertCase: (input: DecisionCase) => Effect.Effect<void, DecisionWorkspaceServiceError>;
readonly getCase: (input: {
readonly caseId: string;
}) => Effect.Effect<DecisionCase | null, DecisionWorkspaceServiceError>;
readonly listCasesByCwd: (input: {
readonly cwd: string;
}) => Effect.Effect<ReadonlyArray<DecisionCase>, DecisionWorkspaceServiceError>;
readonly upsertConsultation: (input: {
readonly consultation: DecisionConsultation;
readonly questions: ReadonlyArray<DecisionConsultationQuestion>;
}) => Effect.Effect<void, DecisionWorkspaceServiceError>;
readonly getConsultation: (input: {
readonly consultationId: string;
}) => Effect.Effect<
{ consultation: DecisionConsultation; questions: ReadonlyArray<DecisionConsultationQuestion> } | null,
DecisionWorkspaceServiceError
>;
readonly listConsultationsByCaseId: (input: {
readonly caseId: string;
}) => Effect.Effect<ReadonlyArray<DecisionConsultation>, DecisionWorkspaceServiceError>;
readonly appendScoreSnapshot: (input: {
readonly caseId: string;
readonly analysis: DecisionConfidenceAnalysis;
}) => Effect.Effect<void, DecisionWorkspaceServiceError>;
readonly listScoreSnapshots: (input: {
readonly caseId: string;
}) => Effect.Effect<ReadonlyArray<DecisionConfidenceAnalysis>, DecisionWorkspaceServiceError>;
readonly createConsultation: (input: {
readonly caseId: string;
readonly target: DecisionConsultationTarget;
readonly status: DecisionConsultationStatus;
readonly reason: string;
readonly questions: ReadonlyArray<DecisionConsultationQuestion>;
readonly linkedThreadId: string | null;
readonly responseSummary?: string | null;
readonly resolvedAt?: string | null;
}) => Effect.Effect<DecisionConsultation, DecisionWorkspaceServiceError>;
}
export class DecisionProjection extends ServiceMap.Service<
DecisionProjection,
DecisionProjectionShape
>()("okcode/decision/Services/DecisionProjection") {}