@vzn/vx 0.0.79 → 0.0.81
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +5 -5
- package/src/orchestrator/logger.ts +19 -12
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vzn/vx",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.81",
|
|
4
4
|
"description": "An open, extensible monorepo task runner.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -17,10 +17,10 @@
|
|
|
17
17
|
"node": ">=18"
|
|
18
18
|
},
|
|
19
19
|
"optionalDependencies": {
|
|
20
|
-
"@vzn/vx-linux-x64": "0.0.
|
|
21
|
-
"@vzn/vx-linux-arm64": "0.0.
|
|
22
|
-
"@vzn/vx-darwin-x64": "0.0.
|
|
23
|
-
"@vzn/vx-darwin-arm64": "0.0.
|
|
20
|
+
"@vzn/vx-linux-x64": "0.0.81",
|
|
21
|
+
"@vzn/vx-linux-arm64": "0.0.81",
|
|
22
|
+
"@vzn/vx-darwin-x64": "0.0.81",
|
|
23
|
+
"@vzn/vx-darwin-arm64": "0.0.81"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@anthropic-ai/sandbox-runtime": "^0.0.76"
|
|
@@ -97,10 +97,11 @@ export interface DefaultLogger extends Logger {
|
|
|
97
97
|
* broad — news only: one `success` line per executed task,
|
|
98
98
|
* full frames for failures, silence for cache hits.
|
|
99
99
|
*
|
|
100
|
-
* `gha` (
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
* and emit an `::error`
|
|
100
|
+
* `gha` (on GitHub Actions, any mode): task output is fenced from
|
|
101
|
+
* workflow commands. In full mode each task's block is also wrapped in
|
|
102
|
+
* `::group::` / `::endgroup::` so tasks collapse in the log viewer —
|
|
103
|
+
* except failed tasks, which stay pre-expanded and emit an `::error`
|
|
104
|
+
* annotation instead.
|
|
104
105
|
*
|
|
105
106
|
* `ci`: a truthy CI env was detected. Suppresses the dynamic status
|
|
106
107
|
* line even if stdout happens to be a TTY.
|
|
@@ -163,7 +164,7 @@ export function resolveOutputView(
|
|
|
163
164
|
const gha = truthyEnv(env['GITHUB_ACTIONS'])
|
|
164
165
|
const mk = (mode: OutputView['mode']): OutputView => ({
|
|
165
166
|
mode,
|
|
166
|
-
...(
|
|
167
|
+
...(gha ? { gha: true } : {}),
|
|
167
168
|
...(ci ? { ci: true } : {}),
|
|
168
169
|
})
|
|
169
170
|
if (options.outputLogs !== undefined) return mk(options.outputLogs)
|
|
@@ -232,6 +233,10 @@ export function defaultLogger(
|
|
|
232
233
|
// One per run, and only in GHA mode: the fence token must be something the
|
|
233
234
|
// fenced task output cannot print.
|
|
234
235
|
const ghaToken = view.gha === true ? crypto.randomUUID() : ''
|
|
236
|
+
// A task's own text, fenced on GitHub Actions: the frames `errors-only`
|
|
237
|
+
// and `broad` defer and a server's tail printed a task's `::error::` raw.
|
|
238
|
+
const fenced = (block: string): string =>
|
|
239
|
+
view.gha === true && block.length > 0 ? ghaFence(block, ghaToken) : block
|
|
235
240
|
|
|
236
241
|
// All stdout flows through the writer so the status line can never
|
|
237
242
|
// interleave with content. Inert (pure passthrough) on non-TTY
|
|
@@ -487,12 +492,14 @@ export function defaultLogger(
|
|
|
487
492
|
// its buffered output belongs to the frame it never got.
|
|
488
493
|
if (t.outcome === undefined) continue
|
|
489
494
|
emitBlock(
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
495
|
+
fenced(
|
|
496
|
+
formatPersistentTailBlock(
|
|
497
|
+
t.node,
|
|
498
|
+
t.outcome,
|
|
499
|
+
{ stdout: tailText(t.out), stderr: tailText(t.err) },
|
|
500
|
+
{ stdout: t.out.dropped, stderr: t.err.dropped },
|
|
501
|
+
colors,
|
|
502
|
+
),
|
|
496
503
|
),
|
|
497
504
|
)
|
|
498
505
|
}
|
|
@@ -508,7 +515,7 @@ export function defaultLogger(
|
|
|
508
515
|
// Guarded for repeat runEnd calls.
|
|
509
516
|
if (!flushedFailures && deferredFailures.length > 0) {
|
|
510
517
|
flushedFailures = true
|
|
511
|
-
for (const block of deferredFailures) emitBlock(block)
|
|
518
|
+
for (const block of deferredFailures) emitBlock(fenced(block))
|
|
512
519
|
}
|
|
513
520
|
// The summary and the CLI's own lines follow on the stream directly:
|
|
514
521
|
// nothing may still be held, and nothing after this is.
|