@traceai/cohere 0.1.0 → 0.1.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/README.md +78 -369
- package/dist/esm/attributes.d.ts +11 -0
- package/dist/esm/attributes.d.ts.map +1 -0
- package/dist/esm/attributes.js +240 -0
- package/dist/esm/attributes.js.map +1 -0
- package/dist/esm/instrumentation.d.ts +11 -20
- package/dist/esm/instrumentation.d.ts.map +1 -1
- package/dist/esm/instrumentation.js +175 -344
- package/dist/esm/instrumentation.js.map +1 -1
- package/dist/esm/stream.d.ts +6 -0
- package/dist/esm/stream.d.ts.map +1 -0
- package/dist/esm/stream.js +215 -0
- package/dist/esm/stream.js.map +1 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/esnext/attributes.d.ts +11 -0
- package/dist/esnext/attributes.d.ts.map +1 -0
- package/dist/esnext/attributes.js +248 -0
- package/dist/esnext/attributes.js.map +1 -0
- package/dist/esnext/instrumentation.d.ts +11 -20
- package/dist/esnext/instrumentation.d.ts.map +1 -1
- package/dist/esnext/instrumentation.js +178 -331
- package/dist/esnext/instrumentation.js.map +1 -1
- package/dist/esnext/stream.d.ts +6 -0
- package/dist/esnext/stream.d.ts.map +1 -0
- package/dist/esnext/stream.js +203 -0
- package/dist/esnext/stream.js.map +1 -0
- package/dist/esnext/tsconfig.esnext.tsbuildinfo +1 -1
- package/dist/esnext/version.d.ts +1 -1
- package/dist/esnext/version.js +1 -1
- package/dist/esnext/version.js.map +1 -1
- package/dist/src/__tests__/attributes.test.d.ts +2 -0
- package/dist/src/__tests__/attributes.test.d.ts.map +1 -0
- package/dist/src/__tests__/attributes.test.js +50 -0
- package/dist/src/__tests__/attributes.test.js.map +1 -0
- package/dist/src/__tests__/auto.test.d.ts +2 -0
- package/dist/src/__tests__/auto.test.d.ts.map +1 -0
- package/dist/src/__tests__/auto.test.js +70 -0
- package/dist/src/__tests__/auto.test.js.map +1 -0
- package/dist/src/__tests__/instrumentation.test.js +1 -1
- package/dist/src/__tests__/instrumentation.test.js.map +1 -1
- package/dist/src/__tests__/lifecycle.test.d.ts +2 -0
- package/dist/src/__tests__/lifecycle.test.d.ts.map +1 -0
- package/dist/src/__tests__/lifecycle.test.js +232 -0
- package/dist/src/__tests__/lifecycle.test.js.map +1 -0
- package/dist/src/__tests__/metadata.test.d.ts +2 -0
- package/dist/src/__tests__/metadata.test.d.ts.map +1 -0
- package/dist/src/__tests__/metadata.test.js +320 -0
- package/dist/src/__tests__/metadata.test.js.map +1 -0
- package/dist/src/__tests__/sdk.test.d.ts +2 -0
- package/dist/src/__tests__/sdk.test.d.ts.map +1 -0
- package/dist/src/__tests__/sdk.test.js +883 -0
- package/dist/src/__tests__/sdk.test.js.map +1 -0
- package/dist/src/__tests__/timing.test.d.ts +2 -0
- package/dist/src/__tests__/timing.test.d.ts.map +1 -0
- package/dist/src/__tests__/timing.test.js +158 -0
- package/dist/src/__tests__/timing.test.js.map +1 -0
- package/dist/src/attributes.d.ts +11 -0
- package/dist/src/attributes.d.ts.map +1 -0
- package/dist/src/attributes.js +257 -0
- package/dist/src/attributes.js.map +1 -0
- package/dist/src/instrumentation.d.ts +11 -20
- package/dist/src/instrumentation.d.ts.map +1 -1
- package/dist/src/instrumentation.js +176 -329
- package/dist/src/instrumentation.js.map +1 -1
- package/dist/src/stream.d.ts +6 -0
- package/dist/src/stream.d.ts.map +1 -0
- package/dist/src/stream.js +215 -0
- package/dist/src/stream.js.map +1 -0
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +18 -11
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import { context } from "@opentelemetry/api";
|
|
2
|
+
import { performance } from "node:perf_hooks";
|
|
3
|
+
import { object, list } from "./attributes";
|
|
4
|
+
/** Ignore metadata/empty deltas. Inspect content even when capture is disabled,
|
|
5
|
+
* without retaining it, so privacy does not change timing semantics.
|
|
6
|
+
*/
|
|
7
|
+
function hasGeneratedContent(value) {
|
|
8
|
+
var _a, _b, _c, _d, _e, _f;
|
|
9
|
+
const event = object(value);
|
|
10
|
+
const type = (_b = (_a = event.type) !== null && _a !== void 0 ? _a : event.eventType) !== null && _b !== void 0 ? _b : event.event_type;
|
|
11
|
+
const message = object(object(event.delta).message);
|
|
12
|
+
const nonempty = (value) => typeof value === "string" && value.length > 0;
|
|
13
|
+
const toolContent = (value) => {
|
|
14
|
+
const tool = object(value);
|
|
15
|
+
const fn = object(tool.function);
|
|
16
|
+
return nonempty(tool.text) || nonempty(tool.name) || nonempty(tool.parameters) || nonempty(fn.name) || nonempty(fn.arguments);
|
|
17
|
+
};
|
|
18
|
+
switch (type) {
|
|
19
|
+
case "text-generation": return nonempty(event.text);
|
|
20
|
+
case "content-start":
|
|
21
|
+
case "content-delta": {
|
|
22
|
+
const content = object(message.content);
|
|
23
|
+
return nonempty(content.text) || nonempty(content.thinking);
|
|
24
|
+
}
|
|
25
|
+
case "tool-plan-delta": return nonempty((_c = message.toolPlan) !== null && _c !== void 0 ? _c : message.tool_plan);
|
|
26
|
+
case "tool-call-start":
|
|
27
|
+
case "tool-call-delta": return toolContent((_d = message.toolCalls) !== null && _d !== void 0 ? _d : message.tool_calls);
|
|
28
|
+
case "tool-calls-chunk": return toolContent((_e = event.toolCallDelta) !== null && _e !== void 0 ? _e : event.tool_call_delta);
|
|
29
|
+
case "tool-calls-generation": return nonempty(event.text) || list((_f = event.toolCalls) !== null && _f !== void 0 ? _f : event.tool_calls).some(toolContent);
|
|
30
|
+
default: return false;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/** Aggregate content, not the event log. Consumers still receive original events. */
|
|
34
|
+
class ChatAccumulator {
|
|
35
|
+
constructor(captureContent) {
|
|
36
|
+
this.captureContent = captureContent;
|
|
37
|
+
this.text = "";
|
|
38
|
+
this.toolPlan = "";
|
|
39
|
+
this.content = new Map();
|
|
40
|
+
this.tools = new Map();
|
|
41
|
+
this.citations = new Map();
|
|
42
|
+
this.response = {};
|
|
43
|
+
}
|
|
44
|
+
add(value) {
|
|
45
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
|
|
46
|
+
const event = object(value);
|
|
47
|
+
const type = (_b = (_a = event.type) !== null && _a !== void 0 ? _a : event.eventType) !== null && _b !== void 0 ? _b : event.event_type;
|
|
48
|
+
const delta = object(event.delta);
|
|
49
|
+
const message = object(delta.message);
|
|
50
|
+
if (type === "message-start" || type === "stream-start") {
|
|
51
|
+
const id = (_d = (_c = event.id) !== null && _c !== void 0 ? _c : event.generationId) !== null && _d !== void 0 ? _d : event.generation_id;
|
|
52
|
+
if (typeof id === "string")
|
|
53
|
+
this.response.id = id;
|
|
54
|
+
}
|
|
55
|
+
if (this.captureContent) {
|
|
56
|
+
if ((type === "citation-start" || type === "citation-end") && message.citations) {
|
|
57
|
+
const index = typeof event.index === "number" ? event.index : 0;
|
|
58
|
+
this.citations.set(index, Object.assign(Object.assign({}, this.citations.get(index)), object(message.citations)));
|
|
59
|
+
}
|
|
60
|
+
if (type === "text-generation" && typeof event.text === "string")
|
|
61
|
+
this.text += event.text;
|
|
62
|
+
if (type === "content-start" || type === "content-delta") {
|
|
63
|
+
const content = object(message.content);
|
|
64
|
+
const index = typeof event.index === "number" ? event.index : 0;
|
|
65
|
+
const previous = (_e = this.content.get(index)) !== null && _e !== void 0 ? _e : {};
|
|
66
|
+
const block = Object.assign({}, previous);
|
|
67
|
+
// Keep reasoning separate from visible text, preserving block order and
|
|
68
|
+
// partial content even when a stream ends before its terminal event.
|
|
69
|
+
for (const key of ["text", "thinking"]) {
|
|
70
|
+
if (typeof content[key] === "string") {
|
|
71
|
+
block.type = (_g = (_f = content.type) !== null && _f !== void 0 ? _f : block.type) !== null && _g !== void 0 ? _g : key;
|
|
72
|
+
block[key] = String((_h = previous[key]) !== null && _h !== void 0 ? _h : "") + content[key];
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (block.type)
|
|
76
|
+
this.content.set(index, block);
|
|
77
|
+
if (typeof content.text === "string")
|
|
78
|
+
this.text += content.text;
|
|
79
|
+
}
|
|
80
|
+
if (type === "tool-plan-delta") {
|
|
81
|
+
const plan = (_j = message.toolPlan) !== null && _j !== void 0 ? _j : message.tool_plan;
|
|
82
|
+
if (typeof plan === "string")
|
|
83
|
+
this.toolPlan += plan;
|
|
84
|
+
}
|
|
85
|
+
if (type === "tool-calls-chunk") {
|
|
86
|
+
const call = object((_k = event.toolCallDelta) !== null && _k !== void 0 ? _k : event.tool_call_delta);
|
|
87
|
+
if (typeof call.text === "string")
|
|
88
|
+
this.toolPlan += call.text;
|
|
89
|
+
const index = typeof call.index === "number" ? call.index : 0;
|
|
90
|
+
const previous = (_l = this.tools.get(index)) !== null && _l !== void 0 ? _l : {};
|
|
91
|
+
this.tools.set(index, Object.assign(Object.assign(Object.assign({}, previous), (typeof call.name === "string" ? { name: call.name } : {})), {
|
|
92
|
+
// These are JSON fragments, not objects: retain unfinished arguments.
|
|
93
|
+
parameters: String((_m = previous.parameters) !== null && _m !== void 0 ? _m : "") + String((_o = call.parameters) !== null && _o !== void 0 ? _o : "") }));
|
|
94
|
+
}
|
|
95
|
+
if (type === "tool-calls-generation") {
|
|
96
|
+
if (typeof event.text === "string")
|
|
97
|
+
this.toolPlan = event.text;
|
|
98
|
+
this.tools.clear();
|
|
99
|
+
list((_p = event.toolCalls) !== null && _p !== void 0 ? _p : event.tool_calls).forEach((call, index) => this.tools.set(index, object(call)));
|
|
100
|
+
}
|
|
101
|
+
if (type === "tool-call-start" || type === "tool-call-delta") {
|
|
102
|
+
const call = object((_q = message.toolCalls) !== null && _q !== void 0 ? _q : message.tool_calls);
|
|
103
|
+
const index = typeof event.index === "number" ? event.index : 0;
|
|
104
|
+
const previous = (_r = this.tools.get(index)) !== null && _r !== void 0 ? _r : {};
|
|
105
|
+
const fn = object(call.function);
|
|
106
|
+
const previousFn = object(previous.function);
|
|
107
|
+
this.tools.set(index, Object.assign(Object.assign(Object.assign({}, previous), call), { function: Object.assign(Object.assign(Object.assign({}, previousFn), fn), { arguments: String((_s = previousFn.arguments) !== null && _s !== void 0 ? _s : "") + String((_t = fn.arguments) !== null && _t !== void 0 ? _t : "") }) }));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (type === "stream-end") {
|
|
111
|
+
const response = object(event.response);
|
|
112
|
+
// V1's terminal text is authoritative after provisional tool chunks.
|
|
113
|
+
if (this.toolPlan && typeof response.text === "string" && response.text)
|
|
114
|
+
this.toolPlan = response.text;
|
|
115
|
+
this.response = Object.assign(Object.assign(Object.assign({}, this.response), response), { finishReason: (_w = (_v = (_u = event.finishReason) !== null && _u !== void 0 ? _u : event.finish_reason) !== null && _v !== void 0 ? _v : response.finishReason) !== null && _w !== void 0 ? _w : response.finish_reason });
|
|
116
|
+
}
|
|
117
|
+
if (type === "message-end")
|
|
118
|
+
this.response = Object.assign(Object.assign({}, this.response), { usage: delta.usage, finishReason: (_x = delta.finishReason) !== null && _x !== void 0 ? _x : delta.finish_reason });
|
|
119
|
+
return type === "stream-end" || type === "message-end";
|
|
120
|
+
}
|
|
121
|
+
result() {
|
|
122
|
+
var _a;
|
|
123
|
+
if (!this.captureContent)
|
|
124
|
+
return {
|
|
125
|
+
id: this.response.id, generationId: (_a = this.response.generationId) !== null && _a !== void 0 ? _a : this.response.generation_id,
|
|
126
|
+
usage: this.response.usage, meta: this.response.meta, finishReason: this.response.finishReason,
|
|
127
|
+
};
|
|
128
|
+
// V1's terminal response has authoritative text/tool calls; v2 only sends usage.
|
|
129
|
+
return Object.assign(Object.assign({ text: this.text, toolCalls: [...this.tools].sort(([a], [b]) => a - b).map(([, call]) => call) }, (this.content.size || this.toolPlan || this.citations.size ? { message: Object.assign(Object.assign(Object.assign({ role: "assistant" }, (this.content.size ? { content: [...this.content].sort(([a], [b]) => a - b).map(([, block]) => block) } : {})), (this.toolPlan ? { toolPlan: this.toolPlan } : {})), (this.citations.size ? { citations: [...this.citations].sort(([a], [b]) => a - b).map(([, citation]) => citation) } : {})) } : {})), this.response);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
export function wrapStream(stream, execContext, captureContent, finish, requestStart) {
|
|
133
|
+
var _a;
|
|
134
|
+
const accumulator = new ChatAccumulator(captureContent);
|
|
135
|
+
let timeToFirstTokenMs;
|
|
136
|
+
const signal = (_a = stream.controller) === null || _a === void 0 ? void 0 : _a.signal;
|
|
137
|
+
let ended = false;
|
|
138
|
+
const end = (error, cancelled = false) => {
|
|
139
|
+
if (ended)
|
|
140
|
+
return;
|
|
141
|
+
ended = true;
|
|
142
|
+
signal === null || signal === void 0 ? void 0 : signal.removeEventListener("abort", onAbort);
|
|
143
|
+
finish(accumulator.result(), error, cancelled, timeToFirstTokenMs);
|
|
144
|
+
};
|
|
145
|
+
const onAbort = () => end(undefined, true);
|
|
146
|
+
signal === null || signal === void 0 ? void 0 : signal.addEventListener("abort", onAbort, { once: true });
|
|
147
|
+
if (signal === null || signal === void 0 ? void 0 : signal.aborted)
|
|
148
|
+
onAbort();
|
|
149
|
+
return new Proxy(stream, {
|
|
150
|
+
get(target, key) {
|
|
151
|
+
if (key === Symbol.asyncIterator)
|
|
152
|
+
return () => {
|
|
153
|
+
let iterator;
|
|
154
|
+
try {
|
|
155
|
+
iterator = context.with(execContext, () => target[Symbol.asyncIterator]());
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
end(error !== null && error !== void 0 ? error : new Error("Cohere stream failed"));
|
|
159
|
+
throw error;
|
|
160
|
+
}
|
|
161
|
+
const invoke = async (method, value) => {
|
|
162
|
+
try {
|
|
163
|
+
const fn = iterator[method];
|
|
164
|
+
if (!fn) {
|
|
165
|
+
if (method === "throw")
|
|
166
|
+
throw value;
|
|
167
|
+
end(undefined, method === "return");
|
|
168
|
+
return { done: true, value };
|
|
169
|
+
}
|
|
170
|
+
const result = await context.with(execContext, () => fn.call(iterator, value));
|
|
171
|
+
if (!ended && !result.done) {
|
|
172
|
+
if (timeToFirstTokenMs === undefined && hasGeneratedContent(result.value)) {
|
|
173
|
+
timeToFirstTokenMs = performance.now() - requestStart;
|
|
174
|
+
}
|
|
175
|
+
const terminal = accumulator.add(result.value);
|
|
176
|
+
if (terminal)
|
|
177
|
+
end();
|
|
178
|
+
}
|
|
179
|
+
if (!ended && (result.done || method === "return")) {
|
|
180
|
+
// Terminal events finish the span above. A clean transport EOF
|
|
181
|
+
// without one is still an incomplete generation, not success.
|
|
182
|
+
end(method === "return" ? undefined : new Error("Cohere stream ended without a terminal event"), method === "return");
|
|
183
|
+
}
|
|
184
|
+
return result;
|
|
185
|
+
}
|
|
186
|
+
catch (error) {
|
|
187
|
+
end(error !== null && error !== void 0 ? error : new Error("Cohere stream failed"));
|
|
188
|
+
throw error;
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
return {
|
|
192
|
+
next: (value) => invoke("next", value),
|
|
193
|
+
return: (value) => invoke("return", value),
|
|
194
|
+
throw: (error) => invoke("throw", error),
|
|
195
|
+
[Symbol.asyncIterator]() { return this; },
|
|
196
|
+
};
|
|
197
|
+
};
|
|
198
|
+
const value = Reflect.get(target, key, target);
|
|
199
|
+
return typeof value === "function" ? value.bind(target) : value;
|
|
200
|
+
},
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"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"}
|