@tashiscool/agents 0.1.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 +186 -0
- package/dist/conversation.d.ts +146 -0
- package/dist/conversation.d.ts.map +1 -0
- package/dist/conversation.js +239 -0
- package/dist/conversation.js.map +1 -0
- package/dist/events.d.ts +218 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +299 -0
- package/dist/events.js.map +1 -0
- package/dist/executor.d.ts +144 -0
- package/dist/executor.d.ts.map +1 -0
- package/dist/executor.js +362 -0
- package/dist/executor.js.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/langchain.d.ts +210 -0
- package/dist/langchain.d.ts.map +1 -0
- package/dist/langchain.js +333 -0
- package/dist/langchain.js.map +1 -0
- package/dist/mcp.d.ts +208 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +266 -0
- package/dist/mcp.js.map +1 -0
- package/dist/memory.d.ts +96 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +248 -0
- package/dist/memory.js.map +1 -0
- package/dist/oauth.d.ts +158 -0
- package/dist/oauth.d.ts.map +1 -0
- package/dist/oauth.js +344 -0
- package/dist/oauth.js.map +1 -0
- package/dist/output.d.ts +262 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +249 -0
- package/dist/output.js.map +1 -0
- package/dist/session.d.ts +212 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +347 -0
- package/dist/session.js.map +1 -0
- package/dist/tools.d.ts +125 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +195 -0
- package/dist/tools.js.map +1 -0
- package/package.json +45 -0
package/dist/output.d.ts
ADDED
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured Output Parsing
|
|
3
|
+
* Parse and validate LLM outputs with Zod schemas
|
|
4
|
+
*/
|
|
5
|
+
import { z, type ZodSchema } from 'zod';
|
|
6
|
+
/**
|
|
7
|
+
* Parse result
|
|
8
|
+
*/
|
|
9
|
+
export interface ParseResult<T> {
|
|
10
|
+
success: boolean;
|
|
11
|
+
data?: T;
|
|
12
|
+
error?: string;
|
|
13
|
+
raw?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* JSON extraction options
|
|
17
|
+
*/
|
|
18
|
+
export interface JsonExtractionOptions {
|
|
19
|
+
/** Try to fix common JSON issues */
|
|
20
|
+
autoFix?: boolean;
|
|
21
|
+
/** Extract from markdown code blocks */
|
|
22
|
+
extractFromCodeBlock?: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Extract JSON from text that may contain markdown or other content
|
|
26
|
+
*/
|
|
27
|
+
export declare function extractJson(text: string, options?: JsonExtractionOptions): string | null;
|
|
28
|
+
/**
|
|
29
|
+
* Parse JSON string safely
|
|
30
|
+
*/
|
|
31
|
+
export declare function parseJson<T>(text: string, options?: JsonExtractionOptions): ParseResult<T>;
|
|
32
|
+
/**
|
|
33
|
+
* Parse and validate with Zod schema
|
|
34
|
+
*/
|
|
35
|
+
export declare function parseWithSchema<T>(text: string, schema: ZodSchema<T>, options?: JsonExtractionOptions): ParseResult<T>;
|
|
36
|
+
/**
|
|
37
|
+
* Create a parser for a specific schema
|
|
38
|
+
*/
|
|
39
|
+
export declare function createParser<T>(schema: ZodSchema<T>, options?: JsonExtractionOptions): (text: string) => ParseResult<T>;
|
|
40
|
+
/**
|
|
41
|
+
* Output parser with retry logic
|
|
42
|
+
*/
|
|
43
|
+
export interface ParserWithRetry<T> {
|
|
44
|
+
parse: (text: string) => ParseResult<T>;
|
|
45
|
+
parseOrThrow: (text: string) => T;
|
|
46
|
+
getPromptInstructions: () => string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Create a parser with prompt instructions
|
|
50
|
+
*/
|
|
51
|
+
export declare function createSchemaParser<T extends z.ZodRawShape>(name: string, schema: z.ZodObject<T>, description?: string): ParserWithRetry<z.infer<typeof schema>>;
|
|
52
|
+
/**
|
|
53
|
+
* Common output schemas
|
|
54
|
+
*/
|
|
55
|
+
export declare const CommonSchemas: {
|
|
56
|
+
/**
|
|
57
|
+
* Yes/No decision with reasoning
|
|
58
|
+
*/
|
|
59
|
+
Decision: z.ZodObject<{
|
|
60
|
+
decision: z.ZodEnum<["yes", "no"]>;
|
|
61
|
+
confidence: z.ZodNumber;
|
|
62
|
+
reasoning: z.ZodString;
|
|
63
|
+
}, "strip", z.ZodTypeAny, {
|
|
64
|
+
decision: "yes" | "no";
|
|
65
|
+
confidence: number;
|
|
66
|
+
reasoning: string;
|
|
67
|
+
}, {
|
|
68
|
+
decision: "yes" | "no";
|
|
69
|
+
confidence: number;
|
|
70
|
+
reasoning: string;
|
|
71
|
+
}>;
|
|
72
|
+
/**
|
|
73
|
+
* Sentiment analysis
|
|
74
|
+
*/
|
|
75
|
+
Sentiment: z.ZodObject<{
|
|
76
|
+
sentiment: z.ZodEnum<["positive", "negative", "neutral", "mixed"]>;
|
|
77
|
+
score: z.ZodNumber;
|
|
78
|
+
aspects: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
79
|
+
aspect: z.ZodString;
|
|
80
|
+
sentiment: z.ZodEnum<["positive", "negative", "neutral"]>;
|
|
81
|
+
}, "strip", z.ZodTypeAny, {
|
|
82
|
+
sentiment: "positive" | "negative" | "neutral";
|
|
83
|
+
aspect: string;
|
|
84
|
+
}, {
|
|
85
|
+
sentiment: "positive" | "negative" | "neutral";
|
|
86
|
+
aspect: string;
|
|
87
|
+
}>, "many">>;
|
|
88
|
+
}, "strip", z.ZodTypeAny, {
|
|
89
|
+
sentiment: "positive" | "negative" | "neutral" | "mixed";
|
|
90
|
+
score: number;
|
|
91
|
+
aspects?: {
|
|
92
|
+
sentiment: "positive" | "negative" | "neutral";
|
|
93
|
+
aspect: string;
|
|
94
|
+
}[] | undefined;
|
|
95
|
+
}, {
|
|
96
|
+
sentiment: "positive" | "negative" | "neutral" | "mixed";
|
|
97
|
+
score: number;
|
|
98
|
+
aspects?: {
|
|
99
|
+
sentiment: "positive" | "negative" | "neutral";
|
|
100
|
+
aspect: string;
|
|
101
|
+
}[] | undefined;
|
|
102
|
+
}>;
|
|
103
|
+
/**
|
|
104
|
+
* Entity extraction
|
|
105
|
+
*/
|
|
106
|
+
Entities: z.ZodObject<{
|
|
107
|
+
entities: z.ZodArray<z.ZodObject<{
|
|
108
|
+
text: z.ZodString;
|
|
109
|
+
type: z.ZodString;
|
|
110
|
+
confidence: z.ZodOptional<z.ZodNumber>;
|
|
111
|
+
}, "strip", z.ZodTypeAny, {
|
|
112
|
+
type: string;
|
|
113
|
+
text: string;
|
|
114
|
+
confidence?: number | undefined;
|
|
115
|
+
}, {
|
|
116
|
+
type: string;
|
|
117
|
+
text: string;
|
|
118
|
+
confidence?: number | undefined;
|
|
119
|
+
}>, "many">;
|
|
120
|
+
}, "strip", z.ZodTypeAny, {
|
|
121
|
+
entities: {
|
|
122
|
+
type: string;
|
|
123
|
+
text: string;
|
|
124
|
+
confidence?: number | undefined;
|
|
125
|
+
}[];
|
|
126
|
+
}, {
|
|
127
|
+
entities: {
|
|
128
|
+
type: string;
|
|
129
|
+
text: string;
|
|
130
|
+
confidence?: number | undefined;
|
|
131
|
+
}[];
|
|
132
|
+
}>;
|
|
133
|
+
/**
|
|
134
|
+
* Classification
|
|
135
|
+
*/
|
|
136
|
+
Classification: z.ZodObject<{
|
|
137
|
+
label: z.ZodString;
|
|
138
|
+
confidence: z.ZodNumber;
|
|
139
|
+
alternatives: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
140
|
+
label: z.ZodString;
|
|
141
|
+
confidence: z.ZodNumber;
|
|
142
|
+
}, "strip", z.ZodTypeAny, {
|
|
143
|
+
confidence: number;
|
|
144
|
+
label: string;
|
|
145
|
+
}, {
|
|
146
|
+
confidence: number;
|
|
147
|
+
label: string;
|
|
148
|
+
}>, "many">>;
|
|
149
|
+
}, "strip", z.ZodTypeAny, {
|
|
150
|
+
confidence: number;
|
|
151
|
+
label: string;
|
|
152
|
+
alternatives?: {
|
|
153
|
+
confidence: number;
|
|
154
|
+
label: string;
|
|
155
|
+
}[] | undefined;
|
|
156
|
+
}, {
|
|
157
|
+
confidence: number;
|
|
158
|
+
label: string;
|
|
159
|
+
alternatives?: {
|
|
160
|
+
confidence: number;
|
|
161
|
+
label: string;
|
|
162
|
+
}[] | undefined;
|
|
163
|
+
}>;
|
|
164
|
+
/**
|
|
165
|
+
* Summary
|
|
166
|
+
*/
|
|
167
|
+
Summary: z.ZodObject<{
|
|
168
|
+
summary: z.ZodString;
|
|
169
|
+
keyPoints: z.ZodArray<z.ZodString, "many">;
|
|
170
|
+
wordCount: z.ZodOptional<z.ZodNumber>;
|
|
171
|
+
}, "strip", z.ZodTypeAny, {
|
|
172
|
+
summary: string;
|
|
173
|
+
keyPoints: string[];
|
|
174
|
+
wordCount?: number | undefined;
|
|
175
|
+
}, {
|
|
176
|
+
summary: string;
|
|
177
|
+
keyPoints: string[];
|
|
178
|
+
wordCount?: number | undefined;
|
|
179
|
+
}>;
|
|
180
|
+
/**
|
|
181
|
+
* Action items
|
|
182
|
+
*/
|
|
183
|
+
ActionItems: z.ZodObject<{
|
|
184
|
+
items: z.ZodArray<z.ZodObject<{
|
|
185
|
+
action: z.ZodString;
|
|
186
|
+
assignee: z.ZodOptional<z.ZodString>;
|
|
187
|
+
priority: z.ZodOptional<z.ZodEnum<["high", "medium", "low"]>>;
|
|
188
|
+
dueDate: z.ZodOptional<z.ZodString>;
|
|
189
|
+
}, "strip", z.ZodTypeAny, {
|
|
190
|
+
action: string;
|
|
191
|
+
assignee?: string | undefined;
|
|
192
|
+
priority?: "high" | "low" | "medium" | undefined;
|
|
193
|
+
dueDate?: string | undefined;
|
|
194
|
+
}, {
|
|
195
|
+
action: string;
|
|
196
|
+
assignee?: string | undefined;
|
|
197
|
+
priority?: "high" | "low" | "medium" | undefined;
|
|
198
|
+
dueDate?: string | undefined;
|
|
199
|
+
}>, "many">;
|
|
200
|
+
}, "strip", z.ZodTypeAny, {
|
|
201
|
+
items: {
|
|
202
|
+
action: string;
|
|
203
|
+
assignee?: string | undefined;
|
|
204
|
+
priority?: "high" | "low" | "medium" | undefined;
|
|
205
|
+
dueDate?: string | undefined;
|
|
206
|
+
}[];
|
|
207
|
+
}, {
|
|
208
|
+
items: {
|
|
209
|
+
action: string;
|
|
210
|
+
assignee?: string | undefined;
|
|
211
|
+
priority?: "high" | "low" | "medium" | undefined;
|
|
212
|
+
dueDate?: string | undefined;
|
|
213
|
+
}[];
|
|
214
|
+
}>;
|
|
215
|
+
};
|
|
216
|
+
/**
|
|
217
|
+
* Pre-built parsers for common schemas
|
|
218
|
+
*/
|
|
219
|
+
export declare const Parsers: {
|
|
220
|
+
Decision: ParserWithRetry<{
|
|
221
|
+
decision: "yes" | "no";
|
|
222
|
+
confidence: number;
|
|
223
|
+
reasoning: string;
|
|
224
|
+
}>;
|
|
225
|
+
Sentiment: ParserWithRetry<{
|
|
226
|
+
sentiment: "positive" | "negative" | "neutral" | "mixed";
|
|
227
|
+
score: number;
|
|
228
|
+
aspects?: {
|
|
229
|
+
sentiment: "positive" | "negative" | "neutral";
|
|
230
|
+
aspect: string;
|
|
231
|
+
}[] | undefined;
|
|
232
|
+
}>;
|
|
233
|
+
Entities: ParserWithRetry<{
|
|
234
|
+
entities: {
|
|
235
|
+
type: string;
|
|
236
|
+
text: string;
|
|
237
|
+
confidence?: number | undefined;
|
|
238
|
+
}[];
|
|
239
|
+
}>;
|
|
240
|
+
Classification: ParserWithRetry<{
|
|
241
|
+
confidence: number;
|
|
242
|
+
label: string;
|
|
243
|
+
alternatives?: {
|
|
244
|
+
confidence: number;
|
|
245
|
+
label: string;
|
|
246
|
+
}[] | undefined;
|
|
247
|
+
}>;
|
|
248
|
+
Summary: ParserWithRetry<{
|
|
249
|
+
summary: string;
|
|
250
|
+
keyPoints: string[];
|
|
251
|
+
wordCount?: number | undefined;
|
|
252
|
+
}>;
|
|
253
|
+
ActionItems: ParserWithRetry<{
|
|
254
|
+
items: {
|
|
255
|
+
action: string;
|
|
256
|
+
assignee?: string | undefined;
|
|
257
|
+
priority?: "high" | "low" | "medium" | undefined;
|
|
258
|
+
dueDate?: string | undefined;
|
|
259
|
+
}[];
|
|
260
|
+
}>;
|
|
261
|
+
};
|
|
262
|
+
//# sourceMappingURL=output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,KAAK,SAAS,EAAiB,MAAM,KAAK,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,oCAAoC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wCAAwC;IACxC,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,qBAA0B,GAClC,MAAM,GAAG,IAAI,CA+Bf;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EACzB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,qBAA0B,GAClC,WAAW,CAAC,CAAC,CAAC,CAoBhB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE,qBAA0B,GAClC,WAAW,CAAC,CAAC,CAAC,CA+BhB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE,qBAA0B,GAClC,CAAC,IAAI,EAAE,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAElC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC;IACxC,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,CAAC;IAClC,qBAAqB,EAAE,MAAM,MAAM,CAAC;CACrC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EACxD,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EACtB,WAAW,CAAC,EAAE,MAAM,GACnB,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAAC,CA6DzC;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;IACxB;;OAEG;;;;;;;;;;;;;;IAWH;;OAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiBH;;OAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAWH;;OAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAeH;;OAEG;;;;;;;;;;;;;;IAOH;;OAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAcJ,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BnB,CAAC"}
|
package/dist/output.js
ADDED
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured Output Parsing
|
|
3
|
+
* Parse and validate LLM outputs with Zod schemas
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
/**
|
|
7
|
+
* Extract JSON from text that may contain markdown or other content
|
|
8
|
+
*/
|
|
9
|
+
export function extractJson(text, options = {}) {
|
|
10
|
+
const { autoFix = true, extractFromCodeBlock = true } = options;
|
|
11
|
+
let content = text.trim();
|
|
12
|
+
// Try to extract from markdown code block
|
|
13
|
+
if (extractFromCodeBlock) {
|
|
14
|
+
const codeBlockMatch = content.match(/```(?:json)?\s*([\s\S]*?)```/);
|
|
15
|
+
if (codeBlockMatch?.[1]) {
|
|
16
|
+
content = codeBlockMatch[1].trim();
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
// Try to find JSON object or array
|
|
20
|
+
const jsonMatch = content.match(/(\{[\s\S]*\}|\[[\s\S]*\])/);
|
|
21
|
+
if (jsonMatch?.[1]) {
|
|
22
|
+
content = jsonMatch[1];
|
|
23
|
+
}
|
|
24
|
+
if (autoFix) {
|
|
25
|
+
// Fix trailing commas
|
|
26
|
+
content = content.replace(/,(\s*[}\]])/g, '$1');
|
|
27
|
+
// Fix single quotes
|
|
28
|
+
content = content.replace(/'/g, '"');
|
|
29
|
+
// Fix unquoted keys
|
|
30
|
+
content = content.replace(/(\{|,)\s*([a-zA-Z_]\w*)\s*:/g, '$1"$2":');
|
|
31
|
+
}
|
|
32
|
+
return content || null;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Parse JSON string safely
|
|
36
|
+
*/
|
|
37
|
+
export function parseJson(text, options = {}) {
|
|
38
|
+
try {
|
|
39
|
+
const extracted = extractJson(text, options);
|
|
40
|
+
if (!extracted) {
|
|
41
|
+
return {
|
|
42
|
+
success: false,
|
|
43
|
+
error: 'No JSON found in text',
|
|
44
|
+
raw: text,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
const data = JSON.parse(extracted);
|
|
48
|
+
return { success: true, data, raw: text };
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
return {
|
|
52
|
+
success: false,
|
|
53
|
+
error: error instanceof Error ? error.message : 'JSON parse error',
|
|
54
|
+
raw: text,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Parse and validate with Zod schema
|
|
60
|
+
*/
|
|
61
|
+
export function parseWithSchema(text, schema, options = {}) {
|
|
62
|
+
const jsonResult = parseJson(text, options);
|
|
63
|
+
if (!jsonResult.success) {
|
|
64
|
+
return {
|
|
65
|
+
success: false,
|
|
66
|
+
error: jsonResult.error,
|
|
67
|
+
raw: text,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
try {
|
|
71
|
+
const data = schema.parse(jsonResult.data);
|
|
72
|
+
return { success: true, data, raw: text };
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
if (error instanceof z.ZodError) {
|
|
76
|
+
const issues = error.issues
|
|
77
|
+
.map((i) => `${i.path.join('.')}: ${i.message}`)
|
|
78
|
+
.join(', ');
|
|
79
|
+
return {
|
|
80
|
+
success: false,
|
|
81
|
+
error: `Validation failed: ${issues}`,
|
|
82
|
+
raw: text,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
success: false,
|
|
87
|
+
error: error instanceof Error ? error.message : 'Validation error',
|
|
88
|
+
raw: text,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Create a parser for a specific schema
|
|
94
|
+
*/
|
|
95
|
+
export function createParser(schema, options = {}) {
|
|
96
|
+
return (text) => parseWithSchema(text, schema, options);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Create a parser with prompt instructions
|
|
100
|
+
*/
|
|
101
|
+
export function createSchemaParser(name, schema, description) {
|
|
102
|
+
function parse(text) {
|
|
103
|
+
return parseWithSchema(text, schema);
|
|
104
|
+
}
|
|
105
|
+
function parseOrThrow(text) {
|
|
106
|
+
const result = parse(text);
|
|
107
|
+
if (!result.success) {
|
|
108
|
+
throw new Error(result.error);
|
|
109
|
+
}
|
|
110
|
+
return result.data;
|
|
111
|
+
}
|
|
112
|
+
function getPromptInstructions() {
|
|
113
|
+
const shape = schema.shape;
|
|
114
|
+
const fields = [];
|
|
115
|
+
for (const [key, value] of Object.entries(shape)) {
|
|
116
|
+
const zodValue = value;
|
|
117
|
+
let type = 'unknown';
|
|
118
|
+
let desc = '';
|
|
119
|
+
if (zodValue instanceof z.ZodString) {
|
|
120
|
+
type = 'string';
|
|
121
|
+
desc = zodValue.description || '';
|
|
122
|
+
}
|
|
123
|
+
else if (zodValue instanceof z.ZodNumber) {
|
|
124
|
+
type = 'number';
|
|
125
|
+
desc = zodValue.description || '';
|
|
126
|
+
}
|
|
127
|
+
else if (zodValue instanceof z.ZodBoolean) {
|
|
128
|
+
type = 'boolean';
|
|
129
|
+
desc = zodValue.description || '';
|
|
130
|
+
}
|
|
131
|
+
else if (zodValue instanceof z.ZodArray) {
|
|
132
|
+
type = 'array';
|
|
133
|
+
desc = zodValue.description || '';
|
|
134
|
+
}
|
|
135
|
+
else if (zodValue instanceof z.ZodEnum) {
|
|
136
|
+
type = `enum(${zodValue.options.join('|')})`;
|
|
137
|
+
desc = zodValue.description || '';
|
|
138
|
+
}
|
|
139
|
+
else if (zodValue instanceof z.ZodOptional) {
|
|
140
|
+
type = 'optional';
|
|
141
|
+
desc = '(optional) ' + (zodValue.description || '');
|
|
142
|
+
}
|
|
143
|
+
fields.push(` "${key}": ${type}${desc ? ` // ${desc}` : ''}`);
|
|
144
|
+
}
|
|
145
|
+
return `Respond with a JSON object following this ${name} schema:
|
|
146
|
+
${description ? description + '\n' : ''}
|
|
147
|
+
{
|
|
148
|
+
${fields.join(',\n')}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
Respond ONLY with valid JSON, no additional text.`;
|
|
152
|
+
}
|
|
153
|
+
return {
|
|
154
|
+
parse,
|
|
155
|
+
parseOrThrow,
|
|
156
|
+
getPromptInstructions,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Common output schemas
|
|
161
|
+
*/
|
|
162
|
+
export const CommonSchemas = {
|
|
163
|
+
/**
|
|
164
|
+
* Yes/No decision with reasoning
|
|
165
|
+
*/
|
|
166
|
+
Decision: z.object({
|
|
167
|
+
decision: z.enum(['yes', 'no']).describe('The decision'),
|
|
168
|
+
confidence: z
|
|
169
|
+
.number()
|
|
170
|
+
.min(0)
|
|
171
|
+
.max(1)
|
|
172
|
+
.describe('Confidence level 0-1'),
|
|
173
|
+
reasoning: z.string().describe('Explanation for the decision'),
|
|
174
|
+
}),
|
|
175
|
+
/**
|
|
176
|
+
* Sentiment analysis
|
|
177
|
+
*/
|
|
178
|
+
Sentiment: z.object({
|
|
179
|
+
sentiment: z
|
|
180
|
+
.enum(['positive', 'negative', 'neutral', 'mixed'])
|
|
181
|
+
.describe('Overall sentiment'),
|
|
182
|
+
score: z.number().min(-1).max(1).describe('Sentiment score -1 to 1'),
|
|
183
|
+
aspects: z
|
|
184
|
+
.array(z.object({
|
|
185
|
+
aspect: z.string(),
|
|
186
|
+
sentiment: z.enum(['positive', 'negative', 'neutral']),
|
|
187
|
+
}))
|
|
188
|
+
.optional()
|
|
189
|
+
.describe('Aspect-level sentiment'),
|
|
190
|
+
}),
|
|
191
|
+
/**
|
|
192
|
+
* Entity extraction
|
|
193
|
+
*/
|
|
194
|
+
Entities: z.object({
|
|
195
|
+
entities: z.array(z.object({
|
|
196
|
+
text: z.string().describe('The entity text'),
|
|
197
|
+
type: z.string().describe('Entity type (person, org, location, etc)'),
|
|
198
|
+
confidence: z.number().min(0).max(1).optional(),
|
|
199
|
+
})),
|
|
200
|
+
}),
|
|
201
|
+
/**
|
|
202
|
+
* Classification
|
|
203
|
+
*/
|
|
204
|
+
Classification: z.object({
|
|
205
|
+
label: z.string().describe('The classification label'),
|
|
206
|
+
confidence: z.number().min(0).max(1).describe('Confidence 0-1'),
|
|
207
|
+
alternatives: z
|
|
208
|
+
.array(z.object({
|
|
209
|
+
label: z.string(),
|
|
210
|
+
confidence: z.number(),
|
|
211
|
+
}))
|
|
212
|
+
.optional()
|
|
213
|
+
.describe('Alternative classifications'),
|
|
214
|
+
}),
|
|
215
|
+
/**
|
|
216
|
+
* Summary
|
|
217
|
+
*/
|
|
218
|
+
Summary: z.object({
|
|
219
|
+
summary: z.string().describe('The summary text'),
|
|
220
|
+
keyPoints: z.array(z.string()).describe('Key points'),
|
|
221
|
+
wordCount: z.number().optional().describe('Word count of summary'),
|
|
222
|
+
}),
|
|
223
|
+
/**
|
|
224
|
+
* Action items
|
|
225
|
+
*/
|
|
226
|
+
ActionItems: z.object({
|
|
227
|
+
items: z.array(z.object({
|
|
228
|
+
action: z.string().describe('The action to take'),
|
|
229
|
+
assignee: z.string().optional().describe('Who should do it'),
|
|
230
|
+
priority: z
|
|
231
|
+
.enum(['high', 'medium', 'low'])
|
|
232
|
+
.optional()
|
|
233
|
+
.describe('Priority level'),
|
|
234
|
+
dueDate: z.string().optional().describe('Due date if mentioned'),
|
|
235
|
+
})),
|
|
236
|
+
}),
|
|
237
|
+
};
|
|
238
|
+
/**
|
|
239
|
+
* Pre-built parsers for common schemas
|
|
240
|
+
*/
|
|
241
|
+
export const Parsers = {
|
|
242
|
+
Decision: createSchemaParser('Decision', CommonSchemas.Decision, 'A yes/no decision with confidence and reasoning'),
|
|
243
|
+
Sentiment: createSchemaParser('Sentiment', CommonSchemas.Sentiment, 'Sentiment analysis result'),
|
|
244
|
+
Entities: createSchemaParser('Entities', CommonSchemas.Entities, 'Extracted entities from text'),
|
|
245
|
+
Classification: createSchemaParser('Classification', CommonSchemas.Classification, 'Classification result with confidence'),
|
|
246
|
+
Summary: createSchemaParser('Summary', CommonSchemas.Summary, 'Text summary with key points'),
|
|
247
|
+
ActionItems: createSchemaParser('ActionItems', CommonSchemas.ActionItems, 'Extracted action items'),
|
|
248
|
+
};
|
|
249
|
+
//# sourceMappingURL=output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
|