@shpitdev/convex-cliproxy-observability 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/LICENSE +201 -0
  3. package/README.md +40 -0
  4. package/dist/capture/index.d.ts +79 -0
  5. package/dist/capture/index.d.ts.map +1 -0
  6. package/dist/capture/index.js +182 -0
  7. package/dist/capture/index.js.map +1 -0
  8. package/dist/client.d.ts +129 -0
  9. package/dist/client.d.ts.map +1 -0
  10. package/dist/client.js +232 -0
  11. package/dist/client.js.map +1 -0
  12. package/dist/component/_generated/api.d.ts +12 -0
  13. package/dist/component/_generated/api.d.ts.map +1 -0
  14. package/dist/component/_generated/api.js +7 -0
  15. package/dist/component/_generated/api.js.map +1 -0
  16. package/dist/component/_generated/component.d.ts +17 -0
  17. package/dist/component/_generated/component.d.ts.map +1 -0
  18. package/dist/component/_generated/component.js +3 -0
  19. package/dist/component/_generated/component.js.map +1 -0
  20. package/dist/component/_generated/dataModel.d.ts +8 -0
  21. package/dist/component/_generated/dataModel.d.ts.map +1 -0
  22. package/dist/component/_generated/dataModel.js +3 -0
  23. package/dist/component/_generated/dataModel.js.map +1 -0
  24. package/dist/component/_generated/server.d.ts +21 -0
  25. package/dist/component/_generated/server.d.ts.map +1 -0
  26. package/dist/component/_generated/server.js +11 -0
  27. package/dist/component/_generated/server.js.map +1 -0
  28. package/dist/component/convex.config.d.ts +4 -0
  29. package/dist/component/convex.config.d.ts.map +1 -0
  30. package/dist/component/convex.config.js +4 -0
  31. package/dist/component/convex.config.js.map +1 -0
  32. package/dist/component/ingest.d.ts +64 -0
  33. package/dist/component/ingest.d.ts.map +1 -0
  34. package/dist/component/ingest.js +309 -0
  35. package/dist/component/ingest.js.map +1 -0
  36. package/dist/component/queries.d.ts +136 -0
  37. package/dist/component/queries.d.ts.map +1 -0
  38. package/dist/component/queries.js +219 -0
  39. package/dist/component/queries.js.map +1 -0
  40. package/dist/component/schema.d.ts +159 -0
  41. package/dist/component/schema.d.ts.map +1 -0
  42. package/dist/component/schema.js +74 -0
  43. package/dist/component/schema.js.map +1 -0
  44. package/dist/content/index.d.ts +8 -0
  45. package/dist/content/index.d.ts.map +1 -0
  46. package/dist/content/index.js +41 -0
  47. package/dist/content/index.js.map +1 -0
  48. package/dist/model-call/index.d.ts +120 -0
  49. package/dist/model-call/index.d.ts.map +1 -0
  50. package/dist/model-call/index.js +96 -0
  51. package/dist/model-call/index.js.map +1 -0
  52. package/dist/projection.d.ts +19 -0
  53. package/dist/projection.d.ts.map +1 -0
  54. package/dist/projection.js +83 -0
  55. package/dist/projection.js.map +1 -0
  56. package/dist/protocols/anthropic-messages.d.ts +11 -0
  57. package/dist/protocols/anthropic-messages.d.ts.map +1 -0
  58. package/dist/protocols/anthropic-messages.js +114 -0
  59. package/dist/protocols/anthropic-messages.js.map +1 -0
  60. package/dist/protocols/chat-completions.d.ts +10 -0
  61. package/dist/protocols/chat-completions.d.ts.map +1 -0
  62. package/dist/protocols/chat-completions.js +89 -0
  63. package/dist/protocols/chat-completions.js.map +1 -0
  64. package/dist/protocols/checkpoint.d.ts +20 -0
  65. package/dist/protocols/checkpoint.d.ts.map +1 -0
  66. package/dist/protocols/checkpoint.js +318 -0
  67. package/dist/protocols/checkpoint.js.map +1 -0
  68. package/dist/protocols/content.d.ts +34 -0
  69. package/dist/protocols/content.d.ts.map +1 -0
  70. package/dist/protocols/content.js +40 -0
  71. package/dist/protocols/content.js.map +1 -0
  72. package/dist/protocols/framing.d.ts +20 -0
  73. package/dist/protocols/framing.d.ts.map +1 -0
  74. package/dist/protocols/framing.js +67 -0
  75. package/dist/protocols/framing.js.map +1 -0
  76. package/dist/protocols/index.d.ts +20 -0
  77. package/dist/protocols/index.d.ts.map +1 -0
  78. package/dist/protocols/index.js +139 -0
  79. package/dist/protocols/index.js.map +1 -0
  80. package/dist/protocols/output.d.ts +4 -0
  81. package/dist/protocols/output.d.ts.map +1 -0
  82. package/dist/protocols/output.js +81 -0
  83. package/dist/protocols/output.js.map +1 -0
  84. package/dist/protocols/responses.d.ts +12 -0
  85. package/dist/protocols/responses.d.ts.map +1 -0
  86. package/dist/protocols/responses.js +189 -0
  87. package/dist/protocols/responses.js.map +1 -0
  88. package/dist/protocols/types.d.ts +27 -0
  89. package/dist/protocols/types.d.ts.map +1 -0
  90. package/dist/protocols/types.js +2 -0
  91. package/dist/protocols/types.js.map +1 -0
  92. package/dist/protocols/usage.d.ts +3 -0
  93. package/dist/protocols/usage.d.ts.map +1 -0
  94. package/dist/protocols/usage.js +27 -0
  95. package/dist/protocols/usage.js.map +1 -0
  96. package/dist/protocols/values.d.ts +10 -0
  97. package/dist/protocols/values.d.ts.map +1 -0
  98. package/dist/protocols/values.js +32 -0
  99. package/dist/protocols/values.js.map +1 -0
  100. package/dist/test.d.ts +155 -0
  101. package/dist/test.d.ts.map +1 -0
  102. package/dist/test.js +8 -0
  103. package/dist/test.js.map +1 -0
  104. package/package.json +90 -0
  105. package/src/capture/index.ts +277 -0
  106. package/src/client.ts +286 -0
  107. package/src/component/_generated/api.ts +19 -0
  108. package/src/component/_generated/component.ts +32 -0
  109. package/src/component/_generated/dataModel.ts +15 -0
  110. package/src/component/_generated/server.ts +43 -0
  111. package/src/component/convex.config.ts +3 -0
  112. package/src/component/ingest.ts +328 -0
  113. package/src/component/queries.ts +248 -0
  114. package/src/component/schema.ts +73 -0
  115. package/src/content/index.ts +53 -0
  116. package/src/model-call/index.ts +224 -0
  117. package/src/projection.ts +99 -0
  118. package/src/protocols/anthropic-messages.ts +115 -0
  119. package/src/protocols/chat-completions.ts +94 -0
  120. package/src/protocols/checkpoint.ts +342 -0
  121. package/src/protocols/content.ts +41 -0
  122. package/src/protocols/framing.ts +62 -0
  123. package/src/protocols/index.ts +140 -0
  124. package/src/protocols/output.ts +78 -0
  125. package/src/protocols/responses.ts +188 -0
  126. package/src/protocols/types.ts +26 -0
  127. package/src/protocols/usage.ts +36 -0
  128. package/src/protocols/values.ts +35 -0
  129. package/src/test.ts +16 -0
