Audit core.warning/core.error usage (#269)

* Stop using command-based logs for warnings and errors

Co-authored-by: Cursor <cursoragent@cursor.com>

* revert

* tweak

* de-noise

* Remove redundant ts() timestamp prefix from log calls

* Restore timestamped logging and refine debug output routing.

Bring back timestamp prefixes for standard logs and make log.debug emit via core.debug when runner debug is enabled, while still surfacing debug lines for --debug runs.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Mateusz Burzyński <mateuszburzynski@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: pullfrog[bot] <226033991+pullfrog[bot]@users.noreply.github.com>
Co-authored-by: Colin McDonnell <colinmcd94@gmail.com>
This commit is contained in:
pullfrog[bot]
2026-02-19 23:11:47 +00:00
committed by pullfrog[bot]
parent 4ee1ae89a5
commit 70f1c47a28
20 changed files with 296 additions and 286 deletions
+6 -7
View File
@@ -173,8 +173,7 @@ export const claude = agent({
onStderr: (chunk) => { onStderr: (chunk) => {
const trimmed = chunk.trim(); const trimmed = chunk.trim();
if (trimmed) { if (trimmed) {
log.debug(`[claude stderr] ${trimmed}`); log.info(`[claude stderr] ${trimmed}`);
log.warning(trimmed);
finalOutput += trimmed + "\n"; finalOutput += trimmed + "\n";
} }
}, },
@@ -267,7 +266,7 @@ const messageHandlers: SDKMessageHandlers = {
// Log bash output in a collapsed group // Log bash output in a collapsed group
log.startGroup(`bash output`); log.startGroup(`bash output`);
if (content.is_error) { if (content.is_error) {
log.warning(outputContent); log.info(outputContent);
} else { } else {
log.info(outputContent); log.info(outputContent);
} }
@@ -275,7 +274,7 @@ const messageHandlers: SDKMessageHandlers = {
// Clean up the tracked ID // Clean up the tracked ID
bashToolIds.delete(toolUseId); bashToolIds.delete(toolUseId);
} else if (content.is_error) { } else if (content.is_error) {
log.warning(`Tool error: ${outputContent}`); log.info(`Tool error: ${outputContent}`);
} else { } else {
// log successful non-bash tool result at debug level // log successful non-bash tool result at debug level
log.debug(`tool output: ${outputContent}`); log.debug(`tool output: ${outputContent}`);
@@ -310,11 +309,11 @@ const messageHandlers: SDKMessageHandlers = {
], ],
]); ]);
} else if (data.subtype === "error_max_turns") { } else if (data.subtype === "error_max_turns") {
log.error(`Max turns reached: ${JSON.stringify(data)}`); log.info(`Max turns reached: ${JSON.stringify(data)}`);
} else if (data.subtype === "error_during_execution") { } else if (data.subtype === "error_during_execution") {
log.error(`Execution error: ${JSON.stringify(data)}`); log.info(`Execution error: ${JSON.stringify(data)}`);
} else { } else {
log.error(`Failed: ${JSON.stringify(data)}`); log.info(`Failed: ${JSON.stringify(data)}`);
} }
}, },
system: () => {}, system: () => {},
+7 -8
View File
@@ -43,7 +43,7 @@ async function isModelAvailable(ctx: { apiKey: string; model: string }): Promise
signal: AbortSignal.timeout(10_000), signal: AbortSignal.timeout(10_000),
}); });
if (!response.ok) { if (!response.ok) {
log.warning( log.info(
`failed to list models (HTTP ${response.status}), falling back to ${FALLBACK_MODEL}` `failed to list models (HTTP ${response.status}), falling back to ${FALLBACK_MODEL}`
); );
return false; return false;
@@ -51,7 +51,7 @@ async function isModelAvailable(ctx: { apiKey: string; model: string }): Promise
const body = (await response.json()) as { data: Array<{ id: string }> }; const body = (await response.json()) as { data: Array<{ id: string }> };
return body.data.some((m) => m.id === ctx.model); return body.data.some((m) => m.id === ctx.model);
} catch (err) { } catch (err) {
log.warning(`failed to list models: ${err}, falling back to ${FALLBACK_MODEL}`); log.info(`failed to list models: ${err}, falling back to ${FALLBACK_MODEL}`);
return false; return false;
} }
} }
@@ -262,8 +262,7 @@ export const codex = agent({
onStderr: (chunk) => { onStderr: (chunk) => {
const trimmed = chunk.trim(); const trimmed = chunk.trim();
if (trimmed) { if (trimmed) {
log.debug(`[codex stderr] ${trimmed}`); log.info(`[codex stderr] ${trimmed}`);
log.warning(trimmed);
finalOutput += trimmed + "\n"; finalOutput += trimmed + "\n";
} }
}, },
@@ -319,7 +318,7 @@ const messageHandlers: {
]); ]);
}, },
"turn.failed": (event) => { "turn.failed": (event) => {
log.error(`Turn failed: ${event.error.message}`); log.info(`Turn failed: ${event.error.message}`);
}, },
"item.started": (event, commandExecutionIds, thinkingTimer) => { "item.started": (event, commandExecutionIds, thinkingTimer) => {
const item = event.item; const item = event.item;
@@ -362,7 +361,7 @@ const messageHandlers: {
thinkingTimer.markToolResult(); thinkingTimer.markToolResult();
log.startGroup(`bash output`); log.startGroup(`bash output`);
if (item.status === "failed" || (item.exit_code !== undefined && item.exit_code !== 0)) { if (item.status === "failed" || (item.exit_code !== undefined && item.exit_code !== 0)) {
log.warning(item.aggregated_output || "Command failed"); log.info(item.aggregated_output || "Command failed");
} else { } else {
log.info(item.aggregated_output || ""); log.info(item.aggregated_output || "");
} }
@@ -372,7 +371,7 @@ const messageHandlers: {
} else if (item.type === "mcp_tool_call") { } else if (item.type === "mcp_tool_call") {
thinkingTimer.markToolResult(); thinkingTimer.markToolResult();
if (item.status === "failed" && item.error) { if (item.status === "failed" && item.error) {
log.warning(`MCP tool call failed: ${item.error.message}`); log.info(`MCP tool call failed: ${item.error.message}`);
} else if ((item as any).output) { } else if ((item as any).output) {
// log successful MCP tool call output so it appears in captured output // log successful MCP tool call output so it appears in captured output
const output = (item as any).output; const output = (item as any).output;
@@ -388,6 +387,6 @@ const messageHandlers: {
} }
}, },
error: (event) => { error: (event) => {
log.error(`Error: ${event.message}`); log.info(`Error: ${event.message}`);
}, },
}; };
+3 -3
View File
@@ -210,7 +210,7 @@ export const cursor = agent({
const result = event.tool_call?.mcpToolCall?.result?.success; const result = event.tool_call?.mcpToolCall?.result?.success;
const isError = result?.isError; const isError = result?.isError;
if (isError) { if (isError) {
log.warning("Tool call failed"); log.info("Tool call failed");
} else { } else {
// log successful tool result so it appears in output // log successful tool result so it appears in output
// handle both formats: { text: string } or { text: { text: string } } // handle both formats: { text: string } or { text: { text: string } }
@@ -320,12 +320,12 @@ export const cursor = agent({
const text = data.toString(); const text = data.toString();
stderr += text; stderr += text;
process.stderr.write(text); process.stderr.write(text);
log.warning(text); log.info(text);
}); });
child.on("close", async (code, signal) => { child.on("close", async (code, signal) => {
if (signal) { if (signal) {
log.warning(`Cursor CLI terminated by signal: ${signal}`); log.info(`Cursor CLI terminated by signal: ${signal}`);
} }
const duration = ((performance.now() - startTime) / 1000).toFixed(1); const duration = ((performance.now() - startTime) / 1000).toFixed(1);
+4 -5
View File
@@ -149,7 +149,7 @@ const messageHandlers = {
if (event.status === "error") { if (event.status === "error") {
const errorMsg = const errorMsg =
typeof event.output === "string" ? event.output : JSON.stringify(event.output); typeof event.output === "string" ? event.output : JSON.stringify(event.output);
log.warning(`Tool call failed: ${errorMsg}`); log.info(`Tool call failed: ${errorMsg}`);
} else if (event.output) { } else if (event.output) {
// log successful tool result so it appears in output // log successful tool result so it appears in output
const outputStr = const outputStr =
@@ -270,8 +270,7 @@ export const gemini = agent({
onStderr: (chunk) => { onStderr: (chunk) => {
const trimmed = chunk.trim(); const trimmed = chunk.trim();
if (trimmed) { if (trimmed) {
log.debug(`[gemini stderr] ${trimmed}`); log.info(`[gemini stderr] ${trimmed}`);
log.warning(trimmed);
finalOutput += trimmed + "\n"; finalOutput += trimmed + "\n";
} }
}, },
@@ -286,7 +285,7 @@ export const gemini = agent({
// retry on transient API errors (500, 503, INTERNAL, etc.) // retry on transient API errors (500, 503, INTERNAL, etc.)
if (attempt < MAX_ATTEMPTS && isTransientApiError(errorMessage)) { if (attempt < MAX_ATTEMPTS && isTransientApiError(errorMessage)) {
log.warning( log.info(
`» transient Gemini API error on attempt ${attempt}/${MAX_ATTEMPTS}, retrying in ${RETRY_DELAY_MS / 1000}s...` `» transient Gemini API error on attempt ${attempt}/${MAX_ATTEMPTS}, retrying in ${RETRY_DELAY_MS / 1000}s...`
); );
await new Promise((resolve) => setTimeout(resolve, RETRY_DELAY_MS)); await new Promise((resolve) => setTimeout(resolve, RETRY_DELAY_MS));
@@ -313,7 +312,7 @@ export const gemini = agent({
// retry on transient API errors from spawn exceptions too // retry on transient API errors from spawn exceptions too
if (attempt < MAX_ATTEMPTS && isTransientApiError(errorMessage)) { if (attempt < MAX_ATTEMPTS && isTransientApiError(errorMessage)) {
log.warning( log.info(
`» transient Gemini API error on attempt ${attempt}/${MAX_ATTEMPTS}, retrying in ${RETRY_DELAY_MS / 1000}s...` `» transient Gemini API error on attempt ${attempt}/${MAX_ATTEMPTS}, retrying in ${RETRY_DELAY_MS / 1000}s...`
); );
await new Promise((resolve) => setTimeout(resolve, RETRY_DELAY_MS)); await new Promise((resolve) => setTimeout(resolve, RETRY_DELAY_MS));
+10 -10
View File
@@ -154,7 +154,7 @@ export const opencode = agent({
activeToolCalls > 0 activeToolCalls > 0
? ` (waiting for ${activeToolCalls} tool call${activeToolCalls > 1 ? "s" : ""})` ? ` (waiting for ${activeToolCalls} tool call${activeToolCalls > 1 ? "s" : ""})`
: " (OpenCode may be processing internally - LLM calls, planning, etc.)"; : " (OpenCode may be processing internally - LLM calls, planning, etc.)";
log.warning( log.info(
`» no activity for ${(timeSinceLastActivity / 1000).toFixed(1)}s${toolCallInfo} (${eventCount} events processed so far)` `» no activity for ${(timeSinceLastActivity / 1000).toFixed(1)}s${toolCallInfo} (${eventCount} events processed so far)`
); );
} }
@@ -186,7 +186,7 @@ export const opencode = agent({
const providerError = detectProviderError(trimmed); const providerError = detectProviderError(trimmed);
if (providerError) { if (providerError) {
lastProviderError = providerError; lastProviderError = providerError;
log.error(`» provider error detected (${providerError}): ${trimmed.substring(0, 500)}`); log.info(`» provider error detected (${providerError}): ${trimmed.substring(0, 500)}`);
} else { } else {
// OpenCode's --print-logs output goes to stderr. demote internal // OpenCode's --print-logs output goes to stderr. demote internal
// INFO/DEBUG bus traffic to debug so it doesn't drown out tool // INFO/DEBUG bus traffic to debug so it doesn't drown out tool
@@ -207,9 +207,9 @@ export const opencode = agent({
const diagnosis = lastProviderError const diagnosis = lastProviderError
? `provider error: ${lastProviderError}` ? `provider error: ${lastProviderError}`
: "unknown cause (no stdout events received)"; : "unknown cause (no stdout events received)";
log.error(`» OpenCode produced 0 events (${diagnosis})`); log.info(`» OpenCode produced 0 events (${diagnosis})`);
if (stderrContext) { if (stderrContext) {
log.error(`» last stderr output:\n${stderrContext}`); log.info(`» last stderr output:\n${stderrContext}`);
} }
} }
@@ -263,12 +263,12 @@ export const opencode = agent({
? "OpenCode produced 0 stdout events - check if the model provider is reachable" ? "OpenCode produced 0 stdout events - check if the model provider is reachable"
: `${eventCount} events were processed before the hang`; : `${eventCount} events were processed before the hang`;
log.error( log.info(
`» OpenCode ${isActivityTimeout ? "hung" : "failed"} after ${(duration / 1000).toFixed(1)}s: ${errorMessage}` `» OpenCode ${isActivityTimeout ? "hung" : "failed"} after ${(duration / 1000).toFixed(1)}s: ${errorMessage}`
); );
log.error(`» diagnosis: ${diagnosis}`); log.info(`» diagnosis: ${diagnosis}`);
if (stderrContext) { if (stderrContext) {
log.error( log.info(
`» recent stderr (last ${Math.min(recentStderr.length, 10)} lines):\n${stderrContext}` `» recent stderr (last ${Math.min(recentStderr.length, 10)} lines):\n${stderrContext}`
); );
} }
@@ -600,7 +600,7 @@ const messageHandlers = {
log.debug(` output: ${typeof output === "string" ? output : JSON.stringify(output)}`); log.debug(` output: ${typeof output === "string" ? output : JSON.stringify(output)}`);
} }
if (toolDuration > 5000) { if (toolDuration > 5000) {
log.warning( log.info(
`» ⚠️ tool call took ${(toolDuration / 1000).toFixed(1)}s - this may indicate network latency or slow processing` `» ⚠️ tool call took ${(toolDuration / 1000).toFixed(1)}s - this may indicate network latency or slow processing`
); );
} }
@@ -608,7 +608,7 @@ const messageHandlers = {
} }
if (status === "error") { if (status === "error") {
const errorMsg = typeof output === "string" ? output : JSON.stringify(output); const errorMsg = typeof output === "string" ? output : JSON.stringify(output);
log.error(`» ❌ tool call failed: ${errorMsg}`); log.info(`» ❌ tool call failed: ${errorMsg}`);
} else if (output) { } else if (output) {
// log successful tool result so it appears in captured output // log successful tool result so it appears in captured output
const outputStr = typeof output === "string" ? output : JSON.stringify(output); const outputStr = typeof output === "string" ? output : JSON.stringify(output);
@@ -624,7 +624,7 @@ const messageHandlers = {
); );
if (event.status === "error") { if (event.status === "error") {
log.error(`» OpenCode CLI failed: ${JSON.stringify(event)}`); log.info(`» OpenCode CLI failed: ${JSON.stringify(event)}`);
} else { } else {
// log tokens once at the end (use stats from result if available, otherwise use accumulated from step_finish) // log tokens once at the end (use stats from result if available, otherwise use accumulated from step_finish)
const inputTokens = event.stats?.input_tokens || accumulatedTokens.input || 0; const inputTokens = event.stats?.input_tokens || accumulatedTokens.input || 0;
+133 -134
View File
@@ -451,7 +451,7 @@ var require_tunnel = __commonJS({
connectOptions.headers = connectOptions.headers || {}; connectOptions.headers = connectOptions.headers || {};
connectOptions.headers["Proxy-Authorization"] = "Basic " + new Buffer(connectOptions.proxyAuth).toString("base64"); connectOptions.headers["Proxy-Authorization"] = "Basic " + new Buffer(connectOptions.proxyAuth).toString("base64");
} }
debug2("making CONNECT request"); debug3("making CONNECT request");
var connectReq = self2.request(connectOptions); var connectReq = self2.request(connectOptions);
connectReq.useChunkedEncodingByDefault = false; connectReq.useChunkedEncodingByDefault = false;
connectReq.once("response", onResponse); connectReq.once("response", onResponse);
@@ -471,7 +471,7 @@ var require_tunnel = __commonJS({
connectReq.removeAllListeners(); connectReq.removeAllListeners();
socket.removeAllListeners(); socket.removeAllListeners();
if (res.statusCode !== 200) { if (res.statusCode !== 200) {
debug2( debug3(
"tunneling socket could not be established, statusCode=%d", "tunneling socket could not be established, statusCode=%d",
res.statusCode res.statusCode
); );
@@ -483,7 +483,7 @@ var require_tunnel = __commonJS({
return; return;
} }
if (head.length > 0) { if (head.length > 0) {
debug2("got illegal response body from proxy"); debug3("got illegal response body from proxy");
socket.destroy(); socket.destroy();
var error49 = new Error("got illegal response body from proxy"); var error49 = new Error("got illegal response body from proxy");
error49.code = "ECONNRESET"; error49.code = "ECONNRESET";
@@ -491,13 +491,13 @@ var require_tunnel = __commonJS({
self2.removeSocket(placeholder); self2.removeSocket(placeholder);
return; return;
} }
debug2("tunneling connection has established"); debug3("tunneling connection has established");
self2.sockets[self2.sockets.indexOf(placeholder)] = socket; self2.sockets[self2.sockets.indexOf(placeholder)] = socket;
return cb(socket); return cb(socket);
} }
function onError(cause) { function onError(cause) {
connectReq.removeAllListeners(); connectReq.removeAllListeners();
debug2( debug3(
"tunneling socket could not be established, cause=%s\n", "tunneling socket could not be established, cause=%s\n",
cause.message, cause.message,
cause.stack cause.stack
@@ -559,9 +559,9 @@ var require_tunnel = __commonJS({
} }
return target; return target;
} }
var debug2; var debug3;
if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) {
debug2 = function() { debug3 = function() {
var args2 = Array.prototype.slice.call(arguments); var args2 = Array.prototype.slice.call(arguments);
if (typeof args2[0] === "string") { if (typeof args2[0] === "string") {
args2[0] = "TUNNEL: " + args2[0]; args2[0] = "TUNNEL: " + args2[0];
@@ -571,10 +571,10 @@ var require_tunnel = __commonJS({
console.error.apply(console, args2); console.error.apply(console, args2);
}; };
} else { } else {
debug2 = function() { debug3 = function() {
}; };
} }
exports.debug = debug2; exports.debug = debug3;
} }
}); });
@@ -19785,10 +19785,10 @@ Support boolean input list: \`true | True | TRUE | false | False | FALSE\``);
return process.env["RUNNER_DEBUG"] === "1"; return process.env["RUNNER_DEBUG"] === "1";
} }
exports.isDebug = isDebug2; exports.isDebug = isDebug2;
function debug2(message) { function debug3(message) {
(0, command_1.issueCommand)("debug", {}, message); (0, command_1.issueCommand)("debug", {}, message);
} }
exports.debug = debug2; exports.debug = debug3;
function error49(message, properties = {}) { function error49(message, properties = {}) {
(0, command_1.issueCommand)("error", (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message); (0, command_1.issueCommand)("error", (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message);
} }
@@ -75490,11 +75490,11 @@ var require_common = __commonJS({
let enableOverride = null; let enableOverride = null;
let namespacesCache; let namespacesCache;
let enabledCache; let enabledCache;
function debug2(...args2) { function debug3(...args2) {
if (!debug2.enabled) { if (!debug3.enabled) {
return; return;
} }
const self2 = debug2; const self2 = debug3;
const curr = Number(/* @__PURE__ */ new Date()); const curr = Number(/* @__PURE__ */ new Date());
const ms = curr - (prevTime || curr); const ms = curr - (prevTime || curr);
self2.diff = ms; self2.diff = ms;
@@ -75524,12 +75524,12 @@ var require_common = __commonJS({
const logFn = self2.log || createDebug.log; const logFn = self2.log || createDebug.log;
logFn.apply(self2, args2); logFn.apply(self2, args2);
} }
debug2.namespace = namespace; debug3.namespace = namespace;
debug2.useColors = createDebug.useColors(); debug3.useColors = createDebug.useColors();
debug2.color = createDebug.selectColor(namespace); debug3.color = createDebug.selectColor(namespace);
debug2.extend = extend3; debug3.extend = extend3;
debug2.destroy = createDebug.destroy; debug3.destroy = createDebug.destroy;
Object.defineProperty(debug2, "enabled", { Object.defineProperty(debug3, "enabled", {
enumerable: true, enumerable: true,
configurable: false, configurable: false,
get: () => { get: () => {
@@ -75547,9 +75547,9 @@ var require_common = __commonJS({
} }
}); });
if (typeof createDebug.init === "function") { if (typeof createDebug.init === "function") {
createDebug.init(debug2); createDebug.init(debug3);
} }
return debug2; return debug3;
} }
function extend3(namespace, delimiter) { function extend3(namespace, delimiter) {
const newDebug = createDebug(this.namespace + (typeof delimiter === "undefined" ? ":" : delimiter) + namespace); const newDebug = createDebug(this.namespace + (typeof delimiter === "undefined" ? ":" : delimiter) + namespace);
@@ -75959,11 +75959,11 @@ var require_node = __commonJS({
function load() { function load() {
return process.env.DEBUG; return process.env.DEBUG;
} }
function init(debug2) { function init(debug3) {
debug2.inspectOpts = {}; debug3.inspectOpts = {};
const keys = Object.keys(exports.inspectOpts); const keys = Object.keys(exports.inspectOpts);
for (let i = 0; i < keys.length; i++) { for (let i = 0; i < keys.length; i++) {
debug2.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; debug3.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];
} }
} }
module.exports = require_common()(exports); module.exports = require_common()(exports);
@@ -76100,13 +76100,13 @@ function mergeArrays(chunks) {
} }
return mergedArray; return mergedArray;
} }
var import_debug, debug, syncBufferSize, ddSignatureArray, eocdSignatureBytes, ZipHandler; var import_debug, debug2, syncBufferSize, ddSignatureArray, eocdSignatureBytes, ZipHandler;
var init_ZipHandler = __esm({ var init_ZipHandler = __esm({
"node_modules/.pnpm/@tokenizer+inflate@0.4.1/node_modules/@tokenizer/inflate/lib/ZipHandler.js"() { "node_modules/.pnpm/@tokenizer+inflate@0.4.1/node_modules/@tokenizer/inflate/lib/ZipHandler.js"() {
init_lib3(); init_lib3();
import_debug = __toESM(require_src2(), 1); import_debug = __toESM(require_src2(), 1);
init_ZipToken(); init_ZipToken();
debug = (0, import_debug.default)("tokenizer:inflate"); debug2 = (0, import_debug.default)("tokenizer:inflate");
syncBufferSize = 256 * 1024; syncBufferSize = 256 * 1024;
ddSignatureArray = signatureToArray(Signature.DataDescriptor); ddSignatureArray = signatureToArray(Signature.DataDescriptor);
eocdSignatureBytes = signatureToArray(Signature.EndOfCentralDirectory); eocdSignatureBytes = signatureToArray(Signature.EndOfCentralDirectory);
@@ -76135,14 +76135,14 @@ var init_ZipHandler = __esm({
} }
async readCentralDirectory() { async readCentralDirectory() {
if (!this.tokenizer.supportsRandomAccess()) { if (!this.tokenizer.supportsRandomAccess()) {
debug("Cannot reading central-directory without random-read support"); debug2("Cannot reading central-directory without random-read support");
return; return;
} }
debug("Reading central-directory..."); debug2("Reading central-directory...");
const pos = this.tokenizer.position; const pos = this.tokenizer.position;
const offset = await this.findEndOfCentralDirectoryLocator(); const offset = await this.findEndOfCentralDirectoryLocator();
if (offset > 0) { if (offset > 0) {
debug("Central-directory 32-bit signature found"); debug2("Central-directory 32-bit signature found");
const eocdHeader = await this.tokenizer.readToken(EndOfCentralDirectoryRecordToken, offset); const eocdHeader = await this.tokenizer.readToken(EndOfCentralDirectoryRecordToken, offset);
const files = []; const files = [];
this.tokenizer.setPosition(eocdHeader.offsetOfStartOfCd); this.tokenizer.setPosition(eocdHeader.offsetOfStartOfCd);
@@ -76155,7 +76155,7 @@ var init_ZipHandler = __esm({
await this.tokenizer.ignore(entry.extraFieldLength); await this.tokenizer.ignore(entry.extraFieldLength);
await this.tokenizer.ignore(entry.fileCommentLength); await this.tokenizer.ignore(entry.fileCommentLength);
files.push(entry); files.push(entry);
debug(`Add central-directory file-entry: n=${n + 1}/${files.length}: filename=${files[n].filename}`); debug2(`Add central-directory file-entry: n=${n + 1}/${files.length}: filename=${files[n].filename}`);
} }
this.tokenizer.setPosition(pos); this.tokenizer.setPosition(pos);
return files; return files;
@@ -76179,7 +76179,7 @@ var init_ZipHandler = __esm({
if (zipHeader.dataDescriptor && zipHeader.compressedSize === 0) { if (zipHeader.dataDescriptor && zipHeader.compressedSize === 0) {
const chunks = []; const chunks = [];
let len = syncBufferSize; let len = syncBufferSize;
debug("Compressed-file-size unknown, scanning for next data-descriptor-signature...."); debug2("Compressed-file-size unknown, scanning for next data-descriptor-signature....");
let nextHeaderIndex = -1; let nextHeaderIndex = -1;
while (nextHeaderIndex < 0 && len === syncBufferSize) { while (nextHeaderIndex < 0 && len === syncBufferSize) {
len = await this.tokenizer.peekBuffer(this.syncBuffer, { mayBeLess: true }); len = await this.tokenizer.peekBuffer(this.syncBuffer, { mayBeLess: true });
@@ -76193,22 +76193,22 @@ var init_ZipHandler = __esm({
await this.tokenizer.ignore(size); await this.tokenizer.ignore(size);
} }
} }
debug(`Found data-descriptor-signature at pos=${this.tokenizer.position}`); debug2(`Found data-descriptor-signature at pos=${this.tokenizer.position}`);
if (next2.handler) { if (next2.handler) {
await this.inflate(zipHeader, mergeArrays(chunks), next2.handler); await this.inflate(zipHeader, mergeArrays(chunks), next2.handler);
} }
} else { } else {
if (next2.handler) { if (next2.handler) {
debug(`Reading compressed-file-data: ${zipHeader.compressedSize} bytes`); debug2(`Reading compressed-file-data: ${zipHeader.compressedSize} bytes`);
fileData = new Uint8Array(zipHeader.compressedSize); fileData = new Uint8Array(zipHeader.compressedSize);
await this.tokenizer.readBuffer(fileData); await this.tokenizer.readBuffer(fileData);
await this.inflate(zipHeader, fileData, next2.handler); await this.inflate(zipHeader, fileData, next2.handler);
} else { } else {
debug(`Ignoring compressed-file-data: ${zipHeader.compressedSize} bytes`); debug2(`Ignoring compressed-file-data: ${zipHeader.compressedSize} bytes`);
await this.tokenizer.ignore(zipHeader.compressedSize); await this.tokenizer.ignore(zipHeader.compressedSize);
} }
} }
debug(`Reading data-descriptor at pos=${this.tokenizer.position}`); debug2(`Reading data-descriptor at pos=${this.tokenizer.position}`);
if (zipHeader.dataDescriptor) { if (zipHeader.dataDescriptor) {
const dataDescriptor = await this.tokenizer.readToken(DataDescriptor); const dataDescriptor = await this.tokenizer.readToken(DataDescriptor);
if (dataDescriptor.signature !== 134695760) { if (dataDescriptor.signature !== 134695760) {
@@ -76241,7 +76241,7 @@ var init_ZipHandler = __esm({
if (zipHeader.compressedMethod !== 8) { if (zipHeader.compressedMethod !== 8) {
throw new Error(`Unsupported ZIP compression method: ${zipHeader.compressedMethod}`); throw new Error(`Unsupported ZIP compression method: ${zipHeader.compressedMethod}`);
} }
debug(`Decompress filename=${zipHeader.filename}, compressed-size=${fileData.length}`); debug2(`Decompress filename=${zipHeader.filename}, compressed-size=${fileData.length}`);
const uncompressedData = await _ZipHandler.decompressDeflateRaw(fileData); const uncompressedData = await _ZipHandler.decompressDeflateRaw(fileData);
return cb(uncompressedData); return cb(uncompressedData);
} }
@@ -95716,9 +95716,9 @@ var require_constants11 = __commonJS({
var require_debug = __commonJS({ var require_debug = __commonJS({
"node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/debug.js"(exports, module) { "node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/debug.js"(exports, module) {
"use strict"; "use strict";
var debug2 = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args2) => console.error("SEMVER", ...args2) : () => { var debug3 = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args2) => console.error("SEMVER", ...args2) : () => {
}; };
module.exports = debug2; module.exports = debug3;
} }
}); });
@@ -95731,7 +95731,7 @@ var require_re = __commonJS({
MAX_SAFE_BUILD_LENGTH, MAX_SAFE_BUILD_LENGTH,
MAX_LENGTH MAX_LENGTH
} = require_constants11(); } = require_constants11();
var debug2 = require_debug(); var debug3 = require_debug();
exports = module.exports = {}; exports = module.exports = {};
var re = exports.re = []; var re = exports.re = [];
var safeRe = exports.safeRe = []; var safeRe = exports.safeRe = [];
@@ -95754,7 +95754,7 @@ var require_re = __commonJS({
var createToken = (name, value2, isGlobal) => { var createToken = (name, value2, isGlobal) => {
const safe = makeSafeRegex(value2); const safe = makeSafeRegex(value2);
const index = R++; const index = R++;
debug2(name, index, value2); debug3(name, index, value2);
t[name] = index; t[name] = index;
src[index] = value2; src[index] = value2;
safeSrc[index] = safe; safeSrc[index] = safe;
@@ -95858,7 +95858,7 @@ var require_identifiers = __commonJS({
var require_semver = __commonJS({ var require_semver = __commonJS({
"node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/semver.js"(exports, module) { "node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/semver.js"(exports, module) {
"use strict"; "use strict";
var debug2 = require_debug(); var debug3 = require_debug();
var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants11(); var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants11();
var { safeRe: re, t } = require_re(); var { safeRe: re, t } = require_re();
var parseOptions = require_parse_options(); var parseOptions = require_parse_options();
@@ -95880,7 +95880,7 @@ var require_semver = __commonJS({
`version is longer than ${MAX_LENGTH} characters` `version is longer than ${MAX_LENGTH} characters`
); );
} }
debug2("SemVer", version3, options); debug3("SemVer", version3, options);
this.options = options; this.options = options;
this.loose = !!options.loose; this.loose = !!options.loose;
this.includePrerelease = !!options.includePrerelease; this.includePrerelease = !!options.includePrerelease;
@@ -95928,7 +95928,7 @@ var require_semver = __commonJS({
return this.version; return this.version;
} }
compare(other) { compare(other) {
debug2("SemVer.compare", this.version, this.options, other); debug3("SemVer.compare", this.version, this.options, other);
if (!(other instanceof _SemVer)) { if (!(other instanceof _SemVer)) {
if (typeof other === "string" && other === this.version) { if (typeof other === "string" && other === this.version) {
return 0; return 0;
@@ -95979,7 +95979,7 @@ var require_semver = __commonJS({
do { do {
const a = this.prerelease[i]; const a = this.prerelease[i];
const b = other.prerelease[i]; const b = other.prerelease[i];
debug2("prerelease compare", i, a, b); debug3("prerelease compare", i, a, b);
if (a === void 0 && b === void 0) { if (a === void 0 && b === void 0) {
return 0; return 0;
} else if (b === void 0) { } else if (b === void 0) {
@@ -96001,7 +96001,7 @@ var require_semver = __commonJS({
do { do {
const a = this.build[i]; const a = this.build[i];
const b = other.build[i]; const b = other.build[i];
debug2("build compare", i, a, b); debug3("build compare", i, a, b);
if (a === void 0 && b === void 0) { if (a === void 0 && b === void 0) {
return 0; return 0;
} else if (b === void 0) { } else if (b === void 0) {
@@ -96629,21 +96629,21 @@ var require_range = __commonJS({
const loose = this.options.loose; const loose = this.options.loose;
const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]; const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE];
range2 = range2.replace(hr, hyphenReplace(this.options.includePrerelease)); range2 = range2.replace(hr, hyphenReplace(this.options.includePrerelease));
debug2("hyphen replace", range2); debug3("hyphen replace", range2);
range2 = range2.replace(re[t.COMPARATORTRIM], comparatorTrimReplace); range2 = range2.replace(re[t.COMPARATORTRIM], comparatorTrimReplace);
debug2("comparator trim", range2); debug3("comparator trim", range2);
range2 = range2.replace(re[t.TILDETRIM], tildeTrimReplace); range2 = range2.replace(re[t.TILDETRIM], tildeTrimReplace);
debug2("tilde trim", range2); debug3("tilde trim", range2);
range2 = range2.replace(re[t.CARETTRIM], caretTrimReplace); range2 = range2.replace(re[t.CARETTRIM], caretTrimReplace);
debug2("caret trim", range2); debug3("caret trim", range2);
let rangeList = range2.split(" ").map((comp) => parseComparator(comp, this.options)).join(" ").split(/\s+/).map((comp) => replaceGTE0(comp, this.options)); let rangeList = range2.split(" ").map((comp) => parseComparator(comp, this.options)).join(" ").split(/\s+/).map((comp) => replaceGTE0(comp, this.options));
if (loose) { if (loose) {
rangeList = rangeList.filter((comp) => { rangeList = rangeList.filter((comp) => {
debug2("loose invalid filter", comp, this.options); debug3("loose invalid filter", comp, this.options);
return !!comp.match(re[t.COMPARATORLOOSE]); return !!comp.match(re[t.COMPARATORLOOSE]);
}); });
} }
debug2("range list", rangeList); debug3("range list", rangeList);
const rangeMap = /* @__PURE__ */ new Map(); const rangeMap = /* @__PURE__ */ new Map();
const comparators = rangeList.map((comp) => new Comparator(comp, this.options)); const comparators = rangeList.map((comp) => new Comparator(comp, this.options));
for (const comp of comparators) { for (const comp of comparators) {
@@ -96698,7 +96698,7 @@ var require_range = __commonJS({
var cache = new LRU(); var cache = new LRU();
var parseOptions = require_parse_options(); var parseOptions = require_parse_options();
var Comparator = require_comparator(); var Comparator = require_comparator();
var debug2 = require_debug(); var debug3 = require_debug();
var SemVer = require_semver(); var SemVer = require_semver();
var { var {
safeRe: re, safeRe: re,
@@ -96724,15 +96724,15 @@ var require_range = __commonJS({
}; };
var parseComparator = (comp, options) => { var parseComparator = (comp, options) => {
comp = comp.replace(re[t.BUILD], ""); comp = comp.replace(re[t.BUILD], "");
debug2("comp", comp, options); debug3("comp", comp, options);
comp = replaceCarets(comp, options); comp = replaceCarets(comp, options);
debug2("caret", comp); debug3("caret", comp);
comp = replaceTildes(comp, options); comp = replaceTildes(comp, options);
debug2("tildes", comp); debug3("tildes", comp);
comp = replaceXRanges(comp, options); comp = replaceXRanges(comp, options);
debug2("xrange", comp); debug3("xrange", comp);
comp = replaceStars(comp, options); comp = replaceStars(comp, options);
debug2("stars", comp); debug3("stars", comp);
return comp; return comp;
}; };
var isX = (id) => !id || id.toLowerCase() === "x" || id === "*"; var isX = (id) => !id || id.toLowerCase() === "x" || id === "*";
@@ -96742,7 +96742,7 @@ var require_range = __commonJS({
var replaceTilde = (comp, options) => { var replaceTilde = (comp, options) => {
const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]; const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];
return comp.replace(r, (_, M, m, p, pr) => { return comp.replace(r, (_, M, m, p, pr) => {
debug2("tilde", comp, _, M, m, p, pr); debug3("tilde", comp, _, M, m, p, pr);
let ret; let ret;
if (isX(M)) { if (isX(M)) {
ret = ""; ret = "";
@@ -96751,12 +96751,12 @@ var require_range = __commonJS({
} else if (isX(p)) { } else if (isX(p)) {
ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`; ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;
} else if (pr) { } else if (pr) {
debug2("replaceTilde pr", pr); debug3("replaceTilde pr", pr);
ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
} else { } else {
ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`; ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;
} }
debug2("tilde return", ret); debug3("tilde return", ret);
return ret; return ret;
}); });
}; };
@@ -96764,11 +96764,11 @@ var require_range = __commonJS({
return comp.trim().split(/\s+/).map((c) => replaceCaret(c, options)).join(" "); return comp.trim().split(/\s+/).map((c) => replaceCaret(c, options)).join(" ");
}; };
var replaceCaret = (comp, options) => { var replaceCaret = (comp, options) => {
debug2("caret", comp, options); debug3("caret", comp, options);
const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]; const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET];
const z2 = options.includePrerelease ? "-0" : ""; const z2 = options.includePrerelease ? "-0" : "";
return comp.replace(r, (_, M, m, p, pr) => { return comp.replace(r, (_, M, m, p, pr) => {
debug2("caret", comp, _, M, m, p, pr); debug3("caret", comp, _, M, m, p, pr);
let ret; let ret;
if (isX(M)) { if (isX(M)) {
ret = ""; ret = "";
@@ -96781,7 +96781,7 @@ var require_range = __commonJS({
ret = `>=${M}.${m}.0${z2} <${+M + 1}.0.0-0`; ret = `>=${M}.${m}.0${z2} <${+M + 1}.0.0-0`;
} }
} else if (pr) { } else if (pr) {
debug2("replaceCaret pr", pr); debug3("replaceCaret pr", pr);
if (M === "0") { if (M === "0") {
if (m === "0") { if (m === "0") {
ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`; ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;
@@ -96792,7 +96792,7 @@ var require_range = __commonJS({
ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`; ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;
} }
} else { } else {
debug2("no pr"); debug3("no pr");
if (M === "0") { if (M === "0") {
if (m === "0") { if (m === "0") {
ret = `>=${M}.${m}.${p}${z2} <${M}.${m}.${+p + 1}-0`; ret = `>=${M}.${m}.${p}${z2} <${M}.${m}.${+p + 1}-0`;
@@ -96803,19 +96803,19 @@ var require_range = __commonJS({
ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`; ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;
} }
} }
debug2("caret return", ret); debug3("caret return", ret);
return ret; return ret;
}); });
}; };
var replaceXRanges = (comp, options) => { var replaceXRanges = (comp, options) => {
debug2("replaceXRanges", comp, options); debug3("replaceXRanges", comp, options);
return comp.split(/\s+/).map((c) => replaceXRange(c, options)).join(" "); return comp.split(/\s+/).map((c) => replaceXRange(c, options)).join(" ");
}; };
var replaceXRange = (comp, options) => { var replaceXRange = (comp, options) => {
comp = comp.trim(); comp = comp.trim();
const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]; const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
return comp.replace(r, (ret, gtlt, M, m, p, pr) => { return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
debug2("xRange", comp, ret, gtlt, M, m, p, pr); debug3("xRange", comp, ret, gtlt, M, m, p, pr);
const xM = isX(M); const xM = isX(M);
const xm = xM || isX(m); const xm = xM || isX(m);
const xp = xm || isX(p); const xp = xm || isX(p);
@@ -96862,16 +96862,16 @@ var require_range = __commonJS({
} else if (xp) { } else if (xp) {
ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`; ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;
} }
debug2("xRange return", ret); debug3("xRange return", ret);
return ret; return ret;
}); });
}; };
var replaceStars = (comp, options) => { var replaceStars = (comp, options) => {
debug2("replaceStars", comp, options); debug3("replaceStars", comp, options);
return comp.trim().replace(re[t.STAR], ""); return comp.trim().replace(re[t.STAR], "");
}; };
var replaceGTE0 = (comp, options) => { var replaceGTE0 = (comp, options) => {
debug2("replaceGTE0", comp, options); debug3("replaceGTE0", comp, options);
return comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], ""); return comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], "");
}; };
var hyphenReplace = (incPr) => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => { var hyphenReplace = (incPr) => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {
@@ -96909,7 +96909,7 @@ var require_range = __commonJS({
} }
if (version3.prerelease.length && !options.includePrerelease) { if (version3.prerelease.length && !options.includePrerelease) {
for (let i = 0; i < set2.length; i++) { for (let i = 0; i < set2.length; i++) {
debug2(set2[i].semver); debug3(set2[i].semver);
if (set2[i].semver === Comparator.ANY) { if (set2[i].semver === Comparator.ANY) {
continue; continue;
} }
@@ -96946,7 +96946,7 @@ var require_comparator = __commonJS({
} }
} }
comp = comp.trim().split(/\s+/).join(" "); comp = comp.trim().split(/\s+/).join(" ");
debug2("comparator", comp, options); debug3("comparator", comp, options);
this.options = options; this.options = options;
this.loose = !!options.loose; this.loose = !!options.loose;
this.parse(comp); this.parse(comp);
@@ -96955,7 +96955,7 @@ var require_comparator = __commonJS({
} else { } else {
this.value = this.operator + this.semver.version; this.value = this.operator + this.semver.version;
} }
debug2("comp", this); debug3("comp", this);
} }
parse(comp) { parse(comp) {
const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]; const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
@@ -96977,7 +96977,7 @@ var require_comparator = __commonJS({
return this.value; return this.value;
} }
test(version3) { test(version3) {
debug2("Comparator.test", version3, this.options.loose); debug3("Comparator.test", version3, this.options.loose);
if (this.semver === ANY || version3 === ANY) { if (this.semver === ANY || version3 === ANY) {
return true; return true;
} }
@@ -97034,7 +97034,7 @@ var require_comparator = __commonJS({
var parseOptions = require_parse_options(); var parseOptions = require_parse_options();
var { safeRe: re, t } = require_re(); var { safeRe: re, t } = require_re();
var cmp = require_cmp(); var cmp = require_cmp();
var debug2 = require_debug(); var debug3 = require_debug();
var SemVer = require_semver(); var SemVer = require_semver();
var Range = require_range(); var Range = require_range();
} }
@@ -135596,7 +135596,12 @@ var isGitHubActions = !!process.env.GITHUB_ACTIONS;
var isInsideDocker = existsSync("/.dockerenv"); var isInsideDocker = existsSync("/.dockerenv");
// utils/log.ts // utils/log.ts
var isDebugEnabled = () => process.env.LOG_LEVEL === "debug" || process.env.ACTIONS_STEP_DEBUG === "true" || core.isDebug(); var isRunnerDebugEnabled = () => core.isDebug();
var isLocalDebugEnabled = () => process.env.LOG_LEVEL === "debug" || process.env.ACTIONS_STEP_DEBUG === "true";
var isDebugEnabled = () => isLocalDebugEnabled() || isRunnerDebugEnabled();
function ts() {
return isDebugEnabled() ? `[${(/* @__PURE__ */ new Date()).toISOString()}] ` : "";
}
function formatArgs(args2) { function formatArgs(args2) {
return args2.map((arg) => { return args2.map((arg) => {
if (typeof arg === "string") return arg; if (typeof arg === "string") return arg;
@@ -135713,19 +135718,16 @@ function separator(length = 50) {
const separatorText = "\u2500".repeat(length); const separatorText = "\u2500".repeat(length);
core.info(separatorText); core.info(separatorText);
} }
function ts() {
return isDebugEnabled() ? `[${(/* @__PURE__ */ new Date()).toISOString()}] ` : "";
}
var log = { var log = {
/** Print info message */ /** Print info message */
info: (...args2) => { info: (...args2) => {
core.info(`${ts()}${formatArgs(args2)}`); core.info(`${ts()}${formatArgs(args2)}`);
}, },
/** Print warning message */ /** Print a warning message. Use only for warnings that should be displayed in the job summary. */
warning: (...args2) => { warning: (...args2) => {
core.warning(`${ts()}${formatArgs(args2)}`); core.warning(`${ts()}${formatArgs(args2)}`);
}, },
/** Print error message */ /** Print an error message. Use only for errors that should be displayed in the job summary. */
error: (...args2) => { error: (...args2) => {
core.error(`${ts()}${formatArgs(args2)}`); core.error(`${ts()}${formatArgs(args2)}`);
}, },
@@ -135733,10 +135735,14 @@ var log = {
success: (...args2) => { success: (...args2) => {
core.info(`${ts()}\xBB ${formatArgs(args2)}`); core.info(`${ts()}\xBB ${formatArgs(args2)}`);
}, },
/** Print debug message (only if LOG_LEVEL=debug) */ /** Print debug message (only when debug mode is enabled) */
debug: (...args2) => { debug: (...args2) => {
if (isDebugEnabled()) { if (isRunnerDebugEnabled()) {
core.info(`[${(/* @__PURE__ */ new Date()).toISOString()}] [DEBUG] ${formatArgs(args2)}`); core.debug(formatArgs(args2));
return;
}
if (isLocalDebugEnabled()) {
core.info(`${ts()}[DEBUG] ${formatArgs(args2)}`);
} }
}, },
/** Print a formatted box with text */ /** Print a formatted box with text */
@@ -139476,9 +139482,7 @@ async function retry(fn2, options = {}) {
throw error49; throw error49;
} }
const delay2 = delayMs * attempt; const delay2 = delayMs * attempt;
log.warning( log.info(`\xBB ${label} failed (attempt ${attempt}/${maxAttempts}), retrying in ${delay2}ms...`);
`\xBB ${label} failed (attempt ${attempt}/${maxAttempts}), retrying in ${delay2}ms...`
);
await new Promise((resolve3) => setTimeout(resolve3, delay2)); await new Promise((resolve3) => setTimeout(resolve3, delay2));
} }
} }
@@ -139754,7 +139758,7 @@ async function revokeGitHubInstallationToken(token) {
}); });
log.debug("\xBB installation token revoked"); log.debug("\xBB installation token revoked");
} catch (error49) { } catch (error49) {
log.warning( log.info(
`Failed to revoke installation token: ${error49 instanceof Error ? error49.message : String(error49)}` `Failed to revoke installation token: ${error49 instanceof Error ? error49.message : String(error49)}`
); );
} }
@@ -140173,7 +140177,7 @@ var execute = (fn2, toolName) => {
} catch (error49) { } catch (error49) {
const errorMessage = error49 instanceof Error ? error49.message : String(error49); const errorMessage = error49 instanceof Error ? error49.message : String(error49);
const prefix = toolName ? `[${toolName}]` : "tool"; const prefix = toolName ? `[${toolName}]` : "tool";
log.error(`${prefix} error: ${errorMessage}`); log.info(`${prefix} error: ${errorMessage}`);
log.debug(`${prefix} params: ${formatJsonValue(params)}`); log.debug(`${prefix} params: ${formatJsonValue(params)}`);
return handleToolError(error49); return handleToolError(error49);
} }
@@ -140312,7 +140316,7 @@ function detectSandboxMethod() {
} catch { } catch {
} }
detectedSandboxMethod = "none"; detectedSandboxMethod = "none";
log.warning("PID namespace isolation not available - falling back to env filtering only"); log.info("PID namespace isolation not available - falling back to env filtering only");
return "none"; return "none";
} }
function spawnBash(params) { function spawnBash(params) {
@@ -140452,8 +140456,8 @@ ${stderr}` : stderr : stdout;
[timed out after ${timeout}ms]` : `[timed out after ${timeout}ms]`; [timed out after ${timeout}ms]` : `[timed out after ${timeout}ms]`;
const finalExitCode = exitCode ?? (timedOut ? 124 : -1); const finalExitCode = exitCode ?? (timedOut ? 124 : -1);
if (finalExitCode !== 0) { if (finalExitCode !== 0) {
log.error(`bash command failed with exit code ${finalExitCode}: ${params.command}`); log.info(`bash command failed with exit code ${finalExitCode}: ${params.command}`);
if (output) log.error(`output: ${output.trim()}`); if (output) log.info(`output: ${output.trim()}`);
} }
return { return {
output: output.trim(), output: output.trim(),
@@ -140556,7 +140560,7 @@ function $git(subcommand, args2, options) {
}); });
if (result.status !== 0) { if (result.status !== 0) {
const stderr = result.stderr?.trim() ?? ""; const stderr = result.stderr?.trim() ?? "";
log.error(`git ${subcommand} failed: ${stderr}`); log.info(`git ${subcommand} failed: ${stderr}`);
throw new Error(`git ${subcommand} failed: ${stderr}`); throw new Error(`git ${subcommand} failed: ${stderr}`);
} }
return { return {
@@ -140729,7 +140733,7 @@ async function spawn2(options) {
if (idleMs > activityTimeoutMs) { if (idleMs > activityTimeoutMs) {
isActivityTimedOut = true; isActivityTimedOut = true;
const idleSec = Math.round(idleMs / 1e3); const idleSec = Math.round(idleMs / 1e3);
log.error(`no output for ${idleSec}s from pid=${child.pid} (${cmd}), killing process`); log.info(`no output for ${idleSec}s from pid=${child.pid} (${cmd}), killing process`);
child.kill("SIGKILL"); child.kill("SIGKILL");
clearInterval(activityCheckIntervalId); clearInterval(activityCheckIntervalId);
} }
@@ -141231,7 +141235,7 @@ function GetCheckSuiteLogsTool(ctx) {
}); });
log.debug(`analyzed logs for job ${job.name}: ${analysis.index.length} indexed lines`); log.debug(`analyzed logs for job ${job.name}: ${analysis.index.length} indexed lines`);
} catch (error49) { } catch (error49) {
log.error(`failed to fetch logs for job ${job.id}: ${error49}`); log.info(`failed to fetch logs for job ${job.id}: ${error49}`);
} }
} }
} }
@@ -142010,7 +142014,7 @@ function DelegateTool(ctx) {
}; };
} catch (err) { } catch (err) {
const errorMessage = err instanceof Error ? err.message : String(err); const errorMessage = err instanceof Error ? err.message : String(err);
log.error(`\xBB delegation to ${selectedMode.name} crashed: ${errorMessage}`); log.info(`\xBB delegation to ${selectedMode.name} crashed: ${errorMessage}`);
return { return {
success: false, success: false,
mode: selectedMode.name, mode: selectedMode.name,
@@ -144046,7 +144050,7 @@ function ResolveReviewThreadTool(ctx) {
const errorMessage = error49 instanceof Error ? error49.message : String(error49); const errorMessage = error49 instanceof Error ? error49.message : String(error49);
const isResolved = errorMessage.includes("already resolved") || errorMessage.includes("isResolved"); const isResolved = errorMessage.includes("already resolved") || errorMessage.includes("isResolved");
const message = isResolved ? `thread ${params.thread_id} was already resolved` : `failed to resolve thread ${params.thread_id}: ${errorMessage}`; const message = isResolved ? `thread ${params.thread_id} was already resolved` : `failed to resolve thread ${params.thread_id}: ${errorMessage}`;
log.warning(message); log.info(message);
return { return {
thread_id: params.thread_id, thread_id: params.thread_id,
is_resolved: isResolved, is_resolved: isResolved,
@@ -144965,8 +144969,7 @@ var claude = agent({
onStderr: (chunk) => { onStderr: (chunk) => {
const trimmed = chunk.trim(); const trimmed = chunk.trim();
if (trimmed) { if (trimmed) {
log.debug(`[claude stderr] ${trimmed}`); log.info(`[claude stderr] ${trimmed}`);
log.warning(trimmed);
finalOutput2 += trimmed + "\n"; finalOutput2 += trimmed + "\n";
} }
} }
@@ -145022,14 +145025,14 @@ var messageHandlers = {
if (isBashTool) { if (isBashTool) {
log.startGroup(`bash output`); log.startGroup(`bash output`);
if (content.is_error) { if (content.is_error) {
log.warning(outputContent); log.info(outputContent);
} else { } else {
log.info(outputContent); log.info(outputContent);
} }
log.endGroup(); log.endGroup();
bashToolIds.delete(toolUseId); bashToolIds.delete(toolUseId);
} else if (content.is_error) { } else if (content.is_error) {
log.warning(`Tool error: ${outputContent}`); log.info(`Tool error: ${outputContent}`);
} else { } else {
log.debug(`tool output: ${outputContent}`); log.debug(`tool output: ${outputContent}`);
} }
@@ -145062,11 +145065,11 @@ var messageHandlers = {
] ]
]); ]);
} else if (data.subtype === "error_max_turns") { } else if (data.subtype === "error_max_turns") {
log.error(`Max turns reached: ${JSON.stringify(data)}`); log.info(`Max turns reached: ${JSON.stringify(data)}`);
} else if (data.subtype === "error_during_execution") { } else if (data.subtype === "error_during_execution") {
log.error(`Execution error: ${JSON.stringify(data)}`); log.info(`Execution error: ${JSON.stringify(data)}`);
} else { } else {
log.error(`Failed: ${JSON.stringify(data)}`); log.info(`Failed: ${JSON.stringify(data)}`);
} }
}, },
system: () => { system: () => {
@@ -145101,7 +145104,7 @@ async function isModelAvailable(ctx) {
signal: AbortSignal.timeout(1e4) signal: AbortSignal.timeout(1e4)
}); });
if (!response.ok) { if (!response.ok) {
log.warning( log.info(
`failed to list models (HTTP ${response.status}), falling back to ${FALLBACK_MODEL}` `failed to list models (HTTP ${response.status}), falling back to ${FALLBACK_MODEL}`
); );
return false; return false;
@@ -145109,7 +145112,7 @@ async function isModelAvailable(ctx) {
const body = await response.json(); const body = await response.json();
return body.data.some((m) => m.id === ctx.model); return body.data.some((m) => m.id === ctx.model);
} catch (err) { } catch (err) {
log.warning(`failed to list models: ${err}, falling back to ${FALLBACK_MODEL}`); log.info(`failed to list models: ${err}, falling back to ${FALLBACK_MODEL}`);
return false; return false;
} }
} }
@@ -145252,8 +145255,7 @@ var codex = agent({
onStderr: (chunk) => { onStderr: (chunk) => {
const trimmed = chunk.trim(); const trimmed = chunk.trim();
if (trimmed) { if (trimmed) {
log.debug(`[codex stderr] ${trimmed}`); log.info(`[codex stderr] ${trimmed}`);
log.warning(trimmed);
finalOutput2 += trimmed + "\n"; finalOutput2 += trimmed + "\n";
} }
} }
@@ -145294,7 +145296,7 @@ var messageHandlers2 = {
]); ]);
}, },
"turn.failed": (event) => { "turn.failed": (event) => {
log.error(`Turn failed: ${event.error.message}`); log.info(`Turn failed: ${event.error.message}`);
}, },
"item.started": (event, commandExecutionIds, thinkingTimer) => { "item.started": (event, commandExecutionIds, thinkingTimer) => {
const item = event.item; const item = event.item;
@@ -145334,7 +145336,7 @@ var messageHandlers2 = {
thinkingTimer.markToolResult(); thinkingTimer.markToolResult();
log.startGroup(`bash output`); log.startGroup(`bash output`);
if (item.status === "failed" || item.exit_code !== void 0 && item.exit_code !== 0) { if (item.status === "failed" || item.exit_code !== void 0 && item.exit_code !== 0) {
log.warning(item.aggregated_output || "Command failed"); log.info(item.aggregated_output || "Command failed");
} else { } else {
log.info(item.aggregated_output || ""); log.info(item.aggregated_output || "");
} }
@@ -145344,7 +145346,7 @@ var messageHandlers2 = {
} else if (item.type === "mcp_tool_call") { } else if (item.type === "mcp_tool_call") {
thinkingTimer.markToolResult(); thinkingTimer.markToolResult();
if (item.status === "failed" && item.error) { if (item.status === "failed" && item.error) {
log.warning(`MCP tool call failed: ${item.error.message}`); log.info(`MCP tool call failed: ${item.error.message}`);
} else if (item.output) { } else if (item.output) {
const output = item.output; const output = item.output;
const outputStr = typeof output === "string" ? output : JSON.stringify(output); const outputStr = typeof output === "string" ? output : JSON.stringify(output);
@@ -145357,7 +145359,7 @@ var messageHandlers2 = {
} }
}, },
error: (event) => { error: (event) => {
log.error(`Error: ${event.message}`); log.info(`Error: ${event.message}`);
} }
}; };
@@ -145458,7 +145460,7 @@ var cursor = agent({
const result = event.tool_call?.mcpToolCall?.result?.success; const result = event.tool_call?.mcpToolCall?.result?.success;
const isError = result?.isError; const isError = result?.isError;
if (isError) { if (isError) {
log.warning("Tool call failed"); log.info("Tool call failed");
} else { } else {
const contentItem = result?.content?.[0]; const contentItem = result?.content?.[0];
const textValue = contentItem?.text; const textValue = contentItem?.text;
@@ -145534,11 +145536,11 @@ var cursor = agent({
const text = data.toString(); const text = data.toString();
stderr += text; stderr += text;
process.stderr.write(text); process.stderr.write(text);
log.warning(text); log.info(text);
}); });
child.on("close", async (code, signal) => { child.on("close", async (code, signal) => {
if (signal) { if (signal) {
log.warning(`Cursor CLI terminated by signal: ${signal}`); log.info(`Cursor CLI terminated by signal: ${signal}`);
} }
const duration4 = ((performance6.now() - startTime) / 1e3).toFixed(1); const duration4 = ((performance6.now() - startTime) / 1e3).toFixed(1);
if (code === 0) { if (code === 0) {
@@ -145683,7 +145685,7 @@ var messageHandlers3 = {
thinkingTimer.markToolResult(); thinkingTimer.markToolResult();
if (event.status === "error") { if (event.status === "error") {
const errorMsg = typeof event.output === "string" ? event.output : JSON.stringify(event.output); const errorMsg = typeof event.output === "string" ? event.output : JSON.stringify(event.output);
log.warning(`Tool call failed: ${errorMsg}`); log.info(`Tool call failed: ${errorMsg}`);
} else if (event.output) { } else if (event.output) {
const outputStr = typeof event.output === "string" ? event.output : JSON.stringify(event.output); const outputStr = typeof event.output === "string" ? event.output : JSON.stringify(event.output);
log.debug(`tool output: ${outputStr}`); log.debug(`tool output: ${outputStr}`);
@@ -145783,8 +145785,7 @@ var gemini = agent({
onStderr: (chunk) => { onStderr: (chunk) => {
const trimmed = chunk.trim(); const trimmed = chunk.trim();
if (trimmed) { if (trimmed) {
log.debug(`[gemini stderr] ${trimmed}`); log.info(`[gemini stderr] ${trimmed}`);
log.warning(trimmed);
finalOutput2 += trimmed + "\n"; finalOutput2 += trimmed + "\n";
} }
} }
@@ -145792,7 +145793,7 @@ var gemini = agent({
if (result.exitCode !== 0) { if (result.exitCode !== 0) {
const errorMessage = result.stderr || finalOutput2 || result.stdout || "Unknown error - no output from Gemini CLI"; const errorMessage = result.stderr || finalOutput2 || result.stdout || "Unknown error - no output from Gemini CLI";
if (attempt < MAX_ATTEMPTS && isTransientApiError(errorMessage)) { if (attempt < MAX_ATTEMPTS && isTransientApiError(errorMessage)) {
log.warning( log.info(
`\xBB transient Gemini API error on attempt ${attempt}/${MAX_ATTEMPTS}, retrying in ${RETRY_DELAY_MS / 1e3}s...` `\xBB transient Gemini API error on attempt ${attempt}/${MAX_ATTEMPTS}, retrying in ${RETRY_DELAY_MS / 1e3}s...`
); );
await new Promise((resolve3) => setTimeout(resolve3, RETRY_DELAY_MS)); await new Promise((resolve3) => setTimeout(resolve3, RETRY_DELAY_MS));
@@ -145814,7 +145815,7 @@ var gemini = agent({
} catch (error49) { } catch (error49) {
const errorMessage = error49 instanceof Error ? error49.message : String(error49); const errorMessage = error49 instanceof Error ? error49.message : String(error49);
if (attempt < MAX_ATTEMPTS && isTransientApiError(errorMessage)) { if (attempt < MAX_ATTEMPTS && isTransientApiError(errorMessage)) {
log.warning( log.info(
`\xBB transient Gemini API error on attempt ${attempt}/${MAX_ATTEMPTS}, retrying in ${RETRY_DELAY_MS / 1e3}s...` `\xBB transient Gemini API error on attempt ${attempt}/${MAX_ATTEMPTS}, retrying in ${RETRY_DELAY_MS / 1e3}s...`
); );
await new Promise((resolve3) => setTimeout(resolve3, RETRY_DELAY_MS)); await new Promise((resolve3) => setTimeout(resolve3, RETRY_DELAY_MS));
@@ -145983,7 +145984,7 @@ var opencode = agent({
if (timeSinceLastActivity > 1e4) { if (timeSinceLastActivity > 1e4) {
const activeToolCalls = toolCallTimings.size; const activeToolCalls = toolCallTimings.size;
const toolCallInfo = activeToolCalls > 0 ? ` (waiting for ${activeToolCalls} tool call${activeToolCalls > 1 ? "s" : ""})` : " (OpenCode may be processing internally - LLM calls, planning, etc.)"; const toolCallInfo = activeToolCalls > 0 ? ` (waiting for ${activeToolCalls} tool call${activeToolCalls > 1 ? "s" : ""})` : " (OpenCode may be processing internally - LLM calls, planning, etc.)";
log.warning( log.info(
`\xBB no activity for ${(timeSinceLastActivity / 1e3).toFixed(1)}s${toolCallInfo} (${eventCount} events processed so far)` `\xBB no activity for ${(timeSinceLastActivity / 1e3).toFixed(1)}s${toolCallInfo} (${eventCount} events processed so far)`
); );
} }
@@ -146009,7 +146010,7 @@ var opencode = agent({
const providerError = detectProviderError(trimmed); const providerError = detectProviderError(trimmed);
if (providerError) { if (providerError) {
lastProviderError = providerError; lastProviderError = providerError;
log.error(`\xBB provider error detected (${providerError}): ${trimmed.substring(0, 500)}`); log.info(`\xBB provider error detected (${providerError}): ${trimmed.substring(0, 500)}`);
} else { } else {
log.debug(trimmed); log.debug(trimmed);
} }
@@ -146022,9 +146023,9 @@ var opencode = agent({
if (eventCount === 0) { if (eventCount === 0) {
const stderrContext = recentStderr.join("\n"); const stderrContext = recentStderr.join("\n");
const diagnosis = lastProviderError ? `provider error: ${lastProviderError}` : "unknown cause (no stdout events received)"; const diagnosis = lastProviderError ? `provider error: ${lastProviderError}` : "unknown cause (no stdout events received)";
log.error(`\xBB OpenCode produced 0 events (${diagnosis})`); log.info(`\xBB OpenCode produced 0 events (${diagnosis})`);
if (stderrContext) { if (stderrContext) {
log.error(`\xBB last stderr output: log.info(`\xBB last stderr output:
${stderrContext}`); ${stderrContext}`);
} }
} }
@@ -146063,12 +146064,12 @@ ${stderrContext}`);
const isActivityTimeout = errorMessage.includes("activity timeout"); const isActivityTimeout = errorMessage.includes("activity timeout");
const stderrContext = recentStderr.slice(-10).join("\n"); const stderrContext = recentStderr.slice(-10).join("\n");
const diagnosis = lastProviderError ? `likely cause: ${lastProviderError}` : eventCount === 0 ? "OpenCode produced 0 stdout events - check if the model provider is reachable" : `${eventCount} events were processed before the hang`; const diagnosis = lastProviderError ? `likely cause: ${lastProviderError}` : eventCount === 0 ? "OpenCode produced 0 stdout events - check if the model provider is reachable" : `${eventCount} events were processed before the hang`;
log.error( log.info(
`\xBB OpenCode ${isActivityTimeout ? "hung" : "failed"} after ${(duration4 / 1e3).toFixed(1)}s: ${errorMessage}` `\xBB OpenCode ${isActivityTimeout ? "hung" : "failed"} after ${(duration4 / 1e3).toFixed(1)}s: ${errorMessage}`
); );
log.error(`\xBB diagnosis: ${diagnosis}`); log.info(`\xBB diagnosis: ${diagnosis}`);
if (stderrContext) { if (stderrContext) {
log.error( log.info(
`\xBB recent stderr (last ${Math.min(recentStderr.length, 10)} lines): `\xBB recent stderr (last ${Math.min(recentStderr.length, 10)} lines):
${stderrContext}` ${stderrContext}`
); );
@@ -146222,7 +146223,7 @@ var messageHandlers4 = {
log.debug(` output: ${typeof output === "string" ? output : JSON.stringify(output)}`); log.debug(` output: ${typeof output === "string" ? output : JSON.stringify(output)}`);
} }
if (toolDuration > 5e3) { if (toolDuration > 5e3) {
log.warning( log.info(
`\xBB \u26A0\uFE0F tool call took ${(toolDuration / 1e3).toFixed(1)}s - this may indicate network latency or slow processing` `\xBB \u26A0\uFE0F tool call took ${(toolDuration / 1e3).toFixed(1)}s - this may indicate network latency or slow processing`
); );
} }
@@ -146230,7 +146231,7 @@ var messageHandlers4 = {
} }
if (status === "error") { if (status === "error") {
const errorMsg = typeof output === "string" ? output : JSON.stringify(output); const errorMsg = typeof output === "string" ? output : JSON.stringify(output);
log.error(`\xBB \u274C tool call failed: ${errorMsg}`); log.info(`\xBB \u274C tool call failed: ${errorMsg}`);
} else if (output) { } else if (output) {
const outputStr = typeof output === "string" ? output : JSON.stringify(output); const outputStr = typeof output === "string" ? output : JSON.stringify(output);
log.debug(`tool output: ${outputStr}`); log.debug(`tool output: ${outputStr}`);
@@ -146244,7 +146245,7 @@ var messageHandlers4 = {
`\xBB OpenCode result: status=${status}, duration=${duration4}ms, tool_calls=${toolCalls}` `\xBB OpenCode result: status=${status}, duration=${duration4}ms, tool_calls=${toolCalls}`
); );
if (event.status === "error") { if (event.status === "error") {
log.error(`\xBB OpenCode CLI failed: ${JSON.stringify(event)}`); log.info(`\xBB OpenCode CLI failed: ${JSON.stringify(event)}`);
} else { } else {
const inputTokens = event.stats?.input_tokens || accumulatedTokens.input || 0; const inputTokens = event.stats?.input_tokens || accumulatedTokens.input || 0;
const outputTokens = event.stats?.output_tokens || accumulatedTokens.output || 0; const outputTokens = event.stats?.output_tokens || accumulatedTokens.output || 0;
@@ -146891,9 +146892,7 @@ async function setupGit(params) {
log.debug("\xBB git hooks disabled (bash=disabled)"); log.debug("\xBB git hooks disabled (bash=disabled)");
} }
} catch (error49) { } catch (error49) {
log.warning( log.info(`Failed to set git config: ${error49 instanceof Error ? error49.message : String(error49)}`);
`Failed to set git config: ${error49 instanceof Error ? error49.message : String(error49)}`
);
} }
try { try {
execSync3("git config --local --unset-all http.https://github.com/.extraheader", { execSync3("git config --local --unset-all http.https://github.com/.extraheader", {
+28 -24
View File
@@ -399,7 +399,7 @@ var require_tunnel = __commonJS({
connectOptions.headers = connectOptions.headers || {}; connectOptions.headers = connectOptions.headers || {};
connectOptions.headers["Proxy-Authorization"] = "Basic " + new Buffer(connectOptions.proxyAuth).toString("base64"); connectOptions.headers["Proxy-Authorization"] = "Basic " + new Buffer(connectOptions.proxyAuth).toString("base64");
} }
debug2("making CONNECT request"); debug3("making CONNECT request");
var connectReq = self2.request(connectOptions); var connectReq = self2.request(connectOptions);
connectReq.useChunkedEncodingByDefault = false; connectReq.useChunkedEncodingByDefault = false;
connectReq.once("response", onResponse); connectReq.once("response", onResponse);
@@ -419,7 +419,7 @@ var require_tunnel = __commonJS({
connectReq.removeAllListeners(); connectReq.removeAllListeners();
socket.removeAllListeners(); socket.removeAllListeners();
if (res.statusCode !== 200) { if (res.statusCode !== 200) {
debug2( debug3(
"tunneling socket could not be established, statusCode=%d", "tunneling socket could not be established, statusCode=%d",
res.statusCode res.statusCode
); );
@@ -431,7 +431,7 @@ var require_tunnel = __commonJS({
return; return;
} }
if (head.length > 0) { if (head.length > 0) {
debug2("got illegal response body from proxy"); debug3("got illegal response body from proxy");
socket.destroy(); socket.destroy();
var error2 = new Error("got illegal response body from proxy"); var error2 = new Error("got illegal response body from proxy");
error2.code = "ECONNRESET"; error2.code = "ECONNRESET";
@@ -439,13 +439,13 @@ var require_tunnel = __commonJS({
self2.removeSocket(placeholder); self2.removeSocket(placeholder);
return; return;
} }
debug2("tunneling connection has established"); debug3("tunneling connection has established");
self2.sockets[self2.sockets.indexOf(placeholder)] = socket; self2.sockets[self2.sockets.indexOf(placeholder)] = socket;
return cb(socket); return cb(socket);
} }
function onError(cause) { function onError(cause) {
connectReq.removeAllListeners(); connectReq.removeAllListeners();
debug2( debug3(
"tunneling socket could not be established, cause=%s\n", "tunneling socket could not be established, cause=%s\n",
cause.message, cause.message,
cause.stack cause.stack
@@ -507,9 +507,9 @@ var require_tunnel = __commonJS({
} }
return target; return target;
} }
var debug2; var debug3;
if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) {
debug2 = function() { debug3 = function() {
var args = Array.prototype.slice.call(arguments); var args = Array.prototype.slice.call(arguments);
if (typeof args[0] === "string") { if (typeof args[0] === "string") {
args[0] = "TUNNEL: " + args[0]; args[0] = "TUNNEL: " + args[0];
@@ -519,10 +519,10 @@ var require_tunnel = __commonJS({
console.error.apply(console, args); console.error.apply(console, args);
}; };
} else { } else {
debug2 = function() { debug3 = function() {
}; };
} }
exports.debug = debug2; exports.debug = debug3;
} }
}); });
@@ -19733,10 +19733,10 @@ Support boolean input list: \`true | True | TRUE | false | False | FALSE\``);
return process.env["RUNNER_DEBUG"] === "1"; return process.env["RUNNER_DEBUG"] === "1";
} }
exports.isDebug = isDebug2; exports.isDebug = isDebug2;
function debug2(message) { function debug3(message) {
(0, command_1.issueCommand)("debug", {}, message); (0, command_1.issueCommand)("debug", {}, message);
} }
exports.debug = debug2; exports.debug = debug3;
function error2(message, properties = {}) { function error2(message, properties = {}) {
(0, command_1.issueCommand)("error", (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message); (0, command_1.issueCommand)("error", (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message);
} }
@@ -25515,7 +25515,12 @@ var isGitHubActions = !!process.env.GITHUB_ACTIONS;
var isInsideDocker = existsSync("/.dockerenv"); var isInsideDocker = existsSync("/.dockerenv");
// utils/log.ts // utils/log.ts
var isDebugEnabled = () => process.env.LOG_LEVEL === "debug" || process.env.ACTIONS_STEP_DEBUG === "true" || core.isDebug(); var isRunnerDebugEnabled = () => core.isDebug();
var isLocalDebugEnabled = () => process.env.LOG_LEVEL === "debug" || process.env.ACTIONS_STEP_DEBUG === "true";
var isDebugEnabled = () => isLocalDebugEnabled() || isRunnerDebugEnabled();
function ts() {
return isDebugEnabled() ? `[${(/* @__PURE__ */ new Date()).toISOString()}] ` : "";
}
function formatArgs(args) { function formatArgs(args) {
return args.map((arg) => { return args.map((arg) => {
if (typeof arg === "string") return arg; if (typeof arg === "string") return arg;
@@ -25626,19 +25631,16 @@ function separator(length = 50) {
const separatorText = "\u2500".repeat(length); const separatorText = "\u2500".repeat(length);
core.info(separatorText); core.info(separatorText);
} }
function ts() {
return isDebugEnabled() ? `[${(/* @__PURE__ */ new Date()).toISOString()}] ` : "";
}
var log = { var log = {
/** Print info message */ /** Print info message */
info: (...args) => { info: (...args) => {
core.info(`${ts()}${formatArgs(args)}`); core.info(`${ts()}${formatArgs(args)}`);
}, },
/** Print warning message */ /** Print a warning message. Use only for warnings that should be displayed in the job summary. */
warning: (...args) => { warning: (...args) => {
core.warning(`${ts()}${formatArgs(args)}`); core.warning(`${ts()}${formatArgs(args)}`);
}, },
/** Print error message */ /** Print an error message. Use only for errors that should be displayed in the job summary. */
error: (...args) => { error: (...args) => {
core.error(`${ts()}${formatArgs(args)}`); core.error(`${ts()}${formatArgs(args)}`);
}, },
@@ -25646,10 +25648,14 @@ var log = {
success: (...args) => { success: (...args) => {
core.info(`${ts()}\xBB ${formatArgs(args)}`); core.info(`${ts()}\xBB ${formatArgs(args)}`);
}, },
/** Print debug message (only if LOG_LEVEL=debug) */ /** Print debug message (only when debug mode is enabled) */
debug: (...args) => { debug: (...args) => {
if (isDebugEnabled()) { if (isRunnerDebugEnabled()) {
core.info(`[${(/* @__PURE__ */ new Date()).toISOString()}] [DEBUG] ${formatArgs(args)}`); core.debug(formatArgs(args));
return;
}
if (isLocalDebugEnabled()) {
core.info(`${ts()}[DEBUG] ${formatArgs(args)}`);
} }
}, },
/** Print a formatted box with text */ /** Print a formatted box with text */
@@ -25740,9 +25746,7 @@ async function retry(fn, options = {}) {
throw error2; throw error2;
} }
const delay = delayMs * attempt; const delay = delayMs * attempt;
log.warning( log.info(`\xBB ${label} failed (attempt ${attempt}/${maxAttempts}), retrying in ${delay}ms...`);
`\xBB ${label} failed (attempt ${attempt}/${maxAttempts}), retrying in ${delay}ms...`
);
await new Promise((resolve) => setTimeout(resolve, delay)); await new Promise((resolve) => setTimeout(resolve, delay));
} }
} }
@@ -25925,7 +25929,7 @@ async function revokeGitHubInstallationToken(token) {
}); });
log.debug("\xBB installation token revoked"); log.debug("\xBB installation token revoked");
} catch (error2) { } catch (error2) {
log.warning( log.info(
`Failed to revoke installation token: ${error2 instanceof Error ? error2.message : String(error2)}` `Failed to revoke installation token: ${error2 instanceof Error ? error2.message : String(error2)}`
); );
} }
+3 -3
View File
@@ -78,7 +78,7 @@ function detectSandboxMethod(): SandboxMethod {
} }
detectedSandboxMethod = "none"; detectedSandboxMethod = "none";
log.warning("PID namespace isolation not available - falling back to env filtering only"); log.info("PID namespace isolation not available - falling back to env filtering only");
return "none"; return "none";
} }
@@ -243,8 +243,8 @@ Use this tool to:
const finalExitCode = exitCode ?? (timedOut ? 124 : -1); const finalExitCode = exitCode ?? (timedOut ? 124 : -1);
if (finalExitCode !== 0) { if (finalExitCode !== 0) {
log.error(`bash command failed with exit code ${finalExitCode}: ${params.command}`); log.info(`bash command failed with exit code ${finalExitCode}: ${params.command}`);
if (output) log.error(`output: ${output.trim()}`); if (output) log.info(`output: ${output.trim()}`);
} }
return { return {
+1 -1
View File
@@ -213,7 +213,7 @@ export function GetCheckSuiteLogsTool(ctx: ToolContext) {
log.debug(`analyzed logs for job ${job.name}: ${analysis.index.length} indexed lines`); log.debug(`analyzed logs for job ${job.name}: ${analysis.index.length} indexed lines`);
} catch (error) { } catch (error) {
log.error(`failed to fetch logs for job ${job.id}: ${error}`); log.info(`failed to fetch logs for job ${job.id}: ${error}`);
} }
} }
} }
+1 -1
View File
@@ -112,7 +112,7 @@ export function DelegateTool(ctx: ToolContext) {
} catch (err) { } catch (err) {
// normalize agent crashes into the same return shape as clean failures // normalize agent crashes into the same return shape as clean failures
const errorMessage = err instanceof Error ? err.message : String(err); const errorMessage = err instanceof Error ? err.message : String(err);
log.error(`» delegation to ${selectedMode.name} crashed: ${errorMessage}`); log.info(`» delegation to ${selectedMode.name} crashed: ${errorMessage}`);
return { return {
success: false, success: false,
mode: selectedMode.name, mode: selectedMode.name,
+1 -1
View File
@@ -632,7 +632,7 @@ export function ResolveReviewThreadTool(ctx: ToolContext) {
const message = isResolved const message = isResolved
? `thread ${params.thread_id} was already resolved` ? `thread ${params.thread_id} was already resolved`
: `failed to resolve thread ${params.thread_id}: ${errorMessage}`; : `failed to resolve thread ${params.thread_id}: ${errorMessage}`;
log.warning(message); log.info(message);
return { return {
thread_id: params.thread_id, thread_id: params.thread_id,
+1 -1
View File
@@ -53,7 +53,7 @@ export const execute = <T, R extends Record<string, any> | string>(
} catch (error) { } catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error); const errorMessage = error instanceof Error ? error.message : String(error);
const prefix = toolName ? `[${toolName}]` : "tool"; const prefix = toolName ? `[${toolName}]` : "tool";
log.error(`${prefix} error: ${errorMessage}`); log.info(`${prefix} error: ${errorMessage}`);
log.debug(`${prefix} params: ${formatJsonValue(params)}`); log.debug(`${prefix} params: ${formatJsonValue(params)}`);
return handleToolError(error); return handleToolError(error);
} }
+69 -63
View File
@@ -399,7 +399,7 @@ var require_tunnel = __commonJS({
connectOptions.headers = connectOptions.headers || {}; connectOptions.headers = connectOptions.headers || {};
connectOptions.headers["Proxy-Authorization"] = "Basic " + new Buffer(connectOptions.proxyAuth).toString("base64"); connectOptions.headers["Proxy-Authorization"] = "Basic " + new Buffer(connectOptions.proxyAuth).toString("base64");
} }
debug("making CONNECT request"); debug2("making CONNECT request");
var connectReq = self2.request(connectOptions); var connectReq = self2.request(connectOptions);
connectReq.useChunkedEncodingByDefault = false; connectReq.useChunkedEncodingByDefault = false;
connectReq.once("response", onResponse); connectReq.once("response", onResponse);
@@ -419,7 +419,7 @@ var require_tunnel = __commonJS({
connectReq.removeAllListeners(); connectReq.removeAllListeners();
socket.removeAllListeners(); socket.removeAllListeners();
if (res.statusCode !== 200) { if (res.statusCode !== 200) {
debug( debug2(
"tunneling socket could not be established, statusCode=%d", "tunneling socket could not be established, statusCode=%d",
res.statusCode res.statusCode
); );
@@ -431,7 +431,7 @@ var require_tunnel = __commonJS({
return; return;
} }
if (head.length > 0) { if (head.length > 0) {
debug("got illegal response body from proxy"); debug2("got illegal response body from proxy");
socket.destroy(); socket.destroy();
var error2 = new Error("got illegal response body from proxy"); var error2 = new Error("got illegal response body from proxy");
error2.code = "ECONNRESET"; error2.code = "ECONNRESET";
@@ -439,13 +439,13 @@ var require_tunnel = __commonJS({
self2.removeSocket(placeholder); self2.removeSocket(placeholder);
return; return;
} }
debug("tunneling connection has established"); debug2("tunneling connection has established");
self2.sockets[self2.sockets.indexOf(placeholder)] = socket; self2.sockets[self2.sockets.indexOf(placeholder)] = socket;
return cb(socket); return cb(socket);
} }
function onError(cause) { function onError(cause) {
connectReq.removeAllListeners(); connectReq.removeAllListeners();
debug( debug2(
"tunneling socket could not be established, cause=%s\n", "tunneling socket could not be established, cause=%s\n",
cause.message, cause.message,
cause.stack cause.stack
@@ -507,9 +507,9 @@ var require_tunnel = __commonJS({
} }
return target; return target;
} }
var debug; var debug2;
if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) {
debug = function() { debug2 = function() {
var args2 = Array.prototype.slice.call(arguments); var args2 = Array.prototype.slice.call(arguments);
if (typeof args2[0] === "string") { if (typeof args2[0] === "string") {
args2[0] = "TUNNEL: " + args2[0]; args2[0] = "TUNNEL: " + args2[0];
@@ -519,10 +519,10 @@ var require_tunnel = __commonJS({
console.error.apply(console, args2); console.error.apply(console, args2);
}; };
} else { } else {
debug = function() { debug2 = function() {
}; };
} }
exports.debug = debug; exports.debug = debug2;
} }
}); });
@@ -19733,10 +19733,10 @@ Support boolean input list: \`true | True | TRUE | false | False | FALSE\``);
return process.env["RUNNER_DEBUG"] === "1"; return process.env["RUNNER_DEBUG"] === "1";
} }
exports.isDebug = isDebug2; exports.isDebug = isDebug2;
function debug(message) { function debug2(message) {
(0, command_1.issueCommand)("debug", {}, message); (0, command_1.issueCommand)("debug", {}, message);
} }
exports.debug = debug; exports.debug = debug2;
function error2(message, properties = {}) { function error2(message, properties = {}) {
(0, command_1.issueCommand)("error", (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message); (0, command_1.issueCommand)("error", (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message);
} }
@@ -26949,9 +26949,9 @@ var require_constants6 = __commonJS({
var require_debug = __commonJS({ var require_debug = __commonJS({
"node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/debug.js"(exports, module) { "node_modules/.pnpm/semver@7.7.3/node_modules/semver/internal/debug.js"(exports, module) {
"use strict"; "use strict";
var debug = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args2) => console.error("SEMVER", ...args2) : () => { var debug2 = typeof process === "object" && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG) ? (...args2) => console.error("SEMVER", ...args2) : () => {
}; };
module.exports = debug; module.exports = debug2;
} }
}); });
@@ -26964,7 +26964,7 @@ var require_re = __commonJS({
MAX_SAFE_BUILD_LENGTH, MAX_SAFE_BUILD_LENGTH,
MAX_LENGTH MAX_LENGTH
} = require_constants6(); } = require_constants6();
var debug = require_debug(); var debug2 = require_debug();
exports = module.exports = {}; exports = module.exports = {};
var re = exports.re = []; var re = exports.re = [];
var safeRe = exports.safeRe = []; var safeRe = exports.safeRe = [];
@@ -26987,7 +26987,7 @@ var require_re = __commonJS({
var createToken = (name, value2, isGlobal) => { var createToken = (name, value2, isGlobal) => {
const safe = makeSafeRegex(value2); const safe = makeSafeRegex(value2);
const index = R++; const index = R++;
debug(name, index, value2); debug2(name, index, value2);
t[name] = index; t[name] = index;
src[index] = value2; src[index] = value2;
safeSrc[index] = safe; safeSrc[index] = safe;
@@ -27091,7 +27091,7 @@ var require_identifiers = __commonJS({
var require_semver = __commonJS({ var require_semver = __commonJS({
"node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/semver.js"(exports, module) { "node_modules/.pnpm/semver@7.7.3/node_modules/semver/classes/semver.js"(exports, module) {
"use strict"; "use strict";
var debug = require_debug(); var debug2 = require_debug();
var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants6(); var { MAX_LENGTH, MAX_SAFE_INTEGER } = require_constants6();
var { safeRe: re, t } = require_re(); var { safeRe: re, t } = require_re();
var parseOptions = require_parse_options(); var parseOptions = require_parse_options();
@@ -27113,7 +27113,7 @@ var require_semver = __commonJS({
`version is longer than ${MAX_LENGTH} characters` `version is longer than ${MAX_LENGTH} characters`
); );
} }
debug("SemVer", version, options); debug2("SemVer", version, options);
this.options = options; this.options = options;
this.loose = !!options.loose; this.loose = !!options.loose;
this.includePrerelease = !!options.includePrerelease; this.includePrerelease = !!options.includePrerelease;
@@ -27161,7 +27161,7 @@ var require_semver = __commonJS({
return this.version; return this.version;
} }
compare(other) { compare(other) {
debug("SemVer.compare", this.version, this.options, other); debug2("SemVer.compare", this.version, this.options, other);
if (!(other instanceof _SemVer)) { if (!(other instanceof _SemVer)) {
if (typeof other === "string" && other === this.version) { if (typeof other === "string" && other === this.version) {
return 0; return 0;
@@ -27212,7 +27212,7 @@ var require_semver = __commonJS({
do { do {
const a = this.prerelease[i]; const a = this.prerelease[i];
const b = other.prerelease[i]; const b = other.prerelease[i];
debug("prerelease compare", i, a, b); debug2("prerelease compare", i, a, b);
if (a === void 0 && b === void 0) { if (a === void 0 && b === void 0) {
return 0; return 0;
} else if (b === void 0) { } else if (b === void 0) {
@@ -27234,7 +27234,7 @@ var require_semver = __commonJS({
do { do {
const a = this.build[i]; const a = this.build[i];
const b = other.build[i]; const b = other.build[i];
debug("build compare", i, a, b); debug2("build compare", i, a, b);
if (a === void 0 && b === void 0) { if (a === void 0 && b === void 0) {
return 0; return 0;
} else if (b === void 0) { } else if (b === void 0) {
@@ -27862,21 +27862,21 @@ var require_range = __commonJS({
const loose = this.options.loose; const loose = this.options.loose;
const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]; const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE];
range2 = range2.replace(hr, hyphenReplace(this.options.includePrerelease)); range2 = range2.replace(hr, hyphenReplace(this.options.includePrerelease));
debug("hyphen replace", range2); debug2("hyphen replace", range2);
range2 = range2.replace(re[t.COMPARATORTRIM], comparatorTrimReplace); range2 = range2.replace(re[t.COMPARATORTRIM], comparatorTrimReplace);
debug("comparator trim", range2); debug2("comparator trim", range2);
range2 = range2.replace(re[t.TILDETRIM], tildeTrimReplace); range2 = range2.replace(re[t.TILDETRIM], tildeTrimReplace);
debug("tilde trim", range2); debug2("tilde trim", range2);
range2 = range2.replace(re[t.CARETTRIM], caretTrimReplace); range2 = range2.replace(re[t.CARETTRIM], caretTrimReplace);
debug("caret trim", range2); debug2("caret trim", range2);
let rangeList = range2.split(" ").map((comp) => parseComparator(comp, this.options)).join(" ").split(/\s+/).map((comp) => replaceGTE0(comp, this.options)); let rangeList = range2.split(" ").map((comp) => parseComparator(comp, this.options)).join(" ").split(/\s+/).map((comp) => replaceGTE0(comp, this.options));
if (loose) { if (loose) {
rangeList = rangeList.filter((comp) => { rangeList = rangeList.filter((comp) => {
debug("loose invalid filter", comp, this.options); debug2("loose invalid filter", comp, this.options);
return !!comp.match(re[t.COMPARATORLOOSE]); return !!comp.match(re[t.COMPARATORLOOSE]);
}); });
} }
debug("range list", rangeList); debug2("range list", rangeList);
const rangeMap = /* @__PURE__ */ new Map(); const rangeMap = /* @__PURE__ */ new Map();
const comparators = rangeList.map((comp) => new Comparator(comp, this.options)); const comparators = rangeList.map((comp) => new Comparator(comp, this.options));
for (const comp of comparators) { for (const comp of comparators) {
@@ -27931,7 +27931,7 @@ var require_range = __commonJS({
var cache = new LRU(); var cache = new LRU();
var parseOptions = require_parse_options(); var parseOptions = require_parse_options();
var Comparator = require_comparator(); var Comparator = require_comparator();
var debug = require_debug(); var debug2 = require_debug();
var SemVer = require_semver(); var SemVer = require_semver();
var { var {
safeRe: re, safeRe: re,
@@ -27957,15 +27957,15 @@ var require_range = __commonJS({
}; };
var parseComparator = (comp, options) => { var parseComparator = (comp, options) => {
comp = comp.replace(re[t.BUILD], ""); comp = comp.replace(re[t.BUILD], "");
debug("comp", comp, options); debug2("comp", comp, options);
comp = replaceCarets(comp, options); comp = replaceCarets(comp, options);
debug("caret", comp); debug2("caret", comp);
comp = replaceTildes(comp, options); comp = replaceTildes(comp, options);
debug("tildes", comp); debug2("tildes", comp);
comp = replaceXRanges(comp, options); comp = replaceXRanges(comp, options);
debug("xrange", comp); debug2("xrange", comp);
comp = replaceStars(comp, options); comp = replaceStars(comp, options);
debug("stars", comp); debug2("stars", comp);
return comp; return comp;
}; };
var isX = (id) => !id || id.toLowerCase() === "x" || id === "*"; var isX = (id) => !id || id.toLowerCase() === "x" || id === "*";
@@ -27975,7 +27975,7 @@ var require_range = __commonJS({
var replaceTilde = (comp, options) => { var replaceTilde = (comp, options) => {
const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]; const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];
return comp.replace(r, (_, M, m, p, pr) => { return comp.replace(r, (_, M, m, p, pr) => {
debug("tilde", comp, _, M, m, p, pr); debug2("tilde", comp, _, M, m, p, pr);
let ret; let ret;
if (isX(M)) { if (isX(M)) {
ret = ""; ret = "";
@@ -27984,12 +27984,12 @@ var require_range = __commonJS({
} else if (isX(p)) { } else if (isX(p)) {
ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`; ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`;
} else if (pr) { } else if (pr) {
debug("replaceTilde pr", pr); debug2("replaceTilde pr", pr);
ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`; ret = `>=${M}.${m}.${p}-${pr} <${M}.${+m + 1}.0-0`;
} else { } else {
ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`; ret = `>=${M}.${m}.${p} <${M}.${+m + 1}.0-0`;
} }
debug("tilde return", ret); debug2("tilde return", ret);
return ret; return ret;
}); });
}; };
@@ -27997,11 +27997,11 @@ var require_range = __commonJS({
return comp.trim().split(/\s+/).map((c) => replaceCaret(c, options)).join(" "); return comp.trim().split(/\s+/).map((c) => replaceCaret(c, options)).join(" ");
}; };
var replaceCaret = (comp, options) => { var replaceCaret = (comp, options) => {
debug("caret", comp, options); debug2("caret", comp, options);
const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]; const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET];
const z = options.includePrerelease ? "-0" : ""; const z = options.includePrerelease ? "-0" : "";
return comp.replace(r, (_, M, m, p, pr) => { return comp.replace(r, (_, M, m, p, pr) => {
debug("caret", comp, _, M, m, p, pr); debug2("caret", comp, _, M, m, p, pr);
let ret; let ret;
if (isX(M)) { if (isX(M)) {
ret = ""; ret = "";
@@ -28014,7 +28014,7 @@ var require_range = __commonJS({
ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`; ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`;
} }
} else if (pr) { } else if (pr) {
debug("replaceCaret pr", pr); debug2("replaceCaret pr", pr);
if (M === "0") { if (M === "0") {
if (m === "0") { if (m === "0") {
ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`; ret = `>=${M}.${m}.${p}-${pr} <${M}.${m}.${+p + 1}-0`;
@@ -28025,7 +28025,7 @@ var require_range = __commonJS({
ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`; ret = `>=${M}.${m}.${p}-${pr} <${+M + 1}.0.0-0`;
} }
} else { } else {
debug("no pr"); debug2("no pr");
if (M === "0") { if (M === "0") {
if (m === "0") { if (m === "0") {
ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`; ret = `>=${M}.${m}.${p}${z} <${M}.${m}.${+p + 1}-0`;
@@ -28036,19 +28036,19 @@ var require_range = __commonJS({
ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`; ret = `>=${M}.${m}.${p} <${+M + 1}.0.0-0`;
} }
} }
debug("caret return", ret); debug2("caret return", ret);
return ret; return ret;
}); });
}; };
var replaceXRanges = (comp, options) => { var replaceXRanges = (comp, options) => {
debug("replaceXRanges", comp, options); debug2("replaceXRanges", comp, options);
return comp.split(/\s+/).map((c) => replaceXRange(c, options)).join(" "); return comp.split(/\s+/).map((c) => replaceXRange(c, options)).join(" ");
}; };
var replaceXRange = (comp, options) => { var replaceXRange = (comp, options) => {
comp = comp.trim(); comp = comp.trim();
const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]; const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
return comp.replace(r, (ret, gtlt, M, m, p, pr) => { return comp.replace(r, (ret, gtlt, M, m, p, pr) => {
debug("xRange", comp, ret, gtlt, M, m, p, pr); debug2("xRange", comp, ret, gtlt, M, m, p, pr);
const xM = isX(M); const xM = isX(M);
const xm = xM || isX(m); const xm = xM || isX(m);
const xp = xm || isX(p); const xp = xm || isX(p);
@@ -28095,16 +28095,16 @@ var require_range = __commonJS({
} else if (xp) { } else if (xp) {
ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`; ret = `>=${M}.${m}.0${pr} <${M}.${+m + 1}.0-0`;
} }
debug("xRange return", ret); debug2("xRange return", ret);
return ret; return ret;
}); });
}; };
var replaceStars = (comp, options) => { var replaceStars = (comp, options) => {
debug("replaceStars", comp, options); debug2("replaceStars", comp, options);
return comp.trim().replace(re[t.STAR], ""); return comp.trim().replace(re[t.STAR], "");
}; };
var replaceGTE0 = (comp, options) => { var replaceGTE0 = (comp, options) => {
debug("replaceGTE0", comp, options); debug2("replaceGTE0", comp, options);
return comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], ""); return comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], "");
}; };
var hyphenReplace = (incPr) => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => { var hyphenReplace = (incPr) => ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr) => {
@@ -28142,7 +28142,7 @@ var require_range = __commonJS({
} }
if (version.prerelease.length && !options.includePrerelease) { if (version.prerelease.length && !options.includePrerelease) {
for (let i = 0; i < set.length; i++) { for (let i = 0; i < set.length; i++) {
debug(set[i].semver); debug2(set[i].semver);
if (set[i].semver === Comparator.ANY) { if (set[i].semver === Comparator.ANY) {
continue; continue;
} }
@@ -28179,7 +28179,7 @@ var require_comparator = __commonJS({
} }
} }
comp = comp.trim().split(/\s+/).join(" "); comp = comp.trim().split(/\s+/).join(" ");
debug("comparator", comp, options); debug2("comparator", comp, options);
this.options = options; this.options = options;
this.loose = !!options.loose; this.loose = !!options.loose;
this.parse(comp); this.parse(comp);
@@ -28188,7 +28188,7 @@ var require_comparator = __commonJS({
} else { } else {
this.value = this.operator + this.semver.version; this.value = this.operator + this.semver.version;
} }
debug("comp", this); debug2("comp", this);
} }
parse(comp) { parse(comp) {
const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]; const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
@@ -28210,7 +28210,7 @@ var require_comparator = __commonJS({
return this.value; return this.value;
} }
test(version) { test(version) {
debug("Comparator.test", version, this.options.loose); debug2("Comparator.test", version, this.options.loose);
if (this.semver === ANY || version === ANY) { if (this.semver === ANY || version === ANY) {
return true; return true;
} }
@@ -28267,7 +28267,7 @@ var require_comparator = __commonJS({
var parseOptions = require_parse_options(); var parseOptions = require_parse_options();
var { safeRe: re, t } = require_re(); var { safeRe: re, t } = require_re();
var cmp = require_cmp(); var cmp = require_cmp();
var debug = require_debug(); var debug2 = require_debug();
var SemVer = require_semver(); var SemVer = require_semver();
var Range = require_range(); var Range = require_range();
} }
@@ -28854,7 +28854,12 @@ var isGitHubActions = !!process.env.GITHUB_ACTIONS;
var isInsideDocker = existsSync("/.dockerenv"); var isInsideDocker = existsSync("/.dockerenv");
// utils/log.ts // utils/log.ts
var isDebugEnabled = () => process.env.LOG_LEVEL === "debug" || process.env.ACTIONS_STEP_DEBUG === "true" || core.isDebug(); var isRunnerDebugEnabled = () => core.isDebug();
var isLocalDebugEnabled = () => process.env.LOG_LEVEL === "debug" || process.env.ACTIONS_STEP_DEBUG === "true";
var isDebugEnabled = () => isLocalDebugEnabled() || isRunnerDebugEnabled();
function ts() {
return isDebugEnabled() ? `[${(/* @__PURE__ */ new Date()).toISOString()}] ` : "";
}
function formatArgs(args2) { function formatArgs(args2) {
return args2.map((arg) => { return args2.map((arg) => {
if (typeof arg === "string") return arg; if (typeof arg === "string") return arg;
@@ -28965,19 +28970,16 @@ function separator(length = 50) {
const separatorText = "\u2500".repeat(length); const separatorText = "\u2500".repeat(length);
core.info(separatorText); core.info(separatorText);
} }
function ts() {
return isDebugEnabled() ? `[${(/* @__PURE__ */ new Date()).toISOString()}] ` : "";
}
var log = { var log = {
/** Print info message */ /** Print info message */
info: (...args2) => { info: (...args2) => {
core.info(`${ts()}${formatArgs(args2)}`); core.info(`${ts()}${formatArgs(args2)}`);
}, },
/** Print warning message */ /** Print a warning message. Use only for warnings that should be displayed in the job summary. */
warning: (...args2) => { warning: (...args2) => {
core.warning(`${ts()}${formatArgs(args2)}`); core.warning(`${ts()}${formatArgs(args2)}`);
}, },
/** Print error message */ /** Print an error message. Use only for errors that should be displayed in the job summary. */
error: (...args2) => { error: (...args2) => {
core.error(`${ts()}${formatArgs(args2)}`); core.error(`${ts()}${formatArgs(args2)}`);
}, },
@@ -28985,10 +28987,14 @@ var log = {
success: (...args2) => { success: (...args2) => {
core.info(`${ts()}\xBB ${formatArgs(args2)}`); core.info(`${ts()}\xBB ${formatArgs(args2)}`);
}, },
/** Print debug message (only if LOG_LEVEL=debug) */ /** Print debug message (only when debug mode is enabled) */
debug: (...args2) => { debug: (...args2) => {
if (isDebugEnabled()) { if (isRunnerDebugEnabled()) {
core.info(`[${(/* @__PURE__ */ new Date()).toISOString()}] [DEBUG] ${formatArgs(args2)}`); core.debug(formatArgs(args2));
return;
}
if (isLocalDebugEnabled()) {
core.info(`${ts()}[DEBUG] ${formatArgs(args2)}`);
} }
}, },
/** Print a formatted box with text */ /** Print a formatted box with text */
@@ -41431,7 +41437,7 @@ async function validateStuckProgressComment(promptInput, octokit, owner, repo) {
return null; return null;
} catch (error2) { } catch (error2) {
const errorMessage = error2 instanceof Error ? error2.message : String(error2); const errorMessage = error2 instanceof Error ? error2.message : String(error2);
log.error(`[post] failed to get comment ${commentId}: ${errorMessage}`); log.info(`[post] failed to get comment ${commentId}: ${errorMessage}`);
return null; return null;
} }
} }
@@ -41458,7 +41464,7 @@ async function getIsCancelled(params) {
} }
log.info("[post] no cancellation found, assuming failure"); log.info("[post] no cancellation found, assuming failure");
} catch (error2) { } catch (error2) {
log.warning( log.info(
`[post] failed to get job status: ${error2 instanceof Error ? error2.message : String(error2)}` `[post] failed to get job status: ${error2 instanceof Error ? error2.message : String(error2)}`
); );
} }
@@ -41472,7 +41478,7 @@ async function runPostCleanup() {
const resolved = resolvePromptInput(); const resolved = resolvePromptInput();
if (typeof resolved !== "string") promptInput = resolved; if (typeof resolved !== "string") promptInput = resolved;
} catch (error2) { } catch (error2) {
log.warning( log.info(
`[post] failed to resolve prompt input: ${error2 instanceof Error ? error2.message : String(error2)}` `[post] failed to resolve prompt input: ${error2 instanceof Error ? error2.message : String(error2)}`
); );
} }
@@ -41503,7 +41509,7 @@ async function runPostCleanup() {
log.info("\xBB [post] successfully updated progress comment"); log.info("\xBB [post] successfully updated progress comment");
} catch (error2) { } catch (error2) {
const errorMessage = error2 instanceof Error ? error2.message : String(error2); const errorMessage = error2 instanceof Error ? error2.message : String(error2);
log.error(`[post] failed to update comment: ${errorMessage}`); log.info(`[post] failed to update comment: ${errorMessage}`);
} }
} }
+1 -1
View File
@@ -161,7 +161,7 @@ export function $git(
if (result.status !== 0) { if (result.status !== 0) {
const stderr = result.stderr?.trim() ?? ""; const stderr = result.stderr?.trim() ?? "";
log.error(`git ${subcommand} failed: ${stderr}`); log.info(`git ${subcommand} failed: ${stderr}`);
throw new Error(`git ${subcommand} failed: ${stderr}`); throw new Error(`git ${subcommand} failed: ${stderr}`);
} }
+20 -12
View File
@@ -6,8 +6,17 @@ import * as core from "@actions/core";
import { table } from "table"; import { table } from "table";
import { isGitHubActions, isInsideDocker } from "./globals.ts"; import { isGitHubActions, isInsideDocker } from "./globals.ts";
const isDebugEnabled = () => const isRunnerDebugEnabled = () => core.isDebug();
process.env.LOG_LEVEL === "debug" || process.env.ACTIONS_STEP_DEBUG === "true" || core.isDebug();
const isLocalDebugEnabled = () =>
process.env.LOG_LEVEL === "debug" || process.env.ACTIONS_STEP_DEBUG === "true";
const isDebugEnabled = () => isLocalDebugEnabled() || isRunnerDebugEnabled();
/** timestamp prefix for debug mode — empty string when debug is off */
function ts(): string {
return isDebugEnabled() ? `[${new Date().toISOString()}] ` : "";
}
/** /**
* Format arguments into a single string for logging * Format arguments into a single string for logging
@@ -206,23 +215,18 @@ function separator(length: number = 50): void {
/** /**
* Main logging utility object - import this once and access all utilities * Main logging utility object - import this once and access all utilities
*/ */
/** timestamp prefix for debug mode — empty string when debug is off */
function ts(): string {
return isDebugEnabled() ? `[${new Date().toISOString()}] ` : "";
}
export const log = { export const log = {
/** Print info message */ /** Print info message */
info: (...args: unknown[]): void => { info: (...args: unknown[]): void => {
core.info(`${ts()}${formatArgs(args)}`); core.info(`${ts()}${formatArgs(args)}`);
}, },
/** Print warning message */ /** Print a warning message. Use only for warnings that should be displayed in the job summary. */
warning: (...args: unknown[]): void => { warning: (...args: unknown[]): void => {
core.warning(`${ts()}${formatArgs(args)}`); core.warning(`${ts()}${formatArgs(args)}`);
}, },
/** Print error message */ /** Print an error message. Use only for errors that should be displayed in the job summary. */
error: (...args: unknown[]): void => { error: (...args: unknown[]): void => {
core.error(`${ts()}${formatArgs(args)}`); core.error(`${ts()}${formatArgs(args)}`);
}, },
@@ -232,10 +236,14 @@ export const log = {
core.info(`${ts()}» ${formatArgs(args)}`); core.info(`${ts()}» ${formatArgs(args)}`);
}, },
/** Print debug message (only if LOG_LEVEL=debug) */ /** Print debug message (only when debug mode is enabled) */
debug: (...args: unknown[]): void => { debug: (...args: unknown[]): void => {
if (isDebugEnabled()) { if (isRunnerDebugEnabled()) {
core.info(`[${new Date().toISOString()}] [DEBUG] ${formatArgs(args)}`); core.debug(formatArgs(args));
return;
}
if (isLocalDebugEnabled()) {
core.info(`${ts()}[DEBUG] ${formatArgs(args)}`);
} }
}, },
+4 -4
View File
@@ -50,7 +50,7 @@ async function validateStuckProgressComment(
return null; return null;
} catch (error) { } catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error); const errorMessage = error instanceof Error ? error.message : String(error);
log.error(`[post] failed to get comment ${commentId}: ${errorMessage}`); log.info(`[post] failed to get comment ${commentId}: ${errorMessage}`);
return null; return null;
} }
} }
@@ -97,7 +97,7 @@ async function getIsCancelled(params: {
} }
log.info("[post] no cancellation found, assuming failure"); log.info("[post] no cancellation found, assuming failure");
} catch (error) { } catch (error) {
log.warning( log.info(
`[post] failed to get job status: ${error instanceof Error ? error.message : String(error)}` `[post] failed to get job status: ${error instanceof Error ? error.message : String(error)}`
); );
} }
@@ -116,7 +116,7 @@ export async function runPostCleanup(): Promise<void> {
const resolved = resolvePromptInput(); const resolved = resolvePromptInput();
if (typeof resolved !== "string") promptInput = resolved; if (typeof resolved !== "string") promptInput = resolved;
} catch (error) { } catch (error) {
log.warning( log.info(
`[post] failed to resolve prompt input: ${error instanceof Error ? error.message : String(error)}` `[post] failed to resolve prompt input: ${error instanceof Error ? error.message : String(error)}`
); );
} }
@@ -158,6 +158,6 @@ export async function runPostCleanup(): Promise<void> {
log.info("» [post] successfully updated progress comment"); log.info("» [post] successfully updated progress comment");
} catch (error) { } catch (error) {
const errorMessage = error instanceof Error ? error.message : String(error); const errorMessage = error instanceof Error ? error.message : String(error);
log.error(`[post] failed to update comment: ${errorMessage}`); log.info(`[post] failed to update comment: ${errorMessage}`);
} }
} }
+1 -3
View File
@@ -37,9 +37,7 @@ export async function retry<T>(fn: () => Promise<T>, options: RetryOptions = {})
} }
const delay = delayMs * attempt; const delay = delayMs * attempt;
log.warning( log.info(`» ${label} failed (attempt ${attempt}/${maxAttempts}), retrying in ${delay}ms...`);
`» ${label} failed (attempt ${attempt}/${maxAttempts}), retrying in ${delay}ms...`
);
await new Promise((resolve) => setTimeout(resolve, delay)); await new Promise((resolve) => setTimeout(resolve, delay));
} }
} }
+1 -3
View File
@@ -121,9 +121,7 @@ export async function setupGit(params: SetupGitParams): Promise<void> {
} catch (error) { } catch (error) {
// If git config fails, log warning but don't fail the action // If git config fails, log warning but don't fail the action
// This can happen if we're not in a git repo or git isn't available // This can happen if we're not in a git repo or git isn't available
log.warning( log.info(`Failed to set git config: ${error instanceof Error ? error.message : String(error)}`);
`Failed to set git config: ${error instanceof Error ? error.message : String(error)}`
);
} }
// 2. setup authentication // 2. setup authentication
+1 -1
View File
@@ -157,7 +157,7 @@ export async function spawn(options: SpawnOptions): Promise<SpawnResult> {
if (idleMs > activityTimeoutMs) { if (idleMs > activityTimeoutMs) {
isActivityTimedOut = true; isActivityTimedOut = true;
const idleSec = Math.round(idleMs / 1000); const idleSec = Math.round(idleMs / 1000);
log.error(`no output for ${idleSec}s from pid=${child.pid} (${cmd}), killing process`); log.info(`no output for ${idleSec}s from pid=${child.pid} (${cmd}), killing process`);
child.kill("SIGKILL"); child.kill("SIGKILL");
clearInterval(activityCheckIntervalId); clearInterval(activityCheckIntervalId);
} }
+1 -1
View File
@@ -169,7 +169,7 @@ export async function revokeGitHubInstallationToken(token: string): Promise<void
}); });
log.debug("» installation token revoked"); log.debug("» installation token revoked");
} catch (error) { } catch (error) {
log.warning( log.info(
`Failed to revoke installation token: ${error instanceof Error ? error.message : String(error)}` `Failed to revoke installation token: ${error instanceof Error ? error.message : String(error)}`
); );
} }