fix: expose trace pagination in cli and otel (#1687)

This commit is contained in:
Lyon
2026-06-20 11:32:13 +08:00
committed by GitHub
parent c410a711db
commit ecbb13cdf4
2 changed files with 38 additions and 3 deletions
+24 -2
View File
@@ -1007,7 +1007,7 @@ async function agentCommand(context: any) {
}
if (subcommand === "trace") {
const traceId = requiredTraceId(context.rest[1] ?? context.parsed.traceId);
const pathName = `/v1/agent/traces/${encodeURIComponent(traceId)}`;
const pathName = `/v1/agent/traces/${encodeURIComponent(traceId)}${agentTraceQueryString(context.parsed)}`;
const turnPath = `/v1/agent/turns/${encodeURIComponent(traceId)}`;
const turnResponse = await requestJson({ ...context, method: "GET", path: turnPath });
const response = await requestJson({ ...context, method: "GET", path: pathName });
@@ -1376,7 +1376,7 @@ function agentHelp() {
"composer submit --message TEXT|--message-file PATH [--profile NAME] [default: auto turn/steer]",
"send --message TEXT --wait [--timeout-ms N] [--poll-interval-ms N]",
"result TRACE_ID [--full]",
"trace TRACE_ID [--render web] [--limit N] [--full]",
"trace TRACE_ID [--render web] [--after-seq N|--since-seq N] [--limit N|--tail N] [--full]",
"inspect --trace-id TRACE_ID|--session-id ID|--thread-id ID",
"steer TRACE_ID --message TEXT|--message-file PATH [--session-id ID] [--thread-id ID]",
"cancel TRACE_ID"
@@ -1384,6 +1384,28 @@ function agentHelp() {
});
}
function agentTraceQueryString(parsed: any) {
const query = new URLSearchParams();
const sinceSeq = nonNegativeOption(parsed.sinceSeq ?? parsed.afterSeq ?? parsed.after);
if (sinceSeq !== undefined) query.set("sinceSeq", String(sinceSeq));
const limit = positiveOption(parsed.limit ?? parsed.tail);
if (limit !== undefined) query.set("limit", String(limit));
const text = query.toString();
return text ? `?${text}` : "";
}
function nonNegativeOption(value: unknown) {
const parsed = numberOption(value);
if (parsed === undefined || parsed < 0) return undefined;
return Math.trunc(parsed);
}
function positiveOption(value: unknown) {
const parsed = numberOption(value);
if (parsed === undefined || parsed <= 0) return undefined;
return Math.trunc(parsed);
}
async function sessionCommand(context: any) {
const subcommand = context.rest[0] || "list";
if (wantsHelp(context)) return sessionHelp();