@agentrq/acp-gateway 0.2.5 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/__tests__/acpClient.test.js +415 -0
- package/dist/__tests__/acpClient.test.js.map +1 -1
- package/dist/__tests__/index.test.js +177 -1
- package/dist/__tests__/index.test.js.map +1 -1
- package/dist/__tests__/mcpClient.test.js +82 -1
- package/dist/__tests__/mcpClient.test.js.map +1 -1
- package/dist/__tests__/telemetry.test.js +151 -0
- package/dist/__tests__/telemetry.test.js.map +1 -0
- package/dist/acpClient.js +171 -6
- package/dist/acpClient.js.map +1 -1
- package/dist/index.js +126 -0
- package/dist/index.js.map +1 -1
- package/dist/mcpClient.js +26 -1
- package/dist/mcpClient.js.map +1 -1
- package/dist/telemetry.js +106 -0
- package/dist/telemetry.js.map +1 -0
- package/package.json +1 -1
package/dist/mcpClient.js
CHANGED
|
@@ -8,6 +8,7 @@ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
|
8
8
|
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
|
|
9
9
|
import { EventEmitter } from "node:events";
|
|
10
10
|
import { z } from "zod";
|
|
11
|
+
import { extractTaskIdFromMeta } from "./taskIdentity.js";
|
|
11
12
|
export class MCPBridge extends EventEmitter {
|
|
12
13
|
config;
|
|
13
14
|
client = null;
|
|
@@ -87,7 +88,7 @@ export class MCPBridge extends EventEmitter {
|
|
|
87
88
|
});
|
|
88
89
|
this.client = new Client({
|
|
89
90
|
name: "acp-gateway",
|
|
90
|
-
version: "0.2.
|
|
91
|
+
version: "0.2.7",
|
|
91
92
|
}, {
|
|
92
93
|
capabilities: {},
|
|
93
94
|
});
|
|
@@ -136,6 +137,30 @@ export class MCPBridge extends EventEmitter {
|
|
|
136
137
|
const { request_id, behavior } = notification.params;
|
|
137
138
|
this.emit("verdict", { requestId: request_id, behavior });
|
|
138
139
|
});
|
|
140
|
+
// Set notification handler for task cancellation
|
|
141
|
+
this.client.setNotificationHandler(z.object({
|
|
142
|
+
method: z.literal("notifications/claude/channel/cancel"),
|
|
143
|
+
params: z
|
|
144
|
+
.object({
|
|
145
|
+
task_id: z.string().optional(),
|
|
146
|
+
taskId: z.string().optional(),
|
|
147
|
+
chat_id: z.string().optional(),
|
|
148
|
+
reason: z.string().optional(),
|
|
149
|
+
meta: z.any().optional(),
|
|
150
|
+
_meta: z.any().optional(),
|
|
151
|
+
})
|
|
152
|
+
.passthrough()
|
|
153
|
+
.optional(),
|
|
154
|
+
}), (notification) => {
|
|
155
|
+
console.error("[mcp] Received task cancellation notification");
|
|
156
|
+
const params = notification.params ?? {};
|
|
157
|
+
const taskId = params.task_id ||
|
|
158
|
+
params.taskId ||
|
|
159
|
+
params.chat_id ||
|
|
160
|
+
extractTaskIdFromMeta(params.meta) ||
|
|
161
|
+
extractTaskIdFromMeta(params._meta);
|
|
162
|
+
this.emit("cancel", { taskId, reason: params.reason });
|
|
163
|
+
});
|
|
139
164
|
}
|
|
140
165
|
async ensureConnected() {
|
|
141
166
|
if (this.isConnected)
|
package/dist/mcpClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcpClient.js","sourceRoot":"","sources":["../src/mcpClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"mcpClient.js","sourceRoot":"","sources":["../src/mcpClient.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,MAAM,OAAO,SAAU,SAAQ,YAAY;IAcrB,MAAM;IAblB,MAAM,GAAkB,IAAI,CAAC;IAC7B,SAAS,GAAyC,IAAI,CAAC;IACvD,WAAW,GAAG,KAAK,CAAC;IACpB,YAAY,GAAG,KAAK,CAAC;IACrB,QAAQ,GAAG,KAAK,CAAC;IACzB,wEAAwE;IACxE,4EAA4E;IACpE,YAAY,GAAG,KAAK,CAAC;IAEtB,YAAY;QACjB,OAAQ,IAAI,CAAC,SAAiB,EAAE,UAAU,CAAC;IAC7C,CAAC;IAED,YAAoB,MAAuB;QACzC,KAAK,EAAE,CAAC;sBADU,MAAM;QAExB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,cAAc,MAAM,CAAC,IAAI,aAAa,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAClD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QAEtB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,MAAM,YAAY,GAAG,IAAI,CAAC;QAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,aAAa;QAEtC,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3C,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,OAAO,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gBACxD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBACtB,qEAAqE;oBACrE,qEAAqE;oBACrE,oEAAoE;oBACpE,2CAA2C;oBAC3C,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC3B,CAAC;gBACD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YAC3B,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,IAAI,IAAI,CAAC,QAAQ;oBAAE,MAAM;gBACzB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;gBACtE,OAAO,CAAC,KAAK,CACX,8BAA8B,IAAI,CAAC,MAAM,CAAC,IAAI,aAAa,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,OAAO,IAAI,KAAK,iBAAiB,KAAK,GAAG,IAAI,MAAM,CACtI,CAAC;gBACF,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC3D,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,yCAAyC;QACzC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;YACnC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,IAAI,6BAA6B,CAAC,GAAG,EAAE;YACtD,mBAAmB,EAAE;gBACnB,UAAU,EAAE,GAAG,EAAE,4CAA4C;gBAC7D,wBAAwB,EAAE,IAAI;gBAC9B,oBAAoB,EAAE,MAAM,EAAE,aAAa;gBAC3C,2BAA2B,EAAE,CAAC;aAC/B;SACF,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CACtB;YACE,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,OAAO;SACjB,EACD;YACE,YAAY,EAAE,EAAE;SACjB,CACF,CAAC;QAEF,2CAA2C;QAC3C,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE;YAC5B,OAAO,CAAC,KAAK,CAAC,uBAAuB,IAAI,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,CAAC;YAC/D,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,0BAA0B;QAC5C,CAAC,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,KAAK,EAAE,EAAE;YACjC,MAAM,GAAG,GAAG,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5C,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;YAE7C,IAAI,GAAG,CAAC,QAAQ,CAAC,gCAAgC,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAChF,OAAO,CAAC,KAAK,CAAC,gEAAgE,CAAC,CAAC;gBAChF,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBACzB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnB,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;oBACnC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;oBACnC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC1C,CAAC;gBACD,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE1C,+DAA+D;QAC/D,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAChC,CAAC,CAAC,MAAM,CAAC;YACP,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,8BAA8B,CAAC;YACjD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;gBACf,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;gBACnB,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;aACzB,CAAC;SACH,CAAC,EACF,CAAC,YAAY,EAAE,EAAE;YACf,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACrD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC,CACF,CAAC;QAEF,mDAAmD;QACnD,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAChC,CAAC,CAAC,MAAM,CAAC;YACP,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,yCAAyC,CAAC;YAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;gBACf,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;gBACtB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,mBAAmB;aAC1C,CAAC;SACH,CAAC,EACF,CAAC,YAAY,EAAE,EAAE;YACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACnD,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC;YACrD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5D,CAAC,CACF,CAAC;QACF,iDAAiD;QACjD,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAChC,CAAC,CAAC,MAAM,CAAC;YACP,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,qCAAqC,CAAC;YACxD,MAAM,EAAE,CAAC;iBACN,MAAM,CAAC;gBACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAC9B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAC7B,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;gBACxB,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;aAC1B,CAAC;iBACD,WAAW,EAAE;iBACb,QAAQ,EAAE;SACd,CAAC,EACF,CAAC,YAAY,EAAE,EAAE;YACf,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,IAAI,EAAE,CAAC;YACzC,MAAM,MAAM,GACV,MAAM,CAAC,OAAO;gBACd,MAAM,CAAC,MAAM;gBACb,MAAM,CAAC,OAAO;gBACd,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC;gBAClC,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACzD,CAAC,CACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,eAAe;QAC3B,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAC7B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,sDAAsD;YACtD,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC3B,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,GAAG,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;QACL,CAAC;QAED,uCAAuC;QACvC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,MAAM,GAAG,KAAK,EAAE,CAAC;YAC3C,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YACzD,MAAM,IAAI,GAAG,CAAC;QAChB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,IAAI,GAAQ,EAAE;QACzC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChE,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YAChC,IAAI;YACJ,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAAc,EAAE,MAAW;QAChD,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChE,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YAC7B,MAAM;YACN,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;YACnC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;YAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* telemetry.ts
|
|
3
|
+
*
|
|
4
|
+
* Renders the ACP session updates that carry no answer — the agent's
|
|
5
|
+
* reasoning, its execution plan, its token and cost counters — into something
|
|
6
|
+
* a human reading the workspace can act on.
|
|
7
|
+
*
|
|
8
|
+
* These updates used to be dropped on the floor, so the workspace saw the
|
|
9
|
+
* final answer and the tool calls and nothing of how the agent got there.
|
|
10
|
+
*/
|
|
11
|
+
/** The notification agentrq listens on for everything in this file. */
|
|
12
|
+
export const TELEMETRY_NOTIFICATION_METHOD = "notifications/claude/channel/telemetry";
|
|
13
|
+
/**
|
|
14
|
+
* The plan id a legacy `plan` update refers to.
|
|
15
|
+
*
|
|
16
|
+
* `plan_update` carries an id so an agent can run several plans at once; the
|
|
17
|
+
* older `plan` update predates that and always means the session's single
|
|
18
|
+
* plan. Giving it a fixed id puts both through one path — and keeps an agent
|
|
19
|
+
* that sends both from opening a second plan alongside the first.
|
|
20
|
+
*/
|
|
21
|
+
export const DEFAULT_PLAN_ID = "default";
|
|
22
|
+
/** How each plan entry status reads in the text fallback. */
|
|
23
|
+
const PLAN_STATUS_MARKERS = {
|
|
24
|
+
completed: "✅",
|
|
25
|
+
in_progress: "🔄",
|
|
26
|
+
pending: "⬜",
|
|
27
|
+
};
|
|
28
|
+
/** Wraps the entries of a legacy `plan` update as a normal plan. */
|
|
29
|
+
export function planFromEntries(entries) {
|
|
30
|
+
return { planId: DEFAULT_PLAN_ID, type: "items", entries };
|
|
31
|
+
}
|
|
32
|
+
/** Renders a plan as markdown, for clients that only show message text. */
|
|
33
|
+
export function formatPlan(plan) {
|
|
34
|
+
switch (plan.type) {
|
|
35
|
+
case "items":
|
|
36
|
+
return plan.entries
|
|
37
|
+
.map((entry) => `- ${PLAN_STATUS_MARKERS[entry.status] ?? PLAN_STATUS_MARKERS.pending} ${entry.content}`)
|
|
38
|
+
.join("\n");
|
|
39
|
+
case "file":
|
|
40
|
+
return `Plan: ${plan.uri}`;
|
|
41
|
+
case "markdown":
|
|
42
|
+
return plan.content;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/** The structured form of a plan, with ACP's `_meta` left behind. */
|
|
46
|
+
export function planTelemetryData(plan) {
|
|
47
|
+
const base = { planId: plan.planId, planType: plan.type };
|
|
48
|
+
switch (plan.type) {
|
|
49
|
+
case "items":
|
|
50
|
+
return {
|
|
51
|
+
...base,
|
|
52
|
+
entries: plan.entries.map((entry) => ({
|
|
53
|
+
content: entry.content,
|
|
54
|
+
priority: entry.priority,
|
|
55
|
+
status: entry.status,
|
|
56
|
+
})),
|
|
57
|
+
};
|
|
58
|
+
case "file":
|
|
59
|
+
return { ...base, uri: plan.uri };
|
|
60
|
+
case "markdown":
|
|
61
|
+
return { ...base, content: plan.content };
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/** Thousands-separated, so six-figure token counts stay readable. */
|
|
65
|
+
function formatTokens(tokens) {
|
|
66
|
+
return tokens.toLocaleString("en-US");
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Renders a cost with enough precision to be worth showing. Agent turns
|
|
70
|
+
* routinely cost fractions of a cent, and `0.00 USD` says nothing.
|
|
71
|
+
*/
|
|
72
|
+
function formatCost(cost) {
|
|
73
|
+
const amount = cost.amount !== 0 && Math.abs(cost.amount) < 0.01
|
|
74
|
+
? cost.amount.toFixed(4)
|
|
75
|
+
: cost.amount.toFixed(2);
|
|
76
|
+
return `${amount} ${cost.currency}`;
|
|
77
|
+
}
|
|
78
|
+
/** How much of the context window is in use, or undefined if unknowable. */
|
|
79
|
+
export function contextPercent(usage) {
|
|
80
|
+
if (usage.size <= 0)
|
|
81
|
+
return undefined;
|
|
82
|
+
return Math.round((usage.used / usage.size) * 100);
|
|
83
|
+
}
|
|
84
|
+
/** Renders a usage snapshot as a single line, for clients that only show text. */
|
|
85
|
+
export function formatUsage(usage) {
|
|
86
|
+
const percent = contextPercent(usage);
|
|
87
|
+
let context = `Context ${formatTokens(usage.used)} / ${formatTokens(usage.size)} tokens`;
|
|
88
|
+
if (percent !== undefined)
|
|
89
|
+
context += ` (${percent}%)`;
|
|
90
|
+
return usage.cost ? `${context} · ${formatCost(usage.cost)}` : context;
|
|
91
|
+
}
|
|
92
|
+
/** The structured form of a usage snapshot, with ACP's `_meta` left behind. */
|
|
93
|
+
export function usageTelemetryData(usage) {
|
|
94
|
+
const data = {
|
|
95
|
+
used: usage.used,
|
|
96
|
+
size: usage.size,
|
|
97
|
+
};
|
|
98
|
+
const percent = contextPercent(usage);
|
|
99
|
+
if (percent !== undefined)
|
|
100
|
+
data.percent = percent;
|
|
101
|
+
if (usage.cost) {
|
|
102
|
+
data.cost = { amount: usage.cost.amount, currency: usage.cost.currency };
|
|
103
|
+
}
|
|
104
|
+
return data;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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"}
|