@simonepri/refined-antigravity-acp 1.5.0 → 1.6.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.
Files changed (41) hide show
  1. package/dist/src/fixes/flattened-model-efforts/index.d.ts.map +1 -1
  2. package/dist/src/fixes/flattened-model-efforts/index.js +15 -2
  3. package/dist/src/fixes/flattened-model-efforts/index.js.map +1 -1
  4. package/dist/src/fixes/index.d.ts +1 -0
  5. package/dist/src/fixes/index.d.ts.map +1 -1
  6. package/dist/src/fixes/index.js +5 -0
  7. package/dist/src/fixes/index.js.map +1 -1
  8. package/dist/src/fixes/missing-usage-metrics/index.d.ts +1 -0
  9. package/dist/src/fixes/missing-usage-metrics/index.d.ts.map +1 -1
  10. package/dist/src/fixes/missing-usage-metrics/index.js +6 -2
  11. package/dist/src/fixes/missing-usage-metrics/index.js.map +1 -1
  12. package/dist/src/otel/config.d.ts +19 -0
  13. package/dist/src/otel/config.d.ts.map +1 -0
  14. package/dist/src/otel/config.js +121 -0
  15. package/dist/src/otel/config.js.map +1 -0
  16. package/dist/src/otel/exporter.d.ts +25 -0
  17. package/dist/src/otel/exporter.d.ts.map +1 -0
  18. package/dist/src/otel/exporter.js +102 -0
  19. package/dist/src/otel/exporter.js.map +1 -0
  20. package/dist/src/otel/fix.d.ts +33 -0
  21. package/dist/src/otel/fix.d.ts.map +1 -0
  22. package/dist/src/otel/fix.js +234 -0
  23. package/dist/src/otel/fix.js.map +1 -0
  24. package/dist/src/otel/index.d.ts +10 -0
  25. package/dist/src/otel/index.d.ts.map +1 -0
  26. package/dist/src/otel/index.js +10 -0
  27. package/dist/src/otel/index.js.map +1 -0
  28. package/dist/src/otel/tracker.d.ts +79 -0
  29. package/dist/src/otel/tracker.d.ts.map +1 -0
  30. package/dist/src/otel/tracker.js +359 -0
  31. package/dist/src/otel/tracker.js.map +1 -0
  32. package/dist/src/otel/types.d.ts +93 -0
  33. package/dist/src/otel/types.d.ts.map +1 -0
  34. package/dist/src/otel/types.js +49 -0
  35. package/dist/src/otel/types.js.map +1 -0
  36. package/dist/src/otel/utf8.d.ts +15 -0
  37. package/dist/src/otel/utf8.d.ts.map +1 -0
  38. package/dist/src/otel/utf8.js +49 -0
  39. package/dist/src/otel/utf8.js.map +1 -0
  40. package/package.json +1 -1
  41. package/readme.md +51 -33
