@bowenqt/qiniu-ai-sdk 0.15.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 +5 -0
- package/dist/ai/agent-graph.d.ts.map +1 -1
- package/dist/ai/agent-graph.js +21 -2
- package/dist/ai/agent-graph.js.map +1 -1
- package/dist/ai/agent-graph.mjs +21 -2
- package/dist/ai/create-agent.d.ts +3 -0
- package/dist/ai/create-agent.d.ts.map +1 -1
- package/dist/ai/create-agent.js +6 -5
- package/dist/ai/create-agent.js.map +1 -1
- package/dist/ai/create-agent.mjs +6 -5
- package/dist/ai/generate-object.d.ts.map +1 -1
- package/dist/ai/generate-object.js +7 -1
- package/dist/ai/generate-object.js.map +1 -1
- package/dist/ai/generate-object.mjs +7 -1
- package/dist/ai/generate-text.d.ts +4 -1
- package/dist/ai/generate-text.d.ts.map +1 -1
- package/dist/ai/generate-text.js +10 -2
- package/dist/ai/generate-text.js.map +1 -1
- package/dist/ai/generate-text.mjs +10 -2
- package/dist/ai/internal-types.d.ts +11 -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/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/index.d.ts +8 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +7 -1
- 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/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/types.d.ts +20 -4
- package/dist/lib/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Incremental JSON parser for streaming structured output.
|
|
3
|
+
* Parses partial JSON strings as they arrive, returning the most complete object possible.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* const parser = new PartialJsonParser();
|
|
8
|
+
*
|
|
9
|
+
* parser.append('{"title": "Hello');
|
|
10
|
+
* console.log(parser.getPartial()); // { title: 'Hello' }
|
|
11
|
+
*
|
|
12
|
+
* parser.append('", "done": true}');
|
|
13
|
+
* console.log(parser.getPartial()); // { title: 'Hello', done: true }
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Result of parsing attempt.
|
|
18
|
+
*/
|
|
19
|
+
export interface ParseResult<T = unknown> {
|
|
20
|
+
/** Whether the JSON is complete and valid */
|
|
21
|
+
complete: boolean;
|
|
22
|
+
/** The parsed partial object (may be incomplete) */
|
|
23
|
+
value: T | null;
|
|
24
|
+
/** Parsing error if any */
|
|
25
|
+
error?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Incremental JSON parser that handles partial JSON strings.
|
|
29
|
+
*/
|
|
30
|
+
export declare class PartialJsonParser {
|
|
31
|
+
private buffer;
|
|
32
|
+
/**
|
|
33
|
+
* Append new content to the buffer.
|
|
34
|
+
*/
|
|
35
|
+
append(chunk: string): void;
|
|
36
|
+
/**
|
|
37
|
+
* Get the current buffer content.
|
|
38
|
+
*/
|
|
39
|
+
getBuffer(): string;
|
|
40
|
+
/**
|
|
41
|
+
* Reset the parser.
|
|
42
|
+
*/
|
|
43
|
+
reset(): void;
|
|
44
|
+
/**
|
|
45
|
+
* Try to parse the current buffer as complete JSON.
|
|
46
|
+
*/
|
|
47
|
+
parseComplete<T = unknown>(): ParseResult<T>;
|
|
48
|
+
/**
|
|
49
|
+
* Parse the current buffer, attempting to complete partial JSON.
|
|
50
|
+
* Returns the most complete object possible.
|
|
51
|
+
*/
|
|
52
|
+
parsePartial<T = unknown>(): ParseResult<T>;
|
|
53
|
+
/**
|
|
54
|
+
* Attempt to complete partial JSON by adding missing closing brackets.
|
|
55
|
+
*/
|
|
56
|
+
private completePartialJson;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Parse a partial JSON string, returning the most complete object possible.
|
|
60
|
+
* Convenience function for one-shot parsing.
|
|
61
|
+
*/
|
|
62
|
+
export declare function parsePartialJson<T = unknown>(json: string): ParseResult<T>;
|
|
63
|
+
//# sourceMappingURL=partial-json-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"partial-json-parser.d.ts","sourceRoot":"","sources":["../../src/lib/partial-json-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,OAAO;IACpC,6CAA6C;IAC7C,QAAQ,EAAE,OAAO,CAAC;IAClB,oDAAoD;IACpD,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,MAAM,CAAM;IAEpB;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI3B;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,aAAa,CAAC,CAAC,GAAG,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC;IAS5C;;;OAGG;IACH,YAAY,CAAC,CAAC,GAAG,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC;IAqB3C;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAwD9B;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAI1E"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Incremental JSON parser for streaming structured output.
|
|
4
|
+
* Parses partial JSON strings as they arrive, returning the most complete object possible.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* const parser = new PartialJsonParser();
|
|
9
|
+
*
|
|
10
|
+
* parser.append('{"title": "Hello');
|
|
11
|
+
* console.log(parser.getPartial()); // { title: 'Hello' }
|
|
12
|
+
*
|
|
13
|
+
* parser.append('", "done": true}');
|
|
14
|
+
* console.log(parser.getPartial()); // { title: 'Hello', done: true }
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.PartialJsonParser = void 0;
|
|
19
|
+
exports.parsePartialJson = parsePartialJson;
|
|
20
|
+
/**
|
|
21
|
+
* Incremental JSON parser that handles partial JSON strings.
|
|
22
|
+
*/
|
|
23
|
+
class PartialJsonParser {
|
|
24
|
+
constructor() {
|
|
25
|
+
this.buffer = '';
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Append new content to the buffer.
|
|
29
|
+
*/
|
|
30
|
+
append(chunk) {
|
|
31
|
+
this.buffer += chunk;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get the current buffer content.
|
|
35
|
+
*/
|
|
36
|
+
getBuffer() {
|
|
37
|
+
return this.buffer;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Reset the parser.
|
|
41
|
+
*/
|
|
42
|
+
reset() {
|
|
43
|
+
this.buffer = '';
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Try to parse the current buffer as complete JSON.
|
|
47
|
+
*/
|
|
48
|
+
parseComplete() {
|
|
49
|
+
try {
|
|
50
|
+
const value = JSON.parse(this.buffer);
|
|
51
|
+
return { complete: true, value };
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return { complete: false, value: null };
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Parse the current buffer, attempting to complete partial JSON.
|
|
59
|
+
* Returns the most complete object possible.
|
|
60
|
+
*/
|
|
61
|
+
parsePartial() {
|
|
62
|
+
// Try complete parse first
|
|
63
|
+
const complete = this.parseComplete();
|
|
64
|
+
if (complete.complete) {
|
|
65
|
+
return complete;
|
|
66
|
+
}
|
|
67
|
+
// Try to complete partial JSON
|
|
68
|
+
const completed = this.completePartialJson(this.buffer);
|
|
69
|
+
if (completed) {
|
|
70
|
+
try {
|
|
71
|
+
const value = JSON.parse(completed);
|
|
72
|
+
return { complete: false, value };
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return { complete: false, value: null, error: 'Failed to parse completed JSON' };
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return { complete: false, value: null };
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Attempt to complete partial JSON by adding missing closing brackets.
|
|
82
|
+
*/
|
|
83
|
+
completePartialJson(json) {
|
|
84
|
+
if (!json.trim()) {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
// Track open brackets
|
|
88
|
+
const stack = [];
|
|
89
|
+
let inString = false;
|
|
90
|
+
let escapeNext = false;
|
|
91
|
+
for (let i = 0; i < json.length; i++) {
|
|
92
|
+
const char = json[i];
|
|
93
|
+
if (escapeNext) {
|
|
94
|
+
escapeNext = false;
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
if (char === '\\') {
|
|
98
|
+
escapeNext = true;
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
if (char === '"' && !escapeNext) {
|
|
102
|
+
inString = !inString;
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
if (inString) {
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
if (char === '{') {
|
|
109
|
+
stack.push('}');
|
|
110
|
+
}
|
|
111
|
+
else if (char === '[') {
|
|
112
|
+
stack.push(']');
|
|
113
|
+
}
|
|
114
|
+
else if (char === '}' || char === ']') {
|
|
115
|
+
if (stack.length > 0 && stack[stack.length - 1] === char) {
|
|
116
|
+
stack.pop();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// If in string, close it
|
|
121
|
+
let completed = json;
|
|
122
|
+
if (inString) {
|
|
123
|
+
completed += '"';
|
|
124
|
+
}
|
|
125
|
+
// Close all open brackets in reverse order
|
|
126
|
+
while (stack.length > 0) {
|
|
127
|
+
completed += stack.pop();
|
|
128
|
+
}
|
|
129
|
+
return completed;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
exports.PartialJsonParser = PartialJsonParser;
|
|
133
|
+
/**
|
|
134
|
+
* Parse a partial JSON string, returning the most complete object possible.
|
|
135
|
+
* Convenience function for one-shot parsing.
|
|
136
|
+
*/
|
|
137
|
+
function parsePartialJson(json) {
|
|
138
|
+
const parser = new PartialJsonParser();
|
|
139
|
+
parser.append(json);
|
|
140
|
+
return parser.parsePartial();
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=partial-json-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"partial-json-parser.js","sourceRoot":"","sources":["../../src/lib/partial-json-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Incremental JSON parser for streaming structured output.
|
|
3
|
+
* Parses partial JSON strings as they arrive, returning the most complete object possible.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* const parser = new PartialJsonParser();
|
|
8
|
+
*
|
|
9
|
+
* parser.append('{"title": "Hello');
|
|
10
|
+
* console.log(parser.getPartial()); // { title: 'Hello' }
|
|
11
|
+
*
|
|
12
|
+
* parser.append('", "done": true}');
|
|
13
|
+
* console.log(parser.getPartial()); // { title: 'Hello', done: true }
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Incremental JSON parser that handles partial JSON strings.
|
|
18
|
+
*/
|
|
19
|
+
export class PartialJsonParser {
|
|
20
|
+
constructor() {
|
|
21
|
+
this.buffer = '';
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Append new content to the buffer.
|
|
25
|
+
*/
|
|
26
|
+
append(chunk) {
|
|
27
|
+
this.buffer += chunk;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Get the current buffer content.
|
|
31
|
+
*/
|
|
32
|
+
getBuffer() {
|
|
33
|
+
return this.buffer;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Reset the parser.
|
|
37
|
+
*/
|
|
38
|
+
reset() {
|
|
39
|
+
this.buffer = '';
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Try to parse the current buffer as complete JSON.
|
|
43
|
+
*/
|
|
44
|
+
parseComplete() {
|
|
45
|
+
try {
|
|
46
|
+
const value = JSON.parse(this.buffer);
|
|
47
|
+
return { complete: true, value };
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return { complete: false, value: null };
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Parse the current buffer, attempting to complete partial JSON.
|
|
55
|
+
* Returns the most complete object possible.
|
|
56
|
+
*/
|
|
57
|
+
parsePartial() {
|
|
58
|
+
// Try complete parse first
|
|
59
|
+
const complete = this.parseComplete();
|
|
60
|
+
if (complete.complete) {
|
|
61
|
+
return complete;
|
|
62
|
+
}
|
|
63
|
+
// Try to complete partial JSON
|
|
64
|
+
const completed = this.completePartialJson(this.buffer);
|
|
65
|
+
if (completed) {
|
|
66
|
+
try {
|
|
67
|
+
const value = JSON.parse(completed);
|
|
68
|
+
return { complete: false, value };
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return { complete: false, value: null, error: 'Failed to parse completed JSON' };
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return { complete: false, value: null };
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Attempt to complete partial JSON by adding missing closing brackets.
|
|
78
|
+
*/
|
|
79
|
+
completePartialJson(json) {
|
|
80
|
+
if (!json.trim()) {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
// Track open brackets
|
|
84
|
+
const stack = [];
|
|
85
|
+
let inString = false;
|
|
86
|
+
let escapeNext = false;
|
|
87
|
+
for (let i = 0; i < json.length; i++) {
|
|
88
|
+
const char = json[i];
|
|
89
|
+
if (escapeNext) {
|
|
90
|
+
escapeNext = false;
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
if (char === '\\') {
|
|
94
|
+
escapeNext = true;
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
if (char === '"' && !escapeNext) {
|
|
98
|
+
inString = !inString;
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
if (inString) {
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
if (char === '{') {
|
|
105
|
+
stack.push('}');
|
|
106
|
+
}
|
|
107
|
+
else if (char === '[') {
|
|
108
|
+
stack.push(']');
|
|
109
|
+
}
|
|
110
|
+
else if (char === '}' || char === ']') {
|
|
111
|
+
if (stack.length > 0 && stack[stack.length - 1] === char) {
|
|
112
|
+
stack.pop();
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// If in string, close it
|
|
117
|
+
let completed = json;
|
|
118
|
+
if (inString) {
|
|
119
|
+
completed += '"';
|
|
120
|
+
}
|
|
121
|
+
// Close all open brackets in reverse order
|
|
122
|
+
while (stack.length > 0) {
|
|
123
|
+
completed += stack.pop();
|
|
124
|
+
}
|
|
125
|
+
return completed;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Parse a partial JSON string, returning the most complete object possible.
|
|
130
|
+
* Convenience function for one-shot parsing.
|
|
131
|
+
*/
|
|
132
|
+
export function parsePartialJson(json) {
|
|
133
|
+
const parser = new PartialJsonParser();
|
|
134
|
+
parser.append(json);
|
|
135
|
+
return parser.parsePartial();
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=partial-json-parser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-estimator.d.ts","sourceRoot":"","sources":["../../src/lib/token-estimator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAmB3C;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,KAAK,MAAM,CAAC;AAE3E;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,GAAE,oBAAyB,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"token-estimator.d.ts","sourceRoot":"","sources":["../../src/lib/token-estimator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAmB3C;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yCAAyC;IACzC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,KAAK,MAAM,CAAC;AAE3E;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,GAAE,oBAAyB,GAAG,gBAAgB,CAuBxF;AAaD;;GAEG;AACH,eAAO,MAAM,uBAAuB,kBAAyB,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;IAChC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACjC,OAAO,EAAE,gBAAgB,EACzB,MAAM,GAAE,oBAAyB,GAClC,MAAM,CAgBR;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAClC,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,MAAM,GAAE,oBAAyB,GAClC,MAAM,CAER;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,oBAAoB,CAMnE,CAAC"}
|
|
@@ -38,10 +38,11 @@ function createTokenEstimator(config = {}) {
|
|
|
38
38
|
if (Array.isArray(content)) {
|
|
39
39
|
let total = 0;
|
|
40
40
|
for (const part of content) {
|
|
41
|
-
if (part.type === 'text' && part
|
|
41
|
+
if (part.type === 'text' && 'text' in part) {
|
|
42
42
|
total += estimateText(part.text, charsPerToken, cjkMultiplier);
|
|
43
43
|
}
|
|
44
|
-
else if (part.type === 'image_url') {
|
|
44
|
+
else if (part.type === 'image_url' || part.type === 'image') {
|
|
45
|
+
// Both image_url (API format) and image (SDK sugar) count as image tokens
|
|
45
46
|
total += imageTokenCost;
|
|
46
47
|
}
|
|
47
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-estimator.js","sourceRoot":"","sources":["../../src/lib/token-estimator.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AA6CH,
|
|
1
|
+
{"version":3,"file":"token-estimator.js","sourceRoot":"","sources":["../../src/lib/token-estimator.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,10 +32,11 @@ export function createTokenEstimator(config = {}) {
|
|
|
32
32
|
if (Array.isArray(content)) {
|
|
33
33
|
let total = 0;
|
|
34
34
|
for (const part of content) {
|
|
35
|
-
if (part.type === 'text' && part
|
|
35
|
+
if (part.type === 'text' && 'text' in part) {
|
|
36
36
|
total += estimateText(part.text, charsPerToken, cjkMultiplier);
|
|
37
37
|
}
|
|
38
|
-
else if (part.type === 'image_url') {
|
|
38
|
+
else if (part.type === 'image_url' || part.type === 'image') {
|
|
39
|
+
// Both image_url (API format) and image (SDK sugar) count as image tokens
|
|
39
40
|
total += imageTokenCost;
|
|
40
41
|
}
|
|
41
42
|
}
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -6,14 +6,30 @@ export interface ChatMessage {
|
|
|
6
6
|
/** Required for tool role messages to match the corresponding tool_call */
|
|
7
7
|
tool_call_id?: string;
|
|
8
8
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
/** Cross-platform image source types */
|
|
10
|
+
export type ImageSource = Uint8Array | ArrayBuffer | Blob | URL | string;
|
|
11
|
+
/** Image URL content part (API format) */
|
|
12
|
+
export interface ImageUrlContentPart {
|
|
13
|
+
type: 'image_url';
|
|
14
|
+
image_url: {
|
|
13
15
|
url: string;
|
|
14
16
|
detail?: 'auto' | 'low' | 'high';
|
|
15
17
|
};
|
|
16
18
|
}
|
|
19
|
+
/** Text content part */
|
|
20
|
+
export interface TextContentPart {
|
|
21
|
+
type: 'text';
|
|
22
|
+
text: string;
|
|
23
|
+
}
|
|
24
|
+
/** Image sugar content part (SDK convenience format) */
|
|
25
|
+
export interface ImageContentPart {
|
|
26
|
+
type: 'image';
|
|
27
|
+
image: ImageSource;
|
|
28
|
+
/** Optional detail level for image processing */
|
|
29
|
+
detail?: 'auto' | 'low' | 'high';
|
|
30
|
+
}
|
|
31
|
+
/** Content part for multimodal messages */
|
|
32
|
+
export type ContentPart = TextContentPart | ImageUrlContentPart | ImageContentPart;
|
|
17
33
|
export interface ToolCall {
|
|
18
34
|
id: string;
|
|
19
35
|
type: 'function';
|
package/dist/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IACxB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC;IACxB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,WAAW
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED