audit-tools 0.34.27 → 0.34.28

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 (48) hide show
  1. package/dist/audit/cli/dispatchAttempted.d.ts +0 -2
  2. package/dist/audit/cli/dispatchAttempted.d.ts.map +1 -1
  3. package/dist/audit/cli/dispatchAttempted.js +1 -1
  4. package/dist/audit/cli/dispatchAttempted.js.map +1 -1
  5. package/dist/audit/cli/mergeAndIngestCommand.d.ts.map +1 -1
  6. package/dist/audit/cli/mergeAndIngestCommand.js +42 -20
  7. package/dist/audit/cli/mergeAndIngestCommand.js.map +1 -1
  8. package/dist/audit/quota/index.d.ts +0 -4
  9. package/dist/audit/quota/index.d.ts.map +1 -1
  10. package/dist/audit/quota/index.js +1 -3
  11. package/dist/audit/quota/index.js.map +1 -1
  12. package/dist/remediate/index.d.ts.map +1 -1
  13. package/dist/remediate/index.js +26 -7
  14. package/dist/remediate/index.js.map +1 -1
  15. package/dist/remediate/steps/dispatch/acceptNode.d.ts.map +1 -1
  16. package/dist/remediate/steps/dispatch/acceptNode.js +18 -9
  17. package/dist/remediate/steps/dispatch/acceptNode.js.map +1 -1
  18. package/dist/remediate/steps/dispatch/marshal.d.ts.map +1 -1
  19. package/dist/remediate/steps/dispatch/marshal.js +24 -9
  20. package/dist/remediate/steps/dispatch/marshal.js.map +1 -1
  21. package/dist/remediate/steps/nextStep.d.ts.map +1 -1
  22. package/dist/remediate/steps/nextStep.js +24 -4
  23. package/dist/remediate/steps/nextStep.js.map +1 -1
  24. package/dist/remediate/steps/rollingSession.d.ts +43 -5
  25. package/dist/remediate/steps/rollingSession.d.ts.map +1 -1
  26. package/dist/remediate/steps/rollingSession.js +121 -42
  27. package/dist/remediate/steps/rollingSession.js.map +1 -1
  28. package/dist/shared/providers/proxyCatalog.d.ts.map +1 -1
  29. package/dist/shared/providers/proxyCatalog.js +32 -7
  30. package/dist/shared/providers/proxyCatalog.js.map +1 -1
  31. package/docs/audit-pkg/development.md +1 -2
  32. package/package.json +6 -3
  33. package/dist/audit/quota/headerExtraction.d.ts +0 -9
  34. package/dist/audit/quota/headerExtraction.d.ts.map +0 -1
  35. package/dist/audit/quota/headerExtraction.js +0 -148
  36. package/dist/audit/quota/headerExtraction.js.map +0 -1
  37. package/dist/audit/quota/headerExtractors/claudeCodeHeaderExtractor.d.ts +0 -7
  38. package/dist/audit/quota/headerExtractors/claudeCodeHeaderExtractor.d.ts.map +0 -1
  39. package/dist/audit/quota/headerExtractors/claudeCodeHeaderExtractor.js +0 -27
  40. package/dist/audit/quota/headerExtractors/claudeCodeHeaderExtractor.js.map +0 -1
  41. package/dist/audit/quota/headerExtractors/genericHeaderExtractor.d.ts +0 -10
  42. package/dist/audit/quota/headerExtractors/genericHeaderExtractor.d.ts.map +0 -1
  43. package/dist/audit/quota/headerExtractors/genericHeaderExtractor.js +0 -8
  44. package/dist/audit/quota/headerExtractors/genericHeaderExtractor.js.map +0 -1
  45. package/dist/audit/quota/headerExtractors/index.d.ts +0 -6
  46. package/dist/audit/quota/headerExtractors/index.d.ts.map +0 -1
  47. package/dist/audit/quota/headerExtractors/index.js +0 -11
  48. package/dist/audit/quota/headerExtractors/index.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"headerExtraction.d.ts","sourceRoot":"","sources":["../../../src/audit/quota/headerExtraction.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,uBAAuB,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AA0CD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CA+ChF"}
@@ -1,148 +0,0 @@
1
- const HEADER_PATTERNS = [
2
- // Standard x-ratelimit-* (OpenAI, Anthropic, and others)
3
- { pattern: /x-ratelimit-limit-requests:\s*(\d+)/i, field: "requests_per_minute" },
4
- { pattern: /x-ratelimit-limit-tokens:\s*(\d+)/i, field: "input_tokens_per_minute" },
5
- { pattern: /x-ratelimit-remaining-requests:\s*(\d+)/i, field: "remaining_requests" },
6
- { pattern: /x-ratelimit-remaining-tokens:\s*(\d+)/i, field: "remaining_tokens" },
7
- { pattern: /x-ratelimit-reset-requests:\s*(.+)/i, field: "reset_at", transform: parseResetValue },
8
- { pattern: /x-ratelimit-reset-tokens:\s*(.+)/i, field: "reset_at", transform: parseResetValue },
9
- // Anthropic-specific header naming
10
- { pattern: /anthropic-ratelimit-requests-limit:\s*(\d+)/i, field: "requests_per_minute" },
11
- { pattern: /anthropic-ratelimit-tokens-limit:\s*(\d+)/i, field: "input_tokens_per_minute" },
12
- { pattern: /anthropic-ratelimit-requests-remaining:\s*(\d+)/i, field: "remaining_requests" },
13
- { pattern: /anthropic-ratelimit-tokens-remaining:\s*(\d+)/i, field: "remaining_tokens" },
14
- { pattern: /anthropic-ratelimit-requests-reset:\s*(.+)/i, field: "reset_at", transform: parseResetValue },
15
- { pattern: /anthropic-ratelimit-tokens-reset:\s*(.+)/i, field: "reset_at", transform: parseResetValue },
16
- ];
17
- function parseResetValue(value) {
18
- const trimmed = value.trim();
19
- if (!trimmed)
20
- return null;
21
- // ISO timestamp
22
- if (/^\d{4}-\d{2}-\d{2}/.test(trimmed))
23
- return trimmed;
24
- // Relative seconds (e.g. "42s", "42")
25
- const seconds = parseFloat(trimmed);
26
- if (Number.isFinite(seconds) && seconds > 0) {
27
- return new Date(Date.now() + seconds * 1000).toISOString();
28
- }
29
- return trimmed;
30
- }
31
- function parseNumericValue(value) {
32
- const n = parseInt(value, 10);
33
- return Number.isFinite(n) && n >= 0 ? n : null;
34
- }
35
- export function extractRateLimitHeaders(text) {
36
- const result = {
37
- requests_per_minute: null,
38
- input_tokens_per_minute: null,
39
- remaining_requests: null,
40
- remaining_tokens: null,
41
- reset_at: null,
42
- };
43
- let found = false;
44
- for (const { pattern, field, transform } of HEADER_PATTERNS) {
45
- const match = pattern.exec(text);
46
- if (!match || !match[1])
47
- continue;
48
- if (result[field] != null)
49
- continue; // first match wins
50
- if (transform) {
51
- const transformed = transform(match[1]);
52
- if (transformed != null) {
53
- result[field] = transformed;
54
- found = true;
55
- }
56
- }
57
- else {
58
- const numeric = parseNumericValue(match[1]);
59
- if (numeric != null) {
60
- result[field] = numeric;
61
- found = true;
62
- }
63
- }
64
- }
65
- // Also try JSON objects that embed header-like fields
66
- if (!found) {
67
- const jsonResult = extractFromJson(text);
68
- if (jsonResult)
69
- return jsonResult;
70
- }
71
- if (!found && text.trim().length > 0) {
72
- process.stderr.write(JSON.stringify({
73
- event: "header_extraction_no_match",
74
- reason: "no rate-limit data found in non-empty stderr text",
75
- hint: "possible provider format change",
76
- }) + "\n");
77
- }
78
- return found ? result : null;
79
- }
80
- function extractFromJson(text) {
81
- const jsonPattern = /\{[^{}]*"(?:x-ratelimit|anthropic-ratelimit|ratelimit)[^{}]*\}/gi;
82
- for (const match of text.matchAll(jsonPattern)) {
83
- try {
84
- const obj = JSON.parse(match[0]);
85
- return extractFromHeaderObject(obj);
86
- }
87
- catch {
88
- // not valid JSON
89
- }
90
- }
91
- // Try line-by-line JSON (Claude Code stderr format)
92
- for (const line of text.split("\n")) {
93
- const trimmed = line.trim();
94
- if (!trimmed.startsWith("{"))
95
- continue;
96
- try {
97
- const obj = JSON.parse(trimmed);
98
- const headers = obj["headers"] ??
99
- obj["response_headers"];
100
- if (headers) {
101
- const extracted = extractFromHeaderObject(headers);
102
- if (extracted)
103
- return extracted;
104
- }
105
- }
106
- catch {
107
- // not valid JSON
108
- }
109
- }
110
- return null;
111
- }
112
- function extractFromHeaderObject(headers) {
113
- const get = (keys) => {
114
- for (const key of keys) {
115
- const val = headers[key] ?? headers[key.toLowerCase()];
116
- if (val != null) {
117
- const n = typeof val === "number" ? val : parseInt(String(val), 10);
118
- if (Number.isFinite(n) && n >= 0)
119
- return n;
120
- }
121
- }
122
- return null;
123
- };
124
- const rpm = get([
125
- "x-ratelimit-limit-requests",
126
- "anthropic-ratelimit-requests-limit",
127
- ]);
128
- const tpm = get([
129
- "x-ratelimit-limit-tokens",
130
- "anthropic-ratelimit-tokens-limit",
131
- ]);
132
- if (rpm == null && tpm == null)
133
- return null;
134
- return {
135
- requests_per_minute: rpm,
136
- input_tokens_per_minute: tpm,
137
- remaining_requests: get([
138
- "x-ratelimit-remaining-requests",
139
- "anthropic-ratelimit-requests-remaining",
140
- ]),
141
- remaining_tokens: get([
142
- "x-ratelimit-remaining-tokens",
143
- "anthropic-ratelimit-tokens-remaining",
144
- ]),
145
- reset_at: null,
146
- };
147
- }
148
- //# sourceMappingURL=headerExtraction.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"headerExtraction.js","sourceRoot":"","sources":["../../../src/audit/quota/headerExtraction.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import type { ExtractedRateLimits } from "../headerExtraction.js";
2
- import type { HeaderExtractor } from "./genericHeaderExtractor.js";
3
- export declare class ClaudeCodeHeaderExtractor implements HeaderExtractor {
4
- readonly name = "claude-code";
5
- extract(stderr: string): ExtractedRateLimits | null;
6
- }
7
- //# sourceMappingURL=claudeCodeHeaderExtractor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claudeCodeHeaderExtractor.d.ts","sourceRoot":"","sources":["../../../../src/audit/quota/headerExtractors/claudeCodeHeaderExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAInE,qBAAa,yBAA0B,YAAW,eAAe;IAC/D,QAAQ,CAAC,IAAI,iBAAiB;IAE9B,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;CAyBpD"}
@@ -1,27 +0,0 @@
1
- import { extractRateLimitHeaders } from "../headerExtraction.js";
2
- import { collectClaudeCodeJsonLines } from "audit-tools/shared";
3
- export class ClaudeCodeHeaderExtractor {
4
- name = "claude-code";
5
- extract(stderr) {
6
- // Claude Code emits structured JSON lines to stderr. Reuse the shared
7
- // claude-code JSON-line scan, then keep only the objects that carry header
8
- // data and feed them to the agnostic parser.
9
- const candidates = collectClaudeCodeJsonLines(stderr)
10
- .filter((obj) => obj["headers"] || obj["response_headers"])
11
- .map((obj) => JSON.stringify(obj));
12
- if (candidates.length > 0) {
13
- return extractRateLimitHeaders(candidates.join("\n"));
14
- }
15
- // Fall back to scanning the full text for raw header lines
16
- if (stderr.trim().length > 0) {
17
- process.stderr.write(JSON.stringify({
18
- event: "header_extractor_fallback",
19
- provider: this.name,
20
- reason: "no structured JSON lines with headers/response_headers found in non-empty stderr",
21
- fallback: "raw-text scan",
22
- }) + "\n");
23
- }
24
- return extractRateLimitHeaders(stderr);
25
- }
26
- }
27
- //# sourceMappingURL=claudeCodeHeaderExtractor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claudeCodeHeaderExtractor.js","sourceRoot":"","sources":["../../../../src/audit/quota/headerExtractors/claudeCodeHeaderExtractor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAEhE,MAAM,OAAO,yBAAyB;IAC3B,IAAI,GAAG,aAAa,CAAC;IAE9B,OAAO,CAAC,MAAc;QACpB,sEAAsE;QACtE,2EAA2E;QAC3E,6CAA6C;QAC7C,MAAM,UAAU,GAAG,0BAA0B,CAAC,MAAM,CAAC;aAClD,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC;aAC1D,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAErC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,uBAAuB,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,2DAA2D;QAC3D,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,IAAI,CAAC,SAAS,CAAC;gBACb,KAAK,EAAE,2BAA2B;gBAClC,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,MAAM,EAAE,kFAAkF;gBAC1F,QAAQ,EAAE,eAAe;aAC1B,CAAC,GAAG,IAAI,CACV,CAAC;QACJ,CAAC;QACD,OAAO,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -1,10 +0,0 @@
1
- import type { ExtractedRateLimits } from "../headerExtraction.js";
2
- export interface HeaderExtractor {
3
- readonly name: string;
4
- extract(stderr: string): ExtractedRateLimits | null;
5
- }
6
- export declare class GenericHeaderExtractor implements HeaderExtractor {
7
- readonly name = "generic";
8
- extract(stderr: string): ExtractedRateLimits | null;
9
- }
10
- //# sourceMappingURL=genericHeaderExtractor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"genericHeaderExtractor.d.ts","sourceRoot":"","sources":["../../../../src/audit/quota/headerExtractors/genericHeaderExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGlE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAAC;CACrD;AAED,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,QAAQ,CAAC,IAAI,aAAa;IAE1B,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;CAGpD"}
@@ -1,8 +0,0 @@
1
- import { extractRateLimitHeaders } from "../headerExtraction.js";
2
- export class GenericHeaderExtractor {
3
- name = "generic";
4
- extract(stderr) {
5
- return extractRateLimitHeaders(stderr);
6
- }
7
- }
8
- //# sourceMappingURL=genericHeaderExtractor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"genericHeaderExtractor.js","sourceRoot":"","sources":["../../../../src/audit/quota/headerExtractors/genericHeaderExtractor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAOjE,MAAM,OAAO,sBAAsB;IACxB,IAAI,GAAG,SAAS,CAAC;IAE1B,OAAO,CAAC,MAAc;QACpB,OAAO,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -1,6 +0,0 @@
1
- export type { HeaderExtractor } from "./genericHeaderExtractor.js";
2
- export { GenericHeaderExtractor } from "./genericHeaderExtractor.js";
3
- export { ClaudeCodeHeaderExtractor } from "./claudeCodeHeaderExtractor.js";
4
- import type { HeaderExtractor } from "./genericHeaderExtractor.js";
5
- export declare const getHeaderExtractorForProvider: (providerName: string) => HeaderExtractor;
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/audit/quota/headerExtractors/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAE3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAWnE,eAAO,MAAM,6BAA6B,2CAIvC,CAAC"}
@@ -1,11 +0,0 @@
1
- export { GenericHeaderExtractor } from "./genericHeaderExtractor.js";
2
- export { ClaudeCodeHeaderExtractor } from "./claudeCodeHeaderExtractor.js";
3
- import { GenericHeaderExtractor } from "./genericHeaderExtractor.js";
4
- import { ClaudeCodeHeaderExtractor } from "./claudeCodeHeaderExtractor.js";
5
- import { makeProviderKeyedFactory } from "audit-tools/shared";
6
- const PROVIDER_EXTRACTORS = {
7
- "claude-code": new ClaudeCodeHeaderExtractor(),
8
- };
9
- const genericExtractor = new GenericHeaderExtractor();
10
- export const getHeaderExtractorForProvider = makeProviderKeyedFactory(PROVIDER_EXTRACTORS, genericExtractor);
11
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/audit/quota/headerExtractors/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAG3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,MAAM,mBAAmB,GAAoC;IAC3D,aAAa,EAAE,IAAI,yBAAyB,EAAE;CAC/C,CAAC;AAEF,MAAM,gBAAgB,GAAG,IAAI,sBAAsB,EAAE,CAAC;AAEtD,MAAM,CAAC,MAAM,6BAA6B,GACxC,wBAAwB,CACtB,mBAAmB,EACnB,gBAAgB,CACjB,CAAC"}