@tormentalabs/claude-code-wire-compat 0.1.0-rc.10

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.
Files changed (85) hide show
  1. package/CHANGELOG.md +312 -0
  2. package/LICENSE +674 -0
  3. package/NOTICE +16 -0
  4. package/README.md +39 -0
  5. package/dist/anti-verbosity.d.ts +58 -0
  6. package/dist/anti-verbosity.d.ts.map +1 -0
  7. package/dist/anti-verbosity.js +174 -0
  8. package/dist/anti-verbosity.js.map +1 -0
  9. package/dist/beta-registry.d.ts +119 -0
  10. package/dist/beta-registry.d.ts.map +1 -0
  11. package/dist/beta-registry.js +125 -0
  12. package/dist/beta-registry.js.map +1 -0
  13. package/dist/betas.d.ts +11 -0
  14. package/dist/betas.d.ts.map +1 -0
  15. package/dist/betas.js +68 -0
  16. package/dist/betas.js.map +1 -0
  17. package/dist/build-request.d.ts +24 -0
  18. package/dist/build-request.d.ts.map +1 -0
  19. package/dist/build-request.js +1008 -0
  20. package/dist/build-request.js.map +1 -0
  21. package/dist/contracts.d.ts +717 -0
  22. package/dist/contracts.d.ts.map +1 -0
  23. package/dist/contracts.js +36 -0
  24. package/dist/contracts.js.map +1 -0
  25. package/dist/count-tokens.d.ts +42 -0
  26. package/dist/count-tokens.d.ts.map +1 -0
  27. package/dist/count-tokens.js +61 -0
  28. package/dist/count-tokens.js.map +1 -0
  29. package/dist/fingerprint.d.ts +4 -0
  30. package/dist/fingerprint.d.ts.map +1 -0
  31. package/dist/fingerprint.js +59 -0
  32. package/dist/fingerprint.js.map +1 -0
  33. package/dist/headers.d.ts +4 -0
  34. package/dist/headers.d.ts.map +1 -0
  35. package/dist/headers.js +255 -0
  36. package/dist/headers.js.map +1 -0
  37. package/dist/index.d.ts +17 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +6 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/metadata.d.ts +4 -0
  42. package/dist/metadata.d.ts.map +1 -0
  43. package/dist/metadata.js +192 -0
  44. package/dist/metadata.js.map +1 -0
  45. package/dist/model-capabilities.d.ts +103 -0
  46. package/dist/model-capabilities.d.ts.map +1 -0
  47. package/dist/model-capabilities.js +263 -0
  48. package/dist/model-capabilities.js.map +1 -0
  49. package/dist/model-identity.d.ts +11 -0
  50. package/dist/model-identity.d.ts.map +1 -0
  51. package/dist/model-identity.js +64 -0
  52. package/dist/model-identity.js.map +1 -0
  53. package/dist/models.d.ts +9 -0
  54. package/dist/models.d.ts.map +1 -0
  55. package/dist/models.js +25 -0
  56. package/dist/models.js.map +1 -0
  57. package/dist/profiles/claude-code-2.1.195.d.ts +3 -0
  58. package/dist/profiles/claude-code-2.1.195.d.ts.map +1 -0
  59. package/dist/profiles/claude-code-2.1.195.js +150 -0
  60. package/dist/profiles/claude-code-2.1.195.js.map +1 -0
  61. package/dist/redaction.d.ts +16 -0
  62. package/dist/redaction.d.ts.map +1 -0
  63. package/dist/redaction.js +364 -0
  64. package/dist/redaction.js.map +1 -0
  65. package/dist/request-body.d.ts +19 -0
  66. package/dist/request-body.d.ts.map +1 -0
  67. package/dist/request-body.js +1658 -0
  68. package/dist/request-body.js.map +1 -0
  69. package/dist/sha256.d.ts +9 -0
  70. package/dist/sha256.d.ts.map +1 -0
  71. package/dist/sha256.js +104 -0
  72. package/dist/sha256.js.map +1 -0
  73. package/dist/system-prompt.d.ts +4 -0
  74. package/dist/system-prompt.d.ts.map +1 -0
  75. package/dist/system-prompt.js +157 -0
  76. package/dist/system-prompt.js.map +1 -0
  77. package/dist/thinking.d.ts +91 -0
  78. package/dist/thinking.d.ts.map +1 -0
  79. package/dist/thinking.js +132 -0
  80. package/dist/thinking.js.map +1 -0
  81. package/dist/unicode.d.ts +10 -0
  82. package/dist/unicode.d.ts.map +1 -0
  83. package/dist/unicode.js +19 -0
  84. package/dist/unicode.js.map +1 -0
  85. package/package.json +72 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-identity.js","sourceRoot":"","sources":["../src/model-identity.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAI5C,qDAAqD;AACrD,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,OAAO,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAC5B,IAAI,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAAE,OAAO,gBAAgB,CAAC;IAC9D,IAAI,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAAE,OAAO,iBAAiB,CAAC;IAChE,IAAI,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAAE,OAAO,iBAAiB,CAAC;IAChE,IAAI,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAAE,OAAO,iBAAiB,CAAC;IAChE,IAAI,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAAE,OAAO,iBAAiB,CAAC;IAChE,IAAI,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAAE,OAAO,iBAAiB,CAAC;IAChE,IAAI,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAAE,OAAO,iBAAiB,CAAC;IAChE,IAAI,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,iBAAiB,CAAC;IACvE,IAAI,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAAE,OAAO,mBAAmB,CAAC;IACpE,IAAI,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAAE,OAAO,mBAAmB,CAAC;IACpE,IAAI,8BAA8B,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,mBAAmB,CAAC;IAC3E,IAAI,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAAE,OAAO,kBAAkB,CAAC;IAClE,IAAI,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAAE,OAAO,mBAAmB,CAAC;IACpE,IAAI,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAAE,OAAO,mBAAmB,CAAC;IACpE,IAAI,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAAE,OAAO,kBAAkB,CAAC;IAClE,IAAI,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC;QAAE,OAAO,eAAe,CAAC;IAC5D,IAAI,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAAE,OAAO,iBAAiB,CAAC;IAChE,IAAI,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAAE,OAAO,gBAAgB,CAAC;IAC9D,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,YAAoB;IAChD,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACnD,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IACrD,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACnD,IAAI,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IACrD,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IACjD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { ClaudeCodeCapabilities, ClaudeCodeModelFamily, ClaudeCodeProtocolProfile } from "./contracts.js";
