@anthropic-ai/sdk 0.102.0 → 0.103.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/CHANGELOG.md +15 -0
- package/client.d.mts +30 -7
- package/client.d.mts.map +1 -1
- package/client.d.ts +30 -7
- package/client.d.ts.map +1 -1
- package/client.js +48 -25
- package/client.js.map +1 -1
- package/client.mjs +47 -24
- package/client.mjs.map +1 -1
- package/core/middleware.d.mts +42 -5
- package/core/middleware.d.mts.map +1 -1
- package/core/middleware.d.ts +42 -5
- package/core/middleware.d.ts.map +1 -1
- package/core/middleware.js +14 -7
- package/core/middleware.js.map +1 -1
- package/core/middleware.mjs +14 -7
- package/core/middleware.mjs.map +1 -1
- package/core/streaming.d.mts +9 -0
- package/core/streaming.d.mts.map +1 -1
- package/core/streaming.d.ts +9 -0
- package/core/streaming.d.ts.map +1 -1
- package/core/streaming.js +11 -0
- package/core/streaming.js.map +1 -1
- package/core/streaming.mjs +11 -0
- package/core/streaming.mjs.map +1 -1
- package/index.d.mts +1 -0
- package/index.d.mts.map +1 -1
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/index.js +4 -1
- package/index.js.map +1 -1
- package/index.mjs +1 -0
- package/index.mjs.map +1 -1
- package/internal/parse.d.mts.map +1 -1
- package/internal/parse.d.ts.map +1 -1
- package/internal/parse.js +0 -3
- package/internal/parse.js.map +1 -1
- package/internal/parse.mjs +0 -3
- package/internal/parse.mjs.map +1 -1
- package/internal/request-options.d.mts +46 -3
- package/internal/request-options.d.mts.map +1 -1
- package/internal/request-options.d.ts +46 -3
- package/internal/request-options.d.ts.map +1 -1
- package/internal/request-options.js +12 -1
- package/internal/request-options.js.map +1 -1
- package/internal/request-options.mjs +10 -0
- package/internal/request-options.mjs.map +1 -1
- package/internal/utils/log.d.mts +11 -1
- package/internal/utils/log.d.mts.map +1 -1
- package/internal/utils/log.d.ts +11 -1
- package/internal/utils/log.d.ts.map +1 -1
- package/internal/utils/log.js +34 -9
- package/internal/utils/log.js.map +1 -1
- package/internal/utils/log.mjs +32 -8
- package/internal/utils/log.mjs.map +1 -1
- package/lib/BetaMessageStream.d.mts.map +1 -1
- package/lib/BetaMessageStream.d.ts.map +1 -1
- package/lib/BetaMessageStream.js +5 -0
- package/lib/BetaMessageStream.js.map +1 -1
- package/lib/BetaMessageStream.mjs +5 -0
- package/lib/BetaMessageStream.mjs.map +1 -1
- package/lib/middleware.d.mts +96 -0
- package/lib/middleware.d.mts.map +1 -0
- package/lib/middleware.d.ts +96 -0
- package/lib/middleware.d.ts.map +1 -0
- package/lib/middleware.js +703 -0
- package/lib/middleware.js.map +1 -0
- package/lib/middleware.mjs +698 -0
- package/lib/middleware.mjs.map +1 -0
- package/lib/tools/BetaToolRunner.d.mts +1 -1
- package/lib/tools/BetaToolRunner.d.mts.map +1 -1
- package/lib/tools/BetaToolRunner.d.ts +1 -1
- package/lib/tools/BetaToolRunner.d.ts.map +1 -1
- package/lib/tools/BetaToolRunner.js +10 -2
- package/lib/tools/BetaToolRunner.js.map +1 -1
- package/lib/tools/BetaToolRunner.mjs +10 -2
- package/lib/tools/BetaToolRunner.mjs.map +1 -1
- package/package.json +1 -1
- package/resources/beta/agents/agents.d.mts +1 -1
- package/resources/beta/agents/agents.d.mts.map +1 -1
- package/resources/beta/agents/agents.d.ts +1 -1
- package/resources/beta/agents/agents.d.ts.map +1 -1
- package/resources/beta/agents/agents.js.map +1 -1
- package/resources/beta/agents/agents.mjs.map +1 -1
- package/resources/beta/beta.d.mts +3 -3
- package/resources/beta/beta.d.mts.map +1 -1
- package/resources/beta/beta.d.ts +3 -3
- package/resources/beta/beta.d.ts.map +1 -1
- package/resources/beta/beta.js.map +1 -1
- package/resources/beta/beta.mjs.map +1 -1
- package/resources/beta/index.d.mts +1 -1
- package/resources/beta/index.d.mts.map +1 -1
- package/resources/beta/index.d.ts +1 -1
- package/resources/beta/index.d.ts.map +1 -1
- package/resources/beta/index.js.map +1 -1
- package/resources/beta/index.mjs.map +1 -1
- package/resources/beta/messages/batches.d.mts +28 -0
- package/resources/beta/messages/batches.d.mts.map +1 -1
- package/resources/beta/messages/batches.d.ts +28 -0
- package/resources/beta/messages/batches.d.ts.map +1 -1
- package/resources/beta/messages/index.d.mts +1 -1
- package/resources/beta/messages/index.d.mts.map +1 -1
- package/resources/beta/messages/index.d.ts +1 -1
- package/resources/beta/messages/index.d.ts.map +1 -1
- package/resources/beta/messages/index.js.map +1 -1
- package/resources/beta/messages/index.mjs.map +1 -1
- package/resources/beta/messages/messages.d.mts +234 -6
- package/resources/beta/messages/messages.d.mts.map +1 -1
- package/resources/beta/messages/messages.d.ts +234 -6
- package/resources/beta/messages/messages.d.ts.map +1 -1
- package/resources/beta/messages/messages.js +7 -0
- package/resources/beta/messages/messages.js.map +1 -1
- package/resources/beta/messages/messages.mjs +7 -0
- package/resources/beta/messages/messages.mjs.map +1 -1
- package/resources/beta/models.d.mts +6 -0
- package/resources/beta/models.d.mts.map +1 -1
- package/resources/beta/models.d.ts +6 -0
- package/resources/beta/models.d.ts.map +1 -1
- package/resources/messages/messages.d.mts +2 -2
- package/resources/messages/messages.d.mts.map +1 -1
- package/resources/messages/messages.d.ts +2 -2
- package/resources/messages/messages.d.ts.map +1 -1
- package/resources/messages/messages.js +1 -0
- package/resources/messages/messages.js.map +1 -1
- package/resources/messages/messages.mjs +1 -0
- package/resources/messages/messages.mjs.map +1 -1
- package/src/client.ts +55 -24
- package/src/core/middleware.ts +53 -7
- package/src/core/streaming.ts +15 -0
- package/src/index.ts +6 -0
- package/src/internal/parse.ts +0 -4
- package/src/internal/request-options.ts +48 -3
- package/src/internal/utils/log.ts +39 -9
- package/src/lib/BetaMessageStream.ts +5 -0
- package/src/lib/middleware.ts +937 -0
- package/src/lib/tools/BetaToolRunner.ts +12 -3
- package/src/resources/beta/agents/agents.ts +1 -0
- package/src/resources/beta/beta.ts +15 -1
- package/src/resources/beta/index.ts +6 -0
- package/src/resources/beta/messages/batches.ts +30 -0
- package/src/resources/beta/messages/index.ts +6 -0
- package/src/resources/beta/messages/messages.ts +279 -5
- package/src/resources/beta/models.ts +7 -0
- package/src/resources/messages/messages.ts +4 -1
- package/src/version.ts +1 -1
- package/version.d.mts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
|
@@ -10,7 +10,42 @@ import { type HeadersLike } from './headers';
|
|
|
10
10
|
|
|
11
11
|
export type FinalRequestOptions = RequestOptions & { method: HTTPMethod; path: string };
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Tracks which fallback a sequence of requests is pinned to.
|
|
15
|
+
*
|
|
16
|
+
* Create one (`new BetaFallbackState()`) and pass it via the `fallbackState`
|
|
17
|
+
* request option on every request that should share the pin — the turns of one
|
|
18
|
+
* conversation, or any wider scope the stickiness should apply to;
|
|
19
|
+
* `betaRefusalFallbackMiddleware` mutates it in place when a model refuses.
|
|
20
|
+
*/
|
|
21
|
+
export class BetaFallbackState {
|
|
22
|
+
/**
|
|
23
|
+
* Index into the fallback chain the requests are pinned to.
|
|
24
|
+
*
|
|
25
|
+
* `undefined` (or -1) targets the original request params; the middleware
|
|
26
|
+
* sets it to the index of the fallback that accepted the request.
|
|
27
|
+
*/
|
|
28
|
+
index?: number;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Options for an individual API request.
|
|
33
|
+
*
|
|
34
|
+
* Declared as an interface so it can be extended via declaration merging, e.g.
|
|
35
|
+
* to thread custom per-request context through to {@link Middleware}:
|
|
36
|
+
*
|
|
37
|
+
* ```ts
|
|
38
|
+
* declare module '@anthropic-ai/sdk/internal/request-options' {
|
|
39
|
+
* interface RequestOptions {
|
|
40
|
+
* myContext?: string;
|
|
41
|
+
* }
|
|
42
|
+
* }
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* The SDK ignores properties it doesn't know about; they are visible to
|
|
46
|
+
* middleware on `ctx.options`.
|
|
47
|
+
*/
|
|
48
|
+
export interface RequestOptions {
|
|
14
49
|
/**
|
|
15
50
|
* The HTTP method for the request (e.g., 'get', 'post', 'put', 'delete').
|
|
16
51
|
*/
|
|
@@ -70,10 +105,20 @@ export type RequestOptions = {
|
|
|
70
105
|
/**
|
|
71
106
|
* Additional {@link Middleware} to wrap this request's HTTP attempts.
|
|
72
107
|
*
|
|
73
|
-
* These run after any client-level middleware
|
|
108
|
+
* These run after any client-level middleware (but still outside any backend
|
|
109
|
+
* adaptation) and apply to every attempt of this request, including retries.
|
|
74
110
|
*/
|
|
75
111
|
middleware?: ReadonlyArray<Middleware> | undefined;
|
|
76
112
|
|
|
113
|
+
/**
|
|
114
|
+
* Sticky state for `betaRefusalFallbackMiddleware`.
|
|
115
|
+
*
|
|
116
|
+
* The middleware records which fallback it settled on, so requests sharing
|
|
117
|
+
* the state skip models that already refused. Pass the same object across
|
|
118
|
+
* whatever scope the pin should apply to — typically a conversation.
|
|
119
|
+
*/
|
|
120
|
+
fallbackState?: BetaFallbackState;
|
|
121
|
+
|
|
77
122
|
/**
|
|
78
123
|
* A unique key for this request to enable idempotency.
|
|
79
124
|
*/
|
|
@@ -86,7 +131,7 @@ export type RequestOptions = {
|
|
|
86
131
|
|
|
87
132
|
__binaryResponse?: boolean | undefined;
|
|
88
133
|
__streamClass?: typeof Stream;
|
|
89
|
-
}
|
|
134
|
+
}
|
|
90
135
|
|
|
91
136
|
export type EncodedContent = { bodyHeaders: HeadersLike; body: BodyInit };
|
|
92
137
|
export type RequestEncoder = (request: { headers: NullableHeaders; body: unknown }) => EncodedContent;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
2
|
|
|
3
3
|
import { hasOwn } from './values';
|
|
4
|
+
import { readEnv } from './env';
|
|
4
5
|
import { type BaseAnthropic } from '../../client';
|
|
5
6
|
import { RequestOptions } from '../request-options';
|
|
6
7
|
|
|
@@ -13,6 +14,8 @@ export type Logger = {
|
|
|
13
14
|
};
|
|
14
15
|
export type LogLevel = 'off' | 'error' | 'warn' | 'info' | 'debug';
|
|
15
16
|
|
|
17
|
+
export const defaultLogLevel: LogLevel = 'warn';
|
|
18
|
+
|
|
16
19
|
const levelNumbers = {
|
|
17
20
|
off: 0,
|
|
18
21
|
error: 200,
|
|
@@ -24,7 +27,7 @@ const levelNumbers = {
|
|
|
24
27
|
export const parseLogLevel = (
|
|
25
28
|
maybeLevel: string | undefined,
|
|
26
29
|
sourceName: string,
|
|
27
|
-
|
|
30
|
+
logger: Logger,
|
|
28
31
|
): LogLevel | undefined => {
|
|
29
32
|
if (!maybeLevel) {
|
|
30
33
|
return undefined;
|
|
@@ -32,7 +35,7 @@ export const parseLogLevel = (
|
|
|
32
35
|
if (hasOwn(levelNumbers, maybeLevel)) {
|
|
33
36
|
return maybeLevel;
|
|
34
37
|
}
|
|
35
|
-
|
|
38
|
+
logger.warn(
|
|
36
39
|
`${sourceName} was set to ${JSON.stringify(maybeLevel)}, expected one of ${JSON.stringify(
|
|
37
40
|
Object.keys(levelNumbers),
|
|
38
41
|
)}`,
|
|
@@ -60,13 +63,7 @@ const noopLogger = {
|
|
|
60
63
|
|
|
61
64
|
let cachedLoggers = /* @__PURE__ */ new WeakMap<Logger, [LogLevel, Logger]>();
|
|
62
65
|
|
|
63
|
-
|
|
64
|
-
const logger = client.logger;
|
|
65
|
-
const logLevel = client.logLevel ?? 'off';
|
|
66
|
-
if (!logger) {
|
|
67
|
-
return noopLogger;
|
|
68
|
-
}
|
|
69
|
-
|
|
66
|
+
function filterLogger(logger: Logger, logLevel: LogLevel): Logger {
|
|
70
67
|
const cachedLogger = cachedLoggers.get(logger);
|
|
71
68
|
if (cachedLogger && cachedLogger[0] === logLevel) {
|
|
72
69
|
return cachedLogger[1];
|
|
@@ -84,6 +81,39 @@ export function loggerFor(client: BaseAnthropic): Logger {
|
|
|
84
81
|
return levelLogger;
|
|
85
82
|
}
|
|
86
83
|
|
|
84
|
+
export function loggerFor(client: BaseAnthropic): Logger {
|
|
85
|
+
const logger = client.logger;
|
|
86
|
+
const logLevel = client.logLevel ?? 'off';
|
|
87
|
+
if (!logger) {
|
|
88
|
+
return noopLogger;
|
|
89
|
+
}
|
|
90
|
+
return filterLogger(logger, logLevel);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
let lastEnvLevel: string | undefined;
|
|
94
|
+
let cachedDefaultLogger: Logger | undefined;
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* A logger matching the client defaults — `console`, filtered to
|
|
98
|
+
* `ANTHROPIC_LOG` or {@link defaultLogLevel} — for contexts with no client to
|
|
99
|
+
* read the configured `logger`/`logLevel` from.
|
|
100
|
+
*
|
|
101
|
+
* Cached per `ANTHROPIC_LOG` value so an invalid value warns once, like a
|
|
102
|
+
* client construction does, rather than on every request.
|
|
103
|
+
*/
|
|
104
|
+
export function defaultLogger(): Logger {
|
|
105
|
+
const envLevel = readEnv('ANTHROPIC_LOG');
|
|
106
|
+
if (!cachedDefaultLogger || envLevel !== lastEnvLevel) {
|
|
107
|
+
lastEnvLevel = envLevel;
|
|
108
|
+
cachedDefaultLogger = filterLogger(
|
|
109
|
+
console,
|
|
110
|
+
parseLogLevel(envLevel, "process.env['ANTHROPIC_LOG']", filterLogger(console, defaultLogLevel)) ??
|
|
111
|
+
defaultLogLevel,
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
return cachedDefaultLogger;
|
|
115
|
+
}
|
|
116
|
+
|
|
87
117
|
export const formatRequestDetails = (details: {
|
|
88
118
|
options?: RequestOptions | undefined;
|
|
89
119
|
headers?: Headers | Record<string, string> | undefined;
|
|
@@ -607,6 +607,11 @@ export class BetaMessageStream<ParsedT = null> implements AsyncIterable<BetaMess
|
|
|
607
607
|
return snapshot;
|
|
608
608
|
case 'content_block_start':
|
|
609
609
|
snapshot.content.push(event.content_block);
|
|
610
|
+
if (event.content_block.type === 'fallback') {
|
|
611
|
+
// the final hop's fallback block names the model that served the response —
|
|
612
|
+
// keeps the snapshot consistent with the relabeled non-streaming message
|
|
613
|
+
snapshot.model = event.content_block.to.model;
|
|
614
|
+
}
|
|
610
615
|
return snapshot;
|
|
611
616
|
case 'content_block_delta': {
|
|
612
617
|
const snapshotContent = snapshot.content.at(event.index);
|