Skip to content

Commit 91561e9

Browse files
committed
format, update golden
1 parent 5b632a2 commit 91561e9

14 files changed

Lines changed: 172 additions & 173 deletions

actions/setup/js/parse_antigravity_log.cjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ function parseAntigravityLog(logContent) {
7878
if (stats.models && typeof stats.models === "object") {
7979
for (const modelStats of Object.values(stats.models)) {
8080
if (modelStats && typeof modelStats === "object") {
81-
const { input_tokens = 0, output_tokens = 0 } = /** @type {any} */ (modelStats);
81+
const { input_tokens = 0, output_tokens = 0 } = /** @type {any} */ modelStats;
8282
totalInputTokens += input_tokens;
8383
totalOutputTokens += output_tokens;
8484
}

actions/setup/js/parse_antigravity_log.test.cjs

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,7 @@ describe("parse_antigravity_log.cjs", () => {
5656
});
5757

5858
it("should skip non-JSON lines mixed with valid JSONL", () => {
59-
const logContent = [
60-
"DEBUG: starting antigravity",
61-
JSON.stringify({ response: "Final answer", stats: {} }),
62-
"DEBUG: done",
63-
].join("\n");
59+
const logContent = ["DEBUG: starting antigravity", JSON.stringify({ response: "Final answer", stats: {} }), "DEBUG: done"].join("\n");
6460

6561
const result = parseAntigravityLog(logContent);
6662

@@ -69,10 +65,7 @@ describe("parse_antigravity_log.cjs", () => {
6965
});
7066

7167
it("should use the last valid JSON line as the final response", () => {
72-
const logContent = [
73-
JSON.stringify({ response: "Partial answer", stats: {} }),
74-
JSON.stringify({ response: "Complete final answer", stats: {} }),
75-
].join("\n");
68+
const logContent = [JSON.stringify({ response: "Partial answer", stats: {} }), JSON.stringify({ response: "Complete final answer", stats: {} })].join("\n");
7669

7770
const result = parseAntigravityLog(logContent);
7871

@@ -140,10 +133,7 @@ describe("parse_antigravity_log.cjs", () => {
140133
});
141134

142135
it("should skip JSON lines that do not have a response string field", () => {
143-
const logContent = [
144-
JSON.stringify({ type: "debug", message: "starting" }),
145-
JSON.stringify({ response: "Real response", stats: {} }),
146-
].join("\n");
136+
const logContent = [JSON.stringify({ type: "debug", message: "starting" }), JSON.stringify({ response: "Real response", stats: {} })].join("\n");
147137

148138
const result = parseAntigravityLog(logContent);
149139

actions/setup/js/unified_timeline.cjs

Lines changed: 88 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -131,9 +131,12 @@ function escMd(s) {
131131
*/
132132
function sourceLabel(source) {
133133
switch (source) {
134-
case SOURCE_GATEWAY: return "GW";
135-
case SOURCE_FIREWALL: return "FW";
136-
case SOURCE_AGENT: return "AG";
134+
case SOURCE_GATEWAY:
135+
return "GW";
136+
case SOURCE_FIREWALL:
137+
return "FW";
138+
case SOURCE_AGENT:
139+
return "AG";
137140
default:
138141
return source.length < 2 ? source.toUpperCase() : source.slice(0, 2).toUpperCase();
139142
}
@@ -145,15 +148,24 @@ function sourceLabel(source) {
145148
*/
146149
function eventIcon(kind) {
147150
switch (kind) {
148-
case KIND_TOOL_CALL: return "🔧";
149-
case KIND_DIFC_FILTERED: return "🚫";
150-
case KIND_GUARD_BLOCKED: return "🛡";
151-
case KIND_NET_ALLOWED: return "✓";
152-
case KIND_NET_BLOCKED: return "✗";
153-
case KIND_AGENT_TURN: return "💬";
154-
case KIND_AGENT_TOOL_START: return "▶";
155-
case KIND_AGENT_TOOL_DONE: return "■";
156-
default: return "·";
151+
case KIND_TOOL_CALL:
152+
return "🔧";
153+
case KIND_DIFC_FILTERED:
154+
return "🚫";
155+
case KIND_GUARD_BLOCKED:
156+
return "🛡";
157+
case KIND_NET_ALLOWED:
158+
return "✓";
159+
case KIND_NET_BLOCKED:
160+
return "✗";
161+
case KIND_AGENT_TURN:
162+
return "💬";
163+
case KIND_AGENT_TOOL_START:
164+
return "▶";
165+
case KIND_AGENT_TOOL_DONE:
166+
return "■";
167+
default:
168+
return "·";
157169
}
158170
}
159171

@@ -163,15 +175,24 @@ function eventIcon(kind) {
163175
*/
164176
function kindLabel(kind) {
165177
switch (kind) {
166-
case KIND_TOOL_CALL: return "tool_call";
167-
case KIND_DIFC_FILTERED: return "difc_filtered";
168-
case KIND_GUARD_BLOCKED: return "guard_blocked";
169-
case KIND_NET_ALLOWED: return "net_allowed";
170-
case KIND_NET_BLOCKED: return "net_blocked";
171-
case KIND_AGENT_TURN: return "agent_turn";
172-
case KIND_AGENT_TOOL_START: return "tool_start";
173-
case KIND_AGENT_TOOL_DONE: return "tool_done";
174-
default: return kind;
178+
case KIND_TOOL_CALL:
179+
return "tool_call";
180+
case KIND_DIFC_FILTERED:
181+
return "difc_filtered";
182+
case KIND_GUARD_BLOCKED:
183+
return "guard_blocked";
184+
case KIND_NET_ALLOWED:
185+
return "net_allowed";
186+
case KIND_NET_BLOCKED:
187+
return "net_blocked";
188+
case KIND_AGENT_TURN:
189+
return "agent_turn";
190+
case KIND_AGENT_TOOL_START:
191+
return "tool_start";
192+
case KIND_AGENT_TOOL_DONE:
193+
return "tool_done";
194+
default:
195+
return kind;
175196
}
176197
}
177198

@@ -297,11 +318,10 @@ function collectFirewallEvents(opts = {}) {
297318

298319
// Decision field: "TCP_TUNNEL:HIER_DIRECT" or "TCP_DENIED:..." etc.
299320
const decision = entry.decision ?? entry.squid_request_status ?? "";
300-
const blocked = /denied|blocked|reject/i.test(decision) ||
301-
(typeof status === "number" && status >= 400 && status < 600);
321+
const blocked = /denied|blocked|reject/i.test(decision) || (typeof status === "number" && status >= 400 && status < 600);
302322

303323
const detail = truncate([host, method].filter(Boolean).join(" "), 48);
304-
const statusStr = status ? String(status) : (blocked ? "blocked" : "allowed");
324+
const statusStr = status ? String(status) : blocked ? "blocked" : "allowed";
305325

306326
events.push({
307327
source: SOURCE_FIREWALL,
@@ -442,26 +462,55 @@ function buildUnifiedTimelineMarkdown(events) {
442462
if (!events || events.length === 0) return "";
443463

444464
// Build summary counts
445-
let gwCount = 0, fwCount = 0, agCount = 0;
446-
let toolCalls = 0, difcFiltered = 0, guardBlocked = 0;
447-
let netAllowed = 0, netBlocked = 0;
448-
let agentTurns = 0, agentToolStarts = 0, agentToolDones = 0;
465+
let gwCount = 0,
466+
fwCount = 0,
467+
agCount = 0;
468+
let toolCalls = 0,
469+
difcFiltered = 0,
470+
guardBlocked = 0;
471+
let netAllowed = 0,
472+
netBlocked = 0;
473+
let agentTurns = 0,
474+
agentToolStarts = 0,
475+
agentToolDones = 0;
449476

450477
for (const evt of events) {
451478
switch (evt.source) {
452-
case SOURCE_GATEWAY: gwCount++; break;
453-
case SOURCE_FIREWALL: fwCount++; break;
454-
case SOURCE_AGENT: agCount++; break;
479+
case SOURCE_GATEWAY:
480+
gwCount++;
481+
break;
482+
case SOURCE_FIREWALL:
483+
fwCount++;
484+
break;
485+
case SOURCE_AGENT:
486+
agCount++;
487+
break;
455488
}
456489
switch (evt.kind) {
457-
case KIND_TOOL_CALL: toolCalls++; break;
458-
case KIND_DIFC_FILTERED: difcFiltered++; break;
459-
case KIND_GUARD_BLOCKED: guardBlocked++; break;
460-
case KIND_NET_ALLOWED: netAllowed++; break;
461-
case KIND_NET_BLOCKED: netBlocked++; break;
462-
case KIND_AGENT_TURN: agentTurns++; break;
463-
case KIND_AGENT_TOOL_START: agentToolStarts++; break;
464-
case KIND_AGENT_TOOL_DONE: agentToolDones++; break;
490+
case KIND_TOOL_CALL:
491+
toolCalls++;
492+
break;
493+
case KIND_DIFC_FILTERED:
494+
difcFiltered++;
495+
break;
496+
case KIND_GUARD_BLOCKED:
497+
guardBlocked++;
498+
break;
499+
case KIND_NET_ALLOWED:
500+
netAllowed++;
501+
break;
502+
case KIND_NET_BLOCKED:
503+
netBlocked++;
504+
break;
505+
case KIND_AGENT_TURN:
506+
agentTurns++;
507+
break;
508+
case KIND_AGENT_TOOL_START:
509+
agentToolStarts++;
510+
break;
511+
case KIND_AGENT_TOOL_DONE:
512+
agentToolDones++;
513+
break;
465514
}
466515
}
467516

actions/setup/js/unified_timeline.test.cjs

Lines changed: 13 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -177,18 +177,9 @@ describe("sourceLabel", () => {
177177
});
178178

179179
describe("eventIcon", () => {
180-
const allKinds = [
181-
KIND_TOOL_CALL,
182-
KIND_DIFC_FILTERED,
183-
KIND_GUARD_BLOCKED,
184-
KIND_NET_ALLOWED,
185-
KIND_NET_BLOCKED,
186-
KIND_AGENT_TURN,
187-
KIND_AGENT_TOOL_START,
188-
KIND_AGENT_TOOL_DONE,
189-
];
190-
191-
it.each(allKinds)("returns non-default icon for %s", (kind) => {
180+
const allKinds = [KIND_TOOL_CALL, KIND_DIFC_FILTERED, KIND_GUARD_BLOCKED, KIND_NET_ALLOWED, KIND_NET_BLOCKED, KIND_AGENT_TURN, KIND_AGENT_TOOL_START, KIND_AGENT_TOOL_DONE];
181+
182+
it.each(allKinds)("returns non-default icon for %s", kind => {
192183
const icon = eventIcon(kind);
193184
expect(icon).not.toBe("·");
194185
expect(icon.length).toBeGreaterThan(0);
@@ -343,19 +334,14 @@ describe("collectFirewallEvents", () => {
343334

344335
it("classifies entries with 4xx/5xx HTTP status as net_blocked", () => {
345336
const auditPath = path.join(tmpDir, "audit.jsonl");
346-
writeJsonl(auditPath, [
347-
{ ts: 1705312800.0, host: "blocked.example.com", status: 403 },
348-
]);
337+
writeJsonl(auditPath, [{ ts: 1705312800.0, host: "blocked.example.com", status: 403 }]);
349338
const events = collectFirewallEvents({ auditJsonlPath: auditPath });
350339
expect(events[0].kind).toBe(KIND_NET_BLOCKED);
351340
});
352341

353342
it("skips entries with missing ts", () => {
354343
const auditPath = path.join(tmpDir, "audit.jsonl");
355-
writeJsonl(auditPath, [
356-
{ host: "no-ts.example.com" },
357-
{ ts: 1705312800.0, host: "ok.example.com" },
358-
]);
344+
writeJsonl(auditPath, [{ host: "no-ts.example.com" }, { ts: 1705312800.0, host: "ok.example.com" }]);
359345
const events = collectFirewallEvents({ auditJsonlPath: auditPath });
360346
expect(events).toHaveLength(1);
361347
});
@@ -486,9 +472,7 @@ describe("collectAgentEvents", () => {
486472
const sessionDir = path.join(tmpDir, "sandbox", "agent", "logs", "copilot-session-state", "uuid-xyz");
487473
fs.mkdirSync(sessionDir, { recursive: true });
488474
const eventsPath = path.join(sessionDir, "events.jsonl");
489-
writeJsonl(eventsPath, [
490-
{ type: "user.message", id: "m1", timestamp: "2024-01-15T10:00:01Z", data: {} },
491-
]);
475+
writeJsonl(eventsPath, [{ type: "user.message", id: "m1", timestamp: "2024-01-15T10:00:01Z", data: {} }]);
492476
const events = collectAgentEvents({ logDir: tmpDir });
493477
expect(events).toHaveLength(1);
494478
});
@@ -512,21 +496,15 @@ describe("collectUnifiedTimelineEvents", () => {
512496
it("merges and sorts events from all three sources", () => {
513497
// Gateway at t+2s
514498
const gwPath = path.join(tmpDir, "gateway.jsonl");
515-
writeJsonl(gwPath, [
516-
{ timestamp: "2024-01-15T10:00:02Z", event: "tool_call", server_name: "srv", tool_name: "get_file" },
517-
]);
499+
writeJsonl(gwPath, [{ timestamp: "2024-01-15T10:00:02Z", event: "tool_call", server_name: "srv", tool_name: "get_file" }]);
518500

519501
// Firewall at t+3s
520502
const auditPath = path.join(tmpDir, "audit.jsonl");
521-
writeJsonl(auditPath, [
522-
{ ts: new Date("2024-01-15T10:00:03Z").getTime() / 1000, host: "api.example.com", decision: "TCP_TUNNEL:HIER_DIRECT" },
523-
]);
503+
writeJsonl(auditPath, [{ ts: new Date("2024-01-15T10:00:03Z").getTime() / 1000, host: "api.example.com", decision: "TCP_TUNNEL:HIER_DIRECT" }]);
524504

525505
// Agent at t+1s
526506
const eventsPath = path.join(tmpDir, "events.jsonl");
527-
writeJsonl(eventsPath, [
528-
{ type: "user.message", id: "m1", timestamp: "2024-01-15T10:00:01Z", data: {} },
529-
]);
507+
writeJsonl(eventsPath, [{ type: "user.message", id: "m1", timestamp: "2024-01-15T10:00:01Z", data: {} }]);
530508

531509
const events = collectUnifiedTimelineEvents({
532510
gatewayJsonlPath: gwPath,
@@ -557,9 +535,7 @@ describe("buildUnifiedTimelineMarkdown", () => {
557535
});
558536

559537
it("wraps output in a <details> block", () => {
560-
const events = [
561-
{ source: SOURCE_GATEWAY, kind: KIND_TOOL_CALL, time: new Date("2024-01-15T10:00:02Z"), detail: "srv/get_file", status: "success" },
562-
];
538+
const events = [{ source: SOURCE_GATEWAY, kind: KIND_TOOL_CALL, time: new Date("2024-01-15T10:00:02Z"), detail: "srv/get_file", status: "success" }];
563539
const md = buildUnifiedTimelineMarkdown(events);
564540
expect(md).toContain("<details>");
565541
expect(md).toContain("</details>");
@@ -579,9 +555,7 @@ describe("buildUnifiedTimelineMarkdown", () => {
579555
});
580556

581557
it("contains a Markdown table header row", () => {
582-
const events = [
583-
{ source: SOURCE_AGENT, kind: KIND_AGENT_TURN, time: new Date("2024-01-15T10:00:01Z"), detail: "turn 1", status: "" },
584-
];
558+
const events = [{ source: SOURCE_AGENT, kind: KIND_AGENT_TURN, time: new Date("2024-01-15T10:00:01Z"), detail: "turn 1", status: "" }];
585559
const md = buildUnifiedTimelineMarkdown(events);
586560
expect(md).toContain("| Time | Src | Kind | Detail | Status |");
587561
});
@@ -602,9 +576,7 @@ describe("buildUnifiedTimelineMarkdown", () => {
602576
});
603577

604578
it("escapes pipe characters in detail/status to avoid breaking Markdown tables", () => {
605-
const events = [
606-
{ source: SOURCE_GATEWAY, kind: KIND_TOOL_CALL, time: new Date("2024-01-15T10:00:00Z"), detail: "srv|tool", status: "ok|extra" },
607-
];
579+
const events = [{ source: SOURCE_GATEWAY, kind: KIND_TOOL_CALL, time: new Date("2024-01-15T10:00:00Z"), detail: "srv|tool", status: "ok|extra" }];
608580
const md = buildUnifiedTimelineMarkdown(events);
609581
// After escaping, literal | inside cells should not appear
610582
const rows = md.split("\n").filter(l => l.startsWith("| 10:"));
@@ -631,9 +603,7 @@ describe("generateUnifiedTimelineSummary", () => {
631603

632604
it("renders a non-empty summary when at least one source has events", () => {
633605
const eventsPath = path.join(tmpDir, "events.jsonl");
634-
writeJsonl(eventsPath, [
635-
{ type: "user.message", id: "m1", timestamp: "2024-01-15T10:00:01Z", data: {} },
636-
]);
606+
writeJsonl(eventsPath, [{ type: "user.message", id: "m1", timestamp: "2024-01-15T10:00:01Z", data: {} }]);
637607
const result = generateUnifiedTimelineSummary({
638608
gatewayJsonlPath: "/nonexistent",
639609
rpcMessagesPath: "/nonexistent2",

pkg/workflow/schemas/awf-config.schema.json

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,7 @@
6161
},
6262
"anthropicCacheTailTtl": {
6363
"type": "string",
64-
"enum": [
65-
"5m",
66-
"1h"
67-
],
64+
"enum": ["5m", "1h"],
6865
"description": "TTL for Anthropic cache tail optimization. Only applies when anthropicAutoCache is enabled. Allowed values: \"5m\" or \"1h\"."
6966
},
7067
"maxEffectiveTokens": {
@@ -96,9 +93,7 @@
9693
},
9794
"strategy": {
9895
"type": "string",
99-
"enum": [
100-
"middle_power"
101-
],
96+
"enum": ["middle_power"],
10297
"description": "Fallback selection strategy. Currently only 'middle_power' is supported."
10398
}
10499
}
@@ -380,12 +375,7 @@
380375
"properties": {
381376
"logLevel": {
382377
"type": "string",
383-
"enum": [
384-
"debug",
385-
"info",
386-
"warn",
387-
"error"
388-
],
378+
"enum": ["debug", "info", "warn", "error"],
389379
"description": "Log verbosity level. Defaults to \"info\"."
390380
},
391381
"diagnosticLogs": {

0 commit comments

Comments
 (0)