@@ -0,0 +1,139 @@
1
+ import { assembleResponsesStream } from "./responses.js";
2
+ import { assembleChatStream } from "./chat-completions.js";
3
+ import { assembleAnthropicStream } from "./anthropic-messages.js";
4
+ import { SSEReader } from "./framing.js";
5
+ import { object, parseObject } from "./values.js";
6
+ import { requestInput, responseOutput } from "./output.js";
7
+ export { SSEReader } from "./framing.js";
8
+ export { assembleResponsesStream, assembleChatStream, assembleAnthropicStream };
9
+ export { nanoTime } from "./values.js";
10
+ export const PARSER_VERSION = "client-protocol-v1";
11
+ export function protocolForRoute(route) {
12
+ if (route === "POST /v1/messages" || route === "POST /v1/messages/count_tokens")
13
+ return "anthropic_messages";
14
+ if (route === "POST /v1/responses")
15
+ return "responses";
16
+ if (route === "POST /v1/chat/completions")
17
+ return "chat_completions";
18
+ return "unknown";
19
+ }
20
+ /** Bounded replay helper for fixtures and selected-call export; never fetches data itself. */
21
+ export function projectCapturedPayloads(args) {
22
+ const projection = {
23
+ version: 1,
24
+ protocol: protocolForRoute(args.route),
25
+ requestState: "absent",
26
+ responseState: "absent",
27
+ scalars: {},
28
+ metadata: { parserVersion: PARSER_VERSION, providerIdentity: "unavailable" },
29
+ };
30
+ const decoder = new TextDecoder("utf-8", { fatal: true });
31
+ if (args.request) {
32
+ try {
33
+ const req = parseObject(decoder.decode(args.request));
34
+ projection.input = requestInput(projection.protocol, req);
35
+ projection.requestState = "decoded";
36
+ if (typeof req.model === "string")
37
+ projection.scalars.requestModel = req.model;
38
+ if (typeof req.stream === "boolean")
39
+ projection.scalars.streamed = req.stream;
40
+ }
41
+ catch {
42
+ projection.requestState = "invalid";
43
+ }
44
+ }
45
+ let response = {};
46
+ if (args.response) {
47
+ try {
48
+ response = parseObject(decoder.decode(args.response));
49
+ projection.responseState = "decoded";
50
+ projection.metadata.terminalObserved = true;
51
+ projection.metadata.usageState = response.usage ? "terminal_snapshot" : "absent";
52
+ }
53
+ catch {
54
+ projection.responseState = "invalid";
55
+ }
56
+ }
57
+ if (args.chunks) {
58
+ const reader = new SSEReader();
59
+ const events = [];
60
+ let done = false;
61
+ let invalid = false;
62
+ let bytes = 0;
63
+ for (const chunk of args.chunks) {
64
+ bytes += chunk.byteLength;
65
+ if (bytes > 16 * 1024 * 1024)
66
+ throw new Error("bounded replay limit; use event pages for larger calls");
67
+ try {
68
+ for (const frame of reader.feed(chunk)) {
69
+ if (frame.data === "[DONE]") {
70
+ done = true;
71
+ continue;
72
+ }
73
+ try {
74
+ events.push(parseObject(frame.data));
75
+ }
76
+ catch {
77
+ invalid = true;
78
+ }
79
+ }
80
+ }
81
+ catch {
82
+ invalid = true;
83
+ }
84
+ }
85
+ try {
86
+ invalid ||= reader.finish().truncated;
87
+ }
88
+ catch {
89
+ invalid = true;
90
+ }
91
+ const assembled = projection.protocol === "responses"
92
+ ? assembleResponsesStream(events)
93
+ : projection.protocol === "chat_completions"
94
+ ? assembleChatStream(events, done, args.complete === true)
95
+ : assembleAnthropicStream(events);
96
+ response = assembled.response;
97
+ invalid ||= assembled.invalid;
98
+ projection.responseState = invalid
99
+ ? "invalid"
100
+ : !assembled.recognized || assembled.unsupported
101
+ ? "unsupported"
102
+ : assembled.terminal
103
+ ? "decoded"
104
+ : "truncated";
105
+ projection.metadata.terminalObserved = assembled.terminal;
106
+ const final = assembled.terminalUsage &&
107
+ assembled.terminal &&
108
+ !invalid &&
109
+ assembled.recognized &&
110
+ !assembled.unsupported;
111
+ projection.metadata.usageState =
112
+ final && response.usage
113
+ ? "terminal_snapshot"
114
+ : response.usage
115
+ ? "partial_snapshot"
116
+ : "absent";
117
+ if (!final) {
118
+ projection.metadata.partialUsage = response.usage;
119
+ delete response.usage;
120
+ }
121
+ }
122
+ if (projection.protocol !== "unknown" && (args.response || args.chunks))
123
+ responseOutput(projection, response);
124
+ if (projection.protocol === "responses" && typeof response.status === "string")
125
+ projection.scalars.statusJson = JSON.stringify({ responseStatus: response.status });
126
+ if (args.route === "POST /v1/messages/count_tokens") {
127
+ projection.metadata.operation = "token_count";
128
+ projection.metadata.tokenCount = object(response).input_tokens;
129
+ projection.scalars.inputTokens = undefined;
130
+ projection.scalars.outputTokens = undefined;
131
+ projection.scalars.totalTokens = undefined;
132
+ }
133
+ if (args.route === "GET /v1/models") {
134
+ projection.metadata.operation = "discovery";
135
+ projection.output = { native: response };
136
+ }
137
+ return projection;
138
+ }
139
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/protocols/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { CliproxyProjection, RecordValue } from "./types.js";
2
+ export declare function requestInput(protocol: CliproxyProjection["protocol"], request: RecordValue): RecordValue;
3
+ export declare function responseOutput(projection: CliproxyProjection, response: RecordValue): void;
4
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/protocols/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAKlE,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,kBAAkB,CAAC,UAAU,CAAC,EACxC,OAAO,EAAE,WAAW,GACnB,WAAW,CAoBb;AACD,wBAAgB,cAAc,CAAC,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,WAAW,QAgDnF"}
@@ -0,0 +1,81 @@
1
+ import { identity, list, object } from "./values.js";
2
+ import { extractUsage } from "./usage.js";
3
+ import { responsesMessages } from "./responses.js";
4
+ import { anthropicMessages } from "./anthropic-messages.js";
5
+ export function requestInput(protocol, request) {
6
+ if (protocol === "anthropic_messages") {
7
+ const messages = anthropicMessages(request.messages);
8
+ if (request.system !== undefined)
9
+ messages.unshift({ role: "system", content: request.system });
10
+ return { ...request, messages, nativeMessages: request.messages };
11
+ }
12
+ if (protocol === "responses") {
13
+ const { input, ...rest } = request;
14
+ return {
15
+ ...rest,
16
+ messages: [
17
+ ...(typeof request.instructions === "string"
18
+ ? [{ role: "system", content: request.instructions }]
19
+ : []),
20
+ ...(typeof input === "string" ? [{ role: "user", content: input }] : list(input)),
21
+ ],
22
+ nativeInput: input,
23
+ };
24
+ }
25
+ return request;
26
+ }
27
+ export function responseOutput(projection, response) {
28
+ projection.scalars.responseModel = identity(response.model);
29
+ projection.scalars.generationId = identity(response.id);
30
+ if (projection.responseState === "decoded" && response.usage !== undefined)
31
+ extractUsage(projection, object(response.usage));
32
+ let messages;
33
+ if (projection.protocol === "chat_completions") {
34
+ const choices = list(response.choices);
35
+ messages = choices.map((raw) => ({
36
+ ...object(object(raw).message),
37
+ choiceIndex: object(raw).index,
38
+ finishReason: object(raw).finish_reason,
39
+ }));
40
+ projection.scalars.finishReason = identity(object(choices[0]).finish_reason);
41
+ }
42
+ else if (projection.protocol === "responses") {
43
+ messages = responsesMessages(response.output);
44
+ projection.scalars.finishReason = identity(response.status);
45
+ }
46
+ else {
47
+ messages = anthropicMessages([{ role: "assistant", content: response.content }]);
48
+ projection.scalars.finishReason = identity(response.stop_reason);
49
+ }
50
+ const first = messages[0] ?? {};
51
+ const text = [];
52
+ const reasoning = [];
53
+ const selected = projection.protocol === "chat_completions" ? [first] : messages;
54
+ for (const message of selected) {
55
+ if (typeof message.content === "string")
56
+ text.push(message.content);
57
+ if (typeof message.reasoning_content === "string")
58
+ reasoning.push(message.reasoning_content);
59
+ if (typeof message.reasoning === "string")
60
+ reasoning.push(message.reasoning);
61
+ for (const raw of [...list(message.content), ...list(message.summary)]) {
62
+ const block = object(raw);
63
+ if (["text", "output_text"].includes(String(block.type)) && typeof block.text === "string")
64
+ text.push(block.text);
65
+ if (block.type === "thinking" && typeof block.thinking === "string")
66
+ reasoning.push(block.thinking);
67
+ if (block.type === "summary_text" && typeof block.text === "string")
68
+ reasoning.push(block.text);
69
+ }
70
+ }
71
+ projection.output = {
72
+ format: "cliproxy_response_v1",
73
+ protocol: projection.protocol,
74
+ completion: text.join(""),
75
+ reasoning: reasoning.join(""),
76
+ messages,
77
+ // Native blocks preserve signatures, tool results, refusal, unknown content and errors.
78
+ native: response,
79
+ };
80
+ }
81
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/protocols/output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { RecordValue } from "./types.js";
2
+ /** Reconstruct only emitted Responses content; a completed item is not a completed call. */
3
+ export declare function assembleResponsesStream(events: RecordValue[]): {
4
+ response: RecordValue;
5
+ terminal: boolean;
6
+ terminalUsage: boolean;
7
+ recognized: boolean;
8
+ invalid: boolean;
9
+ unsupported: boolean;
10
+ };
11
+ export declare function responsesMessages(output: unknown): RecordValue[];
12
+ //# sourceMappingURL=responses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses.d.ts","sourceRoot":"","sources":["../../src/protocols/responses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C,4FAA4F;AAC5F,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,WAAW,EAAE;;;;;;;EAqK5D;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,WAAW,EAAE,CAgBhE"}
@@ -0,0 +1,189 @@
1
+ import { append, count, list, object } from "./values.js";
2
+ /** Reconstruct only emitted Responses content; a completed item is not a completed call. */
3
+ export function assembleResponsesStream(events) {
4
+ const response = {};
5
+ const items = new Map();
6
+ let terminal = false;
7
+ let terminalUsage = false;
8
+ let terminalSnapshot = false;
9
+ let recognized = false;
10
+ let invalid = false;
11
+ let unsupported = false;
12
+ for (const event of events) {
13
+ const type = String(event.type);
14
+ if ([
15
+ "response.created",
16
+ "response.queued",
17
+ "response.in_progress",
18
+ "response.completed",
19
+ "response.failed",
20
+ "response.incomplete",
21
+ ].includes(type)) {
22
+ recognized = true;
23
+ const snapshot = object(event.response);
24
+ if (snapshot.object !== "response" || typeof snapshot.id !== "string") {
25
+ invalid = true;
26
+ continue;
27
+ }
28
+ if (["response.completed", "response.failed", "response.incomplete"].includes(type)) {
29
+ if (snapshot.status !== type.slice("response.".length) || !Array.isArray(snapshot.output)) {
30
+ invalid = true;
31
+ continue;
32
+ }
33
+ terminal = true;
34
+ terminalSnapshot = true;
35
+ terminalUsage = snapshot.usage !== undefined && snapshot.usage !== null;
36
+ }
37
+ Object.assign(response, snapshot);
38
+ continue;
39
+ }
40
+ if (type === "error") {
41
+ recognized = true;
42
+ terminal = true;
43
+ response.status = "failed";
44
+ response.error = event.error ?? {
45
+ type: event.type,
46
+ code: event.code,
47
+ message: event.message,
48
+ };
49
+ terminalUsage = false;
50
+ continue;
51
+ }
52
+ if (type === "response.output_item.added" || type === "response.output_item.done") {
53
+ recognized = true;
54
+ const index = count(event.output_index);
55
+ const item = object(event.item);
56
+ if (index === undefined || typeof item.type !== "string")
57
+ invalid = true;
58
+ else
59
+ items.set(index, item);
60
+ continue;
61
+ }
62
+ if ([
63
+ "response.content_part.added",
64
+ "response.content_part.done",
65
+ "response.output_text.delta",
66
+ "response.output_text.done",
67
+ "response.output_text.annotation.added",
68
+ "response.refusal.delta",
69
+ "response.refusal.done",
70
+ "response.function_call_arguments.delta",
71
+ "response.function_call_arguments.done",
72
+ "response.reasoning_summary_part.added",
73
+ "response.reasoning_summary_part.done",
74
+ "response.reasoning_summary_text.delta",
75
+ "response.reasoning_summary_text.done",
76
+ ].includes(type)) {
77
+ recognized = true;
78
+ const index = count(event.output_index);
79
+ const item = index === undefined ? undefined : items.get(index);
80
+ if (!item || item.id !== event.item_id) {
81
+ invalid = true;
82
+ continue;
83
+ }
84
+ if (type.startsWith("response.function_call_arguments.")) {
85
+ if (type.endsWith(".delta"))
86
+ append(item, "arguments", event.delta);
87
+ else
88
+ item.arguments = event.arguments;
89
+ continue;
90
+ }
91
+ const summary = type.startsWith("response.reasoning_summary_");
92
+ const partIndex = count(summary ? event.summary_index : event.content_index);
93
+ if (partIndex === undefined) {
94
+ invalid = true;
95
+ continue;
96
+ }
97
+ const field = summary ? "summary" : "content";
98
+ const parts = list(item[field]);
99
+ // Keep sparse provider indices in a map-like object rather than allocating a huge array.
100
+ if (partIndex > parts.length) {
101
+ invalid = true;
102
+ continue;
103
+ }
104
+ if (type.includes("_part."))
105
+ parts[partIndex] = object(event.part);
106
+ else {
107
+ const refusal = type.startsWith("response.refusal.");
108
+ const part = object(parts[partIndex]);
109
+ part.type ??= summary ? "summary_text" : refusal ? "refusal" : "output_text";
110
+ const key = refusal ? "refusal" : "text";
111
+ if (type === "response.output_text.annotation.added") {
112
+ const annotations = list(part.annotations);
113
+ const annotationIndex = count(event.annotation_index);
114
+ if (annotationIndex === undefined || annotationIndex > annotations.length) {
115
+ invalid = true;
116
+ continue;
117
+ }
118
+ annotations[annotationIndex] = event.annotation;
119
+ part.annotations = annotations;
120
+ }
121
+ else if (type.endsWith(".delta"))
122
+ append(part, key, event.delta);
123
+ else
124
+ part[key] = event[key];
125
+ parts[partIndex] = part;
126
+ }
127
+ item[field] = parts;
128
+ continue;
129
+ }
130
+ if ([
131
+ "response.web_search_call.in_progress",
132
+ "response.web_search_call.searching",
133
+ "response.web_search_call.completed",
134
+ "response.file_search_call.in_progress",
135
+ "response.file_search_call.searching",
136
+ "response.file_search_call.completed",
137
+ "response.code_interpreter_call.in_progress",
138
+ "response.code_interpreter_call.interpreting",
139
+ "response.code_interpreter_call.completed",
140
+ "response.image_generation_call.in_progress",
141
+ "response.image_generation_call.generating",
142
+ "response.image_generation_call.completed",
143
+ "response.mcp_call.in_progress",
144
+ "response.mcp_call.completed",
145
+ "response.mcp_call.failed",
146
+ "response.mcp_list_tools.in_progress",
147
+ "response.mcp_list_tools.completed",
148
+ "response.mcp_list_tools.failed",
149
+ ].includes(type)) {
150
+ // Tool lifecycle frames carry no content or call usage. Keep them in the raw
151
+ // transcript; only a response terminal event can establish final usage.
152
+ recognized = true;
153
+ continue;
154
+ }
155
+ // Retained in the raw transcript. Do not pretend an unknown protocol frame was decoded.
156
+ unsupported = true;
157
+ }
158
+ const emitted = [...items.entries()].toSorted(([a], [b]) => a - b).map(([, item]) => item);
159
+ if (!terminalSnapshot || !Array.isArray(response.output))
160
+ response.output = emitted;
161
+ else if (response.status === "failed" || response.status === "incomplete") {
162
+ const snapshotIds = new Set(response.output.map((item) => object(item).id));
163
+ // Failed terminal snapshots may omit unfinished items. Preserve emitted
164
+ // evidence while preferring terminal entries with the same exact item ID.
165
+ response.output = [
166
+ ...response.output,
167
+ ...emitted.filter((item) => typeof item.id !== "string" || !snapshotIds.has(item.id)),
168
+ ];
169
+ }
170
+ return { response, terminal, terminalUsage, recognized, invalid, unsupported };
171
+ }
172
+ export function responsesMessages(output) {
173
+ return list(output).map((raw) => {
174
+ const item = object(raw);
175
+ if (item.type === "function_call")
176
+ return {
177
+ role: "assistant",
178
+ tool_calls: [
179
+ {
180
+ id: item.call_id,
181
+ type: "function",
182
+ function: { name: item.name, arguments: item.arguments },
183
+ },
184
+ ],
185
+ };
186
+ return { ...item, role: item.role ?? "assistant" };
187
+ });
188
+ }
189
+ //# sourceMappingURL=responses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses.js","sourceRoot":"","sources":["../../src/protocols/responses.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /** Native CLIProxy application-log projection. Upstream attempts are never usage sources. */
2
+ export type ProjectionState = "absent" | "invalid" | "unsupported" | "truncated" | "decoded";
3
+ export type RecordValue = Record<string, unknown>;
4
+ export type CliproxyProjection = {
5
+ version: 1;
6
+ protocol: "chat_completions" | "anthropic_messages" | "responses" | "unknown";
7
+ requestState: ProjectionState;
8
+ responseState: ProjectionState;
9
+ input?: RecordValue;
10
+ output?: RecordValue;
11
+ scalars: {
12
+ requestModel?: string;
13
+ responseModel?: string;
14
+ generationId?: string;
15
+ streamed?: boolean;
16
+ startTimeUnixNano?: string;
17
+ finishReason?: string;
18
+ inputTokens?: number;
19
+ outputTokens?: number;
20
+ totalTokens?: number;
21
+ reasoningTokens?: number;
22
+ cachedInputTokens?: number;
23
+ statusJson?: string;
24
+ };
25
+ metadata: RecordValue;
26
+ };
27
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/protocols/types.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,SAAS,CAAC;AAC7F,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAClD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,EAAE,kBAAkB,GAAG,oBAAoB,GAAG,WAAW,GAAG,SAAS,CAAC;IAC9E,YAAY,EAAE,eAAe,CAAC;IAC9B,aAAa,EAAE,eAAe,CAAC;IAC/B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE;QACP,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,QAAQ,EAAE,WAAW,CAAC;CACvB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/protocols/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type { CliproxyProjection, RecordValue } from "./types.js";
2
+ export declare function extractUsage(projection: CliproxyProjection, raw: RecordValue): void;
3
+ //# sourceMappingURL=usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/protocols/usage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAElE,wBAAgB,YAAY,CAAC,UAAU,EAAE,kBAAkB,EAAE,GAAG,EAAE,WAAW,QAiC5E"}
@@ -0,0 +1,27 @@
1
+ import { count, object } from "./values.js";
2
+ export function extractUsage(projection, raw) {
3
+ // Anthropic reports disjoint uncached/cache creation/cache read input counts.
4
+ // Never manufacture totals, costs, or token counts from byte/text lengths.
5
+ projection.metadata.usage = raw;
6
+ const anthropic = projection.protocol === "anthropic_messages";
7
+ const responses = projection.protocol === "responses";
8
+ const nativeInput = count(raw.input_tokens);
9
+ const cacheRead = count(raw.cache_read_input_tokens);
10
+ const cacheCreated = count(raw.cache_creation_input_tokens);
11
+ const anthropicInput = nativeInput !== undefined && cacheRead !== undefined && cacheCreated !== undefined
12
+ ? count(nativeInput + cacheRead + cacheCreated)
13
+ : undefined;
14
+ Object.assign(projection.scalars, {
15
+ inputTokens: anthropic ? anthropicInput : responses ? nativeInput : count(raw.prompt_tokens),
16
+ outputTokens: count(raw[anthropic || responses ? "output_tokens" : "completion_tokens"]),
17
+ totalTokens: count(raw.total_tokens),
18
+ cachedInputTokens: count(anthropic
19
+ ? raw.cache_read_input_tokens
20
+ : object(raw[responses ? "input_tokens_details" : "prompt_tokens_details"]).cached_tokens),
21
+ reasoningTokens: count(object(raw[anthropic || responses ? "output_tokens_details" : "completion_tokens_details"])[anthropic ? "thinking_tokens" : "reasoning_tokens"]),
22
+ });
23
+ projection.metadata.tokenSemantics = anthropic
24
+ ? "input_is_sum_of_reported_input_cache_creation_cache_read; cached_input_is_cache_read; missing_components_mean_unknown; no_synthesized_total"
25
+ : "input_includes_reported_cached_input; terminal_usage_snapshot";
26
+ }
27
+ //# sourceMappingURL=usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/protocols/usage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC5C,MAAM,UAAU,YAAY,CAAC,UAA8B,EAAE,GAAgB;IAC3E,8EAA8E;IAC9E,2EAA2E;IAC3E,UAAU,CAAC,QAAQ,CAAC,KAAK,GAAG,GAAG,CAAC;IAChC,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,KAAK,oBAAoB,CAAC;IAE/D,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,KAAK,WAAW,CAAC;IAEtD,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IAC5D,MAAM,cAAc,GAClB,WAAW,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS;QAChF,CAAC,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS,GAAG,YAAY,CAAC;QAC/C,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE;QAChC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC;QAC5F,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;QACxF,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC;QACpC,iBAAiB,EAAE,KAAK,CACtB,SAAS;YACP,CAAC,CAAC,GAAG,CAAC,uBAAuB;YAC7B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,aAAa,CAC5F;QACD,eAAe,EAAE,KAAK,CACpB,MAAM,CAAC,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CACzF,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,CACnD,CACF;KACF,CAAC,CAAC;IACH,UAAU,CAAC,QAAQ,CAAC,cAAc,GAAG,SAAS;QAC5C,CAAC,CAAC,6IAA6I;QAC/I,CAAC,CAAC,+DAA+D,CAAC;AACtE,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { RecordValue } from "./types.js";
2
+ export declare const object: (value: unknown) => RecordValue;
3
+ export declare const list: (value: unknown) => unknown[];
4
+ export declare const string: (value: unknown) => string | undefined;
5
+ export declare const identity: (value: unknown) => string | undefined;
6
+ export declare const count: (value: unknown) => number | undefined;
7
+ export declare function nanoTime(value: string | undefined): string | undefined;
8
+ export declare function parseObject(raw: string): RecordValue;
9
+ export declare function append(target: RecordValue, key: string, value: unknown): void;
10
+ //# sourceMappingURL=values.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../../src/protocols/values.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,eAAO,MAAM,MAAM,GAAI,OAAO,OAAO,KAAG,WAGhC,CAAC;AACT,eAAO,MAAM,IAAI,GAAI,OAAO,OAAO,KAAG,OAAO,EAAyC,CAAC;AACvF,eAAO,MAAM,MAAM,GAAI,OAAO,OAAO,KAAG,MAAM,GAAG,SACF,CAAC;AAChD,eAAO,MAAM,QAAQ,GAAI,OAAO,OAAO,uBAGtC,CAAC;AACF,eAAO,MAAM,KAAK,GAAI,OAAO,OAAO,uBACwD,CAAC;AAC7F,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,sBAUjD;AACD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAKpD;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,QAEtE"}
@@ -0,0 +1,32 @@
1
+ export const object = (value) => value !== null && typeof value === "object" && !Array.isArray(value)
2
+ ? value
3
+ : {};
4
+ export const list = (value) => (Array.isArray(value) ? value : []);
5
+ export const string = (value) => typeof value === "string" ? value : undefined;
6
+ export const identity = (value) => {
7
+ const text = string(value);
8
+ return text && text.length <= 256 ? text : undefined;
9
+ };
10
+ export const count = (value) => typeof value === "number" && Number.isSafeInteger(value) && value >= 0 ? value : undefined;
11
+ export function nanoTime(value) {
12
+ if (!value)
13
+ return;
14
+ const match = /^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})(?:\.(\d{1,9}))?(Z|[+-]\d{2}:\d{2})$/.exec(value);
15
+ if (!match)
16
+ return;
17
+ const seconds = Date.parse(`${match[1]}${match[3]}`);
18
+ return Number.isFinite(seconds)
19
+ ? String(BigInt(seconds) * 1000000n + BigInt((match[2] ?? "").padEnd(9, "0")))
20
+ : undefined;
21
+ }
22
+ export function parseObject(raw) {
23
+ const parsed = JSON.parse(raw);
24
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
25
+ throw new Error("Object required");
26
+ return parsed;
27
+ }
28
+ export function append(target, key, value) {
29
+ if (typeof value === "string")
30
+ target[key] = (string(target[key]) ?? "") + value;
31
+ }
32
+ //# sourceMappingURL=values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"values.js","sourceRoot":"","sources":["../../src/protocols/values.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAc,EAAe,EAAE,CACpD,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;IAClE,CAAC,CAAE,KAAqB;IACxB,CAAC,CAAC,EAAE,CAAC;AACT,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAc,EAAa,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACvF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAc,EAAsB,EAAE,CAC3D,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAChD,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAE,EAAE;IACzC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,OAAO,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC,CAAC;AACF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAc,EAAE,EAAE,CACtC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7F,MAAM,UAAU,QAAQ,CAAC,KAAyB;IAChD,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,MAAM,KAAK,GAAG,4EAA4E,CAAC,IAAI,CAC7F,KAAK,CACN,CAAC;IACF,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACrD,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC7B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,QAAU,GAAG,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAChF,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AACD,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,OAAO,MAAqB,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,MAAmB,EAAE,GAAW,EAAE,KAAc;IACrE,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC;AACnF,CAAC"}