@indexnetwork/protocol 1.6.0-rc.145.1 → 1.7.0-rc.147.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +13 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/mcp/mcp.server.d.ts +13 -0
- package/dist/mcp/mcp.server.d.ts.map +1 -1
- package/dist/mcp/mcp.server.js +63 -0
- package/dist/mcp/mcp.server.js.map +1 -1
- package/dist/opportunity/opportunity.evaluator.d.ts +12 -12
- package/dist/opportunity/opportunity.graph.d.ts +1 -1
- package/dist/premise/premise.analyzer.d.ts +34 -0
- package/dist/premise/premise.analyzer.d.ts.map +1 -0
- package/dist/premise/premise.analyzer.js +116 -0
- package/dist/premise/premise.analyzer.js.map +1 -0
- package/dist/premise/premise.graph.d.ts +197 -0
- package/dist/premise/premise.graph.d.ts.map +1 -0
- package/dist/premise/premise.graph.js +181 -0
- package/dist/premise/premise.graph.js.map +1 -0
- package/dist/premise/premise.indexer.d.ts +36 -0
- package/dist/premise/premise.indexer.d.ts.map +1 -0
- package/dist/premise/premise.indexer.js +87 -0
- package/dist/premise/premise.indexer.js.map +1 -0
- package/dist/premise/premise.state.d.ts +45 -0
- package/dist/premise/premise.state.d.ts.map +1 -0
- package/dist/premise/premise.state.js +61 -0
- package/dist/premise/premise.state.js.map +1 -0
- package/dist/questioner/questioner.agent.d.ts +29 -0
- package/dist/questioner/questioner.agent.d.ts.map +1 -0
- package/dist/questioner/questioner.agent.js +120 -0
- package/dist/questioner/questioner.agent.js.map +1 -0
- package/dist/questioner/questioner.presets.d.ts +21 -0
- package/dist/questioner/questioner.presets.d.ts.map +1 -0
- package/dist/questioner/questioner.presets.js +21 -0
- package/dist/questioner/questioner.presets.js.map +1 -0
- package/dist/questioner/questioner.types.d.ts +67 -0
- package/dist/questioner/questioner.types.d.ts.map +1 -0
- package/dist/questioner/questioner.types.js +2 -0
- package/dist/questioner/questioner.types.js.map +1 -0
- package/dist/shared/agent/model.config.d.ts +11 -0
- package/dist/shared/agent/model.config.d.ts.map +1 -1
- package/dist/shared/agent/model.config.js +3 -0
- package/dist/shared/agent/model.config.js.map +1 -1
- package/dist/shared/interfaces/database.interface.d.ts +66 -0
- package/dist/shared/interfaces/database.interface.d.ts.map +1 -1
- package/dist/shared/interfaces/questioner.interface.d.ts +40 -0
- package/dist/shared/interfaces/questioner.interface.d.ts.map +1 -0
- package/dist/shared/interfaces/questioner.interface.js +2 -0
- package/dist/shared/interfaces/questioner.interface.js.map +1 -0
- package/dist/shared/schemas/question.schema.d.ts +65 -0
- package/dist/shared/schemas/question.schema.d.ts.map +1 -1
- package/dist/shared/schemas/question.schema.js +37 -0
- package/dist/shared/schemas/question.schema.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import type { PremiseGraphDatabase, PremiseAnalysis } from "../shared/interfaces/database.interface.js";
|
|
2
|
+
import type { Embedder } from "../shared/interfaces/embedder.interface.js";
|
|
3
|
+
import type { DebugMetaAgent } from "../chat/chat-streaming.types.js";
|
|
4
|
+
/**
|
|
5
|
+
* Graph factory for premise lifecycle: create, update, and query modes.
|
|
6
|
+
*/
|
|
7
|
+
export declare class PremiseGraphFactory {
|
|
8
|
+
private database;
|
|
9
|
+
private embedder;
|
|
10
|
+
constructor(database: PremiseGraphDatabase, embedder: Embedder);
|
|
11
|
+
/**
|
|
12
|
+
* Compiles and returns the premise lifecycle graph.
|
|
13
|
+
*
|
|
14
|
+
* @returns A compiled LangGraph graph handling create, update, and query modes.
|
|
15
|
+
*/
|
|
16
|
+
createGraph(): import("@langchain/langgraph").CompiledStateGraph<{
|
|
17
|
+
userId: string;
|
|
18
|
+
assertionText: string | undefined;
|
|
19
|
+
tier: "assertive" | "contextual";
|
|
20
|
+
validFrom: string | undefined;
|
|
21
|
+
validUntil: string | undefined;
|
|
22
|
+
volatile: boolean;
|
|
23
|
+
operationMode: "query" | "update" | "create";
|
|
24
|
+
targetPremiseId: string | undefined;
|
|
25
|
+
analysis: PremiseAnalysis | undefined;
|
|
26
|
+
embedding: number[] | undefined;
|
|
27
|
+
premise: import("../shared/interfaces/database.interface.js").PremiseRecord | undefined;
|
|
28
|
+
networkAssignments: {
|
|
29
|
+
networkId: string;
|
|
30
|
+
relevancyScore: number;
|
|
31
|
+
}[];
|
|
32
|
+
error: string | undefined;
|
|
33
|
+
readResult: {
|
|
34
|
+
premises: import("../shared/interfaces/database.interface.js").PremiseRecord[];
|
|
35
|
+
count: number;
|
|
36
|
+
message?: string;
|
|
37
|
+
} | undefined;
|
|
38
|
+
agentTimings: DebugMetaAgent[];
|
|
39
|
+
}, {
|
|
40
|
+
userId?: string | undefined;
|
|
41
|
+
assertionText?: string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined;
|
|
42
|
+
tier?: "assertive" | "contextual" | import("@langchain/langgraph").OverwriteValue<"assertive" | "contextual"> | undefined;
|
|
43
|
+
validFrom?: string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined;
|
|
44
|
+
validUntil?: string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined;
|
|
45
|
+
volatile?: boolean | import("@langchain/langgraph").OverwriteValue<boolean> | undefined;
|
|
46
|
+
operationMode?: "query" | "update" | "create" | import("@langchain/langgraph").OverwriteValue<"query" | "update" | "create"> | undefined;
|
|
47
|
+
targetPremiseId?: string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined;
|
|
48
|
+
analysis?: PremiseAnalysis | import("@langchain/langgraph").OverwriteValue<PremiseAnalysis | undefined> | undefined;
|
|
49
|
+
embedding?: number[] | import("@langchain/langgraph").OverwriteValue<number[] | undefined> | undefined;
|
|
50
|
+
premise?: import("../shared/interfaces/database.interface.js").PremiseRecord | import("@langchain/langgraph").OverwriteValue<import("../shared/interfaces/database.interface.js").PremiseRecord | undefined> | undefined;
|
|
51
|
+
networkAssignments?: {
|
|
52
|
+
networkId: string;
|
|
53
|
+
relevancyScore: number;
|
|
54
|
+
}[] | import("@langchain/langgraph").OverwriteValue<{
|
|
55
|
+
networkId: string;
|
|
56
|
+
relevancyScore: number;
|
|
57
|
+
}[]> | undefined;
|
|
58
|
+
error?: string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined;
|
|
59
|
+
readResult?: {
|
|
60
|
+
premises: import("../shared/interfaces/database.interface.js").PremiseRecord[];
|
|
61
|
+
count: number;
|
|
62
|
+
message?: string;
|
|
63
|
+
} | import("@langchain/langgraph").OverwriteValue<{
|
|
64
|
+
premises: import("../shared/interfaces/database.interface.js").PremiseRecord[];
|
|
65
|
+
count: number;
|
|
66
|
+
message?: string;
|
|
67
|
+
} | undefined> | undefined;
|
|
68
|
+
agentTimings?: DebugMetaAgent[] | import("@langchain/langgraph").OverwriteValue<DebugMetaAgent[]> | undefined;
|
|
69
|
+
}, "query" | "__start__" | "persist" | "index" | "embed" | "analyze", {
|
|
70
|
+
userId: {
|
|
71
|
+
(annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BaseChannel<string, string | import("@langchain/langgraph").OverwriteValue<string>, unknown>;
|
|
72
|
+
(): import("@langchain/langgraph").LastValue<string>;
|
|
73
|
+
Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
|
|
74
|
+
};
|
|
75
|
+
assertionText: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
|
|
76
|
+
tier: import("@langchain/langgraph").BaseChannel<"assertive" | "contextual", "assertive" | "contextual" | import("@langchain/langgraph").OverwriteValue<"assertive" | "contextual">, unknown>;
|
|
77
|
+
validFrom: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
|
|
78
|
+
validUntil: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
|
|
79
|
+
volatile: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
|
|
80
|
+
operationMode: import("@langchain/langgraph").BaseChannel<"query" | "update" | "create", "query" | "update" | "create" | import("@langchain/langgraph").OverwriteValue<"query" | "update" | "create">, unknown>;
|
|
81
|
+
targetPremiseId: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
|
|
82
|
+
analysis: import("@langchain/langgraph").BaseChannel<PremiseAnalysis | undefined, PremiseAnalysis | import("@langchain/langgraph").OverwriteValue<PremiseAnalysis | undefined> | undefined, unknown>;
|
|
83
|
+
embedding: import("@langchain/langgraph").BaseChannel<number[] | undefined, number[] | import("@langchain/langgraph").OverwriteValue<number[] | undefined> | undefined, unknown>;
|
|
84
|
+
premise: import("@langchain/langgraph").BaseChannel<import("../shared/interfaces/database.interface.js").PremiseRecord | undefined, import("../shared/interfaces/database.interface.js").PremiseRecord | import("@langchain/langgraph").OverwriteValue<import("../shared/interfaces/database.interface.js").PremiseRecord | undefined> | undefined, unknown>;
|
|
85
|
+
networkAssignments: import("@langchain/langgraph").BaseChannel<{
|
|
86
|
+
networkId: string;
|
|
87
|
+
relevancyScore: number;
|
|
88
|
+
}[], {
|
|
89
|
+
networkId: string;
|
|
90
|
+
relevancyScore: number;
|
|
91
|
+
}[] | import("@langchain/langgraph").OverwriteValue<{
|
|
92
|
+
networkId: string;
|
|
93
|
+
relevancyScore: number;
|
|
94
|
+
}[]>, unknown>;
|
|
95
|
+
error: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
|
|
96
|
+
readResult: import("@langchain/langgraph").BaseChannel<{
|
|
97
|
+
premises: import("../shared/interfaces/database.interface.js").PremiseRecord[];
|
|
98
|
+
count: number;
|
|
99
|
+
message?: string;
|
|
100
|
+
} | undefined, {
|
|
101
|
+
premises: import("../shared/interfaces/database.interface.js").PremiseRecord[];
|
|
102
|
+
count: number;
|
|
103
|
+
message?: string;
|
|
104
|
+
} | import("@langchain/langgraph").OverwriteValue<{
|
|
105
|
+
premises: import("../shared/interfaces/database.interface.js").PremiseRecord[];
|
|
106
|
+
count: number;
|
|
107
|
+
message?: string;
|
|
108
|
+
} | undefined> | undefined, unknown>;
|
|
109
|
+
agentTimings: import("@langchain/langgraph").BaseChannel<DebugMetaAgent[], DebugMetaAgent[] | import("@langchain/langgraph").OverwriteValue<DebugMetaAgent[]>, unknown>;
|
|
110
|
+
}, {
|
|
111
|
+
userId: {
|
|
112
|
+
(annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BaseChannel<string, string | import("@langchain/langgraph").OverwriteValue<string>, unknown>;
|
|
113
|
+
(): import("@langchain/langgraph").LastValue<string>;
|
|
114
|
+
Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
|
|
115
|
+
};
|
|
116
|
+
assertionText: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
|
|
117
|
+
tier: import("@langchain/langgraph").BaseChannel<"assertive" | "contextual", "assertive" | "contextual" | import("@langchain/langgraph").OverwriteValue<"assertive" | "contextual">, unknown>;
|
|
118
|
+
validFrom: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
|
|
119
|
+
validUntil: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
|
|
120
|
+
volatile: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
|
|
121
|
+
operationMode: import("@langchain/langgraph").BaseChannel<"query" | "update" | "create", "query" | "update" | "create" | import("@langchain/langgraph").OverwriteValue<"query" | "update" | "create">, unknown>;
|
|
122
|
+
targetPremiseId: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
|
|
123
|
+
analysis: import("@langchain/langgraph").BaseChannel<PremiseAnalysis | undefined, PremiseAnalysis | import("@langchain/langgraph").OverwriteValue<PremiseAnalysis | undefined> | undefined, unknown>;
|
|
124
|
+
embedding: import("@langchain/langgraph").BaseChannel<number[] | undefined, number[] | import("@langchain/langgraph").OverwriteValue<number[] | undefined> | undefined, unknown>;
|
|
125
|
+
premise: import("@langchain/langgraph").BaseChannel<import("../shared/interfaces/database.interface.js").PremiseRecord | undefined, import("../shared/interfaces/database.interface.js").PremiseRecord | import("@langchain/langgraph").OverwriteValue<import("../shared/interfaces/database.interface.js").PremiseRecord | undefined> | undefined, unknown>;
|
|
126
|
+
networkAssignments: import("@langchain/langgraph").BaseChannel<{
|
|
127
|
+
networkId: string;
|
|
128
|
+
relevancyScore: number;
|
|
129
|
+
}[], {
|
|
130
|
+
networkId: string;
|
|
131
|
+
relevancyScore: number;
|
|
132
|
+
}[] | import("@langchain/langgraph").OverwriteValue<{
|
|
133
|
+
networkId: string;
|
|
134
|
+
relevancyScore: number;
|
|
135
|
+
}[]>, unknown>;
|
|
136
|
+
error: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
|
|
137
|
+
readResult: import("@langchain/langgraph").BaseChannel<{
|
|
138
|
+
premises: import("../shared/interfaces/database.interface.js").PremiseRecord[];
|
|
139
|
+
count: number;
|
|
140
|
+
message?: string;
|
|
141
|
+
} | undefined, {
|
|
142
|
+
premises: import("../shared/interfaces/database.interface.js").PremiseRecord[];
|
|
143
|
+
count: number;
|
|
144
|
+
message?: string;
|
|
145
|
+
} | import("@langchain/langgraph").OverwriteValue<{
|
|
146
|
+
premises: import("../shared/interfaces/database.interface.js").PremiseRecord[];
|
|
147
|
+
count: number;
|
|
148
|
+
message?: string;
|
|
149
|
+
} | undefined> | undefined, unknown>;
|
|
150
|
+
agentTimings: import("@langchain/langgraph").BaseChannel<DebugMetaAgent[], DebugMetaAgent[] | import("@langchain/langgraph").OverwriteValue<DebugMetaAgent[]>, unknown>;
|
|
151
|
+
}, import("@langchain/langgraph").StateDefinition, {
|
|
152
|
+
query: {
|
|
153
|
+
readResult: {
|
|
154
|
+
premises: import("../shared/interfaces/database.interface.js").PremiseRecord[];
|
|
155
|
+
count: number;
|
|
156
|
+
};
|
|
157
|
+
};
|
|
158
|
+
analyze: {
|
|
159
|
+
error: string;
|
|
160
|
+
analysis?: undefined;
|
|
161
|
+
agentTimings?: undefined;
|
|
162
|
+
} | {
|
|
163
|
+
analysis: PremiseAnalysis;
|
|
164
|
+
agentTimings: DebugMetaAgent[];
|
|
165
|
+
error?: undefined;
|
|
166
|
+
};
|
|
167
|
+
embed: {
|
|
168
|
+
error?: undefined;
|
|
169
|
+
embedding?: undefined;
|
|
170
|
+
} | {
|
|
171
|
+
error: string;
|
|
172
|
+
embedding?: undefined;
|
|
173
|
+
} | {
|
|
174
|
+
embedding: number[];
|
|
175
|
+
error?: undefined;
|
|
176
|
+
};
|
|
177
|
+
persist: {
|
|
178
|
+
error?: undefined;
|
|
179
|
+
premise?: undefined;
|
|
180
|
+
} | {
|
|
181
|
+
error: string;
|
|
182
|
+
premise?: undefined;
|
|
183
|
+
} | {
|
|
184
|
+
premise: import("../shared/interfaces/database.interface.js").PremiseRecord;
|
|
185
|
+
error?: undefined;
|
|
186
|
+
};
|
|
187
|
+
index: {
|
|
188
|
+
networkAssignments?: undefined;
|
|
189
|
+
} | {
|
|
190
|
+
networkAssignments: {
|
|
191
|
+
networkId: string;
|
|
192
|
+
relevancyScore: number;
|
|
193
|
+
}[];
|
|
194
|
+
};
|
|
195
|
+
}, unknown, unknown, []>;
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=premise.graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"premise.graph.d.ts","sourceRoot":"","sources":["../../src/premise/premise.graph.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AACxG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4CAA4C,CAAC;AAG3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAItE;;GAEG;AACH,qBAAa,mBAAmB;IAE5B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,QAAQ;gBADR,QAAQ,EAAE,oBAAoB,EAC9B,QAAQ,EAAE,QAAQ;IAG5B;;;;OAIG;IACI,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAuH0B,MAAM;gCAAkB,MAAM;;;;CA6D3E"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { StateGraph, START, END } from "@langchain/langgraph";
|
|
2
|
+
import { PremiseGraphState } from "./premise.state.js";
|
|
3
|
+
import { PremiseAnalyzer } from "./premise.analyzer.js";
|
|
4
|
+
import { PremiseIndexer } from "./premise.indexer.js";
|
|
5
|
+
import { protocolLogger } from "../shared/observability/protocol.logger.js";
|
|
6
|
+
import { timed } from "../shared/observability/performance.js";
|
|
7
|
+
const logger = protocolLogger("PremiseGraphFactory");
|
|
8
|
+
/**
|
|
9
|
+
* Graph factory for premise lifecycle: create, update, and query modes.
|
|
10
|
+
*/
|
|
11
|
+
export class PremiseGraphFactory {
|
|
12
|
+
constructor(database, embedder) {
|
|
13
|
+
this.database = database;
|
|
14
|
+
this.embedder = embedder;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Compiles and returns the premise lifecycle graph.
|
|
18
|
+
*
|
|
19
|
+
* @returns A compiled LangGraph graph handling create, update, and query modes.
|
|
20
|
+
*/
|
|
21
|
+
createGraph() {
|
|
22
|
+
const analyzer = new PremiseAnalyzer();
|
|
23
|
+
const indexer = new PremiseIndexer();
|
|
24
|
+
const queryNode = async (state) => {
|
|
25
|
+
return timed("PremiseGraph.query", async () => {
|
|
26
|
+
logger.verbose(`[PremiseGraph.query] Fetching premises for user ${state.userId}`);
|
|
27
|
+
const premises = await this.database.getPremisesForUser(state.userId, 'ACTIVE');
|
|
28
|
+
return {
|
|
29
|
+
readResult: {
|
|
30
|
+
premises,
|
|
31
|
+
count: premises.length,
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
const analyzeNode = async (state) => {
|
|
37
|
+
return timed("PremiseGraph.analyze", async () => {
|
|
38
|
+
if (!state.assertionText) {
|
|
39
|
+
return { error: "assertionText is required for create/update mode" };
|
|
40
|
+
}
|
|
41
|
+
logger.verbose(`[PremiseGraph.analyze] Analyzing: "${state.assertionText.substring(0, 50)}..."`);
|
|
42
|
+
const start = Date.now();
|
|
43
|
+
const result = await analyzer.invoke(state.assertionText);
|
|
44
|
+
const timing = {
|
|
45
|
+
name: "premise-analyzer",
|
|
46
|
+
durationMs: Date.now() - start,
|
|
47
|
+
};
|
|
48
|
+
const analysis = {
|
|
49
|
+
speechActType: result.speechActType,
|
|
50
|
+
felicityAuthority: result.felicityAuthority,
|
|
51
|
+
felicitySincerity: result.felicitySincerity,
|
|
52
|
+
felicityClarity: result.felicityClarity,
|
|
53
|
+
semanticEntropy: result.semanticEntropy,
|
|
54
|
+
};
|
|
55
|
+
return { analysis, agentTimings: [timing] };
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
const embedNode = async (state) => {
|
|
59
|
+
return timed("PremiseGraph.embed", async () => {
|
|
60
|
+
if (state.error)
|
|
61
|
+
return {};
|
|
62
|
+
if (!state.assertionText) {
|
|
63
|
+
return { error: "assertionText is required for embedding" };
|
|
64
|
+
}
|
|
65
|
+
logger.verbose(`[PremiseGraph.embed] Generating embedding for premise`);
|
|
66
|
+
// Embedder.generate returns number[] | number[][], cast for single string input
|
|
67
|
+
const embedding = await this.embedder.generate(state.assertionText);
|
|
68
|
+
return { embedding };
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
const persistNode = async (state) => {
|
|
72
|
+
return timed("PremiseGraph.persist", async () => {
|
|
73
|
+
if (state.error)
|
|
74
|
+
return {};
|
|
75
|
+
if (state.operationMode === 'update' && !state.targetPremiseId) {
|
|
76
|
+
return { error: "targetPremiseId is required for update mode" };
|
|
77
|
+
}
|
|
78
|
+
if (state.operationMode === 'update' && state.targetPremiseId) {
|
|
79
|
+
logger.verbose(`[PremiseGraph.persist] Updating premise ${state.targetPremiseId}`);
|
|
80
|
+
const updated = await this.database.updatePremise(state.targetPremiseId, {
|
|
81
|
+
assertion: {
|
|
82
|
+
text: state.assertionText,
|
|
83
|
+
tier: state.tier,
|
|
84
|
+
},
|
|
85
|
+
analysis: state.analysis ?? undefined,
|
|
86
|
+
validity: {
|
|
87
|
+
validFrom: state.validFrom,
|
|
88
|
+
validUntil: state.validUntil,
|
|
89
|
+
volatile: state.volatile,
|
|
90
|
+
},
|
|
91
|
+
embedding: state.embedding,
|
|
92
|
+
});
|
|
93
|
+
return { premise: updated };
|
|
94
|
+
}
|
|
95
|
+
logger.verbose(`[PremiseGraph.persist] Creating new premise for user ${state.userId}`);
|
|
96
|
+
const premise = await this.database.createPremise({
|
|
97
|
+
userId: state.userId,
|
|
98
|
+
assertion: {
|
|
99
|
+
text: state.assertionText,
|
|
100
|
+
tier: state.tier,
|
|
101
|
+
},
|
|
102
|
+
provenance: {
|
|
103
|
+
source: 'explicit',
|
|
104
|
+
confidence: 1.0,
|
|
105
|
+
timestamp: new Date().toISOString(),
|
|
106
|
+
},
|
|
107
|
+
analysis: state.analysis ?? undefined,
|
|
108
|
+
validity: {
|
|
109
|
+
validFrom: state.validFrom,
|
|
110
|
+
validUntil: state.validUntil,
|
|
111
|
+
volatile: state.volatile,
|
|
112
|
+
},
|
|
113
|
+
embedding: state.embedding,
|
|
114
|
+
});
|
|
115
|
+
return { premise };
|
|
116
|
+
});
|
|
117
|
+
};
|
|
118
|
+
const indexNode = async (state) => {
|
|
119
|
+
return timed("PremiseGraph.index", async () => {
|
|
120
|
+
if (!state.premise)
|
|
121
|
+
return {};
|
|
122
|
+
logger.verbose(`[PremiseGraph.index] Scoring premise against user networks`);
|
|
123
|
+
const indexIds = await this.database.getUserIndexIds(state.userId);
|
|
124
|
+
const assignments = [];
|
|
125
|
+
for (const networkId of indexIds) {
|
|
126
|
+
try {
|
|
127
|
+
const network = await this.database.getNetwork(networkId);
|
|
128
|
+
if (!network || !network.prompt)
|
|
129
|
+
continue;
|
|
130
|
+
const memberContext = await this.database.getNetworkMemberContext(networkId, state.userId);
|
|
131
|
+
const start = Date.now();
|
|
132
|
+
const result = await indexer.invoke({
|
|
133
|
+
premiseText: state.assertionText,
|
|
134
|
+
indexPrompt: network.prompt,
|
|
135
|
+
memberPrompt: memberContext?.memberPrompt ?? undefined,
|
|
136
|
+
});
|
|
137
|
+
const timing = {
|
|
138
|
+
name: "premise-indexer",
|
|
139
|
+
durationMs: Date.now() - start,
|
|
140
|
+
};
|
|
141
|
+
const score = Math.max(result.indexScore, result.memberScore);
|
|
142
|
+
if (score >= 0.5) {
|
|
143
|
+
await this.database.assignPremiseToNetwork(state.premise.id, networkId, score);
|
|
144
|
+
assignments.push({ networkId, relevancyScore: score });
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
catch (err) {
|
|
148
|
+
logger.verbose(`[PremiseGraph.index] Failed to score network ${networkId}, skipping: ${err}`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
logger.verbose(`[PremiseGraph.index] Assigned to ${assignments.length} networks`);
|
|
152
|
+
return { networkAssignments: assignments };
|
|
153
|
+
});
|
|
154
|
+
};
|
|
155
|
+
const routeByMode = (state) => {
|
|
156
|
+
if (state.error)
|
|
157
|
+
return "end";
|
|
158
|
+
if (state.operationMode === 'query')
|
|
159
|
+
return "query";
|
|
160
|
+
return "analyze";
|
|
161
|
+
};
|
|
162
|
+
const graph = new StateGraph(PremiseGraphState)
|
|
163
|
+
.addNode("query", queryNode)
|
|
164
|
+
.addNode("analyze", analyzeNode)
|
|
165
|
+
.addNode("embed", embedNode)
|
|
166
|
+
.addNode("persist", persistNode)
|
|
167
|
+
.addNode("index", indexNode)
|
|
168
|
+
.addConditionalEdges(START, routeByMode, {
|
|
169
|
+
query: "query",
|
|
170
|
+
analyze: "analyze",
|
|
171
|
+
end: END,
|
|
172
|
+
})
|
|
173
|
+
.addEdge("query", END)
|
|
174
|
+
.addEdge("analyze", "embed")
|
|
175
|
+
.addEdge("embed", "persist")
|
|
176
|
+
.addEdge("persist", "index")
|
|
177
|
+
.addEdge("index", END);
|
|
178
|
+
return graph.compile();
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=premise.graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"premise.graph.js","sourceRoot":"","sources":["../../src/premise/premise.graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
declare const responseFormat: z.ZodObject<{
|
|
3
|
+
indexScore: z.ZodNumber;
|
|
4
|
+
memberScore: z.ZodNumber;
|
|
5
|
+
reasoning: z.ZodString;
|
|
6
|
+
}, "strip", z.ZodTypeAny, {
|
|
7
|
+
reasoning: string;
|
|
8
|
+
indexScore: number;
|
|
9
|
+
memberScore: number;
|
|
10
|
+
}, {
|
|
11
|
+
reasoning: string;
|
|
12
|
+
indexScore: number;
|
|
13
|
+
memberScore: number;
|
|
14
|
+
}>;
|
|
15
|
+
export type PremiseIndexerOutput = z.infer<typeof responseFormat>;
|
|
16
|
+
/**
|
|
17
|
+
* Scores a premise's relevancy to a network based on the index and member prompts.
|
|
18
|
+
*/
|
|
19
|
+
export declare class PremiseIndexer {
|
|
20
|
+
private model;
|
|
21
|
+
constructor();
|
|
22
|
+
/**
|
|
23
|
+
* Scores the relevancy of a premise to a network index and member preferences.
|
|
24
|
+
*
|
|
25
|
+
* @param input - The premise text, index prompt, member prompt, and optional network context.
|
|
26
|
+
* @returns Structured output with indexScore, memberScore, and reasoning.
|
|
27
|
+
*/
|
|
28
|
+
invoke(input: {
|
|
29
|
+
premiseText: string;
|
|
30
|
+
indexPrompt: string;
|
|
31
|
+
memberPrompt?: string;
|
|
32
|
+
networkContext?: string;
|
|
33
|
+
}): Promise<PremiseIndexerOutput>;
|
|
34
|
+
}
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=premise.indexer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"premise.indexer.d.ts","sourceRoot":"","sources":["../../src/premise/premise.indexer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiCxB,QAAA,MAAM,cAAc;;;;;;;;;;;;EAIlB,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAElE;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAgD;;IAQ7D;;;;;OAKG;IAEU,MAAM,CAAC,KAAK,EAAE;QACzB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAuBlC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { HumanMessage, SystemMessage } from "@langchain/core/messages";
|
|
11
|
+
import { z } from "zod";
|
|
12
|
+
import { protocolLogger } from "../shared/observability/protocol.logger.js";
|
|
13
|
+
import { Timed } from "../shared/observability/performance.js";
|
|
14
|
+
import { createModel } from "../shared/agent/model.config.js";
|
|
15
|
+
const logger = protocolLogger("PremiseIndexer");
|
|
16
|
+
const model = createModel("premiseIndexer");
|
|
17
|
+
const systemPrompt = `
|
|
18
|
+
You are a Premise Evaluator for a social networking protocol.
|
|
19
|
+
|
|
20
|
+
TASK:
|
|
21
|
+
Determine if a User Premise (a self-descriptive proposition about who someone is) is relevant to a specific Index (community).
|
|
22
|
+
|
|
23
|
+
INPUTS:
|
|
24
|
+
1. Premise: A self-description the user asserts about themselves.
|
|
25
|
+
2. Index Prompt: The purpose/scope of the target community (Index).
|
|
26
|
+
3. Member Prompt: The specific sharing preferences of the user in that community (optional).
|
|
27
|
+
|
|
28
|
+
SCORING RUBRIC:
|
|
29
|
+
- 0.9-1.0: Highly relevant. The premise directly relates to the community's purpose.
|
|
30
|
+
- 0.7-0.8: Good relevance. The premise is clearly adjacent to the community's focus.
|
|
31
|
+
- 0.5-0.6: Moderate. Borderline relevance.
|
|
32
|
+
- 0.3-0.4: Low relevance. Weak connection.
|
|
33
|
+
- 0.0-0.2: Not relevant. The premise has no connection to this community.
|
|
34
|
+
|
|
35
|
+
OUTPUT RULES:
|
|
36
|
+
- Provide indexScore based on how well the Premise fits the Index Prompt.
|
|
37
|
+
- Provide memberScore based on how well the Premise fits the Member Prompt (if provided). If Member Prompt is missing/empty, return 0.0.
|
|
38
|
+
- Provide concise reasoning.
|
|
39
|
+
`;
|
|
40
|
+
const responseFormat = z.object({
|
|
41
|
+
indexScore: z.number().min(0).max(1).describe("Score for index relevance (0.0-1.0)"),
|
|
42
|
+
memberScore: z.number().min(0).max(1).describe("Score for member preference match (0.0-1.0)"),
|
|
43
|
+
reasoning: z.string().describe("Brief reasoning for the scores"),
|
|
44
|
+
});
|
|
45
|
+
/**
|
|
46
|
+
* Scores a premise's relevancy to a network based on the index and member prompts.
|
|
47
|
+
*/
|
|
48
|
+
export class PremiseIndexer {
|
|
49
|
+
constructor() {
|
|
50
|
+
this.model = model.withStructuredOutput(responseFormat, {
|
|
51
|
+
name: "premise_indexer"
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Scores the relevancy of a premise to a network index and member preferences.
|
|
56
|
+
*
|
|
57
|
+
* @param input - The premise text, index prompt, member prompt, and optional network context.
|
|
58
|
+
* @returns Structured output with indexScore, memberScore, and reasoning.
|
|
59
|
+
*/
|
|
60
|
+
async invoke(input) {
|
|
61
|
+
logger.verbose(`[PremiseIndexer.invoke] Scoring premise against index`);
|
|
62
|
+
const prompt = [
|
|
63
|
+
"# Premise",
|
|
64
|
+
input.premiseText,
|
|
65
|
+
"",
|
|
66
|
+
"# Index Prompt",
|
|
67
|
+
input.indexPrompt || "(No index prompt provided)",
|
|
68
|
+
"",
|
|
69
|
+
"# Member Prompt",
|
|
70
|
+
input.memberPrompt || "(No member prompt provided)",
|
|
71
|
+
...(input.networkContext ? ["", "# Network Context", input.networkContext] : []),
|
|
72
|
+
].join("\n");
|
|
73
|
+
const messages = [
|
|
74
|
+
new SystemMessage(systemPrompt),
|
|
75
|
+
new HumanMessage(prompt),
|
|
76
|
+
];
|
|
77
|
+
const result = await this.model.invoke(messages);
|
|
78
|
+
return responseFormat.parse(result);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
__decorate([
|
|
82
|
+
Timed(),
|
|
83
|
+
__metadata("design:type", Function),
|
|
84
|
+
__metadata("design:paramtypes", [Object]),
|
|
85
|
+
__metadata("design:returntype", Promise)
|
|
86
|
+
], PremiseIndexer.prototype, "invoke", null);
|
|
87
|
+
//# sourceMappingURL=premise.indexer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"premise.indexer.js","sourceRoot":"","sources":["../../src/premise/premise.indexer.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAE,MAAM,wCAAwC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,MAAM,MAAM,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;AAEhD,MAAM,KAAK,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAC;AAE5C,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsBpB,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC;IACpF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,6CAA6C,CAAC;IAC7F,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;CACjE,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,OAAO,cAAc;IAGzB;QACE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,oBAAoB,CAAC,cAAc,EAAE;YACtD,IAAI,EAAE,iBAAiB;SACxB,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IAEU,AAAN,KAAK,CAAC,MAAM,CAAC,KAKnB;QACC,MAAM,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC;QAExE,MAAM,MAAM,GAAG;YACb,WAAW;YACX,KAAK,CAAC,WAAW;YACjB,EAAE;YACF,gBAAgB;YAChB,KAAK,CAAC,WAAW,IAAI,4BAA4B;YACjD,EAAE;YACF,iBAAiB;YACjB,KAAK,CAAC,YAAY,IAAI,6BAA6B;YACnD,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,mBAAmB,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACjF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,QAAQ,GAAG;YACf,IAAI,aAAa,CAAC,YAAY,CAAC;YAC/B,IAAI,YAAY,CAAC,MAAM,CAAC;SACzB,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjD,OAAO,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;CACF;AA5Bc;IADZ,KAAK,EAAE;;;;4CA4BP"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { PremiseAnalysis, PremiseRecord } from "../shared/interfaces/database.interface.js";
|
|
2
|
+
import type { DebugMetaAgent } from '../chat/chat-streaming.types.js';
|
|
3
|
+
export declare const PremiseGraphState: import("@langchain/langgraph").AnnotationRoot<{
|
|
4
|
+
userId: {
|
|
5
|
+
(annotation: import("@langchain/langgraph").SingleReducer<string, string>): import("@langchain/langgraph").BaseChannel<string, string | import("@langchain/langgraph").OverwriteValue<string>, unknown>;
|
|
6
|
+
(): import("@langchain/langgraph").LastValue<string>;
|
|
7
|
+
Root: <S extends import("@langchain/langgraph").StateDefinition>(sd: S) => import("@langchain/langgraph").AnnotationRoot<S>;
|
|
8
|
+
};
|
|
9
|
+
assertionText: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
|
|
10
|
+
tier: import("@langchain/langgraph").BaseChannel<"assertive" | "contextual", "assertive" | "contextual" | import("@langchain/langgraph").OverwriteValue<"assertive" | "contextual">, unknown>;
|
|
11
|
+
validFrom: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
|
|
12
|
+
validUntil: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
|
|
13
|
+
volatile: import("@langchain/langgraph").BaseChannel<boolean, boolean | import("@langchain/langgraph").OverwriteValue<boolean>, unknown>;
|
|
14
|
+
operationMode: import("@langchain/langgraph").BaseChannel<"query" | "update" | "create", "query" | "update" | "create" | import("@langchain/langgraph").OverwriteValue<"query" | "update" | "create">, unknown>;
|
|
15
|
+
targetPremiseId: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
|
|
16
|
+
analysis: import("@langchain/langgraph").BaseChannel<PremiseAnalysis | undefined, PremiseAnalysis | import("@langchain/langgraph").OverwriteValue<PremiseAnalysis | undefined> | undefined, unknown>;
|
|
17
|
+
embedding: import("@langchain/langgraph").BaseChannel<number[] | undefined, number[] | import("@langchain/langgraph").OverwriteValue<number[] | undefined> | undefined, unknown>;
|
|
18
|
+
premise: import("@langchain/langgraph").BaseChannel<PremiseRecord | undefined, PremiseRecord | import("@langchain/langgraph").OverwriteValue<PremiseRecord | undefined> | undefined, unknown>;
|
|
19
|
+
networkAssignments: import("@langchain/langgraph").BaseChannel<{
|
|
20
|
+
networkId: string;
|
|
21
|
+
relevancyScore: number;
|
|
22
|
+
}[], {
|
|
23
|
+
networkId: string;
|
|
24
|
+
relevancyScore: number;
|
|
25
|
+
}[] | import("@langchain/langgraph").OverwriteValue<{
|
|
26
|
+
networkId: string;
|
|
27
|
+
relevancyScore: number;
|
|
28
|
+
}[]>, unknown>;
|
|
29
|
+
error: import("@langchain/langgraph").BaseChannel<string | undefined, string | import("@langchain/langgraph").OverwriteValue<string | undefined> | undefined, unknown>;
|
|
30
|
+
readResult: import("@langchain/langgraph").BaseChannel<{
|
|
31
|
+
premises: PremiseRecord[];
|
|
32
|
+
count: number;
|
|
33
|
+
message?: string;
|
|
34
|
+
} | undefined, {
|
|
35
|
+
premises: PremiseRecord[];
|
|
36
|
+
count: number;
|
|
37
|
+
message?: string;
|
|
38
|
+
} | import("@langchain/langgraph").OverwriteValue<{
|
|
39
|
+
premises: PremiseRecord[];
|
|
40
|
+
count: number;
|
|
41
|
+
message?: string;
|
|
42
|
+
} | undefined> | undefined, unknown>;
|
|
43
|
+
agentTimings: import("@langchain/langgraph").BaseChannel<DebugMetaAgent[], DebugMetaAgent[] | import("@langchain/langgraph").OverwriteValue<DebugMetaAgent[]>, unknown>;
|
|
44
|
+
}>;
|
|
45
|
+
//# sourceMappingURL=premise.state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"premise.state.d.ts","sourceRoot":"","sources":["../../src/premise/premise.state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AACjG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;mBAqDsB,MAAM;wBAAkB,MAAM;;mBAA9B,MAAM;wBAAkB,MAAM;;mBAA9B,MAAM;wBAAkB,MAAM;;;;kBAWpE,aAAa,EAAE;eAClB,MAAM;kBACH,MAAM;;kBAFN,aAAa,EAAE;eAClB,MAAM;kBACH,MAAM;;kBAFN,aAAa,EAAE;eAClB,MAAM;kBACH,MAAM;;;EAUlB,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Annotation } from "@langchain/langgraph";
|
|
2
|
+
export const PremiseGraphState = Annotation.Root({
|
|
3
|
+
userId: (Annotation),
|
|
4
|
+
assertionText: Annotation({
|
|
5
|
+
reducer: (curr, next) => next ?? curr,
|
|
6
|
+
default: () => undefined,
|
|
7
|
+
}),
|
|
8
|
+
tier: Annotation({
|
|
9
|
+
reducer: (curr, next) => next ?? curr,
|
|
10
|
+
default: () => 'assertive',
|
|
11
|
+
}),
|
|
12
|
+
validFrom: Annotation({
|
|
13
|
+
reducer: (curr, next) => next,
|
|
14
|
+
default: () => undefined,
|
|
15
|
+
}),
|
|
16
|
+
validUntil: Annotation({
|
|
17
|
+
reducer: (curr, next) => next,
|
|
18
|
+
default: () => undefined,
|
|
19
|
+
}),
|
|
20
|
+
volatile: Annotation({
|
|
21
|
+
reducer: (curr, next) => next ?? curr,
|
|
22
|
+
default: () => false,
|
|
23
|
+
}),
|
|
24
|
+
operationMode: Annotation({
|
|
25
|
+
reducer: (curr, next) => next ?? curr,
|
|
26
|
+
default: () => 'create',
|
|
27
|
+
}),
|
|
28
|
+
targetPremiseId: Annotation({
|
|
29
|
+
reducer: (curr, next) => next ?? curr,
|
|
30
|
+
default: () => undefined,
|
|
31
|
+
}),
|
|
32
|
+
analysis: Annotation({
|
|
33
|
+
reducer: (curr, next) => next,
|
|
34
|
+
default: () => undefined,
|
|
35
|
+
}),
|
|
36
|
+
embedding: Annotation({
|
|
37
|
+
reducer: (curr, next) => next,
|
|
38
|
+
default: () => undefined,
|
|
39
|
+
}),
|
|
40
|
+
premise: Annotation({
|
|
41
|
+
reducer: (curr, next) => next,
|
|
42
|
+
default: () => undefined,
|
|
43
|
+
}),
|
|
44
|
+
networkAssignments: Annotation({
|
|
45
|
+
reducer: (curr, next) => next,
|
|
46
|
+
default: () => [],
|
|
47
|
+
}),
|
|
48
|
+
error: Annotation({
|
|
49
|
+
reducer: (curr, next) => next ?? curr,
|
|
50
|
+
default: () => undefined,
|
|
51
|
+
}),
|
|
52
|
+
readResult: Annotation({
|
|
53
|
+
reducer: (curr, next) => next,
|
|
54
|
+
default: () => undefined,
|
|
55
|
+
}),
|
|
56
|
+
agentTimings: Annotation({
|
|
57
|
+
reducer: (acc, val) => [...acc, ...val],
|
|
58
|
+
default: () => [],
|
|
59
|
+
}),
|
|
60
|
+
});
|
|
61
|
+
//# sourceMappingURL=premise.state.js.map
|