@anthropic-ai/foundry-sdk 0.3.0 → 0.3.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/CHANGELOG.md +8 -0
- 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/package.json +1 -1
- package/src/internal/parse.ts +0 -4
- package/src/internal/request-options.ts +48 -3
- package/src/internal/utils/log.ts +39 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.3.1 (2026-06-09)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [foundry-sdk-v0.3.0...foundry-sdk-v0.3.1](https://github.com/anthropics/anthropic-sdk-typescript/compare/foundry-sdk-v0.3.0...foundry-sdk-v0.3.1)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
* **client:** 3p middleware ordering ([#53](https://github.com/anthropics/anthropic-sdk-typescript/issues/53)) ([2a4c339](https://github.com/anthropics/anthropic-sdk-typescript/commit/2a4c339e6887aa2e8e1278c7b22d3732cf64a76c))
|
|
10
|
+
|
|
3
11
|
## 0.3.0 (2026-06-05)
|
|
4
12
|
|
|
5
13
|
Full Changelog: [foundry-sdk-v0.2.4...foundry-sdk-v0.3.0](https://github.com/anthropics/anthropic-sdk-typescript/compare/foundry-sdk-v0.2.4...foundry-sdk-v0.3.0)
|
package/internal/parse.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.mts","sourceRoot":"","sources":["../src/internal/parse.ts"],"names":[],"mappings":"OAEO,KAAK,EAAE,mBAAmB,EAAE;OAE5B,EAAE,KAAK,aAAa,EAAE;OAEtB,KAAK,EAAE,YAAY,EAAE;AAE5B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,UAAU,EAAE,eAAe,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"parse.d.mts","sourceRoot":"","sources":["../src/internal/parse.ts"],"names":[],"mappings":"OAEO,KAAK,EAAE,mBAAmB,EAAE;OAE5B,EAAE,KAAK,aAAa,EAAE;OAEtB,KAAK,EAAE,YAAY,EAAE;AAE5B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,UAAU,EAAE,eAAe,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAiD3B;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,IACzB,CAAC,SAAS,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,GACrD,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACnE,CAAC,CAAC;AAEN,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAS9E"}
|
package/internal/parse.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/internal/parse.ts"],"names":[],"mappings":"OAEO,KAAK,EAAE,mBAAmB,EAAE;OAE5B,EAAE,KAAK,aAAa,EAAE;OAEtB,KAAK,EAAE,YAAY,EAAE;AAE5B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,UAAU,EAAE,eAAe,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../src/internal/parse.ts"],"names":[],"mappings":"OAEO,KAAK,EAAE,mBAAmB,EAAE;OAE5B,EAAE,KAAK,aAAa,EAAE;OAEtB,KAAK,EAAE,YAAY,EAAE;AAE5B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,UAAU,EAAE,eAAe,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAiD3B;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,IACzB,CAAC,SAAS,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,GACrD,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG;IAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACnE,CAAC,CAAC;AAEN,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,CAS9E"}
|
package/internal/parse.js
CHANGED
|
@@ -12,9 +12,6 @@ async function defaultParseResponse(client, props) {
|
|
|
12
12
|
(0, log_1.loggerFor)(client).debug('response', response.status, response.url, response.headers, response.body);
|
|
13
13
|
// Note: there is an invariant here that isn't represented in the type system
|
|
14
14
|
// that if you set `stream: true` the response type must also be `Stream<T>`
|
|
15
|
-
if (props.options.__streamClass) {
|
|
16
|
-
return props.options.__streamClass.fromSSEResponse(response, props.controller);
|
|
17
|
-
}
|
|
18
15
|
return streaming_1.Stream.fromSSEResponse(response, props.controller);
|
|
19
16
|
}
|
|
20
17
|
// fetch refuses to read the body when the status code is 204.
|
package/internal/parse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/internal/parse.ts"],"names":[],"mappings":";AAAA,sFAAsF;;AAiBtF,
|
|
1
|
+
{"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/internal/parse.ts"],"names":[],"mappings":";AAAA,sFAAsF;;AAiBtF,oDAoDC;AAOD,oCASC;AAlFD,oDAA2C;AAE3C,wCAA8D;AAYvD,KAAK,UAAU,oBAAoB,CACxC,MAAqB,EACrB,KAAuB;IAEvB,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,mBAAmB,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IACzE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;QAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACzB,IAAA,eAAS,EAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEpG,6EAA6E;YAC7E,4EAA4E;YAE5E,OAAO,kBAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAQ,CAAC;QACnE,CAAC;QAED,8DAA8D;QAC9D,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,OAAO,IAAS,CAAC;QACnB,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;YACnC,OAAO,QAAwB,CAAC;QAClC,CAAC;QAED,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,SAAS,EAAE,QAAQ,CAAC,kBAAkB,CAAC,IAAI,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvF,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC7D,IAAI,aAAa,KAAK,GAAG,EAAE,CAAC;gBAC1B,8CAA8C;gBAC9C,OAAO,SAAc,CAAC;YACxB,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,YAAY,CAAC,IAAS,EAAE,QAAQ,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,IAAoB,CAAC;IAC9B,CAAC,CAAC,EAAE,CAAC;IACL,IAAA,eAAS,EAAC,MAAM,CAAC,CAAC,KAAK,CACrB,IAAI,YAAY,mBAAmB,EACnC,IAAA,0BAAoB,EAAC;QACnB,mBAAmB;QACnB,GAAG,EAAE,QAAQ,CAAC,GAAG;QACjB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,IAAI;QACJ,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;KACnC,CAAC,CACH,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC;AAOD,SAAgB,YAAY,CAAI,KAAQ,EAAE,QAAkB;IAC1D,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,OAAO,KAAyB,CAAC;IACnC,CAAC;IAED,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE;QACjD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QACzC,UAAU,EAAE,KAAK;KAClB,CAAqB,CAAC;AACzB,CAAC"}
|
package/internal/parse.mjs
CHANGED
|
@@ -8,9 +8,6 @@ export async function defaultParseResponse(client, props) {
|
|
|
8
8
|
loggerFor(client).debug('response', response.status, response.url, response.headers, response.body);
|
|
9
9
|
// Note: there is an invariant here that isn't represented in the type system
|
|
10
10
|
// that if you set `stream: true` the response type must also be `Stream<T>`
|
|
11
|
-
if (props.options.__streamClass) {
|
|
12
|
-
return props.options.__streamClass.fromSSEResponse(response, props.controller);
|
|
13
|
-
}
|
|
14
11
|
return Stream.fromSSEResponse(response, props.controller);
|
|
15
12
|
}
|
|
16
13
|
// fetch refuses to read the body when the status code is 204.
|
package/internal/parse.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse.mjs","sourceRoot":"","sources":["../src/internal/parse.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAG/E,EAAE,MAAM,EAAE;OAEV,EAAE,oBAAoB,EAAE,SAAS,EAAE;AAY1C,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAqB,EACrB,KAAuB;IAEvB,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,mBAAmB,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IACzE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;QAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACzB,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEpG,6EAA6E;YAC7E,4EAA4E;YAE5E,
|
|
1
|
+
{"version":3,"file":"parse.mjs","sourceRoot":"","sources":["../src/internal/parse.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAG/E,EAAE,MAAM,EAAE;OAEV,EAAE,oBAAoB,EAAE,SAAS,EAAE;AAY1C,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAqB,EACrB,KAAuB;IAEvB,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,mBAAmB,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IACzE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;QAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACzB,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEpG,6EAA6E;YAC7E,4EAA4E;YAE5E,OAAO,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAQ,CAAC;QACnE,CAAC;QAED,8DAA8D;QAC9D,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,OAAO,IAAS,CAAC;QACnB,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;YACnC,OAAO,QAAwB,CAAC;QAClC,CAAC;QAED,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,SAAS,EAAE,QAAQ,CAAC,kBAAkB,CAAC,IAAI,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvF,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC7D,IAAI,aAAa,KAAK,GAAG,EAAE,CAAC;gBAC1B,8CAA8C;gBAC9C,OAAO,SAAc,CAAC;YACxB,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,YAAY,CAAC,IAAS,EAAE,QAAQ,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,IAAoB,CAAC;IAC9B,CAAC,CAAC,EAAE,CAAC;IACL,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CACrB,IAAI,YAAY,mBAAmB,EACnC,oBAAoB,CAAC;QACnB,mBAAmB;QACnB,GAAG,EAAE,QAAQ,CAAC,GAAG;QACjB,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,IAAI;QACJ,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;KACnC,CAAC,CACH,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC;AAOD,MAAM,UAAU,YAAY,CAAI,KAAQ,EAAE,QAAkB;IAC1D,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,OAAO,KAAyB,CAAC;IACnC,CAAC;IAED,OAAO,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE;QACjD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QACzC,UAAU,EAAE,KAAK;KAClB,CAAqB,CAAC;AACzB,CAAC"}
|
|
@@ -8,7 +8,41 @@ export type FinalRequestOptions = RequestOptions & {
|
|
|
8
8
|
method: HTTPMethod;
|
|
9
9
|
path: string;
|
|
10
10
|
};
|
|
11
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Tracks which fallback a sequence of requests is pinned to.
|
|
13
|
+
*
|
|
14
|
+
* Create one (`new BetaFallbackState()`) and pass it via the `fallbackState`
|
|
15
|
+
* request option on every request that should share the pin — the turns of one
|
|
16
|
+
* conversation, or any wider scope the stickiness should apply to;
|
|
17
|
+
* `betaRefusalFallbackMiddleware` mutates it in place when a model refuses.
|
|
18
|
+
*/
|
|
19
|
+
export declare class BetaFallbackState {
|
|
20
|
+
/**
|
|
21
|
+
* Index into the fallback chain the requests are pinned to.
|
|
22
|
+
*
|
|
23
|
+
* `undefined` (or -1) targets the original request params; the middleware
|
|
24
|
+
* sets it to the index of the fallback that accepted the request.
|
|
25
|
+
*/
|
|
26
|
+
index?: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Options for an individual API request.
|
|
30
|
+
*
|
|
31
|
+
* Declared as an interface so it can be extended via declaration merging, e.g.
|
|
32
|
+
* to thread custom per-request context through to {@link Middleware}:
|
|
33
|
+
*
|
|
34
|
+
* ```ts
|
|
35
|
+
* declare module '@anthropic-ai/sdk/internal/request-options' {
|
|
36
|
+
* interface RequestOptions {
|
|
37
|
+
* myContext?: string;
|
|
38
|
+
* }
|
|
39
|
+
* }
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* The SDK ignores properties it doesn't know about; they are visible to
|
|
43
|
+
* middleware on `ctx.options`.
|
|
44
|
+
*/
|
|
45
|
+
export interface RequestOptions {
|
|
12
46
|
/**
|
|
13
47
|
* The HTTP method for the request (e.g., 'get', 'post', 'put', 'delete').
|
|
14
48
|
*/
|
|
@@ -58,9 +92,18 @@ export type RequestOptions = {
|
|
|
58
92
|
/**
|
|
59
93
|
* Additional {@link Middleware} to wrap this request's HTTP attempts.
|
|
60
94
|
*
|
|
61
|
-
* These run after any client-level middleware
|
|
95
|
+
* These run after any client-level middleware (but still outside any backend
|
|
96
|
+
* adaptation) and apply to every attempt of this request, including retries.
|
|
62
97
|
*/
|
|
63
98
|
middleware?: ReadonlyArray<Middleware> | undefined;
|
|
99
|
+
/**
|
|
100
|
+
* Sticky state for `betaRefusalFallbackMiddleware`.
|
|
101
|
+
*
|
|
102
|
+
* The middleware records which fallback it settled on, so requests sharing
|
|
103
|
+
* the state skip models that already refused. Pass the same object across
|
|
104
|
+
* whatever scope the pin should apply to — typically a conversation.
|
|
105
|
+
*/
|
|
106
|
+
fallbackState?: BetaFallbackState;
|
|
64
107
|
/**
|
|
65
108
|
* A unique key for this request to enable idempotency.
|
|
66
109
|
*/
|
|
@@ -71,7 +114,7 @@ export type RequestOptions = {
|
|
|
71
114
|
defaultBaseURL?: string | undefined;
|
|
72
115
|
__binaryResponse?: boolean | undefined;
|
|
73
116
|
__streamClass?: typeof Stream;
|
|
74
|
-
}
|
|
117
|
+
}
|
|
75
118
|
export type EncodedContent = {
|
|
76
119
|
bodyHeaders: HeadersLike;
|
|
77
120
|
body: BodyInit;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-options.d.mts","sourceRoot":"","sources":["../src/internal/request-options.ts"],"names":[],"mappings":"OAEO,EAAE,eAAe,EAAE;OAEnB,KAAK,EAAE,QAAQ,EAAE;OACjB,EAAE,MAAM,EAAE;OACV,KAAK,EAAE,UAAU,EAAE;OACnB,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE;OACtC,EAAE,KAAK,WAAW,EAAE;AAE3B,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAExF,MAAM,MAAM,cAAc
|
|
1
|
+
{"version":3,"file":"request-options.d.mts","sourceRoot":"","sources":["../src/internal/request-options.ts"],"names":[],"mappings":"OAEO,EAAE,eAAe,EAAE;OAEnB,KAAK,EAAE,QAAQ,EAAE;OACjB,EAAE,MAAM,EAAE;OACV,KAAK,EAAE,UAAU,EAAE;OACnB,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE;OACtC,EAAE,KAAK,WAAW,EAAE;AAE3B,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAExF;;;;;;;GAOG;AACH,qBAAa,iBAAiB;IAC5B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IAEpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAElC;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAE7B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,YAAY,CAAC,EAAE,iBAAiB,CAAC;IAEjC;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAExC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;IAEnD;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAElC;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEpC,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,aAAa,CAAC,EAAE,OAAO,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,cAAc,GAAG;IAAE,WAAW,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAC1E,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE;IAAE,OAAO,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,KAAK,cAAc,CAAC;AAEtG,eAAO,MAAM,eAAe,EAAE,cAO7B,CAAC"}
|
|
@@ -8,7 +8,41 @@ export type FinalRequestOptions = RequestOptions & {
|
|
|
8
8
|
method: HTTPMethod;
|
|
9
9
|
path: string;
|
|
10
10
|
};
|
|
11
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Tracks which fallback a sequence of requests is pinned to.
|
|
13
|
+
*
|
|
14
|
+
* Create one (`new BetaFallbackState()`) and pass it via the `fallbackState`
|
|
15
|
+
* request option on every request that should share the pin — the turns of one
|
|
16
|
+
* conversation, or any wider scope the stickiness should apply to;
|
|
17
|
+
* `betaRefusalFallbackMiddleware` mutates it in place when a model refuses.
|
|
18
|
+
*/
|
|
19
|
+
export declare class BetaFallbackState {
|
|
20
|
+
/**
|
|
21
|
+
* Index into the fallback chain the requests are pinned to.
|
|
22
|
+
*
|
|
23
|
+
* `undefined` (or -1) targets the original request params; the middleware
|
|
24
|
+
* sets it to the index of the fallback that accepted the request.
|
|
25
|
+
*/
|
|
26
|
+
index?: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Options for an individual API request.
|
|
30
|
+
*
|
|
31
|
+
* Declared as an interface so it can be extended via declaration merging, e.g.
|
|
32
|
+
* to thread custom per-request context through to {@link Middleware}:
|
|
33
|
+
*
|
|
34
|
+
* ```ts
|
|
35
|
+
* declare module '@anthropic-ai/sdk/internal/request-options' {
|
|
36
|
+
* interface RequestOptions {
|
|
37
|
+
* myContext?: string;
|
|
38
|
+
* }
|
|
39
|
+
* }
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* The SDK ignores properties it doesn't know about; they are visible to
|
|
43
|
+
* middleware on `ctx.options`.
|
|
44
|
+
*/
|
|
45
|
+
export interface RequestOptions {
|
|
12
46
|
/**
|
|
13
47
|
* The HTTP method for the request (e.g., 'get', 'post', 'put', 'delete').
|
|
14
48
|
*/
|
|
@@ -58,9 +92,18 @@ export type RequestOptions = {
|
|
|
58
92
|
/**
|
|
59
93
|
* Additional {@link Middleware} to wrap this request's HTTP attempts.
|
|
60
94
|
*
|
|
61
|
-
* These run after any client-level middleware
|
|
95
|
+
* These run after any client-level middleware (but still outside any backend
|
|
96
|
+
* adaptation) and apply to every attempt of this request, including retries.
|
|
62
97
|
*/
|
|
63
98
|
middleware?: ReadonlyArray<Middleware> | undefined;
|
|
99
|
+
/**
|
|
100
|
+
* Sticky state for `betaRefusalFallbackMiddleware`.
|
|
101
|
+
*
|
|
102
|
+
* The middleware records which fallback it settled on, so requests sharing
|
|
103
|
+
* the state skip models that already refused. Pass the same object across
|
|
104
|
+
* whatever scope the pin should apply to — typically a conversation.
|
|
105
|
+
*/
|
|
106
|
+
fallbackState?: BetaFallbackState;
|
|
64
107
|
/**
|
|
65
108
|
* A unique key for this request to enable idempotency.
|
|
66
109
|
*/
|
|
@@ -71,7 +114,7 @@ export type RequestOptions = {
|
|
|
71
114
|
defaultBaseURL?: string | undefined;
|
|
72
115
|
__binaryResponse?: boolean | undefined;
|
|
73
116
|
__streamClass?: typeof Stream;
|
|
74
|
-
}
|
|
117
|
+
}
|
|
75
118
|
export type EncodedContent = {
|
|
76
119
|
bodyHeaders: HeadersLike;
|
|
77
120
|
body: BodyInit;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-options.d.ts","sourceRoot":"","sources":["../src/internal/request-options.ts"],"names":[],"mappings":"OAEO,EAAE,eAAe,EAAE;OAEnB,KAAK,EAAE,QAAQ,EAAE;OACjB,EAAE,MAAM,EAAE;OACV,KAAK,EAAE,UAAU,EAAE;OACnB,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE;OACtC,EAAE,KAAK,WAAW,EAAE;AAE3B,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAExF,MAAM,MAAM,cAAc
|
|
1
|
+
{"version":3,"file":"request-options.d.ts","sourceRoot":"","sources":["../src/internal/request-options.ts"],"names":[],"mappings":"OAEO,EAAE,eAAe,EAAE;OAEnB,KAAK,EAAE,QAAQ,EAAE;OACjB,EAAE,MAAM,EAAE;OACV,KAAK,EAAE,UAAU,EAAE;OACnB,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE;OACtC,EAAE,KAAK,WAAW,EAAE;AAE3B,MAAM,MAAM,mBAAmB,GAAG,cAAc,GAAG;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAExF;;;;;;;GAOG;AACH,qBAAa,iBAAiB;IAC5B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IAEpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAElC;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAE7B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,YAAY,CAAC,EAAE,iBAAiB,CAAC;IAEjC;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAExC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;IAEnD;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAElC;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEpC,gBAAgB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACvC,aAAa,CAAC,EAAE,OAAO,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,cAAc,GAAG;IAAE,WAAW,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAC1E,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE;IAAE,OAAO,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,KAAK,cAAc,CAAC;AAEtG,eAAO,MAAM,eAAe,EAAE,cAO7B,CAAC"}
|
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.FallbackEncoder = void 0;
|
|
4
|
+
exports.FallbackEncoder = exports.BetaFallbackState = void 0;
|
|
5
|
+
/**
|
|
6
|
+
* Tracks which fallback a sequence of requests is pinned to.
|
|
7
|
+
*
|
|
8
|
+
* Create one (`new BetaFallbackState()`) and pass it via the `fallbackState`
|
|
9
|
+
* request option on every request that should share the pin — the turns of one
|
|
10
|
+
* conversation, or any wider scope the stickiness should apply to;
|
|
11
|
+
* `betaRefusalFallbackMiddleware` mutates it in place when a model refuses.
|
|
12
|
+
*/
|
|
13
|
+
class BetaFallbackState {
|
|
14
|
+
}
|
|
15
|
+
exports.BetaFallbackState = BetaFallbackState;
|
|
5
16
|
const FallbackEncoder = ({ headers, body }) => {
|
|
6
17
|
return {
|
|
7
18
|
bodyHeaders: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-options.js","sourceRoot":"","sources":["../src/internal/request-options.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;
|
|
1
|
+
{"version":3,"file":"request-options.js","sourceRoot":"","sources":["../src/internal/request-options.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;AAYtF;;;;;;;GAOG;AACH,MAAa,iBAAiB;CAQ7B;AARD,8CAQC;AA8GM,MAAM,eAAe,GAAmB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;IACnE,OAAO;QACL,WAAW,EAAE;YACX,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC;AACJ,CAAC,CAAC;AAPW,QAAA,eAAe,mBAO1B"}
|
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
|
+
/**
|
|
3
|
+
* Tracks which fallback a sequence of requests is pinned to.
|
|
4
|
+
*
|
|
5
|
+
* Create one (`new BetaFallbackState()`) and pass it via the `fallbackState`
|
|
6
|
+
* request option on every request that should share the pin — the turns of one
|
|
7
|
+
* conversation, or any wider scope the stickiness should apply to;
|
|
8
|
+
* `betaRefusalFallbackMiddleware` mutates it in place when a model refuses.
|
|
9
|
+
*/
|
|
10
|
+
export class BetaFallbackState {
|
|
11
|
+
}
|
|
2
12
|
export const FallbackEncoder = ({ headers, body }) => {
|
|
3
13
|
return {
|
|
4
14
|
bodyHeaders: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-options.mjs","sourceRoot":"","sources":["../src/internal/request-options.ts"],"names":[],"mappings":"AAAA,sFAAsF;
|
|
1
|
+
{"version":3,"file":"request-options.mjs","sourceRoot":"","sources":["../src/internal/request-options.ts"],"names":[],"mappings":"AAAA,sFAAsF;AAYtF;;;;;;;GAOG;AACH,MAAM,OAAO,iBAAiB;CAQ7B;AA8GD,MAAM,CAAC,MAAM,eAAe,GAAmB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;IACnE,OAAO;QACL,WAAW,EAAE;YACX,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC;AACJ,CAAC,CAAC"}
|
package/internal/utils/log.d.mts
CHANGED
|
@@ -8,8 +8,18 @@ export type Logger = {
|
|
|
8
8
|
debug: LogFn;
|
|
9
9
|
};
|
|
10
10
|
export type LogLevel = 'off' | 'error' | 'warn' | 'info' | 'debug';
|
|
11
|
-
export declare const
|
|
11
|
+
export declare const defaultLogLevel: LogLevel;
|
|
12
|
+
export declare const parseLogLevel: (maybeLevel: string | undefined, sourceName: string, logger: Logger) => LogLevel | undefined;
|
|
12
13
|
export declare function loggerFor(client: BaseAnthropic): Logger;
|
|
14
|
+
/**
|
|
15
|
+
* A logger matching the client defaults — `console`, filtered to
|
|
16
|
+
* `ANTHROPIC_LOG` or {@link defaultLogLevel} — for contexts with no client to
|
|
17
|
+
* read the configured `logger`/`logLevel` from.
|
|
18
|
+
*
|
|
19
|
+
* Cached per `ANTHROPIC_LOG` value so an invalid value warns once, like a
|
|
20
|
+
* client construction does, rather than on every request.
|
|
21
|
+
*/
|
|
22
|
+
export declare function defaultLogger(): Logger;
|
|
13
23
|
export declare const formatRequestDetails: (details: {
|
|
14
24
|
options?: RequestOptions | undefined;
|
|
15
25
|
headers?: Headers | Record<string, string> | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.d.mts","sourceRoot":"","sources":["../../src/internal/utils/log.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"log.d.mts","sourceRoot":"","sources":["../../src/internal/utils/log.ts"],"names":[],"mappings":"OAIO,EAAE,KAAK,aAAa,EAAE;OACtB,EAAE,cAAc,EAAE;AAEzB,KAAK,KAAK,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;AAC3D,MAAM,MAAM,MAAM,GAAG;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AACF,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnE,eAAO,MAAM,eAAe,EAAE,QAAiB,CAAC;AAUhD,eAAO,MAAM,aAAa,GACxB,YAAY,MAAM,GAAG,SAAS,EAC9B,YAAY,MAAM,EAClB,QAAQ,MAAM,KACb,QAAQ,GAAG,SAab,CAAC;AAwCF,wBAAgB,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAOvD;AAKD;;;;;;;GAOG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAWtC;AAED,eAAO,MAAM,oBAAoB,GAAI,SAAS;IAC5C,OAAO,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IACvD,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;cAVW,cAAc,GAAG,SAAS;cAC1B,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS;0BAChC,MAAM,GAAG,SAAS;cAC9B,MAAM,GAAG,SAAS;UACtB,MAAM,GAAG,SAAS;aACf,MAAM,GAAG,SAAS;aAClB,MAAM,GAAG,SAAS;iBACd,MAAM,GAAG,SAAS;cACrB,OAAO;WACV,OAAO;CA+Bf,CAAC"}
|
package/internal/utils/log.d.ts
CHANGED
|
@@ -8,8 +8,18 @@ export type Logger = {
|
|
|
8
8
|
debug: LogFn;
|
|
9
9
|
};
|
|
10
10
|
export type LogLevel = 'off' | 'error' | 'warn' | 'info' | 'debug';
|
|
11
|
-
export declare const
|
|
11
|
+
export declare const defaultLogLevel: LogLevel;
|
|
12
|
+
export declare const parseLogLevel: (maybeLevel: string | undefined, sourceName: string, logger: Logger) => LogLevel | undefined;
|
|
12
13
|
export declare function loggerFor(client: BaseAnthropic): Logger;
|
|
14
|
+
/**
|
|
15
|
+
* A logger matching the client defaults — `console`, filtered to
|
|
16
|
+
* `ANTHROPIC_LOG` or {@link defaultLogLevel} — for contexts with no client to
|
|
17
|
+
* read the configured `logger`/`logLevel` from.
|
|
18
|
+
*
|
|
19
|
+
* Cached per `ANTHROPIC_LOG` value so an invalid value warns once, like a
|
|
20
|
+
* client construction does, rather than on every request.
|
|
21
|
+
*/
|
|
22
|
+
export declare function defaultLogger(): Logger;
|
|
13
23
|
export declare const formatRequestDetails: (details: {
|
|
14
24
|
options?: RequestOptions | undefined;
|
|
15
25
|
headers?: Headers | Record<string, string> | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/internal/utils/log.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/internal/utils/log.ts"],"names":[],"mappings":"OAIO,EAAE,KAAK,aAAa,EAAE;OACtB,EAAE,cAAc,EAAE;AAEzB,KAAK,KAAK,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;AAC3D,MAAM,MAAM,MAAM,GAAG;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AACF,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnE,eAAO,MAAM,eAAe,EAAE,QAAiB,CAAC;AAUhD,eAAO,MAAM,aAAa,GACxB,YAAY,MAAM,GAAG,SAAS,EAC9B,YAAY,MAAM,EAClB,QAAQ,MAAM,KACb,QAAQ,GAAG,SAab,CAAC;AAwCF,wBAAgB,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAOvD;AAKD;;;;;;;GAOG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAWtC;AAED,eAAO,MAAM,oBAAoB,GAAI,SAAS;IAC5C,OAAO,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IACvD,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;cAVW,cAAc,GAAG,SAAS;cAC1B,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS;0BAChC,MAAM,GAAG,SAAS;cAC9B,MAAM,GAAG,SAAS;UACtB,MAAM,GAAG,SAAS;aACf,MAAM,GAAG,SAAS;aAClB,MAAM,GAAG,SAAS;iBACd,MAAM,GAAG,SAAS;cACrB,OAAO;WACV,OAAO;CA+Bf,CAAC"}
|
package/internal/utils/log.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.formatRequestDetails = exports.parseLogLevel = void 0;
|
|
4
|
+
exports.formatRequestDetails = exports.parseLogLevel = exports.defaultLogLevel = void 0;
|
|
5
5
|
exports.loggerFor = loggerFor;
|
|
6
|
+
exports.defaultLogger = defaultLogger;
|
|
6
7
|
const values_1 = require("./values.js");
|
|
8
|
+
const env_1 = require("./env.js");
|
|
9
|
+
exports.defaultLogLevel = 'warn';
|
|
7
10
|
const levelNumbers = {
|
|
8
11
|
off: 0,
|
|
9
12
|
error: 200,
|
|
@@ -11,14 +14,14 @@ const levelNumbers = {
|
|
|
11
14
|
info: 400,
|
|
12
15
|
debug: 500,
|
|
13
16
|
};
|
|
14
|
-
const parseLogLevel = (maybeLevel, sourceName,
|
|
17
|
+
const parseLogLevel = (maybeLevel, sourceName, logger) => {
|
|
15
18
|
if (!maybeLevel) {
|
|
16
19
|
return undefined;
|
|
17
20
|
}
|
|
18
21
|
if ((0, values_1.hasOwn)(levelNumbers, maybeLevel)) {
|
|
19
22
|
return maybeLevel;
|
|
20
23
|
}
|
|
21
|
-
|
|
24
|
+
logger.warn(`${sourceName} was set to ${JSON.stringify(maybeLevel)}, expected one of ${JSON.stringify(Object.keys(levelNumbers))}`);
|
|
22
25
|
return undefined;
|
|
23
26
|
};
|
|
24
27
|
exports.parseLogLevel = parseLogLevel;
|
|
@@ -39,12 +42,7 @@ const noopLogger = {
|
|
|
39
42
|
debug: noop,
|
|
40
43
|
};
|
|
41
44
|
let cachedLoggers = /* @__PURE__ */ new WeakMap();
|
|
42
|
-
function
|
|
43
|
-
const logger = client.logger;
|
|
44
|
-
const logLevel = client.logLevel ?? 'off';
|
|
45
|
-
if (!logger) {
|
|
46
|
-
return noopLogger;
|
|
47
|
-
}
|
|
45
|
+
function filterLogger(logger, logLevel) {
|
|
48
46
|
const cachedLogger = cachedLoggers.get(logger);
|
|
49
47
|
if (cachedLogger && cachedLogger[0] === logLevel) {
|
|
50
48
|
return cachedLogger[1];
|
|
@@ -58,6 +56,33 @@ function loggerFor(client) {
|
|
|
58
56
|
cachedLoggers.set(logger, [logLevel, levelLogger]);
|
|
59
57
|
return levelLogger;
|
|
60
58
|
}
|
|
59
|
+
function loggerFor(client) {
|
|
60
|
+
const logger = client.logger;
|
|
61
|
+
const logLevel = client.logLevel ?? 'off';
|
|
62
|
+
if (!logger) {
|
|
63
|
+
return noopLogger;
|
|
64
|
+
}
|
|
65
|
+
return filterLogger(logger, logLevel);
|
|
66
|
+
}
|
|
67
|
+
let lastEnvLevel;
|
|
68
|
+
let cachedDefaultLogger;
|
|
69
|
+
/**
|
|
70
|
+
* A logger matching the client defaults — `console`, filtered to
|
|
71
|
+
* `ANTHROPIC_LOG` or {@link defaultLogLevel} — for contexts with no client to
|
|
72
|
+
* read the configured `logger`/`logLevel` from.
|
|
73
|
+
*
|
|
74
|
+
* Cached per `ANTHROPIC_LOG` value so an invalid value warns once, like a
|
|
75
|
+
* client construction does, rather than on every request.
|
|
76
|
+
*/
|
|
77
|
+
function defaultLogger() {
|
|
78
|
+
const envLevel = (0, env_1.readEnv)('ANTHROPIC_LOG');
|
|
79
|
+
if (!cachedDefaultLogger || envLevel !== lastEnvLevel) {
|
|
80
|
+
lastEnvLevel = envLevel;
|
|
81
|
+
cachedDefaultLogger = filterLogger(console, (0, exports.parseLogLevel)(envLevel, "process.env['ANTHROPIC_LOG']", filterLogger(console, exports.defaultLogLevel)) ??
|
|
82
|
+
exports.defaultLogLevel);
|
|
83
|
+
}
|
|
84
|
+
return cachedDefaultLogger;
|
|
85
|
+
}
|
|
61
86
|
const formatRequestDetails = (details) => {
|
|
62
87
|
if (details.options) {
|
|
63
88
|
details.options = { ...details.options };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/internal/utils/log.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;
|
|
1
|
+
{"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/internal/utils/log.ts"],"names":[],"mappings":"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"}
|
package/internal/utils/log.mjs
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
2
2
|
import { hasOwn } from "./values.mjs";
|
|
3
|
+
import { readEnv } from "./env.mjs";
|
|
4
|
+
export const defaultLogLevel = 'warn';
|
|
3
5
|
const levelNumbers = {
|
|
4
6
|
off: 0,
|
|
5
7
|
error: 200,
|
|
@@ -7,14 +9,14 @@ const levelNumbers = {
|
|
|
7
9
|
info: 400,
|
|
8
10
|
debug: 500,
|
|
9
11
|
};
|
|
10
|
-
export const parseLogLevel = (maybeLevel, sourceName,
|
|
12
|
+
export const parseLogLevel = (maybeLevel, sourceName, logger) => {
|
|
11
13
|
if (!maybeLevel) {
|
|
12
14
|
return undefined;
|
|
13
15
|
}
|
|
14
16
|
if (hasOwn(levelNumbers, maybeLevel)) {
|
|
15
17
|
return maybeLevel;
|
|
16
18
|
}
|
|
17
|
-
|
|
19
|
+
logger.warn(`${sourceName} was set to ${JSON.stringify(maybeLevel)}, expected one of ${JSON.stringify(Object.keys(levelNumbers))}`);
|
|
18
20
|
return undefined;
|
|
19
21
|
};
|
|
20
22
|
function noop() { }
|
|
@@ -34,12 +36,7 @@ const noopLogger = {
|
|
|
34
36
|
debug: noop,
|
|
35
37
|
};
|
|
36
38
|
let cachedLoggers = /* @__PURE__ */ new WeakMap();
|
|
37
|
-
|
|
38
|
-
const logger = client.logger;
|
|
39
|
-
const logLevel = client.logLevel ?? 'off';
|
|
40
|
-
if (!logger) {
|
|
41
|
-
return noopLogger;
|
|
42
|
-
}
|
|
39
|
+
function filterLogger(logger, logLevel) {
|
|
43
40
|
const cachedLogger = cachedLoggers.get(logger);
|
|
44
41
|
if (cachedLogger && cachedLogger[0] === logLevel) {
|
|
45
42
|
return cachedLogger[1];
|
|
@@ -53,6 +50,33 @@ export function loggerFor(client) {
|
|
|
53
50
|
cachedLoggers.set(logger, [logLevel, levelLogger]);
|
|
54
51
|
return levelLogger;
|
|
55
52
|
}
|
|
53
|
+
export function loggerFor(client) {
|
|
54
|
+
const logger = client.logger;
|
|
55
|
+
const logLevel = client.logLevel ?? 'off';
|
|
56
|
+
if (!logger) {
|
|
57
|
+
return noopLogger;
|
|
58
|
+
}
|
|
59
|
+
return filterLogger(logger, logLevel);
|
|
60
|
+
}
|
|
61
|
+
let lastEnvLevel;
|
|
62
|
+
let cachedDefaultLogger;
|
|
63
|
+
/**
|
|
64
|
+
* A logger matching the client defaults — `console`, filtered to
|
|
65
|
+
* `ANTHROPIC_LOG` or {@link defaultLogLevel} — for contexts with no client to
|
|
66
|
+
* read the configured `logger`/`logLevel` from.
|
|
67
|
+
*
|
|
68
|
+
* Cached per `ANTHROPIC_LOG` value so an invalid value warns once, like a
|
|
69
|
+
* client construction does, rather than on every request.
|
|
70
|
+
*/
|
|
71
|
+
export function defaultLogger() {
|
|
72
|
+
const envLevel = readEnv('ANTHROPIC_LOG');
|
|
73
|
+
if (!cachedDefaultLogger || envLevel !== lastEnvLevel) {
|
|
74
|
+
lastEnvLevel = envLevel;
|
|
75
|
+
cachedDefaultLogger = filterLogger(console, parseLogLevel(envLevel, "process.env['ANTHROPIC_LOG']", filterLogger(console, defaultLogLevel)) ??
|
|
76
|
+
defaultLogLevel);
|
|
77
|
+
}
|
|
78
|
+
return cachedDefaultLogger;
|
|
79
|
+
}
|
|
56
80
|
export const formatRequestDetails = (details) => {
|
|
57
81
|
if (details.options) {
|
|
58
82
|
details.options = { ...details.options };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.mjs","sourceRoot":"","sources":["../../src/internal/utils/log.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAE/E,EAAE,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"log.mjs","sourceRoot":"","sources":["../../src/internal/utils/log.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/internal/parse.ts
CHANGED
|
@@ -27,10 +27,6 @@ export async function defaultParseResponse<T>(
|
|
|
27
27
|
// Note: there is an invariant here that isn't represented in the type system
|
|
28
28
|
// that if you set `stream: true` the response type must also be `Stream<T>`
|
|
29
29
|
|
|
30
|
-
if (props.options.__streamClass) {
|
|
31
|
-
return props.options.__streamClass.fromSSEResponse(response, props.controller) as any;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
30
|
return Stream.fromSSEResponse(response, props.controller) as any;
|
|
35
31
|
}
|
|
36
32
|
|
|
@@ -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;
|