@bowenqt/qiniu-ai-sdk 0.14.0 → 0.16.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/dist/ai/agent-graph.d.ts +8 -0
- package/dist/ai/agent-graph.d.ts.map +1 -1
- package/dist/ai/agent-graph.js +23 -3
- package/dist/ai/agent-graph.js.map +1 -1
- package/dist/ai/agent-graph.mjs +23 -3
- package/dist/ai/create-agent.d.ts +101 -0
- package/dist/ai/create-agent.d.ts.map +1 -0
- package/dist/ai/create-agent.js +88 -0
- package/dist/ai/create-agent.js.map +1 -0
- package/dist/ai/create-agent.mjs +85 -0
- package/dist/ai/generate-object.d.ts +99 -0
- package/dist/ai/generate-object.d.ts.map +1 -0
- package/dist/ai/generate-object.js +237 -0
- package/dist/ai/generate-object.js.map +1 -0
- package/dist/ai/generate-object.mjs +201 -0
- package/dist/ai/generate-text.d.ts +13 -1
- package/dist/ai/generate-text.d.ts.map +1 -1
- package/dist/ai/generate-text.js +35 -5
- package/dist/ai/generate-text.js.map +1 -1
- package/dist/ai/generate-text.mjs +35 -5
- package/dist/ai/graph/checkpointer.d.ts +72 -2
- package/dist/ai/graph/checkpointer.d.ts.map +1 -1
- package/dist/ai/graph/checkpointer.js +99 -1
- package/dist/ai/graph/checkpointer.js.map +1 -1
- package/dist/ai/graph/checkpointer.mjs +96 -1
- package/dist/ai/graph/index.d.ts +2 -2
- package/dist/ai/graph/index.d.ts.map +1 -1
- package/dist/ai/graph/index.js +5 -1
- package/dist/ai/graph/index.js.map +1 -1
- package/dist/ai/graph/index.mjs +3 -1
- package/dist/ai/graph/postgres-checkpointer.d.ts +1 -1
- package/dist/ai/graph/postgres-checkpointer.d.ts.map +1 -1
- package/dist/ai/graph/postgres-checkpointer.js +13 -3
- package/dist/ai/graph/postgres-checkpointer.js.map +1 -1
- package/dist/ai/graph/postgres-checkpointer.mjs +13 -3
- package/dist/ai/graph/redis-checkpointer.d.ts +1 -1
- package/dist/ai/graph/redis-checkpointer.d.ts.map +1 -1
- package/dist/ai/graph/redis-checkpointer.js +6 -2
- package/dist/ai/graph/redis-checkpointer.js.map +1 -1
- package/dist/ai/graph/redis-checkpointer.mjs +6 -2
- package/dist/ai/internal-types.d.ts +14 -0
- package/dist/ai/internal-types.d.ts.map +1 -1
- package/dist/ai/internal-types.js +15 -0
- package/dist/ai/internal-types.js.map +1 -1
- package/dist/ai/internal-types.mjs +13 -0
- package/dist/ai/memory/index.d.ts +147 -0
- package/dist/ai/memory/index.d.ts.map +1 -0
- package/dist/ai/memory/index.js +240 -0
- package/dist/ai/memory/index.js.map +1 -0
- package/dist/ai/memory/index.mjs +234 -0
- package/dist/ai/nodes/execute-node.d.ts +2 -1
- package/dist/ai/nodes/execute-node.d.ts.map +1 -1
- package/dist/ai/nodes/execute-node.js +11 -33
- package/dist/ai/nodes/execute-node.js.map +1 -1
- package/dist/ai/nodes/execute-node.mjs +11 -33
- package/dist/ai/nodes/memory-node.d.ts.map +1 -1
- package/dist/ai/nodes/memory-node.js +14 -16
- package/dist/ai/nodes/memory-node.js.map +1 -1
- package/dist/ai/nodes/memory-node.mjs +15 -17
- package/dist/ai/stream-object.d.ts +109 -0
- package/dist/ai/stream-object.d.ts.map +1 -0
- package/dist/ai/stream-object.js +383 -0
- package/dist/ai/stream-object.js.map +1 -0
- package/dist/ai/stream-object.mjs +347 -0
- package/dist/ai/tool-approval.d.ts +90 -0
- package/dist/ai/tool-approval.d.ts.map +1 -0
- package/dist/ai/tool-approval.js +151 -0
- package/dist/ai/tool-approval.js.map +1 -0
- package/dist/ai/tool-approval.mjs +147 -0
- package/dist/index.d.ts +17 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +16 -4
- package/dist/lib/capability-cache.d.ts +72 -0
- package/dist/lib/capability-cache.d.ts.map +1 -0
- package/dist/lib/capability-cache.js +117 -0
- package/dist/lib/capability-cache.js.map +1 -0
- package/dist/lib/capability-cache.mjs +113 -0
- package/dist/lib/content-converter.d.ts +33 -0
- package/dist/lib/content-converter.d.ts.map +1 -0
- package/dist/lib/content-converter.js +166 -0
- package/dist/lib/content-converter.js.map +1 -0
- package/dist/lib/content-converter.mjs +161 -0
- package/dist/lib/errors.d.ts +15 -0
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +13 -1
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/errors.mjs +11 -0
- package/dist/lib/messages.js +4 -3
- package/dist/lib/messages.js.map +1 -1
- package/dist/lib/messages.mjs +4 -3
- package/dist/lib/partial-json-parser.d.ts +63 -0
- package/dist/lib/partial-json-parser.d.ts.map +1 -0
- package/dist/lib/partial-json-parser.js +142 -0
- package/dist/lib/partial-json-parser.js.map +1 -0
- package/dist/lib/partial-json-parser.mjs +137 -0
- package/dist/lib/token-estimator.d.ts.map +1 -1
- package/dist/lib/token-estimator.js +3 -2
- package/dist/lib/token-estimator.js.map +1 -1
- package/dist/lib/token-estimator.mjs +3 -2
- package/dist/lib/tool-registry.d.ts +21 -0
- package/dist/lib/tool-registry.d.ts.map +1 -1
- package/dist/lib/tool-registry.js.map +1 -1
- package/dist/lib/types.d.ts +20 -4
- package/dist/lib/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-object.d.ts","sourceRoot":"","sources":["../../src/ai/stream-object.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,cAAc,CAAC;AAWhE,+BAA+B;AAC/B,MAAM,WAAW,mBAAmB,CAAC,CAAC;IAClC,sBAAsB;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACrB,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,oBAAoB;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,+BAA+B;AAC/B,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACjC,wCAAwC;IACxC,mBAAmB,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,kDAAkD;IAClD,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACnB,oCAAoC;IACpC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,sCAAsC;IACtC,KAAK,EAAE,OAAO,CAAC;QACX,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;KACxB,GAAG,SAAS,CAAC,CAAC;IACf,uEAAuE;IACvE,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED,4CAA4C;AAC5C,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,GACvC;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACtC,CAAC,CAAC;AAMR,mCAAmC;AACnC,UAAU,SAAS,CAAC,CAAC,GAAG,OAAO;IAC3B,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,CAAC,CAAC;IAC5B,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,QAAQ,CAAA;KAAE,CAAC;IAC/F,IAAI,CAAC,EAAE;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACL;AAED,0BAA0B;AAC1B,UAAU,QAAQ;IACd,MAAM,EAAE,KAAK,CAAC;QACV,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;CACN;AA2GD;;GAEG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAChC,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAChC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CA0BhC"}
|
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* streamObject - Stream structured output with incremental parsing.
|
|
4
|
+
* Bypasses predict-node to enable streaming with JSON schema.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { streamObject } from '@bowenqt/qiniu-ai-sdk';
|
|
9
|
+
* import { z } from 'zod';
|
|
10
|
+
*
|
|
11
|
+
* const { partialObjectStream, object } = await streamObject({
|
|
12
|
+
* client,
|
|
13
|
+
* model: 'gemini-2.5-flash',
|
|
14
|
+
* schema: z.object({
|
|
15
|
+
* title: z.string(),
|
|
16
|
+
* chapters: z.array(z.object({
|
|
17
|
+
* title: z.string(),
|
|
18
|
+
* content: z.string(),
|
|
19
|
+
* })),
|
|
20
|
+
* }),
|
|
21
|
+
* prompt: 'Generate a book outline about AI',
|
|
22
|
+
* });
|
|
23
|
+
*
|
|
24
|
+
* // Stream partial objects
|
|
25
|
+
* for await (const partial of partialObjectStream) {
|
|
26
|
+
* console.log(partial);
|
|
27
|
+
* }
|
|
28
|
+
*
|
|
29
|
+
* // Get final validated object
|
|
30
|
+
* const result = await object;
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
34
|
+
if (k2 === undefined) k2 = k;
|
|
35
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
36
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
37
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
38
|
+
}
|
|
39
|
+
Object.defineProperty(o, k2, desc);
|
|
40
|
+
}) : (function(o, m, k, k2) {
|
|
41
|
+
if (k2 === undefined) k2 = k;
|
|
42
|
+
o[k2] = m[k];
|
|
43
|
+
}));
|
|
44
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
45
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
46
|
+
}) : function(o, v) {
|
|
47
|
+
o["default"] = v;
|
|
48
|
+
});
|
|
49
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
50
|
+
var ownKeys = function(o) {
|
|
51
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
52
|
+
var ar = [];
|
|
53
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
54
|
+
return ar;
|
|
55
|
+
};
|
|
56
|
+
return ownKeys(o);
|
|
57
|
+
};
|
|
58
|
+
return function (mod) {
|
|
59
|
+
if (mod && mod.__esModule) return mod;
|
|
60
|
+
var result = {};
|
|
61
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
62
|
+
__setModuleDefault(result, mod);
|
|
63
|
+
return result;
|
|
64
|
+
};
|
|
65
|
+
})();
|
|
66
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
67
|
+
exports.streamObject = streamObject;
|
|
68
|
+
const errors_1 = require("../lib/errors");
|
|
69
|
+
const partial_json_parser_1 = require("../lib/partial-json-parser");
|
|
70
|
+
const capability_cache_1 = require("../lib/capability-cache");
|
|
71
|
+
const generate_object_1 = require("./generate-object");
|
|
72
|
+
const content_converter_1 = require("../lib/content-converter");
|
|
73
|
+
// ============================================================================
|
|
74
|
+
// JSON Schema Conversion (reuse from generate-object)
|
|
75
|
+
// ============================================================================
|
|
76
|
+
// Dynamic import cache for zod-to-json-schema
|
|
77
|
+
let loadAttempted = false;
|
|
78
|
+
let cachedZodToJsonSchema = null;
|
|
79
|
+
async function zodToJsonSchemaAsync(schema) {
|
|
80
|
+
if (!loadAttempted) {
|
|
81
|
+
loadAttempted = true;
|
|
82
|
+
try {
|
|
83
|
+
const zodToJsonSchemaModule = await Promise.resolve().then(() => __importStar(require('zod-to-json-schema')));
|
|
84
|
+
cachedZodToJsonSchema = zodToJsonSchemaModule.zodToJsonSchema;
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
cachedZodToJsonSchema = null;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if (cachedZodToJsonSchema) {
|
|
91
|
+
const result = cachedZodToJsonSchema(schema);
|
|
92
|
+
const { $schema, ...rest } = result;
|
|
93
|
+
return rest;
|
|
94
|
+
}
|
|
95
|
+
return parseZodSchemaToJsonSchema(schema);
|
|
96
|
+
}
|
|
97
|
+
function parseZodSchemaToJsonSchema(schema) {
|
|
98
|
+
const def = schema._def;
|
|
99
|
+
if (!def) {
|
|
100
|
+
return { type: 'object' };
|
|
101
|
+
}
|
|
102
|
+
const typeName = def.typeName;
|
|
103
|
+
switch (typeName) {
|
|
104
|
+
case 'ZodString':
|
|
105
|
+
return { type: 'string' };
|
|
106
|
+
case 'ZodNumber':
|
|
107
|
+
return { type: 'number' };
|
|
108
|
+
case 'ZodBoolean':
|
|
109
|
+
return { type: 'boolean' };
|
|
110
|
+
case 'ZodArray':
|
|
111
|
+
return {
|
|
112
|
+
type: 'array',
|
|
113
|
+
items: def.type ? parseZodSchemaToJsonSchema(def.type) : {},
|
|
114
|
+
};
|
|
115
|
+
case 'ZodObject': {
|
|
116
|
+
const shape = def.shape?.() ?? {};
|
|
117
|
+
const properties = {};
|
|
118
|
+
const required = [];
|
|
119
|
+
for (const [key, value] of Object.entries(shape)) {
|
|
120
|
+
properties[key] = parseZodSchemaToJsonSchema(value);
|
|
121
|
+
const innerDef = value?._def;
|
|
122
|
+
if (innerDef?.typeName !== 'ZodOptional') {
|
|
123
|
+
required.push(key);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return {
|
|
127
|
+
type: 'object',
|
|
128
|
+
properties,
|
|
129
|
+
...(required.length > 0 ? { required } : {}),
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
default:
|
|
133
|
+
return { type: 'object' };
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// ============================================================================
|
|
137
|
+
// Error Classification
|
|
138
|
+
// ============================================================================
|
|
139
|
+
/**
|
|
140
|
+
* Check if error indicates unsupported streaming format.
|
|
141
|
+
*/
|
|
142
|
+
function isUnsupportedStreamError(error) {
|
|
143
|
+
// Check error code
|
|
144
|
+
const code = error?.code;
|
|
145
|
+
if (code === 'UNSUPPORTED_STREAM_FORMAT' ||
|
|
146
|
+
code === 'INVALID_RESPONSE_FORMAT' ||
|
|
147
|
+
code === 'unsupported_response_format') {
|
|
148
|
+
return true;
|
|
149
|
+
}
|
|
150
|
+
// Check HTTP status
|
|
151
|
+
const status = error?.status;
|
|
152
|
+
if (status === 400 || status === 422) {
|
|
153
|
+
const message = String(error?.message ?? '').toLowerCase();
|
|
154
|
+
if (message.includes('stream') ||
|
|
155
|
+
message.includes('response_format') ||
|
|
156
|
+
message.includes('json_schema')) {
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
// ============================================================================
|
|
163
|
+
// Main Function
|
|
164
|
+
// ============================================================================
|
|
165
|
+
/**
|
|
166
|
+
* Stream structured output with JSON schema validation.
|
|
167
|
+
*/
|
|
168
|
+
async function streamObject(options) {
|
|
169
|
+
const { client, model, schema, allowFallback = false } = options;
|
|
170
|
+
// Check capability cache
|
|
171
|
+
if (capability_cache_1.capabilityCache.isNotSupported(client, model, 'stream_json_schema')) {
|
|
172
|
+
if (allowFallback) {
|
|
173
|
+
return createFallbackResult(options);
|
|
174
|
+
}
|
|
175
|
+
throw new Error(`Model ${model} does not support streaming JSON schema. Set allowFallback: true to use non-streaming.`);
|
|
176
|
+
}
|
|
177
|
+
// Try streaming
|
|
178
|
+
try {
|
|
179
|
+
return await streamObjectInternal(options);
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
if (isUnsupportedStreamError(error)) {
|
|
183
|
+
// Cache the failure
|
|
184
|
+
capability_cache_1.capabilityCache.set(client, model, 'stream_json_schema', false);
|
|
185
|
+
if (allowFallback) {
|
|
186
|
+
console.warn('streamObject: API does not support streaming JSON schema, falling back to non-streaming');
|
|
187
|
+
return createFallbackResult(options);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
throw error;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Internal streaming implementation.
|
|
195
|
+
*/
|
|
196
|
+
async function streamObjectInternal(options) {
|
|
197
|
+
const { client, model, schema, prompt, messages, system, temperature, topP, maxTokens, abortSignal } = options;
|
|
198
|
+
// Build messages
|
|
199
|
+
const apiMessages = [];
|
|
200
|
+
if (system) {
|
|
201
|
+
apiMessages.push({ role: 'system', content: system });
|
|
202
|
+
}
|
|
203
|
+
if (messages) {
|
|
204
|
+
apiMessages.push(...messages);
|
|
205
|
+
}
|
|
206
|
+
if (prompt) {
|
|
207
|
+
apiMessages.push({ role: 'user', content: prompt });
|
|
208
|
+
}
|
|
209
|
+
// Convert schema to JSON Schema
|
|
210
|
+
const jsonSchema = await zodToJsonSchemaAsync(schema);
|
|
211
|
+
// Build response format
|
|
212
|
+
const responseFormat = {
|
|
213
|
+
type: 'json_schema',
|
|
214
|
+
json_schema: {
|
|
215
|
+
name: 'response',
|
|
216
|
+
strict: true,
|
|
217
|
+
schema: jsonSchema,
|
|
218
|
+
},
|
|
219
|
+
};
|
|
220
|
+
// Normalize multimodal content (image -> image_url) for API compatibility
|
|
221
|
+
const normalizedMessages = apiMessages.map(msg => ({
|
|
222
|
+
...msg,
|
|
223
|
+
content: (0, content_converter_1.normalizeContent)(msg.content),
|
|
224
|
+
}));
|
|
225
|
+
// Create streaming request - bypass predict-node, go directly to client
|
|
226
|
+
const response = await client.chat.createStream({
|
|
227
|
+
model,
|
|
228
|
+
messages: normalizedMessages,
|
|
229
|
+
temperature,
|
|
230
|
+
top_p: topP,
|
|
231
|
+
max_tokens: maxTokens,
|
|
232
|
+
response_format: responseFormat,
|
|
233
|
+
}, { signal: abortSignal });
|
|
234
|
+
// NOTE: capabilityCache is set AFTER stream completes successfully (in background consumer)
|
|
235
|
+
// Create parser and state
|
|
236
|
+
const parser = new partial_json_parser_1.PartialJsonParser();
|
|
237
|
+
let rawText = '';
|
|
238
|
+
let usage;
|
|
239
|
+
let resolveObject;
|
|
240
|
+
let rejectObject;
|
|
241
|
+
let resolveRaw;
|
|
242
|
+
let resolveUsage;
|
|
243
|
+
const objectPromise = new Promise((resolve, reject) => {
|
|
244
|
+
resolveObject = resolve;
|
|
245
|
+
rejectObject = reject;
|
|
246
|
+
});
|
|
247
|
+
const rawTextPromise = new Promise((resolve) => {
|
|
248
|
+
resolveRaw = resolve;
|
|
249
|
+
});
|
|
250
|
+
const usagePromise = new Promise((resolve) => {
|
|
251
|
+
resolveUsage = resolve;
|
|
252
|
+
});
|
|
253
|
+
// Shared state for background consumer and partial stream
|
|
254
|
+
const partialValues = [];
|
|
255
|
+
let streamComplete = false;
|
|
256
|
+
let streamError = null;
|
|
257
|
+
const waiters = [];
|
|
258
|
+
// Background consumer - ensures object resolves even if partialObjectStream is not iterated
|
|
259
|
+
const backgroundConsumer = (async () => {
|
|
260
|
+
try {
|
|
261
|
+
for await (const chunk of response) {
|
|
262
|
+
const delta = chunk.choices?.[0]?.delta?.content ?? '';
|
|
263
|
+
if (delta) {
|
|
264
|
+
rawText += delta;
|
|
265
|
+
parser.append(delta);
|
|
266
|
+
// Try to parse partial object
|
|
267
|
+
const result = parser.parsePartial();
|
|
268
|
+
if (result.value !== null) {
|
|
269
|
+
partialValues.push(result.value);
|
|
270
|
+
// Wake up any waiting iterators
|
|
271
|
+
while (waiters.length > 0) {
|
|
272
|
+
waiters.shift().resolve(false);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
// Capture usage from final chunk
|
|
277
|
+
if (chunk.usage) {
|
|
278
|
+
usage = chunk.usage;
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
// Stream complete - cache success
|
|
282
|
+
capability_cache_1.capabilityCache.set(client, model, 'stream_json_schema', true);
|
|
283
|
+
// Resolve final values
|
|
284
|
+
streamComplete = true;
|
|
285
|
+
resolveRaw(rawText);
|
|
286
|
+
resolveUsage(usage);
|
|
287
|
+
// Validate final object
|
|
288
|
+
try {
|
|
289
|
+
const parseResult = schema.safeParse(JSON.parse(rawText));
|
|
290
|
+
if (parseResult.success) {
|
|
291
|
+
resolveObject(parseResult.data);
|
|
292
|
+
}
|
|
293
|
+
else {
|
|
294
|
+
const validationErrors = parseResult.error.errors.map(e => ({
|
|
295
|
+
path: e.path.map(String),
|
|
296
|
+
message: e.message,
|
|
297
|
+
}));
|
|
298
|
+
const error = new errors_1.StructuredOutputError('Validation failed', rawText, validationErrors);
|
|
299
|
+
streamError = error; // Ensure partialObjectStream also throws
|
|
300
|
+
rejectObject(error);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
catch (e) {
|
|
304
|
+
const error = e instanceof Error ? e : new Error(String(e));
|
|
305
|
+
streamError = error; // Ensure partialObjectStream also throws
|
|
306
|
+
rejectObject(error);
|
|
307
|
+
}
|
|
308
|
+
// Wake up any waiting iterators
|
|
309
|
+
while (waiters.length > 0) {
|
|
310
|
+
waiters.shift().resolve(true);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
catch (error) {
|
|
314
|
+
streamError = error instanceof Error ? error : new Error(String(error));
|
|
315
|
+
streamComplete = true;
|
|
316
|
+
resolveRaw(rawText);
|
|
317
|
+
resolveUsage(usage);
|
|
318
|
+
rejectObject(streamError);
|
|
319
|
+
// Wake up any waiting iterators
|
|
320
|
+
while (waiters.length > 0) {
|
|
321
|
+
waiters.shift().resolve(true);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
})();
|
|
325
|
+
// Create async generator for partial objects (consumes from shared state)
|
|
326
|
+
async function* generatePartials() {
|
|
327
|
+
let yieldedCount = 0;
|
|
328
|
+
while (true) {
|
|
329
|
+
// Yield any new partial values
|
|
330
|
+
while (yieldedCount < partialValues.length) {
|
|
331
|
+
yield partialValues[yieldedCount++];
|
|
332
|
+
}
|
|
333
|
+
// Check if stream is complete
|
|
334
|
+
if (streamComplete) {
|
|
335
|
+
if (streamError)
|
|
336
|
+
throw streamError;
|
|
337
|
+
break;
|
|
338
|
+
}
|
|
339
|
+
// Wait for more data
|
|
340
|
+
await new Promise((resolve) => {
|
|
341
|
+
waiters.push({ resolve });
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
return {
|
|
346
|
+
partialObjectStream: generatePartials(),
|
|
347
|
+
object: objectPromise,
|
|
348
|
+
rawText: rawTextPromise,
|
|
349
|
+
usage: usagePromise,
|
|
350
|
+
streamed: true,
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Create fallback result using non-streaming generateObject.
|
|
355
|
+
*/
|
|
356
|
+
async function createFallbackResult(options) {
|
|
357
|
+
// Use generateObject (non-streaming)
|
|
358
|
+
const result = await (0, generate_object_1.generateObject)({
|
|
359
|
+
client: options.client,
|
|
360
|
+
model: options.model,
|
|
361
|
+
schema: options.schema,
|
|
362
|
+
prompt: options.prompt,
|
|
363
|
+
messages: options.messages,
|
|
364
|
+
system: options.system,
|
|
365
|
+
temperature: options.temperature,
|
|
366
|
+
topP: options.topP,
|
|
367
|
+
maxTokens: options.maxTokens,
|
|
368
|
+
mode: 'strict',
|
|
369
|
+
abortSignal: options.abortSignal,
|
|
370
|
+
});
|
|
371
|
+
// Create single-yield async iterable
|
|
372
|
+
async function* singleYield() {
|
|
373
|
+
yield result.object;
|
|
374
|
+
}
|
|
375
|
+
return {
|
|
376
|
+
partialObjectStream: singleYield(),
|
|
377
|
+
object: Promise.resolve(result.object),
|
|
378
|
+
rawText: Promise.resolve(result.raw),
|
|
379
|
+
usage: Promise.resolve(result.usage),
|
|
380
|
+
streamed: false,
|
|
381
|
+
};
|
|
382
|
+
}
|
|
383
|
+
//# sourceMappingURL=stream-object.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream-object.js","sourceRoot":"","sources":["../../src/ai/stream-object.ts"],"names":[],"mappings":"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"}
|