shield360 1.0.0 → 1.0.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 CHANGED
@@ -26,52 +26,52 @@ This project proudly follows and maintains the [Semantic Conventions](https://gi
26
26
 
27
27
  | LLMs |
28
28
  | ------------------------------------------------------------------------------------------- |
29
- | [✅ OpenAI](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/integrations/openai.mdx) |
30
- | [✅ Anthropic](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/integrations/anthropic.mdx) |
31
- | [✅ Cohere](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/integrations/cohere.mdx) |
32
- | [✅ Groq](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/integrations/groq.mdx) |
33
- | [✅ Mistral](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/integrations/mistral.mdx) |
34
- | [✅ Google AI Studio](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/integrations/google-ai-studio.mdx) |
35
- | [✅ Google Vertex AI](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/integrations/vertexai.mdx) *(via `@google-cloud/vertexai`)* |
36
- | [✅ Together AI](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/integrations/together.mdx) |
37
- | [✅ Ollama](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/integrations/ollama.mdx) |
38
- | [✅ AWS Bedrock](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/integrations/bedrock.mdx) |
39
- | [✅ Hugging Face](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/integrations/huggingface.mdx) *(Inference API + local Transformers.js)* |
40
- | [✅ Replicate](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/integrations/replicate.mdx) |
41
- | [✅ Azure OpenAI](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/integrations/azure-openai.mdx) *(via OpenAI SDK)* |
29
+ | [✅ OpenAI](https://docs.shield360.ai/latest/integrations/openai) |
30
+ | [✅ Anthropic](https://docs.shield360.ai/latest/integrations/anthropic) |
31
+ | [✅ Cohere](https://docs.shield360.ai/latest/integrations/cohere) |
32
+ | [✅ Groq](https://docs.shield360.ai/latest/integrations/groq) |
33
+ | [✅ Mistral](https://docs.shield360.ai/latest/integrations/mistral) |
34
+ | [✅ Google AI Studio](https://docs.shield360.ai/latest/integrations/google-ai-studio) |
35
+ | [✅ Google Vertex AI](https://docs.shield360.ai/latest/integrations/vertex-ai) *(via `@google-cloud/vertexai`)* |
36
+ | [✅ Together AI](https://docs.shield360.ai/latest/integrations/together) |
37
+ | [✅ Ollama](https://docs.shield360.ai/latest/integrations/ollama) |
38
+ | [✅ AWS Bedrock](https://docs.shield360.ai/latest/integrations/bedrock) |
39
+ | [✅ Hugging Face](https://docs.shield360.ai/latest/integrations/huggingface) *(Inference API + local Transformers.js)* |
40
+ | [✅ Replicate](https://docs.shield360.ai/latest/integrations/replicate) |
41
+ | [✅ Azure OpenAI](https://docs.shield360.ai/latest/integrations/azure-openai) *(via OpenAI SDK)* |
42
42
 
43
43
  | Audio / Speech |
44
44
  | ------------------------------------------------------------------------------------------- |
45
- | [✅ ElevenLabs](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/integrations/elevenlabs.mdx) |
45
+ | [✅ ElevenLabs](https://docs.shield360.ai/latest/sdk/integrations/elevenlabs) |
46
46
 
47
47
  | Vector Databases |
48
48
  | ------------------------------------------------------------------------------------------- |
49
- | [✅ Chroma](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/integrations/chromadb.mdx) |
50
- | [✅ Pinecone](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/integrations/pinecone.mdx) |
51
- | [✅ Qdrant](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/integrations/qdrant.mdx) |
52
- | [✅ Milvus](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/integrations/milvus.mdx) |
49
+ | [✅ Chroma](https://docs.shield360.ai/latest/integrations/chromadb) |
50
+ | [✅ Pinecone](https://docs.shield360.ai/latest/integrations/pinecone) |
51
+ | [✅ Qdrant](https://docs.shield360.ai/latest/integrations/qdrant) |
52
+ | [✅ Milvus](https://docs.shield360.ai/latest/integrations/milvus) |
53
53
 
54
54
  | Frameworks |
55
55
  | ------------------------------------------------------------------------------------------- |
56
- | [✅ LangChain](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/integrations/langchain.mdx) |
57
- | [✅ LlamaIndex](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/integrations/llama-index.mdx) |
58
- | [✅ Vercel AI SDK](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/integrations/vercel-ai.mdx) |
56
+ | [✅ LangChain](https://docs.shield360.ai/latest/integrations/langchain) |
57
+ | [✅ LlamaIndex](https://docs.shield360.ai/latest/integrations/llama-index) |
58
+ | [✅ Vercel AI SDK](https://docs.shield360.ai/latest/integrations/vercel-ai) |
59
59
 
60
60
  ## Supported Destinations
61
61
 
62
- - [✅ OpenTelemetry Collector](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/destinations/otelcol.mdx)
63
- - [✅ Prometheus + Tempo](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/destinations/prometheus-tempo.mdx)
64
- - [✅ Prometheus + Jaeger](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/destinations/prometheus-jaeger.mdx)
65
- - [✅ Grafana Cloud](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/destinations/grafanacloud.mdx)
66
- - [✅ New Relic](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/destinations/new-relic.mdx)
67
- - [✅ Elastic](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/destinations/elastic.mdx)
68
- - [✅ HyperDX](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/destinations/hyperdx.mdx)
69
- - [✅ DataDog](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/destinations/datadog.mdx)
70
- - [✅ SigNoz](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/destinations/signoz.mdx)
71
- - [✅ OneUptime](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/destinations/oneuptime.mdx)
72
- - [✅ Dynatrace](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/destinations/dynatrace.mdx)
73
- - [✅ OpenObserve](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/destinations/openobserve.mdx)
74
- - [✅ Highlight.io](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/destinations/highlight.mdx)
62
+ - [✅ OpenTelemetry Collector](https://docs.shield360.ai/latest/connections/otelcol)
63
+ - [✅ Prometheus + Tempo](https://docs.shield360.ai/latest/connections/prometheus-tempo)
64
+ - [✅ Prometheus + Jaeger](https://docs.shield360.ai/latest/connections/prometheus-jaeger)
65
+ - [✅ Grafana Cloud](https://docs.shield360.ai/latest/connections/grafanacloud)
66
+ - [✅ New Relic](https://docs.shield360.ai/latest/connections/new-relic)
67
+ - [✅ Elastic](https://docs.shield360.ai/latest/connections/elastic)
68
+ - [✅ HyperDX](https://docs.shield360.ai/latest/connections/hyperdx)
69
+ - [✅ DataDog](https://docs.shield360.ai/latest/connections/datadog)
70
+ - [✅ SigNoz](https://docs.shield360.ai/latest/connections/signoz)
71
+ - [✅ OneUptime](https://docs.shield360.ai/latest/connections/oneuptime)
72
+ - [✅ Dynatrace](https://docs.shield360.ai/latest/connections/dynatrace)
73
+ - [✅ OpenObserve](https://docs.shield360.ai/latest/connections/openobserve)
74
+ - [✅ Highlight.io](https://docs.shield360.ai/latest/connections/highlight)
75
75
 
76
76
  ## Supported Metrics
77
77
 
@@ -176,9 +176,9 @@ export OTEL_EXPORTER_OTLP_HEADERS = "YOUR_OTEL_ENDPOINT_AUTH"
176
176
  ### Step 3: Visualize and Optimize!
177
177
  Now that your LLM observability data is being collected and sent to configured OpenTelemetry destination, the next step is to visualize and analyze this data. This will help you understand your LLM application's performance and behavior and identify where it can be improved.
178
178
 
179
- If you want to use Shield360's Observability Dashboard to monitor LLM usage—like cost, tokens, and user interactions—please check out our [Quickstart Guide](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/quickstart-ai-observability.mdx).
179
+ If you want to use Shield360's Observability Dashboard to monitor LLM usage—like cost, tokens, and user interactions—please check out our [Quickstart Guide](https://docs.shield360.ai/latest/quickstart).
180
180
 
181
- If you're sending metrics and traces to other observability tools, take a look at our [Connections Guide](https://github.com/ThinkfleetAI/shield360-js/blob/main/docs/destinations/overview.mdx) to start using a pre-built dashboard we have created for these tools.
181
+ If you're sending metrics and traces to other observability tools, take a look at our [Connections Guide](https://docs.shield360.ai/latest/destinations/intro) to start using a pre-built dashboard we have created for these tools.
182
182
 
183
183
 
184
184
  ## Configuration
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const destination_1 = require("../destination");
4
+ /**
5
+ * A Shield360 URL and API key are enough to send telemetry.
6
+ *
7
+ * Before this, they configured prompt management, the vault and evaluations,
8
+ * and telemetry silently went to the console unless somebody also set the
9
+ * OTLP variables — which every customer has to discover by finding nothing
10
+ * in their dashboard.
11
+ */
12
+ describe('resolveDestination', () => {
13
+ it('points at the platform ingest route with the key as bearer', () => {
14
+ const d = (0, destination_1.resolveDestination)({
15
+ shield360Url: 'https://app.shield360.ai',
16
+ shield360ApiKey: 'k-1',
17
+ });
18
+ expect(d.otlpEndpoint).toBe(`https://app.shield360.ai${destination_1.INGEST_PATH}`);
19
+ expect(d.otlpHeaders).toEqual({ Authorization: 'Bearer k-1' });
20
+ });
21
+ it('tolerates a trailing slash on the URL', () => {
22
+ const d = (0, destination_1.resolveDestination)({ shield360Url: 'https://app.shield360.ai/', shield360ApiKey: 'k' });
23
+ expect(d.otlpEndpoint).toBe(`https://app.shield360.ai${destination_1.INGEST_PATH}`);
24
+ });
25
+ it('lets an explicit OTLP endpoint win, untouched', () => {
26
+ const d = (0, destination_1.resolveDestination)({
27
+ otlpEndpoint: 'http://collector:4318',
28
+ otlpHeaders: { 'X-Team': 'ai' },
29
+ shield360Url: 'https://app.shield360.ai',
30
+ shield360ApiKey: 'k',
31
+ });
32
+ expect(d.otlpEndpoint).toBe('http://collector:4318');
33
+ // No bearer is added to somebody else's collector.
34
+ expect(d.otlpHeaders).toEqual({ 'X-Team': 'ai' });
35
+ });
36
+ it('strips a pasted /v1/traces from an explicit endpoint, as before', () => {
37
+ const d = (0, destination_1.resolveDestination)({ otlpEndpoint: 'http://collector:4318/v1/traces' });
38
+ expect(d.otlpEndpoint).toBe('http://collector:4318');
39
+ });
40
+ it('never overwrites an Authorization header the caller set', () => {
41
+ const d = (0, destination_1.resolveDestination)({
42
+ otlpHeaders: { authorization: 'Basic abc' },
43
+ shield360Url: 'https://app.shield360.ai',
44
+ shield360ApiKey: 'k',
45
+ });
46
+ expect(d.otlpHeaders).toEqual({ authorization: 'Basic abc' });
47
+ });
48
+ it('resolves to nowhere with only one of the two, so the console fallback stays', () => {
49
+ expect((0, destination_1.resolveDestination)({ shield360Url: 'https://app.shield360.ai' }).otlpEndpoint).toBeUndefined();
50
+ expect((0, destination_1.resolveDestination)({ shield360ApiKey: 'k' }).otlpEndpoint).toBeUndefined();
51
+ expect((0, destination_1.resolveDestination)({}).otlpEndpoint).toBeUndefined();
52
+ });
53
+ });
54
+ /**
55
+ * A Shield360 key ends in `=`. The old reader split each pair on every `=`
56
+ * and sent the key one character short — every span refused as invalid, and
57
+ * nothing in the SDK to say why.
58
+ */
59
+ describe('parseOtlpHeaders', () => {
60
+ it('keeps a value that itself contains "="', () => {
61
+ expect((0, destination_1.parseOtlpHeaders)('Authorization=Bearer shield360-abc/DEF==')).toEqual({
62
+ Authorization: 'Bearer shield360-abc/DEF==',
63
+ });
64
+ });
65
+ it('reads several pairs and trims the spaces around them', () => {
66
+ expect((0, destination_1.parseOtlpHeaders)(' Authorization=Bearer k= , x-team = ai ')).toEqual({
67
+ Authorization: 'Bearer k=',
68
+ 'x-team': 'ai',
69
+ });
70
+ });
71
+ it('ignores what is not a pair', () => {
72
+ expect((0, destination_1.parseOtlpHeaders)('=nothing,justaname,,')).toEqual({});
73
+ expect((0, destination_1.parseOtlpHeaders)(undefined)).toEqual({});
74
+ });
75
+ });
76
+ //# sourceMappingURL=destination.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"destination.test.js","sourceRoot":"","sources":["../../src/__tests__/destination.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const helpers_1 = __importDefault(require("../helpers"));
7
+ const pricing_json_1 = __importDefault(require("../pricing.json"));
8
+ /**
9
+ * The bundled price table knows the current Claude models.
10
+ *
11
+ * `getChatModelCost` returns 0 for a model it has no entry for, and 0 is
12
+ * indistinguishable from "this call was free". When the table fell behind the
13
+ * model line-up, every request to the newest — and dearest — models was
14
+ * reported as costing nothing, which is the one direction a cost tracker must
15
+ * never be wrong in. These pin the entries and the arithmetic against the
16
+ * published per-million prices.
17
+ */
18
+ const MILLION = 1000000;
19
+ /** Cost of a million input and a million output tokens, in dollars. */
20
+ function perMillion(model) {
21
+ return {
22
+ input: helpers_1.default.getChatModelCost(model, pricing_json_1.default, MILLION, 0),
23
+ output: helpers_1.default.getChatModelCost(model, pricing_json_1.default, 0, MILLION),
24
+ };
25
+ }
26
+ describe('pricing for the Claude 5 family', () => {
27
+ it.each([
28
+ ['claude-opus-5', 5, 25],
29
+ ['claude-opus-5-5', 4, 20],
30
+ ['claude-opus-4-8', 5, 25],
31
+ ['claude-sonnet-5', 2, 10],
32
+ ['claude-fable-5', 10, 50],
33
+ ['claude-fable-5-1', 10, 50],
34
+ ['claude-haiku-4-5-20251001', 1, 5],
35
+ ])('%s costs $%d in and $%d out per million tokens', (model, input, output) => {
36
+ expect(perMillion(model)).toEqual({ input, output });
37
+ });
38
+ it('prices a cache read at a tenth of input, and a quarter of that on Fable 5.1', () => {
39
+ const opusRead = helpers_1.default.getChatModelCost('claude-opus-5', pricing_json_1.default, 0, 0, MILLION);
40
+ expect(opusRead).toBeCloseTo(0.5, 6);
41
+ const fableRead = helpers_1.default.getChatModelCost('claude-fable-5-1', pricing_json_1.default, 0, 0, MILLION);
42
+ expect(fableRead).toBeCloseTo(0.25, 6);
43
+ });
44
+ it('prices a cache write at one and a quarter times input', () => {
45
+ const write = helpers_1.default.getChatModelCost('claude-sonnet-5', pricing_json_1.default, 0, 0, 0, MILLION);
46
+ expect(write).toBeCloseTo(2.5, 6);
47
+ });
48
+ it('is not silently free for a model the table does know', () => {
49
+ // The failure mode this file exists for: an unknown model costs 0.
50
+ expect(helpers_1.default.getChatModelCost('claude-opus-5', pricing_json_1.default, 1000, 1000)).toBeGreaterThan(0);
51
+ });
52
+ });
53
+ //# sourceMappingURL=pricing-claude-5.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pricing-claude-5.test.js","sourceRoot":"","sources":["../../src/__tests__/pricing-claude-5.test.ts"],"names":[],"mappings":";;;;;AAAA,yDAAyC;AACzC,mEAAsC;AAEtC;;;;;;;;;GASG;AAEH,MAAM,OAAO,GAAG,OAAS,CAAC;AAE1B,uEAAuE;AACvE,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO;QACL,KAAK,EAAE,iBAAe,CAAC,gBAAgB,CAAC,KAAK,EAAE,sBAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACnE,MAAM,EAAE,iBAAe,CAAC,gBAAgB,CAAC,KAAK,EAAE,sBAAO,EAAE,CAAC,EAAE,OAAO,CAAC;KACrE,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,EAAE,CAAC,IAAI,CAAC;QACN,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;QACxB,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1B,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1B,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1B,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,CAAC;QAC1B,CAAC,kBAAkB,EAAE,EAAE,EAAE,EAAE,CAAC;QAC5B,CAAC,2BAA2B,EAAE,CAAC,EAAE,CAAC,CAAC;KACpC,CAAC,CAAC,gDAAgD,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;QAC5E,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,MAAM,QAAQ,GAAG,iBAAe,CAAC,gBAAgB,CAAC,eAAe,EAAE,sBAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAC3F,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAErC,MAAM,SAAS,GAAG,iBAAe,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,sBAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAC/F,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,KAAK,GAAG,iBAAe,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,sBAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QAC7F,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,mEAAmE;QACnE,MAAM,CAAC,iBAAe,CAAC,gBAAgB,CAAC,eAAe,EAAE,sBAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACpG,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Where telemetry goes when nobody said.
3
+ *
4
+ * The SDK has always exported over OTLP to `OTEL_EXPORTER_OTLP_ENDPOINT`, with
5
+ * `OTEL_EXPORTER_OTLP_HEADERS` for whatever authorises it. That is the right
6
+ * shape for a collector of your own. It is the wrong first experience for a
7
+ * Shield360 customer, who already holds a URL and an API key for the platform
8
+ * and reasonably expects them to be enough.
9
+ *
10
+ * They are, now: with no OTLP endpoint given, a Shield360 URL and API key
11
+ * resolve to the platform's authenticated ingest route, with the key as the
12
+ * bearer token. An explicit endpoint always wins, and an explicit
13
+ * Authorization header is never overwritten.
14
+ */
15
+ export declare const INGEST_PATH = "/api/ingest/otlp";
16
+ export interface DestinationInput {
17
+ /** From the option or OTEL_EXPORTER_OTLP_ENDPOINT. */
18
+ otlpEndpoint?: string;
19
+ /** From the option or OTEL_EXPORTER_OTLP_HEADERS, already parsed. */
20
+ otlpHeaders?: Record<string, unknown>;
21
+ shield360Url?: string;
22
+ shield360ApiKey?: string;
23
+ }
24
+ export interface Destination {
25
+ otlpEndpoint?: string;
26
+ otlpHeaders: Record<string, unknown>;
27
+ }
28
+ /**
29
+ * `OTEL_EXPORTER_OTLP_HEADERS`, as OTel spells it: comma-separated
30
+ * `name=value` pairs.
31
+ *
32
+ * Split on the first `=` only. A Shield360 API key ends in `=`, and splitting
33
+ * on every one sent the key without its last character — every span refused
34
+ * as an invalid key, and nothing to say why.
35
+ */
36
+ export declare function parseOtlpHeaders(raw: string | undefined): Record<string, string>;
37
+ export declare function resolveDestination(input: DestinationInput): Destination;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ /**
3
+ * Where telemetry goes when nobody said.
4
+ *
5
+ * The SDK has always exported over OTLP to `OTEL_EXPORTER_OTLP_ENDPOINT`, with
6
+ * `OTEL_EXPORTER_OTLP_HEADERS` for whatever authorises it. That is the right
7
+ * shape for a collector of your own. It is the wrong first experience for a
8
+ * Shield360 customer, who already holds a URL and an API key for the platform
9
+ * and reasonably expects them to be enough.
10
+ *
11
+ * They are, now: with no OTLP endpoint given, a Shield360 URL and API key
12
+ * resolve to the platform's authenticated ingest route, with the key as the
13
+ * bearer token. An explicit endpoint always wins, and an explicit
14
+ * Authorization header is never overwritten.
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.INGEST_PATH = void 0;
18
+ exports.parseOtlpHeaders = parseOtlpHeaders;
19
+ exports.resolveDestination = resolveDestination;
20
+ exports.INGEST_PATH = '/api/ingest/otlp';
21
+ /**
22
+ * `OTEL_EXPORTER_OTLP_HEADERS`, as OTel spells it: comma-separated
23
+ * `name=value` pairs.
24
+ *
25
+ * Split on the first `=` only. A Shield360 API key ends in `=`, and splitting
26
+ * on every one sent the key without its last character — every span refused
27
+ * as an invalid key, and nothing to say why.
28
+ */
29
+ function parseOtlpHeaders(raw) {
30
+ const headers = {};
31
+ for (const pair of (raw ?? '').split(',')) {
32
+ const at = pair.indexOf('=');
33
+ if (at <= 0)
34
+ continue;
35
+ const name = pair.slice(0, at).trim();
36
+ const value = pair.slice(at + 1).trim();
37
+ if (name && value)
38
+ headers[name] = value;
39
+ }
40
+ return headers;
41
+ }
42
+ function hasHeader(headers, name) {
43
+ const wanted = name.toLowerCase();
44
+ return Object.keys(headers).some((key) => key.toLowerCase() === wanted);
45
+ }
46
+ function resolveDestination(input) {
47
+ const headers = { ...(input.otlpHeaders ?? {}) };
48
+ const explicit = input.otlpEndpoint?.trim();
49
+ if (explicit) {
50
+ // `/v1/traces` is the most common thing to paste; the exporters add the
51
+ // signal path themselves.
52
+ return { otlpEndpoint: explicit.replace(/\/v1\/traces$/, ''), otlpHeaders: headers };
53
+ }
54
+ const url = input.shield360Url?.trim().replace(/\/+$/, '');
55
+ const apiKey = input.shield360ApiKey?.trim();
56
+ if (!url || !apiKey) {
57
+ return { otlpEndpoint: undefined, otlpHeaders: headers };
58
+ }
59
+ if (!hasHeader(headers, 'Authorization')) {
60
+ headers.Authorization = `Bearer ${apiKey}`;
61
+ }
62
+ return { otlpEndpoint: `${url}${exports.INGEST_PATH}`, otlpHeaders: headers };
63
+ }
64
+ //# sourceMappingURL=destination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"destination.js","sourceRoot":"","sources":["../src/destination.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AA0BH,4CAUC;AAOD,gDAoBC;AA7DY,QAAA,WAAW,GAAG,kBAAkB,CAAC;AAgB9C;;;;;;;GAOG;AACH,SAAgB,gBAAgB,CAAC,GAAuB;IACtD,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,EAAE,IAAI,CAAC;YAAE,SAAS;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,IAAI,IAAI,KAAK;YAAE,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IAC3C,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,SAAS,CAAC,OAAgC,EAAE,IAAY;IAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAClC,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC;AAC1E,CAAC;AAED,SAAgB,kBAAkB,CAAC,KAAuB;IACxD,MAAM,OAAO,GAA4B,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,CAAC;IAE1E,MAAM,QAAQ,GAAG,KAAK,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC;IAC5C,IAAI,QAAQ,EAAE,CAAC;QACb,wEAAwE;QACxE,0BAA0B;QAC1B,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IACvF,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;IAC7C,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAC3D,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,aAAa,GAAG,UAAU,MAAM,EAAE,CAAC;IAC7C,CAAC;IACD,OAAO,EAAE,YAAY,EAAE,GAAG,GAAG,GAAG,mBAAW,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;AACxE,CAAC"}
package/dist/index.js CHANGED
@@ -45,6 +45,7 @@ const custom_1 = require("./guard/custom");
45
45
  Object.defineProperty(exports, "Custom", { enumerable: true, get: function () { return custom_1.Custom; } });
46
46
  const pipeline_1 = require("./guard/pipeline");
47
47
  Object.defineProperty(exports, "Pipeline", { enumerable: true, get: function () { return pipeline_1.Pipeline; } });
48
+ const destination_1 = require("./destination");
48
49
  const base_2 = require("./guard/base");
49
50
  Object.defineProperty(exports, "Guard", { enumerable: true, get: function () { return base_2.Guard; } });
50
51
  Object.defineProperty(exports, "GuardAction", { enumerable: true, get: function () { return base_2.GuardAction; } });
@@ -62,22 +63,22 @@ function resolveOptions(options) {
62
63
  const o = options || {};
63
64
  const environment = o.environment ?? constant_1.DEFAULT_ENVIRONMENT;
64
65
  const applicationName = o.applicationName ?? constant_1.DEFAULT_APPLICATION_NAME;
66
+ const shield360ApiKey = o.shield360ApiKey ?? process.env.SHIELD360_API_KEY ?? undefined;
67
+ const shield360Url = o.shield360Url ?? process.env.SHIELD360_URL ?? undefined;
65
68
  const rawEndpoint = o.otlpEndpoint ??
66
69
  process.env.OTEL_EXPORTER_OTLP_ENDPOINT ??
67
70
  undefined;
68
- const otlpEndpoint = rawEndpoint
69
- ? rawEndpoint.replace(/\/v1\/traces$/, '')
70
- : undefined;
71
- let otlpHeaders = o.otlpHeaders ?? undefined;
72
- if (!otlpHeaders && process.env.OTEL_EXPORTER_OTLP_HEADERS) {
73
- otlpHeaders = process.env.OTEL_EXPORTER_OTLP_HEADERS.split(',').reduce((acc, item) => {
74
- const keyVal = item.split('=');
75
- acc[keyVal[0]] = keyVal[1];
76
- return acc;
77
- }, {});
71
+ let givenHeaders = o.otlpHeaders ?? undefined;
72
+ if (!givenHeaders && process.env.OTEL_EXPORTER_OTLP_HEADERS) {
73
+ givenHeaders = (0, destination_1.parseOtlpHeaders)(process.env.OTEL_EXPORTER_OTLP_HEADERS);
78
74
  }
79
- if (!otlpHeaders)
80
- otlpHeaders = {};
75
+ // With no OTLP endpoint, a Shield360 URL and API key are the destination.
76
+ const { otlpEndpoint, otlpHeaders } = (0, destination_1.resolveDestination)({
77
+ otlpEndpoint: rawEndpoint,
78
+ otlpHeaders: givenHeaders,
79
+ shield360Url,
80
+ shield360ApiKey,
81
+ });
81
82
  let disableBatch = o.disableBatch ?? undefined;
82
83
  const envDisableBatch = (0, utils_1.parseBoolEnv)('SHIELD360_DISABLE_BATCH');
83
84
  if (disableBatch === undefined) {
@@ -103,8 +104,6 @@ function resolveOptions(options) {
103
104
  if (collectGpuStats === undefined) {
104
105
  collectGpuStats = envCollectGpuStats ?? false;
105
106
  }
106
- const shield360ApiKey = o.shield360ApiKey ?? process.env.SHIELD360_API_KEY ?? undefined;
107
- const shield360Url = o.shield360Url ?? process.env.SHIELD360_URL ?? undefined;
108
107
  return {
109
108
  environment,
110
109
  applicationName,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const api_1 = require("@opentelemetry/api");
7
+ const wrapper_1 = __importDefault(require("../anthropic/wrapper"));
8
+ const helpers_1 = __importDefault(require("../../helpers"));
9
+ const config_1 = __importDefault(require("../../config"));
10
+ // SHIELD: `create` must hand back the Anthropic SDK's APIPromise, not a plain
11
+ // Promise. The SDK's own helpers — `messages.stream()` and
12
+ // `beta.messages.toolRunner({ stream: true })` — call `.withResponse()` on it;
13
+ // an async wrapper broke them with "withResponse is not a function".
14
+ /** The parts of the Anthropic SDK's APIPromise the wrapper relies on. */
15
+ class FakeAPIPromise extends Promise {
16
+ static make(response, parse) {
17
+ const p = new FakeAPIPromise(() => { });
18
+ p.response = response;
19
+ p.parser = parse;
20
+ return p;
21
+ }
22
+ static get [Symbol.species]() {
23
+ return Promise;
24
+ }
25
+ parse() {
26
+ if (!this.parsed) {
27
+ FakeAPIPromise.parses += 1;
28
+ this.parsed = this.response.then(() => this.parser());
29
+ }
30
+ return this.parsed;
31
+ }
32
+ _thenUnwrap(transform) {
33
+ return FakeAPIPromise.make(this.response, async () => transform(await this.parser()));
34
+ }
35
+ asResponse() {
36
+ return this.response;
37
+ }
38
+ async withResponse() {
39
+ const [data, response] = await Promise.all([this.parse(), this.asResponse()]);
40
+ return { data, response };
41
+ }
42
+ then(ok, no) {
43
+ return this.parse().then(ok, no);
44
+ }
45
+ }
46
+ FakeAPIPromise.parses = 0;
47
+ const message = {
48
+ id: 'msg_1',
49
+ model: 'claude-opus-5',
50
+ stop_reason: 'end_turn',
51
+ content: [{ type: 'text', text: 'ok' }],
52
+ usage: { input_tokens: 10, output_tokens: 5 },
53
+ };
54
+ function wrap(create) {
55
+ const tracer = api_1.trace.getTracer('test');
56
+ return wrapper_1.default._patchMessageCreate(tracer, 'anthropic.resources.beta.messages')(create);
57
+ }
58
+ describe('Anthropic create keeps the SDK APIPromise', () => {
59
+ beforeAll(() => {
60
+ config_1.default.applicationName = 'test-app';
61
+ config_1.default.environment = 'test';
62
+ config_1.default.captureMessageContent = false;
63
+ });
64
+ beforeEach(() => {
65
+ FakeAPIPromise.parses = 0;
66
+ jest.restoreAllMocks();
67
+ });
68
+ it('returns something with withResponse, and the parsed message through it', async () => {
69
+ const create = jest.fn(() => FakeAPIPromise.make(Promise.resolve({ ok: true }), async () => message));
70
+ const result = wrap(create).call({}, { model: 'claude-opus-5', messages: [] });
71
+ expect(typeof result.withResponse).toBe('function');
72
+ const { data, response } = await result.withResponse();
73
+ expect(data).toMatchObject({ id: 'msg_1', usage: { input_tokens: 10 } });
74
+ expect(response.ok).toBe(true);
75
+ });
76
+ it('is still awaitable directly, as ordinary calls use it', async () => {
77
+ const create = jest.fn(() => FakeAPIPromise.make(Promise.resolve({ ok: true }), async () => message));
78
+ await expect(wrap(create).call({}, { model: 'claude-opus-5', messages: [] })).resolves.toMatchObject({ id: 'msg_1' });
79
+ });
80
+ it('never parses the original response, so the body is read once', async () => {
81
+ const create = jest.fn(() => FakeAPIPromise.make(Promise.resolve({ ok: true }), async () => message));
82
+ await wrap(create).call({}, { model: 'claude-opus-5', messages: [] });
83
+ expect(FakeAPIPromise.parses).toBe(1);
84
+ });
85
+ it('passes a failed request to the caller and records it on the span', async () => {
86
+ const handle = jest.spyOn(helpers_1.default, 'handleException');
87
+ const error = Object.assign(new Error('400 bad model'), { status: 400 });
88
+ const failed = Promise.reject(error);
89
+ failed.catch(() => undefined);
90
+ const create = jest.fn(() => FakeAPIPromise.make(failed, async () => message));
91
+ await expect(wrap(create).call({}, { model: 'bad-model', messages: [] })).rejects.toThrow('400 bad model');
92
+ expect(handle).toHaveBeenCalledWith(expect.anything(), error);
93
+ });
94
+ it('still works with a client that returns a plain promise', async () => {
95
+ const create = jest.fn(async () => message);
96
+ await expect(wrap(create).call({}, { model: 'claude-opus-5', messages: [] })).resolves.toMatchObject({ id: 'msg_1' });
97
+ });
98
+ });
99
+ //# sourceMappingURL=anthropic-api-promise.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic-api-promise.test.js","sourceRoot":"","sources":["../../../src/instrumentation/__tests__/anthropic-api-promise.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const instrumentation_1 = require("@opentelemetry/instrumentation");
7
+ const anthropic_1 = __importDefault(require("../anthropic"));
8
+ const wrapper_1 = __importDefault(require("../anthropic/wrapper"));
9
+ /**
10
+ * Which of the Anthropic SDK's Messages resources get patched.
11
+ *
12
+ * The SDK has two: `client.messages` and `client.beta.messages`. They are
13
+ * separate classes, not a subclass and its parent, and the beta one is what
14
+ * the SDK's own tool runner calls. For a long time only the stable class was
15
+ * wrapped, so an agent built on `client.beta.messages.toolRunner` — the
16
+ * documented way to run tools — emitted no spans and reported zero cost while
17
+ * looking fully instrumented. That is the failure this file guards against.
18
+ *
19
+ * The SDK is not a dependency here, so the module is a stand-in with the same
20
+ * shape: a client class carrying `Messages` and `Beta.Messages` as statics,
21
+ * each with `create` on its prototype.
22
+ */
23
+ function fakeAnthropicModule(options = {}) {
24
+ const { withBeta = true } = options;
25
+ class Messages {
26
+ async create(_params) {
27
+ return { id: 'msg', usage: { input_tokens: 1, output_tokens: 1 } };
28
+ }
29
+ }
30
+ class BetaMessages {
31
+ async create(_params) {
32
+ return { id: 'beta-msg', usage: { input_tokens: 1, output_tokens: 1 } };
33
+ }
34
+ }
35
+ class Beta {
36
+ }
37
+ Beta.Messages = BetaMessages;
38
+ class Anthropic {
39
+ }
40
+ Anthropic.Messages = Messages;
41
+ Anthropic.Beta = withBeta ? Beta : undefined;
42
+ return { Anthropic };
43
+ }
44
+ describe('Shield360AnthropicInstrumentation', () => {
45
+ it('wraps create on both the stable and the beta Messages resources', () => {
46
+ const mod = fakeAnthropicModule();
47
+ new anthropic_1.default().manualPatch(mod);
48
+ expect((0, instrumentation_1.isWrapped)(mod.Anthropic.Messages.prototype.create)).toBe(true);
49
+ expect((0, instrumentation_1.isWrapped)(mod.Anthropic.Beta.Messages.prototype.create)).toBe(true);
50
+ });
51
+ it('names the beta resource as its own endpoint, so the two are told apart', () => {
52
+ const spy = jest.spyOn(wrapper_1.default, '_patchMessageCreate');
53
+ new anthropic_1.default().manualPatch(fakeAnthropicModule());
54
+ const endpoints = spy.mock.calls.map((call) => call[1]);
55
+ expect(endpoints).toContain('anthropic.resources.messages');
56
+ expect(endpoints).toContain('anthropic.resources.beta.messages');
57
+ spy.mockRestore();
58
+ });
59
+ it('still patches an SDK too old to have a Beta namespace', () => {
60
+ const mod = fakeAnthropicModule({ withBeta: false });
61
+ expect(() => new anthropic_1.default().manualPatch(mod)).not.toThrow();
62
+ expect((0, instrumentation_1.isWrapped)(mod.Anthropic.Messages.prototype.create)).toBe(true);
63
+ });
64
+ it('patches once, however many times it is asked', () => {
65
+ const mod = fakeAnthropicModule();
66
+ const instrumentation = new anthropic_1.default();
67
+ instrumentation.manualPatch(mod);
68
+ instrumentation.manualPatch(mod);
69
+ // A double wrap would produce a span per layer for one request.
70
+ const wrapped = mod.Anthropic.Beta.Messages.prototype.create;
71
+ expect((0, instrumentation_1.isWrapped)(wrapped)).toBe(true);
72
+ expect((0, instrumentation_1.isWrapped)(wrapped.__original)).toBe(false);
73
+ });
74
+ it('unpatches both resources, leaving the originals callable', async () => {
75
+ const mod = fakeAnthropicModule();
76
+ const instrumentation = new anthropic_1.default();
77
+ instrumentation.manualPatch(mod);
78
+ instrumentation._unpatch(mod);
79
+ expect((0, instrumentation_1.isWrapped)(mod.Anthropic.Messages.prototype.create)).toBe(false);
80
+ expect((0, instrumentation_1.isWrapped)(mod.Anthropic.Beta.Messages.prototype.create)).toBe(false);
81
+ await expect(new mod.Anthropic.Beta.Messages().create({})).resolves.toMatchObject({
82
+ id: 'beta-msg',
83
+ });
84
+ });
85
+ });
86
+ //# sourceMappingURL=anthropic-instrumentation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic-instrumentation.test.js","sourceRoot":"","sources":["../../../src/instrumentation/__tests__/anthropic-instrumentation.test.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,12 @@ export default class Shield360AnthropicInstrumentation extends InstrumentationBa
6
6
  constructor(config?: AnthropicInstrumentationConfig);
7
7
  protected init(): void | InstrumentationModuleDefinition | InstrumentationModuleDefinition[];
8
8
  manualPatch(anthropic: any): void;
9
+ /**
10
+ * The prototype carrying `create` for one resource, or undefined when this
11
+ * SDK version does not have it. `Beta` arrived after the minimum supported
12
+ * version, so its absence is not an error.
13
+ */
14
+ private static _resourcePrototype;
9
15
  protected _patch(moduleExports: any): void;
10
16
  protected _unpatch(moduleExports: any): void;
11
17
  }
@@ -6,6 +6,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const instrumentation_1 = require("@opentelemetry/instrumentation");
7
7
  const constant_1 = require("../../constant");
8
8
  const wrapper_1 = __importDefault(require("./wrapper"));
9
+ /**
10
+ * The two Messages resources the Anthropic SDK ships, and where each lives.
11
+ *
12
+ * `client.messages` is the stable API. `client.beta.messages` is a separate
13
+ * class with its own prototype — not a subclass — and it is the one the SDK's
14
+ * own tool runner (`client.beta.messages.toolRunner`) and every beta feature
15
+ * call. Patching only the stable class meant an agent built on the tool
16
+ * runner produced no spans and no cost at all, while looking instrumented.
17
+ */
18
+ const MESSAGE_RESOURCES = [
19
+ { path: ['Messages'], endpoint: 'anthropic.resources.messages' },
20
+ { path: ['Beta', 'Messages'], endpoint: 'anthropic.resources.beta.messages' },
21
+ ];
9
22
  class Shield360AnthropicInstrumentation extends instrumentation_1.InstrumentationBase {
10
23
  constructor(config = {}) {
11
24
  super(`${constant_1.INSTRUMENTATION_PREFIX}/instrumentation-anthropic`, '1.0.0', config);
@@ -24,13 +37,32 @@ class Shield360AnthropicInstrumentation extends instrumentation_1.Instrumentatio
24
37
  manualPatch(anthropic) {
25
38
  this._patch(anthropic);
26
39
  }
40
+ /**
41
+ * The prototype carrying `create` for one resource, or undefined when this
42
+ * SDK version does not have it. `Beta` arrived after the minimum supported
43
+ * version, so its absence is not an error.
44
+ */
45
+ static _resourcePrototype(AnthropicClass, path) {
46
+ let target = AnthropicClass;
47
+ for (const key of path) {
48
+ target = target?.[key];
49
+ if (!target)
50
+ return undefined;
51
+ }
52
+ return typeof target.prototype?.create === 'function' ? target.prototype : undefined;
53
+ }
27
54
  _patch(moduleExports) {
28
55
  try {
29
56
  const AnthropicClass = moduleExports.Anthropic ?? moduleExports;
30
- if ((0, instrumentation_1.isWrapped)(AnthropicClass.Messages.prototype.create)) {
31
- this._unwrap(AnthropicClass.Messages.prototype, 'create');
57
+ for (const { path, endpoint } of MESSAGE_RESOURCES) {
58
+ const proto = Shield360AnthropicInstrumentation._resourcePrototype(AnthropicClass, path);
59
+ if (!proto)
60
+ continue;
61
+ if ((0, instrumentation_1.isWrapped)(proto.create)) {
62
+ this._unwrap(proto, 'create');
63
+ }
64
+ this._wrap(proto, 'create', wrapper_1.default._patchMessageCreate(this.tracer, endpoint));
32
65
  }
33
- this._wrap(AnthropicClass.Messages.prototype, 'create', wrapper_1.default._patchMessageCreate(this.tracer));
34
66
  }
35
67
  catch (e) {
36
68
  console.error('Error in _patch method:', e);
@@ -38,7 +70,12 @@ class Shield360AnthropicInstrumentation extends instrumentation_1.Instrumentatio
38
70
  }
39
71
  _unpatch(moduleExports) {
40
72
  const AnthropicClass = moduleExports.Anthropic ?? moduleExports;
41
- this._unwrap(AnthropicClass.Messages.prototype, 'create');
73
+ for (const { path } of MESSAGE_RESOURCES) {
74
+ const proto = Shield360AnthropicInstrumentation._resourcePrototype(AnthropicClass, path);
75
+ if (proto && (0, instrumentation_1.isWrapped)(proto.create)) {
76
+ this._unwrap(proto, 'create');
77
+ }
78
+ }
42
79
  }
43
80
  }
44
81
  exports.default = Shield360AnthropicInstrumentation;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/instrumentation/anthropic/index.ts"],"names":[],"mappings":";;;;;AAAA,oEAKwC;AAExC,6CAAwD;AACxD,wDAAyC;AAIzC,MAAqB,iCAAkC,SAAQ,qCAAmB;IAChF,YAAY,SAAyC,EAAE;QACrD,KAAK,CAAC,GAAG,iCAAsB,4BAA4B,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAChF,CAAC;IAES,IAAI;QACZ,MAAM,MAAM,GAAG,IAAI,qDAAmC,CACpD,mBAAmB,EACnB,CAAC,WAAW,CAAC,EACb,CAAC,aAAa,EAAE,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAC3B,OAAO,aAAa,CAAC;QACvB,CAAC,EACD,CAAC,aAAa,EAAE,EAAE;YAChB,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CACF,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAEM,WAAW,CAAC,SAAc;QAC/B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC;IAES,MAAM,CAAC,aAAkB;QACjC,IAAI,CAAC;YACH,MAAM,cAAc,GAAI,aAAqB,CAAC,SAAS,IAAI,aAAa,CAAC;YACzE,IAAI,IAAA,2BAAS,EAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxD,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC5D,CAAC;YAED,IAAI,CAAC,KAAK,CACR,cAAc,CAAC,QAAQ,CAAC,SAAS,EACjC,QAAQ,EACR,iBAAgB,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAClD,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAES,QAAQ,CAAC,aAAkB;QACnC,MAAM,cAAc,GAAI,aAAqB,CAAC,SAAS,IAAI,aAAa,CAAC;QACzE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC5D,CAAC;CACF;AA/CD,oDA+CC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/instrumentation/anthropic/index.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,15 @@ export default class AnthropicWrapper extends BaseWrapper {
4
4
  static aiSystem: string;
5
5
  static serverAddress: string;
6
6
  static serverPort: number;
7
- static _patchMessageCreate(tracer: Tracer): any;
7
+ /**
8
+ * The wrapper for `create` on a Messages resource.
9
+ *
10
+ * `genAIEndpoint` names which resource was patched, because the SDK has two
11
+ * with the same shape: `client.messages` and `client.beta.messages`. The
12
+ * request and response formats are identical, so one wrapper serves both;
13
+ * only the endpoint attribute tells them apart.
14
+ */
15
+ static _patchMessageCreate(tracer: Tracer, genAIEndpoint?: string): any;
8
16
  static _messageCreate({ args, genAIEndpoint, response, span, }: {
9
17
  args: any[];
10
18
  genAIEndpoint: string;
@@ -60,10 +60,23 @@ function spanCreationAttrs(operationName, requestModel) {
60
60
  };
61
61
  }
62
62
  class AnthropicWrapper extends base_wrapper_1.default {
63
- static _patchMessageCreate(tracer) {
64
- const genAIEndpoint = 'anthropic.resources.messages';
63
+ /**
64
+ * The wrapper for `create` on a Messages resource.
65
+ *
66
+ * `genAIEndpoint` names which resource was patched, because the SDK has two
67
+ * with the same shape: `client.messages` and `client.beta.messages`. The
68
+ * request and response formats are identical, so one wrapper serves both;
69
+ * only the endpoint attribute tells them apart.
70
+ */
71
+ static _patchMessageCreate(tracer, genAIEndpoint = 'anthropic.resources.messages') {
65
72
  return (originalMethod) => {
66
- return async function (...args) {
73
+ // SHIELD: not `async`. `create` returns the SDK's APIPromise, which
74
+ // carries `.withResponse()` and `.asResponse()`; the SDK's own helpers
75
+ // call them (`messages.stream()`, `beta.messages.toolRunner({ stream })`).
76
+ // An async wrapper hands back a plain Promise instead, and those helpers
77
+ // then throw "withResponse is not a function". The instrumentation is
78
+ // attached through `_thenUnwrap`, which keeps the APIPromise intact.
79
+ return function (...args) {
67
80
  if ((0, helpers_1.isFrameworkLlmActive)())
68
81
  return originalMethod.apply(this, args);
69
82
  const requestModel = args[0]?.model || 'claude-3-5-sonnet-latest';
@@ -73,23 +86,11 @@ class AnthropicWrapper extends base_wrapper_1.default {
73
86
  kind: api_1.SpanKind.CLIENT,
74
87
  attributes: spanCreationAttrs(semantic_convention_1.default.GEN_AI_OPERATION_TYPE_CHAT, requestModel),
75
88
  }, effectiveCtx);
76
- return api_1.context
77
- .with(api_1.trace.setSpan(effectiveCtx, span), async () => {
78
- return originalMethod.apply(this, args);
79
- })
80
- .then((response) => {
81
- const { stream = false } = args[0];
82
- if (stream) {
83
- return helpers_1.default.createStreamProxy(response, AnthropicWrapper._messageCreateGenerator({
84
- args,
85
- genAIEndpoint,
86
- response,
87
- span,
88
- }));
89
- }
90
- return AnthropicWrapper._messageCreate({ args, genAIEndpoint, response, span });
91
- })
92
- .catch((e) => {
89
+ let ended = false;
90
+ const fail = (e) => {
91
+ if (ended)
92
+ return;
93
+ ended = true;
93
94
  helpers_1.default.handleException(span, e);
94
95
  base_wrapper_1.default.recordMetrics(span, {
95
96
  genAIEndpoint,
@@ -100,6 +101,36 @@ class AnthropicWrapper extends base_wrapper_1.default {
100
101
  errorType: e?.constructor?.name || '_OTHER',
101
102
  });
102
103
  span.end();
104
+ };
105
+ const instrument = (response) => {
106
+ ended = true;
107
+ const { stream = false } = args[0] || {};
108
+ if (stream) {
109
+ return helpers_1.default.createStreamProxy(response, AnthropicWrapper._messageCreateGenerator({ args, genAIEndpoint, response, span }));
110
+ }
111
+ return AnthropicWrapper._messageCreate({ args, genAIEndpoint, response, span });
112
+ };
113
+ let result;
114
+ try {
115
+ result = api_1.context.with(api_1.trace.setSpan(effectiveCtx, span), () => originalMethod.apply(this, args));
116
+ }
117
+ catch (e) {
118
+ fail(e);
119
+ throw e;
120
+ }
121
+ if (result && typeof result._thenUnwrap === 'function') {
122
+ // Observe a failed request without touching the body: parsing the
123
+ // original as well as the unwrapped promise reads the body twice.
124
+ // `asResponse()` waits only for the response, which is where HTTP
125
+ // and network errors reject.
126
+ if (typeof result.asResponse === 'function') {
127
+ result.asResponse().then(undefined, fail);
128
+ }
129
+ return result._thenUnwrap((response) => instrument(response));
130
+ }
131
+ // An SDK version without APIPromise: a plain promise is all it returns.
132
+ return Promise.resolve(result).then(instrument, (e) => {
133
+ fail(e);
103
134
  throw e;
104
135
  });
105
136
  };
@@ -1 +1 @@
1
- {"version":3,"file":"wrapper.js","sourceRoot":"","sources":["../../../src/instrumentation/anthropic/wrapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wrapper.js","sourceRoot":"","sources":["../../../src/instrumentation/anthropic/wrapper.ts"],"names":[],"mappings":"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"}
package/dist/pricing.json CHANGED
@@ -340,6 +340,42 @@
340
340
  "cacheReadPrice": 0.0003,
341
341
  "cacheCreationPrice": 0.00375
342
342
  },
343
+ "claude-sonnet-5": {
344
+ "promptPrice": 0.002,
345
+ "completionPrice": 0.01,
346
+ "cacheReadPrice": 0.0002,
347
+ "cacheCreationPrice": 0.0025
348
+ },
349
+ "claude-opus-5": {
350
+ "promptPrice": 0.005,
351
+ "completionPrice": 0.025,
352
+ "cacheReadPrice": 0.0005,
353
+ "cacheCreationPrice": 0.00625
354
+ },
355
+ "claude-opus-5-5": {
356
+ "promptPrice": 0.004,
357
+ "completionPrice": 0.02,
358
+ "cacheReadPrice": 0.0002,
359
+ "cacheCreationPrice": 0.005
360
+ },
361
+ "claude-opus-4-8": {
362
+ "promptPrice": 0.005,
363
+ "completionPrice": 0.025,
364
+ "cacheReadPrice": 0.0005,
365
+ "cacheCreationPrice": 0.00625
366
+ },
367
+ "claude-fable-5": {
368
+ "promptPrice": 0.01,
369
+ "completionPrice": 0.05,
370
+ "cacheReadPrice": 0.001,
371
+ "cacheCreationPrice": 0.0125
372
+ },
373
+ "claude-fable-5-1": {
374
+ "promptPrice": 0.01,
375
+ "completionPrice": 0.05,
376
+ "cacheReadPrice": 0.00025,
377
+ "cacheCreationPrice": 0.0125
378
+ },
343
379
  "claude-opus-4-0": {
344
380
  "promptPrice": 0.015,
345
381
  "completionPrice": 0.075,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shield360",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "homepage": "https://github.com/ThinkfleetAI/shield360-js#readme",
5
5
  "bugs": {
6
6
  "url": "https://github.com/ThinkfleetAI/shield360-js/issues",