@morsehq-dev/sdk 0.4.0-rc.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/LICENSE +21 -0
- package/README.md +294 -0
- package/dist/anthropic/index.cjs +39 -0
- package/dist/anthropic/index.cjs.map +1 -0
- package/dist/anthropic/index.d.cts +213 -0
- package/dist/anthropic/index.d.ts +213 -0
- package/dist/anthropic/index.js +6 -0
- package/dist/anthropic/index.js.map +1 -0
- package/dist/anthropic-agent-sdk/index.cjs +744 -0
- package/dist/anthropic-agent-sdk/index.cjs.map +1 -0
- package/dist/anthropic-agent-sdk/index.d.cts +371 -0
- package/dist/anthropic-agent-sdk/index.d.ts +371 -0
- package/dist/anthropic-agent-sdk/index.js +735 -0
- package/dist/anthropic-agent-sdk/index.js.map +1 -0
- package/dist/browser/anthropic/index.cjs +39 -0
- package/dist/browser/anthropic/index.cjs.map +1 -0
- package/dist/browser/anthropic/index.js +6 -0
- package/dist/browser/anthropic/index.js.map +1 -0
- package/dist/browser/anthropic-agent-sdk/index.cjs +744 -0
- package/dist/browser/anthropic-agent-sdk/index.cjs.map +1 -0
- package/dist/browser/anthropic-agent-sdk/index.js +735 -0
- package/dist/browser/anthropic-agent-sdk/index.js.map +1 -0
- package/dist/browser/chunk-3643DC7K.cjs +365 -0
- package/dist/browser/chunk-3643DC7K.cjs.map +1 -0
- package/dist/browser/chunk-4FALQMOZ.js +232 -0
- package/dist/browser/chunk-4FALQMOZ.js.map +1 -0
- package/dist/browser/chunk-5J2QBK75.js +884 -0
- package/dist/browser/chunk-5J2QBK75.js.map +1 -0
- package/dist/browser/chunk-7MSXWGAH.js +53 -0
- package/dist/browser/chunk-7MSXWGAH.js.map +1 -0
- package/dist/browser/chunk-A24L5N5N.js +596 -0
- package/dist/browser/chunk-A24L5N5N.js.map +1 -0
- package/dist/browser/chunk-B7DEUDP6.cjs +177 -0
- package/dist/browser/chunk-B7DEUDP6.cjs.map +1 -0
- package/dist/browser/chunk-F6CJACNH.cjs +604 -0
- package/dist/browser/chunk-F6CJACNH.cjs.map +1 -0
- package/dist/browser/chunk-JBOYFQSB.js +412 -0
- package/dist/browser/chunk-JBOYFQSB.js.map +1 -0
- package/dist/browser/chunk-KRBADE6R.cjs +183 -0
- package/dist/browser/chunk-KRBADE6R.cjs.map +1 -0
- package/dist/browser/chunk-MCJYZH6W.cjs +415 -0
- package/dist/browser/chunk-MCJYZH6W.cjs.map +1 -0
- package/dist/browser/chunk-NQG2IAQS.js +178 -0
- package/dist/browser/chunk-NQG2IAQS.js.map +1 -0
- package/dist/browser/chunk-O4HG3OSK.cjs +929 -0
- package/dist/browser/chunk-O4HG3OSK.cjs.map +1 -0
- package/dist/browser/chunk-QWRQJO57.js +363 -0
- package/dist/browser/chunk-QWRQJO57.js.map +1 -0
- package/dist/browser/chunk-SWQOPFE4.cjs +234 -0
- package/dist/browser/chunk-SWQOPFE4.cjs.map +1 -0
- package/dist/browser/chunk-TYDG747E.js +171 -0
- package/dist/browser/chunk-TYDG747E.js.map +1 -0
- package/dist/browser/chunk-TZRSDDFP.cjs +56 -0
- package/dist/browser/chunk-TZRSDDFP.cjs.map +1 -0
- package/dist/browser/index.cjs +587 -0
- package/dist/browser/index.cjs.map +1 -0
- package/dist/browser/index.js +522 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/integrations/pino.cjs +89 -0
- package/dist/browser/integrations/pino.cjs.map +1 -0
- package/dist/browser/integrations/pino.js +86 -0
- package/dist/browser/integrations/pino.js.map +1 -0
- package/dist/browser/langchain/index.cjs +535 -0
- package/dist/browser/langchain/index.cjs.map +1 -0
- package/dist/browser/langchain/index.js +528 -0
- package/dist/browser/langchain/index.js.map +1 -0
- package/dist/browser/langgraph/index.cjs +377 -0
- package/dist/browser/langgraph/index.cjs.map +1 -0
- package/dist/browser/langgraph/index.js +371 -0
- package/dist/browser/langgraph/index.js.map +1 -0
- package/dist/browser/openai/index.cjs +125 -0
- package/dist/browser/openai/index.cjs.map +1 -0
- package/dist/browser/openai/index.js +122 -0
- package/dist/browser/openai/index.js.map +1 -0
- package/dist/browser/openai-agents/index.cjs +689 -0
- package/dist/browser/openai-agents/index.cjs.map +1 -0
- package/dist/browser/openai-agents/index.js +678 -0
- package/dist/browser/openai-agents/index.js.map +1 -0
- package/dist/browser/vercel-ai/index.cjs +233 -0
- package/dist/browser/vercel-ai/index.cjs.map +1 -0
- package/dist/browser/vercel-ai/index.js +231 -0
- package/dist/browser/vercel-ai/index.js.map +1 -0
- package/dist/chunk-4R4SHGOK.js +363 -0
- package/dist/chunk-4R4SHGOK.js.map +1 -0
- package/dist/chunk-7EO7MQBA.cjs +183 -0
- package/dist/chunk-7EO7MQBA.cjs.map +1 -0
- package/dist/chunk-7YCENA54.cjs +604 -0
- package/dist/chunk-7YCENA54.cjs.map +1 -0
- package/dist/chunk-CKFOGDUF.js +596 -0
- package/dist/chunk-CKFOGDUF.js.map +1 -0
- package/dist/chunk-FJUNILZT.cjs +1324 -0
- package/dist/chunk-FJUNILZT.cjs.map +1 -0
- package/dist/chunk-HDAFUKQ3.js +171 -0
- package/dist/chunk-HDAFUKQ3.js.map +1 -0
- package/dist/chunk-KBWPNIH4.cjs +234 -0
- package/dist/chunk-KBWPNIH4.cjs.map +1 -0
- package/dist/chunk-KJEO52QS.cjs +365 -0
- package/dist/chunk-KJEO52QS.cjs.map +1 -0
- package/dist/chunk-KZBCOZIQ.cjs +177 -0
- package/dist/chunk-KZBCOZIQ.cjs.map +1 -0
- package/dist/chunk-ME5JALGT.js +53 -0
- package/dist/chunk-ME5JALGT.js.map +1 -0
- package/dist/chunk-PVHDEPRE.cjs +56 -0
- package/dist/chunk-PVHDEPRE.cjs.map +1 -0
- package/dist/chunk-RTL23YOQ.js +178 -0
- package/dist/chunk-RTL23YOQ.js.map +1 -0
- package/dist/chunk-TQWI4UYO.js +1277 -0
- package/dist/chunk-TQWI4UYO.js.map +1 -0
- package/dist/chunk-VXDBDPDR.cjs +415 -0
- package/dist/chunk-VXDBDPDR.cjs.map +1 -0
- package/dist/chunk-XTKMUJWI.js +232 -0
- package/dist/chunk-XTKMUJWI.js.map +1 -0
- package/dist/chunk-ZKUGOWER.js +412 -0
- package/dist/chunk-ZKUGOWER.js.map +1 -0
- package/dist/index.cjs +843 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +464 -0
- package/dist/index.d.ts +464 -0
- package/dist/index.js +778 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/pino.cjs +89 -0
- package/dist/integrations/pino.cjs.map +1 -0
- package/dist/integrations/pino.d.cts +65 -0
- package/dist/integrations/pino.d.ts +65 -0
- package/dist/integrations/pino.js +86 -0
- package/dist/integrations/pino.js.map +1 -0
- package/dist/langchain/index.cjs +535 -0
- package/dist/langchain/index.cjs.map +1 -0
- package/dist/langchain/index.d.cts +265 -0
- package/dist/langchain/index.d.ts +265 -0
- package/dist/langchain/index.js +528 -0
- package/dist/langchain/index.js.map +1 -0
- package/dist/langgraph/index.cjs +377 -0
- package/dist/langgraph/index.cjs.map +1 -0
- package/dist/langgraph/index.d.cts +324 -0
- package/dist/langgraph/index.d.ts +324 -0
- package/dist/langgraph/index.js +371 -0
- package/dist/langgraph/index.js.map +1 -0
- package/dist/openai/index.cjs +125 -0
- package/dist/openai/index.cjs.map +1 -0
- package/dist/openai/index.d.cts +136 -0
- package/dist/openai/index.d.ts +136 -0
- package/dist/openai/index.js +122 -0
- package/dist/openai/index.js.map +1 -0
- package/dist/openai-agents/index.cjs +689 -0
- package/dist/openai-agents/index.cjs.map +1 -0
- package/dist/openai-agents/index.d.cts +502 -0
- package/dist/openai-agents/index.d.ts +502 -0
- package/dist/openai-agents/index.js +678 -0
- package/dist/openai-agents/index.js.map +1 -0
- package/dist/spans-DZtMuBvc.d.cts +73 -0
- package/dist/spans-DZtMuBvc.d.ts +73 -0
- package/dist/tracing-BYAqjT5Q.d.cts +114 -0
- package/dist/tracing-rz9cWQ8d.d.ts +114 -0
- package/dist/vercel-ai/index.cjs +233 -0
- package/dist/vercel-ai/index.cjs.map +1 -0
- package/dist/vercel-ai/index.d.cts +93 -0
- package/dist/vercel-ai/index.d.ts +93 -0
- package/dist/vercel-ai/index.js +231 -0
- package/dist/vercel-ai/index.js.map +1 -0
- package/package.json +182 -0
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { C as ContextSegment } from '../spans-DZtMuBvc.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* `@morsehq-dev/sdk/anthropic` — Anthropic SDK instrumentation.
|
|
5
|
+
*
|
|
6
|
+
* Wraps `@anthropic-ai/sdk` `client.messages.create` so every Claude call
|
|
7
|
+
* emits an `llm` span carrying pre-segmented `context_segments`. The
|
|
8
|
+
* server-side classifier then skips its own messages-array partitioning
|
|
9
|
+
* and persists the SDK-supplied segments verbatim.
|
|
10
|
+
*
|
|
11
|
+
* Two entry points:
|
|
12
|
+
*
|
|
13
|
+
* - `wrapAnthropic(client)` — returns a Proxy-like wrapper that
|
|
14
|
+
* intercepts `messages.create`. Always succeeds. The customer keeps
|
|
15
|
+
* using the wrapper as if it were the real client.
|
|
16
|
+
*
|
|
17
|
+
* - `instrumentAnthropic(client?)` — top-level helper. If a client is
|
|
18
|
+
* passed, returns the wrapped form. If no client is passed AND the
|
|
19
|
+
* `@anthropic-ai/sdk` package can be loaded, attempts to patch
|
|
20
|
+
* `Messages.prototype.create` so every fresh `new Anthropic()` is
|
|
21
|
+
* instrumented automatically. The prototype path is best-effort —
|
|
22
|
+
* it is documented as fragile across Anthropic SDK versions, and
|
|
23
|
+
* `wrapAnthropic` is the recommended public entry.
|
|
24
|
+
*
|
|
25
|
+
* Idempotent. `uninstallAnthropic()` restores the prototype and clears
|
|
26
|
+
* the install sentinel.
|
|
27
|
+
*
|
|
28
|
+
* Wrapped under `absorbErrors*` so a tracing failure can never break the
|
|
29
|
+
* customer's Anthropic call — at worst, calls go untraced.
|
|
30
|
+
*
|
|
31
|
+
* Mirrors `apps/sdk/typescript/src/vercel-ai/index.ts` in shape and
|
|
32
|
+
* `openspec/changes/.../specs/observability/spec.md` (CTX-08) in
|
|
33
|
+
* segmentation contract.
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Subset of `@anthropic-ai/sdk`'s `MessageCreateParams` we read from. We
|
|
38
|
+
* deliberately decline to import the real types so the SDK works even when
|
|
39
|
+
* `@anthropic-ai/sdk` isn't installed (it's an optional peer dep).
|
|
40
|
+
*/
|
|
41
|
+
interface AnthropicMessageCreateParams {
|
|
42
|
+
model: string;
|
|
43
|
+
max_tokens?: number;
|
|
44
|
+
system?: string | AnthropicTextBlockParam[];
|
|
45
|
+
messages: AnthropicMessageParam[];
|
|
46
|
+
tools?: AnthropicToolParam[];
|
|
47
|
+
tool_choice?: unknown;
|
|
48
|
+
[key: string]: unknown;
|
|
49
|
+
}
|
|
50
|
+
interface AnthropicTextBlockParam {
|
|
51
|
+
type: "text";
|
|
52
|
+
text: string;
|
|
53
|
+
cache_control?: {
|
|
54
|
+
type: "ephemeral";
|
|
55
|
+
} | null;
|
|
56
|
+
}
|
|
57
|
+
interface AnthropicToolUseBlockParam {
|
|
58
|
+
type: "tool_use";
|
|
59
|
+
id: string;
|
|
60
|
+
name: string;
|
|
61
|
+
input: unknown;
|
|
62
|
+
}
|
|
63
|
+
interface AnthropicToolResultBlockParam {
|
|
64
|
+
type: "tool_result";
|
|
65
|
+
tool_use_id: string;
|
|
66
|
+
content: string | Array<{
|
|
67
|
+
type: string;
|
|
68
|
+
text?: string;
|
|
69
|
+
[k: string]: unknown;
|
|
70
|
+
}>;
|
|
71
|
+
is_error?: boolean;
|
|
72
|
+
}
|
|
73
|
+
type AnthropicContentBlockParam = AnthropicTextBlockParam | AnthropicToolUseBlockParam | AnthropicToolResultBlockParam | {
|
|
74
|
+
type: string;
|
|
75
|
+
[k: string]: unknown;
|
|
76
|
+
};
|
|
77
|
+
interface AnthropicMessageParam {
|
|
78
|
+
role: "user" | "assistant" | string;
|
|
79
|
+
content: string | AnthropicContentBlockParam[];
|
|
80
|
+
}
|
|
81
|
+
interface AnthropicToolParam {
|
|
82
|
+
name: string;
|
|
83
|
+
description?: string;
|
|
84
|
+
input_schema?: unknown;
|
|
85
|
+
[key: string]: unknown;
|
|
86
|
+
}
|
|
87
|
+
interface AnthropicUsage {
|
|
88
|
+
input_tokens?: number;
|
|
89
|
+
output_tokens?: number;
|
|
90
|
+
cache_creation_input_tokens?: number;
|
|
91
|
+
cache_read_input_tokens?: number;
|
|
92
|
+
[key: string]: unknown;
|
|
93
|
+
}
|
|
94
|
+
interface AnthropicMessageResponse {
|
|
95
|
+
id?: string;
|
|
96
|
+
model?: string;
|
|
97
|
+
usage?: AnthropicUsage;
|
|
98
|
+
content?: Array<{
|
|
99
|
+
type: string;
|
|
100
|
+
text?: string;
|
|
101
|
+
[k: string]: unknown;
|
|
102
|
+
}>;
|
|
103
|
+
[key: string]: unknown;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Structural shape of the Anthropic client we wrap. We only require that
|
|
107
|
+
* `client.messages.create` is a function returning a Promise.
|
|
108
|
+
*/
|
|
109
|
+
interface AnthropicClientLike {
|
|
110
|
+
messages: {
|
|
111
|
+
create(params: AnthropicMessageCreateParams, options?: unknown): Promise<AnthropicMessageResponse>;
|
|
112
|
+
[key: string]: unknown;
|
|
113
|
+
};
|
|
114
|
+
[key: string]: unknown;
|
|
115
|
+
}
|
|
116
|
+
interface InstrumentAnthropicOptions {
|
|
117
|
+
/**
|
|
118
|
+
* When provided, used as the parent agent span's name. Defaults to
|
|
119
|
+
* `"anthropic.messages.create"`.
|
|
120
|
+
*/
|
|
121
|
+
defaultAgentName?: string;
|
|
122
|
+
/**
|
|
123
|
+
* If a fresh Anthropic *module* import is passed (e.g.,
|
|
124
|
+
* `await import("@anthropic-ai/sdk")`), the adapter will best-effort
|
|
125
|
+
* patch `Messages.prototype.create`. Most users should prefer
|
|
126
|
+
* `wrapAnthropic(client)` instead.
|
|
127
|
+
*/
|
|
128
|
+
anthropicModule?: unknown;
|
|
129
|
+
/**
|
|
130
|
+
* When `true` (MEM-11), every wrapped `messages.create` call also
|
|
131
|
+
* emits a sibling `memory`-type span with
|
|
132
|
+
* `metadata.memory_op_type="consolidate"`, `parent_span_id` linking
|
|
133
|
+
* back to the LLM span (server treats this as `producer_span_id`),
|
|
134
|
+
* `metadata.summary_token_count` from the response's output_tokens,
|
|
135
|
+
* and `metadata.summary_content_hash` (SHA-256 of the response's
|
|
136
|
+
* first text block).
|
|
137
|
+
*
|
|
138
|
+
* Use this flag when the customer is calling Claude to summarize
|
|
139
|
+
* their own conversation context (the customer-side compaction
|
|
140
|
+
* pattern). Default `false` — existing callers see zero behavior change.
|
|
141
|
+
*
|
|
142
|
+
* Opt-in only. The adapter never auto-detects summarization from
|
|
143
|
+
* system-prompt content (too many false positives).
|
|
144
|
+
*/
|
|
145
|
+
summarize?: boolean;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Wrap an Anthropic client so every `messages.create` call records an
|
|
149
|
+
* `llm` span with `context_segments`. The wrapper preserves the rest of
|
|
150
|
+
* the client's surface (other resources, helpers, etc.) via a Proxy.
|
|
151
|
+
*
|
|
152
|
+
* Idempotent — a previously wrapped client is returned as-is.
|
|
153
|
+
*/
|
|
154
|
+
declare function wrapAnthropic<C extends AnthropicClientLike>(client: C, options?: InstrumentAnthropicOptions): C;
|
|
155
|
+
/**
|
|
156
|
+
* Top-level installer. Two modes:
|
|
157
|
+
*
|
|
158
|
+
* - `instrumentAnthropic(client)` — equivalent to `wrapAnthropic(client)`.
|
|
159
|
+
* - `instrumentAnthropic({ anthropicModule: mod })` — best-effort
|
|
160
|
+
* prototype patch. Prefer the wrap form when possible.
|
|
161
|
+
*
|
|
162
|
+
* Always returns the wrapped client, or `undefined` if patching failed.
|
|
163
|
+
* Errors are absorbed; this function never throws back at the caller.
|
|
164
|
+
*/
|
|
165
|
+
declare const instrumentAnthropic: <C extends AnthropicClientLike>(clientOrOptions?: InstrumentAnthropicOptions | C | undefined, maybeOptions?: InstrumentAnthropicOptions | undefined) => Promise<boolean | C | undefined>;
|
|
166
|
+
/**
|
|
167
|
+
* Restore the prototype patch and clear the install sentinel.
|
|
168
|
+
*
|
|
169
|
+
* Pass the same module reference that was given to `instrumentAnthropic`
|
|
170
|
+
* (or omit and the function will try to dynamic-import it). Calling
|
|
171
|
+
* `uninstallAnthropic()` on a wrapped client (vs. a module) is a no-op —
|
|
172
|
+
* just discard the wrapped client.
|
|
173
|
+
*/
|
|
174
|
+
declare const uninstallAnthropic: (anthropicModule?: unknown) => void | undefined;
|
|
175
|
+
/**
|
|
176
|
+
* Reset module-level install state for tests. Not part of the public API.
|
|
177
|
+
* @internal
|
|
178
|
+
*/
|
|
179
|
+
declare function _resetAnthropicInstallStateForTesting(): void;
|
|
180
|
+
/** True when a wrapped Anthropic client is passed in. */
|
|
181
|
+
declare function isAnthropicWrapped(client: unknown): boolean;
|
|
182
|
+
/**
|
|
183
|
+
* Maximum bytes of `content` we ship per segment. Long blobs are truncated
|
|
184
|
+
* with `content_truncated: true`. The server further enforces its own
|
|
185
|
+
* cap; we keep the SDK floor lower to stay friendly to mobile networks.
|
|
186
|
+
*/
|
|
187
|
+
declare const MAX_SEGMENT_CONTENT_BYTES = 4096;
|
|
188
|
+
/**
|
|
189
|
+
* Extract `ContextSegment[]` from an Anthropic `messages.create` request
|
|
190
|
+
* + response. The ordering is:
|
|
191
|
+
*
|
|
192
|
+
* 1. `tools` → one `tool_descriptions` segment, position 0.
|
|
193
|
+
* 2. `system` → `system_prompt` segment.
|
|
194
|
+
* 3. Each prior `user` / `assistant` message → `chat_history` segment.
|
|
195
|
+
* `tool_result` blocks (always inside `user.content`) become their
|
|
196
|
+
* own `tool_observation` segments.
|
|
197
|
+
* `tool_use` blocks (assistant-emitted) roll into the parent
|
|
198
|
+
* assistant `chat_history` segment as part of the JSON content.
|
|
199
|
+
* 4. The final `user` message → `current_input`.
|
|
200
|
+
*
|
|
201
|
+
* Cache state heuristic:
|
|
202
|
+
* - `system` blocks with `cache_control.type === "ephemeral"` →
|
|
203
|
+
* `cache_write`.
|
|
204
|
+
* - If the response reports `cache_read_input_tokens > 0`, mark the
|
|
205
|
+
* `system_prompt` and `tool_descriptions` segments as `cache_hit`
|
|
206
|
+
* (overrides `cache_write` — the cache HIT is more informative
|
|
207
|
+
* than the cache write attempt).
|
|
208
|
+
*
|
|
209
|
+
* `tokens` is intentionally left undefined — the server tokenizes.
|
|
210
|
+
*/
|
|
211
|
+
declare function extractAnthropicSegments(params: AnthropicMessageCreateParams, response?: AnthropicMessageResponse): ContextSegment[];
|
|
212
|
+
|
|
213
|
+
export { type AnthropicClientLike, type AnthropicContentBlockParam, type AnthropicMessageCreateParams, type AnthropicMessageParam, type AnthropicMessageResponse, type AnthropicTextBlockParam, type AnthropicToolParam, type AnthropicToolResultBlockParam, type AnthropicToolUseBlockParam, type AnthropicUsage, type InstrumentAnthropicOptions, MAX_SEGMENT_CONTENT_BYTES, _resetAnthropicInstallStateForTesting, extractAnthropicSegments, instrumentAnthropic, isAnthropicWrapped, uninstallAnthropic, wrapAnthropic };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { MAX_SEGMENT_CONTENT_BYTES, _resetAnthropicInstallStateForTesting, extractAnthropicSegments, instrumentAnthropic, isAnthropicWrapped, uninstallAnthropic, wrapAnthropic } from '../chunk-CKFOGDUF.js';
|
|
2
|
+
import '../chunk-RTL23YOQ.js';
|
|
3
|
+
import '../chunk-XTKMUJWI.js';
|
|
4
|
+
import '../chunk-TQWI4UYO.js';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|