@trenchwork/erosolar 1.1.36 → 1.1.37
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/dist/bin/erosolar.js +152 -85
- package/dist/bin/erosolar.js.map +1 -1
- package/dist/core/hitl.d.ts +4 -1
- package/dist/core/hitl.d.ts.map +1 -1
- package/dist/core/hitl.js +60 -171
- package/dist/core/hitl.js.map +1 -1
- package/dist/tools/interactionTools.d.ts.map +1 -1
- package/dist/tools/interactionTools.js +31 -15
- package/dist/tools/interactionTools.js.map +1 -1
- package/dist/ui/ink/AskUserMenu.d.ts +16 -0
- package/dist/ui/ink/AskUserMenu.d.ts.map +1 -0
- package/dist/ui/ink/AskUserMenu.js +85 -0
- package/dist/ui/ink/AskUserMenu.js.map +1 -0
- package/dist/ui/ink/HitlDecisionMenu.d.ts +23 -0
- package/dist/ui/ink/HitlDecisionMenu.d.ts.map +1 -0
- package/dist/ui/ink/HitlDecisionMenu.js +124 -0
- package/dist/ui/ink/HitlDecisionMenu.js.map +1 -0
- package/dist/ui/ink/oneShot.d.ts +33 -0
- package/dist/ui/ink/oneShot.d.ts.map +1 -0
- package/dist/ui/ink/oneShot.js +70 -0
- package/dist/ui/ink/oneShot.js.map +1 -0
- package/dist/utils/statusReporter.d.ts +13 -0
- package/dist/utils/statusReporter.d.ts.map +1 -1
- package/dist/utils/statusReporter.js +26 -0
- package/dist/utils/statusReporter.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* HitlDecisionMenu — Ink-rendered HUMAN DECISION REQUIRED prompt.
|
|
4
|
+
*
|
|
5
|
+
* Replaces the manual `\x1b[2J\x1b[H` + chalk-bordered ASCII box +
|
|
6
|
+
* stdin raw-mode keypress loop in src/core/hitl.ts. Owns its own
|
|
7
|
+
* Ink mount via showHitlDecision(); the caller awaits the resolve.
|
|
8
|
+
*
|
|
9
|
+
* Three states:
|
|
10
|
+
* 1. menu — arrow-key list, last item is "Enter your own"
|
|
11
|
+
* 2. custom — single-line text input for the operator's freeform answer
|
|
12
|
+
* 3. cancelled — Ctrl+C handled by parent (signal handler) → unmounts
|
|
13
|
+
*/
|
|
14
|
+
import React, { useState } from 'react';
|
|
15
|
+
import { Box, Text, useInput, useApp } from 'ink';
|
|
16
|
+
function buildMenuItems(req) {
|
|
17
|
+
return [
|
|
18
|
+
...req.options.map((opt) => ({
|
|
19
|
+
id: opt.id,
|
|
20
|
+
label: opt.label,
|
|
21
|
+
description: opt.description ?? '',
|
|
22
|
+
})),
|
|
23
|
+
{
|
|
24
|
+
id: req.customId ?? '__custom__',
|
|
25
|
+
label: 'Enter your own',
|
|
26
|
+
description: 'Type a custom plan, instruction, or alternative approach',
|
|
27
|
+
isCustom: true,
|
|
28
|
+
},
|
|
29
|
+
];
|
|
30
|
+
}
|
|
31
|
+
function HitlDecision({ request, onResolve, }) {
|
|
32
|
+
const items = React.useMemo(() => buildMenuItems(request), [request]);
|
|
33
|
+
// Default focus on "Enter your own" — matches the prior CLI behavior
|
|
34
|
+
// where the operator could just hit Enter to compose a free-form answer.
|
|
35
|
+
const [selected, setSelected] = useState(items.length - 1);
|
|
36
|
+
const [phase, setPhase] = useState('menu');
|
|
37
|
+
const [customInput, setCustomInput] = useState('');
|
|
38
|
+
const { exit } = useApp();
|
|
39
|
+
useInput((input, key) => {
|
|
40
|
+
if (phase === 'menu') {
|
|
41
|
+
if (key.upArrow || input === 'k') {
|
|
42
|
+
setSelected((i) => Math.max(0, i - 1));
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (key.downArrow || input === 'j') {
|
|
46
|
+
setSelected((i) => Math.min(items.length - 1, i + 1));
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
if (key.return) {
|
|
50
|
+
const item = items[selected];
|
|
51
|
+
if (item.isCustom) {
|
|
52
|
+
setPhase('custom');
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
onResolve({ selectedOptionId: item.id });
|
|
56
|
+
exit();
|
|
57
|
+
}
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
if (key.ctrl && input === 'c') {
|
|
61
|
+
// Surface as a cancelled-by-default selection — the parent
|
|
62
|
+
// (hitl.ts) decides what to do with the cancel (it currently
|
|
63
|
+
// hooks Ctrl+C globally and shuts down).
|
|
64
|
+
const fallback = items[0]?.id ?? '__cancelled__';
|
|
65
|
+
onResolve({ selectedOptionId: fallback });
|
|
66
|
+
exit();
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
// phase === 'custom'
|
|
72
|
+
if (key.return) {
|
|
73
|
+
const trimmed = customInput.trim();
|
|
74
|
+
const customId = items[items.length - 1].id;
|
|
75
|
+
if (trimmed) {
|
|
76
|
+
onResolve({ selectedOptionId: customId, userInput: trimmed });
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
const fallback = items[0]?.id ?? customId;
|
|
80
|
+
onResolve({ selectedOptionId: fallback });
|
|
81
|
+
}
|
|
82
|
+
exit();
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
if (key.escape) {
|
|
86
|
+
setPhase('menu');
|
|
87
|
+
setCustomInput('');
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
if (key.backspace || key.delete) {
|
|
91
|
+
setCustomInput((s) => s.slice(0, -1));
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
if (input && !key.ctrl && !key.meta) {
|
|
95
|
+
setCustomInput((s) => s + input);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
return (_jsxs(Box, { flexDirection: "column", paddingX: 1, paddingY: 0, children: [_jsxs(Box, { borderStyle: "round", borderColor: "cyan", paddingX: 1, flexDirection: "column", children: [_jsx(Text, { bold: true, color: "cyan", children: "\u25A3 HUMAN DECISION REQUIRED" }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { bold: true, children: request.title }) }), request.description && (_jsx(Box, { children: _jsx(Text, { color: "gray", children: request.description }) })), request.context && (_jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { color: "blue", children: "\u25BE Context" }), _jsx(Text, { color: "gray", children: request.context })] }))] }), phase === 'menu' && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { color: "green", children: "\u2191\u2193 to select \u00B7 Enter to confirm \u00B7 Ctrl+C to cancel" }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: items.map((item, i) => {
|
|
99
|
+
const active = i === selected;
|
|
100
|
+
return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Box, { children: _jsxs(Text, { color: active ? 'cyan' : undefined, bold: active, children: [active ? '▸ ' : ' ', item.label] }) }), item.description && (_jsx(Box, { paddingLeft: 2, children: _jsx(Text, { color: active ? 'cyan' : 'gray', dimColor: !active, children: item.description }) }))] }, item.id));
|
|
101
|
+
}) })] })), phase === 'custom' && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { color: "cyan", children: "\u21B3 Enter your custom plan \u00B7 Esc to go back \u00B7 Enter to submit" }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "magenta", bold: true, children: "\uD83D\uDC49 " }), _jsx(Text, { children: customInput }), _jsx(Text, { color: "cyan", children: "\u2588" })] })] }))] }));
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Mount the Ink decision menu, await the operator's selection, unmount.
|
|
105
|
+
* The caller (hitl.ts) handles bookkeeping (event emit, history, etc.).
|
|
106
|
+
*/
|
|
107
|
+
export async function showHitlDecision(request) {
|
|
108
|
+
const { render } = await import('ink');
|
|
109
|
+
return new Promise((resolve) => {
|
|
110
|
+
let result = null;
|
|
111
|
+
const inst = render(React.createElement(HitlDecision, {
|
|
112
|
+
request,
|
|
113
|
+
onResolve: (r) => { result = r; },
|
|
114
|
+
}));
|
|
115
|
+
inst.waitUntilExit().finally(() => {
|
|
116
|
+
try {
|
|
117
|
+
inst.unmount();
|
|
118
|
+
}
|
|
119
|
+
catch (_) { /* already torn down */ }
|
|
120
|
+
resolve(result ?? { selectedOptionId: request.options[0]?.id ?? '__cancelled__' });
|
|
121
|
+
});
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=HitlDecisionMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HitlDecisionMenu.js","sourceRoot":"","sources":["../../../src/ui/ink/HitlDecisionMenu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export type CardTone = 'info' | 'success' | 'warn' | 'error';
|
|
2
|
+
/**
|
|
3
|
+
* Renders a single Ink card and unmounts after the next paint. Resolves
|
|
4
|
+
* once the panel has been flushed to the terminal so callers can safely
|
|
5
|
+
* `process.exit()` immediately after awaiting.
|
|
6
|
+
*/
|
|
7
|
+
export declare function showCard(opts: {
|
|
8
|
+
tone?: CardTone;
|
|
9
|
+
title: string;
|
|
10
|
+
body?: string | string[];
|
|
11
|
+
hint?: string | null;
|
|
12
|
+
}): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Renders a key/value table panel — used for --version banners,
|
|
15
|
+
* approval-denied summaries, install summaries, etc.
|
|
16
|
+
*/
|
|
17
|
+
export declare function showKv(opts: {
|
|
18
|
+
tone?: CardTone;
|
|
19
|
+
title: string;
|
|
20
|
+
rows: Array<[string, string]>;
|
|
21
|
+
hint?: string | null;
|
|
22
|
+
}): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Renders preformatted help text inside an Ink frame. The text body
|
|
25
|
+
* keeps its own formatting (newlines, indentation); Ink owns the
|
|
26
|
+
* decorative chrome around it.
|
|
27
|
+
*/
|
|
28
|
+
export declare function showHelp(opts: {
|
|
29
|
+
title: string;
|
|
30
|
+
body: string;
|
|
31
|
+
foot?: string | null;
|
|
32
|
+
}): Promise<void>;
|
|
33
|
+
//# sourceMappingURL=oneShot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oneShot.d.ts","sourceRoot":"","sources":["../../../src/ui/ink/oneShot.tsx"],"names":[],"mappings":"AAYA,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAS7D;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE;IACnC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgChB;AAED;;;GAGG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE;IACjC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BhB;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBzG"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* oneShot — minimal helpers for "render a small Ink panel and exit"
|
|
4
|
+
* surfaces (--help, --version, --key save, error cards, etc.).
|
|
5
|
+
*
|
|
6
|
+
* The interactive shell owns its own Ink tree via InkPromptController;
|
|
7
|
+
* these one-shot mounts are for surfaces that print and exit before
|
|
8
|
+
* the shell ever starts. Each helper resolves once Ink has flushed at
|
|
9
|
+
* least one frame so the panel paints before the process exits.
|
|
10
|
+
*/
|
|
11
|
+
import React from 'react';
|
|
12
|
+
import { Box, Text } from 'ink';
|
|
13
|
+
const TONE = {
|
|
14
|
+
info: { glyph: '▣', color: 'cyan' },
|
|
15
|
+
success: { glyph: '✓', color: 'green' },
|
|
16
|
+
warn: { glyph: '!', color: 'yellow' },
|
|
17
|
+
error: { glyph: '✗', color: 'red' },
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Renders a single Ink card and unmounts after the next paint. Resolves
|
|
21
|
+
* once the panel has been flushed to the terminal so callers can safely
|
|
22
|
+
* `process.exit()` immediately after awaiting.
|
|
23
|
+
*/
|
|
24
|
+
export async function showCard(opts) {
|
|
25
|
+
const { render } = await import('ink');
|
|
26
|
+
const tone = opts.tone ?? 'info';
|
|
27
|
+
const palette = TONE[tone];
|
|
28
|
+
const lines = Array.isArray(opts.body) ? opts.body : (opts.body ? [opts.body] : []);
|
|
29
|
+
const Card = () => (_jsxs(Box, { flexDirection: "column", paddingX: 1, paddingY: 0, children: [_jsxs(Box, { children: [_jsxs(Text, { color: palette.color, children: [palette.glyph, " "] }), _jsx(Text, { color: palette.color, bold: true, children: opts.title })] }), lines.length > 0 && (_jsx(Box, { flexDirection: "column", marginTop: lines.length > 1 ? 1 : 0, children: lines.map((line, i) => (_jsx(Text, { color: tone === 'error' ? 'red' : 'gray', children: line }, i))) })), opts.hint && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", dimColor: true, children: opts.hint }) }))] }));
|
|
30
|
+
const inst = render(React.createElement(Card));
|
|
31
|
+
// Two ticks: first paints the card, second lets Ink commit the static
|
|
32
|
+
// output before unmount tears the alternate-screen buffer.
|
|
33
|
+
await new Promise((r) => setTimeout(r, 30));
|
|
34
|
+
try {
|
|
35
|
+
inst.unmount();
|
|
36
|
+
}
|
|
37
|
+
catch (_) { /* already torn down */ }
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Renders a key/value table panel — used for --version banners,
|
|
41
|
+
* approval-denied summaries, install summaries, etc.
|
|
42
|
+
*/
|
|
43
|
+
export async function showKv(opts) {
|
|
44
|
+
const { render } = await import('ink');
|
|
45
|
+
const tone = opts.tone ?? 'info';
|
|
46
|
+
const palette = TONE[tone];
|
|
47
|
+
const Panel = () => (_jsxs(Box, { flexDirection: "column", paddingX: 1, children: [_jsxs(Box, { children: [_jsxs(Text, { color: palette.color, children: [palette.glyph, " "] }), _jsx(Text, { color: palette.color, bold: true, children: opts.title })] }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: opts.rows.map(([k, v], i) => (_jsxs(Box, { children: [_jsx(Box, { width: 14, children: _jsx(Text, { color: "gray", children: k }) }), _jsx(Text, { color: tone === 'error' ? 'red' : 'white', children: v })] }, i))) }), opts.hint && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", dimColor: true, children: opts.hint }) }))] }));
|
|
48
|
+
const inst = render(React.createElement(Panel));
|
|
49
|
+
await new Promise((r) => setTimeout(r, 30));
|
|
50
|
+
try {
|
|
51
|
+
inst.unmount();
|
|
52
|
+
}
|
|
53
|
+
catch (_) { /* already torn down */ }
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Renders preformatted help text inside an Ink frame. The text body
|
|
57
|
+
* keeps its own formatting (newlines, indentation); Ink owns the
|
|
58
|
+
* decorative chrome around it.
|
|
59
|
+
*/
|
|
60
|
+
export async function showHelp(opts) {
|
|
61
|
+
const { render } = await import('ink');
|
|
62
|
+
const View = () => (_jsxs(Box, { flexDirection: "column", paddingX: 1, paddingY: 0, children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "cyan", bold: true, children: opts.title }) }), _jsx(Box, { children: _jsx(Text, { children: opts.body }) }), opts.foot && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", dimColor: true, children: opts.foot }) }))] }));
|
|
63
|
+
const inst = render(React.createElement(View));
|
|
64
|
+
await new Promise((r) => setTimeout(r, 30));
|
|
65
|
+
try {
|
|
66
|
+
inst.unmount();
|
|
67
|
+
}
|
|
68
|
+
catch (_) { /* already torn down */ }
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=oneShot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oneShot.js","sourceRoot":"","sources":["../../../src/ui/ink/oneShot.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,19 @@
|
|
|
1
1
|
type StatusSink = (message: string) => void;
|
|
2
2
|
export declare function setStatusSink(sink: StatusSink | null): void;
|
|
3
3
|
export declare function reportStatus(message: string): void;
|
|
4
|
+
/**
|
|
5
|
+
* Render a fatal error as an Ink card and exit. Used by every catch
|
|
6
|
+
* block in src/bin/erosolar.ts so the user sees a consistent red panel
|
|
7
|
+
* instead of a one-line console.error. Falls back to stderr if Ink
|
|
8
|
+
* fails to mount (degraded TTY, ENOTTY, etc.) so the user always sees
|
|
9
|
+
* the message somewhere.
|
|
10
|
+
*/
|
|
11
|
+
export declare function reportFatal(error: unknown, prefix?: string): Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Legacy non-Ink error reporter. Prefer reportFatal() for new call
|
|
14
|
+
* sites; this stays for low-level paths that can't await an import
|
|
15
|
+
* (e.g. signal handlers).
|
|
16
|
+
*/
|
|
4
17
|
export declare function reportStatusError(error: unknown, prefix?: string): void;
|
|
5
18
|
export {};
|
|
6
19
|
//# sourceMappingURL=statusReporter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statusReporter.d.ts","sourceRoot":"","sources":["../../src/utils/statusReporter.ts"],"names":[],"mappings":"AAEA,KAAK,UAAU,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAO5C,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI,CAE3D;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"statusReporter.d.ts","sourceRoot":"","sources":["../../src/utils/statusReporter.ts"],"names":[],"mappings":"AAEA,KAAK,UAAU,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAO5C,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,IAAI,CAE3D;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAYlD;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,GAAE,MAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAUzF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,GAAE,MAAgB,GAAG,IAAI,CAOhF"}
|
|
@@ -13,8 +13,34 @@ export function reportStatus(message) {
|
|
|
13
13
|
statusSink(normalized);
|
|
14
14
|
return;
|
|
15
15
|
}
|
|
16
|
+
// Plain stdout fallback — used early in boot (before Ink is ready)
|
|
17
|
+
// and as the fallback for non-fatal status pings.
|
|
16
18
|
stdout.write(`${normalized}\n`);
|
|
17
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Render a fatal error as an Ink card and exit. Used by every catch
|
|
22
|
+
* block in src/bin/erosolar.ts so the user sees a consistent red panel
|
|
23
|
+
* instead of a one-line console.error. Falls back to stderr if Ink
|
|
24
|
+
* fails to mount (degraded TTY, ENOTTY, etc.) so the user always sees
|
|
25
|
+
* the message somewhere.
|
|
26
|
+
*/
|
|
27
|
+
export async function reportFatal(error, prefix = 'Error') {
|
|
28
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
29
|
+
const safePrefix = prefix.trim() || 'Error';
|
|
30
|
+
try {
|
|
31
|
+
const { showCard } = await import('../ui/ink/oneShot.js');
|
|
32
|
+
await showCard({ tone: 'error', title: safePrefix, body: message });
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
// Ink failed (no TTY, etc.). Still surface the message.
|
|
36
|
+
process.stderr.write(`${safePrefix}: ${message}\n`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Legacy non-Ink error reporter. Prefer reportFatal() for new call
|
|
41
|
+
* sites; this stays for low-level paths that can't await an import
|
|
42
|
+
* (e.g. signal handlers).
|
|
43
|
+
*/
|
|
18
44
|
export function reportStatusError(error, prefix = 'Error') {
|
|
19
45
|
const message = error instanceof Error ? error.message : String(error);
|
|
20
46
|
const safePrefix = prefix.trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statusReporter.js","sourceRoot":"","sources":["../../src/utils/statusReporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAItC,IAAI,UAAU,GAAsB,IAAI,CAAC;AAEzC,MAAM,sBAAsB,GAAG,CAAC,OAAe,EAAU,EAAE,CACzD,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAEtC,MAAM,UAAU,aAAa,CAAC,IAAuB;IACnD,UAAU,GAAG,IAAI,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,MAAM,UAAU,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO;IACT,CAAC;IACD,IAAI,UAAU,EAAE,CAAC;QACf,UAAU,CAAC,UAAU,CAAC,CAAC;QACvB,OAAO;IACT,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU,IAAI,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAc,EAAE,SAAiB,OAAO;IACxE,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,UAAU;QACrB,CAAC,CAAC,GAAG,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,EAAE;QAClE,CAAC,CAAC,OAAO,CAAC;IACZ,YAAY,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC"}
|
|
1
|
+
{"version":3,"file":"statusReporter.js","sourceRoot":"","sources":["../../src/utils/statusReporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAItC,IAAI,UAAU,GAAsB,IAAI,CAAC;AAEzC,MAAM,sBAAsB,GAAG,CAAC,OAAe,EAAU,EAAE,CACzD,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAEtC,MAAM,UAAU,aAAa,CAAC,IAAuB;IACnD,UAAU,GAAG,IAAI,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,MAAM,UAAU,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO;IACT,CAAC;IACD,IAAI,UAAU,EAAE,CAAC;QACf,UAAU,CAAC,UAAU,CAAC,CAAC;QACvB,OAAO;IACT,CAAC;IACD,mEAAmE;IACnE,kDAAkD;IAClD,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU,IAAI,CAAC,CAAC;AAClC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAc,EAAE,SAAiB,OAAO;IACxE,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC1D,MAAM,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,wDAAwD;QACxD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU,KAAK,OAAO,IAAI,CAAC,CAAC;IACtD,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc,EAAE,SAAiB,OAAO;IACxE,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,UAAU;QACrB,CAAC,CAAC,GAAG,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,EAAE;QAClE,CAAC,CAAC,OAAO,CAAC;IACZ,YAAY,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC"}
|
package/package.json
CHANGED