@@ -0,0 +1,234 @@
1
+ /**
2
+ * OpenTelemetry ACP Telemetry Fix.
3
+ * Listens to ACP session prompt streams and exports turn spans, tool child spans,
4
+ * and Antigravity CLI log events in the background.
5
+ */
6
+ import { ACP_METHODS, SESSION_UPDATES, isJsonRpcErrorResponse, isJsonRpcRequest, isJsonRpcResponse, isJsonRpcSuccessResponse, } from "../core/types.js";
7
+ import { extractSessionId } from "../core/session-cache.js";
8
+ import { getOtelConfig } from "./config.js";
9
+ import { OtlpExporter } from "./exporter.js";
10
+ import { SessionTurnTracker } from "./tracker.js";
11
+ function handlePromptResponse(msg, sessionId, tracker, customDbPath) {
12
+ if (isJsonRpcErrorResponse(msg)) {
13
+ tracker.finishTurn(sessionId, {
14
+ promptRequestId: msg.id,
15
+ isError: true,
16
+ errorMessage: msg.error.message,
17
+ customDbPath,
18
+ });
19
+ return;
20
+ }
21
+ const resultObj = msg.result && typeof msg.result === "object" ? msg.result : {};
22
+ const stopReason = typeof resultObj.stopReason === "string" ? resultObj.stopReason : undefined;
23
+ const usage = resultObj.usage;
24
+ if (usage) {
25
+ tracker.recordExplicitUsage(sessionId, usage);
26
+ }
27
+ tracker.finishTurn(sessionId, {
28
+ promptRequestId: msg.id,
29
+ stopReason,
30
+ customDbPath,
31
+ });
32
+ }
33
+ function extractCommandFromRaw(rawInput) {
34
+ if (!rawInput || typeof rawInput !== "object")
35
+ return undefined;
36
+ const raw = rawInput;
37
+ if (typeof raw.CommandLine === "string")
38
+ return raw.CommandLine;
39
+ if (typeof raw.command === "string")
40
+ return raw.command;
41
+ return undefined;
42
+ }
43
+ function inferToolFromRaw(rawInput) {
44
+ if (rawInput && typeof rawInput === "object") {
45
+ const raw = rawInput;
46
+ if ("CommandLine" in raw)
47
+ return "run_command";
48
+ if ("AbsolutePath" in raw || "TargetFile" in raw || "targetFile" in raw)
49
+ return "view_file";
50
+ }
51
+ return "run_command";
52
+ }
53
+ function cleanToolName(name) {
54
+ if (typeof name !== "string")
55
+ return undefined;
56
+ const trimmed = name.replace(/^Running:?\s+/i, "").trim();
57
+ return trimmed || undefined;
58
+ }
59
+ function inferFromTitle(title, rawInput) {
60
+ const cleaned = cleanToolName(title);
61
+ if (cleaned && /^[a-zA-Z0-9_-]+$/.test(cleaned)) {
62
+ return { toolName: cleaned };
63
+ }
64
+ return {
65
+ toolName: inferToolFromRaw(rawInput),
66
+ command: title,
67
+ };
68
+ }
69
+ function resolveCommand(title, toolName, existingCommand) {
70
+ if (existingCommand || !title)
71
+ return existingCommand;
72
+ if (title === toolName || title === `Running ${toolName}`)
73
+ return undefined;
74
+ return title;
75
+ }
76
+ export function resolveToolName(update) {
77
+ let command = extractCommandFromRaw(update.rawInput);
78
+ let toolName = cleanToolName(update.name) ?? cleanToolName(update.tool);
79
+ const title = typeof update.title === "string" ? update.title.trim() : undefined;
80
+ if (!toolName && title) {
81
+ const inferred = inferFromTitle(title, update.rawInput);
82
+ toolName = inferred.toolName;
83
+ command ??= inferred.command;
84
+ }
85
+ const finalToolName = toolName || "tool";
86
+ return {
87
+ toolName: finalToolName,
88
+ command: resolveCommand(title, finalToolName, command),
89
+ };
90
+ }
91
+ function handleToolUpdate(update, sessionId, tracker) {
92
+ const call = update;
93
+ const callId = call.toolCallId || call.callId || call.id;
94
+ if (!callId)
95
+ return;
96
+ if (update.sessionUpdate === SESSION_UPDATES.TOOL_CALL) {
97
+ const { toolName, command } = resolveToolName({
98
+ name: call.name,
99
+ tool: call.tool,
100
+ title: call.title,
101
+ rawInput: call.rawInput ?? call.arguments,
102
+ });
103
+ tracker.recordToolCall(sessionId, callId, toolName, command);
104
+ }
105
+ else if (update.sessionUpdate === SESSION_UPDATES.TOOL_CALL_UPDATE && call.status) {
106
+ tracker.updateToolCall(sessionId, callId, call.status);
107
+ }
108
+ }
109
+ function handleNonToolUpdate(update, sessionId, tracker) {
110
+ const su = update.sessionUpdate;
111
+ if (su === SESSION_UPDATES.AGENT_MESSAGE_CHUNK) {
112
+ const text = update.content?.text;
113
+ if (typeof text === "string")
114
+ tracker.appendResponseChunk(sessionId, text);
115
+ }
116
+ else if (su === SESSION_UPDATES.USAGE_UPDATE) {
117
+ const usage = update;
118
+ if (typeof usage.used === "number")
119
+ tracker.recordUsageUpdate(sessionId, usage.used, usage.size);
120
+ }
121
+ else if (su === SESSION_UPDATES.CONFIG_OPTION_UPDATE) {
122
+ const configOpt = update;
123
+ if (configOpt.configId === "model" && typeof configOpt.value === "string") {
124
+ tracker.setModel(sessionId, configOpt.value);
125
+ }
126
+ }
127
+ }
128
+ function handleUpdate(params, tracker, customDbPathGetter) {
129
+ const { sessionId, update } = params;
130
+ if (!sessionId || !update)
131
+ return;
132
+ const su = update.sessionUpdate;
133
+ if (su === SESSION_UPDATES.TOOL_CALL || su === SESSION_UPDATES.TOOL_CALL_UPDATE) {
134
+ handleToolUpdate(update, sessionId, tracker);
135
+ }
136
+ else {
137
+ handleNonToolUpdate(update, sessionId, tracker);
138
+ }
139
+ const rawUpdate = update;
140
+ if (typeof rawUpdate.stopReason === "string") {
141
+ const customDbPath = customDbPathGetter ? customDbPathGetter(sessionId) : undefined;
142
+ tracker.finishTurn(sessionId, { stopReason: rawUpdate.stopReason, customDbPath });
143
+ }
144
+ }
145
+ function handleConfigChange(msg, sessionId, tracker) {
146
+ if (msg.method === ACP_METHODS.SESSION_SET_MODEL) {
147
+ const params = msg.params;
148
+ if (params?.modelId)
149
+ tracker.setModel(sessionId, params.modelId);
150
+ }
151
+ else if (msg.method === ACP_METHODS.SESSION_SET_CONFIG_OPTION) {
152
+ const params = msg.params;
153
+ if (params?.configId === "model" && typeof params.value === "string") {
154
+ tracker.setModel(sessionId, params.value);
155
+ }
156
+ }
157
+ }
158
+ function handleOutbound(msg, tracker, pendingPromptSessions) {
159
+ const sessionId = extractSessionId(msg);
160
+ if (!sessionId)
161
+ return;
162
+ if (msg.method === ACP_METHODS.SESSION_PROMPT) {
163
+ pendingPromptSessions.set(msg.id, sessionId);
164
+ const params = msg.params;
165
+ if (params?.prompt !== undefined) {
166
+ tracker.startTurn(sessionId, msg.id, params.prompt);
167
+ }
168
+ }
169
+ else if (msg.method === ACP_METHODS.SESSION_CANCEL) {
170
+ tracker.finishTurn(sessionId, { stopReason: "cancelled", isError: true });
171
+ }
172
+ else {
173
+ handleConfigChange(msg, sessionId, tracker);
174
+ }
175
+ }
176
+ function handleModelDiscovery(msg, sessionId, tracker) {
177
+ if (!sessionId || !isJsonRpcSuccessResponse(msg))
178
+ return;
179
+ const res = msg.result && typeof msg.result === "object"
180
+ ? msg.result
181
+ : {};
182
+ if (res.models?.currentModelId)
183
+ tracker.setModel(sessionId, res.models.currentModelId);
184
+ }
185
+ function handleResponse(msg, context, tracker, pendingPromptSessions, customDbPathGetter) {
186
+ const pendingSessionId = pendingPromptSessions.get(msg.id);
187
+ if (pendingSessionId) {
188
+ pendingPromptSessions.delete(msg.id);
189
+ const dbPath = customDbPathGetter ? customDbPathGetter(pendingSessionId) : undefined;
190
+ handlePromptResponse(msg, pendingSessionId, tracker, dbPath);
191
+ return;
192
+ }
193
+ const fallbackSessionId = context.session?.sessionId ?? extractSessionId(msg);
194
+ handleModelDiscovery(msg, fallbackSessionId, tracker);
195
+ }
196
+ export function createTelemetryFix(options) {
197
+ const config = options?.config ?? getOtelConfig();
198
+ const exporter = options?.exporter ?? new OtlpExporter(config);
199
+ const tracker = new SessionTurnTracker(config, exporter);
200
+ const pendingPromptSessions = new Map();
201
+ return {
202
+ name: "opentelemetry",
203
+ description: "Exports ACP session prompts, agent responses, tool calls, and model metrics over OpenTelemetry OTLP",
204
+ tracker,
205
+ exporter,
206
+ config,
207
+ onOutbound: (msg, _context) => {
208
+ if (!config.enabled || !isJsonRpcRequest(msg))
209
+ return msg;
210
+ if (!String(msg.id).startsWith("__refined_agy_recycle_")) {
211
+ handleOutbound(msg, tracker, pendingPromptSessions);
212
+ }
213
+ return msg;
214
+ },
215
+ onInbound: async (msg, context) => {
216
+ if (!config.enabled || context.isRecycling)
217
+ return [msg];
218
+ if (isJsonRpcResponse(msg)) {
219
+ handleResponse(msg, context, tracker, pendingPromptSessions, options?.customDbPathGetter);
220
+ }
221
+ else if ("method" in msg && msg.method === ACP_METHODS.SESSION_UPDATE && msg.params) {
222
+ handleUpdate(msg.params, tracker, options?.customDbPathGetter);
223
+ }
224
+ return [msg];
225
+ },
226
+ onRecycle: () => { },
227
+ dispose: () => {
228
+ pendingPromptSessions.clear();
229
+ void exporter.shutdown();
230
+ },
231
+ };
232
+ }
233
+ export const telemetryFix = createTelemetryFix();
234
+ //# sourceMappingURL=fix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fix.js","sourceRoot":"","sources":["../../../src/otel/fix.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * OpenTelemetry OTLP integration for Refined Antigravity ACP.
3
+ */
4
+ export * from "./types.js";
5
+ export * from "./config.js";
6
+ export * from "./utf8.js";
7
+ export * from "./exporter.js";
8
+ export * from "./tracker.js";
9
+ export * from "./fix.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/otel/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * OpenTelemetry OTLP integration for Refined Antigravity ACP.
3
+ */
4
+ export * from "./types.js";
5
+ export * from "./config.js";
6
+ export * from "./utf8.js";
7
+ export * from "./exporter.js";
8
+ export * from "./tracker.js";
9
+ export * from "./fix.js";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/otel/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Session turn and telemetry tracker.
3
+ * Maps ACP session prompts, response streams, and tool executions to OpenTelemetry
4
+ * GenAI semantic conventions and Antigravity CLI log events.
5
+ */
6
+ import type { OtelConfig } from "./config.js";
7
+ import type { IOtelExporter } from "./exporter.js";
8
+ import { type OtelSpan } from "./types.js";
9
+ import type { PromptContentItem } from "../core/types.js";
10
+ export declare function generateTraceId(): string;
11
+ export declare function generateSpanId(): string;
12
+ export declare function nowUnixNano(): string;
13
+ export interface InFlightToolCall {
14
+ toolCallId: string;
15
+ toolName: string;
16
+ command?: string | undefined;
17
+ spanId: string;
18
+ startTimeUnixNano: string;
19
+ endTimeUnixNano?: string;
20
+ status: "in_progress" | "completed" | "failed";
21
+ }
22
+ export interface InFlightTurn {
23
+ promptRequestId: string | number;
24
+ sessionId: string;
25
+ model: string;
26
+ traceId: string;
27
+ spanId: string;
28
+ startTimeUnixNano: string;
29
+ rawPromptText: string;
30
+ responseChunks: string[];
31
+ toolCalls: Map<string, InFlightToolCall>;
32
+ orderedCompletedTools: OtelSpan[];
33
+ inputTokens?: number;
34
+ outputTokens?: number;
35
+ cachedInputTokens?: number;
36
+ stopReason?: string;
37
+ isError?: boolean;
38
+ errorMessage?: string;
39
+ }
40
+ export declare function readTokensFromDb(dbPath: string): {
41
+ promptTokens?: number | undefined;
42
+ candidateTokens?: number | undefined;
43
+ cachedTokens?: number | undefined;
44
+ } | undefined;
45
+ export declare class SessionTurnTracker {
46
+ private readonly config;
47
+ private readonly exporter;
48
+ private readonly sessionModels;
49
+ private readonly activeTurnsBySession;
50
+ private readonly activeTurnsByPromptId;
51
+ constructor(config: OtelConfig, exporter: IOtelExporter);
52
+ getModel(sessionId: string): string;
53
+ setModel(sessionId: string, model: string): void;
54
+ formatPromptText(prompt: string | PromptContentItem[]): string;
55
+ startTurn(sessionId: string, promptRequestId: string | number, rawPrompt: string | PromptContentItem[]): InFlightTurn;
56
+ private emitUserPromptLog;
57
+ appendResponseChunk(sessionId: string, text: string): void;
58
+ recordToolCall(sessionId: string, toolCallId: string, toolName: string, command?: string | undefined): void;
59
+ updateToolCall(sessionId: string, toolCallId: string, status: "completed" | "failed" | string): void;
60
+ recordUsageUpdate(sessionId: string, used: number, _size?: number): void;
61
+ recordExplicitUsage(sessionId: string, usage: {
62
+ inputTokens?: number;
63
+ outputTokens?: number;
64
+ cachedTokens?: number;
65
+ }): void;
66
+ private reconcileTokens;
67
+ private resolveActiveTurn;
68
+ finishTurn(sessionId: string, options?: {
69
+ promptRequestId?: string | number | undefined;
70
+ stopReason?: string | undefined;
71
+ isError?: boolean | undefined;
72
+ errorMessage?: string | undefined;
73
+ customDbPath?: string | undefined;
74
+ }): void;
75
+ private emitAgentResponseLog;
76
+ private extractDatabaseUsage;
77
+ hasActiveTurn(sessionId: string): boolean;
78
+ }
79
+ //# sourceMappingURL=tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../../src/otel/tracker.ts"],"names":[],"mappings":"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"}