2
+ export interface ResolvedClaudeCodeModel {
3
+ readonly id: string;
4
+ readonly wireId: string;
5
+ readonly family: ClaudeCodeModelFamily;
6
+ readonly capabilities: ClaudeCodeCapabilities;
7
+ }
8
+ export declare function resolveModel(model: string, profile?: ClaudeCodeProtocolProfile): ResolvedClaudeCodeModel;
9
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,EAC1B,MAAM,gBAAgB,CAAC;AAUxB,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,sBAAsB,CAAC;CAC/C;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,yBAAuD,GAC/D,uBAAuB,CAmBzB"}
package/dist/models.js ADDED
@@ -0,0 +1,25 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ import { ClaudeCodeWireError } from "./contracts.js";
3
+ import { deriveCapabilities } from "./model-capabilities.js";
4
+ import { modelFamilyOf, normalizeModelId, stripModelMarkers, } from "./model-identity.js";
5
+ import { CLAUDE_CODE_2_1_195_PROFILE } from "./profiles/claude-code-2.1.195.js";
6
+ export function resolveModel(model, profile = CLAUDE_CODE_2_1_195_PROFILE) {
7
+ if (typeof model !== "string" || model.length === 0) {
8
+ throw new ClaudeCodeWireError("INVALID_INPUT", { model });
9
+ }
10
+ const wireId = stripModelMarkers(model);
11
+ const id = normalizeModelId(model);
12
+ const entry = Object.hasOwn(profile.supportedModels, id)
13
+ ? profile.supportedModels[id]
14
+ : undefined;
15
+ return Object.freeze({
16
+ id,
17
+ wireId,
18
+ // The catalogue supplies the family. It does NOT supply capabilities:
19
+ // on first party every capability is a pure function of the normalized
20
+ // id. See the header of `model-capabilities.ts` for why.
21
+ family: entry?.family ?? modelFamilyOf(id),
22
+ capabilities: deriveCapabilities(id),
23
+ });
24
+ }
25
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAO5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAShF,MAAM,UAAU,YAAY,CAC1B,KAAa,EACb,UAAqC,2BAA2B;IAEhE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,mBAAmB,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;QACtD,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;QAC7B,CAAC,CAAC,SAAS,CAAC;IACd,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,EAAE;QACF,MAAM;QACN,sEAAsE;QACtE,uEAAuE;QACvE,yDAAyD;QACzD,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,aAAa,CAAC,EAAE,CAAC;QAC1C,YAAY,EAAE,kBAAkB,CAAC,EAAE,CAAC;KACrC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ClaudeCodeProtocolProfile } from "../contracts.js";
2
+ export declare const CLAUDE_CODE_2_1_195_PROFILE: ClaudeCodeProtocolProfile;
3
+ //# sourceMappingURL=claude-code-2.1.195.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code-2.1.195.d.ts","sourceRoot":"","sources":["../../src/profiles/claude-code-2.1.195.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAajE,eAAO,MAAM,2BAA2B,EAAE,yBA0ItC,CAAC"}
@@ -0,0 +1,150 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ import { COUNT_TOKENS_ENDPOINT } from "../count-tokens.js";
3
+ function deepFreeze(value) {
4
+ if (value !== null && typeof value === "object") {
5
+ for (const key of Reflect.ownKeys(value)) {
6
+ deepFreeze(Reflect.get(value, key));
7
+ }
8
+ Object.freeze(value);
9
+ }
10
+ return value;
11
+ }
12
+ export const CLAUDE_CODE_2_1_195_PROFILE = deepFreeze({
13
+ id: "claude-code-2.1.195-sdk-0.94.0",
14
+ cliVersion: "2.1.195",
15
+ sdkVersion: "0.94.0",
16
+ endpoint: "https://api.anthropic.com/v1/messages?beta=true",
17
+ countTokensEndpoint: COUNT_TOKENS_ENDPOINT,
18
+ entrypoint: "cli",
19
+ userAgent: "claude-cli/2.1.195 (external, cli)",
20
+ buildTime: "2026-06-26T01:00:56Z",
21
+ gitSha: "4603aa3f2ea164bd0974f82eb413ae7acc99a7ee",
22
+ attributionHeaderEnabled: true,
23
+ provider: "anthropic",
24
+ anthropicVersion: "2023-06-01",
25
+ contextHintEnabled: false,
26
+ betaPolicy: {
27
+ oauthAuthenticated: true,
28
+ experimentalBetasEnabled: true,
29
+ oneMillionContextEnabled: true,
30
+ interleavedThinkingEnabled: true,
31
+ interactive: true,
32
+ thinkingSummariesShown: false,
33
+ thinkingTokenCountEnabled: true,
34
+ narrationSummariesEnabled: false,
35
+ structuredOutputsEnabled: false,
36
+ afkModeEnabled: false,
37
+ cacheDiagnosisEnabled: false,
38
+ },
39
+ /**
40
+ * Verbatim genuine-client catalogue at byte offset 226599191.
41
+ * `defaultEffort` is policy exposed as catalogue data; this package must
42
+ * never apply it to a request.
43
+ */
44
+ supportedModels: {
45
+ "claude-3-5-haiku": {
46
+ family: "haiku",
47
+ capabilities: [],
48
+ },
49
+ "claude-haiku-4-5": {
50
+ family: "haiku",
51
+ capabilities: ["context_management"],
52
+ },
53
+ "claude-3-5-sonnet": {
54
+ family: "sonnet",
55
+ capabilities: [],
56
+ },
57
+ "claude-3-7-sonnet": {
58
+ family: "sonnet",
59
+ capabilities: [],
60
+ },
61
+ "claude-sonnet-4-0": {
62
+ family: "sonnet",
63
+ context: { window: 200000, supports1mBeta: true },
64
+ capabilities: ["context_management"],
65
+ },
66
+ "claude-sonnet-4-5": {
67
+ family: "sonnet",
68
+ context: { window: 200000, supports1mBeta: true },
69
+ capabilities: ["context_management"],
70
+ },
71
+ "claude-sonnet-4-6": {
72
+ family: "sonnet",
73
+ context: { window: 200000, supports1mBeta: true },
74
+ capabilities: [
75
+ "effort",
76
+ "max_effort",
77
+ "adaptive_thinking",
78
+ "context_management",
79
+ ],
80
+ },
81
+ "claude-opus-4-0": {
82
+ family: "opus",
83
+ capabilities: ["context_management"],
84
+ },
85
+ "claude-opus-4-1": {
86
+ family: "opus",
87
+ capabilities: ["context_management"],
88
+ },
89
+ "claude-opus-4-5": {
90
+ family: "opus",
91
+ capabilities: ["context_management"],
92
+ },
93
+ "claude-opus-4-6": {
94
+ family: "opus",
95
+ context: { window: 200000, supports1mBeta: true },
96
+ capabilities: [
97
+ "effort",
98
+ "max_effort",
99
+ "adaptive_thinking",
100
+ "context_management",
101
+ "fast_mode",
102
+ ],
103
+ },
104
+ "claude-opus-4-7": {
105
+ family: "opus",
106
+ context: { window: 1e6, native1m: true, supports1mBeta: true },
107
+ capabilities: [
108
+ "effort",
109
+ "max_effort",
110
+ "xhigh_effort",
111
+ "adaptive_thinking",
112
+ "context_management",
113
+ "fast_mode",
114
+ ],
115
+ defaultEffort: "xhigh",
116
+ },
117
+ "claude-opus-4-8": {
118
+ family: "opus",
119
+ context: { window: 1e6, native1m: true, supports1mBeta: true },
120
+ capabilities: [
121
+ "effort",
122
+ "max_effort",
123
+ "xhigh_effort",
124
+ "adaptive_thinking",
125
+ "mid_conv_system",
126
+ "context_management",
127
+ "fast_mode",
128
+ "lean_prompt",
129
+ ],
130
+ defaultEffort: "high",
131
+ },
132
+ "claude-fable-5": {
133
+ family: "fable",
134
+ context: { window: 1e6, native1m: true, supports1mBeta: true },
135
+ capabilities: [
136
+ "effort",
137
+ "max_effort",
138
+ "xhigh_effort",
139
+ "adaptive_thinking",
140
+ "rejects_disabled_thinking",
141
+ "mid_conv_system",
142
+ "context_management",
143
+ "lean_prompt",
144
+ "fable_5_mitigations",
145
+ ],
146
+ defaultEffort: "high",
147
+ },
148
+ },
149
+ });
150
+ //# sourceMappingURL=claude-code-2.1.195.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code-2.1.195.js","sourceRoot":"","sources":["../../src/profiles/claude-code-2.1.195.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { ClaudeCodeModelFamily, ClaudeCodeProtocolProfile, ClaudeCodeRequestInput, HeaderPair, RedactedRequestEvidence } from "./contracts.js";
2
+ /** Excludes values used only while validating and assembling the request. */
3
+ export type NormalizedRequestInput = Omit<ClaudeCodeRequestInput, "clientRequestId" | "crypto" | "profileOverride">;
4
+ export interface BuildRedactedEvidenceInput {
5
+ readonly profile: ClaudeCodeProtocolProfile;
6
+ /** Supplies the validated effective profile when an override is active. */
7
+ readonly effectiveProfile?: ClaudeCodeProtocolProfile;
8
+ readonly request: NormalizedRequestInput;
9
+ readonly modelFamily: ClaudeCodeModelFamily;
10
+ readonly logicalHeaders: readonly HeaderPair[];
11
+ readonly betaFeatures: readonly string[];
12
+ readonly body: string;
13
+ }
14
+ export declare function toSafeErrorDetails(value: unknown): Readonly<Record<string, string | number | boolean>>;
15
+ export declare function buildRedactedEvidence(input: BuildRedactedEvidenceInput, cryptoProvider?: Pick<Crypto, "subtle">): Promise<RedactedRequestEvidence>;
16
+ //# sourceMappingURL=redaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redaction.d.ts","sourceRoot":"","sources":["../src/redaction.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,EACtB,UAAU,EACV,uBAAuB,EACxB,MAAM,gBAAgB,CAAC;AAIxB,6EAA6E;AAC7E,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,sBAAsB,EACtB,iBAAiB,GAAG,QAAQ,GAAG,iBAAiB,CACjD,CAAC;AAEF,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC;IAC5C,2EAA2E;IAC3E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,yBAAyB,CAAC;IACtD,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;IACzC,QAAQ,CAAC,WAAW,EAAE,qBAAqB,CAAC;IAC5C,QAAQ,CAAC,cAAc,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/C,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AA2RD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,GACb,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,CAiDrD;AAED,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,0BAA0B,EACjC,cAAc,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,GACtC,OAAO,CAAC,uBAAuB,CAAC,CAoElC"}
@@ -0,0 +1,364 @@
1
+ // SPDX-License-Identifier: GPL-3.0-or-later
2
+ import { ClaudeCodeWireError } from "./contracts.js";
3
+ import { classifySurrogateAt } from "./unicode.js";
4
+ const MAX_INPUT_DEPTH = 100;
5
+ const MAX_INPUT_SIZE = 1_000_000;
6
+ const ENDPOINT = "https://api.anthropic.com/v1/messages?beta=true";
7
+ const FORBIDDEN_KEYS = new Set(["__proto__", "prototype", "constructor"]);
8
+ const SAFE_ERROR_CODES = new Set([
9
+ "INVALID_INPUT",
10
+ "INVALID_IDENTITY",
11
+ "UNSUPPORTED_CAPABILITY",
12
+ "INVALID_THINKING",
13
+ "INVALID_EFFORT",
14
+ "FORBIDDEN_HEADER",
15
+ "DUPLICATE_HEADER",
16
+ "HEADER_INJECTION",
17
+ "INVALID_UNICODE",
18
+ "INPUT_TOO_DEEP",
19
+ "INPUT_TOO_LARGE",
20
+ "CYCLIC_INPUT",
21
+ "CRYPTO_UNAVAILABLE",
22
+ "REDACTION_FAILURE",
23
+ ]);
24
+ function wireError(code, safeDetails = {}) {
25
+ return new ClaudeCodeWireError(code, safeDetails);
26
+ }
27
+ function isValidUnicode(value) {
28
+ for (let index = 0; index < value.length; index += 1) {
29
+ const classification = classifySurrogateAt(value, index);
30
+ if (classification === "loneSurrogate")
31
+ return false;
32
+ if (classification === "surrogatePair")
33
+ index += 1;
34
+ }
35
+ return true;
36
+ }
37
+ function measureString(value, encoder) {
38
+ if (!isValidUnicode(value))
39
+ throw wireError("INVALID_UNICODE");
40
+ return encoder.encode(value).byteLength;
41
+ }
42
+ function validateInputGraph(value, encoder) {
43
+ const active = new WeakSet();
44
+ const completed = new WeakSet();
45
+ const stack = [{ kind: "visit", value, depth: 0 }];
46
+ let aggregateSize = 0;
47
+ try {
48
+ // Deliberately make an empty stack the normal loop exit, avoiding an
49
+ // untestable defensive branch after a separate length check.
50
+ let entry;
51
+ while ((entry = stack.pop()) !== undefined) {
52
+ if (entry.kind === "leave") {
53
+ active.delete(entry.value);
54
+ completed.add(entry.value);
55
+ continue;
56
+ }
57
+ const current = entry.value;
58
+ if (entry.depth > MAX_INPUT_DEPTH) {
59
+ throw wireError("INPUT_TOO_DEEP", { maximumDepth: MAX_INPUT_DEPTH });
60
+ }
61
+ if (typeof current === "string") {
62
+ aggregateSize += measureString(current, encoder);
63
+ }
64
+ else if (current === null ||
65
+ typeof current === "number" ||
66
+ typeof current === "boolean" ||
67
+ typeof current === "undefined") {
68
+ aggregateSize += 1;
69
+ }
70
+ else if (typeof current !== "object") {
71
+ throw wireError("INVALID_INPUT");
72
+ }
73
+ else {
74
+ if (active.has(current))
75
+ throw wireError("CYCLIC_INPUT");
76
+ if (completed.has(current))
77
+ continue;
78
+ const prototype = Object.getPrototypeOf(current);
79
+ if (prototype !== null &&
80
+ prototype !== Object.prototype &&
81
+ prototype !== Array.prototype) {
82
+ throw wireError("INVALID_INPUT");
83
+ }
84
+ active.add(current);
85
+ stack.push({ kind: "leave", value: current });
86
+ const keys = Reflect.ownKeys(current);
87
+ aggregateSize += keys.length;
88
+ for (const key of keys) {
89
+ if (typeof key !== "string")
90
+ throw wireError("INVALID_INPUT");
91
+ if (FORBIDDEN_KEYS.has(key))
92
+ throw wireError("INVALID_INPUT");
93
+ const descriptor = Object.getOwnPropertyDescriptor(current, key);
94
+ if (descriptor === undefined)
95
+ throw wireError("INVALID_INPUT");
96
+ if (!("value" in descriptor))
97
+ throw wireError("INVALID_INPUT");
98
+ if (!descriptor.enumerable)
99
+ continue;
100
+ aggregateSize += measureString(key, encoder);
101
+ const child = descriptor.value;
102
+ stack.push({
103
+ kind: "visit",
104
+ value: child,
105
+ depth: entry.depth + 1,
106
+ });
107
+ }
108
+ }
109
+ if (aggregateSize > MAX_INPUT_SIZE) {
110
+ throw wireError("INPUT_TOO_LARGE", { maximumSize: MAX_INPUT_SIZE });
111
+ }
112
+ }
113
+ }
114
+ catch (error) {
115
+ if (error instanceof ClaudeCodeWireError)
116
+ throw error;
117
+ throw wireError("REDACTION_FAILURE");
118
+ }
119
+ }
120
+ function isCryptoProvider(value) {
121
+ if (typeof value !== "object" || value === null)
122
+ return false;
123
+ const descriptor = Object.getOwnPropertyDescriptor(value, "subtle");
124
+ if (descriptor !== undefined && "value" in descriptor) {
125
+ return typeof descriptor.value === "object" && descriptor.value !== null;
126
+ }
127
+ try {
128
+ return typeof Reflect.get(value, "subtle") === "object";
129
+ }
130
+ catch {
131
+ return false;
132
+ }
133
+ }
134
+ function getDefaultCrypto() {
135
+ let candidate;
136
+ try {
137
+ candidate = globalThis.crypto;
138
+ }
139
+ catch {
140
+ throw wireError("CRYPTO_UNAVAILABLE");
141
+ }
142
+ if (!isCryptoProvider(candidate))
143
+ throw wireError("CRYPTO_UNAVAILABLE");
144
+ return candidate;
145
+ }
146
+ function selectCryptoProvider(injected) {
147
+ if (injected !== undefined)
148
+ return injected;
149
+ return getDefaultCrypto();
150
+ }
151
+ function toHex(bytes) {
152
+ let result = "";
153
+ for (const byte of bytes)
154
+ result += byte.toString(16).padStart(2, "0");
155
+ return result;
156
+ }
157
+ function capabilityDecisions(input) {
158
+ const requested = input.request.capabilities;
159
+ return Object.freeze({
160
+ thinking: requested?.thinking ?? false,
161
+ adaptiveThinking: requested?.adaptiveThinking ?? false,
162
+ effort: requested?.effort ?? false,
163
+ interleavedThinking: requested?.interleavedThinking ?? false,
164
+ maxEffort: requested?.maxEffort ?? false,
165
+ xhighEffort: requested?.xhighEffort ?? false,
166
+ contextManagement: requested?.contextManagement ?? false,
167
+ temperature: requested?.temperature ?? false,
168
+ rejectsDisabledThinking: requested?.rejectsDisabledThinking ?? false,
169
+ });
170
+ }
171
+ function readOwnValue(value, key) {
172
+ if (typeof value !== "object" || value === null) {
173
+ throw wireError("INVALID_INPUT");
174
+ }
175
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
176
+ if (descriptor === undefined || !("value" in descriptor)) {
177
+ throw wireError("INVALID_INPUT");
178
+ }
179
+ const result = descriptor.value;
180
+ return result;
181
+ }
182
+ function assertEvidenceSources(value) {
183
+ if (typeof value !== "object" || value === null) {
184
+ throw wireError("INVALID_INPUT");
185
+ }
186
+ const profile = readOwnValue(value, "profile");
187
+ const profileId = readOwnValue(profile, "id");
188
+ const endpoint = readOwnValue(profile, "endpoint");
189
+ const effectiveProfile = Object.hasOwn(value, "effectiveProfile")
190
+ ? readOwnValue(value, "effectiveProfile")
191
+ : undefined;
192
+ const modelFamily = readOwnValue(value, "modelFamily");
193
+ const logicalHeaders = readOwnValue(value, "logicalHeaders");
194
+ const betaFeatures = readOwnValue(value, "betaFeatures");
195
+ if (profileId !== "claude-code-2.1.195-sdk-0.94.0" || endpoint !== ENDPOINT) {
196
+ throw wireError("INVALID_INPUT");
197
+ }
198
+ if (effectiveProfile !== undefined) {
199
+ const effectiveId = readOwnValue(effectiveProfile, "id");
200
+ if (typeof effectiveId !== "string" ||
201
+ effectiveId.length === 0 ||
202
+ readOwnValue(effectiveProfile, "endpoint") !== ENDPOINT ||
203
+ readOwnValue(effectiveProfile, "provider") !== "anthropic" ||
204
+ readOwnValue(effectiveProfile, "anthropicVersion") !== "2023-06-01") {
205
+ throw wireError("INVALID_INPUT");
206
+ }
207
+ }
208
+ if (modelFamily !== "haiku" &&
209
+ modelFamily !== "sonnet" &&
210
+ modelFamily !== "opus" &&
211
+ modelFamily !== "fable" &&
212
+ modelFamily !== "mythos" &&
213
+ modelFamily !== "unknown") {
214
+ throw wireError("INVALID_INPUT");
215
+ }
216
+ if (!Array.isArray(logicalHeaders) || !Array.isArray(betaFeatures)) {
217
+ throw wireError("INVALID_INPUT");
218
+ }
219
+ }
220
+ function containsCredential(value, credentials) {
221
+ for (const credential of credentials) {
222
+ if (credential.length > 0 && value.includes(credential))
223
+ return true;
224
+ }
225
+ return false;
226
+ }
227
+ function collectCredentialValues(input) {
228
+ const credentials = [input.request.accessToken];
229
+ for (const header of input.logicalHeaders) {
230
+ const candidate = header;
231
+ if (!Array.isArray(candidate) || candidate.length !== 2) {
232
+ throw wireError("INVALID_INPUT");
233
+ }
234
+ const name = header[0];
235
+ const value = header[1];
236
+ if (typeof name !== "string" || typeof value !== "string") {
237
+ throw wireError("INVALID_INPUT");
238
+ }
239
+ if (name.toLowerCase() === "authorization") {
240
+ const separator = value.indexOf(" ");
241
+ credentials.push(separator === -1 ? value : value.slice(separator + 1));
242
+ }
243
+ }
244
+ return credentials;
245
+ }
246
+ export function toSafeErrorDetails(value) {
247
+ const details = {};
248
+ if (!(value instanceof ClaudeCodeWireError))
249
+ return Object.freeze(details);
250
+ let code;
251
+ let safeDetails;
252
+ try {
253
+ code = readOwnValue(value, "code");
254
+ safeDetails = readOwnValue(value, "safeDetails");
255
+ }
256
+ catch {
257
+ return Object.freeze(details);
258
+ }
259
+ if (typeof code !== "string" || !SAFE_ERROR_CODES.has(code)) {
260
+ return Object.freeze(details);
261
+ }
262
+ details["code"] = code;
263
+ if (typeof safeDetails !== "object" || safeDetails === null) {
264
+ return Object.freeze(details);
265
+ }
266
+ const numericKeys = [
267
+ "bodyByteLength",
268
+ "messageCount",
269
+ "systemBlockCount",
270
+ "logicalHeaderCount",
271
+ "betaFeatureCount",
272
+ "maximumDepth",
273
+ "maximumSize",
274
+ ];
275
+ const booleanKeys = ["hasSystem", "hasTools"];
276
+ for (const key of numericKeys) {
277
+ const descriptor = Object.getOwnPropertyDescriptor(safeDetails, key);
278
+ const detail = descriptor !== undefined && "value" in descriptor
279
+ ? descriptor.value
280
+ : undefined;
281
+ if (typeof detail === "number" && Number.isFinite(detail)) {
282
+ details[key] = detail;
283
+ }
284
+ }
285
+ for (const key of booleanKeys) {
286
+ const descriptor = Object.getOwnPropertyDescriptor(safeDetails, key);
287
+ const detail = descriptor !== undefined && "value" in descriptor
288
+ ? descriptor.value
289
+ : undefined;
290
+ if (typeof detail === "boolean")
291
+ details[key] = detail;
292
+ }
293
+ return Object.freeze(details);
294
+ }
295
+ export async function buildRedactedEvidence(input, cryptoProvider) {
296
+ const encoder = new TextEncoder();
297
+ validateInputGraph(input, encoder);
298
+ assertEvidenceSources(input);
299
+ if (typeof input.body !== "string")
300
+ throw wireError("INVALID_INPUT");
301
+ const bodyBytes = encoder.encode(input.body);
302
+ const credentials = collectCredentialValues(input);
303
+ const logicalHeaderNames = [];
304
+ for (const header of input.logicalHeaders) {
305
+ const name = header[0];
306
+ if (containsCredential(name, credentials))
307
+ throw wireError("INVALID_INPUT");
308
+ logicalHeaderNames.push(name);
309
+ }
310
+ const betaFeatures = [];
311
+ for (const feature of input.betaFeatures) {
312
+ if (containsCredential(feature, credentials))
313
+ throw wireError("INVALID_INPUT");
314
+ betaFeatures.push(feature);
315
+ }
316
+ const provider = selectCryptoProvider(cryptoProvider);
317
+ if (!isCryptoProvider(provider))
318
+ throw wireError("CRYPTO_UNAVAILABLE");
319
+ let digest;
320
+ try {
321
+ digest = await provider.subtle.digest("SHA-256", bodyBytes);
322
+ }
323
+ catch {
324
+ throw wireError("REDACTION_FAILURE", {
325
+ bodyByteLength: bodyBytes.byteLength,
326
+ messageCount: input.request.messages.length,
327
+ systemBlockCount: input.request.system?.length ?? 0,
328
+ });
329
+ }
330
+ let digestBytes;
331
+ try {
332
+ digestBytes = new Uint8Array(digest);
333
+ }
334
+ catch {
335
+ throw wireError("REDACTION_FAILURE", {
336
+ bodyByteLength: bodyBytes.byteLength,
337
+ messageCount: input.request.messages.length,
338
+ systemBlockCount: input.request.system?.length ?? 0,
339
+ });
340
+ }
341
+ if (digestBytes.byteLength !== 32) {
342
+ throw wireError("REDACTION_FAILURE", {
343
+ bodyByteLength: bodyBytes.byteLength,
344
+ messageCount: input.request.messages.length,
345
+ systemBlockCount: input.request.system?.length ?? 0,
346
+ });
347
+ }
348
+ const bodySha256 = toHex(digestBytes);
349
+ const evidence = {
350
+ profileId: input.effectiveProfile?.id ?? input.profile.id,
351
+ url: ENDPOINT,
352
+ method: "POST",
353
+ modelFamily: input.modelFamily,
354
+ logicalHeaderNames: Object.freeze(logicalHeaderNames),
355
+ betaFeatures: Object.freeze(betaFeatures),
356
+ bodySha256,
357
+ bodyByteLength: bodyBytes.byteLength,
358
+ messageCount: input.request.messages.length,
359
+ systemBlockCount: input.request.system?.length ?? 0,
360
+ capabilityDecisions: capabilityDecisions(input),
361
+ };
362
+ return Object.freeze(evidence);
363
+ }
364
+ //# sourceMappingURL=redaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redaction.js","sourceRoot":"","sources":["../src/redaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { ClaudeCodeProtocolProfile, JsonValue, Message, ToolDefinition } from "./contracts.js";
2
+ export declare function inspectJsonInputs(values: readonly unknown[], validateString?: (value: string) => void): void;
3
+ export declare function validatedJsonObject(value: unknown): Readonly<Record<string, JsonValue>>;
4
+ export declare function validatedJson(value: unknown): JsonValue;
5
+ /**
6
+ * Canonicalises the message and tool lists for the count-tokens endpoint.
7
+ *
8
+ * The count-tokens body shares no other field with the messages body, but it
9
+ * MUST share these two canonicalisers. Reimplementing them would give the two
10
+ * public entry points different fail-closed guarantees for the same caller
11
+ * input, which is precisely the class of divergence this package exists to
12
+ * prevent.
13
+ */
14
+ export declare function canonicalCountTokensLists(rawMessages: unknown, rawTools: unknown): {
15
+ readonly messages: readonly Message[];
16
+ readonly tools: readonly ToolDefinition[];
17
+ };
18
+ export declare function buildCanonicalBody(rawInput: unknown, rawResolvedModel: unknown, rawSystemBlocks: unknown, rawMetadata: unknown, profile?: ClaudeCodeProtocolProfile): Readonly<Record<string, unknown>>;
19
+ //# sourceMappingURL=request-body.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-body.d.ts","sourceRoot":"","sources":["../src/request-body.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAGV,yBAAyB,EAIzB,SAAS,EACT,OAAO,EAOP,cAAc,EAKf,MAAM,gBAAgB,CAAC;AAkZxB,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,OAAO,EAAE,EAC1B,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GACvC,IAAI,CAON;AA4BD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,GACb,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAOrC;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAWvD;AA2lCD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,OAAO,EACpB,QAAQ,EAAE,OAAO,GAChB;IACD,QAAQ,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,CAAC;CAC3C,CAKA;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,OAAO,EACjB,gBAAgB,EAAE,OAAO,EACzB,eAAe,EAAE,OAAO,EACxB,WAAW,EAAE,OAAO,EACpB,OAAO,CAAC,EAAE,yBAAyB,GAClC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAqLnC"}